L L4D2node

Pickup_PhysGunLaunchVelocity

0x007d5df0 · 258 bytes · __cdecl

_Z28Pickup_PhysGunLaunchVelocityP11CBaseEntityRK6Vector14PhysGunForce_t

Decompiled

undefined (3 params)

/* Pickup_PhysGunLaunchVelocity(CBaseEntity*, Vector const&, PhysGunForce_t) */

float * Pickup_PhysGunLaunchVelocity(float *param_1,int param_2,float *param_3,undefined4 param_4)

{
  float fVar1;
  float fVar2;
  int *piVar3;
  code *pcVar4;
  char cVar5;
  int *piVar6;
  longdouble lVar7;
  
  if ((param_2 != 0) && (piVar3 = *(int **)(param_2 + 0x238), piVar3 != (int *)0x0)) {
    piVar6 = (int *)__dynamic_cast(param_2,&CBaseEntity::typeinfo,&IPlayerPickupVPhysics::typeinfo,
                                   0xfffffffe);
    if (piVar6 != (int *)0x0) {
      cVar5 = (**(code **)(*piVar6 + 0x20))(piVar6,param_4);
      if (cVar5 != '\0') {
        pcVar4 = *(code **)(*piVar6 + 0x24);
        lVar7 = (longdouble)(**(code **)(*piVar3 + 0x78))(piVar3);
        (*pcVar4)(param_1,piVar6,param_3,(float)lVar7);
        return param_1;
      }
    }
    lVar7 = (longdouble)(**(code **)(*piVar3 + 0x78))(piVar3);
    fVar2 = (float)lVar7;
    *param_1 = *param_3 * fVar2;
    fVar1 = param_3[2];
    param_1[1] = param_3[1] * fVar2;
    param_1[2] = fVar2 * fVar1;
    return param_1;
  }
  *param_1 = vec3_origin;
  param_1[1] = DAT_01053d4c;
  param_1[2] = DAT_01053d50;
  return param_1;
}

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)