Hitmarker: check for outputs
This commit is contained in:
parent
09ce29cda8
commit
0cbb43502c
@ -5,14 +5,18 @@
|
|||||||
#include <clientprefs>
|
#include <clientprefs>
|
||||||
#include <multicolors>
|
#include <multicolors>
|
||||||
#include <dhooks>
|
#include <dhooks>
|
||||||
|
#include <outputinfo>
|
||||||
|
|
||||||
|
#pragma newdecls required
|
||||||
|
#pragma semicolon 1
|
||||||
|
|
||||||
#define SPECMODE_NONE 0
|
#define SPECMODE_NONE 0
|
||||||
#define SPECMODE_FIRSTPERSON 4
|
#define SPECMODE_FIRSTPERSON 4
|
||||||
#define SPECMODE_THIRDPERSON 5
|
#define SPECMODE_THIRDPERSON 5
|
||||||
#define SPECMODE_FREELOOK 6
|
#define SPECMODE_FREELOOK 6
|
||||||
|
|
||||||
#pragma newdecls required
|
#define MAX_EDICTS 4096
|
||||||
#pragma semicolon 1
|
bool g_bHasOutputs[MAX_EDICTS];
|
||||||
|
|
||||||
bool g_bShowBossHitmarker[MAXPLAYERS+1];
|
bool g_bShowBossHitmarker[MAXPLAYERS+1];
|
||||||
bool g_bShowZombieHitmarker[MAXPLAYERS+1];
|
bool g_bShowZombieHitmarker[MAXPLAYERS+1];
|
||||||
@ -33,6 +37,8 @@ Handle g_hCookie_HitmarkerSound;
|
|||||||
Handle g_hCookie_HitmarkerSoundVolume;
|
Handle g_hCookie_HitmarkerSoundVolume;
|
||||||
Handle g_hCookie_HitmarkerSkin;
|
Handle g_hCookie_HitmarkerSkin;
|
||||||
|
|
||||||
|
ConVar g_hCVar_Debug;
|
||||||
|
|
||||||
bool g_bLate;
|
bool g_bLate;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -41,9 +47,9 @@ bool g_bLate;
|
|||||||
public Plugin myinfo =
|
public Plugin myinfo =
|
||||||
{
|
{
|
||||||
name = "Hitmarker",
|
name = "Hitmarker",
|
||||||
author = "Neon & Nano",
|
author = "Neon",
|
||||||
description = "Players can enable or disable their hitmarkers while shooting zombies or bosses",
|
description = "Players can enable or disable their hitmarkers while shooting zombies or bosses",
|
||||||
version = "3.0.1",
|
version = "3.1",
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -80,6 +86,9 @@ public void OnPluginStart()
|
|||||||
g_hCookie_HitmarkerSoundVolume = RegClientCookie("hitmarker_sound_volume", "", CookieAccess_Private);
|
g_hCookie_HitmarkerSoundVolume = RegClientCookie("hitmarker_sound_volume", "", CookieAccess_Private);
|
||||||
g_hCookie_HitmarkerSkin = RegClientCookie("hitmarker_skin", "", CookieAccess_Private);
|
g_hCookie_HitmarkerSkin = RegClientCookie("hitmarker_skin", "", CookieAccess_Private);
|
||||||
|
|
||||||
|
g_hCVar_Debug = CreateConVar("sm_hitmarker_debug", "0", "", FCVAR_NONE, true, 0.0, true, 1.0);
|
||||||
|
AutoExecConfig();
|
||||||
|
|
||||||
RegConsoleCmd("sm_hm", OnHitmarkerSettings);
|
RegConsoleCmd("sm_hm", OnHitmarkerSettings);
|
||||||
RegConsoleCmd("sm_hitmarker", OnHitmarkerSettings);
|
RegConsoleCmd("sm_hitmarker", OnHitmarkerSettings);
|
||||||
RegConsoleCmd("sm_bhm", OnToggleBossHitmarker);
|
RegConsoleCmd("sm_bhm", OnToggleBossHitmarker);
|
||||||
@ -420,6 +429,18 @@ public int MenuHandler_MainMenu(Menu menu, MenuAction action, int client, int se
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public void OnEntitySpawned(int Entity, const char[] sClassname)
|
||||||
|
{
|
||||||
|
int ent = EntRefToEntIndex(Entity);
|
||||||
|
if ((GetOutputCount(ent, "m_OnDamaged") > 0) || (GetOutputCount(ent, "m_OnHealthChanged") > 0))
|
||||||
|
g_bHasOutputs[ent] = true;
|
||||||
|
else
|
||||||
|
g_bHasOutputs[ent] = false;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -450,14 +471,18 @@ public void OnBossDamaged(CBoss Boss, CConfig Config, int client, float damage)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public MRESReturn Detour_OnTakeDamage(int entity, Handle hReturn, Handle hParams)
|
public MRESReturn Detour_OnTakeDamage(int entity, Handle hReturn, Handle hParams)
|
||||||
{
|
{
|
||||||
int iHealth = GetEntProp(entity, Prop_Data, "m_iHealth");
|
|
||||||
if (!iHealth)
|
|
||||||
return MRES_Ignored;
|
|
||||||
|
|
||||||
int client = DHookGetParamObjectPtrVar(hParams, 1, 3*(3*4) + 0, ObjectValueType_Ehandle);
|
|
||||||
//https://github.com/alliedmodders/hl2sdk/blob/css/game/shared/takedamageinfo.h#L115
|
//https://github.com/alliedmodders/hl2sdk/blob/css/game/shared/takedamageinfo.h#L115
|
||||||
//float dmg = DHookGetParamObjectPtrVar(hParams, 1, 48, ObjectValueType_Float);
|
int iHealth = GetEntProp(entity, Prop_Data, "m_iHealth");
|
||||||
//int ret = DHookGetReturn(hReturn);
|
int client = DHookGetParamObjectPtrVar(hParams, 1, 3*(3*4) + 0, ObjectValueType_Ehandle);
|
||||||
|
|
||||||
|
if (g_hCVar_Debug.BoolValue)
|
||||||
|
{
|
||||||
|
float dmg = DHookGetParamObjectPtrVar(hParams, 1, 48, ObjectValueType_Float);
|
||||||
|
PrintToChatAll("Detour_OnTakeDamage: ent: %d; client: %d; m_iHealth: %d; output: %d; dmg: %f", entity, client, iHealth, g_bHasOutputs[entity], dmg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!iHealth && !g_bHasOutputs[entity])
|
||||||
|
return MRES_Ignored;
|
||||||
|
|
||||||
if (!IsValidClient(client))
|
if (!IsValidClient(client))
|
||||||
return MRES_Ignored;
|
return MRES_Ignored;
|
||||||
|
Loading…
Reference in New Issue
Block a user