_GLOBAL__sub_I_g_debug_ragdoll_removal
0x00387170 · 1387 bytes · unknown
Decompiled
undefined (0 params)
void _GLOBAL__sub_I_g_debug_ragdoll_removal(void)
{
int iVar1;
int iVar2;
undefined4 *puVar3;
undefined4 *puVar4;
undefined4 *puVar5;
UNSPECIFIED_LOGGING_COLOR._0_1_ = 0;
UNSPECIFIED_LOGGING_COLOR._1_1_ = 0;
UNSPECIFIED_LOGGING_COLOR._2_1_ = 0;
UNSPECIFIED_LOGGING_COLOR._3_1_ = 0;
vec2_origin._0_4_ = 0;
vec2_origin._4_4_ = 0;
vec2_invalid._0_4_ = 0x7f7fffff;
vec2_invalid._4_4_ = 0x7f7fffff;
vec4_origin._0_4_ = 0;
vec4_origin._4_4_ = 0;
vec4_origin._8_4_ = 0;
vec4_origin._12_4_ = 0;
vec4_invalid._0_4_ = 0x7f7fffff;
vec4_invalid._4_4_ = 0x7f7fffff;
vec4_invalid._8_4_ = 0x7f7fffff;
vec4_invalid._12_4_ = 0x7f7fffff;
ConVar::ConVar((ConVar *)g_debug_ragdoll_removal,"g_debug_ragdoll_removal","0",0x6000);
__cxa_atexit(ConVar::~ConVar,g_debug_ragdoll_removal,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_max_fps,"g_ragdoll_max_fps","30",0x2000,
"Clients with framerates less than this will reduce the ideal number of ragdolls to display"
);
__cxa_atexit(ConVar::~ConVar,g_ragdoll_max_fps,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_min_fps,"g_ragdoll_min_fps","10",0x2000,
"Clients with framerates less than this will only show 1 ragdoll of each type");
__cxa_atexit(ConVar::~ConVar,g_ragdoll_min_fps,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_maxcount_gib,"sv_ragdoll_maxcount_gib","30",2,
"Clients will only show this many gib ragdolls");
__cxa_atexit(ConVar::~ConVar,g_ragdoll_maxcount_gib,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_maxcount_generic,"sv_ragdoll_maxcount_generic","45",2,
"Clients will only show this many generic infected ragdolls");
__cxa_atexit(ConVar::~ConVar,g_ragdoll_maxcount_generic,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_maxcount_special,"sv_ragdoll_maxcount_special","9",2,
"Clients will only show this many special ragdolls");
__cxa_atexit(ConVar::~ConVar,g_ragdoll_maxcount_special,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_maxcount_boss,"sv_ragdoll_maxcount_boss","3",2,
"Clients will only show this many boss ragdolls");
__cxa_atexit(ConVar::~ConVar,g_ragdoll_maxcount_boss,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_maxcount_survivor,"sv_ragdoll_maxcount_survivor","3",2,
"Clients will only show this many survivor ragdolls");
__cxa_atexit(ConVar::~ConVar,g_ragdoll_maxcount_survivor,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_maxcount,"sv_ragdoll_maxcount","75",2,
"Clients will only show this many ragdolls overall");
__cxa_atexit(ConVar::~ConVar,g_ragdoll_maxcount,&__dso_handle);
CAutoGameSystemPerFrame::CAutoGameSystemPerFrame
((CAutoGameSystemPerFrame *)s_RagdollLRU,"CRagdollLRURetirement");
s_RagdollLRU._0_4_ = &PTR_Name_00c2d7c8;
iVar2 = 0xfa8ac8;
do {
*(undefined2 *)(iVar2 + -6) = 0xffff;
*(undefined2 *)(iVar2 + -0x10) = 0xffff;
iVar1 = iVar2 + 0x1c;
*(undefined4 *)(iVar2 + -0x1c) = 0;
*(undefined4 *)(iVar2 + -0x18) = 0;
*(undefined4 *)(iVar2 + -0x14) = 0;
*(undefined2 *)(iVar2 + -0xe) = 0xffff;
*(undefined2 *)(iVar2 + -0xc) = 0xffff;
*(undefined2 *)(iVar2 + -10) = 0;
*(undefined2 *)(iVar2 + -8) = 0;
*(undefined4 *)(iVar2 + -4) = 0;
iVar2 = iVar1;
} while (iVar1 != 0xfa8b54);
s_RagdollLRU._152_4_ = 0;
s_RagdollLRU._156_4_ = 0;
s_RagdollLRU._160_4_ = 0;
s_RagdollLRU._164_4_ = 0;
s_RagdollLRU._168_4_ = 0;
s_RagdollLRU._172_4_ = 0;
s_RagdollLRU._180_4_ = 0;
__cxa_atexit(CRagdollLRURetirement::~CRagdollLRURetirement,s_RagdollLRU,&__dso_handle);
ConVar::ConVar((ConVar *)g_ragdoll_max_remove_per_frame,"sv__ragdoll_max_remove_per_frame","1",0);
__cxa_atexit(ConVar::~ConVar,g_ragdoll_max_remove_per_frame,&__dso_handle);
puVar3 = (undefined4 *)g_pServerClassHead;
g_CFuncRagdollFader_ClassReg._0_4_ = s_CFuncRagdollFader_00c2d334;
g_CFuncRagdollFader_ClassReg._4_4_ = DT_FuncRagdollFader::g_SendTable;
g_CFuncRagdollFader_ClassReg._16_4_ = 0xffff;
if ((undefined4 *)g_pServerClassHead == (undefined4 *)0x0) {
g_pServerClassHead = g_CFuncRagdollFader_ClassReg;
g_CFuncRagdollFader_ClassReg._8_4_ = 0;
}
else {
puVar5 = *(undefined4 **)((int)g_pServerClassHead + 8);
iVar2 = _V_stricmp(*(char **)g_pServerClassHead,"CFuncRagdollFader");
puVar4 = (undefined4 *)g_pServerClassHead;
if (iVar2 < 1) {
if (puVar5 != (undefined4 *)0x0) {
do {
puVar4 = puVar5;
iVar2 = _V_stricmp((char *)*puVar4,"CFuncRagdollFader");
puVar5 = puVar4;
if (0 < iVar2) goto LAB_003876b6;
puVar5 = (undefined4 *)puVar4[2];
puVar3 = puVar4;
} while ((undefined4 *)puVar4[2] != (undefined4 *)0x0);
puVar5 = (undefined4 *)0x0;
}
LAB_003876b6:
g_CFuncRagdollFader_ClassReg._8_4_ = puVar5;
puVar3[2] = g_CFuncRagdollFader_ClassReg;
}
else {
g_pServerClassHead = g_CFuncRagdollFader_ClassReg;
g_CFuncRagdollFader_ClassReg._8_4_ = puVar4;
}
}
SendTable::SendTable((SendTable *)DT_FuncRagdollFader::g_SendTable);
__cxa_atexit(SendTable::~SendTable,DT_FuncRagdollFader::g_SendTable,&__dso_handle);
DT_FuncRagdollFader::g_SendTableInit =
ServerClassInit<DT_FuncRagdollFader::ignored>((ignored *)0x0);
func_ragdoll_fader = &PTR_Create_00c2db58;
puVar3 = (undefined4 *)EntityFactoryDictionary();
(**(code **)*puVar3)(puVar3,&func_ragdoll_fader,"func_ragdoll_fader");
CFuncRagdollFader_DataDescInit::g_DataMapHolder =
DataMapInit<CFuncRagdollFader>((CFuncRagdollFader *)0x0);
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
⚠ This function has no mangled symbol — it may be internal/static. The
Linux gamedata field uses @-prefix symbol resolution which
requires an exported mangled name. You'll need a Linux byte signature
for this one (extract via extract_signature.java).
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.