#pragma semicolon 1 #include #include "nominations_extended.inc" #pragma newdecls required char g_sExtraMapsPath[PLATFORM_MAX_PATH]; public Plugin myinfo = { name = "Special Friday", author = "Obus", description = "", version = "", url = "" }; public void OnPluginStart() { BuildPath(Path_SM, g_sExtraMapsPath, sizeof(g_sExtraMapsPath), "configs/specialfriday.cfg"); if (!FileExists(g_sExtraMapsPath)) LogMessage("configs/specialfriday.cfg missing, is this intended?"); } public void OnClientPutInServer(int client) { if (IsVoteInProgress()) return; if (!IsItFridayTime()) return; MenuSource iOpenMenu = GetClientMenu(client); if (iOpenMenu != MenuSource_None && iOpenMenu == MenuSource_RawPanel) //probably FunMode return; Panel hNotifyPanel = new Panel(GetMenuStyleHandle(MenuStyle_Radio)); hNotifyPanel.SetTitle("*** It's Extended Nomlist Friday! ***"); hNotifyPanel.DrawItem("", ITEMDRAW_SPACER); hNotifyPanel.DrawItem("** Extra maps have been added to the rotation for today. **", ITEMDRAW_RAWLINE); hNotifyPanel.DrawItem("** Type !nominate to nominate them! **", ITEMDRAW_RAWLINE); hNotifyPanel.DrawItem("", ITEMDRAW_SPACER); hNotifyPanel.DrawItem("** Have fun! **", ITEMDRAW_RAWLINE); hNotifyPanel.DrawItem("", ITEMDRAW_SPACER); hNotifyPanel.DrawItem("1. Got it!", ITEMDRAW_RAWLINE); hNotifyPanel.SetKeys(1023); hNotifyPanel.Send(client, MenuHandler_NotifyPanel, 0); delete hNotifyPanel; } int MenuHandler_NotifyPanel(Menu hMenu, MenuAction iAction, int iParam1, int iParam2) { switch (iAction) { case MenuAction_Select, MenuAction_Cancel: delete hMenu; } } public void OnConfigsExecuted() { CreateTimer(5.0, Timer_PostOnConfigsExecuted, TIMER_FLAG_NO_MAPCHANGE, _); } public Action Timer_PostOnConfigsExecuted(Handle hThis) { if (!FileExists(g_sExtraMapsPath)) SetFailState("configs/specialfriday.cfg missing!"); if (IsItFridayTime()) { ArrayList hExtraMaps = new ArrayList(ByteCountToCells(PLATFORM_MAX_PATH)); File hExtraMapsConfig = OpenFile(g_sExtraMapsPath, "r"); while (!hExtraMapsConfig.EndOfFile()) { char sLine[128]; if (!hExtraMapsConfig.ReadLine(sLine, sizeof(sLine))) break; if (strncmp(sLine, "//", 2) == 0) continue; int iCurIndex=0; while (sLine[iCurIndex] != '\0') { if (sLine[iCurIndex] < 0x20 || sLine[iCurIndex] > 0x7F) sLine[iCurIndex] = '\0'; iCurIndex++; } sLine[iCurIndex-1]='\0'; if (IsMapValid(sLine)) hExtraMaps.PushString(sLine); } SortADTArrayCustom(view_as(hExtraMaps), SortFuncADTArray_SortAlphabetical); PushMapsIntoNominationPool(hExtraMaps); delete hExtraMapsConfig; delete hExtraMaps; CreateTimer(3.0, Timer_LoadConfig, _, TIMER_FLAG_NO_MAPCHANGE); } } int SortFuncADTArray_SortAlphabetical(int idx1, int idx2, Handle hExtraMaps, Handle unk) { char sStr1[PLATFORM_MAX_PATH]; char sStr2[PLATFORM_MAX_PATH]; view_as(hExtraMaps).GetString(idx1, sStr1, sizeof(sStr1)); view_as(hExtraMaps).GetString(idx2, sStr2, sizeof(sStr2)); return strcmp(sStr2, sStr1, false); } public Action Timer_LoadConfig(Handle hThis) { ServerCommand("exec specialfriday"); } stock bool IsItFridayTime() { int iTime = GetTime(); int iHour; char sTime[32]; FormatTime(sTime, sizeof(sTime), "%w %H", iTime); iHour = StringToInt(sTime[2]); if ((sTime[0] == '5' && iHour >= 6) || (sTime[0] == '6' && iHour < 6)) return true; return false; }