Trash_Your_Self_
Участник
- Сообщения
- 9
- Реакции
- 0
- Баллы
- 1
Как исправить ошибку
- Исходный код
- C++:
/* todo Плагин АМХХ - GameCMS GagManager нативы для снятия блока нативы для временных блоков через trie 2.2.5 * фикс работы квара cms_gag_time_for_info для версии без Reapi 2.2.6 * фикс определения имени админа для вывода в чат при автоматическом бане * фикс установки типа блокировки при автоматическом бане 2.2.7 фикс ошибки при блокировке через меню */ #include <amxmodx> #include <amxmisc> #include <sqlx> #include <gamecms5> #include <time> new const PLUGIN[] = "GameCMS_GagManager"; new const AUTHOR[] = "zhorzh78"; #define REAPI #if defined REAPI #include <reapi> #define VTC_OnClientStartSpeak(iSender) VTC_OnClientStartSpeak(const iSender) #define VTC_OnClientStopSpeak(iSender) VTC_OnClientStopSpeak(const iSender) #define FMRES_IGNORED HC_CONTINUE #define FMRES_SUPERCEDE HC_SUPERCEDE new const VERSION[] = "2.2.7 ReApi"; #else #include <VtcApi> #include <hamsandwich> #include <fakemeta> #include <engine> new const g_szSpamEntClassname[] = "SpamEntClassname"; new const VERSION[] = "2.2.7 FM"; #endif #define GetBit(%1,%2) ((%1) & (1 << (%2 & 31))) #define SetBit(%1,%2) ((%1) |= (1 << (%2 & 31))) #define ResetBit(%1,%2) ((%1) &= ~(1 << (%2 & 31))) #define IsEnemy(%1,%2) (g_iPlayerTeam[%1] != g_iPlayerTeam[%2]) #define IsPlayerMuted(%1,%2) (GetBit(g_bitPlayerMuted[%1], %2)) #define MENU_DATA_LENGTH 8 #define MENU_ITEM_LENGTH 100 #define MAX_REASON_LENGTH 100 #define TIME_NOT_EXPIRING 0 #define TIME_MAP_END_EXPIRING -1 #define EMPTY_DATA -2 #define MENU_TIME 't' #define MENU_REASON 'r' #define MENU_REASON_SELF 's' #define MENU_TYPE 'b' #define MENU_PLAYERS 'p' #define MENU_ITEM_BLOCK_ADD 'a' #define MENU_ITEM_BLOCK_REMOVE 'd' #define MAX_CHAT_MSG_LENGTH 190 #define STATIC_ITEM_HANDLER -4 #define STATIC_ITEM_POSITION 6 #define MAX_IMMUNITY_LEVELS 5 //максимальное количество уровней доступа "cms_gag_immunity_lvl" #define MAX_IMMUNITY_LEVEL_LEN 5 //максимальное количество флагов в одном уровне доступа #define MAX_BLOCK_TYPES 3 //типов блокировки (все, чат, голос) enum _:BlockInfo { GBid, //comms.GBid BanID GBlockType, //comms.type GExpired, //comms.GExpired GAdminId, //comms.admin_id GCreated, //comms.GCreated GBlockTime, //comms.length GAuthId[MAX_AUTHID_LENGTH], //comms.GAuthId GName[MAX_NAME_LENGTH], //comms.GName GBlockReason[MAX_REASON_LENGTH],//comms.reason GAdminNick[MAX_NAME_LENGTH], //comms.admin_nick GModifiedBy[MAX_NAME_LENGTH], //comms.modified_by bool:GModifiedBlocked, GTargetID }; enum _:eReasonData { REASON_TEXT[MAX_REASON_LENGTH], REASON_TIME, REASON_TYPE }; new const sqlTable[] = "comms"; new const g_szSoundFilePath[] = "../valve/sound/buttons/blip2.wav"; new Trie:g_trhWhiteListCmdArray, Trie:g_trhBlockedUsers; new Array:g_arhBlockTime, Array:g_arhBlockReasons; new Handle:g_hSqlHandle; new szQuery[MAX_QUERY_SMALL_LEN*2], plBlockInfo[MAX_PLAYERS+1][BlockInfo], g_szPlayerMuteType[MAX_PLAYERS + 1]; new g_bitPlayerMuted[MAX_PLAYERS+1], CsTeams:g_iPlayerTeam[MAX_PLAYERS+1], bool:g_isAlivePlayer[MAX_PLAYERS+1], g_iImmunLevel[MAX_PLAYERS+1]; new g_szBlockType[MAX_BLOCK_TYPES][MAX_NAME_LENGTH], g_bitAccessLvl[MAX_IMMUNITY_LEVELS]; new g_iEntSpamChecker[MAX_PLAYERS+1], Float:g_flPlayerSpamTimer[MAX_PLAYERS+1]; new g_bitBlockedVoice, g_bitBlockedChat, g_bitBlockedFully, g_bitUseTeamVoice; new g_iTimeMenu, g_iReasonMenuId, g_iTypeMenu, g_iStaticMenuCallback; new g_iAddTime, g_iAddLastId, g_iMenuAccessNull, g_iImmunLevelsNum; new g_bitApiAllow, g_iCmdGagMenu, g_iServerId, bool:g_bRoundEnd; //cvars new cpTime, cpImmunityLvl, cpWhiteCmds, cpDeadAdmTalk, cpAmxShowActivity, cpAllTalk, cpBlockVoiceSpam; new cv_iDeadAdmTalk, cv_iAllTalk, cv_iBlockSpam, cv_iMuteTypeChoose, Float:cv_flBlockSpamTimer, Float:cv_flTimeForInfo; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar("gamecms_gagmanager", VERSION, FCVAR_SERVER); register_dictionary("time.txt"); register_dictionary("common.txt"); register_dictionary("gamecms_gagmanager.txt"); register_clcmd("say /mute", "MuteMenu"); register_clcmd("say_team /mute", "MuteMenu"); register_clcmd("+teamvoice", "CmdTeamVoiceOn"); register_clcmd("-teamvoice", "CmdTeamVoiceOff"); register_clcmd("say", "HookSayChat"); register_clcmd("say_team", "HookSayChat"); #if defined _reapi_included RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayerSpawn", true); RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayerKilled", true); RegisterHookChain(RG_CSGameRules_CanPlayerHearPlayer, "CanPlayerHearPlayer", false); RegisterHookChain(RG_CSGameRules_RestartRound, "Rlog_Round_Start", true); RegisterHookChain(RG_RoundEnd, "Rlog_Round_End", true); #else RegisterHam(Ham_Spawn, "player", "CBasePlayerSpawn", true); RegisterHam(Ham_Killed, "player", "CBasePlayerKilled", true); register_forward(FM_Voice_SetClientListening, "CanPlayerHearPlayer", false); register_logevent("Rlog_Round_End", 2, "1=Round_End"); register_logevent("Rlog_Round_Start", 2, "1=Round_Start"); #endif //квары cpTime = register_cvar("cms_gag_time", "-1, 10, 60, 1440, 0"); cpImmunityLvl = register_cvar("cms_gag_immunity_lvl", "a, b, c, d"); cpWhiteCmds = register_cvar("cms_gag_whitecmds", ""); cpDeadAdmTalk = register_cvar("cms_gag_deadadmtalk", "0"); cpBlockVoiceSpam = register_cvar("cms_gag_block_voice_spam", "1"); new cpBlockSpamTimer = register_cvar("cms_gag_block_spam_timer", "10.0"); new cpMuteTypeChoose = register_cvar("cms_gag_mute_type_choose", "0"); cpAmxShowActivity = get_cvar_pointer("amx_show_activity"); cpAllTalk = get_cvar_pointer("sv_alltalk"); hook_cvar_change(cpAllTalk, "HookCvarChanged"); bind_pcvar_float(register_cvar("cms_gag_time_for_info", "0.0"), cv_flTimeForInfo); g_trhBlockedUsers = TrieCreate(); g_trhWhiteListCmdArray = TrieCreate(); g_arhBlockTime = ArrayCreate(); //меню причин, чтобы загрузить их из конфига(ов) FnReasonMenuCreate(); new configsFile[MAX_NAME_LENGTH*2]; get_configsdir(configsFile, charsmax(configsFile)); format(configsFile, charsmax(configsFile), "%s/gamecms/gamecms_gagmanager.cfg", configsFile); server_cmd("exec %s", configsFile); server_exec(); cv_iMuteTypeChoose = get_pcvar_num(cpMuteTypeChoose); cv_flBlockSpamTimer = get_pcvar_float(cpBlockSpamTimer); if(cv_iMuteTypeChoose) register_message(get_user_msgid("SayText"), "MessageSayText"); new tmpCvarStr[MAX_FMT_LENGTH]; if(get_pcvar_string(cpImmunityLvl, tmpCvarStr, charsmax(tmpCvarStr))) { new tmpOut[MAX_IMMUNITY_LEVELS][MAX_IMMUNITY_LEVEL_LEN]; g_iImmunLevelsNum = explode_string(tmpCvarStr, ",", tmpOut, sizeof(tmpOut), sizeof(tmpOut[])); if(!g_iImmunLevelsNum) return; else if(g_iImmunLevelsNum > MAX_IMMUNITY_LEVELS) g_iImmunLevelsNum = MAX_IMMUNITY_LEVELS; for(new i; i < g_iImmunLevelsNum; i++) { trim(tmpOut); g_bitAccessLvl = read_flags(tmpOut); } new iMenuFlag = g_bitAccessLvl[1]; g_iCmdGagMenu = register_clcmd("amx_gagmenu", "AdminPlayersMenu", iMenuFlag, "", 1); register_clcmd("say /gag", "AdminPlayersMenu", iMenuFlag, "", 1); } } public plugin_precache() { if(file_exists(g_szSoundFilePath)) precache_sound(g_szSoundFilePath); } public Rlog_Round_End() { g_bRoundEnd = true; } public Rlog_Round_Start() { g_bRoundEnd = false; } public OnConfigsExecuted() { new tmpCvarStr[512]; //время if(get_pcvar_string(cpTime, tmpCvarStr, charsmax(tmpCvarStr))) CvarsToArray(g_arhBlockTime, tmpCvarStr, ',', "t"); //разрешенные команды if(get_pcvar_string(cpWhiteCmds, tmpCvarStr, charsmax(tmpCvarStr))) CvarsToArray(g_trhWhiteListCmdArray, tmpCvarStr, ',', "c"); cv_iDeadAdmTalk = get_pcvar_num(cpDeadAdmTalk); cv_iAllTalk = get_pcvar_num(cpAllTalk); cv_iBlockSpam = get_pcvar_num(cpBlockVoiceSpam); if(cv_iBlockSpam != BLOCK_STATUS_NONE && cv_flBlockSpamTimer > 0.0) { for(new iClient = 1; iClient <= MaxClients; iClient++) { #if defined _reapi_included g_iEntSpamChecker[iClient] = rg_create_entity("info_target", true); } #else g_iEntSpamChecker[iClient] = create_entity("info_target"); if(g_iEntSpamChecker[iClient]) { entity_set_string(g_iEntSpamChecker[iClient], EV_SZ_classname, g_szSpamEntClassname); entity_set_edict(g_iEntSpamChecker[iClient], EV_ENT_owner, iClient); } } register_think(g_szSpamEntClassname, "SpamEntThinkCallback"); #endif } FnCreateStaticMenu(); } FnReasonMenuCreate() { register_concmd("cms_gag_reason", "CmdAddGagReason"); g_arhBlockReasons = ArrayCreate(eReasonData); g_iStaticMenuCallback = menu_makecallback("StaticMenuCallback"); g_iReasonMenuId = menu_create(fmt("%L", LANG_PLAYER, "CMSGAG_MENU_REASON_HEADER"), "StaticMenuHandler"); menu_additem(g_iReasonMenuId, fmt("%L", LANG_PLAYER, "CMSGAG_MENU_REASON_CUSTOM"), "rs"); menu_setprop(g_iReasonMenuId, MPROP_EXITNAME, fmt("%L", LANG_PLAYER, "EXIT")); } public HookCvarChanged(pcvar, const old_value[], const new_value[]) { if(pcvar == cpAllTalk) cv_iAllTalk = str_to_num(new_value); } /*======== Загрузка причины =========*/ public CmdAddGagReason(id, level, cid) { if(!cmd_access(id, g_bitAccessLvl[1], cid, 0)) return PLUGIN_HANDLED; new szReason[MENU_ITEM_LENGTH]; read_args(szReason, charsmax(szReason)); if(szReason[0]) { new szReasonInfo[eReasonData]; if(!id) { new iItems, szTime[MENU_DATA_LENGTH], szType[MENU_DATA_LENGTH]; iItems = parse(szReason, szReasonInfo[REASON_TEXT], charsmax(szReasonInfo), szTime, charsmax(szTime), szType, charsmax(szType)); if(iItems > 1) { szReasonInfo[REASON_TIME] = szTime[0] ? str_to_num(szTime) : EMPTY_DATA; switch(szType[0]) { case 'a': szReasonInfo[REASON_TYPE] = BLOCK_STATUS_ALL; case 'c': szReasonInfo[REASON_TYPE] = BLOCK_STATUS_CHAT; case 'v': szReasonInfo[REASON_TYPE] = BLOCK_STATUS_VOICE; default: szReasonInfo[REASON_TYPE] = EMPTY_DATA; } } else szReasonInfo[REASON_TIME] = szReasonInfo[REASON_TYPE] = EMPTY_DATA; ArrayPushArray(g_arhBlockReasons, szReasonInfo, sizeof(szReasonInfo)); } else { remove_quotes(szReason); trim(szReason); copy(plBlockInfo[id][GBlockReason], charsmax(plBlockInfo[]), szReason); return plBlockInfo[id][GCreated] ? GagInfoMenu(id) : menu_display(id, g_iTimeMenu, 0); } } else menu_display(id, g_iReasonMenuId, 0); return PLUGIN_HANDLED; } /*======== Ловим соединение с БД от API =========*/ public OnAPIPluginLoaded(Handle:sqlTuple) { g_hSqlHandle = sqlTuple; g_bitApiAllow |= UseGameCms; g_iServerId = cmsapi_get_server_id(); SQL_SetCharset(g_hSqlHandle, "utf8"); if(get_playersnum()) //Если игроки зашли ДО соединения с БД { new szAuthid[MAX_AUTHID_LENGTH]; for(new i = 1; i <= MaxClients; i++) { if(!is_user_connected(i)) continue; get_user_authid(i, szAuthid, charsmax(szAuthid)); FnClientConnected(i, szAuthid); } } } public OnAPIAdminsLoaded() g_bitApiAllow |= UseGameCmsAdmins; /*======== Статические меню (время, тип) =========*/ public FnCreateStaticMenu() { new iSize = ArraySize(g_arhBlockReasons); new szReasonInfo[eReasonData]; for(new i; i < iSize; i++) { ArrayGetArray(g_arhBlockReasons, i, szReasonInfo, sizeof(szReasonInfo)); if(szReasonInfo[REASON_TIME] != EMPTY_DATA) format(szReasonInfo[REASON_TEXT], charsmax(szReasonInfo[REASON_TEXT]), "%s \y[%s]", szReasonInfo[REASON_TEXT], FormatBlockTime(szReasonInfo[REASON_TIME], 1, timeunit_minutes)); if(szReasonInfo[REASON_TYPE] != EMPTY_DATA) format(szReasonInfo[REASON_TEXT], charsmax(szReasonInfo[REASON_TEXT]), "%s \y[%L]", szReasonInfo[REASON_TEXT], LANG_PLAYER, fmt("CMSGAG_BLOCK_TYPE_%d", szReasonInfo[REASON_TYPE])); menu_additem(g_iReasonMenuId, szReasonInfo[REASON_TEXT], "r", 0, g_iStaticMenuCallback); } /* =========== Меню выбора времени*/ g_iTimeMenu = menu_create(fmt("%L", LANG_PLAYER, "CMSGAG_MENU_TIME_HEADER"), "StaticMenuHandler", 1); iSize = ArraySize(g_arhBlockTime); for (new i = 0; i < iSize; ++i) menu_additem(g_iTimeMenu, FormatBlockTime(ArrayGetCell(g_arhBlockTime, i), 1, timeunit_minutes), "t", 0, g_iStaticMenuCallback); menu_setprop(g_iTimeMenu, MPROP_EXITNAME, fmt("%L", LANG_PLAYER, "EXIT")); /* =========== Меню выбора типа блокировки */ g_iTypeMenu = menu_create(fmt("%L", LANG_PLAYER, "CMSGAG_MENU_TYPE_HEADER"), "StaticMenuHandler", 1); for (new i = 0; i < MAX_BLOCK_TYPES; ++i) { formatex(g_szBlockType, charsmax(g_szBlockType[]), "%L", LANG_PLAYER, fmt("CMSGAG_BLOCK_TYPE_%d", i)); menu_additem(g_iTypeMenu, g_szBlockType, "b", 0, g_iStaticMenuCallback); } menu_setprop(g_iTypeMenu, MPROP_EXITNAME, fmt("%L", LANG_PLAYER, "EXIT")); } public StaticMenuCallback(id, menu, item) { new szData[MENU_DATA_LENGTH], szName[MENU_ITEM_LENGTH]; menu_item_getinfo(menu, item, g_iMenuAccessNull, szData, charsmax(szData), szName, charsmax(szName)); new itemStatus; switch(szData[0]) { case MENU_TIME: { new iTime = ArrayGetCell(g_arhBlockTime, item); ///?????? get_timeleft на ксдм itemStatus = (iTime == plBlockInfo[id][GBlockTime] && plBlockInfo[id][GCreated]) || !g_bitApiAllow && (iTime > get_timeleft()/60 || iTime == TIME_NOT_EXPIRING) ? ITEM_DISABLED : ITEM_IGNORE; } case MENU_REASON: itemStatus = strcmp(szName, plBlockInfo[id][GBlockReason]) == 0 ? ITEM_DISABLED : ITEM_IGNORE; case MENU_TYPE: itemStatus = item == plBlockInfo[id][GBlockType] && plBlockInfo[id][GCreated] ? ITEM_DISABLED : ITEM_IGNORE; } return itemStatus; } public StaticMenuHandler(id, menu, item) { if(item == MENU_EXIT) { if(plBlockInfo[id][GCreated]) GagInfoMenu(id); else arrayset(plBlockInfo[id], 0, BlockInfo); return PLUGIN_HANDLED; } new szData[MENU_DATA_LENGTH], szName[MENU_ITEM_LENGTH]; menu_item_getinfo(menu, item, g_iMenuAccessNull, szData, charsmax(szData), szName, charsmax(szName)); switch(szData[0]) { case MENU_TIME: //time { plBlockInfo[id][GBlockTime] = ArrayGetCell(g_arhBlockTime, item); if(plBlockInfo[id][GCreated]) { GagInfoMenu(id); return PLUGIN_HANDLED; } if(plBlockInfo[id][GBlockType] == EMPTY_DATA) menu_display(id, g_iTypeMenu, 0); else GagInfoMenu(id); } case MENU_REASON: //reason { switch(szData[1]) { case MENU_REASON_SELF: { client_cmd(id,"messagemode cms_gag_reason"); return PLUGIN_HANDLED; } default: { new szReasonInfo[eReasonData]; ArrayGetArray(g_arhBlockReasons, item - 1, szReasonInfo, sizeof(szReasonInfo)); copy(plBlockInfo[id][GBlockReason], charsmax(plBlockInfo[]), szReasonInfo[REASON_TEXT]); if(plBlockInfo[id][GCreated]) { GagInfoMenu(id); return PLUGIN_HANDLED; } plBlockInfo[id][GBlockTime] = szReasonInfo[REASON_TIME]; plBlockInfo[id][GBlockType] = szReasonInfo[REASON_TYPE]; if(plBlockInfo[id][GBlockTime] == EMPTY_DATA) menu_display(id, g_iTimeMenu, 0); else if(plBlockInfo[id][GBlockType] == EMPTY_DATA) menu_display(id, g_iTypeMenu, 0); else GagInfoMenu(id); } } } case MENU_TYPE: //type { plBlockInfo[id][GBlockType] = item; GagInfoMenu(id); } } return PLUGIN_HANDLED; } /*======== Меню игроков (админ) =========*/ public AdminPlayersMenu(id) { if(!cmd_access(id, g_bitAccessLvl[1], g_iCmdGagMenu, 0)) return PLUGIN_HANDLED; arrayset(plBlockInfo[id], 0, BlockInfo); static iAdminMenuCallback; if(!iAdminMenuCallback) iAdminMenuCallback = menu_makecallback("AdminPlayersMenuCallback"); new iPlayersMenu = menu_create(fmt("%L", LANG_PLAYER, "CMSGAG_MENU_BLOCK_HEADER"), "AdminPlayersMenuHandler"); new iTargetClient, szFmtName[MENU_ITEM_LENGTH], szPlayersIds[MAX_PLAYERS], iPlayersCount; get_players_ex(szPlayersIds, iPlayersCount/*, (GetPlayers_ExcludeBots | GetPlayers_ExcludeHLTV)*/); for (new i; i < iPlayersCount; i++) { iTargetClient = szPlayersIds; if(id == iTargetClient) continue; if(cmsgag_is_user_blocked(iTargetClient) != BLOCK_STATUS_NONE) formatex(szFmtName, charsmax(szFmtName), "\w%n %L", iTargetClient, LANG_PLAYER, "CMSGAG_ITEM_PLAYER_BLOCKED"); else formatex(szFmtName, charsmax(szFmtName), "\w%n", iTargetClient); menu_additem(iPlayersMenu, szFmtName, fmt("%d", iTargetClient), 0, iAdminMenuCallback); } menu_setprop(iPlayersMenu, MPROP_BACKNAME, fmt("%L", LANG_PLAYER, "BACK")); menu_setprop(iPlayersMenu, MPROP_NEXTNAME, fmt("%L", LANG_PLAYER, "MORE")); menu_setprop(iPlayersMenu, MPROP_EXITNAME, fmt("%L", LANG_PLAYER, "EXIT")); menu_display(id, iPlayersMenu, 0); return PLUGIN_HANDLED; } public AdminPlayersMenuCallback(id, menu, item) { new szPlayerId[MENU_DATA_LENGTH]; menu_item_getinfo(menu, item, g_iMenuAccessNull, szPlayerId, charsmax(szPlayerId)); return FnAboveImmunity(id, str_to_num(szPlayerId)) ? ITEM_ENABLED : ITEM_DISABLED; } public AdminPlayersMenuHandler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new szPlayerId[MENU_DATA_LENGTH]; menu_item_getinfo(menu, item, g_iMenuAccessNull, szPlayerId, charsmax(szPlayerId)); plBlockInfo[id][GTargetID] = str_to_num(szPlayerId); menu_destroy(menu); get_user_name(plBlockInfo[id][GTargetID], plBlockInfo[id][GName], charsmax(plBlockInfo[])); get_user_authid(plBlockInfo[id][GTargetID], plBlockInfo[id][GAuthId], charsmax(plBlockInfo[])); new iBlockOwner; if(g_bitApiAllow & UseGameCmsAdmins) iBlockOwner = cmsapi_get_admin_ident(id); if(!TrieGetArray(g_trhBlockedUsers, plBlockInfo[id][GAuthId], plBlockInfo[id], charsmax(plBlockInfo[]))) { plBlockInfo[id][GAdminId] = iBlockOwner; menu_display(id, g_iReasonMenuId, 0); return PLUGIN_HANDLED; } //если игрок заблокирован, найдем админа if(g_bitApiAllow & UseGameCmsAdmins) { #if !defined API54 new iAdminId = plBlockInfo[id][GAdminId]; if(iAdminId != iBlockOwner) { new Trie:trhAdminInfo = cmsapi_get_admin_info(iAdminId); if(trhAdminInfo) { new adminData[AdminInfo]; TrieGetArray(trhAdminInfo, fmt("%d", iAdminId), adminData, sizeof adminData); plBlockInfo[id][GModifiedBlocked] = FnAboveImmunity(get_user_flags(id), read_flags(adminData[AdminServiceFlags]), true) ? false : true; //TrieDestroy(trhAdminInfo); } } #else if(plBlockInfo[id][GAdminId] != iBlockOwner) { new adminData[AdminInfo]; if(cmsapi_get_info_by_admin_id(plBlockInfo[id][GAdminId], adminData)) plBlockInfo[id][GModifiedBlocked] = FnAboveImmunity(get_user_flags(id), read_flags(adminData[AdminServiceFlags]), true) ? false : true; } #endif } GagInfoMenu(id); return PLUGIN_HANDLED; } /*======== Меню сохранения / удаления блока =========*/ public GagInfoMenu(id) { new tmpName[MENU_ITEM_LENGTH]; new tmpTypeNum = plBlockInfo[id][GBlockType]; new iGagInfoMenu = menu_create(fmt("%L", LANG_PLAYER, "CMSGAG_MENU_INFO_HEADER"), "GagInfoMenuHandler"); static iGagInfoMenuCallback; if(!iGagInfoMenuCallback) iGagInfoMenuCallback = menu_makecallback("GagInfoMenuCallback"); new bool:existKey = TrieKeyExists(g_trhBlockedUsers, plBlockInfo[id][GAuthId]); /*if(!plBlockInfo[id][GCreated]) plBlockInfo[id][GCreated] = get_systime(); */ if(existKey) formatex(tmpName, charsmax(tmpName), "%L %s %L", LANG_PLAYER,"CMSGAG_ITEM_PLAYER_INFO_NAME", plBlockInfo[id][GName], LANG_PLAYER,"CMSGAG_ITEM_PLAYER_BLOCKED"); else formatex(tmpName, charsmax(tmpName), "%L %s", LANG_PLAYER,"CMSGAG_ITEM_PLAYER_INFO_NAME", plBlockInfo[id][GName]); menu_additem(iGagInfoMenu, tmpName, "p", 0); formatex(tmpName, charsmax(tmpName), "%L %s", LANG_PLAYER, "CMSGAG_ITEM_PLAYER_INFO_TIME", FormatBlockTime(plBlockInfo[id][GBlockTime], 1, timeunit_minutes)); menu_additem(iGagInfoMenu, tmpName, "t", 0, iGagInfoMenuCallback); formatex(tmpName, charsmax(tmpName), "%L %s", LANG_PLAYER, "CMSGAG_ITEM_PLAYER_INFO_REASON", plBlockInfo[id][GBlockReason]); menu_additem(iGagInfoMenu, tmpName, "r", 0, iGagInfoMenuCallback); formatex(tmpName, charsmax(tmpName), "%L %s", LANG_PLAYER, "CMSGAG_ITEM_PLAYER_INFO_TYPE", g_szBlockType[tmpTypeNum]); menu_additem(iGagInfoMenu, tmpName, "b", 0, iGagInfoMenuCallback); if(existKey) { static iTime; iTime = plBlockInfo[id][GExpired] > 0 ? (plBlockInfo[id][GExpired] - get_systime())/60 : plBlockInfo[id][GExpired]; formatex(tmpName, charsmax(tmpName), "%L %s", LANG_PLAYER, "CMSGAG_ITEM_PLAYER_INFO_EXPIRED", FormatBlockTime(iTime, 2, timeunit_minutes)); menu_addtext(iGagInfoMenu, tmpName, 0); } if(strlen(plBlockInfo[id][GAdminNick])) { formatex(tmpName, charsmax(tmpName), "%L %s", LANG_PLAYER, "CMSGAG_ITEM_PLAYER_INFO_ADMIN_1", plBlockInfo[id][GAdminNick]); menu_addtext(iGagInfoMenu, tmpName, 0); } if(strlen(plBlockInfo[id][GModifiedBy])) { formatex(tmpName, charsmax(tmpName), "%L %s", LANG_PLAYER, "CMSGAG_ITEM_PLAYER_INFO_ADMIN_2", plBlockInfo[id][GModifiedBy]); menu_addtext(iGagInfoMenu, tmpName, 0); } menu_addblank2(iGagInfoMenu); menu_additem(iGagInfoMenu, fmt("%L", LANG_PLAYER, existKey ? "CMSGAG_ITEM_PLAYER_INFO_SAVE" : "CMSGAG_ITEM_PLAYER_INFO_SET"), "a", 0, iGagInfoMenuCallback); if(existKey) menu_additem(iGagInfoMenu, fmt("%L", LANG_PLAYER, "CMSGAG_ITEM_PLAYER_INFO_REMOVE"), "d", 0, iGagInfoMenuCallback); menu_setprop(iGagInfoMenu, MPROP_EXITNAME, fmt("%L", LANG_PLAYER, "EXIT")); menu_setprop(iGagInfoMenu, MPROP_EXIT, MEXIT_ALL); menu_display(id, iGagInfoMenu, 0); return PLUGIN_HANDLED; } public GagInfoMenuCallback(id, menu, item) { return (plBlockInfo[id][GModifiedBlocked]/* || cmsgag_is_user_blocked(id) != BLOCK_STATUS_NONE*/) ? ITEM_DISABLED : ITEM_ENABLED; } public GagInfoMenuHandler(id, menu, item) { if(item == MENU_EXIT) { arrayset(plBlockInfo[id], 0, BlockInfo); } else { if(!plBlockInfo[id][GCreated]) plBlockInfo[id][GCreated] = get_systime(); new szData[MENU_DATA_LENGTH]; menu_item_getinfo(menu, item, g_iMenuAccessNull, szData, charsmax(szData)); switch(szData[0]) { case MENU_TIME: menu_display(id, g_iTimeMenu, 0); //time case MENU_REASON: menu_display(id, g_iReasonMenuId, 0); //reason case MENU_TYPE: menu_display(id, g_iTypeMenu, 0); //type case MENU_PLAYERS: AdminPlayersMenu(id); //szPlayersIds menu case MENU_ITEM_BLOCK_ADD: BlockQueryFunc(id, TrieKeyExists(g_trhBlockedUsers, plBlockInfo[id][GAuthId]) ? BLOCK_FUNC_CHANGE : BLOCK_FUNC_ADD); //add/ save block case MENU_ITEM_BLOCK_REMOVE: BlockQueryFunc(id, BLOCK_FUNC_REMOVE); //remove block } } menu_destroy(menu); return PLUGIN_HANDLED; } /*======== Меню игроков (игрок) =========*/ public MuteMenu(id) { static g_iMuteMenuCB; if(!g_iMuteMenuCB) g_iMuteMenuCB = menu_makecallback("MuteMenuCallback"); new iMuteMenu = menu_create(fmt("%L", LANG_PLAYER, "CMSGAG_MENU_MUTE_HEADER"), "MuteMenuHandler", 1); new szPlayersIds[MAX_PLAYERS], iPlayersCount; get_players_ex(szPlayersIds, iPlayersCount, (GetPlayers_ExcludeBots | GetPlayers_ExcludeHLTV)); for(new i; i < iPlayersCount; i++) { if(cv_iMuteTypeChoose) menu_additem_static(iMuteMenu, "", fmt("%d", szPlayersIds), i, iPlayersCount-1, true, 0, g_iMuteMenuCB); else menu_additem(iMuteMenu, "", fmt("%d", szPlayersIds), 0, g_iMuteMenuCB); } menu_setprop(iMuteMenu, MPROP_BACKNAME, fmt("%L", LANG_PLAYER, "BACK")); menu_setprop(iMuteMenu, MPROP_NEXTNAME, fmt("%L", LANG_PLAYER, "MORE")); menu_setprop(iMuteMenu, MPROP_EXITNAME, fmt("%L", LANG_PLAYER, "EXIT")); menu_display(id, iMuteMenu, 0); return PLUGIN_HANDLED; } stock menu_additem_static(iMenu, itemName[], itemInfo[], index, lastItemPos, bool:shift = true, paccess = 0, iMenuCallback = -1) { new staticItem = index % STATIC_ITEM_POSITION; menu_additem(iMenu, itemName, itemInfo, paccess, iMenuCallback); if(index == lastItemPos) { if(shift) { new addBlank = STATIC_ITEM_POSITION - staticItem - 1; for(new i; i < addBlank; i++) menu_addblank2(iMenu); } staticItem = STATIC_ITEM_POSITION - 1; } if(staticItem == STATIC_ITEM_POSITION - 1) { if(shift) menu_addblank(iMenu, 0); menu_additem(iMenu, "", fmt("%d", STATIC_ITEM_HANDLER), paccess, iMenuCallback); } } public MuteMenuCallback(id, menu, item) { new szPlayerId[MENU_DATA_LENGTH], iTargetClient, szFmtName[MAX_NAME_LENGTH*2]; menu_item_getinfo(menu, item, g_iMenuAccessNull, szPlayerId, charsmax(szPlayerId)); static iItemStatus; iItemStatus = ITEM_IGNORE; iTargetClient = str_to_num(szPlayerId); if(iTargetClient != STATIC_ITEM_HANDLER && is_user_connected(iTargetClient)) { formatex(szFmtName, charsmax(szFmtName), "\w%n", iTargetClient); if(iTargetClient == id) iItemStatus = ITEM_DISABLED; else if(GetBit(g_bitBlockedFully, iTargetClient)) { format(szFmtName, charsmax(szFmtName), "%s %L", szFmtName, LANG_PLAYER, "CMSGAG_ITEM_BLOCKED_BY_ADMIN"); iItemStatus = ITEM_DISABLED; } else if(IsPlayerMuted(id, iTargetClient)) format(szFmtName, charsmax(szFmtName), "%s %L", szFmtName, LANG_PLAYER, "CMSGAG_ITEM_PLAYER_MUTED"); } else { formatex(szFmtName, charsmax(szFmtName), "%L %L", LANG_PLAYER, "CMSGAG_ITEM_PLAYER_INFO_TYPE", LANG_PLAYER, fmt("CMSGAG_BLOCK_TYPE_%d", g_szPlayerMuteType[id])); } menu_item_setname(menu, item, szFmtName); return iItemStatus; } public MuteMenuHandler(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new szPlayerId[MENU_DATA_LENGTH]; menu_item_getinfo(menu, item, g_iMenuAccessNull, szPlayerId, charsmax(szPlayerId)); new iTargetClient = str_to_num(szPlayerId); if(iTargetClient != STATIC_ITEM_HANDLER) { if(!is_user_connected(iTargetClient)) { client_print_color(id, iTargetClient, "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_NOPLAYER"); menu_destroy(menu); return PLUGIN_HANDLED; } if(!IsPlayerMuted(id, iTargetClient)) { if(GetBit(g_bitBlockedFully, iTargetClient)) { client_print_color(id, iTargetClient, "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_ALREADY_BLOCKED"); menu_destroy(menu); return PLUGIN_HANDLED; } FnMutePlayer(id, iTargetClient, true); client_print_color(id, iTargetClient, "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_SET_MUTE", iTargetClient); } else { FnMutePlayer(id, iTargetClient, false); client_print_color(id, iTargetClient, "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_RESET_MUTE", iTargetClient); } } else { if(++g_szPlayerMuteType[id] > BLOCK_STATUS_VOICE) g_szPlayerMuteType[id] = BLOCK_STATUS_ALL; } new imenu, newmenu, menupage; player_menu_info(id, imenu, newmenu, menupage); menu_display(id, menu, menupage); return PLUGIN_HANDLED; } FnMutePlayer(id, iTargetClient, setMute) { if(setMute) SetBit(g_bitPlayerMuted[id], iTargetClient); else ResetBit(g_bitPlayerMuted[id], iTargetClient); } public client_authorized(id, const authid[]) { FnClientConnected(id, authid); } FnClientConnected(id, const authid[]) { if(is_user_bot(id) || is_user_hltv(id)) return; g_bitPlayerMuted[id] = 0; g_szPlayerMuteType[id] = 0; g_isAlivePlayer[id] = false; g_iImmunLevel[id] = FnImmunityLevel(get_user_flags(id)); FnSpamTimerReset(id); ResetBit(g_bitUseTeamVoice, id); FnCheckBlockAvailability(id, authid); } public OnAPIAdminConnected(id, const szName[], adminID, Flags) { g_iImmunLevel[id] = FnImmunityLevel(Flags); } public client_disconnected(id) { FnResetBlock(id); for(new i = 1; i < MaxClients; i++) FnMutePlayer(i, id, false); } /*======== Получение данных из БД =========*/ public FnCheckBlockAvailability(id, const szAuthid[]) { if(TrieGetArray(g_trhBlockedUsers, szAuthid, plBlockInfo[id], charsmax(plBlockInfo[]))) { FnChangeBlock(id, plBlockInfo[id][GBlockType]); return; } if(!g_bitApiAllow || !g_hSqlHandle) return; formatex(szQuery, charsmax(szQuery), "SELECT * FROM `%s` WHERE `server_id` = '%d' AND `authid` = '%s'\ AND ((`expired` > UNIX_TIMESTAMP(NOW()) OR `expired` = '0' ) AND `length` != '-1' AND `expired` != '-1') LIMIT 1;", sqlTable, g_iServerId, szAuthid); static Data[2]; Data[0] = id; SQL_ThreadQuery(g_hSqlHandle, "FnCheckBlockAvailability_post", szQuery, Data, sizeof(Data)); } public FnCheckBlockAvailability_post(failstate, Handle:query, const error[], errornum, const postData[], DataSize) { if(SQL_Error(error, errornum, failstate)) return; if(!SQL_NumResults(query)) return; static id; id = postData[0]; plBlockInfo[id][GBid] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "bid")); plBlockInfo[id][GBlockType] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "type")); plBlockInfo[id][GExpired] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "expired")); //plBlockInfo[id][GCreated] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "created")); plBlockInfo[id][GBlockTime] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "length")); plBlockInfo[id][GAdminId] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "admin_id")); SQL_ReadResult(query, SQL_FieldNameToNum(query, "authid"), plBlockInfo[id][GAuthId], charsmax(plBlockInfo[][GAuthId])); SQL_ReadResult(query, SQL_FieldNameToNum(query, "name"), plBlockInfo[id][GName], charsmax(plBlockInfo[][GName])); SQL_ReadResult(query, SQL_FieldNameToNum(query, "reason"), plBlockInfo[id][GBlockReason], charsmax(plBlockInfo[][GBlockReason])); SQL_ReadResult(query, SQL_FieldNameToNum(query, "admin_nick"), plBlockInfo[id][GAdminNick], charsmax(plBlockInfo[][GAdminNick])); SQL_ReadResult(query, SQL_FieldNameToNum(query, "modified_by"), plBlockInfo[id][GModifiedBy], charsmax(plBlockInfo[][GModifiedBy])); mysql_escape_string(plBlockInfo[id][GName], charsmax(plBlockInfo[][GName])*2); mysql_escape_string(plBlockInfo[id][GBlockReason], charsmax(plBlockInfo[][GBlockReason])); mysql_escape_string(plBlockInfo[id][GAdminNick], charsmax(plBlockInfo[][GAdminNick])*2); mysql_escape_string(plBlockInfo[id][GModifiedBy], charsmax(plBlockInfo[][GModifiedBy])*2); if(TrieSetArray(g_trhBlockedUsers, plBlockInfo[id][GAuthId], plBlockInfo[id], sizeof(plBlockInfo[]))) FnChangeBlock(id, plBlockInfo[id][GBlockType]); } /*======== Запрос на сохранение блока =========*/ /* id- client index iFuncType - тип операции блокировки(1- создание, 2- удаление) iBlockType - тип блока (чат / голос) szBlockReason - причина iTime - время iTargetClient - target index */ BlockQueryFunc(id, iFuncType, iBlockType = BLOCK_STATUS_NONE, szBlockReason[] = "", iTime = 0, bool:printChat = true) { new iTargetClient = plBlockInfo[id][GTargetID]; if(!iTargetClient) iTargetClient = id; new iSystime = get_systime(), iTimeleft = get_timeleft() / 60; if(g_iAddLastId == iTargetClient && iSystime < g_iAddTime + 20) { client_print_color(id, 0, "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_EDIT_ERROR"); return PLUGIN_CONTINUE; } get_user_authid(iTargetClient, plBlockInfo[id][GAuthId], charsmax(plBlockInfo[][GAuthId])); if(!TrieKeyExists(g_trhBlockedUsers, plBlockInfo[id][GAuthId])) { if(iTargetClient == id) plBlockInfo[id][GAdminNick] = "Server"; else get_user_name(id, plBlockInfo[id][GAdminNick], charsmax(plBlockInfo[][GAdminNick])); } else { get_user_name(id, plBlockInfo[id][GModifiedBy], charsmax(plBlockInfo[][GModifiedBy])); } new iBlockTime; if(iFuncType == BLOCK_FUNC_REMOVE) { plBlockInfo[id][GExpired] = TIME_MAP_END_EXPIRING; } else { if(!strlen(plBlockInfo[id][GName])) get_user_name(iTargetClient, plBlockInfo[id][GName], charsmax(plBlockInfo[][GName])); if(!strlen(plBlockInfo[id][GBlockReason])) copy(plBlockInfo[id][GBlockReason], charsmax(plBlockInfo[][GBlockReason]), szBlockReason); if(iBlockType != BLOCK_STATUS_NONE) plBlockInfo[id][GBlockType] = iBlockType; if(plBlockInfo[id][GBlockTime] == TIME_NOT_EXPIRING) plBlockInfo[id][GBlockTime] = iTime; iBlockTime = plBlockInfo[id][GBlockTime]; plBlockInfo[id][GCreated] = iSystime; if(iBlockTime <= TIME_NOT_EXPIRING) plBlockInfo[id][GExpired] = iBlockTime; else plBlockInfo[id][GExpired] = plBlockInfo[id][GCreated] + iBlockTime * 60; } if(g_bitApiAllow & (UseGameCmsAdmins | UseGameCms)) //Запись в бд, если она доступна { mysql_insert_string(plBlockInfo[id][GName], charsmax(plBlockInfo[][GName])*2); mysql_insert_string(plBlockInfo[id][GBlockReason], charsmax(plBlockInfo[][GBlockReason])); mysql_insert_string(plBlockInfo[id][GAdminNick], charsmax(plBlockInfo[][GAdminNick])*2); mysql_insert_string(plBlockInfo[id][GModifiedBy], charsmax(plBlockInfo[][GModifiedBy])*2); if(plBlockInfo[id][GBid]) { if(iFuncType == BLOCK_FUNC_CHANGE) formatex(szQuery, charsmax(szQuery), "UPDATE `%s` SET expired='%d', length='%d', reason='%s', modified_by='%s',type='%d' WHERE `bid` = '%d';", sqlTable, plBlockInfo[id][GExpired], plBlockInfo[id][GBlockTime], plBlockInfo[id][GBlockReason], plBlockInfo[id][GModifiedBy], plBlockInfo[id][GBlockType], plBlockInfo[id][GBid]); else if(iFuncType == BLOCK_FUNC_REMOVE) formatex(szQuery, charsmax(szQuery), "UPDATE `%s` SET expired='%d', modified_by='%s' WHERE `bid` = '%d';", sqlTable, plBlockInfo[id][GExpired], plBlockInfo[id][GModifiedBy], plBlockInfo[id][GBid]); } else { if(iFuncType != BLOCK_FUNC_ADD || iBlockTime == TIME_MAP_END_EXPIRING) return ASD_BlockFunc(id, iFuncType, iTargetClient, printChat); if(!iTimeleft || (iTimeleft && iTimeleft < iBlockTime) || iBlockTime == TIME_NOT_EXPIRING) //Запись в бд, если время блока больше времени карты или Навсегда { formatex(szQuery, charsmax(szQuery), "INSERT INTO `%s` (bid, authId, name, created, expired, length, reason, admin_id, admin_nick, server_id, modified_by, type) \ values ('%d', '%s', '%s', '%d', '%d', '%d', '%s', '%d', '%s', '%d', '%s', '%d');", sqlTable, plBlockInfo[id][GBid], plBlockInfo[id][GAuthId], plBlockInfo[id][GName], plBlockInfo[id][GCreated], plBlockInfo[id][GExpired], plBlockInfo[id][GBlockTime], plBlockInfo[id][GBlockReason], plBlockInfo[id][GAdminId], plBlockInfo[id][GAdminNick], g_iServerId, plBlockInfo[id][GModifiedBy], plBlockInfo[id][GBlockType]); } else return ASD_BlockFunc(id, iFuncType, iTargetClient, printChat); } static Data[4]; Data[0] = id; Data[1] = iFuncType; Data[2] = iTargetClient; SQL_ThreadQuery(g_hSqlHandle, "BlockQueryFunc_post", szQuery, Data, sizeof(Data)); return PLUGIN_HANDLED; } if(plBlockInfo[id][GExpired]- iSystime < iTimeleft) plBlockInfo[id][GExpired] = TIME_MAP_END_EXPIRING; return ASD_BlockFunc(id, iFuncType, iTargetClient, printChat); } public BlockQueryFunc_post(failstate, Handle:query, const error[], errornum, const postData[], DataSize) { new id, iTargetClient, iFuncType; id = postData[0]; iFuncType = postData[1]; iTargetClient = postData[2]; if(SQL_Error(error, errornum, failstate)) plBlockInfo[id][GBlockTime] = TIME_MAP_END_EXPIRING; else if(iFuncType == BLOCK_FUNC_ADD) plBlockInfo[id][GBid] = SQL_GetInsertId(query); return ASD_BlockFunc(id, iFuncType, iTargetClient); } public CBasePlayerSpawn(id) { #if defined _reapi_included g_iPlayerTeam[id] = get_member(id, m_iTeam); #else g_iPlayerTeam[id] = CsTeams:get_user_team(id); #endif if(is_user_alive(id)) g_isAlivePlayer[id] = true; } public CBasePlayerKilled(id) { if(cv_iAllTalk == 0 || cv_iAllTalk == 4) { if(g_bRoundEnd) return; if(cv_flTimeForInfo > 0.0) set_task(cv_flTimeForInfo, "FnBlockChatForInfo", id); else FnBlockChatForInfo(id); } else g_isAlivePlayer[id] = false; } public FnBlockChatForInfo(id) { g_isAlivePlayer[id] = false; set_hudmessage(255, 150, 0, -1.0, 0.63, 0, _, 5.0); show_hudmessage(id, "%L", LANG_PLAYER, "CMSGAG_HUD_INFO_TIME"); } public CmdTeamVoiceOn(id) { SetBit(g_bitUseTeamVoice, id); client_cmd(id, "+voicerecord"); return PLUGIN_HANDLED; } public CmdTeamVoiceOff(id) { ResetBit(g_bitUseTeamVoice, id); client_cmd(id, "-voicerecord"); return PLUGIN_HANDLED; } public VTC_OnClientStartSpeak(iSender) { if(VTC_IsClientMuted(iSender)) { if(g_flPlayerSpamTimer[iSender] > cv_flBlockSpamTimer) { //log_to_file("gag.log", "VTC_OnClientStartSpeak muted %d | %n", iSender, iSender) client_print_color(iSender, 0, "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_SOON_BE_UNBLOCKED", FormatBlockTime(floatround(g_flPlayerSpamTimer[iSender] - get_gametime()), 1, timeunit_seconds)); return PLUGIN_HANDLED; } return FnCheckBlockStatus(iSender, BLOCK_STATUS_VOICE); } if(g_iEntSpamChecker[iSender]) { g_flPlayerSpamTimer[iSender] = cv_flBlockSpamTimer; #if defined _reapi_included #define MAX_ID_LEN 2 set_entvar(g_iEntSpamChecker[iSender], var_nextthink, get_gametime() + 1.0); SetThink(g_iEntSpamChecker[iSender], "SpamEntThinkCallback", fmt("%d", iSender), MAX_ID_LEN); #else entity_set_float(g_iEntSpamChecker[iSender], EV_FL_nextthink, get_gametime() + 1.0); #endif //log_to_file("gag.log", "VTC_OnClientStartSpeak start timer %d | %n", iSender, iSender) } return PLUGIN_CONTINUE; } FnSpamTimerReset(iSender) { g_flPlayerSpamTimer[iSender] = 0.0; #if defined _reapi_included set_entvar(g_iEntSpamChecker[iSender], var_nextthink, 0.0); SetThink(g_iEntSpamChecker[iSender], ""); #else entity_set_float(g_iEntSpamChecker[iSender], EV_FL_nextthink, 0.0); #endif } #if defined _reapi_included public SpamEntThinkCallback(iEntity, data[], len) #else public SpamEntThinkCallback(iEntity) #endif { static iClient, Float:flTime; #if defined _reapi_included iClient = str_to_num(data); #else iClient = entity_get_edict(iEntity, EV_ENT_owner); #endif if(iClient) { if(g_flPlayerSpamTimer[iClient] <= 0.0) { flTime = cv_flBlockSpamTimer * 30.0; g_flPlayerSpamTimer[iClient] = get_gametime() + flTime; VTC_MuteClient(iClient); client_print(iClient, print_center, "%L", LANG_PLAYER, "CMSGAG_CHAT_BLOCKED", FormatBlockTime(floatround(flTime), 1, timeunit_seconds)); //log_to_file("gag.log", "SpamEntThinkCallback blocked %d (%.0f) | %n", iClient, g_flPlayerSpamTimer[iClient], iClient) } else if(g_flPlayerSpamTimer[iClient] <= cv_flBlockSpamTimer) { flTime = 1.0; if(g_flPlayerSpamTimer[iClient] < 6.0) client_print(iClient, print_center, "%L", LANG_PLAYER, "CMSGAG_CHAT_WILL_BE_BLOCKED", g_flPlayerSpamTimer[iClient]); g_flPlayerSpamTimer[iClient]--; //log_to_file("gag.log", "SpamEntThinkCallback will be blocked %d (%.0f) | %n", iClient, g_flPlayerSpamTimer[iClient], iClient) } else { flTime = 1.0; g_flPlayerSpamTimer[iClient] = cv_flBlockSpamTimer; VTC_UnmuteClient(iClient); client_print(iClient, print_center, "%L", LANG_PLAYER, "CMSGAG_CHAT_UNBLOCKED"); //log_to_file("gag.log", "SpamEntThinkCallback unblocked %d (%.0f) | %n", iClient, g_flPlayerSpamTimer[iClient], iClient) } } //else //log_to_file("gag.log", "Not a client") #if defined _reapi_included set_entvar(iEntity, var_nextthink, get_gametime() + flTime); #else entity_set_float(iEntity, EV_FL_nextthink, get_gametime() + flTime); #endif } public VTC_OnClientStopSpeak(iSender) { if(!g_iEntSpamChecker[iSender]) return PLUGIN_CONTINUE; if(g_flPlayerSpamTimer[iSender] <= cv_flBlockSpamTimer) FnSpamTimerReset(iSender); return PLUGIN_CONTINUE; } public CanPlayerHearPlayer(Receiver, Sender, bool:Listen) { if(Receiver == Sender) return FMRES_IGNORED; //Мертвого админа слышат все, если он говорит в командный чат или включен параметр cms_gag_deadadmtalk if(!g_isAlivePlayer[Sender] && g_iImmunLevel[Sender] > 1 && (GetBit(g_bitUseTeamVoice, Sender) || cv_iDeadAdmTalk)) return FnCanHearSender(Receiver, Sender, true); if(IsPlayerMuted(Receiver, Sender) && g_szPlayerMuteType[Receiver] != BLOCK_STATUS_CHAT) return FnCanHearSender(Receiver, Sender, false); //если регейм, то учесть время на инфу #if defined _reapi_included if(GetBit(g_bitUseTeamVoice, Sender)) { if(IsEnemy(Receiver, Sender)) return FnCanHearSender(Receiver, Sender, false); } if(cv_flTimeForInfo > 0.0) { if(g_isAlivePlayer[Sender] && !IsEnemy(Receiver, Sender)) return FnCanHearSender(Receiver, Sender, true); } return FMRES_IGNORED; #else if(cv_iAllTalk == 1) //все со всеми { if(GetBit(g_bitUseTeamVoice, Sender)) { if(/*g_iPlayerTeam[Receiver] != g_iPlayerTeam[Sender]*/IsEnemy(Receiver, Sender)) return FnCanHearSender(Receiver, Sender, false); } //return FMRES_IGNORED; return FnCanHearSender(Receiver, Sender, true); } if(g_iPlayerTeam[Receiver] == CS_TEAM_SPECTATOR) { if(cv_iAllTalk == 0 || cv_iAllTalk == 2) { if(g_iPlayerTeam[Sender] != CS_TEAM_SPECTATOR) return FnCanHearSender(Receiver, Sender, false); } return FMRES_IGNORED; } if(g_isAlivePlayer[Sender]) { if(cv_iAllTalk == 4) { if(GetBit(g_bitUseTeamVoice, Sender)) { if(IsEnemy(Receiver, Sender)) return FnCanHearSender(Receiver, Sender, false); } return FMRES_IGNORED; } if(cv_flTimeForInfo > 0.0) { if((cv_iAllTalk == 0 || cv_iAllTalk > 3) && !IsEnemy(Receiver, Sender)) return FnCanHearSender(Receiver, Sender, true); } if(!IsEnemy(Receiver, Sender)) return FMRES_IGNORED; } else //мертвый говорун { if(!g_isAlivePlayer[Receiver]) return FMRES_IGNORED; if(/*g_iPlayerTeam[Receiver] != g_iPlayerTeam[Sender]*/IsEnemy(Receiver, Sender)) return FnCanHearSender(Receiver, Sender, false); if(cv_iAllTalk != 0 && cv_iAllTalk < 3) return FMRES_IGNORED; } return FnCanHearSender(Receiver, Sender, false); #endif } FnCanHearSender(Receiver, Sender, bool:status) { #if defined _reapi_included #pragma unused Receiver, Sender // SetHookChainReturn(ATYPE_BOOL, status); SetHookChainReturn(ATYPE_BOOL, status); #else engfunc(EngFunc_SetClientListening, Receiver, Sender, status); forward_return(FMV_CELL, status); #endif return FMRES_SUPERCEDE; } public HookSayChat(id) { new szMsg[MAX_CHAT_MSG_LENGTH]; read_args(szMsg, charsmax(szMsg)); remove_quotes(szMsg); if(TrieKeyExists(g_trhWhiteListCmdArray, szMsg)) return PLUGIN_CONTINUE; if(BLOCK_STATUS_NONE < cmsgag_is_user_blocked(id) < BLOCK_STATUS_VOICE) return FnCheckBlockStatus(id, BLOCK_STATUS_CHAT); return PLUGIN_CONTINUE; } stock FnCheckBlockStatus(id, iBlockType) { new szAuthId[MAX_AUTHID_LENGTH]; get_user_authid(id, szAuthId, charsmax(szAuthId)); if(TrieGetArray(g_trhBlockedUsers, szAuthId, plBlockInfo[id], charsmax(plBlockInfo[]))) { if(plBlockInfo[id][GExpired] > get_systime() || plBlockInfo[id][GExpired] <= TIME_NOT_EXPIRING) { client_print_color(id, 0, "%L %L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, iBlockType == BLOCK_STATUS_CHAT ? "CMSGAG_CHAT_BLOCK_VOICE" : "CMSGAG_CHAT_BLOCK_CHAT", FormatBlockTime(plBlockInfo[id][GBlockTime], 1, timeunit_minutes), LANG_PLAYER, "CMSGAG_CHAT_BLOCK_REASON", plBlockInfo[id][GBlockReason]); client_cmd(id, "play %s", g_szSoundFilePath); return PLUGIN_HANDLED; } else return FnRemoveBlockStatus(id); } return PLUGIN_CONTINUE; } public MessageSayText(MsgID, MsgDEST, MsgRecipient) { if(MsgDEST != MSG_ONE) return PLUGIN_CONTINUE; if(IsPlayerMuted(MsgRecipient, get_msg_arg_int(1)) && g_szPlayerMuteType[MsgRecipient] != BLOCK_STATUS_VOICE) //if(cmsgag_is_user_muted_by(MsgRecipient, get_msg_arg_int(1))) return PLUGIN_HANDLED; return PLUGIN_CONTINUE; } /*======== Создание/Сохранение/Удаление блока =========*/ stock ASD_BlockFunc(id, iFuncType, iTargetClient, printChat = true) { if(iFuncType == BLOCK_FUNC_REMOVE) return FnRemoveBlockStatus(id, printChat); if(TrieSetArray(g_trhBlockedUsers, plBlockInfo[id][GAuthId], plBlockInfo[id], sizeof(plBlockInfo[]))) { new iBlockType = plBlockInfo[id][GBlockType]; new szTime[MAX_STRING_LEN]; copy(szTime, charsmax(szTime), FormatBlockTime(plBlockInfo[id][GBlockTime], 1, timeunit_minutes)); //new szAdmName[MAX_NAME_LENGTH]; new szMessage[MAX_CHAT_MSG_LENGTH]; if(iFuncType == BLOCK_FUNC_ADD) { if(get_pcvar_num(cpAmxShowActivity) == 2) { //get_user_name(id, szAdmName, charsmax(szAdmName)); formatex(szMessage, charsmax(szMessage), "%L %L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_BLOCK_ADMIN_ACT",/*szAdmName*/plBlockInfo[id][GAdminNick], g_szBlockType[iBlockType], plBlockInfo[id][GName], szTime, LANG_PLAYER, "CMSGAG_CHAT_BLOCK_REASON", plBlockInfo[id][GBlockReason]); if(printChat) client_print_color(0, 0, szMessage); FnClearText(szMessage); log_amx(szMessage); } else { formatex(szMessage, charsmax(szMessage), "%L %L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_BLOCK_ADMIN", plBlockInfo[id][GName], g_szBlockType[iBlockType], szTime, LANG_PLAYER, "CMSGAG_CHAT_BLOCK_REASON", plBlockInfo[id][GBlockReason]); if(printChat) client_print_color(0, 0, szMessage); FnClearText(szMessage); log_amx(szMessage); } } else { if(get_pcvar_num(cpAmxShowActivity) == 2) { //get_user_name(id, szAdmName, charsmax(szAdmName)); formatex(szMessage, charsmax(szMessage), "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_BLOCK_EDIT_ADMIN", /*szAdmName*/plBlockInfo[id][GAdminNick], plBlockInfo[id][GName], g_szBlockType[iBlockType], szTime); if(printChat) client_print_color(0, 0, szMessage); FnClearText(szMessage); log_amx(szMessage); } else { formatex(szMessage, charsmax(szMessage), "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_BLOCK_EDIT", plBlockInfo[id][GName], g_szBlockType[iBlockType], szTime); if(printChat) client_print_color(0, 0, szMessage); FnClearText(szMessage); log_amx(szMessage); } } if(is_user_connected(iTargetClient)) FnChangeBlock(iTargetClient, iBlockType); g_iAddTime = plBlockInfo[id][GCreated]; g_iAddLastId = iTargetClient; } else log_amx("ASD_BlockFunc: Error"); arrayset(plBlockInfo[id], 0, BlockInfo); return PLUGIN_HANDLED; } /*======== Сброс блока =========*/ stock FnResetBlock(iTargetClient) { ResetBit(g_bitBlockedFully, iTargetClient); ResetBit(g_bitBlockedChat, iTargetClient); ResetBit(g_bitBlockedVoice, iTargetClient); VTC_UnmuteClient(iTargetClient); } /*======== Изменение блока =========*/ stock FnChangeBlock(iTargetClient, Type) { FnResetBlock(iTargetClient); switch(Type) { case 0: { SetBit(g_bitBlockedFully, iTargetClient); VTC_MuteClient(iTargetClient); } case 1: SetBit(g_bitBlockedChat, iTargetClient); case 2: { SetBit(g_bitBlockedVoice, iTargetClient); VTC_MuteClient(iTargetClient); } } } /*======== Удаление блока =========*/ stock FnRemoveBlockStatus(id, printChat = true) { new iClient = find_player("c", plBlockInfo[id][GAuthId]); if(TrieDeleteKey(g_trhBlockedUsers, plBlockInfo[id][GAuthId])) { new type[MAX_NAME_LENGTH]; copy(type, charsmax(type), g_szBlockType[plBlockInfo[id][GBlockType]]); new szMessage[MAX_CHAT_MSG_LENGTH]; if(get_pcvar_num(cpAmxShowActivity) == 2 && (id != iClient)) { new szAdmName[MAX_NAME_LENGTH]; get_user_name(id, szAdmName, charsmax(szAdmName)); formatex(szMessage, charsmax(szMessage), "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_BLOCK_REMOVE_ADMIN", szAdmName, type, plBlockInfo[id][GName]); if(printChat) client_print_color(0, 0, szMessage); FnClearText(szMessage); log_amx(szMessage); } else { formatex(szMessage, charsmax(szMessage), "%L %L", LANG_PLAYER, "CMSGAG_CHAT_PREFIX", LANG_PLAYER, "CMSGAG_CHAT_BLOCK_REMOVE", plBlockInfo[id][GName], type); if(printChat) client_print_color(0, 0, szMessage); FnClearText(szMessage); log_amx(szMessage); } arrayset(plBlockInfo[id], 0, BlockInfo); FnResetBlock(iClient); VTC_UnmuteClient(iClient); return PLUGIN_HANDLED; } else log_amx("FnRemoveBlockStatus: Error"); return PLUGIN_CONTINUE; } /*======== Стоки / нативы =========*/ stock bool:FnAboveImmunity(requester, target, bool:byFlags = false) { if(byFlags) return (FnImmunityLevel(requester) > FnImmunityLevel(target)); return (g_iImmunLevel[requester] == g_iImmunLevelsNum || g_iImmunLevel[requester] > g_iImmunLevel[target]); } stock FnImmunityLevel(flags) { static i; i = g_iImmunLevelsNum; while(i > 0) { i--; if(flags & g_bitAccessLvl) break; } return i+1; } stock FormatBlockTime(iTime, type, unitType) { new szTime[MAX_STRING_LEN]; switch(iTime) { case TIME_MAP_END_EXPIRING: formatex(szTime, charsmax(szTime), "%L", LANG_PLAYER, type == 1 ? "CMSGAG_TIME_LENGTH_1" : "CMSGAG_TIME_LENGTH_2"); case TIME_NOT_EXPIRING: formatex(szTime, charsmax(szTime), "%L", LANG_PLAYER, type == 1 ? "CMSGAG_TIME_NON_EXPIRED_1" : "CMSGAG_TIME_NON_EXPIRED_2"); default: get_time_length(0, iTime, unitType, szTime, charsmax(szTime)); } return szTime; } FnClearText(langText[]) { replace_all(langText, MAX_CHAT_MSG_LENGTH, "^4", ""); replace_all(langText, MAX_CHAT_MSG_LENGTH, "^1", ""); replace_all(langText, MAX_CHAT_MSG_LENGTH, "^3", ""); } public plugin_end() { if(g_arhBlockTime) ArrayDestroy(g_arhBlockTime); if(g_arhBlockReasons) ArrayDestroy(g_arhBlockReasons); } public plugin_natives() { set_native_filter("native_filter"); register_native("cmsgag_is_user_blocked", "native_cmsgag_is_user_blocked"); register_native("cmsgag_is_user_muted_by", "native_cmsgag_is_user_muted_by"); register_native("cmsgag_add_user_block", "native_cmsgag_add_user_block"); } public native_filter(const GName[], index, trap) return !trap ? PLUGIN_HANDLED : PLUGIN_CONTINUE; /* Проверка текущего блока от Админа @index - индекс игрока 0- voice + chat 1- chat 2- voice -1- not blocked */ public native_cmsgag_is_user_blocked() { new id = get_param(1); return GetBit(g_bitBlockedFully, id) ? BLOCK_STATUS_ALL : GetBit(g_bitBlockedChat, id) ? BLOCK_STATUS_CHAT : GetBit(g_bitBlockedVoice, id) ? BLOCK_STATUS_VOICE : BLOCK_STATUS_NONE; } /* Проверка текущего блока от игрока @iSender - индекс отправителя @receiver - индекс получателя */ public native_cmsgag_is_user_muted_by() { static iClient; iClient = get_param(1); if(IsPlayerMuted(iClient, get_param(2))) return g_szPlayerMuteType[iClient]; return BLOCK_STATUS_NONE; //return IsPlayerMuted(g_bitPlayerMuted[get_param(1)], get_param(2)); } /**======== Добавление блока ========= * * @id- индекс игрока * @iFuncType - тип операции блокировки(1- создание, 2- удаление) * @iBlockType - тип блока (чат / голос) * @szBlockReason[] - причина * @iTime - время * native_cmsgag_add_user_block(id, iFuncType, const iBlockType, const szBlockReason[], const iTime); */ public native_cmsgag_add_user_block() { new szReason[MAX_REASON_LENGTH], iTargetClient; iTargetClient = get_param(1); get_string(4, szReason, charsmax(szReason)); get_user_authid(iTargetClient, plBlockInfo[iTargetClient][GAuthId], charsmax(plBlockInfo[][GAuthId])); return BlockQueryFunc(iTargetClient, get_param(2), get_param(3), szReason, get_param(5), bool:get_param(6)); }
L 07/09/2022 - 15:49:44: [gamecms_api.amxx] Loading Trash_Your_Self_ a 1
L 07/09/2022 - 15:49:44: [gamecms_api.amxx] "1" services was 'Loaded' from database. Total on server: "1" services.
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] FnFindUserService not found skytheman STEAM_2:1:257656976
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Authentication Post... "<skytheman><STEAM_2:1:257656976>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] FnFindUserService not found Navi markeloff /A/ STEAM_2:0:1583680843
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Authentication Post... "<Navi markeloff /A></Navi><STEAM_2:0:1583680843>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] FnFindUserService Owner Founded Trash_Your_Self_ (abcdefghijklmnopqrstu)
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] FnFindUserService All services Trash_Your_Self_ Гл.Администратор
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Found service:"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор") (Expired "0000-00-00 00:00:00")
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Authentication"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор")
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Authentication Post... "<Trash_Your_Self_><STEAM_0:1:189542464>" bit 2097151 / 0 | flags abcdefghijklmnopqrstu
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] FnFindUserService Owner Founded Trash_Your_Self_ (abcdefghijklmnopqrstu)
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] FnFindUserService All services Trash_Your_Self_ Гл.Администратор
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] Found service:"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор") (Expired "0000-00-00 00:00:00")
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] Authentication"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор")
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] Authentication Post... "<Trash_Your_Self_><STEAM_0:1:189542464>" bit 2097151 / 0 | flags abcdefghijklmnopqrstu
L 07/09/2022 - 15:49:54: [gamecms_api.amxx] FnFindUserService not found жопа STEAM_2:1:372358574
L 07/09/2022 - 15:49:54: [gamecms_api.amxx] Authentication Post... "<жопа><STEAM_2:1:372358574>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:49:56: [gamecms_api.amxx] FnFindUserService not found Navi markeloff /A/ STEAM_2:0:1583680843
L 07/09/2022 - 15:49:56: [gamecms_api.amxx] Authentication Post... "<Navi markeloff /A></Navi><STEAM_2:0:1583680843>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:49:58: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_0:1:189542464' OR `users`.`steam_id` = '76561198339350657' OR `users`.`steam_api` = '76561198339350657'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_0:1:189542464' OR `users`.`steam_id` = '76561198339350657' OR `users`.`steam_api` = '76561198339350657');
L 07/09/2022 - 15:49:58: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:49:59: [gamecms_api.amxx] FnFindUserService not found жопа STEAM_2:1:372358574
L 07/09/2022 - 15:49:59: [gamecms_api.amxx] Authentication Post... "<жопа><STEAM_2:1:372358574>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:50:01: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_2:0:1583680843' OR `users`.`steam_id` = '76561199087871338' OR `users`.`steam_api` = '76561199087871338'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_2:0:1583680843' OR `users`.`steam_id` = '76561199087871338' OR `users`.`steam_api` = '76561199087871338');
L 07/09/2022 - 15:50:01: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:50:05: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_2:1:372358574' OR `users`.`steam_id` = '76561198704982877' OR `users`.`steam_api` = '76561198704982877'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_2:1:372358574' OR `users`.`steam_id` = '76561198704982877' OR `users`.`steam_api` = '76561198704982877');
L 07/09/2022 - 15:50:05: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:50:39: [mapsmenu_rbs.amxx] ADMIN "Trash_Your_Self_<918><STEAM_0:1:189542464><89.113.140.194>" сменил карту на de_dust2_2x2
L 07/09/2022 - 15:50:41: -------- Mapchange to de_dust2_2x2 --------
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 1, flags abcdefijlmntu
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 3, flags abcdefijmnprtu
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 4, flags abiqt
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 10, flags abipt
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 11, flags abiprt
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 12, flags abcdefijmnqtu
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] Reading GameCMS settings file... OK
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] Connection to the GameCMS database is established
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] SELECT `a`.`id`, `a`.`name` as `auth`,`pass`, COALESCE(REPLACE(`ad`.`rights_und`,'none',`s`.`rights`),`ad`.`rights_und`) AS `flags`, `a`.`type`, `ending_date` as `expired`,`ad`.`id` AS `admin_service_id`,`ad`.`service`,`service_time`,`a`.`active`,`a`.`pause`, `s`.`name` as `service_name`, `cause`, UNIX_TIMESTAMP(`ending_date`) as `expunix`, UNIX_TIMESTAMP(NOW()) as `nowunix` FROM `admins` a LEFT JOIN `admins__services` ad ON `ad`.`admin_id`=`a`.`id`LEFT JOIN `servers` sr ON `server`=`sr`.`id` LEFT JOIN `services` s ON `ad`.`service`=`s`.`id`WHERE `sr`.`id` = '1' AND (UNIX_TIMESTAMP(`ending_date`) > UNIX_TIMESTAMP(NOW()) OR `ending_date` = '0000-00-00 00:00:00'); UPDATE `users` SET `member_online` = '0' WHERE `member_online` = '1';
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Loading Trash_Your_Self_ a 1
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] "1" services was 'Loaded' from database. Total on server: "1" services.
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] FnFindUserService not found жопа STEAM_2:1:372358574
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Authentication Post... "<жопа><STEAM_2:1:372358574>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] FnFindUserService not found Navi markeloff /A/ STEAM_2:0:1583680843
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Authentication Post... "<Navi markeloff /A></Navi><STEAM_2:0:1583680843>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] FnFindUserService Owner Founded Trash_Your_Self_ (abcdefghijklmnopqrstu)
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] FnFindUserService All services Trash_Your_Self_ Гл.Администратор
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Found service:"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор") (Expired "0000-00-00 00:00:00")
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Authentication"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор")
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Authentication Post... "<Trash_Your_Self_><STEAM_0:1:189542464>" bit 2097151 / 0 | flags abcdefghijklmnopqrstu
L 07/09/2022 - 15:50:47: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_2:1:372358574' OR `users`.`steam_id` = '76561198704982877' OR `users`.`steam_api` = '76561198704982877'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_2:1:372358574' OR `users`.`steam_id` = '76561198704982877' OR `users`.`steam_api` = '76561198704982877');
L 07/09/2022 - 15:50:47: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:50:48: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_2:0:1583680843' OR `users`.`steam_id` = '76561199087871338' OR `users`.`steam_api` = '76561199087871338'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_2:0:1583680843' OR `users`.`steam_id` = '76561199087871338' OR `users`.`steam_api` = '76561199087871338');
L 07/09/2022 - 15:50:48: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:50:49: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_0:1:189542464' OR `users`.`steam_id` = '76561198339350657' OR `users`.`steam_api` = '76561198339350657'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_0:1:189542464' OR `users`.`steam_id` = '76561198339350657' OR `users`.`steam_api` = '76561198339350657');
L 07/09/2022 - 15:50:49: [gamecms_api.amxx] SQL_NumResult
L 07/09/2022 - 15:49:44: [gamecms_api.amxx] "1" services was 'Loaded' from database. Total on server: "1" services.
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] FnFindUserService not found skytheman STEAM_2:1:257656976
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Authentication Post... "<skytheman><STEAM_2:1:257656976>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] FnFindUserService not found Navi markeloff /A/ STEAM_2:0:1583680843
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Authentication Post... "<Navi markeloff /A></Navi><STEAM_2:0:1583680843>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] FnFindUserService Owner Founded Trash_Your_Self_ (abcdefghijklmnopqrstu)
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] FnFindUserService All services Trash_Your_Self_ Гл.Администратор
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Found service:"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор") (Expired "0000-00-00 00:00:00")
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Authentication"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор")
L 07/09/2022 - 15:49:45: [gamecms_api.amxx] Authentication Post... "<Trash_Your_Self_><STEAM_0:1:189542464>" bit 2097151 / 0 | flags abcdefghijklmnopqrstu
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] FnFindUserService Owner Founded Trash_Your_Self_ (abcdefghijklmnopqrstu)
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] FnFindUserService All services Trash_Your_Self_ Гл.Администратор
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] Found service:"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор") (Expired "0000-00-00 00:00:00")
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] Authentication"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор")
L 07/09/2022 - 15:49:52: [gamecms_api.amxx] Authentication Post... "<Trash_Your_Self_><STEAM_0:1:189542464>" bit 2097151 / 0 | flags abcdefghijklmnopqrstu
L 07/09/2022 - 15:49:54: [gamecms_api.amxx] FnFindUserService not found жопа STEAM_2:1:372358574
L 07/09/2022 - 15:49:54: [gamecms_api.amxx] Authentication Post... "<жопа><STEAM_2:1:372358574>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:49:56: [gamecms_api.amxx] FnFindUserService not found Navi markeloff /A/ STEAM_2:0:1583680843
L 07/09/2022 - 15:49:56: [gamecms_api.amxx] Authentication Post... "<Navi markeloff /A></Navi><STEAM_2:0:1583680843>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:49:58: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_0:1:189542464' OR `users`.`steam_id` = '76561198339350657' OR `users`.`steam_api` = '76561198339350657'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_0:1:189542464' OR `users`.`steam_id` = '76561198339350657' OR `users`.`steam_api` = '76561198339350657');
L 07/09/2022 - 15:49:58: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:49:59: [gamecms_api.amxx] FnFindUserService not found жопа STEAM_2:1:372358574
L 07/09/2022 - 15:49:59: [gamecms_api.amxx] Authentication Post... "<жопа><STEAM_2:1:372358574>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:50:01: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_2:0:1583680843' OR `users`.`steam_id` = '76561199087871338' OR `users`.`steam_api` = '76561199087871338'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_2:0:1583680843' OR `users`.`steam_id` = '76561199087871338' OR `users`.`steam_api` = '76561199087871338');
L 07/09/2022 - 15:50:01: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:50:05: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_2:1:372358574' OR `users`.`steam_id` = '76561198704982877' OR `users`.`steam_api` = '76561198704982877'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_2:1:372358574' OR `users`.`steam_id` = '76561198704982877' OR `users`.`steam_api` = '76561198704982877');
L 07/09/2022 - 15:50:05: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:50:39: [mapsmenu_rbs.amxx] ADMIN "Trash_Your_Self_<918><STEAM_0:1:189542464><89.113.140.194>" сменил карту на de_dust2_2x2
L 07/09/2022 - 15:50:41: -------- Mapchange to de_dust2_2x2 --------
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 1, flags abcdefijlmntu
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 3, flags abcdefijmnprtu
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 4, flags abiqt
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 10, flags abipt
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 11, flags abiprt
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] CmdAddUserGroup num 12, flags abcdefijmnqtu
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] Reading GameCMS settings file... OK
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] Connection to the GameCMS database is established
L 07/09/2022 - 15:50:42: [gamecms_api.amxx] SELECT `a`.`id`, `a`.`name` as `auth`,`pass`, COALESCE(REPLACE(`ad`.`rights_und`,'none',`s`.`rights`),`ad`.`rights_und`) AS `flags`, `a`.`type`, `ending_date` as `expired`,`ad`.`id` AS `admin_service_id`,`ad`.`service`,`service_time`,`a`.`active`,`a`.`pause`, `s`.`name` as `service_name`, `cause`, UNIX_TIMESTAMP(`ending_date`) as `expunix`, UNIX_TIMESTAMP(NOW()) as `nowunix` FROM `admins` a LEFT JOIN `admins__services` ad ON `ad`.`admin_id`=`a`.`id`LEFT JOIN `servers` sr ON `server`=`sr`.`id` LEFT JOIN `services` s ON `ad`.`service`=`s`.`id`WHERE `sr`.`id` = '1' AND (UNIX_TIMESTAMP(`ending_date`) > UNIX_TIMESTAMP(NOW()) OR `ending_date` = '0000-00-00 00:00:00'); UPDATE `users` SET `member_online` = '0' WHERE `member_online` = '1';
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Loading Trash_Your_Self_ a 1
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] "1" services was 'Loaded' from database. Total on server: "1" services.
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] FnFindUserService not found жопа STEAM_2:1:372358574
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Authentication Post... "<жопа><STEAM_2:1:372358574>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] FnFindUserService not found Navi markeloff /A/ STEAM_2:0:1583680843
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Authentication Post... "<Navi markeloff /A></Navi><STEAM_2:0:1583680843>" bit 33554432 / 0 | flags z
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] FnFindUserService Owner Founded Trash_Your_Self_ (abcdefghijklmnopqrstu)
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] FnFindUserService All services Trash_Your_Self_ Гл.Администратор
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Found service:"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор") (Expired "0000-00-00 00:00:00")
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Authentication"<Trash_Your_Self_><STEAM_0:1:189542464>" (Account name "Trash_Your_Self_" / Admin index "1") (Service flags "abcdefghijklmnopqrstu") (Service name "Гл.Администратор")
L 07/09/2022 - 15:50:43: [gamecms_api.amxx] Authentication Post... "<Trash_Your_Self_><STEAM_0:1:189542464>" bit 2097151 / 0 | flags abcdefghijklmnopqrstu
L 07/09/2022 - 15:50:47: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_2:1:372358574' OR `users`.`steam_id` = '76561198704982877' OR `users`.`steam_api` = '76561198704982877'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_2:1:372358574' OR `users`.`steam_id` = '76561198704982877' OR `users`.`steam_api` = '76561198704982877');
L 07/09/2022 - 15:50:47: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:50:48: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_2:0:1583680843' OR `users`.`steam_id` = '76561199087871338' OR `users`.`steam_api` = '76561199087871338'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_2:0:1583680843' OR `users`.`steam_id` = '76561199087871338' OR `users`.`steam_api` = '76561199087871338');
L 07/09/2022 - 15:50:48: [gamecms_api.amxx] SQL_NumResults null
L 07/09/2022 - 15:50:49: [gamecms_api.amxx] Searching user..- SELECT `users`.`id`, `login`, `users`.`name`, `birth`, `regdate`, `thanks`, `answers`, `proc`, `last_activity`, `reit`,`users`.`shilings`, `nick`, `game_time`, `prefix`,(SELECT COUNT(*) FROM `pm__dialogs` WHERE (`user_id1`=`users`.`id` or `user_id2`=`users`.`id`) AND (`new`=`users`.`id` or`new`='r'+`users`.`id`)) AS `new_messages`, `users__groups`.`name` as `group_name`, `users`.`rights`, `plugins_settings` , `game_money` ,`member_online`FROM `users` LEFT JOIN `users__groups` ON `users`.`rights`=`users__groups`.`id` WHERE (`users`.`steam_id` = 'STEAM_0:1:189542464' OR `users`.`steam_id` = '76561198339350657' OR `users`.`steam_api` = '76561198339350657'); UPDATE `users` SET `member_online` = '1' WHERE (`users`.`steam_id` = 'STEAM_0:1:189542464' OR `users`.`steam_id` = '76561198339350657' OR `users`.`steam_api` = '76561198339350657');
L 07/09/2022 - 15:50:49: [gamecms_api.amxx] SQL_NumResult
L 07/08/2022 - 09:18:52: [AMXX] Displaying debug trace (plugin "gamecms_gagmanager.amxx", version "2.2.7 ReApi")
L 07/08/2022 - 09:18:52: [AMXX] Run time error 4: index out of bounds
L 07/08/2022 - 09:18:52: [AMXX] [0] gamecms_stocks.inl::CvarsToArray (line 145)
L 07/08/2022 - 09:18:52: [AMXX] [1] gamecms_gagmanager_2.2.7.sma::OnConfigsExecuted (line 232)
L 07/08/2022 - 09:18:52: [AMXX] Run time error 4: index out of bounds
L 07/08/2022 - 09:18:52: [AMXX] [0] gamecms_stocks.inl::CvarsToArray (line 145)
L 07/08/2022 - 09:18:52: [AMXX] [1] gamecms_gagmanager_2.2.7.sma::OnConfigsExecuted (line 232)
- Список плагинов (amx_plugins)
- [ 1] GameCMS_API v5.5.5 zhorzh78 gamecms_api.amx running
[ 2] GameCMS_GagManager v2.2.7 ReAp zhorzh78 gamecms_gagmana debug
[ 3] FreshBans v1.4.6b kanagava fresh_bans.amxx running
[ 4] GameCMS BonusSystem v1.1 +- DUKKHAZ0R bonussystem.amx running
[ 5] Menus Front-End v20.06.06 SKAJIbnEJIb & AM amxmodmenu_rbs. running
[ 6] [190] AdminCmd RBS v20.06.06 SKAJIbnEJIb & AM admincmd_rbs.am running
[ 7] Anti Flood v1.9.0.5263 AMXX Dev Team antiflood.amxx running
[ 8] [190] MapChooser RBS v20.08.02 SKAJIbnEJIb & UF mapchooser_rbs. running
[ 9] [190] NextMap v18.09.25 SKAJIbnEJIb & AM nextmap.amxx running
[ 10] [190] TimeLeft v18.09.25 SKAJIbnEJIb & AM timeleft.amxx running
[ 11] [190] MapsMenu RBS v20.06.06 SKAJIbnEJIb & AM mapsmenu_rbs.am running
[ 12] Plugin Menu v1.9.0.5263 AMXX Dev Team pluginmenu.amxx running
[ 13] Restrict Weapons v1.9.0.5263 AMXX Dev Team restmenu.amxx running
[ 14] [190] CsStats MySQL v20.06.06 SKAJIbnEJIb csstats_mysql.a running
[ 15] [190] Ultimate Weapons v21.03.23 SKAJIbnEJIb ultimate_weapon running
[ 16] [190] Stats Configurat v20.06.06 SKAJIbnEJIb & AM statscfg_rbs.am running
[ 17] [190] StatsX RBS v21.03.23 SKAJIbnEJIb & AM statsx_rbs.amxx running
[ 18] [190] Army Ranks Ultim v20.06.06 SKAJIbnEJIb army_ranks_ulti running
[ 19] [182] BackWeapons RBS v20.06.06 SKAJIbnEJIb & ho backweapons_rbs running
[ 20] [182] Parachute RBS v20.06.06 SKAJIbnEJIb & KR parachute_rbs.a running
[ 21] [190] Damager RBS v20.06.06 SKAJIbnEJIb damager_rbs.amx running
[ 22] [190] Kill Assist RBS v20.06.06 SKAJIbnEJIb & Di killassist_rbs. running
[ 23] [190] Ultimate Informe v21.03.23 SKAJIbnEJIb ultimate_inform running
[ 24] [190] Chat RBS v20.06.06 SKAJIbnEJIb chat_rbs.amxx running
[ 25] [190] Ad From Server v20.06.06 SKAJIbnEJIb ad_from_server. running
[ 26] Block 'Fire in the hol v0.1 Safety1st block_fire_in_t running
[ 27] Change Game Name v1.2 ReHLDS Team change_game_nam running
[ 28] Nice Killer v1.6 Got Milk? / HoHo nice_killer.amx running
[ 29] Block HudTextArgs v1.0 ConnorMcLeod block_hudtextar running
[ 30] Team Win In DHUD v1.0 Seroff win_messages.am running
[ 31] resetscore(ReAPI) v1.0 Phantom resetscore.amxx running
[ 32] [190] VoteBan RBS v20.06.06 SKAJIbnEJIb voteban_rbs.amx running
[ 33] [182] High Ping Kicker v20.06.06 SKAJIbnEJIb hpk_rbs.amxx running
[ 34] [182] DemoRecorder RBS v20.06.06 SKAJIbnEJIb demorecorder_rb running
[ 35] [ReAPI] AdminFreeLook v1.0 ReHLDS Team reapi_adminfree running
[ 36] Auto Team Balance Adva v1.5.1 Radius auto_team_balan running
[ 37] ReAimDetector API v0.2.2 ReHLDS Team reaimdetector.a running
[ 38] Aliases checker v1.0.6 kanagava alias_checker.a running
[ 39] [190] AfkKicker RBS v20.08.02 SKAJIbnEJIb afkkicker_rbs.a running
[ 40] [190] AR Bets v20.06.06 SKAJIbnEJIb ar_bets.amxx running
[ 41] [182] AR Vampire v20.06.06 SKAJIbnEJIb ar_vampire.amxx running
[ 42] [190] No Team Flash v20.06.06 SKAJIbnEJIb NoTeamFlash.amx running
[ 43] [190] Ultimate Models v21.03.23 SKAJIbnEJIb ultimate_models running
[ 44] [190] Ultimate Flags v20.06.06 SKAJIbnEJIb ultimate_flags. running
[ 45] [190] VIP RBS v20.07.20 SKAJIbnEJIb vip_rbs.amxx running
[ 46] [190] Top Award RBS v20.06.06 SKAJIbnEJIb topaward_rbs.am running
[ 47] From Rock to Ban v1.02 Safety1st++ rock2gag.amxx running
47 plugins, 47 running
- Список модулей (meta list)
- [ 1] Reunion RUN - reunion.so v0.1.0.137 ini Start Never
[ 2] VoiceTranscoder RUN - vtc.so v2017RC5 ini ANY
[ 3] AMX Mod X RUN - amxmodx.so v1.9.0.5263 ini Start ANY
[ 4] ReSemiclip RUN - resemiclip.so v2.3.9 ini ANY
[ 5] WHBlocker RUN - whblocker.so v1.5.697 ini ANY
[ 6] Rechecker RUN - rechecker.so v2.7 ini ANY
[ 7] ReSRDetector RUN - resrdetector.so v0.1.0 ini ANY
[ 8] ReAuthCheck RUN - reauthcheck.so v0.1.6 ini Start Never
[ 9] SafeNameAndChat RUN - safenameandchat.so v1.1 ini ANY
[10] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5263 pl3 ANY ANY
[11] CSX RUN - csx_amxx_i386.so v1.9.0.5263 pl3 ANY ANY
[12] Fun RUN - fun_amxx_i386.so v1.9.0.5294 pl3 ANY ANY
[13] ReAPI RUN - reapi_amxx_i386.so v5.21.0.252-dev pl3 ANY Never
[14] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl3 ANY Never
[15] MySQL RUN - mysql_amxx_i386.so v1.9.0.5263 pl3 ANY ANY
[16] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5263 pl3 ANY ANY
[17] Engine RUN - engine_amxx_i386.so v1.9.0.5263 pl3 ANY ANY
[18] AuthEmu RUN - authemu_amxx_i386.so v5.2.12.431 pl3 ANY Never
[19] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5263 pl3 ANY ANY
19 plugins, 19 running