L L4D2node

rr2::CRuleBuilder::Done

0x00bdaa50 · 164 bytes · __thiscall

_ZN3rr212CRuleBuilder4DoneEv

Decompiled

undefined (1 param)

/* rr2::CRuleBuilder::Done() */

void __thiscall rr2::CRuleBuilder::Done(CRuleBuilder *this)

{
  if (*(int *)(this + 4) != 0) {
    Compact(this);
    CUtlVector<rr2::CriterionStatic,CUtlMemoryConservative<rr2::CriterionStatic>>::Sort
              (*(CUtlVector<rr2::CriterionStatic,CUtlMemoryConservative<rr2::CriterionStatic>> **)
                (this + 4),
               ComparatorBySymbol<rr2::CriterionBase,&rr2::CriterionBase::m_name>::
               qsortchild<rr2::CriterionStatic>);
    CUtlVector<rr2::CriterionDynamic,CUtlMemoryConservative<rr2::CriterionDynamic>>::Sort
              ((CUtlVector<rr2::CriterionDynamic,CUtlMemoryConservative<rr2::CriterionDynamic>> *)
               (*(int *)(this + 4) + 0x10),
               ComparatorBySymbol<rr2::CriterionBase,&rr2::CriterionBase::m_name>::
               qsortchild<rr2::CriterionDynamic>);
    CUtlVector<rr2::CriterionLambda,CUtlMemoryConservative<rr2::CriterionLambda>>::Sort
              ((CUtlVector<rr2::CriterionLambda,CUtlMemoryConservative<rr2::CriterionLambda>> *)
               (*(int *)(this + 4) + 0x20),
               ComparatorBySymbol<rr2::CriterionBase,&rr2::CriterionBase::m_name>::
               qsortchild<rr2::CriterionLambda>);
    CUtlVector<rr2::CriterionStatic,CUtlMemoryConservative<rr2::CriterionStatic>>::Sort
              ((CUtlVector<rr2::CriterionStatic,CUtlMemoryConservative<rr2::CriterionStatic>> *)
               (*(int *)(this + 4) + 0x30),
               ComparatorBySymbol<rr2::CriterionBase,&rr2::CriterionBase::m_name>::
               qsortchild<rr2::CriterionStatic>);
    CUtlVector<rr2::CriterionDynamic,CUtlMemoryConservative<rr2::CriterionDynamic>>::Sort
              ((CUtlVector<rr2::CriterionDynamic,CUtlMemoryConservative<rr2::CriterionDynamic>> *)
               (*(int *)(this + 4) + 0x40),
               ComparatorBySymbol<rr2::CriterionBase,&rr2::CriterionBase::m_name>::
               qsortchild<rr2::CriterionDynamic>);
    CUtlVector<rr2::CriterionLambda,CUtlMemoryConservative<rr2::CriterionLambda>>::Sort
              ((CUtlVector<rr2::CriterionLambda,CUtlMemoryConservative<rr2::CriterionLambda>> *)
               (*(int *)(this + 4) + 0x50),
               ComparatorBySymbol<rr2::CriterionBase,&rr2::CriterionBase::m_name>::
               qsortchild<rr2::CriterionLambda>);
  }
  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)