AMX Mod X Plugin Approver
05-07-2014
, 16:56
Re: Hostage following the player
#5
Woohoo triple post.
Well, I'm too dumb. It does a simple check in IDA (like return *(m_improv+ 56) == m_improv+ 252)), one line, but the thing it calls members of a class which is derived of another class, etc. It's confusing and I'm not sure what it checks exactly. It probably checks m_followState and m_behavior from CHostageImprov, like: return m_improv->m_behavior.m_state.something (m_parent?) == m_improv->m_followState.something. Unless there is more decompiled code, it's hard to picture (at least for me, but I'm a noob).
Just wondering, why you don't just call these functions directly? For example to check if an hostage follows, you just call: CHostage::IsFollowingSomeone() or to make hostage to follow, calling DoFollow(). Your code would be way more efficient, reliable and readable. You will have to deal with signatures and symbols, but I believe it's worth.
As bonus, some classes header (at right, it's the real offset under linux (real = char-based)) :
CHostage
PHP Code:
class CHostage : public CBaseMonster {
enum ModelType {
REGULAR_GUY = 0 ,
OLD_GUY = 1 ,
BLACK_GUY = 2 ,
GOOFY_GUY = 3 ,
};
public:
/* class CBaseMonster <ancestor>; */ /* 0 0 */
/* XXX 404 bytes hole, try to pack */
/* --- cacheline 6 boundary (384 bytes) was 20 bytes ago --- */
int m_Activity ; /* 404 4 */
BOOL m_bTouched ; /* 408 4 */
BOOL m_bRescueMe ; /* 412 4 */
float m_flFlinchTime ; /* 416 4 */
float m_flNextChange ; /* 420 4 */
float m_flMarkPosition ; /* 424 4 */
int m_iModel ; /* 428 4 */
int m_iSkin ; /* 432 4 */
float m_flNextRadarTime ; /* 436 4 */
enum state m_State ; /* 440 4 */
class Vector m_vStart ; /* 444 12 */
/* --- cacheline 7 boundary (448 bytes) was 8 bytes ago --- */
class Vector m_vStartAngles ; /* 456 12 */
class Vector m_vPathToFollow [ 20 ]; /* 468 240 */
/* --- cacheline 11 boundary (704 bytes) was 4 bytes ago --- */
int m_iWaypoint ; /* 708 4 */
class CBasePlayer * m_target ; /* 712 4 */
class CLocalNav * m_LocalNav ; /* 716 4 */
int nTargetNode ; /* 720 4 */
class Vector vecNodes [ 100 ]; /* 724 1200 */
/* --- cacheline 30 boundary (1920 bytes) was 4 bytes ago --- */
class EHANDLE m_hStoppedTargetEnt ; /* 1924 8 */
float m_flNextFullThink ; /* 1932 4 */
float m_flPathCheckInterval ; /* 1936 4 */
float m_flLastPathCheck ; /* 1940 4 */
int m_nPathNodes ; /* 1944 4 */
BOOL m_fHasPath ; /* 1948 4 */
float m_flPathAcquired ; /* 1952 4 */
class Vector m_vOldPos ; /* 1956 12 */
int m_iHostageIndex ; /* 1968 4 */
BOOL m_bStuck ; /* 1972 4 */
float m_flStuckTime ; /* 1976 4 */
class CHostageImprov * m_improv ; /* 1980 4 */
/* --- cacheline 31 boundary (1984 bytes) --- */
enum ModelType m_whichModel ; /* 1984 4 */
void CHostage (class CHostage *, const class CHostage &);
void CHostage (class CHostage *);
virtual void Spawn (class CHostage *); /* linkage=_ZN8CHostage5SpawnEv */
virtual void Precache (class CHostage *); /* linkage=_ZN8CHostage8PrecacheEv */
void IdleThink (class CHostage *); /* linkage=_ZN8CHostage9IdleThinkEv */
void Remove (class CHostage *); /* linkage=_ZN8CHostage6RemoveEv */
void RePosition (class CHostage *); /* linkage=_ZN8CHostage10RePositionEv */
void SetActivity (class CHostage *, int ); /* linkage=_ZN8CHostage11SetActivityEi */
virtual int ObjectCaps (class CHostage *); /* linkage=_ZN8CHostage10ObjectCapsEv */
virtual void Use(class CHostage *, class CBaseEntity *, class CBaseEntity *, USE_TYPE , float ); /* linkage=_ZN8CHostage3UseEP11CBaseEntityS1_8USE_TYPEf */
virtual int TakeDamage (class CHostage *, entvars_t *, entvars_t *, float , int ); /* linkage=_ZN8CHostage10TakeDamageEP9entvars_sS1_fi */
virtual void Touch (class CHostage *, class CBaseEntity *); /* linkage=_ZN8CHostage5TouchEP11CBaseEntity */
virtual int Classify (class CHostage *); /* linkage=_ZN8CHostage8ClassifyEv */
int GetActivity (class CHostage *); /* linkage=_ZN8CHostage11GetActivityEv */
virtual int BloodColor (class CHostage *); /* linkage=_ZN8CHostage10BloodColorEv */
float GetModifiedDamage (class CHostage *, float , int ); /* linkage=_ZN8CHostage17GetModifiedDamageEfi */
void SetFlinchActivity (class CHostage *); /* linkage=_ZN8CHostage17SetFlinchActivityEv */
void SetDeathActivity (class CHostage *); /* linkage=_ZN8CHostage16SetDeathActivityEv */
void PlayPainSound (class CHostage *); /* linkage=_ZN8CHostage13PlayPainSoundEv */
void PlayFollowRescueSound (class CHostage *); /* linkage=_ZN8CHostage21PlayFollowRescueSoundEv */
void AnnounceDeath (class CHostage *, class CBasePlayer *); /* linkage=_ZN8CHostage13AnnounceDeathEP11CBasePlayer */
void ApplyHostagePenalty (class CHostage *, class CBasePlayer *); /* linkage=_ZN8CHostage19ApplyHostagePenaltyEP11CBasePlayer */
void GiveCTTouchBonus (class CHostage *, class CBasePlayer *); /* linkage=_ZN8CHostage16GiveCTTouchBonusEP11CBasePlayer */
void SendHostagePositionMsg (class CHostage *); /* linkage=_ZN8CHostage22SendHostagePositionMsgEv */
void SendHostageEventMsg (class CHostage *); /* linkage=_ZN8CHostage19SendHostageEventMsgEv */
void DoFollow (class CHostage *); /* linkage=_ZN8CHostage8DoFollowEv */
BOOL IsOnLadder (class CHostage *); /* linkage=_ZN8CHostage10IsOnLadderEv */
void PointAt (class CHostage *, const class Vector &); /* linkage=_ZN8CHostage7PointAtERK6Vector */
void MoveToward (class CHostage *, const class Vector &); /* linkage=_ZN8CHostage10MoveTowardERK6Vector */
void NavReady (class CHostage *); /* linkage=_ZN8CHostage8NavReadyEv */
void Wiggle (class CHostage *); /* linkage=_ZN8CHostage6WiggleEv */
void PreThink (class CHostage *); /* linkage=_ZN8CHostage8PreThinkEv */
bool IsFollowingSomeone (class CHostage *); /* linkage=_ZN8CHostage18IsFollowingSomeoneEv */
class CBaseEntity * GetLeader (class CHostage *); /* linkage=_ZN8CHostage9GetLeaderEv */
bool IsFollowing (class CHostage *, const class CBaseEntity *); /* linkage=_ZN8CHostage11IsFollowingEPK11CBaseEntity */
bool IsValid (class CHostage *); /* linkage=_ZN8CHostage7IsValidEv */
bool IsDead (class CHostage *); /* linkage=_ZN8CHostage6IsDeadEv */
bool IsAtHome (const class CHostage *); /* linkage=_ZNK8CHostage8IsAtHomeEv */
const class Vector * GetHomePosition (const class CHostage *); /* linkage=_ZNK8CHostage15GetHomePositionEv */
/* vtable has 8 entries: {
[0] = Spawn(_ZN8CHostage5SpawnEv),
[1] = Precache(_ZN8CHostage8PrecacheEv),
[6] = ObjectCaps(_ZN8CHostage10ObjectCapsEv),
[46] = Use(_ZN8CHostage3UseEP11CBaseEntityS1_8USE_TYPEf),
[12] = TakeDamage(_ZN8CHostage10TakeDamageEP9entvars_sS1_fi),
[45] = Touch(_ZN8CHostage5TouchEP11CBaseEntity),
[9] = Classify(_ZN8CHostage8ClassifyEv),
[15] = BloodColor(_ZN8CHostage10BloodColorEv),
} */
/* size: 1988, cachelines: 32, members: 32 */
/* sum members: 1584, holes: 1, sum holes: 404 */
/* last cacheline: 4 bytes */
};
CHostageImprov
PHP Code:
struct CHostageImprov : public CImprov {
enum MoveType {
Stopped = 0 ,
Walking = 1 ,
Running = 2 ,
};
enum ScareType {
NERVOUS = 0 ,
SCARED = 1 ,
TERRIFIED = 2 ,
};
enum {
HEAD_YAW = 0 ,
HEAD_PITCH = 1 ,
EYEBROW = 2 ,
SNEER = 3 ,
MOUTH = 4 ,
};
public:
/* struct CImprov <ancestor>; */ /* 0 4 */
class CountdownTimer m_coughTimer ; /* 4 8 */
class CountdownTimer m_grenadeTimer ; /* 12 8 */
private:
class CHostage * m_hostage ; /* 20 4 */
class CNavArea * m_lastKnownArea ; /* 24 4 */
class Vector m_centroid ; /* 28 12 */
class Vector m_eye ; /* 40 12 */
class HostageStateMachine m_behavior ; /* 52 16 */
/* --- cacheline 1 boundary (64 bytes) was 4 bytes ago --- */
class HostageIdleState m_idleState ; /* 68 0 */
/* XXX 72 bytes hole, try to pack */
/* --- cacheline 2 boundary (128 bytes) was 12 bytes ago --- */
class HostageEscapeState m_escapeState ; /* 140 0 */
/* XXX 100 bytes hole, try to pack */
/* --- cacheline 3 boundary (192 bytes) was 48 bytes ago --- */
class HostageRetreatState m_retreatState ; /* 240 0 */
/* XXX 12 bytes hole, try to pack */
class HostageFollowState m_followState ; /* 252 0 */
/* XXX 76 bytes hole, try to pack */
/* --- cacheline 5 boundary (320 bytes) was 8 bytes ago --- */
class HostageAnimateState m_animateState ; /* 328 0 */
/* XXX 132 bytes hole, try to pack */
/* --- cacheline 7 boundary (448 bytes) was 12 bytes ago --- */
bool m_didFidget ; /* 460 1 */
/* XXX 3 bytes hole, try to pack */
float m_aggression ; /* 464 4 */
class IntervalTimer m_lastSawCT ; /* 468 4 */
class IntervalTimer m_lastSawT ; /* 472 4 */
class CountdownTimer m_checkNearbyTerroristTimer ; /* 476 8 */
bool m_isTerroristNearby ; /* 484 1 */
/* XXX 3 bytes hole, try to pack */
class CountdownTimer m_nearbyTerroristTimer ; /* 488 8 */
class CountdownTimer m_scaredTimer ; /* 496 8 */
enum ScareType m_scareIntensity ; /* 504 4 */
class CountdownTimer m_ignoreTerroristTimer ; /* 508 8 */
/* --- cacheline 8 boundary (512 bytes) was 4 bytes ago --- */
class CountdownTimer m_blinkTimer ; /* 516 8 */
char m_blinkCounter ; /* 524 1 */
/* XXX 3 bytes hole, try to pack */
class IntervalTimer m_lastInjuryTimer ; /* 528 4 */
class IntervalTimer m_lastNoiseTimer ; /* 532 4 */
class CountdownTimer m_avoidFriendTimer ; /* 536 8 */
bool m_isFriendInTheWay ; /* 544 1 */
/* XXX 3 bytes hole, try to pack */
class CountdownTimer m_chatterTimer ; /* 548 8 */
bool m_isDelayedChatterPending ; /* 556 1 */
/* XXX 3 bytes hole, try to pack */
class CountdownTimer m_delayedChatterTimer ; /* 560 8 */
enum HostageChatterType m_delayedChatterType ; /* 568 4 */
bool m_delayedChatterMustSpeak ; /* 572 1 */
/* XXX 3 bytes hole, try to pack */
/* --- cacheline 9 boundary (576 bytes) --- */
class CountdownTimer m_talkingTimer ; /* 576 8 */
unsigned int m_moveFlags ; /* 584 4 */
class Vector2D m_vel ; /* 588 8 */
class Vector m_actualVel ; /* 596 12 */
class Vector m_moveGoal ; /* 608 12 */
class Vector m_knownGoodPos ; /* 620 12 */
bool m_hasKnownGoodPos ; /* 632 1 */
/* XXX 3 bytes hole, try to pack */
class Vector m_priorKnownGoodPos ; /* 636 12 */
/* --- cacheline 10 boundary (640 bytes) was 8 bytes ago --- */
bool m_hasPriorKnownGoodPos ; /* 648 1 */
/* XXX 3 bytes hole, try to pack */
class CountdownTimer m_priorKnownGoodPosTimer ; /* 652 8 */
class IntervalTimer m_collisionTimer ; /* 660 4 */
class Vector m_viewGoal ; /* 664 12 */
bool m_isLookingAt ; /* 676 1 */
/* XXX 3 bytes hole, try to pack */
class Vector m_faceGoal ; /* 680 12 */
bool m_isFacingTo ; /* 692 1 */
/* XXX 3 bytes hole, try to pack */
class CNavPath m_path ; /* 696 6148 */
/* --- cacheline 106 boundary (6784 bytes) was 60 bytes ago --- */
class CNavPathFollower m_follower ; /* 6844 96 */
/* --- cacheline 108 boundary (6912 bytes) was 28 bytes ago --- */
class Vector m_lastPosition ; /* 6940 12 */
enum MoveType m_moveType ; /* 6952 4 */
enum MoveType m_moveLimit ; /* 6956 4 */
bool m_isCrouching ; /* 6960 1 */
/* XXX 3 bytes hole, try to pack */
class CountdownTimer m_minCrouchTimer ; /* 6964 8 */
float m_moveAngle ; /* 6972 4 */
/* --- cacheline 109 boundary (6976 bytes) --- */
enum NavRelativeDirType m_wiggleDirection ; /* 6976 4 */
class CountdownTimer m_wiggleTimer ; /* 6980 8 */
class CountdownTimer m_wiggleJumpTimer ; /* 6988 8 */
class CountdownTimer m_inhibitObstacleAvoidance ; /* 6996 8 */
class CountdownTimer m_jumpTimer ; /* 7004 8 */
bool m_hasJumped ; /* 7012 1 */
bool m_hasJumpedIntoAir ; /* 7013 1 */
/* XXX 2 bytes hole, try to pack */
class Vector m_jumpTarget ; /* 7016 12 */
class CountdownTimer m_clearPathTimer ; /* 7028 8 */
bool m_traversingLadder ; /* 7036 1 */
/* XXX 3 bytes hole, try to pack */
/* --- cacheline 110 boundary (7040 bytes) --- */
class EHANDLE m_visiblePlayer [ 32 ]; /* 7040 256 */
/* --- cacheline 114 boundary (7296 bytes) --- */
int m_visiblePlayerCount ; /* 7296 4 */
class CountdownTimer m_visionTimer ; /* 7300 8 */
void CHostageImprov (class CHostageImprov *, const class CHostageImprov &);
void CHostageImprov (class CHostageImprov *, class CBaseEntity *);
virtual void ~ CHostageImprov (class CHostageImprov *, int );
virtual bool IsAlive (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov7IsAliveEv */
virtual void MoveTo (class CHostageImprov *, const class Vector &); /* linkage=_ZN14CHostageImprov6MoveToERK6Vector */
virtual void LookAt (class CHostageImprov *, const class Vector &); /* linkage=_ZN14CHostageImprov6LookAtERK6Vector */
virtual void ClearLookAt (class CHostageImprov *); /* linkage=_ZN14CHostageImprov11ClearLookAtEv */
virtual void FaceTo (class CHostageImprov *, const class Vector &); /* linkage=_ZN14CHostageImprov6FaceToERK6Vector */
virtual void ClearFaceTo (class CHostageImprov *); /* linkage=_ZN14CHostageImprov11ClearFaceToEv */
void FaceOutwards (class CHostageImprov *); /* linkage=_ZN14CHostageImprov12FaceOutwardsEv */
virtual bool IsAtMoveGoal (const class CHostageImprov *, float ); /* linkage=_ZNK14CHostageImprov12IsAtMoveGoalEf */
virtual bool HasLookAt (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9HasLookAtEv */
virtual bool HasFaceTo (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9HasFaceToEv */
virtual bool IsAtFaceGoal (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov12IsAtFaceGoalEv */
virtual bool IsFriendInTheWay (const class CHostageImprov *, const class Vector &); /* linkage=_ZNK14CHostageImprov16IsFriendInTheWayERK6Vector */
virtual bool IsFriendInTheWay (const class CHostageImprov *, class CBaseEntity *, const class Vector &); /* linkage=_ZNK14CHostageImprov16IsFriendInTheWayEP11CBaseEntityRK6Vector */
bool IsFriendInTheWay (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov16IsFriendInTheWayEv */
virtual void MoveForward (class CHostageImprov *); /* linkage=_ZN14CHostageImprov11MoveForwardEv */
virtual void MoveBackward (class CHostageImprov *); /* linkage=_ZN14CHostageImprov12MoveBackwardEv */
virtual void StrafeLeft (class CHostageImprov *); /* linkage=_ZN14CHostageImprov10StrafeLeftEv */
virtual void StrafeRight (class CHostageImprov *); /* linkage=_ZN14CHostageImprov11StrafeRightEv */
virtual bool Jump (class CHostageImprov *); /* linkage=_ZN14CHostageImprov4JumpEv */
virtual void Crouch (class CHostageImprov *); /* linkage=_ZN14CHostageImprov6CrouchEv */
virtual void StandUp (class CHostageImprov *); /* linkage=_ZN14CHostageImprov7StandUpEv */
virtual void TrackPath (class CHostageImprov *, const class Vector &, float ); /* linkage=_ZN14CHostageImprov9TrackPathERK6Vectorf */
void SetKnownGoodPosition (class CHostageImprov *, const class Vector &); /* linkage=_ZN14CHostageImprov20SetKnownGoodPositionERK6Vector */
const class Vector & GetKnownGoodPosition (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov20GetKnownGoodPositionEv */
void ResetToKnownGoodPosition (class CHostageImprov *); /* linkage=_ZN14CHostageImprov24ResetToKnownGoodPositionEv */
virtual void StartLadder (class CHostageImprov *, const class CNavLadder *, enum NavTraverseType , const class Vector *, const class Vector *); /* linkage=_ZN14CHostageImprov11StartLadderEPK10CNavLadder15NavTraverseTypePK6VectorS6_ */
virtual bool TraverseLadder (class CHostageImprov *, const class CNavLadder *, enum NavTraverseType , const class Vector *, const class Vector *, float ); /* linkage=_ZN14CHostageImprov14TraverseLadderEPK10CNavLadder15NavTraverseTypePK6VectorS6_f */
virtual void Run (class CHostageImprov *); /* linkage=_ZN14CHostageImprov3RunEv */
virtual void Walk (class CHostageImprov *); /* linkage=_ZN14CHostageImprov4WalkEv */
virtual void Stop (class CHostageImprov *); /* linkage=_ZN14CHostageImprov4StopEv */
virtual float GetMoveAngle (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov12GetMoveAngleEv */
virtual float GetFaceAngle (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov12GetFaceAngleEv */
virtual const class Vector & GetFeet (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov7GetFeetEv */
virtual const class Vector & GetCentroid (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov11GetCentroidEv */
virtual const class Vector & GetEyes (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov7GetEyesEv */
virtual bool IsRunning (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9IsRunningEv */
virtual bool IsWalking (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9IsWalkingEv */
virtual bool IsStopped (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9IsStoppedEv */
virtual bool IsCrouching (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov11IsCrouchingEv */
virtual bool IsJumping (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9IsJumpingEv */
virtual bool IsUsingLadder (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov13IsUsingLadderEv */
virtual bool IsOnGround (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov10IsOnGroundEv */
virtual bool IsMoving (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov8IsMovingEv */
virtual bool CanRun (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov6CanRunEv */
virtual bool CanCrouch (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9CanCrouchEv */
virtual bool CanJump (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov7CanJumpEv */
virtual bool IsVisible (const class CHostageImprov *, const class Vector &, bool ); /* linkage=_ZNK14CHostageImprov9IsVisibleERK6Vectorb */
virtual bool IsPlayerLookingAtMe (const class CHostageImprov *, class CBasePlayer *, float ); /* linkage=_ZNK14CHostageImprov19IsPlayerLookingAtMeEP11CBasePlayerf */
virtual class CBasePlayer * IsAnyPlayerLookingAtMe (const class CHostageImprov *, int , float ); /* linkage=_ZNK14CHostageImprov22IsAnyPlayerLookingAtMeEif */
virtual class CBasePlayer * GetClosestPlayerByTravelDistance (const class CHostageImprov *, int , float *); /* linkage=_ZNK14CHostageImprov32GetClosestPlayerByTravelDistanceEiPf */
virtual class CNavArea * GetLastKnownArea (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov16GetLastKnownAreaEv */
virtual void OnUpdate (class CHostageImprov *, float ); /* linkage=_ZN14CHostageImprov8OnUpdateEf */
virtual void OnUpkeep (class CHostageImprov *, float ); /* linkage=_ZN14CHostageImprov8OnUpkeepEf */
virtual void OnReset (class CHostageImprov *); /* linkage=_ZN14CHostageImprov7OnResetEv */
virtual void OnMoveToSuccess (class CHostageImprov *, const class Vector &); /* linkage=_ZN14CHostageImprov15OnMoveToSuccessERK6Vector */
virtual void OnMoveToFailure (class CHostageImprov *, const class Vector &, enum MoveToFailureType ); /* linkage=_ZN14CHostageImprov15OnMoveToFailureERK6VectorN12IImprovEvent17MoveToFailureTypeE */
virtual void OnInjury (class CHostageImprov *, float ); /* linkage=_ZN14CHostageImprov8OnInjuryEf */
virtual void OnGameEvent (class CHostageImprov *, enum GameEventType , class CBaseEntity *, class CBaseEntity *); /* linkage=_ZN14CHostageImprov11OnGameEventE13GameEventTypeP11CBaseEntityS2_ */
virtual void OnTouch (class CHostageImprov *, class CBaseEntity *); /* linkage=_ZN14CHostageImprov7OnTouchEP11CBaseEntity */
void ResetJump (class CHostageImprov *); /* linkage=_ZN14CHostageImprov9ResetJumpEv */
void ApplyForce (class CHostageImprov *, class Vector ); /* linkage=_ZN14CHostageImprov10ApplyForceE6Vector */
class Vectorconst GetActualVelocity (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov17GetActualVelocityEv */
void SetMoveLimit (class CHostageImprov *, enum MoveType ); /* linkage=_ZN14CHostageImprov12SetMoveLimitENS_8MoveTypeE */
enum MoveType GetMoveLimit (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov12GetMoveLimitEv */
class CNavPath * GetPath (class CHostageImprov *); /* linkage=_ZN14CHostageImprov7GetPathEv */
class CNavPathFollower * GetPathFollower (class CHostageImprov *); /* linkage=_ZN14CHostageImprov15GetPathFollowerEv */
void Idle (class CHostageImprov *); /* linkage=_ZN14CHostageImprov4IdleEv */
bool IsIdle (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov6IsIdleEv */
void Follow (class CHostageImprov *, class CBasePlayer *); /* linkage=_ZN14CHostageImprov6FollowEP11CBasePlayer */
bool IsFollowing (const class CHostageImprov *, const class CBaseEntity *); /* linkage=_ZNK14CHostageImprov11IsFollowingEPK11CBaseEntity */
void Escape (class CHostageImprov *); /* linkage=_ZN14CHostageImprov6EscapeEv */
bool IsEscaping (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov10IsEscapingEv */
void Retreat (class CHostageImprov *); /* linkage=_ZN14CHostageImprov7RetreatEv */
bool IsRetreating (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov12IsRetreatingEv */
bool IsAtHome (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov8IsAtHomeEv */
bool CanSeeRescueZone (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov16CanSeeRescueZoneEv */
class CBaseEntity * GetFollowLeader (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov15GetFollowLeaderEv */
class CBasePlayer * GetClosestVisiblePlayer (class CHostageImprov *, int ); /* linkage=_ZN14CHostageImprov23GetClosestVisiblePlayerEi */
float GetTimeSinceLastSawPlayer (class CHostageImprov *, int ); /* linkage=_ZN14CHostageImprov25GetTimeSinceLastSawPlayerEi */
float GetTimeSinceLastInjury (class CHostageImprov *); /* linkage=_ZN14CHostageImprov22GetTimeSinceLastInjuryEv */
float GetTimeSinceLastNoise (class CHostageImprov *); /* linkage=_ZN14CHostageImprov21GetTimeSinceLastNoiseEv */
bool IsTerroristNearby (class CHostageImprov *); /* linkage=_ZN14CHostageImprov17IsTerroristNearbyEv */
void Frighten (class CHostageImprov *, enum ScareType ); /* linkage=_ZN14CHostageImprov8FrightenENS_9ScareTypeE */
bool IsScared (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov8IsScaredEv */
enum ScareType GetScareIntensity (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov17GetScareIntensityEv */
bool IsIgnoringTerrorists (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov20IsIgnoringTerroristsEv */
float GetAggression (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov13GetAggressionEv */
void Chatter (class CHostageImprov *, enum HostageChatterType , bool ); /* linkage=_ZN14CHostageImprov7ChatterE18HostageChatterTypeb */
void DelayedChatter (class CHostageImprov *, float , enum HostageChatterType , bool ); /* linkage=_ZN14CHostageImprov14DelayedChatterEf18HostageChatterTypeb */
void UpdateDelayedChatter (class CHostageImprov *); /* linkage=_ZN14CHostageImprov20UpdateDelayedChatterEv */
bool IsTalking (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9IsTalkingEv */
void UpdateGrenadeReactions (class CHostageImprov *); /* linkage=_ZN14CHostageImprov22UpdateGrenadeReactionsEv */
void Afraid (class CHostageImprov *); /* linkage=_ZN14CHostageImprov6AfraidEv */
void Wave (class CHostageImprov *); /* linkage=_ZN14CHostageImprov4WaveEv */
void Agree (class CHostageImprov *); /* linkage=_ZN14CHostageImprov5AgreeEv */
void Disagree (class CHostageImprov *); /* linkage=_ZN14CHostageImprov8DisagreeEv */
void CrouchDie (class CHostageImprov *); /* linkage=_ZN14CHostageImprov9CrouchDieEv */
void Flinch (class CHostageImprov *, Activity ); /* linkage=_ZN14CHostageImprov6FlinchE8Activity */
void UpdateIdleActivity (class CHostageImprov *, Activity , Activity ); /* linkage=_ZN14CHostageImprov18UpdateIdleActivityE8ActivityS0_ */
void UpdateStationaryAnimation (class CHostageImprov *); /* linkage=_ZN14CHostageImprov25UpdateStationaryAnimationEv */
class CHostage * GetEntity (const class CHostageImprov *); /* linkage=_ZNK14CHostageImprov9GetEntityEv */
void CheckForNearbyTerrorists (class CHostageImprov *); /* linkage=_ZN14CHostageImprov24CheckForNearbyTerroristsEv */
void UpdatePosition (class CHostageImprov *, float ); /* linkage=_ZN14CHostageImprov14UpdatePositionEf */
void MoveTowards (class CHostageImprov *, const class Vector &, float ); /* linkage=_ZN14CHostageImprov11MoveTowardsERK6Vectorf */
bool FaceTowards (class CHostageImprov *, const class Vector &, float ); /* linkage=_ZN14CHostageImprov11FaceTowardsERK6Vectorf */
float GetSpeed (class CHostageImprov *); /* linkage=_ZN14CHostageImprov8GetSpeedEv */
void SetMoveAngle (class CHostageImprov *, float ); /* linkage=_ZN14CHostageImprov12SetMoveAngleEf */
void Wiggle (class CHostageImprov *); /* linkage=_ZN14CHostageImprov6WiggleEv */
void ClearPath (class CHostageImprov *); /* linkage=_ZN14CHostageImprov9ClearPathEv */
bool DiscontinuityJump (class CHostageImprov *, float , bool , bool ); /* linkage=_ZN14CHostageImprov17DiscontinuityJumpEfbb */
virtual bool GetSimpleGroundHeightWithFloor (class CHostageImprov *, const class Vector *, float *, class Vector *); /* linkage=_ZN14CHostageImprov30GetSimpleGroundHeightWithFloorEPK6VectorPfPS0_ */
void UpdateVision (class CHostageImprov *); /* linkage=_ZN14CHostageImprov12UpdateVisionEv */
/* vtable has 55 entries: {
[5] = IsAlive(_ZNK14CHostageImprov7IsAliveEv),
[6] = MoveTo(_ZN14CHostageImprov6MoveToERK6Vector),
[7] = LookAt(_ZN14CHostageImprov6LookAtERK6Vector),
[8] = ClearLookAt(_ZN14CHostageImprov11ClearLookAtEv),
[9] = FaceTo(_ZN14CHostageImprov6FaceToERK6Vector),
[10] = ClearFaceTo(_ZN14CHostageImprov11ClearFaceToEv),
[11] = IsAtMoveGoal(_ZNK14CHostageImprov12IsAtMoveGoalEf),
[12] = HasLookAt(_ZNK14CHostageImprov9HasLookAtEv),
[13] = HasFaceTo(_ZNK14CHostageImprov9HasFaceToEv),
[14] = IsAtFaceGoal(_ZNK14CHostageImprov12IsAtFaceGoalEv),
[15] = IsFriendInTheWay(_ZNK14CHostageImprov16IsFriendInTheWayERK6Vector),
[16] = IsFriendInTheWay(_ZNK14CHostageImprov16IsFriendInTheWayEP11CBaseEntityRK6Vector),
[17] = MoveForward(_ZN14CHostageImprov11MoveForwardEv),
[18] = MoveBackward(_ZN14CHostageImprov12MoveBackwardEv),
[19] = StrafeLeft(_ZN14CHostageImprov10StrafeLeftEv),
[20] = StrafeRight(_ZN14CHostageImprov11StrafeRightEv),
[21] = Jump(_ZN14CHostageImprov4JumpEv),
[22] = Crouch(_ZN14CHostageImprov6CrouchEv),
[23] = StandUp(_ZN14CHostageImprov7StandUpEv),
[24] = TrackPath(_ZN14CHostageImprov9TrackPathERK6Vectorf),
[25] = StartLadder(_ZN14CHostageImprov11StartLadderEPK10CNavLadder15NavTraverseTypePK6VectorS6_),
[26] = TraverseLadder(_ZN14CHostageImprov14TraverseLadderEPK10CNavLadder15NavTraverseTypePK6VectorS6_f),
[28] = Run(_ZN14CHostageImprov3RunEv),
[29] = Walk(_ZN14CHostageImprov4WalkEv),
[30] = Stop(_ZN14CHostageImprov4StopEv),
[31] = GetMoveAngle(_ZNK14CHostageImprov12GetMoveAngleEv),
[32] = GetFaceAngle(_ZNK14CHostageImprov12GetFaceAngleEv),
[33] = GetFeet(_ZNK14CHostageImprov7GetFeetEv),
[34] = GetCentroid(_ZNK14CHostageImprov11GetCentroidEv),
[35] = GetEyes(_ZNK14CHostageImprov7GetEyesEv),
[36] = IsRunning(_ZNK14CHostageImprov9IsRunningEv),
[37] = IsWalking(_ZNK14CHostageImprov9IsWalkingEv),
[38] = IsStopped(_ZNK14CHostageImprov9IsStoppedEv),
[39] = IsCrouching(_ZNK14CHostageImprov11IsCrouchingEv),
[40] = IsJumping(_ZNK14CHostageImprov9IsJumpingEv),
[41] = IsUsingLadder(_ZNK14CHostageImprov13IsUsingLadderEv),
[42] = IsOnGround(_ZNK14CHostageImprov10IsOnGroundEv),
[43] = IsMoving(_ZNK14CHostageImprov8IsMovingEv),
[44] = CanRun(_ZNK14CHostageImprov6CanRunEv),
[45] = CanCrouch(_ZNK14CHostageImprov9CanCrouchEv),
[46] = CanJump(_ZNK14CHostageImprov7CanJumpEv),
[47] = IsVisible(_ZNK14CHostageImprov9IsVisibleERK6Vectorb),
[48] = IsPlayerLookingAtMe(_ZNK14CHostageImprov19IsPlayerLookingAtMeEP11CBasePlayerf),
[49] = IsAnyPlayerLookingAtMe(_ZNK14CHostageImprov22IsAnyPlayerLookingAtMeEif),
[50] = GetClosestPlayerByTravelDistance(_ZNK14CHostageImprov32GetClosestPlayerByTravelDistanceEiPf),
[51] = GetLastKnownArea(_ZNK14CHostageImprov16GetLastKnownAreaEv),
[52] = OnUpdate(_ZN14CHostageImprov8OnUpdateEf),
[53] = OnUpkeep(_ZN14CHostageImprov8OnUpkeepEf),
[54] = OnReset(_ZN14CHostageImprov7OnResetEv),
[0] = OnMoveToSuccess(_ZN14CHostageImprov15OnMoveToSuccessERK6Vector),
[1] = OnMoveToFailure(_ZN14CHostageImprov15OnMoveToFailureERK6VectorN12IImprovEvent17MoveToFailureTypeE),
[2] = OnInjury(_ZN14CHostageImprov8OnInjuryEf),
[55] = OnGameEvent(_ZN14CHostageImprov11OnGameEventE13GameEventTypeP11CBaseEntityS2_),
[56] = OnTouch(_ZN14CHostageImprov7OnTouchEP11CBaseEntity),
[27] = GetSimpleGroundHeightWithFloor(_ZN14CHostageImprov30GetSimpleGroundHeightWithFloorEPK6VectorPfPS0_),
} */
/* size: 7308, cachelines: 115, members: 70 */
/* sum members: 6878, holes: 18, sum holes: 430 */
/* last cacheline: 12 bytes */
};
HostageFollowState
PHP Code:
class HostageFollowState : public HostageState {
public:
/* class HostageState <ancestor>; */ /* 0 12 */
private:
class EHANDLE m_leader ; /* 12 8 */
class Vector m_lastLeaderPos ; /* 20 12 */
bool m_isWaiting ; /* 32 1 */
/* XXX 3 bytes hole, try to pack */
float m_stopRange ; /* 36 4 */
class CountdownTimer m_makeWayTimer ; /* 40 8 */
class CountdownTimer m_impatientTimer ; /* 48 8 */
class CountdownTimer m_repathTimer ; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
bool m_isWaitingForFriend ; /* 64 1 */
/* XXX 3 bytes hole, try to pack */
class CountdownTimer m_waitForFriendTimer ; /* 68 8 */
virtual void OnEnter (class HostageFollowState *, class CHostageImprov *); /* linkage=_ZN18HostageFollowState7OnEnterEP14CHostageImprov */
virtual void OnUpdate (class HostageFollowState *, class CHostageImprov *); /* linkage=_ZN18HostageFollowState8OnUpdateEP14CHostageImprov */
virtual void OnExit (class HostageFollowState *, class CHostageImprov *); /* linkage=_ZN18HostageFollowState6OnExitEP14CHostageImprov */
virtual void UpdateStationaryAnimation (class HostageFollowState *, class CHostageImprov *); /* linkage=_ZN18HostageFollowState25UpdateStationaryAnimationEP14CHostageImprov */
virtual const char * GetName (const class HostageFollowState *); /* linkage=_ZNK18HostageFollowState7GetNameEv */
void SetLeader (class HostageFollowState *, class CBaseEntity *); /* linkage=_ZN18HostageFollowState9SetLeaderEP11CBaseEntity */
class CBaseEntity * GetLeader (const class HostageFollowState *); /* linkage=_ZNK18HostageFollowState9GetLeaderEv */
virtual void ~ HostageFollowState (class HostageFollowState *, int );
/* vtable has 5 entries: {
[2] = OnEnter(_ZN18HostageFollowState7OnEnterEP14CHostageImprov),
[3] = OnUpdate(_ZN18HostageFollowState8OnUpdateEP14CHostageImprov),
[4] = OnExit(_ZN18HostageFollowState6OnExitEP14CHostageImprov),
[6] = UpdateStationaryAnimation(_ZN18HostageFollowState25UpdateStationaryAnimationEP14CHostageImprov),
[5] = GetName(_ZNK18HostageFollowState7GetNameEv),
} */
/* size: 76, cachelines: 2, members: 10 */
/* sum members: 70, holes: 2, sum holes: 6 */
/* last cacheline: 12 bytes */
};
HostageStateMachine
PHP Code:
class HostageStateMachine : public SimpleStateMachine < CHostageImprov *, HostageState >, public IImprovEvent {
public:
/* class SimpleStateMachine<CHostageImprov*, HostageState> <ancestor>; */ /* 4 12 */
/* class IImprovEvent <ancestor>; */ /* 0 4 */
void HostageStateMachine (class HostageStateMachine *, const class HostageStateMachine &);
void HostageStateMachine (class HostageStateMachine *);
void ~ HostageStateMachine (class HostageStateMachine *, int );
virtual void OnMoveToSuccess (class HostageStateMachine *, const class Vector &); /* linkage=_ZN19HostageStateMachine15OnMoveToSuccessERK6Vector */
virtual void OnMoveToFailure (class HostageStateMachine *, const class Vector &, enum MoveToFailureType ); /* linkage=_ZN19HostageStateMachine15OnMoveToFailureERK6VectorN12IImprovEvent17MoveToFailureTypeE */
virtual void OnInjury (class HostageStateMachine *, float ); /* linkage=_ZN19HostageStateMachine8OnInjuryEf */
void UpdateStationaryAnimation (class HostageStateMachine *, class CHostageImprov *); /* linkage=_ZN19HostageStateMachine25UpdateStationaryAnimationEP14CHostageImprov */
/* vtable has 3 entries: {
[0] = OnMoveToSuccess(_ZN19HostageStateMachine15OnMoveToSuccessERK6Vector),
[1] = OnMoveToFailure(_ZN19HostageStateMachine15OnMoveToFailureERK6VectorN12IImprovEvent17MoveToFailureTypeE),
[2] = OnInjury(_ZN19HostageStateMachine8OnInjuryEf),
} */
/* size: 16, cachelines: 1, members: 2 */
/* padding: 12 */
/* last cacheline: 16 bytes */
/* BRAIN FART ALERT! 16 != 16 + 0(holes), diff = 0 */
};
SimpleStateMachine
PHP Code:
class SimpleStateMachine < CHostageImprov *, HostageState > {
protected:
class HostageState * m_state ; /* 0 4 */
class IntervalTimer m_stateTimer ; /* 4 4 */
class CHostageImprov * m_userData ; /* 8 4 */
void SimpleStateMachine (class SimpleStateMachine < CHostageImprov *, HostageState > *);
void Reset (class SimpleStateMachine < CHostageImprov *, HostageState > *, class CHostageImprov *); /* linkage=_ZN18SimpleStateMachineIP14CHostageImprov12HostageStateE5ResetES1_ */
void SetState (class SimpleStateMachine < CHostageImprov *, HostageState > *, class HostageState *); /* linkage=_ZN18SimpleStateMachineIP14CHostageImprov12HostageStateE8SetStateEPS2_ */
float GetStateDuration (const class SimpleStateMachine < CHostageImprov *, HostageState > *); /* linkage=_ZNK18SimpleStateMachineIP14CHostageImprov12HostageStateE16GetStateDurationEv */
bool IsState (const class SimpleStateMachine < CHostageImprov *, HostageState > *, const class HostageState *); /* linkage=_ZNK18SimpleStateMachineIP14CHostageImprov12HostageStateE7IsStateEPKS2_ */
void Update (class SimpleStateMachine < CHostageImprov *, HostageState > *); /* linkage=_ZN18SimpleStateMachineIP14CHostageImprov12HostageStateE6UpdateEv */
/* size: 12, cachelines: 1, members: 3 */
/* last cacheline: 12 bytes */
};
HostageState
PHP Code:
class HostageState : public SimpleState < CHostageImprov *>, public IImprovEvent {
public:
/* class SimpleState<CHostageImprov*> <ancestor>; */ /* 0 8 */
/* class IImprovEvent <ancestor>; */ /* 8 4 */
void HostageState (class HostageState *, const class HostageState &);
void HostageState (class HostageState *);
virtual void UpdateStationaryAnimation (class HostageState *, class CHostageImprov *); /* linkage=_ZN12HostageState25UpdateStationaryAnimationEP14CHostageImprov */
virtual void ~ HostageState (class HostageState *, int );
/* vtable has 1 entries: {
[6] = UpdateStationaryAnimation(_ZN12HostageState25UpdateStationaryAnimationEP14CHostageImprov),
} */
/* size: 12, cachelines: 1, members: 2 */
/* last cacheline: 12 bytes */
};
SimpleState
class SimpleState<CHostageImprov*> {
int ()(void) * * _vptr.SimpleState; /* 0 4 */
private:
class SimpleState<CHostageImprov*> * m_parent; /* 4 4 */
void SimpleState(class SimpleState<CHostageImprov*> *, const class SimpleState<CHostageImprov*> &);
void SimpleState(class SimpleState<CHostageImprov*> *);
virtual void ~SimpleState(class SimpleState<CHostageImprov*> *, int);
virtual void OnEnter(class SimpleState<CHostageImprov*> *, class CHostageImprov *); /* linkage=_ZN11SimpleStateIP14CHostageImprovE7O nEnterES1_ */
virtual void OnUpdate(class SimpleState<CHostageImprov*> *, class CHostageImprov *); /* linkage=_ZN11SimpleStateIP14CHostageImprovE8O nUpdateES1_ */
virtual void OnExit(class SimpleState<CHostageImprov*> *, class CHostageImprov *); /* linkage=_ZN11SimpleStateIP14CHostageImprovE6O nExitES1_ */
virtual const char * GetName(const class SimpleState<CHostageImprov*> *); /* linkage=_ZNK11SimpleStateIP14CHostageImprovE7 GetNameEv */
void SetParent(class SimpleState<CHostageImprov*> *, class SimpleState<CHostageImprov*> *); /* linkage=_ZN11SimpleStateIP14CHostageImprovE9S etParentEPS2_ */
class SimpleState<CHostageImprov*> * GetParent(const class SimpleState<CHostageImprov*> *); /* linkage=_ZNK11SimpleStateIP14CHostageImprovE9 GetParentEv */
/* vtable has 4 entries: {
[2] = OnEnter(_ZN11SimpleStateIP14CHostageImprovE7O nEnterES1_),
[3] = OnUpdate(_ZN11SimpleStateIP14CHostageImprovE8 OnUpdateES1_),
[4] = OnExit(_ZN11SimpleStateIP14CHostageImprovE6On ExitES1_),
[5] = GetName(_ZNK11SimpleStateIP14CHostageImprovE7 GetNameEv),
} */
/* size: 8, cachelines: 1, members: 2 */
/* last cacheline: 8 bytes */
};[/php]
__________________
Last edited by Arkshine; 05-07-2014 at 16:58 .