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
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CAirtank, m_SaveData)[1];
TYPEDESCRIPTION IMPL_CLASS(CAirtank, m_SaveData)[1];
#endif // HOOK_GAMEDLL

View File

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

View File

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

View File

@ -16,104 +16,104 @@ TYPEDESCRIPTION CBaseAnimating::m_SaveData[] =
#else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseAnimating, m_SaveData)[5];
TYPEDESCRIPTION IMPL_CLASS(CBaseAnimating, m_SaveData)[5];
#endif // HOOK_GAMEDLL
/* <10583> ../cstrike/dlls/animating.cpp:38 */
IMPLEMENT_SAVERESTORE(CBaseAnimating, CBaseDelay);
/* <105cf> ../cstrike/dlls/animating.cpp:45 */
float CBaseAnimating::StudioFrameAdvance(float flInterval)
{
if (flInterval == 0.0f)
{
flInterval = gpGlobals->time - pev->animtime;
if (flInterval <= 0.001)
{
pev->animtime = gpGlobals->time;
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;
/* <105cf> ../cstrike/dlls/animating.cpp:45 */
float CBaseAnimating::StudioFrameAdvance(float flInterval)
{
if (flInterval == 0.0f)
{
flInterval = gpGlobals->time - pev->animtime;
if (flInterval <= 0.001)
{
pev->animtime = gpGlobals->time;
return 0;
}
}
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 */
int CBaseAnimating::LookupActivity(int activity)
{
/* <10605> ../cstrike/dlls/animating.cpp:77 */
int CBaseAnimating::LookupActivity(int activity)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::LookupActivity(pmodel, pev, activity);
return ::LookupActivity(pmodel, pev, activity);
}
/* <10653> ../cstrike/dlls/animating.cpp:91 */
int CBaseAnimating::LookupActivityHeaviest(int activity)
{
/* <10653> ../cstrike/dlls/animating.cpp:91 */
int CBaseAnimating::LookupActivityHeaviest(int activity)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::LookupActivityHeaviest(pmodel, pev, activity);
}
/* <107b1> ../cstrike/dlls/animating.cpp:136 */
void CBaseAnimating::DispatchAnimEvents(float flInterval)
{
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)
{
return ::LookupActivityHeaviest(pmodel, pev, activity);
}
/* <107b1> ../cstrike/dlls/animating.cpp:136 */
void CBaseAnimating::DispatchAnimEvents(float flInterval)
{
MonsterEvent_t event;
void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::LookupSequence(pmodel, label);
}
/* <10711> ../cstrike/dlls/animating.cpp:110 */
void CBaseAnimating::ResetSequenceInfo(void)
{
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));
return ::LookupSequence(pmodel, label);
}
/* <10711> ../cstrike/dlls/animating.cpp:110 */
void CBaseAnimating::ResetSequenceInfo(void)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
GetSequenceInfo(pmodel, pev, &m_flFrameRate, &m_flGroundSpeed);
@ -122,175 +122,175 @@ void CBaseAnimating::ResetSequenceInfo(void)
pev->framerate = 1.0f;
m_fSequenceFinished = FALSE;
m_flLastEventCheck = gpGlobals->time;
}
/* <1077c> ../cstrike/dlls/animating.cpp:126 */
BOOL CBaseAnimating::GetSequenceFlags(void)
{
m_flLastEventCheck = gpGlobals->time;
}
/* <1077c> ../cstrike/dlls/animating.cpp:126 */
BOOL CBaseAnimating::GetSequenceFlags(void)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::GetSequenceFlags(pmodel, pev);
}
/* <10837> ../cstrike/dlls/animating.cpp:171 */
float CBaseAnimating::SetBoneController(int iController, float flValue)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
return SetController(pmodel, pev, iController, flValue);
}
/* <10893> ../cstrike/dlls/animating.cpp:180 */
void CBaseAnimating::InitBoneControllers(void)
{
return ::GetSequenceFlags(pmodel, pev);
}
/* <10837> ../cstrike/dlls/animating.cpp:171 */
float CBaseAnimating::SetBoneController(int iController, float flValue)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
return SetController(pmodel, pev, iController, flValue);
}
/* <10893> ../cstrike/dlls/animating.cpp:180 */
void CBaseAnimating::InitBoneControllers(void)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
SetController(pmodel, pev, 0, 0);
SetController(pmodel, pev, 1, 0);
SetController(pmodel, pev, 2, 0);
SetController(pmodel, pev, 3, 0);
}
/* <108d3> ../cstrike/dlls/animating.cpp:192 */
NOXREF float CBaseAnimating::SetBlending(int iBlender, float flValue)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::SetBlending(pmodel, pev, iBlender, flValue);
}
/* <1092f> ../cstrike/dlls/animating.cpp:201 */
NOXREF void CBaseAnimating::GetBonePosition(int iBone, Vector &origin, Vector &angles)
{
GET_BONE_POSITION(ENT(pev), iBone, origin, angles);
}
/* <10984> ../cstrike/dlls/animating.cpp:208 */
NOXREF void CBaseAnimating::GetAttachment(int iAttachment, Vector &origin, Vector &angles)
{
GET_ATTACHMENT(ENT(pev), iAttachment, origin, angles);
}
/* <109d4> ../cstrike/dlls/animating.cpp:215 */
NOXREF int CBaseAnimating::FindTransition(int iEndingSequence, int iGoalSequence, int *piDir)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
if (piDir == NULL)
{
int iDir;
int sequence = ::FindTransition(pmodel, iEndingSequence, iGoalSequence, &iDir);
if (iDir != 1)
sequence = -1;
return sequence;
}
return ::FindTransition(pmodel, iEndingSequence, iGoalSequence, piDir);
}
/* <10a5d> ../cstrike/dlls/animating.cpp:234 */
NOXREF void CBaseAnimating::GetAutomovement(Vector &origin, Vector &angles, float flInterval)
{
;
}
/* <10aad> ../cstrike/dlls/animating.cpp:239 */
NOXREF void CBaseAnimating::SetBodygroup(int iGroup, int iValue)
{
::SetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup, iValue);
}
/* <10af0> ../cstrike/dlls/animating.cpp:244 */
NOXREF int CBaseAnimating::GetBodygroup(int iGroup)
{
return ::GetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup);
}
/* <10b5f> ../cstrike/dlls/animating.cpp:250 */
int CBaseAnimating::ExtractBbox(int sequence, float *mins, float *maxs)
{
return ::ExtractBbox(GET_MODEL_PTR(ENT(pev)), sequence, mins, maxs);
}
/* <10b99> ../cstrike/dlls/animating.cpp:258 */
void CBaseAnimating::SetSequenceBox(void)
{
Vector mins, maxs;
// Get sequence bbox
if (ExtractBbox(pev->sequence, mins, maxs))
{
// expand box for rotation
// find min / max for rotations
float yaw = pev->angles.y * (M_PI / 180.0);
Vector xvector, yvector;
xvector.x = cos(yaw);
xvector.y = sin(yaw);
yvector.x = -sin(yaw);
yvector.y = cos(yaw);
Vector bounds[2];
bounds[0] = mins;
bounds[1] = maxs;
Vector rmin(9999, 9999, 9999);
Vector rmax(-9999, -9999, -9999);
Vector base, transformed;
for (int i = 0; i <= 1; i++)
{
base.x = bounds[i].x;
for (int j = 0; j <= 1; j++)
{
base.y = bounds[j].y;
for (int k = 0; k <= 1; k++)
{
base.z = bounds[k].z;
// transform the point
transformed.x = xvector.x * base.x + yvector.x * base.y;
transformed.y = xvector.y * base.x + yvector.y * base.y;
transformed.z = base.z;
if (transformed.x < rmin.x)
rmin.x = transformed.x;
if (transformed.x > rmax.x)
rmax.x = transformed.x;
if (transformed.y < rmin.y)
rmin.y = transformed.y;
if (transformed.y > rmax.y)
rmax.y = transformed.y;
if (transformed.z < rmin.z)
rmin.z = transformed.z;
if (transformed.z > rmax.z)
rmax.z = transformed.z;
}
}
}
rmin.z = 0;
rmax.z = rmin.z + 1;
UTIL_SetSize(pev, rmin, rmax);
}
}
#ifdef HOOK_GAMEDLL
int CBaseAnimating::Save(CSave &save)
{
return Save_(save);
}
int CBaseAnimating::Restore(CRestore &restore)
{
return Restore_(restore);
}
#endif // HOOK_GAMEDLL
SetController(pmodel, pev, 3, 0);
}
/* <108d3> ../cstrike/dlls/animating.cpp:192 */
NOXREF float CBaseAnimating::SetBlending(int iBlender, float flValue)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
return ::SetBlending(pmodel, pev, iBlender, flValue);
}
/* <1092f> ../cstrike/dlls/animating.cpp:201 */
NOXREF void CBaseAnimating::GetBonePosition(int iBone, Vector &origin, Vector &angles)
{
GET_BONE_POSITION(ENT(pev), iBone, origin, angles);
}
/* <10984> ../cstrike/dlls/animating.cpp:208 */
NOXREF void CBaseAnimating::GetAttachment(int iAttachment, Vector &origin, Vector &angles)
{
GET_ATTACHMENT(ENT(pev), iAttachment, origin, angles);
}
/* <109d4> ../cstrike/dlls/animating.cpp:215 */
NOXREF int CBaseAnimating::FindTransition(int iEndingSequence, int iGoalSequence, int *piDir)
{
void *pmodel = GET_MODEL_PTR(ENT(pev));
if (piDir == NULL)
{
int iDir;
int sequence = ::FindTransition(pmodel, iEndingSequence, iGoalSequence, &iDir);
if (iDir != 1)
sequence = -1;
return sequence;
}
return ::FindTransition(pmodel, iEndingSequence, iGoalSequence, piDir);
}
/* <10a5d> ../cstrike/dlls/animating.cpp:234 */
NOXREF void CBaseAnimating::GetAutomovement(Vector &origin, Vector &angles, float flInterval)
{
;
}
/* <10aad> ../cstrike/dlls/animating.cpp:239 */
NOXREF void CBaseAnimating::SetBodygroup(int iGroup, int iValue)
{
::SetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup, iValue);
}
/* <10af0> ../cstrike/dlls/animating.cpp:244 */
NOXREF int CBaseAnimating::GetBodygroup(int iGroup)
{
return ::GetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup);
}
/* <10b5f> ../cstrike/dlls/animating.cpp:250 */
int CBaseAnimating::ExtractBbox(int sequence, float *mins, float *maxs)
{
return ::ExtractBbox(GET_MODEL_PTR(ENT(pev)), sequence, mins, maxs);
}
/* <10b99> ../cstrike/dlls/animating.cpp:258 */
void CBaseAnimating::SetSequenceBox(void)
{
Vector mins, maxs;
// Get sequence bbox
if (ExtractBbox(pev->sequence, mins, maxs))
{
// expand box for rotation
// find min / max for rotations
float yaw = pev->angles.y * (M_PI / 180.0);
Vector xvector, yvector;
xvector.x = cos(yaw);
xvector.y = sin(yaw);
yvector.x = -sin(yaw);
yvector.y = cos(yaw);
Vector bounds[2];
bounds[0] = mins;
bounds[1] = maxs;
Vector rmin(9999, 9999, 9999);
Vector rmax(-9999, -9999, -9999);
Vector base, transformed;
for (int i = 0; i <= 1; i++)
{
base.x = bounds[i].x;
for (int j = 0; j <= 1; j++)
{
base.y = bounds[j].y;
for (int k = 0; k <= 1; k++)
{
base.z = bounds[k].z;
// transform the point
transformed.x = xvector.x * base.x + yvector.x * base.y;
transformed.y = xvector.y * base.x + yvector.y * base.y;
transformed.z = base.z;
if (transformed.x < rmin.x)
rmin.x = transformed.x;
if (transformed.x > rmax.x)
rmax.x = transformed.x;
if (transformed.y < rmin.y)
rmin.y = transformed.y;
if (transformed.y > rmax.y)
rmax.y = transformed.y;
if (transformed.z < rmin.z)
rmin.z = transformed.z;
if (transformed.z > rmax.z)
rmax.z = transformed.z;
}
}
}
rmin.z = 0;
rmax.z = rmin.z + 1;
UTIL_SetSize(pev, rmin, rmax);
}
}
#ifdef HOOK_GAMEDLL
int CBaseAnimating::Save(CSave &save)
{
return Save_(save);
}
int CBaseAnimating::Restore(CRestore &restore)
{
return Restore_(restore);
}
#endif // HOOK_GAMEDLL

View File

@ -73,28 +73,28 @@ public:
virtual BOOL FInViewCone(CBaseEntity *pEntity);
virtual BOOL FInViewCone(const Vector *pOrigin);
#ifdef HOOK_GAMEDLL
void KeyValue_(KeyValueData *pkvd);
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 TakeHealth_(float flHealth, int bitsDamageType);
void Killed_(entvars_t *pevAttacker, int iGib);
float ChangeYaw_(int speed);
BOOL HasHumanGibs_(void);
BOOL HasAlienGibs_(void);
void FadeMonster_(void);
void GibMonster_(void);
Activity GetDeathActivity_(void);
void BecomeDead_(void);
BOOL ShouldFadeOnDeath_(void);
int IRelationship_(CBaseEntity *pTarget);
void MonsterInitDead_(void);
void Look_(int iDistance);
CBaseEntity *BestVisibleEnemy_(void);
BOOL FInViewCone_(CBaseEntity *pEntity);
BOOL FInViewCone_(const Vector *pOrigin);
#ifdef HOOK_GAMEDLL
void KeyValue_(KeyValueData *pkvd);
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 TakeHealth_(float flHealth, int bitsDamageType);
void Killed_(entvars_t *pevAttacker, int iGib);
float ChangeYaw_(int speed);
BOOL HasHumanGibs_(void);
BOOL HasAlienGibs_(void);
void FadeMonster_(void);
void GibMonster_(void);
Activity GetDeathActivity_(void);
void BecomeDead_(void);
BOOL ShouldFadeOnDeath_(void);
int IRelationship_(CBaseEntity *pTarget);
void MonsterInitDead_(void);
void Look_(int iDistance);
CBaseEntity *BestVisibleEnemy_(void);
BOOL FInViewCone_(CBaseEntity *pEntity);
BOOL FInViewCone_(const Vector *pOrigin);
#endif // HOOK_GAMEDLL
public:

