From 3bd7a41fd4ff146e6708c2ca21ebdbd978c5f77b Mon Sep 17 00:00:00 2001 From: Dogan Date: Sun, 2 Jun 2019 23:31:34 +0200 Subject: [PATCH] New Plugin: Happy Hour --- HappyHour/scripting/HappyHour.sp | 162 ++++++++++++++++++++++ HappyHour/scripting/include/HappyHour.inc | 33 +++++ 2 files changed, 195 insertions(+) create mode 100644 HappyHour/scripting/HappyHour.sp create mode 100644 HappyHour/scripting/include/HappyHour.inc diff --git a/HappyHour/scripting/HappyHour.sp b/HappyHour/scripting/HappyHour.sp new file mode 100644 index 00000000..f3e8fdc6 --- /dev/null +++ b/HappyHour/scripting/HappyHour.sp @@ -0,0 +1,162 @@ +#pragma semicolon 1 + +#include +#include +#include +#include +#include + +bool g_bHappyHour; +bool g_bHappyHourAdmin; + +int g_iMorningStart; +int g_iMorningEnd; +int g_iNightStart; +int g_iNightEnd; + +ConVar g_cvMorningStart; +ConVar g_cvMorningEnd; +ConVar g_cvNightStart; +ConVar g_cvNightEnd; + +public Plugin myinfo = +{ + name = "Happy Hour", + author = "Dogan + Neon", + description = "Create an happy hour with more rank points", + version = "1.0.0", + url = "" +}; + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + CreateNative("HH_IsItHappyHour", Native_IsItHappyHour); + RegPluginLibrary("HappyHour"); + + return APLRes_Success; +} + +public void OnPluginStart() +{ + g_bHappyHour = false; + g_bHappyHourAdmin = false; + + CreateTimer(15.0, Timer_CheckTime, _, TIMER_REPEAT); + CreateTimer(30.0, MessageHappyHour, _, TIMER_REPEAT); + + g_cvMorningStart = CreateConVar("sm_happyhour_morning_start", "10", "starttime of happy hour in the morning (timezone GMT+1 in summer, GMT+2 in winter)"); + g_cvMorningEnd = CreateConVar("sm_happyhour_morning_end", "14", "endtime of happy hour in the morning/afternoon (timezone GMT+1 in summer, GMT+2 in winter)"); + g_cvNightStart = CreateConVar("sm_happyhour_night_start", "23", "starttime of happy hour in the night (timezone GMT+1 in summer, GMT+2 in winter)"); + g_cvNightEnd = CreateConVar("sm_happyhour_night_end", "3", "endtime of happy hour in the night (timezone GMT+1 in summer, GMT+2 in winter)"); + + RegConsoleCmd("sm_hh", Command_DisplayHappyHour, "Shows if happy hour is currently enabled or not"); + + RegAdminCmd("sm_forcehh", AdminCommand_HappyHour, ADMFLAG_GENERIC, "Toggle to enable/disable Happy Hour. Resets after Mapswitch."); + + AutoExecConfig(true, "plugin.HappyHour"); + GetConVars(); +} + +public void GetConVars() +{ + g_iMorningStart = g_cvMorningStart.IntValue; + g_iMorningEnd = g_cvMorningEnd.IntValue; + g_iNightStart = g_cvNightStart.IntValue; + g_iNightEnd = g_cvNightEnd.IntValue; +} + +public void ConVarChange(ConVar convar, char[] oldValue, char[] newValue) +{ + GetConVars(); +} + +public Action Timer_CheckTime(Handle timer) +{ + if(g_bHappyHourAdmin) + return Plugin_Continue; + + int iTime = GetTime(); + int iHour; + char sTime[10]; + + FormatTime(sTime, sizeof(sTime), "%H", iTime); + + iHour = StringToInt(sTime); + + if (((iHour >= g_iMorningStart) && (iHour < g_iMorningEnd)) || ((iHour >= g_iNightStart) && (iHour < g_iNightEnd))) + { + g_bHappyHour = true; + } + else + { + g_bHappyHour = false; + } + + return Plugin_Continue; +} + +public void OnMapStart() +{ + if(g_bHappyHourAdmin) + { + g_bHappyHourAdmin = false; + } +} + +public Action Command_DisplayHappyHour(int client, int args) +{ + if(g_bHappyHour) + { + ReplyToCommand(client, "[SM] Happy Hour is currently active."); + } + else + { + ReplyToCommand(client, "[SM] Happy Hour is currently not active."); + } + + return Plugin_Handled; +} + +public Action AdminCommand_HappyHour(int client, int args) +{ + ToggleHappyHour(client); + return Plugin_Handled; +} + +public void ToggleHappyHour(int client) +{ + g_bHappyHourAdmin = !g_bHappyHourAdmin; + + if(g_bHappyHour) + { + g_bHappyHour = false; + + ReplyToCommand(client, "[SM] Deactivated Happy Hour."); + CPrintToChatAll("[SM] %N deactivated Happy Hour!", client); + LogAction(client, -1, "\"%L\" deactivated Happy Hour.", client); + } + else + { + g_bHappyHour = true; + + ReplyToCommand(client, "[SM] Activated Happy Hour."); + CPrintToChatAll("[SM] %N activated Happy Hour!", client); + LogAction(client, -1, "\"%L\" activated Happy Hour.", client); + } +} + +public Action MessageHappyHour(Handle timer) +{ + if(g_bHappyHour) + CPrintToChatAll("{cyan}[UNLOZE] {red}Happy Hour {cyan}is currently active! Everyone gets 50%% Bonus on all rank points!"); + + return Plugin_Continue; +} + +public int Native_IsItHappyHour(Handle hPlugin, int numParams) +{ + if(g_bHappyHour) + return true; + + return false; +} \ No newline at end of file diff --git a/HappyHour/scripting/include/HappyHour.inc b/HappyHour/scripting/include/HappyHour.inc new file mode 100644 index 00000000..729fc3db --- /dev/null +++ b/HappyHour/scripting/include/HappyHour.inc @@ -0,0 +1,33 @@ +#if defined _HappyHour_included + #endinput +#endif + +#define _HappyHour_included + +/** + * Check if it is Happy Hour or not + * + * + * @return True if yes, false if no. + */ +native bool HH_IsItHappyHour(); + + +public SharedPlugin __pl_HappyHour = +{ + name = "HappyHour", + file = "HappyHour.smx", + + #if defined REQUIRE_PLUGIN + required = 1 + #else + required = 0 + #endif +}; + +#if !defined REQUIRE_PLUGIN + public void __pl_HappyHour_SetNTVOptional() + { + MarkNativeAsOptional("HH_IsItHappyHour"); + } +#endif