- Ошибка
-
Пишет голосование уже начато.
- ОС
- Linux
- Amx Mod X
-
v1.10.0.5462
C++
- Билд
-
ReHLDS version: 3.11.0.773-dev
C++
- ReGamedll
-
ReGameDLL version: 5.21.0.546-dev
C++
- Версия Metamod
-
Metamod-r v1.3.0.128, API (5:13)
C++
- Список метамодулей
-
[ 1] Reunion RUN - reunion_mm_i386.so v0.1.0.137 ini Start Never [ 2] Rechecker RUN - rechecker.so v2.7 ini Chlvl ANY [ 3] WHBlocker RUN - whblocker_mm_i386.so v1.5.697 ini Chlvl ANY [ 4] SmartGuard RUN - smartguard_mm_i386.so v1.3 ini ANY Never [ 5] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY [ 6] VoiceTranscoder RUN - VoiceTranscoder.so v2017RC5 ini ANY ANY [ 7] ProcessCmds RUN - processcmds_mm_i386.so v1.2.0 ini Start Never [ 8] AMX Mod X RUN - amxmodx_mm_i386.so v1.10.0.5462 ini Start ANY [ 9] Engine RUN - engine_amxx_i386.so v1.10.0.5462 pl8 ANY ANY [10] FakeMeta RUN - fakemeta_amxx_i386.so v1.10.0.5462 pl8 ANY ANY [11] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.10.0.5462 pl8 ANY ANY [12] MySQL RUN - mysql_amxx_i386.so v1.10.0.5462 pl8 ANY ANY [13] ReAPI RUN - reapi_amxx_i386.so v5.21.0.252-dev pl8 ANY Never [14] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl8 ANY Never [15] AuthEmu RUN - authemu_amxx_i386.so v5.2.12.525-dev+m pl8 ANY Never [16] CSX RUN - csx_amxx_i386.so v1.10.0.5462 pl8 ANY ANY [17] SxGeo RUN - sxgeo_amxx_i386.so v2.2 pl8 ANY Never [18] CStrike RUN - cstrike_amxx_i386.so v1.10.0.5462 pl8 ANY ANY [19] Fun RUN - fun_amxx_i386.so v1.10.0.5462 pl8 ANY ANY
C++
- Список плагинов
-
[ 1] 0 [190] Ultimate Weapons 21.08.23BE SKAJIbnEJIb unknown ultimate_we running [ 2] 1 GameCMS_API 5.5.5 zhorzh78 unknown gamecms.amx running [ 3] 2 Anti Sound ESP 0.2.181 s3zy unknown AntiSoundES running [ 4] 3 ReAimDetector API 0.2.2 ReHLDS Team reaimdetect running [ 5] 4 FreshBans 1.4.6b kanagava unknown fresh_bans. running [ 6] 5 Advanced Rechecker 0.4 F@nt0M rechecker.a running [ 7] 6 Aliases checker 1.0.6 kanagava unknown alias_detec running [ 8] 7 Unreal HPPv6 Detector 1.0.6 Karaulov HPPv6_Detec running [ 9] 8 WH Blocker 1.5 Hy6 wh_blocker. running [ 10] 9 [190] MapChooser RBS 20.08.02 SKAJIbnEJIb & UF unknown mapchooser_ running [ 11] 10 [190] Ultimate Flags 21.03.24BE SKAJIbnEJIb unknown ultimate_fl running [ 12] 11 Advanced Gag 1.9.0 neygomon amx_gag.amx running [ 13] 12 Rock to Ban 1.02 Safety1st rock2ban.am running [ 14] 13 [190] Ultimate Informe 21.03.23 SKAJIbnEJIb unknown ultimate_in running [ 15] 14 [190] VIP RBS 21.08.23BE SKAJIbnEJIb unknown vip_rbs.amx running [ 16] 15 [190] Army Ranks Ultim 20.06.06 SKAJIbnEJIb unknown army_ranks_ running [ 17] 16 [190] Ultimate Models 21.08.23BE SKAJIbnEJIb unknown ultimate_mo running [ 18] 17 Menus Front-End 20.06.06 SKAJIbnEJIb & AM unknown amxmodmenu_ running [ 19] 18 [190] DemoRecorder RBS 20.06.06 SKAJIbnEJIb unknown demorecorde running [ 20] 19 [190] BonusMenu RBS 21.08.23BE SKAJIbnEJIb unknown bonusmenu_r running [ 21] 20 [190] Damager RBS 20.06.06 SKAJIbnEJIb unknown damager_rbs running [ 22] 21 [190] High Ping Kicker 20.06.06 SKAJIbnEJIb unknown hpk_rbs.amx running [ 23] 22 [190] AC Spectator ESP 20.06.06 SKAJIbnEJIb & Ko unknown ac_esp.amxx running [ 24] 23 [190] Parachute RBS 20.08.22BE SKAJIbnEJIb & KR unknown parachute_r running [ 25] 24 [190] CmdMenu RBS 20.06.06 SKAJIbnEJIb & AM unknown cmdmenu_rbs running [ 26] 25 [190] Kill Assist RBS 20.06.06 SKAJIbnEJIb & Di unknown killassist_ running [ 27] 26 [190] AfkKicker RBS 21.08.22BE SKAJIbnEJIb unknown afkkicker_r running [ 28] 27 [190] Top Award RBS 20.06.06 SKAJIbnEJIb unknown topaward_rb running [ 29] 28 [190] Jobs RBS 21.08.23BE SKAJIbnEJIb unknown jobs_rbs.am running [ 30] 29 [190] Chat RBS 20.10.24BE SKAJIbnEJIb unknown chat_rbs.am running [ 31] 30 [190] AR Bets 20.06.06 SKAJIbnEJIb unknown ar_bets.amx running [ 32] 31 [190] CsStats MySQL 21.08.22BE SKAJIbnEJIb unknown csstats_mys running [ 33] 32 [190] Stats Configurat 20.06.06 SKAJIbnEJIb & AM unknown statscfg_rb running [ 34] 33 [190] StatsX RBS 21.03.23 SKAJIbnEJIb & AM unknown statsx_rbs. running [ 35] 34 Maps Menu 1.10.0.546 AMXX Dev Team mapsmenu.am running [ 36] 35 Restrict Weapons 1.10.0.546 AMXX Dev Team restmenu.am running [ 37] 36 Auto Team Balance Adva 1.5.1 Radius unknown auto_team_b running [ 38] 37 [ReAPI] No Team Flash 0.0.3 Vaqtincha no_team_fla running [ 39] 38 SpecList 1.2a FatalisDK speclist.am running [ 40] 39 Reset Score 1.0 SKAJIbnEJIb reset_score running [ 41] 40 GameCMS_Registration 1.5 zhorzh78 unknown gamecms_reg running [ 42] 41 AWP Restrictions 1.5.1 Radius unknown awp_restric running [ 43] 42 [ReAPI] Healthnade 0.0.2 F@nt0M healthnade. running [ 44] 43 Mode 2x2 2.5re s1lent mode.amxx running [ 45] 44 [SxGeo] Connect Info 1.0 s1lent sxgeo_conne running [ 46] 45 Style C4 Timer 3.1 OciXCrom crx_c4timer running [ 47] 46 TimeLeft 1.10.0.546 AMXX Dev Team timeleft.am running [ 48] 47 NextMap 1.10.0.546 AMXX Dev Team nextmap.amx running [ 49] 48 Injector X 1.0 Deadly|Darkness dd_injector running [ 50] 49 Weapon Model + Sound R 1.2 GHW_Chronic ghw.amxx running [ 51] 50 Custom Smoke 1.07 bionext custom_smok running [ 52] 51 ScreenMaker 1.1 neygomon screenmaker running [ 53] 52 Revive Die Players 2.3.2 Emma Jule revive_team running [ 54] 53 Players Menu 1.7 neugomon players_men running [ 55] 54 Radio Block 1.0 Mmonster unknown radio.amxx running [ 56] 55 [ReAPI] SmartGuard VIP 1.0 smartguard_ running [ 57] 56 Recoil Control 1.5 Hy6 recoil_cont running [ 58] 57 GameName Changer 1.0 neugomon game_name.a running [ 59] 58 Autoresponder/Advertis 0.5 MaximusBrood ad_manager. running [ 60] 59 AuthEmu API 1.0 Dev-MS Team authemu.amx running
C++
- Автор плагина
- AMXX Dev Team
- Версия плагина
- 1.10.0.5462
- Исходный код
-
// vim: set ts=4 sw=4 tw=99 noet: // // AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO"). // Copyright (C) The AMX Mod X Development Team. // // This software is licensed under the GNU General Public License, version 3 or higher. // Additional exceptions apply. For full license details, see LICENSE.txt or visit: // https://alliedmods.net/amxmodx-license // // Maps Menu Plugin // #include <amxmodx> #include <amxmisc> new Array:g_mapName; new g_mapNums new g_menuPosition[MAX_PLAYERS + 1] new g_voteCount[5] new g_voteSelected[MAX_PLAYERS + 1][4] new g_voteSelectedNum[MAX_PLAYERS + 1] new g_coloredMenus new g_choosed public plugin_init() { register_plugin("Maps Menu", AMXX_VERSION_STR, "AMXX Dev Team") register_dictionary("mapsmenu.txt") register_dictionary("common.txt") register_clcmd("amx_mapmenu", "cmdMapsMenu", ADMIN_MAP, "- displays changelevel menu") register_clcmd("amx_votemapmenu", "cmdVoteMapMenu", ADMIN_VOTE, "- displays votemap menu") register_menucmd(register_menuid("Changelevel Menu"), 1023, "actionMapsMenu") register_menucmd(register_menuid("Which map do you want?"), 527, "voteCount") register_menucmd(register_menuid("Change map to"), 527, "voteCount") register_menucmd(register_menuid("Votemap Menu"), 1023, "actionVoteMapMenu") register_menucmd(register_menuid("The winner: "), 3, "actionResult") g_mapName=ArrayCreate(32); new maps_ini_file[64]; get_configsdir(maps_ini_file, charsmax(maps_ini_file)); format(maps_ini_file, charsmax(maps_ini_file), "%s/maps.ini", maps_ini_file); if (!file_exists(maps_ini_file)) get_cvar_string("mapcyclefile", maps_ini_file, charsmax(maps_ini_file)); if (!file_exists(maps_ini_file)) format(maps_ini_file, charsmax(maps_ini_file), "mapcycle.txt") load_settings(maps_ini_file) g_coloredMenus = colored_menus() } public autoRefuse() { log_amx("Vote: %L", "en", "RESULT_REF") client_print(0, print_chat, "%L", LANG_PLAYER, "RESULT_REF") } public actionResult(id, key) { remove_task(4545454) switch (key) { case 0: { new _modName[10] get_modname(_modName, charsmax(_modName)) if (!equal(_modName, "zp")) { message_begin(MSG_ALL, SVC_INTERMISSION) message_end() } new tempMap[32]; ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap)); set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1) log_amx("Vote: %L", "en", "RESULT_ACC") client_print(0, print_chat, "%L", LANG_PLAYER, "RESULT_ACC") } case 1: autoRefuse() } return PLUGIN_HANDLED } public checkVotes(id) { id -= 34567 new num, ppl[MAX_PLAYERS], a = 0 get_players(ppl, num, "c") if (num == 0) num = 1 g_choosed = -1 for (new i = 0; i < g_voteSelectedNum[id]; ++i) if (g_voteCount[a] < g_voteCount[i]) a = i new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3] + g_voteCount[4] new iRatio = votesNum ? floatround(get_cvar_float("amx_votemap_ratio") * float(votesNum), floatround_ceil) : 1 new iResult = g_voteCount[a] if (iResult >= iRatio) { g_choosed = g_voteSelected[id][a] new tempMap[32]; ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap)); client_print(0, print_chat, "%L %s", LANG_PLAYER, "VOTE_SUCCESS", tempMap); log_amx("Vote: %L %s", "en", "VOTE_SUCCESS", tempMap); delayedChange(tempMap); } if (g_choosed != -1) { if (is_user_connected(id)) { new menuBody[512] new tempMap[32]; ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap)); new len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L: \w%s^n^n" : "%L: %s^n^n", id, "THE_WINNER", tempMap) len += format(menuBody[len], charsmax(menuBody) - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", id, "WANT_CONT") format(menuBody[len], charsmax(menuBody) - len, "^n1. %L^n2. %L", id, "YES", id, "NO") show_menu(id, 0x03, menuBody, 10, "The winner: ") set_task(10.0, "autoRefuse", 4545454) } else { new _modName[10] get_modname(_modName, charsmax(_modName)) if (!equal(_modName, "zp")) { message_begin(MSG_ALL, SVC_INTERMISSION) message_end() } new tempMap[32]; ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap)); set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1) } } else { client_print(0, print_chat, "%L", LANG_PLAYER, "VOTE_FAILED") log_amx("Vote: %L", "en", "VOTE_FAILED") } remove_task(34567 + id) } public voteCount(id, key) { if (key > 3) { client_print(0, print_chat, "%L", LANG_PLAYER, "VOT_CANC") remove_task(34567 + id) set_cvar_float("amx_last_voting", get_gametime()) log_amx("Vote: Cancel vote session") return PLUGIN_HANDLED } if (get_cvar_float("amx_vote_answers")) { new name[MAX_NAME_LENGTH] get_user_name(id, name, charsmax(name)) client_print(0, print_chat, "%L", LANG_PLAYER, "X_VOTED_FOR", name, key + 1) } ++g_voteCount[key] return PLUGIN_HANDLED } isMapSelected(id, pos) { for (new a = 0; a < g_voteSelectedNum[id]; ++a) if (g_voteSelected[id][a] == pos) return 1 return 0 } displayVoteMapsMenu(id, pos) { if (pos < 0) return new menuBody[512], b = 0, start = pos * 7 if (start >= g_mapNums) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "VOTEMAP_MENU", pos + 1, (g_mapNums / 7 + ((g_mapNums % 7) ? 1 : 0))) new end = start + 7, keys = MENU_KEY_0 if (end > g_mapNums) end = g_mapNums new tempMap[32]; for (new a = start; a < end; ++a) { ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap)); if (g_voteSelectedNum[id] == 4 || isMapSelected(id, pos * 7 + b)) { ++b if (g_coloredMenus) len += format(menuBody[len], charsmax(menuBody) - len, "\d%d. %s^n\w", b, tempMap) else len += format(menuBody[len], charsmax(menuBody) - len, "#. %s^n", tempMap) } else { keys |= (1<<b) len += format(menuBody[len], charsmax(menuBody) - len, "%d. %s^n", ++b, tempMap) } } if (g_voteSelectedNum[id]) { keys |= MENU_KEY_8 len += format(menuBody[len], charsmax(menuBody) - len, "^n8. %L^n", id, "START_VOT") } else len += format(menuBody[len], charsmax(menuBody) - len, g_coloredMenus ? "^n\d8. %L^n\w" : "^n#. %L^n", id, "START_VOT") if (end != g_mapNums) { len += format(menuBody[len], charsmax(menuBody) - len, "^n9. %L...^n0. %L^n", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else len += format(menuBody[len], charsmax(menuBody) - len, "^n0. %L^n", id, pos ? "BACK" : "EXIT") if (g_voteSelectedNum[id]) len += format(menuBody[len], charsmax(menuBody) - len, g_coloredMenus ? "^n\y%L:^n\w" : "^n%L:^n", id, "SEL_MAPS") else len += format(menuBody[len], charsmax(menuBody) - len, "^n^n") for (new c = 0; c < 4; c++) { if (c < g_voteSelectedNum[id]) { ArrayGetString(g_mapName, g_voteSelected[id][c], tempMap, charsmax(tempMap)); len += format(menuBody[len], charsmax(menuBody) - len, "%s^n", tempMap) } else len += format(menuBody[len], charsmax(menuBody) - len, "^n") } new menuName[64] format(menuName, charsmax(menuName), "%L", "en", "VOTEMAP_MENU") show_menu(id, keys, menuBody, -1, menuName) } public cmdVoteMapMenu(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED if (get_cvar_float("amx_last_voting") > get_gametime()) { client_print(id, print_chat, "%L", id, "ALREADY_VOT") return PLUGIN_HANDLED } g_voteSelectedNum[id] = 0 if (g_mapNums) { displayVoteMapsMenu(id, g_menuPosition[id] = 0) } else { console_print(id, "%L", id, "NO_MAPS_MENU") client_print(id, print_chat, "%L", id, "NO_MAPS_MENU") } return PLUGIN_HANDLED } public cmdMapsMenu(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED if (g_mapNums) { displayMapsMenu(id, g_menuPosition[id] = 0) } else { console_print(id, "%L", id, "NO_MAPS_MENU") client_print(id, print_chat, "%L", id, "NO_MAPS_MENU") } return PLUGIN_HANDLED } public delayedChange(mapname[]) { engine_changelevel(mapname) } public actionVoteMapMenu(id, key) { new tempMap[32]; switch (key) { case 7: { new Float:voting = get_cvar_float("amx_last_voting") if (voting > get_gametime()) { client_print(id, print_chat, "%L", id, "ALREADY_VOT") return PLUGIN_HANDLED } if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime()) { client_print(id, print_chat, "%L", id, "VOT_NOW_ALLOW") return PLUGIN_HANDLED } g_voteCount = {0, 0, 0, 0, 0} new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 set_cvar_float("amx_last_voting", get_gametime() + vote_time) new iVoteTime = floatround(vote_time) set_task(vote_time, "checkVotes", 34567 + id) new menuBody[512] new players[MAX_PLAYERS] new pnum, keys, len get_players(players, pnum) if (g_voteSelectedNum[id] > 1) { len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L^n\w^n" : "%L^n^n", id, "WHICH_MAP") for (new c = 0; c < g_voteSelectedNum[id]; ++c) { ArrayGetString(g_mapName, g_voteSelected[id][c], tempMap, charsmax(tempMap)); len += format(menuBody[len], charsmax(menuBody) - len, "%d. %s^n", c + 1, tempMap) keys |= (1<<c) } keys |= (1<<8) len += format(menuBody[len], charsmax(menuBody) - len, "^n9. %L^n", id, "NONE") } else { ArrayGetString(g_mapName, g_voteSelected[id][0], tempMap, charsmax(tempMap)); len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L^n%s?^n\w^n1. %L^n2. %L^n" : "%L^n%s?^n^n1. %L^n2. %L^n", id, "CHANGE_MAP_TO", tempMap, id, "YES", id, "NO") keys = MENU_KEY_1|MENU_KEY_2 } new menuName[64] format(menuName, charsmax(menuName), "%L", "en", "WHICH_MAP") for (new b = 0; b < pnum; ++b) if (players[b] != id) show_menu(players[b], keys, menuBody, iVoteTime, menuName) format(menuBody[len], charsmax(menuBody), "^n0. %L", id, "CANC_VOTE") keys |= MENU_KEY_0 show_menu(id, keys, menuBody, iVoteTime, menuName) new authid[32], name[MAX_NAME_LENGTH] get_user_authid(id, authid, charsmax(authid)) get_user_name(id, name, charsmax(name)) show_activity_key("ADMIN_V_MAP_1", "ADMIN_V_MAP_2", name); new tempMapA[32]; new tempMapB[32]; new tempMapC[32]; new tempMapD[32]; if (g_voteSelectedNum[id] > 0) { ArrayGetString(g_mapName, g_voteSelected[id][0], tempMapA, charsmax(tempMapA)); } else { copy(tempMapA, charsmax(tempMapA), ""); } if (g_voteSelectedNum[id] > 1) { ArrayGetString(g_mapName, g_voteSelected[id][1], tempMapB, charsmax(tempMapB)); } else { copy(tempMapB, charsmax(tempMapB), ""); } if (g_voteSelectedNum[id] > 2) { ArrayGetString(g_mapName, g_voteSelected[id][2], tempMapC, charsmax(tempMapC)); } else { copy(tempMapC, charsmax(tempMapC), ""); } if (g_voteSelectedNum[id] > 3) { ArrayGetString(g_mapName, g_voteSelected[id][3], tempMapD, charsmax(tempMapD)); } else { copy(tempMapD, charsmax(tempMapD), ""); } log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")", name, get_user_userid(id), authid, tempMapA, tempMapB, tempMapC, tempMapD) } case 8: displayVoteMapsMenu(id, ++g_menuPosition[id]) case 9: displayVoteMapsMenu(id, --g_menuPosition[id]) default: { g_voteSelected[id][g_voteSelectedNum[id]++] = g_menuPosition[id] * 7 + key displayVoteMapsMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } public actionMapsMenu(id, key) { switch (key) { case 8: displayMapsMenu(id, ++g_menuPosition[id]) case 9: displayMapsMenu(id, --g_menuPosition[id]) default: { new a = g_menuPosition[id] * 8 + key new _modName[10] get_modname(_modName, charsmax(_modName)) if (!equal(_modName, "zp")) { message_begin(MSG_ALL, SVC_INTERMISSION) message_end() } new authid[32], name[MAX_NAME_LENGTH] get_user_authid(id, authid, charsmax(authid)) get_user_name(id, name, charsmax(name)) new tempMap[32]; ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap)); show_activity_key("ADMIN_CHANGEL_1", "ADMIN_CHANGEL_2", name, tempMap); log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, tempMap) set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1) /* displayMapsMenu(id, g_menuPosition[id]) */ } } return PLUGIN_HANDLED } displayMapsMenu(id, pos) { if (pos < 0) return new menuBody[512] new tempMap[32] new start = pos * 8 new b = 0 if (start >= g_mapNums) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, charsmax(menuBody), g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CHANGLE_MENU", pos + 1, (g_mapNums / 8 + ((g_mapNums % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_mapNums) end = g_mapNums for (new a = start; a < end; ++a) { keys |= (1<<b) ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap)); len += format(menuBody[len], charsmax(menuBody) - len, "%d. %s^n", ++b, tempMap) } if (end != g_mapNums) { format(menuBody[len], charsmax(menuBody) - len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else format(menuBody[len], charsmax(menuBody) - len, "^n0. %L", id, pos ? "BACK" : "EXIT") new menuName[64] format(menuName, 63, "%L", "en", "CHANGLE_MENU") show_menu(id, keys, menuBody, -1, menuName) } stock bool:ValidMap(mapname[]) { if ( is_map_valid(mapname) ) { return true; } // If the is_map_valid check failed, check the end of the string new len = strlen(mapname) - 4; // The mapname was too short to possibly house the .bsp extension if (len < 0) { return false; } if ( equali(mapname[len], ".bsp") ) { // If the ending was .bsp, then cut it off. // the string is byref'ed, so this copies back to the loaded text. mapname[len] = '^0'; // recheck if ( is_map_valid(mapname) ) { return true; } } return false; } load_settings(filename[]) { new fp = fopen(filename, "r"); if (!fp) { return 0; } new text[256]; new tempMap[32]; while (fgets(fp, text, charsmax(text))) { if (text[0] == ';') { continue; } if (parse(text, tempMap, charsmax(tempMap)) < 1) { continue; } if (!ValidMap(tempMap)) { continue; } ArrayPushString(g_mapName, tempMap); g_mapNums++; } fclose(fp); return 1; } public plugin_end() { ArrayDestroy(g_mapName) }
C++
Всем привет . Проблема такая. В начале всё отлично работает, но через не определённое время когда в админ меню ставишь голосование пишет в чате что голосование уже начато. Приходится переодически сервер перезагружать чтоб опять работало нормально. И опять заного всё поисходит. Как решить проблему?
Вложения
-
14.2 KB Просмотры: 154