BossHP: General Kenobi cleans house.

This commit is contained in:
zaCade 2018-10-15 23:14:54 +02:00
parent 17dfe2f334
commit 2d3c9e1966
3 changed files with 72 additions and 66 deletions

View File

@ -21,6 +21,8 @@ Handle g_hFwd_OnBossInitialized;
Handle g_hFwd_OnBossDamaged;
Handle g_hFwd_OnBossKilled;
ConVar g_hCvar_DebugMode;
char g_sHUDText[256];
public Plugin myinfo =
@ -34,14 +36,27 @@ public Plugin myinfo =
public void OnPluginStart()
{
g_hFwd_OnBossInitialized = CreateGlobalForward("OnBossInitialized", ET_Ignore, Param_Any);
g_hFwd_OnBossDamaged = CreateGlobalForward("OnBossDamaged", ET_Ignore, Param_Any, Param_Cell, Param_Cell);
g_hFwd_OnBossKilled = CreateGlobalForward("OnBossKilled", ET_Ignore, Param_Any, Param_Cell);
g_hFwd_OnBossInitialized = CreateGlobalForward("OnBossInitialized", ET_Ignore, Param_Any, Param_Any);
g_hFwd_OnBossDamaged = CreateGlobalForward("OnBossDamaged", ET_Ignore, Param_Any, Param_Any, Param_Cell);
g_hFwd_OnBossKilled = CreateGlobalForward("OnBossKilled", ET_Ignore, Param_Any, Param_Any, Param_Cell);
g_hCvar_DebugMode = CreateConVar("bosshp_debug", "0", _, _, true, 0.0, true, 1.0);
HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
HookEntityOutput("env_entity_maker", "OnEntitySpawned", OnEnvEntityMakerEntitySpawned);
}
void LogDebugMessage(const char[] message, any ...)
{
if(g_hCvar_DebugMode.BoolValue)
{
char buffer[1024];
VFormat(buffer, sizeof(buffer), message, 2);
LogMessage(buffer);
}
}
public void OnPluginEnd()
{
Cleanup();
@ -49,16 +64,6 @@ public void OnPluginEnd()
void Cleanup()
{
if(g_aConfig)
{
for(int i = 0; i < g_aConfig.Length; i++)
{
CConfig Config = g_aConfig.Get(i);
delete Config;
}
delete g_aConfig;
}
if(g_aBoss)
{
for(int i = 0; i < g_aBoss.Length; i++)
@ -67,6 +72,7 @@ void Cleanup()
Call_StartForward(g_hFwd_OnBossKilled);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(0);
Call_Finish();
@ -74,6 +80,16 @@ void Cleanup()
}
delete g_aBoss;
}
if(g_aConfig)
{
for(int i = 0; i < g_aConfig.Length; i++)
{
CConfig Config = g_aConfig.Get(i);
delete Config;
}
delete g_aConfig;
}
}
public void OnMapEnd()
@ -415,7 +431,7 @@ public void OnEntitySpawned(int entity)
HookSingleEntityOutput(entity, sOutput, OnEntityOutput, Once);
}
LogMessage("Hooked trigger %s:%s", sTrigger, sOutput);
LogDebugMessage("Hooked trigger %s:%s", sTrigger, sOutput);
}
char sShowTrigger[64];
@ -440,7 +456,7 @@ public void OnEntitySpawned(int entity)
HookSingleEntityOutput(entity, sShowOutput, OnEntityOutputShow, Once);
}
LogMessage("Hooked showtrigger %s:%s", sShowTrigger, sShowOutput);
LogDebugMessage("Hooked showtrigger %s:%s", sShowTrigger, sShowOutput);
}
char sKillTrigger[64];
@ -465,7 +481,7 @@ public void OnEntitySpawned(int entity)
HookSingleEntityOutput(entity, sKillOutput, OnEntityOutputKill, Once);
}
LogMessage("Hooked killtrigger %s:%s", sKillTrigger, sKillOutput);
LogDebugMessage("Hooked killtrigger %s:%s", sKillTrigger, sKillOutput);
}
char sHurtTrigger[64];
@ -489,7 +505,7 @@ public void OnEntitySpawned(int entity)
HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt);
}
LogMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
LogDebugMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
}
}
}
@ -573,9 +589,9 @@ void OnTrigger(int entity, const char[] output, SDKHookType HookType = view_as<S
g_aHadOnce.SetValue(sTemp, true);
if(iTriggerHammerID == -1)
LogMessage("Triggered boss %s(%d) from output %s", sTargetname, entity, output);
LogDebugMessage("Triggered boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered boss #%d(%d) from output %s", iTriggerHammerID, entity, output);
LogDebugMessage("Triggered boss #%d(%d) from output %s", iTriggerHammerID, entity, output);
}
}
}
@ -623,9 +639,9 @@ void OnShowTrigger(int entity, const char[] output, SDKHookType HookType = view_
continue;
if(iShowTriggerHammerID == -1)
LogMessage("Triggered show boss %s(%d) from output %s", sTargetname, entity, output);
LogDebugMessage("Triggered show boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered show boss #%d(%d) from output %s", iShowTriggerHammerID, entity, output);
LogDebugMessage("Triggered show boss #%d(%d) from output %s", iShowTriggerHammerID, entity, output);
if(HookType != view_as<SDKHookType>(-1) && !Config.bMultiTrigger)
{
@ -648,12 +664,12 @@ void OnShowTrigger(int entity, const char[] output, SDKHookType HookType = view_
if(fShowTriggerDelay > 0)
{
Boss.fShowAt = GetGameTime() + fShowTriggerDelay;
LogMessage("Scheduled show(%f) boss %d", fShowTriggerDelay, j);
LogDebugMessage("Scheduled show(%f) boss %d", fShowTriggerDelay, j);
}
else
{
Boss.bShow = true;
LogMessage("Showing boss %d", j);
LogDebugMessage("Showing boss %d", j);
}
}
}
@ -702,9 +718,9 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_
continue;
if(iKillTriggerHammerID == -1)
LogMessage("Triggered kill boss %s(%d) from output %s", sTargetname, entity, output);
LogDebugMessage("Triggered kill boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered kill boss #%d(%d) from output %s", iKillTriggerHammerID, entity, output);
LogDebugMessage("Triggered kill boss #%d(%d) from output %s", iKillTriggerHammerID, entity, output);
if(HookType != view_as<SDKHookType>(-1) && !Config.bMultiTrigger)
{
@ -727,14 +743,15 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_
if(fKillTriggerDelay > 0)
{
Boss.fKillAt = GetGameTime() + fKillTriggerDelay;
LogMessage("Scheduled kill(%f) boss %d", fKillTriggerDelay, j);
LogDebugMessage("Scheduled kill(%f) boss %d", fKillTriggerDelay, j);
}
else
{
LogMessage("Killed boss %d", j);
LogDebugMessage("Killed boss %d", j);
Call_StartForward(g_hFwd_OnBossKilled);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(1);
Call_Finish();
@ -788,10 +805,10 @@ void OnHurtTrigger(int entity, const char[] output, int activator)
if(!StrEqual(output, sHurtOutput))
continue;
// if(iHurtTriggerHammerID == -1)
// LogMessage("Triggered hurt boss %s(%d) from output %s", sTargetname, entity, output);
// else
// LogMessage("Triggered hurt boss #%d(%d) from output %s", iHurtTriggerHammerID, entity, output);
if(iHurtTriggerHammerID == -1)
LogDebugMessage("Triggered hurt boss %s(%d) from output %s", sTargetname, entity, output);
else
LogDebugMessage("Triggered hurt boss #%d(%d) from output %s", iHurtTriggerHammerID, entity, output);
for(int j = 0; j < g_aBoss.Length; j++)
{
@ -805,6 +822,7 @@ void OnHurtTrigger(int entity, const char[] output, int activator)
Call_StartForward(g_hFwd_OnBossDamaged);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(activator);
Call_Finish();
}
@ -892,10 +910,11 @@ public void OnGameFrame()
if(Boss.fKillAt && Boss.fKillAt < GetGameTime())
{ // Delete Boss
LogMessage("Deleting boss %d (KillAt)", i);
LogDebugMessage("Deleting boss %d (KillAt)", i);
Call_StartForward(g_hFwd_OnBossKilled);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(1);
Call_Finish();
@ -921,10 +940,11 @@ public void OnGameFrame()
if(!BossProcess(Boss))
{ // Delete Boss
LogMessage("Deleting boss %d (dead)", i);
LogDebugMessage("Deleting boss %d (dead)", i);
Call_StartForward(g_hFwd_OnBossKilled);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(2);
Call_Finish();
@ -1207,7 +1227,7 @@ bool BossInit(CBoss _Boss)
HookSingleEntityOutput(entity, sShowOutput, OnEntityOutputShow, Once);
}
LogMessage("Hooked showtrigger %s:%s", sShowTrigger, sShowOutput);
LogDebugMessage("Hooked showtrigger %s:%s", sShowTrigger, sShowOutput);
}
}
@ -1234,7 +1254,7 @@ bool BossInit(CBoss _Boss)
HookSingleEntityOutput(entity, sKillOutput, OnEntityOutputKill, Once);
}
LogMessage("Hooked killtrigger %s:%s", sKillTrigger, sKillOutput);
LogDebugMessage("Hooked killtrigger %s:%s", sKillTrigger, sKillOutput);
}
}
@ -1260,17 +1280,18 @@ bool BossInit(CBoss _Boss)
HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt);
}
LogMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
LogDebugMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
}
}
}
char sBoss[64];
_Config.GetName(sBoss, sizeof(sBoss));
LogMessage("Initialized boss %s (template = %d)", sBoss, iTemplateNum);
LogDebugMessage("Initialized boss %s (template = %d)", sBoss, iTemplateNum);
Call_StartForward(g_hFwd_OnBossInitialized);
Call_PushCell(_Boss);
Call_PushCell(_Boss.dConfig);
Call_Finish();
return true;

