OnPlayerKeyStateChange Kullanımı ve Örnekleri

OnPlayerKeyStateChange Kullanımı ve Örnekleri

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ı
YKEY_YES
CKEY_CROUCH
LCTRL / LMBKEY_FIRE
SpaceKEY_SPRINT
EnterKEY_SECONDARY_ATTACK
LSHIFTKEY_JUMP
RMBKEY_HANDBRAKE/KEY_AIM
LALTKEY_WALK
NUM8KEY_ANALOG_UP
NUM2KEY_ANALOG_DOWN
NUM4KEY_ANALOG_LEFT
NUM6KEY_ANALOG_RIGHT
NKEY_NO
HKEY_CTRL_BACK
UpKEY_UP
DownKEY_DOWN
LeftKEY_LEFT
RightKEY_RIGHT
NUM1 / MMB (Mouse Orta Tuş)KEY_LOOK_BEHIND
NUM1 / MMB (Mouse Orta Tuş)KEY_SUBMISSION
TABKEY_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;
}

Yorum Gönder

0 Yorumlar