Portal SAMP
[Ajuda] animação no 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] animação no actor (/showthread.php?tid=4616)



animação no actor - blabla666 - 11/03/2024

Olá. Boa noite! estou fazendo um sistema em meu servidor, coloquei uns atores e quero cortar as animações de quando ele toma tiros;
Após ele tomar uns 4 tiros, ele automaticamente caí, usei a função 'ClearDynamicActorAnimations' na public 'OnPlayerGiveDamageActor' e mesmo assim não funcionou. Alguém pode me ajudar?


RE: animação no actor - Notknown - 11/03/2024

(11/03/2024 19:19)blabla666 Escreveu: Olá. Boa noite! estou fazendo um sistema em meu servidor, coloquei uns atores e quero cortar as animações de quando ele toma tiros;
Após ele tomar uns 4 tiros, ele automaticamente caí, usei a função 'ClearDynamicActorAnimations' na public 'OnPlayerGiveDamageActor' e mesmo assim não funcionou. Alguém pode me ajudar?

Arrume A Public Que Voce esta usando, Inves de "OnPlayerGiveDamageActor" use  "OnPlayerGiveDamageDynamicActor"


RE: animação no actor - Aranha - 11/03/2024

(11/03/2024 21:14)Notknown Escreveu:
(11/03/2024 19:19)blabla666 Escreveu: Olá. Boa noite! estou fazendo um sistema em meu servidor, coloquei uns atores e quero cortar as animações de quando ele toma tiros;
Após ele tomar uns 4 tiros, ele automaticamente caí, usei a função 'ClearDynamicActorAnimations' na public 'OnPlayerGiveDamageActor' e mesmo assim não funcionou. Alguém pode me ajudar?

Arrume A Public Que Voce esta usando, Inves de "OnPlayerGiveDamageActor" use  "OnPlayerGiveDamageDynamicActor"

Estou tendo o mesmo problema tentei de todo jeito  nao consigo ajeitar isso

Código:
public OnPlayerGiveDamageDynamicActor(playerid, STREAMER_TAG_ACTOR:actorid, Float:amount, weaponid, bodypart)
{

    new playerWeapon = GetPlayerWeapon(playerid);
    if(playerWeapon >= 22 && playerWeapon <= 42)
    {








        if(BlockAssaltouCaixa[playerid] == -1)
        {








            if(IsPlayerInRangeOfPoint(playerid, 10.0, 885.6487, 2009.5953, -15.3484))
            {






                if(ORG[playerid] >= 0)
                {





                    if(STREAMER_TAG_ACTOR:actorid == actormercadinho)
                    {





                        if(CaixaMercadinho > 0)
                        {









                            
                            TogglePlayerControllable(playerid, 0);
                            RoubarMercadinho[playerid] = SetTimerEx("RoubarLojaMercadinho", 20000, false, "i", playerid);
                            ApplyDynamicActorAnimation(actormercadinho, "ROB_BANK","SHP_HandsUp_Scr", 4.1, 1, 0, 0, 0, 3000);
                            SendClientMessage(playerid, -1, "| ASSALTO | Perdeu perdeu passa grana!!");
                            BlockAssaltouCaixa[playerid] = 30;
                            ApplyAnimation(playerid, "SHOP", "ROB_Loop_Threat", 4.0, 1, 0, 0, 0, 0, 1); // anime roubar
                        }
                        else
                        {






                            return SendClientMessage(playerid, -1, "| ASSALTO |O caixa esta vazio!!");

                        }
                    }
                }
            }
        }
    }
    return 1;
}



RE: animação no actor - Notknown - 11/03/2024

(11/03/2024 21:23)Aranha Escreveu:
(11/03/2024 21:14)Notknown Escreveu:
(11/03/2024 19:19)blabla666 Escreveu: Olá. Boa noite! estou fazendo um sistema em meu servidor, coloquei uns atores e quero cortar as animações de quando ele toma tiros;
Após ele tomar uns 4 tiros, ele automaticamente caí, usei a função 'ClearDynamicActorAnimations' na public 'OnPlayerGiveDamageActor' e mesmo assim não funcionou. Alguém pode me ajudar?

Arrume A Public Que Voce esta usando, Inves de "OnPlayerGiveDamageActor" use  "OnPlayerGiveDamageDynamicActor"

