SA:MP DESTEK

Forum



Forum - Anti AFK (AFK Tespit Etme)

Burdasın:
Forum => Sistem Paylaşımları => Anti AFK (AFK Tespit Etme)

<-Geri

 1 

Devam->


admin
(şimdiye kadar 8 posta)
13.07.2020 20:28 (UTC)[alıntı yap]
GTA SA:MP (GTA: San Andreas Multiplayer) isimli bu oyundaki sunucu sahipleri afk tespit etmek için türlü türlü yöntemler kullandı. Bu yöntemlere hareketsiz oyuncuları oyundan atmak için uzun süre aynı koordinatta kalan oyunculara bir süre vermek ve bu sürenin sonunda hareket etmediğinde oyuncunun sunucudan atılmasını sağlamak örnek olarak verilebilir.

Sizlere küçük bir tavsiyede bulunacak olursak bu söz konusu yöntemleri ait olduğu tozlu sayfaların arasına sıkıştırmanız ve modern afk tespit etme sistemini kullanmanız olur.

İlk olarak oyun modunuzu açın ve oyun modunun başına aşağıda verdiğimiz kodu yapıştırın.

Alıntı:
new afktespit[MAX_PLAYERS];
new ensonhareket[MAX_PLAYERS];
new afkdurum[MAX_PLAYERS];


Bu işlemin üstünden çok fazla zaman geçmesine izin vermeden OnPlayerConnect bölümüne gelin. OnPlayerConnect'in içine ise aşağıda verdiğimiz kodları yapıştırın.

Alıntı:
SetTimerEx("afkkontrol", 1000, 1, "i", playerid);
afkdurum[playerid] = 0;
ensonhareket[playerid] = gettime();


Oyun modunun sonuna aşağıda verdiğimiz kodları yapıştırın.

Alıntı:
forward afkkontrol(playerid);
public afkkontrol(playerid)
{
new sonhareket = gettime() - ensonhareket[playerid];
if(afkdurum[playerid] == 0 && sonhareket > 5 && GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)
{
afkdurum[playerid] = 1;
}

if(afkdurum[playerid] == 1 && ensonhareket[playerid] == gettime())
{
afkdurum[playerid] = 0;
}
}


OnPlayerUpdate bölümüne aşağıda verdiğimiz kodları yapıştırın.

Alıntı:
ensonhareket[playerid] = gettime();


OnPlayerDisconnect bölümüne ise aşağıda verdiğimiz kodları yapıştırın.

Alıntı:
KillTimer(afktespit[playerid]);


Bu kodları ekledikten sonra oyuncunun afk olup olmadığını öğrenmek için aşağıdaki örnekten faydalanabilirsiniz.

Alıntı:
CMD:deneme(playerid, params[])
{
if(afkdurum[playerid] == 1) return print("Oyun başında değilsin." );
return 1;
}


Burada dikkat etmeniz gereken nokta "afkdurum" değişkeninin döndürdüğü değerin 1 olup olmadığını kontrol etmektir. Değişkenin döndürdüğü değer 1 ise bu kişinin afk olduğunu gösterir.



Bütün konular: 9
Bütün postalar: 8
Bütün kullanıcılar: 2
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol