L L4D2node

_GLOBAL__sub_I___CreateGameRules_CMultiplayRules

0x0037cef0 · 1009 bytes · unknown

Decompiled

undefined (0 params)

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* __CreateGameRules_CMultiplayRules() */

void _GLOBAL__sub_I___CreateGameRules_CMultiplayRules(void)

{
  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;
  UNSPECIFIED_LOGGING_COLOR._0_1_ = 0;
  UNSPECIFIED_LOGGING_COLOR._1_1_ = 0;
  UNSPECIFIED_LOGGING_COLOR._2_1_ = 0;
  UNSPECIFIED_LOGGING_COLOR._3_1_ = 0;
  CGameRulesRegister::CGameRulesRegister
            ((CGameRulesRegister *)__g_GameRulesRegister_CMultiplayRules,"CMultiplayRules",
             __CreateGameRules_CMultiplayRules);
  ConVar::ConVar((ConVar *)mp_chattime,"mp_chattime","10",0x2000,
                 "amount of time players can chat after the game is over",true,1.0,true,120.0);
  __cxa_atexit(ConVar::~ConVar,mp_chattime,&__dso_handle);
  ConVar::ConVar((ConVar *)mp_timelimit,"mp_timelimit","0",0x2100,"game time per map in minutes",
                 MPTimeLimitCallback);
  __cxa_atexit(ConVar::~ConVar,mp_timelimit,&__dso_handle);
  ConVar::ConVar((ConVar *)tv_delaymapchange,"tv_delaymapchange","0",0,
                 "Delays map change until broadcast is complete");
  __cxa_atexit(ConVar::~ConVar,tv_delaymapchange,&__dso_handle);
  ConVar::ConVar((ConVar *)mp_restartgame,"mp_restartgame","0",4,
                 "If non-zero, game will restart in the specified number of seconds");
  __cxa_atexit(ConVar::~ConVar,mp_restartgame,&__dso_handle);
  ConVar::ConVar((ConVar *)mp_waitingforplayers_time,"mp_waitingforplayers_time","0",4,
                 "WaitingForPlayers time length in seconds");
  __cxa_atexit(ConVar::~ConVar,mp_waitingforplayers_time,&__dso_handle);
  ConVar::ConVar((ConVar *)mp_waitingforplayers_restart,"mp_waitingforplayers_restart","0",4,
                 "Set to 1 to start or restart the WaitingForPlayers period.");
  __cxa_atexit(ConVar::~ConVar,mp_waitingforplayers_restart,&__dso_handle);
  ConVar::ConVar((ConVar *)mp_waitingforplayers_cancel,"mp_waitingforplayers_cancel","0",4,
                 "Set to 1 to end the WaitingForPlayers period.");
  __cxa_atexit(ConVar::~ConVar,mp_waitingforplayers_cancel,&__dso_handle);
  ConVar::ConVar((ConVar *)mp_clan_readyrestart,"mp_clan_readyrestart","0",4,
                 "If non-zero, game will restart once someone from each team gives the ready signal"
                );
  __cxa_atexit(ConVar::~ConVar,mp_clan_readyrestart,&__dso_handle);
  ConVar::ConVar((ConVar *)mp_clan_ready_signal,"mp_clan_ready_signal","ready",4,
                 "Text that team leader from each team must speak for the match to begin");
  __cxa_atexit(ConVar::~ConVar,mp_clan_ready_signal,&__dso_handle);
  ConVar::ConVar((ConVar *)nextlevel,"nextlevel","",0x104,
                 "If set to a valid map name, will trigger a changelevel to the specified map at the end of the round"
                );
  __cxa_atexit(ConVar::~ConVar,nextlevel,&__dso_handle);
  CMultiplayRules::m_MapList = 0;
  _DAT_00f7dcc4 = 0;
  _DAT_00f7dcc8 = 0;
  DAT_00f7dccc = 0;
  _DAT_00f7dcd0 = 0;
  __cxa_atexit(CUtlStringList::~CUtlStringList,&CMultiplayRules::m_MapList,&__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)