Portal SAMP
[Ajuda] Setar objeto de acordo com o angulo do actor - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Setar objeto de acordo com o angulo do actor (/showthread.php?tid=291)

Páginas: 1 2


Setar objeto de acordo com o angulo do actor - annety - 07/11/2020

Baseado nesse ator:
Código:
// 24-7
CreateDynamicActor(bizzid, 17, 142, -29.0206,-186.8182,1003.5469,1.6775);

[Imagem: Tfc0wa7.png]

Eu consegui achar um jeito de colocar uma arma na mão dele:
Código:
    // criado [15:21:57] x[-29.020599] y[-186.818206] z[1003.546875] RotX[0] RotY[0] RotZ[0]
    new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz;
    GetDynamicActorPos(actorid, x, y, z);
    // movido [15:23:45] x[-28.945550] y[-186.275421] z[1003.882324] rx[0.000000] ry[-3.300002] rz[98.899940]
    x += 1.0;
    x -= 0.924951;
    y += 0.542785;
    z += 0.335449;
    rx = 0.0;
    ry = -3.300002;
    rz = 98.899940;
    DestroyDynamicObject(ActorInfo[actorid][actorGun]);
    ActorInfo[actorid][actorGun] = CreateDynamicObject(GetGunObjectID(24), x, y, z, rx, ry, rz);

O problema é que em outros fica todo bugado assim:

[Imagem: igOe4f7.png]
// pizza
CreateDynamicActor(bizzid, 5, 155, 374.7394,-117.2788,1001.4922,180.5908);

[Imagem: rA9pALX.png]
// alambra
CreateDynamicActor(bizzid, 17, 194, 501.6993,-20.4994,1000.6797,88.5219);


Alguém mais experiente sabe um jeito de fazer o que eu fiz pra um NPC de forma generica pra todos?


RE: Setar objeto de acordo com o angulo do actor - annety - 14/11/2020

alguém aí que manja das matematicas?


RE: Setar objeto de acordo com o angulo do actor - annety - 21/11/2020

uppppppp


RE: Setar objeto de acordo com o angulo do actor - guikommander - 22/11/2020

ShiftOffsetToPosition

Presente no pacote 3DTryG

Exemplo de uso:

Código PHP:
new Float:OffSetArmaX /* Digite aqui os offsets da arma*/,
    
Float:OffSetArmaY /* Digite aqui os offsets da arma*/,
    
Float:OffSetArmaZ /* Digite aqui os offsets da arma*/;
    
new 
Float:PosicoesFinaisXYZ[3];

GetActorPos(atoridPosAtorXPosAtorYPosAtorZ);
GetActorAngle(atoridAnguloAtor);

ShiftOffsetToPosition(PosAtorXPosAtorYPosAtorZ0.00.0AnguloAtorOffSetArmaXOffSetArmaYOffSetArmaZPosicoesFinaisXYZ[0], PosicoesFinaisXYZ[1], PosicoesFinaisXYZ[2]);
SetObjectPos(objeto_armaPosicoesFinaisXYZ[0], PosicoesFinaisXYZ[1], PosicoesFinaisXYZ[2]); 

Eu testei no meu sistema de Bilhar, e ficou perfeito essa função. Você pode tentar

Link do pacote: https://github.com/AbyssMorgan/3DTryg


RE: Setar objeto de acordo com o angulo do actor - annety - 04/12/2020

(22/11/2020 01:36)guikommander Escreveu: ShiftOffsetToPosition

Presente no pacote 3DTryG

Exemplo de uso:

Código PHP:
new Float:OffSetArmaX /* Digite aqui os offsets da arma*/,
    
Float:OffSetArmaY /* Digite aqui os offsets da arma*/,
    
Float:OffSetArmaZ /* Digite aqui os offsets da arma*/;
    
new 
Float:PosicoesFinaisXYZ[3];

GetActorPos(atoridPosAtorXPosAtorYPosAtorZ);
GetActorAngle(atoridAnguloAtor);

ShiftOffsetToPosition(PosAtorXPosAtorYPosAtorZ0.00.0AnguloAtorOffSetArmaXOffSetArmaYOffSetArmaZPosicoesFinaisXYZ[0], PosicoesFinaisXYZ[1], PosicoesFinaisXYZ[2]);
SetObjectPos(objeto_armaPosicoesFinaisXYZ[0], PosicoesFinaisXYZ[1], PosicoesFinaisXYZ[2]); 

Eu testei no meu sistema de Bilhar, e ficou perfeito essa função. Você pode tentar

Link do pacote: https://github.com/AbyssMorgan/3DTryg

Essa lib tá quebrada aqui...
https://github.com/AbyssMorgan/3DTryg/blob/master/3DTryg.inc
não compila

Código:
#define ENABLE_3D_TRYG_YSI_SUPPORT

#include <3DTryg>

Na hora de compilar acontece aquele erro
Código:
[Finished in 3.8s with exit code -11]
[cmd: ['pawncc', 'TWD.pwn', '-;+', '-v2', '-d3', '-Z+', '-\\)+']]
[dir: /home/anty/Documents/sampserver/gamemodes]
[path: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games]



RE: Setar objeto de acordo com o angulo do actor - annety - 05/12/2020

essa aqui
Código:
// criado [15:21:57] x[-29.020599] y[-186.818206] z[1003.546875] RotX[0] RotY[0] RotZ[0]
    new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz;
    GetDynamicActorPos(actorid, x, y, z);
    // movido [15:23:45] x[-28.945550] y[-186.275421] z[1003.882324] rx[0.000000] ry[-3.300002] rz[98.899940]
    x += 1.0;
    x -= 0.924951;
    y += 0.542785;
    z += 0.335449;
    rx = 0.0;
    ry = -3.300002;

eu fiz na mão no ator
CreateDynamicActor(bizzid, 17, 142, -29.0206,-186.8182,1003.5469,1.6775);
usando o editobject

mas acho que tá dando problema por causa da posição que o ator tá virado ou algo do tipo

alguém sabe o que tá causando o problema?
e/ou como se tiver como resolver isso de forma automatica pra eu não ter que setar pra cada ator? pq tem mais de 100 daria muito trabalho


RE: Setar objeto de acordo com o angulo do actor - LeleziiN - 08/12/2020

Amigo vc poderia mim mostra como criar Actors em Interiores?


RE: Setar objeto de acordo com o angulo do actor - annety - 13/12/2020

(08/12/2020 12:37)LeleziiN Escreveu: Amigo vc poderia mim mostra como criar Actors em Interiores?

Atores não tem interior, você cria eles e eles aparecem em todos, até onde me lembro


RE: Setar objeto de acordo com o angulo do actor - annety - 19/12/2020

alguém sabe me dizer pq alguns ficam pra direita, outros pra trás, talvez com essa informação eu consiga montar a formula pra resolver isso Sad


RE: Setar objeto de acordo com o angulo do actor - LeleziiN - 20/12/2020

(13/12/2020 11:04)annety Escreveu:
(08/12/2020 12:37)LeleziiN Escreveu: Amigo vc poderia mim mostra como criar Actors em Interiores?

Atores não tem interior, você cria eles e eles aparecem em todos, até onde me lembro

Bom amigo já tentei fazer aqui e até agora nenhum sucesso, pois gostaria de cria-los dentro das empresas de meu servidor, como se fossem atendentes