CBaseEntity::_GLOBAL__sub_I_m_bInDebugSelect
0x00396f90 · 4299 bytes · __cdecl
Decompiled
undefined (0 params)
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CBaseEntity::m_bInDebugSelect */
void CBaseEntity::_GLOBAL__sub_I_m_bInDebugSelect(void)
{
int iVar1;
undefined4 *puVar2;
undefined4 *puVar3;
undefined4 *puVar4;
::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 *)sv_netvisdist,"sv_netvisdist","10000",0x4002,
"Test networking visibility distance");
__cxa_atexit(ConVar::~ConVar,sv_netvisdist,&__dso_handle);
ConVar::ConVar((ConVar *)ent_show_contexts,"ent_show_contexts","0",0,
"Show entity contexts in ent_text display");
__cxa_atexit(ConVar::~ConVar,ent_show_contexts,&__dso_handle);
ConVar::ConVar((ConVar *)sv_script_think_interval,"sv_script_think_interval","0.1",0);
__cxa_atexit(ConVar::~ConVar,sv_script_think_interval,&__dso_handle);
CNonModifiedPointerProxy::CNonModifiedPointerProxy
((CNonModifiedPointerProxy *)&__proxy_SendProxy_ClientSideAnimation,
SendProxy_ClientSideAnimation);
SendTable::SendTable((SendTable *)DT_AnimTimeMustBeFirst::g_SendTable);
__cxa_atexit(SendTable::~SendTable,DT_AnimTimeMustBeFirst::g_SendTable,&__dso_handle);
DT_AnimTimeMustBeFirst::g_SendTableInit =
ServerClassInit<DT_AnimTimeMustBeFirst::ignored>((ignored *)0x0);
puVar4 = (undefined4 *)g_pServerClassHead;
g_CBaseEntity_ClassReg._0_4_ = s_CBaseEntity_00c5c304;
g_CBaseEntity_ClassReg._4_4_ = DT_BaseEntity::g_SendTable;
g_CBaseEntity_ClassReg._16_4_ = 0xffff;
if ((undefined4 *)g_pServerClassHead == (undefined4 *)0x0) {
g_pServerClassHead = g_CBaseEntity_ClassReg;
g_CBaseEntity_ClassReg._8_4_ = 0;
}
else {
puVar3 = *(undefined4 **)((int)g_pServerClassHead + 8);
iVar1 = _V_stricmp(*(char **)g_pServerClassHead,"CBaseEntity");
puVar2 = (undefined4 *)g_pServerClassHead;
if (iVar1 < 1) {
if (puVar3 != (undefined4 *)0x0) {
do {
puVar2 = puVar3;
iVar1 = _V_stricmp((char *)*puVar2,"CBaseEntity");
puVar3 = puVar2;
if (0 < iVar1) goto LAB_00398036;
puVar3 = (undefined4 *)puVar2[2];
puVar4 = puVar2;
} while ((undefined4 *)puVar2[2] != (undefined4 *)0x0);
puVar3 = (undefined4 *)0x0;
}
LAB_00398036:
g_CBaseEntity_ClassReg._8_4_ = puVar3;
puVar4[2] = g_CBaseEntity_ClassReg;
}
else {
g_pServerClassHead = g_CBaseEntity_ClassReg;
g_CBaseEntity_ClassReg._8_4_ = puVar2;
}
}
SendTable::SendTable((SendTable *)DT_BaseEntity::g_SendTable);
__cxa_atexit(SendTable::~SendTable,DT_BaseEntity::g_SendTable,&__dso_handle);
DT_BaseEntity::g_SendTableInit = ServerClassInit<DT_BaseEntity::ignored>((ignored *)0x0);
ConVar::ConVar((ConVar *)autoaim_viewing_client,"autoaim_viewing_client","1",2);
__cxa_atexit(ConVar::~ConVar,autoaim_viewing_client,&__dso_handle);
ConVar::ConVar((ConVar *)debug_overlay_fullposition,"debug_overlay_fullposition","0",0);
__cxa_atexit(ConVar::~ConVar,debug_overlay_fullposition,&__dso_handle);
ConVar::ConVar((ConVar *)ent_text_allow_script,"ent_text_allow_script","0",0x4000);
__cxa_atexit(ConVar::~ConVar,ent_text_allow_script,&__dso_handle);
thinkfunc_t_DataDescInit::g_DataMapHolder = DataMapInit<thinkfunc_t>((thinkfunc_t *)0x0);
ResponseContext_t_DataDescInit::g_DataMapHolder =
DataMapInit<ResponseContext_t>((ResponseContext_t *)0x0);
CBaseEntity_DataDescInit::g_DataMapHolder = DataMapInit<CBaseEntity>((CBaseEntity *)0x0);
g_CBaseEntity_ScriptDesc._0_4_ = 0;
g_CBaseEntity_ScriptDesc._4_4_ = 0;
g_CBaseEntity_ScriptDesc._8_4_ = 0;
g_CBaseEntity_ScriptDesc._12_4_ = 0;
g_CBaseEntity_ScriptDesc._16_4_ = 0;
g_CBaseEntity_ScriptDesc._20_4_ = 0;
g_CBaseEntity_ScriptDesc._24_4_ = 0;
g_CBaseEntity_ScriptDesc._28_4_ = 0;
g_CBaseEntity_ScriptDesc._32_4_ = 0;
g_CBaseEntity_ScriptDesc._36_4_ = 0;
g_CBaseEntity_ScriptDesc._40_4_ = 0;
g_CBaseEntity_ScriptDesc._44_4_ = 0;
__cxa_atexit(ScriptClassDesc_t::~ScriptClassDesc_t,g_CBaseEntity_ScriptDesc,&__dso_handle);
ConVar::ConVar((ConVar *)ai_LOS_mode,"ai_LOS_mode","0",0x2000);
__cxa_atexit(ConVar::~ConVar,ai_LOS_mode,&__dso_handle);
ConVar::ConVar((ConVar *)ai_debug_los,"ai_debug_los","0",0x4000,
"NPC Line-Of-Sight debug mode. If 1, solid entities that block NPC LOC will be highlighted with white bounding boxes. If 2, it\'ll show non-solid entities that would do it if they were solid."
,CC_AI_LOS_Debug);
__cxa_atexit(ConVar::~ConVar,ai_debug_los,&__dso_handle);
ConVar::ConVar((ConVar *)ent_messages_draw,"ent_messages_draw","0",0x4000,
"Visualizes all entity input/output activity.");
__cxa_atexit(ConVar::~ConVar,ent_messages_draw,&__dso_handle);
g_TeleportStack = 0;
_DAT_00fc0d0c = 0;
_DAT_00fc0d10 = 0;
DAT_00fc0d14 = 0;
_DAT_00fc0d18 = 0;
__cxa_atexit(CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::~CUtlVector,&g_TeleportStack,
&__dso_handle);
g_ModelSoundsCache._22_2_ = 0;
g_ModelSoundsCache._24_2_ = 0xffff;
g_ModelSoundsCache._0_4_ = &PTR__CUtlCachedFileData_00c605d8;
g_ModelSoundsCache._4_4_ = CUtlCachedFileData<CModelSoundsCache>::FileNameHandleLessFunc;
g_ModelSoundsCache._8_4_ = 0;
g_ModelSoundsCache._12_4_ = 0;
g_ModelSoundsCache._16_4_ = 0;
g_ModelSoundsCache._20_2_ = 0xffff;
g_ModelSoundsCache._26_2_ = 0xffff;
g_ModelSoundsCache._28_4_ = 0;
g_ModelSoundsCache._32_4_ = 0;
g_ModelSoundsCache._36_4_ = 0;
g_ModelSoundsCache._40_4_ = 0;
g_ModelSoundsCache._44_4_ = 0;
g_ModelSoundsCache._48_4_ = 0;
/* try { // try from 0039753d to 00397541 has its CatchHandler @ 003980b1 */
CUtlString::CUtlString((CUtlString *)(g_ModelSoundsCache + 0x34),"modelsounds.cache");
/* try { // try from 00397549 to 0039754d has its CatchHandler @ 00398063 */
CUtlString::CUtlString((CUtlString *)(g_ModelSoundsCache + 0x44));
g_ModelSoundsCache[100] = g_ModelSoundsCache[100] & 0xc0;
g_ModelSoundsCache._84_4_ = 5;
g_ModelSoundsCache._88_4_ = 0;
g_ModelSoundsCache._92_4_ = 0;
g_ModelSoundsCache._96_4_ = 1;
__cxa_atexit(CUtlCachedFileData<CModelSoundsCache>::~CUtlCachedFileData,g_ModelSoundsCache,
&__dso_handle);
CUtlSymbolTable::CUtlSymbolTable((CUtlSymbolTable *)g_ModelSoundsSymbolHelper,0,0x20,true);
__cxa_atexit(CUtlSymbolTable::~CUtlSymbolTable,g_ModelSoundsSymbolHelper,&__dso_handle);
CAutoGameSystem::CAutoGameSystem
((CAutoGameSystem *)g_ModelSoundsCacheSaver,"CModelSoundsCacheSaver");
g_ModelSoundsCacheSaver._0_4_ = &PTR_Name_00c605e8;
__cxa_atexit(CModelSoundsCacheSaver::~CModelSoundsCacheSaver,g_ModelSoundsCacheSaver,&__dso_handle
);
CAutoGameSystem::CAutoGameSystem((CAutoGameSystem *)g_ModelPrecacheSystem,"CModelPrecacheSystem");
g_ModelPrecacheSystem._30_2_ = 0;
g_ModelPrecacheSystem._32_2_ = 0xffff;
g_ModelPrecacheSystem._34_2_ = 0xffff;
g_ModelPrecacheSystem._0_4_ = &PTR_Name_00c60648;
g_ModelPrecacheSystem._12_4_ = CDefOps<int>::LessFunc;
g_ModelPrecacheSystem._16_4_ = 0;
g_ModelPrecacheSystem._20_4_ = 0;
g_ModelPrecacheSystem._24_4_ = 0;
g_ModelPrecacheSystem._28_2_ = 0xffff;
g_ModelPrecacheSystem._36_4_ = 0;
__cxa_atexit(CModelPrecacheSystem::~CModelPrecacheSystem,g_ModelPrecacheSystem,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_call,"ent_call",CC_Ent_Call,
"ent_call <funcname> <option:entname> calls function on current look target or filtername, checks on ent, then root, then mode, then map scope"
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_call,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_name,"ent_name",CC_Ent_Name,(char *)0x0,0x4000,
(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_name,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_text,"ent_text",CC_Ent_Text,
"Displays text debugging information about the given entity(ies) on top of the entity (See Overlay Text)\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_text,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_script_dump,"ent_script_dump",CC_Ent_Script_Dump,
"Dumps the names and values of this entity\'s script scope to the console\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_script_dump,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_bbox,"ent_bbox",CC_Ent_BBox,
"Displays the movement bounding box for the given entity(ies) in orange. Some entites will also display entity specific overlays.\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_bbox,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_absbox,"ent_absbox",CC_Ent_AbsBox,
"Displays the total bounding box for the given entity(s) in green. Some entites will also display entity specific overlays.\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_absbox,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_rbox,"ent_rbox",CC_Ent_RBox,
"Displays the total bounding box for the given entity(s) in green. Some entites will also display entity specific overlays.\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_rbox,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_attachments,"ent_attachments",CC_Ent_AttachmentPoints,
"Displays the attachment points on an entity.\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_attachments,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_viewoffset,"ent_viewoffset",CC_Ent_ViewOffset,
"Displays the eye position for the given entity(ies) in red.\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_viewoffset,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_remove,"ent_remove",CC_Ent_Remove,
"Removes the given entity(s)\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_remove,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_remove_all,"ent_remove_all",CC_Ent_RemoveAll,
"Removes all entities of the specified type\n\tArguments: \t{entity_name} / {class_name} "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_remove_all,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_setname,"ent_setname",CC_Ent_SetName,
"Sets the targetname of the given entity(s)\n\tArguments: \t{new entity name} {entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_setname,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)find_ent,"find_ent",CC_Find_Ent,
"Find and list all entities with classnames or targetnames that contain the specified substring.\nFormat: find_ent <substring>\n"
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,find_ent,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)find_ent_index,"find_ent_index",CC_Find_Ent_Index,
"Display data for entity matching specified index.\nFormat: find_ent_index <index>\n",
0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,find_ent_index,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_dump,"ent_dump",CC_Ent_Dump,"Usage:\n ent_dump <entity name>\n",
0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_dump,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)firetarget,"firetarget",CC_Ent_FireTarget,(char *)0x0,0x4000,
(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,firetarget,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_fire,"ent_fire",(ICommandCallback *)&g_EntFireAutoComplete,
"Usage:\n ent_fire <target> [action] [value] [delay]\n",0x4000,
(ICommandCompletionCallback *)((int)&g_EntFireAutoComplete + 4));
__cxa_atexit(ConCommand::~ConCommand,ent_fire,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_cancelpendingentfires,"ent_cancelpendingentfires",
CC_Ent_CancelPendingEntFires,
"Cancels all ent_fire created outputs that are currently waiting for their delay to expire."
,0,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_cancelpendingentfires,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_info,"ent_info",CC_Ent_Info,"Usage:\n ent_info <class name>\n",
0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_info,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_messages,"ent_messages",CC_Ent_Messages,
"Toggles input/output message display for the selected entity(ies). The name of the entity will be displayed as well as any messages that it sends or receives.\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at"
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_messages,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_pause,"ent_pause",CC_Ent_Pause,
"Toggles pausing of input/output message processing for entities. When turned on processing of all message will stop. Any messages displayed with \'ent_messages\' will stop fading and be displayed indefinitely. To step through the messages one by one use \'ent_step\'."
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_pause,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)picker,"picker",CC_Ent_Picker,
"Toggles \'picker\' mode. When picker is on, the bounding box, pivot and debugging text is displayed for whatever entity the player is looking at.\n\tArguments:\tfull - enables all debug information"
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,picker,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_pivot,"ent_pivot",CC_Ent_Pivot,
"Displays the pivot for the given entity(ies).\n\t(y=up=green, z=forward=blue, x=left=red). \n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_pivot,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_step,"ent_step",CC_Ent_Step,
"When \'ent_pause\' is set this will step through one waiting input / output message at a time."
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_step,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_show_response_criteria,"ent_show_response_criteria",
CC_Ent_Show_Response_Criteria,
"Print, to the console, an entity\'s current criteria set used to select responses.\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at "
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_show_response_criteria,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_autoaim,"ent_autoaim",CC_Ent_Autoaim,
"Displays the entity\'s autoaim radius.\n\tArguments: \t{entity_name} / {class_name} / no argument picks what player is looking at"
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_autoaim,&__dso_handle);
ConVar::ConVar((ConVar *)step_spline,"step_spline","0",0);
__cxa_atexit(ConVar::~ConVar,step_spline,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_create,"ent_create",CC_Ent_Create,
"Creates an entity of the given type where the player is looking.",0x4004,
(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_create,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_teleport,"ent_teleport",CC_Ent_Teleport,
"Teleport the specified entity to where the player is looking.\n\tFormat: ent_teleport <entity name>"
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_teleport,&__dso_handle);
ConCommand::ConCommand
((ConCommand *)ent_orient,"ent_orient",CC_Ent_Orient,
"Orient the specified entity to match the player\'s angles. By default, only orients target entity\'s YAW. Use the \'allangles\' option to orient on all axis.\n\tFormat: ent_orient <entity name> <optional: allangles>"
,0x4000,(int_____char_const__char *)0x0);
__cxa_atexit(ConCommand::~ConCommand,ent_orient,&__dso_handle);
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.