L L4D2node

CRagdollMagnet::FindBestMagnet

0x00650340 · 192 bytes · __cdecl

_ZN14CRagdollMagnet14FindBestMagnetEP11CBaseEntity

Decompiled

undefined (1 param)

/* CRagdollMagnet::FindBestMagnet(CBaseEntity*) */

CRagdollMagnet * CRagdollMagnet::FindBestMagnet(CBaseEntity *param_1)

{
  float fVar1;
  Vector *pVVar2;
  CRagdollMagnet *pCVar3;
  CRagdollMagnet *this;
  longdouble lVar4;
  float local_20;
  
  this = (CRagdollMagnet *)0x0;
  local_20 = 3.4028235e+38;
  pCVar3 = (CRagdollMagnet *)0x0;
  do {
    while( true ) {
      do {
        this = (CRagdollMagnet *)
               CGlobalEntityList::FindEntityByClassname
                         ((CGlobalEntityList *)gEntList,(CBaseEntity *)this,"phys_ragdollmagnet");
        if (this == (CRagdollMagnet *)0x0) {
          return pCVar3;
        }
      } while (this[0x440] != (CRagdollMagnet)0x0);
      if (*(int *)(this + 0xf8) != 0) break;
      pVVar2 = (Vector *)(**(code **)(*(int *)param_1 + 0x288))(param_1);
      lVar4 = (longdouble)DistToPoint(this,pVVar2);
      fVar1 = (float)lVar4;
      if (fVar1 < local_20) {
        if (fVar1 < *(float *)(this + 0x444) || fVar1 == *(float *)(this + 0x444)) {
          pCVar3 = this;
        }
        local_20 = (float)(~-(uint)(*(float *)(this + 0x444) < fVar1) & (uint)fVar1 |
                          (uint)local_20 & -(uint)(*(float *)(this + 0x444) < fVar1));
      }
    }
  } while (*(int *)(this + 0xf8) != *(int *)(param_1 + 0x154));
  return this;
}

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)