From 4e32bbf7eea49d2604db4c1b08cfe2c044966f78 Mon Sep 17 00:00:00 2001 From: BotoX Date: Tue, 7 Aug 2018 22:33:42 +0200 Subject: [PATCH] update TeamManager --- TeamManager/scripting/TeamManager.sp | 31 ++++++++++++++-- TeamManager/scripting/include/TeamManager.inc | 36 +++++++++++++++++++ includes/TeamManager.inc | 1 + 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 TeamManager/scripting/include/TeamManager.inc create mode 120000 includes/TeamManager.inc diff --git a/TeamManager/scripting/TeamManager.sp b/TeamManager/scripting/TeamManager.sp index f5ed8ce..3c6491d 100644 --- a/TeamManager/scripting/TeamManager.sp +++ b/TeamManager/scripting/TeamManager.sp @@ -6,6 +6,8 @@ #define MIN_PLAYERS 2 +Handle g_hWarmupEndFwd; + int g_iWarmup = 0; bool g_bWarmup = false; ConVar g_CVar_sm_warmuptime; @@ -24,6 +26,15 @@ public Plugin myinfo = url = "https://github.com/CSSZombieEscape/sm-plugins/tree/master/TeamManager" }; +public APLRes AskPluginLoad2(Handle hThis, bool bLate, char[] err, int iErrLen) +{ + CreateNative("TeamManager_InWarmup", Native_InWarmup); + + RegPluginLibrary("TeamManager"); + + return APLRes_Success; +} + public void OnPluginStart() { if (GetEngineVersion() == Engine_CSGO) @@ -36,6 +47,8 @@ public void OnPluginStart() g_CVar_sm_warmuptime = CreateConVar("sm_warmuptime", "10", "Warmup timer.", 0, true, 0.0, true, 60.0); g_CVar_sm_warmupratio = CreateConVar("sm_warmupratio", "0.60", "Ratio of connected players that need to be in game to start warmup timer.", 0, true, 0.0, true, 1.0); + g_hWarmupEndFwd = CreateGlobalForward("TeamManager_WarmupEnd", ET_Ignore); + AutoExecConfig(true, "plugin.TeamManager"); } @@ -74,7 +87,9 @@ public Action OnWarmupTimer(Handle timer) { g_iWarmup = 0; g_bWarmup = false; - CS_TerminateRound(3.0, CSRoundEnd_GameStart, false); + float fDelay = 3.0; + CS_TerminateRound(fDelay, CSRoundEnd_GameStart, false); + CreateTimer(fDelay, Timer_FireForward, _, TIMER_FLAG_NO_MAPCHANGE); return Plugin_Stop; } @@ -84,6 +99,13 @@ public Action OnWarmupTimer(Handle timer) return Plugin_Continue; } +public Action Timer_FireForward(Handle hThis) +{ + Call_StartForward(g_hWarmupEndFwd); + Call_Finish(); + return Plugin_Handled; +} + public void OnClientDisconnect(int client) { g_TeamChangeQueue[client] = -1; @@ -98,7 +120,7 @@ public Action OnJoinTeamCommand(int client, const char[] command, int argc) { if(GetClientTeam(client) != CS_TEAM_NONE) return Plugin_Continue; - + ShowVGUIPanel(client, "team"); return Plugin_Handled; } @@ -204,3 +226,8 @@ public Action ZR_OnClientInfect(int &client, int &attacker, bool &motherInfect, return Plugin_Continue; } + +public int Native_InWarmup(Handle hPlugin, int numParams) +{ + return g_bWarmup; +} diff --git a/TeamManager/scripting/include/TeamManager.inc b/TeamManager/scripting/include/TeamManager.inc new file mode 100644 index 0000000..0c514ef --- /dev/null +++ b/TeamManager/scripting/include/TeamManager.inc @@ -0,0 +1,36 @@ +#if defined _TeamManager_include + #endinput +#endif +#define _TeamManager_include + +/** + * Called when warmup ends + * + * @return None + */ +forward void TeamManager_WarmupEnd(); + +/** + * Returns the status of warmup + * + * @return bool inwarmup + */ +native bool TeamManager_InWarmup(); + +public SharedPlugin __pl_TeamManager = +{ + name = "TeamManager", + file = "TeamManager.smx", +#if defined REQUIRE_PLUGIN + required = 1 +#else + required = 0 +#endif +}; + +#if !defined REQUIRE_PLUGIN +public void __pl_TeamManager_SetNTVOptional() +{ + MarkNativeAsOptional("TeamManager_InWarmup"); +} +#endif diff --git a/includes/TeamManager.inc b/includes/TeamManager.inc new file mode 120000 index 0000000..c482515 --- /dev/null +++ b/includes/TeamManager.inc @@ -0,0 +1 @@ +../TeamManager/scripting/include/TeamManager.inc \ No newline at end of file