Jump to content

[AJUDA]Não consigo setar a rotação do player


Recommended Posts

Tentei de várias formas fazer com que o player seja rotacionado, nenhuma delas deu certo. A linha em questão é a 144, segue o código completo abaixo:
 

--DELEGACIAS
local marker = {}
local Positions = {
	createMarker(1536, -1675.5, 12, "cylinder", 4, 125, 0, 0, 150 ),
	--[[{1536 , -1675.5 ,12},
	{2185 , -1757 ,12},
	{777.6 , -1387.5 ,12},
	{-1568.1 , 661.18 ,6},
	{2290.18 , 2420.7 ,10}]]--
}

function onCommand(command)
	if (command ~= 'say' )  then
		cancelEvent()	
	end
end

carros = {}
function salvacarro (vei, assento, vitima)
	carros[source] = vei
end
addEventHandler ('onPlayerVehicleEnter', root, salvacarro)

function getPlayerFromPartialName(name)
    local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil
    if name then
        for _, player in ipairs(getElementsByType("player")) do
            local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower()
            if name_:find(name, 1, true) then
                return player
            end
        end
    end
end

tx = 0
dx = 4.7
function encarcerar (preso)
	removeElementData (preso, 'navtr')
	setElementData (preso, 'naprisao', true)

	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)
		setPedRotation (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)
		setPedRotation (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)
		setPedRotation (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)
		setPedRotation (preso, 0)
		tx = tx + dx
	elseif ( tx>19.9*dx ) then
		tx = 0
		setElementPosition (preso, 1544.27+tx, -1637.42, -83.36)
		setPedRotation (preso, 0)	
		tx = dx
	end
	
end

function delegacia (source)
	if getElementData (source, 'compreso') then	
		local pregados = getAttachedElements(source)
		for _,preso in ipairs (pregados) do	
			if  (   getElementData (preso, 'navtr')   ) then
				detachElements (preso, source)
				encarcerar(preso)
				local police = getVehicleOccupant (source, 0)
				local niv = getPlayerWantedLevel (preso)
				local premio = 5000*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

for i=1, #Positions do
addEventHandler("onMarkerHit", Positions[i], delegacia)
end

function colocanavtr (police, _, name)
	if hasObjectPermissionTo(police, "function.Prender") then
		local preso = getPlayerFromPartialName(name)
		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)

function libera (liberado)
	if ( getElementData(liberado, 'naprisao') ) then		
		removeEventHandler('onPlayerCommand', liberado, onCommand)
		setElementData (liberado, 'naprisao', false)
		setElementInterior (liberado, 0)
		setElementDimension (liberado, 0)
		setElementPosition (liberado, 1553.1795654297,-1675.5323486328,16.1953125)	
		setElementRotation (liberado, 0, 0, 90)
		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, 'naprisao')) then               
			setPlayerWantedLevel(v, getPlayerWantedLevel(v)-1)				
			if getPlayerWantedLevel(v) < 1 then
				libera (v)
			end	
		end			
	end
end
setTimer(removeWantedLevel, 40000, 0)

function stars(source)
	setPlayerWantedLevel(source, 1)
end
addCommandHandler("testes", stars)

No código (line 144) peço para que o Player rotacione 90°, mas isso não ocorre. Se puderem me ajudar agradeço!

Link to comment
  • Other Languages Moderators

SetElementRotation não é como o moveObject. Ele não vai rotacionar 90º, ele vai ficar no ângulo de 90º em relação ao mundo. Isto é, ele vai ficar apontado para Oeste.

Você está setando interior, dimensão, posição e rotação ao mesmo tempo. Experimente colocar a rotação em um pequeno timer.

setTimer (setElementRotation, 100, 1, liberado, 0, 0, 90)

 

  • Thanks 1
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...