View File

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

View File

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

View File

@ -110,16 +110,16 @@ NOBODY void CCSBot::BotTouch(CBaseEntity *other)
/* <2e89e3> ../cstrike/dlls/bot/cs_bot.cpp:335 */
bool CCSBot::IsBusy(void) const
{
if (IsAttacking() ||
IsBuying() ||
IsDefusingBomb() ||
GetTask() == PLANT_BOMB ||
GetTask() == RESCUE_HOSTAGES ||
IsSniping())
{
return true;
}
if (IsAttacking() ||
IsBuying() ||
IsDefusingBomb() ||
GetTask() == PLANT_BOMB ||
GetTask() == RESCUE_HOSTAGES ||
IsSniping())
{
return true;
}
return false;
}
@ -359,15 +359,15 @@ bool CCSBot::IsRogue(void) const
{
CCSBotManager *ctrl = TheCSBots();
if (!ctrl->AllowRogues())
if (!ctrl->AllowRogues())
return false;
// periodically re-evaluate our rogue status
if (m_rogueTimer.IsElapsed())
// periodically re-evaluate our rogue status
if (m_rogueTimer.IsElapsed())
{
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());
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 */
NOBODY float CCSBot::GetRangeToFarthestEscortedHostage(void)
float CCSBot::GetRangeToFarthestEscortedHostage(void)
{
// {
// class FarthestHostage away; // 1118
// ForEachHostage<FarthestHostage>(const class CHostageManager *const this,
// class FarthestHostage &func); // 1120
// }
FarthestHostage away(this);
g_pHostages->ForEachHostage(away);
return away.m_farRange;
}
#ifdef HOOK_GAMEDLL

View File

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

View File

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

View File

@ -123,7 +123,7 @@ void CCSBotManager::__MAKE_VHOOK(RestartRound)(void)
m_bombDefuser = NULL;
m_earliestBombPlantTimestamp = gpGlobals->time + RANDOM_FLOAT(10, 30);
IMPLEMENT_ARRAY(m_editCmd) = EDIT_NONE;
IMPL(m_editCmd) = EDIT_NONE;
ResetRadioMessageTimestamps();
m_lastSeenEnemyTimestamp = -9999.9f;
@ -209,7 +209,7 @@ NOBODY bool CCSBotManager::IsOnOffense(CBasePlayer *player) const
void CCSBotManager::__MAKE_VHOOK(ServerActivate)(void)
{
DestroyNavigationMap();
IMPLEMENT_ARRAY(m_isMapDataLoaded) = false;
IMPL(m_isMapDataLoaded) = false;
m_zoneCount = 0;
m_gameScenario = SCENARIO_DEATHMATCH;
@ -217,8 +217,8 @@ void CCSBotManager::__MAKE_VHOOK(ServerActivate)(void)
ValidateMapData();
RestartRound();
IMPLEMENT_ARRAY(m_isLearningMap) = false;
IMPLEMENT_ARRAY(m_isAnalysisRequested) = false;
IMPL(m_isLearningMap) = false;
IMPL(m_isAnalysisRequested) = false;
m_bServerActive = true;
AddServerCommands();
@ -480,59 +480,59 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
}
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"))
{
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_SPLIT;
IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_SPLIT;
}
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"))
{
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_MARK;
IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_MARK;
}
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"))
{
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_END_AREA;
IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_END_AREA;
}
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"))
{
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_DISCONNECT;
IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_DISCONNECT;
}
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"))
{
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_CROUCH;
IMPL_CLASS(CCSBotManager, m_editCmd) = EDIT_ATTRIB_CROUCH;
}
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"))
{
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"))
{
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"))
{
IMPLEMENT_ARRAY_CLASS(CCSBotManager, m_isAnalysisRequested) = true;
IMPL_CLASS(CCSBotManager, m_isAnalysisRequested) = true;
}
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"))
{
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"))
{
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"))
{
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"))
{
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"))
{
@ -683,23 +683,23 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
}
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"))
{
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"))
{
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"))
{
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"))
{
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"))
{
@ -716,7 +716,7 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
/* <36c3c2> ../cstrike/dlls/bot/cs_bot_manager.cpp:903 */
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;
const BotProfile *profile = NULL;
@ -815,12 +815,12 @@ NOBODY void CCSBotManager::MonitorBotCVars(void)
/* <36b780> ../cstrike/dlls/bot/cs_bot_manager.cpp:1109 */
void CCSBotManager::ValidateMapData(void)
{
if (IMPLEMENT_ARRAY(m_isMapDataLoaded) || !UTIL_IsGame("czero"))
if (IMPL(m_isMapDataLoaded) || !UTIL_IsGame("czero"))
{
return;
}
IMPLEMENT_ARRAY(m_isMapDataLoaded) = true;
IMPL(m_isMapDataLoaded) = true;
if (LoadNavigationMap())
{
@ -1092,15 +1092,15 @@ const CCSBotManager::Zone *CCSBotManager::GetClosestZone(const Vector *pos) cons
const Zone *close = NULL;
float closeRangeSq = 1e9f;
for (int z = 0; z < m_zoneCount; z++)
{
float rangeSq = (m_zone[z].m_center - (*pos)).LengthSquared();
if (rangeSq < closeRangeSq)
{
closeRangeSq = rangeSq;
close = &m_zone[z];
}
for (int z = 0; z < m_zoneCount; z++)
{
float rangeSq = (m_zone[z].m_center - (*pos)).LengthSquared();
if (rangeSq < closeRangeSq)
{
closeRangeSq = rangeSq;
close = &m_zone[z];
}
}
return close;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -52,11 +52,11 @@ TYPEDESCRIPTION CEnvSpark::m_SaveData[] =
#else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CEnvGlobal, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CMultiSource, m_SaveData)[4];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseButton, m_SaveData)[8];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CMomentaryRotButton, m_SaveData)[6];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CEnvSpark, m_SaveData)[1];
TYPEDESCRIPTION IMPL_CLASS(CEnvGlobal, m_SaveData)[3];
TYPEDESCRIPTION IMPL_CLASS(CMultiSource, m_SaveData)[4];
TYPEDESCRIPTION IMPL_CLASS(CBaseButton, m_SaveData)[8];
TYPEDESCRIPTION IMPL_CLASS(CMomentaryRotButton, m_SaveData)[6];
TYPEDESCRIPTION IMPL_CLASS(CEnvSpark, m_SaveData)[1];
#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
switch (m_bLockedSentence)
{
case 1: m_ls.sLockedSentence = MAKE_STRING("NA"); break; // access denied
case 2: m_ls.sLockedSentence = MAKE_STRING("ND"); break; // security lockout
case 3: m_ls.sLockedSentence = MAKE_STRING("NF"); break; // blast door
case 4: m_ls.sLockedSentence = MAKE_STRING("NFIRE"); break; // fire door
case 5: m_ls.sLockedSentence = MAKE_STRING("NCHEM"); break; // chemical door
case 6: m_ls.sLockedSentence = MAKE_STRING("NRAD"); break; // radiation door
case 7: m_ls.sLockedSentence = MAKE_STRING("NCON"); break; // gen containment
case 8: m_ls.sLockedSentence = MAKE_STRING("NH"); break; // maintenance door
case 9: m_ls.sLockedSentence = MAKE_STRING("NG"); break; // broken door
default: m_ls.sLockedSentence = 0; break;
case 1: m_ls.sLockedSentence = MAKE_STRING("NA"); break; // access denied
case 2: m_ls.sLockedSentence = MAKE_STRING("ND"); break; // security lockout
case 3: m_ls.sLockedSentence = MAKE_STRING("NF"); break; // blast door
case 4: m_ls.sLockedSentence = MAKE_STRING("NFIRE"); break; // fire door
case 5: m_ls.sLockedSentence = MAKE_STRING("NCHEM"); break; // chemical door
case 6: m_ls.sLockedSentence = MAKE_STRING("NRAD"); break; // radiation door
case 7: m_ls.sLockedSentence = MAKE_STRING("NCON"); break; // gen containment
case 8: m_ls.sLockedSentence = MAKE_STRING("NH"); break; // maintenance door
case 9: m_ls.sLockedSentence = MAKE_STRING("NG"); break; // broken door
default: m_ls.sLockedSentence = 0; break;
}
switch (m_bUnlockedSentence)
{
case 1: m_ls.sUnlockedSentence = MAKE_STRING("EA"); break; // access granted
case 2: m_ls.sUnlockedSentence = MAKE_STRING("ED"); break; // security door
case 3: m_ls.sUnlockedSentence = MAKE_STRING("EF"); break; // blast door
case 4: m_ls.sUnlockedSentence = MAKE_STRING("EFIRE"); break; // fire door
case 5: m_ls.sUnlockedSentence = MAKE_STRING("ECHEM"); break; // chemical door
case 6: m_ls.sUnlockedSentence = MAKE_STRING("ERAD"); break; // radiation door
case 7: m_ls.sUnlockedSentence = MAKE_STRING("ECON"); break; // gen containment
case 8: m_ls.sUnlockedSentence = MAKE_STRING("EH"); break; // maintenance door
default: m_ls.sUnlockedSentence = 0; break;
case 1: m_ls.sUnlockedSentence = MAKE_STRING("EA"); break; // access granted
case 2: m_ls.sUnlockedSentence = MAKE_STRING("ED"); break; // security door
case 3: m_ls.sUnlockedSentence = MAKE_STRING("EF"); break; // blast door
case 4: m_ls.sUnlockedSentence = MAKE_STRING("EFIRE"); break; // fire door
case 5: m_ls.sUnlockedSentence = MAKE_STRING("ECHEM"); break; // chemical door
case 6: m_ls.sUnlockedSentence = MAKE_STRING("ERAD"); break; // radiation door
case 7: m_ls.sUnlockedSentence = MAKE_STRING("ECON"); break; // gen containment
case 8: m_ls.sUnlockedSentence = MAKE_STRING("EH"); break; // maintenance door
default: m_ls.sUnlockedSentence = 0; break;
}
}

View File

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

View File

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

View File

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

View File

@ -177,10 +177,10 @@
#define MS_MAX_TARGETS 32
#ifdef _WIN32
#define C_EXPORT _declspec(dllexport)
#define EXPORT _declspec(dllexport)
#else
#define C_EXPORT
#endif
#define EXPORT /**/
#endif // _WIN32
enum hash_types_e
{
@ -230,16 +230,6 @@ typedef enum
} 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 CBaseEntity;
class CBaseMonster;
@ -566,7 +556,7 @@ public:
CBaseEntity *m_pGoalEnt;
CBaseEntity *m_pLink;
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5];
static TYPEDESCRIPTION IMPL(m_SaveData)[5];
void (CBaseEntity::*m_pfnThink)(void);
//int m_pfnThink_Flag;
@ -669,7 +659,7 @@ public:
void EXPORT Register(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[4];
static TYPEDESCRIPTION IMPL(m_SaveData)[4];
EHANDLE m_rgEntities[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 EXPORT DelayThink(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2];
static TYPEDESCRIPTION IMPL(m_SaveData)[2];
float m_flDelay;
int m_iszKillTarget;
@ -742,7 +732,7 @@ public:
int ExtractBbox(int sequence, float *mins, float *maxs);
void SetSequenceBox(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5];
static TYPEDESCRIPTION IMPL(m_SaveData)[5];
float m_flFrameRate;
float m_flGroundSpeed;
@ -788,7 +778,7 @@ public:
static float AxisDelta(int flags, const Vector &angle1, const Vector &angle2);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[19];
static TYPEDESCRIPTION IMPL(m_SaveData)[19];
TOGGLE_STATE m_toggle_state;
float m_flActivateFinished;
@ -870,7 +860,7 @@ public:
BUTTON_CODE ButtonResponseToTouch(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[8];
static TYPEDESCRIPTION IMPL(m_SaveData)[8];
BOOL m_fStayPushed;
BOOL m_fRotating;

View File

@ -75,7 +75,7 @@ int g_serveractive;
#endif // HOOK_GAMEDLL
PLAYERPVSSTATUS g_PVSStatus[32];
PLAYERPVSSTATUS g_PVSStatus[MAX_CLIENTS];
unsigned short m_usResetDecals;
unsigned short g_iShadowSprite;
@ -154,13 +154,13 @@ void BlinkAccount(CBasePlayer *player, int numBlinks)
}
/* <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);
}
/* <47f5b> ../cstrike/dlls/client.cpp:255 */
void ClientDisconnect(edict_t *pEntity)
void EXT_FUNC ClientDisconnect(edict_t *pEntity)
{
CBasePlayer *pPlayer = (CBasePlayer *)CBaseEntity::Instance(pEntity);
@ -216,7 +216,7 @@ void respawn(entvars_t *pev, BOOL fCopyCorpse)
// Suicide...
/* <48013> ../cstrike/dlls/client.cpp:347 */
void ClientKill(edict_t *pEntity)
void EXT_FUNC ClientKill(edict_t *pEntity)
{
entvars_t *pev = &pEntity->v;
CHalfLifeMultiplay *mp = g_pGameRules;
@ -496,7 +496,7 @@ void CheckStartMoney(void)
}
/* <4c084> ../cstrike/dlls/client.cpp:661 */
void ClientPutInServer(edict_t *pEntity)
void EXT_FUNC ClientPutInServer(edict_t *pEntity)
{
entvars_t *pev = &pEntity->v;
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.
/* <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 *pstr = NULL;
@ -3854,7 +3854,7 @@ void ClientCommand(edict_t *pEntity)
}
/* <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?
if (!pEntity->pvPrivateData)
@ -3919,7 +3919,7 @@ void ClientUserInfoChanged(edict_t *pEntity, char *infobuffer)
}
/* <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
// Therefore, only run it one time for each call to ServerActivate
@ -3946,7 +3946,7 @@ void ServerDeactivate(void)
}
/* <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;
CBaseEntity *pClass;
@ -4000,7 +4000,7 @@ void ServerActivate(edict_t *pEdictList, int edictCount, int clientMax)
}
/* <4a404> ../cstrike/dlls/client.cpp:4459 */
void PlayerPreThink(edict_t *pEntity)
void EXT_FUNC PlayerPreThink(edict_t *pEntity)
{
entvars_t *pev = &pEntity->v;
CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
@ -4012,7 +4012,7 @@ void PlayerPreThink(edict_t *pEntity)
}
/* <4a47c> ../cstrike/dlls/client.cpp:4475 */
void PlayerPostThink(edict_t *pEntity)
void EXT_FUNC PlayerPostThink(edict_t *pEntity)
{
entvars_t *pev = &pEntity->v;
CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
@ -4024,13 +4024,13 @@ void PlayerPostThink(edict_t *pEntity)
}
/* <4a4f4> ../cstrike/dlls/client.cpp:4486 */
void ParmsNewLevel(void)
void EXT_FUNC ParmsNewLevel(void)
{
;
}
/* <4a50d> ../cstrike/dlls/client.cpp:4491 */
void ParmsChangeLevel(void)
void EXT_FUNC ParmsChangeLevel(void)
{
// retrieve the pointer to the save data
SAVERESTOREDATA *pSaveData = (SAVERESTOREDATA *)gpGlobals->pSaveData;
@ -4042,7 +4042,7 @@ void ParmsChangeLevel(void)
}
/* <4a548> ../cstrike/dlls/client.cpp:4504 */
void StartFrame(void)
void EXT_FUNC StartFrame(void)
{
if (g_pGameRules != NULL)
{
@ -4495,7 +4495,7 @@ void ClientPrecache(void)
}
/* <4a6e5> ../cstrike/dlls/client.cpp:4996 */
const char *GetGameDescription(void)
const char *EXT_FUNC GetGameDescription(void)
{
if (UTIL_IsGame("czero"))
return "Condition Zero";
@ -4504,13 +4504,13 @@ const char *GetGameDescription(void)
}
/* <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 */
void PlayerCustomization(edict_t *pEntity, customization_t *pCust)
void EXT_FUNC PlayerCustomization(edict_t *pEntity, customization_t *pCust)
{
CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
@ -4528,21 +4528,21 @@ void PlayerCustomization(edict_t *pEntity, customization_t *pCust)
switch (pCust->resource.type)
{
case t_decal:
pPlayer->SetCustomDecalFrames(pCust->nUserData2);
break;
case t_sound:
case t_skin:
case t_model:
break;
default:
ALERT(at_console, "PlayerCustomization: Unknown customization type!\n");
break;
case t_decal:
pPlayer->SetCustomDecalFrames(pCust->nUserData2);
break;
case t_sound:
case t_skin:
case t_model:
break;
default:
ALERT(at_console, "PlayerCustomization: Unknown customization type!\n");
break;
}
}
/* <4a7b9> ../cstrike/dlls/client.cpp:5079 */
void SpectatorConnect(edict_t *pEntity)
void EXT_FUNC SpectatorConnect(edict_t *pEntity)
{
CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity);
@ -4553,7 +4553,7 @@ void SpectatorConnect(edict_t *pEntity)
}
/* <4a83d> ../cstrike/dlls/client.cpp:5095 */
void SpectatorDisconnect(edict_t *pEntity)
void EXT_FUNC SpectatorDisconnect(edict_t *pEntity)
{
CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity);
@ -4564,7 +4564,7 @@ void SpectatorDisconnect(edict_t *pEntity)
}
/* <4a8b5> ../cstrike/dlls/client.cpp:5111 */
void SpectatorThink(edict_t *pEntity)
void EXT_FUNC SpectatorThink(edict_t *pEntity)
{
CBaseSpectator *pPlayer = (CBaseSpectator *)GET_PRIVATE(pEntity);
@ -4575,7 +4575,7 @@ void SpectatorThink(edict_t *pEntity)
}
/* <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;
@ -4673,7 +4673,7 @@ bool CheckEntityRecentlyInPVS(int clientnum, int entitynum, float currenttime)
}
/* <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)
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.
/* <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->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 */
void RegisterEncoders(void)
void EXT_FUNC RegisterEncoders(void)
{
DELTA_ADDENCODER("Entity_Encode", Entity_Encode);
DELTA_ADDENCODER("Custom_Encode", Custom_Encode);
@ -5043,7 +5043,7 @@ void RegisterEncoders(void)
}
/* <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;
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 */
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)
{
@ -5219,7 +5219,7 @@ void UpdateClientData(const struct edict_s *ent, int sendweapons, struct clientd
}
/* <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;
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 */
void CmdEnd(const edict_t *player)
void EXT_FUNC CmdEnd(const edict_t *player)
{
entvars_t *pev = (entvars_t *)&player->v;
CBasePlayer *pl = reinterpret_cast<CBasePlayer *>(CBasePlayer::Instance(pev));
@ -5254,7 +5254,7 @@ void CmdEnd(const edict_t *player)
}
/* <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
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 */
int GetHullBounds(int hullnumber, float *mins, float *maxs)
int EXT_FUNC GetHullBounds(int hullnumber, float *mins, float *maxs)
{
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. )
/* <4b733> ../cstrike/dlls/client.cpp:6156 */
void CreateInstancedBaselines(void)
void EXT_FUNC CreateInstancedBaselines(void)
{
int iret = 0;
entity_state_t state;
@ -5293,7 +5293,7 @@ void CreateInstancedBaselines(void)
}
/* <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?
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.
/* <4b7cf> ../cstrike/dlls/client.cpp:6204 */
int AllowLagCompensation(void)
int EXT_FUNC AllowLagCompensation(void)
{
return 1;
}

View File

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

View File

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

View File

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

View File

@ -23,8 +23,8 @@ TYPEDESCRIPTION CMomentaryDoor::m_SaveData[] =
#else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBaseDoor, m_SaveData)[7];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CMomentaryDoor, m_SaveData)[1];
TYPEDESCRIPTION IMPL_CLASS(CBaseDoor, m_SaveData)[7];
TYPEDESCRIPTION IMPL_CLASS(CMomentaryDoor, m_SaveData)[1];
#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
switch (m_bLockedSentence)
{
case 1: m_ls.sLockedSentence = ALLOC_STRING("NA"); break; // access denied
case 2: m_ls.sLockedSentence = ALLOC_STRING("ND"); break; // security lockout
case 3: m_ls.sLockedSentence = ALLOC_STRING("NF"); break; // blast door
case 4: m_ls.sLockedSentence = ALLOC_STRING("NFIRE"); break; // fire door
case 5: m_ls.sLockedSentence = ALLOC_STRING("NCHEM"); break; // chemical door
case 6: m_ls.sLockedSentence = ALLOC_STRING("NRAD"); break; // radiation door
case 7: m_ls.sLockedSentence = ALLOC_STRING("NCON"); break; // gen containment
case 8: m_ls.sLockedSentence = ALLOC_STRING("NH"); break; // maintenance door
case 9: m_ls.sLockedSentence = ALLOC_STRING("NG"); break; // broken door
default: m_ls.sLockedSentence = 0; break;
case 1: m_ls.sLockedSentence = ALLOC_STRING("NA"); break; // access denied
case 2: m_ls.sLockedSentence = ALLOC_STRING("ND"); break; // security lockout
case 3: m_ls.sLockedSentence = ALLOC_STRING("NF"); break; // blast door
case 4: m_ls.sLockedSentence = ALLOC_STRING("NFIRE"); break; // fire door
case 5: m_ls.sLockedSentence = ALLOC_STRING("NCHEM"); break; // chemical door
case 6: m_ls.sLockedSentence = ALLOC_STRING("NRAD"); break; // radiation door
case 7: m_ls.sLockedSentence = ALLOC_STRING("NCON"); break; // gen containment
case 8: m_ls.sLockedSentence = ALLOC_STRING("NH"); break; // maintenance door
case 9: m_ls.sLockedSentence = ALLOC_STRING("NG"); break; // broken door
default: m_ls.sLockedSentence = 0; break;
}
switch (m_bUnlockedSentence)
{
case 1: m_ls.sUnlockedSentence = ALLOC_STRING("EA"); break; // access granted
case 2: m_ls.sUnlockedSentence = ALLOC_STRING("ED"); break; // security door
case 3: m_ls.sUnlockedSentence = ALLOC_STRING("EF"); break; // blast door
case 4: m_ls.sUnlockedSentence = ALLOC_STRING("EFIRE"); break; // fire door
case 5: m_ls.sUnlockedSentence = ALLOC_STRING("ECHEM"); break; // chemical door
case 6: m_ls.sUnlockedSentence = ALLOC_STRING("ERAD"); break; // radiation door
case 7: m_ls.sUnlockedSentence = ALLOC_STRING("ECON"); break; // gen containment
case 8: m_ls.sUnlockedSentence = ALLOC_STRING("EH"); break; // maintenance door
default: m_ls.sUnlockedSentence = 0; break;
case 1: m_ls.sUnlockedSentence = ALLOC_STRING("EA"); break; // access granted
case 2: m_ls.sUnlockedSentence = ALLOC_STRING("ED"); break; // security door
case 3: m_ls.sUnlockedSentence = ALLOC_STRING("EF"); break; // blast door
case 4: m_ls.sUnlockedSentence = ALLOC_STRING("EFIRE"); break; // fire door
case 5: m_ls.sUnlockedSentence = ALLOC_STRING("ECHEM"); break; // chemical door
case 6: m_ls.sUnlockedSentence = ALLOC_STRING("ERAD"); break; // radiation door
case 7: m_ls.sUnlockedSentence = ALLOC_STRING("ECON"); break; // gen containment
case 8: m_ls.sUnlockedSentence = ALLOC_STRING("EH"); break; // maintenance door
default: m_ls.sUnlockedSentence = 0; break;
}
}

View File

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

View File

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

View File

@ -160,7 +160,7 @@ public:
void EXPORT AnimateUntilDead(void);
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:
@ -356,7 +356,7 @@ public:
void EXPORT StrikeThink(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3];
static TYPEDESCRIPTION IMPL(m_SaveData)[3];
public:
CSprite *m_pSprite;
@ -395,7 +395,7 @@ public:
void EXPORT FizzThink(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[3];
static TYPEDESCRIPTION IMPL(m_SaveData)[3];
public:
int m_density;
@ -447,7 +447,7 @@ public:
void BeamUpdateVars(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[13];
static TYPEDESCRIPTION IMPL(m_SaveData)[13];
public:
int m_active;
@ -486,7 +486,7 @@ public:
void Animate(float frames);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2];
static TYPEDESCRIPTION IMPL(m_SaveData)[2];
public:
float m_lastTime;
@ -542,7 +542,7 @@ public:
public:
void EXPORT ShootThink(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[7];
static TYPEDESCRIPTION IMPL(m_SaveData)[7];
public:
int m_iGibs;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -9,7 +9,7 @@ globalvars_t *gpGlobals;
// do some setup operations here.
/* <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));
gpGlobals = pGlobals;

View File

@ -44,7 +44,7 @@ extern globalvars_t *gpGlobals;
#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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -32,30 +32,30 @@
#pragma once
#endif
#define MAX_EQUIP 32
#define SF_SCORE_NEGATIVE 0x0001
#define SF_SCORE_TEAM 0x0002
#define MAX_EQUIP 32
#define SF_SCORE_NEGATIVE 0x0001
#define SF_SCORE_TEAM 0x0002
#define SF_ENVTEXT_ALLPLAYERS 0x0001
#define SF_ENVTEXT_ALLPLAYERS 0x0001
#define SF_TEAMMASTER_FIREONCE 0x0001
#define SF_TEAMMASTER_ANYTEAM 0x0002
#define SF_TEAMMASTER_FIREONCE 0x0001
#define SF_TEAMMASTER_ANYTEAM 0x0002
#define SF_TEAMSET_FIREONCE 0x0001
#define SF_TEAMSET_CLEARTEAM 0x0002
#define SF_TEAMSET_FIREONCE 0x0001
#define SF_TEAMSET_CLEARTEAM 0x0002
#define SF_PKILL_FIREONCE 0x0001
#define SF_PKILL_FIREONCE 0x0001
#define SF_GAMECOUNT_FIREONCE 0x0001
#define SF_GAMECOUNT_RESET 0x0002
#define SF_GAMECOUNT_FIREONCE 0x0001
#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_KILL 0x0002
#define SF_PTEAM_GIB 0x0004
#define SF_PTEAM_FIREONCE 0x0001
#define SF_PTEAM_KILL 0x0002
#define SF_PTEAM_GIB 0x0004
/* <edff5> ../cstrike/dlls/maprules.cpp:34 */
class CRuleEntity: public CBaseEntity
@ -76,7 +76,7 @@ public:
#endif // HOOK_GAMEDLL
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1];
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
void SetMaster(int iszMaster)
{
@ -216,7 +216,7 @@ public:
}
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1];
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
private:
hudtextparms_t m_textParms;
@ -321,7 +321,7 @@ public:
#endif // HOOK_GAMEDLL
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[4];
static TYPEDESCRIPTION IMPL(m_SaveData)[4];
private:
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 MEMORY_CLEAR 0
#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_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_ON_PATH (1<<4) // Moving on a path
#define bits_MEMORY_MOVE_FAILED (1<<5) // Movement has already failed
#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_CUSTOM4 (1<<28) // Monster-specific memory
#define bits_MEMORY_CUSTOM3 (1<<29) // Monster-specific memory
#define bits_MEMORY_CUSTOM2 (1<<30) // Monster-specific memory
#define bits_MEMORY_CUSTOM1 (1<<31) // Monster-specific memory
#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_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_ON_PATH (1 << 4) // Moving on a path
#define bits_MEMORY_MOVE_FAILED (1 << 5) // Movement has already failed
#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_CUSTOM4 (1 << 28) // Monster-specific memory
#define bits_MEMORY_CUSTOM3 (1 << 29) // Monster-specific memory
#define bits_MEMORY_CUSTOM2 (1 << 30) // Monster-specific memory
#define bits_MEMORY_CUSTOM1 (1 << 31) // Monster-specific memory
//TODO: unused?
enum

View File

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

View File

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

View File

@ -121,163 +121,163 @@ void CBaseMonster::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
/* <fc07d> ../cstrike/dlls/mpstubb.cpp:104 */
int CBaseMonster::__MAKE_VHOOK(IRelationship)(CBaseEntity *pTarget)
{
static int const iEnemy[14][14] =
{
// 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_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_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_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_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_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_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_AL, R_NO, R_DL, R_DL, R_NO, R_NO, R_DL, R_DL, R_NO } // ABIOWEAPON
};
static int const iEnemy[14][14] =
{
// 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_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_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_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_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_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_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_AL, R_NO, R_DL, R_DL, R_NO, R_NO, R_DL, R_DL, R_NO } // ABIOWEAPON
};
return iEnemy[ Classify() ][ pTarget->Classify() ];
}
// Look - Base class monster function to find enemies or
// food by sight. iDistance is distance (in units) that the
// monster can see.
//
// Sets the sight bits of the m_afConditions mask to indicate
// which types of entities were sighted.
// Function also sets the Looker's m_pLink
// to the head of a link list that contains all visible ents.
// Look - Base class monster function to find enemies or
// food by sight. iDistance is distance (in units) that the
// monster can see.
//
// Sets the sight bits of the m_afConditions mask to indicate
// which types of entities were sighted.
// Function also sets the Looker's m_pLink
// to the head of a link list that contains all visible ents.
// (linked via each ent's m_pLink field)
/* <fc0e4> ../cstrike/dlls/mpstubb.cpp:140 */
void CBaseMonster::__MAKE_VHOOK(Look)(int iDistance)
{
int iSighted = 0;
// 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);
m_pLink = NULL;
// the current visible entity that we're dealing with
CBaseEntity *pSightEnt = NULL;
CBaseEntity *pList[100];
Vector delta = Vector(iDistance, iDistance, iDistance);
// 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));
for (int i = 0; i < count; i++)
{
pSightEnt = pList[i];
if (pSightEnt != this && pSightEnt->pev->health > 0)
{
// 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.
if (IRelationship(pSightEnt) != R_NO && FInViewCone(pSightEnt) && !(pSightEnt->pev->flags & FL_NOTARGET) && FVisible(pSightEnt))
{
if (pSightEnt->IsPlayer())
{
// if we see a client, remember that (mostly for scripted AI)
iSighted |= bits_COND_SEE_CLIENT;
}
pSightEnt->m_pLink = m_pLink;
m_pLink = pSightEnt;
if (pSightEnt == m_hEnemy)
{
// we know this ent is visible, so if it also happens to be our enemy, store that now.
iSighted |= bits_COND_SEE_ENEMY;
}
// 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.
switch (IRelationship (pSightEnt))
{
case R_NM:
iSighted |= bits_COND_SEE_NEMESIS;
break;
case R_HT:
iSighted |= bits_COND_SEE_HATE;
break;
case R_DL:
iSighted |= bits_COND_SEE_DISLIKE;
break;
case R_FR:
iSighted |= bits_COND_SEE_FEAR;
break;
case R_AL:
break;
default:
ALERT(at_aiconsole, "%s can't assess %s\n", STRING(pev->classname), STRING(pSightEnt->pev->classname));
break;
}
}
}
}
int iSighted = 0;
// 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);
m_pLink = NULL;
// the current visible entity that we're dealing with
CBaseEntity *pSightEnt = NULL;
CBaseEntity *pList[100];
Vector delta = Vector(iDistance, iDistance, iDistance);
// 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));
for (int i = 0; i < count; i++)
{
pSightEnt = pList[i];
if (pSightEnt != this && pSightEnt->pev->health > 0)
{
// 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.
if (IRelationship(pSightEnt) != R_NO && FInViewCone(pSightEnt) && !(pSightEnt->pev->flags & FL_NOTARGET) && FVisible(pSightEnt))
{
if (pSightEnt->IsPlayer())
{
// if we see a client, remember that (mostly for scripted AI)
iSighted |= bits_COND_SEE_CLIENT;
}
pSightEnt->m_pLink = m_pLink;
m_pLink = pSightEnt;
if (pSightEnt == m_hEnemy)
{
// we know this ent is visible, so if it also happens to be our enemy, store that now.
iSighted |= bits_COND_SEE_ENEMY;
}
// 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.
switch (IRelationship (pSightEnt))
{
case R_NM:
iSighted |= bits_COND_SEE_NEMESIS;
break;
case R_HT:
iSighted |= bits_COND_SEE_HATE;
break;
case R_DL:
iSighted |= bits_COND_SEE_DISLIKE;
break;
case R_FR:
iSighted |= bits_COND_SEE_FEAR;
break;
case R_AL:
break;
default:
ALERT(at_aiconsole, "%s can't assess %s\n", STRING(pev->classname), STRING(pSightEnt->pev->classname));
break;
}
}
}
}
SetConditions(iSighted);
}
// BestVisibleEnemy - this functions searches the link
// 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
// caller.
//
// !!!UNDONE - currently, this only returns the closest enemy.
// BestVisibleEnemy - this functions searches the link
// 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
// caller.
//
// !!!UNDONE - currently, this only returns the closest enemy.
// we'll want to consider distance, relationship, attack types, back turned, etc.
/* <fc317> ../cstrike/dlls/mpstubb.cpp:220 */
CBaseEntity *CBaseMonster::__MAKE_VHOOK(BestVisibleEnemy)(void)
{
CBaseEntity *pReturn;
CBaseEntity *pNextEnt;
int iNearest;
int iDist;
int iBestRelationship;
// so first visible entity will become the closest.
iNearest = 8192;
pNextEnt = m_pLink;
pReturn = NULL;
iBestRelationship = R_NO;
while (pNextEnt != NULL)
{
if (pNextEnt->IsAlive())
{
if (IRelationship(pNextEnt) > iBestRelationship)
{
// this entity is disliked MORE than the entity that we
// currently think is the best visible enemy. No need to do
// a distance check, just get mad at this one for now.
iBestRelationship = IRelationship(pNextEnt);
iNearest = (pNextEnt->pev->origin - pev->origin).Length();
pReturn = pNextEnt;
}
else if (IRelationship(pNextEnt) == iBestRelationship)
{
// this entity is disliked just as much as the entity that
// we currently think is the best visible enemy, so we only
// get mad at it if it is closer.
iDist = (pNextEnt->pev->origin - pev->origin).Length();
if (iDist <= iNearest)
{
iNearest = iDist;
iBestRelationship = IRelationship(pNextEnt);
pReturn = pNextEnt;
}
}
}
pNextEnt = pNextEnt->m_pLink;
}
CBaseEntity *pReturn;
CBaseEntity *pNextEnt;
int iNearest;
int iDist;
int iBestRelationship;
// so first visible entity will become the closest.
iNearest = 8192;
pNextEnt = m_pLink;
pReturn = NULL;
iBestRelationship = R_NO;
while (pNextEnt != NULL)
{
if (pNextEnt->IsAlive())
{
if (IRelationship(pNextEnt) > iBestRelationship)
{
// this entity is disliked MORE than the entity that we
// currently think is the best visible enemy. No need to do
// a distance check, just get mad at this one for now.
iBestRelationship = IRelationship(pNextEnt);
iNearest = (pNextEnt->pev->origin - pev->origin).Length();
pReturn = pNextEnt;
}
else if (IRelationship(pNextEnt) == iBestRelationship)
{
// this entity is disliked just as much as the entity that
// we currently think is the best visible enemy, so we only
// get mad at it if it is closer.
iDist = (pNextEnt->pev->origin - pev->origin).Length();
if (iDist <= iNearest)
{
iNearest = iDist;
iBestRelationship = IRelationship(pNextEnt);
pReturn = pNextEnt;
}
}
}
pNextEnt = pNextEnt->m_pLink;
}
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))
canTsWin = false;
if (!TheCareerTasks->AreAllTasksComplete())
{
if (humansAreCTs)
return;
canTsWin = false;
}
if (!TheCareerTasks->AreAllTasksComplete())
{
if (humansAreCTs)
return;
canTsWin = false;
}
if (canCTsWin || canTsWin)
{
@ -2593,28 +2593,28 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(Think)(void)
}
else
{
if (m_fCareerMatchMenuTime + 10 <= gpGlobals->time || !IsBotSpeaking())
{
UTIL_CareerDPrintf("Ending career match...one team has won the specified number of rounds\n");
MESSAGE_BEGIN(MSG_ALL, gmsgCZCareer);
WRITE_STRING("MATCH");
WRITE_LONG(m_iNumCTWins);
WRITE_LONG(m_iNumTerroristWins);
MESSAGE_END();
MESSAGE_BEGIN(MSG_ALL, gmsgCZCareerHUD);
WRITE_STRING("MATCH");
WRITE_LONG(m_iNumCTWins);
WRITE_LONG(m_iNumTerroristWins);
WRITE_BYTE(m_iCareerMatchWins);
WRITE_BYTE(m_iRoundWinDifference);
WRITE_BYTE(m_iRoundWinStatus);
MESSAGE_END();
UTIL_LogPrintf("Career Match %d %d %d %d\n", m_iRoundWinStatus, m_iNumCTWins, m_iNumTerroristWins, TheCareerTasks->AreAllTasksComplete());
SERVER_COMMAND("setpause\n");
if (m_fCareerMatchMenuTime + 10 <= gpGlobals->time || !IsBotSpeaking())
{
UTIL_CareerDPrintf("Ending career match...one team has won the specified number of rounds\n");
MESSAGE_BEGIN(MSG_ALL, gmsgCZCareer);
WRITE_STRING("MATCH");
WRITE_LONG(m_iNumCTWins);
WRITE_LONG(m_iNumTerroristWins);
MESSAGE_END();
MESSAGE_BEGIN(MSG_ALL, gmsgCZCareerHUD);
WRITE_STRING("MATCH");
WRITE_LONG(m_iNumCTWins);
WRITE_LONG(m_iNumTerroristWins);
WRITE_BYTE(m_iCareerMatchWins);
WRITE_BYTE(m_iRoundWinDifference);
WRITE_BYTE(m_iRoundWinStatus);
MESSAGE_END();
UTIL_LogPrintf("Career Match %d %d %d %d\n", m_iRoundWinStatus, m_iNumCTWins, m_iNumTerroristWins, TheCareerTasks->AreAllTasksComplete());
SERVER_COMMAND("setpause\n");
}
}
}
@ -2665,9 +2665,9 @@ bool CHalfLifeMultiplay::CheckTimeLimit(void)
if (!IsCareer())
{
if (fTimeLimit != 0.0f)
{
g_flTimeLimit = g_flResetTime + fTimeLimit * 60.0f;
if (fTimeLimit != 0.0f)
{
g_flTimeLimit = g_flResetTime + fTimeLimit * 60.0f;
}
if (fTimeLimit > 0 && gpGlobals->time >= g_flTimeLimit)

View File

@ -1,7 +1,6 @@
#include "precompiled.h"
/* <11c190> ../cstrike/dlls/observer.cpp:36 */
int GetForceCamera(void)
int GetForceCamera_api(CBasePlayer *pObserver)
{
int retVal;
@ -18,19 +17,30 @@ int GetForceCamera(void)
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 */
CBaseEntity *CBasePlayer::Observer_IsValidTarget(int iPlayerIndex, bool bSameTeam)
{
if (iPlayerIndex > gpGlobals->maxClients || iPlayerIndex < 1)
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
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;
return g_ReGameHookchains.m_Observer_IsValidTarget.callChain(Observer_IsValidTarget_api, this, pEnt, iPlayerIndex, bSameTeam);
}
/* <11c2c7> ../cstrike/dlls/observer.cpp:82 */
@ -147,7 +157,7 @@ void CBasePlayer::Observer_FindNextPlayer(bool bReverse, const char *name)
iDir = bReverse ? -1 : 1;
bForceSameTeam = (GetForceCamera() != CAMERA_MODE_SPEC_ANYONE && m_iTeam != SPECTATOR);
bForceSameTeam = (GetForceCamera(this) != CAMERA_MODE_SPEC_ANYONE && m_iTeam != SPECTATOR);
do
{
@ -441,7 +451,7 @@ void CBasePlayer::Observer_SetMode(int iMode)
if (iMode == pev->iuser1)
return;
_forcecamera = GetForceCamera();
_forcecamera = GetForceCamera(this);
// is valid mode ?
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_FRIST_PERSON 2
int GetForceCamera(void);
int GetForceCamera(CBasePlayer *pObserver);
void UpdateClientEffects(CBasePlayer *pObserver, int oldMode);
#endif // OBSERVER_H

View File

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

View File

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

View File

@ -61,12 +61,12 @@ TYPEDESCRIPTION CGunTarget::m_SaveData[] =
#else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBasePlatTrain, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncPlatRot, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTrain, m_SaveData)[3];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTrackTrain, m_SaveData)[12];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncTrackChange, m_SaveData)[9];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGunTarget, m_SaveData)[1];
TYPEDESCRIPTION IMPL_CLASS(CBasePlatTrain, m_SaveData)[3];
TYPEDESCRIPTION IMPL_CLASS(CFuncPlatRot, m_SaveData)[2];
TYPEDESCRIPTION IMPL_CLASS(CFuncTrain, m_SaveData)[3];
TYPEDESCRIPTION IMPL_CLASS(CFuncTrackTrain, m_SaveData)[12];
TYPEDESCRIPTION IMPL_CLASS(CFuncTrackChange, m_SaveData)[9];
TYPEDESCRIPTION IMPL_CLASS(CGunTarget, m_SaveData)[1];
#endif // HOOK_GAMEDLL
@ -1621,12 +1621,12 @@ void CFuncTrackTrain::__MAKE_VHOOK(Precache)(void)
// no sound
pev->noise = 0;
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 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 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 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 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 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;
}
PRECACHE_SOUND("plats/ttrain_brake1.wav");

View File

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

View File

@ -275,8 +275,8 @@ int gmsgShowTimer;
BOOL gInitHUD;
cvar_t *sv_aim;
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CRevertSaved, m_SaveData)[2];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CBasePlayer, m_playerSaveData)[40];
TYPEDESCRIPTION IMPL_CLASS(CRevertSaved, m_SaveData)[2];
TYPEDESCRIPTION IMPL_CLASS(CBasePlayer, m_playerSaveData)[40];
WeaponStruct g_weaponStruct[ MAX_WEAPONS ];
char *(*CDeadHEV::pm_szPoses)[4];
@ -395,7 +395,7 @@ void WriteSigonMessages(void)
{
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)
continue;
@ -1520,7 +1520,7 @@ void packPlayerItem(CBasePlayer *pPlayer, CBasePlayerItem *pItem, bool 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);
}
@ -5587,7 +5587,7 @@ int CBasePlayer::__MAKE_VHOOK(Save)(CSave &save)
if (!CBaseMonster::Save(save))
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 */
@ -5622,7 +5622,7 @@ int CBasePlayer::__MAKE_VHOOK(Restore)(CRestore &restore)
if (!CBaseMonster::Restore(restore))
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;
// landmark isn't present.
@ -6622,10 +6622,10 @@ int CBasePlayer::GetAmmoIndex(const char *psz)
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;
if (!Q_stricmp(psz, IMPLEMENT_ARRAY_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName))
if (!Q_stricmp(psz, IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)[ i ].pszName))
return i;
}
return -1;

View File

@ -270,7 +270,7 @@ struct WeaponStruct
};/* 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 }
#ifdef HOOK_GAMEDLL
@ -758,7 +758,6 @@ public:
//m_musicState = INTENSE;
//m_intenseTimestamp = gpGlobals->time;
}
public:
enum { MaxLocationLen = 32 };
@ -913,7 +912,7 @@ public:
float m_flNextDecalTime;
char m_szTeamName[ TEAM_NAME_LENGTH ];
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_playerSaveData)[40];
static TYPEDESCRIPTION IMPL(m_playerSaveData)[40];
/*protected:*/
int m_modelIndexPlayer;

View File

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

View File

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

View File

@ -34,17 +34,17 @@ BOOL CHalfLifeRules::__MAKE_VHOOK(IsCoOp)(void)
/* <166df5> ../cstrike/dlls/singleplay_gamerules.cpp:68 */
BOOL CHalfLifeRules::__MAKE_VHOOK(FShouldSwitchWeapon)(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{
if (!pPlayer->m_pActiveItem)
{
// player doesn't have an active item!
return TRUE;
}
if (!pPlayer->m_pActiveItem->CanHolster())
{
return FALSE;
}
if (!pPlayer->m_pActiveItem)
{
// player doesn't have an active item!
return TRUE;
}
if (!pPlayer->m_pActiveItem->CanHolster())
{
return FALSE;
}
return TRUE;
}
@ -75,7 +75,7 @@ void CHalfLifeRules::__MAKE_VHOOK(ClientDisconnected)(edict_t *pClient)
/* <166f3f> ../cstrike/dlls/singleplay_gamerules.cpp:110 */
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
pPlayer->m_flFallVelocity -= PLAYER_MAX_SAFE_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");
return INDEXENT(0);
}
pPlayer->pev->origin = pSpot->pev->origin + Vector(0, 0, 1);
pPlayer->pev->v_angle = g_vecZero;
pPlayer->pev->velocity = g_vecZero;
pPlayer->pev->angles = pSpot->pev->angles;
pPlayer->pev->punchangle = g_vecZero;
pPlayer->pev->fixangle = 1;
pPlayer->pev->origin = pSpot->pev->origin + Vector(0, 0, 1);
pPlayer->pev->v_angle = g_vecZero;
pPlayer->pev->velocity = g_vecZero;
pPlayer->pev->angles = pSpot->pev->angles;
pPlayer->pev->punchangle = g_vecZero;
pPlayer->pev->fixangle = 1;
return pSpot->edict();
}
@ -269,7 +269,7 @@ int CHalfLifeRules::__MAKE_VHOOK(DeadPlayerAmmo)(CBasePlayer *pPlayer)
/* <16757c> ../cstrike/dlls/singleplay_gamerules.cpp:343 */
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;
}
@ -281,199 +281,199 @@ BOOL CHalfLifeRules::__MAKE_VHOOK(FAllowMonsters)(void)
#ifdef HOOK_GAMEDLL
void CHalfLifeRules::Think(void)
{
Think_();
}
BOOL CHalfLifeRules::IsAllowedToSpawn(CBaseEntity *pEntity)
{
return IsAllowedToSpawn_(pEntity);
}
BOOL CHalfLifeRules::FShouldSwitchWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{
return FShouldSwitchWeapon_(pPlayer, pWeapon);
}
BOOL CHalfLifeRules::GetNextBestWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pCurrentWeapon)
{
return GetNextBestWeapon_(pPlayer, pCurrentWeapon);
}
BOOL CHalfLifeRules::IsMultiplayer(void)
{
return IsMultiplayer_();
}
BOOL CHalfLifeRules::IsDeathmatch(void)
{
return IsDeathmatch_();
}
BOOL CHalfLifeRules::IsCoOp(void)
{
return IsCoOp_();
}
BOOL CHalfLifeRules::ClientConnected(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128])
{
return ClientConnected_(pEntity, pszName, pszAddress, szRejectReason);
}
void CHalfLifeRules::InitHUD(CBasePlayer *pl)
{
InitHUD_(pl);
}
void CHalfLifeRules::ClientDisconnected(edict_t *pClient)
{
ClientDisconnected_(pClient);
}
float CHalfLifeRules::FlPlayerFallDamage(CBasePlayer *pPlayer)
{
return FlPlayerFallDamage_(pPlayer);
}
void CHalfLifeRules::PlayerSpawn(CBasePlayer *pPlayer)
{
PlayerSpawn_(pPlayer);
}
void CHalfLifeRules::PlayerThink(CBasePlayer *pPlayer)
{
PlayerThink_(pPlayer);
}
BOOL CHalfLifeRules::FPlayerCanRespawn(CBasePlayer *pPlayer)
{
return FPlayerCanRespawn_(pPlayer);
}
float CHalfLifeRules::FlPlayerSpawnTime(CBasePlayer *pPlayer)
{
return FlPlayerSpawnTime_(pPlayer);
}
edict_t *CHalfLifeRules::GetPlayerSpawnSpot(CBasePlayer *pPlayer)
{
return GetPlayerSpawnSpot_(pPlayer);
}
BOOL CHalfLifeRules::AllowAutoTargetCrosshair(void)
{
return AllowAutoTargetCrosshair_();
}
int CHalfLifeRules::IPointsForKill(CBasePlayer *pAttacker, CBasePlayer *pKilled)
{
return IPointsForKill_(pAttacker, pKilled);
}
void CHalfLifeRules::PlayerKilled(CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor)
{
PlayerKilled_(pVictim, pKiller, pInflictor);
}
void CHalfLifeRules::DeathNotice(CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor)
{
DeathNotice_(pVictim, pKiller, pInflictor);
}
void CHalfLifeRules::PlayerGotWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{
PlayerGotWeapon_(pPlayer, pWeapon);
}
int CHalfLifeRules::WeaponShouldRespawn(CBasePlayerItem *pWeapon)
{
return WeaponShouldRespawn_(pWeapon);
}
float CHalfLifeRules::FlWeaponRespawnTime(CBasePlayerItem *pWeapon)
{
return FlWeaponRespawnTime_(pWeapon);
}
float CHalfLifeRules::FlWeaponTryRespawn(CBasePlayerItem *pWeapon)
{
return FlWeaponTryRespawn_(pWeapon);
}
Vector CHalfLifeRules::VecWeaponRespawnSpot(CBasePlayerItem *pWeapon)
{
return VecWeaponRespawnSpot_(pWeapon);
}
BOOL CHalfLifeRules::CanHaveItem(CBasePlayer *pPlayer, CItem *pItem)
{
return CanHaveItem_(pPlayer, pItem);
}
void CHalfLifeRules::PlayerGotItem(CBasePlayer *pPlayer, CItem *pItem)
{
PlayerGotItem_(pPlayer, pItem);
}
int CHalfLifeRules::ItemShouldRespawn(CItem *pItem)
{
return ItemShouldRespawn_(pItem);
}
float CHalfLifeRules::FlItemRespawnTime(CItem *pItem)
{
return FlItemRespawnTime_(pItem);
}
Vector CHalfLifeRules::VecItemRespawnSpot(CItem *pItem)
{
return VecItemRespawnSpot_(pItem);
}
void CHalfLifeRules::PlayerGotAmmo(CBasePlayer *pPlayer, char *szName, int iCount)
{
PlayerGotAmmo_(pPlayer, szName, iCount);
}
int CHalfLifeRules::AmmoShouldRespawn(CBasePlayerAmmo *pAmmo)
{
return AmmoShouldRespawn_(pAmmo);
}
float CHalfLifeRules::FlAmmoRespawnTime(CBasePlayerAmmo *pAmmo)
{
return FlAmmoRespawnTime_(pAmmo);
}
Vector CHalfLifeRules::VecAmmoRespawnSpot(CBasePlayerAmmo *pAmmo)
{
return VecAmmoRespawnSpot_(pAmmo);
}
float CHalfLifeRules::FlHealthChargerRechargeTime(void)
{
return FlHealthChargerRechargeTime_();
}
int CHalfLifeRules::DeadPlayerWeapons(CBasePlayer *pPlayer)
{
return DeadPlayerWeapons_(pPlayer);
}
int CHalfLifeRules::DeadPlayerAmmo(CBasePlayer *pPlayer)
{
return DeadPlayerAmmo_(pPlayer);
}
int CHalfLifeRules::PlayerRelationship(CBasePlayer *pPlayer, CBaseEntity *pTarget)
{
return PlayerRelationship_(pPlayer, pTarget);
}
BOOL CHalfLifeRules::FAllowMonsters(void)
{
return FAllowMonsters_();
void CHalfLifeRules::Think(void)
{
Think_();
}
BOOL CHalfLifeRules::IsAllowedToSpawn(CBaseEntity *pEntity)
{
return IsAllowedToSpawn_(pEntity);
}
BOOL CHalfLifeRules::FShouldSwitchWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{
return FShouldSwitchWeapon_(pPlayer, pWeapon);
}
BOOL CHalfLifeRules::GetNextBestWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pCurrentWeapon)
{
return GetNextBestWeapon_(pPlayer, pCurrentWeapon);
}
BOOL CHalfLifeRules::IsMultiplayer(void)
{
return IsMultiplayer_();
}
BOOL CHalfLifeRules::IsDeathmatch(void)
{
return IsDeathmatch_();
}
BOOL CHalfLifeRules::IsCoOp(void)
{
return IsCoOp_();
}
BOOL CHalfLifeRules::ClientConnected(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128])
{
return ClientConnected_(pEntity, pszName, pszAddress, szRejectReason);
}
void CHalfLifeRules::InitHUD(CBasePlayer *pl)
{
InitHUD_(pl);
}
void CHalfLifeRules::ClientDisconnected(edict_t *pClient)
{
ClientDisconnected_(pClient);
}
float CHalfLifeRules::FlPlayerFallDamage(CBasePlayer *pPlayer)
{
return FlPlayerFallDamage_(pPlayer);
}
void CHalfLifeRules::PlayerSpawn(CBasePlayer *pPlayer)
{
PlayerSpawn_(pPlayer);
}
void CHalfLifeRules::PlayerThink(CBasePlayer *pPlayer)
{
PlayerThink_(pPlayer);
}
BOOL CHalfLifeRules::FPlayerCanRespawn(CBasePlayer *pPlayer)
{
return FPlayerCanRespawn_(pPlayer);
}
float CHalfLifeRules::FlPlayerSpawnTime(CBasePlayer *pPlayer)
{
return FlPlayerSpawnTime_(pPlayer);
}
edict_t *CHalfLifeRules::GetPlayerSpawnSpot(CBasePlayer *pPlayer)
{
return GetPlayerSpawnSpot_(pPlayer);
}
BOOL CHalfLifeRules::AllowAutoTargetCrosshair(void)
{
return AllowAutoTargetCrosshair_();
}
int CHalfLifeRules::IPointsForKill(CBasePlayer *pAttacker, CBasePlayer *pKilled)
{
return IPointsForKill_(pAttacker, pKilled);
}
void CHalfLifeRules::PlayerKilled(CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor)
{
PlayerKilled_(pVictim, pKiller, pInflictor);
}
void CHalfLifeRules::DeathNotice(CBasePlayer *pVictim, entvars_t *pKiller, entvars_t *pInflictor)
{
DeathNotice_(pVictim, pKiller, pInflictor);
}
void CHalfLifeRules::PlayerGotWeapon(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon)
{
PlayerGotWeapon_(pPlayer, pWeapon);
}
int CHalfLifeRules::WeaponShouldRespawn(CBasePlayerItem *pWeapon)
{
return WeaponShouldRespawn_(pWeapon);
}
float CHalfLifeRules::FlWeaponRespawnTime(CBasePlayerItem *pWeapon)
{
return FlWeaponRespawnTime_(pWeapon);
}
float CHalfLifeRules::FlWeaponTryRespawn(CBasePlayerItem *pWeapon)
{
return FlWeaponTryRespawn_(pWeapon);
}
Vector CHalfLifeRules::VecWeaponRespawnSpot(CBasePlayerItem *pWeapon)
{
return VecWeaponRespawnSpot_(pWeapon);
}
BOOL CHalfLifeRules::CanHaveItem(CBasePlayer *pPlayer, CItem *pItem)
{
return CanHaveItem_(pPlayer, pItem);
}
void CHalfLifeRules::PlayerGotItem(CBasePlayer *pPlayer, CItem *pItem)
{
PlayerGotItem_(pPlayer, pItem);
}
int CHalfLifeRules::ItemShouldRespawn(CItem *pItem)
{
return ItemShouldRespawn_(pItem);
}
float CHalfLifeRules::FlItemRespawnTime(CItem *pItem)
{
return FlItemRespawnTime_(pItem);
}
Vector CHalfLifeRules::VecItemRespawnSpot(CItem *pItem)
{
return VecItemRespawnSpot_(pItem);
}
void CHalfLifeRules::PlayerGotAmmo(CBasePlayer *pPlayer, char *szName, int iCount)
{
PlayerGotAmmo_(pPlayer, szName, iCount);
}
int CHalfLifeRules::AmmoShouldRespawn(CBasePlayerAmmo *pAmmo)
{
return AmmoShouldRespawn_(pAmmo);
}
float CHalfLifeRules::FlAmmoRespawnTime(CBasePlayerAmmo *pAmmo)
{
return FlAmmoRespawnTime_(pAmmo);
}
Vector CHalfLifeRules::VecAmmoRespawnSpot(CBasePlayerAmmo *pAmmo)
{
return VecAmmoRespawnSpot_(pAmmo);
}
float CHalfLifeRules::FlHealthChargerRechargeTime(void)
{
return FlHealthChargerRechargeTime_();
}
int CHalfLifeRules::DeadPlayerWeapons(CBasePlayer *pPlayer)
{
return DeadPlayerWeapons_(pPlayer);
}
int CHalfLifeRules::DeadPlayerAmmo(CBasePlayer *pPlayer)
{
return DeadPlayerAmmo_(pPlayer);
}
int CHalfLifeRules::PlayerRelationship(CBasePlayer *pPlayer, CBaseEntity *pTarget)
{
return PlayerRelationship_(pPlayer, pTarget);
}
BOOL CHalfLifeRules::FAllowMonsters(void)
{
return FAllowMonsters_();
}
#endif // HOOK_GAMEDLL

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -38,16 +38,16 @@
#define MAX_ITEM_COUNTS 32
#define MAX_ENTITY 512 // We can only ever move 512 entities across a transition
// triggers
#define SF_TRIGGER_ALLOWMONSTERS 1 // monsters allowed to fire this trigger
#define SF_TRIGGER_NOCLIENTS 2 // players not allowed to fire this trigger
// triggers
#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_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_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_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_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_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_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_AUTO_FIREONCE 0x0001
@ -62,11 +62,11 @@
#define SF_CAMERA_PLAYER_TARGET 2
#define SF_CAMERA_PLAYER_TAKECONTROL 4
// Flags to indicate masking off various render parameters that are normally copied to the targets
#define SF_RENDER_MASKFX (1<<0)
#define SF_RENDER_MASKAMT (1<<1)
#define SF_RENDER_MASKMODE (1<<2)
#define SF_RENDER_MASKCOLOR (1<<3)
// Flags to indicate masking off various render parameters that are normally copied to the targets
#define SF_RENDER_MASKFX (1 << 0)
#define SF_RENDER_MASKAMT (1 << 1)
#define SF_RENDER_MASKMODE (1 << 2)
#define SF_RENDER_MASKCOLOR (1 << 3)
class CFrictionModifier: public CBaseEntity
{
@ -93,13 +93,13 @@ public:
void EXPORT ChangeFriction(CBaseEntity *pOther);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1];
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
float m_frictionFraction;
};/* 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
/* <19e39c> ../cstrike/dlls/triggers.cpp:108 */
@ -129,7 +129,7 @@ public:
#endif // HOOK_GAMEDLL
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[2];
static TYPEDESCRIPTION IMPL(m_SaveData)[2];
int m_globalstate;
USE_TYPE triggerType;
@ -161,15 +161,15 @@ public:
#endif // HOOK_GAMEDLL
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1];
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
USE_TYPE triggerType;
};/* size: 164, cachelines: 3, members: 3 */
// The Multimanager Entity - when fired, will fire up to 16 targets
// at specified times.
// FLAG: THREAD (create clones when triggered)
// The Multimanager Entity - when fired, will fire up to 16 targets
// at specified times.
// FLAG: THREAD (create clones when triggered)
// FLAG: CLONE (this is a clone for a threaded execution)
/* <19e4d6> ../cstrike/dlls/triggers.cpp:264 */
@ -231,7 +231,7 @@ private:
CMultiManager *Clone(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[5];
static TYPEDESCRIPTION IMPL(m_SaveData)[5];
int m_cTargets;//312
int m_index;
@ -242,9 +242,9 @@ public:
};/* size: 452, cachelines: 8, members: 7 */
/* Linux - 452 | Windows - 432 */
// Render parameters trigger
//
// This entity will copy its render parameters (renderfx, rendermode, rendercolor, renderamt)
// Render parameters trigger
//
// This entity will copy its render parameters (renderfx, rendermode, rendercolor, renderamt)
// to its targets when triggered.
/* <19e50c> ../cstrike/dlls/triggers.cpp:525 */
@ -292,7 +292,7 @@ public:
};/* 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'
/* <19e5b2> ../cstrike/dlls/triggers.cpp:629 */
@ -377,20 +377,20 @@ public:
};/* size: 152, cachelines: 3, members: 1 */
// QUAKED trigger_multiple (.5 .5 .5) ? notouch
// 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 "delay" is set, the trigger waits some time after activating before firing.
// "wait" : Seconds between triggerings. (.2 default)
// If notouch is set, the trigger is only fired by other entities, not by touching.
// NOTOUCH has been obsoleted by trigger_relay!
// sounds
// 1) secret
// 2) beep beep
// 3) large switch
// 4)
// NEW
// if a trigger has a NETNAME, that NETNAME will become the TARGET of the triggered object.
// QUAKED trigger_multiple (.5 .5 .5) ? notouch
// 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 "delay" is set, the trigger waits some time after activating before firing.
// "wait" : Seconds between triggerings. (.2 default)
// If notouch is set, the trigger is only fired by other entities, not by touching.
// NOTOUCH has been obsoleted by trigger_relay!
// sounds
// 1) secret
// 2) beep beep
// 3) large switch
// 4)
// NEW
// if a trigger has a NETNAME, that NETNAME will become the TARGET of the triggered object.
/* <19e725> ../cstrike/dlls/triggers.cpp:1080 */
class CTriggerMultiple: public CBaseTrigger
@ -406,16 +406,16 @@ public:
};/* size: 312, cachelines: 5, members: 1 */
// 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
// "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 "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.
// sounds
// 1) secret
// 2) beep beep
// 3) large switch
// 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
// "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 "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.
// sounds
// 1) secret
// 2) beep beep
// 3) large switch
// 4)
/* <19e77d> ../cstrike/dlls/triggers.cpp:1129 */
@ -432,11 +432,11 @@ public:
};/* size: 312, cachelines: 5, members: 1 */
// QUAKED trigger_counter (.5 .5 .5) ? nomessage
// 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
// "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.
// QUAKED trigger_counter (.5 .5 .5) ? nomessage
// 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
// "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.
/* <19e7d5> ../cstrike/dlls/triggers.cpp:1273 */
class CTriggerCounter: public CBaseTrigger
@ -492,7 +492,7 @@ public:
};/* 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.
/* <19e906> ../cstrike/dlls/triggers.cpp:1345 */
@ -526,7 +526,7 @@ public:
static int InTransitionVolume(CBaseEntity *pEntity, char *pVolumeName);
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_szLandmarkName[ cchMapNameMost ]; // trigger_changelevel only: landmark on next map
@ -747,7 +747,7 @@ public:
#endif // HOOK_GAMEDLL
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[1];
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
private:
int m_iszNewTarget;
@ -783,7 +783,7 @@ public:
void Move(void);
public:
static TYPEDESCRIPTION IMPLEMENT_ARRAY(m_SaveData)[13];
static TYPEDESCRIPTION IMPL(m_SaveData)[13];
EHANDLE m_hPlayer;
EHANDLE m_hTarget;
@ -843,7 +843,7 @@ public:
#endif // HOOK_GAMEDLL
extern char st_szNextMap[cchMapNameMost];
extern char st_szNextMap[cchMapNameMost];
extern char st_szNextSpot[cchMapNameMost];
void PlayCDTrack(int iTrack);
@ -853,40 +853,40 @@ NOXREF void NextLevel(void);
#ifdef HOOK_GAMEDLL
// linked objects
C_DLLEXPORT void func_friction(entvars_t *pev);
C_DLLEXPORT void trigger_auto(entvars_t *pev);
C_DLLEXPORT void trigger_relay(entvars_t *pev);
C_DLLEXPORT void multi_manager(entvars_t *pev);
C_DLLEXPORT void env_render(entvars_t *pev);
C_DLLEXPORT void trigger(entvars_t *pev);
C_DLLEXPORT void trigger_hurt(entvars_t *pev);
C_DLLEXPORT void trigger_monsterjump(entvars_t *pev);
C_DLLEXPORT void trigger_cdaudio(entvars_t *pev);
C_DLLEXPORT void target_cdaudio(entvars_t *pev);
C_DLLEXPORT void trigger_multiple(entvars_t *pev);
C_DLLEXPORT void trigger_once(entvars_t *pev);
C_DLLEXPORT void trigger_counter(entvars_t *pev);
C_DLLEXPORT void trigger_transition(entvars_t *pev);
C_DLLEXPORT void fireanddie(entvars_t *pev);
C_DLLEXPORT void trigger_changelevel(entvars_t *pev);
C_DLLEXPORT void func_ladder(entvars_t *pev);
C_DLLEXPORT void trigger_push(entvars_t *pev);
C_DLLEXPORT void trigger_teleport(entvars_t *pev);
C_DLLEXPORT void info_teleport_destination(entvars_t *pev);
C_DLLEXPORT void func_buyzone(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_escapezone(entvars_t *pev);
C_DLLEXPORT void func_vip_safetyzone(entvars_t *pev);
C_DLLEXPORT void trigger_autosave(entvars_t *pev);
C_DLLEXPORT void trigger_endsection(entvars_t *pev);
C_DLLEXPORT void trigger_gravity(entvars_t *pev);
C_DLLEXPORT void trigger_changetarget(entvars_t *pev);
C_DLLEXPORT void trigger_camera(entvars_t *pev);
C_DLLEXPORT void env_snow(entvars_t *pev);
C_DLLEXPORT void func_snow(entvars_t *pev);
C_DLLEXPORT void env_rain(entvars_t *pev);
C_DLLEXPORT void func_rain(entvars_t *pev);
C_DLLEXPORT void func_friction(entvars_t *pev);
C_DLLEXPORT void trigger_auto(entvars_t *pev);
C_DLLEXPORT void trigger_relay(entvars_t *pev);
C_DLLEXPORT void multi_manager(entvars_t *pev);
C_DLLEXPORT void env_render(entvars_t *pev);
C_DLLEXPORT void trigger(entvars_t *pev);
C_DLLEXPORT void trigger_hurt(entvars_t *pev);
C_DLLEXPORT void trigger_monsterjump(entvars_t *pev);
C_DLLEXPORT void trigger_cdaudio(entvars_t *pev);
C_DLLEXPORT void target_cdaudio(entvars_t *pev);
C_DLLEXPORT void trigger_multiple(entvars_t *pev);
C_DLLEXPORT void trigger_once(entvars_t *pev);
C_DLLEXPORT void trigger_counter(entvars_t *pev);
C_DLLEXPORT void trigger_transition(entvars_t *pev);
C_DLLEXPORT void fireanddie(entvars_t *pev);
C_DLLEXPORT void trigger_changelevel(entvars_t *pev);
C_DLLEXPORT void func_ladder(entvars_t *pev);
C_DLLEXPORT void trigger_push(entvars_t *pev);
C_DLLEXPORT void trigger_teleport(entvars_t *pev);
C_DLLEXPORT void info_teleport_destination(entvars_t *pev);
C_DLLEXPORT void func_buyzone(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_escapezone(entvars_t *pev);
C_DLLEXPORT void func_vip_safetyzone(entvars_t *pev);
C_DLLEXPORT void trigger_autosave(entvars_t *pev);
C_DLLEXPORT void trigger_endsection(entvars_t *pev);
C_DLLEXPORT void trigger_gravity(entvars_t *pev);
C_DLLEXPORT void trigger_changetarget(entvars_t *pev);
C_DLLEXPORT void trigger_camera(entvars_t *pev);
C_DLLEXPORT void env_snow(entvars_t *pev);
C_DLLEXPORT void func_snow(entvars_t *pev);
C_DLLEXPORT void env_rain(entvars_t *pev);
C_DLLEXPORT void func_rain(entvars_t *pev);
C_DLLEXPORT void env_fog(entvars_t *pev);
#endif // HOOK_GAMEDLL

View File

@ -37,15 +37,15 @@
#define s_tutorDisabledThisGame (*ps_tutorDisabledThisGame)
#define s_nextCvarCheckTime (*ps_nextCvarCheckTime)
#define cv_tutor_message_repeats (*pcv_tutor_message_repeats)
#define cv_tutor_debug_level (*pcv_tutor_debug_level)
#define cv_tutor_view_distance (*pcv_tutor_view_distance)
#define cv_tutor_viewable_check_interval (*pcv_tutor_viewable_check_interval)
#define cv_tutor_look_distance (*pcv_tutor_look_distance)
#define cv_tutor_look_angle (*pcv_tutor_look_angle)
#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_character_display_time_coefficient (*pcv_tutor_message_character_display_time_coefficient)
#define cv_tutor_message_repeats (*pcv_tutor_message_repeats)
#define cv_tutor_debug_level (*pcv_tutor_debug_level)
#define cv_tutor_view_distance (*pcv_tutor_view_distance)
#define cv_tutor_viewable_check_interval (*pcv_tutor_viewable_check_interval)
#define cv_tutor_look_distance (*pcv_tutor_look_distance)
#define cv_tutor_look_angle (*pcv_tutor_look_angle)
#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_character_display_time_coefficient (*pcv_tutor_message_character_display_time_coefficient)
#define cv_tutor_hint_interval_time (*pcv_tutor_hint_interval_time)
#endif // HOOK_GAMEDLL

View File

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

View File

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

View File

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

View File

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

View File

@ -135,13 +135,13 @@ const int gSizes[18];
#endif //HOOK_GAMEDLL
float UTIL_WeaponTimeBase(void)
{
#ifdef CLIENT_WEAPONS
return 0.0;
#else
return gpGlobals->time;
#endif // CLIENT_WEAPONS
float UTIL_WeaponTimeBase(void)
{
#ifdef CLIENT_WEAPONS
return 0.0;
#else
return gpGlobals->time;
#endif // CLIENT_WEAPONS
}
/* <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 */
CBaseEntity *UTIL_PlayerByIndex(int playerIndex)
CBaseEntity *EXT_FUNC UTIL_PlayerByIndex(int playerIndex)
{
CBaseEntity *pPlayer = NULL;
if (playerIndex > 0 && playerIndex <= gpGlobals->maxClients)
@ -1343,10 +1343,6 @@ void UTIL_StringToVector(float *pVector, const char *pString)
Q_strcpy(tempString, pString);
#ifdef GAMEDLL_FIXES
tempString[127] = 0;
#endif // GAMEDLL_FIXES
pstr = tempString;
pfront = tempString;
@ -1698,7 +1694,7 @@ extern "C"
return num;
}
}
#endif
#endif // _WIN32
/* <1b04b5> ../cstrike/dlls/util.cpp:1971 */
unsigned int CSaveRestoreBuffer::HashString(const char *pszToken)
@ -1726,12 +1722,13 @@ unsigned short CSaveRestoreBuffer::TokenHash(const char *pszToken)
return index;
}
}
ALERT(at_error, "CSaveRestoreBuffer :: TokenHash() is COMPLETELY FULL!");
return 0;
}
/* <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);
}
@ -1743,19 +1740,19 @@ NOXREF void CSave::WriteShort(const char *pname, const short *data, int count)
}
/* <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);
}
/* <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);
}
/* <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;
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 */
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 size = 0;
@ -1796,13 +1793,13 @@ NOXREF void CSave::WriteString(const char *pname, const int *stringId, int count
}
/* <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);
}
/* <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);
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 */
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);
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 */
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);
@ -2009,7 +2006,7 @@ NOXREF void CSave::BufferString(char *pdata, int len)
}
/* <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++)
{
@ -2264,7 +2261,7 @@ int CRestore::ReadFields(const char *pname, void *pBaseData, TYPEDESCRIPTION *pF
}
/* <1b46b1> ../cstrike/dlls/util.cpp:2595 */
NOXREF void CRestore::BufferReadHeader(HEADER *pheader)
void CRestore::BufferReadHeader(HEADER *pheader)
{
pheader->size = ReadShort();
pheader->token = ReadShort();
@ -2274,7 +2271,7 @@ NOXREF void CRestore::BufferReadHeader(HEADER *pheader)
}
/* <1b4654> ../cstrike/dlls/util.cpp:2605 */
NOXREF short CRestore::ReadShort(void)
short CRestore::ReadShort(void)
{
short tmp = 0;
BufferReadBytes((char *)&tmp, sizeof(short));
@ -2282,7 +2279,7 @@ NOXREF short CRestore::ReadShort(void)
}
/* <1b45f5> ../cstrike/dlls/util.cpp:2614 */
NOXREF int CRestore::ReadInt(void)
int CRestore::ReadInt(void)
{
int tmp = 0;
BufferReadBytes((char *)&tmp, sizeof(int));
@ -2306,7 +2303,7 @@ NOXREF char *CRestore::ReadNamedString(const char *pName)
}
/* <1b453a> ../cstrike/dlls/util.cpp:2644 */
NOXREF char *CRestore::BufferPointer(void)
char *CRestore::BufferPointer(void)
{
if (!m_pdata)
return NULL;
@ -2335,7 +2332,7 @@ void CRestore::BufferReadBytes(char *pOutput, int size)
}
/* <1b5092> ../cstrike/dlls/util.cpp:2673 */
NOXREF void CRestore::BufferSkipBytes(int bytes)
void CRestore::BufferSkipBytes(int bytes)
{
BufferReadBytes(NULL, bytes);
}