Estou tendo o mesmo problema tentei de todo jeito  nao consigo ajeitar isso

Código:
public OnPlayerGiveDamageDynamicActor(playerid, STREAMER_TAG_ACTOR:actorid, Float:amount, weaponid, bodypart)
{

    new playerWeapon = GetPlayerWeapon(playerid);
    if(playerWeapon >= 22 && playerWeapon <= 42)
    {








        if(BlockAssaltouCaixa[playerid] == -1)
        {








            if(IsPlayerInRangeOfPoint(playerid, 10.0, 885.6487, 2009.5953, -15.3484))
            {






                if(ORG[playerid] >= 0)
                {





                    if(STREAMER_TAG_ACTOR:actorid == actormercadinho)
                    {





                        if(CaixaMercadinho > 0)
                        {









                            
                            TogglePlayerControllable(playerid, 0);
                            RoubarMercadinho[playerid] = SetTimerEx("RoubarLojaMercadinho", 20000, false, "i", playerid);
                            ApplyDynamicActorAnimation(actormercadinho, "ROB_BANK","SHP_HandsUp_Scr", 4.1, 1, 0, 0, 0, 3000);
                            SendClientMessage(playerid, -1, "| ASSALTO | Perdeu perdeu passa grana!!");
                            BlockAssaltouCaixa[playerid] = 30;
                            ApplyAnimation(playerid, "SHOP", "ROB_Loop_Threat", 4.0, 1, 0, 0, 0, 0, 1); // anime roubar
                        }
                        else
                        {






                            return SendClientMessage(playerid, -1, "| ASSALTO |O caixa esta vazio!!");

                        }
                    }
                }
            }
        }
    }
    return 1;
}

Poderia me dizer como voce esta criando os atores?

caso voce deixe eles imortal a função OnPlayerGiveDamageDynamicActor não iria funcionar e claro, caso voce tenha um timer que bloqueie esta função de ser roubada apos um tempo, se voce utilizar uma arma que possua duas, tipo a sawn-off que voce aperte uma vez so e sai dois tiros a função iria ser chamada duas vezes.

Tinha Feito Um simples teste utilizando a base do seu codigo e funcionou ate que de boa, embora inves de usar essa função eu utilizaria a função da include a players "GetPlayerCameraTargetActor" ja que seria e so voce mirar no npc desejado que ele iniciaria a função de roubar o npc


base

Código:
#include a_samp
#include streamer

new actormercadinho[1];
new RoubarMercadinho[MAX_PLAYERS];

public OnGameModeInit()
{
    actormercadinho[0] = CreateDynamicActor(71, -2653.0618,-209.9351,4.3045,76.6137, false, 100.0, 0, 0); //cordenada aleatoria ignore
}

public OnPlayerGiveDamageDynamicActor(playerid, STREAMER_TAG_ACTOR:actorid, Float:amount, weaponid, bodypart)
{
    if(STREAMER_TAG_ACTOR:actorid == actormercadinho[0])
    {
            ApplyDynamicActorAnimation(actormercadinho[0], "ROB_BANK","SHP_HandsUp_Scr", 4.0,0,1,1,1,0);
              RoubarMercadinho[playerid] = SetTimerEx("RoubarLojaMercadinho", 500, false, "i", playerid);
    }
    return 1;
}

forward RoubarLojaMercadinho(playerid);
public RoubarLojaMercadinho(playerid)
{
    GivePlayerMoney(playerid, 5000);
    return 1;
}



RE: animação no actor - Aranha - 11/03/2024

(11/03/2024 22:47)Notknown Escreveu:
(11/03/2024 21:23)Aranha Escreveu:
(11/03/2024 21:14)Notknown Escreveu:
(11/03/2024 19:19)blabla666 Escreveu: Olá. Boa noite! estou fazendo um sistema em meu servidor, coloquei uns atores e quero cortar as animações de quando ele toma tiros;
Após ele tomar uns 4 tiros, ele automaticamente caí, usei a função 'ClearDynamicActorAnimations' na public 'OnPlayerGiveDamageActor' e mesmo assim não funcionou. Alguém pode me ajudar?

