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
somente isso que funciona e quando aperto botгo direito do mouse ele seta a
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).