Day of Defeat Plugins Community
This site is an archive — everything is readable and downloadable, nothing can be posted. Admin

Full dump of DoD class headers

by Arkshine · 2015-03-24 · 1 replies · 89 views · 12 downloads

Read the thread (2 posts)

From the first post

Hi,
rn
rnI don't know if you guys are aware, but since the SteamPipe update in February 2013, game binary has been compiled with more recent toolset and it includes now DWARF information. This means there are a lot more debugging datas.
rn
rnThat's it, you can now retrieve a full class header, including its members (offsets) with real name! :p
rn
rnI'm attaching a dump of all classes from DoD binary.
rnI've used pahole under linux. It's kind of unsorted, but just a matter of searching.
rnAs bonus, I've included a dump with pfunct which lists all functions headers (including param name and return type).
rn
rnFor example, for CBasePlayer:
rn
rn
class CBasePlayer : public CBaseMonster {rnpublic:rnrn	/* class CBaseMonster        ; */      /*     0     0 */rnrn	/* XXX 936 bytes hole, try to pack */rnprivate:rnrnrn	/* --- cacheline 14 boundary (896 bytes) was 40 bytes ago --- */rn	int                        m_iPlayerSpeed;       /*   936     4 */rn	int                        random_seed;          /*   940     4 */rn	int                        m_iPlayerSound;       /*   944     4 */rn	int                        m_iTargetVolume;      /*   948     4 */rn	int                        m_iWeaponVolume;      /*   952     4 */rn	int                        m_iExtraSoundTypes;   /*   956     4 */rn	/* --- cacheline 15 boundary (960 bytes) --- */rn	float                      m_flStopExtraSoundTime; /*   960     4 */rn	int                        m_afButtonLast;       /*   964     4 */rn	int                        m_afButtonPressed;    /*   968     4 */rn	int                        m_afButtonReleased;   /*   972     4 */rn	edict_t *                  m_pentSndLast;        /*   976     4 */rn	float                      m_flSndRoomtype;      /*   980     4 */rn	float                      m_flSndRange;         /*   984     4 */rn	float                      m_flFallVelocity;     /*   988     4 */rn	int                        m_fKnownItem;         /*   992     4 */rn	int                        m_fNewAmmo;           /*   996     4 */rn	unsigned int               m_afPhysicsFlags;     /*  1000     4 */rn	float                      m_fNextSuicideTime;   /*  1004     4 */rn	float                      m_flTimeWeaponIdle;   /*  1008     4 */rn	char                       m_szTextureName[13];  /*  1012    13 */rn	/* --- cacheline 16 boundary (1024 bytes) was 1 bytes ago --- */rn	char                       m_chTextureType;      /*  1025     1 */rnrn	/* XXX 2 bytes hole, try to pack */rnrn	int                        m_idrowndmg;          /*  1028     4 */rn	int                        m_idrownrestored;     /*  1032     4 */rn	int                        m_bitsHUDDamage;      /*  1036     4 */rn	BOOL                       m_fInitHUD;           /*  1040     4 */rn	BOOL                       m_fGameHUDInitialized; /*  1044     4 */rn	int                        m_iTrain;             /*  1048     4 */rn	BOOL                       m_fWeapon;            /*  1052     4 */rn	enum JoinState             m_iJoiningState;      /*  1056     4 */rn	class EHANDLE             m_pTank;               /*  1060     8 */rn	float                      m_fDeadTime;          /*  1068     4 */rn	int                        m_iUpdateTime;        /*  1072     4 */rn	int                        m_iHideHUD;           /*  1076     4 */rn	float                      m_iRespawnFrames;     /*  1080     4 */rn	int                        m_iClientHealth;      /*  1084     4 */rn	/* --- cacheline 17 boundary (1088 bytes) --- */rn	int                        m_iClientHideHUD;     /*  1088     4 */rn	int                        m_iClientFOV;         /*  1092     4 */rn	int                        m_nCustomSprayFrames; /*  1096     4 */rn	float                      m_flNextDecalTime;    /*  1100     4 */rn	class CBasePlayerItem *    m_rgpPlayerItems[6];  /*  1104    24 */rn	class CBasePlayerItem *    m_pActiveItem;        /*  1128     4 */rn	class CBasePlayerItem *    m_pClientActiveItem;  /*  1132     4 */rn	class CBasePlayerItem *    m_pLastItem;          /*  1136     4 */rn	int                        m_rgAmmo[32];         /*  1140   128 */rn	/* --- cacheline 19 boundary (1216 bytes) was 52 bytes ago --- */rn	int                        m_rgAmmoLast[32];     /*  1268   128 */rn	/* --- cacheline 21 boundary (1344 bytes) was 52 bytes ago --- */rn	int                        m_rgItems[5];         /*  1396    20 */rn	/* --- cacheline 22 boundary (1408 bytes) was 8 bytes ago --- */rn	char                       m_szTeamName[16];     /*  1416    16 */rnrn	/* Bitfield combined with previous fields */rnrn	TYPEDESCRIPTION            m_playerSaveData[22]; /*     0   352 */rnrn	/* XXX 1080 bytes hole, try to pack */rnrn	/* --- cacheline 44 boundary (2816 bytes) was 48 bytes ago --- */rn	int                        m_irdytospawn;        /*  1432     4 */rn	int                        m_imissedwave;        /*  1436     4 */rn	int                        m_ilastteam;          /*  1440     4 */rn	int                        m_ijustjoined;        /*  1444     4 */rn	/* --- cacheline 45 boundary (2880 bytes) --- */rn	int                        m_chatMsg;            /*  1448     4 */rn	int                        m_deathMsg;           /*  1452     4 */rn	int                        m_handSignal;         /*  1456     4 */rn	float                      m_nextRunThink;       /*  1460     4 */rn	float                      m_flIdleTimer;        /*  1464     4 */rn	float                      m_inextprone;         /*  1468     4 */rn	int                        m_voteid;             /*  1472     4 */rn	int                        m_iFOV;               /*  1476     4 */rn	float                      m_fGunDropTime;       /*  1480     4 */rn	int                        m_iNextClass;         /*  1484     4 */rn	bool                       m_bIsRandomClass;     /*  1488     1 */rnrn	/* XXX 3 bytes hole, try to pack */rnrn	class EHANDLE             m_hObserverTarget;     /*  1492     8 */rn	float                      m_flNextObserverInput; /*  1500     4 */rn	int                        m_iObserverWeapon;    /*  1504     4 */rn	int                        m_iObserverLastMode;  /*  1508     4 */rn	/* --- cacheline 46 boundary (2944 bytes) --- */rn	int                        m_bIsObserver;        /*  1512     4 */rn	BOOL                       HasObject;            /*  1516     4 */rn	class CObject *            m_pObject;            /*  1520     4 */rn	char *                     m_sPlayerModel;       /*  1524     4 */rn	float                      m_fNextStamina;       /*  1528     4 */rn	int                        m_nMGAmmoCount;       /*  1532     4 */rn	int                        m_nGenericAmmoCount;  /*  1536     4 */rn	int                        m_iClassSpeed;        /*  1540     4 */rn	float                      m_fSpeedFactor;       /*  1544     4 */rn	bool                       m_bSlowedByHit;       /*  1548     1 */rnrn	/* XXX 3 bytes hole, try to pack */rnrn	float                      m_flUnslowTime;       /*  1552     4 */rn	float                      m_flNextVoice;        /*  1556     4 */rn	float                      m_flNextHand;         /*  1560     4 */rn	int                        lastMenuSelected;     /*  1564     4 */rn	int                        m_izSBarState[4];     /*  1568    16 */rn	/* --- cacheline 47 boundary (3008 bytes) was 8 bytes ago --- */rn	float                      m_flNextSBarUpdateTime; /*  1584     4 */rn	float                      m_flStatusBarDisappearDelay; /*  1588     4 */rn	char                       m_SbarString0[128];   /*  1592   128 */rn	/* --- cacheline 49 boundary (3136 bytes) was 16 bytes ago --- */rn	char                       m_SbarString1[128];   /*  1720   128 */rn	/* --- cacheline 51 boundary (3264 bytes) was 16 bytes ago --- */rn	class EHANDLE             m_hLastIDTarget;       /*  1848     8 */rn	float                      m_flLastTalkTime;     /*  1856     4 */rn	int                        i_cutScenes;          /*  1860     4 */rn	int                        i_seenAllieSpawnScene; /*  1864     4 */rn	int                        i_seenAxisSpawnScene; /*  1868     4 */rn	int                        i_seenAllieWinScene;  /*  1872     4 */rn	int                        i_seenAxisWinScene;   /*  1876     4 */rn	int                        i_seenAllieLooseScene; /*  1880     4 */rn	int                        i_seenAxisLooseScene; /*  1884     4 */rn	int                        i_seenAllieDrawScene; /*  1888     4 */rn	int                        i_seenAxisDrawScene;  /*  1892     4 */rn	/* --- cacheline 52 boundary (3328 bytes) --- */rn	class CUnifiedSignals     m_signals;             /*  1896     8 */rn	int                        m_iCapAreaIndex;      /*  1904     4 */rn	int                        m_iCapAreaIconIndex;  /*  1908     4 */rn	int                        m_iObjectAreaIndex;   /*  1912     4 */rn	float                      m_fHandleSignalsTime; /*  1916     4 */rn	int                        m_iObjScore;          /*  1920     4 */rn	int                        m_iDeaths;            /*  1924     4 */rn	int                        m_iNumTKs;            /*  1928     4 */rn	BOOL                       m_bBazookaDeployed;   /*  1932     4 */rn	int                        m_iMinimap;           /*  1936     4 */rn	bool                       m_bShowHints;         /*  1940     1 */rn	bool                       m_bAutoReload;        /*  1941     1 */rnrn	/* XXX 2 bytes hole, try to pack */rnrn	class CHintMessageQueue   m_hintMessageQueue;    /*  1944    48 */rn	/* --- cacheline 53 boundary (3392 bytes) was 32 bytes ago --- */rn	long int                   m_flDisplayHistory;   /*  1992     4 */rn	char                       m_szAnimExtention[32]; /*  1996    32 */rn	/* --- cacheline 54 boundary (3456 bytes) was 4 bytes ago --- */rn	char                       m_szAnimReloadExt[32]; /*  2028    32 */rn	int                        m_iGaitsequence;      /*  2060     4 */rn	float                      m_flGaitframe;        /*  2064     4 */rn	float                      m_flGaityaw;          /*  2068     4 */rn	class Vector              m_prevgaitorigin;      /*  2072    12 */rn	float                      m_flPitch;            /*  2084     4 */rn	/* --- cacheline 55 boundary (3520 bytes) --- */rn	float                      m_flYaw;              /*  2088     4 */rn	float                      m_flGaitMovement;     /*  2092     4 */rn	float                      m_flYawModifier;      /*  2096     4 */rn	int                        m_iCurrentAnimationState; /*  2100     4 */rn	int                        m_iCurrentAnimationSequence; /*  2104     4 */rn	int                        m_pszSavedWeaponModel; /*  2108     4 */rn	int                        m_ianimupdate;        /*  2112     4 */rn	float                      m_flNextMapMarkerTime; /*  2116     4 */rn	int                        m_iMapMarker;         /*  2120     4 */rn	int                        m_iWeapons2;          /*  2124     4 */rnrn...

rn
rnWhat you see at right, is the char-based offset for linux.
rn
rnTo use them with AMXX, you will have to care about two things:
rn
  • Whether native takes an int-based offset or not. If so you will need to divide offset by 4. In 1.8.2, all natives are int-based except for the one to set/get a string. In 1.8.3-dev, all new natives (new data type supported) are char-based.
    rn
  • All natives are windows-based, so you will have to calculated windows offset by subtracting the linux extra offset. Of course, same here, if native is int-based you will have to divide extra offset by 4. Usually, linux offset for classes which derives of CBaseMonster is +5 (int-based) or +20 (char-based) : otherwise it's +4 (int-based) or +16 (char-based).
    rn

rn
rnFast example:
rn
  • int m_iMapMarker; /* 2120 4 */
    rnIt's a player's offset. You will use get_pdata_int(index, 2120 / 4, 20 / 4)
    rnThis native is int-based, and the default extra linux offset is already 5, so you could write just get_pdata_int(index, 530)
    rn
    rn
    rn
  • bool m_bIsRandomClass; /* 1488 1 */
    rnIn AMXX 1.8.3-dev you have a new native for boolean: get_pdata_bool(index, 1488, 20)
    rnNative is char-based. Same as above, there is always a default linux extra offset, which is already 20, so you can just write get_pdata_bool(index, 1488)
    rn

rn
rnFeel free to ask if you don't understand something.

Files

dod_headers_dump.zip Archive 249 KB 12 dl Download

The thread

All 2 posts from 2 people on Full dump of DoD class headers, kept as they were written.

A Arkshine
started this thread
Posts: 4
Threads: 1
Joined: Sep 2007
03-24-2015, 10:18 AM #1

Hi, rnrnI don't know if you guys are aware, but since the SteamPipe update in February 2013, game binary has been compiled with more recent toolset and it includes now DWARF information. This means there are a lot more debugging datas.rnrnThat's it, you can now retrieve a full class header, including its members (offsets) with real name! :prnrnI'm attaching a dump of all classes from DoD binary. rnI've used pahole under linux. It's kind of unsorted, but just a matter of searching.rnAs bonus, I've included a dump with pfunct which lists all functions headers (including param name and return type).rnrnFor example, for CBasePlayer:rnrn

class CBasePlayer : public CBaseMonster {rnpublic:rnrn	/* class CBaseMonster        <ancestor>; */      /*     0     0 */rnrn	/* XXX 936 bytes hole, try to pack */rnprivate:rnrnrn	/* --- cacheline 14 boundary (896 bytes) was 40 bytes ago --- */rn	int                        m_iPlayerSpeed;       /*   936     4 */rn	int                        random_seed;          /*   940     4 */rn	int                        m_iPlayerSound;       /*   944     4 */rn	int                        m_iTargetVolume;      /*   948     4 */rn	int                        m_iWeaponVolume;      /*   952     4 */rn	int                        m_iExtraSoundTypes;   /*   956     4 */rn	/* --- cacheline 15 boundary (960 bytes) --- */rn	float                      m_flStopExtraSoundTime; /*   960     4 */rn	int                        m_afButtonLast;       /*   964     4 */rn	int                        m_afButtonPressed;    /*   968     4 */rn	int                        m_afButtonReleased;   /*   972     4 */rn	edict_t *                  m_pentSndLast;        /*   976     4 */rn	float                      m_flSndRoomtype;      /*   980     4 */rn	float                      m_flSndRange;         /*   984     4 */rn	float                      m_flFallVelocity;     /*   988     4 */rn	int                        m_fKnownItem;         /*   992     4 */rn	int                        m_fNewAmmo;           /*   996     4 */rn	unsigned int               m_afPhysicsFlags;     /*  1000     4 */rn	float                      m_fNextSuicideTime;   /*  1004     4 */rn	float                      m_flTimeWeaponIdle;   /*  1008     4 */rn	char                       m_szTextureName[13];  /*  1012    13 */rn	/* --- cacheline 16 boundary (1024 bytes) was 1 bytes ago --- */rn	char                       m_chTextureType;      /*  1025     1 */rnrn	/* XXX 2 bytes hole, try to pack */rnrn	int                        m_idrowndmg;          /*  1028     4 */rn	int                        m_idrownrestored;     /*  1032     4 */rn	int                        m_bitsHUDDamage;      /*  1036     4 */rn	BOOL                       m_fInitHUD;           /*  1040     4 */rn	BOOL                       m_fGameHUDInitialized; /*  1044     4 */rn	int                        m_iTrain;             /*  1048     4 */rn	BOOL                       m_fWeapon;            /*  1052     4 */rn	enum JoinState             m_iJoiningState;      /*  1056     4 */rn	class EHANDLE             m_pTank;               /*  1060     8 */rn	float                      m_fDeadTime;          /*  1068     4 */rn	int                        m_iUpdateTime;        /*  1072     4 */rn	int                        m_iHideHUD;           /*  1076     4 */rn	float                      m_iRespawnFrames;     /*  1080     4 */rn	int                        m_iClientHealth;      /*  1084     4 */rn	/* --- cacheline 17 boundary (1088 bytes) --- */rn	int                        m_iClientHideHUD;     /*  1088     4 */rn	int                        m_iClientFOV;         /*  1092     4 */rn	int                        m_nCustomSprayFrames; /*  1096     4 */rn	float                      m_flNextDecalTime;    /*  1100     4 */rn	class CBasePlayerItem *    m_rgpPlayerItems[6];  /*  1104    24 */rn	class CBasePlayerItem *    m_pActiveItem;        /*  1128     4 */rn	class CBasePlayerItem *    m_pClientActiveItem;  /*  1132     4 */rn	class CBasePlayerItem *    m_pLastItem;          /*  1136     4 */rn	int                        m_rgAmmo[32];         /*  1140   128 */rn	/* --- cacheline 19 boundary (1216 bytes) was 52 bytes ago --- */rn	int                        m_rgAmmoLast[32];     /*  1268   128 */rn	/* --- cacheline 21 boundary (1344 bytes) was 52 bytes ago --- */rn	int                        m_rgItems[5];         /*  1396    20 */rn	/* --- cacheline 22 boundary (1408 bytes) was 8 bytes ago --- */rn	char                       m_szTeamName[16];     /*  1416    16 */rnrn	/* Bitfield combined with previous fields */rnrn	TYPEDESCRIPTION            m_playerSaveData[22]; /*     0   352 */rnrn	/* XXX 1080 bytes hole, try to pack */rnrn	/* --- cacheline 44 boundary (2816 bytes) was 48 bytes ago --- */rn	int                        m_irdytospawn;        /*  1432     4 */rn	int                        m_imissedwave;        /*  1436     4 */rn	int                        m_ilastteam;          /*  1440     4 */rn	int                        m_ijustjoined;        /*  1444     4 */rn	/* --- cacheline 45 boundary (2880 bytes) --- */rn	int                        m_chatMsg;            /*  1448     4 */rn	int                        m_deathMsg;           /*  1452     4 */rn	int                        m_handSignal;         /*  1456     4 */rn	float                      m_nextRunThink;       /*  1460     4 */rn	float                      m_flIdleTimer;        /*  1464     4 */rn	float                      m_inextprone;         /*  1468     4 */rn	int                        m_voteid;             /*  1472     4 */rn	int                        m_iFOV;               /*  1476     4 */rn	float                      m_fGunDropTime;       /*  1480     4 */rn	int                        m_iNextClass;         /*  1484     4 */rn	bool                       m_bIsRandomClass;     /*  1488     1 */rnrn	/* XXX 3 bytes hole, try to pack */rnrn	class EHANDLE             m_hObserverTarget;     /*  1492     8 */rn	float                      m_flNextObserverInput; /*  1500     4 */rn	int                        m_iObserverWeapon;    /*  1504     4 */rn	int                        m_iObserverLastMode;  /*  1508     4 */rn	/* --- cacheline 46 boundary (2944 bytes) --- */rn	int                        m_bIsObserver;        /*  1512     4 */rn	BOOL                       HasObject;            /*  1516     4 */rn	class CObject *            m_pObject;            /*  1520     4 */rn	char *                     m_sPlayerModel;       /*  1524     4 */rn	float                      m_fNextStamina;       /*  1528     4 */rn	int                        m_nMGAmmoCount;       /*  1532     4 */rn	int                        m_nGenericAmmoCount;  /*  1536     4 */rn	int                        m_iClassSpeed;        /*  1540     4 */rn	float                      m_fSpeedFactor;       /*  1544     4 */rn	bool                       m_bSlowedByHit;       /*  1548     1 */rnrn	/* XXX 3 bytes hole, try to pack */rnrn	float                      m_flUnslowTime;       /*  1552     4 */rn	float                      m_flNextVoice;        /*  1556     4 */rn	float                      m_flNextHand;         /*  1560     4 */rn	int                        lastMenuSelected;     /*  1564     4 */rn	int                        m_izSBarState[4];     /*  1568    16 */rn	/* --- cacheline 47 boundary (3008 bytes) was 8 bytes ago --- */rn	float                      m_flNextSBarUpdateTime; /*  1584     4 */rn	float                      m_flStatusBarDisappearDelay; /*  1588     4 */rn	char                       m_SbarString0[128];   /*  1592   128 */rn	/* --- cacheline 49 boundary (3136 bytes) was 16 bytes ago --- */rn	char                       m_SbarString1[128];   /*  1720   128 */rn	/* --- cacheline 51 boundary (3264 bytes) was 16 bytes ago --- */rn	class EHANDLE             m_hLastIDTarget;       /*  1848     8 */rn	float                      m_flLastTalkTime;     /*  1856     4 */rn	int                        i_cutScenes;          /*  1860     4 */rn	int                        i_seenAllieSpawnScene; /*  1864     4 */rn	int                        i_seenAxisSpawnScene; /*  1868     4 */rn	int                        i_seenAllieWinScene;  /*  1872     4 */rn	int                        i_seenAxisWinScene;   /*  1876     4 */rn	int                        i_seenAllieLooseScene; /*  1880     4 */rn	int                        i_seenAxisLooseScene; /*  1884     4 */rn	int                        i_seenAllieDrawScene; /*  1888     4 */rn	int                        i_seenAxisDrawScene;  /*  1892     4 */rn	/* --- cacheline 52 boundary (3328 bytes) --- */rn	class CUnifiedSignals     m_signals;             /*  1896     8 */rn	int                        m_iCapAreaIndex;      /*  1904     4 */rn	int                        m_iCapAreaIconIndex;  /*  1908     4 */rn	int                        m_iObjectAreaIndex;   /*  1912     4 */rn	float                      m_fHandleSignalsTime; /*  1916     4 */rn	int                        m_iObjScore;          /*  1920     4 */rn	int                        m_iDeaths;            /*  1924     4 */rn	int                        m_iNumTKs;            /*  1928     4 */rn	BOOL                       m_bBazookaDeployed;   /*  1932     4 */rn	int                        m_iMinimap;           /*  1936     4 */rn	bool                       m_bShowHints;         /*  1940     1 */rn	bool                       m_bAutoReload;        /*  1941     1 */rnrn	/* XXX 2 bytes hole, try to pack */rnrn	class CHintMessageQueue   m_hintMessageQueue;    /*  1944    48 */rn	/* --- cacheline 53 boundary (3392 bytes) was 32 bytes ago --- */rn	long int                   m_flDisplayHistory;   /*  1992     4 */rn	char                       m_szAnimExtention[32]; /*  1996    32 */rn	/* --- cacheline 54 boundary (3456 bytes) was 4 bytes ago --- */rn	char                       m_szAnimReloadExt[32]; /*  2028    32 */rn	int                        m_iGaitsequence;      /*  2060     4 */rn	float                      m_flGaitframe;        /*  2064     4 */rn	float                      m_flGaityaw;          /*  2068     4 */rn	class Vector              m_prevgaitorigin;      /*  2072    12 */rn	float                      m_flPitch;            /*  2084     4 */rn	/* --- cacheline 55 boundary (3520 bytes) --- */rn	float                      m_flYaw;              /*  2088     4 */rn	float                      m_flGaitMovement;     /*  2092     4 */rn	float                      m_flYawModifier;      /*  2096     4 */rn	int                        m_iCurrentAnimationState; /*  2100     4 */rn	int                        m_iCurrentAnimationSequence; /*  2104     4 */rn	int                        m_pszSavedWeaponModel; /*  2108     4 */rn	int                        m_ianimupdate;        /*  2112     4 */rn	float                      m_flNextMapMarkerTime; /*  2116     4 */rn	int                        m_iMapMarker;         /*  2120     4 */rn	int                        m_iWeapons2;          /*  2124     4 */rnrn...
rnrnWhat you see at right, is the char-based offset for linux.rnrnTo use them with AMXX, you will have to care about two things:rn
  • Whether native takes an int-based offset or not. If so you will need to divide offset by 4. In 1.8.2, all natives are int-based except for the one to set/get a string. In 1.8.3-dev, all new natives (new data type supported) are char-based.rn
  • All natives are windows-based, so you will have to calculated windows offset by subtracting the linux extra offset. Of course, same here, if native is int-based you will have to divide extra offset by 4. Usually, linux offset for classes which derives of CBaseMonster is +5 (int-based) or +20 (char-based) : otherwise it's +4 (int-based) or +16 (char-based).rn
rnrnFast example:rn
  • int m_iMapMarker; /* 2120 4 */rnIt's a player's offset. You will use get_pdata_int(index, 2120 / 4, 20 / 4)rnThis native is int-based, and the default extra linux offset is already 5, so you could write just get_pdata_int(index, 530)rnrnrn
  • bool m_bIsRandomClass; /* 1488 1 */rnIn AMXX 1.8.3-dev you have a new native for boolean: get_pdata_bool(index, 1488, 20)rnNative is char-based. Same as above, there is always a default linux extra offset, which is already 20, so you can just write get_pdata_bool(index, 1488)rn
rnrnFeel free to ask if you don't understand something.

Zor
posted here
Posts: 688
Threads: 75
Joined: Jun 2006
03-25-2015, 08:56 AM #2

Awesomely nice! This will make it so much easier to do alot of things! Wish I had time so that I could get back into the smoke grenade class. Also wanted to add the aimed shot for all weapons. Kind of like the new DoD Source, but in our classic DoD! And the bleeding class! Man oh man...ahhh, but the time.rnrnCheers!

DoD Plugins Archive · Repository · Old Forum Threads · Maps · Admin · built 14 Sep 2026 00:34 UTC