add FailNadeFriday

This commit is contained in:
BotoX 2018-08-07 22:55:44 +02:00
parent 6c13d692a0
commit 5a85455187
2 changed files with 180 additions and 0 deletions

View File

@ -0,0 +1,179 @@
#pragma semicolon 1
#include <sourcemod>
#include "nominations_extended.inc"
#pragma newdecls required
char g_sBlacklistedMapsPath[PLATFORM_MAX_PATH];
char g_sExtraMapsPath[PLATFORM_MAX_PATH];
public Plugin myinfo =
{
name = "Failnade Fridays",
author = "Obus",
description = "",
version = "",
url = ""
};
public void OnPluginStart()
{
BuildPath(Path_SM, g_sBlacklistedMapsPath, sizeof(g_sBlacklistedMapsPath), "configs/failnadefridayblacklist.cfg");
BuildPath(Path_SM, g_sExtraMapsPath, sizeof(g_sExtraMapsPath), "configs/failnadefridayextra.cfg");
if (!FileExists(g_sBlacklistedMapsPath))
LogMessage("configs/failnadefridayblacklist.cfg missing, is this intended?");
if (!FileExists(g_sExtraMapsPath))
LogMessage("configs/failnadefridayextra.cfg missing, is this intended?");
}
public void OnClientPutInServer(int client)
{
if (IsVoteInProgress())
return;
if (!IsItFailnadeTime())
return;
Panel hNotifyPanel = new Panel(GetMenuStyleHandle(MenuStyle_Radio));
hNotifyPanel.SetTitle("*** It's Fail Nade Friday! ***");
hNotifyPanel.DrawItem("", ITEMDRAW_SPACER);
hNotifyPanel.DrawItem("** Nades have a much higher knockback than usual for today. **", ITEMDRAW_RAWLINE);
hNotifyPanel.DrawItem("** In addition to that, extra maps have been added to rotation for today! **", 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_sBlacklistedMapsPath))
SetFailState("configs/failnadefriday.cfg missing!");
if (IsItFailnadeTime())
{
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<Handle>(hExtraMaps), SortFuncADTArray_SortAlphabetical);
PushMapsIntoNominationPool(hExtraMaps);
delete hExtraMapsConfig;
delete hExtraMaps;
char sMap[64];
GetCurrentMap(sMap, sizeof(sMap));
File hBlacklistedMapsConfig = OpenFile(g_sBlacklistedMapsPath, "r");
while (!hBlacklistedMapsConfig.EndOfFile())
{
char sLine[128];
if (!hBlacklistedMapsConfig.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 (strcmp(sLine, sMap, false) == 0)
{
delete hBlacklistedMapsConfig;
return;
}
}
delete hBlacklistedMapsConfig;
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<ArrayList>(hExtraMaps).GetString(idx1, sStr1, sizeof(sStr1));
view_as<ArrayList>(hExtraMaps).GetString(idx2, sStr2, sizeof(sStr2));
return strcmp(sStr2, sStr1, false);
}
public Action Timer_LoadConfig(Handle hThis)
{
ServerCommand("exec failnadefriday");//2lazy
}
stock bool IsItFailnadeTime()
{
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;
}

View File

@ -0,0 +1 @@
../mapchooser_extended/scripting/include/nominations_extended.inc