Jump to content

Jonas^

Members
  • Posts

    1,016
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Jonas^

  1. Com certeza se fosse para meu servidor faria assim, mas dai quem deve correr atrás é ele, a base foi passada
  2. Modo fácil: addCommandHandler ("reparar", function (thePlayer, cmd) if isObjectInACLGroup( "user."..getAccountName (getPlayerAccount(thePlayer)), aclGetGroup ("Mecanico")) then -- Se jogador estiver na acl mecanico, então: local vehicle = getPedOccupiedVehicle (thePlayer) local reward = math.random (700, 950) -- Váriavel que vai variar o valor do prêmio. if not (vehicle) then -- Se o mecânico que for reparar não estiver em um veículo, então: outputChatBox ("Entre em um veículo para reparar.", thePlayer, 255, 0, 0) else -- Senão: givePlayerMoney (thePlayer, reward) -- Da o valor da váriavel para o mecânico. fixVehicle (thePlayer) -- Repara o veículo do cara. outputChatBox ("Você reparou um veículo e recebeu '"..reward.."' pelo reparo.", thePlayer, 0, 255, 0) -- Notifica ele sobre a reparação. end else -- Senão: outputChatBox ("Você não é um mecânico.", thePlayer, 255, 0, 0) -- Retorna informando que o jogador não tem permissão. end end)
  3. Do jeito que fiz deve funcionar.
  4. 335 metros? senão 334? explica a lógica disso? function revistar_jogador (thePlayer, comando, nick) if nick then if getPlayerFromPartialName (nick) then if isObjectInACLGroup ("user."..getAccountName (getPlayerAccount (thePlayer)), aclGetGroup ("Policia")) then local player_a_ser_revistado = getPlayerFromPartialName (nick) local nick_do_jogador = getPlayerName (player_a_ser_revistado) local nick_do_policial = getPlayerName (thePlayer) local estrelas_de_procurado = getPlayerWantedLevel (player_a_ser_revistado) local policiax, policiay, policiaz = getElementPosition (thePlayer) local revistadox, revistadoy, revistadoz = getElementPosition (player_a_ser_revistado) local dist = getDistanceBetweenPoints3D (policiax, policiay, policiaz, revistadox, revistadoy, revistadoz) if (dist <= 15) then -- Se a distancia for menor ou igual a 15, então: outputChatBox ("#000000[#ff0000POLICIA#000000] #c1c1c1Chegue Mais Perto Do Jogador Pra Executar Este Comando!", thePlayer, 255, 255, 255, true) setPedAnimation( thePlayer, "POLICE", "plc_drgbst_01", 3100, true, false, false, false) outputChatBox ("#000000[#ff0000POLICIA#000000] #c1c1c1O #ff0000Policial #ffffff"..nick_do_policial.." #c1c1c1esta #ff0000Revistando #c1c1c1o #ff0000Suspeito "..nick_do_jogador.."", root, 255, 255, 255, true) setTimer ( function() outputChatBox ("#000000[#ff0000POLICIA#000000] #c1c1c1Nivel de #ff0000Procurado #c1c1c1do #ff0000Suspeito#c1c1c1:"..estrelas_de_procurado.."", thePlayer, 255, 255, 255, true) end, 3390, 1) triggerClientEvent(thePlayer, "doShowDXProgressBar", thePlayer) else -- Senão: outputChatBox ("Chegue perto do suspeito.", thePlayer, 255, 50, 50, true) end else outputChatBox("#000000[#ff0000POLICIA#000000] #c1c1c1Você nao tem permissao a este comando!", thePlayer, 255, 255, 255, true) end end end end addCommandHandler ("revistar", revistar_jogador)
  5. Ao invés de fazer isso, não acha melhor colocar pra algemar em uma certa distância exemplo: 15 metros?
  6. Isso provavelmente é um erro com o servidor, talvez ele tenha aquele compactador de download e pode estar com problema. Tente contatar o dono do servidor.
  7. Faça assim: local screenW, screenH = guiGetScreenSize () -- Pegando a resolução do jogador pra centralizar no centro da tela. function renderName () -- Função que sera chamada pelo onclientrender pra começar renderizar o texto. dxDrawText (removeHex (getPlayerName(localPlayer)), (screenW - 535) / 2, (screenH - 159) / 2, ((screenW - 535) / 2) + 535, ( (screenH - 159) / 2) + 159, tocolor(255, 255, 255, 255), 1.00, "default-bold", "center", "center", false, false, false, false, false) -- Draw do texto. end addEventHandler ("onClientRender", root, renderName) -- Iniciando a renderização do texto com o nome do jogador. function removeHex (text) -- Função que ira remover o código #hex do nome. local text = text or "" while (string.find (text, "#%x%x%x%x%x%x")) do text = string.gsub (text, "#%x%x%x%x%x%x", "") end return text end
  8. Assim não vai funcionar mesmo, precisa de onclientrender e uma função pra ser chamada no evento e falta virgula na variavel do nome ali.
  9. getPlayerAccount - Para obter a conta do jogador, para usar na função abaixo: getAccountName - Para obter o nome da conta do jogador, para usar na função abaixo: isObjectInACLGroup - Para verificar qual ACL Group cada jogador está. SetTimer - Para determinar um tempo para a ação ser executada.
  10. Porque 350 loops pra fazer a mesma coisa? Faça assim: local chat_range = 70 function isPlayerInRangeOfPoint (player, x, y, z, range) local px, py, pz = getElementPosition (player) return ( (x-px) ^ 2 + (y-py) ^ 2+ (z-pz) ^ 2) ^ 0.5 <= range end addEventHandler ("onPlayerChat", root, function (msg, type) if type == 0 then -- < ---- cancelEvent () local px, py, pz = getElementPosition (source) local r, g, b = getPlayerNametagColor (source) local everybody = getElementsByType ("player") for k, v in ipairs (everybody) do if isPlayerInRangeOfPoint (v, px, py, pz, chat_range) then outputChatBox ("᠉ #00FF00 ChatLocal - #FFFFFF"..getPlayerName(source).."#00ff00 - #ffffff"..msg, v, r, g, b, true) end end end end ) function MensagemTwitter (source, cmd, ...) local MessagemT = table.concat ( { ... }, " " ) local everybody = getElementsByType ("player") for _, v in ipairs (everybody) do outputChatBox ("᠉ #00BFFFTwitter - #ffffff"..getPlayerName(source).."#00BFFF - #FFFFFF"..MessagemT, v, 255, 255, 255, true) end end addCommandHandler ("twitter", MensagemTwitter) function Mensagemfrp (source, cmd, ...) local Messagemr = table.concat ( { ... }, " " ) local everybody = getElementsByType ("player") for _, v in ipairs (everybody) do outputChatBox ("᠉ #87CEFAFora do RP - /frp - #ffffff"..getPlayerName(source).."#00BFFF - #FFFFFF"..Messagemr, v, 255, 255, 255, true) end end addCommandHandler ("frp", Mensagemfrp) function Mensagemrp (source, cmd, ...) local Messagemp = table.concat ( { ... }, " " ) local everybody = getElementsByType ("player") for _, v in ipairs (everybody) do outputChatBox ("᠉ #1E90FFDentro RP - /rp - #ffffff"..getPlayerName(source).."#00BFFF - #FFFFFF"..Messagemp, v, 255, 255, 255, true) end end addCommandHandler ("rp", Mensagemrp) addCommandHandler ("deepweb", function (source, cmd, ...) local message2 = #{...} > 0 and table.concat({...}," ") or nil if message2 then local everybody = getElementsByType ("player") for _, p in ipairs (everybody) do if hasObjectPermissionTo(p, "command.mute", true) then outputChatBox ("᠉ #696969 DeepWeb - #ffffff"..getPlayerName(source).."#696969 - #696969"..message2, p, 255, 255, 255, true) else outputChatBox ("᠉ #696969 DeepWeb - #696969"..message2, p, 255, 255, 255, true) end end end end ) addEventHandler ("onPlayerJoin", getRootElement(), function () bindKey (source, "y", "down", "chatbox", "twitter") bindKey (source, "i", "down", "chatbox", "frp") bindKey (source, "o", "down", "chatbox", "rp") bindKey (source, "u", "down", "chatbox", "deepweb") end ) addEventHandler ("onResourceStart", resourceRoot, function () local everybody = getElementsByType ("player") for index, player in pairs (everybody) do bindKey (player, "y", "down", "chatbox", "twitter") bindKey (player, "i", "down", "chatbox", "frp") bindKey (player, "o", "down", "chatbox", "rp") bindKey (player, "u", "down", "chatbox", "deepweb") end end ) OBS: Não aconselho usar 4 binds assim, as vezes o jogador aperta uma tecla do teclado sem querer e abre o chat, ainda mais com 4 chats diferente assim, aconselho tirar e deixar somente pelo chat local "T"
  11. Jonas^

    Chat

    OBS: Leia os comentários pra você entender. function chamarSamu (thePlayer) outputChatBox ("[SAMU] Os paramédicos foram avisados com sucesso.", thePlayer, 0, 255, 0) -- Avisa o jogador que usou o comando que a chamada foi efetuada com sucesso. local everybody = getElementsByType("player") for k, player in ipairs (everybody) do -- Para cada jogador que está na ACL Group "SAMU", faça: if isObjectInACLGroup ("user."..getAccountName (getPlayerAccount(player)), aclGetGroup ("SAMU")) then -- Se o jogador estiver na ACL "SAMU", então: outputChatBox ("[SAMU] #FFFFFFO(a) jogador(a) '#FF3232"..getPlayerName(thePlayer).."#FFFFFF' chamou a samu.", player, 255, 50, 50, true) -- Recebe a mensagem. end end end addCommandHandler ("192", chamarSamu)
  12. Funções: SetAccountData GetAccountData Eventos: OnResourceStop OnResourceStart OnPlayerLogin OnPlayerQuit OnPlayerLogout -- OBS: Só deve usar se você possuí o /logout ativo no seu servidor, caso contrário não é necessário.
  13. Eu testei aqui e abriu. Pra colocar por acl você tem que passar um trigger do cliente no server pra verificar se o jogador ta em tal acl.
  14. Obvio que não vai funcionar assim, como você pretende renderizar um DX direto no onMarkerHit sem chamar o evento onClientRender? E me responde outra pergunta, você pretende usar uma função server-side no client como? '-' Faça assim: local markerArmas = createMarker(1824.381, -1984.783, 21.181, "cylinder", 1.5, 13, 130, 232, 500) local abrirPainel = false function mainPanel () dxDrawRectangle (322, 205, 181, 192, tocolor(0, 0, 0, 150), false) dxDrawRectangle (498, 201, 0, 14, tocolor(255, 255, 255, 255), false) dxDrawRectangle (321, 205, 182, 15, tocolor(92, 92, 92, 150), false) dxDrawText ("Armamentos", 375, 205, 513, 209, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, false, false, false) dxDrawRectangle (342, 242, 146, 16, tocolor(92, 92, 92, 150), false) dxDrawText ("Pegar Armas", 384, 242, 482, 251, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, false, false, false) end function onRequestDX () AbrirPainel () end addEventHandler ("onClientMarkerHit", markerArmas, onRequestDX) function AbrirPainel () if abrirPainel then -- Se o painel estiver aberto, então: removeEventHandler ("onClientRender", root, mainPanel) -- Para de renderizar o painel. showCursor (false) -- Desabilita o cursor else -- Senão: addEventHandler ("onClientRender", root, mainPanel) -- Começa renderizar o painel. showCursor (true) -- Habilita o cursor. end abrirPainel = not abrirPainel end Aconselho fazer um botão pra fechar o painel, dai você só chama a função abrirPainel () que ele ira fechar quando o botão for pressionado.
  15. But the map cyclo is like this ... there's nothing wrong with that.
  16. Deveria olhar mais a wiki. Aqui: chat_range = 100 function isPlayerInRangeOfPoint (player,x,y,z,range) local px, py, pz = getElementPosition (player) return ( (x-px) ^ 2 + (y-py) ^ 2+ (z-pz) ^ 2) ^ 0.5 <= range end addEventHandler ("onPlayerChat", root, function (msg, type) if type == 0 then cancelEvent () local px, py, pz = getElementPosition (source) local r, g, b = getPlayerNametagColor(source) local everybody = getElementsByType ("player") for _, v in ipairs (everybody) do if isPlayerInRangeOfPoint (v, px, py, pz, chat_range) then outputChatBox ("#00FF00[Local Chat] #FFFFFF"..getPlayerName(source)..": #00FF00"..msg, v, r, g, b, true) end end end end )
  17. Ué, mas ele já não ta fazendo isso? quando se pega o veículo ele ta colocando ele na tabela, dai quando se passa no marker 2 ele destroy.
  18. Você postou no local errado. Local correto: Programação em Lua Você pode usar esta base aqui para fazer o seu, inclusive a base do meu sistema de rank é desse sistema também que foi feito pelo @LordHenry Client-side scoreWindow = guiCreateWindow (0.3, 0.2, 0.4, 0.6, "Ranking Kills/Death (by: LordHenry)", true) scoreGrid = guiCreateGridList (0, 0.05, 1, 0.85, true, scoreWindow) guiWindowSetSizable (scoreWindow, false) guiGridListAddColumn (scoreGrid, "Account", 0.45) guiGridListAddColumn (scoreGrid, "Kills", 0.13) guiGridListAddColumn (scoreGrid, "Deaths", 0.13) guiGridListAddColumn (scoreGrid, "Ratio", 0.18) closeGrid = guiCreateButton (0.2, 0.91, 0.6, 0.09, "Fechar Painel", true, scoreWindow) guiSetVisible (scoreWindow, false) function scoreInfo (accounts, kills, deaths, ratio) guiSetVisible (scoreWindow, true) guiSetVisible (closeGrid, true) showCursor (true) if accounts then for i, v in ipairs (accounts) do guiGridListAddRow (scoreGrid, accounts[i], kills[i], deaths[i], ratio[i]) end end end addEvent ("showRank", true) addEventHandler ("showRank", getRootElement(), scoreInfo) function clickOptions (button, state, absoluteX, absoluteY) if button == "left" then if source == closeGrid then guiSetVisible (scoreWindow, false) showCursor (false) guiGridListClear (scoreGrid) end end end addEventHandler ("onClientGUIClick", getRootElement(), clickOptions) function sendScores () if not guiGetVisible (scoreWindow) then triggerServerEvent ("getRank", localPlayer) end end addCommandHandler ("rank", sendScores) Server-side function recebeKills () local data = getAccounts () local accTable = {} local killsTable = {} local deathsTable = {} local kill = 0 local death = 0 if not data[1] then triggerClientEvent (client, "showRank", client) return end for i, acc in ipairs (data) do table.insert (accTable, getAccountName (data[i])) if not getAccountData (data[i], "kills") then table.insert (killsTable, "0") else table.insert (killsTable, tostring (getAccountData (data[i], "kills"))) end if not getAccountData (data[i], "deaths") then table.insert (deathsTable, "0") else table.insert (deathsTable, tostring (getAccountData (data[i], "deaths"))) end end triggerClientEvent (client, "showRank", client, accTable, killsTable, deathsTable) end addEvent ("getRank", true) addEventHandler ("getRank", getRootElement(), recebeKills) function salvaKills (ammo, killer, weapon, bodypart, stealth) if not isGuestAccount (getPlayerAccount(source)) then local deaths = getAccountData (getPlayerAccount(source), "deaths") if deaths then setAccountData (getPlayerAccount(source), "deaths", deaths + 1) else setAccountData (getPlayerAccount(source), "deaths", 1) end end if killer and killer ~= source then if getElementType (killer) == "player" then if not isGuestAccount (getPlayerAccount(killer)) then local kills = getAccountData (getPlayerAccount(killer), "kills") if kills then setAccountData (getPlayerAccount(killer), "kills", kills + 1) else setAccountData (getPlayerAccount(killer), "kills", 1) end end elseif getElementType (killer) == "vehicle" then killer = getVehicleController (killer) if killer then if not isGuestAccount (getPlayerAccount(killer)) then local kills = getAccountData (getPlayerAccount(killer), "kills") if kills then setAccountData (getPlayerAccount(killer), "kills", kills + 1) else setAccountData (getPlayerAccount(killer), "kills", 1) end end end end end end addEventHandler ("onPlayerWasted", getRootElement(), salvaKills)
  19. Tente assim: local kovek = getElementData(p, "rocksForPlayer")
  20. Se você realmente deseja fazer isso aconselho então permitir determinadas contas ou seriais, sendo assim somente quem tiver em determinada conta ou determinado computador(serial) consiga usar o comando.
  21. Você esta usando outro script junto com esse né? tem certeza que ele ta ligado?
×
×
  • Create New...