View File

@ -161,7 +161,7 @@ extern globalvars_t *gpGlobals;
#endif // HOOK_GAMEDLL
#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)\
{\
GetClassPtr((DLLClassName *)pev);\
@ -204,6 +204,16 @@ typedef enum
} 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
{
float x;

View File

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

View File

@ -23,7 +23,7 @@ TYPEDESCRIPTION CFuncVehicle::m_SaveData[] =
#else
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CFuncVehicle, m_SaveData)[12];
TYPEDESCRIPTION IMPL_CLASS(CFuncVehicle, m_SaveData)[12];
#endif // HOOK_GAMEDLL
@ -960,30 +960,12 @@ void CFuncVehicle::__MAKE_VHOOK(Precache)(void)
switch (m_sounds)
{
case 1:
PRECACHE_SOUND("plats/vehicle1.wav");
pev->noise = MAKE_STRING("plats/vehicle1.wav");
break;
case 2:
PRECACHE_SOUND("plats/vehicle2.wav");
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;
case 1: PRECACHE_SOUND("plats/vehicle1.wav");pev->noise = MAKE_STRING("plats/vehicle1.wav"); break;
case 2: PRECACHE_SOUND("plats/vehicle2.wav");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");

View File

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

View File

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

View File

@ -71,7 +71,7 @@ TYPEDESCRIPTION gGlobalEntitySaveData[] =
DLL_DECALLIST gDecals[42];
TYPEDESCRIPTION IMPLEMENT_ARRAY_CLASS(CGlobalState, m_SaveData)[1];
TYPEDESCRIPTION IMPL_CLASS(CGlobalState, m_SaveData)[1];
TYPEDESCRIPTION gGlobalEntitySaveData[3];
#endif // HOOK_GAMEDLL
@ -324,7 +324,7 @@ int CGlobalState::Save(CSave &save)
int i;
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;
}
@ -351,7 +351,7 @@ int CGlobalState::Restore(CRestore &restore)
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;
}
@ -403,21 +403,21 @@ void CGlobalState::ClearStates(void)
}
/* <1dbc13> ../cstrike/dlls/world.cpp:466 */
void SaveGlobalState(SAVERESTOREDATA *pSaveData)
void EXT_FUNC SaveGlobalState(SAVERESTOREDATA *pSaveData)
{
CSave saveHelper(pSaveData);
gGlobalState.Save(saveHelper);
}
/* <1dbcde> ../cstrike/dlls/world.cpp:473 */
void RestoreGlobalState(SAVERESTOREDATA *pSaveData)
void EXT_FUNC RestoreGlobalState(SAVERESTOREDATA *pSaveData)
{
CRestore restoreHelper(pSaveData);
gGlobalState.Restore(restoreHelper);
}
/* <1dbe72> ../cstrike/dlls/world.cpp:480 */
void ResetGlobalState(void)
void EXT_FUNC ResetGlobalState(void)
{
gGlobalState.ClearStates();

View File

@ -6,171 +6,171 @@ LINK_ENTITY_TO_CLASS(weapon_aug, CAUG);
/* <23a711> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:52 */
void CAUG::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_AUG;
SET_MODEL(edict(), "models/w_aug.mdl");
m_iDefaultAmmo = AUG_DEFAULT_GIVE;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
Precache();
m_iId = WEAPON_AUG;
SET_MODEL(edict(), "models/w_aug.mdl");
m_iDefaultAmmo = AUG_DEFAULT_GIVE;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
FallInit();
}
/* <23a66a> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:66 */
void CAUG::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_aug.mdl");
PRECACHE_MODEL("models/w_aug.mdl");
PRECACHE_SOUND("weapons/aug-1.wav");
PRECACHE_SOUND("weapons/aug_clipout.wav");
PRECACHE_SOUND("weapons/aug_clipin.wav");
PRECACHE_SOUND("weapons/aug_boltpull.wav");
PRECACHE_SOUND("weapons/aug_boltslap.wav");
PRECACHE_SOUND("weapons/aug_forearm.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
PRECACHE_MODEL("models/v_aug.mdl");
PRECACHE_MODEL("models/w_aug.mdl");
PRECACHE_SOUND("weapons/aug-1.wav");
PRECACHE_SOUND("weapons/aug_clipout.wav");
PRECACHE_SOUND("weapons/aug_clipin.wav");
PRECACHE_SOUND("weapons/aug_boltpull.wav");
PRECACHE_SOUND("weapons/aug_boltslap.wav");
PRECACHE_SOUND("weapons/aug_forearm.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireAug = PRECACHE_EVENT(1, "events/aug.sc");
}
/* <23a691> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:83 */
int CAUG::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556Nato";
p->iMaxAmmo1 = MAX_AMMO_556NATO;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = AUG_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 14;
p->iId = m_iId = WEAPON_AUG;
p->iFlags = 0;
p->iWeight = AUG_WEIGHT;
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556Nato";
p->iMaxAmmo1 = MAX_AMMO_556NATO;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = AUG_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 14;
p->iId = m_iId = WEAPON_AUG;
p->iFlags = 0;
p->iWeight = AUG_WEIGHT;
return 1;
}
/* <23a6ea> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:100 */
BOOL CAUG::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.2;
m_iShotsFired = 0;
iShellOn = 1;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
iShellOn = 1;
return DefaultDeploy("models/v_aug.mdl", "models/p_aug.mdl", AUG_DRAW, "carbine", UseDecrement() != FALSE);
}
/* <23a6c4> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:109 */
void CAUG::__MAKE_VHOOK(SecondaryAttack)(void)
{
if (m_pPlayer->m_iFOV == DEFAULT_FOV)
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 55;
else
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 90;
if (m_pPlayer->m_iFOV == DEFAULT_FOV)
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 55;
else
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 90;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
}
/* <23aa31> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:130 */
void CAUG::__MAKE_VHOOK(PrimaryAttack)(void)
{
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
AUGFire(0.035 + (0.4 * m_flAccuracy), 0.0825, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
AUGFire(0.035 + (0.07 * m_flAccuracy), 0.0825, FALSE);
}
else if (m_pPlayer->pev->fov == DEFAULT_FOV)
{
AUGFire(0.02 * m_flAccuracy, 0.0825, FALSE);
}
else
{
AUGFire(0.02 * m_flAccuracy, 0.135, FALSE);
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
AUGFire(0.035 + (0.4 * m_flAccuracy), 0.0825, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
AUGFire(0.035 + (0.07 * m_flAccuracy), 0.0825, FALSE);
}
else if (m_pPlayer->pev->fov == DEFAULT_FOV)
{
AUGFire(0.02 * m_flAccuracy, 0.0825, FALSE);
}
else
{
AUGFire(0.02 * m_flAccuracy, 0.135, FALSE);
}
}
/* <23a8e9> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:143 */
void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
Vector vecAiming, vecSrc, vecDir;
int flag;
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;
Vector vecAiming, vecSrc, vecDir;
int flag;
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_pPlayer->pev->effects |= EF_MUZZLEFLASH;
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);
m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
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;
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
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
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)
{
{
KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7);
}
}
else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
{
KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5);
}
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
{
KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8);
}
}
else
{
{
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 */
void CAUG::__MAKE_VHOOK(Reload)(void)
{
if (m_pPlayer->ammo_556nato <= 0)
{
return;
}
if (DefaultReload(AUG_MAX_CLIP, AUG_RELOAD, AUG_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->m_iFOV != DEFAULT_FOV)
{
SecondaryAttack();
}
m_flAccuracy = 0;
m_iShotsFired = 0;
m_bDelayFire = false;
if (m_pPlayer->ammo_556nato <= 0)
{
return;
}
if (DefaultReload(AUG_MAX_CLIP, AUG_RELOAD, AUG_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->m_iFOV != DEFAULT_FOV)
{
SecondaryAttack();
}
m_flAccuracy = 0;
m_iShotsFired = 0;
m_bDelayFire = false;
}
}
/* <23a787> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:245 */
void CAUG::__MAKE_VHOOK(WeaponIdle)(void)
{
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
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 */
float CC4::GetMaxSpeed(void)
float CC4::__MAKE_VHOOK(GetMaxSpeed)(void)
{
return C4_MAX_SPEED;
}
@ -378,6 +378,11 @@ void CC4::Holster(int skiplocal)
Holster_(skiplocal);
}
float CC4::GetMaxSpeed(void)
{
return GetMaxSpeed_();
}
void CC4::PrimaryAttack(void)
{
PrimaryAttack_();

View File

@ -6,51 +6,51 @@ LINK_ENTITY_TO_CLASS(weapon_famas, CFamas);
/* <2c0284> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:52 */
void CFamas::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_FAMAS;
SET_MODEL(edict(), "models/w_famas.mdl");
m_iDefaultAmmo = FAMAS_DEFAULT_GIVE;
m_iFamasShotsFired = 0;
m_flFamasShoot = 0;
Precache();
m_iId = WEAPON_FAMAS;
SET_MODEL(edict(), "models/w_famas.mdl");
m_iDefaultAmmo = FAMAS_DEFAULT_GIVE;
m_iFamasShotsFired = 0;
m_flFamasShoot = 0;
FallInit();
}
/* <2c01dc> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:66 */
void CFamas::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_famas.mdl");
PRECACHE_MODEL("models/w_famas.mdl");
PRECACHE_SOUND("weapons/famas-1.wav");
PRECACHE_SOUND("weapons/famas-2.wav");
PRECACHE_SOUND("weapons/famas_clipout.wav");
PRECACHE_SOUND("weapons/famas_clipin.wav");
PRECACHE_SOUND("weapons/famas_boltpull.wav");
PRECACHE_SOUND("weapons/famas_boltslap.wav");
PRECACHE_SOUND("weapons/famas_forearm.wav");
PRECACHE_SOUND("weapons/famas-burst.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
PRECACHE_MODEL("models/v_famas.mdl");
PRECACHE_MODEL("models/w_famas.mdl");
PRECACHE_SOUND("weapons/famas-1.wav");
PRECACHE_SOUND("weapons/famas-2.wav");
PRECACHE_SOUND("weapons/famas_clipout.wav");
PRECACHE_SOUND("weapons/famas_clipin.wav");
PRECACHE_SOUND("weapons/famas_boltpull.wav");
PRECACHE_SOUND("weapons/famas_boltslap.wav");
PRECACHE_SOUND("weapons/famas_forearm.wav");
PRECACHE_SOUND("weapons/famas-burst.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireFamas = PRECACHE_EVENT(1, "events/famas.sc");
}
/* <2c0203> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:85 */
int CFamas::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556Nato";
p->iMaxAmmo1 = MAX_AMMO_556NATO;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = FAMAS_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 18;
p->iId = m_iId = WEAPON_FAMAS;
p->iFlags = 0;
p->iWeight = FAMAS_WEIGHT;
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556Nato";
p->iMaxAmmo1 = MAX_AMMO_556NATO;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = FAMAS_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 18;
p->iId = m_iId = WEAPON_FAMAS;
p->iFlags = 0;
p->iWeight = FAMAS_WEIGHT;
return 1;
}
@ -58,55 +58,55 @@ int CFamas::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
BOOL CFamas::__MAKE_VHOOK(Deploy)(void)
{
m_iShotsFired = 0;
m_iFamasShotsFired = 0;
m_flFamasShoot = 0;
m_flAccuracy = 0.2;
iShellOn = 1;
m_iFamasShotsFired = 0;
m_flFamasShoot = 0;
m_flAccuracy = 0.2;
iShellOn = 1;
return DefaultDeploy("models/v_famas.mdl", "models/p_famas.mdl", FAMAS_DRAW, "carbine", UseDecrement() != FALSE);
}
/* <2c0236> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:114 */
void CFamas::__MAKE_VHOOK(SecondaryAttack)(void)
{
if (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE)
{
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_FullAuto");
m_iWeaponState &= ~WPNSTATE_FAMAS_BURST_MODE;
}
else
{
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire");
m_iWeaponState |= WPNSTATE_FAMAS_BURST_MODE;
}
if (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE)
{
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_FullAuto");
m_iWeaponState &= ~WPNSTATE_FAMAS_BURST_MODE;
}
else
{
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire");
m_iWeaponState |= WPNSTATE_FAMAS_BURST_MODE;
}
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
}
/* <2c04fe> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:129 */
void CFamas::__MAKE_VHOOK(PrimaryAttack)(void)
{
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.15);
return;
}
bool bFireBurst = (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE) == WPNSTATE_FAMAS_BURST_MODE;
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
FamasFire(0.030 + 0.3 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
FamasFire(0.030 + 0.07 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
}
else
{
FamasFire(0.02 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.15);
return;
}
bool bFireBurst = (m_iWeaponState & WPNSTATE_FAMAS_BURST_MODE) == WPNSTATE_FAMAS_BURST_MODE;
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
FamasFire(0.030 + 0.3 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
FamasFire(0.030 + 0.07 * m_flAccuracy, 0.0825, FALSE, bFireBurst);
}
else
{
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 mask;
if (bFireBurst)
{
m_iFamasShotsFired = 0;
flCycleTime = 0.55;
}
else
{
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;
if (bFireBurst)
{
m_iFamasShotsFired = 0;
flCycleTime = 0.55;
}
else
{
flSpread += 0.01;
}
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;
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_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,
bFireBurst ? FAMAS_DAMAGE_BURST : FAMAS_DAMAGE, FAMAS_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
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);
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.1;
if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7);
}
else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8);
}
else
{
KickBack(0.625, 0.375, 0.25, 0.0125, 3.5, 2.25, 8);
}
if (bFireBurst)
{
m_iFamasShotsFired++;
m_fBurstSpread = flSpread;
m_flFamasShoot = gpGlobals->time + 0.05;
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.1;
if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(1.0, 0.45, 0.275, 0.05, 4.0, 2.5, 7);
}
else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(1.25, 0.45, 0.22, 0.18, 5.5, 4.0, 5);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.575, 0.325, 0.2, 0.011, 3.25, 2.0, 8);
}
else
{
KickBack(0.625, 0.375, 0.25, 0.0125, 3.5, 2.25, 8);
}
if (bFireBurst)
{
m_iFamasShotsFired++;
m_fBurstSpread = flSpread;
m_flFamasShoot = gpGlobals->time + 0.05;
}
}
/* <2c0336> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:262 */
void CFamas::__MAKE_VHOOK(Reload)(void)
{
if (m_pPlayer->ammo_556nato <= 0)
{
return;
}
if (DefaultReload(FAMAS_MAX_CLIP, FAMAS_RELOAD, FAMAS_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->m_iFOV != DEFAULT_FOV)
{
SecondaryAttack();
}
m_flAccuracy = 0;
m_iShotsFired = 0;
m_bDelayFire = false;
if (m_pPlayer->ammo_556nato <= 0)
{
return;
}
if (DefaultReload(FAMAS_MAX_CLIP, FAMAS_RELOAD, FAMAS_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->m_iFOV != DEFAULT_FOV)
{
SecondaryAttack();
}
m_flAccuracy = 0;
m_iShotsFired = 0;
m_bDelayFire = false;
}
}
/* <2c02fa> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:284 */
void CFamas::__MAKE_VHOOK(WeaponIdle)(void)
{
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
SendWeaponAnim(FAMAS_IDLE1, UseDecrement() != FALSE);
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
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 */
void CM249::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_M249;
SET_MODEL(edict(), "models/w_m249.mdl");
m_iDefaultAmmo = M249_DEFAULT_GIVE;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
Precache();
m_iId = WEAPON_M249;
SET_MODEL(edict(), "models/w_m249.mdl");
m_iDefaultAmmo = M249_DEFAULT_GIVE;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
FallInit();
}
/* <2768d0> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:65 */
void CM249::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_m249.mdl");
PRECACHE_MODEL("models/w_m249.mdl");
PRECACHE_SOUND("weapons/m249-1.wav");
PRECACHE_SOUND("weapons/m249-2.wav");
PRECACHE_SOUND("weapons/m249_boxout.wav");
PRECACHE_SOUND("weapons/m249_boxin.wav");
PRECACHE_SOUND("weapons/m249_chain.wav");
PRECACHE_SOUND("weapons/m249_coverup.wav");
PRECACHE_SOUND("weapons/m249_coverdown.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
PRECACHE_MODEL("models/v_m249.mdl");
PRECACHE_MODEL("models/w_m249.mdl");
PRECACHE_SOUND("weapons/m249-1.wav");
PRECACHE_SOUND("weapons/m249-2.wav");
PRECACHE_SOUND("weapons/m249_boxout.wav");
PRECACHE_SOUND("weapons/m249_boxin.wav");
PRECACHE_SOUND("weapons/m249_chain.wav");
PRECACHE_SOUND("weapons/m249_coverup.wav");
PRECACHE_SOUND("weapons/m249_coverdown.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireM249 = PRECACHE_EVENT(1, "events/m249.sc");
}
/* <2768f7> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:84 */
int CM249::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556NatoBox";
p->iMaxAmmo1 = MAX_AMMO_556NATOBOX;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = M249_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 4;
p->iId = m_iId = WEAPON_M249;
p->iFlags = 0;
p->iWeight = M249_WEIGHT;
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "556NatoBox";
p->iMaxAmmo1 = MAX_AMMO_556NATOBOX;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = M249_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 4;
p->iId = m_iId = WEAPON_M249;
p->iFlags = 0;
p->iWeight = M249_WEIGHT;
return 1;
}
/* <27692a> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:101 */
BOOL CM249::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.2;
m_iShotsFired = 0;
iShellOn = 1;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
iShellOn = 1;
return DefaultDeploy("models/v_m249.mdl", "models/p_m249.mdl", M249_DRAW, "m249", UseDecrement() != FALSE);
}
/* <276b73> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:111 */
void CM249::__MAKE_VHOOK(PrimaryAttack)(void)
{
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
M249Fire(0.045 + (0.5 * m_flAccuracy), 0.1, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
M249Fire(0.045 + (0.095 * m_flAccuracy), 0.1, FALSE);
}
else
{
M249Fire(0.03 * m_flAccuracy, 0.1, FALSE);
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
M249Fire(0.045 + (0.5 * m_flAccuracy), 0.1, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
M249Fire(0.045 + (0.095 * m_flAccuracy), 0.1, FALSE);
}
else
{
M249Fire(0.03 * m_flAccuracy, 0.1, FALSE);
}
}
/* <276c87> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:121 */
void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 175) + 0.4;
if (m_flAccuracy > 0.9)
m_flAccuracy = 0.9;
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;
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 175) + 0.4;
if (m_flAccuracy > 0.9)
m_flAccuracy = 0.9;
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_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,
M249_DAMAGE, M249_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
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;
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
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
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))
{
{
KickBack(1.8, 0.65, 0.45, 0.125, 5.0, 3.5, 8);
}
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
{
KickBack(1.1, 0.5, 0.3, 0.06, 4.0, 3.0, 8);
}
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
{
KickBack(0.75, 0.325, 0.25, 0.025, 3.5, 2.5, 9);
}
}
else
{
{
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
// to prevent reload if not enough ammo
if (m_pPlayer->ammo_556natobox <= 0)
{
return;
}
#endif // REGAMEDLL_FIXES
if (DefaultReload(M249_MAX_CLIP, M249_RELOAD, M249_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2;
m_bDelayFire = false;
m_iShotsFired = 0;
if (m_pPlayer->ammo_556natobox <= 0)
{
return;
}
#endif // REGAMEDLL_FIXES
if (DefaultReload(M249_MAX_CLIP, M249_RELOAD, M249_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2;
m_bDelayFire = false;
m_iShotsFired = 0;
}
}
/* <2769c7> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:222 */
void CM249::__MAKE_VHOOK(WeaponIdle)(void)
{
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(M249_IDLE1, UseDecrement() != FALSE);
}

View File

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

View File

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

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