L L4D2node

AI_Response::Describe

0x005a97f0 · 234 bytes · __thiscall

_ZN11AI_Response8DescribeEv

Decompiled

undefined (1 param)

/* AI_Response::Describe() */

void __thiscall AI_Response::Describe(AI_Response *this)

{
  char *pcVar1;
  uint uVar2;
  undefined4 local_44 [14];
  
  CUtlBuffer::CUtlBuffer((CUtlBuffer *)local_44,0,0x400,5);
  if (this[0x41] != (AI_Response)0x0) {
    CUtlBuffer::Printf((CUtlBuffer *)local_44,"Matched rule \'%s\', ",this + 0x41);
  }
  if (*(int *)(this + 0xb4) != 0) {
    pcVar1 = "world";
    if (this[0xb8] == (AI_Response)0x0) {
      pcVar1 = "speaker";
    }
                    /* try { // try from 005a9859 to 005a98de has its CatchHandler @ 005a98e4 */
    CUtlBuffer::Printf((CUtlBuffer *)local_44,"Contexts to set \'%s\' on %s, ",*(int *)(this + 0xb4)
                       ,pcVar1);
  }
  pcVar1 = "???AI_Response bogus index";
  if ((byte)*this < 7) {
    uVar2 = (byte)*this - 1;
    pcVar1 = "RESPONSE_NONE";
    if (uVar2 < 5) {
      pcVar1 = *(char **)(CSWTCH_1009 + uVar2 * 4);
    }
  }
  CUtlBuffer::Printf((CUtlBuffer *)local_44,"response %s = \'%s\'\n",pcVar1,this + 1);
  DevMsg("%s",local_44[0]);
  CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)local_44);
  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)