Jump to content

[AJUDA] GetPlayer pelo ID (Script ID)


Recommended Posts

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

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 by Lord Henry
  • Thanks 1
Link to comment

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...