Doongogar Posted March 24, 2023 Share Posted March 24, 2023 eu queria criar uma imagem 2D porém com um efeito que a face dela sempre esteja virada para o visualizador assim como aquele script de /pro que cria uma imagem no player ai todos podem ver ela, não achei nenhum tópico/wiki/video, caso haja um, pode apontar que eu vou lá e vejo também, mas se puderem dar uma explicação detalhada eu agradeceria, já que sou meio leigo Link to comment
Other Languages Moderators Lord Henry Posted March 25, 2023 Other Languages Moderators Share Posted March 25, 2023 Você pode usar essa função útil: DxDrawImage3D E então nos parâmetros faceTowardX, faceTowardY, faceTowardZ você coloca a posição da câmera para fazer a imagem sempre ficar apontada para a câmera do jogador. Você pode obter a posição da câmera com getCameraMatrix. Link to comment
Doongogar Posted March 25, 2023 Author Share Posted March 25, 2023 eu tentei assim: local image = dxCreateTexture("armour.png") local cx, cy, cz = getCameraMatrix() function toggleArmorImage(enabled) if enabled then local imagem dxDrawImage3D(0, 0, 0, 100, 100, image, 255, 255, 255, 0, false, cx, cy, cz) attachElements(imagem, localPlayer) else if isElement(imagem) then destroyElement(imagem) imagem = nil end end end addEvent("onProStaffToggle", true) addEventHandler("onProStaffToggle", root, toggleArmorImage) function dxDrawImage3D( x, y, z, width, height, material, color, rotation, ... ) return dxDrawMaterialLine3D( x, y, z, x + width, y + height, z + tonumber( rotation or 0 ), material, height, color or 0xFFFFFFFF, ... ) end ta dando erro no attachElements, primeiro argumento, tenho quase certeza que é porque não pode usar pra attachar uma imagem eu acho, como eu faria nesse caso? Link to comment
Other Languages Moderators Lord Henry Posted March 25, 2023 Other Languages Moderators Share Posted March 25, 2023 DX não é um elemento, vc não pode anexar ele em alguma coisa. Pegue a posição da coisa que o DX deve seguir dentro do onClientRender e fique atualizando a posição 3D do DX a cada frame. A posição da câmera tbm precisa estar dentro do onClientRender para ser atualizada a cada frame. Link to comment
Doongogar Posted March 25, 2023 Author Share Posted March 25, 2023 então como eu faço para anexar a imagem ao player sem usar o attachElements, eu teria que usar o: dxDrawImageOnElement ? Link to comment
Other Languages Moderators Lord Henry Posted March 28, 2023 Other Languages Moderators Share Posted March 28, 2023 (edited) Não, vc teria que ficar usando o getElementPosition para obter a posição do player e depois ficar dando dxDrawImage3D com essa posição XYZ do player. Obs: Optei por usar o dxDrawMaterialLine3D pois a função útil dxDrawImage3D não tem os parâmetros de faceToward para apontar para a câmera. Edited March 28, 2023 by Lord Henry Link to comment
Other Languages Moderators Lord Henry Posted March 28, 2023 Other Languages Moderators Share Posted March 28, 2023 local texture = dxCreateTexture("info.png", "argb", true, "clamp") -- MTA San Andreas 1.5\MTA\cgui\images\info.png addEventHandler("onClientRender", root, function() local x, y, z = getElementPosition(localPlayer) local cx, cy, cz = getCameraMatrix() local sx, sy = getScreenFromWorldPosition (x, y, z+1, 0, false) -- Exemplo 1 dxDrawMaterialLine3D (x, y, z+1.08, x, y, z+0.9, false, texture, 0.17, 0xFFFFFFFF, false, cx, cy, cz) -- Tamanho fixo no mundo (fica menor se afastar a câmera e maior se aproximar a câmera) -- Exemplo 2 if sx then dxDrawImage (sx-21, sy, 42, 42, texture) -- Tamanho fixo na tela (mantém o tamanho igual mesmo se afastar a câmera) end end) Lembrando que vc pode mudar a câmera usando a tecla V. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now