L L4D2node

CServerPlugin::VerifyPluginSignatures

0x00209460 · 332 bytes · __thiscall

_ZN13CServerPlugin22VerifyPluginSignaturesEv

Decompiled

undefined (1 param)

/* CServerPlugin::VerifyPluginSignatures() */

void __thiscall CServerPlugin::VerifyPluginSignatures(CServerPlugin *this)

{
  int iVar1;
  int *piVar2;
  KeyValues *pKVar3;
  code *pcVar4;
  uint in_stack_ffffffc8;
  char *pcVar5;
  
  UpdateInvalidPluginString(this);
  UpdateInstalledPluginInfo(this);
  if (g_pMatchFramework != (int *)0x0) {
    iVar1 = (**(code **)(*g_pMatchFramework + 0x1c))(g_pMatchFramework);
    if (iVar1 != 0) {
      if (this[0xc1c] != (CServerPlugin)0x0) {
        piVar2 = (int *)(**(code **)(*g_pMatchFramework + 0x1c))(g_pMatchFramework);
        pcVar4 = *(code **)(*piVar2 + 8);
        pKVar3 = KeyValues::operator_new((KeyValues *)0x2c,in_stack_ffffffc8);
                    /* try { // try from 0020959d to 002095a1 has its CatchHandler @ 002095b3 */
        KeyValues::KeyValues(pKVar3,"OnClientPluginLoadBlocked",(IKeyValuesSystem *)0x0,false);
LAB_002095a2:
        (*pcVar4)(piVar2,pKVar3);
        return;
      }
      if (this[0x1c] == (CServerPlugin)0x0) {
        piVar2 = (int *)CommandLine_Tier0();
        pcVar5 = "-insecure";
        iVar1 = (**(code **)(*piVar2 + 0x28))(piVar2);
        if (iVar1 != 0) {
          piVar2 = (int *)(**(code **)(*g_pMatchFramework + 0x1c))(g_pMatchFramework);
          pcVar4 = *(code **)(*piVar2 + 8);
          pKVar3 = KeyValues::operator_new((KeyValues *)0x2c,(uint)pcVar5);
                    /* try { // try from 00209556 to 0020955a has its CatchHandler @ 002095d7 */
          KeyValues::KeyValues(pKVar3,"OnClientInsecureWarning",(IKeyValuesSystem *)0x0,false);
          goto LAB_002095a2;
        }
      }
      else {
        piVar2 = (int *)(**(code **)(*g_pMatchFramework + 0x1c))(g_pMatchFramework);
        pcVar4 = *(code **)(*piVar2 + 8);
        pKVar3 = KeyValues::operator_new((KeyValues *)0x2c,in_stack_ffffffc8);
                    /* try { // try from 002094e3 to 002094e7 has its CatchHandler @ 002095c5 */
        KeyValues::KeyValues(pKVar3,"OnClientPluginWarning","PluginName",(char *)(this + 0x1c));
        (*pcVar4)(piVar2,pKVar3);
      }
    }
  }
  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.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)