L L4D2node

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 into addons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)

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.



        
        

⚠ 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.

Return-type handling cheatsheet (DHookReturn)