afk manager

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
34
Реакции
6
Ошибка
Плагин не кикает человека который не выбрал команду 1-2-6
после смены карты забиваются спектры и плагин их не трогает
ОС
Linux
Amx Mod X
AMX Mod X 1.10.0.5406 (http://www.amxmodx.org)
Authors:
Билд
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.11.0.776-dev
Build date: 19:37:50 Apr 20 2022 (2930)
ReGamedll
ReGameDLL version: 5.21.0.546-dev
Build date: 15:32:48 Dec 28 2021
Версия Metamod
Metamod-r v1.3.0.128, API (5:13)
Metamod-r build: 17:47:54 Aug 24 2018
Список метамодулей
[ 1] Reunion                RUN   -    reunion.so                  v0.1.0.92c       ini  Start Never
[ 2] Revoice RUN - revoice.so v0.1.0.34 ini Start Never
[ 3] ReSRDetector RUN - resrdetector.so v0.1.0 ini Chlvl ANY
[ 4] Rechecker RUN - rechecker_mm_i386.so v2.5 ini Chlvl ANY
[ 5] AMX Mod X RUN - amxmodx_mm_i386.so v1.10.0.5406 ini Start ANY
[ 6] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 7] Placeholders disabler RUN - plfix_mm_i386.so v0.0.3 ini Start Never
[ 8] YaPB RUN - yapb.so v4.0.0 ini Chlvl ANY
[ 9] HitBox Fix RUN - hitbox_fix.so v1.0.10 ini Start ANY
[10] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl5 ANY Never
[11] MySQL RUN - mysql_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[12] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[13] ReAPI RUN - reapi_amxx_i386.so v5.21.0.248-dev pl5 ANY Never
[14] FakeMeta RUN - fakemeta_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[15] GeoIP RUN - geoip_amxx_i386.so v1.9.0.5271 pl5 ANY ANY
[16] Engine RUN - engine_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[17] CSX RUN - csx_amxx_i386.so v1.9.0.5271 pl5 ANY ANY
[18] Fun RUN - fun_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[19] CStrike RUN - cstrike_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
Список плагинов
id  name                    version     author            url                              file         status   
[ 1] 0 ReAimDetector API 0.2.2 ReHLDS Team unknown reaimdetect running
[ 2] 1 ScreenMaker 1.1 neygomon unknown screen_make running
[ 3] 2 Lite VoteBan 1.4 neygomon unknown lite_voteba running
[ 4] 3 CT Bomb Cracker 0.5 Vaqtincha unknown ct_bomb_cra running
[ 5] 4 AFK Manager 1.2 Xramer unknown afk_manager running
[ 6] 5 Gag Me 2.3.4 Radius unknown gag_me.amxx running
[ 7] 6 Auto Language 1.1 xPaw unknown AutoLang.am running
[ 8] 7 Sys Bizz 1.1 Prayer unknown amx_sysbizz running
[ 9] 8 Stats Configuration 1.9.0.5271 AMXX Dev Team unknown statscfg.am running
[ 10] 9 Simple HUD Adverts 1.1 Oli Desu unknown next21_adve running
[ 11] 10 [ReAPI] Random Weapons 2.4.9 neugomon/h1k3 unknown random_weap stopped
[ 12] 11 Custom Smoke 1.07 bionext unknown custom_smok running
[ 13] 12 StatsX 1.9.0.5271 AMXX Dev Team unknown statsx.amxx running
[ 14] 13 'Fire in the hole' blo 1.0 xPaw unknown blockhole.a running
[ 15] 14 Walls Creator 1.1 d3m37r4 unknown walls_creat running
[ 16] 15 Admin Base 1.10.0.540 AMXX Dev Team admin.amxx running
[ 17] 16 Master Servers Check 4.8 Javekson unknown ms_check.am running
[ 18] 17 Admin Help 1.10.0.540 AMXX Dev Team adminhelp.a running
[ 19] 18 Admin Commands 1.10.0.540 AMXX Dev Team admincmd.am running
[ 20] 19 Slots Reservation 1.10.0.540 AMXX Dev Team adminslots. running
[ 21] 20 Multi-Lingual System 1.9.0.5271 AMXX Dev Team unknown multilingua running
[ 22] 21 Demo Recorder 2.4.1 F@nt0M unknown demo_record running
[ 23] 22 Menus Front-End 1.9.0.5271 AMXX Dev Team unknown menufront.a running
[ 24] 23 Commands Menu 1.10.0.540 AMXX Dev Team cmdmenu.amx running
[ 25] 24 Players Menu 1.8.1.3746 AMXX Dev Team unknown plmenu.amxx running
[ 26] 25 Maps Menu 1.8.1.3746 AMXX Dev Team unknown mapsmenu.am running
[ 27] 26 Plugin Menu 1.9.0.5271 AMXX Dev Team unknown pluginmenu. running
[ 28] 27 Admin Chat 1.10.0.540 AMXX Dev Team adminchat.a running
[ 29] 28 Anti Flood 1.10.0.540 AMXX Dev Team antiflood.a running
[ 30] 29 Scrolling Message 1.9.0.5271 AMXX Dev Team unknown scrollmsg.a running
[ 31] 30 Info. Messages 1.9.0.5271 AMXX Dev Team unknown imessage.am running
[ 32] 31 Admin Votes 1.10.0.540 AMXX Dev Team adminvote.a running
[ 33] 32 Lite Translit 2.8 neygomon unknown lite_transl running
[ 34] 33 Autoresponder/Advertis 0.5 MaximusBrood unknown ad_manager. running
[ 35] 34 Pause Plugins 1.9.0.5271 AMXX Dev Team unknown pausecfg.am running
[ 36] 35 MultiJump 1.1 twistedeuphoria unknown multijump.a running
[ 37] 36 Reset Score ReFreshed 0.0.1 wopox1337@Dev-CS unknown ResetScore_ running
[ 38] 37 [ReAPI] No Team Flash 0.0.3 Vaqtincha unknown no_team_fla running
[ 39] 38 Team Grenade Trail 1.2 Numb unknown trail.amxx running
[ 40] 39 Simple Damager 2.1.0 fl0wer unknown simple_dama running
[ 41] 40 Parachute Lite [ReAPI] 11.0 Leo_[BH] unknown parachute_l running
[ 42] 41 [ReAPI] Healthnade 0.0.2 F@nt0M unknown reapi_healt running
[ 43] 42 [ReAPI] IDEAL VIP by W 1.4.5 Wikiname (Remake unknown reapi_ideal running
[ 44] 43 Advanced Kill Assists 1.3c Xelson unknown next21_kill running
[ 45] 44 SF Bets 0.1.5 serfreeman1337 unknown sf_bets.amx running
[ 46] 45 Best Player in Round [ 1.0 Leo_[BH] unknown best_player running
[ 47] 46 Crux Ansata 1.0 DUKKHAZ0R unknown crux_ansata debug
[ 48] 47 Nade Messages 1.0 v3x unknown nademessage running
[ 49] 48 Info Rank 0.1 by CepeH9 unknown INFO_RANK_V running
[ 50] 49 Lite Admin ESP 1.0 neygomon unknown admin_esp.a running
[ 51] 50 [ReAPI] Custom Models 1.6.1 neugomon unknown custom_mode running
[ 52] 51 Unreal HPPv6 Detector 1.0.6 Karaulov unknown hh.amxx running
[ 53] 52 Map Manager: Core 3.1.1 Mistrick unknown map_manager running
[ 54] 53 Map Manager: Scheduler 0.1.7 Mistrick unknown map_manager running
[ 55] 54 Map Manager: Rtv 0.1.1 Mistrick unknown map_manager running
[ 56] 55 Map Manager: Nominatio 0.2.0 Mistrick unknown map_manager running
[ 57] 56 Map Manager: BlockList 0.0.3 Mistrick unknown map_manager running
[ 58] 57 Map Manager: Online so 0.0.3 Mistrick unknown map_manager running
[ 59] 58 Map Manager: Effects 0.0.10 Mistrick unknown map_manager running
[ 60] 59 Map Manager: Informer 0.0.5 Mistrick unknown map_manager running
[ 61] 60 AES: StatsX 0.5 Vega serfreeman1337 unknown aes_statsx_ running
[ 62] 61 Advanced Experience Sy 0.4 serfreeman1337 unknown aes_main.am running
[ 63] 62 AES: Exp CSTRIKE 0.3 serfreeman1337 unknown aes_exp_cst running
[ 64] 63 AES: Informer 0.2 serfreeman1337 unknown aes_informe running
[ 65] 64 AES: Experience Editor 0.1 serfreeman1337 unknown aes_exp_edi running
[ 66] 65 AES: Bonus System 0.2 serfreeman1337 unknown aes_bonus_s running
[ 67] 66 AES: Bonus PUBLIC 0.1.1 serfreeman1337 unknown aes_bonus_p running
[ 68] 67 AES: Bonus CSTRIKE 0.4 serfreeman1337 unknown aes_bonus_c running
[ 69] 68 Prefix Chat + AES 0.2 spree unknown aes_chat.am running
69 plugins, 68 running
Автор плагина
Xramer
Версия плагина
1.2
Исходный код
#include <amxmodx>
#include <reapi>
#include <xs>


#define PLUGIN "AFK Manager"
#define VERSION "1.2"
#define AUTHOR "Xramer"

#define TASK_AFK_CHECK 139734
#define BIT_VALID(%1,%2) (%1 & (1 << (%2 & 31)))
#define BIT_ADD(%1,%2) %1 |= (1 << (%2 & 31))
#define BIT_SUB(%1,%2) %1 &= ~(1 << (%2 & 31))

new const g_szConfigName[] = "afk_manager";

new g_szFlag[32], Float:g_iTimeCheck, g_iMaxWarning, g_iMaxSpect, Float:g_iTimeCheckSpect
new g_iTrnsferBomb, g_iNoticeSpec, g_iNoticeKick, g_iNoticeTransfer
new Float:g_fOldOrigin[MAX_CLIENTS+1][3], Float:g_fOldAngles[MAX_CLIENTS+1][3];
new g_iBitClientValid, g_iWarning[MAX_CLIENTS+1];
new g_iMaxPlayers;



public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("afk_manager.txt");

bind_pcvar_string(create_cvar(
"afk_immunity_flag",
"a", .description = "Flag of immunity from plugin actions"),
g_szFlag,
charsmax(g_szFlag))

bind_pcvar_float(create_cvar(
"afk_time_check",
"10.0",
.description = "Time to check"),
g_iTimeCheck)

bind_pcvar_num(create_cvar(
"afk_max_warning",
"3",
.description = "The maximum number of warnings after which the player will be kicked"),
g_iMaxWarning)

bind_pcvar_num(create_cvar(
"afk_num_check_spec",
"32",
.description = "The number of players at which it will kick, and not translate for spectators."),
g_iMaxSpect)

bind_pcvar_float(create_cvar(
"afk_time_check_spec",
"60.0",
.description = " Time to сheck spectators."),
g_iTimeCheckSpect)

bind_pcvar_num(create_cvar(
"afk_transfer_bomb",
"1",
.description = "Transfer bomb to allies."),
g_iTrnsferBomb)

bind_pcvar_num(create_cvar(
"afk_notice_spec",
"1",
.description = "Enable notification in the chat about the player transfer for spectators."),
g_iNoticeSpec)

bind_pcvar_num(create_cvar(
"afk_notice_kick",
"1",
.description = "Enable notification in chat about player kick."),
g_iNoticeKick)

bind_pcvar_num(create_cvar(
"afk_notice_transfer",
"1",
.description = "Enable notification in chat about transfer bomb."),
g_iNoticeTransfer)

AutoExecConfig(true, g_szConfigName)

RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
set_task(g_iTimeCheckSpect, "SpectatorCheck", .flags = "b");
g_iMaxPlayers = MaxClients;

}


public client_putinserver(id)
{
if(is_user_bot(id) || is_user_hltv(id)) return;
BIT_ADD(g_iBitClientValid, id);
}


public client_disconnected(id)
{
if(task_exists(id+TASK_AFK_CHECK)) remove_task(id+TASK_AFK_CHECK);
BIT_SUB(g_iBitClientValid, id);
}

public CBasePlayer_Killed(id) remove_task(id+TASK_AFK_CHECK);

public CBasePlayer_Spawn(const id)
{
if(!is_user_alive(id)) return;

g_iWarning[id] = 0;

get_entvar(id, var_origin, g_fOldOrigin[id]);
get_entvar(id, var_angles, g_fOldAngles[id]);

if(task_exists(id+TASK_AFK_CHECK)) remove_task(id+TASK_AFK_CHECK);
set_task(g_iTimeCheck, "AfkCheck", id+TASK_AFK_CHECK, _, _, "b");

}


public AfkCheck(id)
{
id -= TASK_AFK_CHECK;
new Float:fNewOrigin[3], Float:fNewAngles[3];

get_entvar(id, var_origin, fNewOrigin);
get_entvar(id, var_angles, fNewAngles);

if(xs_vec_equal(g_fOldOrigin[id], fNewOrigin) && xs_vec_equal(g_fOldAngles[id], fNewAngles))
{

if(++g_iWarning[id] >= g_iMaxWarning)
{
user_kill(id,1)
rg_join_team(id, TEAM_SPECTATOR);
set_member(id, m_iTeam, TEAM_SPECTATOR);
if(g_iNoticeSpec){
client_print_color(0, print_team_red, "%l %l", "AFK_PREFIX", "AFK_ALL_TRANSFER_SPECTATOR", id);
}

}
else
{
client_print_color(id, print_team_red, "%l %l", "AFK_PREFIX", "AFK_ID_WARNING", g_iWarning[id], g_iMaxWarning);
}
if(get_entvar(id, var_weapons) & (1<<CSW_C4))
{
if(g_iTrnsferBomb){
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(i != id && is_user_alive(i) && (get_member(i, m_iTeam) == TEAM_TERRORIST)){
rg_transfer_c4(id,i)
if(g_iNoticeTransfer){
client_print_color(0, print_team_red,"%l %l", "AFK_PREFIX", "AFK_BOMB_TRANSFER", id, i);
}
break;
}


}
}
else
{
rg_drop_item(id, "weapon_c4");
if(g_iNoticeTransfer){
client_print_color(0, print_team_red, "%l %l", "AFK_PREFIX", "AFK_BOMB_DROP", id);
}
}
}

}
else
{
if(g_iWarning[id]) g_iWarning[id] = 0;
xs_vec_copy(fNewOrigin, g_fOldOrigin[id]);
xs_vec_copy(fNewAngles, g_fOldAngles[id]);
}
}


