diff --git a/BossHP/scripting/BossHP.sp b/BossHP/scripting/BossHP.sp index b0de4978..d73b28aa 100644 --- a/BossHP/scripting/BossHP.sp +++ b/BossHP/scripting/BossHP.sp @@ -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(-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(-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; diff --git a/BossHP/scripting/BossHP_Ranking.sp b/BossHP/scripting/BossHP_Ranking.sp index 720bac27..663c5bfd 100644 --- a/BossHP/scripting/BossHP_Ranking.sp +++ b/BossHP/scripting/BossHP_Ranking.sp @@ -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(Config); + char sBossName[64]; - CBoss _Boss = view_as(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); diff --git a/BossHP/scripting/include/BossHP.inc b/BossHP/scripting/include/BossHP.inc index 6c403043..0022f7f6 100644 --- a/BossHP/scripting/include/BossHP.inc +++ b/BossHP/scripting/include/BossHP.inc @@ -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.