L L4D2node

ParseDirective

0x0021aef0 · 951 bytes · __cdecl

_Z14ParseDirectivePKc

Decompiled

undefined (1 param)

/* ParseDirective(char const*) */

undefined4 ParseDirective(char *param_1)

{
  int iVar1;
  int iVar2;
  float local_2c [8];
  
  if ((param_1 != (char *)0x0) && (*param_1 == '$')) {
    iVar1 = IsToken(param_1,"position");
    if (iVar1 == 0) {
      iVar1 = IsToken(param_1,"effect");
      if (iVar1 == 0) {
        iVar1 = IsToken(param_1,"fxtime");
        if (iVar1 == 0) {
          iVar1 = IsToken(param_1,"color2");
          if (iVar1 == 0) {
            iVar1 = IsToken(param_1,"color");
            if (iVar1 == 0) {
              iVar1 = IsToken(param_1,"fadein");
              if (iVar1 == 0) {
                iVar1 = IsToken(param_1,"fadeout");
                if (iVar1 == 0) {
                  iVar1 = IsToken(param_1,"holdtime");
                  if (iVar1 == 0) {
                    iVar1 = IsToken(param_1,"boxsize");
                    if (iVar1 == 0) {
                      iVar1 = IsToken(param_1,"boxcolor");
                      if (iVar1 == 0) {
                        iVar1 = IsToken(param_1,"clearmessage");
                        if (iVar1 == 0) {
                          ConDMsg("Unknown token: %s\n",param_1);
                        }
                        else {
                          iVar1 = ParseString(param_1,&g_pchSkipName,0x40);
                          if (iVar1 != 0) {
                            if ((g_pchSkipName == '\0') ||
                               (iVar1 = _V_stricmp(&g_pchSkipName,"0"), iVar1 == 0)) {
                              DAT_003ef23c = (undefined1 *)0x0;
                            }
                            else {
                              DAT_003ef23c = &g_pchSkipName;
                            }
                          }
                        }
                      }
                      else {
                        iVar1 = ParseFloats(param_1,local_2c,4);
                        if (iVar1 != 0) {
                          iVar1 = 0;
                          do {
                            iVar2 = iVar1 + 1;
                            (&DAT_003ef238)[iVar1] = (char)(int)local_2c[iVar1];
                            iVar1 = iVar2;
                          } while (iVar2 != 4);
                        }
                      }
                    }
                    else {
                      iVar1 = ParseFloats(param_1,local_2c,1);
                      if (iVar1 != 0) {
                        DAT_003ef234 = local_2c[0];
                        DAT_003ef230._0_1_ = local_2c[0] != 0.0;
                      }
                    }
                  }
                  else {
                    iVar1 = ParseFloats(param_1,local_2c,3);
                    if (iVar1 != 0) {
                      DAT_003ef21c = local_2c[0];
                    }
                  }
                }
                else {
                  iVar1 = ParseFloats(param_1,local_2c,3);
                  if (iVar1 != 0) {
                    DAT_003ef218 = local_2c[0];
                  }
                }
              }
              else {
                iVar1 = ParseFloats(param_1,local_2c,1);
                if (iVar1 != 0) {
                  DAT_003ef214 = local_2c[0];
                }
              }
            }
            else {
              iVar1 = ParseFloats(param_1,local_2c,3);
              if (iVar1 != 0) {
                DAT_003ef204._0_1_ = (undefined1)(int)local_2c[0];
                DAT_003ef204._1_1_ = (undefined1)(int)local_2c[1];
                DAT_003ef204._2_1_ = (undefined1)(int)local_2c[2];
              }
            }
          }
          else {
            iVar1 = ParseFloats(param_1,local_2c,3);
            if (iVar1 != 0) {
              DAT_003ef208._0_1_ = (undefined1)(int)local_2c[0];
              DAT_003ef208._1_1_ = (undefined1)(int)local_2c[1];
              DAT_003ef208._2_1_ = (undefined1)(int)local_2c[2];
            }
          }
        }
        else {
          iVar1 = ParseFloats(param_1,local_2c,1);
          if (iVar1 != 0) {
            DAT_003ef220 = local_2c[0];
          }
        }
      }
      else {
        iVar1 = ParseFloats(param_1,local_2c,1);
        if (iVar1 != 0) {
          gMessageParms = (int)local_2c[0];
        }
      }
    }
    else {
      iVar1 = ParseFloats(param_1,local_2c,2);
      if (iVar1 != 0) {
        DAT_003ef20c = local_2c[0];
        DAT_003ef210 = local_2c[1];
      }
    }
    return 1;
  }
  return 0;
}

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)