#DeltaSCR Posted July 12, 2019 Share Posted July 12, 2019 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
DNL291 Posted July 12, 2019 Share Posted July 12, 2019 Tenta: setCameraInterior / setCameraDimension (antes do setCameraMatrix) setCameraInterior quando voltar para o player (assumindo que você esteja setando um interior no cliente) Antes de setCameraMatrix, mudar o interior do player e voltar quando retornar a camera pra ele; Ou Setar novamente as coordenadas / interior do jogador quando retornar a câmera Link to comment
#DeltaSCR Posted July 12, 2019 Author Share Posted July 12, 2019 Bom, setar as coordenadas do player eu tentei, não deu certo; O bug acontece mesmo estando fora de qualquer interior, e dimensão 0. Link to comment
DNL291 Posted July 12, 2019 Share Posted July 12, 2019 Tenta em vez de setCameraMatrix usar getCamera() e setElementPosition/rotation 1 Link to comment
#DeltaSCR Posted July 13, 2019 Author Share Posted July 13, 2019 (edited) Ok, aparentemente funcionou, porém infelizmente o player não pode estar dentro de um veículo. Edited July 13, 2019 by #DeltaSCR Link to comment
#DeltaSCR Posted July 13, 2019 Author Share Posted July 13, 2019 @DNL291 Por favor, tranque o tópico. Link to comment
DNL291 Posted July 13, 2019 Share Posted July 13, 2019 @#DeltaSCR Espera, você conseguiu resolver o problema? Se sim seria muito útil você compartilhar aqui, pois outras pessoas com esse problema irão procurar uma solução e ela pode ser a sua. Link to comment
#DeltaSCR Posted July 13, 2019 Author Share Posted July 13, 2019 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 1 Link to comment
Recommended Posts