public SpectatorCheck()
{
if(get_playersnum() < g_iMaxSpect) return;
for(new i=1; i <= g_iMaxPlayers; i++){
if(BIT_VALID(g_iBitClientValid, i)){
if(get_user_flags(i) & read_flags(g_szFlag)) continue;

if(get_member(i, m_iTeam) == TEAM_SPECTATOR){
AfkPunishment(i);
break;
}

}
}
}

public AfkPunishment(i)
{
if(g_iNoticeKick){
client_print_color(0, print_team_red, "%l %l", "AFK_PREFIX", "AFK_ALL_KICK_SPECTATOR", i);
}
server_cmd("kick #%d ^"%l^"", get_user_userid(i), "AFK_ID_KICK_SPECTATOR");
}
Куплю исправление за адекватную сумму, или помогите пожалуйста найти решение для исправления
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
Код:
if(get_member(i, m_iTeam) == TEAM_SPECTATOR || get_member(i, m_iTeam) == TEAM_UNASSIGNED){
    AfkPunishment(i);
    break;
}
 
Сообщения
34
Реакции
6
Спасибо, попробую
 
Последнее редактирование:
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
dimamelnic, А вообще спектров кикает?
 
Сообщения
34
Реакции
6
BiZaJe, пачкой кикает.... хотя плагин кикал по 1... ну типо дефолт плагин который у автора. а те кто команду не выбрал так и не кикает
28 Ноя 2022
я так же это поставил
rg_join_team(id, TEAM_UNASSIGNED);
set_member(id, m_iTeam, TEAM_UNASSIGNED);

