[Break] Initial commit.
This commit is contained in:
parent
191db90c38
commit
7e45230930
220
Break/scripting/Break.sp
Normal file
220
Break/scripting/Break.sp
Normal file
@ -0,0 +1,220 @@
|
|||||||
|
#pragma semicolon 1
|
||||||
|
#pragma newdecls required
|
||||||
|
|
||||||
|
#include <sourcemod>
|
||||||
|
#include <cstrike>
|
||||||
|
#include <zombiereloaded>
|
||||||
|
|
||||||
|
/* INTS */
|
||||||
|
int g_iBreak = 0;
|
||||||
|
|
||||||
|
/* BOOLS */
|
||||||
|
bool g_bBreak = false;
|
||||||
|
|
||||||
|
/* HANDLES */
|
||||||
|
Handle g_hBreak = null;
|
||||||
|
|
||||||
|
/* FORWARDS */
|
||||||
|
GlobalForward g_hFwd_OnBreakStarted = null;
|
||||||
|
GlobalForward g_hFwd_OnBreakFinished = null;
|
||||||
|
GlobalForward g_hFwd_OnBreakCancelled = null;
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Plugin myinfo =
|
||||||
|
{
|
||||||
|
name = "Break",
|
||||||
|
author = "zaCade",
|
||||||
|
description = "Allows for making breaks during events ect.",
|
||||||
|
version = "1.0.0"
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public APLRes AskPluginLoad2(Handle hMyself, bool bLate, char[] sError, int iErrorSize)
|
||||||
|
{
|
||||||
|
CreateNative("Break_IsBreakActive", Native_IsBreakActive);
|
||||||
|
|
||||||
|
RegPluginLibrary("Break");
|
||||||
|
return APLRes_Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public void OnPluginStart()
|
||||||
|
{
|
||||||
|
g_hFwd_OnBreakStarted = new GlobalForward("Break_OnBreakStarted", ET_Ignore);
|
||||||
|
g_hFwd_OnBreakFinished = new GlobalForward("Break_OnBreakFinished", ET_Ignore);
|
||||||
|
g_hFwd_OnBreakCancelled = new GlobalForward("Break_OnBreakCancelled", ET_Ignore);
|
||||||
|
|
||||||
|
RegAdminCmd("sm_break", Command_InitiateBreak, ADMFLAG_BAN);
|
||||||
|
RegAdminCmd("sm_cancelbreak", Command_CancelBreak, ADMFLAG_BAN);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action Command_InitiateBreak(int iClient, int iArgs)
|
||||||
|
{
|
||||||
|
if (iArgs < 1)
|
||||||
|
{
|
||||||
|
ReplyToCommand(iClient, "[SM] Usage: sm_break <time>");
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_bBreak)
|
||||||
|
{
|
||||||
|
ReplyToCommand(iClient, "[SM] Break already in progress.");
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
char sArgs[16];
|
||||||
|
GetCmdArg(1, sArgs, sizeof(sArgs));
|
||||||
|
|
||||||
|
int iDuration;
|
||||||
|
if (!StringToIntEx(sArgs, iDuration) || iDuration <= 0)
|
||||||
|
{
|
||||||
|
ReplyToCommand(iClient, "[SM] Invalid duration specified.");
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
InitiateBreak(iDuration);
|
||||||
|
|
||||||
|
LogAction(iClient, -1, "\"%L\" initiated a \"%d\" minutes break.", iClient, iDuration);
|
||||||
|
PrintToChatAll("[SM] %N: Initiated a %d minutes break.", iClient, iDuration);
|
||||||
|
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action Command_CancelBreak(int iClient, int iArgs)
|
||||||
|
{
|
||||||
|
if (!g_bBreak)
|
||||||
|
{
|
||||||
|
ReplyToCommand(iClient, "[SM] No break in progress.");
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
CancelBreak();
|
||||||
|
|
||||||
|
LogAction(iClient, -1, "\"%L\" cancelled the break.", iClient);
|
||||||
|
PrintToChatAll("[SM] %N: Cancelled the break.", iClient);
|
||||||
|
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
stock void ResetVariables()
|
||||||
|
{
|
||||||
|
g_iBreak = 0;
|
||||||
|
g_bBreak = false;
|
||||||
|
|
||||||
|
if (g_hBreak != null)
|
||||||
|
{
|
||||||
|
KillTimer(g_hBreak);
|
||||||
|
g_hBreak = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
stock void InitiateBreak(int iLength = 0)
|
||||||
|
{
|
||||||
|
ResetVariables();
|
||||||
|
|
||||||
|
g_bBreak = true;
|
||||||
|
g_hBreak = CreateTimer(1.0, OnBreakTimer, iLength * 60, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
|
||||||
|
|
||||||
|
Call_StartForward(g_hFwd_OnBreakStarted);
|
||||||
|
Call_Finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
stock void CancelBreak()
|
||||||
|
{
|
||||||
|
ResetVariables();
|
||||||
|
|
||||||
|
Call_StartForward(g_hFwd_OnBreakCancelled);
|
||||||
|
Call_Finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action OnBreakTimer(Handle hTimer, int iLength)
|
||||||
|
{
|
||||||
|
if (g_iBreak >= iLength)
|
||||||
|
{
|
||||||
|
ResetVariables();
|
||||||
|
|
||||||
|
Call_StartForward(g_hFwd_OnBreakFinished);
|
||||||
|
Call_Finish();
|
||||||
|
|
||||||
|
CS_TerminateRound(1.0, CSRoundEnd_GameStart, false);
|
||||||
|
|
||||||
|
return Plugin_Stop;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_iBreak++;
|
||||||
|
|
||||||
|
float flTimeLeft = float(iLength - g_iBreak);
|
||||||
|
if (flTimeLeft > 60)
|
||||||
|
PrintCenterTextAll("Break ends in %d minutes.", RoundToCeil(flTimeLeft / 60));
|
||||||
|
else
|
||||||
|
PrintCenterTextAll("Break ends in %d seconds.", RoundToCeil(flTimeLeft));
|
||||||
|
|
||||||
|
return Plugin_Continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action CS_OnTerminateRound(float &flDelay, CSRoundEndReason &iRoundEndReason)
|
||||||
|
{
|
||||||
|
if(g_bBreak)
|
||||||
|
return Plugin_Handled;
|
||||||
|
|
||||||
|
return Plugin_Continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action ZR_OnInfectCountdown()
|
||||||
|
{
|
||||||
|
if(g_bBreak)
|
||||||
|
return Plugin_Handled;
|
||||||
|
|
||||||
|
return Plugin_Continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action ZR_OnClientInfect(int &iClient, int &iAttacker, bool &bMotherInfect, bool &bRespawnOverride, bool &bRespawn)
|
||||||
|
{
|
||||||
|
if(g_bBreak)
|
||||||
|
return Plugin_Handled;
|
||||||
|
|
||||||
|
return Plugin_Continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public int Native_IsBreakActive(Handle hPlugin, int iNumParams)
|
||||||
|
{
|
||||||
|
return g_bBreak;
|
||||||
|
}
|
51
Break/scripting/include/Break.inc
Normal file
51
Break/scripting/include/Break.inc
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#if defined _Break_include
|
||||||
|
#endinput
|
||||||
|
#endif
|
||||||
|
#define _Break_include
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a break is started
|
||||||
|
*
|
||||||
|
* @return None
|
||||||
|
*/
|
||||||
|
forward void Break_OnBreakStarted();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a break is finished
|
||||||
|
*
|
||||||
|
* @return None
|
||||||
|
*/
|
||||||
|
forward void Break_OnBreakFinished();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a break is cancelled
|
||||||
|
*
|
||||||
|
* @return None
|
||||||
|
*/
|
||||||
|
forward void Break_OnBreakCancelled();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns if a break is active
|
||||||
|
*
|
||||||
|
* @return True when in break, false otherwise
|
||||||
|
*/
|
||||||
|
native bool Break_IsBreakActive();
|
||||||
|
|
||||||
|
public SharedPlugin __pl_Break =
|
||||||
|
{
|
||||||
|
name = "Break",
|
||||||
|
file = "Break.smx",
|
||||||
|
|
||||||
|
#if defined REQUIRE_PLUGIN
|
||||||
|
required = 1
|
||||||
|
#else
|
||||||
|
required = 0
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
#if !defined REQUIRE_PLUGIN
|
||||||
|
public void __pl_Break_SetNTVOptional()
|
||||||
|
{
|
||||||
|
MarkNativeAsOptional("Break_IsBreakActive");
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user