23.05.2011, 21:24
Tutorial sobre OnPlayerKeyStateChange
Olб pessoal, estou de volta aqui para ajudar com o OnPlayerKeyStateChange.Bom, primeiro vocк tem que saber para o que ela serve, basicamente essa funзгo й chamada assim que o Player troca de tecla.
Como assim?
Por exemplo, vocк estб correndo usando o W ai vocк vai virar para a direita e usa o D, assim vocк acaba de chamar esse funзгo.
Simples, nгo?
Agora vamos aos testes preticos, mas antes uma OBs.: Todos os exemplos foram tirados do SA-MP Wiki.
Exemplos:
pawn Код:
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
// /\ define o PRESSED :D
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_FIRE))//se precionar a KEY_FIRE
{
if (IsPlayerInAnyVehicle(playerid)) //se estiver num veiculo
{
AddVehicleComponent(GetPlayerVehicleID(playerid), 1010); //adiciona nitro :D
}
}
return 1;
}
pawn Код:
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
// /\ define o PRESSED :D
new Float:gPlayerHealth[MAX_PLAYERS]; //define esse float como global para a vida
#define INFINITY (Float:0x7F800000) //define a vida infinita
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_CROUCH)) //se precionar o H
{
GetPlayerHealth(playerid, gPlayerHealth[playerid]); //pega a vida
SetPlayerHealth(playerid, INFINITY); //seta a vida infinita
}
else if(RELEASED(KEY_CROUCH)) //se precionar o H
{
SetPlayerHealth(playerid, gPlayerHealth[playerid]);//seta a vida ao normal :D
}
return 1;
}
Agradecimentos
Eu - Por ter feito o tutorial
Pessoal do SA-MP Wiki - Pelos exemplos e por ajudar muito os scripters
Se precisar estudar mais acesse:
https://sampwiki.blast.hk/wiki/OnPlayerKeyStateChange
https://sampwiki.blast.hk/wiki/GetPlayerKeys
Obrigado