#include <amxmodx> #include <fakemeta> // Закомментируйте или удалите, если не хотите использовать модуль fakemeta. [Для АМХХ 1.8.3 лучше оставить как есть]
#if (AMXX_VERSION_NUM < 183) || defined NO_NATIVE_COLORCHAT #include <colorchat> #else #define DontChange print_team_default #define Blue print_team_blue #define Red print_team_red #define Grey print_team_grey #endif
#define SELECT_MAPS 6 // Число карт в голосовании. Максимум 8 #define VOTE_TIME 10 // Время голосования #define NOMINATE_MAX 3 // Максимальное число номинаций #define NOMINATE_PLAYER_MAX 1 // Максимальное число карт для номиначии одним игроком #define MAP_BLOCK 10 // Количество последниъх сыгранных карт, которые не будут предлагаться для голосования #define HUD_RESULT_COLOR 0, 55, 255 // Цвет результатов голосования // #define MAPSMENU // Включить или выключить say /maps (По дефолту выключен) // #define DEBUG // Сообщения для отладки. Файл mapmanager_debug.log // #define CSDM // Включать на серверах с бесконечными раундами... CSDM/GG/Soccer Jam // #define MINIMAPS // Включить поддержку второго списка карт (По дефолту выключен) // [Если включаете, то создайте minimaps.ini в amxmodx/configs] [аля night mode] #if defined MINIMAPS #define MINIMAPS_START 1 // Время начала подгрузки карт minimaps [аля night mode] #define MINIMAPS_END 11 // Время окончания подгрузки карт minimaps [аля night mode] #endif #if defined CSDM #define VERSION "0.5.7 CSDM" #else #define VERSION "0.5.7 RND" #endif
new const FILE_BLOCKEDMAPS[] = "addons/amxmodx/data/blockedmaps.ini";
new const PREFIX[] = "^1[^4MapManager^1]";
new Array:g_iMapsArray, Array:g_iNominateArray;
new g_pLoadMapsType, g_pShowSelects, g_pShowResultAfterVote, g_pShowResultType; new g_pTimeLimit, g_pExendedMax; new g_pExendedTime, g_pRockEnable, g_pRockPercent, g_pRockDelay, g_pRockShow, g_pNextMap, g_pFriendlyFire, g_pBlockPlayers, g_pAdminVoteWeight, g_pAdminRTVWeight;
new bool:g_bBeInVote, bool:g_bVoteFinished, bool:g_bRockVote, bool:g_bHasVoted[33], bool:g_bRockVoted[33];
new g_iExtendedMax, g_iStartPlugin, g_iLoadMaps; new g_iInMenu[SELECT_MAPS], g_iVoteItem[SELECT_MAPS + 1], g_iTotal, g_iVoteTime, g_iRockVote; new g_iNominatedMaps[33]; #if defined MAPSMENU new g_iPage[33]; #endif
#if !defined CSDM new pcv_mp_buytime, g_buytime, pcv_mp_roundtime, Float:flt_roundtime, g_pShowHUDLastRound; new bool:g_buytimeRepare = false; #endif
new g_msgScreenFade, fade, pcv_mp_freezetime, g_freezetime, g_timelimit; new bool:g_freezetimeRepare = false, bool:g_timelimitRepare = false, bool:g_Work = false;
new g_szInMenuMapName[SELECT_MAPS][33], g_BlockedMaps[MAP_BLOCK][BLOCKED_DATA], g_szCurrentMap[32];
new const g_szPrefixes[][] = {"cs_", "as_", "de_"}; new const g_szSound[][] = { "", "fvox/one", "fvox/two", "fvox/three" };
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR);
g_pLoadMapsType = register_cvar("mm_loadmapstype", "1");//0 - load all maps from maps folder, 1 - load maps from file g_pShowSelects = register_cvar("mm_showselects", "0");//0 - disable, 1 - all, 2 - self g_pShowResultAfterVote = register_cvar("mm_show_result_aftervote", "1");//0 - disable, 1 - enable g_pShowResultType = register_cvar("mm_showresulttype", "0");//0 - menu, 1 - hud g_pBlockPlayers = register_cvar("mm_block_players", "1"); // 1 - yes, 0 - off g_pExendedTime = register_cvar("mm_extendedtime", "15"); //minutes g_pExendedMax = register_cvar("mm_extendedmap_max", "3"); // количество продлений g_pAdminVoteWeight = register_cvar("mm_adminvote_weight", "0"); // вес голоса админа при голосовании [флаг ADMIN_MENU] g_pAdminRTVWeight = register_cvar("mm_adminrtv_weight", "0"); // вес голоса админа в RTV [флаг ADMIN_MENU] #if !defined CSDM g_pShowHUDLastRound = register_cvar("mm_show_lastround", "1"); // показывать HUD последнего раунда или нет #endif
public Command_FriendlyFire(id) client_print_color(0, DontChange, "%s^1 На сервере^3 %s^1 огонь по своим.", PREFIX, get_pcvar_num(g_pFriendlyFire) ? "разрешен" : "запрещен");
public Command_TheTime(id) { new time[64]; get_time ("%Y/%m/%d - %H:%M:%S", time, sizeof (time) - 1); client_print_color(id, DontChange, "%s^1 Текущее время: ^3 %s^1", PREFIX, time); }
#if defined MAPSMENU public Command_MapsList(id) Show_MapsListMenu(id, g_iPage[id] = 0);
public Show_MapsListMenu(id, iPage) { #if defined _fakemeta_included set_pdata_int( id, 205, 0 ); #endif if(iPage < 0) return PLUGIN_HANDLED;
new iMax = ArraySize(g_iMapsArray); new i = min(iPage * 8, iMax); new iStart = i - (i % 8); new iEnd = min(iStart + 8, iMax);
iPage = iStart / 8; g_iPage[id] = iPage;
new szMenu[512], iLen = 0, iLen_Max = charsmax(szMenu), szMapName[32];
switch(get_pcvar_num(g_pRockShow)) { case 0: { new szName[33]; get_user_name(id, szName, charsmax(szName)); client_print_color(0, DontChange, "%s^3 %s^1 проголосовал за смену карты. Осталось: %d %s.", PREFIX, szName, iVote, szVote); #if defined DEBUG log_to_file("mapmanager_debug.log", "%s проголосовал за смену карты. Осталось: %d %s.", szName, iVote, szVote); #else log_amx("%s проголосовал за смену карты. Осталось: %d %s.", szName, iVote, szVote); #endif } case 1: client_print_color(id, DontChange, "%s^1 Ваш голос учтен. Осталось: %d %s.", PREFIX, iVote, szVote); } } else { #if !defined CSDM g_bRockVote = true; g_Work = true; client_print_color(0, DontChange, "%s^1 Голосование за смену карты будет в новом раунде.", PREFIX); #if defined DEBUG log_to_file("mapmanager_debug.log", "Голосование за смену карты будет в новом раунде."); #endif #else StartVote(0); #endif
} } else { new iVote = floatround(get_players_num() * get_pcvar_num(g_pRockPercent) / 100.0, floatround_ceil) - g_iRockVote; new szVote[16]; get_ending(iVote, "голосов", "голос", "голоса", szVote, charsmax(szVote)); client_print_color(id, DontChange, "%s^1 Вы уже голосовали. Осталось: %d %s.", PREFIX, iVote, szVote); }
return PLUGIN_HANDLED; }
public Command_Nextmap(id) { new szMap[33]; get_pcvar_string(g_pNextMap, szMap, charsmax(szMap)); client_print_color(0, Blue, "%s^1 Следующая карта: ^3%s^1.", PREFIX, szMap); }
public Command_Timeleft(id) { new a = get_timeleft(); if(a == 0) client_print_color(0, DontChange, "%s^1 Карта не ограничена по времени.", PREFIX); else client_print_color(0, Blue, "%s^1 До конца карты осталось:^3 %d:%02d", PREFIX, (a / 60), (a % 60)); }
public Command_CurrentMap(id) client_print_color(0, Blue, "%s^1 Текущая карта:^3 %s^1.", PREFIX, g_szCurrentMap);
public Command_Say(id) { if(g_bVoteFinished || g_bBeInVote) return;
На что можно заменить опенгл детектор от маздама и будут ли работать плагины скальпеля?
речекер, он хотя бы с открытым исходным кодом Будут работать любые плагины не трогающие ядро(сейчас пойдет куча глупых вопросов, а это как? А это что?)
Обновил сервер на РеХЛДС,поставил речекер,все работает,вот только небольшая проблемка:речекер забанил игрока за leis3,через 10 минут смотрю бан лист,и вижу что этого же игрока еще раз забанило за этот же чит,вот только у него в 2 банах,ip и steamid одинаковый,как он смог обойти?
Поблагодарили 0 раз Поблагодарили 0 раз
M217
17.3.2016, 17:28
Сообщение
Стаж: 10 лет
Сообщений: 159
Благодарностей: 23
Полезность: < 0
Цитата(Angerfist @ 17.3.2016, 13:20)
Обновил сервер на РеХЛДС,поставил речекер,все работает,вот только небольшая проблемка:речекер забанил игрока за leis3,через 10 минут смотрю бан лист,и вижу что этого же игрока еще раз забанило за этот же чит,вот только у него в 2 банах,ip и steamid одинаковый,как он смог обойти?
Как минимум: потому что его забанило на 10 |минут|
Но ты будь уверен, у него протекторы, у него стим и ip меняется каждую секунду, кс удаляется и устанавливается за 5 секунд, реестр чистится за секунды, ос'Ь то lin то win зависит от настроения того кто обошел; кстати а может у него 25 ноутов и 26 стационаров? Хм - думай, думай.
Отредактировал: M217, - 17.3.2016, 17:29
Поблагодарили 0 раз Поблагодарили 0 раз
Blitzz
17.3.2016, 17:33
Сообщение
Стаж: 10 лет
Сообщений: 509
Благодарностей: 117
Полезность: 91
Цитата(Norman111 @ 17.3.2016, 15:28)
Blitzz, зачем? Обо всех изменениях можно узнать на неугомоне и на дс