joao2235 Posted September 12, 2019 Share Posted September 12, 2019 Editei um script de Prender o jogador que baixei da internet, ele obtém o jogador através do getPlayerFromPartialName. Gostaria de obter o jogador pelo script de ID, assim como no FiveM, aquele ID que aparece na cabeça do Player. Segue o código do script do ID e a função onde gostaria de obter o player pelo ID: function Start_Id ( _, acc ) if eventName == "onPlayerLogin" then setElementData ( source, "ID", getAccountID(acc) or "N/A" ) outputChatBox ( "#00ff00✘ #ffffffLOGIN #00ff00✘➺ #ffffffNick: #00ff00 ( ".. getPlayerName(source) .." #00ff00) #ffffffID: #00ff00( "..(getAccountID(acc) or "N/A") .." )", root, 255,255,255,true) elseif eventName == "onPlayerLogout" then removeElementData( source, "ID" ) outputChatBox ( "#00ff00✘ #ffffffLOGIN #00ff00✘➺ #ffffffNick: #00ff00 ( ".. getPlayerName(source) .." #00ff00) #ffffffDeslogou.", root, 255,255,255,true) elseif eventName == "onResourceStart" then for _, player in pairs(getElementsByType("player")) do local acc = getPlayerAccount(player) if not isGuestAccount(acc) then setElementData( source, "ID", getAccountID(acc) or "N/A" ) end end end end addEventHandler("onResourceStart", resourceRoot, Start_Id) addEventHandler("onPlayerLogout", root, Start_Id) addEventHandler("onPlayerLogin", root, Start_Id) function getPlayerID(id) v = false for i, player in ipairs (getElementsByType("player")) do if getElementData(player, "ID") == id then v = player break end end return v end --============================================================================================================================-- --=============================-- ----------- ID PLAYER ------------ --=============================-- function getnick(player, command, id, ...) if(id) then local playerID = tonumber(id) if(playerID) then local Player2 = getPlayerID(playerID) if(Player2) then outputChatBox ( "#00ff00✘ #ffffffINFO #00ff00✘➺ #ffffff Nome do Jogador #00ff00" .. getPlayerName(Player2) .."", player, 255,255,255,true) else outputChatBox ( "#00ff00✘ #ffffffERRO #00ff00✘➺ #ffffff O Jogador(a) de ID: #00ff00( " .. id .. " ) #ffffffNão Foi Encontrado!", player, 255,255,255,true) end else outputChatBox ( "#00ff00✘ #ffffffERRO #00ff00✘➺ #ffffff ID: #00ff00( " .. id .. " ) #ffffffInválido!", player, 255,255,255,true) end else outputChatBox ( "#00ff00✘ #ffffffERRO #00ff00✘➺ #ffffffUse /id #00ff00[#ffffffID#00ff00]", player, 255,255,255,true) end end addCommandHandler("id", getnick) Função onde gostaria de obter o nome do player por ID: function colocanavtr (police, _, name) if hasObjectPermissionTo(police, "function.Prender") then local preso = getPlayerFromPartialName(name) -- Penso que tenha que alterar neste local. local px, py, pz = getElementPosition (police) local bx, by, bz = getElementPosition (preso) local dist = getDistanceBetweenPoints3D (px, py, pz, bx, by, bz) if not preso then return outputChatBox('#bebebe Jogador invalido.', police, 255, 255, 255, true) end if preso == police then return outputChatBox('#bebebe Você não pode prender a si mesmo.', police, 255, 255, 255, true) end if getPlayerWantedLevel(preso) == 0 then return outputChatBox('#bebebe Este jogador não está sendo procurado.', police, 255, 255, 255, true) end if getPedOccupiedVehicle(police) then return outputChatBox('#bebebe Você não pode prender de dentro da viatura.', police, 255, 255, 255, true) end if getPedOccupiedVehicle(preso) then return outputChatBox('#bebebe Você não pode prender um bandido enquanto ele estiver dentro de um veículo.', police, 255, 255, 255, true) end if dist >= 2 then return outputChatBox('#bebebe Você precisa chegar mais perto para prender.', police, 255, 255, 255, true) end setElementData (preso, 'navtr', true) addEventHandler('onPlayerCommand', preso, onCommand) local vtr = carros[police] setElementData (vtr, 'compreso', true) attachElements (preso, vtr, 0.2, -1.5, 0, 0,0,90) setElementFrozen (preso, true) toggleAllControls (preso, false) takeAllWeapons (preso) setPedAnimation (preso, 'ped','CAR_dead_LHS') vrx, vry, vrz = getElementRotation(vtr) setElementRotation(preso, vrx, vry, vrz+83) warpPedIntoVehicle (police, vtr) outputChatBox('#bebebeLeve o preso para a delegacia mais próxima #00ffff(sirenes azuis).', police, 255, 255, 255,true) end end addCommandHandler ('prender', colocanavtr) Se puderem me ajudar, agradeço! Link to comment
Other Languages Moderators Lord Henry Posted September 12, 2019 Other Languages Moderators Share Posted September 12, 2019 (edited) Adicione isso no script de prender, fora da função: function getPlayerByID (id) for i, player in ipairs (getElementsByType("player")) do if getElementData(player, "ID") == id then return player end end end E na função que vc quer que seja por ID, troque o getPlayerFromPartialName (name) por getPlayerByID (id). Não se esqueça de substituir o parâmetro de função name por id. function colocanavtr (police, _, id) if hasObjectPermissionTo (police, "function.Prender") then local preso = getPlayerByID (id) local px, py, pz = getElementPosition (police) local bx, by, bz = getElementPosition (preso) local dist = getDistanceBetweenPoints3D (px, py, pz, bx, by, bz) if not preso then return outputChatBox ("Jogador invalido.", police, 190, 190, 190, true) end if preso == police then return outputChatBox ("Você não pode prender a si mesmo.", police, 190, 190, 190, true) end if getPlayerWantedLevel (preso) == 0 then return outputChatBox ("Este jogador não está sendo procurado.", police, 190, 190, 190, true) end if getPedOccupiedVehicle (police) then return outputChatBox ("Você não pode prender de dentro da viatura.", police, 190, 190, 190, true) end if getPedOccupiedVehicle (preso) then return outputChatBox ("Você não pode prender um bandido enquanto ele estiver dentro de um veículo.", police, 190, 190, 190, true) end if dist >= 2 then return outputChatBox ("Você precisa chegar mais perto para prender.", police, 190, 190, 190, true) end setElementData (preso, "navtr", true) addEventHandler ("onPlayerCommand", preso, onCommand) local vtr = carros[police] setElementData (vtr, "compreso", true) attachElements (preso, vtr, 0.2, -1.5, 0, 0, 0, 90) setElementFrozen (preso, true) toggleAllControls (preso, false) takeAllWeapons (preso) setPedAnimation (preso, "ped", "CAR_dead_LHS") vrx, vry, vrz = getElementRotation (vtr) setElementRotation (preso, vrx, vry, vrz+83) warpPedIntoVehicle (police, vtr) outputChatBox ("Leve o preso para a delegacia mais próxima #00ffff(sirenes azuis).", police, 190, 190, 190, true) end end addCommandHandler ("prender", colocanavtr) Edited September 12, 2019 by Lord Henry 1 Link to comment
joao2235 Posted September 12, 2019 Author Share Posted September 12, 2019 Vou fazer o teste agora e já posto o resultado! Desde já agradeço. https://i.imgur.com/6mzG2Qg.png Não funcionou, o chat informa "jogador inválido", o comando digitado foi "/prender 5" comando estabelecido (/prender) + ID(5). Segue código do Prender completo abaixo: --Marker Prender Delegacias MarkerLS = createMarker(1536, -1675.5, 12, "cylinder", 4, 125, 0, 0, 150 ) MarkerLV = createMarker(2285.2446289063,2422.171875,9.8203125, "cylinder", 4, 125, 0, 0, 150 ) MarkerSF = createMarker(-1605.2316894531,721.94152832031,10.519316291809, "cylinder", 4, 125, 0, 0, 150) function onCommand(command) if (command ~= 'say' ) then cancelEvent() end end carros = {} function salvacarro (vei, assento, vitima) carros[source] = vei end addEventHandler ('onPlayerVehicleEnter', root, salvacarro) tx = 0 dx = 4.7 function encarcerar (preso) removeElementData (preso, 'navtr') setElementInterior (preso, 6) setElementDimension (preso, 200) setElementFrozen (preso, false) setPedAnimation (preso) toggleAllControls (preso, true) toggleControl (preso, 'fire', false) if ( tx<6.1*dx ) then setElementPosition (preso, 1544.27+tx, -1637.42, -83.36+2) --setElementRotation (preso, 0) tx = tx + dx elseif ( tx>5.9*dx and tx<13.9*dx ) then setElementPosition (preso, 1511.08+tx, -1616.37, -83.36) --setElementRotation (preso, 180) tx = tx + dx elseif ( tx>13.9*dx and tx<17.1*dx) then setElementPosition (preso, 1483.31+tx, -1616.37, -89.5) --setElementRotation (preso, 180) tx = tx + dx elseif ( tx>16.9*dx and tx<20.1*dx) then setElementPosition (preso, 1464.32+tx, -1637.42, -89.5) --setElementRotation (preso, 0) tx = tx + dx elseif ( tx>19.9*dx ) then tx = 0 setElementPosition (preso, 1544.27+tx, -1637.42, -83.36) --setElementRotation (preso, 0) tx = dx end end function delegaciaLS (source) if getElementData (source, 'compreso') then local pregados = getAttachedElements(source) for _,preso in ipairs (pregados) do if ( getElementData (preso, 'navtr') ) then setElementData(preso, "naprisaoLS", true) detachElements (preso, source) encarcerar(preso) local police = getVehicleOccupant (source, 0) local niv = getPlayerWantedLevel (preso) local premio = 50*niv setPlayerMoney (police, getPlayerMoney(police)+ premio ) outputChatBox('#bebebeVocê prendeu um procurado nível #00ffff'..niv..'#bebebe e ganhou #00ffffR$ '..premio..'#bebebe de prêmio!' , police, 255, 255, 255, true) end end end end addEventHandler("onMarkerHit", MarkerLS, delegaciaLS) function delegaciaLV (source) if getElementData (source, 'compreso') then local pregados = getAttachedElements(source) for _,preso in ipairs (pregados) do if ( getElementData (preso, 'navtr') ) then setElementData(preso, "naprisaoLV", true) detachElements (preso, source) encarcerar(preso) local police = getVehicleOccupant (source, 0) local niv = getPlayerWantedLevel (preso) local premio = 50*niv setPlayerMoney (police, getPlayerMoney(police)+ premio ) outputChatBox('#bebebeVocê prendeu um procurado nível #00ffff'..niv..'#bebebe e ganhou #00ffffR$ '..premio..'#bebebe de prêmio!' , police, 255, 255, 255, true) end end end end addEventHandler("onMarkerHit", MarkerLV, delegaciaLV) function delegaciaSF (source) if getElementData (source, 'compreso') then local pregados = getAttachedElements(source) for _,preso in ipairs (pregados) do if ( getElementData (preso, 'navtr') ) then setElementData(preso, "naprisaoSF", true) detachElements (preso, source) encarcerar(preso) local police = getVehicleOccupant (source, 0) local niv = getPlayerWantedLevel (preso) local premio = 50*niv setPlayerMoney (police, getPlayerMoney(police)+ premio ) outputChatBox('#bebebeVocê prendeu um procurado nível #00ffff'..niv..'#bebebe e ganhou #00ffffR$ '..premio..'#bebebe de prêmio!' , police, 255, 255, 255, true) end end end end addEventHandler("onMarkerHit", MarkerSF, delegaciaSF) function getPlayerByID (id) for i, player in ipairs (getElementsByType("player")) do if getElementData(player, "ID") == id then return player end end end function colocanavtr (police, _, id) if hasObjectPermissionTo (police, "function.Prender") then local preso = getPlayerByID (id) local px, py, pz = getElementPosition (police) local bx, by, bz = getElementPosition (preso) local dist = getDistanceBetweenPoints3D (px, py, pz, bx, by, bz) if not preso then return outputChatBox ("Jogador invalido.", police, 190, 190, 190, true) end if preso == police then return outputChatBox ("Você não pode prender a si mesmo.", police, 190, 190, 190, true) end if getPlayerWantedLevel (preso) == 0 then return outputChatBox ("Este jogador não está sendo procurado.", police, 190, 190, 190, true) end if getPedOccupiedVehicle (police) then return outputChatBox ("Você não pode prender de dentro da viatura.", police, 190, 190, 190, true) end if getPedOccupiedVehicle (preso) then return outputChatBox ("Você não pode prender um bandido enquanto ele estiver dentro de um veículo.", police, 190, 190, 190, true) end if dist >= 2 then return outputChatBox ("Você precisa chegar mais perto para prender.", police, 190, 190, 190, true) end setElementData (preso, "navtr", true) addEventHandler ("onPlayerCommand", preso, onCommand) local vtr = carros[police] setElementData (vtr, "compreso", true) attachElements (preso, vtr, 0.2, -1.5, 0, 0, 0, 90) setElementFrozen (preso, true) toggleAllControls (preso, false) takeAllWeapons (preso) setPedAnimation (preso, "ped", "CAR_dead_LHS") vrx, vry, vrz = getElementRotation (vtr) setElementRotation (preso, vrx, vry, vrz+83) warpPedIntoVehicle (police, vtr) outputChatBox ("Leve o preso para a delegacia mais próxima #00ffff(sirenes azuis).", police, 190, 190, 190, true) end end addCommandHandler ("prender", colocanavtr) function libera (liberado) if (getElementData(liberado, "naprisaoLS")) then removeEventHandler('onPlayerCommand', liberado, onCommand) setElementData (liberado, 'naprisaoLS', false) setElementInterior (liberado, 0) setElementDimension (liberado, 0) setElementPosition (liberado, 1553.1795654297,-1675.5323486328,16.1953125) setTimer (setElementRotation, 100, 1, liberado, 0, 0, 90) toggleAllControls (liberado, true) end if (getElementData(liberado, "naprisaoLV")) then removeEventHandler('onPlayerCommand', liberado, onCommand) setElementData (liberado, 'naprisaoLV', false) setElementInterior (liberado, 0) setElementDimension (liberado, 0) setElementPosition (liberado, 2294.4409179688,2425.2978515625,10.8203125) setTimer (setElementRotation, 100, 1, liberado, 0, 0, 180) toggleAllControls (liberado, true) end if (getElementData(liberado, "naprisaoSF")) then removeEventHandler('onPlayerCommand', liberado, onCommand) setElementData (liberado, 'naprisaoSF', false) setElementInterior (liberado, 0) setElementDimension (liberado, 0) setElementPosition (liberado, -1605.349609375,712.03814697266,13.8671875) setTimer (setElementRotation, 100, 1, liberado, 0, 0, 359.84512329102) toggleAllControls (liberado, true) end if ( getElementData(liberado, 'navtr') ) then removeEventHandler('onPlayerCommand', liberado, onCommand) setElementData (liberado, 'navtr', false) setElementFrozen (liberado, false) detachElements (liberado, getElementAttachedTo(liberado) ) lx, ly, lz = getElementPosition (liberado) setElementPosition (liberado, lx+2 , ly+2 , lz) setPedAnimation (liberado) toggleAllControls (liberado, true) end end function removeWantedLevel() for k, v in ipairs(getElementsByType ('player')) do if (getElementData (v, 'naprisaoLS') or getElementData (v, 'naprisaoLV') or getElementData (v, 'naprisaoSF')) then setPlayerWantedLevel(v, getPlayerWantedLevel(v)-1) if getPlayerWantedLevel(v) < 1 then libera (v) end end end end setTimer(removeWantedLevel, 30000, 0) function stars(source) setPlayerWantedLevel(source, 2) end addCommandHandler("testes", stars) Link to comment
joao2235 Posted September 13, 2019 Author Share Posted September 13, 2019 Alguém on ? Grato se puderem ajudar. Link to comment
DNL291 Posted September 13, 2019 Share Posted September 13, 2019 1 - Coloca uma verificação antes de chamar a função getPlayerByID, assim: if not tonumber(id) then return outputChatBox( "sintaxe: /".._.." [id]", police, 230,20,20 ) end 2 - Converta para number: local preso = getPlayerByID (tonumber(id)) 1 Link to comment
Other Languages Moderators Lord Henry Posted September 13, 2019 Other Languages Moderators Share Posted September 13, 2019 Ah, verdade. Faltou converter o id para número. Pois depois de comando ele é uma string. Link to comment
joao2235 Posted September 13, 2019 Author Share Posted September 13, 2019 Funcionando, valeuu! Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now