SA-MP Forums Archive
Definiзгo por keys - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: Definiзгo por keys (/showthread.php?tid=173510)



Definiзгo por keys - BiieL - 02.09.2010

Bem, й o seguinte, estou a fazer um FS de AirBrk para o 0.3b, nгo eh anti-... eh um AirBrk, entгo fiz os seguintes codes abaixo:

pawn Код:
new Float:X, Float:Y, Float:Z;

new AirBrk[MAX_PLAYERS];

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    // PRESSED(keys)
    #define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
    //-=-=-=-=-=-=-
    GetPlayerPos(playerid, X, Y, Z);
    if ((newkeys & KEY_SUBMISSION))
    {
        if(AirBrk[playerid] == 0)
        {
            if(!IsPlayerInAnyVehicle(playerid))
            {
                GameTextForPlayer(playerid, "] ~b~~>~AirBrk ~g~Ligado ]", 2000, 1);
                AirBrk[playerid] = 1;
                TogglePlayerControllable(playerid, false);
            }
            else
            {
                GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~Saia do veнculo para ligar o AirBrk", 2000, 5);
            }
        }
        else
        {
            GameTextForPlayer(playerid, "] ~b~~>~AirBrk ~r~Desligado ]", 2000, 1);
            AirBrk[playerid] = 0;
            TogglePlayerControllable(playerid, true);
        }
    }
    //-=-=-=-=-=-=-
   
    if ((newkeys & KEY_UP) || (PRESSED(KEY_UP)))
    {
        if((AirBrk[playerid] = 1))//-=---------------- Subir
        {
            if(!IsPlayerInAnyVehicle(playerid))
            {
            SetPlayerPos(playerid, X, Y, Z+2);
            }
        }
    }
   
    //-=-=-=-=-=-=-
   
    if ((newkeys & KEY_DOWN) || (PRESSED(KEY_DOWN)))
    {
        if((AirBrk[playerid] = 1))//-=---------------- Descer
        {
            if(!IsPlayerInAnyVehicle(playerid))
            {
            SetPlayerPos(playerid, X, Y, Z-2);
            }
        }
    }
   
    //-=-=-=-=-=-=-
   
    if ((newkeys & KEY_WALK) || (PRESSED(KEY_WALK)))//-=--------------- Ir para frente
    {
        if((AirBrk[playerid] = 1))
        {
            if(!IsPlayerInAnyVehicle(playerid))
            {
            SetPlayerPos(playerid, X+5, Y, Z);
            }
        }
    }
   
    //-=-=-=-=-=-=-
   
    return 1;
}
Mas nada funfa, apenas quando eu aperto o botгo SUBMISSION (bolinha do mouse), q ele seta a
pawn Код:
Z+2
somente isso que funciona e quando aperto botгo direito do mouse ele seta a
pawn Код:
Z-2
nгo to entendendo pq ta acontecendo issso, alguem pode me explicar o que aconteces de errado

nгo estou pedindo pra me passarem o code pronto, apenas quero saber o que hб de errado !!!

EDIT:
enquanto estava jogando percebi, q ao apertar alt, eh como se eu tivesse apertado KEY_WALK


Re: Definiзгo por keys - BiieL - 04.09.2010

Whats that 2 dias e ninguem respondeu .... Tуpico ressucitado, UP UP UP


Re: Definiзгo por keys - zSuYaNw - 04.09.2010

PQP,
Como vocк vai definir uma coisa dentro de uma public ?~
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
 new Flat:X,Flat:Y,Float:Z;
 if(newkeys & KEY_SUBMISSION )
   {
        if(!IsPlayerAnyInVehicle(GetVehicleID(playerid))
                  {
                          GetPlayerPos(playerid, X,Y,Z);
                          SetPlayerPos(playerid, X,Y,Z+10);
                   }
         else
                   {
                          SendClientMessage(playerid,COR,"Vocк estб em um veiculo, saia que podera usar o Air");
                   }
        }
return 1;
}

Fiz isto agora, nem copilei, mais deve funcionar.
Pensei que sabia esta.


Re: Definiзгo por keys - BiieL - 04.09.2010

ja havia feito isso garfield, e eu sei disso sim e acho q nao tem diferenзa nenhuma ...

Flat = Fail


Respuesta: Definiзгo por keys - BiieL - 05.09.2010

alguem ja faz 3 dias e ninguem deu uma resposta que sirva, alguem


Re: Definiзгo por keys - ipsBruno - 05.09.2010

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
Pensei que sabia esta.
Nem vocк sabe...
Ele nгo definiu nada dentro da Public ao nгo ser a PRESSED,que nгo tem nada haver pois ela й definida quando compila o cуdigo,FAIL para vocк..

Dentro da Public logo Encima:

pawn Код:
new AirBrk[MAX_PLAYERS];new Float:x,Float:y,Float:z;
#define PRESSED(%0)  (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) GetPlayerPos(playerid, X, Y, Z);
Agora tente Algo do Tipo logo Abaixo:

pawn Код:
if(PRESSED(KEY_SUBMISSION))
{
    TogglePlayerControllable(playerid, false);
}
if(PRESSED(KEY_UP) && AirBrk[playerid] = 1 && !IsPlayerInAnyVehicle(playerid)
{
     SetPlayerPos(playerid, X, Y, Z+2);  
}



Respuesta: Definiзгo por keys - BiieL - 05.09.2010

ok, mas nao precisa mais do GetPlayerPos

Explicando mais:

Key_SUBMISSION liga ou desliga AirBrk

KEY_UP seta altura + 2, se tiver ligado

e assim por diante com RIGHT LEFT DOWN WALK


KEY_WALK eh o "w" se nao for, qual eh o w ?


Re: Definiзгo por keys - Gustavob - 05.09.2010

KEY_WALK = alt esquerdo ou seja la qual for sua tecla de anda devagar
KEY_UP = W
KEY_DOWN = S
KEY_LEFT = A
KEY_RIGHT = D
KEY_SPRINT = tecla de correr


Respuesta: Definiзгo por keys - BiieL - 05.09.2010

e as setas ? nao seriam RIGHT LEFT UP DOWN


Re: Definiзгo por keys - CyNiC - 06.09.2010

Й impossivel detectar setas no OnPlayerKeyStateChange usando cуdigo como esse, essas teclas sгo separadas.
O que se tem que fazer й usar o OnPlayerUpdate, timer, ou GetPlayerKeys(nгo consegui usar essa funзгo pra detectar essas teclas no OnPlayerKeyStateChange mas posso ter feito algo errado).