BossHP: Finish second version of damage callback.
Now with extra forwards.
This commit is contained in:
parent
eb94163ef8
commit
7160defcaa
@ -5,6 +5,7 @@
|
|||||||
#include <sdkhooks>
|
#include <sdkhooks>
|
||||||
#include <sdktools>
|
#include <sdktools>
|
||||||
#include <outputinfo>
|
#include <outputinfo>
|
||||||
|
#include <BossHP>
|
||||||
|
|
||||||
#include <basic>
|
#include <basic>
|
||||||
#include "CConfig.inc"
|
#include "CConfig.inc"
|
||||||
@ -16,6 +17,8 @@ ArrayList g_aConfig;
|
|||||||
ArrayList g_aBoss;
|
ArrayList g_aBoss;
|
||||||
StringMap g_aHadOnce;
|
StringMap g_aHadOnce;
|
||||||
|
|
||||||
|
Handle g_hFwd_OnBossDamaged;
|
||||||
|
|
||||||
char g_sHUDText[256];
|
char g_sHUDText[256];
|
||||||
|
|
||||||
public Plugin myinfo =
|
public Plugin myinfo =
|
||||||
@ -29,6 +32,8 @@ public Plugin myinfo =
|
|||||||
|
|
||||||
public void OnPluginStart()
|
public void OnPluginStart()
|
||||||
{
|
{
|
||||||
|
g_hFwd_OnBossDamaged = CreateGlobalForward("OnBossDamaged", ET_Ignore, Param_Any, Param_Cell, Param_Cell);
|
||||||
|
|
||||||
HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
|
HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
|
||||||
HookEntityOutput("env_entity_maker", "OnEntitySpawned", OnEnvEntityMakerEntitySpawned);
|
HookEntityOutput("env_entity_maker", "OnEntitySpawned", OnEnvEntityMakerEntitySpawned);
|
||||||
}
|
}
|
||||||
@ -471,8 +476,7 @@ public void OnEntitySpawned(int entity)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool Once = !Config.bMultiTrigger;
|
HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt);
|
||||||
HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt, Once);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LogMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
|
LogMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
|
||||||
@ -726,7 +730,7 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnHurtTrigger(int activator, int entity, const char[] output, SDKHookType HookType = view_as<SDKHookType>(-1))
|
void OnHurtTrigger(int entity, const char[] output, int activator)
|
||||||
{
|
{
|
||||||
char sTargetname[64];
|
char sTargetname[64];
|
||||||
GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
|
GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
|
||||||
@ -768,21 +772,27 @@ void OnHurtTrigger(int activator, int entity, const char[] output, SDKHookType H
|
|||||||
if(!StrEqual(output, sHurtOutput))
|
if(!StrEqual(output, sHurtOutput))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(iHurtTriggerHammerID == -1)
|
// if(iHurtTriggerHammerID == -1)
|
||||||
LogMessage("Triggered hurt boss %s(%d) from output %s", sTargetname, entity, output);
|
// LogMessage("Triggered hurt boss %s(%d) from output %s", sTargetname, entity, output);
|
||||||
else
|
// else
|
||||||
LogMessage("Triggered hurt boss #%d(%d) from output %s", iHurtTriggerHammerID, entity, output);
|
// LogMessage("Triggered hurt boss #%d(%d) from output %s", iHurtTriggerHammerID, entity, output);
|
||||||
|
|
||||||
if(HookType != view_as<SDKHookType>(-1) && !Config.bMultiTrigger)
|
for(int j = 0; j < g_aBoss.Length; j++)
|
||||||
{
|
{
|
||||||
if(HookType == SDKHook_OnTakeDamagePost)
|
CBoss Boss = g_aBoss.Get(j);
|
||||||
SDKUnhook(entity, SDKHook_OnTakeDamagePost, OnTakeDamagePostHurt);
|
|
||||||
|
if(Boss.dConfig != Config)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(Boss.iTemplateNum != iTemplateNum)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Call_StartForward(g_hFwd_OnBossDamaged);
|
||||||
|
Call_PushCell(Boss);
|
||||||
|
Call_PushCell(entity);
|
||||||
|
Call_PushCell(activator);
|
||||||
|
Call_Finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -830,7 +840,7 @@ public void OnEntityOutputKill(const char[] output, int caller, int activator, f
|
|||||||
|
|
||||||
public void OnEntityOutputHurt(const char[] output, int caller, int activator, float delay)
|
public void OnEntityOutputHurt(const char[] output, int caller, int activator, float delay)
|
||||||
{
|
{
|
||||||
OnHurtTrigger(activator, caller, output);
|
OnHurtTrigger(caller, output, activator);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnTakeDamagePost(int victim, int attacker, int inflictor, float damage, int damagetype)
|
public void OnTakeDamagePost(int victim, int attacker, int inflictor, float damage, int damagetype)
|
||||||
@ -850,7 +860,7 @@ public void OnTakeDamagePostKill(int victim, int attacker, int inflictor, float
|
|||||||
|
|
||||||
public void OnTakeDamagePostHurt(int victim, int attacker, int inflictor, float damage, int damagetype)
|
public void OnTakeDamagePostHurt(int victim, int attacker, int inflictor, float damage, int damagetype)
|
||||||
{
|
{
|
||||||
OnHurtTrigger(attacker, victim, "OnTakeDamage", SDKHook_OnTakeDamagePost);
|
OnHurtTrigger(victim, "OnTakeDamage", attacker);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnGameFrame()
|
public void OnGameFrame()
|
||||||
@ -1219,8 +1229,7 @@ bool BossInit(CBoss _Boss)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool Once = !_Config.bMultiTrigger;
|
HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt);
|
||||||
HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt, Once);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LogMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
|
LogMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
|
||||||
|
7
BossHP/scripting/include/BossHP.inc
Normal file
7
BossHP/scripting/include/BossHP.inc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#if defined BossHP_included
|
||||||
|
#endinput
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BossHP_included
|
||||||
|
|
||||||
|
forward void OnBossDamaged(any Boss, int entity, int activator);
|
Loading…
Reference in New Issue
Block a user