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;
}
0 Yorumlar
Yorum yapmak için Google hesabına veya bir web sitesine ihtiyacınız yoktur. Kimlik seçme bölümündeki varsayılan değeri "Adı/URL" olarak seçebilir, isminizi yazdıktan sonra "Devam" butonuna tıklamanız yeterlidir. Sizlere gösterdiğimiz minik adımların arkasından yorumunuzu yazmaya başlayabilirsiniz. İçeriğimizle ilgili yorumunuzu yaptıktan sonra "Yayınla" butonuna basmayı unutmayın!