видимо из за этого стало кикать сразу часть
 
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
dimamelnic, set_member(id, m_iTeam, TEAM_UNASSIGNED); rg_join_team(id, TEAM_UNASSIGNED); Это принудительно переводит только надо TEAM_SPECTATOR т.к TEAM_UNASSIGNED считается только, что зашедший игрок
 
Сообщения
893
Реакции
149
Помог
25 раз(а)
Вопрос. Спектаторов должно кикать сразу? Или сперва переводить (что и плагин делает), потом уже кикать?
 
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
ImmortalAmxx, Скорее всего сразу т.к некоторые просто висят на моменте мотд окна
 
Сообщения
893
Реакции
149
Помог
25 раз(а)
По сути, если количество игроков равно значению afk_num_check_spec - оно сразу кикает. Если подойдет тебе: просто уменьши число, что бы сразу кикало.
 
Сообщения
678
Реакции
56
Помог
16 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сообщения
677
Реакции
146
Помог
11 раз(а)
Могу посоветовать заменить плагин.
Я сам долго искал нормальный афк кикер, хренову тучу их перепробовал, лучше всех у меня работает AFKc 1.0 (AFK completed v1.0) от скриптера m1c. Плагин, правда, без исходника, но работает уже 3й год отлично.
 
Сообщения
34
Реакции
6
@XyLiGaN,если я не ошибаюсь у неугомона 2 плагина таких.. и вроде как они не умеют работать с тем что человек не выбрал команду
29 Ноя 2022
BiZaJe, таааак а мне что делать( плагин не фурычит. не хочу скальпеля покупать плагин.. ибо придется штуки 4 покупать... я бы за 1 заплатил:Dно что бы был нормальный и без привязок
 
Сообщения
678
Реакции
56
Помог
16 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
dimamelnic, У него их +100500 штук xD А так, чисто лучше бы написал под заказ плагин за пару сот и всё... Чисто бы ТЗ оформил какое те надо. Было бы куда лучше, нежели копаться в чужом коде.
 
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
dimamelnic,
C++:
public SpectatorCheck()
{
    if(get_playersnum() < g_iMaxSpect) return;    // Проверка на количество игроков. Функция перестает работать если игроков меньше чем afk_num_check_spec  на сервере
    for(new i=1; i <= g_iMaxPlayers; i++){
        if(BIT_VALID(g_iBitClientValid, i)){
            if(get_user_flags(i) & read_flags(g_szFlag)) continue;
               
            // Делаем проверку на спектров и те кто тупо висит в мотд окне
            if(get_member(i, m_iTeam) == TEAM_SPECTATOR || get_member(i, m_iTeam) == TEAM_UNASSIGNED){
                AfkPunishment(i);
                break;
            }

        }  
    }
}
установи значение квара afk_num_check_spec - 1 чтобы сразу кикало если игроков больше чем 1 человек
29 Ноя 2022
По теории этого достаточно чтобы исправить эту приблуду
 
Сообщения
34
Реакции
6
BiZaJe, afk_num_check_spec отвечает за необходимый онлайн для начала проверки спектров. ну типо если в кваре стоит 30/32

то при 31/32 он уже начнет проверять и кикнет 1. который вошел в спектры конечно же
 
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
dimamelnic, get_playersnum(1)
попробовать засчитывать игроков которые только заходят на сервер
 
Последнее редактирование модератором:
Сообщения
34
Реакции
6
XyLiGaN, да 200р не жалко мне исправить плагин... мне многие говорят что надо проверку добавить. и вроде как есть древний плагин который ловит тех кто мотд не убрал... но он древний по функционалу не подходит(
29 Ноя 2022
BiZaJe, поменял. не помогает
29 Ноя 2022
@BiZaJe,поменял. не помогает
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу