Jump to content

Problema com jogadores caindo no limbo


ber

Recommended Posts

Estou com um problema em meu servidor, onde as vezes (bem raro) quando o player entra em um interior, ele fica caindo no limbo infinitamente, e não para mesmo se relogar, a única maneira de parar é puxar ele através do painel P. Como meu servidor é focado para ser super leve, imagino que o problema seja que o setElementPosition acaba sendo mais rápido que a renderização do interior, fazendo com que ele passe do chão e fique caindo sem parar, acho bem provável ser isso pois o PC da maioria dos players é bem fraco.

Atualmente, essa é a função que eu uso para mover o player para um interior:

function Enter(playerSource)
	if getElementType(playerSource) == "player" then
		if getElementDimension(playerSource) == 0 and getElementInterior(playerSource) == 0 then
			if not isPedInVehicle(playerSource) then
				fadeCamera(playerSource, false, 0.5)
				setTimer(function(playerSource) 
					setElementInterior(playerSource, 0)
					setElementDimension(playerSource, 0)
					setElementPosition(playerSource, 1040.612, -1015.891, -47.559)
					setElementRotation(playerSource, 0, 0, 90)
					setCameraTarget(playerSource, playerSource)
					fadeCamera(playerSource, true, 0.5)
				end, 1000, 1, playerSource)
			end
		end
	end
end
addEventHandler("onMarkerHit", enterMarker, Enter)

 

Edited by ber
Link to comment
9 hours ago, ber said:

Estou com um problema em meu servidor, onde as vezes (bem raro) quando o player entra em um interior, ele fica caindo no limbo infinitamente, e não para mesmo se relogar, a única maneira de parar é puxar ele através do painel P. Como meu servidor é focado para ser super leve, imagino que o problema seja que o setElementPosition acaba sendo mais rápido que a renderização do interior, fazendo com que ele passe do chão e fique caindo sem parar, acho bem provável ser isso pois o PC da maioria dos players é bem fraco.

Atualmente, essa é a função que eu uso para mover o player para um interior:


function Enter(playerSource)
	if getElementType(playerSource) == "player" then
		if getElementDimension(playerSource) == 0 and getElementInterior(playerSource) == 0 then
			if not isPedInVehicle(playerSource) then
				fadeCamera(playerSource, false, 0.5)
				setTimer(function(playerSource) 
					setElementInterior(playerSource, 0)
					setElementDimension(playerSource, 0)
					setElementPosition(playerSource, 1040.612, -1015.891, -47.559)
					setElementRotation(playerSource, 0, 0, 90)
					setCameraTarget(playerSource, playerSource)
					fadeCamera(playerSource, true, 0.5)
				end, 1000, 1, playerSource)
			end
		end
	end
end
addEventHandler("onMarkerHit", enterMarker, Enter)

 

A própria função setElementInterior, ja bota o player em um determinada posição. Tente assim:

function Enter(playerSource)
	if getElementType(playerSource) == "player" then
		if getElementDimension(playerSource) == 0 and getElementInterior(playerSource) == 0 then
			if not isPedInVehicle(playerSource) then
				fadeCamera(playerSource, false, 0.5)
				setElementInterior(playerSource, 0, 1040.612, -1015.891, -47.559+0.2)
				setElementDimension(playerSource, 0)
				setElementRotation(playerSource, 0, 0, 90)
				setTimer(function(playerSource) 
					setCameraTarget(playerSource, playerSource)
					fadeCamera(playerSource, true, 0.5)
				end, 1000, 1, playerSource)
			end
		end
	end
end
addEventHandler("onMarkerHit", enterMarker, Enter)

 

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...