Arrume A Public Que Voce esta usando, Inves de "OnPlayerGiveDamageActor" use  "OnPlayerGiveDamageDynamicActor"

Estou tendo o mesmo problema tentei de todo jeito  nao consigo ajeitar isso

Código:
public OnPlayerGiveDamageDynamicActor(playerid, STREAMER_TAG_ACTOR:actorid, Float:amount, weaponid, bodypart)
{

    new playerWeapon = GetPlayerWeapon(playerid);
    if(playerWeapon >= 22 && playerWeapon <= 42)
    {








        if(BlockAssaltouCaixa[playerid] == -1)
        {








            if(IsPlayerInRangeOfPoint(playerid, 10.0, 885.6487, 2009.5953, -15.3484))
            {






                if(ORG[playerid] >= 0)
                {





                    if(STREAMER_TAG_ACTOR:actorid == actormercadinho)
                    {





                        if(CaixaMercadinho > 0)
                        {









                            
                            TogglePlayerControllable(playerid, 0);
                            RoubarMercadinho[playerid] = SetTimerEx("RoubarLojaMercadinho", 20000, false, "i", playerid);
                            ApplyDynamicActorAnimation(actormercadinho, "ROB_BANK","SHP_HandsUp_Scr", 4.1, 1, 0, 0, 0, 3000);
                            SendClientMessage(playerid, -1, "| ASSALTO | Perdeu perdeu passa grana!!");
                            BlockAssaltouCaixa[playerid] = 30;
                            ApplyAnimation(playerid, "SHOP", "ROB_Loop_Threat", 4.0, 1, 0, 0, 0, 0, 1); // anime roubar
                        }
                        else
                        {






                            return SendClientMessage(playerid, -1, "| ASSALTO |O caixa esta vazio!!");

                        }
                    }
                }
            }
        }
    }
    return 1;
}

Poderia me dizer como voce esta criando os atores?

caso voce deixe eles imortal a função OnPlayerGiveDamageDynamicActor não iria funcionar e claro, caso voce tenha um timer que bloqueie esta função de ser roubada apos um tempo, se voce utilizar uma arma que possua duas, tipo a sawn-off que voce aperte uma vez so e sai dois tiros a função iria ser chamada duas vezes.

Tinha Feito Um simples teste utilizando a base do seu codigo e funcionou ate que de boa, embora inves de usar essa função eu utilizaria a função da include a players "GetPlayerCameraTargetActor" ja que seria e so voce mirar no npc desejado que ele iniciaria a função de roubar o npc


base

Código:
#include a_samp
#include streamer

new actormercadinho[1];
new RoubarMercadinho[MAX_PLAYERS];

public OnGameModeInit()
{
    actormercadinho[0] = CreateDynamicActor(71, -2653.0618,-209.9351,4.3045,76.6137, false, 100.0, 0, 0); //cordenada aleatoria ignore
}

public OnPlayerGiveDamageDynamicActor(playerid, STREAMER_TAG_ACTOR:actorid, Float:amount, weaponid, bodypart)
{
    if(STREAMER_TAG_ACTOR:actorid == actormercadinho[0])
    {
            ApplyDynamicActorAnimation(actormercadinho[0], "ROB_BANK","SHP_HandsUp_Scr", 4.0,0,1,1,1,0);
              RoubarMercadinho[playerid] = SetTimerEx("RoubarLojaMercadinho", 500, false, "i", playerid);
    }
    return 1;
}

forward RoubarLojaMercadinho(playerid);
public RoubarLojaMercadinho(playerid)
{
    GivePlayerMoney(playerid, 5000);
    return 1;
}


caso voce deixe eles imortal a função OnPlayerGiveDamageDynamicActor não iria funcionar e claro, caso voce tenha um timer que bloqueie esta função de ser roubada apos um tempo, se voce utilizar uma arma que possua duas, tipo a sawn-off que voce aperte uma vez so e sai dois tiros a função iria ser chamada duas vezes.

Estava imortal ai estava o erro sim coloquei um timer para bloquer
ajudou muito vlw
Funcionou
+Rep

Espero q resolva para o blabla666 tambem
No pc funcionou mais no mobile falhou
Mobile e foda so buga qual coisa pra mobile vou fazer um cmd pra roubar srsrs