View File

@ -7,9 +7,6 @@
ArrayList g_hStats[MAXPLAYERS+1];
bool g_bLoadedLate;
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
@ -21,30 +18,17 @@ public Plugin myinfo =
version = "1.0.0",
};
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public APLRes AskPluginLoad2(Handle hThis, bool bLate, char[] err, int iErrLen)
{
g_bLoadedLate = bLate;
return APLRes_Success;
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void OnPluginStart()
{
if (g_bLoadedLate)
for (int client = 1; client <= MaxClients; client++)
{
for (int i = 1; i <= MaxClients; i++)
{
if (!IsClientInGame(i) || IsFakeClient(i))
continue;
if (!IsClientInGame(client))
continue;
OnClientPutInServer(i);
}
OnClientPutInServer(client);
}
}
@ -67,7 +51,7 @@ public void OnClientDisconnect(int client)
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void OnBossDamaged(any Boss, int client)
public void OnBossDamaged(any Boss, any Config, int client)
{
if (!IsValidClient(client))
return;
@ -96,7 +80,7 @@ public void OnBossDamaged(any Boss, int client)
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void OnBossKilled(any Boss, int reason)
public void OnBossKilled(any Boss, any Config, int reason)
{
if (reason != 2)
{
@ -149,11 +133,12 @@ public void OnBossKilled(any Boss, int reason)
if (iSortedCount)
{
CConfig _Config = view_as<CConfig>(Config);
char sBossName[64];
CBoss _Boss = view_as<CBoss>(Boss);
CConfig Config = _Boss.dConfig;
Config.GetName(sBossName, sizeof(sBossName))
delete Config;
_Config.GetName(sBossName, sizeof(sBossName));
delete _Config;
char sBuffer[512];
Format(sBuffer, sizeof(sBuffer), "BOSS DAMAGE [%s]:", sBossName);

View File

@ -4,8 +4,8 @@
#define BossHP_included
forward void OnBossIntialized(any Boss);
forward void OnBossIntialized(any Boss, any Config);
forward void OnBossDamaged(any Boss, int activator);
forward void OnBossDamaged(any Boss, any Config, int activator);
forward void OnBossKilled(any Boss, int reason); //reason: 0 = RoundEnd/MapEnd, 1 = KillTrigger, 2 = Death.
forward void OnBossKilled(any Boss, any Config, int reason); //reason: 0 = RoundEnd/MapEnd, 1 = KillTrigger, 2 = Death.