Код:
/*
Плагин меняет освещение карты после голосования
В голосовании доступны 2 пункта:
- Стандартное освещение карты
- Зависящее от времени сервера
Changelog
- 1.0 - Первый релиз.
- 1.1 - Добавил lang файл (day_night.txt)
- 1.2 - Добавил менюшку с голосованием за освещение карты ( срабатывает только после события Game Commencing )
- Добавил команду для админов "amx_day_night". Админ тоже может вызывать голосование за освещение
- 1.3 - Исправлены файлы от ошибок и пунктуации, изменен текст, цвет текста теперь зависит от времени на сервере, чуть поправлен исходник
- Edit By Schibeki...
- 1.4 - Добавлено оповещение в чат о том, кто за какое освещение проголосовал.
- Edit By Schibeki, BaJIeHoK..
-1.5(Final) - Добавлена строка в меню воздержаться + вывод в чат: %s не принял участия в голосовании о освещении сервера
-Устранен конфликт русского и английского языков (доступные языки: en,ru)
- Добавлен параметр, отвечающий за цвет номеров в меню
- Добавлено исчезновение меню после 10 сек. бездействия
-поправлен код
- Edit By Schibeki, BaJIeHoK, Safety1st
*/
#include <amxmodx>
#include <amxmisc>
#include <engine>
#define PLUGIN "Day Night"
#define VERSION "1.5"
#define AUTHOR "TTuCTOH"
#define TIMETOVOTE 60.0 // Через какое время включится менюшка для голосования освещения карты
#define MAX_PLAYERS 32
new gMenu[MAX_PLAYERS + 1];
new gVotes[2];
new gVoting;
new const night_skies[][] =
{
"hav",
"space",
"black",
"night"
}
new const morning_skies[][] =
{
"morning",
"morningdew",
"city",
"city1"
}
new const evening_skies[][] =
{
"neb1",
"alien1",
"alien2",
"xen9",
"blue"
}
new const day_skies[][] =
{
"snow",
"snowlake_",
"des",
"2desert",
"grnplsnt",
"cx"
}
#define LIGHTS_DEFAULT 0
#define LIGHTS_TIMEBASED 1
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary("day_night.txt")
register_event ( "TextMsg", "start_game", "a", "2=#Game_Commencing" )
register_concmd("amx_day_night","VoteDayNight", ADMIN_VOTE," : vote for day-night")
}
public start_game()
{
set_task(TIMETOVOTE, "VoteDayNight")
}
public VoteDayNight(id)
{
if( gVoting )
{
client_print(id, print_chat, "%L", id, "VOTE_IN_PROGRESS");
return PLUGIN_HANDLED
}
new players[32], tempid, header[64], choise[64], choise2[64], iMenu;
get_players(players, gVoting, "ch" ); // skip bots and HLTV)
for( new i; i < gVoting; i++ )
{
tempid = players[i]
formatex(header, charsmax(header), "%L", tempid, "CHOSE_THE_LIGHT");
formatex(choise, charsmax(choise), "%L", tempid, "MENU_DEFF");
formatex(choise2, charsmax(choise2), "%L", tempid, "MENU_SERVT");
iMenu = menu_create(header, "menu_handler");
menu_additem(iMenu, choise);
menu_additem(iMenu, choise2);
menu_setprop(iMenu, MPROP_NUMBER_COLOR,"\w");
menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(iMenu, MPROP_EXITNAME, "Воздержаться");
menu_display(tempid, iMenu);
gMenu[tempid] = iMenu
}
set_task(10.0, "EndVote");
return PLUGIN_HANDLED
}
public menu_handler(id, menu, item)
{
new szName[32];
get_user_name(id, szName, charsmax( szName ));
switch( item )
{
case LIGHTS_DEFAULT : client_print(0, print_chat, "%L", id, "PLAYERVOTE_DEFF", szName);
case LIGHTS_TIMEBASED : client_print(0, print_chat, "%L", id, "PLAYERVOTE_SERVERTIME", szName);
default :
{
if( gVoting )
client_print(0, print_chat, "%L", id, "USER_NOT_VOTE", szName);
return PLUGIN_HANDLED;
}
}
gVotes[item]++;
return PLUGIN_HANDLED;
}
public EndVote()
{
gVoting = 0;
if( gVotes[0] >= gVotes[1] )
{
client_print(0, print_chat, "%L", LANG_PLAYER, "DEFFAULT_LIGHT");
SetDefault();
}
else
{
client_print(0, print_chat, "%L", LANG_PLAYER, "SERVERTIME_LIGHT");
SetServerTime();
}
new players[32], pnum, tempid;
get_players(players, pnum);
for( new i; i < gVoting; i++ )
{
tempid = gMenu[players[i]];
if( tempid )
menu_destroy(tempid);
}
arrayset( gMenu, 0, MAX_PLAYERS + 1);
show_menu( 0, 0, "^n", 1 ); // hide 'new' menu from players screen
}
public SetDefault()
{
remove_task(767676)
set_lights("#OFF")
}
public SetServerTime()
{
set_task(60.0,"check_time", 767676,"",0,"b")
set_task(0.1, "change_sky", 0)
}
public check_time()
{
new Hours[3]
new iHours
new szLights[2]="m"
get_time("%H", Hours, 2)
iHours = str_to_num(Hours)
switch(iHours)
{
case 0:szLights = "b"
case 1:szLights = "b"
case 2:szLights = "b"
case 3:szLights = "b"
case 4:szLights = "c"
case 5:szLights = "c"
case 6:szLights = "e"
case 7:szLights = "f"
case 8:szLights = "g"
case 9:szLights = "h"
case 10:szLights = "i"
case 11:szLights = "g"
case 12:szLights = "m"
case 13:szLights = "m"
case 14:szLights = "m"
case 15:szLights = "m"
case 16:szLights = "l"
case 17:szLights = "k"
case 18:szLights = "g"
case 19:szLights = "f"
case 20:szLights = "e"
case 21:szLights = "d"
case 22:szLights = "c"
case 23:szLights = "b"
default:szLights = "m"
}
set_lights(szLights)
return PLUGIN_CONTINUE
}
public client_putinserver(id)
{
if (is_user_bot(id))
return
set_task(15.0, "hallowman", id)
}
public change_sky()
{
new Hours[3]
new iHours
get_time("%H", Hours, 2)
iHours = str_to_num(Hours)
switch(iHours)
{
case 0:server_cmd("sv_skyname %s", night_skies[ random_num( 0, charsmax( night_skies ) ) ] )
case 1:server_cmd("sv_skyname %s", night_skies[ random_num( 0, charsmax( night_skies ) ) ] )
case 2:server_cmd("sv_skyname %s", night_skies[ random_num( 0, charsmax( night_skies ) ) ] )
case 3:server_cmd("sv_skyname %s", night_skies[ random_num( 0, charsmax( night_skies ) ) ] )
case 4:server_cmd("sv_skyname %s", night_skies[ random_num( 0, charsmax( night_skies ) ) ] )
case 5:server_cmd("sv_skyname %s", night_skies[ random_num( 0, charsmax( night_skies ) ) ] )
case 6:server_cmd("sv_skyname %s", morning_skies[ random_num( 0, charsmax( morning_skies ) ) ] )
case 7:server_cmd("sv_skyname %s", morning_skies[ random_num( 0, charsmax( morning_skies ) ) ] )
case 8:server_cmd("sv_skyname %s", morning_skies[ random_num( 0, charsmax( morning_skies ) ) ] )
case 9:server_cmd("sv_skyname %s", morning_skies[ random_num( 0, charsmax( morning_skies ) ) ] )
case 10:server_cmd("sv_skyname %s", morning_skies[ random_num( 0, charsmax( morning_skies ) ) ] )
case 11:server_cmd("sv_skyname %s", morning_skies[ random_num( 0, charsmax( morning_skies ) ) ] )
case 12:server_cmd("sv_skyname %s", day_skies[ random_num( 0, charsmax( day_skies ) ) ] )
case 13:server_cmd("sv_skyname %s", day_skies[ random_num( 0, charsmax( day_skies ) ) ] )
case 14:server_cmd("sv_skyname %s", day_skies[ random_num( 0, charsmax( day_skies ) ) ] )
case 15:server_cmd("sv_skyname %s", day_skies[ random_num( 0, charsmax( day_skies ) ) ] )
case 16:server_cmd("sv_skyname %s", day_skies[ random_num( 0, charsmax( day_skies ) ) ] )
case 17:server_cmd("sv_skyname %s", evening_skies[ random_num( 0, charsmax( evening_skies ) ) ] )
case 18:server_cmd("sv_skyname %s", evening_skies[ random_num( 0, charsmax( evening_skies ) ) ] )
case 19:server_cmd("sv_skyname %s", evening_skies[ random_num( 0, charsmax( evening_skies ) ) ] )
case 20:server_cmd("sv_skyname %s", evening_skies[ random_num( 0, charsmax( evening_skies ) ) ] )
case 21:server_cmd("sv_skyname %s", evening_skies[ random_num( 0, charsmax( evening_skies ) ) ] )
case 22:server_cmd("sv_skyname %s", evening_skies[ random_num( 0, charsmax( evening_skies ) ) ] )
case 23:server_cmd("sv_skyname %s", evening_skies[ random_num( 0, charsmax( evening_skies ) ) ] )
}
return PLUGIN_CONTINUE
}
public hallowman(id)
{
new name[33]
new CurrentTime[9]
new Hours[3]
new iHours
get_time("%H", Hours, 2)
iHours = str_to_num(Hours)
get_time("%H:%M:%S", CurrentTime, 8)
get_user_name(id, name, 32)
if ( iHours == 0 || iHours == 1 || iHours == 2 || iHours == 3 || iHours == 4 || iHours == 5)
{
set_hudmessage(0, 191, 255, -1.0, 0.3, 0, 6.0, 5.0)
show_hudmessage(id, "%L", id, "HELLOW_NIGHT", name, CurrentTime)
}
if ( iHours == 6 || iHours == 7 || iHours == 8 || iHours == 9 || iHours == 10 || iHours == 11 )
{
set_hudmessage(46, 139, 87, -1.0, 0.3, 0, 6.0, 5.0)
show_hudmessage(id, "%L", id, "HELLOW_MORNING", name, CurrentTime)
}
if ( iHours == 12 || iHours == 13 || iHours == 14 || iHours == 15 || iHours == 16 )
{
set_hudmessage(0, 255, 0, -1.0, 0.3, 0, 6.0, 5.0)
show_hudmessage(id, "%L", id, "HELLOW_DAY", name, CurrentTime)
}
if ( iHours == 17 || iHours == 18 || iHours == 19 || iHours == 20 || iHours == 21 || iHours == 22 || iHours == 23 )
{
set_hudmessage(112, 128, 144, -1.0, 0.3, 0, 6.0, 5.0)
show_hudmessage(id, "%L", id, "HELLO_EVENING", name, CurrentTime)
}
}