Kod:
#include < amxmodx >
#include < hamsandwich >
#include < fakemeta >
#define aeAfkKalacagiZaman 90
#define aeOyuncuSayisi 25
#define aeGenelChatTag "!n[!tWEBDiyo.COM!n]:"
new aeKontrol[33];
new Float:aeOrigin[33][1];
new const aeKimbu[3][]={ "Afk Kick","v0.1","Aconyonn" };
public plugin_init(){
register_plugin(aeKimbu[0],aeKimbu[1][0],aeKimbu[2][0]);
RegisterHam(Ham_Spawn,"player","aePS",1);
aeKontrol[32]=0;
}
public aePS(id){
remove_task(id);
if(is_user_alive(id)&&get_playersnum()>aeOyuncuSayisi){ set_task(0.8, "get_spawn", id); }
return HAM_IGNORED;
}
public get_spawn(id){
if(is_user_alive(id)&&is_user_connected(id)){
pev(id,pev_origin,aeOrigin[id]);
aeKontrol[id]=1;
set_task(1.3,"aeKontrolEt",id);
set_task(float(aeAfkKalacagiZaman),"check_afk", id);
}
}
public aeKontrolEt(id){
if(aeKontrol[id]>=1&&aeKontrol[id]<=aeOyuncuSayisi){ set_task(1.0,"aeKontrolEt",id),aeKontrol[id]++; }
if(!same_origin(id)&&is_user_alive(id)&&is_user_connected(id)){ aeKontrol[id]=aeOyuncuSayisi; }
}
public check_afk(id){
if(same_origin(id)&&is_user_alive(id)&&is_user_connected(id)){
if(get_playersnum()>aeOyuncuSayisi&&get_user_team(id)==1||get_user_team(id)==2){
new aeIsim[33];
get_user_name(id,aeIsim,charsmax(aeIsim));
client_cmd(id,"disconnect;clear;toggleconsole;echo;echo;echo;echo;echo;echo Afk kaldiginiz icin atildiniz.")
renkli_yazi(0,"%s !gSunucudan atilan oyuncunun adi: !t[!n%s!t]",aeGenelChatTag,aeIsim);
renkli_yazi(0,"%s !gSunucudan atilmak istemiyorsaniz afk kalmayin.",aeGenelChatTag);
} else {
user_kill(id);
}
}
}
public same_origin(id)
{
new Float:origin[3];
pev(id, pev_origin, origin);
for(new i = 0; i < 3; i++){
if(origin[i] != aeOrigin[id][i]){ return 0; }
}
return 1;
}
#if AMXX_VERSION_NUM < 183
stock renkli_yazi(const id, const input[], any:...){
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x01"); // Default Renk(Sarı)
replace_all(msg, 190, "!n", "^x04"); // Yeşil Renk
replace_all(msg, 190, "!t", "^x03"); // Takım Renk( CT mavi , T kırmızı )
if (id) players[0] = id; else get_players(players, count, "ch");{
for (new i = 0; i < count; i++){
if (is_user_connected(players[i])){
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]),write_string(msg),message_end();
}
}
}
}
#else
stock renkli_yazi(const id, const input[], any:...){
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x01");
replace_all(msg, 190, "!n", "^x04");
replace_all(msg, 190, "!t", "^x03");
client_print_color(id, id, msg);
}
#endif
sorunum çözülmeden çözülen isteklere taşındı. konu çözülmüştür yazısı göndermedim.
hocam verilen bu kod da çalışmıyor.
- oyuncu 25 kişiyi gectiği zaman plugin çalışacak. ama bu kişi sayısını ayarlama imkanımız olsun
- 26. kişi oyuna girince 90 saniye afk kalanı oyundan atacak.
- atılacak kişilerin ekranına bilgi verme süre koyma şansınız var mı bilmiyorum
- ama bizim serverda spec yasağı var. specteki isimleri atmayacak. T ve ya CT den oyuncu atacak.
- yani diyelim bu sistemle oyunda aktif 30 oyuncum var hepsi oynuyor afk oyuncum yok. Sistemin hazırda beklemesi ilk afk kalanı atması durumu doğuyor.
Bu durumda AFK sayacı diyelim artık oyuncunun 15 sn duraksamasında ekranda geri sayım yapması gerekiyor.
- birde afk oyuncu oyundan atıldığı zaman tüm oyuncular bilgilendirilmeli. Oyuncular bu sayede bizim onları oyundan atmadığımızı
afk kaldıkları için sistemin oyundan attığının bilincinde olmaları gerekli.
şimdiden teşekkür eder iyi çalışmalar dilerim