Jump to content

Teleporte com Alterações de Camera.


Recommended Posts

Olá, gostaria de compartilhar aqui a minha dúvida - em um código produzido por mim, me deparei com a seguinte situação: Ao usar setCameraMatrix e alguns instantes depois retornar a câmera ao localPlayer, o player é levado ao "limbo" retornando após a uma posição um pouco distante de onde ele se encontrava. Tentei de diversas maneiras resolver, porém falhei miseravelmente.

function closePainel(button, state, absoluteX, absoluteY, worldX, worldY, worldZ, clickedWorld)
	if painelDirectX == true then
		if button == "left" and state == "down" then
			if not isCursorOnElement(screenW * 0.2813, screenH * 0.1500, screenW * 0.4375, screenH * 0.7000) then
				DeltaA()
			elseif isCursorOnElement(screenW * 0.2891, screenH * 0.2083, screenW * 0.1172, screenH * 0.4917) then
				local idSkin = getElementModel(selectedP)
				local pedSkin = createPed(idSkin, 1224.888, -1632.233, 27.375, 180)
				DeltaA()
				showChat(false) 
				local x, y, z = getElementPosition(localPlayer)
				local rx, ry, rz = getElementRotation(localPlayer)
				setCameraMatrix(1224.888, -1636.233, 27.375, 1250, 0, 0)
				setTimer(function()
					setCameraTarget(localPlayer)
					setTimer(function()
						setElementPosition(localPlayer, x, y, z + 1)
						setElementRotation(localPlayer, rx, ry, rz)
					end, 1, 1)
					setElementFrozen(localPlayer, false)
					destroyElement(pedSkin)
					pedSkin = nil
					DeltaA()
				end, 5000, 1)
			end
		end
	end
end
addEventHandler("onClientClick", root, closePainel)

 

Link to comment

Ah sim, claro, que egoísmo da minha parte ?. Vamos lá:

  • Eu estava usando setCameraMatrix, então você( @DNL291 ) me recomendou trocar por getCamera - e assim eu fiz, criei uma variável com a função anterior.
local cam = getCamera()
  •  Logo em seguida, com setElementPosition, eu setei a posição da câmera, utilizando da variável criada anteriormente para as coordenadas que eu estava utilizando com setCameraMatrix.
Spoiler

setElementPosition(cam, 1224.888, -1636.233, 27.375)

 

Resolveu o problema do player ir para o limbo? Sim, porém quando estava de carro, ele continuava ;-;

  • Creio eu que seja bug do próprio MTA:SA, então no meu server-side, eu verifiquei se o jogador estava em um veículo, com getPedOccupiedVehicle, caso estivesse, entraria em condição else e não executaria o resto do código.

P.S.: Desculpe se tiver algum erro aí rs

  • Like 1
Link to comment
  • DNL291 locked this topic
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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