Portal SAMP
[Ajuda] Actor weapon - 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] Actor weapon (/showthread.php?tid=673)

Páginas: 1 2


RE: Actor weapon - Mathews - 23/07/2022

(15/02/2021 23:36)annety Escreveu: tentei o que vc falou com:

Código:
    // criado-> x[-29.049873] y[-185.818634] z[1003.546875] RotX[0] RotY[0] RotZ[0]
    new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:a;
    GetDynamicActorPos(actorid, x, y, z);
    GetDynamicActorFacingAngle(actorid, a);
    GetXYFront(x, y, a, 1.0);
    // movido-> x[-28.911067] y[-186.339630] z[1003.927917] rx[2.899999] ry[1.600000] rz[92.999923]
    x -= -0.1388060000000024;
    y += -0.5209959999999967;
    z += 0.3810419999999795;
    printf("x[%f] y[%f] z[%f] rx[%f] ry[%f] rz[%f]", x, y, z, rx, ry, rz);
    rx = 2.899999;
    ry = 1.600000;
    rz = 92.999923;
    DestroyDynamicObject(ActorInfo[actorid][actorGun]);
    ActorInfo[actorid][actorGun] = CreateDynamicObject(GetGunObjectID(24), x, y, z, rx, ry, rz);
    SetDynamicObjectPos(ActorInfo[actorid][actorGun], x, y, z);
    SetDynamicObjectRot(ActorInfo[actorid][actorGun], rx, ry, rz);


por causa da arma que eu criei usando:
Código:
stock GetXYFront(&Float:x, &Float:y, Float:a, Float:distance)
{
    x += distance * floatsin(-a, degrees);
    y += distance * floatcos(-a, degrees);


CMD:actorweapon(playerid, params[]) {
    // http://wiki.sa-mp.com/wiki/EditAttachedObject  ~  http://wiki.sa-mp.com/wiki/EditObject
    if(admin[playerid] < 1337) return 0;
    new actorid; // 1001 = primeiro npc
    if(sscanf(params,"i", actorid)) return SendClientMessage(playerid, -1, "Use: /actorweapon [actorid]");
    if(IsValidDynamicActor(actorid)) {
        ApplyDynamicActorAnimation(actorid, "PED","ARRESTgun", 4.1, 0, 0, 0, 1, 0);
        new Float:x, Float:y, Float:z, Float:a;
        GetDynamicActorPos(actorid, x, y, z);
        GetDynamicActorFacingAngle(actorid, a);
        GetXYFront(x, y, a, 1.0);
        new string[128];
        format(string, sizeof(string), "[ACTOR POS] x[%f] y[%f] z[%f] RotX[0] RotY[0] RotZ[0] / a[%f]", x, y, z, a);
        SendClientMessage(playerid, COLOR_GREY, string);
        new weaponobj = CreateDynamicObject(GetGunObjectID(24), x, y, z, 0.0, 0.0, 0.0);
        EditingDynamicObjectID[playerid] = weaponobj;
        EditingDynamicObjectTYPE[playerid] = 3;
        EditDynamicObject(playerid, EditingDynamicObjectID[playerid]);
    }
    return 1;
}


mas só ficou bom pro actor que eu fiz ali na hora, os outros não ficaram certos

acho que eu tenho que fazer algo com o angulo, mas eu não faço ideia de como

Tem como enviar como está o CreateDynamicObject das armas, nesses atores abaixo?

// alambra

CreateDynamicActor(bizzid, 17, 194, 501.6993,-20.4994,1000.6797,88.5219);


// pizza

CreateDynamicActor(bizzid, 5, 155, 374.7394,-117.2788,1001.4922,180.5908);

"acho que eu tenho que fazer algo com o angulo, mas eu não faço ideia de como"
Sim, com toda certeza; você só vai trabalhar com ângulo, para conseguir arrumar.


"E possível fazer um actor andar?"
ApplyActorAnimation