otomatik olarak slaylanmıyor. player kendisini /afk yazınca afk moduna geçiyor. ayrıca /afkmenu çalışmıyor kodları buraya bırakıyorum düzeltebilen varmı
Kod:
#include <amxmodx>
#include <reapi>
#define MAX_AFK_WARNING 3 //Oyuncunun kac uyarı hakki oldugunu ayarlar.
new const PLUGIN[] = "AFK Kontrol";
new const VERSION[] = "1.0";
new const AUTHOR[] = "Anonim";
new abuzerelsonunubekle;
new bool:g_LastRound;
new const TAG[] = "SBW";
//new Time, afk_oto;
new abuzerafk[MAX_CLIENTS+1] = 0, bool:abuzerbuafk[MAX_CLIENTS+1] = false,afk,karisti;
new Float: Player_Origin[33][3],bool:izle[MAX_CLIENTS+1];
new kd[MAX_CLIENTS+1][2];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
//Time = register_cvar("afk_slay", "15.0");
//bind_pcvar_num(create_cvar("afk_oto_kontrol","0"),afk_oto)
RegisterHookChain(RG_CBasePlayer_Killed, "@CBasePlayer_Killed", .post = false);
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", .post = true);
RegisterHookChain(RG_CSGameRules_RestartRound, "RG_CSGameRules_RestartRound_Post", .post = true);
RegisterHookChain(RG_RoundEnd, "RG_RoundEnd_Post", .post = true);
RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "CPlayer_HasRestrictItem_Pre", .post = false);
register_logevent("abuzer_elbasi", 2, "1=Round_Start")
register_clcmd("amx_karistir", "abuzer");
register_clcmd("amx_kafk", "abuzerafkx");
register_clcmd("say !karistir", "abuzer");
abuzerelsonunubekle = register_cvar("tim_elsonunubekle","1")
register_clcmd( "say /afk", "degistir" );
register_clcmd( "say_team /afk", "degistir" );
register_clcmd( "amx_izle", "izlex" );
register_clcmd("amx_afkmenu", "abuzer_afkmenu")
register_clcmd("say", "HookSay");
register_clcmd("say_team", "HookSay");
register_clcmd("owneryerac","yeracowner");
register_clcmd("amx_yerac", "yer_ac");
}
public RG_RoundEnd_Post()
{
if(g_LastRound) set_task(3.5, "karistir");
else set_task(3.0, "karistirxx");
if(karisti != 0) karisti -= 1;
}
public RG_CSGameRules_RestartRound_Post()
{
if(get_member_game(m_iNumCTWins)+get_member_game(m_iNumTerroristWins)==0){
for(new i=1; i <= MaxClients; i++) {
if(!is_user_connected(i))
continue;
kd[i][0] = 0;
kd[i][1] = 0;
}
}
}
public CPlayer_HasRestrictItem_Pre(id, ItemID:iItem, ItemRestType:iType)
{
if(iType != ITEM_TYPE_BUYING)
{
return HC_CONTINUE;
}
if(abuzerbuafk[id]){
abuzerbuafk[id]=false;
abuzerafk[id] = 0;
client_print_color(id,print_team_red,"^1[^3 %s ^1] ^3Afk Modun Otomatik Olarak ^4Pasif ^3Yapildi.^1 Skorun:^4 %i^3 -^4 %i",TAG,kd[id][0],kd[id][1]);
set_entvar(id,var_frags,float(kd[id][0]));
set_member(id,m_iDeaths,kd[id][1]);
message_begin(MSG_ALL, 85);
write_byte(id);
write_short(kd[id][0]);
write_short(kd[id][1]);
write_short(0);
write_short(get_user_team(id));
message_end();
afk -= 1;
set_entvar(id, var_flags, get_entvar(id, var_flags) & ~FL_FROZEN);
kd[id][0] = 0;
kd[id][1] = 0;
message_begin(MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id);
write_short(1<<10);
write_short(1<<10);
write_short(1<<10);
write_byte(0); // red
write_byte(0); // green
write_byte(0); // blue
write_byte(0); // alpha
message_end();
}
return HC_CONTINUE;
}
@CBasePlayer_Killed(const victim, const attacker)
{
if(is_user_alive(victim) && !is_user_bot(victim) && get_member(victim,m_iTeam) == TEAM_TERRORIST && rg_has_item_by_name(victim, "weapon_c4") && Origin_Control(victim)){
rg_transfer_c4(victim, 0);
}
set_entvar(victim, var_flags, get_entvar(victim, var_flags) & ~FL_FROZEN);
#pragma unused attacker
remove_task(victim);
}
public client_putinserver(id)
{
abuzerbuafk[id] = false;
abuzerafk[id] = 0;
izle[id] = false
kd[id][0] = 0;
kd[id][1] = 0;
}
public yeracowner(){
if(afk > 0){
for(new i=1; i <= MaxClients; i++) {
if(!is_user_connected(i) || !abuzerbuafk[i] || get_user_flags(i) & ADMIN_IMMUNITY || get_member(i,m_iTeam) == TEAM_SPECTATOR)
continue;
server_cmd("kick #%d ^"Sv Doluydu Afk Kicklenerek Yer Acildi.!^"",get_user_userid(i));
server_cmd("echo Atilan Kisi %n",i);
break;
}
}
}
public yer_ac(id){
if(get_user_flags(id) & ADMIN_BAN && afk > 1){
for(new i=1; i <= MaxClients; i++) {
if(!is_user_connected(i) || !abuzerbuafk[i] || get_user_flags(i) & ADMIN_RESERVATION || get_member(i,m_iTeam) == TEAM_SPECTATOR)
continue;
server_cmd("kick #%d ^"Sv Doluydu Afk Kicklenerek Yer Acildi.!^"",get_user_userid(i));
client_print_color(0,0,"^4*^3 %n^1 Afk'di Yer Acmak Icin Kicklendi.^3 Atan:^1 [^4%n^1]",i,id);
break;
}
}
}
public client_disconnected(id)
{
if(is_user_alive(id) && !is_user_bot(id) && get_member(id,m_iTeam) == TEAM_TERRORIST && rg_has_item_by_name(id, "weapon_c4")){
rg_transfer_c4(id, 0);
}
remove_task(id);
if(abuzerbuafk[id]){
abuzerbuafk[id] = false
if(afk > 0) afk -= 1;
}
kd[id][0] = 0;
kd[id][1] = 0;
}
public CBasePlayer_Spawn(id)
{
remove_task(id);
if(izle[id]){
user_silentkill(id);
if(get_entvar(id, var_frags) < 0) set_entvar(id,var_frags,0);
if(get_member(id, m_iDeaths) > get_entvar(id, var_frags)) set_member(id,m_iDeaths,0);
message_begin(MSG_ALL, 85);
write_byte(id);
write_short(0);
write_short(0);
write_short(0);
write_short(0);
message_end();
}
/*if(kd[id][0] != 0 && kd[id][1] != 0){
set_entvar(id,var_frags,kd[id][0]);
set_member(id,m_iDeaths,kd[id][1]);
message_begin(MSG_ALL, 85);
write_byte(id);
write_short(kd[id][0]);
write_short(kd[id][1]);
write_short(0);
write_short(get_user_team(id));
message_end();
kd[id][0] = 0;
kd[id][1] = 0;
}*/
set_task(0.4, "Get_Spawn", id);
}
public abuzer_elbasi(){
set_task(5.0, "abuzer1");
}
public abuzer1(){
new id
for(id = 0; id <= MAX_CLIENTS+1; id++)
{
if(is_user_alive(id)) {
if(abuzerbuafk[id]){
user_silentkill(id);
if(get_entvar(id, var_frags) < 0) set_entvar(id,var_frags,0);
if(get_member(id, m_iDeaths) > get_entvar(id, var_frags)) set_member(id,m_iDeaths,0);
message_begin(MSG_ALL, 85);
write_byte(id);
write_short(0);
write_short(0);
write_short(0);
write_short(0);
message_end();
}
}
}
}
public Get_Spawn(id)
{
if(is_user_alive(id)) get_entvar(id, var_origin, Player_Origin[id]);
else return;
if(abuzerbuafk[id])
{
if(!is_user_bot(id) && get_member(id,m_iTeam) == TEAM_TERRORIST && rg_has_item_by_name(id, "weapon_c4")){
rg_transfer_c4(id, 0);
}
set_entvar(id, var_flags, get_entvar(id, var_flags) | FL_FROZEN);
if(get_user_flags(id) & ADMIN_USER || ~get_user_flags(id) & ADMIN_LEVEL_E){
client_print_color(id,print_team_grey,"^4[ SBW ]^1:^3 AFK Moddasin.^4 /afk^1 yazarak^3 AFK Moda^4 girip^1 cikabilirsin.! Skorun:^4 %i^3 -^4 %i",kd[id][0],kd[id][1]);
}
message_begin(MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id);
write_short(1<<15);
write_short(1<<13);
write_short(1<<15);
write_byte(random_num(0,255)); // red
write_byte(random_num(0,255)); // green
write_byte(random_num(0,255)); // blue
write_byte(170); // alpha
message_end();
}else{
if(get_user_flags(id) & ADMIN_BAN_TEMP){
get_entvar(id, var_origin, Player_Origin[id]);
set_task(10.0, "Check_AFK", id);
}
}
}
public Check_AFK(id)
{
if(is_user_alive(id) && Origin_Control(id))
{
if(abuzerafk[id] == 0){
kd[id][0] = floatround(get_entvar(id, var_frags));
kd[id][1] = get_member(id, m_iDeaths);
}
if(abuzerafk[id] < MAX_AFK_WARNING){
user_silentkill(id);
//set_entvar(id,var_frags,0);
//set_member(id,m_iDeaths,0);
message_begin(MSG_ALL, 85);
write_byte(id);
write_short(0);
write_short(0);
write_short(0);
write_short(0);
message_end();
if(kd[id][1] == 1) kd[id][1] = 0;
abuzerafk[id]++;
client_print_color(id, id, "^1[^3 %s ^1] ^3Hareket etmiyorsun! Otomatik AFK Modu Icin Uyari: ^4%i/%i^1 Skorun:^4 %i^3 -^4 %i", TAG,abuzerafk[id], MAX_AFK_WARNING,kd[id][0],kd[id][1]);
}
else
{
user_silentkill(id);
//set_entvar(id,var_frags,0);
//set_member(id,m_iDeaths,0);
message_begin(MSG_ALL, 85);
write_byte(id);
write_short(0);
write_short(0);
write_short(0);
write_short(0);
message_end();
abuzerbuafk[id] = true;
afk += 1;
//client_print_color(0, 0, "^1[^3 %s ^1] ^4%n ^3AFK Oldugu Tespit Edildi Ve Otomatik AFK Moduna Gecirildi.Her El Oldurulecek.", TAG, id);
client_print_color(id, id, "^1[^3 %s ^1] ^3Otomatik AFK Modu Aktif. Artik El Basi Olduruleceksin.^4 [ /afk ]^1 Skorun:^4 %i^3 -^4 %i", TAG,kd[id][0],kd[id][1]);
}
}
}
public Origin_Control(id)
{
new Float: Origin[3];
get_entvar(id, var_origin, Origin);
for(new i; i < 3; i++)
{
if(Origin[i] != Player_Origin[id][i])
{
return 0;
}
}
return 1;
}
public degistir(id)
{
if(abuzerbuafk[id]){
abuzerbuafk[id]=false;
abuzerafk[id] = 0;
client_print_color(id,print_team_red,"^1[^3 %s ^1] ^3Afk Modunu ^4Pasif ^3Yaptin.^1 Skorun:^4 %i^3 -^4 %i",TAG,kd[id][0],kd[id][1]);
set_entvar(id,var_frags,float(kd[id][0]));
set_member(id,m_iDeaths,kd[id][1]);
message_begin(MSG_ALL, 85);
write_byte(id);
write_short(kd[id][0]);
write_short(kd[id][1]);
write_short(0);
write_short(get_user_team(id));
message_end();
afk -= 1;
set_entvar(id, var_flags, get_entvar(id, var_flags) & ~FL_FROZEN);
kd[id][0] = 0;
kd[id][1] = 0;
}
else
{
abuzerbuafk[id]=true;
kd[id][0] = floatround(get_entvar(id, var_frags));
kd[id][1] = get_member(id, m_iDeaths);
client_print_color(id,print_team_grey,"^1[^3 %s ^1] ^3Afk Modunu ^4Aktif ^3Yaptin.^1 Skorun:^4 %i^3 -^4 %i",TAG,kd[id][0],kd[id][1]);
set_entvar(id,var_frags,0);
set_member(id,m_iDeaths,0);
message_begin(MSG_ALL, 85);
write_byte(id);
write_short(0);
write_short(0);
write_short(0);
write_short(0);
message_end();
afk += 1;
if(is_user_alive(id)) set_entvar(id, var_flags, get_entvar(id, var_flags) | FL_FROZEN);
}
return PLUGIN_HANDLED;
}
public izlex(id)
{
if(~get_user_flags(id) & ADMIN_RESERVATION) return PLUGIN_HANDLED;
if(izle[id]){
izle[id]=false;
client_print_color(id,print_team_red,"^1[^3 %s ^1] ^3Izle Modunu ^4Pasif ^3Yaptin.",TAG);
}
else
{
izle[id]=true;
client_print_color(id,print_team_grey,"^1[^3 %s ^1] ^3Izle Modunu ^4Aktif ^3Yaptin.",TAG);
}
return PLUGIN_HANDLED;
}
public HookSay(id)
{
if(abuzerbuafk[id])
{
if(~get_user_flags(id) & ADMIN_BAN)
{
client_print_color(id,print_team_grey,"^1[^3 %s ^1] ^3Afk Modunda Oldugunuz Icin Say'dan Yazamazsiniz.",TAG);
client_print_color(id,print_team_grey,"^1[^3 %s ^1] ^3Afk Modundadan Cikmak Icin ^4/afk ^3Yaz^1 veya^3 El Basi Ekipman^4 Satin Al.",TAG);
return PLUGIN_HANDLED;
}else client_print(id, print_center, "AFK Modundasin. /afk Yazarak Cikabilirsin.");
}
return PLUGIN_CONTINUE;
}
public abuzer_afkmenu(id)
{
if(get_user_flags(id) & ADMIN_SLAY)
{
build_menu(id)
}
return PLUGIN_HANDLED
}
stock build_menu(id, page = 0)
{
new menu = menu_create(fmt("-- StandBackWarrior's AFK Menu --\r Afk Sayisi:\y [%i]\d",afk), "menu_handler")
new players[32], num, cmd[5], itemtxt[60]
get_players(players, num)
for (new i = 0; i < num; i++)
{
if(!is_user_connected(players[i]) || is_user_bot(players[i])) continue;
num_to_str(players[i],cmd,charsmax(cmd));
formatex(itemtxt, 59, "%s%n %s", get_user_flags(players[i]) & ADMIN_USER ? "":" \r»\w ", players[i], abuzerbuafk[players[i]] ? "\r[ON]":"\y[OFF]")
menu_additem(menu, itemtxt, cmd)
}
menu_display(id, menu, page)
}
public menu_handler(id, menu, item)
{
if(item == MENU_EXIT){
menu_destroy(menu)
return ;
}
static cmd[5], callback, access, pid
menu_item_getinfo(menu, item, access, cmd, 4, _, _, callback)
pid = str_to_num(cmd)
if (!is_user_connected(pid))
{
return;
}
if(!abuzerbuafk[pid])
{
client_print_color(pid,print_team_red,"^1[^3 %s ^1]^4 %n ^3AFK Modunuzu ^4Aktif ^3Olarak Degistirdi.",TAG,id);
client_print_color(id,print_team_red,"^1[^3 %s ^1]^4 %n ^3AFK Modu ^4Aktif ^3Olarak Degistirildi.",TAG,pid);
abuzerbuafk[pid] = true;
kd[pid][0] = floatround(get_entvar(pid, var_frags));
kd[pid][1] = get_member(pid, m_iDeaths);
set_entvar(pid,var_frags,0);
set_member(pid,m_iDeaths,0);
message_begin(MSG_ALL, 85);
write_byte(pid);
write_short(0);
write_short(0);
write_short(0);
write_short(0);
message_end();
afk += 1;
}
else
{
client_print_color(pid,print_team_grey,"^1[^3 %s ^1]^n %n ^3AFK Modunuzu ^4Pasif ^3Olarak Degistirdi.",TAG,id);
client_print_color(id,print_team_grey,"^1[^3 %s ^1]^n %n ^3AFK Modu ^4Pasif ^3Olarak Degistirildi.",TAG,pid);
abuzerbuafk[pid] = false;
abuzerafk[pid] = 0;
set_entvar(pid,var_frags,float(kd[pid][0]));
set_member(pid,m_iDeaths,kd[pid][1]);
message_begin(MSG_ALL, 85);
write_byte(pid);
write_short(kd[pid][0]);
write_short(kd[pid][1]);
write_short(0);
write_short(get_user_team(pid));
message_end();
afk -= 1;
}
menu_destroy(menu)
build_menu(id, item / 7)
}
/////////////////////
public karistir(){
server_cmd("amx_tbws");
karisti = 3;
set_task(1.0,"karistirxx");
}
public karistirxx(){
if(get_member_game(m_iNumCTWins)+get_member_game(m_iNumTerroristWins)==0)
return PLUGIN_HANDLED;
new afkte=0,afkct=0;
for(new i=1; i<=MAX_CLIENTS; i++){
if(!is_user_connected(i) || is_user_bot(i))
continue;
if(afk > 0 && abuzerbuafk[i]){
if(afkct>afkte)
{
rg_set_user_team(i, TEAM_TERRORIST),afkte++;
}
else if(afkte>afkct)
{
rg_set_user_team(i, TEAM_CT),afkct++;
}
else
{
switch(random_num(1, 2))
{
case 1: rg_set_user_team(i, TEAM_TERRORIST),afkte++;
case 2: rg_set_user_team(i, TEAM_CT),afkct++;
}
}
}
g_LastRound = false;
}
return PLUGIN_HANDLED;
}
public abuzerafkx(id){
if(afk <= 1 || get_member_game(m_iNumCTWins)+get_member_game(m_iNumTerroristWins)==0)
return PLUGIN_HANDLED;
new afkte=0,afkct=0;
for(new i=1; i<=MAX_CLIENTS; i++) {
if(!is_user_connected(i) || is_user_bot(i) || !abuzerbuafk[i])
continue;
switch(get_user_team(i))
{
case 1: afkte++;
case 2: afkct++;
}
if(afkte > afkct+1 || afkct > afkte+1){
if(afkct>afkte)
{
rg_set_user_team(i, TEAM_TERRORIST),afkte++;
}
else if(afkte>afkct)
{
rg_set_user_team(i, TEAM_CT),afkct++;
}
else
{
switch(random_num(1, 2))
{
case 1: rg_set_user_team(i, TEAM_TERRORIST),afkte++;
case 2: rg_set_user_team(i, TEAM_CT),afkct++;
}
}
}
}
return PLUGIN_HANDLED;
}
public abuzer(id){
if(get_user_flags(id) & ADMIN_BAN){
if(!(get_member_game(m_iNumCTWins) + get_member_game(m_iNumTerroristWins) > 2)){
client_print_color(id,id,"^4[ %s ]^1 Ilk^3 3 Round^1 Gecmeden^4 Karistirilamaz.!", TAG);
return PLUGIN_HANDLED;
}
if(karisti > 0){
client_print_color(id,id,"^4[ %s ]^1 Son Karistirilmanin Ustunden^3 3 Round^1 Gecmeden Tekrar^4 Karistirilamaz.!^3Kalan: %i Round", TAG, karisti);
return PLUGIN_HANDLED;
}
new bestm = menu_create(fmt("\y Takimlari Karistir\d Onaylama Ekrani"), "takim_karistir_func");
menu_additem(bestm, "\r Onayla ve Takimlari Karistir!");
menu_additem(bestm, " Vazgec^n");
menu_setprop(bestm, MPROP_EXITNAME, "\rCikis");
menu_display(id, bestm);
return PLUGIN_HANDLED;
}
else
{
client_print_color(id,id,"^4[ %s ] ^1Yetkiniz Yeterli Degil.",TAG);
}
return PLUGIN_HANDLED;
}
public takim_karistir_func(const id, const iMenu, const iItem){
if(iItem == MENU_EXIT) { menu_destroy(iMenu); return PLUGIN_HANDLED; }
switch(iItem)
{
case 0:
{
if(get_pcvar_num(abuzerelsonunubekle) == 1){
g_LastRound = true;
client_print_color(0,0,"^4[ %s ] ^3%n ^1adli yetkili takim karistirma sistemini aktif etti.",TAG,id);
client_print_color(0,0,"^4[ %s ] ^1el sonu oyuncular esit sekilde takimlara transfer edilecek.",TAG);
}else{
set_task(3.0, "karistir");
}
}
case 1: client_cmd(id,"slot10");
}
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}