Portal SAMP
[Ajuda] Como detectar enquanto o player está apertando W - 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] Como detectar enquanto o player está apertando W (/showthread.php?tid=143)

Páginas: 1 2


Como detectar enquanto o player está apertando W - annety - 04/10/2020

Existe alguma forma de detectar se o veiculo que estou dirigindo está indo só pra frente?

Digo, como se eu tivesse só apertando W, sem apertar junto A ou D

Eu queria detectar quando o veiculo está indo só pra frente (reta) e setar a variavel:
veiculoEmReta[playerid] = true;

Alguém tem alguma ideia de como fazer isso?


RE: Como detectar enquanto o player está apertando W - Nyft - 04/10/2020

Código PHP:
#define HOLDING(%0) 
    
((newkeys & (%0)) == (%0))

//

public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if(
HOLDING(KEY_UP))
    {
        
// ...
    
}
    return 
1;


Se eu não me engano a tecla "W" é KEY_UP. Caso não funcionar tente usar um timer usando GetPlayerKeys.


RE: Como detectar enquanto o player está apertando W - annety - 05/10/2020

@Nyft editei o tópico, eu tinha explicado mal o que eu precisava


RE: Como detectar enquanto o player está apertando W - annety - 24/10/2020

uppppp


RE: Como detectar enquanto o player está apertando W - annety - 25/10/2020

upppp


RE: Como detectar enquanto o player está apertando W - annety - 31/10/2020

upppp


RE: Como detectar enquanto o player está apertando W - annety - 01/11/2020

tinha escrito mal o tópico, editei agora tá bem claro o que eu preciso, alguém ajuda pls


RE: Como detectar enquanto o player está apertando W - willttoonn - 01/11/2020

Nunca tentei, mas tente colocar a condição que o jogador pressione a KEY_UP e não pressione a KEY_LEFT e KEY_RIGHT.

Algo tipo:

Código:
#define HOLDING(%0)
    ((newkeys & (%0)) == (%0))

//

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(HOLDING(KEY_UP) && !HOLDING(KEY_LEFT) && !HOLDING(KEY_RIGHT))
    {
        // ...
    }
    return 1;
}



RE: Como detectar enquanto o player está apertando W - annety - 02/11/2020

eu tentei:

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
Código:
if(HOLDING(KEY_UP) && !HOLDING(KEY_LEFT) && !HOLDING(KEY_RIGHT))
    {
        boostando[playerid] = true;
    }

public OnPlayerUpdate(playerid)
Código:
new testSTR[128];
        format(testSTR, sizeof(testSTR), "boostando: (%b)",  boostando[playerid] );
        SendClientMessage(playerid, COLOR_LIGHTRED, testSTR);

e tá sempre printando 0 Sad


RE: Como detectar enquanto o player está apertando W - HenriqueAra1 - 02/11/2020

%b é para números binários. Tente usar números para verificar, caso esteja como você queira, volte a usar o bool.