Added EXT_FUNC for virtual functions

This commit is contained in:
s1lentq 2015-12-09 04:39:54 +06:00
parent bd08ec6939
commit 70dc948091
149 changed files with 6012 additions and 6591 deletions

View File

@ -12,7 +12,7 @@ TYPEDESCRIPTION CAirtank::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CAirtank, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CAirtank, m_SaveData)[1];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -57,21 +57,22 @@ public:
int Save_(CSave &save); int Save_(CSave &save);
int Restore_(CRestore &restore); int Restore_(CRestore &restore);
void Killed_(entvars_t *pevAttacker, int iGib); void Killed_(entvars_t *pevAttacker, int iGib);
int BloodColor_(void)
{
return BloodColor();
}
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
private: private:
int m_state; int m_state;
}; };
#ifdef HOOK_GAMEDLL
// linked objects
C_DLLEXPORT void item_airtank(entvars_t *pev); C_DLLEXPORT void item_airtank(entvars_t *pev);
#endif // HOOK_GAMEDLL
#endif // AIRTANK_H #endif // AIRTANK_H

View File

@ -32,22 +32,22 @@
#pragma once #pragma once
#endif #endif
/* <9792> ../cstrike/dlls/ammo.cpp:14 */ /* <9792> ../cstrike/dlls/ammo.cpp:14 */
class C9MMAmmo: public CBasePlayerAmmo class C9MMAmmo: public CBasePlayerAmmo
{ {
public: public:
virtual void Spawn(void); virtual void Spawn(void);
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <97df> ../cstrike/dlls/ammo.cpp:40 */ /* <97df> ../cstrike/dlls/ammo.cpp:40 */
@ -58,17 +58,17 @@ public:
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <982c> ../cstrike/dlls/ammo.cpp:67 */ /* <982c> ../cstrike/dlls/ammo.cpp:67 */
class C556NatoAmmo: public CBasePlayerAmmo class C556NatoAmmo: public CBasePlayerAmmo
{ {
public: public:
@ -76,154 +76,154 @@ public:
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <9879> ../cstrike/dlls/ammo.cpp:93 */ /* <9879> ../cstrike/dlls/ammo.cpp:93 */
class C556NatoBoxAmmo: public CBasePlayerAmmo class C556NatoBoxAmmo: public CBasePlayerAmmo
{ {
public: public:
virtual void Spawn(void); virtual void Spawn(void);
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <98c6> ../cstrike/dlls/ammo.cpp:119 */ /* <98c6> ../cstrike/dlls/ammo.cpp:119 */
class C762NatoAmmo: public CBasePlayerAmmo class C762NatoAmmo: public CBasePlayerAmmo
{ {
public: public:
virtual void Spawn(void); virtual void Spawn(void);
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */
/* <9913> ../cstrike/dlls/ammo.cpp:145 */ #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */
/* <9913> ../cstrike/dlls/ammo.cpp:145 */
class C45ACPAmmo: public CBasePlayerAmmo class C45ACPAmmo: public CBasePlayerAmmo
{ {
public: public:
virtual void Spawn(void); virtual void Spawn(void);
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <9960> ../cstrike/dlls/ammo.cpp:171 */ /* <9960> ../cstrike/dlls/ammo.cpp:171 */
class C50AEAmmo: public CBasePlayerAmmo class C50AEAmmo: public CBasePlayerAmmo
{ {
public: public:
virtual void Spawn(void); virtual void Spawn(void);
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <99ad> ../cstrike/dlls/ammo.cpp:197 */ /* <99ad> ../cstrike/dlls/ammo.cpp:197 */
class C338MagnumAmmo: public CBasePlayerAmmo class C338MagnumAmmo: public CBasePlayerAmmo
{ {
public: public:
virtual void Spawn(void); virtual void Spawn(void);
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <99fa> ../cstrike/dlls/ammo.cpp:224 */ /* <99fa> ../cstrike/dlls/ammo.cpp:224 */
class C57MMAmmo: public CBasePlayerAmmo class C57MMAmmo: public CBasePlayerAmmo
{ {
public: public:
virtual void Spawn(void); virtual void Spawn(void);
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <9a47> ../cstrike/dlls/ammo.cpp:249 */ /* <9a47> ../cstrike/dlls/ammo.cpp:249 */
class C357SIGAmmo: public CBasePlayerAmmo class C357SIGAmmo: public CBasePlayerAmmo
{ {
public: public:
virtual void Spawn(void); virtual void Spawn(void);
virtual void Precache(void); virtual void Precache(void);
virtual BOOL AddAmmo(CBaseEntity *pOther); virtual BOOL AddAmmo(CBaseEntity *pOther);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
BOOL AddAmmo_(CBaseEntity *pOther); BOOL AddAmmo_(CBaseEntity *pOther);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
// linked objects // linked objects
C_DLLEXPORT void ammo_9mm(entvars_t *pev); C_DLLEXPORT void ammo_9mm(entvars_t *pev);
C_DLLEXPORT void ammo_buckshot(entvars_t *pev); C_DLLEXPORT void ammo_buckshot(entvars_t *pev);
C_DLLEXPORT void ammo_556nato(entvars_t *pev); C_DLLEXPORT void ammo_556nato(entvars_t *pev);
C_DLLEXPORT void ammo_556natobox(entvars_t *pev); C_DLLEXPORT void ammo_556natobox(entvars_t *pev);
C_DLLEXPORT void ammo_762nato(entvars_t *pev); C_DLLEXPORT void ammo_762nato(entvars_t *pev);
C_DLLEXPORT void ammo_45acp(entvars_t *pev); C_DLLEXPORT void ammo_45acp(entvars_t *pev);
C_DLLEXPORT void ammo_50ae(entvars_t *pev); C_DLLEXPORT void ammo_50ae(entvars_t *pev);
C_DLLEXPORT void ammo_338magnum(entvars_t *pev); C_DLLEXPORT void ammo_338magnum(entvars_t *pev);
C_DLLEXPORT void ammo_57mm(entvars_t *pev); C_DLLEXPORT void ammo_57mm(entvars_t *pev);
C_DLLEXPORT void ammo_357sig(entvars_t *pev); C_DLLEXPORT void ammo_357sig(entvars_t *pev);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -16,104 +16,104 @@ TYPEDESCRIPTION CBaseAnimating::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseAnimating, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CBaseAnimating, m_SaveData)[5];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
/* <10583> ../cstrike/dlls/animating.cpp:38 */ /* <10583> ../cstrike/dlls/animating.cpp:38 */
IMPLEMENT_SAVERESTORE(CBaseAnimating, CBaseDelay); IMPLEMENT_SAVERESTORE(CBaseAnimating, CBaseDelay);
/* <105cf> ../cstrike/dlls/animating.cpp:45 */ /* <105cf> ../cstrike/dlls/animating.cpp:45 */
float CBaseAnimating::StudioFrameAdvance(float flInterval) float CBaseAnimating::StudioFrameAdvance(float flInterval)
{ {
if (flInterval == 0.0f) if (flInterval == 0.0f)
{ {
flInterval = gpGlobals->time - pev->animtime; flInterval = gpGlobals->time - pev->animtime;
if (flInterval <= 0.001) if (flInterval <= 0.001)
{ {
pev->animtime = gpGlobals->time; pev->animtime = gpGlobals->time;
return 0; return 0;
} }
}
if (pev->animtime == 0.0f)
flInterval = 0;
pev->frame += flInterval * m_flFrameRate * pev->framerate;
pev->animtime = gpGlobals->time;
if (pev->frame < 0.0 || pev->frame >= 256.0)
{
if (m_fSequenceLoops)
pev->frame -= (int)(pev->frame / 256.0) * 256.0;
else
pev->frame = (pev->frame < 0) ? 0 : 255;
m_fSequenceFinished = TRUE;
} }
return flInterval; if (pev->animtime == 0.0f)
flInterval = 0;
pev->frame += flInterval * m_flFrameRate * pev->framerate;
pev->animtime = gpGlobals->time;
if (pev->frame < 0.0 || pev->frame >= 256.0)
{
if (m_fSequenceLoops)
pev->frame -= (int)(pev->frame / 256.0) * 256.0;
else
pev->frame = (pev->frame < 0) ? 0 : 255;
m_fSequenceFinished = TRUE;
}
return flInterval;
} }
/* <10605> ../cstrike/dlls/animating.cpp:77 */ /* <10605> ../cstrike/dlls/animating.cpp:77 */
int CBaseAnimating::LookupActivity(int activity) int CBaseAnimating::LookupActivity(int activity)
{ {
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::LookupActivity(pmodel, pev, activity); return ::LookupActivity(pmodel, pev, activity);
} }
/* <10653> ../cstrike/dlls/animating.cpp:91 */ /* <10653> ../cstrike/dlls/animating.cpp:91 */
int CBaseAnimating::LookupActivityHeaviest(int activity) int CBaseAnimating::LookupActivityHeaviest(int activity)
{ {
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::LookupActivityHeaviest(pmodel, pev, activity); return ::LookupActivityHeaviest(pmodel, pev, activity);
} }
/* <107b1> ../cstrike/dlls/animating.cpp:136 */ /* <107b1> ../cstrike/dlls/animating.cpp:136 */
void CBaseAnimating::DispatchAnimEvents(float flInterval) void CBaseAnimating::DispatchAnimEvents(float flInterval)
{ {
MonsterEvent_t event; MonsterEvent_t event;
void *pmodel = GET_MODEL_PTR(ENT(pev));
if (!pmodel)
{
ALERT(at_aiconsole, "Gibbed monster is thinking!\n");
return;
}
// FIXME: I have to do this or some events get missed, and this is probably causing the problem below
flInterval = 0.1f;
// FIX: this still sometimes hits events twice
float flStart = pev->frame + (m_flLastEventCheck - pev->animtime) * m_flFrameRate * pev->framerate;
float flEnd = pev->frame + flInterval * m_flFrameRate * pev->framerate;
m_fSequenceFinished = FALSE;
m_flLastEventCheck = pev->animtime + flInterval;
if (flEnd >= 256.0f || flEnd <= 0.0f)
{
m_fSequenceFinished = TRUE;
}
int index = 0;
while ((index = GetAnimationEvent(pmodel, pev, &event, flStart, flEnd, index)) != 0)
{
HandleAnimEvent(&event);
}
}
/* <106a1> ../cstrike/dlls/animating.cpp:100 */
int CBaseAnimating::LookupSequence(const char *label)
{
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::LookupSequence(pmodel, label);
} if (!pmodel)
{
/* <10711> ../cstrike/dlls/animating.cpp:110 */ ALERT(at_aiconsole, "Gibbed monster is thinking!\n");
void CBaseAnimating::ResetSequenceInfo(void) return;
{ }
// FIXME: I have to do this or some events get missed, and this is probably causing the problem below
flInterval = 0.1f;
// FIX: this still sometimes hits events twice
float flStart = pev->frame + (m_flLastEventCheck - pev->animtime) * m_flFrameRate * pev->framerate;
float flEnd = pev->frame + flInterval * m_flFrameRate * pev->framerate;
m_fSequenceFinished = FALSE;
m_flLastEventCheck = pev->animtime + flInterval;
if (flEnd >= 256.0f || flEnd <= 0.0f)
{
m_fSequenceFinished = TRUE;
}
int index = 0;
while ((index = GetAnimationEvent(pmodel, pev, &event, flStart, flEnd, index)) != 0)
{
HandleAnimEvent(&event);
}
}
/* <106a1> ../cstrike/dlls/animating.cpp:100 */
int CBaseAnimating::LookupSequence(const char *label)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::LookupSequence(pmodel, label);
}
/* <10711> ../cstrike/dlls/animating.cpp:110 */
void CBaseAnimating::ResetSequenceInfo(void)
{
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
GetSequenceInfo(pmodel, pev, &m_flFrameRate, &m_flGroundSpeed); GetSequenceInfo(pmodel, pev, &m_flFrameRate, &m_flGroundSpeed);
@ -122,175 +122,175 @@ void CBaseAnimating::ResetSequenceInfo(void)
pev->framerate = 1.0f; pev->framerate = 1.0f;
m_fSequenceFinished = FALSE; m_fSequenceFinished = FALSE;
m_flLastEventCheck = gpGlobals->time; m_flLastEventCheck = gpGlobals->time;
} }
/* <1077c> ../cstrike/dlls/animating.cpp:126 */ /* <1077c> ../cstrike/dlls/animating.cpp:126 */
BOOL CBaseAnimating::GetSequenceFlags(void) BOOL CBaseAnimating::GetSequenceFlags(void)
{ {
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::GetSequenceFlags(pmodel, pev); return ::GetSequenceFlags(pmodel, pev);
} }
/* <10837> ../cstrike/dlls/animating.cpp:171 */ /* <10837> ../cstrike/dlls/animating.cpp:171 */
float CBaseAnimating::SetBoneController(int iController, float flValue) float CBaseAnimating::SetBoneController(int iController, float flValue)
{ {
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
return SetController(pmodel, pev, iController, flValue); return SetController(pmodel, pev, iController, flValue);
} }
/* <10893> ../cstrike/dlls/animating.cpp:180 */ /* <10893> ../cstrike/dlls/animating.cpp:180 */
void CBaseAnimating::InitBoneControllers(void) void CBaseAnimating::InitBoneControllers(void)
{ {
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
SetController(pmodel, pev, 0, 0); SetController(pmodel, pev, 0, 0);
SetController(pmodel, pev, 1, 0); SetController(pmodel, pev, 1, 0);
SetController(pmodel, pev, 2, 0); SetController(pmodel, pev, 2, 0);
SetController(pmodel, pev, 3, 0); SetController(pmodel, pev, 3, 0);
} }
/* <108d3> ../cstrike/dlls/animating.cpp:192 */ /* <108d3> ../cstrike/dlls/animating.cpp:192 */
NOXREF float CBaseAnimating::SetBlending(int iBlender, float flValue) NOXREF float CBaseAnimating::SetBlending(int iBlender, float flValue)
{ {
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::SetBlending(pmodel, pev, iBlender, flValue); return ::SetBlending(pmodel, pev, iBlender, flValue);
} }
/* <1092f> ../cstrike/dlls/animating.cpp:201 */ /* <1092f> ../cstrike/dlls/animating.cpp:201 */
NOXREF void CBaseAnimating::GetBonePosition(int iBone, Vector &origin, Vector &angles) NOXREF void CBaseAnimating::GetBonePosition(int iBone, Vector &origin, Vector &angles)
{ {
GET_BONE_POSITION(ENT(pev), iBone, origin, angles); GET_BONE_POSITION(ENT(pev), iBone, origin, angles);
} }
/* <10984> ../cstrike/dlls/animating.cpp:208 */ /* <10984> ../cstrike/dlls/animating.cpp:208 */
NOXREF void CBaseAnimating::GetAttachment(int iAttachment, Vector &origin, Vector &angles) NOXREF void CBaseAnimating::GetAttachment(int iAttachment, Vector &origin, Vector &angles)
{ {
GET_ATTACHMENT(ENT(pev), iAttachment, origin, angles); GET_ATTACHMENT(ENT(pev), iAttachment, origin, angles);
} }
/* <109d4> ../cstrike/dlls/animating.cpp:215 */ /* <109d4> ../cstrike/dlls/animating.cpp:215 */
NOXREF int CBaseAnimating::FindTransition(int iEndingSequence, int iGoalSequence, int *piDir) NOXREF int CBaseAnimating::FindTransition(int iEndingSequence, int iGoalSequence, int *piDir)
{ {
void *pmodel = GET_MODEL_PTR(ENT(pev)); void *pmodel = GET_MODEL_PTR(ENT(pev));
if (piDir == NULL) if (piDir == NULL)
{ {
int iDir; int iDir;
int sequence = ::FindTransition(pmodel, iEndingSequence, iGoalSequence, &iDir); int sequence = ::FindTransition(pmodel, iEndingSequence, iGoalSequence, &iDir);
if (iDir != 1) if (iDir != 1)
sequence = -1; sequence = -1;
return sequence; return sequence;
} }
return ::FindTransition(pmodel, iEndingSequence, iGoalSequence, piDir); return ::FindTransition(pmodel, iEndingSequence, iGoalSequence, piDir);
} }
/* <10a5d> ../cstrike/dlls/animating.cpp:234 */ /* <10a5d> ../cstrike/dlls/animating.cpp:234 */
NOXREF void CBaseAnimating::GetAutomovement(Vector &origin, Vector &angles, float flInterval) NOXREF void CBaseAnimating::GetAutomovement(Vector &origin, Vector &angles, float flInterval)
{ {
; ;
} }
/* <10aad> ../cstrike/dlls/animating.cpp:239 */ /* <10aad> ../cstrike/dlls/animating.cpp:239 */
NOXREF void CBaseAnimating::SetBodygroup(int iGroup, int iValue) NOXREF void CBaseAnimating::SetBodygroup(int iGroup, int iValue)
{ {
::SetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup, iValue); ::SetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup, iValue);
} }
/* <10af0> ../cstrike/dlls/animating.cpp:244 */ /* <10af0> ../cstrike/dlls/animating.cpp:244 */
NOXREF int CBaseAnimating::GetBodygroup(int iGroup) NOXREF int CBaseAnimating::GetBodygroup(int iGroup)
{ {
return ::GetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup); return ::GetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup);
} }
/* <10b5f> ../cstrike/dlls/animating.cpp:250 */ /* <10b5f> ../cstrike/dlls/animating.cpp:250 */
int CBaseAnimating::ExtractBbox(int sequence, float *mins, float *maxs) int CBaseAnimating::ExtractBbox(int sequence, float *mins, float *maxs)
{ {
return ::ExtractBbox(GET_MODEL_PTR(ENT(pev)), sequence, mins, maxs); return ::ExtractBbox(GET_MODEL_PTR(ENT(pev)), sequence, mins, maxs);
} }
/* <10b99> ../cstrike/dlls/animating.cpp:258 */ /* <10b99> ../cstrike/dlls/animating.cpp:258 */
void CBaseAnimating::SetSequenceBox(void) void CBaseAnimating::SetSequenceBox(void)
{ {
Vector mins, maxs; Vector mins, maxs;
// Get sequence bbox // Get sequence bbox
if (ExtractBbox(pev->sequence, mins, maxs)) if (ExtractBbox(pev->sequence, mins, maxs))
{ {
// expand box for rotation // expand box for rotation
// find min / max for rotations // find min / max for rotations
float yaw = pev->angles.y * (M_PI / 180.0); float yaw = pev->angles.y * (M_PI / 180.0);
Vector xvector, yvector; Vector xvector, yvector;
xvector.x = cos(yaw); xvector.x = cos(yaw);
xvector.y = sin(yaw); xvector.y = sin(yaw);
yvector.x = -sin(yaw); yvector.x = -sin(yaw);
yvector.y = cos(yaw); yvector.y = cos(yaw);
Vector bounds[2]; Vector bounds[2];
bounds[0] = mins; bounds[0] = mins;
bounds[1] = maxs; bounds[1] = maxs;
Vector rmin(9999, 9999, 9999); Vector rmin(9999, 9999, 9999);
Vector rmax(-9999, -9999, -9999); Vector rmax(-9999, -9999, -9999);
Vector base, transformed; Vector base, transformed;
for (int i = 0; i <= 1; i++) for (int i = 0; i <= 1; i++)
{ {
base.x = bounds[i].x; base.x = bounds[i].x;
for (int j = 0; j <= 1; j++) for (int j = 0; j <= 1; j++)
{ {
base.y = bounds[j].y; base.y = bounds[j].y;
for (int k = 0; k <= 1; k++) for (int k = 0; k <= 1; k++)
{ {
base.z = bounds[k].z; base.z = bounds[k].z;
// transform the point // transform the point
transformed.x = xvector.x * base.x + yvector.x * base.y; transformed.x = xvector.x * base.x + yvector.x * base.y;
transformed.y = xvector.y * base.x + yvector.y * base.y; transformed.y = xvector.y * base.x + yvector.y * base.y;
transformed.z = base.z; transformed.z = base.z;
if (transformed.x < rmin.x) if (transformed.x < rmin.x)
rmin.x = transformed.x; rmin.x = transformed.x;
if (transformed.x > rmax.x) if (transformed.x > rmax.x)
rmax.x = transformed.x; rmax.x = transformed.x;
if (transformed.y < rmin.y) if (transformed.y < rmin.y)
rmin.y = transformed.y; rmin.y = transformed.y;
if (transformed.y > rmax.y) if (transformed.y > rmax.y)
rmax.y = transformed.y; rmax.y = transformed.y;
if (transformed.z < rmin.z) if (transformed.z < rmin.z)
rmin.z = transformed.z; rmin.z = transformed.z;
if (transformed.z > rmax.z) if (transformed.z > rmax.z)
rmax.z = transformed.z; rmax.z = transformed.z;
} }
} }
} }
rmin.z = 0; rmin.z = 0;
rmax.z = rmin.z + 1; rmax.z = rmin.z + 1;
UTIL_SetSize(pev, rmin, rmax); UTIL_SetSize(pev, rmin, rmax);
} }
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
int CBaseAnimating::Save(CSave &save) int CBaseAnimating::Save(CSave &save)
{ {
return Save_(save); return Save_(save);
} }
int CBaseAnimating::Restore(CRestore &restore) int CBaseAnimating::Restore(CRestore &restore)
{ {
return Restore_(restore); return Restore_(restore);
} }
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -73,28 +73,28 @@ public:
virtual BOOL FInViewCone(CBaseEntity *pEntity); virtual BOOL FInViewCone(CBaseEntity *pEntity);
virtual BOOL FInViewCone(const Vector *pOrigin); virtual BOOL FInViewCone(const Vector *pOrigin);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void KeyValue_(KeyValueData *pkvd); void KeyValue_(KeyValueData *pkvd);
void TraceAttack_(entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType); void TraceAttack_(entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType);
int TakeDamage_(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType); int TakeDamage_(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType);
int TakeHealth_(float flHealth, int bitsDamageType); int TakeHealth_(float flHealth, int bitsDamageType);
void Killed_(entvars_t *pevAttacker, int iGib); void Killed_(entvars_t *pevAttacker, int iGib);
float ChangeYaw_(int speed); float ChangeYaw_(int speed);
BOOL HasHumanGibs_(void); BOOL HasHumanGibs_(void);
BOOL HasAlienGibs_(void); BOOL HasAlienGibs_(void);
void FadeMonster_(void); void FadeMonster_(void);
void GibMonster_(void); void GibMonster_(void);
Activity GetDeathActivity_(void); Activity GetDeathActivity_(void);
void BecomeDead_(void); void BecomeDead_(void);
BOOL ShouldFadeOnDeath_(void); BOOL ShouldFadeOnDeath_(void);
int IRelationship_(CBaseEntity *pTarget); int IRelationship_(CBaseEntity *pTarget);
void MonsterInitDead_(void); void MonsterInitDead_(void);
void Look_(int iDistance); void Look_(int iDistance);
CBaseEntity *BestVisibleEnemy_(void); CBaseEntity *BestVisibleEnemy_(void);
BOOL FInViewCone_(CBaseEntity *pEntity); BOOL FInViewCone_(CBaseEntity *pEntity);
BOOL FInViewCone_(const Vector *pOrigin); BOOL FInViewCone_(const Vector *pOrigin);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:

View File

@ -28,8 +28,8 @@ TYPEDESCRIPTION CPendulum::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncRotating, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CFuncRotating, m_SaveData)[5];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CPendulum, m_SaveData)[8]; TYPEDESCRIPTION IMPL_CLASS(CPendulum, m_SaveData)[8];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -209,7 +209,7 @@ public:
void RampPitchVol(int fUp); void RampPitchVol(int fUp);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
public: public:
float m_flFanFriction; float m_flFanFriction;
@ -254,7 +254,7 @@ public:
// this touch func makes the pendulum a rope // this touch func makes the pendulum a rope
void EXPORT RopeTouch(CBaseEntity *pOther); void EXPORT RopeTouch(CBaseEntity *pOther);
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[8]; static TYPEDESCRIPTION IMPL(m_SaveData)[8];
public: public:
float m_accel; // Acceleration float m_accel; // Acceleration

View File

@ -110,16 +110,16 @@ NOBODY void CCSBot::BotTouch(CBaseEntity *other)
/* <2e89e3> ../cstrike/dlls/bot/cs_bot.cpp:335 */ /* <2e89e3> ../cstrike/dlls/bot/cs_bot.cpp:335 */
bool CCSBot::IsBusy(void) const bool CCSBot::IsBusy(void) const
{ {
if (IsAttacking() || if (IsAttacking() ||
IsBuying() || IsBuying() ||
IsDefusingBomb() || IsDefusingBomb() ||
GetTask() == PLANT_BOMB || GetTask() == PLANT_BOMB ||
GetTask() == RESCUE_HOSTAGES || GetTask() == RESCUE_HOSTAGES ||
IsSniping()) IsSniping())
{ {
return true; return true;
} }
return false; return false;
} }
@ -359,15 +359,15 @@ bool CCSBot::IsRogue(void) const
{ {
CCSBotManager *ctrl = TheCSBots(); CCSBotManager *ctrl = TheCSBots();
if (!ctrl->AllowRogues()) if (!ctrl->AllowRogues())
return false; return false;
// periodically re-evaluate our rogue status // periodically re-evaluate our rogue status
if (m_rogueTimer.IsElapsed()) if (m_rogueTimer.IsElapsed())
{ {
m_rogueTimer.Start(RANDOM_FLOAT(10, 30)); m_rogueTimer.Start(RANDOM_FLOAT(10, 30));
// our chance of going rogue is inversely proportional to our teamwork attribute // our chance of going rogue is inversely proportional to our teamwork attribute
const float rogueChance = 100.0f * (1.0f - GetProfile()->GetTeamwork()); const float rogueChance = 100.0f * (1.0f - GetProfile()->GetTeamwork());
m_isRogue = (RANDOM_FLOAT(0, 100) < rogueChance); m_isRogue = (RANDOM_FLOAT(0, 100) < rogueChance);
@ -468,13 +468,11 @@ NOBODY const Vector *FindNearbyRetreatSpot(CCSBot *me, float maxRange)
} }
/* <2eaa1d> ../cstrike/dlls/bot/cs_bot.cpp:1116 */ /* <2eaa1d> ../cstrike/dlls/bot/cs_bot.cpp:1116 */
NOBODY float CCSBot::GetRangeToFarthestEscortedHostage(void) float CCSBot::GetRangeToFarthestEscortedHostage(void)
{ {
// { FarthestHostage away(this);
// class FarthestHostage away; // 1118 g_pHostages->ForEachHostage(away);
// ForEachHostage<FarthestHostage>(const class CHostageManager *const this, return away.m_farRange;
// class FarthestHostage &func); // 1120
// }
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL

View File

@ -1247,7 +1247,7 @@ public:
if (IsSpotOccupied(m_me, spot->GetPosition())) if (IsSpotOccupied(m_me, spot->GetPosition()))
{ {
// player is in hiding spot // player is in hiding spot
/// @todo Check if player is moving or sitting still // TODO: Check if player is moving or sitting still
continue; continue;
} }
@ -1283,21 +1283,34 @@ private:
class FarthestHostage class FarthestHostage
{ {
public: public:
FarthestHostage(CCSBot *me)//, float range) FarthestHostage(const CCSBot *me)
{ {
m_me = me; m_me = me;
//m_farRange = range; m_farRange = -1.0;
} }
bool operator()(CHostage *hostage) bool operator()(CHostage *hostage)
{ {
//TODO: untested if (hostage->pev->takedamage != DAMAGE_YES)
return true;
if (!hostage->IsFollowing(m_me)) if (hostage->m_improv != NULL)
return false; {
if (!hostage->IsFollowingSomeone() || m_me != hostage->GetLeader())
return true;
}
else if (!hostage->IsFollowing(m_me))
return true;
float range = (hostage->Center() - m_me->pev->origin).Length();
if (range > m_farRange)
{
m_farRange = range;
}
return true; return true;
} }
private:
const CCSBot *m_me; const CCSBot *m_me;
float m_farRange; float m_farRange;

View File

@ -1,117 +1,117 @@
#include "precompiled.h" #include "precompiled.h"
/* <31d087> ../cstrike/dlls/bot/cs_bot_event.cpp:22 */ /* <31d087> ../cstrike/dlls/bot/cs_bot_event.cpp:22 */
void CCSBot::__MAKE_VHOOK(OnEvent)(GameEventType event, CBaseEntity *entity, CBaseEntity *other) void CCSBot::__MAKE_VHOOK(OnEvent)(GameEventType event, CBaseEntity *entity, CBaseEntity *other)
{ {
// { // {
// class CCSBotManager *ctrl; // 63 // class CCSBotManager *ctrl; // 63
// class CBasePlayer *player; // 65 // class CBasePlayer *player; // 65
// float range; // 363 // float range; // 363
// enum PriorityType priority; // 364 // enum PriorityType priority; // 364
// bool isHostile; // 365 // bool isHostile; // 365
// const Vector *newNoisePosition; // 419 // const Vector *newNoisePosition; // 419
// float newNoiseDist; // 420 // float newNoiseDist; // 420
// { // {
// class CBasePlayer *killer; // 81 // class CBasePlayer *killer; // 81
// { // {
// float const knifeAmbushChance; // 91 // float const knifeAmbushChance; // 91
// Hurry(CCSBot *const this, // Hurry(CCSBot *const this,
// float duration); // 88 // float duration); // 88
// } // }
// } // }
// Say(BotChatterInterface *const this, // Say(BotChatterInterface *const this,
// const char *phraseName, // const char *phraseName,
// float lifetime, // float lifetime,
// float delay); // 221 // float delay); // 221
// { // {
// float const bombBeepHearRangeSq; // 242 // float const bombBeepHearRangeSq; // 242
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 243 // const Vector &v); // 243
// LengthSquared(const Vector *const this); // 243 // LengthSquared(const Vector *const this); // 243
// { // {
// const class Zone *zone; // 248 // const class Zone *zone; // 248
// } // }
// } // }
// { // {
// float const bombPickupHearRangeSq; // 229 // float const bombPickupHearRangeSq; // 229
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 230 // const Vector &v); // 230
// LengthSquared(const Vector *const this); // 230 // LengthSquared(const Vector *const this); // 230
// } // }
// { // {
// class CBasePlayer *victim; // 111 // class CBasePlayer *victim; // 111
// class CBasePlayer *killer; // 113 // class CBasePlayer *killer; // 113
// GetNearbyEnemyCount(const class CCSBot *const this); // 175 // GetNearbyEnemyCount(const class CCSBot *const this); // 175
// { // {
// float delay; // 185 // float delay; // 185
// } // }
// GetTimeSinceLastSawEnemy(const class CCSBot *const this); // 155 // GetTimeSinceLastSawEnemy(const class CCSBot *const this); // 155
// SetTask(CCSBot *const this, // SetTask(CCSBot *const this,
// enum TaskType task, // enum TaskType task,
// class CBaseEntity *entity); // 164 // class CBaseEntity *entity); // 164
// GetEnemy(CCSBot *const this); // 164 // GetEnemy(CCSBot *const this); // 164
// Say(BotChatterInterface *const this, // Say(BotChatterInterface *const this,
// const char *phraseName, // const char *phraseName,
// float lifetime, // float lifetime,
// float delay); // 118 // float delay); // 118
// entindex(CBaseEntity *const this); // 124 // entindex(CBaseEntity *const this); // 124
// } // }
// GetEnemy(CCSBot *const this); // 292 // GetEnemy(CCSBot *const this); // 292
// ForceRun(CCSBot *const this, // ForceRun(CCSBot *const this,
// float duration); // 294 // float duration); // 294
// { // {
// float const hearCallRange; // 329 // float const hearCallRange; // 329
// Vector vecCenter; // 334 // Vector vecCenter; // 334
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 330 // const Vector &v); // 330
// IsLengthGreaterThan(const Vector *const this, // IsLengthGreaterThan(const Vector *const this,
// float length); // 330 // float length); // 330
// { // {
// enum RouteType route; // 343 // enum RouteType route; // 343
// SetTask(CCSBot *const this, // SetTask(CCSBot *const this,
// enum TaskType task, // enum TaskType task,
// class CBaseEntity *entity); // 338 // class CBaseEntity *entity); // 338
// SetGoalEntity(CCSBot *const this, // SetGoalEntity(CCSBot *const this,
// class CBaseEntity *entity); // 340 // class CBaseEntity *entity); // 340
// } // }
// } // }
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 376 // const Vector &v); // 376
// IsLengthGreaterThan(const Vector *const this, // IsLengthGreaterThan(const Vector *const this,
// float length); // 376 // float length); // 376
// { // {
// float const headOffChance; // 390 // float const headOffChance; // 390
// SetTask(CCSBot *const this, // SetTask(CCSBot *const this,
// enum TaskType task, // enum TaskType task,
// class CBaseEntity *entity); // 396 // class CBaseEntity *entity); // 396
// } // }
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 420 // const Vector &v); // 420
// Length(const Vector *const this); // 420 // Length(const Vector *const this); // 420
// { // {
// float const veryCloseRange; // 434 // float const veryCloseRange; // 434
// class CNavArea *noiseArea; // 461 // class CNavArea *noiseArea; // 461
// float const maxErrorRadius; // 481 // float const maxErrorRadius; // 481
// float const maxHearingRange; // 482 // float const maxHearingRange; // 482
// float errorRadius; // 483 // float errorRadius; // 483
// { // {
// float const shortTermMemoryTime; // 445 // float const shortTermMemoryTime; // 445
// { // {
// float oldNoiseDist; // 452 // float oldNoiseDist; // 452
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 452 // const Vector &v); // 452
// Length(const Vector *const this); // 452 // Length(const Vector *const this); // 452
// } // }
// } // }
// } // }
// } // }
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void CCSBot::OnEvent(GameEventType event, CBaseEntity *entity, CBaseEntity *other) void CCSBot::OnEvent(GameEventType event, CBaseEntity *entity, CBaseEntity *other)
{ {
OnEvent_(event, entity, other); OnEvent_(event, entity, other);
} }
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -123,7 +123,7 @@ void CCSBotManager::__MAKE_VHOOK(RestartRound)(void)
m_bombDefuser = NULL; m_bombDefuser = NULL;
m_earliestBombPlantTimestamp = gpGlobals->time + RANDOM_FLOAT(10, 30); m_earliestBombPlantTimestamp = gpGlobals->time + RANDOM_FLOAT(10, 30);
IMPLEMENT_ARRAY(m_editCmd) = EDIT_NONE; IMPL(m_editCmd) = EDIT_NONE;
ResetRadioMessageTimestamps(); ResetRadioMessageTimestamps();
m_lastSeenEnemyTimestamp = -9999.9f; m_lastSeenEnemyTimestamp = -9999.9f;
@ -209,7 +209,7 @@ NOBODY bool CCSBotManager::IsOnOffense(CBasePlayer *player) const
void CCSBotManager::__MAKE_VHOOK(ServerActivate)(void) void CCSBotManager::__MAKE_VHOOK(ServerActivate)(void)
{ {
DestroyNavigationMap(); DestroyNavigationMap();
IMPLEMENT_ARRAY(m_isMapDataLoaded) = false; IMPL(m_isMapDataLoaded) = false;
m_zoneCount = 0; m_zoneCount = 0;
m_gameScenario = SCENARIO_DEATHMATCH; m_gameScenario = SCENARIO_DEATHMATCH;
@ -217,8 +217,8 @@ void CCSBotManager::__MAKE_VHOOK(ServerActivate)(void)
ValidateMapData(); ValidateMapData();
RestartRound(); RestartRound();
IMPLEMENT_ARRAY(m_isLearningMap) = false; IMPL(m_isLearningMap) = false;
IMPLEMENT_ARRAY(m_isAnalysisRequested) = false; IMPL(m_isAnalysisRequested) = false;
m_bServerActive = true; m_bServerActive = true;
AddServerCommands(); AddServerCommands();
@ -480,59 +480,59 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
} }
else if (FStrEq(pcmd, "bot_nav_delete")) else if (FStrEq(pcmd, "bot_nav_delete"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_DELETE; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_DELETE;
} }
else if (FStrEq(pcmd, "bot_nav_split")) else if (FStrEq(pcmd, "bot_nav_split"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_SPLIT; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_SPLIT;
} }
else if (FStrEq(pcmd, "bot_nav_merge")) else if (FStrEq(pcmd, "bot_nav_merge"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_MERGE; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_MERGE;
} }
else if (FStrEq(pcmd, "bot_nav_mark")) else if (FStrEq(pcmd, "bot_nav_mark"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_MARK; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_MARK;
} }
else if (FStrEq(pcmd, "bot_nav_begin_area")) else if (FStrEq(pcmd, "bot_nav_begin_area"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_BEGIN_AREA; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_BEGIN_AREA;
} }
else if (FStrEq(pcmd, "bot_nav_end_area")) else if (FStrEq(pcmd, "bot_nav_end_area"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_END_AREA; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_END_AREA;
} }
else if (FStrEq(pcmd, "bot_nav_connect")) else if (FStrEq(pcmd, "bot_nav_connect"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_CONNECT; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_CONNECT;
} }
else if (FStrEq(pcmd, "bot_nav_disconnect")) else if (FStrEq(pcmd, "bot_nav_disconnect"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_DISCONNECT; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_DISCONNECT;
} }
else if (FStrEq(pcmd, "bot_nav_splice")) else if (FStrEq(pcmd, "bot_nav_splice"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_SPLICE; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_SPLICE;
} }
else if (FStrEq(pcmd, "bot_nav_crouch")) else if (FStrEq(pcmd, "bot_nav_crouch"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_CROUCH; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_CROUCH;
} }
else if (FStrEq(pcmd, "bot_nav_jump")) else if (FStrEq(pcmd, "bot_nav_jump"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_JUMP; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_JUMP;
} }
else if (FStrEq(pcmd, "bot_nav_precise")) else if (FStrEq(pcmd, "bot_nav_precise"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_PRECISE; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_PRECISE;
} }
else if (FStrEq(pcmd, "bot_nav_no_jump")) else if (FStrEq(pcmd, "bot_nav_no_jump"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_NO_JUMP; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_NO_JUMP;
} }
else if (FStrEq(pcmd, "bot_nav_analyze")) else if (FStrEq(pcmd, "bot_nav_analyze"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_isAnalysisRequested) = true; IMPL_CLASS(CCSBotManager, m_isAnalysisRequested) = true;
} }
else if (FStrEq(pcmd, "bot_nav_strip")) else if (FStrEq(pcmd, "bot_nav_strip"))
{ {
@ -611,19 +611,19 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
} }
else if (FStrEq(pcmd, "bot_nav_toggle_place_mode")) else if (FStrEq(pcmd, "bot_nav_toggle_place_mode"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_TOGGLE_PLACE_MODE; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_TOGGLE_PLACE_MODE;
} }
else if (FStrEq(pcmd, "bot_nav_place_floodfill")) else if (FStrEq(pcmd, "bot_nav_place_floodfill"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_PLACE_FLOODFILL; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_PLACE_FLOODFILL;
} }
else if (FStrEq(pcmd, "bot_nav_place_pick")) else if (FStrEq(pcmd, "bot_nav_place_pick"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_PLACE_PICK; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_PLACE_PICK;
} }
else if (FStrEq(pcmd, "bot_nav_toggle_place_painting")) else if (FStrEq(pcmd, "bot_nav_toggle_place_painting"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_TOGGLE_PLACE_PAINTING; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_TOGGLE_PLACE_PAINTING;
} }
else if (FStrEq(pcmd, "bot_goto_mark")) else if (FStrEq(pcmd, "bot_goto_mark"))
{ {
@ -683,23 +683,23 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
} }
else if (FStrEq(pcmd, "bot_nav_mark_unnamed")) else if (FStrEq(pcmd, "bot_nav_mark_unnamed"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_MARK_UNNAMED; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_MARK_UNNAMED;
} }
else if (FStrEq(pcmd, "bot_nav_warp")) else if (FStrEq(pcmd, "bot_nav_warp"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_WARP_TO_MARK; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_WARP_TO_MARK;
} }
else if (FStrEq(pcmd, "bot_nav_corner_select")) else if (FStrEq(pcmd, "bot_nav_corner_select"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_SELECT_CORNER; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_SELECT_CORNER;
} }
else if (FStrEq(pcmd, "bot_nav_corner_raise")) else if (FStrEq(pcmd, "bot_nav_corner_raise"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_RAISE_CORNER; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_RAISE_CORNER;
} }
else if (FStrEq(pcmd, "bot_nav_corner_lower")) else if (FStrEq(pcmd, "bot_nav_corner_lower"))
{ {
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_LOWER_CORNER; IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_LOWER_CORNER;
} }
else if (FStrEq(pcmd, "bot_nav_check_consistency")) else if (FStrEq(pcmd, "bot_nav_check_consistency"))
{ {
@ -716,7 +716,7 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
/* <36c3c2> ../cstrike/dlls/bot/cs_bot_manager.cpp:903 */ /* <36c3c2> ../cstrike/dlls/bot/cs_bot_manager.cpp:903 */
NOBODY bool CCSBotManager::BotAddCommand(BotProfileTeamType team, bool isFromConsole) NOBODY bool CCSBotManager::BotAddCommand(BotProfileTeamType team, bool isFromConsole)
{ {
if (IMPLEMENT_ARRAY(m_isLearningMap) || ENG_CHECK_PARM("-nobots", NULL)) if (IMPL(m_isLearningMap) || ENG_CHECK_PARM("-nobots", NULL))
return false; return false;
const BotProfile *profile = NULL; const BotProfile *profile = NULL;
@ -815,12 +815,12 @@ NOBODY void CCSBotManager::MonitorBotCVars(void)
/* <36b780> ../cstrike/dlls/bot/cs_bot_manager.cpp:1109 */ /* <36b780> ../cstrike/dlls/bot/cs_bot_manager.cpp:1109 */
void CCSBotManager::ValidateMapData(void) void CCSBotManager::ValidateMapData(void)
{ {
if (IMPLEMENT_ARRAY(m_isMapDataLoaded) || !UTIL_IsGame("czero")) if (IMPL(m_isMapDataLoaded) || !UTIL_IsGame("czero"))
{ {
return; return;
} }
IMPLEMENT_ARRAY(m_isMapDataLoaded) = true; IMPL(m_isMapDataLoaded) = true;
if (LoadNavigationMap()) if (LoadNavigationMap())
{ {
@ -1092,15 +1092,15 @@ const CCSBotManager::Zone *CCSBotManager::GetClosestZone(const Vector *pos) cons
const Zone *close = NULL; const Zone *close = NULL;
float closeRangeSq = 1e9f; float closeRangeSq = 1e9f;
for (int z = 0; z < m_zoneCount; z++) for (int z = 0; z < m_zoneCount; z++)
{ {
float rangeSq = (m_zone[z].m_center - (*pos)).LengthSquared(); float rangeSq = (m_zone[z].m_center - (*pos)).LengthSquared();
if (rangeSq < closeRangeSq) if (rangeSq < closeRangeSq)
{ {
closeRangeSq = rangeSq; closeRangeSq = rangeSq;
close = &m_zone[z]; close = &m_zone[z];
} }
} }
return close; return close;

View File

@ -36,34 +36,34 @@
#define TheBots (*pTheBots) #define TheBots (*pTheBots)
#define cv_bot_traceview (*pcv_bot_traceview) #define cv_bot_traceview (*pcv_bot_traceview)
#define cv_bot_stop (*pcv_bot_stop) #define cv_bot_stop (*pcv_bot_stop)
#define cv_bot_show_nav (*pcv_bot_show_nav) #define cv_bot_show_nav (*pcv_bot_show_nav)
#define cv_bot_show_danger (*pcv_bot_show_danger) #define cv_bot_show_danger (*pcv_bot_show_danger)
#define cv_bot_nav_edit (*pcv_bot_nav_edit) #define cv_bot_nav_edit (*pcv_bot_nav_edit)
#define cv_bot_nav_zdraw (*pcv_bot_nav_zdraw) #define cv_bot_nav_zdraw (*pcv_bot_nav_zdraw)
#define cv_bot_walk (*pcv_bot_walk) #define cv_bot_walk (*pcv_bot_walk)
#define cv_bot_difficulty (*pcv_bot_difficulty) #define cv_bot_difficulty (*pcv_bot_difficulty)
#define cv_bot_debug (*pcv_bot_debug) #define cv_bot_debug (*pcv_bot_debug)
#define cv_bot_quicksave (*pcv_bot_quicksave) #define cv_bot_quicksave (*pcv_bot_quicksave)
#define cv_bot_quota (*pcv_bot_quota) #define cv_bot_quota (*pcv_bot_quota)
#define cv_bot_quota_match (*pcv_bot_quota_match) #define cv_bot_quota_match (*pcv_bot_quota_match)
#define cv_bot_prefix (*pcv_bot_prefix) #define cv_bot_prefix (*pcv_bot_prefix)
#define cv_bot_allow_rogues (*pcv_bot_allow_rogues) #define cv_bot_allow_rogues (*pcv_bot_allow_rogues)
#define cv_bot_allow_pistols (*pcv_bot_allow_pistols) #define cv_bot_allow_pistols (*pcv_bot_allow_pistols)
#define cv_bot_allow_shotguns (*pcv_bot_allow_shotguns) #define cv_bot_allow_shotguns (*pcv_bot_allow_shotguns)
#define cv_bot_allow_sub_machine_guns (*pcv_bot_allow_sub_machine_guns) #define cv_bot_allow_sub_machine_guns (*pcv_bot_allow_sub_machine_guns)
#define cv_bot_allow_rifles (*pcv_bot_allow_rifles) #define cv_bot_allow_rifles (*pcv_bot_allow_rifles)
#define cv_bot_allow_machine_guns (*pcv_bot_allow_machine_guns) #define cv_bot_allow_machine_guns (*pcv_bot_allow_machine_guns)
#define cv_bot_allow_grenades (*pcv_bot_allow_grenades) #define cv_bot_allow_grenades (*pcv_bot_allow_grenades)
#define cv_bot_allow_snipers (*pcv_bot_allow_snipers) #define cv_bot_allow_snipers (*pcv_bot_allow_snipers)
#define cv_bot_allow_shield (*pcv_bot_allow_shield) #define cv_bot_allow_shield (*pcv_bot_allow_shield)
#define cv_bot_join_team (*pcv_bot_join_team) #define cv_bot_join_team (*pcv_bot_join_team)
#define cv_bot_join_after_player (*pcv_bot_join_after_player) #define cv_bot_join_after_player (*pcv_bot_join_after_player)
#define cv_bot_auto_vacate (*pcv_bot_auto_vacate) #define cv_bot_auto_vacate (*pcv_bot_auto_vacate)
#define cv_bot_zombie (*pcv_bot_zombie) #define cv_bot_zombie (*pcv_bot_zombie)
#define cv_bot_defer_to_human (*pcv_bot_defer_to_human) #define cv_bot_defer_to_human (*pcv_bot_defer_to_human)
#define cv_bot_chatter (*pcv_bot_chatter) #define cv_bot_chatter (*pcv_bot_chatter)
#define cv_bot_profile_db (*pcv_bot_profile_db) #define cv_bot_profile_db (*pcv_bot_profile_db)
//#define m_flNextCVarCheck (*pm_flNextCVarCheck) //#define m_flNextCVarCheck (*pm_flNextCVarCheck)
@ -77,34 +77,34 @@
extern CBotManager *TheBots; extern CBotManager *TheBots;
extern cvar_t cv_bot_traceview; extern cvar_t cv_bot_traceview;
extern cvar_t cv_bot_stop; extern cvar_t cv_bot_stop;
extern cvar_t cv_bot_show_nav; extern cvar_t cv_bot_show_nav;
extern cvar_t cv_bot_show_danger; extern cvar_t cv_bot_show_danger;
extern cvar_t cv_bot_nav_edit; extern cvar_t cv_bot_nav_edit;
extern cvar_t cv_bot_nav_zdraw; extern cvar_t cv_bot_nav_zdraw;
extern cvar_t cv_bot_walk; extern cvar_t cv_bot_walk;
extern cvar_t cv_bot_difficulty; extern cvar_t cv_bot_difficulty;
extern cvar_t cv_bot_debug; extern cvar_t cv_bot_debug;
extern cvar_t cv_bot_quicksave; extern cvar_t cv_bot_quicksave;
extern cvar_t cv_bot_quota; extern cvar_t cv_bot_quota;
extern cvar_t cv_bot_quota_match; extern cvar_t cv_bot_quota_match;
extern cvar_t cv_bot_prefix; extern cvar_t cv_bot_prefix;
extern cvar_t cv_bot_allow_rogues; extern cvar_t cv_bot_allow_rogues;
extern cvar_t cv_bot_allow_pistols; extern cvar_t cv_bot_allow_pistols;
extern cvar_t cv_bot_allow_shotguns; extern cvar_t cv_bot_allow_shotguns;
extern cvar_t cv_bot_allow_sub_machine_guns; extern cvar_t cv_bot_allow_sub_machine_guns;
extern cvar_t cv_bot_allow_rifles; extern cvar_t cv_bot_allow_rifles;
extern cvar_t cv_bot_allow_machine_guns; extern cvar_t cv_bot_allow_machine_guns;
extern cvar_t cv_bot_allow_grenades; extern cvar_t cv_bot_allow_grenades;
extern cvar_t cv_bot_allow_snipers; extern cvar_t cv_bot_allow_snipers;
extern cvar_t cv_bot_allow_shield; extern cvar_t cv_bot_allow_shield;
extern cvar_t cv_bot_join_team; extern cvar_t cv_bot_join_team;
extern cvar_t cv_bot_join_after_player; extern cvar_t cv_bot_join_after_player;
extern cvar_t cv_bot_auto_vacate; extern cvar_t cv_bot_auto_vacate;
extern cvar_t cv_bot_zombie; extern cvar_t cv_bot_zombie;
extern cvar_t cv_bot_defer_to_human; extern cvar_t cv_bot_defer_to_human;
extern cvar_t cv_bot_chatter; extern cvar_t cv_bot_chatter;
extern cvar_t cv_bot_profile_db; extern cvar_t cv_bot_profile_db;
class CCSBotManager: public CBotManager class CCSBotManager: public CBotManager
@ -149,35 +149,35 @@ public:
void ValidateMapData(void); void ValidateMapData(void);
bool IsLearningMap(void) bool IsLearningMap(void)
{ {
return IMPLEMENT_ARRAY(m_isLearningMap); return IMPL(m_isLearningMap);
} }
void SetLearningMapFlag(void) void SetLearningMapFlag(void)
{ {
IMPLEMENT_ARRAY(m_isLearningMap) = true; IMPL(m_isLearningMap) = true;
} }
bool IsAnalysisRequested(void) bool IsAnalysisRequested(void)
{ {
return IMPLEMENT_ARRAY(m_isAnalysisRequested); return IMPL(m_isAnalysisRequested);
} }
void RequestAnalysis(void) void RequestAnalysis(void)
{ {
IMPLEMENT_ARRAY(m_isAnalysisRequested) = true; IMPL(m_isAnalysisRequested) = true;
} }
void AckAnalysisRequest(void) void AckAnalysisRequest(void)
{ {
IMPLEMENT_ARRAY(m_isAnalysisRequested) = false; IMPL(m_isAnalysisRequested) = false;
} }
static BotDifficultyType GetDifficultyLevel(void) static BotDifficultyType GetDifficultyLevel(void)
{ {
if (cv_bot_difficulty.value < 0.9f) if (cv_bot_difficulty.value < 0.9f)
return BOT_EASY; return BOT_EASY;
if (cv_bot_difficulty.value < 1.9f) if (cv_bot_difficulty.value < 1.9f)
return BOT_NORMAL; return BOT_NORMAL;
if (cv_bot_difficulty.value < 2.9f) if (cv_bot_difficulty.value < 2.9f)
return BOT_HARD; return BOT_HARD;
return BOT_EXPERT; return BOT_EXPERT;
} }
@ -256,9 +256,9 @@ public:
// pick a zone at random and return it // pick a zone at random and return it
const Zone *GetRandomZone(void) const const Zone *GetRandomZone(void) const
{ {
if (!m_zoneCount) if (!m_zoneCount)
return NULL; return NULL;
return &m_zone[ RANDOM_LONG(0, m_zoneCount - 1) ]; return &m_zone[ RANDOM_LONG(0, m_zoneCount - 1) ];
} }
// returns true if bomb has been planted // returns true if bomb has been planted
@ -394,43 +394,43 @@ private:
#else #else
public: public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
static float IMPLEMENT_ARRAY(m_flNextCVarCheck); static float IMPL(m_flNextCVarCheck);
static bool IMPLEMENT_ARRAY(m_isMapDataLoaded); static bool IMPL(m_isMapDataLoaded);
static bool IMPLEMENT_ARRAY(m_isLearningMap); static bool IMPL(m_isLearningMap);
static bool IMPLEMENT_ARRAY(m_isAnalysisRequested); static bool IMPL(m_isAnalysisRequested);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
private: private:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
GameScenarioType m_gameScenario;// TODO: must be on Windows offsetof - 16 GameScenarioType m_gameScenario;// TODO: must be on Windows offsetof - 16
Zone m_zone[ MAX_ZONES ]; Zone m_zone[ MAX_ZONES ];
int m_zoneCount; int m_zoneCount;
bool m_isBombPlanted; bool m_isBombPlanted;
float m_bombPlantTimestamp; float m_bombPlantTimestamp;
float m_earliestBombPlantTimestamp; float m_earliestBombPlantTimestamp;
CBasePlayer *m_bombDefuser; CBasePlayer *m_bombDefuser;
EHANDLE m_looseBomb; EHANDLE m_looseBomb;
CNavArea *m_looseBombArea; CNavArea *m_looseBombArea;
bool m_isRoundOver; bool m_isRoundOver;
float m_radioMsgTimestamp[24][2]; float m_radioMsgTimestamp[24][2];
float m_lastSeenEnemyTimestamp; float m_lastSeenEnemyTimestamp;
float m_roundStartTimestamp; float m_roundStartTimestamp;
bool m_isDefenseRushing; bool m_isDefenseRushing;
#ifndef HOOK_GAMEDLL #ifndef HOOK_GAMEDLL
private: private:
#else #else
public: public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
static NavEditCmdType IMPLEMENT_ARRAY(m_editCmd); static NavEditCmdType IMPL(m_editCmd);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
private: private:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
unsigned int m_navPlace; unsigned int m_navPlace;
CountdownTimer m_respawnTimer; CountdownTimer m_respawnTimer;
bool m_isRespawnStarted; bool m_isRespawnStarted;
bool m_canRespawn; bool m_canRespawn;
bool m_bServerActive; bool m_bServerActive;
};/* size: 736, cachelines: 12, members: 25 */ };/* size: 736, cachelines: 12, members: 25 */

View File

@ -1,218 +1,218 @@
#include "precompiled.h" #include "precompiled.h"
/* <37c284> ../cstrike/dlls/bot/cs_bot_nav.cpp:16 */ /* <37c284> ../cstrike/dlls/bot/cs_bot_nav.cpp:16 */
NOBODY void CCSBot::ResetStuckMonitor(void) NOBODY void CCSBot::ResetStuckMonitor(void)
{ {
} }
/* <37c2a6> ../cstrike/dlls/bot/cs_bot_nav.cpp:37 */ /* <37c2a6> ../cstrike/dlls/bot/cs_bot_nav.cpp:37 */
NOBODY void CCSBot::StuckCheck(void) NOBODY void CCSBot::StuckCheck(void)
{ {
// { // {
// Vector delta; // 42 // Vector delta; // 42
// float const unstuckRange; // 44 // float const unstuckRange; // 44
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 42 // const Vector &v); // 42
// IsLengthGreaterThan(const Vector *const this, // IsLengthGreaterThan(const Vector *const this,
// float length); // 45 // float length); // 45
// ResetStuckMonitor(CCSBot *const this); // 48 // ResetStuckMonitor(CCSBot *const this); // 48
// } // }
// { // {
// Vector vel; // 57 // Vector vel; // 57
// float moveDist; // 64 // float moveDist; // 64
// float deltaT; // 66 // float deltaT; // 66
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 57 // const Vector &v); // 57
// Length(const Vector *const this); // 64 // Length(const Vector *const this); // 64
// { // {
// float avgVel; // 81 // float avgVel; // 81
// float stuckVel; // 88 // float stuckVel; // 88
// { // {
// int t; // 82 // int t; // 82
// } // }
// } // }
// } // }
} }
/* <37c05d> ../cstrike/dlls/bot/cs_bot_nav.cpp:114 */ /* <37c05d> ../cstrike/dlls/bot/cs_bot_nav.cpp:114 */
NOBODY bool CCSBot::DiscontinuityJump(float ground, bool onlyJumpDown, bool mustJump) NOBODY bool CCSBot::DiscontinuityJump(float ground, bool onlyJumpDown, bool mustJump)
{ {
// { // {
// float dz; // 119 // float dz; // 119
// } // }
} }
/* <37c448> ../cstrike/dlls/bot/cs_bot_nav.cpp:154 */ /* <37c448> ../cstrike/dlls/bot/cs_bot_nav.cpp:154 */
NOBODY bool CCSBot::GetSimpleGroundHeightWithFloor(const Vector *pos, float *height, Vector *normal) NOBODY bool CCSBot::GetSimpleGroundHeightWithFloor(const Vector *pos, float *height, Vector *normal)
{ {
// GetSimpleGroundHeightWithFloor(CCSBot *const this, // GetSimpleGroundHeightWithFloor(CCSBot *const this,
// const Vector *pos, // const Vector *pos,
// float *height, // float *height,
// Vector *normal); // 154 // Vector *normal); // 154
} }
/* <37c4b8> ../cstrike/dlls/bot/cs_bot_nav.cpp:172 */ /* <37c4b8> ../cstrike/dlls/bot/cs_bot_nav.cpp:172 */
NOBODY Place CCSBot::GetPlace(void) NOBODY Place CCSBot::GetPlace(void)
{ {
} }
/* <37c4de> ../cstrike/dlls/bot/cs_bot_nav.cpp:184 */ /* <37c4de> ../cstrike/dlls/bot/cs_bot_nav.cpp:184 */
NOBODY void CCSBot::MoveTowardsPosition(const Vector *pos) NOBODY void CCSBot::MoveTowardsPosition(const Vector *pos)
{ {
// { // {
// float angle; // 249 // float angle; // 249
// class Vector2D dir; // 251 // class Vector2D dir; // 251
// class Vector2D lat; // 252 // class Vector2D lat; // 252
// class Vector2D to; // 255 // class Vector2D to; // 255
// float toProj; // 259 // float toProj; // 259
// float latProj; // 260 // float latProj; // 260
// float const c; // 262 // float const c; // 262
// { // {
// float ground; // 200 // float ground; // 200
// Vector aheadRay; // 201 // Vector aheadRay; // 201
// bool jumped; // 207 // bool jumped; // 207
// NormalizeInPlace(Vector *const this); // 202 // NormalizeInPlace(Vector *const this); // 202
// { // {
// float const farLookAheadRange; // 210 // float const farLookAheadRange; // 210
// Vector normal; // 211 // Vector normal; // 211
// Vector stepAhead; // 212 // Vector stepAhead; // 212
// operator*(float fl, // operator*(float fl,
// const Vector &v); // 212 // const Vector &v); // 212
// GetSimpleGroundHeightWithFloor(CCSBot *const this, // GetSimpleGroundHeightWithFloor(CCSBot *const this,
// const Vector *pos, // const Vector *pos,
// float *height, // float *height,
// Vector *normal); // 215 // Vector *normal); // 215
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 212 // const Vector &v); // 212
// DiscontinuityJump(CCSBot *const this, // DiscontinuityJump(CCSBot *const this,
// float ground, // float ground,
// bool onlyJumpDown, // bool onlyJumpDown,
// bool mustJump); // 218 // bool mustJump); // 218
// } // }
// { // {
// float const lookAheadRange; // 225 // float const lookAheadRange; // 225
// Vector stepAhead; // 226 // Vector stepAhead; // 226
// operator*(float fl, // operator*(float fl,
// const Vector &v); // 226 // const Vector &v); // 226
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 226 // const Vector &v); // 226
// GetSimpleGroundHeightWithFloor(CCSBot *const this, // GetSimpleGroundHeightWithFloor(CCSBot *const this,
// const Vector *pos, // const Vector *pos,
// float *height, // float *height,
// Vector *normal); // 228 // Vector *normal); // 228
// DiscontinuityJump(CCSBot *const this, // DiscontinuityJump(CCSBot *const this,
// float ground, // float ground,
// bool onlyJumpDown, // bool onlyJumpDown,
// bool mustJump); // 230 // bool mustJump); // 230
// } // }
// { // {
// float const lookAheadRange; // 237 // float const lookAheadRange; // 237
// Vector stepAhead; // 238 // Vector stepAhead; // 238
// operator*(float fl, // operator*(float fl,
// const Vector &v); // 238 // const Vector &v); // 238
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 238 // const Vector &v); // 238
// GetSimpleGroundHeightWithFloor(CCSBot *const this, // GetSimpleGroundHeightWithFloor(CCSBot *const this,
// const Vector *pos, // const Vector *pos,
// float *height, // float *height,
// Vector *normal); // 240 // Vector *normal); // 240
// DiscontinuityJump(CCSBot *const this, // DiscontinuityJump(CCSBot *const this,
// float ground, // float ground,
// bool onlyJumpDown, // bool onlyJumpDown,
// bool mustJump); // 242 // bool mustJump); // 242
// } // }
// } // }
// NormalizeInPlace(Vector2D *const this); // 256 // NormalizeInPlace(Vector2D *const this); // 256
// } // }
} }
/* <37ca96> ../cstrike/dlls/bot/cs_bot_nav.cpp:282 */ /* <37ca96> ../cstrike/dlls/bot/cs_bot_nav.cpp:282 */
NOBODY void CCSBot::MoveAwayFromPosition(const Vector *pos) NOBODY void CCSBot::MoveAwayFromPosition(const Vector *pos)
{ {
// { // {
// float angle; // 285 // float angle; // 285
// class Vector2D dir; // 287 // class Vector2D dir; // 287
// class Vector2D lat; // 288 // class Vector2D lat; // 288
// class Vector2D to; // 291 // class Vector2D to; // 291
// float toProj; // 295 // float toProj; // 295
// float latProj; // 296 // float latProj; // 296
// float const c; // 298 // float const c; // 298
// NormalizeInPlace(Vector2D *const this); // 292 // NormalizeInPlace(Vector2D *const this); // 292
// } // }
} }
/* <37cb85> ../cstrike/dlls/bot/cs_bot_nav.cpp:314 */ /* <37cb85> ../cstrike/dlls/bot/cs_bot_nav.cpp:314 */
NOBODY void CCSBot::StrafeAwayFromPosition(const Vector *pos) NOBODY void CCSBot::StrafeAwayFromPosition(const Vector *pos)
{ {
// { // {
// float angle; // 317 // float angle; // 317
// class Vector2D dir; // 319 // class Vector2D dir; // 319
// class Vector2D lat; // 320 // class Vector2D lat; // 320
// class Vector2D to; // 323 // class Vector2D to; // 323
// float latProj; // 326 // float latProj; // 326
// NormalizeInPlace(Vector2D *const this); // 324 // NormalizeInPlace(Vector2D *const this); // 324
// } // }
} }
/* <37cc52> ../cstrike/dlls/bot/cs_bot_nav.cpp:338 */ /* <37cc52> ../cstrike/dlls/bot/cs_bot_nav.cpp:338 */
NOBODY void CCSBot::Wiggle(void) NOBODY void CCSBot::Wiggle(void)
{ {
// ResetStuckMonitor(CCSBot *const this); // 342 // ResetStuckMonitor(CCSBot *const this); // 342
} }
/* <37cc94> ../cstrike/dlls/bot/cs_bot_nav.cpp:383 */ /* <37cc94> ../cstrike/dlls/bot/cs_bot_nav.cpp:383 */
NOBODY void CCSBot::ComputeApproachPoints(void) NOBODY void CCSBot::ComputeApproachPoints(void)
{ {
// { // {
// Vector eye; // 391 // Vector eye; // 391
// Vector ap; // 393 // Vector ap; // 393
// float halfWidth; // 394 // float halfWidth; // 394
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 391 // const Vector &v); // 391
// { // {
// int i; // 395 // int i; // 395
// { // {
// const class ApproachInfo *info; // 397 // const class ApproachInfo *info; // 397
// Vector bendPoint; // 415 // Vector bendPoint; // 415
// } // }
// GetApproachInfoCount(const class CNavArea *const this); // 395 // GetApproachInfoCount(const class CNavArea *const this); // 395
// } // }
// } // }
} }
/* <37cd67> ../cstrike/dlls/bot/cs_bot_nav.cpp:422 */ /* <37cd67> ../cstrike/dlls/bot/cs_bot_nav.cpp:422 */
NOBODY void CCSBot::DrawApproachPoints(void) NOBODY void CCSBot::DrawApproachPoints(void)
{ {
// { // {
// int i; // 427 // int i; // 427
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 428 // const Vector &v); // 428
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 428 // const Vector &v); // 428
// } // }
} }
/* <37ce12> ../cstrike/dlls/bot/cs_bot_nav.cpp:435 */ /* <37ce12> ../cstrike/dlls/bot/cs_bot_nav.cpp:435 */
NOBODY bool CCSBot::FindApproachPointNearestPath(const Vector *pos) NOBODY bool CCSBot::FindApproachPointNearestPath(const Vector *pos)
{ {
// { // {
// Vector target; // 446 // Vector target; // 446
// Vector close; // 446 // Vector close; // 446
// float targetRangeSq; // 447 // float targetRangeSq; // 447
// bool found; // 448 // bool found; // 448
// int start; // 450 // int start; // 450
// int end; // 451 // int end; // 451
// float const nearPathSq; // 457 // float const nearPathSq; // 457
// { // {
// int i; // 459 // int i; // 459
// { // {
// float rangeSq; // 464 // float rangeSq; // 464
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 464 // const Vector &v); // 464
// LengthSquared(const Vector *const this); // 464 // LengthSquared(const Vector *const this); // 464
// } // }
// } // }
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 478 // const Vector &v); // 478
// } // }
} }

View File

@ -1,338 +1,338 @@
#include "precompiled.h" #include "precompiled.h"
/* <3c635f> ../cstrike/dlls/bot/cs_bot_update.cpp:26 */ /* <3c635f> ../cstrike/dlls/bot/cs_bot_update.cpp:26 */
void CCSBot::__MAKE_VHOOK(Upkeep)(void) void CCSBot::__MAKE_VHOOK(Upkeep)(void)
{ {
CCSBotManager *ctrl = TheCSBots(); CCSBotManager *ctrl = TheCSBots();
if (ctrl->IsLearningMap() || !IsAlive()) if (ctrl->IsLearningMap() || !IsAlive())
return; return;
if (m_isRapidFiring) if (m_isRapidFiring)
TogglePrimaryAttack(); TogglePrimaryAttack();
if (IsAimingAtEnemy()) if (IsAimingAtEnemy())
{ {
UpdateAimOffset(); UpdateAimOffset();
if (m_enemy != NULL) if (m_enemy != NULL)
{ {
float feetOffset = pev->origin.z - GetFeetZ(); float feetOffset = pev->origin.z - GetFeetZ();
if (IsEnemyVisible()) if (IsEnemyVisible())
{ {
if (GetProfile()->GetSkill() > 0.5f) if (GetProfile()->GetSkill() > 0.5f)
{ {
const float k = 3.0f; const float k = 3.0f;
m_aimSpot = (m_enemy->pev->velocity - pev->velocity) * g_flBotCommandInterval * k + m_enemy->pev->origin; m_aimSpot = (m_enemy->pev->velocity - pev->velocity) * g_flBotCommandInterval * k + m_enemy->pev->origin;
} }
else else
m_aimSpot = m_enemy->pev->origin; m_aimSpot = m_enemy->pev->origin;
bool aimBlocked = false; bool aimBlocked = false;
if (IsUsingAWP() || IsUsingShotgun() || IsUsingMachinegun() || GetProfile()->GetSkill() < 0.8f if (IsUsingAWP() || IsUsingShotgun() || IsUsingMachinegun() || GetProfile()->GetSkill() < 0.8f
|| (IsActiveWeaponRecoilHigh() && !IsUsingPistol() && !IsUsingSniperRifle())) || (IsActiveWeaponRecoilHigh() && !IsUsingPistol() && !IsUsingSniperRifle()))
{ {
if (IsEnemyPartVisible(CHEST)) if (IsEnemyPartVisible(CHEST))
{ {
// No headshots in this game, go for the chest. // No headshots in this game, go for the chest.
aimBlocked = true; aimBlocked = true;
} }
} }
if (aimBlocked) if (aimBlocked)
m_aimSpot.z -= feetOffset * 0.25f; m_aimSpot.z -= feetOffset * 0.25f;
else if (!IsEnemyPartVisible(HEAD)) else if (!IsEnemyPartVisible(HEAD))
{ {
if (IsEnemyPartVisible(CHEST)) if (IsEnemyPartVisible(CHEST))
{ {
m_aimSpot.z -= feetOffset * 0.5f; m_aimSpot.z -= feetOffset * 0.5f;
} }
else if (IsEnemyPartVisible(LEFT_SIDE)) else if (IsEnemyPartVisible(LEFT_SIDE))
{ {
Vector2D to = (m_enemy->pev->origin - pev->origin).Make2D(); Vector2D to = (m_enemy->pev->origin - pev->origin).Make2D();
to.NormalizeInPlace(); to.NormalizeInPlace();
m_aimSpot.x -= to.y * 16.0f; m_aimSpot.x -= to.y * 16.0f;
m_aimSpot.y += to.x * 16.0f; m_aimSpot.y += to.x * 16.0f;
m_aimSpot.z -= feetOffset * 0.5f; m_aimSpot.z -= feetOffset * 0.5f;
} }
else if (IsEnemyPartVisible(RIGHT_SIDE)) else if (IsEnemyPartVisible(RIGHT_SIDE))
{ {
Vector2D to = (m_enemy->pev->origin - pev->origin).Make2D(); Vector2D to = (m_enemy->pev->origin - pev->origin).Make2D();
to.NormalizeInPlace(); to.NormalizeInPlace();
m_aimSpot.x += to.y * 16.0f; m_aimSpot.x += to.y * 16.0f;
m_aimSpot.y -= to.x * 16.0f; m_aimSpot.y -= to.x * 16.0f;
m_aimSpot.z -= feetOffset * 0.5f; m_aimSpot.z -= feetOffset * 0.5f;
} }
else // FEET else // FEET
m_aimSpot.z -= (feetOffset + feetOffset); m_aimSpot.z -= (feetOffset + feetOffset);
} }
} }
else else
m_aimSpot = m_lastEnemyPosition; m_aimSpot = m_lastEnemyPosition;
// add in aim error // add in aim error
m_aimSpot.x += m_aimOffset.x; m_aimSpot.x += m_aimOffset.x;
m_aimSpot.y += m_aimOffset.y; m_aimSpot.y += m_aimOffset.y;
m_aimSpot.z += m_aimOffset.z; m_aimSpot.z += m_aimOffset.z;
Vector toEnemy = m_aimSpot - pev->origin; Vector toEnemy = m_aimSpot - pev->origin;
Vector idealAngle = UTIL_VecToAngles(toEnemy); Vector idealAngle = UTIL_VecToAngles(toEnemy);
idealAngle.x = 360.0 - idealAngle.x; idealAngle.x = 360.0 - idealAngle.x;
SetLookAngles(idealAngle.y, idealAngle.x); SetLookAngles(idealAngle.y, idealAngle.x);
} }
} }
else else
{ {
if (m_lookAtSpotClearIfClose) if (m_lookAtSpotClearIfClose)
{ {
// dont look at spots just in front of our face - it causes erratic view rotation // dont look at spots just in front of our face - it causes erratic view rotation
const float tooCloseRange = 100.0f; const float tooCloseRange = 100.0f;
if ((m_lookAtSpot - pev->origin).IsLengthLessThan(tooCloseRange)) if ((m_lookAtSpot - pev->origin).IsLengthLessThan(tooCloseRange))
m_lookAtSpotState = NOT_LOOKING_AT_SPOT; m_lookAtSpotState = NOT_LOOKING_AT_SPOT;
} }
switch (m_lookAtSpotState) switch (m_lookAtSpotState)
{ {
case NOT_LOOKING_AT_SPOT: case NOT_LOOKING_AT_SPOT:
{ {
// look ahead // look ahead
SetLookAngles(m_lookAheadAngle, 0); SetLookAngles(m_lookAheadAngle, 0);
break; break;
} }
case LOOK_TOWARDS_SPOT: case LOOK_TOWARDS_SPOT:
{ {
UpdateLookAt(); UpdateLookAt();
if (IsLookingAtPosition(&m_lookAtSpot, m_lookAtSpotAngleTolerance)) if (IsLookingAtPosition(&m_lookAtSpot, m_lookAtSpotAngleTolerance))
{ {
m_lookAtSpotState = LOOK_AT_SPOT; m_lookAtSpotState = LOOK_AT_SPOT;
m_lookAtSpotTimestamp = gpGlobals->time; m_lookAtSpotTimestamp = gpGlobals->time;
} }
break; break;
} }
case LOOK_AT_SPOT: case LOOK_AT_SPOT:
{ {
UpdateLookAt(); UpdateLookAt();
if (m_lookAtSpotDuration >= 0.0f && gpGlobals->time - m_lookAtSpotTimestamp > m_lookAtSpotDuration) if (m_lookAtSpotDuration >= 0.0f && gpGlobals->time - m_lookAtSpotTimestamp > m_lookAtSpotDuration)
{ {
m_lookAtSpotState = NOT_LOOKING_AT_SPOT; m_lookAtSpotState = NOT_LOOKING_AT_SPOT;
m_lookAtSpotDuration = 0.0f; m_lookAtSpotDuration = 0.0f;
} }
break; break;
} }
} }
float driftAmplitude = 2.0f; float driftAmplitude = 2.0f;
const float sharpshooter = 0.5f; const float sharpshooter = 0.5f;
// have view "drift" very slowly, so view looks "alive" // have view "drift" very slowly, so view looks "alive"
if (IsUsingSniperRifle() && IsUsingScope()) if (IsUsingSniperRifle() && IsUsingScope())
driftAmplitude = sharpshooter; driftAmplitude = sharpshooter;
m_lookYaw += driftAmplitude * BotCOS(33.0f * gpGlobals->time); m_lookYaw += driftAmplitude * BotCOS(33.0f * gpGlobals->time);
m_lookPitch += driftAmplitude * BotSIN(13.0f * gpGlobals->time); m_lookPitch += driftAmplitude * BotSIN(13.0f * gpGlobals->time);
} }
// view angles can change quickly // view angles can change quickly
UpdateLookAngles(); UpdateLookAngles();
} }
void (*pCCSBot__Update)(void); void (*pCCSBot__Update)(void);
/* <3c6e1e> ../cstrike/dlls/bot/cs_bot_update.cpp:208 */ /* <3c6e1e> ../cstrike/dlls/bot/cs_bot_update.cpp:208 */
void __declspec(naked) CCSBot::__MAKE_VHOOK(Update)(void) void __declspec(naked) CCSBot::__MAKE_VHOOK(Update)(void)
{ {
__asm __asm
{ {
jmp pCCSBot__Update jmp pCCSBot__Update
} }
// { // {
// class CCSBotManager *ctrl; // 210 // class CCSBotManager *ctrl; // 210
// float const rememberNoiseDuration; // 401 // float const rememberNoiseDuration; // 401
// float const recomputeApproachPointTolerance; // 419 // float const recomputeApproachPointTolerance; // 419
// class CBasePlayer *threat; // 459 // class CBasePlayer *threat; // 459
// float const seenRecentTime; // 572 // float const seenRecentTime; // 572
// float const safeRearmTime; // 676 // float const safeRearmTime; // 676
// float const avoidTime; // 691 // float const avoidTime; // 691
// float const earliestAutoFollowTime; // 807 // float const earliestAutoFollowTime; // 807
// float const minAutoFollowTeamwork; // 808 // float const minAutoFollowTeamwork; // 808
// { // {
// Vector vecAiming; // 342 // Vector vecAiming; // 342
// Vector vecSrc; // 344 // Vector vecSrc; // 344
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 341 // const Vector &v); // 341
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 349 // const Vector &v); // 349
// operator*(float fl, // operator*(float fl,
// const Vector &v); // 349 // const Vector &v); // 349
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 351 // const Vector &v); // 351
// operator*(float fl, // operator*(float fl,
// const Vector &v); // 351 // const Vector &v); // 351
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 351 // const Vector &v); // 351
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 349 // const Vector &v); // 349
// } // }
// { // {
// Vector dir; // 366 // Vector dir; // 366
// float length; // 367 // float length; // 367
// const class SpotOrder *order; // 369 // const class SpotOrder *order; // 369
// Vector along; // 370 // Vector along; // 370
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 364 // const Vector &v); // 364
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 364 // const Vector &v); // 364
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 366 // const Vector &v); // 366
// NormalizeInPlace(Vector *const this); // 367 // NormalizeInPlace(Vector *const this); // 367
// { // {
// const_iterator iter; // 371 // const_iterator iter; // 371
// end(list<SpotOrder, std::allocator<SpotOrder>> *const this); // 371 // end(list<SpotOrder, std::allocator<SpotOrder>> *const this); // 371
// operator*(float fl, // operator*(float fl,
// const Vector &v); // 375 // const Vector &v); // 375
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 375 // const Vector &v); // 375
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 377 // const Vector &v); // 377
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 377 // const Vector &v); // 377
// operator++(_List_const_iterator<SpotOrder> *const this); // 371 // operator++(_List_const_iterator<SpotOrder> *const this); // 371
// } // }
// } // }
// { // {
// Vector from; // 385 // Vector from; // 385
// float const size; // 387 // float const size; // 387
// Vector arrow; // 389 // Vector arrow; // 389
// GetEyePosition(const class CCSBot *const this); // 385 // GetEyePosition(const class CCSBot *const this); // 385
// operator+(const Vector *const this, // operator+(const Vector *const this,
// const Vector &v); // 391 // const Vector &v); // 391
// Vector(Vector *const this, // Vector(Vector *const this,
// const Vector &v); // 391 // const Vector &v); // 391
// } // }
// ForgetNoise(CCSBot *const this); // 403 // ForgetNoise(CCSBot *const this); // 403
// SetClearedTimestamp(CNavArea *const this, // SetClearedTimestamp(CNavArea *const this,
// int teamID); // 415 // int teamID); // 415
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 420 // const Vector &v); // 420
// IsLengthGreaterThan(const Vector *const this, // IsLengthGreaterThan(const Vector *const this,
// float length); // 420 // float length); // 420
// AckAnalysisRequest(CCSBotManager *const this); // 215 // AckAnalysisRequest(CCSBotManager *const this); // 215
// { // {
// float const selfDefenseRange; // 465 // float const selfDefenseRange; // 465
// { // {
// float const knifeAttackRange; // 490 // float const knifeAttackRange; // 490
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 491 // const Vector &v); // 491
// IsLengthLessThan(const Vector *const this, // IsLengthLessThan(const Vector *const this,
// float length); // 491 // float length); // 491
// } // }
// GetEnemy(CCSBot *const this); // 485 // GetEnemy(CCSBot *const this); // 485
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 483 // const Vector &v); // 483
// IsLengthLessThan(const Vector *const this, // IsLengthLessThan(const Vector *const this,
// float length); // 483 // float length); // 483
// { // {
// float const recentAttackDuration; // 512 // float const recentAttackDuration; // 512
// GetTimeSinceAttacked(const class CCSBot *const this); // 513 // GetTimeSinceAttacked(const class CCSBot *const this); // 513
// } // }
// SetLastSeenEnemyTimestamp(CCSBotManager *const this); // 522 // SetLastSeenEnemyTimestamp(CCSBotManager *const this); // 522
// } // }
// IsAwareOfEnemyDeath(const class CCSBot *const this); // 530 // IsAwareOfEnemyDeath(const class CCSBot *const this); // 530
// GetTimeSinceLastSawEnemy(const class CCSBot *const this); // 573 // GetTimeSinceLastSawEnemy(const class CCSBot *const this); // 573
// { // {
// Vector target; // 591 // Vector target; // 591
// } // }
// { // {
// bool doToss; // 601 // bool doToss; // 601
// IsElapsed(const class CountdownTimer *const this); // 605 // IsElapsed(const class CountdownTimer *const this); // 605
// } // }
// IsActiveWeaponReloading(const class CBot *const this); // 677 // IsActiveWeaponReloading(const class CBot *const this); // 677
// { // {
// float const duration; // 704 // float const duration; // 704
// float crouchDelayTime; // 705 // float crouchDelayTime; // 705
// float standUpTime; // 706 // float standUpTime; // 706
// float elapsed; // 708 // float elapsed; // 708
// } // }
// { // {
// unsigned char status; // 784 // unsigned char status; // 784
// HostageWasTaken(CSGameState *const this); // 793 // HostageWasTaken(CSGameState *const this); // 793
// } // }
// { // {
// float gonnaBlowTime; // 755 // float gonnaBlowTime; // 755
// } // }
// GetElapsedRoundTime(const class CCSBotManager *const this); // 809 // GetElapsedRoundTime(const class CCSBotManager *const this); // 809
// { // {
// class CBasePlayer *leader; // 820 // class CBasePlayer *leader; // 820
// GetClosestVisibleHumanFriend(const class CCSBot *const this); // 820 // GetClosestVisibleHumanFriend(const class CCSBot *const this); // 820
// IsAutoFollowAllowed(const class CBasePlayer *const this); // 821 // IsAutoFollowAllowed(const class CBasePlayer *const this); // 821
// { // {
// float const maxFollowCount; // 824 // float const maxFollowCount; // 824
// { // {
// float const autoFollowRange; // 827 // float const autoFollowRange; // 827
// operator-(const Vector *const this, // operator-(const Vector *const this,
// const Vector &v); // 828 // const Vector &v); // 828
// IsLengthLessThan(const Vector *const this, // IsLengthLessThan(const Vector *const this,
// float length); // 828 // float length); // 828
// { // {
// class CNavArea *leaderArea; // 830 // class CNavArea *leaderArea; // 830
// { // {
// class PathCost pc; // 833 // class PathCost pc; // 833
// float travelRange; // 834 // float travelRange; // 834
// PathCost(PathCost *const this, // PathCost(PathCost *const this,
// class CCSBot *bot, // class CCSBot *bot,
// enum RouteType route); // 833 // enum RouteType route); // 833
// NavAreaTravelDistance<PathCost>(CNavArea *startArea, // NavAreaTravelDistance<PathCost>(CNavArea *startArea,
// class CNavArea *endArea, // class CNavArea *endArea,
// class PathCost &costFunc); // 834 // class PathCost &costFunc); // 834
// } // }
// } // }
// } // }
// } // }
// } // }
// { // {
// class CBaseEntity *leader; // 865 // class CBaseEntity *leader; // 865
// float const highTeamwork; // 872 // float const highTeamwork; // 872
// { // {
// float minFollowDuration; // 875 // float minFollowDuration; // 875
// GetFollowDuration(const class CCSBot *const this); // 876 // GetFollowDuration(const class CCSBot *const this); // 876
// } // }
// } // }
// { // {
// float const campChance; // 890 // float const campChance; // 890
// } // }
// IsReloading(CBasePlayer *const this); // 920 // IsReloading(CBasePlayer *const this); // 920
// IsElapsed(const class CountdownTimer *const this); // 927 // IsElapsed(const class CountdownTimer *const this); // 927
// { // {
// float const waitForHostageRange; // 929 // float const waitForHostageRange; // 929
// Start(CountdownTimer *const this, // Start(CountdownTimer *const this,
// float duration); // 936 // float duration); // 936
// IsElapsed(const class CountdownTimer *const this); // 941 // IsElapsed(const class CountdownTimer *const this); // 941
// Start(CountdownTimer *const this, // Start(CountdownTimer *const this,
// float duration); // 945 // float duration); // 945
// } // }
// GetLooseBomb(CCSBotManager *const this); // 743 // GetLooseBomb(CCSBotManager *const this); // 743
// GetBomber(CCSBot *const this); // 740 // GetBomber(CCSBot *const this); // 740
// GetTimeSinceLastSawEnemy(const class CCSBot *const this); // 678 // GetTimeSinceLastSawEnemy(const class CCSBot *const this); // 678
// } // }
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void CCSBot::Upkeep(void) void CCSBot::Upkeep(void)
{ {
Upkeep_(); Upkeep_();
} }
void CCSBot::Update(void) void CCSBot::Update(void)
{ {
Update_(); Update_();
} }
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -181,9 +181,9 @@ NOBODY bool CCSBot::IsSniper(void)
/* <3ea4c1> ../cstrike/dlls/bot/cs_bot_weapon.cpp:405 */ /* <3ea4c1> ../cstrike/dlls/bot/cs_bot_weapon.cpp:405 */
bool CCSBot::IsSniping(void) const bool CCSBot::IsSniping(void) const
{ {
if (GetTask() == MOVE_TO_SNIPER_SPOT || GetTask() == SNIPING) if (GetTask() == MOVE_TO_SNIPER_SPOT || GetTask() == SNIPING)
return true; return true;
return false; return false;
} }

View File

@ -33,12 +33,12 @@ NOBODY void AttackState::StopAttacking(CCSBot *me)
{ {
if (me->m_task == CCSBot::SNIPING) if (me->m_task == CCSBot::SNIPING)
{ {
// stay in our hiding spot // stay in our hiding spot
me->Hide(me->GetLastKnownArea(), -1.0f, 50.0f); me->Hide(me->GetLastKnownArea(), -1.0f, 50.0f);
} }
else else
{ {
me->StopAttacking(); me->StopAttacking();
} }
} }

View File

@ -52,11 +52,11 @@ TYPEDESCRIPTION CEnvSpark::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CEnvGlobal, m_SaveData)[3]; TYPEDESCRIPTION IMPL_CLASS(CEnvGlobal, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CMultiSource, m_SaveData)[4]; TYPEDESCRIPTION IMPL_CLASS(CMultiSource, m_SaveData)[4];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseButton, m_SaveData)[8]; TYPEDESCRIPTION IMPL_CLASS(CBaseButton, m_SaveData)[8];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CMomentaryRotButton, m_SaveData)[6]; TYPEDESCRIPTION IMPL_CLASS(CMomentaryRotButton, m_SaveData)[6];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CEnvSpark, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CEnvSpark, m_SaveData)[1];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -333,29 +333,29 @@ void CBaseButton::__MAKE_VHOOK(Precache)(void)
// get sentence group names, for doors which are directly 'touched' to open // get sentence group names, for doors which are directly 'touched' to open
switch (m_bLockedSentence) switch (m_bLockedSentence)
{ {
case 1: m_ls.sLockedSentence = MAKE_STRING("NA"); break; // access denied case 1: m_ls.sLockedSentence = MAKE_STRING("NA"); break; // access denied
case 2: m_ls.sLockedSentence = MAKE_STRING("ND"); break; // security lockout case 2: m_ls.sLockedSentence = MAKE_STRING("ND"); break; // security lockout
case 3: m_ls.sLockedSentence = MAKE_STRING("NF"); break; // blast door case 3: m_ls.sLockedSentence = MAKE_STRING("NF"); break; // blast door
case 4: m_ls.sLockedSentence = MAKE_STRING("NFIRE"); break; // fire door case 4: m_ls.sLockedSentence = MAKE_STRING("NFIRE"); break; // fire door
case 5: m_ls.sLockedSentence = MAKE_STRING("NCHEM"); break; // chemical door case 5: m_ls.sLockedSentence = MAKE_STRING("NCHEM"); break; // chemical door
case 6: m_ls.sLockedSentence = MAKE_STRING("NRAD"); break; // radiation door case 6: m_ls.sLockedSentence = MAKE_STRING("NRAD"); break; // radiation door
case 7: m_ls.sLockedSentence = MAKE_STRING("NCON"); break; // gen containment case 7: m_ls.sLockedSentence = MAKE_STRING("NCON"); break; // gen containment
case 8: m_ls.sLockedSentence = MAKE_STRING("NH"); break; // maintenance door case 8: m_ls.sLockedSentence = MAKE_STRING("NH"); break; // maintenance door
case 9: m_ls.sLockedSentence = MAKE_STRING("NG"); break; // broken door case 9: m_ls.sLockedSentence = MAKE_STRING("NG"); break; // broken door
default: m_ls.sLockedSentence = 0; break; default: m_ls.sLockedSentence = 0; break;
} }
switch (m_bUnlockedSentence) switch (m_bUnlockedSentence)
{ {
case 1: m_ls.sUnlockedSentence = MAKE_STRING("EA"); break; // access granted case 1: m_ls.sUnlockedSentence = MAKE_STRING("EA"); break; // access granted
case 2: m_ls.sUnlockedSentence = MAKE_STRING("ED"); break; // security door case 2: m_ls.sUnlockedSentence = MAKE_STRING("ED"); break; // security door
case 3: m_ls.sUnlockedSentence = MAKE_STRING("EF"); break; // blast door case 3: m_ls.sUnlockedSentence = MAKE_STRING("EF"); break; // blast door
case 4: m_ls.sUnlockedSentence = MAKE_STRING("EFIRE"); break; // fire door case 4: m_ls.sUnlockedSentence = MAKE_STRING("EFIRE"); break; // fire door
case 5: m_ls.sUnlockedSentence = MAKE_STRING("ECHEM"); break; // chemical door case 5: m_ls.sUnlockedSentence = MAKE_STRING("ECHEM"); break; // chemical door
case 6: m_ls.sUnlockedSentence = MAKE_STRING("ERAD"); break; // radiation door case 6: m_ls.sUnlockedSentence = MAKE_STRING("ERAD"); break; // radiation door
case 7: m_ls.sUnlockedSentence = MAKE_STRING("ECON"); break; // gen containment case 7: m_ls.sUnlockedSentence = MAKE_STRING("ECON"); break; // gen containment
case 8: m_ls.sUnlockedSentence = MAKE_STRING("EH"); break; // maintenance door case 8: m_ls.sUnlockedSentence = MAKE_STRING("EH"); break; // maintenance door
default: m_ls.sUnlockedSentence = 0; break; default: m_ls.sUnlockedSentence = 0; break;
} }
} }

View File

@ -32,26 +32,26 @@
#pragma once #pragma once
#endif #endif
#define SF_BUTTON_DONTMOVE 1 #define SF_BUTTON_DONTMOVE 1
#define SF_ROTBUTTON_NOTSOLID 1 #define SF_ROTBUTTON_NOTSOLID 1
#define SF_BUTTON_TOGGLE 32 // button stays pushed until reactivated #define SF_BUTTON_TOGGLE 32 // button stays pushed until reactivated
#define SF_BUTTON_SPARK_IF_OFF 64 // button sparks in OFF state #define SF_BUTTON_SPARK_IF_OFF 64 // button sparks in OFF state
#define SF_BUTTON_TOUCH_ONLY 256 // button only fires as a result of USE key. #define SF_BUTTON_TOUCH_ONLY 256 // button only fires as a result of USE key.
#define SF_GLOBAL_SET 1 // Set global state to initial state on spawn #define SF_GLOBAL_SET 1 // Set global state to initial state on spawn
#define SF_MULTI_INIT 1 #define SF_MULTI_INIT 1
// Make this button behave like a door (HACKHACK) // Make this button behave like a door (HACKHACK)
// This will disable use and make the button solid // This will disable use and make the button solid
// rotating buttons were made SOLID_NOT by default since their were some // rotating buttons were made SOLID_NOT by default since their were some
// collision problems with them... // collision problems with them...
#define SF_MOMENTARY_DOOR 0x0001 #define SF_MOMENTARY_DOOR 0x0001
#define SF_SPARK_TOOGLE 32 #define SF_SPARK_TOOGLE 32
#define SF_SPARK_IF_OFF 64 #define SF_SPARK_IF_OFF 64
#define SF_BTARGET_USE 0x0001 #define SF_BTARGET_USE 0x0001
#define SF_BTARGET_ON 0x0002 #define SF_BTARGET_ON 0x0002
/* <249a3> ../cstrike/dlls/buttons.cpp:38 */ /* <249a3> ../cstrike/dlls/buttons.cpp:38 */
@ -75,7 +75,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3]; static TYPEDESCRIPTION IMPL(m_SaveData)[3];
public: public:
string_t m_globalstate; string_t m_globalstate;
@ -84,7 +84,7 @@ public:
};/* size: 164, cachelines: 3, members: 5 */ };/* size: 164, cachelines: 3, members: 5 */
/* <24b67> ../cstrike/dlls/buttons.cpp:800 */ /* <24b67> ../cstrike/dlls/buttons.cpp:800 */
class CRotButton: public CBaseButton class CRotButton: public CBaseButton
{ {
public: public:
@ -108,13 +108,13 @@ public:
virtual int Restore(CRestore &restore); virtual int Restore(CRestore &restore);
virtual int ObjectCaps(void) virtual int ObjectCaps(void)
{ {
int flags = CBaseToggle::ObjectCaps() & (~FCAP_ACROSS_TRANSITION); int flags = CBaseToggle::ObjectCaps() & (~FCAP_ACROSS_TRANSITION);
if (pev->spawnflags & SF_MOMENTARY_DOOR) if (pev->spawnflags & SF_MOMENTARY_DOOR)
{ {
return flags; return flags;
} }
return (flags | FCAP_CONTINUOUS_USE); return (flags | FCAP_CONTINUOUS_USE);
} }
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value); virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
@ -144,7 +144,7 @@ public:
} }
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[6]; static TYPEDESCRIPTION IMPL(m_SaveData)[6];
public: public:
int m_lastUsed; int m_lastUsed;
@ -182,7 +182,7 @@ public:
void EXPORT SparkStop(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value); void EXPORT SparkStop(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
public: public:
float m_flDelay; float m_flDelay;
@ -215,13 +215,13 @@ void DoSpark(entvars_t *pev, const Vector &location);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
// linked objects // linked objects
C_DLLEXPORT void env_global(entvars_t *pev); C_DLLEXPORT void env_global(entvars_t *pev);
C_DLLEXPORT void multisource(entvars_t *pev); C_DLLEXPORT void multisource(entvars_t *pev);
C_DLLEXPORT void func_button(entvars_t *pev); C_DLLEXPORT void func_button(entvars_t *pev);
C_DLLEXPORT void func_rot_button(entvars_t *pev); C_DLLEXPORT void func_rot_button(entvars_t *pev);
C_DLLEXPORT void momentary_rot_button(entvars_t *pev); C_DLLEXPORT void momentary_rot_button(entvars_t *pev);
C_DLLEXPORT void env_spark(entvars_t *pev); C_DLLEXPORT void env_spark(entvars_t *pev);
C_DLLEXPORT void env_debris(entvars_t *pev); C_DLLEXPORT void env_debris(entvars_t *pev);
C_DLLEXPORT void button_target(entvars_t *pev); C_DLLEXPORT void button_target(entvars_t *pev);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -56,7 +56,6 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static CCareerTask *NewTask(const char *taskName, GameEventType event, const char *weaponName, int n, bool mustLive, bool crossRounds, int id, bool isComplete); static CCareerTask *NewTask(const char *taskName, GameEventType event, const char *weaponName, int n, bool mustLive, bool crossRounds, int id, bool isComplete);
void OnWeaponKill(int weaponId, int weaponClassId, bool headshot, bool killerHasShield, CBasePlayer *pAttacker, CBasePlayer *pVictim); void OnWeaponKill(int weaponId, int weaponClassId, bool headshot, bool killerHasShield, CBasePlayer *pAttacker, CBasePlayer *pVictim);
@ -167,44 +166,44 @@ private:
bool m_shouldLatchRoundEndMessage; bool m_shouldLatchRoundEndMessage;
};/* size: 36, cachelines: 1, members: 8 */ };/* size: 36, cachelines: 1, members: 8 */
typedef CCareerTask *(*TaskFactoryFunction)(const char *taskName, GameEventType event, const char *weaponName, int eventCount, bool mustLive, bool crossRounds, int nextId, bool isComplete); typedef CCareerTask *(*TaskFactoryFunction)(const char *taskName, GameEventType event, const char *weaponName, int eventCount, bool mustLive, bool crossRounds, int nextId, bool isComplete);
struct TaskInfo struct TaskInfo
{ {
const char *taskName; const char *taskName;
GameEventType event; GameEventType event;
TaskFactoryFunction factory; TaskFactoryFunction factory;
};/* size: 12, cachelines: 1, members: 3 */ };/* size: 12, cachelines: 1, members: 3 */
/* <1ef56d> ../cstrike/dlls/career_tasks.cpp:139 */ /* <1ef56d> ../cstrike/dlls/career_tasks.cpp:139 */
class CPreventDefuseTask: public CCareerTask class CPreventDefuseTask: public CCareerTask
{ {
public: public:
CPreventDefuseTask(const char *taskName, GameEventType event, const char *weaponName, int n, bool mustLive, bool crossRounds, int id, bool isComplete); CPreventDefuseTask(const char *taskName, GameEventType event, const char *weaponName, int n, bool mustLive, bool crossRounds, int id, bool isComplete);
public: public:
virtual void OnEvent(GameEventType event, CBasePlayer *pAttacker, CBasePlayer *pVictim); virtual void OnEvent(GameEventType event, CBasePlayer *pAttacker, CBasePlayer *pVictim);
virtual void Reset(void); virtual void Reset(void);
virtual bool IsTaskCompletableThisRound(void) virtual bool IsTaskCompletableThisRound(void)
{ {
return m_bombPlantedThisRound && !m_defuseStartedThisRound; return m_bombPlantedThisRound && !m_defuseStartedThisRound;
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void OnEvent_(GameEventType event, CBasePlayer *pAttacker, CBasePlayer *pVictim); void OnEvent_(GameEventType event, CBasePlayer *pAttacker, CBasePlayer *pVictim);
void Reset_(void); void Reset_(void);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static CCareerTask *NewTask(const char *taskName, GameEventType event, const char *weaponName, int n, bool mustLive, bool crossRounds, int id, bool isComplete); static CCareerTask *NewTask(const char *taskName, GameEventType event, const char *weaponName, int n, bool mustLive, bool crossRounds, int id, bool isComplete);
protected: protected:
bool m_bombPlantedThisRound; bool m_bombPlantedThisRound;
bool m_defuseStartedThisRound; bool m_defuseStartedThisRound;
};/* size: 48, cachelines: 1, members: 3 */ };/* size: 48, cachelines: 1, members: 3 */
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL

View File

@ -7,61 +7,61 @@
static DLL_FUNCTIONS gFunctionTable = static DLL_FUNCTIONS gFunctionTable =
{ {
GameDLLInit, &GameDLLInit,
DispatchSpawn, &DispatchSpawn,
DispatchThink, &DispatchThink,
DispatchUse, &DispatchUse,
DispatchTouch, &DispatchTouch,
DispatchBlocked, &DispatchBlocked,
DispatchKeyValue, &DispatchKeyValue,
DispatchSave, &DispatchSave,
DispatchRestore, &DispatchRestore,
DispatchObjectCollsionBox, &DispatchObjectCollsionBox,
SaveWriteFields, &SaveWriteFields,
SaveReadFields, &SaveReadFields,
SaveGlobalState, &SaveGlobalState,
RestoreGlobalState, &RestoreGlobalState,
ResetGlobalState, &ResetGlobalState,
ClientConnect, &ClientConnect,
ClientDisconnect, &ClientDisconnect,
ClientKill, &ClientKill,
ClientPutInServer, &ClientPutInServer,
ClientCommand, &ClientCommand,
ClientUserInfoChanged, &ClientUserInfoChanged,
ServerActivate, &ServerActivate,
ServerDeactivate, &ServerDeactivate,
PlayerPreThink, &PlayerPreThink,
PlayerPostThink, &PlayerPostThink,
StartFrame, &StartFrame,
ParmsNewLevel, &ParmsNewLevel,
ParmsChangeLevel, &ParmsChangeLevel,
GetGameDescription, &GetGameDescription,
PlayerCustomization, &PlayerCustomization,
SpectatorConnect, &SpectatorConnect,
SpectatorDisconnect, &SpectatorDisconnect,
SpectatorThink, &SpectatorThink,
Sys_Error, &Sys_Error,
PM_Move, &PM_Move,
PM_Init, &PM_Init,
PM_FindTextureType, &PM_FindTextureType,
SetupVisibility, &SetupVisibility,
UpdateClientData, &UpdateClientData,
AddToFullPack, &AddToFullPack,
CreateBaseline, &CreateBaseline,
RegisterEncoders, &RegisterEncoders,
GetWeaponData, &GetWeaponData,
CmdStart, &CmdStart,
CmdEnd, &CmdEnd,
ConnectionlessPacket, &ConnectionlessPacket,
GetHullBounds, &GetHullBounds,
CreateInstancedBaselines, &CreateInstancedBaselines,
InconsistentFile, &InconsistentFile,
AllowLagCompensation &AllowLagCompensation
}; };
static NEW_DLL_FUNCTIONS gNewDLLFunctions static NEW_DLL_FUNCTIONS gNewDLLFunctions
{ {
OnFreeEntPrivateData, &OnFreeEntPrivateData,
NULL, NULL,
NULL NULL
}; };
@ -83,7 +83,7 @@ BOOL gTouchDisabled = FALSE;
DLL_FUNCTIONS gFunctionTable; DLL_FUNCTIONS gFunctionTable;
NEW_DLL_FUNCTIONS gNewDLLFunctions; NEW_DLL_FUNCTIONS gNewDLLFunctions;
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseEntity, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CBaseEntity, m_SaveData)[5];
CMemoryPool hashItemMemPool; CMemoryPool hashItemMemPool;
BOOL gTouchDisabled; BOOL gTouchDisabled;
@ -428,7 +428,7 @@ C_DLLEXPORT int GetNewDLLFunctions(NEW_DLL_FUNCTIONS *pFunctionTable, int *inter
} }
/* <30ab0> ../cstrike/dlls/cbase.cpp:498 */ /* <30ab0> ../cstrike/dlls/cbase.cpp:498 */
int DispatchSpawn(edict_t *pent) int EXT_FUNC DispatchSpawn(edict_t *pent)
{ {
CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent); CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent);
@ -489,7 +489,7 @@ int DispatchSpawn(edict_t *pent)
} }
/* <2e8a0> ../cstrike/dlls/cbase.cpp:549 */ /* <2e8a0> ../cstrike/dlls/cbase.cpp:549 */
void DispatchKeyValue(edict_t *pentKeyvalue, KeyValueData *pkvd) void EXT_FUNC DispatchKeyValue(edict_t *pentKeyvalue, KeyValueData *pkvd)
{ {
if (!pkvd || !pentKeyvalue) if (!pkvd || !pentKeyvalue)
return; return;
@ -514,7 +514,7 @@ void DispatchKeyValue(edict_t *pentKeyvalue, KeyValueData *pkvd)
// while it builds the graph // while it builds the graph
/* <2e7db> ../cstrike/dlls/cbase.cpp:574 */ /* <2e7db> ../cstrike/dlls/cbase.cpp:574 */
void DispatchTouch(edict_t *pentTouched, edict_t *pentOther) void EXT_FUNC DispatchTouch(edict_t *pentTouched, edict_t *pentOther)
{ {
if (gTouchDisabled) if (gTouchDisabled)
return; return;
@ -527,7 +527,7 @@ void DispatchTouch(edict_t *pentTouched, edict_t *pentOther)
} }
/* <2fa9b> ../cstrike/dlls/cbase.cpp:587 */ /* <2fa9b> ../cstrike/dlls/cbase.cpp:587 */
void DispatchUse(edict_t *pentUsed, edict_t *pentOther) void EXT_FUNC DispatchUse(edict_t *pentUsed, edict_t *pentOther)
{ {
CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pentUsed); CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pentUsed);
CBaseEntity *pOther = (CBaseEntity *)GET_PRIVATE(pentOther); CBaseEntity *pOther = (CBaseEntity *)GET_PRIVATE(pentOther);
@ -539,7 +539,7 @@ void DispatchUse(edict_t *pentUsed, edict_t *pentOther)
} }
/* <2fb2f> ../cstrike/dlls/cbase.cpp:596 */ /* <2fb2f> ../cstrike/dlls/cbase.cpp:596 */
void DispatchThink(edict_t *pent) void EXT_FUNC DispatchThink(edict_t *pent)
{ {
CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent); CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent);
@ -555,7 +555,7 @@ void DispatchThink(edict_t *pent)
} }
/* <2fb89> ../cstrike/dlls/cbase.cpp:612 */ /* <2fb89> ../cstrike/dlls/cbase.cpp:612 */
void DispatchBlocked(edict_t *pentBlocked, edict_t *pentOther) void EXT_FUNC DispatchBlocked(edict_t *pentBlocked, edict_t *pentOther)
{ {
CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pentBlocked); CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pentBlocked);
CBaseEntity *pOther = (CBaseEntity *)GET_PRIVATE(pentOther); CBaseEntity *pOther = (CBaseEntity *)GET_PRIVATE(pentOther);
@ -567,7 +567,7 @@ void DispatchBlocked(edict_t *pentBlocked, edict_t *pentOther)
} }
/* <2ff56> ../cstrike/dlls/cbase.cpp:621 */ /* <2ff56> ../cstrike/dlls/cbase.cpp:621 */
void DispatchSave(edict_t *pent, SAVERESTOREDATA *pSaveData) void EXT_FUNC DispatchSave(edict_t *pent, SAVERESTOREDATA *pSaveData)
{ {
CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent); CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent);
@ -627,7 +627,7 @@ CBaseEntity *FindGlobalEntity(string_t classname, string_t globalname)
} }
/* <3179c> ../cstrike/dlls/cbase.cpp:673 */ /* <3179c> ../cstrike/dlls/cbase.cpp:673 */
int DispatchRestore(edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity) int EXT_FUNC DispatchRestore(edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity)
{ {
CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent); CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent);
@ -742,7 +742,7 @@ int DispatchRestore(edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity)
} }
/* <2fdcd> ../cstrike/dlls/cbase.cpp:776 */ /* <2fdcd> ../cstrike/dlls/cbase.cpp:776 */
void DispatchObjectCollsionBox(edict_t *pent) void EXT_FUNC DispatchObjectCollsionBox(edict_t *pent)
{ {
CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent); CBaseEntity *pEntity = (CBaseEntity *)GET_PRIVATE(pent);
@ -756,14 +756,14 @@ void DispatchObjectCollsionBox(edict_t *pent)
} }
/* <2fe94> ../cstrike/dlls/cbase.cpp:788 */ /* <2fe94> ../cstrike/dlls/cbase.cpp:788 */
void SaveWriteFields(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount) void EXT_FUNC SaveWriteFields(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount)
{ {
CSave saveHelper(pSaveData); CSave saveHelper(pSaveData);
saveHelper.WriteFields(pname, pBaseData, pFields, fieldCount); saveHelper.WriteFields(pname, pBaseData, pFields, fieldCount);
} }
/* <30047> ../cstrike/dlls/cbase.cpp:795 */ /* <30047> ../cstrike/dlls/cbase.cpp:795 */
void SaveReadFields(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount) void EXT_FUNC SaveReadFields(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount)
{ {
CRestore restoreHelper(pSaveData); CRestore restoreHelper(pSaveData);
restoreHelper.ReadFields(pname, pBaseData, pFields, fieldCount); restoreHelper.ReadFields(pname, pBaseData, pFields, fieldCount);
@ -922,7 +922,7 @@ int CBaseEntity::__MAKE_VHOOK(Save)(CSave &save)
{ {
if (save.WriteEntVars("ENTVARS", pev)) if (save.WriteEntVars("ENTVARS", pev))
{ {
return save.WriteFields("BASE", this, IMPLEMENT_ARRAY(m_SaveData), ARRAYSIZE(IMPLEMENT_ARRAY(m_SaveData))); return save.WriteFields("BASE", this, IMPL(m_SaveData), ARRAYSIZE(IMPL(m_SaveData)));
} }
return 0; return 0;
@ -937,7 +937,7 @@ int CBaseEntity::__MAKE_VHOOK(Restore)(CRestore &restore)
if (status) if (status)
{ {
status = restore.ReadFields("BASE", this, IMPLEMENT_ARRAY(m_SaveData), ARRAYSIZE(IMPLEMENT_ARRAY(m_SaveData))); status = restore.ReadFields("BASE", this, IMPL(m_SaveData), ARRAYSIZE(IMPL(m_SaveData)));
} }
if (pev->modelindex != 0 && !FStringNull(pev->model)) if (pev->modelindex != 0 && !FStringNull(pev->model))

View File

@ -177,10 +177,10 @@
#define MS_MAX_TARGETS 32 #define MS_MAX_TARGETS 32
#ifdef _WIN32 #ifdef _WIN32
#define C_EXPORT _declspec(dllexport) #define EXPORT _declspec(dllexport)
#else #else
#define C_EXPORT #define EXPORT /**/
#endif #endif // _WIN32
enum hash_types_e enum hash_types_e
{ {
@ -230,16 +230,6 @@ typedef enum
} TRAIN_CODE; } TRAIN_CODE;
// Things that toggle (buttons/triggers/doors) need this
typedef enum
{
TS_AT_TOP,
TS_AT_BOTTOM,
TS_GOING_UP,
TS_GOING_DOWN,
} TOGGLE_STATE;
class CGrenade; class CGrenade;
class CBaseEntity; class CBaseEntity;
class CBaseMonster; class CBaseMonster;
@ -566,7 +556,7 @@ public:
CBaseEntity *m_pGoalEnt; CBaseEntity *m_pGoalEnt;
CBaseEntity *m_pLink; CBaseEntity *m_pLink;
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
void (CBaseEntity::*m_pfnThink)(void); void (CBaseEntity::*m_pfnThink)(void);
//int m_pfnThink_Flag; //int m_pfnThink_Flag;
@ -669,7 +659,7 @@ public:
void EXPORT Register(void); void EXPORT Register(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[4]; static TYPEDESCRIPTION IMPL(m_SaveData)[4];
EHANDLE m_rgEntities[MS_MAX_TARGETS]; EHANDLE m_rgEntities[MS_MAX_TARGETS];
int m_rgTriggered[MS_MAX_TARGETS]; int m_rgTriggered[MS_MAX_TARGETS];
@ -698,7 +688,7 @@ public:
void SUB_UseTargets(CBaseEntity *pActivator, USE_TYPE useType, float value); void SUB_UseTargets(CBaseEntity *pActivator, USE_TYPE useType, float value);
void EXPORT DelayThink(void); void EXPORT DelayThink(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
float m_flDelay; float m_flDelay;
int m_iszKillTarget; int m_iszKillTarget;
@ -742,7 +732,7 @@ public:
int ExtractBbox(int sequence, float *mins, float *maxs); int ExtractBbox(int sequence, float *mins, float *maxs);
void SetSequenceBox(void); void SetSequenceBox(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
float m_flFrameRate; float m_flFrameRate;
float m_flGroundSpeed; float m_flGroundSpeed;
@ -788,7 +778,7 @@ public:
static float AxisDelta(int flags, const Vector &angle1, const Vector &angle2); static float AxisDelta(int flags, const Vector &angle1, const Vector &angle2);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[19]; static TYPEDESCRIPTION IMPL(m_SaveData)[19];
TOGGLE_STATE m_toggle_state; TOGGLE_STATE m_toggle_state;
float m_flActivateFinished; float m_flActivateFinished;
@ -870,7 +860,7 @@ public:
BUTTON_CODE ButtonResponseToTouch(void); BUTTON_CODE ButtonResponseToTouch(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[8]; static TYPEDESCRIPTION IMPL(m_SaveData)[8];
BOOL m_fStayPushed; BOOL m_fStayPushed;
BOOL m_fRotating; BOOL m_fRotating;

View File

@ -75,7 +75,7 @@ int g_serveractive;
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
PLAYERPVSSTATUS g_PVSStatus[32]; PLAYERPVSSTATUS g_PVSStatus[MAX_CLIENTS];
unsigned short m_usResetDecals; unsigned short m_usResetDecals;
unsigned short g_iShadowSprite; unsigned short g_iShadowSprite;
@ -154,13 +154,13 @@ void BlinkAccount(CBasePlayer *player, int numBlinks)
} }
/* <47efd> ../cstrike/dlls/client.cpp:236 */ /* <47efd> ../cstrike/dlls/client.cpp:236 */
BOOL ClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *szRejectReason) BOOL EXT_FUNC ClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *szRejectReason)
{ {
return g_pGameRules->ClientConnected(pEntity, pszName, pszAddress, szRejectReason); return g_pGameRules->ClientConnected(pEntity, pszName, pszAddress, szRejectReason);
} }
/* <47f5b> ../cstrike/dlls/client.cpp:255 */ /* <47f5b> ../cstrike/dlls/client.cpp:255 */
void ClientDisconnect(edict_t *pEntity) void EXT_FUNC ClientDisconnect(edict_t *pEntity)
{ {
CBasePlayer *pPlayer = (CBasePlayer *)CBaseEntity::Instance(pEntity); CBasePlayer *pPlayer = (CBasePlayer *)CBaseEntity::Instance(pEntity);
@ -216,7 +216,7 @@ void respawn(entvars_t *pev, BOOL fCopyCorpse)
// Suicide... // Suicide...
/* <48013> ../cstrike/dlls/client.cpp:347 */ /* <48013> ../cstrike/dlls/client.cpp:347 */
void ClientKill(edict_t *pEntity) void EXT_FUNC ClientKill(edict_t *pEntity)
{ {
entvars_t *pev = &pEntity->v; entvars_t *pev = &pEntity->v;
CHalfLifeMultiplay *mp = g_pGameRules; CHalfLifeMultiplay *mp = g_pGameRules;
@ -496,7 +496,7 @@ void CheckStartMoney(void)
} }
/* <4c084> ../cstrike/dlls/client.cpp:661 */ /* <4c084> ../cstrike/dlls/client.cpp:661 */
void ClientPutInServer(edict_t *pEntity) void EXT_FUNC ClientPutInServer(edict_t *pEntity)
{ {
entvars_t *pev = &pEntity->v; entvars_t *pev = &pEntity->v;
CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pev); CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pev);
@ -2898,7 +2898,7 @@ BOOL HandleRadioAliasCommands(CBasePlayer *pPlayer, const char *pszCommand)
// Use CMD_ARGV, CMD_ARGV, and CMD_ARGC to get pointers the character string command. // Use CMD_ARGV, CMD_ARGV, and CMD_ARGC to get pointers the character string command.
/* <4c6c1> ../cstrike/dlls/client.cpp:3234 */ /* <4c6c1> ../cstrike/dlls/client.cpp:3234 */
void ClientCommand(edict_t *pEntity) void EXT_FUNC ClientCommand(edict_t *pEntity)
{ {
const char *pcmd = CMD_ARGV_(0); const char *pcmd = CMD_ARGV_(0);
const char *pstr = NULL; const char *pstr = NULL;
@ -3854,7 +3854,7 @@ void ClientCommand(edict_t *pEntity)
} }
/* <4b959> ../cstrike/dlls/client.cpp:4282 */ /* <4b959> ../cstrike/dlls/client.cpp:4282 */
void ClientUserInfoChanged(edict_t *pEntity, char *infobuffer) void EXT_FUNC ClientUserInfoChanged(edict_t *pEntity, char *infobuffer)
{ {
// Is the client spawned yet? // Is the client spawned yet?
if (!pEntity->pvPrivateData) if (!pEntity->pvPrivateData)
@ -3919,7 +3919,7 @@ void ClientUserInfoChanged(edict_t *pEntity, char *infobuffer)
} }
/* <4a378> ../cstrike/dlls/client.cpp:4362 */ /* <4a378> ../cstrike/dlls/client.cpp:4362 */
void ServerDeactivate(void) void EXT_FUNC ServerDeactivate(void)
{ {
// It's possible that the engine will call this function more times than is necessary // It's possible that the engine will call this function more times than is necessary
// Therefore, only run it one time for each call to ServerActivate // Therefore, only run it one time for each call to ServerActivate
@ -3946,7 +3946,7 @@ void ServerDeactivate(void)
} }
/* <4a392> ../cstrike/dlls/client.cpp:4400 */ /* <4a392> ../cstrike/dlls/client.cpp:4400 */
void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax) void EXT_FUNC ServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
{ {
int i; int i;
CBaseEntity *pClass; CBaseEntity *pClass;
@ -4000,7 +4000,7 @@ void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
} }
/* <4a404> ../cstrike/dlls/client.cpp:4459 */ /* <4a404> ../cstrike/dlls/client.cpp:4459 */
void PlayerPreThink(edict_t *pEntity) void EXT_FUNC PlayerPreThink(edict_t *pEntity)
{ {
entvars_t *pev = &pEntity->v; entvars_t *pev = &pEntity->v;
CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity); CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
@ -4012,7 +4012,7 @@ void PlayerPreThink(edict_t *pEntity)
} }
/* <4a47c> ../cstrike/dlls/client.cpp:4475 */ /* <4a47c> ../cstrike/dlls/client.cpp:4475 */
void PlayerPostThink(edict_t *pEntity) void EXT_FUNC PlayerPostThink(edict_t *pEntity)
{ {
entvars_t *pev = &pEntity->v; entvars_t *pev = &pEntity->v;
CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity); CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
@ -4024,13 +4024,13 @@ void PlayerPostThink(edict_t *pEntity)
} }
/* <4a4f4> ../cstrike/dlls/client.cpp:4486 */ /* <4a4f4> ../cstrike/dlls/client.cpp:4486 */
void ParmsNewLevel(void) void EXT_FUNC ParmsNewLevel(void)
{ {
; ;
} }
/* <4a50d> ../cstrike/dlls/client.cpp:4491 */ /* <4a50d> ../cstrike/dlls/client.cpp:4491 */
void ParmsChangeLevel(void) void EXT_FUNC ParmsChangeLevel(void)
{ {
// retrieve the pointer to the save data // retrieve the pointer to the save data
SAVERESTOREDATA *pSaveData = (SAVERESTOREDATA *)gpGlobals->pSaveData; SAVERESTOREDATA *pSaveData = (SAVERESTOREDATA *)gpGlobals->pSaveData;
@ -4042,7 +4042,7 @@ void ParmsChangeLevel(void)
} }
/* <4a548> ../cstrike/dlls/client.cpp:4504 */ /* <4a548> ../cstrike/dlls/client.cpp:4504 */
void StartFrame(void) void EXT_FUNC StartFrame(void)
{ {
if (g_pGameRules != NULL) if (g_pGameRules != NULL)
{ {
@ -4495,7 +4495,7 @@ void ClientPrecache(void)
} }
/* <4a6e5> ../cstrike/dlls/client.cpp:4996 */ /* <4a6e5> ../cstrike/dlls/client.cpp:4996 */
const char *GetGameDescription(void) const char *EXT_FUNC GetGameDescription(void)
{ {
if (UTIL_IsGame("czero")) if (UTIL_IsGame("czero"))
return "Condition Zero"; return "Condition Zero";
@ -4504,13 +4504,13 @@ const char *GetGameDescription(void)
} }
/* <4a703> ../cstrike/dlls/client.cpp:5022 */ /* <4a703> ../cstrike/dlls/client.cpp:5022 */
void Sys_Error(const char *error_string) void EXT_FUNC Sys_Error(const char *error_string)
{ {
; ;
} }
/* <4a731> ../cstrike/dlls/client.cpp:5039 */ /* <4a731> ../cstrike/dlls/client.cpp:5039 */
void PlayerCustomization(edict_t *pEntity, customization_t *pCust) void EXT_FUNC PlayerCustomization(edict_t *pEntity, customization_t *pCust)
{ {
CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity); CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
@ -4528,21 +4528,21 @@ void PlayerCustomization(edict_t *pEntity, customization_t *pCust)
switch (pCust->resource.type) switch (pCust->resource.type)
{ {
case t_decal: case t_decal:
pPlayer->SetCustomDecalFrames(pCust->nUserData2); pPlayer->SetCustomDecalFrames(pCust->nUserData2);
break; break;
case t_sound: case t_sound:
case t_skin: case t_skin:
case t_model: case t_model:
break; break;
default: default:
ALERT(at_console, "PlayerCustomization: Unknown customization type!\n"); ALERT(at_console, "PlayerCustomization: Unknown customization type!\n");
break; break;
} }
} }
/* <4a7b9> ../cstrike/dlls/client.cpp:5079 */ /* <4a7b9> ../cstrike/dlls/client.cpp:5079 */
void SpectatorConnect(edict_t *pEntity) void EXT_FUNC SpectatorConnect(edict_t *pEntity)
{ {
CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity); CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity);
@ -4553,7 +4553,7 @@ void SpectatorConnect(edict_t *pEntity)
} }
/* <4a83d> ../cstrike/dlls/client.cpp:5095 */ /* <4a83d> ../cstrike/dlls/client.cpp:5095 */
void SpectatorDisconnect(edict_t *pEntity) void EXT_FUNC SpectatorDisconnect(edict_t *pEntity)
{ {
CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity); CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity);
@ -4564,7 +4564,7 @@ void SpectatorDisconnect(edict_t *pEntity)
} }
/* <4a8b5> ../cstrike/dlls/client.cpp:5111 */ /* <4a8b5> ../cstrike/dlls/client.cpp:5111 */
void SpectatorThink(edict_t *pEntity) void EXT_FUNC SpectatorThink(edict_t *pEntity)
{ {
CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity); CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity);
@ -4575,7 +4575,7 @@ void SpectatorThink(edict_t *pEntity)
} }
/* <4a92d> ../cstrike/dlls/client.cpp:5160 */ /* <4a92d> ../cstrike/dlls/client.cpp:5160 */
void SetupVisibility(edict_t *pViewEntity, edict_t *pClient, unsigned char **pvs, unsigned char **pas) void EXT_FUNC SetupVisibility(edict_t *pViewEntity, edict_t *pClient, unsigned char **pvs, unsigned char **pas)
{ {
edict_t *pView = pClient; edict_t *pView = pClient;
@ -4673,7 +4673,7 @@ bool CheckEntityRecentlyInPVS(int clientnum, int entitynum, float currenttime)
} }
/* <4ac57> ../cstrike/dlls/client.cpp:5312 */ /* <4ac57> ../cstrike/dlls/client.cpp:5312 */
int AddToFullPack(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet) int EXT_FUNC AddToFullPack(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet)
{ {
if ((ent->v.effects & EF_NODRAW) == EF_NODRAW && ent != host) if ((ent->v.effects & EF_NODRAW) == EF_NODRAW && ent != host)
return 0; return 0;
@ -4813,7 +4813,7 @@ int AddToFullPack(struct entity_state_s *state, int e, edict_t *ent, edict_t *ho
// Creates baselines used for network encoding, especially for player data since players are not spawned until connect time. // Creates baselines used for network encoding, especially for player data since players are not spawned until connect time.
/* <4aef3> ../cstrike/dlls/client.cpp:5516 */ /* <4aef3> ../cstrike/dlls/client.cpp:5516 */
void CreateBaseline(int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, Vector player_mins, Vector player_maxs) void EXT_FUNC CreateBaseline(int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, Vector player_mins, Vector player_maxs)
{ {
baseline->origin = entity->v.origin; baseline->origin = entity->v.origin;
baseline->angles = entity->v.angles; baseline->angles = entity->v.angles;
@ -5035,7 +5035,7 @@ void Custom_Encode(struct delta_s *pFields, const unsigned char *from, const uns
} }
/* <4b08a> ../cstrike/dlls/client.cpp:5811 */ /* <4b08a> ../cstrike/dlls/client.cpp:5811 */
void RegisterEncoders(void) void EXT_FUNC RegisterEncoders(void)
{ {
DELTA_ADDENCODER("Entity_Encode", Entity_Encode); DELTA_ADDENCODER("Entity_Encode", Entity_Encode);
DELTA_ADDENCODER("Custom_Encode", Custom_Encode); DELTA_ADDENCODER("Custom_Encode", Custom_Encode);
@ -5043,7 +5043,7 @@ void RegisterEncoders(void)
} }
/* <4b0a4> ../cstrike/dlls/client.cpp:5818 */ /* <4b0a4> ../cstrike/dlls/client.cpp:5818 */
int GetWeaponData(edict_s *player, struct weapon_data_s *info) int EXT_FUNC GetWeaponData(edict_s *player, struct weapon_data_s *info)
{ {
entvars_t *pev = &player->v; entvars_t *pev = &player->v;
CBasePlayer *pl = reinterpret_cast<CBasePlayer *>(CBasePlayer::Instance(pev)); CBasePlayer *pl = reinterpret_cast<CBasePlayer *>(CBasePlayer::Instance(pev));
@ -5098,7 +5098,7 @@ int GetWeaponData(edict_s *player, struct weapon_data_s *info)
} }
/* <4b1fd> ../cstrike/dlls/client.cpp:5889 */ /* <4b1fd> ../cstrike/dlls/client.cpp:5889 */
void UpdateClientData(const struct edict_s *ent, int sendweapons, struct clientdata_s *cd) void EXT_FUNC UpdateClientData(const struct edict_s *ent, int sendweapons, struct clientdata_s *cd)
{ {
if (!ent || !ent->pvPrivateData) if (!ent || !ent->pvPrivateData)
{ {
@ -5219,7 +5219,7 @@ void UpdateClientData(const struct edict_s *ent, int sendweapons, struct clientd
} }
/* <4b3ee> ../cstrike/dlls/client.cpp:6050 */ /* <4b3ee> ../cstrike/dlls/client.cpp:6050 */
void CmdStart(const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed) void EXT_FUNC CmdStart(const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed)
{ {
entvars_t *pev = (entvars_t *)&player->v; entvars_t *pev = (entvars_t *)&player->v;
CBasePlayer *pl = reinterpret_cast<CBasePlayer *>(CBasePlayer::Instance(pev)); CBasePlayer *pl = reinterpret_cast<CBasePlayer *>(CBasePlayer::Instance(pev));
@ -5238,7 +5238,7 @@ void CmdStart(const edict_t *player, const struct usercmd_s *cmd, unsigned int r
} }
/* <4b4eb> ../cstrike/dlls/client.cpp:6074 */ /* <4b4eb> ../cstrike/dlls/client.cpp:6074 */
void CmdEnd(const edict_t *player) void EXT_FUNC CmdEnd(const edict_t *player)
{ {
entvars_t *pev = (entvars_t *)&player->v; entvars_t *pev = (entvars_t *)&player->v;
CBasePlayer *pl = reinterpret_cast<CBasePlayer *>(CBasePlayer::Instance(pev)); CBasePlayer *pl = reinterpret_cast<CBasePlayer *>(CBasePlayer::Instance(pev));
@ -5254,7 +5254,7 @@ void CmdEnd(const edict_t *player)
} }
/* <4b644> ../cstrike/dlls/client.cpp:6101 */ /* <4b644> ../cstrike/dlls/client.cpp:6101 */
int ConnectionlessPacket(const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size) int EXT_FUNC ConnectionlessPacket(const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size)
{ {
// Parse stuff from args // Parse stuff from args
int max_buffer_size = *response_buffer_size; int max_buffer_size = *response_buffer_size;
@ -5269,7 +5269,7 @@ int ConnectionlessPacket(const struct netadr_s *net_from, const char *args, char
} }
/* <4b6c2> ../cstrike/dlls/client.cpp:6122 */ /* <4b6c2> ../cstrike/dlls/client.cpp:6122 */
int GetHullBounds(int hullnumber, float *mins, float *maxs) int EXT_FUNC GetHullBounds(int hullnumber, float *mins, float *maxs)
{ {
return hullnumber < 3; return hullnumber < 3;
} }
@ -5278,7 +5278,7 @@ int GetHullBounds(int hullnumber, float *mins, float *maxs)
// to be created during play ( e.g., grenades, ammo packs, projectiles, corpses, etc. ) // to be created during play ( e.g., grenades, ammo packs, projectiles, corpses, etc. )
/* <4b733> ../cstrike/dlls/client.cpp:6156 */ /* <4b733> ../cstrike/dlls/client.cpp:6156 */
void CreateInstancedBaselines(void) void EXT_FUNC CreateInstancedBaselines(void)
{ {
int iret = 0; int iret = 0;
entity_state_t state; entity_state_t state;
@ -5293,7 +5293,7 @@ void CreateInstancedBaselines(void)
} }
/* <4b77c> ../cstrike/dlls/client.cpp:6179 */ /* <4b77c> ../cstrike/dlls/client.cpp:6179 */
int InconsistentFile(const edict_t *player, const char *filename, char *disconnect_message) int EXT_FUNC InconsistentFile(const edict_t *player, const char *filename, char *disconnect_message)
{ {
// Server doesn't care? // Server doesn't care?
if (CVAR_GET_FLOAT("mp_consistency") != 1) if (CVAR_GET_FLOAT("mp_consistency") != 1)
@ -5313,7 +5313,7 @@ int InconsistentFile(const edict_t *player, const char *filename, char *disconne
// if you want. // if you want.
/* <4b7cf> ../cstrike/dlls/client.cpp:6204 */ /* <4b7cf> ../cstrike/dlls/client.cpp:6204 */
int AllowLagCompensation(void) int EXT_FUNC AllowLagCompensation(void)
{ {
return 1; return 1;
} }

View File

@ -299,7 +299,7 @@ void CBaseMonster::__MAKE_VHOOK(GibMonster)(void)
// anim to play. // anim to play.
/* <5f65e> ../cstrike/dlls/combat.cpp:355 */ /* <5f65e> ../cstrike/dlls/combat.cpp:355 */
NOXREF Activity CBaseMonster::__MAKE_VHOOK(GetDeathActivity)(void) Activity CBaseMonster::__MAKE_VHOOK(GetDeathActivity)(void)
{ {
Activity deathActivity; Activity deathActivity;
BOOL fTriedDirection; BOOL fTriedDirection;

View File

@ -84,50 +84,50 @@ void PrintDebugFlags(void)
/* <22fed4> ../cstrike/dlls/debug.cpp:94 */ /* <22fed4> ../cstrike/dlls/debug.cpp:94 */
void SetDebugFlag(const char *flagStr, bool state) void SetDebugFlag(const char *flagStr, bool state)
{ {
if (flagStr != NULL) if (flagStr != NULL)
{ {
DebugOutputType flag; DebugOutputType flag;
for (int i = 0; i < ARRAYSIZE(outputLevel); i++) for (int i = 0; i < ARRAYSIZE(outputLevel); i++)
{ {
DebugOutputLevel level = outputLevel[ i ]; DebugOutputLevel level = outputLevel[ i ];
if (FStrEq(level.name, flagStr)) if (FStrEq(level.name, flagStr))
{ {
flag = level.value; flag = level.value;
if (state) if (state)
theDebugOutputTypes |= flag; theDebugOutputTypes |= flag;
else else
theDebugOutputTypes &= ~flag; theDebugOutputTypes &= ~flag;
SERVER_PRINT(SharedVarArgs("mp_debug: %s is now %s\n", flagStr, state ? "on" : "off")); SERVER_PRINT(SharedVarArgs("mp_debug: %s is now %s\n", flagStr, state ? "on" : "off"));
return; return;
} }
} }
} }
SERVER_PRINT(SharedVarArgs("mp_debug: unknown variable '%s'\n", flagStr)); SERVER_PRINT(SharedVarArgs("mp_debug: unknown variable '%s'\n", flagStr));
} }
/* <23001f> ../cstrike/dlls/debug.cpp:126 */ /* <23001f> ../cstrike/dlls/debug.cpp:126 */
void PrintDebugFlag(const char *flagStr) void PrintDebugFlag(const char *flagStr)
{ {
if (flagStr != NULL) if (flagStr != NULL)
{ {
DebugOutputType flag; DebugOutputType flag;
for (int i = 0; i < ARRAYSIZE(outputLevel); i++) for (int i = 0; i < ARRAYSIZE(outputLevel); i++)
{ {
DebugOutputLevel level = outputLevel[ i ]; DebugOutputLevel level = outputLevel[ i ];
if (FStrEq(level.name, flagStr)) if (FStrEq(level.name, flagStr))
{ {
flag = level.value; flag = level.value;
SERVER_PRINT(SharedVarArgs("mp_debug: %s is %s\n", flagStr, (flag & theDebugOutputTypes) ? "on" : "off")); SERVER_PRINT(SharedVarArgs("mp_debug: %s is %s\n", flagStr, (flag & theDebugOutputTypes) ? "on" : "off"));
return; return;
} }
} }
} }
SERVER_PRINT(SharedVarArgs("mp_debug: unknown variable '%s'\n", flagStr)); SERVER_PRINT(SharedVarArgs("mp_debug: unknown variable '%s'\n", flagStr));
} }

View File

@ -47,11 +47,11 @@ typedef enum
} DebugOutputType; } DebugOutputType;
struct DebugOutputLevel struct DebugOutputLevel
{ {
const char *name; const char *name;
DebugOutputType value; DebugOutputType value;
};/* size: 8, cachelines: 1, members: 2 */ };/* size: 8, cachelines: 1, members: 2 */
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL

View File

@ -23,8 +23,8 @@ TYPEDESCRIPTION CMomentaryDoor::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseDoor, m_SaveData)[7]; TYPEDESCRIPTION IMPL_CLASS(CBaseDoor, m_SaveData)[7];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CMomentaryDoor, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CMomentaryDoor, m_SaveData)[1];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -408,29 +408,29 @@ void CBaseDoor::__MAKE_VHOOK(Precache)(void)
// get sentence group names, for doors which are directly 'touched' to open // get sentence group names, for doors which are directly 'touched' to open
switch (m_bLockedSentence) switch (m_bLockedSentence)
{ {
case 1: m_ls.sLockedSentence = ALLOC_STRING("NA"); break; // access denied case 1: m_ls.sLockedSentence = ALLOC_STRING("NA"); break; // access denied
case 2: m_ls.sLockedSentence = ALLOC_STRING("ND"); break; // security lockout case 2: m_ls.sLockedSentence = ALLOC_STRING("ND"); break; // security lockout
case 3: m_ls.sLockedSentence = ALLOC_STRING("NF"); break; // blast door case 3: m_ls.sLockedSentence = ALLOC_STRING("NF"); break; // blast door
case 4: m_ls.sLockedSentence = ALLOC_STRING("NFIRE"); break; // fire door case 4: m_ls.sLockedSentence = ALLOC_STRING("NFIRE"); break; // fire door
case 5: m_ls.sLockedSentence = ALLOC_STRING("NCHEM"); break; // chemical door case 5: m_ls.sLockedSentence = ALLOC_STRING("NCHEM"); break; // chemical door
case 6: m_ls.sLockedSentence = ALLOC_STRING("NRAD"); break; // radiation door case 6: m_ls.sLockedSentence = ALLOC_STRING("NRAD"); break; // radiation door
case 7: m_ls.sLockedSentence = ALLOC_STRING("NCON"); break; // gen containment case 7: m_ls.sLockedSentence = ALLOC_STRING("NCON"); break; // gen containment
case 8: m_ls.sLockedSentence = ALLOC_STRING("NH"); break; // maintenance door case 8: m_ls.sLockedSentence = ALLOC_STRING("NH"); break; // maintenance door
case 9: m_ls.sLockedSentence = ALLOC_STRING("NG"); break; // broken door case 9: m_ls.sLockedSentence = ALLOC_STRING("NG"); break; // broken door
default: m_ls.sLockedSentence = 0; break; default: m_ls.sLockedSentence = 0; break;
} }
switch (m_bUnlockedSentence) switch (m_bUnlockedSentence)
{ {
case 1: m_ls.sUnlockedSentence = ALLOC_STRING("EA"); break; // access granted case 1: m_ls.sUnlockedSentence = ALLOC_STRING("EA"); break; // access granted
case 2: m_ls.sUnlockedSentence = ALLOC_STRING("ED"); break; // security door case 2: m_ls.sUnlockedSentence = ALLOC_STRING("ED"); break; // security door
case 3: m_ls.sUnlockedSentence = ALLOC_STRING("EF"); break; // blast door case 3: m_ls.sUnlockedSentence = ALLOC_STRING("EF"); break; // blast door
case 4: m_ls.sUnlockedSentence = ALLOC_STRING("EFIRE"); break; // fire door case 4: m_ls.sUnlockedSentence = ALLOC_STRING("EFIRE"); break; // fire door
case 5: m_ls.sUnlockedSentence = ALLOC_STRING("ECHEM"); break; // chemical door case 5: m_ls.sUnlockedSentence = ALLOC_STRING("ECHEM"); break; // chemical door
case 6: m_ls.sUnlockedSentence = ALLOC_STRING("ERAD"); break; // radiation door case 6: m_ls.sUnlockedSentence = ALLOC_STRING("ERAD"); break; // radiation door
case 7: m_ls.sUnlockedSentence = ALLOC_STRING("ECON"); break; // gen containment case 7: m_ls.sUnlockedSentence = ALLOC_STRING("ECON"); break; // gen containment
case 8: m_ls.sUnlockedSentence = ALLOC_STRING("EH"); break; // maintenance door case 8: m_ls.sUnlockedSentence = ALLOC_STRING("EH"); break; // maintenance door
default: m_ls.sUnlockedSentence = 0; break; default: m_ls.sUnlockedSentence = 0; break;
} }
} }

View File

@ -84,7 +84,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[7]; static TYPEDESCRIPTION IMPL(m_SaveData)[7];
public: public:
// used to selectivly override defaults // used to selectivly override defaults
@ -157,7 +157,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
public: public:
BYTE m_bMoveSnd; // sound a door makes while moving BYTE m_bMoveSnd; // sound a door makes while moving

View File

@ -61,12 +61,12 @@ TYPEDESCRIPTION CGibShooter::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBubbling, m_SaveData)[3]; TYPEDESCRIPTION IMPL_CLASS(CBubbling, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CLightning, m_SaveData)[13]; TYPEDESCRIPTION IMPL_CLASS(CLightning, m_SaveData)[13];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CLaser, m_SaveData)[3]; TYPEDESCRIPTION IMPL_CLASS(CLaser, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGlow, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CGlow, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CSprite, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CSprite, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGibShooter, m_SaveData)[7]; TYPEDESCRIPTION IMPL_CLASS(CGibShooter, m_SaveData)[7];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -160,7 +160,7 @@ public:
void EXPORT AnimateUntilDead(void); void EXPORT AnimateUntilDead(void);
static CSprite *SpriteCreate(const char *pSpriteName, const Vector &origin, BOOL animate); static CSprite *SpriteCreate(const char *pSpriteName, const Vector &origin, BOOL animate);
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
private: private:
@ -356,7 +356,7 @@ public:
void EXPORT StrikeThink(void); void EXPORT StrikeThink(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3]; static TYPEDESCRIPTION IMPL(m_SaveData)[3];
public: public:
CSprite *m_pSprite; CSprite *m_pSprite;
@ -395,7 +395,7 @@ public:
void EXPORT FizzThink(void); void EXPORT FizzThink(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3]; static TYPEDESCRIPTION IMPL(m_SaveData)[3];
public: public:
int m_density; int m_density;
@ -447,7 +447,7 @@ public:
void BeamUpdateVars(void); void BeamUpdateVars(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[13]; static TYPEDESCRIPTION IMPL(m_SaveData)[13];
public: public:
int m_active; int m_active;
@ -486,7 +486,7 @@ public:
void Animate(float frames); void Animate(float frames);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
public: public:
float m_lastTime; float m_lastTime;
@ -542,7 +542,7 @@ public:
public: public:
void EXPORT ShootThink(void); void EXPORT ShootThink(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[7]; static TYPEDESCRIPTION IMPL(m_SaveData)[7];
public: public:
int m_iGibs; int m_iGibs;

View File

@ -13,239 +13,239 @@ TYPEDESCRIPTION CEnvExplosion::m_SaveData[] =
#else // HOOK_GAMEDLL #else // HOOK_GAMEDLL
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CEnvExplosion, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CEnvExplosion, m_SaveData)[2];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
/* <7f660> ../cstrike/dlls/explode.cpp:37 */ /* <7f660> ../cstrike/dlls/explode.cpp:37 */
LINK_ENTITY_TO_CLASS(spark_shower, CShower); LINK_ENTITY_TO_CLASS(spark_shower, CShower);
/* <7f49c> ../cstrike/dlls/explode.cpp:39 */ /* <7f49c> ../cstrike/dlls/explode.cpp:39 */
void CShower::__MAKE_VHOOK(Spawn)(void) void CShower::__MAKE_VHOOK(Spawn)(void)
{ {
pev->velocity = RANDOM_FLOAT(200, 300) * pev->angles; pev->velocity = RANDOM_FLOAT(200, 300) * pev->angles;
pev->velocity.x += RANDOM_FLOAT(-100, 100); pev->velocity.x += RANDOM_FLOAT(-100, 100);
pev->velocity.y += RANDOM_FLOAT(-100, 100); pev->velocity.y += RANDOM_FLOAT(-100, 100);
if (pev->velocity.z >= 0) if (pev->velocity.z >= 0)
pev->velocity.z += 200; pev->velocity.z += 200;
else else
pev->velocity.z -= 200; pev->velocity.z -= 200;
pev->movetype = MOVETYPE_BOUNCE; pev->movetype = MOVETYPE_BOUNCE;
pev->gravity = 0.5f; pev->gravity = 0.5f;
pev->nextthink = gpGlobals->time + 0.1f; pev->nextthink = gpGlobals->time + 0.1f;
pev->solid = SOLID_NOT; pev->solid = SOLID_NOT;
// Need a model, just use the grenade, we don't draw it anyway // Need a model, just use the grenade, we don't draw it anyway
SET_MODEL(edict(), "models/grenade.mdl"); SET_MODEL(edict(), "models/grenade.mdl");
UTIL_SetSize(pev, g_vecZero, g_vecZero); UTIL_SetSize(pev, g_vecZero, g_vecZero);
pev->effects |= EF_NODRAW; pev->effects |= EF_NODRAW;
pev->speed = RANDOM_FLOAT(0.5, 1.5); pev->speed = RANDOM_FLOAT(0.5, 1.5);
pev->angles = g_vecZero; pev->angles = g_vecZero;
} }
/* <7f475> ../cstrike/dlls/explode.cpp:61 */ /* <7f475> ../cstrike/dlls/explode.cpp:61 */
void CShower::__MAKE_VHOOK(Think)(void) void CShower::__MAKE_VHOOK(Think)(void)
{ {
UTIL_Sparks(pev->origin); UTIL_Sparks(pev->origin);
pev->speed -= 0.1f; pev->speed -= 0.1f;
if (pev->speed > 0) if (pev->speed > 0)
pev->nextthink = gpGlobals->time + 0.1f; pev->nextthink = gpGlobals->time + 0.1f;
else else
UTIL_Remove(this); UTIL_Remove(this);
pev->flags &= ~FL_ONGROUND; pev->flags &= ~FL_ONGROUND;
} }
/* <7f122> ../cstrike/dlls/explode.cpp:73 */ /* <7f122> ../cstrike/dlls/explode.cpp:73 */
void CShower::__MAKE_VHOOK(Touch)(CBaseEntity *pOther) void CShower::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
{ {
if (pev->flags & FL_ONGROUND) if (pev->flags & FL_ONGROUND)
pev->velocity = pev->velocity * 0.1f; pev->velocity = pev->velocity * 0.1f;
else else
pev->velocity = pev->velocity * 0.6f; pev->velocity = pev->velocity * 0.6f;
if ((pev->velocity.x * pev->velocity.x + pev->velocity.y * pev->velocity.y) < 10.0f) if ((pev->velocity.x * pev->velocity.x + pev->velocity.y * pev->velocity.y) < 10.0f)
{ {
pev->speed = 0; pev->speed = 0;
} }
} }
/* <7f566> ../cstrike/dlls/explode.cpp:106 */ /* <7f566> ../cstrike/dlls/explode.cpp:106 */
IMPLEMENT_SAVERESTORE(CEnvExplosion, CBaseMonster); IMPLEMENT_SAVERESTORE(CEnvExplosion, CBaseMonster);
/* <7f72a> ../cstrike/dlls/explode.cpp:107 */ /* <7f72a> ../cstrike/dlls/explode.cpp:107 */
LINK_ENTITY_TO_CLASS(env_explosion, CEnvExplosion); LINK_ENTITY_TO_CLASS(env_explosion, CEnvExplosion);
/* <7f5b2> ../cstrike/dlls/explode.cpp:109 */ /* <7f5b2> ../cstrike/dlls/explode.cpp:109 */
void CEnvExplosion::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd) void CEnvExplosion::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
{ {
if (FStrEq(pkvd->szKeyName, "iMagnitude")) if (FStrEq(pkvd->szKeyName, "iMagnitude"))
{ {
m_iMagnitude = Q_atoi(pkvd->szValue); m_iMagnitude = Q_atoi(pkvd->szValue);
pkvd->fHandled = TRUE; pkvd->fHandled = TRUE;
} }
else else
CBaseEntity::KeyValue(pkvd); CBaseEntity::KeyValue(pkvd);
} }
/* <7f1a5> ../cstrike/dlls/explode.cpp:120 */ /* <7f1a5> ../cstrike/dlls/explode.cpp:120 */
void CEnvExplosion::__MAKE_VHOOK(Spawn)(void) void CEnvExplosion::__MAKE_VHOOK(Spawn)(void)
{ {
pev->solid = SOLID_NOT; pev->solid = SOLID_NOT;
pev->effects = EF_NODRAW; pev->effects = EF_NODRAW;
pev->movetype = MOVETYPE_NONE; pev->movetype = MOVETYPE_NONE;
float flSpriteScale = (m_iMagnitude - 50) * 0.6f; float flSpriteScale = (m_iMagnitude - 50) * 0.6f;
if (flSpriteScale < 10.0f) if (flSpriteScale < 10.0f)
{ {
flSpriteScale = 10.0f; flSpriteScale = 10.0f;
} }
m_spriteScale = (int)flSpriteScale; m_spriteScale = (int)flSpriteScale;
} }
/* <7f233> ../cstrike/dlls/explode.cpp:150 */ /* <7f233> ../cstrike/dlls/explode.cpp:150 */
void CEnvExplosion::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value) void CEnvExplosion::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
{ {
TraceResult tr; TraceResult tr;
pev->model = iStringNull;//invisible pev->model = iStringNull;//invisible
pev->solid = SOLID_NOT;//intangible pev->solid = SOLID_NOT;//intangible
Vector vecSpot;// trace starts here! Vector vecSpot;// trace starts here!
vecSpot = pev->origin + Vector(0, 0, 8); vecSpot = pev->origin + Vector(0, 0, 8);
UTIL_TraceLine(vecSpot, vecSpot + Vector (0, 0, -40), ignore_monsters, ENT(pev), & tr); UTIL_TraceLine(vecSpot, vecSpot + Vector (0, 0, -40), ignore_monsters, ENT(pev), & tr);
// Pull out of the wall a bit // Pull out of the wall a bit
if (tr.flFraction != 1.0f) if (tr.flFraction != 1.0f)
{ {
pev->origin = tr.vecEndPos + (tr.vecPlaneNormal * (m_iMagnitude - 24) * 0.6f); pev->origin = tr.vecEndPos + (tr.vecPlaneNormal * (m_iMagnitude - 24) * 0.6f);
} }
else else
{ {
pev->origin = pev->origin; pev->origin = pev->origin;
} }
// draw decal // draw decal
if (! (pev->spawnflags & SF_ENVEXPLOSION_NODECAL)) if (! (pev->spawnflags & SF_ENVEXPLOSION_NODECAL))
{ {
if (RANDOM_FLOAT(0, 1) < 0.5) if (RANDOM_FLOAT(0, 1) < 0.5)
{ {
UTIL_DecalTrace(&tr, DECAL_SCORCH1); UTIL_DecalTrace(&tr, DECAL_SCORCH1);
} }
else else
{ {
UTIL_DecalTrace(&tr, DECAL_SCORCH2); UTIL_DecalTrace(&tr, DECAL_SCORCH2);
} }
} }
// draw fireball // draw fireball
if (!(pev->spawnflags & SF_ENVEXPLOSION_NOFIREBALL)) if (!(pev->spawnflags & SF_ENVEXPLOSION_NOFIREBALL))
{ {
MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin); MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin);
WRITE_BYTE(TE_EXPLOSION); WRITE_BYTE(TE_EXPLOSION);
WRITE_COORD(pev->origin.x); WRITE_COORD(pev->origin.x);
WRITE_COORD(pev->origin.y); WRITE_COORD(pev->origin.y);
WRITE_COORD(pev->origin.z); WRITE_COORD(pev->origin.z);
WRITE_SHORT(g_sModelIndexFireball); WRITE_SHORT(g_sModelIndexFireball);
WRITE_BYTE((byte)m_spriteScale); // scale * 10 WRITE_BYTE((byte)m_spriteScale); // scale * 10
WRITE_BYTE(15); // framerate WRITE_BYTE(15); // framerate
WRITE_BYTE(TE_EXPLFLAG_NONE); WRITE_BYTE(TE_EXPLFLAG_NONE);
MESSAGE_END(); MESSAGE_END();
} }
else else
{ {
MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin); MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin);
WRITE_BYTE(TE_EXPLOSION); WRITE_BYTE(TE_EXPLOSION);
WRITE_COORD(pev->origin.x); WRITE_COORD(pev->origin.x);
WRITE_COORD(pev->origin.y); WRITE_COORD(pev->origin.y);
WRITE_COORD(pev->origin.z); WRITE_COORD(pev->origin.z);
WRITE_SHORT(g_sModelIndexFireball); WRITE_SHORT(g_sModelIndexFireball);
WRITE_BYTE(0); // no sprite WRITE_BYTE(0); // no sprite
WRITE_BYTE(15); // framerate WRITE_BYTE(15); // framerate
WRITE_BYTE(TE_EXPLFLAG_NONE); WRITE_BYTE(TE_EXPLFLAG_NONE);
MESSAGE_END(); MESSAGE_END();
} }
// do damage // do damage
if (!(pev->spawnflags & SF_ENVEXPLOSION_NODAMAGE)) if (!(pev->spawnflags & SF_ENVEXPLOSION_NODAMAGE))
{ {
RadiusDamage(pev, pev, m_iMagnitude, CLASS_NONE, DMG_BLAST); RadiusDamage(pev, pev, m_iMagnitude, CLASS_NONE, DMG_BLAST);
} }
SetThink(&CEnvExplosion::Smoke); SetThink(&CEnvExplosion::Smoke);
pev->nextthink = gpGlobals->time + 0.3f; pev->nextthink = gpGlobals->time + 0.3f;
// draw sparks // draw sparks
if (!(pev->spawnflags & SF_ENVEXPLOSION_NOSPARKS)) if (!(pev->spawnflags & SF_ENVEXPLOSION_NOSPARKS))
{ {
int sparkCount = RANDOM_LONG(0, 3); int sparkCount = RANDOM_LONG(0, 3);
for (int i = 0; i < sparkCount; i++) for (int i = 0; i < sparkCount; i++)
{ {
Create("spark_shower", pev->origin, tr.vecPlaneNormal, NULL); Create("spark_shower", pev->origin, tr.vecPlaneNormal, NULL);
} }
} }
} }
/* <7f1e1> ../cstrike/dlls/explode.cpp:235 */ /* <7f1e1> ../cstrike/dlls/explode.cpp:235 */
void CEnvExplosion::Smoke(void) void CEnvExplosion::Smoke(void)
{ {
if (!(pev->spawnflags & SF_ENVEXPLOSION_NOSMOKE)) if (!(pev->spawnflags & SF_ENVEXPLOSION_NOSMOKE))
{ {
MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin); MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin);
WRITE_BYTE(TE_SMOKE); WRITE_BYTE(TE_SMOKE);
WRITE_COORD(pev->origin.x); WRITE_COORD(pev->origin.x);
WRITE_COORD(pev->origin.y); WRITE_COORD(pev->origin.y);
WRITE_COORD(pev->origin.z); WRITE_COORD(pev->origin.z);
WRITE_SHORT(g_sModelIndexSmoke); WRITE_SHORT(g_sModelIndexSmoke);
WRITE_BYTE((byte)m_spriteScale); // scale * 10 WRITE_BYTE((byte)m_spriteScale); // scale * 10
WRITE_BYTE(12); // framerate WRITE_BYTE(12); // framerate
MESSAGE_END(); MESSAGE_END();
} }
if (!(pev->spawnflags & SF_ENVEXPLOSION_REPEATABLE)) if (!(pev->spawnflags & SF_ENVEXPLOSION_REPEATABLE))
{ {
UTIL_Remove(this); UTIL_Remove(this);
} }
} }
// HACKHACK -- create one of these and fake a keyvalue to get the right explosion setup // HACKHACK -- create one of these and fake a keyvalue to get the right explosion setup
/* <7f7f4> ../cstrike/dlls/explode.cpp:258 */ /* <7f7f4> ../cstrike/dlls/explode.cpp:258 */
void ExplosionCreate(const Vector &center, Vector &angles, edict_t *pOwner, int magnitude, BOOL doDamage) void ExplosionCreate(const Vector &center, Vector &angles, edict_t *pOwner, int magnitude, BOOL doDamage)
{ {
KeyValueData kvd; KeyValueData kvd;
char buf[128]; char buf[128];
CBaseEntity *pExplosion = CBaseEntity::Create("env_explosion", center, angles, pOwner); CBaseEntity *pExplosion = CBaseEntity::Create("env_explosion", center, angles, pOwner);
Q_sprintf(buf, "%3d", magnitude); Q_sprintf(buf, "%3d", magnitude);
kvd.szKeyName = "iMagnitude"; kvd.szKeyName = "iMagnitude";
kvd.szValue = buf; kvd.szValue = buf;
pExplosion->KeyValue(&kvd); pExplosion->KeyValue(&kvd);
if (!doDamage) if (!doDamage)
{ {
pExplosion->pev->spawnflags |= SF_ENVEXPLOSION_NODAMAGE; pExplosion->pev->spawnflags |= SF_ENVEXPLOSION_NODAMAGE;
} }
pExplosion->Spawn(); pExplosion->Spawn();
pExplosion->Use(NULL, NULL, USE_TOGGLE, 0); pExplosion->Use(NULL, NULL, USE_TOGGLE, 0);
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void CShower::Spawn(void) void CShower::Spawn(void)
{ {
Spawn_(); Spawn_();
@ -260,30 +260,30 @@ void CShower::Touch(CBaseEntity *pOther)
{ {
Touch_(pOther); Touch_(pOther);
} }
void CEnvExplosion::Spawn(void)
{
Spawn_();
}
void CEnvExplosion::KeyValue(KeyValueData *pkvd) void CEnvExplosion::Spawn(void)
{ {
KeyValue_(pkvd); Spawn_();
} }
int CEnvExplosion::Save(CSave &save) void CEnvExplosion::KeyValue(KeyValueData *pkvd)
{ {
return Save_(save); KeyValue_(pkvd);
} }
int CEnvExplosion::Restore(CRestore &restore) int CEnvExplosion::Save(CSave &save)
{ {
return Restore_(restore); return Save_(save);
} }
void CEnvExplosion::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value) int CEnvExplosion::Restore(CRestore &restore)
{ {
Use_(pActivator, pCaller, useType, value); return Restore_(restore);
} }
#endif // HOOK_GAMEDLL void CEnvExplosion::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
{
Use_(pActivator, pCaller, useType, value);
}
#endif // HOOK_GAMEDLL

View File

@ -39,7 +39,7 @@
#define SF_ENVEXPLOSION_NODECAL (1<<4) // don't make a scorch mark #define SF_ENVEXPLOSION_NODECAL (1<<4) // don't make a scorch mark
#define SF_ENVEXPLOSION_NOSPARKS (1<<5) // don't make a scorch mark #define SF_ENVEXPLOSION_NOSPARKS (1<<5) // don't make a scorch mark
/* <7e4a8> ../cstrike/dlls/explode.cpp:29 */ /* <7e4a8> ../cstrike/dlls/explode.cpp:29 */
class CShower: public CBaseEntity class CShower: public CBaseEntity
{ {
public: public:
@ -59,9 +59,9 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <7e66b> ../cstrike/dlls/explode.cpp:84 */ /* <7e66b> ../cstrike/dlls/explode.cpp:84 */
class CEnvExplosion: public CBaseMonster class CEnvExplosion: public CBaseMonster
{ {
public: public:
@ -85,7 +85,7 @@ public:
void EXPORT Smoke(void); void EXPORT Smoke(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
public: public:
int m_iMagnitude; int m_iMagnitude;

View File

@ -32,11 +32,11 @@
#pragma once #pragma once
#endif #endif
//#pragma warning(disable:4244) // int or float down-conversion #pragma warning(disable:4244) // int or float down-conversion
//#pragma warning(disable:4305) // int or float data truncation #pragma warning(disable:4305) // int or float data truncation
//#pragma warning(disable:4201) // nameless struct/union #pragma warning(disable:4201) // nameless struct/union
//#pragma warning(disable:4514) // unreferenced inline function removed #pragma warning(disable:4514) // unreferenced inline function removed
//#pragma warning(disable:4100) // unreferenced formal parameter #pragma warning(disable:4100) // unreferenced formal parameter
#include "archtypes.h" #include "archtypes.h"

View File

@ -116,8 +116,8 @@ const char *(*CBreakable::ppSoundsGlass)[3];
char *(*CPushable::pm_soundNames)[3]; char *(*CPushable::pm_soundNames)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBreakable, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CBreakable, m_SaveData)[5];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CPushable, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CPushable, m_SaveData)[2];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -152,7 +152,7 @@ public:
static const char *pSoundsConcrete[3]; static const char *pSoundsConcrete[3];
static const char *pSpawnObjects[32]; static const char *pSpawnObjects[32];
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
public: public:
Materials m_Material; Materials m_Material;
@ -213,7 +213,7 @@ public:
} }
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
public: public:
static char *m_soundNames[3]; static char *m_soundNames[3];

View File

@ -57,9 +57,9 @@ static Vector gTankSpread[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTank, m_SaveData)[26]; TYPEDESCRIPTION IMPL_CLASS(CFuncTank, m_SaveData)[26];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTankLaser, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CFuncTankLaser, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTankControls, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CFuncTankControls, m_SaveData)[1];
Vector gTankSpread[5]; Vector gTankSpread[5];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -131,7 +131,7 @@ public:
void ControllerPostFrame(void); void ControllerPostFrame(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[26]; static TYPEDESCRIPTION IMPL(m_SaveData)[26];
protected: protected:
CBasePlayer *m_pController; CBasePlayer *m_pController;
@ -209,7 +209,7 @@ public:
CLaser *GetLaser(void); CLaser *GetLaser(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
private: private:
CLaser *m_pLaser; CLaser *m_pLaser;
@ -274,7 +274,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
public: public:
CFuncTank *m_pTank; CFuncTank *m_pTank;

View File

@ -404,7 +404,7 @@ cvar_t sk_scientist_heal3;
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
/* <9c900> ../cstrike/dlls/game.cpp:500 */ /* <9c900> ../cstrike/dlls/game.cpp:500 */
void GameDLLInit(void) void EXT_FUNC GameDLLInit(void)
{ {
g_psv_gravity = CVAR_GET_POINTER("sv_gravity"); g_psv_gravity = CVAR_GET_POINTER("sv_gravity");
g_psv_aim = CVAR_GET_POINTER("sv_aim"); g_psv_aim = CVAR_GET_POINTER("sv_aim");

View File

@ -46,90 +46,90 @@
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
#define g_psv_gravity (*pg_psv_gravity) #define g_psv_gravity (*pg_psv_gravity)
#define g_psv_aim (*pg_psv_aim) #define g_psv_aim (*pg_psv_aim)
#define g_footsteps (*pg_footsteps) #define g_footsteps (*pg_footsteps)
#define g_psv_accelerate (*pg_psv_accelerate) #define g_psv_accelerate (*pg_psv_accelerate)
#define g_psv_friction (*pg_psv_friction) #define g_psv_friction (*pg_psv_friction)
#define g_psv_stopspeed (*pg_psv_stopspeed) #define g_psv_stopspeed (*pg_psv_stopspeed)
#define displaysoundlist (*pdisplaysoundlist) #define displaysoundlist (*pdisplaysoundlist)
#define timelimit (*ptimelimit) #define timelimit (*ptimelimit)
#define flashlight (*pflashlight) #define flashlight (*pflashlight)
#define decalfrequency (*pdecalfrequency) #define decalfrequency (*pdecalfrequency)
#define fadetoblack (*pfadetoblack) #define fadetoblack (*pfadetoblack)
#define fragsleft (*pfragsleft) #define fragsleft (*pfragsleft)
#define timeleft (*ptimeleft) #define timeleft (*ptimeleft)
#define friendlyfire (*pfriendlyfire) #define friendlyfire (*pfriendlyfire)
#define allowmonsters (*pallowmonsters) #define allowmonsters (*pallowmonsters)
#define roundtime (*proundtime) #define roundtime (*proundtime)
#define buytime (*pbuytime) #define buytime (*pbuytime)
#define freezetime (*pfreezetime) #define freezetime (*pfreezetime)
#define c4timer (*pc4timer) #define c4timer (*pc4timer)
#define ghostfrequency (*pghostfrequency) #define ghostfrequency (*pghostfrequency)
#define autokick (*pautokick) #define autokick (*pautokick)
#define autokick_timeout (*pautokick_timeout) #define autokick_timeout (*pautokick_timeout)
#define restartround (*prestartround) #define restartround (*prestartround)
#define sv_restart (*psv_restart) #define sv_restart (*psv_restart)
#define limitteams (*plimitteams) #define limitteams (*plimitteams)
#define autoteambalance (*pautoteambalance) #define autoteambalance (*pautoteambalance)
#define tkpunish (*ptkpunish) #define tkpunish (*ptkpunish)
#define hostagepenalty (*phostagepenalty) #define hostagepenalty (*phostagepenalty)
#define mirrordamage (*pmirrordamage) #define mirrordamage (*pmirrordamage)
#define logmessages (*plogmessages) #define logmessages (*plogmessages)
#define forcecamera (*pforcecamera) #define forcecamera (*pforcecamera)
#define forcechasecam (*pforcechasecam) #define forcechasecam (*pforcechasecam)
#define mapvoteratio (*pmapvoteratio) #define mapvoteratio (*pmapvoteratio)
#define logdetail (*plogdetail) #define logdetail (*plogdetail)
#define startmoney (*pstartmoney) #define startmoney (*pstartmoney)
#define maxrounds (*pmaxrounds) #define maxrounds (*pmaxrounds)
#define winlimit (*pwinlimit) #define winlimit (*pwinlimit)
#define windifference (*pwindifference) #define windifference (*pwindifference)
#define playerid (*pplayerid) #define playerid (*pplayerid)
#define allow_spectators (*pallow_spectators) #define allow_spectators (*pallow_spectators)
#define mp_chattime (*pmp_chattime) #define mp_chattime (*pmp_chattime)
#define kick_percent (*pkick_percent) #define kick_percent (*pkick_percent)
#define humans_join_team (*phumans_join_team) #define humans_join_team (*phumans_join_team)
#define sk_plr_9mm_bullet1 (*psk_plr_9mm_bullet1) #define sk_plr_9mm_bullet1 (*psk_plr_9mm_bullet1)
#define sk_plr_9mm_bullet2 (*psk_plr_9mm_bullet2) #define sk_plr_9mm_bullet2 (*psk_plr_9mm_bullet2)
#define sk_plr_9mm_bullet3 (*psk_plr_9mm_bullet3) #define sk_plr_9mm_bullet3 (*psk_plr_9mm_bullet3)
#define sk_plr_357_bullet1 (*psk_plr_357_bullet1) #define sk_plr_357_bullet1 (*psk_plr_357_bullet1)
#define sk_plr_357_bullet2 (*psk_plr_357_bullet2) #define sk_plr_357_bullet2 (*psk_plr_357_bullet2)
#define sk_plr_357_bullet3 (*psk_plr_357_bullet3) #define sk_plr_357_bullet3 (*psk_plr_357_bullet3)
#define sk_plr_9mmAR_bullet1 (*psk_plr_9mmAR_bullet1) #define sk_plr_9mmAR_bullet1 (*psk_plr_9mmAR_bullet1)
#define sk_plr_9mmAR_bullet2 (*psk_plr_9mmAR_bullet2) #define sk_plr_9mmAR_bullet2 (*psk_plr_9mmAR_bullet2)
#define sk_plr_9mmAR_bullet3 (*psk_plr_9mmAR_bullet3) #define sk_plr_9mmAR_bullet3 (*psk_plr_9mmAR_bullet3)
#define sk_plr_9mmAR_grenade1 (*psk_plr_9mmAR_grenade1) #define sk_plr_9mmAR_grenade1 (*psk_plr_9mmAR_grenade1)
#define sk_plr_9mmAR_grenade2 (*psk_plr_9mmAR_grenade2) #define sk_plr_9mmAR_grenade2 (*psk_plr_9mmAR_grenade2)
#define sk_plr_9mmAR_grenade3 (*psk_plr_9mmAR_grenade3) #define sk_plr_9mmAR_grenade3 (*psk_plr_9mmAR_grenade3)
#define sk_plr_buckshot1 (*psk_plr_buckshot1) #define sk_plr_buckshot1 (*psk_plr_buckshot1)
#define sk_plr_buckshot2 (*psk_plr_buckshot2) #define sk_plr_buckshot2 (*psk_plr_buckshot2)
#define sk_plr_buckshot3 (*psk_plr_buckshot3) #define sk_plr_buckshot3 (*psk_plr_buckshot3)
#define sk_plr_rpg1 (*psk_plr_rpg1) #define sk_plr_rpg1 (*psk_plr_rpg1)
#define sk_plr_rpg2 (*psk_plr_rpg2) #define sk_plr_rpg2 (*psk_plr_rpg2)
#define sk_plr_rpg3 (*psk_plr_rpg3) #define sk_plr_rpg3 (*psk_plr_rpg3)
#define sk_12mm_bullet1 (*psk_12mm_bullet1) #define sk_12mm_bullet1 (*psk_12mm_bullet1)
#define sk_12mm_bullet2 (*psk_12mm_bullet2) #define sk_12mm_bullet2 (*psk_12mm_bullet2)
#define sk_12mm_bullet3 (*psk_12mm_bullet3) #define sk_12mm_bullet3 (*psk_12mm_bullet3)
#define sk_9mmAR_bullet1 (*psk_9mmAR_bullet1) #define sk_9mmAR_bullet1 (*psk_9mmAR_bullet1)
#define sk_9mmAR_bullet2 (*psk_9mmAR_bullet2) #define sk_9mmAR_bullet2 (*psk_9mmAR_bullet2)
#define sk_9mmAR_bullet3 (*psk_9mmAR_bullet3) #define sk_9mmAR_bullet3 (*psk_9mmAR_bullet3)
#define sk_9mm_bullet1 (*psk_9mm_bullet1) #define sk_9mm_bullet1 (*psk_9mm_bullet1)
#define sk_9mm_bullet2 (*psk_9mm_bullet2) #define sk_9mm_bullet2 (*psk_9mm_bullet2)
#define sk_9mm_bullet3 (*psk_9mm_bullet3) #define sk_9mm_bullet3 (*psk_9mm_bullet3)
#define sk_suitcharger1 (*psk_suitcharger1) #define sk_suitcharger1 (*psk_suitcharger1)
#define sk_suitcharger2 (*psk_suitcharger2) #define sk_suitcharger2 (*psk_suitcharger2)
#define sk_suitcharger3 (*psk_suitcharger3) #define sk_suitcharger3 (*psk_suitcharger3)
#define sk_battery1 (*psk_battery1) #define sk_battery1 (*psk_battery1)
#define sk_battery2 (*psk_battery2) #define sk_battery2 (*psk_battery2)
#define sk_battery3 (*psk_battery3) #define sk_battery3 (*psk_battery3)
#define sk_healthcharger1 (*psk_healthcharger1) #define sk_healthcharger1 (*psk_healthcharger1)
#define sk_healthcharger2 (*psk_healthcharger2) #define sk_healthcharger2 (*psk_healthcharger2)
#define sk_healthcharger3 (*psk_healthcharger3) #define sk_healthcharger3 (*psk_healthcharger3)
#define sk_healthkit1 (*psk_healthkit1) #define sk_healthkit1 (*psk_healthkit1)
#define sk_healthkit2 (*psk_healthkit2) #define sk_healthkit2 (*psk_healthkit2)
#define sk_healthkit3 (*psk_healthkit3) #define sk_healthkit3 (*psk_healthkit3)
#define sk_scientist_heal1 (*psk_scientist_heal1) #define sk_scientist_heal1 (*psk_scientist_heal1)
#define sk_scientist_heal2 (*psk_scientist_heal2) #define sk_scientist_heal2 (*psk_scientist_heal2)
#define sk_scientist_heal3 (*psk_scientist_heal3) #define sk_scientist_heal3 (*psk_scientist_heal3)
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -26,7 +26,7 @@ TYPEDESCRIPTION CGrenade::m_SaveData[] =
#else // HOOK_GAMEDLL #else // HOOK_GAMEDLL
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGrenade, m_SaveData)[15]; TYPEDESCRIPTION IMPL_CLASS(CGrenade, m_SaveData)[15];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -16,7 +16,7 @@ TYPEDESCRIPTION CRecharge::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CRecharge, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CRecharge, m_SaveData)[5];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -66,8 +66,8 @@ void CRecharge::__MAKE_VHOOK(Spawn)(void)
/* <c6122> ../cstrike/dlls/h_battery.cpp:99 */ /* <c6122> ../cstrike/dlls/h_battery.cpp:99 */
void CRecharge::__MAKE_VHOOK(Precache)(void) void CRecharge::__MAKE_VHOOK(Precache)(void)
{ {
PRECACHE_SOUND("items/suitcharge1.wav"); PRECACHE_SOUND("items/suitcharge1.wav");
PRECACHE_SOUND("items/suitchargeno1.wav"); PRECACHE_SOUND("items/suitchargeno1.wav");
PRECACHE_SOUND("items/suitchargeok1.wav"); PRECACHE_SOUND("items/suitchargeok1.wav");
} }
@ -145,26 +145,26 @@ void CRecharge::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller,
/* <c6149> ../cstrike/dlls/h_battery.cpp:178 */ /* <c6149> ../cstrike/dlls/h_battery.cpp:178 */
void CRecharge::Recharge(void) void CRecharge::Recharge(void)
{ {
m_iJuice = gSkillData.suitchargerCapacity; m_iJuice = gSkillData.suitchargerCapacity;
pev->frame = 0; pev->frame = 0;
SetThink(&CRecharge::SUB_DoNothing); SetThink(&CRecharge::SUB_DoNothing);
} }
/* <c622e> ../cstrike/dlls/h_battery.cpp:185 */ /* <c622e> ../cstrike/dlls/h_battery.cpp:185 */
void CRecharge::Off(void) void CRecharge::Off(void)
{ {
// Stop looping sound. // Stop looping sound.
if (m_iOn > 1) if (m_iOn > 1)
STOP_SOUND(ENT(pev), CHAN_STATIC, "items/suitcharge1.wav"); STOP_SOUND(ENT(pev), CHAN_STATIC, "items/suitcharge1.wav");
m_iOn = 0; m_iOn = 0;
if (!m_iJuice && (m_iReactivate = g_pGameRules->FlHEVChargerRechargeTime()) > 0) if (!m_iJuice && (m_iReactivate = g_pGameRules->FlHEVChargerRechargeTime()) > 0)
{ {
pev->nextthink = pev->ltime + m_iReactivate; pev->nextthink = pev->ltime + m_iReactivate;
SetThink(&CRecharge::Recharge); SetThink(&CRecharge::Recharge);
} }
else else
SetThink(&CRecharge::SUB_DoNothing); SetThink(&CRecharge::SUB_DoNothing);
} }

View File

@ -62,7 +62,7 @@ public:
void EXPORT Recharge(void); void EXPORT Recharge(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
float m_flNextCharge; float m_flNextCharge;
int m_iReactivate; int m_iReactivate;

View File

@ -24,9 +24,9 @@ TYPEDESCRIPTION CWreckage::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CCycler, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CCycler, m_SaveData)[1];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CCyclerSprite, m_SaveData)[3]; TYPEDESCRIPTION IMPL_CLASS(CCyclerSprite, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CWreckage, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CWreckage, m_SaveData)[1];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -31,7 +31,7 @@
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
/* <cb93c> ../cstrike/dlls/h_cycler.cpp:35 */ /* <cb93c> ../cstrike/dlls/h_cycler.cpp:35 */
class CCycler: public CBaseMonster class CCycler: public CBaseMonster
{ {
@ -68,14 +68,14 @@ public:
void GenericCyclerSpawn(char *szModel, Vector vecMin, Vector vecMax); void GenericCyclerSpawn(char *szModel, Vector vecMin, Vector vecMax);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
int m_animate; int m_animate;
};/* size: 408, cachelines: 7, members: 3 */ };/* size: 408, cachelines: 7, members: 3 */
// we should get rid of all the other cyclers and replace them with this. // we should get rid of all the other cyclers and replace them with this.
/* <cb9b2> ../cstrike/dlls/h_cycler.cpp:67 */ /* <cb9b2> ../cstrike/dlls/h_cycler.cpp:67 */
class CGenericCycler: public CCycler class CGenericCycler: public CCycler
{ {
@ -88,10 +88,10 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 408, cachelines: 7, members: 1 */ };/* size: 408, cachelines: 7, members: 1 */
// Probe droid imported for tech demo compatibility // Probe droid imported for tech demo compatibility
/* <cba04> ../cstrike/dlls/h_cycler.cpp:80 */ /* <cba04> ../cstrike/dlls/h_cycler.cpp:80 */
class CCyclerProbe: public CCycler class CCyclerProbe: public CCycler
{ {
@ -104,8 +104,8 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
};/* size: 408, cachelines: 7, members: 1 */ };/* size: 408, cachelines: 7, members: 1 */
/* <cba56> ../cstrike/dlls/h_cycler.cpp:218 */ /* <cba56> ../cstrike/dlls/h_cycler.cpp:218 */
class CCyclerSprite: public CBaseEntity class CCyclerSprite: public CBaseEntity
{ {
@ -142,7 +142,7 @@ public:
} }
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3]; static TYPEDESCRIPTION IMPL(m_SaveData)[3];
int m_animate; int m_animate;
float m_lastTime; float m_lastTime;
@ -154,7 +154,7 @@ public:
};/* size: 188, cachelines: 3, members: 9 */ };/* size: 188, cachelines: 3, members: 9 */
/* <cbbc0> ../cstrike/dlls/h_cycler.cpp:344 */ /* <cbbc0> ../cstrike/dlls/h_cycler.cpp:344 */
class CWeaponCycler: public CBasePlayerWeapon class CWeaponCycler: public CBasePlayerWeapon
{ {
@ -188,9 +188,9 @@ public:
int m_iModel; int m_iModel;
};/* size: 344, cachelines: 6, members: 3 */ };/* size: 344, cachelines: 6, members: 3 */
// Flaming Wreakage // Flaming Wreakage
/* <cbc13> ../cstrike/dlls/h_cycler.cpp:427 */ /* <cbc13> ../cstrike/dlls/h_cycler.cpp:427 */
class CWreckage: public CBaseMonster class CWreckage: public CBaseMonster
{ {
@ -212,7 +212,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
int m_flStartTime; int m_flStartTime;
@ -221,10 +221,10 @@ public:
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
// linked objects // linked objects
C_DLLEXPORT void cycler(entvars_t *pev); C_DLLEXPORT void cycler(entvars_t *pev);
C_DLLEXPORT void cycler_prdroid(entvars_t *pev); C_DLLEXPORT void cycler_prdroid(entvars_t *pev);
C_DLLEXPORT void cycler_sprite(entvars_t *pev); C_DLLEXPORT void cycler_sprite(entvars_t *pev);
C_DLLEXPORT void cycler_weapon(entvars_t *pev); C_DLLEXPORT void cycler_weapon(entvars_t *pev);
C_DLLEXPORT void cycler_wreckage(entvars_t *pev); C_DLLEXPORT void cycler_wreckage(entvars_t *pev);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -9,7 +9,7 @@ globalvars_t *gpGlobals;
// do some setup operations here. // do some setup operations here.
/* <d0737> ../cstrike/dlls/h_export.cpp:58 */ /* <d0737> ../cstrike/dlls/h_export.cpp:58 */
C_DLLEXPORT void WINAPI GiveFnptrsToDll(enginefuncs_t *pEnginefuncsTable,globalvars_t *pGlobals) C_DLLEXPORT void WINAPI GiveFnptrsToDll(enginefuncs_t *pEnginefuncsTable, globalvars_t *pGlobals)
{ {
Q_memcpy(&g_engfuncs, pEnginefuncsTable, sizeof(enginefuncs_t)); Q_memcpy(&g_engfuncs, pEnginefuncsTable, sizeof(enginefuncs_t));
gpGlobals = pGlobals; gpGlobals = pGlobals;

View File

@ -44,7 +44,7 @@ extern globalvars_t *gpGlobals;
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
C_DLLEXPORT void WINAPI GiveFnptrsToDll(enginefuncs_t *pEnginefuncsTable,globalvars_t *pGlobals); C_DLLEXPORT void WINAPI GiveFnptrsToDll(enginefuncs_t *pEnginefuncsTable, globalvars_t *pGlobals);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -16,7 +16,7 @@ TYPEDESCRIPTION CWallHealth::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CWallHealth, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CWallHealth, m_SaveData)[5];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -32,7 +32,7 @@
#pragma once #pragma once
#endif #endif
/* <d521a> ../cstrike/dlls/healthkit.cpp:27 */ /* <d521a> ../cstrike/dlls/healthkit.cpp:27 */
class CHealthKit: public CItem class CHealthKit: public CItem
{ {
public: public:
@ -50,7 +50,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <d5342> ../cstrike/dlls/healthkit.cpp:99 */ /* <d5342> ../cstrike/dlls/healthkit.cpp:99 */
class CWallHealth: public CBaseToggle class CWallHealth: public CBaseToggle
{ {
public: public:
@ -80,7 +80,7 @@ public:
void EXPORT Off(void); void EXPORT Off(void);
void EXPORT Recharge(void); void EXPORT Recharge(void);
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
public: public:
float m_flNextCharge; float m_flNextCharge;

View File

@ -139,7 +139,7 @@ void CHostage::__MAKE_VHOOK(Precache)(void)
default: default:
break; break;
} }
m_whichModel = static_cast<ModelType>(which); m_whichModel = static_cast<ModelType>(which);
if (++which > 3) if (++which > 3)
@ -191,199 +191,199 @@ void CHostage::SetActivity(int act)
/* <45f194> ../cstrike/dlls/hostage/hostage.cpp:204 */ /* <45f194> ../cstrike/dlls/hostage/hostage.cpp:204 */
void CHostage::IdleThink(void) void CHostage::IdleThink(void)
{ {
float flInterval; float flInterval;
const float upkeepRate = 0.3f; const float upkeepRate = 0.3f;
const float giveUpTime = (1 / 30.0f); const float giveUpTime = (1 / 30.0f);
float const updateRate = 0.1f; float const updateRate = 0.1f;
if (!TheNavAreaList.empty()) if (!TheNavAreaList.empty())
{ {
if (!m_improv) if (!m_improv)
{ {
m_improv = new CHostageImprov(this); m_improv = new CHostageImprov(this);
#if defined(HOOK_GAMEDLL) && defined(_WIN32) && !defined(REGAMEDLL_UNIT_TESTS) #if defined(HOOK_GAMEDLL) && defined(_WIN32) && !defined(REGAMEDLL_UNIT_TESTS)
VirtualTableInit((void *)m_improv, "CHostageImprov"); VirtualTableInit((void *)m_improv, "CHostageImprov");
#endif // HOOK_GAMEDLL && _WIN32 && !REGAMEDLL_UNIT_TESTS #endif // HOOK_GAMEDLL && _WIN32 && !REGAMEDLL_UNIT_TESTS
} }
} }
else else
{ {
if (m_improv != NULL) if (m_improv != NULL)
{ {
delete m_improv; delete m_improv;
} }
m_improv = NULL; m_improv = NULL;
} }
pev->nextthink = gpGlobals->time + giveUpTime; pev->nextthink = gpGlobals->time + giveUpTime;
flInterval = StudioFrameAdvance(0); flInterval = StudioFrameAdvance(0);
DispatchAnimEvents(flInterval); DispatchAnimEvents(flInterval);
if (m_improv != NULL) if (m_improv != NULL)
{ {
m_improv->OnUpkeep(upkeepRate); m_improv->OnUpkeep(upkeepRate);
} }
if (m_flNextFullThink > gpGlobals->time) if (m_flNextFullThink > gpGlobals->time)
{ {
return; return;
} }
m_flNextFullThink = gpGlobals->time + 0.1; m_flNextFullThink = gpGlobals->time + 0.1;
if (pev->deadflag == DEAD_DEAD) if (pev->deadflag == DEAD_DEAD)
{ {
UTIL_SetSize(pev, Vector(0, 0, 0), Vector(0, 0, 0)); UTIL_SetSize(pev, Vector(0, 0, 0), Vector(0, 0, 0));
return; return;
} }
if (m_hTargetEnt != NULL && (m_bStuck && gpGlobals->time - m_flStuckTime > 5.0 || m_hTargetEnt->pev->deadflag != DEAD_NO)) if (m_hTargetEnt != NULL && (m_bStuck && gpGlobals->time - m_flStuckTime > 5.0 || m_hTargetEnt->pev->deadflag != DEAD_NO))
{ {
m_State = STAND; m_State = STAND;
m_hTargetEnt = NULL; m_hTargetEnt = NULL;
m_bStuck = FALSE; m_bStuck = FALSE;
} }
if (m_hTargetEnt != NULL || m_improv != NULL) if (m_hTargetEnt != NULL || m_improv != NULL)
{ {
CBasePlayer *player = NULL; CBasePlayer *player = NULL;
if (m_improv != NULL) if (m_improv != NULL)
{ {
if (IsFollowingSomeone()) if (IsFollowingSomeone())
{ {
player = (CBasePlayer *)m_improv->GetFollowLeader(); player = (CBasePlayer *)m_improv->GetFollowLeader();
} }
} }
else else
{ {
player = GetClassPtr((CBasePlayer *)m_hTargetEnt->pev); player = GetClassPtr((CBasePlayer *)m_hTargetEnt->pev);
} }
if (!player || player->m_iTeam == CT) if (!player || player->m_iTeam == CT)
{ {
if (!g_pGameRules->m_bMapHasRescueZone) if (!g_pGameRules->m_bMapHasRescueZone)
{ {
BOOL bContinue = FALSE; BOOL bContinue = FALSE;
BOOL bResHostagePt = FALSE; BOOL bResHostagePt = FALSE;
if (UTIL_FindEntityByClassname(NULL, "info_hostage_rescue")) if (UTIL_FindEntityByClassname(NULL, "info_hostage_rescue"))
bResHostagePt = TRUE; bResHostagePt = TRUE;
CBaseEntity *pSpot = NULL; CBaseEntity *pSpot = NULL;
while ((pSpot = UTIL_FindEntityByClassname(pSpot, "info_hostage_rescue")) != NULL) while ((pSpot = UTIL_FindEntityByClassname(pSpot, "info_hostage_rescue")) != NULL)
{ {
if ((pSpot->pev->origin - pev->origin).Length() < 256) if ((pSpot->pev->origin - pev->origin).Length() < 256)
{ {
m_bRescueMe = TRUE; m_bRescueMe = TRUE;
break; break;
} }
} }
if (!bResHostagePt) if (!bResHostagePt)
{ {
pSpot = NULL; pSpot = NULL;
while ((pSpot = UTIL_FindEntityByClassname(pSpot, "info_player_start")) != NULL) while ((pSpot = UTIL_FindEntityByClassname(pSpot, "info_player_start")) != NULL)
{ {
if ((pSpot->pev->origin - pev->origin).Length() < 256) if ((pSpot->pev->origin - pev->origin).Length() < 256)
{ {
m_bRescueMe = TRUE; m_bRescueMe = TRUE;
break; break;
} }
} }
} }
} }
if (m_bRescueMe) if (m_bRescueMe)
{ {
if (TheBots != NULL) if (TheBots != NULL)
{ {
TheBots->OnEvent(EVENT_HOSTAGE_RESCUED, player, this); TheBots->OnEvent(EVENT_HOSTAGE_RESCUED, player, this);
} }
if (TheCareerTasks != NULL && g_pGameRules->IsCareer() && player != NULL && !player->IsBot()) if (TheCareerTasks != NULL && g_pGameRules->IsCareer() && player != NULL && !player->IsBot())
{ {
TheCareerTasks->HandleEvent(EVENT_HOSTAGE_RESCUED, player); TheCareerTasks->HandleEvent(EVENT_HOSTAGE_RESCUED, player);
} }
pev->deadflag = DEAD_RESPAWNABLE; pev->deadflag = DEAD_RESPAWNABLE;
if (player != NULL) if (player != NULL)
{ {
player->AddAccount(1000); player->AddAccount(1000);
UTIL_LogPrintf("\"%s<%i><%s><CT>\" triggered \"Rescued_A_Hostage\"\n", STRING(player->pev->netname), UTIL_LogPrintf("\"%s<%i><%s><CT>\" triggered \"Rescued_A_Hostage\"\n", STRING(player->pev->netname),
GETPLAYERUSERID(player->edict()), GETPLAYERAUTHID(player->edict())); GETPLAYERUSERID(player->edict()), GETPLAYERAUTHID(player->edict()));
} }
SendHostageEventMsg(); SendHostageEventMsg();
MESSAGE_BEGIN(MSG_SPEC, SVC_DIRECTOR); MESSAGE_BEGIN(MSG_SPEC, SVC_DIRECTOR);
WRITE_BYTE(9); WRITE_BYTE(9);
WRITE_BYTE(DRC_CMD_EVENT); WRITE_BYTE(DRC_CMD_EVENT);
WRITE_SHORT((player != NULL) ? player->entindex() : 0); WRITE_SHORT((player != NULL) ? player->entindex() : 0);
WRITE_SHORT(player->entindex()); WRITE_SHORT(player->entindex());
WRITE_LONG(15); WRITE_LONG(15);
MESSAGE_END(); MESSAGE_END();
pev->effects |= EF_NODRAW; pev->effects |= EF_NODRAW;
Remove(); Remove();
g_pGameRules->m_iHostagesRescued++; g_pGameRules->m_iHostagesRescued++;
g_pGameRules->CheckWinConditions(); g_pGameRules->CheckWinConditions();
Broadcast((player != NULL) ? "rescued" : "escaped"); Broadcast((player != NULL) ? "rescued" : "escaped");
} }
} }
} }
if (m_improv != NULL) if (m_improv != NULL)
{ {
m_improv->OnUpdate(updateRate); m_improv->OnUpdate(updateRate);
} }
else else
{ {
DoFollow(); DoFollow();
if (gpGlobals->time >= m_flFlinchTime) if (gpGlobals->time >= m_flFlinchTime)
{ {
if (pev->velocity.Length() > 160) if (pev->velocity.Length() > 160)
{ {
SetActivity(ACT_RUN); SetActivity(ACT_RUN);
} }
else if (pev->velocity.Length() > 15) else if (pev->velocity.Length() > 15)
{ {
SetActivity(ACT_WALK); SetActivity(ACT_WALK);
} }
else else
{ {
SetActivity(ACT_IDLE); SetActivity(ACT_IDLE);
} }
} }
} }
if (pev->deadflag != DEAD_DEAD && !(pev->effects & EF_NODRAW)) if (pev->deadflag != DEAD_DEAD && !(pev->effects & EF_NODRAW))
{ {
if (m_flNextRadarTime <= gpGlobals->time) if (m_flNextRadarTime <= gpGlobals->time)
{ {
Vector vDistance = m_vOldPos - pev->origin; Vector vDistance = m_vOldPos - pev->origin;
if (vDistance.Length() > 1) if (vDistance.Length() > 1)
{ {
m_vOldPos = pev->origin; m_vOldPos = pev->origin;
if (!g_pGameRules->m_fTeamCount) if (!g_pGameRules->m_fTeamCount)
{ {
SendHostagePositionMsg(); SendHostagePositionMsg();
} }
} }
m_flNextRadarTime = gpGlobals->time + 1; m_flNextRadarTime = gpGlobals->time + 1;
} }
} }
} }
@ -614,12 +614,12 @@ void CHostage::SetDeathActivity(void)
case HITGROUP_RIGHTLEG: case HITGROUP_RIGHTLEG:
SetActivity(ACT_DIESIMPLE); SetActivity(ACT_DIESIMPLE);
break; break;
case HITGROUP_HEAD: case HITGROUP_HEAD:
SetActivity(ACT_DIE_HEADSHOT); SetActivity(ACT_DIE_HEADSHOT);
break; break;
case HITGROUP_CHEST: case HITGROUP_CHEST:
SetActivity(ACT_DIE_CHESTSHOT); SetActivity(ACT_DIE_CHESTSHOT);
break; break;
case HITGROUP_STOMACH: case HITGROUP_STOMACH:
SetActivity(ACT_DIE_GUTSHOT); SetActivity(ACT_DIE_GUTSHOT);
break; break;
@ -654,7 +654,7 @@ void CHostage::SetDeathActivity(void)
void CHostage::AnnounceDeath(CBasePlayer *pAttacker) void CHostage::AnnounceDeath(CBasePlayer *pAttacker)
{ {
ClientPrint(pAttacker->pev, HUD_PRINTCENTER, "#Killed_Hostage"); ClientPrint(pAttacker->pev, HUD_PRINTCENTER, "#Killed_Hostage");
if (!(pAttacker->m_flDisplayHistory & DHF_HOSTAGE_KILLED)) if (!(pAttacker->m_flDisplayHistory & DHF_HOSTAGE_KILLED))
{ {
pAttacker->HintMessage("#Hint_lost_money"); pAttacker->HintMessage("#Hint_lost_money");
@ -713,7 +713,7 @@ void CHostage::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller,
return; return;
CBasePlayer *pPlayer = (CBasePlayer *)pActivator; CBasePlayer *pPlayer = (CBasePlayer *)pActivator;
if (pPlayer->m_iTeam != CT) if (pPlayer->m_iTeam != CT)
{ {
if (!(pPlayer->m_flDisplayHistory & DHF_HOSTAGE_CTMOVE)) if (!(pPlayer->m_flDisplayHistory & DHF_HOSTAGE_CTMOVE))
@ -810,7 +810,7 @@ void CHostage::GiveCTTouchBonus(CBasePlayer *pPlayer)
/* <45bf69> ../cstrike/dlls/hostage/hostage.cpp:869 */ /* <45bf69> ../cstrike/dlls/hostage/hostage.cpp:869 */
int CHostage::__MAKE_VHOOK(ObjectCaps)(void) int CHostage::__MAKE_VHOOK(ObjectCaps)(void)
{ {
return CBaseMonster::ObjectCaps() | FCAP_MUST_SPAWN | FCAP_ONOFF_USE; return (CBaseMonster::ObjectCaps() | FCAP_MUST_SPAWN | FCAP_ONOFF_USE);
} }
/* <45c0e3> ../cstrike/dlls/hostage/hostage.cpp:876 */ /* <45c0e3> ../cstrike/dlls/hostage/hostage.cpp:876 */
@ -856,104 +856,104 @@ void CHostage::DoFollow(void)
{ {
CBaseEntity *pFollowing; CBaseEntity *pFollowing;
Vector vecDest; Vector vecDest;
float flRadius = 0; float flRadius = 0;
float flDistToDest; float flDistToDest;
if (m_hTargetEnt == NULL) if (m_hTargetEnt == NULL)
return; return;
if (cv_hostage_stop.value > 0.0) if (cv_hostage_stop.value > 0.0)
{ {
m_State = STAND; m_State = STAND;
m_hTargetEnt = NULL; m_hTargetEnt = NULL;
m_hStoppedTargetEnt = NULL; m_hStoppedTargetEnt = NULL;
return; return;
} }
pFollowing = GetClassPtr((CBaseEntity *)m_hTargetEnt->pev); pFollowing = GetClassPtr((CBaseEntity *)m_hTargetEnt->pev);
m_LocalNav->SetTargetEnt(pFollowing); m_LocalNav->SetTargetEnt(pFollowing);
vecDest = pFollowing->pev->origin; vecDest = pFollowing->pev->origin;
vecDest.z += pFollowing->pev->mins.z; vecDest.z += pFollowing->pev->mins.z;
flDistToDest = (vecDest - pev->origin).Length(); flDistToDest = (vecDest - pev->origin).Length();
if (flDistToDest < 80 && (m_fHasPath || m_LocalNav->PathTraversable(pev->origin, vecDest, TRUE))) if (flDistToDest < 80 && (m_fHasPath || m_LocalNav->PathTraversable(pev->origin, vecDest, TRUE)))
return; return;
if (pev->flags & FL_ONGROUND) if (pev->flags & FL_ONGROUND)
{ {
if (m_flPathCheckInterval + m_flLastPathCheck < gpGlobals->time) if (m_flPathCheckInterval + m_flLastPathCheck < gpGlobals->time)
{ {
if (!m_fHasPath || pFollowing->pev->velocity.Length2D() > 1) if (!m_fHasPath || pFollowing->pev->velocity.Length2D() > 1)
{ {
m_flLastPathCheck = gpGlobals->time; m_flLastPathCheck = gpGlobals->time;
m_LocalNav->RequestNav(this); m_LocalNav->RequestNav(this);
} }
} }
} }
if (m_fHasPath) if (m_fHasPath)
{ {
nTargetNode = m_LocalNav->GetFurthestTraversableNode(pev->origin, vecNodes, m_nPathNodes, TRUE); nTargetNode = m_LocalNav->GetFurthestTraversableNode(pev->origin, vecNodes, m_nPathNodes, TRUE);
if (!nTargetNode) if (!nTargetNode)
{ {
if ((vecNodes[nTargetNode] - pev->origin).Length2D() < HOSTAGE_STEPSIZE) if ((vecNodes[nTargetNode] - pev->origin).Length2D() < HOSTAGE_STEPSIZE)
nTargetNode = -1; nTargetNode = -1;
} }
if (nTargetNode == -1) if (nTargetNode == -1)
{ {
m_fHasPath = FALSE; m_fHasPath = FALSE;
m_flPathCheckInterval = 0.1f; m_flPathCheckInterval = 0.1f;
} }
} }
if (gpGlobals->time < m_flFlinchTime) if (gpGlobals->time < m_flFlinchTime)
return; return;
if (nTargetNode != -1) if (nTargetNode != -1)
{ {
if (pev->flags & FL_ONGROUND) if (pev->flags & FL_ONGROUND)
PointAt(vecNodes[nTargetNode]); PointAt(vecNodes[nTargetNode]);
if (pev->movetype == MOVETYPE_FLY) if (pev->movetype == MOVETYPE_FLY)
pev->v_angle.x = -60; pev->v_angle.x = -60;
MoveToward(vecNodes[nTargetNode]); MoveToward(vecNodes[nTargetNode]);
m_bStuck = FALSE; m_bStuck = FALSE;
} }
else if (pev->takedamage == DAMAGE_YES) else if (pev->takedamage == DAMAGE_YES)
{ {
if (m_improv != NULL) if (m_improv != NULL)
{ {
if (IsFollowingSomeone()) if (IsFollowingSomeone())
{ {
if (!m_bStuck && flDistToDest > 200) if (!m_bStuck && flDistToDest > 200)
{ {
m_bStuck = TRUE; m_bStuck = TRUE;
m_flStuckTime = gpGlobals->time; m_flStuckTime = gpGlobals->time;
} }
} }
} }
else if (m_hTargetEnt != NULL && m_State == FOLLOW) else if (m_hTargetEnt != NULL && m_State == FOLLOW)
{ {
if (!m_bStuck && flDistToDest > 200) if (!m_bStuck && flDistToDest > 200)
{ {
m_bStuck = TRUE; m_bStuck = TRUE;
m_flStuckTime = gpGlobals->time; m_flStuckTime = gpGlobals->time;
} }
} }
} }
if (pev->flags & FL_ONGROUND) if (pev->flags & FL_ONGROUND)
{ {
if (m_flPathAcquired != -1 && m_flPathAcquired + 2 > gpGlobals->time) if (m_flPathAcquired != -1 && m_flPathAcquired + 2 > gpGlobals->time)
{ {
if (pev->velocity.Length2D() < 1 || nTargetNode == -1) if (pev->velocity.Length2D() < 1 || nTargetNode == -1)
{ {
Wiggle(); Wiggle();
} }
} }
} }
} }
@ -1621,7 +1621,7 @@ char *SimpleChatter::GetSound(HostageChatterType type, float *duration)
/* <45ea1b> ../cstrike/dlls/hostage/hostage.cpp:1818 */ /* <45ea1b> ../cstrike/dlls/hostage/hostage.cpp:1818 */
float SimpleChatter::PlaySound(CBaseEntity *entity, HostageChatterType type) float SimpleChatter::PlaySound(CBaseEntity *entity, HostageChatterType type)
{ {
CHostage *hostage; CHostage *hostage;
float duration; float duration;
char *sound; char *sound;

View File

@ -320,24 +320,20 @@ public:
} }
template<typename T> template<typename T>
bool ForEachHostage(T &func) bool ForEachHostage(T &func) const
{ {
UNTESTED
for (int i = 0; i < m_hostageCount; i++) for (int i = 0; i < m_hostageCount; i++)
{ {
CHostage *pHostage = m_hostage[ i ]; CHostage *pHostage = m_hostage[ i ];
if (pHostage->deadflag != DEAD_NO || pHostage->takedamage != DAMAGE_YES) if (pHostage->pev->deadflag == DEAD_DEAD)
continue; continue;
if (!pHostage->m_improv) if (func(pHostage) == false)
break; return false;
if (func(pHostage))
return true;
} }
return false;
return true;
} }
private: private:

View File

@ -29,30 +29,30 @@ int (*CLocalNav::ptot_hostages);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
/* <485b67> ../cstrike/dlls/hostage/hostage_localnav.cpp:45 */ /* <485b67> ../cstrike/dlls/hostage/hostage_localnav.cpp:45 */
CLocalNav::CLocalNav(CHostage *pOwner) CLocalNav::CLocalNav(CHostage *pOwner)
{ {
m_pOwner = pOwner; m_pOwner = pOwner;
m_pTargetEnt = NULL; m_pTargetEnt = NULL;
m_nodeArr = new localnode_t[MAX_NODES]; m_nodeArr = new localnode_t[MAX_NODES];
if (tot_hostages >= MAX_HOSTAGES_NAV) if (tot_hostages >= MAX_HOSTAGES_NAV)
{ {
return; return;
} }
hostages[tot_hostages++] = pOwner; hostages[tot_hostages++] = pOwner;
} }
/* <485b09> ../cstrike/dlls/hostage/hostage_localnav.cpp:68 */ /* <485b09> ../cstrike/dlls/hostage/hostage_localnav.cpp:68 */
CLocalNav::~CLocalNav(void) CLocalNav::~CLocalNav(void)
{ {
delete m_nodeArr; delete m_nodeArr;
} }
/* <485b91> ../cstrike/dlls/hostage/hostage_localnav.cpp:74 */ /* <485b91> ../cstrike/dlls/hostage/hostage_localnav.cpp:74 */
node_index_t CLocalNav::AddNode(node_index_t nindexParent, Vector &vecLoc, int offsetX, int offsetY, byte bDepth) node_index_t CLocalNav::AddNode(node_index_t nindexParent, Vector &vecLoc, int offsetX, int offsetY, byte bDepth)
{ {
localnode_t *nodeNew; localnode_t *nodeNew;
if (m_nindexAvailableNode == MAX_NODES) if (m_nindexAvailableNode == MAX_NODES)
@ -67,54 +67,54 @@ node_index_t CLocalNav::AddNode(node_index_t nindexParent, Vector &vecLoc, int o
nodeNew->fSearched = FALSE; nodeNew->fSearched = FALSE;
nodeNew->nindexParent = nindexParent; nodeNew->nindexParent = nindexParent;
return m_nindexAvailableNode++; return m_nindexAvailableNode++;
} }
/* <485570> ../cstrike/dlls/hostage/hostage_localnav.cpp:94 */ /* <485570> ../cstrike/dlls/hostage/hostage_localnav.cpp:94 */
localnode_t *CLocalNav::GetNode(node_index_t nindex) localnode_t *CLocalNav::GetNode(node_index_t nindex)
{ {
return &m_nodeArr[ nindex ]; return &m_nodeArr[ nindex ];
} }
/* <485c01> ../cstrike/dlls/hostage/hostage_localnav.cpp:100 */ /* <485c01> ../cstrike/dlls/hostage/hostage_localnav.cpp:100 */
node_index_t CLocalNav::NodeExists(int offsetX, int offsetY) node_index_t CLocalNav::NodeExists(int offsetX, int offsetY)
{ {
node_index_t nindexCurrent = NODE_INVALID_EMPTY; node_index_t nindexCurrent = NODE_INVALID_EMPTY;
localnode_t *nodeCurrent; localnode_t *nodeCurrent;
for (nindexCurrent = m_nindexAvailableNode - 1; nindexCurrent != NODE_INVALID_EMPTY; nindexCurrent--) for (nindexCurrent = m_nindexAvailableNode - 1; nindexCurrent != NODE_INVALID_EMPTY; nindexCurrent--)
{ {
nodeCurrent = GetNode(nindexCurrent); nodeCurrent = GetNode(nindexCurrent);
if (nodeCurrent->offsetX == offsetX && nodeCurrent->offsetY == offsetY) if (nodeCurrent->offsetX == offsetX && nodeCurrent->offsetY == offsetY)
{ {
break; break;
} }
} }
return nindexCurrent; return nindexCurrent;
} }
/* <486d46> ../cstrike/dlls/hostage/hostage_localnav.cpp:123 */ /* <486d46> ../cstrike/dlls/hostage/hostage_localnav.cpp:123 */
void CLocalNav::AddPathNodes(node_index_t nindexSource, int fNoMonsters) void CLocalNav::AddPathNodes(node_index_t nindexSource, int fNoMonsters)
{ {
AddPathNode(nindexSource, 1, 0, fNoMonsters); AddPathNode(nindexSource, 1, 0, fNoMonsters);
AddPathNode(nindexSource, -1, 0, fNoMonsters); AddPathNode(nindexSource, -1, 0, fNoMonsters);
AddPathNode(nindexSource, 0, 1, fNoMonsters); AddPathNode(nindexSource, 0, 1, fNoMonsters);
AddPathNode(nindexSource, 0, -1, fNoMonsters); AddPathNode(nindexSource, 0, -1, fNoMonsters);
AddPathNode(nindexSource, 1, 1, fNoMonsters); AddPathNode(nindexSource, 1, 1, fNoMonsters);
AddPathNode(nindexSource, 1, -1, fNoMonsters); AddPathNode(nindexSource, 1, -1, fNoMonsters);
AddPathNode(nindexSource, -1, 1, fNoMonsters); AddPathNode(nindexSource, -1, 1, fNoMonsters);
AddPathNode(nindexSource, -1, -1, fNoMonsters); AddPathNode(nindexSource, -1, -1, fNoMonsters);
} }
/* <486adb> ../cstrike/dlls/hostage/hostage_localnav.cpp:138 */ /* <486adb> ../cstrike/dlls/hostage/hostage_localnav.cpp:138 */
void CLocalNav::AddPathNode(node_index_t nindexSource, int offsetX, int offsetY, int fNoMonsters) void CLocalNav::AddPathNode(node_index_t nindexSource, int offsetX, int offsetY, int fNoMonsters)
{ {
int bDepth; int bDepth;
Vector vecSource, vecDest; Vector vecSource, vecDest;
int offsetXAbs, offsetYAbs; int offsetXAbs, offsetYAbs;
if (nindexSource == -1) if (nindexSource == -1)
{ {
bDepth = 1; bDepth = 1;
@ -124,9 +124,9 @@ void CLocalNav::AddPathNode(node_index_t nindexSource, int offsetX, int offsetY,
vecSource = m_vecStartingLoc; vecSource = m_vecStartingLoc;
vecDest = vecSource + Vector(((float_precision)offsetX * HOSTAGE_STEPSIZE), ((float_precision)offsetY * HOSTAGE_STEPSIZE), 0); vecDest = vecSource + Vector(((float_precision)offsetX * HOSTAGE_STEPSIZE), ((float_precision)offsetY * HOSTAGE_STEPSIZE), 0);
} }
else else
{ {
localnode_t *nodeSource; localnode_t *nodeSource;
localnode_t *nodeCurrent; localnode_t *nodeCurrent;
node_index_t nindexCurrent; node_index_t nindexCurrent;
@ -144,7 +144,7 @@ void CLocalNav::AddPathNode(node_index_t nindexSource, int offsetX, int offsetY,
vecSource = nodeCurrent->vecLoc; vecSource = nodeCurrent->vecLoc;
vecDest = vecSource + Vector(((float_precision)offsetX * HOSTAGE_STEPSIZE), ((float_precision)offsetY * HOSTAGE_STEPSIZE), 0); vecDest = vecSource + Vector(((float_precision)offsetX * HOSTAGE_STEPSIZE), ((float_precision)offsetY * HOSTAGE_STEPSIZE), 0);
if (m_nindexAvailableNode) if (m_nindexAvailableNode)
{ {
nindexCurrent = m_nindexAvailableNode; nindexCurrent = m_nindexAvailableNode;
@ -198,37 +198,37 @@ void CLocalNav::AddPathNode(node_index_t nindexSource, int offsetX, int offsetY,
} }
vecSource = nodeCurrent->vecLoc; vecSource = nodeCurrent->vecLoc;
bDepth = ((int)nodeCurrent->bDepth) + 1; bDepth = ((int)nodeCurrent->bDepth) + 1;
} }
if (PathTraversable(vecSource, vecDest, fNoMonsters) != PATH_TRAVERSABLE_EMPTY) if (PathTraversable(vecSource, vecDest, fNoMonsters) != PATH_TRAVERSABLE_EMPTY)
{ {
AddNode(nindexSource, vecDest, offsetXAbs, offsetYAbs, bDepth); AddNode(nindexSource, vecDest, offsetXAbs, offsetYAbs, bDepth);
} }
} }
/* <485c63> ../cstrike/dlls/hostage/hostage_localnav.cpp:205 */ /* <485c63> ../cstrike/dlls/hostage/hostage_localnav.cpp:205 */
node_index_t CLocalNav::GetBestNode(Vector &vecOrigin, Vector &vecDest) node_index_t CLocalNav::GetBestNode(Vector &vecOrigin, Vector &vecDest)
{ {
node_index_t nindexCurrent; node_index_t nindexCurrent;
localnode_t *nodeCurrent; localnode_t *nodeCurrent;
node_index_t nindexBest; node_index_t nindexBest;
float flBestVal; float flBestVal;
nindexBest = -1; nindexBest = -1;
nindexCurrent = 0; nindexCurrent = 0;
flBestVal = 1000000.0; flBestVal = 1000000.0;
while (nindexCurrent < m_nindexAvailableNode) while (nindexCurrent < m_nindexAvailableNode)
{ {
nodeCurrent = GetNode(nindexCurrent); nodeCurrent = GetNode(nindexCurrent);
if (!nodeCurrent->fSearched) if (!nodeCurrent->fSearched)
{ {
float_precision flCurrentVal; float_precision flCurrentVal;
float_precision flDistFromStart; float_precision flDistFromStart;
float flDistToDest; float flDistToDest;
float_precision flZDiff = -1.0; float_precision flZDiff = -1.0;
flDistFromStart = LengthSubtract flDistFromStart = LengthSubtract
@ -255,13 +255,13 @@ node_index_t CLocalNav::GetBestNode(Vector &vecOrigin, Vector &vecDest)
} }
nindexCurrent++; nindexCurrent++;
} }
return nindexBest; return nindexBest;
} }
/* <485d79> ../cstrike/dlls/hostage/hostage_localnav.cpp:263 */ /* <485d79> ../cstrike/dlls/hostage/hostage_localnav.cpp:263 */
int CLocalNav::SetupPathNodes(node_index_t nindex, Vector *vecNodes, int fNoMonsters) int CLocalNav::SetupPathNodes(node_index_t nindex, Vector *vecNodes, int fNoMonsters)
{ {
node_index_t nCurrentIndex = nindex; node_index_t nCurrentIndex = nindex;
int nNodeCount = 0; int nNodeCount = 0;
@ -275,12 +275,12 @@ int CLocalNav::SetupPathNodes(node_index_t nindex, Vector *vecNodes, int fNoMons
nCurrentIndex = nodeCurrent->nindexParent; nCurrentIndex = nodeCurrent->nindexParent;
} }
return nNodeCount; return nNodeCount;
} }
/* <486a56> ../cstrike/dlls/hostage/hostage_localnav.cpp:290 */ /* <486a56> ../cstrike/dlls/hostage/hostage_localnav.cpp:290 */
int CLocalNav::GetFurthestTraversableNode(Vector &vecStartingLoc, Vector *vecNodes, int nTotalNodes, int fNoMonsters) int CLocalNav::GetFurthestTraversableNode(Vector &vecStartingLoc, Vector *vecNodes, int nTotalNodes, int fNoMonsters)
{ {
int nCount = 0; int nCount = 0;
while (nCount < nTotalNodes) while (nCount < nTotalNodes)
{ {
@ -290,11 +290,11 @@ int CLocalNav::GetFurthestTraversableNode(Vector &vecStartingLoc, Vector *vecNod
nCount++; nCount++;
} }
return -1; return -1;
} }
/* <486d8d> ../cstrike/dlls/hostage/hostage_localnav.cpp:304 */ /* <486d8d> ../cstrike/dlls/hostage/hostage_localnav.cpp:304 */
node_index_t CLocalNav::FindPath(Vector &vecStart, Vector &vecDest, float flTargetRadius, int fNoMonsters) node_index_t CLocalNav::FindPath(Vector &vecStart, Vector &vecDest, float flTargetRadius, int fNoMonsters)
{ {
node_index_t nIndexBest = FindDirectPath(vecStart, vecDest, flTargetRadius, fNoMonsters); node_index_t nIndexBest = FindDirectPath(vecStart, vecDest, flTargetRadius, fNoMonsters);
@ -388,29 +388,29 @@ node_index_t CLocalNav::FindPath(Vector &vecStart, Vector &vecDest, float flTarg
else else
nodeval += 169; nodeval += 169;
return nIndexBest; return nIndexBest;
} }
/* <4867dc> ../cstrike/dlls/hostage/hostage_localnav.cpp:413 */ /* <4867dc> ../cstrike/dlls/hostage/hostage_localnav.cpp:413 */
node_index_t CLocalNav::FindDirectPath(Vector &vecStart, Vector &vecDest, float flTargetRadius, int fNoMonsters) node_index_t CLocalNav::FindDirectPath(Vector &vecStart, Vector &vecDest, float flTargetRadius, int fNoMonsters)
{ {
Vector vecActualDest; Vector vecActualDest;
Vector vecPathDir; Vector vecPathDir;
Vector vecNodeLoc; Vector vecNodeLoc;
node_index_t nindexLast; node_index_t nindexLast;
vecPathDir = NormalizeSubtract<float_precision, float, float, float_precision>(vecStart, vecDest); vecPathDir = NormalizeSubtract<float_precision, float, float, float_precision>(vecStart, vecDest);
vecActualDest = vecDest - (vecPathDir * flTargetRadius); vecActualDest = vecDest - (vecPathDir * flTargetRadius);
if (PathTraversable(vecStart, vecActualDest, fNoMonsters) == PATH_TRAVERSABLE_EMPTY) if (PathTraversable(vecStart, vecActualDest, fNoMonsters) == PATH_TRAVERSABLE_EMPTY)
{ {
return -1; return -1;
} }
nindexLast = -1; nindexLast = -1;
vecNodeLoc = vecStart; vecNodeLoc = vecStart;
m_nindexAvailableNode = 0; m_nindexAvailableNode = 0;
while ((vecNodeLoc - vecActualDest).Length2D() >= HOSTAGE_STEPSIZE) while ((vecNodeLoc - vecActualDest).Length2D() >= HOSTAGE_STEPSIZE)
{ {
node_index_t nindexCurrent = nindexLast; node_index_t nindexCurrent = nindexLast;
@ -420,14 +420,14 @@ node_index_t CLocalNav::FindDirectPath(Vector &vecStart, Vector &vecDest, float
if (nindexLast == -1) if (nindexLast == -1)
break; break;
} }
return nindexLast; return nindexLast;
} }
/* <485e40> ../cstrike/dlls/hostage/hostage_localnav.cpp:449 */ /* <485e40> ../cstrike/dlls/hostage/hostage_localnav.cpp:449 */
BOOL CLocalNav::PathClear(Vector &vecOrigin, Vector &vecDest, int fNoMonsters, TraceResult &tr) BOOL CLocalNav::PathClear(Vector &vecOrigin, Vector &vecDest, int fNoMonsters, TraceResult &tr)
{ {
TRACE_MONSTER_HULL(m_pOwner->edict(), vecOrigin, vecDest, fNoMonsters, m_pOwner->edict(), &tr); TRACE_MONSTER_HULL(m_pOwner->edict(), vecOrigin, vecDest, fNoMonsters, m_pOwner->edict(), &tr);
if (tr.fStartSolid) if (tr.fStartSolid)
@ -442,46 +442,46 @@ BOOL CLocalNav::PathClear(Vector &vecOrigin, Vector &vecDest, int fNoMonsters, T
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
} }
/* <485ecf> ../cstrike/dlls/hostage/hostage_localnav.cpp:472 */ /* <485ecf> ../cstrike/dlls/hostage/hostage_localnav.cpp:472 */
int CLocalNav::PathTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters) int CLocalNav::PathTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters)
{ {
TraceResult tr; TraceResult tr;
Vector vecSrcTmp; Vector vecSrcTmp;
Vector vecDestTmp; Vector vecDestTmp;
Vector vecDir; Vector vecDir;
float_precision flTotal; float_precision flTotal;
int retval = PATH_TRAVERSABLE_EMPTY; int retval = PATH_TRAVERSABLE_EMPTY;
vecSrcTmp = vecSource; vecSrcTmp = vecSource;
vecDestTmp = vecDest - vecSource; vecDestTmp = vecDest - vecSource;
vecDir = vecDestTmp.NormalizePrecision(); vecDir = vecDestTmp.NormalizePrecision();
vecDir.z = 0; vecDir.z = 0;
flTotal = vecDestTmp.Length2D(); flTotal = vecDestTmp.Length2D();
while (flTotal > 1.0) while (flTotal > 1.0)
{ {
if (flTotal >= s_flStepSize) if (flTotal >= s_flStepSize)
{ {
#ifndef HOOK_GAMEDLL #ifndef HOOK_GAMEDLL
vecDestTmp = vecSrcTmp + (vecDir * s_flStepSize); vecDestTmp = vecSrcTmp + (vecDir * s_flStepSize);
#else #else
// fix test demo // fix test demo
vecDestTmp[0] = vecSrcTmp[0] + (vecDir[0] * s_flStepSize); vecDestTmp[0] = vecSrcTmp[0] + (vecDir[0] * s_flStepSize);
vecDestTmp[1] = vecSrcTmp[1] + (float)(vecDir[1] * s_flStepSize); vecDestTmp[1] = vecSrcTmp[1] + (float)(vecDir[1] * s_flStepSize);
vecDestTmp[2] = vecSrcTmp[2] + (vecDir[2] * s_flStepSize); vecDestTmp[2] = vecSrcTmp[2] + (vecDir[2] * s_flStepSize);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
} }
else else
vecDestTmp = vecDest; vecDestTmp = vecDest;
m_fTargetEntHit = FALSE; m_fTargetEntHit = FALSE;
if (PathClear(vecSrcTmp, vecDestTmp, fNoMonsters, tr)) if (PathClear(vecSrcTmp, vecDestTmp, fNoMonsters, tr))
{ {
vecDestTmp = tr.vecEndPos; vecDestTmp = tr.vecEndPos;
@ -508,8 +508,8 @@ int CLocalNav::PathTraversable(Vector &vecSource, Vector &vecDest, int fNoMonste
vecSrcTmp = tr.vecEndPos; vecSrcTmp = tr.vecEndPos;
if (tr.vecPlaneNormal.z <= 0.7) if (tr.vecPlaneNormal.z <= 0.7)
{ {
if (StepTraversable(vecSrcTmp, vecDestTmp, fNoMonsters, tr)) if (StepTraversable(vecSrcTmp, vecDestTmp, fNoMonsters, tr))
{ {
if (retval == PATH_TRAVERSABLE_EMPTY) if (retval == PATH_TRAVERSABLE_EMPTY)
@ -527,30 +527,30 @@ int CLocalNav::PathTraversable(Vector &vecSource, Vector &vecDest, int fNoMonste
if (retval == PATH_TRAVERSABLE_EMPTY) if (retval == PATH_TRAVERSABLE_EMPTY)
{ {
retval = PATH_TRAVERSABLE_STEPJUMPABLE; retval = PATH_TRAVERSABLE_STEPJUMPABLE;
} }
} }
} }
else else
{ {
if (!SlopeTraversable(vecSrcTmp, vecDestTmp, fNoMonsters, tr)) if (!SlopeTraversable(vecSrcTmp, vecDestTmp, fNoMonsters, tr))
{ {
return PATH_TRAVERSABLE_EMPTY; return PATH_TRAVERSABLE_EMPTY;
} }
if (retval == PATH_TRAVERSABLE_EMPTY) if (retval == PATH_TRAVERSABLE_EMPTY)
{ {
retval = PATH_TRAVERSABLE_SLOPE; retval = PATH_TRAVERSABLE_SLOPE;
} }
} }
} }
Vector vecDropDest = vecDestTmp - Vector(0, 0, 300); Vector vecDropDest = vecDestTmp - Vector(0, 0, 300);
if (PathClear(vecDestTmp, vecDropDest, fNoMonsters, tr)) if (PathClear(vecDestTmp, vecDropDest, fNoMonsters, tr))
{ {
return PATH_TRAVERSABLE_EMPTY; return PATH_TRAVERSABLE_EMPTY;
} }
if (!tr.fStartSolid) if (!tr.fStartSolid)
vecDestTmp = tr.vecEndPos; vecDestTmp = tr.vecEndPos;
@ -561,17 +561,17 @@ int CLocalNav::PathTraversable(Vector &vecSource, Vector &vecDest, int fNoMonste
if (fProgressThisTime) if (fProgressThisTime)
break; break;
flTotal = vecSrcThisTime.Length2D(); flTotal = vecSrcThisTime.Length2D();
} }
vecDest = vecDestTmp; vecDest = vecDestTmp;
return retval; return retval;
} }
/* <486ea0> ../cstrike/dlls/hostage/hostage_localnav.cpp:593 */ /* <486ea0> ../cstrike/dlls/hostage/hostage_localnav.cpp:593 */
BOOL CLocalNav::SlopeTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr) BOOL CLocalNav::SlopeTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr)
{ {
Vector vecSlopeEnd; Vector vecSlopeEnd;
Vector vecDown; Vector vecDown;
@ -607,12 +607,12 @@ BOOL CLocalNav::SlopeTraversable(Vector &vecSource, Vector &vecDest, int fNoMons
} }
vecDest = tr.vecEndPos; vecDest = tr.vecEndPos;
return TRUE; return TRUE;
} }
/* <487085> ../cstrike/dlls/hostage/hostage_localnav.cpp:635 */ /* <487085> ../cstrike/dlls/hostage/hostage_localnav.cpp:635 */
BOOL CLocalNav::LadderTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr) BOOL CLocalNav::LadderTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr)
{ {
Vector vecStepStart; Vector vecStepStart;
Vector vecStepDest; Vector vecStepDest;
@ -632,12 +632,12 @@ BOOL CLocalNav::LadderTraversable(Vector &vecSource, Vector &vecDest, int fNoMon
vecStepStart = tr.vecEndPos; vecStepStart = tr.vecEndPos;
vecDest.z = tr.vecEndPos.z; vecDest.z = tr.vecEndPos.z;
return PathTraversable(vecStepStart, vecDest, fNoMonsters); return PathTraversable(vecStepStart, vecDest, fNoMonsters);
} }
/* <4871ef> ../cstrike/dlls/hostage/hostage_localnav.cpp:662 */ /* <4871ef> ../cstrike/dlls/hostage/hostage_localnav.cpp:662 */
BOOL CLocalNav::StepTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr) BOOL CLocalNav::StepTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr)
{ {
Vector vecStepStart; Vector vecStepStart;
Vector vecStepDest; Vector vecStepDest;
//BOOL fFwdTrace = FALSE; // unused? //BOOL fFwdTrace = FALSE; // unused?
@ -675,12 +675,12 @@ BOOL CLocalNav::StepTraversable(Vector &vecSource, Vector &vecDest, int fNoMonst
} }
vecDest = tr.vecEndPos; vecDest = tr.vecEndPos;
return TRUE; return TRUE;
} }
/* <4873b3> ../cstrike/dlls/hostage/hostage_localnav.cpp:713 */ /* <4873b3> ../cstrike/dlls/hostage/hostage_localnav.cpp:713 */
BOOL CLocalNav::StepJumpable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr) BOOL CLocalNav::StepJumpable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr)
{ {
Vector vecStepStart; Vector vecStepStart;
Vector vecStepDest; Vector vecStepDest;
//BOOL fFwdTrace = FALSE; // unused? //BOOL fFwdTrace = FALSE; // unused?
@ -730,12 +730,12 @@ BOOL CLocalNav::StepJumpable(Vector &vecSource, Vector &vecDest, int fNoMonsters
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
} }
/* <487588> ../cstrike/dlls/hostage/hostage_localnav.cpp:824 */ /* <487588> ../cstrike/dlls/hostage/hostage_localnav.cpp:824 */
BOOL CLocalNav::LadderHit(Vector &vecSource, Vector &vecDest, TraceResult &tr) BOOL CLocalNav::LadderHit(Vector &vecSource, Vector &vecDest, TraceResult &tr)
{ {
Vector vecFwd, vecRight, vecUp; Vector vecFwd, vecRight, vecUp;
Vector vecAngles, vecOrigin; Vector vecAngles, vecOrigin;
@ -771,12 +771,12 @@ BOOL CLocalNav::LadderHit(Vector &vecSource, Vector &vecDest, TraceResult &tr)
if (UTIL_PointContents(vecOrigin) == CONTENTS_LADDER) if (UTIL_PointContents(vecOrigin) == CONTENTS_LADDER)
return true; return true;
return false; return false;
} }
/* <487eeb> ../cstrike/dlls/hostage/hostage_localnav.cpp:851 */ /* <487eeb> ../cstrike/dlls/hostage/hostage_localnav.cpp:851 */
void CLocalNav::Think(void) void CLocalNav::Think(void)
{ {
EHANDLE hCallback; EHANDLE hCallback;
static cvar_t *sv_stepsize = NULL; static cvar_t *sv_stepsize = NULL;
@ -840,20 +840,20 @@ void CLocalNav::Think(void)
tot_inqueue--; tot_inqueue--;
pHostage->NavReady(); pHostage->NavReady();
} }
} }
} }
/* <487ccd> ../cstrike/dlls/hostage/hostage_localnav.cpp:922 */ /* <487ccd> ../cstrike/dlls/hostage/hostage_localnav.cpp:922 */
void CLocalNav::RequestNav(CHostage *pCaller) void CLocalNav::RequestNav(CHostage *pCaller)
{ {
int curr = qptr; int curr = qptr;
int found = 0; int found = 0;
if (nodeval <= 17 && !tot_inqueue) if (nodeval <= 17 && !tot_inqueue)
{ {
pCaller->NavReady(); pCaller->NavReady();
return; return;
} }
if (tot_inqueue >= MAX_HOSTAGES_NAV) if (tot_inqueue >= MAX_HOSTAGES_NAV)
{ {
@ -872,28 +872,28 @@ void CLocalNav::RequestNav(CHostage *pCaller)
} }
_queue[curr] = pCaller; _queue[curr] = pCaller;
tot_inqueue++; tot_inqueue++;
} }
/* <487e03> ../cstrike/dlls/hostage/hostage_localnav.cpp:964 */ /* <487e03> ../cstrike/dlls/hostage/hostage_localnav.cpp:964 */
void CLocalNav::Reset(void) void CLocalNav::Reset(void)
{ {
flNextCvarCheck = 0; flNextCvarCheck = 0;
flLastThinkTime = 0; flLastThinkTime = 0;
tot_inqueue = 0; tot_inqueue = 0;
qptr = 0; qptr = 0;
nodeval = 0; nodeval = 0;
tot_hostages = 0; tot_hostages = 0;
} }
/* <487e14> ../cstrike/dlls/hostage/hostage_localnav.cpp:976 */ /* <487e14> ../cstrike/dlls/hostage/hostage_localnav.cpp:976 */
void CLocalNav::HostagePrethink(void) void CLocalNav::HostagePrethink(void)
{ {
for (int iCount = 0; iCount < tot_hostages; iCount++) for (int iCount = 0; iCount < tot_hostages; iCount++)
{ {
if (hostages[ iCount ] != NULL) if (hostages[ iCount ] != NULL)
{ {
GetClassPtr((CHostage *)hostages[ iCount ]->pev)->PreThink(); GetClassPtr((CHostage *)hostages[ iCount ]->pev)->PreThink();
} }
} }
} }

View File

@ -81,65 +81,65 @@ public:
CLocalNav(CHostage *pOwner); CLocalNav(CHostage *pOwner);
virtual ~CLocalNav(void); virtual ~CLocalNav(void);
void SetTargetEnt(CBaseEntity *pTarget) void SetTargetEnt(CBaseEntity *pTarget)
{ {
if (pTarget) if (pTarget)
m_pTargetEnt = pTarget->edict(); m_pTargetEnt = pTarget->edict();
else else
m_pTargetEnt = NULL; m_pTargetEnt = NULL;
} }
node_index_t FindPath(Vector &vecStart, Vector &vecDest, float flTargetRadius, int fNoMonsters); node_index_t FindPath(Vector &vecStart, Vector &vecDest, float flTargetRadius, int fNoMonsters);
int SetupPathNodes(node_index_t nindex, Vector *vecNodes, int fNoMonsters); int SetupPathNodes(node_index_t nindex, Vector *vecNodes, int fNoMonsters);
int GetFurthestTraversableNode(Vector &vecStartingLoc, Vector *vecNodes, int nTotalNodes, int fNoMonsters); int GetFurthestTraversableNode(Vector &vecStartingLoc, Vector *vecNodes, int nTotalNodes, int fNoMonsters);
int PathTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters); int PathTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters);
BOOL PathClear(Vector &vecOrigin, Vector &vecDest, int fNoMonsters, TraceResult &tr); BOOL PathClear(Vector &vecOrigin, Vector &vecDest, int fNoMonsters, TraceResult &tr);
BOOL PathClear(Vector &vecSource, Vector &vecDest, BOOL fNoMonsters) BOOL PathClear(Vector &vecSource, Vector &vecDest, BOOL fNoMonsters)
{ {
TraceResult tr; TraceResult tr;
return PathClear(vecSource, vecDest, fNoMonsters, tr); return PathClear(vecSource, vecDest, fNoMonsters, tr);
} }
node_index_t AddNode(node_index_t nindexParent, Vector &vecLoc, int offsetX = 0, int offsetY = 0, byte bDepth = 0); node_index_t AddNode(node_index_t nindexParent, Vector &vecLoc, int offsetX = 0, int offsetY = 0, byte bDepth = 0);
localnode_t *GetNode(node_index_t nindex); localnode_t *GetNode(node_index_t nindex);
node_index_t NodeExists(int offsetX, int offsetY); node_index_t NodeExists(int offsetX, int offsetY);
void AddPathNodes(node_index_t nindexSource, int fNoMonsters); void AddPathNodes(node_index_t nindexSource, int fNoMonsters);
void AddPathNode(node_index_t nindexSource, int offsetX, int offsetY, int fNoMonsters); void AddPathNode(node_index_t nindexSource, int offsetX, int offsetY, int fNoMonsters);
node_index_t GetBestNode(Vector &vecOrigin, Vector &vecDest); node_index_t GetBestNode(Vector &vecOrigin, Vector &vecDest);
BOOL SlopeTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr); BOOL SlopeTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr);
BOOL LadderTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr); BOOL LadderTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr);
BOOL StepTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr); BOOL StepTraversable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr);
BOOL StepJumpable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr); BOOL StepJumpable(Vector &vecSource, Vector &vecDest, int fNoMonsters, TraceResult &tr);
node_index_t FindDirectPath(Vector &vecStart, Vector &vecDest, float flTargetRadius, int fNoMonsters); node_index_t FindDirectPath(Vector &vecStart, Vector &vecDest, float flTargetRadius, int fNoMonsters);
BOOL LadderHit(Vector &vecSource, Vector &vecDest, TraceResult &tr); BOOL LadderHit(Vector &vecSource, Vector &vecDest, TraceResult &tr);
static void Think(void); static void Think(void);
static void RequestNav(CHostage *pCaller); static void RequestNav(CHostage *pCaller);
static void Reset(void); static void Reset(void);
static void HostagePrethink(void); static void HostagePrethink(void);
static float s_flStepSize; static float s_flStepSize;
#ifndef HOOK_GAMEDLL #ifndef HOOK_GAMEDLL
private: private:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
static EHANDLE _queue[ MAX_HOSTAGES_NAV ]; static EHANDLE _queue[ MAX_HOSTAGES_NAV ];
static int qptr; static int qptr;
static int tot_inqueue; static int tot_inqueue;
static float nodeval; static float nodeval;
static float flNextCvarCheck; static float flNextCvarCheck;
static float flLastThinkTime; static float flLastThinkTime;
static EHANDLE hostages[ MAX_HOSTAGES_NAV ]; static EHANDLE hostages[ MAX_HOSTAGES_NAV ];
static int tot_hostages; static int tot_hostages;
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
private: private:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
CHostage *m_pOwner; CHostage *m_pOwner;
edict_t *m_pTargetEnt; edict_t *m_pTargetEnt;
BOOL m_fTargetEntHit; BOOL m_fTargetEntHit;
localnode_t *m_nodeArr; localnode_t *m_nodeArr;
node_index_t m_nindexAvailableNode; node_index_t m_nindexAvailableNode;
Vector m_vecStartingLoc; Vector m_vecStartingLoc;
};/* size: 36, cachelines: 1, members: 16 */ };/* size: 36, cachelines: 1, members: 16 */

View File

@ -32,10 +32,10 @@
#pragma once #pragma once
#endif #endif
// constant items // constant items
#define ITEM_HEALTHKIT 1 #define ITEM_HEALTHKIT 1
#define ITEM_ANTIDOTE 2 #define ITEM_ANTIDOTE 2
#define ITEM_SECURITY 3 #define ITEM_SECURITY 3
#define ITEM_BATTERY 4 #define ITEM_BATTERY 4
#define ITEM_SUIT 5 #define ITEM_SUIT 5
@ -63,7 +63,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <e06f5> ../cstrike/dlls/items.cpp:38 */ /* <e06f5> ../cstrike/dlls/items.cpp:38 */
class CWorldItem: public CBaseEntity class CWorldItem: public CBaseEntity
{ {
public: public:
@ -82,7 +82,7 @@ public:
};/* size: 156, cachelines: 3, members: 2 */ };/* size: 156, cachelines: 3, members: 2 */
/* <e075d> ../cstrike/dlls/items.cpp:188 */ /* <e075d> ../cstrike/dlls/items.cpp:188 */
class CItemSuit: public CItem class CItemSuit: public CItem
{ {
public: public:
@ -100,7 +100,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <e07aa> ../cstrike/dlls/items.cpp:219 */ /* <e07aa> ../cstrike/dlls/items.cpp:219 */
class CItemBattery: public CItem class CItemBattery: public CItem
{ {
public: public:
@ -118,7 +118,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <e07f7> ../cstrike/dlls/items.cpp:269 */ /* <e07f7> ../cstrike/dlls/items.cpp:269 */
class CItemAntidote: public CItem class CItemAntidote: public CItem
{ {
public: public:
@ -136,7 +136,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <e084a> ../cstrike/dlls/items.cpp:293 */ /* <e084a> ../cstrike/dlls/items.cpp:293 */
class CItemSecurity: public CItem class CItemSecurity: public CItem
{ {
public: public:
@ -154,7 +154,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <e089d> ../cstrike/dlls/items.cpp:314 */ /* <e089d> ../cstrike/dlls/items.cpp:314 */
class CItemLongJump: public CItem class CItemLongJump: public CItem
{ {
public: public:
@ -172,7 +172,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <e08eb> ../cstrike/dlls/items.cpp:352 */ /* <e08eb> ../cstrike/dlls/items.cpp:352 */
class CItemKevlar: public CItem class CItemKevlar: public CItem
{ {
public: public:
@ -190,7 +190,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <e093e> ../cstrike/dlls/items.cpp:393 */ /* <e093e> ../cstrike/dlls/items.cpp:393 */
class CItemAssaultSuit: public CItem class CItemAssaultSuit: public CItem
{ {
public: public:
@ -208,7 +208,7 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
/* <e0991> ../cstrike/dlls/items.cpp:432 */ /* <e0991> ../cstrike/dlls/items.cpp:432 */
class CItemThighPack: public CItem class CItemThighPack: public CItem
{ {
public: public:

View File

@ -13,7 +13,7 @@ TYPEDESCRIPTION CLight::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CLight, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CLight, m_SaveData)[2];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -56,7 +56,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
private: private:
int m_iStyle; int m_iStyle;

View File

@ -27,9 +27,9 @@ TYPEDESCRIPTION CGamePlayerZone::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CRuleEntity, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CRuleEntity, m_SaveData)[1];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGameText, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CGameText, m_SaveData)[1];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGamePlayerZone, m_SaveData)[4]; TYPEDESCRIPTION IMPL_CLASS(CGamePlayerZone, m_SaveData)[4];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -32,30 +32,30 @@
#pragma once #pragma once
#endif #endif
#define MAX_EQUIP 32 #define MAX_EQUIP 32
#define SF_SCORE_NEGATIVE 0x0001 #define SF_SCORE_NEGATIVE 0x0001
#define SF_SCORE_TEAM 0x0002 #define SF_SCORE_TEAM 0x0002
#define SF_ENVTEXT_ALLPLAYERS 0x0001 #define SF_ENVTEXT_ALLPLAYERS 0x0001
#define SF_TEAMMASTER_FIREONCE 0x0001 #define SF_TEAMMASTER_FIREONCE 0x0001
#define SF_TEAMMASTER_ANYTEAM 0x0002 #define SF_TEAMMASTER_ANYTEAM 0x0002
#define SF_TEAMSET_FIREONCE 0x0001 #define SF_TEAMSET_FIREONCE 0x0001
#define SF_TEAMSET_CLEARTEAM 0x0002 #define SF_TEAMSET_CLEARTEAM 0x0002
#define SF_PKILL_FIREONCE 0x0001 #define SF_PKILL_FIREONCE 0x0001
#define SF_GAMECOUNT_FIREONCE 0x0001 #define SF_GAMECOUNT_FIREONCE 0x0001
#define SF_GAMECOUNT_RESET 0x0002 #define SF_GAMECOUNT_RESET 0x0002
#define SF_GAMECOUNTSET_FIREONCE 0x0001 #define SF_GAMECOUNTSET_FIREONCE 0x0001
#define SF_PLAYEREQUIP_USEONLY 0x0001 #define SF_PLAYEREQUIP_USEONLY 0x0001
#define SF_PTEAM_FIREONCE 0x0001 #define SF_PTEAM_FIREONCE 0x0001
#define SF_PTEAM_KILL 0x0002 #define SF_PTEAM_KILL 0x0002
#define SF_PTEAM_GIB 0x0004 #define SF_PTEAM_GIB 0x0004
/* <edff5> ../cstrike/dlls/maprules.cpp:34 */ /* <edff5> ../cstrike/dlls/maprules.cpp:34 */
class CRuleEntity: public CBaseEntity class CRuleEntity: public CBaseEntity
@ -76,7 +76,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
void SetMaster(int iszMaster) void SetMaster(int iszMaster)
{ {
@ -216,7 +216,7 @@ public:
} }
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
private: private:
hudtextparms_t m_textParms; hudtextparms_t m_textParms;
@ -321,7 +321,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[4]; static TYPEDESCRIPTION IMPL(m_SaveData)[4];
private: private:
string_t m_iszInTarget; string_t m_iszInTarget;

View File

@ -66,18 +66,18 @@
#define R_NM 3 // (NEMESIS) A monster Will ALWAYS attack its nemsis, no matter what #define R_NM 3 // (NEMESIS) A monster Will ALWAYS attack its nemsis, no matter what
#define MEMORY_CLEAR 0 #define MEMORY_CLEAR 0
#define bits_MEMORY_PROVOKED (1<<0) // right now only used for houndeyes. #define bits_MEMORY_PROVOKED (1 << 0) // right now only used for houndeyes.
#define bits_MEMORY_INCOVER (1<<1) // monster knows it is in a covered position. #define bits_MEMORY_INCOVER (1 << 1) // monster knows it is in a covered position.
#define bits_MEMORY_SUSPICIOUS (1<<2) // Ally is suspicious of the player, and will move to provoked more easily #define bits_MEMORY_SUSPICIOUS (1 << 2) // Ally is suspicious of the player, and will move to provoked more easily
#define bits_MEMORY_PATH_FINISHED (1<<3) // Finished monster path (just used by big momma for now) #define bits_MEMORY_PATH_FINISHED (1 << 3) // Finished monster path (just used by big momma for now)
#define bits_MEMORY_ON_PATH (1<<4) // Moving on a path #define bits_MEMORY_ON_PATH (1 << 4) // Moving on a path
#define bits_MEMORY_MOVE_FAILED (1<<5) // Movement has already failed #define bits_MEMORY_MOVE_FAILED (1 << 5) // Movement has already failed
#define bits_MEMORY_FLINCHED (1<<6) // Has already flinched #define bits_MEMORY_FLINCHED (1 << 6) // Has already flinched
#define bits_MEMORY_KILLED (1<<7) // HACKHACK -- remember that I've already called my Killed() #define bits_MEMORY_KILLED (1 << 7) // HACKHACK -- remember that I've already called my Killed()
#define bits_MEMORY_CUSTOM4 (1<<28) // Monster-specific memory #define bits_MEMORY_CUSTOM4 (1 << 28) // Monster-specific memory
#define bits_MEMORY_CUSTOM3 (1<<29) // Monster-specific memory #define bits_MEMORY_CUSTOM3 (1 << 29) // Monster-specific memory
#define bits_MEMORY_CUSTOM2 (1<<30) // Monster-specific memory #define bits_MEMORY_CUSTOM2 (1 << 30) // Monster-specific memory
#define bits_MEMORY_CUSTOM1 (1<<31) // Monster-specific memory #define bits_MEMORY_CUSTOM1 (1 << 31) // Monster-specific memory
//TODO: unused? //TODO: unused?
enum enum

View File

@ -17,7 +17,7 @@ TYPEDESCRIPTION CFuncMortarField::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncMortarField, m_SaveData)[6]; TYPEDESCRIPTION IMPL_CLASS(CFuncMortarField, m_SaveData)[6];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -94,44 +94,44 @@ void CFuncMortarField::FieldUse(CBaseEntity *pActivator, CBaseEntity *pCaller, U
switch (m_fControl) switch (m_fControl)
{ {
// random // random
case 0: case 0:
break; break;
// Trigger Activator // Trigger Activator
case 1: case 1:
{
if (pActivator != NULL)
{ {
if (pActivator != NULL) vecStart.x = pActivator->pev->origin.x;
{ vecStart.y = pActivator->pev->origin.y;
vecStart.x = pActivator->pev->origin.x;
vecStart.y = pActivator->pev->origin.y;
}
break;
} }
// table break;
case 2: }
// table
case 2:
{
CBaseEntity *pController;
if (!FStringNull(m_iszXController))
{ {
CBaseEntity *pController; pController = UTIL_FindEntityByTargetname(NULL, STRING(m_iszXController));
if (!FStringNull(m_iszXController)) if (pController != NULL)
{ {
pController = UTIL_FindEntityByTargetname(NULL, STRING(m_iszXController)); vecStart.x = pev->mins.x + pController->pev->ideal_yaw * pev->size.x;
if (pController != NULL)
{
vecStart.x = pev->mins.x + pController->pev->ideal_yaw * pev->size.x;
}
} }
if (!FStringNull(m_iszYController))
{
pController = UTIL_FindEntityByTargetname(NULL, STRING(m_iszYController));
if (pController != NULL)
{
vecStart.y = pev->mins.y + pController->pev->ideal_yaw * pev->size.y;
}
}
break;
} }
if (!FStringNull(m_iszYController))
{
pController = UTIL_FindEntityByTargetname(NULL, STRING(m_iszYController));
if (pController != NULL)
{
vecStart.y = pev->mins.y + pController->pev->ideal_yaw * pev->size.y;
}
}
break;
}
} }
int pitch = RANDOM_LONG(95, 124); int pitch = RANDOM_LONG(95, 124);

View File

@ -32,7 +32,7 @@
#pragma once #pragma once
#endif #endif
/* <f5dea> ../cstrike/dlls/mortar.cpp:31 */ /* <f5dea> ../cstrike/dlls/mortar.cpp:31 */
class CFuncMortarField: public CBaseToggle class CFuncMortarField: public CBaseToggle
{ {
public: public:
@ -62,7 +62,7 @@ public:
void EXPORT FieldUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value); void EXPORT FieldUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[6]; static TYPEDESCRIPTION IMPL(m_SaveData)[6];
public: public:
int m_iszXController; int m_iszXController;
@ -74,7 +74,7 @@ public:
};/* size: 336, cachelines: 6, members: 8 */ };/* size: 336, cachelines: 6, members: 8 */
/* <f5f11> ../cstrike/dlls/mortar.cpp:192 */ /* <f5f11> ../cstrike/dlls/mortar.cpp:192 */
class CMortar: public CGrenade class CMortar: public CGrenade
{ {
public: public:

View File

@ -121,163 +121,163 @@ void CBaseMonster::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
/* <fc07d> ../cstrike/dlls/mpstubb.cpp:104 */ /* <fc07d> ../cstrike/dlls/mpstubb.cpp:104 */
int CBaseMonster::__MAKE_VHOOK(IRelationship)(CBaseEntity *pTarget) int CBaseMonster::__MAKE_VHOOK(IRelationship)(CBaseEntity *pTarget)
{ {
static int const iEnemy[14][14] = static int const iEnemy[14][14] =
{ {
// NONE MACH PLYR HPASS HMIL AMIL APASS AMONST APREY APRED INSECT PLRALY PBWPN ABWPN // NONE MACH PLYR HPASS HMIL AMIL APASS AMONST APREY APRED INSECT PLRALY PBWPN ABWPN
{ R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO }, // NONE { R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO }, // NONE
{ R_NO, R_NO, R_DL, R_DL, R_NO, R_DL, R_DL, R_DL, R_DL, R_DL, R_NO, R_DL, R_DL, R_DL }, // MACHINE { R_NO, R_NO, R_DL, R_DL, R_NO, R_DL, R_DL, R_DL, R_DL, R_DL, R_NO, R_DL, R_DL, R_DL }, // MACHINE
{ R_NO, R_DL, R_NO, R_NO, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_NO, R_NO, R_DL, R_DL }, // PLAYER { R_NO, R_DL, R_NO, R_NO, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_NO, R_NO, R_DL, R_DL }, // PLAYER
{ R_NO, R_NO, R_AL, R_AL, R_HT, R_FR, R_NO, R_HT, R_DL, R_FR, R_NO, R_AL, R_NO, R_NO }, // HUMANPASSIVE { R_NO, R_NO, R_AL, R_AL, R_HT, R_FR, R_NO, R_HT, R_DL, R_FR, R_NO, R_AL, R_NO, R_NO }, // HUMANPASSIVE
{ R_NO, R_NO, R_HT, R_DL, R_NO, R_HT, R_DL, R_DL, R_DL, R_DL, R_NO, R_HT, R_NO, R_NO }, // HUMANMILITAR { R_NO, R_NO, R_HT, R_DL, R_NO, R_HT, R_DL, R_DL, R_DL, R_DL, R_NO, R_HT, R_NO, R_NO }, // HUMANMILITAR
{ R_NO, R_DL, R_HT, R_DL, R_HT, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_DL, R_NO, R_NO }, // ALIENMILITAR { R_NO, R_DL, R_HT, R_DL, R_HT, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_DL, R_NO, R_NO }, // ALIENMILITAR
{ R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO }, // ALIENPASSIVE { R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO }, // ALIENPASSIVE
{ R_NO, R_DL, R_DL, R_DL, R_DL, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_DL, R_NO, R_NO }, // ALIENMONSTER { R_NO, R_DL, R_DL, R_DL, R_DL, R_NO, R_NO, R_NO, R_NO, R_NO, R_NO, R_DL, R_NO, R_NO }, // ALIENMONSTER
{ R_NO, R_NO, R_DL, R_DL, R_DL, R_NO, R_NO, R_NO, R_NO, R_FR, R_NO, R_DL, R_NO, R_NO }, // ALIENPREY { R_NO, R_NO, R_DL, R_DL, R_DL, R_NO, R_NO, R_NO, R_NO, R_FR, R_NO, R_DL, R_NO, R_NO }, // ALIENPREY
{ R_NO, R_NO, R_DL, R_DL, R_DL, R_NO, R_NO, R_NO, R_HT, R_DL, R_NO, R_DL, R_NO, R_NO }, // ALIENPREDATO { R_NO, R_NO, R_DL, R_DL, R_DL, R_NO, R_NO, R_NO, R_HT, R_DL, R_NO, R_DL, R_NO, R_NO }, // ALIENPREDATO
{ R_FR, R_FR, R_FR, R_FR, R_FR, R_NO, R_FR, R_FR, R_FR, R_FR, R_NO, R_FR, R_NO, R_NO }, // INSECT { R_FR, R_FR, R_FR, R_FR, R_FR, R_NO, R_FR, R_FR, R_FR, R_FR, R_NO, R_FR, R_NO, R_NO }, // INSECT
{ R_NO, R_DL, R_AL, R_AL, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_NO, R_NO, R_NO, R_NO }, // PLAYERALLY { R_NO, R_DL, R_AL, R_AL, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_NO, R_NO, R_NO, R_NO }, // PLAYERALLY
{ R_NO, R_NO, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_NO, R_DL, R_NO, R_DL }, // PBIOWEAPON { R_NO, R_NO, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_DL, R_NO, R_DL, R_NO, R_DL }, // PBIOWEAPON
{ R_NO, R_NO, R_DL, R_DL, R_DL, R_AL, R_NO, R_DL, R_DL, R_NO, R_NO, R_DL, R_DL, R_NO } // ABIOWEAPON { R_NO, R_NO, R_DL, R_DL, R_DL, R_AL, R_NO, R_DL, R_DL, R_NO, R_NO, R_DL, R_DL, R_NO } // ABIOWEAPON
}; };
return iEnemy[ Classify() ][ pTarget->Classify() ]; return iEnemy[ Classify() ][ pTarget->Classify() ];
} }
// Look - Base class monster function to find enemies or // Look - Base class monster function to find enemies or
// food by sight. iDistance is distance (in units) that the // food by sight. iDistance is distance (in units) that the
// monster can see. // monster can see.
// //
// Sets the sight bits of the m_afConditions mask to indicate // Sets the sight bits of the m_afConditions mask to indicate
// which types of entities were sighted. // which types of entities were sighted.
// Function also sets the Looker's m_pLink // Function also sets the Looker's m_pLink
// to the head of a link list that contains all visible ents. // to the head of a link list that contains all visible ents.
// (linked via each ent's m_pLink field) // (linked via each ent's m_pLink field)
/* <fc0e4> ../cstrike/dlls/mpstubb.cpp:140 */ /* <fc0e4> ../cstrike/dlls/mpstubb.cpp:140 */
void CBaseMonster::__MAKE_VHOOK(Look)(int iDistance) void CBaseMonster::__MAKE_VHOOK(Look)(int iDistance)
{ {
int iSighted = 0; int iSighted = 0;
// DON'T let visibility information from last frame sit around! // DON'T let visibility information from last frame sit around!
ClearConditions(bits_COND_SEE_HATE | bits_COND_SEE_DISLIKE | bits_COND_SEE_ENEMY | bits_COND_SEE_FEAR | bits_COND_SEE_NEMESIS | bits_COND_SEE_CLIENT); ClearConditions(bits_COND_SEE_HATE | bits_COND_SEE_DISLIKE | bits_COND_SEE_ENEMY | bits_COND_SEE_FEAR | bits_COND_SEE_NEMESIS | bits_COND_SEE_CLIENT);
m_pLink = NULL; m_pLink = NULL;
// the current visible entity that we're dealing with // the current visible entity that we're dealing with
CBaseEntity *pSightEnt = NULL; CBaseEntity *pSightEnt = NULL;
CBaseEntity *pList[100]; CBaseEntity *pList[100];
Vector delta = Vector(iDistance, iDistance, iDistance); Vector delta = Vector(iDistance, iDistance, iDistance);
// Find only monsters/clients in box, NOT limited to PVS // Find only monsters/clients in box, NOT limited to PVS
int count = UTIL_EntitiesInBox(pList, ARRAYSIZE(pList), pev->origin - delta, pev->origin + delta, (FL_CLIENT | FL_MONSTER)); int count = UTIL_EntitiesInBox(pList, ARRAYSIZE(pList), pev->origin - delta, pev->origin + delta, (FL_CLIENT | FL_MONSTER));
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
pSightEnt = pList[i]; pSightEnt = pList[i];
if (pSightEnt != this && pSightEnt->pev->health > 0) if (pSightEnt != this && pSightEnt->pev->health > 0)
{ {
// the looker will want to consider this entity // the looker will want to consider this entity
// don't check anything else about an entity that can't be seen, or an entity that you don't care about. // don't check anything else about an entity that can't be seen, or an entity that you don't care about.
if (IRelationship(pSightEnt) != R_NO && FInViewCone(pSightEnt) && !(pSightEnt->pev->flags & FL_NOTARGET) && FVisible(pSightEnt)) if (IRelationship(pSightEnt) != R_NO && FInViewCone(pSightEnt) && !(pSightEnt->pev->flags & FL_NOTARGET) && FVisible(pSightEnt))
{ {
if (pSightEnt->IsPlayer()) if (pSightEnt->IsPlayer())
{ {
// if we see a client, remember that (mostly for scripted AI) // if we see a client, remember that (mostly for scripted AI)
iSighted |= bits_COND_SEE_CLIENT; iSighted |= bits_COND_SEE_CLIENT;
} }
pSightEnt->m_pLink = m_pLink; pSightEnt->m_pLink = m_pLink;
m_pLink = pSightEnt; m_pLink = pSightEnt;
if (pSightEnt == m_hEnemy) if (pSightEnt == m_hEnemy)
{ {
// we know this ent is visible, so if it also happens to be our enemy, store that now. // we know this ent is visible, so if it also happens to be our enemy, store that now.
iSighted |= bits_COND_SEE_ENEMY; iSighted |= bits_COND_SEE_ENEMY;
} }
// don't add the Enemy's relationship to the conditions. We only want to worry about conditions when // don't add the Enemy's relationship to the conditions. We only want to worry about conditions when
// we see monsters other than the Enemy. // we see monsters other than the Enemy.
switch (IRelationship (pSightEnt)) switch (IRelationship (pSightEnt))
{ {
case R_NM: case R_NM:
iSighted |= bits_COND_SEE_NEMESIS; iSighted |= bits_COND_SEE_NEMESIS;
break; break;
case R_HT: case R_HT:
iSighted |= bits_COND_SEE_HATE; iSighted |= bits_COND_SEE_HATE;
break; break;
case R_DL: case R_DL:
iSighted |= bits_COND_SEE_DISLIKE; iSighted |= bits_COND_SEE_DISLIKE;
break; break;
case R_FR: case R_FR:
iSighted |= bits_COND_SEE_FEAR; iSighted |= bits_COND_SEE_FEAR;
break; break;
case R_AL: case R_AL:
break; break;
default: default:
ALERT(at_aiconsole, "%s can't assess %s\n", STRING(pev->classname), STRING(pSightEnt->pev->classname)); ALERT(at_aiconsole, "%s can't assess %s\n", STRING(pev->classname), STRING(pSightEnt->pev->classname));
break; break;
} }
} }
} }
} }
SetConditions(iSighted); SetConditions(iSighted);
} }
// BestVisibleEnemy - this functions searches the link // BestVisibleEnemy - this functions searches the link
// list whose head is the caller's m_pLink field, and returns // list whose head is the caller's m_pLink field, and returns
// a pointer to the enemy entity in that list that is nearest the // a pointer to the enemy entity in that list that is nearest the
// caller. // caller.
// //
// !!!UNDONE - currently, this only returns the closest enemy. // !!!UNDONE - currently, this only returns the closest enemy.
// we'll want to consider distance, relationship, attack types, back turned, etc. // we'll want to consider distance, relationship, attack types, back turned, etc.
/* <fc317> ../cstrike/dlls/mpstubb.cpp:220 */ /* <fc317> ../cstrike/dlls/mpstubb.cpp:220 */
CBaseEntity *CBaseMonster::__MAKE_VHOOK(BestVisibleEnemy)(void) CBaseEntity *CBaseMonster::__MAKE_VHOOK(BestVisibleEnemy)(void)
{ {
CBaseEntity *pReturn; CBaseEntity *pReturn;
CBaseEntity *pNextEnt; CBaseEntity *pNextEnt;
int iNearest; int iNearest;
int iDist; int iDist;
int iBestRelationship; int iBestRelationship;
// so first visible entity will become the closest. // so first visible entity will become the closest.
iNearest = 8192; iNearest = 8192;
pNextEnt = m_pLink; pNextEnt = m_pLink;
pReturn = NULL; pReturn = NULL;
iBestRelationship = R_NO; iBestRelationship = R_NO;
while (pNextEnt != NULL) while (pNextEnt != NULL)
{ {
if (pNextEnt->IsAlive()) if (pNextEnt->IsAlive())
{ {
if (IRelationship(pNextEnt) > iBestRelationship) if (IRelationship(pNextEnt) > iBestRelationship)
{ {
// this entity is disliked MORE than the entity that we // this entity is disliked MORE than the entity that we
// currently think is the best visible enemy. No need to do // currently think is the best visible enemy. No need to do
// a distance check, just get mad at this one for now. // a distance check, just get mad at this one for now.
iBestRelationship = IRelationship(pNextEnt); iBestRelationship = IRelationship(pNextEnt);
iNearest = (pNextEnt->pev->origin - pev->origin).Length(); iNearest = (pNextEnt->pev->origin - pev->origin).Length();
pReturn = pNextEnt; pReturn = pNextEnt;
} }
else if (IRelationship(pNextEnt) == iBestRelationship) else if (IRelationship(pNextEnt) == iBestRelationship)
{ {
// this entity is disliked just as much as the entity that // this entity is disliked just as much as the entity that
// we currently think is the best visible enemy, so we only // we currently think is the best visible enemy, so we only
// get mad at it if it is closer. // get mad at it if it is closer.
iDist = (pNextEnt->pev->origin - pev->origin).Length(); iDist = (pNextEnt->pev->origin - pev->origin).Length();
if (iDist <= iNearest) if (iDist <= iNearest)
{ {
iNearest = iDist; iNearest = iDist;
iBestRelationship = IRelationship(pNextEnt); iBestRelationship = IRelationship(pNextEnt);
pReturn = pNextEnt; pReturn = pNextEnt;
} }
} }
} }
pNextEnt = pNextEnt->m_pLink; pNextEnt = pNextEnt->m_pLink;
} }
return pReturn; return pReturn;
} }

View File

@ -998,14 +998,14 @@ void CHalfLifeMultiplay::QueueCareerRoundEndMenu(float tmDelay, int iWinStatus)
if (m_iNumTerroristWins < m_iCareerMatchWins || (m_iNumTerroristWins - m_iNumCTWins < m_iRoundWinDifference)) if (m_iNumTerroristWins < m_iCareerMatchWins || (m_iNumTerroristWins - m_iNumCTWins < m_iRoundWinDifference))
canTsWin = false; canTsWin = false;
if (!TheCareerTasks->AreAllTasksComplete()) if (!TheCareerTasks->AreAllTasksComplete())
{ {
if (humansAreCTs) if (humansAreCTs)
return; return;
canTsWin = false; canTsWin = false;
} }
if (canCTsWin || canTsWin) if (canCTsWin || canTsWin)
{ {
@ -2593,28 +2593,28 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(Think)(void)
} }
else else
{ {
if (m_fCareerMatchMenuTime + 10 <= gpGlobals->time || !IsBotSpeaking()) if (m_fCareerMatchMenuTime + 10 <= gpGlobals->time || !IsBotSpeaking())
{ {
UTIL_CareerDPrintf("Ending career match...one team has won the specified number of rounds\n"); UTIL_CareerDPrintf("Ending career match...one team has won the specified number of rounds\n");
MESSAGE_BEGIN(MSG_ALL, gmsgCZCareer); MESSAGE_BEGIN(MSG_ALL, gmsgCZCareer);
WRITE_STRING("MATCH"); WRITE_STRING("MATCH");
WRITE_LONG(m_iNumCTWins); WRITE_LONG(m_iNumCTWins);
WRITE_LONG(m_iNumTerroristWins); WRITE_LONG(m_iNumTerroristWins);
MESSAGE_END(); MESSAGE_END();
MESSAGE_BEGIN(MSG_ALL, gmsgCZCareerHUD); MESSAGE_BEGIN(MSG_ALL, gmsgCZCareerHUD);
WRITE_STRING("MATCH"); WRITE_STRING("MATCH");
WRITE_LONG(m_iNumCTWins); WRITE_LONG(m_iNumCTWins);
WRITE_LONG(m_iNumTerroristWins); WRITE_LONG(m_iNumTerroristWins);
WRITE_BYTE(m_iCareerMatchWins); WRITE_BYTE(m_iCareerMatchWins);
WRITE_BYTE(m_iRoundWinDifference); WRITE_BYTE(m_iRoundWinDifference);
WRITE_BYTE(m_iRoundWinStatus); WRITE_BYTE(m_iRoundWinStatus);
MESSAGE_END(); MESSAGE_END();
UTIL_LogPrintf("Career Match %d %d %d %d\n", m_iRoundWinStatus, m_iNumCTWins, m_iNumTerroristWins, TheCareerTasks->AreAllTasksComplete()); UTIL_LogPrintf("Career Match %d %d %d %d\n", m_iRoundWinStatus, m_iNumCTWins, m_iNumTerroristWins, TheCareerTasks->AreAllTasksComplete());
SERVER_COMMAND("setpause\n"); SERVER_COMMAND("setpause\n");
} }
} }
} }
@ -2665,9 +2665,9 @@ bool CHalfLifeMultiplay::CheckTimeLimit(void)
if (!IsCareer()) if (!IsCareer())
{ {
if (fTimeLimit != 0.0f) if (fTimeLimit != 0.0f)
{ {
g_flTimeLimit = g_flResetTime + fTimeLimit * 60.0f; g_flTimeLimit = g_flResetTime + fTimeLimit * 60.0f;
} }
if (fTimeLimit > 0 && gpGlobals->time >= g_flTimeLimit) if (fTimeLimit > 0 && gpGlobals->time >= g_flTimeLimit)

View File

@ -1,7 +1,6 @@
#include "precompiled.h" #include "precompiled.h"
/* <11c190> ../cstrike/dlls/observer.cpp:36 */ int GetForceCamera_api(CBasePlayer *pObserver)
int GetForceCamera(void)
{ {
int retVal; int retVal;
@ -18,19 +17,30 @@ int GetForceCamera(void)
return retVal; return retVal;
} }
/* <11c190> ../cstrike/dlls/observer.cpp:36 */
int GetForceCamera(CBasePlayer *pObserver)
{
return g_ReGameHookchains.m_GetForceCamera.callChain(GetForceCamera_api, pObserver);
}
CBasePlayer *Observer_IsValidTarget_api(CBasePlayer *pPlayer, CBasePlayer *pEntity, int iPlayerIndex, bool bSameTeam)
{
// Don't spec observers or players who haven't picked a class yet
if (!pEntity || pEntity == pPlayer || pEntity->has_disconnected || pEntity->IsObserver() || (pEntity->pev->effects & EF_NODRAW) || pEntity->m_iTeam == UNASSIGNED || (bSameTeam && pEntity->m_iTeam != pPlayer->m_iTeam))
return NULL;
return pEntity;
}
/* <11c4fa> ../cstrike/dlls/observer.cpp:49 */ /* <11c4fa> ../cstrike/dlls/observer.cpp:49 */
CBaseEntity *CBasePlayer::Observer_IsValidTarget(int iPlayerIndex, bool bSameTeam) CBaseEntity *CBasePlayer::Observer_IsValidTarget(int iPlayerIndex, bool bSameTeam)
{ {
if (iPlayerIndex > gpGlobals->maxClients || iPlayerIndex < 1) if (iPlayerIndex > gpGlobals->maxClients || iPlayerIndex < 1)
return NULL; return NULL;
CBaseEntity *pEnt = UTIL_PlayerByIndex(iPlayerIndex); CBasePlayer *pEnt = (CBasePlayer *)UTIL_PlayerByIndex(iPlayerIndex);
// Don't spec observers or players who haven't picked a class yet return g_ReGameHookchains.m_Observer_IsValidTarget.callChain(Observer_IsValidTarget_api, this, pEnt, iPlayerIndex, bSameTeam);
if (!pEnt || pEnt == this || pEnt->has_disconnected || ((CBasePlayer *)pEnt)->IsObserver() || (pEnt->pev->effects & EF_NODRAW) || ((CBasePlayer *)pEnt)->m_iTeam == UNASSIGNED || (bSameTeam && ((CBasePlayer *)pEnt)->m_iTeam != m_iTeam))
return NULL;
return pEnt;
} }
/* <11c2c7> ../cstrike/dlls/observer.cpp:82 */ /* <11c2c7> ../cstrike/dlls/observer.cpp:82 */
@ -147,7 +157,7 @@ void CBasePlayer::Observer_FindNextPlayer(bool bReverse, const char *name)
iDir = bReverse ? -1 : 1; iDir = bReverse ? -1 : 1;
bForceSameTeam = (GetForceCamera() != CAMERA_MODE_SPEC_ANYONE && m_iTeam != SPECTATOR); bForceSameTeam = (GetForceCamera(this) != CAMERA_MODE_SPEC_ANYONE && m_iTeam != SPECTATOR);
do do
{ {
@ -441,7 +451,7 @@ void CBasePlayer::Observer_SetMode(int iMode)
if (iMode == pev->iuser1) if (iMode == pev->iuser1)
return; return;
_forcecamera = GetForceCamera(); _forcecamera = GetForceCamera(this);
// is valid mode ? // is valid mode ?
if (iMode < OBS_CHASE_LOCKED || iMode > OBS_MAP_CHASE) if (iMode < OBS_CHASE_LOCKED || iMode > OBS_MAP_CHASE)

View File

@ -36,7 +36,7 @@
#define CAMERA_MODE_SPEC_ONLY_TEAM 1 #define CAMERA_MODE_SPEC_ONLY_TEAM 1
#define CAMERA_MODE_SPEC_ONLY_FRIST_PERSON 2 #define CAMERA_MODE_SPEC_ONLY_FRIST_PERSON 2
int GetForceCamera(void); int GetForceCamera(CBasePlayer *pObserver);
void UpdateClientEffects(CBasePlayer *pObserver, int oldMode); void UpdateClientEffects(CBasePlayer *pObserver, int oldMode);
#endif // OBSERVER_H #endif // OBSERVER_H

View File

@ -21,8 +21,8 @@ TYPEDESCRIPTION CPathTrack::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CPathCorner, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CPathCorner, m_SaveData)[1];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CPathTrack, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CPathTrack, m_SaveData)[5];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -55,7 +55,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
private: private:
float m_flWait; float m_flWait;

View File

@ -61,12 +61,12 @@ TYPEDESCRIPTION CGunTarget::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBasePlatTrain, m_SaveData)[3]; TYPEDESCRIPTION IMPL_CLASS(CBasePlatTrain, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncPlatRot, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CFuncPlatRot, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTrain, m_SaveData)[3]; TYPEDESCRIPTION IMPL_CLASS(CFuncTrain, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTrackTrain, m_SaveData)[12]; TYPEDESCRIPTION IMPL_CLASS(CFuncTrackTrain, m_SaveData)[12];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTrackChange, m_SaveData)[9]; TYPEDESCRIPTION IMPL_CLASS(CFuncTrackChange, m_SaveData)[9];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGunTarget, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CGunTarget, m_SaveData)[1];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -1621,12 +1621,12 @@ void CFuncTrackTrain::__MAKE_VHOOK(Precache)(void)
// no sound // no sound
pev->noise = 0; pev->noise = 0;
break; break;
case 1: PRECACHE_SOUND("plats/ttrain1.wav"); pev->noise = MAKE_STRING("plats/ttrain1.wav");break; case 1: PRECACHE_SOUND("plats/ttrain1.wav"); pev->noise = MAKE_STRING("plats/ttrain1.wav"); break;
case 2: PRECACHE_SOUND("plats/ttrain2.wav"); pev->noise = MAKE_STRING("plats/ttrain2.wav");break; case 2: PRECACHE_SOUND("plats/ttrain2.wav"); pev->noise = MAKE_STRING("plats/ttrain2.wav"); break;
case 3: PRECACHE_SOUND("plats/ttrain3.wav"); pev->noise = MAKE_STRING("plats/ttrain3.wav");break; case 3: PRECACHE_SOUND("plats/ttrain3.wav"); pev->noise = MAKE_STRING("plats/ttrain3.wav"); break;
case 4: PRECACHE_SOUND("plats/ttrain4.wav"); pev->noise = MAKE_STRING("plats/ttrain4.wav");break; case 4: PRECACHE_SOUND("plats/ttrain4.wav"); pev->noise = MAKE_STRING("plats/ttrain4.wav"); break;
case 5: PRECACHE_SOUND("plats/ttrain6.wav"); pev->noise = MAKE_STRING("plats/ttrain6.wav");break; case 5: PRECACHE_SOUND("plats/ttrain6.wav"); pev->noise = MAKE_STRING("plats/ttrain6.wav"); break;
case 6: PRECACHE_SOUND("plats/ttrain7.wav"); pev->noise = MAKE_STRING("plats/ttrain7.wav");break; case 6: PRECACHE_SOUND("plats/ttrain7.wav"); pev->noise = MAKE_STRING("plats/ttrain7.wav"); break;
} }
PRECACHE_SOUND("plats/ttrain_brake1.wav"); PRECACHE_SOUND("plats/ttrain_brake1.wav");

View File

@ -75,7 +75,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3]; static TYPEDESCRIPTION IMPL(m_SaveData)[3];
public: public:
BYTE m_bMoveSnd; BYTE m_bMoveSnd;
@ -171,7 +171,7 @@ public:
void RotMove(Vector &destAngle, float time); void RotMove(Vector &destAngle, float time);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
public: public:
Vector m_end; Vector m_end;
@ -214,7 +214,7 @@ public:
void EXPORT Next(void); void EXPORT Next(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3]; static TYPEDESCRIPTION IMPL(m_SaveData)[3];
public: public:
Vector m_vStartPosition; Vector m_vStartPosition;
@ -308,7 +308,7 @@ public:
} }
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[9]; static TYPEDESCRIPTION IMPL(m_SaveData)[9];
public: public:
CPathTrack *m_trackTop; CPathTrack *m_trackTop;
@ -350,7 +350,7 @@ public:
virtual int Restore(CRestore &restore); virtual int Restore(CRestore &restore);
virtual int ObjectCaps(void) virtual int ObjectCaps(void)
{ {
return CBaseEntity::ObjectCaps() & ~FCAP_ACROSS_TRANSITION; return (CBaseEntity::ObjectCaps() & ~FCAP_ACROSS_TRANSITION);
} }
virtual void Activate(void); virtual void Activate(void);
virtual int Classify(void) virtual int Classify(void)
@ -386,7 +386,7 @@ public:
void Stop(void); void Stop(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
private: private:
BOOL m_on; BOOL m_on;

View File

@ -275,8 +275,8 @@ int gmsgShowTimer;
BOOL gInitHUD; BOOL gInitHUD;
cvar_t *sv_aim; cvar_t *sv_aim;
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CRevertSaved, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CRevertSaved, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBasePlayer, m_playerSaveData)[40]; TYPEDESCRIPTION IMPL_CLASS(CBasePlayer, m_playerSaveData)[40];
WeaponStruct g_weaponStruct[ MAX_WEAPONS ]; WeaponStruct g_weaponStruct[ MAX_WEAPONS ];
char *(*CDeadHEV::pm_szPoses)[4]; char *(*CDeadHEV::pm_szPoses)[4];
@ -395,7 +395,7 @@ void WriteSigonMessages(void)
{ {
for (int i = 0; i < MAX_WEAPONS; i++) for (int i = 0; i < MAX_WEAPONS; i++)
{ {
ItemInfo &II = IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, ItemInfoArray)[i]; ItemInfo &II = IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[i];
if (!II.iId) if (!II.iId)
continue; continue;
@ -1520,7 +1520,7 @@ void packPlayerItem(CBasePlayer *pPlayer, CBasePlayerItem *pItem, bool packAmmo)
if (packAmmo) if (packAmmo)
{ {
pWeaponBox->PackAmmo(MAKE_STRING(IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, ItemInfoArray)[pItem->m_iId].pszAmmo1), pPlayer->m_rgAmmo[pItem->PrimaryAmmoIndex()]); pWeaponBox->PackAmmo(MAKE_STRING(IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[pItem->m_iId].pszAmmo1), pPlayer->m_rgAmmo[pItem->PrimaryAmmoIndex()]);
} }
SET_MODEL(ENT(pWeaponBox->pev), modelName); SET_MODEL(ENT(pWeaponBox->pev), modelName);
} }
@ -5587,7 +5587,7 @@ int CBasePlayer::__MAKE_VHOOK(Save)(CSave &save)
if (!CBaseMonster::Save(save)) if (!CBaseMonster::Save(save))
return 0; return 0;
return save.WriteFields("PLAYER", this, IMPLEMENT_ARRAY_CLASS(CBasePlayer, m_playerSaveData), ARRAYSIZE(IMPLEMENT_ARRAY_CLASS(CBasePlayer, m_playerSaveData))); return save.WriteFields("PLAYER", this, IMPL_CLASS(CBasePlayer, m_playerSaveData), ARRAYSIZE(IMPL_CLASS(CBasePlayer, m_playerSaveData)));
} }
/* <153355> ../cstrike/dlls/player.cpp:6685 */ /* <153355> ../cstrike/dlls/player.cpp:6685 */
@ -5622,7 +5622,7 @@ int CBasePlayer::__MAKE_VHOOK(Restore)(CRestore &restore)
if (!CBaseMonster::Restore(restore)) if (!CBaseMonster::Restore(restore))
return 0; return 0;
int status = restore.ReadFields("PLAYER", this, IMPLEMENT_ARRAY_CLASS(CBasePlayer, m_playerSaveData), ARRAYSIZE(IMPLEMENT_ARRAY_CLASS(CBasePlayer, m_playerSaveData))); int status = restore.ReadFields("PLAYER", this, IMPL_CLASS(CBasePlayer, m_playerSaveData), ARRAYSIZE(IMPL_CLASS(CBasePlayer, m_playerSaveData)));
SAVERESTOREDATA *pSaveData = (SAVERESTOREDATA *)gpGlobals->pSaveData; SAVERESTOREDATA *pSaveData = (SAVERESTOREDATA *)gpGlobals->pSaveData;
// landmark isn't present. // landmark isn't present.
@ -6622,10 +6622,10 @@ int CBasePlayer::GetAmmoIndex(const char *psz)
for (int i = 1; i < MAX_AMMO_SLOTS; i++) for (int i = 1; i < MAX_AMMO_SLOTS; i++)
{ {
if (!IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName) if (!IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName)
continue; continue;
if (!Q_stricmp(psz, IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName)) if (!Q_stricmp(psz, IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName))
return i; return i;
} }
return -1; return -1;

View File

@ -270,7 +270,7 @@ struct WeaponStruct
};/* size: 20, cachelines: 1, members: 5 */ };/* size: 20, cachelines: 1, members: 5 */
#define DEFINE_WEAPON(m_wpnid, m_cost, m_slotnum, m_acost)\ #define DEFINE_WEAPON(m_wpnid, m_cost, m_slotnum, m_acost)\
{ m_wpnid, m_cost, 3, m_slotnum, m_acost } { m_wpnid, m_cost, 3, m_slotnum, m_acost }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -758,7 +758,6 @@ public:
//m_musicState = INTENSE; //m_musicState = INTENSE;
//m_intenseTimestamp = gpGlobals->time; //m_intenseTimestamp = gpGlobals->time;
} }
public: public:
enum { MaxLocationLen = 32 }; enum { MaxLocationLen = 32 };
@ -913,7 +912,7 @@ public:
float m_flNextDecalTime; float m_flNextDecalTime;
char m_szTeamName[ TEAM_NAME_LENGTH ]; char m_szTeamName[ TEAM_NAME_LENGTH ];
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_playerSaveData)[40]; static TYPEDESCRIPTION IMPL(m_playerSaveData)[40];
/*protected:*/ /*protected:*/
int m_modelIndexPlayer; int m_modelIndexPlayer;

View File

@ -89,7 +89,7 @@ public:
} }
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
public: public:
float m_messageTime; float m_messageTime;

View File

@ -40,6 +40,7 @@
#define IMPLEMENT_ARRAY(var)\ #define IMPLEMENT_ARRAY(var)\
var var
#define IMPL_CLASS IMPLEMENT_ARRAY_CLASS
#define IMPLEMENT_ARRAY_CLASS(baseClass,var)\ #define IMPLEMENT_ARRAY_CLASS(baseClass,var)\
baseClass::var baseClass::var
@ -49,6 +50,7 @@
#define IMPLEMENT_ARRAY(var)\ #define IMPLEMENT_ARRAY(var)\
(*p##var) (*p##var)
#define IMPL_CLASS IMPLEMENT_ARRAY_CLASS
#define IMPLEMENT_ARRAY_CLASS(baseClass,var)\ #define IMPLEMENT_ARRAY_CLASS(baseClass,var)\
(*baseClass::p##var) (*baseClass::p##var)

View File

@ -34,17 +34,17 @@ BOOL CHalfLifeRules::__MAKE_VHOOK(IsCoOp)(void)
/* <166df5> ../cstrike/dlls/singleplay_gamerules.cpp:68 */ /* <166df5> ../cstrike/dlls/singleplay_gamerules.cpp:68 */
BOOL CHalfLifeRules::__MAKE_VHOOK(FShouldSwitchWeapon)(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon) BOOL CHalfLifeRules::__MAKE_VHOOK(FShouldSwitchWeapon)(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{ {
if (!pPlayer->m_pActiveItem) if (!pPlayer->m_pActiveItem)
{ {
// player doesn't have an active item! // player doesn't have an active item!
return TRUE; return TRUE;
} }
if (!pPlayer->m_pActiveItem->CanHolster()) if (!pPlayer->m_pActiveItem->CanHolster())
{ {
return FALSE; return FALSE;
} }
return TRUE; return TRUE;
} }
@ -75,7 +75,7 @@ void CHalfLifeRules::__MAKE_VHOOK(ClientDisconnected)(edict_t *pClient)
/* <166f3f> ../cstrike/dlls/singleplay_gamerules.cpp:110 */ /* <166f3f> ../cstrike/dlls/singleplay_gamerules.cpp:110 */
float CHalfLifeRules::__MAKE_VHOOK(FlPlayerFallDamage)(CBasePlayer *pPlayer) float CHalfLifeRules::__MAKE_VHOOK(FlPlayerFallDamage)(CBasePlayer *pPlayer)
{ {
// subtract off the speed at which a player is allowed to fall without being hurt, // subtract off the speed at which a player is allowed to fall without being hurt,
// so damage will be based on speed beyond that, not the entire fall // so damage will be based on speed beyond that, not the entire fall
pPlayer->m_flFallVelocity -= PLAYER_MAX_SAFE_FALL_SPEED; pPlayer->m_flFallVelocity -= PLAYER_MAX_SAFE_FALL_SPEED;
return pPlayer->m_flFallVelocity * DAMAGE_FOR_FALL_SPEED; return pPlayer->m_flFallVelocity * DAMAGE_FOR_FALL_SPEED;
@ -171,14 +171,14 @@ edict_t *CHalfLifeRules::__MAKE_VHOOK(GetPlayerSpawnSpot)(CBasePlayer *pPlayer)
ALERT(at_error, "PutClientInServer: no info_player_start on level"); ALERT(at_error, "PutClientInServer: no info_player_start on level");
return INDEXENT(0); return INDEXENT(0);
} }
pPlayer->pev->origin = pSpot->pev->origin + Vector(0, 0, 1); pPlayer->pev->origin = pSpot->pev->origin + Vector(0, 0, 1);
pPlayer->pev->v_angle = g_vecZero; pPlayer->pev->v_angle = g_vecZero;
pPlayer->pev->velocity = g_vecZero; pPlayer->pev->velocity = g_vecZero;
pPlayer->pev->angles = pSpot->pev->angles; pPlayer->pev->angles = pSpot->pev->angles;
pPlayer->pev->punchangle = g_vecZero; pPlayer->pev->punchangle = g_vecZero;
pPlayer->pev->fixangle = 1; pPlayer->pev->fixangle = 1;
return pSpot->edict(); return pSpot->edict();
} }
@ -269,7 +269,7 @@ int CHalfLifeRules::__MAKE_VHOOK(DeadPlayerAmmo)(CBasePlayer *pPlayer)
/* <16757c> ../cstrike/dlls/singleplay_gamerules.cpp:343 */ /* <16757c> ../cstrike/dlls/singleplay_gamerules.cpp:343 */
int CHalfLifeRules::__MAKE_VHOOK(PlayerRelationship)(CBasePlayer *pPlayer, CBaseEntity *pTarget) int CHalfLifeRules::__MAKE_VHOOK(PlayerRelationship)(CBasePlayer *pPlayer, CBaseEntity *pTarget)
{ {
// why would a single player in half life need this? // why would a single player in half life need this?
return GR_NOTTEAMMATE; return GR_NOTTEAMMATE;
} }
@ -281,199 +281,199 @@ BOOL CHalfLifeRules::__MAKE_VHOOK(FAllowMonsters)(void)
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void CHalfLifeRules::Think(void) void CHalfLifeRules::Think(void)
{ {
Think_(); Think_();
} }
BOOL CHalfLifeRules::IsAllowedToSpawn(CBaseEntity *pEntity) BOOL CHalfLifeRules::IsAllowedToSpawn(CBaseEntity *pEntity)
{ {
return IsAllowedToSpawn_(pEntity); return IsAllowedToSpawn_(pEntity);
} }
BOOL CHalfLifeRules::FShouldSwitchWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon) BOOL CHalfLifeRules::FShouldSwitchWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{ {
return FShouldSwitchWeapon_(pPlayer, pWeapon); return FShouldSwitchWeapon_(pPlayer, pWeapon);
} }
BOOL CHalfLifeRules::GetNextBestWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pCurrentWeapon) BOOL CHalfLifeRules::GetNextBestWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pCurrentWeapon)
{ {
return GetNextBestWeapon_(pPlayer, pCurrentWeapon); return GetNextBestWeapon_(pPlayer, pCurrentWeapon);
} }
BOOL CHalfLifeRules::IsMultiplayer(void) BOOL CHalfLifeRules::IsMultiplayer(void)
{ {
return IsMultiplayer_(); return IsMultiplayer_();
} }
BOOL CHalfLifeRules::IsDeathmatch(void) BOOL CHalfLifeRules::IsDeathmatch(void)
{ {
return IsDeathmatch_(); return IsDeathmatch_();
} }
BOOL CHalfLifeRules::IsCoOp(void) BOOL CHalfLifeRules::IsCoOp(void)
{ {
return IsCoOp_(); return IsCoOp_();
} }
BOOL CHalfLifeRules::ClientConnected(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128]) BOOL CHalfLifeRules::ClientConnected(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128])
{ {
return ClientConnected_(pEntity, pszName, pszAddress, szRejectReason); return ClientConnected_(pEntity, pszName, pszAddress, szRejectReason);
} }
void CHalfLifeRules::InitHUD(CBasePlayer *pl) void CHalfLifeRules::InitHUD(CBasePlayer *pl)
{ {
InitHUD_(pl); InitHUD_(pl);
} }
void CHalfLifeRules::ClientDisconnected(edict_t *pClient) void CHalfLifeRules::ClientDisconnected(edict_t *pClient)
{ {
ClientDisconnected_(pClient); ClientDisconnected_(pClient);
} }
float CHalfLifeRules::FlPlayerFallDamage(CBasePlayer *pPlayer) float CHalfLifeRules::FlPlayerFallDamage(CBasePlayer *pPlayer)
{ {
return FlPlayerFallDamage_(pPlayer); return FlPlayerFallDamage_(pPlayer);
} }
void CHalfLifeRules::PlayerSpawn(CBasePlayer *pPlayer) void CHalfLifeRules::PlayerSpawn(CBasePlayer *pPlayer)
{ {
PlayerSpawn_(pPlayer); PlayerSpawn_(pPlayer);
} }
void CHalfLifeRules::PlayerThink(CBasePlayer *pPlayer) void CHalfLifeRules::PlayerThink(CBasePlayer *pPlayer)
{ {
PlayerThink_(pPlayer); PlayerThink_(pPlayer);
} }
BOOL CHalfLifeRules::FPlayerCanRespawn(CBasePlayer *pPlayer) BOOL CHalfLifeRules::FPlayerCanRespawn(CBasePlayer *pPlayer)
{ {
return FPlayerCanRespawn_(pPlayer); return FPlayerCanRespawn_(pPlayer);
} }
float CHalfLifeRules::FlPlayerSpawnTime(CBasePlayer *pPlayer) float CHalfLifeRules::FlPlayerSpawnTime(CBasePlayer *pPlayer)
{ {
return FlPlayerSpawnTime_(pPlayer); return FlPlayerSpawnTime_(pPlayer);
} }
edict_t *CHalfLifeRules::GetPlayerSpawnSpot(CBasePlayer *pPlayer) edict_t *CHalfLifeRules::GetPlayerSpawnSpot(CBasePlayer *pPlayer)
{ {
return GetPlayerSpawnSpot_(pPlayer); return GetPlayerSpawnSpot_(pPlayer);
} }
BOOL CHalfLifeRules::AllowAutoTargetCrosshair(void) BOOL CHalfLifeRules::AllowAutoTargetCrosshair(void)
{ {
return AllowAutoTargetCrosshair_(); return AllowAutoTargetCrosshair_();
} }
int CHalfLifeRules::IPointsForKill(CBasePlayer *pAttacker, CBasePlayer *pKilled) int CHalfLifeRules::IPointsForKill(CBasePlayer *pAttacker, CBasePlayer *pKilled)
{ {
return IPointsForKill_(pAttacker, pKilled); return IPointsForKill_(pAttacker, pKilled);
} }
void CHalfLifeRules::PlayerKilled(CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor) void CHalfLifeRules::PlayerKilled(CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor)
{ {
PlayerKilled_(pVictim, pKiller, pInflictor); PlayerKilled_(pVictim, pKiller, pInflictor);
} }
void CHalfLifeRules::DeathNotice(CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor) void CHalfLifeRules::DeathNotice(CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor)
{ {
DeathNotice_(pVictim, pKiller, pInflictor); DeathNotice_(pVictim, pKiller, pInflictor);
} }
void CHalfLifeRules::PlayerGotWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon) void CHalfLifeRules::PlayerGotWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{ {
PlayerGotWeapon_(pPlayer, pWeapon); PlayerGotWeapon_(pPlayer, pWeapon);
} }
int CHalfLifeRules::WeaponShouldRespawn(CBasePlayerItem *pWeapon) int CHalfLifeRules::WeaponShouldRespawn(CBasePlayerItem *pWeapon)
{ {
return WeaponShouldRespawn_(pWeapon); return WeaponShouldRespawn_(pWeapon);
} }
float CHalfLifeRules::FlWeaponRespawnTime(CBasePlayerItem *pWeapon) float CHalfLifeRules::FlWeaponRespawnTime(CBasePlayerItem *pWeapon)
{ {
return FlWeaponRespawnTime_(pWeapon); return FlWeaponRespawnTime_(pWeapon);
} }
float CHalfLifeRules::FlWeaponTryRespawn(CBasePlayerItem *pWeapon) float CHalfLifeRules::FlWeaponTryRespawn(CBasePlayerItem *pWeapon)
{ {
return FlWeaponTryRespawn_(pWeapon); return FlWeaponTryRespawn_(pWeapon);
} }
Vector CHalfLifeRules::VecWeaponRespawnSpot(CBasePlayerItem *pWeapon) Vector CHalfLifeRules::VecWeaponRespawnSpot(CBasePlayerItem *pWeapon)
{ {
return VecWeaponRespawnSpot_(pWeapon); return VecWeaponRespawnSpot_(pWeapon);
} }
BOOL CHalfLifeRules::CanHaveItem(CBasePlayer *pPlayer, CItem *pItem) BOOL CHalfLifeRules::CanHaveItem(CBasePlayer *pPlayer, CItem *pItem)
{ {
return CanHaveItem_(pPlayer, pItem); return CanHaveItem_(pPlayer, pItem);
} }
void CHalfLifeRules::PlayerGotItem(CBasePlayer *pPlayer, CItem *pItem) void CHalfLifeRules::PlayerGotItem(CBasePlayer *pPlayer, CItem *pItem)
{ {
PlayerGotItem_(pPlayer, pItem); PlayerGotItem_(pPlayer, pItem);
} }
int CHalfLifeRules::ItemShouldRespawn(CItem *pItem) int CHalfLifeRules::ItemShouldRespawn(CItem *pItem)
{ {
return ItemShouldRespawn_(pItem); return ItemShouldRespawn_(pItem);
} }
float CHalfLifeRules::FlItemRespawnTime(CItem *pItem) float CHalfLifeRules::FlItemRespawnTime(CItem *pItem)
{ {
return FlItemRespawnTime_(pItem); return FlItemRespawnTime_(pItem);
} }
Vector CHalfLifeRules::VecItemRespawnSpot(CItem *pItem) Vector CHalfLifeRules::VecItemRespawnSpot(CItem *pItem)
{ {
return VecItemRespawnSpot_(pItem); return VecItemRespawnSpot_(pItem);
} }
void CHalfLifeRules::PlayerGotAmmo(CBasePlayer *pPlayer, char *szName, int iCount) void CHalfLifeRules::PlayerGotAmmo(CBasePlayer *pPlayer, char *szName, int iCount)
{ {
PlayerGotAmmo_(pPlayer, szName, iCount); PlayerGotAmmo_(pPlayer, szName, iCount);
} }
int CHalfLifeRules::AmmoShouldRespawn(CBasePlayerAmmo *pAmmo) int CHalfLifeRules::AmmoShouldRespawn(CBasePlayerAmmo *pAmmo)
{ {
return AmmoShouldRespawn_(pAmmo); return AmmoShouldRespawn_(pAmmo);
} }
float CHalfLifeRules::FlAmmoRespawnTime(CBasePlayerAmmo *pAmmo) float CHalfLifeRules::FlAmmoRespawnTime(CBasePlayerAmmo *pAmmo)
{ {
return FlAmmoRespawnTime_(pAmmo); return FlAmmoRespawnTime_(pAmmo);
} }
Vector CHalfLifeRules::VecAmmoRespawnSpot(CBasePlayerAmmo *pAmmo) Vector CHalfLifeRules::VecAmmoRespawnSpot(CBasePlayerAmmo *pAmmo)
{ {
return VecAmmoRespawnSpot_(pAmmo); return VecAmmoRespawnSpot_(pAmmo);
} }
float CHalfLifeRules::FlHealthChargerRechargeTime(void) float CHalfLifeRules::FlHealthChargerRechargeTime(void)
{ {
return FlHealthChargerRechargeTime_(); return FlHealthChargerRechargeTime_();
} }
int CHalfLifeRules::DeadPlayerWeapons(CBasePlayer *pPlayer) int CHalfLifeRules::DeadPlayerWeapons(CBasePlayer *pPlayer)
{ {
return DeadPlayerWeapons_(pPlayer); return DeadPlayerWeapons_(pPlayer);
} }
int CHalfLifeRules::DeadPlayerAmmo(CBasePlayer *pPlayer) int CHalfLifeRules::DeadPlayerAmmo(CBasePlayer *pPlayer)
{ {
return DeadPlayerAmmo_(pPlayer); return DeadPlayerAmmo_(pPlayer);
} }
int CHalfLifeRules::PlayerRelationship(CBasePlayer *pPlayer, CBaseEntity *pTarget) int CHalfLifeRules::PlayerRelationship(CBasePlayer *pPlayer, CBaseEntity *pTarget)
{ {
return PlayerRelationship_(pPlayer, pTarget); return PlayerRelationship_(pPlayer, pTarget);
} }
BOOL CHalfLifeRules::FAllowMonsters(void) BOOL CHalfLifeRules::FAllowMonsters(void)
{ {
return FAllowMonsters_(); return FAllowMonsters_();
} }
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -38,20 +38,20 @@
struct skilldata_t struct skilldata_t
{ {
int iSkillLevel; int iSkillLevel;
float plrDmg9MM; float plrDmg9MM;
float plrDmg357; float plrDmg357;
float plrDmgMP5; float plrDmgMP5;
float plrDmgM203Grenade; float plrDmgM203Grenade;
float plrDmgBuckshot; float plrDmgBuckshot;
float plrDmgCrossbowClient; float plrDmgCrossbowClient;
float plrDmgRPG; float plrDmgRPG;
float monDmg9MM; float monDmg9MM;
float monDmgMP5; float monDmgMP5;
float monDmg12MM; float monDmg12MM;
float suitchargerCapacity; float suitchargerCapacity;
float batteryCapacity; float batteryCapacity;
float healthchargerCapacity; float healthchargerCapacity;
float healthkitCapacity; float healthkitCapacity;
};/* size: 60, cachelines: 1, members: 15 */ };/* size: 60, cachelines: 1, members: 15 */

View File

@ -69,9 +69,9 @@ dynpitchvol_t rgdpvpreset[CDPVPRESETMAX];
int fSentencesInit; int fSentencesInit;
int gcallsentences; int gcallsentences;
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CAmbientGeneric, m_SaveData)[4]; TYPEDESCRIPTION IMPL_CLASS(CAmbientGeneric, m_SaveData)[4];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CEnvSound, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CEnvSound, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CSpeaker, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CSpeaker, m_SaveData)[1];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -140,7 +140,7 @@ public:
void InitModulationParms(void); void InitModulationParms(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[4]; static TYPEDESCRIPTION IMPL(m_SaveData)[4];
float m_flAttenuation; // attenuation value float m_flAttenuation; // attenuation value
dynpitchvol_t m_dpv; dynpitchvol_t m_dpv;
@ -170,7 +170,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
float m_flRadius; float m_flRadius;
float m_flRoomtype; float m_flRoomtype;
@ -205,7 +205,7 @@ public:
void EXPORT ToggleUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value); void EXPORT ToggleUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
void EXPORT SpeakerThink(void); void EXPORT SpeakerThink(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
int m_preset; // preset number int m_preset; // preset number

View File

@ -38,8 +38,8 @@ TYPEDESCRIPTION CBaseToggle::m_SaveData[] =
#else // HOOK_GAMEDLL #else // HOOK_GAMEDLL
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseDelay, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CBaseDelay, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseToggle, m_SaveData)[19]; TYPEDESCRIPTION IMPL_CLASS(CBaseToggle, m_SaveData)[19];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -26,8 +26,8 @@ TYPEDESCRIPTION CBaseGrenCatch::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncWeaponCheck, m_SaveData)[6]; TYPEDESCRIPTION IMPL_CLASS(CFuncWeaponCheck, m_SaveData)[6];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseGrenCatch, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CBaseGrenCatch, m_SaveData)[5];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -106,7 +106,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
int m_NeedGrenadeType; int m_NeedGrenadeType;
string_t sTriggerOnGrenade; string_t sTriggerOnGrenade;
@ -137,7 +137,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[6]; static TYPEDESCRIPTION IMPL(m_SaveData)[6];
private: private:
string_t sTriggerWithItems; string_t sTriggerWithItems;

View File

@ -88,7 +88,7 @@ public:
CPathTrack *GetPrevious(void); CPathTrack *GetPrevious(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
float m_length; float m_length;
string_t m_altName; string_t m_altName;
@ -150,7 +150,7 @@ public:
static CFuncTrackTrain *Instance(edict_t *pent); static CFuncTrackTrain *Instance(edict_t *pent);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[12]; static TYPEDESCRIPTION IMPL(m_SaveData)[12];
CPathTrack *m_ppath; CPathTrack *m_ppath;
float m_length; float m_length;
@ -234,7 +234,7 @@ public:
static CFuncVehicle *Instance(edict_t *pent); static CFuncVehicle *Instance(edict_t *pent);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[12]; static TYPEDESCRIPTION IMPL(m_SaveData)[12];
CPathTrack *m_ppath; CPathTrack *m_ppath;
float m_length; float m_length;

View File

@ -68,13 +68,13 @@ FILE_GLOBAL char st_szNextSpot[cchMapNameMost];
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFrictionModifier, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CFrictionModifier, m_SaveData)[1];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CAutoTrigger, m_SaveData)[2]; TYPEDESCRIPTION IMPL_CLASS(CAutoTrigger, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CTriggerRelay, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CTriggerRelay, m_SaveData)[1];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CMultiManager, m_SaveData)[5]; TYPEDESCRIPTION IMPL_CLASS(CMultiManager, m_SaveData)[5];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CChangeLevel, m_SaveData)[4]; TYPEDESCRIPTION IMPL_CLASS(CChangeLevel, m_SaveData)[4];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CTriggerChangeTarget, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CTriggerChangeTarget, m_SaveData)[1];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CTriggerCamera, m_SaveData)[13]; TYPEDESCRIPTION IMPL_CLASS(CTriggerCamera, m_SaveData)[13];
char st_szNextMap[cchMapNameMost]; char st_szNextMap[cchMapNameMost];
char st_szNextSpot[cchMapNameMost]; char st_szNextSpot[cchMapNameMost];

View File

@ -38,16 +38,16 @@
#define MAX_ITEM_COUNTS 32 #define MAX_ITEM_COUNTS 32
#define MAX_ENTITY 512 // We can only ever move 512 entities across a transition #define MAX_ENTITY 512 // We can only ever move 512 entities across a transition
// triggers // triggers
#define SF_TRIGGER_ALLOWMONSTERS 1 // monsters allowed to fire this trigger #define SF_TRIGGER_ALLOWMONSTERS 1 // monsters allowed to fire this trigger
#define SF_TRIGGER_NOCLIENTS 2 // players not allowed to fire this trigger #define SF_TRIGGER_NOCLIENTS 2 // players not allowed to fire this trigger
#define SF_TRIGGER_PUSHABLES 4 // only pushables can fire this trigger #define SF_TRIGGER_PUSHABLES 4 // only pushables can fire this trigger
#define SF_TRIGGER_PUSH_START_OFF 2 // spawnflag that makes trigger_push spawn turned OFF #define SF_TRIGGER_PUSH_START_OFF 2 // spawnflag that makes trigger_push spawn turned OFF
#define SF_TRIGGER_HURT_TARGETONCE 1 // Only fire hurt target once #define SF_TRIGGER_HURT_TARGETONCE 1 // Only fire hurt target once
#define SF_TRIGGER_HURT_START_OFF 2 // spawnflag that makes trigger_push spawn turned OFF #define SF_TRIGGER_HURT_START_OFF 2 // spawnflag that makes trigger_push spawn turned OFF
#define SF_TRIGGER_HURT_NO_CLIENTS 8 // spawnflag that makes trigger_push spawn turned OFF #define SF_TRIGGER_HURT_NO_CLIENTS 8 // spawnflag that makes trigger_push spawn turned OFF
#define SF_TRIGGER_HURT_CLIENTONLYFIRE 16 // trigger hurt will only fire its target if it is hurting a client #define SF_TRIGGER_HURT_CLIENTONLYFIRE 16 // trigger hurt will only fire its target if it is hurting a client
#define SF_TRIGGER_HURT_CLIENTONLYTOUCH 32 // only clients may touch this trigger. #define SF_TRIGGER_HURT_CLIENTONLYTOUCH 32 // only clients may touch this trigger.
#define SF_AUTO_FIREONCE 0x0001 #define SF_AUTO_FIREONCE 0x0001
@ -62,11 +62,11 @@
#define SF_CAMERA_PLAYER_TARGET 2 #define SF_CAMERA_PLAYER_TARGET 2
#define SF_CAMERA_PLAYER_TAKECONTROL 4 #define SF_CAMERA_PLAYER_TAKECONTROL 4
// Flags to indicate masking off various render parameters that are normally copied to the targets // Flags to indicate masking off various render parameters that are normally copied to the targets
#define SF_RENDER_MASKFX (1<<0) #define SF_RENDER_MASKFX (1 << 0)
#define SF_RENDER_MASKAMT (1<<1) #define SF_RENDER_MASKAMT (1 << 1)
#define SF_RENDER_MASKMODE (1<<2) #define SF_RENDER_MASKMODE (1 << 2)
#define SF_RENDER_MASKCOLOR (1<<3) #define SF_RENDER_MASKCOLOR (1 << 3)
class CFrictionModifier: public CBaseEntity class CFrictionModifier: public CBaseEntity
{ {
@ -93,13 +93,13 @@ public:
void EXPORT ChangeFriction(CBaseEntity *pOther); void EXPORT ChangeFriction(CBaseEntity *pOther);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
float m_frictionFraction; float m_frictionFraction;
};/* size: 156, cachelines: 3, members: 3 */ };/* size: 156, cachelines: 3, members: 3 */
// This trigger will fire when the level spawns (or respawns if not fire once) // This trigger will fire when the level spawns (or respawns if not fire once)
// It will check a global state before firing. It supports delay and killtargets // It will check a global state before firing. It supports delay and killtargets
/* <19e39c> ../cstrike/dlls/triggers.cpp:108 */ /* <19e39c> ../cstrike/dlls/triggers.cpp:108 */
@ -129,7 +129,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2]; static TYPEDESCRIPTION IMPL(m_SaveData)[2];
int m_globalstate; int m_globalstate;
USE_TYPE triggerType; USE_TYPE triggerType;
@ -161,15 +161,15 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
USE_TYPE triggerType; USE_TYPE triggerType;
};/* size: 164, cachelines: 3, members: 3 */ };/* size: 164, cachelines: 3, members: 3 */
// The Multimanager Entity - when fired, will fire up to 16 targets // The Multimanager Entity - when fired, will fire up to 16 targets
// at specified times. // at specified times.
// FLAG: THREAD (create clones when triggered) // FLAG: THREAD (create clones when triggered)
// FLAG: CLONE (this is a clone for a threaded execution) // FLAG: CLONE (this is a clone for a threaded execution)
/* <19e4d6> ../cstrike/dlls/triggers.cpp:264 */ /* <19e4d6> ../cstrike/dlls/triggers.cpp:264 */
@ -231,7 +231,7 @@ private:
CMultiManager *Clone(void); CMultiManager *Clone(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5]; static TYPEDESCRIPTION IMPL(m_SaveData)[5];
int m_cTargets;//312 int m_cTargets;//312
int m_index; int m_index;
@ -242,9 +242,9 @@ public:
};/* size: 452, cachelines: 8, members: 7 */ };/* size: 452, cachelines: 8, members: 7 */
/* Linux - 452 | Windows - 432 */ /* Linux - 452 | Windows - 432 */
// Render parameters trigger // Render parameters trigger
// //
// This entity will copy its render parameters (renderfx, rendermode, rendercolor, renderamt) // This entity will copy its render parameters (renderfx, rendermode, rendercolor, renderamt)
// to its targets when triggered. // to its targets when triggered.
/* <19e50c> ../cstrike/dlls/triggers.cpp:525 */ /* <19e50c> ../cstrike/dlls/triggers.cpp:525 */
@ -292,7 +292,7 @@ public:
};/* size: 312, cachelines: 5, members: 1 */ };/* size: 312, cachelines: 5, members: 1 */
// trigger_hurt - hurts anything that touches it. if the trigger has a targetname, firing it will toggle state // trigger_hurt - hurts anything that touches it. if the trigger has a targetname, firing it will toggle state
// int gfToggleState = 0; // used to determine when all radiation trigger hurts have called 'RadiationThink' // int gfToggleState = 0; // used to determine when all radiation trigger hurts have called 'RadiationThink'
/* <19e5b2> ../cstrike/dlls/triggers.cpp:629 */ /* <19e5b2> ../cstrike/dlls/triggers.cpp:629 */
@ -377,20 +377,20 @@ public:
};/* size: 152, cachelines: 3, members: 1 */ };/* size: 152, cachelines: 3, members: 1 */
// QUAKED trigger_multiple (.5 .5 .5) ? notouch // QUAKED trigger_multiple (.5 .5 .5) ? notouch
// Variable sized repeatable trigger. Must be targeted at one or more entities. // Variable sized repeatable trigger. Must be targeted at one or more entities.
// If "health" is set, the trigger must be killed to activate each time. // If "health" is set, the trigger must be killed to activate each time.
// If "delay" is set, the trigger waits some time after activating before firing. // If "delay" is set, the trigger waits some time after activating before firing.
// "wait" : Seconds between triggerings. (.2 default) // "wait" : Seconds between triggerings. (.2 default)
// If notouch is set, the trigger is only fired by other entities, not by touching. // If notouch is set, the trigger is only fired by other entities, not by touching.
// NOTOUCH has been obsoleted by trigger_relay! // NOTOUCH has been obsoleted by trigger_relay!
// sounds // sounds
// 1) secret // 1) secret
// 2) beep beep // 2) beep beep
// 3) large switch // 3) large switch
// 4) // 4)
// NEW // NEW
// if a trigger has a NETNAME, that NETNAME will become the TARGET of the triggered object. // if a trigger has a NETNAME, that NETNAME will become the TARGET of the triggered object.
/* <19e725> ../cstrike/dlls/triggers.cpp:1080 */ /* <19e725> ../cstrike/dlls/triggers.cpp:1080 */
class CTriggerMultiple: public CBaseTrigger class CTriggerMultiple: public CBaseTrigger
@ -406,16 +406,16 @@ public:
};/* size: 312, cachelines: 5, members: 1 */ };/* size: 312, cachelines: 5, members: 1 */
// QUAKED trigger_once (.5 .5 .5) ? notouch // QUAKED trigger_once (.5 .5 .5) ? notouch
// Variable sized trigger. Triggers once, then removes itself. You must set the key "target" to the name of another object in the level that has a matching // Variable sized trigger. Triggers once, then removes itself. You must set the key "target" to the name of another object in the level that has a matching
// "targetname". If "health" is set, the trigger must be killed to activate. // "targetname". If "health" is set, the trigger must be killed to activate.
// If notouch is set, the trigger is only fired by other entities, not by touching. // If notouch is set, the trigger is only fired by other entities, not by touching.
// if "killtarget" is set, any objects that have a matching "target" will be removed when the trigger is fired. // if "killtarget" is set, any objects that have a matching "target" will be removed when the trigger is fired.
// if "angle" is set, the trigger will only fire when someone is facing the direction of the angle. Use "360" for an angle of 0. // if "angle" is set, the trigger will only fire when someone is facing the direction of the angle. Use "360" for an angle of 0.
// sounds // sounds
// 1) secret // 1) secret
// 2) beep beep // 2) beep beep
// 3) large switch // 3) large switch
// 4) // 4)
/* <19e77d> ../cstrike/dlls/triggers.cpp:1129 */ /* <19e77d> ../cstrike/dlls/triggers.cpp:1129 */
@ -432,11 +432,11 @@ public:
};/* size: 312, cachelines: 5, members: 1 */ };/* size: 312, cachelines: 5, members: 1 */
// QUAKED trigger_counter (.5 .5 .5) ? nomessage // QUAKED trigger_counter (.5 .5 .5) ? nomessage
// Acts as an intermediary for an action that takes multiple inputs. // Acts as an intermediary for an action that takes multiple inputs.
// If nomessage is not set, it will print "1 more.. " etc when triggered and // If nomessage is not set, it will print "1 more.. " etc when triggered and
// "sequence complete" when finished. After the counter has been triggered "cTriggersLeft" // "sequence complete" when finished. After the counter has been triggered "cTriggersLeft"
// times (default 2), it will fire all of it's targets and remove itself. // times (default 2), it will fire all of it's targets and remove itself.
/* <19e7d5> ../cstrike/dlls/triggers.cpp:1273 */ /* <19e7d5> ../cstrike/dlls/triggers.cpp:1273 */
class CTriggerCounter: public CBaseTrigger class CTriggerCounter: public CBaseTrigger
@ -492,7 +492,7 @@ public:
};/* size: 160, cachelines: 3, members: 1 */ };/* size: 160, cachelines: 3, members: 1 */
// QUAKED trigger_changelevel (0.5 0.5 0.5) ? NO_INTERMISSION // QUAKED trigger_changelevel (0.5 0.5 0.5) ? NO_INTERMISSION
// When the player touches this, he gets sent to the map listed in the "map" variable. Unless the NO_INTERMISSION flag is set, the view will go to the info_intermission spot and display stats. // When the player touches this, he gets sent to the map listed in the "map" variable. Unless the NO_INTERMISSION flag is set, the view will go to the info_intermission spot and display stats.
/* <19e906> ../cstrike/dlls/triggers.cpp:1345 */ /* <19e906> ../cstrike/dlls/triggers.cpp:1345 */
@ -526,7 +526,7 @@ public:
static int InTransitionVolume(CBaseEntity *pEntity, char *pVolumeName); static int InTransitionVolume(CBaseEntity *pEntity, char *pVolumeName);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[4]; static TYPEDESCRIPTION IMPL(m_SaveData)[4];
char m_szMapName[ cchMapNameMost ]; // trigger_changelevel only: next map char m_szMapName[ cchMapNameMost ]; // trigger_changelevel only: next map
char m_szLandmarkName[ cchMapNameMost ]; // trigger_changelevel only: landmark on next map char m_szLandmarkName[ cchMapNameMost ]; // trigger_changelevel only: landmark on next map
@ -747,7 +747,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1]; static TYPEDESCRIPTION IMPL(m_SaveData)[1];
private: private:
int m_iszNewTarget; int m_iszNewTarget;
@ -783,7 +783,7 @@ public:
void Move(void); void Move(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[13]; static TYPEDESCRIPTION IMPL(m_SaveData)[13];
EHANDLE m_hPlayer; EHANDLE m_hPlayer;
EHANDLE m_hTarget; EHANDLE m_hTarget;
@ -843,7 +843,7 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
extern char st_szNextMap[cchMapNameMost]; extern char st_szNextMap[cchMapNameMost];
extern char st_szNextSpot[cchMapNameMost]; extern char st_szNextSpot[cchMapNameMost];
void PlayCDTrack(int iTrack); void PlayCDTrack(int iTrack);
@ -853,40 +853,40 @@ NOXREF void NextLevel(void);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
// linked objects // linked objects
C_DLLEXPORT void func_friction(entvars_t *pev); C_DLLEXPORT void func_friction(entvars_t *pev);
C_DLLEXPORT void trigger_auto(entvars_t *pev); C_DLLEXPORT void trigger_auto(entvars_t *pev);
C_DLLEXPORT void trigger_relay(entvars_t *pev); C_DLLEXPORT void trigger_relay(entvars_t *pev);
C_DLLEXPORT void multi_manager(entvars_t *pev); C_DLLEXPORT void multi_manager(entvars_t *pev);
C_DLLEXPORT void env_render(entvars_t *pev); C_DLLEXPORT void env_render(entvars_t *pev);
C_DLLEXPORT void trigger(entvars_t *pev); C_DLLEXPORT void trigger(entvars_t *pev);
C_DLLEXPORT void trigger_hurt(entvars_t *pev); C_DLLEXPORT void trigger_hurt(entvars_t *pev);
C_DLLEXPORT void trigger_monsterjump(entvars_t *pev); C_DLLEXPORT void trigger_monsterjump(entvars_t *pev);
C_DLLEXPORT void trigger_cdaudio(entvars_t *pev); C_DLLEXPORT void trigger_cdaudio(entvars_t *pev);
C_DLLEXPORT void target_cdaudio(entvars_t *pev); C_DLLEXPORT void target_cdaudio(entvars_t *pev);
C_DLLEXPORT void trigger_multiple(entvars_t *pev); C_DLLEXPORT void trigger_multiple(entvars_t *pev);
C_DLLEXPORT void trigger_once(entvars_t *pev); C_DLLEXPORT void trigger_once(entvars_t *pev);
C_DLLEXPORT void trigger_counter(entvars_t *pev); C_DLLEXPORT void trigger_counter(entvars_t *pev);
C_DLLEXPORT void trigger_transition(entvars_t *pev); C_DLLEXPORT void trigger_transition(entvars_t *pev);
C_DLLEXPORT void fireanddie(entvars_t *pev); C_DLLEXPORT void fireanddie(entvars_t *pev);
C_DLLEXPORT void trigger_changelevel(entvars_t *pev); C_DLLEXPORT void trigger_changelevel(entvars_t *pev);
C_DLLEXPORT void func_ladder(entvars_t *pev); C_DLLEXPORT void func_ladder(entvars_t *pev);
C_DLLEXPORT void trigger_push(entvars_t *pev); C_DLLEXPORT void trigger_push(entvars_t *pev);
C_DLLEXPORT void trigger_teleport(entvars_t *pev); C_DLLEXPORT void trigger_teleport(entvars_t *pev);
C_DLLEXPORT void info_teleport_destination(entvars_t *pev); C_DLLEXPORT void info_teleport_destination(entvars_t *pev);
C_DLLEXPORT void func_buyzone(entvars_t *pev); C_DLLEXPORT void func_buyzone(entvars_t *pev);
C_DLLEXPORT void func_bomb_target(entvars_t *pev); C_DLLEXPORT void func_bomb_target(entvars_t *pev);
C_DLLEXPORT void func_hostage_rescue(entvars_t *pev); C_DLLEXPORT void func_hostage_rescue(entvars_t *pev);
C_DLLEXPORT void func_escapezone(entvars_t *pev); C_DLLEXPORT void func_escapezone(entvars_t *pev);
C_DLLEXPORT void func_vip_safetyzone(entvars_t *pev); C_DLLEXPORT void func_vip_safetyzone(entvars_t *pev);
C_DLLEXPORT void trigger_autosave(entvars_t *pev); C_DLLEXPORT void trigger_autosave(entvars_t *pev);
C_DLLEXPORT void trigger_endsection(entvars_t *pev); C_DLLEXPORT void trigger_endsection(entvars_t *pev);
C_DLLEXPORT void trigger_gravity(entvars_t *pev); C_DLLEXPORT void trigger_gravity(entvars_t *pev);
C_DLLEXPORT void trigger_changetarget(entvars_t *pev); C_DLLEXPORT void trigger_changetarget(entvars_t *pev);
C_DLLEXPORT void trigger_camera(entvars_t *pev); C_DLLEXPORT void trigger_camera(entvars_t *pev);
C_DLLEXPORT void env_snow(entvars_t *pev); C_DLLEXPORT void env_snow(entvars_t *pev);
C_DLLEXPORT void func_snow(entvars_t *pev); C_DLLEXPORT void func_snow(entvars_t *pev);
C_DLLEXPORT void env_rain(entvars_t *pev); C_DLLEXPORT void env_rain(entvars_t *pev);
C_DLLEXPORT void func_rain(entvars_t *pev); C_DLLEXPORT void func_rain(entvars_t *pev);
C_DLLEXPORT void env_fog(entvars_t *pev); C_DLLEXPORT void env_fog(entvars_t *pev);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -37,15 +37,15 @@
#define s_tutorDisabledThisGame (*ps_tutorDisabledThisGame) #define s_tutorDisabledThisGame (*ps_tutorDisabledThisGame)
#define s_nextCvarCheckTime (*ps_nextCvarCheckTime) #define s_nextCvarCheckTime (*ps_nextCvarCheckTime)
#define cv_tutor_message_repeats (*pcv_tutor_message_repeats) #define cv_tutor_message_repeats (*pcv_tutor_message_repeats)
#define cv_tutor_debug_level (*pcv_tutor_debug_level) #define cv_tutor_debug_level (*pcv_tutor_debug_level)
#define cv_tutor_view_distance (*pcv_tutor_view_distance) #define cv_tutor_view_distance (*pcv_tutor_view_distance)
#define cv_tutor_viewable_check_interval (*pcv_tutor_viewable_check_interval) #define cv_tutor_viewable_check_interval (*pcv_tutor_viewable_check_interval)
#define cv_tutor_look_distance (*pcv_tutor_look_distance) #define cv_tutor_look_distance (*pcv_tutor_look_distance)
#define cv_tutor_look_angle (*pcv_tutor_look_angle) #define cv_tutor_look_angle (*pcv_tutor_look_angle)
#define cv_tutor_examine_time (*pcv_tutor_examine_time) #define cv_tutor_examine_time (*pcv_tutor_examine_time)
#define cv_tutor_message_minimum_display_time (*pcv_tutor_message_minimum_display_time) #define cv_tutor_message_minimum_display_time (*pcv_tutor_message_minimum_display_time)
#define cv_tutor_message_character_display_time_coefficient (*pcv_tutor_message_character_display_time_coefficient) #define cv_tutor_message_character_display_time_coefficient (*pcv_tutor_message_character_display_time_coefficient)
#define cv_tutor_hint_interval_time (*pcv_tutor_hint_interval_time) #define cv_tutor_hint_interval_time (*pcv_tutor_hint_interval_time)
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL

View File

@ -456,22 +456,22 @@ bool CBaseTutor::IsEntityInViewOfPlayer(CBaseEntity *entity, CBasePlayer *player
{ {
return IsEntityInViewOfPlayer_(entity, player); return IsEntityInViewOfPlayer_(entity, player);
} }
bool CBaseTutor::IsBombsiteInViewOfPlayer(CBaseEntity *entity, CBasePlayer *player) bool CBaseTutor::IsBombsiteInViewOfPlayer(CBaseEntity *entity, CBasePlayer *player)
{ {
return IsBombsiteInViewOfPlayer_(entity, player); return IsBombsiteInViewOfPlayer_(entity, player);
} }
bool CBaseTutor::IsEntityInBombsite(CBaseEntity *bombsite, CBaseEntity *entity) bool CBaseTutor::IsEntityInBombsite(CBaseEntity *bombsite, CBaseEntity *entity)
{ {
return IsEntityInBombsite_(bombsite, entity); return IsEntityInBombsite_(bombsite, entity);
} }
bool CBaseTutor::IsPlayerLookingAtPosition(Vector *origin, CBasePlayer *player) bool CBaseTutor::IsPlayerLookingAtPosition(Vector *origin, CBasePlayer *player)
{ {
return IsPlayerLookingAtPosition_(origin, player); return IsPlayerLookingAtPosition_(origin, player);
} }
bool CBaseTutor::IsPlayerLookingAtEntity(CBaseEntity *entity, CBasePlayer *player) bool CBaseTutor::IsPlayerLookingAtEntity(CBaseEntity *entity, CBasePlayer *player)
{ {
return IsPlayerLookingAtEntity_(entity, player); return IsPlayerLookingAtEntity_(entity, player);

View File

@ -38,26 +38,26 @@ public:
TutorMessageEvent(int mid, int duplicateID, float time, float lifetime, int priority); TutorMessageEvent(int mid, int duplicateID, float time, float lifetime, int priority);
virtual ~TutorMessageEvent(void); virtual ~TutorMessageEvent(void);
bool IsActive(float time); bool IsActive(float time);
int GetPriority(void); int GetPriority(void);
float GetTimeActive(float time); float GetTimeActive(float time);
void SetActivationTime(float time); void SetActivationTime(float time);
int GetID(void); int GetID(void);
int GetDuplicateID(void); int GetDuplicateID(void);
void AddParameter(char *str); void AddParameter(char *str);
char *GetNextParameter(char *buf, int buflen); char *GetNextParameter(char *buf, int buflen);
int GetNumParameters(void); int GetNumParameters(void);
void SetNext(TutorMessageEvent *next); void SetNext(TutorMessageEvent *next);
TutorMessageEvent *GetNext(void); TutorMessageEvent *GetNext(void);
private: private:
int m_messageID; int m_messageID;
int m_duplicateID; int m_duplicateID;
float m_activationTime; float m_activationTime;
float m_lifetime; float m_lifetime;
int m_priority; int m_priority;
int m_numParameters; int m_numParameters;
struct TutorMessageEventParam *m_paramList; struct TutorMessageEventParam *m_paramList;
TutorMessageEvent *m_next; TutorMessageEvent *m_next;
};/* size: 36, cachelines: 1, members: 9 */ };/* size: 36, cachelines: 1, members: 9 */
@ -68,47 +68,47 @@ public:
CBaseTutor(void); CBaseTutor(void);
virtual ~CBaseTutor(void); virtual ~CBaseTutor(void);
virtual void TutorThink(float time) = 0; virtual void TutorThink(float time) = 0;
virtual void PurgeMessages(void) = 0; virtual void PurgeMessages(void) = 0;
virtual void CallEventHandler(GameEventType event, CBaseEntity *entity, CBaseEntity *other) = 0; virtual void CallEventHandler(GameEventType event, CBaseEntity *entity, CBaseEntity *other) = 0;
virtual void ShowTutorMessage(TutorMessageEvent *event) = 0; virtual void ShowTutorMessage(TutorMessageEvent *event) = 0;
virtual bool IsEntityInViewOfPlayer(CBaseEntity *entity, CBasePlayer *player); virtual bool IsEntityInViewOfPlayer(CBaseEntity *entity, CBasePlayer *player);
virtual bool IsBombsiteInViewOfPlayer(CBaseEntity *entity, CBasePlayer *player); virtual bool IsBombsiteInViewOfPlayer(CBaseEntity *entity, CBasePlayer *player);
virtual bool IsEntityInBombsite(CBaseEntity *bombsite, CBaseEntity *entity); virtual bool IsEntityInBombsite(CBaseEntity *bombsite, CBaseEntity *entity);
virtual bool IsPlayerLookingAtPosition(Vector *origin, CBasePlayer *player); virtual bool IsPlayerLookingAtPosition(Vector *origin, CBasePlayer *player);
virtual bool IsPlayerLookingAtEntity(CBaseEntity *entity, CBasePlayer *player); virtual bool IsPlayerLookingAtEntity(CBaseEntity *entity, CBasePlayer *player);
virtual void HandleShotFired(Vector source, Vector target) = 0; virtual void HandleShotFired(Vector source, Vector target) = 0;
virtual struct TutorMessage *GetTutorMessageDefinition(int messageID) = 0; virtual struct TutorMessage *GetTutorMessageDefinition(int messageID) = 0;
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
bool IsEntityInViewOfPlayer_(CBaseEntity *entity, CBasePlayer *player); bool IsEntityInViewOfPlayer_(CBaseEntity *entity, CBasePlayer *player);
bool IsBombsiteInViewOfPlayer_(CBaseEntity *entity, CBasePlayer *player); bool IsBombsiteInViewOfPlayer_(CBaseEntity *entity, CBasePlayer *player);
bool IsEntityInBombsite_(CBaseEntity *bombsite, CBaseEntity *entity); bool IsEntityInBombsite_(CBaseEntity *bombsite, CBaseEntity *entity);
bool IsPlayerLookingAtPosition_(Vector *origin, CBasePlayer *player); bool IsPlayerLookingAtPosition_(Vector *origin, CBasePlayer *player);
bool IsPlayerLookingAtEntity_(CBaseEntity *entity, CBasePlayer *player); bool IsPlayerLookingAtEntity_(CBaseEntity *entity, CBasePlayer *player);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
void StartFrame(float time); void StartFrame(float time);
void OnEvent(GameEventType event, CBaseEntity *entity = NULL, CBaseEntity *other = NULL); void OnEvent(GameEventType event, CBaseEntity *entity = NULL, CBaseEntity *other = NULL);
void ShotFired(Vector source, Vector target); void ShotFired(Vector source, Vector target);
void DisplayMessageToPlayer(CBasePlayer *player, int id, const char *szMessage, TutorMessageEvent *event); void DisplayMessageToPlayer(CBasePlayer *player, int id, const char *szMessage, TutorMessageEvent *event);
NOXREF void DrawLineToEntity(CBasePlayer *player, int entindex, int id); NOXREF void DrawLineToEntity(CBasePlayer *player, int entindex, int id);
void DisplayNewStateDescriptionToPlayer(void); void DisplayNewStateDescriptionToPlayer(void);
void CloseCurrentWindow(void); void CloseCurrentWindow(void);
void CheckForStateTransition(GameEventType event, CBaseEntity *entity, CBaseEntity *other); void CheckForStateTransition(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
void CalculatePathForObjective(CBaseEntity *player); void CalculatePathForObjective(CBaseEntity *player);
bool DoMessagesHaveSameID(int id1, int id2); bool DoMessagesHaveSameID(int id1, int id2);
protected: protected:
CBaseTutorStateSystem *m_stateSystem; CBaseTutorStateSystem *m_stateSystem;
TutorMessageEvent *m_eventList; TutorMessageEvent *m_eventList;
float m_deadAirStartTime; float m_deadAirStartTime;
float m_roundStartTime; float m_roundStartTime;
};/* size: 20, cachelines: 1, members: 5 */ };/* size: 20, cachelines: 1, members: 5 */

View File

@ -36,39 +36,39 @@
#define TUTOR_STATE_FLAG_1 0x00000014 #define TUTOR_STATE_FLAG_1 0x00000014
#define TUTOR_STATE_FLAG_2 0x00000013 #define TUTOR_STATE_FLAG_2 0x00000013
enum TutorStateType enum TutorStateType
{ {
TUTORSTATE_UNDEFINED = 0, TUTORSTATE_UNDEFINED = 0,
TUTORSTATE_LOOKING_FOR_HOSTAGE, TUTORSTATE_LOOKING_FOR_HOSTAGE,
TUTORSTATE_ESCORTING_HOSTAGE, TUTORSTATE_ESCORTING_HOSTAGE,
TUTORSTATE_LOOKING_FOR_LOST_HOSTAGE, TUTORSTATE_LOOKING_FOR_LOST_HOSTAGE,
TUTORSTATE_FOLLOWING_HOSTAGE_ESCORT, TUTORSTATE_FOLLOWING_HOSTAGE_ESCORT,
TUTORSTATE_MOVING_TO_BOMBSITE, TUTORSTATE_MOVING_TO_BOMBSITE,
TUTORSTATE_LOOKING_FOR_BOMB_CARRIER, TUTORSTATE_LOOKING_FOR_BOMB_CARRIER,
TUTORSTATE_GUARDING_LOOSE_BOMB, TUTORSTATE_GUARDING_LOOSE_BOMB,
TUTORSTATE_DEFUSING_BOMB, TUTORSTATE_DEFUSING_BOMB,
TUTORSTATE_GUARDING_HOSTAGE, TUTORSTATE_GUARDING_HOSTAGE,
TUTORSTATE_MOVING_TO_INTERCEPT_ENEMY, TUTORSTATE_MOVING_TO_INTERCEPT_ENEMY,
TUTORSTATE_LOOKING_FOR_HOSTAGE_ESCORT, TUTORSTATE_LOOKING_FOR_HOSTAGE_ESCORT,
TUTORSTATE_ATTACKING_HOSTAGE_ESCORT, TUTORSTATE_ATTACKING_HOSTAGE_ESCORT,
TUTORSTATE_ESCORTING_BOMB_CARRIER, TUTORSTATE_ESCORTING_BOMB_CARRIER,
TUTORSTATE_MOVING_TO_BOMB_SITE, TUTORSTATE_MOVING_TO_BOMB_SITE,
TUTORSTATE_PLANTING_BOMB, TUTORSTATE_PLANTING_BOMB,
TUTORSTATE_GUARDING_BOMB, TUTORSTATE_GUARDING_BOMB,
TUTORSTATE_LOOKING_FOR_LOOSE_BOMB, TUTORSTATE_LOOKING_FOR_LOOSE_BOMB,
TUTORSTATE_RUNNING_AWAY_FROM_TICKING_BOMB, TUTORSTATE_RUNNING_AWAY_FROM_TICKING_BOMB,
TUTORSTATE_BUYTIME, TUTORSTATE_BUYTIME,
TUTORSTATE_WAITING_FOR_START, TUTORSTATE_WAITING_FOR_START,
}; };
/* <22bf75> ../cstrike/dlls/tutor_cs_states.cpp:53 */ /* <22bf75> ../cstrike/dlls/tutor_cs_states.cpp:53 */
class CCSTutorStateSystem: public CBaseTutorStateSystem class CCSTutorStateSystem: public CBaseTutorStateSystem
{ {
public: public:
CCSTutorStateSystem(void); CCSTutorStateSystem(void);
virtual ~CCSTutorStateSystem(void); virtual ~CCSTutorStateSystem(void);
virtual bool UpdateState(GameEventType event, CBaseEntity *entity, CBaseEntity *other); virtual bool UpdateState(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
virtual char *GetCurrentStateString(void); virtual char *GetCurrentStateString(void);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -78,10 +78,10 @@ public:
CBaseTutorState *ConstructNewState_(int stateType); CBaseTutorState *ConstructNewState_(int stateType);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
protected: protected:
virtual CBaseTutorState *ConstructNewState(int stateType); virtual CBaseTutorState *ConstructNewState(int stateType);
};/* size: 8, cachelines: 1, members: 1 */ };/* size: 8, cachelines: 1, members: 1 */
/* <22bfcb> ../cstrike/dlls/tutor_cs_states.cpp:141 */ /* <22bfcb> ../cstrike/dlls/tutor_cs_states.cpp:141 */
@ -94,11 +94,11 @@ public:
virtual int CheckForStateTransition(GameEventType event, CBaseEntity *entity, CBaseEntity *other); virtual int CheckForStateTransition(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
virtual char *GetStateString(void); virtual char *GetStateString(void);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
int CheckForStateTransition_(GameEventType event, CBaseEntity *entity, CBaseEntity *other); int CheckForStateTransition_(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
char *GetStateString_(void); char *GetStateString_(void);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
protected: protected:
@ -116,11 +116,11 @@ public:
virtual int CheckForStateTransition(GameEventType event, CBaseEntity *entity, CBaseEntity *other); virtual int CheckForStateTransition(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
virtual char *GetStateString(void); virtual char *GetStateString(void);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
int CheckForStateTransition_(GameEventType event, CBaseEntity *entity, CBaseEntity *other); int CheckForStateTransition_(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
char *GetStateString_(void); char *GetStateString_(void);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
protected: protected:
@ -140,11 +140,11 @@ public:
virtual int CheckForStateTransition(GameEventType event, CBaseEntity *entity, CBaseEntity *other); virtual int CheckForStateTransition(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
virtual char *GetStateString(void); virtual char *GetStateString(void);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
int CheckForStateTransition_(GameEventType event, CBaseEntity *entity, CBaseEntity *other); int CheckForStateTransition_(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
char *GetStateString_(void); char *GetStateString_(void);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
protected: protected:

View File

@ -40,60 +40,60 @@ enum TutorMessageClass
TUTORMESSAGECLASS_EXAMINE, TUTORMESSAGECLASS_EXAMINE,
}; };
enum TutorMessageType enum TutorMessageType
{ {
TUTORMESSAGETYPE_DEFAULT = (1 << 0), // icon info | color green TUTORMESSAGETYPE_DEFAULT = (1 << 0), // icon info | color green
TUTORMESSAGETYPE_FRIEND_DEATH = (1 << 1), // icon skull | color red TUTORMESSAGETYPE_FRIEND_DEATH = (1 << 1), // icon skull | color red
TUTORMESSAGETYPE_ENEMY_DEATH = (1 << 2), // icon skull | color blue TUTORMESSAGETYPE_ENEMY_DEATH = (1 << 2), // icon skull | color blue
TUTORMESSAGETYPE_SCENARIO = (1 << 3), // icon info | color yellow TUTORMESSAGETYPE_SCENARIO = (1 << 3), // icon info | color yellow
TUTORMESSAGETYPE_BUY = (1 << 4), // icon info | color green TUTORMESSAGETYPE_BUY = (1 << 4), // icon info | color green
TUTORMESSAGETYPE_CAREER = (1 << 5), // icon info | color green TUTORMESSAGETYPE_CAREER = (1 << 5), // icon info | color green
TUTORMESSAGETYPE_HINT = (1 << 6), // icon info | color green TUTORMESSAGETYPE_HINT = (1 << 6), // icon info | color green
TUTORMESSAGETYPE_INGAME_HINT = (1 << 7), // icon info | color green TUTORMESSAGETYPE_INGAME_HINT = (1 << 7), // icon info | color green
TUTORMESSAGETYPE_END_GAME = (1 << 8), // icon info | color yellow TUTORMESSAGETYPE_END_GAME = (1 << 8), // icon info | color yellow
TUTORMESSAGETYPE_LAST, TUTORMESSAGETYPE_LAST,
TUTORMESSAGETYPE_ALL = (1 << 9) - 1 TUTORMESSAGETYPE_ALL = (1 << 9) - 1
}; };
enum TutorMessageInterruptFlag enum TutorMessageInterruptFlag
{ {
TUTORMESSAGEINTERRUPTFLAG_DEFAULT = 0, TUTORMESSAGEINTERRUPTFLAG_DEFAULT = 0,
TUTORMESSAGEINTERRUPTFLAG_NOW_DAMMIT, TUTORMESSAGEINTERRUPTFLAG_NOW_DAMMIT,
}; };
enum TutorMessageKeepOldType enum TutorMessageKeepOldType
{ {
TUTORMESSAGEKEEPOLDTYPE_DONT_KEEP_OLD = 0, TUTORMESSAGEKEEPOLDTYPE_DONT_KEEP_OLD = 0,
TUTORMESSAGEKEEPOLDTYPE_KEEP_OLD, TUTORMESSAGEKEEPOLDTYPE_KEEP_OLD,
TUTORMESSAGEKEEPOLDTYPE_UPDATE_CONTENT, TUTORMESSAGEKEEPOLDTYPE_UPDATE_CONTENT,
}; };
struct TutorMessage struct TutorMessage
{ {
char *m_text; char *m_text;
unsigned char m_priority; unsigned char m_priority;
unsigned char m_duration; unsigned char m_duration;
TutorMessageKeepOldType m_keepOld; TutorMessageKeepOldType m_keepOld;
TutorMessageClass m_class; TutorMessageClass m_class;
unsigned char m_decay; unsigned char m_decay;
TutorMessageType m_type; TutorMessageType m_type;
int m_lifetime; int m_lifetime;
TutorMessageInterruptFlag m_interruptFlag; TutorMessageInterruptFlag m_interruptFlag;
int m_duplicateID; int m_duplicateID;
float m_examineStartTime; float m_examineStartTime;
int m_timesShown; int m_timesShown;
float m_minDisplayTimeOverride; float m_minDisplayTimeOverride;
float m_minRepeatInterval; float m_minRepeatInterval;
float m_lastCloseTime; float m_lastCloseTime;
};/* size: 56, cachelines: 1, members: 15 */ };/* size: 56, cachelines: 1, members: 15 */
struct TutorMessageEventParam struct TutorMessageEventParam
{ {
char *m_data; char *m_data;
TutorMessageEventParam *m_next; TutorMessageEventParam *m_next;
};/* size: 8, cachelines: 1, members: 2 */ };/* size: 8, cachelines: 1, members: 2 */
enum TutorMessageID enum TutorMessageID
@ -278,147 +278,147 @@ public:
bool m_hasBeenShown; bool m_hasBeenShown;
TutorMessageEvent *m_event; TutorMessageEvent *m_event;
}; };
virtual ~CCSTutor(void); virtual ~CCSTutor(void);
virtual void TutorThink(float time); virtual void TutorThink(float time);
virtual void PurgeMessages(void); virtual void PurgeMessages(void);
virtual void CallEventHandler(GameEventType event, CBaseEntity *entity, CBaseEntity *other); virtual void CallEventHandler(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
virtual void ShowTutorMessage(TutorMessageEvent *event); virtual void ShowTutorMessage(TutorMessageEvent *event);
virtual void HandleShotFired(Vector source, Vector target); virtual void HandleShotFired(Vector source, Vector target);
virtual TutorMessage *GetTutorMessageDefinition(int messageID); virtual TutorMessage *GetTutorMessageDefinition(int messageID);
void CreateAndAddEventToList(TutorMessageID mid, CBaseEntity *entity = NULL, CBaseEntity *other = NULL); void CreateAndAddEventToList(TutorMessageID mid, CBaseEntity *entity = NULL, CBaseEntity *other = NULL);
TutorMessageEvent *CreateTutorMessageEvent(TutorMessageID mid, CBaseEntity *entity = NULL, CBaseEntity *other = NULL); TutorMessageEvent *CreateTutorMessageEvent(TutorMessageID mid, CBaseEntity *entity = NULL, CBaseEntity *other = NULL);
void AddToEventList(TutorMessageEvent *event); void AddToEventList(TutorMessageEvent *event);
void DeleteEventFromEventList(TutorMessageEvent *event); void DeleteEventFromEventList(TutorMessageEvent *event);
void ClearEventList(void); void ClearEventList(void);
void ClearCurrentEvent(bool closeWindow = true, bool processDeathsForEvent = true); void ClearCurrentEvent(bool closeWindow = true, bool processDeathsForEvent = true);
void DeleteEvent(TutorMessageEvent *event); void DeleteEvent(TutorMessageEvent *event);
bool ShouldShowMessageEvent(TutorMessageEvent *event, float time); bool ShouldShowMessageEvent(TutorMessageEvent *event, float time);
NOXREF bool ShouldUpdateCurrentMessage(TutorMessageID messageID); NOXREF bool ShouldUpdateCurrentMessage(TutorMessageID messageID);
void ComputeDisplayTimesForMessage(void); void ComputeDisplayTimesForMessage(void);
void UpdateCurrentMessage(TutorMessageEvent *event); void UpdateCurrentMessage(TutorMessageEvent *event);
void ConstructMessageAndDisplay(void); void ConstructMessageAndDisplay(void);
NOXREF void LookupHotKey(TutorMessageID mid, int paramNum, wchar_t *buf, int buflen); NOXREF void LookupHotKey(TutorMessageID mid, int paramNum, wchar_t *buf, int buflen);
void CheckForWindowClose(float time); void CheckForWindowClose(float time);
void CheckForContentUpdate(void); void CheckForContentUpdate(void);
bool HasCurrentWindowBeenActiveLongEnough(float time); bool HasCurrentWindowBeenActiveLongEnough(float time);
void CheckForInterruptingMessageEvent(float time); void CheckForInterruptingMessageEvent(float time);
void CheckForInactiveEvents(float time); void CheckForInactiveEvents(float time);
void CancelEvent(TutorMessageID mid); void CancelEvent(TutorMessageID mid);
void ProcessShownDeathsForEvent(TutorMessageEvent *event); void ProcessShownDeathsForEvent(TutorMessageEvent *event);
void TransferDeathEvents(TutorMessageEvent *oldEvent, TutorMessageEvent *newEvent); void TransferDeathEvents(TutorMessageEvent *oldEvent, TutorMessageEvent *newEvent);
TutorMessageEvent *GetTutorMessageUpdateEvent(void); TutorMessageEvent *GetTutorMessageUpdateEvent(void);
bool GetDuplicateMessagesFromEventList(TutorMessageEvent *&event1, TutorMessageEvent *&event2); bool GetDuplicateMessagesFromEventList(TutorMessageEvent *&event1, TutorMessageEvent *&event2);
bool IsBombMap(void); bool IsBombMap(void);
bool IsHostageMap(void); bool IsHostageMap(void);
public: public:
void HandleWeaponFired(CBaseEntity *entity, CBaseEntity *other); void HandleWeaponFired(CBaseEntity *entity, CBaseEntity *other);
void HandleWeaponFiredOnEmpty(CBaseEntity *entity, CBaseEntity *other); void HandleWeaponFiredOnEmpty(CBaseEntity *entity, CBaseEntity *other);
void HandleWeaponReloaded(CBaseEntity *entity, CBaseEntity *other); void HandleWeaponReloaded(CBaseEntity *entity, CBaseEntity *other);
void HandlePlayerDied(CBaseEntity *entity, CBaseEntity *other); void HandlePlayerDied(CBaseEntity *entity, CBaseEntity *other);
void HandlePlayerSpawned(CBaseEntity *entity, CBaseEntity *other); void HandlePlayerSpawned(CBaseEntity *entity, CBaseEntity *other);
NOXREF void HandleClientCorpseSpawned(CBaseEntity *entity, CBaseEntity *other); NOXREF void HandleClientCorpseSpawned(CBaseEntity *entity, CBaseEntity *other);
void HandlePlayerTookDamage(CBaseEntity *entity, CBaseEntity *other); void HandlePlayerTookDamage(CBaseEntity *entity, CBaseEntity *other);
void HandlePlayerBlindedByFlashbang(CBaseEntity *entity, CBaseEntity *other); void HandlePlayerBlindedByFlashbang(CBaseEntity *entity, CBaseEntity *other);
NOXREF void HandleBuyTimeStart(CBaseEntity *entity, CBaseEntity *other); NOXREF void HandleBuyTimeStart(CBaseEntity *entity, CBaseEntity *other);
void HandlePlayerLeftBuyZone(CBaseEntity *entity, CBaseEntity *other); void HandlePlayerLeftBuyZone(CBaseEntity *entity, CBaseEntity *other);
void HandleBombPlanted(CBaseEntity *entity, CBaseEntity *other); void HandleBombPlanted(CBaseEntity *entity, CBaseEntity *other);
void HandleRoundStart(CBaseEntity *entity, CBaseEntity *other); void HandleRoundStart(CBaseEntity *entity, CBaseEntity *other);
void HandleBombDefused(CBaseEntity *entity, CBaseEntity *other); void HandleBombDefused(CBaseEntity *entity, CBaseEntity *other);
void HandleBombExploded(CBaseEntity *entity, CBaseEntity *other); void HandleBombExploded(CBaseEntity *entity, CBaseEntity *other);
void HandleHostageUsed(CBaseEntity *entity, CBaseEntity *other); void HandleHostageUsed(CBaseEntity *entity, CBaseEntity *other);
void HandleHostageRescued(CBaseEntity *entity, CBaseEntity *other); void HandleHostageRescued(CBaseEntity *entity, CBaseEntity *other);
void HandleHostageDamaged(CBaseEntity *entity, CBaseEntity *other); void HandleHostageDamaged(CBaseEntity *entity, CBaseEntity *other);
void HandleHostageKilled(CBaseEntity *entity, CBaseEntity *other); void HandleHostageKilled(CBaseEntity *entity, CBaseEntity *other);
void HandleAllHostagesRescued(CBaseEntity *entity, CBaseEntity *other); void HandleAllHostagesRescued(CBaseEntity *entity, CBaseEntity *other);
void HandleBeingShotAt(CBaseEntity *entity, CBaseEntity *other); void HandleBeingShotAt(CBaseEntity *entity, CBaseEntity *other);
void HandleRoundDraw(CBaseEntity *entity, CBaseEntity *other); void HandleRoundDraw(CBaseEntity *entity, CBaseEntity *other);
void HandleCTWin(CBaseEntity *entity, CBaseEntity *other); void HandleCTWin(CBaseEntity *entity, CBaseEntity *other);
void HandleTWin(CBaseEntity *entity, CBaseEntity *other); void HandleTWin(CBaseEntity *entity, CBaseEntity *other);
void HandleDeathCameraStart(CBaseEntity *entity, CBaseEntity *other); void HandleDeathCameraStart(CBaseEntity *entity, CBaseEntity *other);
void HandleBombDefusing(CBaseEntity *entity, CBaseEntity *other); void HandleBombDefusing(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioCoverMe(CBaseEntity *entity, CBaseEntity *other); void HandleRadioCoverMe(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioYouTakeThePoint(CBaseEntity *entity, CBaseEntity *other); void HandleRadioYouTakeThePoint(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioHoldThisPosition(CBaseEntity *entity, CBaseEntity *other); void HandleRadioHoldThisPosition(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioRegroupTeam(CBaseEntity *entity, CBaseEntity *other); void HandleRadioRegroupTeam(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioFollowMe(CBaseEntity *entity, CBaseEntity *other); void HandleRadioFollowMe(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioTakingFire(CBaseEntity *entity, CBaseEntity *other); void HandleRadioTakingFire(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioGoGoGo(CBaseEntity *entity, CBaseEntity *other); void HandleRadioGoGoGo(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioTeamFallBack(CBaseEntity *entity, CBaseEntity *other); void HandleRadioTeamFallBack(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioStickTogetherTeam(CBaseEntity *entity, CBaseEntity *other); void HandleRadioStickTogetherTeam(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioGetInPositionAndWait(CBaseEntity *entity, CBaseEntity *other); void HandleRadioGetInPositionAndWait(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioStormTheFront(CBaseEntity *entity, CBaseEntity *other); void HandleRadioStormTheFront(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioReportInTeam(CBaseEntity *entity, CBaseEntity *other); void HandleRadioReportInTeam(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioAffirmative(CBaseEntity *entity, CBaseEntity *other); void HandleRadioAffirmative(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioEnemySpotted(CBaseEntity *entity, CBaseEntity *other); void HandleRadioEnemySpotted(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioNeedBackup(CBaseEntity *entity, CBaseEntity *other); void HandleRadioNeedBackup(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioSectorClear(CBaseEntity *entity, CBaseEntity *other); void HandleRadioSectorClear(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioInPosition(CBaseEntity *entity, CBaseEntity *other); void HandleRadioInPosition(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioReportingIn(CBaseEntity *entity, CBaseEntity *other); void HandleRadioReportingIn(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioGetOutOfThere(CBaseEntity *entity, CBaseEntity *other); void HandleRadioGetOutOfThere(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioNegative(CBaseEntity *entity, CBaseEntity *other); void HandleRadioNegative(CBaseEntity *entity, CBaseEntity *other);
void HandleRadioEnemyDown(CBaseEntity *entity, CBaseEntity *other); void HandleRadioEnemyDown(CBaseEntity *entity, CBaseEntity *other);
void HandleBuyMenuOpenned(CBaseEntity *entity, CBaseEntity *other); void HandleBuyMenuOpenned(CBaseEntity *entity, CBaseEntity *other);
void HandleAutoBuy(CBaseEntity *entity, CBaseEntity *other); void HandleAutoBuy(CBaseEntity *entity, CBaseEntity *other);
void HandleNotBuyingAnything(CBaseEntity *entity, CBaseEntity *other); void HandleNotBuyingAnything(CBaseEntity *entity, CBaseEntity *other);
void HandleNeedToBuyPrimaryWeapon(CBaseEntity *entity, CBaseEntity *other); void HandleNeedToBuyPrimaryWeapon(CBaseEntity *entity, CBaseEntity *other);
void HandleNeedToBuyPrimaryAmmo(CBaseEntity *entity, CBaseEntity *other); void HandleNeedToBuyPrimaryAmmo(CBaseEntity *entity, CBaseEntity *other);
void HandleNeedToBuySecondaryAmmo(CBaseEntity *entity, CBaseEntity *other); void HandleNeedToBuySecondaryAmmo(CBaseEntity *entity, CBaseEntity *other);
void HandleNeedToBuyArmor(CBaseEntity *entity, CBaseEntity *other); void HandleNeedToBuyArmor(CBaseEntity *entity, CBaseEntity *other);
void HandleNeedToBuyDefuseKit(CBaseEntity *entity, CBaseEntity *other); void HandleNeedToBuyDefuseKit(CBaseEntity *entity, CBaseEntity *other);
void HandleNeedToBuyGrenade(CBaseEntity *entity, CBaseEntity *other); void HandleNeedToBuyGrenade(CBaseEntity *entity, CBaseEntity *other);
void HandleCareerTaskDone(CBaseEntity *entity, CBaseEntity *other); void HandleCareerTaskDone(CBaseEntity *entity, CBaseEntity *other);
void GetNumPlayersAliveOnTeams(int &numT, int &numCT); void GetNumPlayersAliveOnTeams(int &numT, int &numCT);
void CheckForBombViewable(void); void CheckForBombViewable(void);
void CheckForLooseWeaponViewable(void); void CheckForLooseWeaponViewable(void);
void CheckForLooseDefuserViewable(void); void CheckForLooseDefuserViewable(void);
void CheckForBombsiteViewable(void); void CheckForBombsiteViewable(void);
TutorMessageID CheckForInBombZone(void); TutorMessageID CheckForInBombZone(void);
void CheckForHostageViewable(void); void CheckForHostageViewable(void);
void CheckForTimeRunningOut(void); void CheckForTimeRunningOut(void);
void CheckForAllHostagesDead(void); void CheckForAllHostagesDead(void);
bool CheckForAllHostagesFollowingSomeone(void); bool CheckForAllHostagesFollowingSomeone(void);
void CheckHintMessages(float time); void CheckHintMessages(float time);
void CheckInGameHintMessages(float time); void CheckInGameHintMessages(float time);
void CheckExamineMessages(float time); void CheckExamineMessages(float time);
void CheckForNeedToReload(bool isPassiveCheck = false); void CheckForNeedToReload(bool isPassiveCheck = false);
bool CanLocalPlayerBuyStuff(void); bool CanLocalPlayerBuyStuff(void);
void CheckBuyZoneMessages(void); void CheckBuyZoneMessages(void);
bool IsBombPlantedInBombsite(CBaseEntity *bombTarget); bool IsBombPlantedInBombsite(CBaseEntity *bombTarget);
void ReadTutorMessageFile(void); void ReadTutorMessageFile(void);
void ApplyPersistentDecay(void); void ApplyPersistentDecay(void);
CBaseEntity *GetEntityForMessageID(int messageID, CBaseEntity *last = NULL); CBaseEntity *GetEntityForMessageID(int messageID, CBaseEntity *last = NULL);
void ResetPlayerDeathInfo(void); void ResetPlayerDeathInfo(void);
void ConstructRecentDeathsList(TeamName team, char *buf, int buflen, TutorMessageEvent *event); void ConstructRecentDeathsList(TeamName team, char *buf, int buflen, TutorMessageEvent *event);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void TutorThink_(float time); void TutorThink_(float time);
void PurgeMessages_(void); void PurgeMessages_(void);
void CallEventHandler_(GameEventType event, CBaseEntity *entity, CBaseEntity *other); void CallEventHandler_(GameEventType event, CBaseEntity *entity, CBaseEntity *other);
void ShowTutorMessage_(TutorMessageEvent *event); void ShowTutorMessage_(TutorMessageEvent *event);
void HandleShotFired_(Vector source, Vector target); void HandleShotFired_(Vector source, Vector target);
TutorMessage *GetTutorMessageDefinition_(int messageID); TutorMessage *GetTutorMessageDefinition_(int messageID);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
private: private:
float m_nextViewableCheckTime; float m_nextViewableCheckTime;
TutorMessageMap m_messageMap; TutorMessageMap m_messageMap;
TutorMessageID m_currentlyShownMessageID; TutorMessageID m_currentlyShownMessageID;
float m_currentlyShownMessageCloseTime; float m_currentlyShownMessageCloseTime;
float m_currentlyShownMessageStartTime; float m_currentlyShownMessageStartTime;
float m_currentlyShownMessageMinimumCloseTime; float m_currentlyShownMessageMinimumCloseTime;
TutorMessageEvent *m_currentMessageEvent; TutorMessageEvent *m_currentMessageEvent;
TutorMessageEvent *m_lastScenarioEvent; TutorMessageEvent *m_lastScenarioEvent;
TutorMessageID m_lastHintShown; TutorMessageID m_lastHintShown;
TutorMessageID m_lastInGameHintShown; TutorMessageID m_lastInGameHintShown;
ClientCorpseList m_clientCorpseList; ClientCorpseList m_clientCorpseList;
int m_messageTypeMask; int m_messageTypeMask;
bool m_haveSpawned; bool m_haveSpawned;
PlayerDeathStruct m_playerDeathInfo[32]; PlayerDeathStruct m_playerDeathInfo[32];
};/* size: 356, cachelines: 6, members: 15 */ };/* size: 356, cachelines: 6, members: 15 */

View File

@ -135,13 +135,13 @@ const int gSizes[18];
#endif //HOOK_GAMEDLL #endif //HOOK_GAMEDLL
float UTIL_WeaponTimeBase(void) float UTIL_WeaponTimeBase(void)
{ {
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
return 0.0; return 0.0;
#else #else
return gpGlobals->time; return gpGlobals->time;
#endif // CLIENT_WEAPONS #endif // CLIENT_WEAPONS
} }
/* <1ac4be> ../cstrike/dlls/util.cpp:59 */ /* <1ac4be> ../cstrike/dlls/util.cpp:59 */
@ -553,7 +553,7 @@ CBaseEntity *UTIL_FindEntityGeneric(const char *szWhatever, const Vector &vecSrc
} }
/* <1ad347> ../cstrike/dlls/util.cpp:711 */ /* <1ad347> ../cstrike/dlls/util.cpp:711 */
CBaseEntity *UTIL_PlayerByIndex(int playerIndex) CBaseEntity *EXT_FUNC UTIL_PlayerByIndex(int playerIndex)
{ {
CBaseEntity *pPlayer = NULL; CBaseEntity *pPlayer = NULL;
if (playerIndex > 0 && playerIndex <= gpGlobals->maxClients) if (playerIndex > 0 && playerIndex <= gpGlobals->maxClients)
@ -1343,10 +1343,6 @@ void UTIL_StringToVector(float *pVector, const char *pString)
Q_strcpy(tempString, pString); Q_strcpy(tempString, pString);
#ifdef GAMEDLL_FIXES
tempString[127] = 0;
#endif // GAMEDLL_FIXES
pstr = tempString; pstr = tempString;
pfront = tempString; pfront = tempString;
@ -1698,7 +1694,7 @@ extern "C"
return num; return num;
} }
} }
#endif #endif // _WIN32
/* <1b04b5> ../cstrike/dlls/util.cpp:1971 */ /* <1b04b5> ../cstrike/dlls/util.cpp:1971 */
unsigned int CSaveRestoreBuffer::HashString(const char *pszToken) unsigned int CSaveRestoreBuffer::HashString(const char *pszToken)
@ -1726,12 +1722,13 @@ unsigned short CSaveRestoreBuffer::TokenHash(const char *pszToken)
return index; return index;
} }
} }
ALERT(at_error, "CSaveRestoreBuffer :: TokenHash() is COMPLETELY FULL!"); ALERT(at_error, "CSaveRestoreBuffer :: TokenHash() is COMPLETELY FULL!");
return 0; return 0;
} }
/* <1b06a5> ../cstrike/dlls/util.cpp:2020 */ /* <1b06a5> ../cstrike/dlls/util.cpp:2020 */
NOXREF void CSave::WriteData(const char *pname, int size, const char *pdata) void CSave::WriteData(const char *pname, int size, const char *pdata)
{ {
BufferField(pname, size, pdata); BufferField(pname, size, pdata);
} }
@ -1743,19 +1740,19 @@ NOXREF void CSave::WriteShort(const char *pname, const short *data, int count)
} }
/* <1b0a7b> ../cstrike/dlls/util.cpp:2032 */ /* <1b0a7b> ../cstrike/dlls/util.cpp:2032 */
NOXREF void CSave::WriteInt(const char *pname, const int *data, int count) void CSave::WriteInt(const char *pname, const int *data, int count)
{ {
BufferField(pname, sizeof(int) * count, (const char *)data); BufferField(pname, sizeof(int) * count, (const char *)data);
} }
/* <1b0c77> ../cstrike/dlls/util.cpp:2038 */ /* <1b0c77> ../cstrike/dlls/util.cpp:2038 */
NOXREF void CSave::WriteFloat(const char *pname, const float *data, int count) void CSave::WriteFloat(const char *pname, const float *data, int count)
{ {
BufferField(pname, sizeof(float) * count, (const char *)data); BufferField(pname, sizeof(float) * count, (const char *)data);
} }
/* <1b0ea5> ../cstrike/dlls/util.cpp:2044 */ /* <1b0ea5> ../cstrike/dlls/util.cpp:2044 */
NOXREF void CSave::WriteTime(const char *pname, const float *data, int count) void CSave::WriteTime(const char *pname, const float *data, int count)
{ {
int i; int i;
BufferHeader(pname, sizeof(float) * count); BufferHeader(pname, sizeof(float) * count);
@ -1779,7 +1776,7 @@ NOXREF void CSave::WriteString(const char *pname, const char *pdata)
} }
/* <1b121f> ../cstrike/dlls/util.cpp:2076 */ /* <1b121f> ../cstrike/dlls/util.cpp:2076 */
NOXREF void CSave::WriteString(const char *pname, const int *stringId, int count) void CSave::WriteString(const char *pname, const int *stringId, int count)
{ {
int i; int i;
int size = 0; int size = 0;
@ -1796,13 +1793,13 @@ NOXREF void CSave::WriteString(const char *pname, const int *stringId, int count
} }
/* <1b1480> ../cstrike/dlls/util.cpp:2099 */ /* <1b1480> ../cstrike/dlls/util.cpp:2099 */
NOXREF void CSave::WriteVector(const char *pname, const Vector &value) void CSave::WriteVector(const char *pname, const Vector &value)
{ {
WriteVector(pname, &value.x, 1); WriteVector(pname, &value.x, 1);
} }
/* <1b1630> ../cstrike/dlls/util.cpp:2105 */ /* <1b1630> ../cstrike/dlls/util.cpp:2105 */
NOXREF void CSave::WriteVector(const char *pname, const float *value, int count) void CSave::WriteVector(const char *pname, const float *value, int count)
{ {
BufferHeader(pname, sizeof(float) * 3 * count); BufferHeader(pname, sizeof(float) * 3 * count);
BufferData((const char *)value, sizeof(float) * 3 * count); BufferData((const char *)value, sizeof(float) * 3 * count);
@ -1820,7 +1817,7 @@ NOXREF void CSave::WritePositionVector(const char *pname, const Vector &value)
} }
/* <1b1bde> ../cstrike/dlls/util.cpp:2126 */ /* <1b1bde> ../cstrike/dlls/util.cpp:2126 */
NOXREF void CSave::WritePositionVector(const char *pname, const float *value, int count) void CSave::WritePositionVector(const char *pname, const float *value, int count)
{ {
BufferHeader(pname, sizeof(float) * 3 * count); BufferHeader(pname, sizeof(float) * 3 * count);
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
@ -1836,7 +1833,7 @@ NOXREF void CSave::WritePositionVector(const char *pname, const float *value, in
} }
/* <1b2ca4> ../cstrike/dlls/util.cpp:2145 */ /* <1b2ca4> ../cstrike/dlls/util.cpp:2145 */
NOXREF void CSave::WriteFunction(const char *pname, void **data, int count) void CSave::WriteFunction(const char *pname, void **data, int count)
{ {
const char *functionName = NAME_FOR_FUNCTION((uint32)*data); const char *functionName = NAME_FOR_FUNCTION((uint32)*data);
@ -2009,7 +2006,7 @@ NOXREF void CSave::BufferString(char *pdata, int len)
} }
/* <1b3f5d> ../cstrike/dlls/util.cpp:2333 */ /* <1b3f5d> ../cstrike/dlls/util.cpp:2333 */
NOXREF int CSave::DataEmpty(const char *pdata, int size) int CSave::DataEmpty(const char *pdata, int size)
{ {
for (int i = 0; i < size; i++) for (int i = 0; i < size; i++)
{ {
@ -2264,7 +2261,7 @@ int CRestore::ReadFields(const char *pname, void *pBaseData, TYPEDESCRIPTION *pF
} }
/* <1b46b1> ../cstrike/dlls/util.cpp:2595 */ /* <1b46b1> ../cstrike/dlls/util.cpp:2595 */
NOXREF void CRestore::BufferReadHeader(HEADER *pheader) void CRestore::BufferReadHeader(HEADER *pheader)
{ {
pheader->size = ReadShort(); pheader->size = ReadShort();
pheader->token = ReadShort(); pheader->token = ReadShort();
@ -2274,7 +2271,7 @@ NOXREF void CRestore::BufferReadHeader(HEADER *pheader)
} }
/* <1b4654> ../cstrike/dlls/util.cpp:2605 */ /* <1b4654> ../cstrike/dlls/util.cpp:2605 */
NOXREF short CRestore::ReadShort(void) short CRestore::ReadShort(void)
{ {
short tmp = 0; short tmp = 0;
BufferReadBytes((char *)&tmp, sizeof(short)); BufferReadBytes((char *)&tmp, sizeof(short));
@ -2282,7 +2279,7 @@ NOXREF short CRestore::ReadShort(void)
} }
/* <1b45f5> ../cstrike/dlls/util.cpp:2614 */ /* <1b45f5> ../cstrike/dlls/util.cpp:2614 */
NOXREF int CRestore::ReadInt(void) int CRestore::ReadInt(void)
{ {
int tmp = 0; int tmp = 0;
BufferReadBytes((char *)&tmp, sizeof(int)); BufferReadBytes((char *)&tmp, sizeof(int));
@ -2306,7 +2303,7 @@ NOXREF char *CRestore::ReadNamedString(const char *pName)
} }
/* <1b453a> ../cstrike/dlls/util.cpp:2644 */ /* <1b453a> ../cstrike/dlls/util.cpp:2644 */
NOXREF char *CRestore::BufferPointer(void) char *CRestore::BufferPointer(void)
{ {
if (!m_pdata) if (!m_pdata)
return NULL; return NULL;
@ -2335,7 +2332,7 @@ void CRestore::BufferReadBytes(char *pOutput, int size)
} }
/* <1b5092> ../cstrike/dlls/util.cpp:2673 */ /* <1b5092> ../cstrike/dlls/util.cpp:2673 */
NOXREF void CRestore::BufferSkipBytes(int bytes) void CRestore::BufferSkipBytes(int bytes)
{ {
BufferReadBytes(NULL, bytes); BufferReadBytes(NULL, bytes);
} }

View File

@ -161,7 +161,7 @@ extern globalvars_t *gpGlobals;
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
#define LINK_ENTITY_TO_CLASS(mapClassName, DLLClassName)\ #define LINK_ENTITY_TO_CLASS(mapClassName, DLLClassName)\
C_DLLEXPORT void mapClassName(entvars_t *pev);\ C_DLLEXPORT void EXT_FUNC mapClassName(entvars_t *pev);\
void mapClassName(entvars_t *pev)\ void mapClassName(entvars_t *pev)\
{\ {\
GetClassPtr((DLLClassName *)pev);\ GetClassPtr((DLLClassName *)pev);\
@ -204,6 +204,16 @@ typedef enum
} MONSTERSTATE; } MONSTERSTATE;
// Things that toggle (buttons/triggers/doors) need this
typedef enum
{
TS_AT_TOP,
TS_AT_BOTTOM,
TS_GOING_UP,
TS_GOING_DOWN,
} TOGGLE_STATE;
typedef struct hudtextparms_s typedef struct hudtextparms_s
{ {
float x; float x;

View File

@ -121,8 +121,8 @@ public:
float_precision flLen = Length(); float_precision flLen = Length();
if (flLen > 0.0) if (flLen > 0.0)
{ {
x /= (vec_t)flLen; x = (vec_t)(1 / flLen * x);
y /= (vec_t)flLen; y = (vec_t)(1 / flLen * y);
} }
else else
{ {

View File

@ -23,7 +23,7 @@ TYPEDESCRIPTION CFuncVehicle::m_SaveData[] =
#else #else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncVehicle, m_SaveData)[12]; TYPEDESCRIPTION IMPL_CLASS(CFuncVehicle, m_SaveData)[12];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -960,30 +960,12 @@ void CFuncVehicle::__MAKE_VHOOK(Precache)(void)
switch (m_sounds) switch (m_sounds)
{ {
case 1: case 1: PRECACHE_SOUND("plats/vehicle1.wav");pev->noise = MAKE_STRING("plats/vehicle1.wav"); break;
PRECACHE_SOUND("plats/vehicle1.wav"); case 2: PRECACHE_SOUND("plats/vehicle2.wav");pev->noise = MAKE_STRING("plats/vehicle2.wav"); break;
pev->noise = MAKE_STRING("plats/vehicle1.wav"); case 3: PRECACHE_SOUND("plats/vehicle3.wav");pev->noise = MAKE_STRING("plats/vehicle3.wav"); break;
break; case 4: PRECACHE_SOUND("plats/vehicle4.wav");pev->noise = MAKE_STRING("plats/vehicle4.wav"); break;
case 2: case 5: PRECACHE_SOUND("plats/vehicle6.wav");pev->noise = MAKE_STRING("plats/vehicle6.wav"); break;
PRECACHE_SOUND("plats/vehicle2.wav"); case 6: PRECACHE_SOUND("plats/vehicle7.wav");pev->noise = MAKE_STRING("plats/vehicle7.wav"); break;
pev->noise = MAKE_STRING("plats/vehicle2.wav");
break;
case 3:
PRECACHE_SOUND("plats/vehicle3.wav");
pev->noise = MAKE_STRING("plats/vehicle3.wav");
break;
case 4:
PRECACHE_SOUND("plats/vehicle4.wav");
pev->noise = MAKE_STRING("plats/vehicle4.wav");
break;
case 5:
PRECACHE_SOUND("plats/vehicle6.wav");
pev->noise = MAKE_STRING("plats/vehicle6.wav");
break;
case 6:
PRECACHE_SOUND("plats/vehicle7.wav");
pev->noise = MAKE_STRING("plats/vehicle7.wav");
break;
} }
PRECACHE_SOUND("plats/vehicle_brake1.wav"); PRECACHE_SOUND("plats/vehicle_brake1.wav");

View File

@ -38,12 +38,12 @@ const char *g_pModelNameLaser = "sprites/laserbeam.spr";
#else // HOOK_GAMEDLL #else // HOOK_GAMEDLL
ItemInfo IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, ItemInfoArray)[32]; ItemInfo IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[32];
AmmoInfo IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray)[32]; AmmoInfo IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)[32];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, m_SaveData)[3]; TYPEDESCRIPTION IMPL_CLASS(CBasePlayerItem, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBasePlayerWeapon, m_SaveData)[7]; TYPEDESCRIPTION IMPL_CLASS(CBasePlayerWeapon, m_SaveData)[7];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CWeaponBox, m_SaveData)[4]; TYPEDESCRIPTION IMPL_CLASS(CWeaponBox, m_SaveData)[4];
const char *g_pModelNameLaser; const char *g_pModelNameLaser;
@ -80,7 +80,7 @@ int MaxAmmoCarry(int iszName)
{ {
for (int i = 0; i < MAX_WEAPONS; i++) for (int i = 0; i < MAX_WEAPONS; i++)
{ {
ItemInfo *info = &IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, ItemInfoArray)[ i ]; ItemInfo *info = &IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[ i ];
if (info->pszAmmo1 && !Q_strcmp(STRING(iszName), info->pszAmmo1)) if (info->pszAmmo1 && !Q_strcmp(STRING(iszName), info->pszAmmo1))
{ {
@ -231,10 +231,10 @@ void AddAmmoNameToAmmoRegistry(const char *szAmmoname)
// make sure it's not already in the registry // make sure it's not already in the registry
for (int i = 0; i < MAX_AMMO_SLOTS; i++) for (int i = 0; i < MAX_AMMO_SLOTS; i++)
{ {
if (!IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName) if (!IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName)
continue; continue;
if (!Q_stricmp(IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName, szAmmoname)) if (!Q_stricmp(IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName, szAmmoname))
{ {
// ammo already in registry, just quite // ammo already in registry, just quite
return; return;
@ -249,10 +249,10 @@ void AddAmmoNameToAmmoRegistry(const char *szAmmoname)
giAmmoIndex = 0; giAmmoIndex = 0;
} }
IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray)[ giAmmoIndex ].pszName = szAmmoname; IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)[ giAmmoIndex ].pszName = szAmmoname;
// yes, this info is redundant // yes, this info is redundant
IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray)[ giAmmoIndex ].iId = giAmmoIndex; IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)[ giAmmoIndex ].iId = giAmmoIndex;
} }
// Precaches the weapon and queues the weapon info for sending to clients // Precaches the weapon and queues the weapon info for sending to clients
@ -278,7 +278,7 @@ void UTIL_PrecacheOtherWeapon(const char *szClassname)
pEntity->Precache(); pEntity->Precache();
if (((CBasePlayerItem *)pEntity)->GetItemInfo(&II)) if (((CBasePlayerItem *)pEntity)->GetItemInfo(&II))
{ {
IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, ItemInfoArray)[ II.iId ] = II; IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[ II.iId ] = II;
if (II.pszAmmo1 != NULL && *II.pszAmmo1 != '\0') if (II.pszAmmo1 != NULL && *II.pszAmmo1 != '\0')
{ {
@ -317,7 +317,7 @@ NOXREF void UTIL_PrecacheOtherWeapon2(const char *szClassname)
if (((CBasePlayerItem *)pEntity)->GetItemInfo(&II)) if (((CBasePlayerItem *)pEntity)->GetItemInfo(&II))
{ {
IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, ItemInfoArray)[ II.iId ] = II; IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[ II.iId ] = II;
if (II.pszAmmo1 != NULL && *II.pszAmmo1 != '\0') if (II.pszAmmo1 != NULL && *II.pszAmmo1 != '\0')
{ {
@ -339,8 +339,8 @@ NOXREF void UTIL_PrecacheOtherWeapon2(const char *szClassname)
/* <1d3191> ../cstrike/dlls/weapons.cpp:345 */ /* <1d3191> ../cstrike/dlls/weapons.cpp:345 */
void W_Precache(void) void W_Precache(void)
{ {
Q_memset(IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, ItemInfoArray), 0, ARRAYSIZE(IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, ItemInfoArray))); Q_memset(IMPL_CLASS(CBasePlayerItem, ItemInfoArray), 0, ARRAYSIZE(IMPL_CLASS(CBasePlayerItem, ItemInfoArray)));
Q_memset(IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray), 0, ARRAYSIZE(IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray))); Q_memset(IMPL_CLASS(CBasePlayerItem, AmmoInfoArray), 0, ARRAYSIZE(IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)));
giAmmoIndex = 0; giAmmoIndex = 0;
// custom items... // custom items...
@ -2317,51 +2317,51 @@ void CArmoury::ArmouryTouch(CBaseEntity *pOther)
{ {
switch (m_iItem) switch (m_iItem)
{ {
case ARMOURY_FLASHBANG: case ARMOURY_FLASHBANG:
{ {
if (p->AmmoInventory(p->GetAmmoIndex("Flashbang")) >= 2) if (p->AmmoInventory(p->GetAmmoIndex("Flashbang")) >= 2)
return; return;
p->GiveNamedItem("weapon_flashbang"); p->GiveNamedItem("weapon_flashbang");
m_iCount--; m_iCount--;
break; break;
} }
case ARMOURY_HEGRENADE: case ARMOURY_HEGRENADE:
{ {
if (p->AmmoInventory(p->GetAmmoIndex("HEGrenade")) >= 1) if (p->AmmoInventory(p->GetAmmoIndex("HEGrenade")) >= 1)
return; return;
p->GiveNamedItem("weapon_hegrenade"); p->GiveNamedItem("weapon_hegrenade");
m_iCount--; m_iCount--;
break; break;
} }
case ARMOURY_KEVLAR: case ARMOURY_KEVLAR:
{ {
if (p->m_iKevlar == ARMOR_TYPE_KEVLAR) if (p->m_iKevlar == ARMOR_TYPE_KEVLAR)
return; return;
p->GiveNamedItem("item_kevlar"); p->GiveNamedItem("item_kevlar");
m_iCount--; m_iCount--;
break; break;
} }
case ARMOURY_ASSAULT: case ARMOURY_ASSAULT:
{ {
if (p->m_iKevlar == ARMOR_TYPE_HELMET) if (p->m_iKevlar == ARMOR_TYPE_HELMET)
return; return;
p->GiveNamedItem("item_assaultsuit"); p->GiveNamedItem("item_assaultsuit");
m_iCount--; m_iCount--;
break; break;
} }
case ARMOURY_SMOKEGRENADE: case ARMOURY_SMOKEGRENADE:
{ {
if (p->AmmoInventory(p->GetAmmoIndex("SmokeGrenade")) >= 1) if (p->AmmoInventory(p->GetAmmoIndex("SmokeGrenade")) >= 1)
return; return;
p->GiveNamedItem("weapon_smokegrenade"); p->GiveNamedItem("weapon_smokegrenade");
m_iCount--; m_iCount--;
break; break;
} }
} }
} }

View File

@ -46,29 +46,29 @@ class CBasePlayer;
#define ITEM_FLAG_EXHAUSTIBLE 16 // A player can totally exhaust their ammo supply and lose this weapon #define ITEM_FLAG_EXHAUSTIBLE 16 // A player can totally exhaust their ammo supply and lose this weapon
#define WEAPON_IS_ONTARGET 0x40 #define WEAPON_IS_ONTARGET 0x40
#define ARMOR_TYPE_EMPTY 0 #define ARMOR_TYPE_EMPTY 0
#define ARMOR_TYPE_KEVLAR 1 // Armor #define ARMOR_TYPE_KEVLAR 1 // Armor
#define ARMOR_TYPE_HELMET 2 // Armor and helmet #define ARMOR_TYPE_HELMET 2 // Armor and helmet
// the maximum amount of ammo each weapon's clip can hold // the maximum amount of ammo each weapon's clip can hold
#define WEAPON_NOCLIP -1 #define WEAPON_NOCLIP -1
#define LOUD_GUN_VOLUME 1000 #define LOUD_GUN_VOLUME 1000
#define NORMAL_GUN_VOLUME 600 #define NORMAL_GUN_VOLUME 600
#define QUIET_GUN_VOLUME 200 #define QUIET_GUN_VOLUME 200
#define BRIGHT_GUN_FLASH 512 #define BRIGHT_GUN_FLASH 512
#define NORMAL_GUN_FLASH 256 #define NORMAL_GUN_FLASH 256
#define DIM_GUN_FLASH 128 #define DIM_GUN_FLASH 128
#define BIG_EXPLOSION_VOLUME 2048 #define BIG_EXPLOSION_VOLUME 2048
#define NORMAL_EXPLOSION_VOLUME 1024 #define NORMAL_EXPLOSION_VOLUME 1024
#define SMALL_EXPLOSION_VOLUME 512 #define SMALL_EXPLOSION_VOLUME 512
#define WEAPON_ACTIVITY_VOLUME 64 #define WEAPON_ACTIVITY_VOLUME 64
// spawn flags // spawn flags
#define SF_DETONATE 0x0001 // Grenades flagged with this will be triggered when the owner calls detonateSatchelCharges #define SF_DETONATE 0x0001 // Grenades flagged with this will be triggered when the owner calls detonateSatchelCharges
// custom enum // custom enum
@ -234,7 +234,7 @@ public:
void EXPORT C4Think(void); void EXPORT C4Think(void);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[15]; static TYPEDESCRIPTION IMPL(m_SaveData)[15];
bool m_bStartDefuse; bool m_bStartDefuse;
bool m_bIsC4; bool m_bIsC4;
@ -301,14 +301,11 @@ public:
return TRUE; return TRUE;
} }
virtual void Holster(int skiplocal = 0); virtual void Holster(int skiplocal = 0);
virtual void UpdateItemInfo(void) {} virtual void UpdateItemInfo(void) {}
virtual void ItemPreFrame(void) {} virtual void ItemPreFrame(void) {}
virtual void ItemPostFrame(void) {} virtual void ItemPostFrame(void) {}
virtual void Drop(void); virtual void Drop(void);
virtual void Kill(void); virtual void Kill(void);
virtual void AttachToPlayer(CBasePlayer *pPlayer); virtual void AttachToPlayer(CBasePlayer *pPlayer);
virtual int PrimaryAmmoIndex(void) virtual int PrimaryAmmoIndex(void)
{ {
@ -337,14 +334,14 @@ public:
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
int Save_(CSave &save); int Save_(CSave &save);
int Restore_(CRestore &restore); int Restore_(CRestore &restore);
void SetObjectCollisionBox_(void); void SetObjectCollisionBox_(void);
CBaseEntity *Respawn_(void); CBaseEntity *Respawn_(void);
int AddToPlayer_(CBasePlayer *pPlayer); int AddToPlayer_(CBasePlayer *pPlayer);
void Holster_(int skiplocal); void Holster_(int skiplocal);
void Drop_(void); void Drop_(void);
void Kill_(void); void Kill_(void);
void AttachToPlayer_(CBasePlayer *pPlayer); void AttachToPlayer_(CBasePlayer *pPlayer);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -359,47 +356,47 @@ public:
void FallInit(void); void FallInit(void);
void CheckRespawn(void); void CheckRespawn(void);
public: public:
inline int iItemPosition(void) inline int iItemPosition(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].iPosition; return IMPL(ItemInfoArray)[ m_iId ].iPosition;
} }
inline const char *pszAmmo1(void) inline const char *pszAmmo1(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].pszAmmo1; return IMPL(ItemInfoArray)[ m_iId ].pszAmmo1;
} }
inline int iMaxAmmo1(void) inline int iMaxAmmo1(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].iMaxAmmo1; return IMPL(ItemInfoArray)[ m_iId ].iMaxAmmo1;
} }
inline const char *pszAmmo2(void) inline const char *pszAmmo2(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].pszAmmo2; return IMPL(ItemInfoArray)[ m_iId ].pszAmmo2;
} }
inline int iMaxAmmo2(void) inline int iMaxAmmo2(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].iMaxAmmo2; return IMPL(ItemInfoArray)[ m_iId ].iMaxAmmo2;
} }
inline const char *pszName(void) inline const char *pszName(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].pszName; return IMPL(ItemInfoArray)[ m_iId ].pszName;
} }
inline int iMaxClip(void) inline int iMaxClip(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].iMaxClip; return IMPL(ItemInfoArray)[ m_iId ].iMaxClip;
} }
inline int iWeight(void) inline int iWeight(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].iWeight; return IMPL(ItemInfoArray)[ m_iId ].iWeight;
} }
inline int iFlags(void) inline int iFlags(void)
{ {
return IMPLEMENT_ARRAY(ItemInfoArray)[ m_iId ].iFlags; return IMPL(ItemInfoArray)[ m_iId ].iFlags;
} }
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3]; static TYPEDESCRIPTION IMPL(m_SaveData)[3];
static ItemInfo IMPLEMENT_ARRAY(ItemInfoArray)[32]; static ItemInfo IMPL(ItemInfoArray)[32];
static AmmoInfo IMPLEMENT_ARRAY(AmmoInfoArray)[32]; static AmmoInfo IMPL(AmmoInfoArray)[32];
CBasePlayer *m_pPlayer; CBasePlayer *m_pPlayer;
CBasePlayerItem *m_pNext; CBasePlayerItem *m_pNext;
@ -458,22 +455,22 @@ public:
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
int Save_(CSave &save); int Save_(CSave &save);
int Restore_(CRestore &restore); int Restore_(CRestore &restore);
int AddToPlayer_(CBasePlayer *pPlayer); int AddToPlayer_(CBasePlayer *pPlayer);
int AddDuplicate_(CBasePlayerItem *pItem); int AddDuplicate_(CBasePlayerItem *pItem);
BOOL CanDeploy_(void); BOOL CanDeploy_(void);
void Holster_(int skiplocal = 0); void Holster_(int skiplocal = 0);
void ItemPostFrame_(void); void ItemPostFrame_(void);
int PrimaryAmmoIndex_(void); int PrimaryAmmoIndex_(void);
int SecondaryAmmoIndex_(void); int SecondaryAmmoIndex_(void);
int UpdateClientData_(CBasePlayer *pPlayer); int UpdateClientData_(CBasePlayer *pPlayer);
int ExtractAmmo_(CBasePlayerWeapon *pWeapon); int ExtractAmmo_(CBasePlayerWeapon *pWeapon);
int ExtractClipAmmo_(CBasePlayerWeapon *pWeapon); int ExtractClipAmmo_(CBasePlayerWeapon *pWeapon);
BOOL PlayEmptySound_(void); BOOL PlayEmptySound_(void);
void ResetEmptySound_(void); void ResetEmptySound_(void);
void SendWeaponAnim_(int iAnim, int skiplocal = 0); void SendWeaponAnim_(int iAnim, int skiplocal = 0);
BOOL IsUseable_(void); BOOL IsUseable_(void);
void RetireWeapon_(void); void RetireWeapon_(void);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -501,7 +498,7 @@ public:
bool ShieldSecondaryFire(int iUpAnim, int iDownAnim); bool ShieldSecondaryFire(int iUpAnim, int iDownAnim);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[7]; static TYPEDESCRIPTION IMPL(m_SaveData)[7];
int m_iPlayEmptySound; int m_iPlayEmptySound;
int m_fFireOnEmpty; int m_fFireOnEmpty;
@ -601,7 +598,7 @@ public:
BOOL PackAmmo(int iszName, int iCount); BOOL PackAmmo(int iszName, int iCount);
public: public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[4]; static TYPEDESCRIPTION IMPL(m_SaveData)[4];
CBasePlayerItem *m_rgpPlayerItems[ MAX_ITEM_TYPES ]; CBasePlayerItem *m_rgpPlayerItems[ MAX_ITEM_TYPES ];
int m_rgiszAmmo[ MAX_AMMO_SLOTS ]; int m_rgiszAmmo[ MAX_AMMO_SLOTS ];
@ -633,7 +630,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
virtual BOOL IsPistol(void) virtual BOOL IsPistol(void)
{ {
@ -676,7 +677,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 250.0f; return MP5N_MAX_SPEED;
} }
int iItemSlot(void) int iItemSlot(void)
{ {
@ -685,9 +686,13 @@ public:
virtual void PrimaryAttack(void); virtual void PrimaryAttack(void);
virtual void Reload(void); virtual void Reload(void);
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -733,7 +738,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -772,7 +781,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 221.0f; return AK47_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -784,7 +793,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -822,7 +835,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 240.0f; return AUG_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -834,7 +847,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -881,10 +898,10 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else #else
return FALSE; return FALSE;
#endif #endif
} }
@ -933,7 +950,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -945,6 +966,7 @@ public:
int GetItemInfo_(ItemInfo *p); int GetItemInfo_(ItemInfo *p);
BOOL Deploy_(void); BOOL Deploy_(void);
void Holster_(int skiplocal); void Holster_(int skiplocal);
float GetMaxSpeed_(void);
void PrimaryAttack_(void); void PrimaryAttack_(void);
void WeaponIdle_(void); void WeaponIdle_(void);
@ -981,7 +1003,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
virtual BOOL IsPistol(void) virtual BOOL IsPistol(void)
{ {
@ -1039,7 +1065,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
virtual BOOL IsPistol(void) virtual BOOL IsPistol(void)
{ {
@ -1091,7 +1121,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1141,7 +1175,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
virtual BOOL IsPistol(void) virtual BOOL IsPistol(void)
{ {
@ -1197,7 +1235,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1249,19 +1291,23 @@ public:
virtual void SecondaryAttack(void); virtual void SecondaryAttack(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
int GetItemInfo_(ItemInfo *p); int GetItemInfo_(ItemInfo *p);
BOOL Deploy_(void); BOOL Deploy_(void);
void Holster_(int skiplocal); void Holster_(int skiplocal);
void PrimaryAttack_(void); void PrimaryAttack_(void);
void SecondaryAttack_(void); void SecondaryAttack_(void);
void WeaponIdle_(void); void WeaponIdle_(void);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -1296,7 +1342,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 220.0f; return M249_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -1305,9 +1351,13 @@ public:
virtual void PrimaryAttack(void); virtual void PrimaryAttack(void);
virtual void Reload(void); virtual void Reload(void);
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1344,7 +1394,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 230.0f; return M3_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -1355,7 +1405,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1398,7 +1452,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1437,7 +1495,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 250.0f; return MAC10_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -1448,16 +1506,20 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
int GetItemInfo_(ItemInfo *p); int GetItemInfo_(ItemInfo *p);
BOOL Deploy_(void); BOOL Deploy_(void);
void PrimaryAttack_(void); void PrimaryAttack_(void);
void Reload_(void); void Reload_(void);
void WeaponIdle_(void); void WeaponIdle_(void);
@ -1497,7 +1559,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
virtual BOOL IsPistol(void) virtual BOOL IsPistol(void)
{ {
@ -1518,8 +1584,8 @@ public:
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
public: public:
void P228Fire(float flSpread, float flCycleTime, BOOL fUseSemi); void P228Fire(float flSpread, float flCycleTime, BOOL fUseSemi);
NOXREF void MakeBeam(void); NOXREF void MakeBeam(void);
NOXREF void BeamUpdate(void); NOXREF void BeamUpdate(void);
public: public:
@ -1548,7 +1614,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1595,7 +1665,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1650,19 +1724,23 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
int GetItemInfo_(ItemInfo *p); int GetItemInfo_(ItemInfo *p);
BOOL CanDeploy_(void); BOOL CanDeploy_(void);
BOOL Deploy_(void); BOOL Deploy_(void);
void Holster_(int skiplocal); void Holster_(int skiplocal);
void PrimaryAttack_(void); void PrimaryAttack_(void);
void SecondaryAttack_(void); void SecondaryAttack_(void);
void WeaponIdle_(void); void WeaponIdle_(void);
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -1687,7 +1765,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 250.0f; return TMP_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -1698,16 +1776,20 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
void Spawn_(void); void Spawn_(void);
void Precache_(void); void Precache_(void);
int GetItemInfo_(ItemInfo *p); int GetItemInfo_(ItemInfo *p);
BOOL Deploy_(void); BOOL Deploy_(void);
void PrimaryAttack_(void); void PrimaryAttack_(void);
void Reload_(void); void Reload_(void);
void WeaponIdle_(void); void WeaponIdle_(void);
@ -1735,7 +1817,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 240.0f; return XM1014_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -1746,7 +1828,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1780,7 +1866,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 250.0f; return ELITE_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -1791,7 +1877,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
virtual BOOL IsPistol(void) virtual BOOL IsPistol(void)
{ {
@ -1842,7 +1932,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
virtual BOOL IsPistol(void) virtual BOOL IsPistol(void)
{ {
@ -1885,7 +1979,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 250.0f; return UMP45_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -1896,7 +1990,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1942,7 +2040,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -1980,7 +2082,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 240.0f; return GALIL_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -1992,7 +2094,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -2030,7 +2136,7 @@ public:
virtual BOOL Deploy(void); virtual BOOL Deploy(void);
virtual float GetMaxSpeed(void) virtual float GetMaxSpeed(void)
{ {
return 240.0f; return FAMAS_MAX_SPEED;
} }
virtual int iItemSlot(void) virtual int iItemSlot(void)
{ {
@ -2042,7 +2148,11 @@ public:
virtual void WeaponIdle(void); virtual void WeaponIdle(void);
virtual BOOL UseDecrement(void) virtual BOOL UseDecrement(void)
{ {
#ifdef CLIENT_WEAPONS
return TRUE; return TRUE;
#else
return FALSE;
#endif
} }
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
@ -2066,53 +2176,53 @@ public:
int iShellOn; int iShellOn;
};/* size: 344, cachelines: 6, members: 3 */ };/* size: 344, cachelines: 6, members: 3 */
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
#define g_sModelIndexLaser (*pg_sModelIndexLaser) #define g_sModelIndexLaser (*pg_sModelIndexLaser)
#define g_pModelNameLaser (*pg_pModelNameLaser) #define g_pModelNameLaser (*pg_pModelNameLaser)
#define g_sModelIndexLaserDot (*pg_sModelIndexLaserDot) #define g_sModelIndexLaserDot (*pg_sModelIndexLaserDot)
#define g_sModelIndexFireball (*pg_sModelIndexFireball) #define g_sModelIndexFireball (*pg_sModelIndexFireball)
#define g_sModelIndexSmoke (*pg_sModelIndexSmoke) #define g_sModelIndexSmoke (*pg_sModelIndexSmoke)
#define g_sModelIndexWExplosion (*pg_sModelIndexWExplosion) #define g_sModelIndexWExplosion (*pg_sModelIndexWExplosion)
#define g_sModelIndexBubbles (*pg_sModelIndexBubbles) #define g_sModelIndexBubbles (*pg_sModelIndexBubbles)
#define g_sModelIndexBloodDrop (*pg_sModelIndexBloodDrop) #define g_sModelIndexBloodDrop (*pg_sModelIndexBloodDrop)
#define g_sModelIndexBloodSpray (*pg_sModelIndexBloodSpray) #define g_sModelIndexBloodSpray (*pg_sModelIndexBloodSpray)
#define g_sModelIndexSmokePuff (*pg_sModelIndexSmokePuff) #define g_sModelIndexSmokePuff (*pg_sModelIndexSmokePuff)
#define g_sModelIndexFireball2 (*pg_sModelIndexFireball2) #define g_sModelIndexFireball2 (*pg_sModelIndexFireball2)
#define g_sModelIndexFireball3 (*pg_sModelIndexFireball3) #define g_sModelIndexFireball3 (*pg_sModelIndexFireball3)
#define g_sModelIndexFireball4 (*pg_sModelIndexFireball4) #define g_sModelIndexFireball4 (*pg_sModelIndexFireball4)
#define g_sModelIndexCTGhost (*pg_sModelIndexCTGhost) #define g_sModelIndexCTGhost (*pg_sModelIndexCTGhost)
#define g_sModelIndexTGhost (*pg_sModelIndexTGhost) #define g_sModelIndexTGhost (*pg_sModelIndexTGhost)
#define g_sModelIndexC4Glow (*pg_sModelIndexC4Glow) #define g_sModelIndexC4Glow (*pg_sModelIndexC4Glow)
#define giAmmoIndex (*pgiAmmoIndex) #define giAmmoIndex (*pgiAmmoIndex)
#define g_sModelIndexRadio (*pg_sModelIndexRadio) #define g_sModelIndexRadio (*pg_sModelIndexRadio)
#define gMultiDamage (*pgMultiDamage) #define gMultiDamage (*pgMultiDamage)
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
extern short g_sModelIndexLaser; extern short g_sModelIndexLaser;
extern const char *g_pModelNameLaser; extern const char *g_pModelNameLaser;
extern short g_sModelIndexLaserDot; extern short g_sModelIndexLaserDot;
extern short g_sModelIndexFireball; extern short g_sModelIndexFireball;
extern short g_sModelIndexSmoke; extern short g_sModelIndexSmoke;
extern short g_sModelIndexWExplosion; extern short g_sModelIndexWExplosion;
extern short g_sModelIndexBubbles; extern short g_sModelIndexBubbles;
extern short g_sModelIndexBloodDrop; extern short g_sModelIndexBloodDrop;
extern short g_sModelIndexBloodSpray; extern short g_sModelIndexBloodSpray;
extern short g_sModelIndexSmokePuff; extern short g_sModelIndexSmokePuff;
extern short g_sModelIndexFireball2; extern short g_sModelIndexFireball2;
extern short g_sModelIndexFireball3; extern short g_sModelIndexFireball3;
extern short g_sModelIndexFireball4; extern short g_sModelIndexFireball4;
extern short g_sModelIndexCTGhost; extern short g_sModelIndexCTGhost;
extern short g_sModelIndexTGhost; extern short g_sModelIndexTGhost;
extern short g_sModelIndexC4Glow; extern short g_sModelIndexC4Glow;
extern int giAmmoIndex; extern int giAmmoIndex;
extern short g_sModelIndexRadio; extern short g_sModelIndexRadio;
extern MULTIDAMAGE gMultiDamage; extern MULTIDAMAGE gMultiDamage;
void FindHullIntersection(Vector &vecSrc, TraceResult &tr, float *mins, float *maxs, edict_t *pEntity); void FindHullIntersection(Vector &vecSrc, TraceResult &tr, float *mins, float *maxs, edict_t *pEntity);
void AnnounceFlashInterval(float interval, float offset = 0); void AnnounceFlashInterval(float interval, float offset = 0);
@ -2135,34 +2245,34 @@ BOOL CanAttack(float attack_time, float curtime, BOOL isPredicted);
#ifdef HOOK_GAMEDLL #ifdef HOOK_GAMEDLL
// linked object // linked object
C_DLLEXPORT void weapon_knife(entvars_t *pev); C_DLLEXPORT void weapon_knife(entvars_t *pev);
C_DLLEXPORT void weapon_glock18(entvars_t *pev); C_DLLEXPORT void weapon_glock18(entvars_t *pev);
C_DLLEXPORT void weapon_c4(entvars_t *pev); C_DLLEXPORT void weapon_c4(entvars_t *pev);
C_DLLEXPORT void weapon_usp(entvars_t *pev); C_DLLEXPORT void weapon_usp(entvars_t *pev);
C_DLLEXPORT void weapon_smokegrenade(entvars_t *pev); C_DLLEXPORT void weapon_smokegrenade(entvars_t *pev);
C_DLLEXPORT void weapon_m4a1(entvars_t *pev); C_DLLEXPORT void weapon_m4a1(entvars_t *pev);
C_DLLEXPORT void weapon_hegrenade(entvars_t *pev); C_DLLEXPORT void weapon_hegrenade(entvars_t *pev);
C_DLLEXPORT void weapon_flashbang(entvars_t *pev); C_DLLEXPORT void weapon_flashbang(entvars_t *pev);
C_DLLEXPORT void weapon_famas(entvars_t *pev); C_DLLEXPORT void weapon_famas(entvars_t *pev);
C_DLLEXPORT void weapon_elite(entvars_t *pev); C_DLLEXPORT void weapon_elite(entvars_t *pev);
C_DLLEXPORT void weapon_fiveseven(entvars_t *pev); C_DLLEXPORT void weapon_fiveseven(entvars_t *pev);
C_DLLEXPORT void weapon_p228(entvars_t *pev); C_DLLEXPORT void weapon_p228(entvars_t *pev);
C_DLLEXPORT void weapon_xm1014(entvars_t *pev); C_DLLEXPORT void weapon_xm1014(entvars_t *pev);
C_DLLEXPORT void weapon_g3sg1(entvars_t *pev); C_DLLEXPORT void weapon_g3sg1(entvars_t *pev);
C_DLLEXPORT void weapon_sg550(entvars_t *pev); C_DLLEXPORT void weapon_sg550(entvars_t *pev);
C_DLLEXPORT void weapon_deagle(entvars_t *pev); C_DLLEXPORT void weapon_deagle(entvars_t *pev);
C_DLLEXPORT void weapon_awp(entvars_t *pev); C_DLLEXPORT void weapon_awp(entvars_t *pev);
C_DLLEXPORT void weapon_scout(entvars_t *pev); C_DLLEXPORT void weapon_scout(entvars_t *pev);
C_DLLEXPORT void weapon_sg552(entvars_t *pev); C_DLLEXPORT void weapon_sg552(entvars_t *pev);
C_DLLEXPORT void weapon_m3(entvars_t *pev); C_DLLEXPORT void weapon_m3(entvars_t *pev);
C_DLLEXPORT void weapon_aug(entvars_t *pev); C_DLLEXPORT void weapon_aug(entvars_t *pev);
C_DLLEXPORT void weapon_galil(entvars_t *pev); C_DLLEXPORT void weapon_galil(entvars_t *pev);
C_DLLEXPORT void weapon_ak47(entvars_t *pev); C_DLLEXPORT void weapon_ak47(entvars_t *pev);
C_DLLEXPORT void weapon_m249(entvars_t *pev); C_DLLEXPORT void weapon_m249(entvars_t *pev);
C_DLLEXPORT void weapon_p90(entvars_t *pev); C_DLLEXPORT void weapon_p90(entvars_t *pev);
C_DLLEXPORT void weapon_mac10(entvars_t *pev); C_DLLEXPORT void weapon_mac10(entvars_t *pev);
C_DLLEXPORT void weapon_ump45(entvars_t *pev); C_DLLEXPORT void weapon_ump45(entvars_t *pev);
C_DLLEXPORT void weapon_mp5navy(entvars_t *pev); C_DLLEXPORT void weapon_mp5navy(entvars_t *pev);
C_DLLEXPORT void weapon_tmp(entvars_t *pev); C_DLLEXPORT void weapon_tmp(entvars_t *pev);
C_DLLEXPORT void armoury_entity(entvars_t *pev); C_DLLEXPORT void armoury_entity(entvars_t *pev);

View File

@ -128,14 +128,14 @@ enum WeaponCostType
SHIELDGUN_PRICE = 2200, SHIELDGUN_PRICE = 2200,
}; };
enum WeaponState enum WeaponState
{ {
WPNSTATE_USP_SILENCED = (1 << 0), WPNSTATE_USP_SILENCED = (1 << 0),
WPNSTATE_GLOCK18_BURST_MODE = (1 << 1), WPNSTATE_GLOCK18_BURST_MODE = (1 << 1),
WPNSTATE_M4A1_SILENCED = (1 << 2), WPNSTATE_M4A1_SILENCED = (1 << 2),
WPNSTATE_ELITE_LEFT = (1 << 3), WPNSTATE_ELITE_LEFT = (1 << 3),
WPNSTATE_FAMAS_BURST_MODE = (1 << 4), WPNSTATE_FAMAS_BURST_MODE = (1 << 4),
WPNSTATE_SHIELD_DRAWN = (1 << 5), WPNSTATE_SHIELD_DRAWN = (1 << 5),
}; };
// custom enum // custom enum
@ -324,8 +324,8 @@ enum shieldgun_e
//custom //custom
enum shieldgren_e enum shieldgren_e
{ {
SHIELDREN_IDLE = 4, SHIELDREN_IDLE = 4,
SHIELDREN_UP, SHIELDREN_UP,
SHIELDREN_DOWN SHIELDREN_DOWN
}; };

View File

@ -71,7 +71,7 @@ TYPEDESCRIPTION gGlobalEntitySaveData[] =
DLL_DECALLIST gDecals[42]; DLL_DECALLIST gDecals[42];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGlobalState, m_SaveData)[1]; TYPEDESCRIPTION IMPL_CLASS(CGlobalState, m_SaveData)[1];
TYPEDESCRIPTION gGlobalEntitySaveData[3]; TYPEDESCRIPTION gGlobalEntitySaveData[3];
#endif // HOOK_GAMEDLL #endif // HOOK_GAMEDLL
@ -324,7 +324,7 @@ int CGlobalState::Save(CSave &save)
int i; int i;
globalentity_t *pEntity; globalentity_t *pEntity;
if (!save.WriteFields("GLOBAL", this, IMPLEMENT_ARRAY(m_SaveData), ARRAYSIZE(IMPLEMENT_ARRAY(m_SaveData)))) if (!save.WriteFields("GLOBAL", this, IMPL(m_SaveData), ARRAYSIZE(IMPL(m_SaveData))))
{ {
return 0; return 0;
} }
@ -351,7 +351,7 @@ int CGlobalState::Restore(CRestore &restore)
ClearStates(); ClearStates();
if (!restore.ReadFields("GLOBAL", this, IMPLEMENT_ARRAY(m_SaveData), ARRAYSIZE(IMPLEMENT_ARRAY(m_SaveData)))) if (!restore.ReadFields("GLOBAL", this, IMPL(m_SaveData), ARRAYSIZE(IMPL(m_SaveData))))
{ {
return 0; return 0;
} }
@ -403,21 +403,21 @@ void CGlobalState::ClearStates(void)
} }
/* <1dbc13> ../cstrike/dlls/world.cpp:466 */ /* <1dbc13> ../cstrike/dlls/world.cpp:466 */
void SaveGlobalState(SAVERESTOREDATA *pSaveData) void EXT_FUNC SaveGlobalState(SAVERESTOREDATA *pSaveData)
{ {
CSave saveHelper(pSaveData); CSave saveHelper(pSaveData);
gGlobalState.Save(saveHelper); gGlobalState.Save(saveHelper);
} }
/* <1dbcde> ../cstrike/dlls/world.cpp:473 */ /* <1dbcde> ../cstrike/dlls/world.cpp:473 */
void RestoreGlobalState(SAVERESTOREDATA *pSaveData) void EXT_FUNC RestoreGlobalState(SAVERESTOREDATA *pSaveData)
{ {
CRestore restoreHelper(pSaveData); CRestore restoreHelper(pSaveData);
gGlobalState.Restore(restoreHelper); gGlobalState.Restore(restoreHelper);
} }
/* <1dbe72> ../cstrike/dlls/world.cpp:480 */ /* <1dbe72> ../cstrike/dlls/world.cpp:480 */
void ResetGlobalState(void) void EXT_FUNC ResetGlobalState(void)
{ {
gGlobalState.ClearStates(); gGlobalState.ClearStates();

View File

@ -6,171 +6,171 @@ LINK_ENTITY_TO_CLASS(weapon_aug, CAUG);
/* <23a711> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:52 */ /* <23a711> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:52 */
void CAUG::__MAKE_VHOOK(Spawn)(void) void CAUG::__MAKE_VHOOK(Spawn)(void)
{ {
Precache(); Precache();
m_iId = WEAPON_AUG; m_iId = WEAPON_AUG;
SET_MODEL(edict(), "models/w_aug.mdl"); SET_MODEL(edict(), "models/w_aug.mdl");
m_iDefaultAmmo = AUG_DEFAULT_GIVE; m_iDefaultAmmo = AUG_DEFAULT_GIVE;
m_flAccuracy = 0.2; m_flAccuracy = 0.2;
m_iShotsFired = 0; m_iShotsFired = 0;
FallInit(); FallInit();
} }
/* <23a66a> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:66 */ /* <23a66a> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:66 */
void CAUG::__MAKE_VHOOK(Precache)(void) void CAUG::__MAKE_VHOOK(Precache)(void)
{ {
PRECACHE_MODEL("models/v_aug.mdl"); PRECACHE_MODEL("models/v_aug.mdl");
PRECACHE_MODEL("models/w_aug.mdl"); PRECACHE_MODEL("models/w_aug.mdl");
PRECACHE_SOUND("weapons/aug-1.wav"); PRECACHE_SOUND("weapons/aug-1.wav");
PRECACHE_SOUND("weapons/aug_clipout.wav"); PRECACHE_SOUND("weapons/aug_clipout.wav");
PRECACHE_SOUND("weapons/aug_clipin.wav"); PRECACHE_SOUND("weapons/aug_clipin.wav");
PRECACHE_SOUND("weapons/aug_boltpull.wav"); PRECACHE_SOUND("weapons/aug_boltpull.wav");
PRECACHE_SOUND("weapons/aug_boltslap.wav"); PRECACHE_SOUND("weapons/aug_boltslap.wav");
PRECACHE_SOUND("weapons/aug_forearm.wav"); PRECACHE_SOUND("weapons/aug_forearm.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl"); m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireAug = PRECACHE_EVENT(1, "events/aug.sc"); m_usFireAug = PRECACHE_EVENT(1, "events/aug.sc");
} }
/* <23a691> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:83 */ /* <23a691> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:83 */
int CAUG::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p) int CAUG::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{ {
p->pszName = STRING(pev->classname); p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556Nato"; p->pszAmmo1 = "556Nato";
p->iMaxAmmo1 = MAX_AMMO_556NATO; p->iMaxAmmo1 = MAX_AMMO_556NATO;
p->pszAmmo2 = NULL; p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1; p->iMaxAmmo2 = -1;
p->iMaxClip = AUG_MAX_CLIP; p->iMaxClip = AUG_MAX_CLIP;
p->iSlot = 0; p->iSlot = 0;
p->iPosition = 14; p->iPosition = 14;
p->iId = m_iId = WEAPON_AUG; p->iId = m_iId = WEAPON_AUG;
p->iFlags = 0; p->iFlags = 0;
p->iWeight = AUG_WEIGHT; p->iWeight = AUG_WEIGHT;
return 1; return 1;
} }
/* <23a6ea> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:100 */ /* <23a6ea> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:100 */
BOOL CAUG::__MAKE_VHOOK(Deploy)(void) BOOL CAUG::__MAKE_VHOOK(Deploy)(void)
{ {
m_flAccuracy = 0.2; m_flAccuracy = 0.2;
m_iShotsFired = 0; m_iShotsFired = 0;
iShellOn = 1; iShellOn = 1;
return DefaultDeploy("models/v_aug.mdl", "models/p_aug.mdl", AUG_DRAW, "carbine", UseDecrement() != FALSE); return DefaultDeploy("models/v_aug.mdl", "models/p_aug.mdl", AUG_DRAW, "carbine", UseDecrement() != FALSE);
} }
/* <23a6c4> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:109 */ /* <23a6c4> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:109 */
void CAUG::__MAKE_VHOOK(SecondaryAttack)(void) void CAUG::__MAKE_VHOOK(SecondaryAttack)(void)
{ {
if (m_pPlayer->m_iFOV == DEFAULT_FOV) if (m_pPlayer->m_iFOV == DEFAULT_FOV)
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 55; m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 55;
else else
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 90; m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 90;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
} }
/* <23aa31> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:130 */ /* <23aa31> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:130 */
void CAUG::__MAKE_VHOOK(PrimaryAttack)(void) void CAUG::__MAKE_VHOOK(PrimaryAttack)(void)
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{ {
AUGFire(0.035 + (0.4 * m_flAccuracy), 0.0825, FALSE); AUGFire(0.035 + (0.4 * m_flAccuracy), 0.0825, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_pPlayer->pev->velocity.Length2D() > 140)
{ {
AUGFire(0.035 + (0.07 * m_flAccuracy), 0.0825, FALSE); AUGFire(0.035 + (0.07 * m_flAccuracy), 0.0825, FALSE);
} }
else if (m_pPlayer->pev->fov == DEFAULT_FOV) else if (m_pPlayer->pev->fov == DEFAULT_FOV)
{ {
AUGFire(0.02 * m_flAccuracy, 0.0825, FALSE); AUGFire(0.02 * m_flAccuracy, 0.0825, FALSE);
} }
else else
{ {
AUGFire(0.02 * m_flAccuracy, 0.135, FALSE); AUGFire(0.02 * m_flAccuracy, 0.135, FALSE);
} }
} }
/* <23a8e9> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:143 */ /* <23a8e9> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:143 */
void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim) void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{ {
Vector vecAiming, vecSrc, vecDir; Vector vecAiming, vecSrc, vecDir;
int flag; int flag;
m_bDelayFire = true; m_bDelayFire = true;
m_iShotsFired++; m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 215) + 0.3; m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 215) + 0.3;
if (m_flAccuracy > 1) if (m_flAccuracy > 1)
m_flAccuracy = 1; m_flAccuracy = 1;
if (m_iClip <= 0) if (m_iClip <= 0)
{ {
if (m_fFireOnEmpty) if (m_fFireOnEmpty)
{ {
PlayEmptySound(); PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.2); m_flNextPrimaryAttack = GetNextAttackDelay(0.2);
} }
if (TheBots != NULL) if (TheBots != NULL)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_pPlayer->SetAnimation(PLAYER_ATTACK1);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
AUG_DAMAGE, AUG_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
flag = FEV_NOTHOST; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
#else
flag = 0; UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
#endif // CLIENT_WEAPONS
vecSrc = m_pPlayer->GetGunPosition();
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireAug, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, vecAiming = gpGlobals->v_forward;
(int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE);
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); AUG_DAMAGE, AUG_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) #ifdef CLIENT_WEAPONS
{ flag = FEV_NOTHOST;
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); #else
} flag = 0;
#endif // CLIENT_WEAPONS
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.9;
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireAug, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.9;
if (m_pPlayer->pev->velocity.Length2D() > 0) if (m_pPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7); KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7);
} }
else if (!(m_pPlayer->pev->flags & FL_ONGROUND)) else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5); KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_pPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8); KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8);
} }
else else
{ {
KickBack(0.625, 0.375, 0.25, 0.0125, 3.5, 2.25, 8); KickBack(0.625, 0.375, 0.25, 0.0125, 3.5, 2.25, 8);
} }
} }
@ -178,38 +178,38 @@ void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
/* <23a7c2> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:225 */ /* <23a7c2> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:225 */
void CAUG::__MAKE_VHOOK(Reload)(void) void CAUG::__MAKE_VHOOK(Reload)(void)
{ {
if (m_pPlayer->ammo_556nato <= 0) if (m_pPlayer->ammo_556nato <= 0)
{ {
return; return;
} }
if (DefaultReload(AUG_MAX_CLIP, AUG_RELOAD, AUG_RELOAD_TIME)) if (DefaultReload(AUG_MAX_CLIP, AUG_RELOAD, AUG_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_pPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->m_iFOV != DEFAULT_FOV) if (m_pPlayer->m_iFOV != DEFAULT_FOV)
{ {
SecondaryAttack(); SecondaryAttack();
} }
m_flAccuracy = 0; m_flAccuracy = 0;
m_iShotsFired = 0; m_iShotsFired = 0;
m_bDelayFire = false; m_bDelayFire = false;
} }
} }
/* <23a787> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:245 */ /* <23a787> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:245 */
void CAUG::__MAKE_VHOOK(WeaponIdle)(void) void CAUG::__MAKE_VHOOK(WeaponIdle)(void)
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {
return; return;
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(AUG_IDLE1, UseDecrement() != FALSE); SendWeaponAnim(AUG_IDLE1, UseDecrement() != FALSE);
} }

View File

@ -336,7 +336,7 @@ void CC4::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_T
} }
/* <2463cc> ../cstrike/dlls/weapons.h:732 */ /* <2463cc> ../cstrike/dlls/weapons.h:732 */
float CC4::GetMaxSpeed(void) float CC4::__MAKE_VHOOK(GetMaxSpeed)(void)
{ {
return C4_MAX_SPEED; return C4_MAX_SPEED;
} }
@ -378,6 +378,11 @@ void CC4::Holster(int skiplocal)
Holster_(skiplocal); Holster_(skiplocal);
} }
float CC4::GetMaxSpeed(void)
{
return GetMaxSpeed_();
}
void CC4::PrimaryAttack(void) void CC4::PrimaryAttack(void)
{ {
PrimaryAttack_(); PrimaryAttack_();

View File

@ -6,51 +6,51 @@ LINK_ENTITY_TO_CLASS(weapon_famas, CFamas);
/* <2c0284> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:52 */ /* <2c0284> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:52 */
void CFamas::__MAKE_VHOOK(Spawn)(void) void CFamas::__MAKE_VHOOK(Spawn)(void)
{ {
Precache(); Precache();
m_iId = WEAPON_FAMAS; m_iId = WEAPON_FAMAS;
SET_MODEL(edict(), "models/w_famas.mdl"); SET_MODEL(edict(), "models/w_famas.mdl");
m_iDefaultAmmo = FAMAS_DEFAULT_GIVE; m_iDefaultAmmo = FAMAS_DEFAULT_GIVE;
m_iFamasShotsFired = 0; m_iFamasShotsFired = 0;
m_flFamasShoot = 0; m_flFamasShoot = 0;
FallInit(); FallInit();
} }
/* <2c01dc> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:66 */ /* <2c01dc> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:66 */
void CFamas::__MAKE_VHOOK(Precache)(void) void CFamas::__MAKE_VHOOK(Precache)(void)
{ {
PRECACHE_MODEL("models/v_famas.mdl"); PRECACHE_MODEL("models/v_famas.mdl");
PRECACHE_MODEL("models/w_famas.mdl"); PRECACHE_MODEL("models/w_famas.mdl");
PRECACHE_SOUND("weapons/famas-1.wav"); PRECACHE_SOUND("weapons/famas-1.wav");
PRECACHE_SOUND("weapons/famas-2.wav"); PRECACHE_SOUND("weapons/famas-2.wav");
PRECACHE_SOUND("weapons/famas_clipout.wav"); PRECACHE_SOUND("weapons/famas_clipout.wav");
PRECACHE_SOUND("weapons/famas_clipin.wav"); PRECACHE_SOUND("weapons/famas_clipin.wav");
PRECACHE_SOUND("weapons/famas_boltpull.wav"); PRECACHE_SOUND("weapons/famas_boltpull.wav");
PRECACHE_SOUND("weapons/famas_boltslap.wav"); PRECACHE_SOUND("weapons/famas_boltslap.wav");
PRECACHE_SOUND("weapons/famas_forearm.wav"); PRECACHE_SOUND("weapons/famas_forearm.wav");
PRECACHE_SOUND("weapons/famas-burst.wav"); PRECACHE_SOUND("weapons/famas-burst.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl"); m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireFamas = PRECACHE_EVENT(1, "events/famas.sc"); m_usFireFamas = PRECACHE_EVENT(1, "events/famas.sc");
} }
/* <2c0203> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:85 */ /* <2c0203> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:85 */
int CFamas::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p) int CFamas::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{ {
p->pszName = STRING(pev->classname); p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556Nato"; p->pszAmmo1 = "556Nato";
p->iMaxAmmo1 = MAX_AMMO_556NATO; p->iMaxAmmo1 = MAX_AMMO_556NATO;
p->pszAmmo2 = NULL; p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1; p->iMaxAmmo2 = -1;
p->iMaxClip = FAMAS_MAX_CLIP; p->iMaxClip = FAMAS_MAX_CLIP;
p->iSlot = 0; p->iSlot = 0;
p->iPosition = 18; p->iPosition = 18;
p->iId = m_iId = WEAPON_FAMAS; p->iId = m_iId = WEAPON_FAMAS;
p->iFlags = 0; p->iFlags = 0;
p->iWeight = FAMAS_WEIGHT; p->iWeight = FAMAS_WEIGHT;
return 1; return 1;
} }
@ -58,55 +58,55 @@ int CFamas::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
BOOL CFamas::__MAKE_VHOOK(Deploy)(void) BOOL CFamas::__MAKE_VHOOK(Deploy)(void)
{ {
m_iShotsFired = 0; m_iShotsFired = 0;
m_iFamasShotsFired = 0; m_iFamasShotsFired = 0;
m_flFamasShoot = 0; m_flFamasShoot = 0;
m_flAccuracy = 0.2; m_flAccuracy = 0.2;
iShellOn = 1; iShellOn = 1;
return DefaultDeploy("models/v_famas.mdl", "models/p_famas.mdl", FAMAS_DRAW, "carbine", UseDecrement() != FALSE); return DefaultDeploy("models/v_famas.mdl", "models/p_famas.mdl", FAMAS_DRAW, "carbine", UseDecrement() != FALSE);
} }
/* <2c0236> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:114 */ /* <2c0236> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:114 */
void CFamas::__MAKE_VHOOK(SecondaryAttack)(void) void CFamas::__MAKE_VHOOK(SecondaryAttack)(void)
{ {
if (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE) if (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE)
{ {
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_FullAuto"); ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_FullAuto");
m_iWeaponState &= ~WPNSTATE_FAMAS_BURST_MODE; m_iWeaponState &= ~WPNSTATE_FAMAS_BURST_MODE;
} }
else else
{ {
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire"); ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire");
m_iWeaponState |= WPNSTATE_FAMAS_BURST_MODE; m_iWeaponState |= WPNSTATE_FAMAS_BURST_MODE;
} }
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3; m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
} }
/* <2c04fe> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:129 */ /* <2c04fe> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:129 */
void CFamas::__MAKE_VHOOK(PrimaryAttack)(void) void CFamas::__MAKE_VHOOK(PrimaryAttack)(void)
{ {
if (m_pPlayer->pev->waterlevel == 3) if (m_pPlayer->pev->waterlevel == 3)
{ {
PlayEmptySound(); PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.15); m_flNextPrimaryAttack = GetNextAttackDelay(0.15);
return; return;
} }
bool bFireBurst = (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE) == WPNSTATE_FAMAS_BURST_MODE; bool bFireBurst = (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE) == WPNSTATE_FAMAS_BURST_MODE;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{ {
FamasFire(0.030 + 0.3 * m_flAccuracy, 0.0825, FALSE, bFireBurst); FamasFire(0.030 + 0.3 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_pPlayer->pev->velocity.Length2D() > 140)
{ {
FamasFire(0.030 + 0.07 * m_flAccuracy, 0.0825, FALSE, bFireBurst); FamasFire(0.030 + 0.07 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
} }
else else
{ {
FamasFire(0.02 * m_flAccuracy, 0.0825, FALSE, bFireBurst); FamasFire(0.02 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
} }
} }
@ -117,132 +117,132 @@ void CFamas::FamasFire(float flSpread, float flCycleTime, BOOL fUseAutoAim, BOOL
int flag; int flag;
//int mask; //int mask;
if (bFireBurst) if (bFireBurst)
{ {
m_iFamasShotsFired = 0; m_iFamasShotsFired = 0;
flCycleTime = 0.55; flCycleTime = 0.55;
} }
else else
{ {
flSpread += 0.01; flSpread += 0.01;
}
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = (m_iShotsFired * m_iShotsFired * m_iShotsFired / 215) + 0.3;
if (m_flAccuracy > 1)
m_flAccuracy = 1;
if (m_iClip <= 0)
{
if (m_fFireOnEmpty)
{
PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.2);
}
if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer);
}
return;
} }
m_iClip--; m_bDelayFire = true;
m_iShotsFired++;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_flAccuracy = (m_iShotsFired * m_iShotsFired * m_iShotsFired / 215) + 0.3;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle); if (m_flAccuracy > 1)
m_flAccuracy = 1;
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; if (m_iClip <= 0)
{
vecSrc = m_pPlayer->GetGunPosition(); if (m_fFireOnEmpty)
vecAiming = gpGlobals->v_forward; {
PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.2);
}
if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer);
}
return;
}
m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
bFireBurst ? FAMAS_DAMAGE_BURST : FAMAS_DAMAGE, FAMAS_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed); bFireBurst ? FAMAS_DAMAGE_BURST : FAMAS_DAMAGE, FAMAS_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS #ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST; flag = FEV_NOTHOST;
#else #else
flag = 0; flag = 0;
#endif // CLIENT_WEAPONS #endif // CLIENT_WEAPONS
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireFamas, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireFamas, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 10000000), (int)(m_pPlayer->pev->punchangle.y * 10000000), FALSE, FALSE); (int)(m_pPlayer->pev->punchangle.x * 10000000), (int)(m_pPlayer->pev->punchangle.y * 10000000), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{ {
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.1; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.1;
if (m_pPlayer->pev->velocity.Length2D() > 0) if (m_pPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7); KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7);
} }
else if (!(m_pPlayer->pev->flags & FL_ONGROUND)) else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5); KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_pPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8); KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8);
} }
else else
{ {
KickBack(0.625, 0.375, 0.25, 0.0125, 3.5, 2.25, 8); KickBack(0.625, 0.375, 0.25, 0.0125, 3.5, 2.25, 8);
} }
if (bFireBurst) if (bFireBurst)
{ {
m_iFamasShotsFired++; m_iFamasShotsFired++;
m_fBurstSpread = flSpread; m_fBurstSpread = flSpread;
m_flFamasShoot = gpGlobals->time + 0.05; m_flFamasShoot = gpGlobals->time + 0.05;
} }
} }
/* <2c0336> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:262 */ /* <2c0336> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:262 */
void CFamas::__MAKE_VHOOK(Reload)(void) void CFamas::__MAKE_VHOOK(Reload)(void)
{ {
if (m_pPlayer->ammo_556nato <= 0) if (m_pPlayer->ammo_556nato <= 0)
{ {
return; return;
} }
if (DefaultReload(FAMAS_MAX_CLIP, FAMAS_RELOAD, FAMAS_RELOAD_TIME)) if (DefaultReload(FAMAS_MAX_CLIP, FAMAS_RELOAD, FAMAS_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_pPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->m_iFOV != DEFAULT_FOV) if (m_pPlayer->m_iFOV != DEFAULT_FOV)
{ {
SecondaryAttack(); SecondaryAttack();
} }
m_flAccuracy = 0; m_flAccuracy = 0;
m_iShotsFired = 0; m_iShotsFired = 0;
m_bDelayFire = false; m_bDelayFire = false;
} }
} }
/* <2c02fa> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:284 */ /* <2c02fa> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:284 */
void CFamas::__MAKE_VHOOK(WeaponIdle)(void) void CFamas::__MAKE_VHOOK(WeaponIdle)(void)
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{ {
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
SendWeaponAnim(FAMAS_IDLE1, UseDecrement() != FALSE); SendWeaponAnim(FAMAS_IDLE1, UseDecrement() != FALSE);
} }
} }

View File

@ -6,157 +6,157 @@ LINK_ENTITY_TO_CLASS(weapon_m249, CM249);
/* <276951> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:51 */ /* <276951> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:51 */
void CM249::__MAKE_VHOOK(Spawn)(void) void CM249::__MAKE_VHOOK(Spawn)(void)
{ {
Precache(); Precache();
m_iId = WEAPON_M249; m_iId = WEAPON_M249;
SET_MODEL(edict(), "models/w_m249.mdl"); SET_MODEL(edict(), "models/w_m249.mdl");
m_iDefaultAmmo = M249_DEFAULT_GIVE; m_iDefaultAmmo = M249_DEFAULT_GIVE;
m_flAccuracy = 0.2; m_flAccuracy = 0.2;
m_iShotsFired = 0; m_iShotsFired = 0;
FallInit(); FallInit();
} }
/* <2768d0> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:65 */ /* <2768d0> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:65 */
void CM249::__MAKE_VHOOK(Precache)(void) void CM249::__MAKE_VHOOK(Precache)(void)
{ {
PRECACHE_MODEL("models/v_m249.mdl"); PRECACHE_MODEL("models/v_m249.mdl");
PRECACHE_MODEL("models/w_m249.mdl"); PRECACHE_MODEL("models/w_m249.mdl");
PRECACHE_SOUND("weapons/m249-1.wav"); PRECACHE_SOUND("weapons/m249-1.wav");
PRECACHE_SOUND("weapons/m249-2.wav"); PRECACHE_SOUND("weapons/m249-2.wav");
PRECACHE_SOUND("weapons/m249_boxout.wav"); PRECACHE_SOUND("weapons/m249_boxout.wav");
PRECACHE_SOUND("weapons/m249_boxin.wav"); PRECACHE_SOUND("weapons/m249_boxin.wav");
PRECACHE_SOUND("weapons/m249_chain.wav"); PRECACHE_SOUND("weapons/m249_chain.wav");
PRECACHE_SOUND("weapons/m249_coverup.wav"); PRECACHE_SOUND("weapons/m249_coverup.wav");
PRECACHE_SOUND("weapons/m249_coverdown.wav"); PRECACHE_SOUND("weapons/m249_coverdown.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl"); m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireM249 = PRECACHE_EVENT(1, "events/m249.sc"); m_usFireM249 = PRECACHE_EVENT(1, "events/m249.sc");
} }
/* <2768f7> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:84 */ /* <2768f7> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:84 */
int CM249::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p) int CM249::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{ {
p->pszName = STRING(pev->classname); p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556NatoBox"; p->pszAmmo1 = "556NatoBox";
p->iMaxAmmo1 = MAX_AMMO_556NATOBOX; p->iMaxAmmo1 = MAX_AMMO_556NATOBOX;
p->pszAmmo2 = NULL; p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1; p->iMaxAmmo2 = -1;
p->iMaxClip = M249_MAX_CLIP; p->iMaxClip = M249_MAX_CLIP;
p->iSlot = 0; p->iSlot = 0;
p->iPosition = 4; p->iPosition = 4;
p->iId = m_iId = WEAPON_M249; p->iId = m_iId = WEAPON_M249;
p->iFlags = 0; p->iFlags = 0;
p->iWeight = M249_WEIGHT; p->iWeight = M249_WEIGHT;
return 1; return 1;
} }
/* <27692a> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:101 */ /* <27692a> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:101 */
BOOL CM249::__MAKE_VHOOK(Deploy)(void) BOOL CM249::__MAKE_VHOOK(Deploy)(void)
{ {
m_flAccuracy = 0.2; m_flAccuracy = 0.2;
m_iShotsFired = 0; m_iShotsFired = 0;
iShellOn = 1; iShellOn = 1;
return DefaultDeploy("models/v_m249.mdl", "models/p_m249.mdl", M249_DRAW, "m249", UseDecrement() != FALSE); return DefaultDeploy("models/v_m249.mdl", "models/p_m249.mdl", M249_DRAW, "m249", UseDecrement() != FALSE);
} }
/* <276b73> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:111 */ /* <276b73> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:111 */
void CM249::__MAKE_VHOOK(PrimaryAttack)(void) void CM249::__MAKE_VHOOK(PrimaryAttack)(void)
{ {
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{ {
M249Fire(0.045 + (0.5 * m_flAccuracy), 0.1, FALSE); M249Fire(0.045 + (0.5 * m_flAccuracy), 0.1, FALSE);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 140) else if (m_pPlayer->pev->velocity.Length2D() > 140)
{ {
M249Fire(0.045 + (0.095 * m_flAccuracy), 0.1, FALSE); M249Fire(0.045 + (0.095 * m_flAccuracy), 0.1, FALSE);
} }
else else
{ {
M249Fire(0.03 * m_flAccuracy, 0.1, FALSE); M249Fire(0.03 * m_flAccuracy, 0.1, FALSE);
} }
} }
/* <276c87> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:121 */ /* <276c87> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:121 */
void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim) void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{ {
Vector vecAiming, vecSrc, vecDir; Vector vecAiming, vecSrc, vecDir;
int flag; int flag;
m_bDelayFire = true; m_bDelayFire = true;
m_iShotsFired++; m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 175) + 0.4; m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 175) + 0.4;
if (m_flAccuracy > 0.9) if (m_flAccuracy > 0.9)
m_flAccuracy = 0.9; m_flAccuracy = 0.9;
if (m_iClip <= 0) if (m_iClip <= 0)
{ {
if (m_fFireOnEmpty) if (m_fFireOnEmpty)
{ {
PlayEmptySound(); PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.2); m_flNextPrimaryAttack = GetNextAttackDelay(0.2);
} }
if (TheBots != NULL) if (TheBots != NULL)
{ {
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer); TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer);
} }
return; return;
} }
m_iClip--; m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH; m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1); m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
M249_DAMAGE, M249_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
flag = FEV_NOTHOST;
#else m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
flag = 0; m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
#endif // CLIENT_WEAPONS
vecSrc = m_pPlayer->GetGunPosition();
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireM249, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, vecAiming = gpGlobals->v_forward;
(int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE);
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime); M249_DAMAGE, M249_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0) #ifdef CLIENT_WEAPONS
{ flag = FEV_NOTHOST;
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); #else
} flag = 0;
#endif // CLIENT_WEAPONS
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.6;
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireM249, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.6;
if (!(m_pPlayer->pev->flags & FL_ONGROUND)) if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{ {
KickBack(1.8, 0.65, 0.45, 0.125, 5.0, 3.5, 8); KickBack(1.8, 0.65, 0.45, 0.125, 5.0, 3.5, 8);
} }
else if (m_pPlayer->pev->velocity.Length2D() > 0) else if (m_pPlayer->pev->velocity.Length2D() > 0)
{ {
KickBack(1.1, 0.5, 0.3, 0.06, 4.0, 3.0, 8); KickBack(1.1, 0.5, 0.3, 0.06, 4.0, 3.0, 8);
} }
else if (m_pPlayer->pev->flags & FL_DUCKING) else if (m_pPlayer->pev->flags & FL_DUCKING)
{ {
KickBack(0.75, 0.325, 0.25, 0.025, 3.5, 2.5, 9); KickBack(0.75, 0.325, 0.25, 0.025, 3.5, 2.5, 9);
} }
else else
{ {
KickBack(0.8, 0.35, 0.3, 0.03, 3.75, 3.0, 9); KickBack(0.8, 0.35, 0.3, 0.03, 3.75, 3.0, 9);
} }
} }
@ -166,34 +166,34 @@ void CM249::__MAKE_VHOOK(Reload)(void)
{ {
#ifdef REGAMEDLL_FIXES #ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo // to prevent reload if not enough ammo
if (m_pPlayer->ammo_556natobox <= 0) if (m_pPlayer->ammo_556natobox <= 0)
{ {
return; return;
} }
#endif // REGAMEDLL_FIXES #endif // REGAMEDLL_FIXES
if (DefaultReload(M249_MAX_CLIP, M249_RELOAD, M249_RELOAD_TIME)) if (DefaultReload(M249_MAX_CLIP, M249_RELOAD, M249_RELOAD_TIME))
{ {
m_pPlayer->SetAnimation(PLAYER_RELOAD); m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2; m_flAccuracy = 0.2;
m_bDelayFire = false; m_bDelayFire = false;
m_iShotsFired = 0; m_iShotsFired = 0;
} }
} }
/* <2769c7> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:222 */ /* <2769c7> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:222 */
void CM249::__MAKE_VHOOK(WeaponIdle)(void) void CM249::__MAKE_VHOOK(WeaponIdle)(void)
{ {
ResetEmptySound(); ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES); m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase()) if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{ {
return; return;
} }
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(M249_IDLE1, UseDecrement() != FALSE); SendWeaponAnim(M249_IDLE1, UseDecrement() != FALSE);
} }

View File

@ -26,11 +26,11 @@
* *
*/ */
#ifndef COMMON_H #ifndef COMMON_H
#define COMMON_H #define COMMON_H
#ifdef _WIN32 #ifdef _WIN32
#pragma once #pragma once
#endif #endif
#include "maintypes.h" #include "maintypes.h"
#include "bspfile.h" #include "bspfile.h"
@ -111,6 +111,7 @@ typedef struct incomingtransfer_s
#define Q_snprintf _snprintf #define Q_snprintf _snprintf
#define Q_atoi atoi #define Q_atoi atoi
#define Q_atof atof #define Q_atof atof
#define Q_memmove memmove
//#define Q_strtoull strtoull //#define Q_strtoull strtoull
//#define Q_FileNameCmp FileNameCmp //#define Q_FileNameCmp FileNameCmp
#define Q_vsnprintf _vsnprintf #define Q_vsnprintf _vsnprintf

View File

@ -59,30 +59,30 @@ enum EStringConvertErrorPolicy
STRINGCONVERT_ASSERT_FAIL = 6, STRINGCONVERT_ASSERT_FAIL = 6,
}; };
bool Q_IsValidUChar32(uchar32 uVal); bool Q_IsValidUChar32(uchar32 uVal);
int Q_UTF32ToUChar32(const uchar32 *pUTF32, uchar32 &uVal, bool &bErr); int Q_UTF32ToUChar32(const uchar32 *pUTF32, uchar32 &uVal, bool &bErr);
int Q_UChar32ToUTF32Len(uchar32 uVal); int Q_UChar32ToUTF32Len(uchar32 uVal);
int Q_UChar32ToUTF32(uchar32 uVal, uchar32 *pUTF32); int Q_UChar32ToUTF32(uchar32 uVal, uchar32 *pUTF32);
int Q_UChar32ToUTF8Len(uchar32 uVal); int Q_UChar32ToUTF8Len(uchar32 uVal);
int Q_UChar32ToUTF16Len(uchar32 uVal); int Q_UChar32ToUTF16Len(uchar32 uVal);
int Q_UChar32ToUTF16(uchar32 uVal, uchar16 *pUTF16Out); int Q_UChar32ToUTF16(uchar32 uVal, uchar16 *pUTF16Out);
int Q_UChar32ToUTF8(uchar32 uVal, char *pUTF8Out); int Q_UChar32ToUTF8(uchar32 uVal, char *pUTF8Out);
int Q_UTF16ToUChar32(const uchar16 *pUTF16, uchar32 &uValueOut, bool &bErrorOut); int Q_UTF16ToUChar32(const uchar16 *pUTF16, uchar32 &uValueOut, bool &bErrorOut);
int Q_UTF8ToUTF16(const char *pUTF8, uchar16 *pUTF16, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy); int Q_UTF8ToUTF16(const char *pUTF8, uchar16 *pUTF16, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy);
int Q_UTF8ToUTF32(const char *pUTF8, uchar32 *pUTF32, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy); int Q_UTF8ToUTF32(const char *pUTF8, uchar32 *pUTF32, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy);
int Q_UTF16ToUTF8(const uchar16 *pUTF16, char *pUTF8, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy); int Q_UTF16ToUTF8(const uchar16 *pUTF16, char *pUTF8, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy);
NOXREF int Q_UTF16ToUTF32(const uchar16 *pUTF16, uchar32 *pUTF32, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy); NOXREF int Q_UTF16ToUTF32(const uchar16 *pUTF16, uchar32 *pUTF32, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy);
int Q_UTF32ToUTF8(const uchar32 *pUTF32, char *pUTF8, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy); int Q_UTF32ToUTF8(const uchar32 *pUTF32, char *pUTF8, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy);
NOXREF int Q_UTF32ToUTF16(const uchar32 *pUTF32, uchar16 *pUTF16, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy); NOXREF int Q_UTF32ToUTF16(const uchar32 *pUTF32, uchar16 *pUTF16, int cubDestSizeInBytes, EStringConvertErrorPolicy ePolicy);
int Q_UTF8ToUChar32(const char *pUTF8_, uchar32 &uValueOut, bool &bErrorOut); int Q_UTF8ToUChar32(const char *pUTF8_, uchar32 &uValueOut, bool &bErrorOut);
qboolean Q_UnicodeValidate(const char *pUTF8); qboolean Q_UnicodeValidate(const char *pUTF8);
NOXREF int Q_UnicodeLength(const char *pUTF8); NOXREF int Q_UnicodeLength(const char *pUTF8);
NOXREF char *Q_UnicodeAdvance(char *pUTF8, int nChars); NOXREF char *Q_UnicodeAdvance(char *pUTF8, int nChars);
//bool Q_IsMeanSpaceW(uchar16 wch); //bool Q_IsMeanSpaceW(uchar16 wch);
bool Q_IsDeprecatedW(uchar16 wch); bool Q_IsDeprecatedW(uchar16 wch);
uchar16 *StripUnprintableWorker(uchar16 *pwch, bool *pbStrippedAny); uchar16 *StripUnprintableWorker(uchar16 *pwch, bool *pbStrippedAny);
qboolean Q_StripUnprintableAndSpace(char *pch); qboolean Q_StripUnprintableAndSpace(char *pch);
NOXREF qboolean V_UTF8ToUChar32(const char *pUTF8_, uchar32 *uValueOut); NOXREF qboolean V_UTF8ToUChar32(const char *pUTF8_, uchar32 *uValueOut);
NOXREF int Q_UnicodeRepair(char *pUTF8); NOXREF int Q_UnicodeRepair(char *pUTF8);
#endif // UNICODE_STR_TOOLS_H #endif // UNICODE_STR_TOOLS_H

Some files were not shown because too many files have changed in this diff Show More