OnPlayerKeyStateChange, ayarladığınız tuşa bastığınızda olacakları ele alır. Örneğin "Y" tuşuna bir değer giriyorsunuz, y tuşuna bastığı zaman oyuncunun canı fullenecek. Bastığı sırada bu callback devreye giriyor ve görevini yerine getiriyor.
OnPlayerKeyStateChange Kullanımı:
OnPlayerKeyStateChange callbackine hiçbir şey eklenmeden ki hali aşağıdaki gibidir:public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}İçerisini bir tuşa bastığında olmasını istediklerimiz ile dolduruyoruz.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_YES) // Y tuşuna bastığında olacaklar diye açtık. Aşağıda listesini vereceğim.
{
SetPlayerHealth(playerid, 101); // Canını 101 yaptık.
}
return 1;
}Klavyedeki tuşların açılımlarına (Örneğin y tuşunun KEY_YES olması gibi.) aşağıdaki listeden ulaşabilirsiniz.
| Tuş | Açılımı |
| Y | KEY_YES |
| C | KEY_CROUCH |
| LCTRL / LMB | KEY_FIRE |
| Space | KEY_SPRINT |
| Enter | KEY_SECONDARY_ATTACK |
| LSHIFT | KEY_JUMP |
| RMB | KEY_HANDBRAKE/KEY_AIM |
| LALT | KEY_WALK |
| NUM8 | KEY_ANALOG_UP |
| NUM2 | KEY_ANALOG_DOWN |
| NUM4 | KEY_ANALOG_LEFT |
| NUM6 | KEY_ANALOG_RIGHT |
| N | KEY_NO |
| H | KEY_CTRL_BACK |
| Up | KEY_UP |
| Down | KEY_DOWN |
| Left | KEY_LEFT |
| Right | KEY_RIGHT |
| NUM1 / MMB (Mouse Orta Tuş) | KEY_LOOK_BEHIND |
| NUM1 / MMB (Mouse Orta Tuş) | KEY_SUBMISSION |
| TAB | KEY_ACTION |
Liste hazırlanırken wiki sa-mp adresinden yararlanıldı.
OnPlayerKeyStateChange Örnekleri:
Aşağıdaki örnekte oyuncu "N" tuşuna bastığında tokat yer.public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{if(newkeys & KEY_NO){new Float:Pos[3];GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);SetPlayerPos(playerid, Pos[0], Pos[1], pos[2]+4);}
return 1;
}Aşağıdaki örnekte oyuncu y tuşuna bastığında aracı ters dönmüşse düzeltilir.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{if(newkeys & KEY_YES && IsPlayerInAnyVehicle(playerid){new Float:yon, aracid = GetPlayerVehicleID(playerid);GetVehicleZAngle(aracid,yon);SetVehicleZAngle(aracid,yon);}
return 1;
}Aşağıdaki örnekte oyuncu c tuşuna bastığında eğilmesi engellenir.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{if(newkeys & KEY_CROUCH && !IsPlayerInAnyVehicle(playerid){if(GetPlayerWeapon(playerid) == 24){new Float:Pos[3];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
SetPlayerPos(playerid, Pos[0], Pos[1], pos[2]);SendClientMessage(playerid, 0xF53D5FFF, "[ANTI C-BUG]: {FFFFFF}Elinizde deagle varken eğilemezsiniz.");} }
return 1;
}
