L L4D2node

CIKContext::Init

0x00b8ad60 · 269 bytes · __thiscall

_ZN10CIKContext4InitEPK10CStudioHdrRK11matrix3x4_tfii

Decompiled

undefined (6 params)

/* CIKContext::Init(CStudioHdr const*, matrix3x4_t const&, float, int, int) */

void __thiscall
CIKContext::Init(CIKContext *this,CStudioHdr *param_1,matrix3x4_t *param_2,float param_3,int param_4
                ,int param_5)

{
  int iVar1;
  CIKContext *pCVar2;
  
  *(CStudioHdr **)(this + 0xff8) = param_1;
  CUtlVector<CUtlVector<ikcontextikrule_t,CUtlMemory<ikcontextikrule_t,int>>,CUtlMemory<CUtlVector<ikcontextikrule_t,CUtlMemory<ikcontextikrule_t,int>>,int>>
  ::RemoveAll((CUtlVector<CUtlVector<ikcontextikrule_t,CUtlMemory<ikcontextikrule_t,int>>,CUtlMemory<CUtlVector<ikcontextikrule_t,CUtlMemory<ikcontextikrule_t,int>>,int>>
               *)(this + 0xffc));
  if (*(int *)(*(int *)param_1 + 0x11c) == 0) {
    *(undefined4 *)(this + 0xff0) = 0;
  }
  else {
    CUtlVector<CUtlVector<ikcontextikrule_t,CUtlMemory<ikcontextikrule_t,int>>,CUtlMemory<CUtlVector<ikcontextikrule_t,CUtlMemory<ikcontextikrule_t,int>>,int>>
    ::SetCount((CUtlVector<CUtlVector<ikcontextikrule_t,CUtlMemory<ikcontextikrule_t,int>>,CUtlMemory<CUtlVector<ikcontextikrule_t,CUtlMemory<ikcontextikrule_t,int>>,int>>
                *)(this + 0xffc),*(int *)(*(int *)param_1 + 0x11c));
    if (*(int *)(this + 0xff0) == 0) {
      *(undefined4 *)(this + 0xff0) = 0xc;
      *(CIKContext **)(this + 0xff4) = this;
      CUtlVector<CIKTarget,CUtlMemoryFixed<CIKTarget,12u,0>>::ShiftElementsRight
                ((CUtlVector<CIKTarget,CUtlMemoryFixed<CIKTarget,12u,0>> *)this,0,0xc);
      memset(this,0,*(int *)(this + 0xff0) * 0x154);
      if (0 < *(int *)(this + 0xff0)) {
        iVar1 = 0;
        pCVar2 = this;
        do {
          *(undefined4 *)(pCVar2 + 0xd0) = 0xffffd8f1;
          iVar1 = iVar1 + 1;
          pCVar2 = pCVar2 + 0x154;
        } while (iVar1 < *(int *)(this + 0xff0));
      }
    }
  }
  MatrixCopy(param_2,(matrix3x4_t *)(this + 0x1024));
  *(float *)(this + 0x1058) = param_3;
  *(int *)(this + 0x1054) = param_4;
  *(int *)(this + 0x105c) = param_5;
  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)