Portal SAMP
[Ajuda] Action Handsup não funciona - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP Mobile (https://portalsamp.com/forumdisplay.php?fid=11)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=12)
+--- Tópico: [Ajuda] Action Handsup não funciona (/showthread.php?tid=4739)



Action Handsup não funciona - Ryzen_ - 01/05/2024

Criei um comando (/handsup) onde o player iria levantar as mãos, e através disso poderia ser feito um assalto ou sequestro por exemplo (apenas se o player tivesse com a determinada ação ativa. Tudo está funcionando ok para jogadores de PC, porém, quando jogadores mobile a utilizam, nada acontece. Tem alguma forma de corrigir isso?

Código PHP:
CMD:handsup(playerid) {
    if (
GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) return ClearAnimations(playerid);

    
SetPlayerSpecialAction(playeridSPECIAL_ACTION_HANDSUP);

    return 
1;




RE: Action Handsup não funciona - BitSain - 01/05/2024

(01/05/2024 21:45)Ryzen_ Escreveu: Criei um comando (/handsup) onde o player iria levantar as mãos, e através disso poderia ser feito um assalto ou sequestro por exemplo (apenas se o player tivesse com a determinada ação ativa. Tudo está funcionando ok para jogadores de PC, porém, quando jogadores mobile a utilizam, nada acontece. Tem alguma forma de corrigir isso?

Código PHP:
CMD:handsup(playerid) {
    if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) return ClearAnimations(playerid);

    SetPlayerSpecialAction(playeridSPECIAL_ACTION_HANDSUP);

    return 1;

Com o SpecialAction, isso acontecia quando eu estava perto de um veículo. (SAMP Launcher)
Mas tenha de alternativa a função ApplyAnimation:
Código PHP:
ApplyAnimation(playerid"PED""HANDSUP"4.1011001); 



RE: Action Handsup não funciona - Ryzen_ - 02/05/2024

(01/05/2024 22:27)BitSain Escreveu:
(01/05/2024 21:45)Ryzen_ Escreveu: Criei um comando (/handsup) onde o player iria levantar as mãos, e através disso poderia ser feito um assalto ou sequestro por exemplo (apenas se o player tivesse com a determinada ação ativa. Tudo está funcionando ok para jogadores de PC, porém, quando jogadores mobile a utilizam, nada acontece. Tem alguma forma de corrigir isso?

Código PHP:
CMD:handsup(playerid) {
    if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) return ClearAnimations(playerid);

    SetPlayerSpecialAction(playeridSPECIAL_ACTION_HANDSUP);

    return 1;

Com o SpecialAction, isso acontecia quando eu estava perto de um veículo. (SAMP Launcher)
Mas tenha de alternativa a função ApplyAnimation:
Código PHP:
ApplyAnimation(playerid"PED""HANDSUP"4.1011001); 

Verifiquei, e realmente o que acontece é essa questão do veículo. Existe alguma forma de verificar qual animação  o player está usando no momento? No caso da Action, eu poderia simplesmente usar: "if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) {} ...". Existe alguma forma parecida para as animações?


RE: Action Handsup não funciona - BitSain - 02/05/2024

(02/05/2024 19:24)Ryzen_ Escreveu:
(01/05/2024 22:27)BitSain Escreveu:
(01/05/2024 21:45)Ryzen_ Escreveu: Criei um comando (/handsup) onde o player iria levantar as mãos, e através disso poderia ser feito um assalto ou sequestro por exemplo (apenas se o player tivesse com a determinada ação ativa. Tudo está funcionando ok para jogadores de PC, porém, quando jogadores mobile a utilizam, nada acontece. Tem alguma forma de corrigir isso?

Código PHP:
CMD:handsup(playerid) {
    if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) return ClearAnimations(playerid);

    SetPlayerSpecialAction(playeridSPECIAL_ACTION_HANDSUP);

    return 1;

Com o SpecialAction, isso acontecia quando eu estava perto de um veículo. (SAMP Launcher)
Mas tenha de alternativa a função ApplyAnimation:
Código PHP:
ApplyAnimation(playerid"PED""HANDSUP"4.1011001); 

Verifiquei, e realmente o que acontece é essa questão do veículo. Existe alguma forma de verificar qual animação  o player está usando no momento? No caso da Action, eu poderia simplesmente usar: "if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) {} ...". Existe alguma forma parecida para as animações?
Existe sim, usando a Função GetPlayerAnimationIndex. Código de exemplo:
Código PHP:
CMD:handsup(playeridparams[]){
    if(GetPlayerAnimationIndex(playerid) != 1169) { // 1169 = index da animação HANDSUP.
        ApplyAnimation(playerid"PED""HANDSUP"4.1011001);
        SendClientMessage(playerid, -1"Você levantou suas mãos.");
        return true;
    }
    else{
        ClearAnimations(playerid);
        SendClientMessage(playerid, -1"Você abaixou suas mãos.");
        return true;
    }




RE: Action Handsup não funciona - Ryzen_ - 02/05/2024

(02/05/2024 20:56)BitSain Escreveu:
(02/05/2024 19:24)Ryzen_ Escreveu:
(01/05/2024 22:27)BitSain Escreveu:
(01/05/2024 21:45)Ryzen_ Escreveu: Criei um comando (/handsup) onde o player iria levantar as mãos, e através disso poderia ser feito um assalto ou sequestro por exemplo (apenas se o player tivesse com a determinada ação ativa. Tudo está funcionando ok para jogadores de PC, porém, quando jogadores mobile a utilizam, nada acontece. Tem alguma forma de corrigir isso?

Código PHP:
CMD:handsup(playerid) {
    if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) return ClearAnimations(playerid);

    SetPlayerSpecialAction(playeridSPECIAL_ACTION_HANDSUP);

    return 1;

Com o SpecialAction, isso acontecia quando eu estava perto de um veículo. (SAMP Launcher)
Mas tenha de alternativa a função ApplyAnimation:
Código PHP:
ApplyAnimation(playerid"PED""HANDSUP"4.1011001); 

Verifiquei, e realmente o que acontece é essa questão do veículo. Existe alguma forma de verificar qual animação  o player está usando no momento? No caso da Action, eu poderia simplesmente usar: "if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) {} ...". Existe alguma forma parecida para as animações?
Existe sim, usando a Função GetPlayerAnimationIndex. Código de exemplo:
Código PHP:
CMD:handsup(playeridparams[]){
    if(GetPlayerAnimationIndex(playerid) != 1169) { // 1169 = index da animação HANDSUP.
        ApplyAnimation(playerid"PED""HANDSUP"4.1011001);
        SendClientMessage(playerid, -1"Você levantou suas mãos.");
        return true;
    }
    else{
        ClearAnimations(playerid);
        SendClientMessage(playerid, -1"Você abaixou suas mãos.");
        return true;
    }


Muito obrigado, funcionou. Só precisei alterar o a opção de congelar o jogador para "true". Quanto a questão do "Tempo", colocar em 0 tornaria isso um loop. Isso poderia ser considerada uma má prática? (já que o objetivo é executar a animação e ficar parado nela)


RE: Action Handsup não funciona - BitSain - 03/05/2024

(02/05/2024 23:58)Ryzen_ Escreveu:
(02/05/2024 20:56)BitSain Escreveu:
(02/05/2024 19:24)Ryzen_ Escreveu:
(01/05/2024 22:27)BitSain Escreveu:
(01/05/2024 21:45)Ryzen_ Escreveu: Criei um comando (/handsup) onde o player iria levantar as mãos, e através disso poderia ser feito um assalto ou sequestro por exemplo (apenas se o player tivesse com a determinada ação ativa. Tudo está funcionando ok para jogadores de PC, porém, quando jogadores mobile a utilizam, nada acontece. Tem alguma forma de corrigir isso?

Código PHP:
CMD:handsup(playerid) {
    if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) return ClearAnimations(playerid);

    SetPlayerSpecialAction(playeridSPECIAL_ACTION_HANDSUP);

    return 1;

Com o SpecialAction, isso acontecia quando eu estava perto de um veículo. (SAMP Launcher)
Mas tenha de alternativa a função ApplyAnimation:
Código PHP:
ApplyAnimation(playerid"PED""HANDSUP"4.1011001); 

Verifiquei, e realmente o que acontece é essa questão do veículo. Existe alguma forma de verificar qual animação  o player está usando no momento? No caso da Action, eu poderia simplesmente usar: "if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_HANDSUP) {} ...". Existe alguma forma parecida para as animações?
Existe sim, usando a Função GetPlayerAnimationIndex. Código de exemplo:
Código PHP:
CMD:handsup(playeridparams[]){
    if(GetPlayerAnimationIndex(playerid) != 1169) { // 1169 = index da animação HANDSUP.
        ApplyAnimation(playerid"PED""HANDSUP"4.1011001);
        SendClientMessage(playerid, -1"Você levantou suas mãos.");
        return true;
    }
    else{
        ClearAnimations(playerid);
        SendClientMessage(playerid, -1"Você abaixou suas mãos.");
        return true;
    }


Muito obrigado, funcionou. Só precisei alterar o a opção de congelar o jogador para "true". Quanto a questão do "Tempo", colocar em 0 tornaria isso um loop. Isso poderia ser considerada uma má prática? (já que o objetivo é executar a animação e ficar parado nela)

Não seria, mas a animação irá se repetir como o próprio parâmetro diz: Loop.
Se eu não me engano: *A Animação irá se repetir sem parar*, até você cancelar.