Mam problem z AFK-Ultimate.amxx. Otóż zabija mi AFK po 15 sekundach, lecz w cvarach ustawiłem na 30.
Pewnie trzeba w pluginie jakoś edytować? Pomożecie?
Cvary:
afk_mode 0 afk_timeafk 60 afk_timespect 120 afk_saychangeafk 0 afk_shootchangeafk 0 afk_adminafk 0 afk_warn 1 afk_minplayers 0 afk_checkspawn 1 afk_timekillspawn 30 afk_killspawn 1 afk_killspawnchance 4 afk_bombdroptime 5 afk_playersinfoafk 1
.sma pluginu:
Spoiler
// U-AFK [Ultimate AFK] // Aut(h)or : HuberTM // Version 1.9f // Thanks : AFK-KISS author's (bomb drop public) #include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <fakemeta> #include <colorchat> #include <fun> #define PLUGIN "Ultimate AFK" #define VERSION "2.0" // version #define AUTHOR "HubertTM" // aut(h)or nie zmieniaj :) #define TAG "U-AFK" // TAG, ktory wyswietla sie przy wszystkich wiadomosciach pluginu new bool:bAfkSpawn[33]; new TimeAFK[33]; new TimeSpect[33]; new Chance[33]; new bool:PlayerAFK[33]; new bombcarrier new bool:freezetime = false; new Float:ile_freezetime; new cKick, pKick, cTimeAFK, pTimeAFK, cTimeSpect, pTimeSpect, cSay, pSay, cShoot, pShoot, cAdmin, pAdmin, cWarn, pWarn, cPlayernum, pPlayernum new cKillSpawn, pKillSpawn, cTimeKillSpawn, pTimeKillSpawn, cChance, pChance, cBombDropTime, pBombDropTime, cCheckSpawn, pCheckSpawn, cPlayersInfoAFK, pPlayersInfoAFK public plugin_end() remove_task(490); new debug2[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Killed, "player", "player_killed", 1); RegisterHam(Ham_Spawn, "player", "player_spawn", 1); /// register_clcmd("say_team", "player_say"); register_clcmd("say", "player_say"); /// /// register_clcmd("buy", "PlayerBoughtItem"); register_clcmd("rebuy", "PlayerBoughtItem"); register_clcmd("autobuy", "PlayerBoughtItem"); register_clcmd("glock", "PlayerBoughtItem"); register_clcmd("usp", "PlayerBoughtItem"); register_clcmd("p228", "PlayerBoughtItem"); register_clcmd("deagle", "PlayerBoughtItem"); register_clcmd("elites", "PlayerBoughtItem"); register_clcmd("fn57", "PlayerBoughtItem"); register_clcmd("m3", "PlayerBoughtItem"); register_clcmd("autoshotgun", "PlayerBoughtItem"); register_clcmd("mac10", "PlayerBoughtItem"); register_clcmd("tmp", "PlayerBoughtItem"); register_clcmd("mp5", "PlayerBoughtItem"); register_clcmd("ump45", "PlayerBoughtItem"); register_clcmd("p90", "PlayerBoughtItem"); register_clcmd("galil", "PlayerBoughtItem"); register_clcmd("ak47", "PlayerBoughtItem"); register_clcmd("scout", "PlayerBoughtItem"); register_clcmd("sg552", "PlayerBoughtItem"); register_clcmd("awp", "PlayerBoughtItem"); register_clcmd("g3sg1", "PlayerBoughtItem"); register_clcmd("famas", "PlayerBoughtItem"); register_clcmd("m4a1", "PlayerBoughtItem"); register_clcmd("bullpup", "PlayerBoughtItem"); register_clcmd("sg550", "PlayerBoughtItem"); register_clcmd("m249", "PlayerBoughtItem"); register_clcmd("shield", "PlayerBoughtItem"); register_clcmd("hegren", "PlayerBoughtItem"); register_clcmd("sgren", "PlayerBoughtItem"); register_clcmd("flash", "PlayerBoughtItem"); register_clcmd("drop", "PlayerBoughtItem2"); register_clcmd("debugguj", "WlaczDebug"); /// register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb"); register_event("CurWeapon","Change_Weapon","be", "1=1"); ile_freezetime = get_cvar_float("mp_freezetime"); if(ile_freezetime > 1){ freezetime = true; register_event("TextMsg", "RoundRestart", "a", "2&#Game_w"); register_event("HLTV", "PreRoundStart", "a", "1=0", "2=0"); register_logevent("RoundEnd", 2, "1=Round_End"); register_logevent("RoundRestart", 2, "0=World triggered", "1=Game_Commencing"); register_logevent("PostRoundStart", 2, "0=World triggered", "1=Round_Start"); } // set_task(25.0, "CheckPlayersAFK", 490,_,_,"b"); // register_dictionary("ultimateafk.txt"); cKick = register_cvar("afk_mode", "0"); // 1 - kick // najpierw przerzuca do spect'a, jak siedzi dlugo [cvar] na spectie to dopiero go kicka cTimeAFK = register_cvar("afk_timeafk", "40"); // jezeli 0 - to nie kickuje/nie przenosi z druzyny [jezeli chcesz, np. zeby tylko plugin na spect dzialal] // ile sec mozna byc afk w druzynynie cTimeSpect = register_cvar("afk_timespect", "300"); // ile sec mozna byc afk na spect'cie // 0 = nie kickuje ze specta cSay = register_cvar("afk_saychangeafk", "2"); // czy pisanie na say wplywa na afk [czyli jak napiszemy cos to uznaje nas, za grajacych graczy, przydatne jak ktos duzo gada malo gra :D] // 0 - nie // 1- tylko w druzynach TT oraz CT // 2 - wszedzie [spect, TT, CT] [zalecane] cShoot = register_cvar("afk_shootchangeafk", "1"); // czy strzal bronia, lub jej zmiana wplywa na afk //1- tak, czyli jak ktos strzeli to go nie kicknie [zalecane] //0 - ignoruje strzaly cAdmin = register_cvar("afk_adminafk", "0"); // czy kickowac/przerzucac adminow // 0 - bedzie kickowalo/przerzucalo adminow i graczy // 1 - kickuje/przerzuca tylko graczy, admini maja spokoj // 2 - kickuje/przerzuca graczy i adminow, ale nie kickuje adminow z immunitetem. [[domyslnie] cWarn = register_cvar("afk_warn", "1"); // ostrzegac gracza ze jest afk? [na chacie] // 0 - nie // 1 - tak [domyslnie] cPlayernum = register_cvar("afk_minplayers", "1"); // od ilu graczy dziala U-AFK // zalecane od 4 w gore. cCheckSpawn = register_cvar("afk_checkspawn", "1"); // czy ma sprawdzac czy gracz jest afk na respie (kiedy sie odrodzisz, to pobiera kamere, i pozycje gracza, i [jak cvar na 1 jest] za 15 sec sprawdza czy jest ta sama, jesli tak to [dalej cvary] // 1 - wlacza // 0 - wylacza sprawdzanie na respie cTimeKillSpawn = register_cvar("afk_timekillspawn", "30"); //Jezeli gracz nie rusza sie na respie przez tyle sekund, oznacza to, ze jest afk, i mozna go np. zabic [cvar nizej] lub liczyc mu szanse [2 cvary nizej] cKillSpawn = register_cvar("afk_killspawn", "1"); // czy zabijac gracza na respie ktory jest X czasu afk [cvar wyzej] // 1 - zabijaj // 0 - nie zabijaj, ale pokaz komunikat, ze gracz jest AFK. cChance = register_cvar("afk_killspawnchance", "3"); //jezeli zostanie zabity przez U-AFK [CVAR] razy to zostanie wywalony, bo nie gra. // zalecane 3 w gore. // uwaga 0 nie wylacza ! cBombDropTime = register_cvar("afk_bombdroptime", "25"); // po jakim czasie AFK ma wyrzucic bombe graczowi na ziemie // 0 - wylacza cPlayersInfoAFK = register_cvar("afk_playersinfoafk", "1"); // czy pojawiac sie info na chacie TT AFK : x CT AFK : x // 1 - tak // 0 - nie new configsDir[64] get_configsdir(configsDir, 63) server_cmd("exec %s/ultimateafk.cfg", configsDir) server_exec() } public WlaczDebug(id) debug2[id] = !debug2[id]; public plugin_cfg(){ pKick = get_pcvar_num(cKick); pTimeAFK = get_pcvar_num(cTimeAFK); pTimeSpect = get_pcvar_num(cTimeSpect); pSay = get_pcvar_num(cSay); pShoot = get_pcvar_num(cShoot); pAdmin = get_pcvar_num(cAdmin); pWarn = get_pcvar_num(cWarn); pPlayernum = get_pcvar_num(cPlayernum); pTimeKillSpawn = get_pcvar_num(cTimeKillSpawn); pKillSpawn = get_pcvar_num(cKillSpawn); pChance = get_pcvar_num(cChance); pBombDropTime = get_pcvar_num(cBombDropTime); pCheckSpawn = get_pcvar_num(cCheckSpawn); pPlayersInfoAFK = get_pcvar_num(cPlayersInfoAFK); } public client_connect(id) { TimeAFK[id] = 0; set_task(1.0, "CheckPlayer", id+732, _, _, "b"); TimeSpect[id] = 0; Chance[id] = 0; PlayerAFK[id] = false; bAfkSpawn[id] = false; remove_task(id+839); debug2[id] = 0; } public client_disconnect(id) { TimeAFK[id] = 0; remove_task(id+732); TimeSpect[id] = 0; Chance[id] = 0; PlayerAFK[id] = false; bAfkSpawn[id] = false; remove_task(id+839); } public CheckPlayer(id){ id-=732 if(!is_user_connected(id)) return PLUGIN_CONTINUE; if(get_playersnum() < pPlayernum) return PLUGIN_CONTINUE; if(is_user_bot(id)) return PLUGIN_CONTINUE; if(is_user_hltv(id)) return PLUGIN_CONTINUE; if(get_user_flags(id) & ADMIN_BAN && pAdmin == 1) return PLUGIN_CONTINUE; if(get_user_flags(id) & ADMIN_IMMUNITY && pAdmin == 2) return PLUGIN_CONTINUE; static oldpangle[33][3], oldporigin[33][3]; new pangle[33][3], porigin[33][3]; pev(id,pev_v_angle, pangle[id]) pev(id,pev_origin, porigin[id]); if(debug2[id]) client_print(id, 3, "TIME TEAM AFK: %d. TIME SPECT AFK: %d AFK SPAWN: %s CHANCE: %d/%d", TimeAFK[id], TimeSpect[id], PlayerAFK[id]?"yes":"no", Chance[id], pChance) if((get_user_team(id) == 3 || get_user_team(id) == 0) && pTimeSpect){ TimeSpect[id]++; TimeAFK[id] = 0; if(pWarn){ new TimeS = pTimeSpect if(TimeS - TimeSpect[id] == 15) if(pTimeSpect) ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_CHANGE_TEAM", TAG); TimeS = pTimeSpect if(TimeS - TimeSpect[id] == 7) if(pTimeSpect) ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_CHANGE_TEAM2", TAG); } } else TimeSpect[id] = 0; if((get_user_team(id) == 1 || get_user_team(id) == 2) && is_user_alive(id) && pTimeAFK){ if(freezetime) return PLUGIN_CONTINUE; new Float:speed[33][3] pev(id,pev_velocity,speed[id]) TimeAFK[id]++; if(get_user_maxspeed(id) == 0.1) { if(!bAfkSpawn[id]) Chance[id] = 0; TimeAFK[id] = 0; PlayerAFK[id] = false; } if(oldpangle[id][0] != pangle[id][0] || oldpangle[id][1] != pangle[id][1] || oldporigin[id][0] != porigin[id][0] || oldporigin[id][1] != porigin[id][1] || oldporigin[id][2] != porigin[id][2] || speed[id][0] != 0 || speed[id][1] != 0 || speed[id][2] != 0 || pev(id,pev_button) != 0){ if(!bAfkSpawn[id]) Chance[id] = 0; TimeAFK[id] = 0; PlayerAFK[id] = false; } if(bombcarrier == id && pBombDropTime && TimeAFK[id] >= pBombDropTime){ client_cmd(id,"use weapon_c4"); client_cmd(id, "drop"); remove_task(id+222); set_task(1.0, "UstawJeszczeRaz", id+222); bombcarrier = 0; ColorChat(0, RED,"%L",LANG_SERVER,"MSG_BOMB",TAG); } if(pWarn){ new pTimeA = pTimeAFK if(pTimeA - TimeAFK[id] == 15) if(pKick && pTimeAFK) ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_KICK",TAG); else if(pTimeAFK) ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_SPECT",TAG); pTimeA = pTimeAFK if(pTimeA - TimeAFK[id] == 7) if(pKick && pTimeAFK) ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_KICK2",TAG); else if(pTimeAFK) ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_SPECT2",TAG); } } oldpangle[id] = pangle[id]; oldporigin[id] = porigin[id]; if((is_user_alive(id) && TimeAFK[id] >= pTimeAFK && pTimeAFK) || (!is_user_alive(id) && TimeSpect[id] >= pTimeSpect && pTimeSpect)){ kickPlayer(id); return PLUGIN_CONTINUE; } if(bAfkSpawn[id] && is_user_alive(id) && TimeAFK[id] < pTimeKillSpawn && pCheckSpawn && pWarn && pTimeAFK){ new liczba_pcvara = pTimeKillSpawn if(liczba_pcvara - TimeAFK[id] == 7) { ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_REACTION",TAG); } } if(bAfkSpawn[id] && is_user_alive(id) && TimeAFK[id] >= pTimeKillSpawn && pCheckSpawn && !PlayerAFK[id] && pTimeAFK){ if(pKillSpawn){ ++Chance[id]; user_kill(id, 1); ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_SPAWN_KILL", TAG, Chance[id], pChance); } else { new name[32] get_user_name(id, name, 32) ColorChat(0, RED,"%L",LANG_SERVER, "MSG_PLAYER_AFK", TAG, name); PlayerAFK[id] = true; } if(Chance[id] >= pChance) { ColorChat(id, RED,"%L",LANG_PLAYER,"MSG_PLAYER_CHANCE",TAG,Chance[id],pChance); Chance[id] = 0; kickPlayer(id); } } return PLUGIN_CONTINUE; } public player_killed(id, attacker, shouldgib){ if(is_user_connected(id)){ TimeAFK[id] = 0; TimeSpect[id] = 0; if(bombcarrier == id) bombcarrier = 0; } if(id != attacker && is_user_alive(attacker)){ TimeAFK[attacker] = 0; Chance[attacker] = 0; PlayerAFK[attacker] = false; } CheckPlayersAFK() } /* Post Spawn */ public player_spawn(id){ TimeAFK[id] = 0; remove_task(id+839); PlayerAFK[id] = false; bAfkSpawn[id] = true; new Float:pCheckPostion = pTimeKillSpawn + 3.0 if(freezetime) pCheckPostion += ile_freezetime; set_task(pCheckPostion, "CheckPostion", id+839); } public CheckPostion(id){ id-=839 bAfkSpawn[id] = false } public Change_Weapon(id){ if(!is_user_alive(id) || !pShoot) return PLUGIN_CONTINUE; TimeAFK[id] = 0; if(!bAfkSpawn[id]) Chance[id] = 0; PlayerAFK[id] = false return PLUGIN_CONTINUE; } public kickPlayer(id) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; new name[32] get_user_name(id, name, 32); switch(get_user_team(id)){ case 0: { if(is_user_connected(id) && pTimeSpect){ client_print(id, print_console, "%L",LANG_PLAYER,"MSG_KICK_SPECT",TAG, pTimeSpect); ColorChat(0, RED,"%L",LANG_SERVER, "MSG_KICK_PLAYER",TAG, name); server_cmd("kick ^"%s^" ^"AFK - Check Console.^"",name) } } case 1..2: { if(pKick){ if(is_user_connected(id)){ client_print(id, print_console, "%L",LANG_PLAYER,"MSG_CONSOLE", pTimeAFK); ColorChat(0, RED,"%L",LANG_SERVER,"MSG_KICK3",TAG, name, pTimeAFK); server_cmd("kick ^"%s^" ^"AFK - Check Console^"",name) } } else { if(is_user_connected(id)){ ColorChat(0, RED,"%L",LANG_SERVER, "MSG_NEW_TEAM",TAG, name, pTimeAFK); TimeAFK[id] = 0; TimeSpect[id] = 0; if(is_user_alive(id)) user_silentkill(id); engclient_cmd(id, "jointeam", "6"); } } } case 3: { if(is_user_connected(id) && pTimeSpect){ client_print(id, print_console, "%L",LANG_PLAYER,"MSG_KICK_SPECT",TAG, pTimeSpect); ColorChat(0, RED,"%L",LANG_SERVER, "MSG_KICK_PLAYER",TAG, name); server_cmd("kick ^"%s^" ^"AFK - Check Console.^"",name) } } } return PLUGIN_CONTINUE; } public player_say(id){ if(!pSay) return PLUGIN_CONTINUE; if(pSay == 1 && (get_user_team(id) == 1 || get_user_team(id) == 2)){ TimeAFK[id] = 0; Chance[id] = 0; PlayerAFK[id] = false; } else if(pSay == 2){ TimeAFK[id] = 0; Chance[id] = 0; TimeSpect[id] = 0; PlayerAFK[id] = false; } return PLUGIN_CONTINUE; } // Przerobiony kod z AFK-KISS public bomb_events() { new arg0[64], action[64], name[33], userid, bid read_logargv(0,arg0,63) read_logargv(2,action,63) parse_loguser(arg0,name,32,userid) bid = find_player("k",userid) if (equal(action,"Spawned_With_The_Bomb")) { bombcarrier = bid; } else if (equal(action,"Dropped_The_Bomb")) { bombcarrier = 0; } else if (equal(action,"Got_The_Bomb")) { bombcarrier = bid; } else if (equal(action, "Planted_The_Bomb")) { bombcarrier = 0; } return PLUGIN_HANDLED } public CheckPlayersAFK(){ if(!pPlayersInfoAFK) return; new TTAFK = 0, CTAFK = 0 static Float:lastsend; if(get_gametime() - lastsend < 13.3) return; for(new i=1;i<33;i++){ if(is_user_alive(i) && (PlayerAFK[i] || TimeAFK[i] > 20)){ switch(get_user_team(i)){ case 1: TTAFK++ case 2: CTAFK++ } } } if(TTAFK || CTAFK) ColorChat(0, RED,"[%s]^x04 AFK CT: %d AFK TT: %d.",TAG, CTAFK, TTAFK); lastsend = get_gametime(); } public PlayerBoughtItem(id) if(is_user_alive(id)){ TimeAFK[id] = 0; Chance[id] = 0; PlayerAFK[id] = false; } public PlayerBoughtItem2(id) if(is_user_alive(id) /*&& bombcarrier != id*/){ TimeAFK[id] = 0; Chance[id] = 0; PlayerAFK[id] = false; } public RoundRestart() { freezetime = true; for(new i=1; i<33; i++){ TimeAFK[i] = 0; remove_task(i+222); } } public RoundEnd() { freezetime = true; ile_freezetime = get_cvar_float("mp_freezetime"); for(new i=1; i<33; i++){ remove_task(i+222); TimeAFK[i] = 0; } } public PreRoundStart() { freezetime = true; } public PostRoundStart() { freezetime = false; } public UstawJeszczeRaz(id) { id-=222; if(!freezetime) TimeAFK[id] = pBombDropTime; }
Plugin pobierałem stąd: http://amxx.pl/topic...6-ultimate-afk/