Версия: 1.0
Описание: Есть подобные плагины, но всё же кому актуально.
Проверки на количество игроков производятся каждые 5 минут.
Так же добавлена проверка на админа, если админ с флагом admin_menu пресуствует на сервере, то ему будет выводить сообщение о низком онлайне, при этом карта меняться не будет.
Карта меняется рандомно.
Плагин становится на паузу на картах даст 2х2 и инферно 2х2.
Так же сообщение выводится всем игрокам перед сменой карты, с отсчотём секунд.
- Код: Выделить всё
#include <amxmodx>
#define PLAGIN "O.N.L.A.I.N"
#define VERSION "1.0"
#define AUTOR "[N][e][M][E][C]"
#define limitPLAYERS 8 //количество людей |допускается|
#define TIME_CHECK_PLAYERS 300.0 //через сколько секунд делать проверку на количество игроков(каждые 5 минут)
#define TASK_ID_CHECK_PLAYERS 555
#define TIME_MAPS_TASK 10.0
#define TASK_ID_MAPS_TASK 666
#define TIME_SECUND_TASK 1.0
#define TASK_ID_SECUND_TASK 777
new g_MapPrefixList[][] = {
"de_dust2_2x2", //на каких картах плагин ставим на паузу, и на какие карты меняем
"de_inferno_2x2" //каличество карт можно добавлять
}
new const message[2][] = {
"Админитратор, обратите внимание^n низкий онлайн ^"не хватает %d игрок%s^"", //сообщение администраторам
"Внимание!!! Низкий онлайн!!!:^nнам не хватает %d игрок%s,^nкарта смениться через %d сек... на %s" //сообщение игрокам
}
new g_messegeHUD, g_maxplayers, randoms, g_timer, i, u, players;
new ending[4], szMapName[32], player[32];
public plugin_init() {
register_plugin(PLAGIN, VERSION, AUTOR);
get_mapname(szMapName, charsmax(szMapName));
for(u = 0; u < sizeof(g_MapPrefixList); u ++) {
if(equali(g_MapPrefixList[u], szMapName))
pause("d");
}
set_task(TIME_CHECK_PLAYERS, "check_players", TASK_ID_CHECK_PLAYERS, .flags = "b");
g_maxplayers = get_maxplayers()+1;
g_messegeHUD = CreateHudSyncObj();
randoms = random_num(0, charsmax(g_MapPrefixList));
}
public check_players() {
get_players(player, players, "ch"); //не ситаем ботов и HLTV
if(players < limitPLAYERS) {
ending = ((limitPLAYERS - players) > 4) ? "oв" : "a"; //окончание, если от 1 до 4 (игрока), 5 и выше (игроков)
for(i = 1; i < g_maxplayers; ++ i) {
if(is_user_connected(i) && get_user_flags(i) & ADMIN_MENU) {
set_hudmessage(255, 255, 255, -1.0, 0.55, 2, 0.1, 5.0, 0.02, 0.02, -1);
ShowSyncHudMsg(i, g_messegeHUD, message[0], limitPLAYERS - players, ending);
return;
}
}
remove_task(TASK_ID_CHECK_PLAYERS);
set_task(TIME_MAPS_TASK, "change_map", TASK_ID_MAPS_TASK, _, _, "a", 1);
g_timer = 9;
if(g_timer)
set_task(TIME_SECUND_TASK, "messege_HUD", TASK_ID_SECUND_TASK, _, _, "a", g_timer);
}
}
public messege_HUD() {
set_hudmessage(255, 255, 255, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1);
ShowSyncHudMsg(0, g_messegeHUD, message[1], limitPLAYERS - players, ending, g_timer--, g_MapPrefixList[randoms]);
}
public change_map()
server_cmd("changelevel %s", g_MapPrefixList[randoms]);