mirror of
https://github.com/s1lentq/ReGameDLL_CS.git
synced 2025-01-14 15:48:01 +03:00
WIP: reversed weapons CC4, CGLOCK18
This commit is contained in:
parent
8508f2d517
commit
0aa8ac73a6
@ -310,7 +310,7 @@ void CWeaponCycler::__MAKE_VHOOK(Spawn)(void)
|
|||||||
BOOL CWeaponCycler::__MAKE_VHOOK(Deploy)(void)
|
BOOL CWeaponCycler::__MAKE_VHOOK(Deploy)(void)
|
||||||
{
|
{
|
||||||
m_pPlayer->pev->viewmodel = m_iszModel;
|
m_pPlayer->pev->viewmodel = m_iszModel;
|
||||||
m_pPlayer->m_flNextAttack = WEAPON_TIMEBASED + 1.0;
|
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1.0;
|
||||||
|
|
||||||
SendWeaponAnim(0);
|
SendWeaponAnim(0);
|
||||||
m_iClip = 0;
|
m_iClip = 0;
|
||||||
@ -321,7 +321,7 @@ BOOL CWeaponCycler::__MAKE_VHOOK(Deploy)(void)
|
|||||||
/* <ccaa3> ../cstrike/dlls/h_cycler.cpp:388 */
|
/* <ccaa3> ../cstrike/dlls/h_cycler.cpp:388 */
|
||||||
void CWeaponCycler::__MAKE_VHOOK(Holster)(int skiplocal)
|
void CWeaponCycler::__MAKE_VHOOK(Holster)(int skiplocal)
|
||||||
{
|
{
|
||||||
m_pPlayer->m_flNextAttack = WEAPON_TIMEBASED + 0.5;
|
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <ccad8> ../cstrike/dlls/h_cycler.cpp:394 */
|
/* <ccad8> ../cstrike/dlls/h_cycler.cpp:394 */
|
||||||
|
@ -150,6 +150,15 @@ const int gSizes[18];
|
|||||||
|
|
||||||
#endif //HOOK_GAMEDLL
|
#endif //HOOK_GAMEDLL
|
||||||
|
|
||||||
|
float UTIL_WeaponTimeBase(void)
|
||||||
|
{
|
||||||
|
#ifdef CLIENT_WEAPONS
|
||||||
|
return 0.0;
|
||||||
|
#else
|
||||||
|
return gpGlobals->time;
|
||||||
|
#endif // CLIENT_WEAPONS
|
||||||
|
}
|
||||||
|
|
||||||
/* <1ac4be> ../cstrike/dlls/util.cpp:59 */
|
/* <1ac4be> ../cstrike/dlls/util.cpp:59 */
|
||||||
unsigned int U_Random(void)
|
unsigned int U_Random(void)
|
||||||
{
|
{
|
||||||
|
@ -64,12 +64,6 @@
|
|||||||
#define CBSENTENCENAME_MAX 16
|
#define CBSENTENCENAME_MAX 16
|
||||||
#define CVOXFILESENTENCEMAX 1536 // max number of sentences in game. NOTE: this must match CVOXFILESENTENCEMAX in engine\sound.h!!!
|
#define CVOXFILESENTENCEMAX 1536 // max number of sentences in game. NOTE: this must match CVOXFILESENTENCEMAX in engine\sound.h!!!
|
||||||
|
|
||||||
#ifdef CLIENT_WEAPONS
|
|
||||||
#define WEAPON_TIMEBASED 0.0f
|
|
||||||
#else
|
|
||||||
#define WEAPON_TIMEBASED gpGlobals->time
|
|
||||||
#endif // CLIENT_WEAPONS
|
|
||||||
|
|
||||||
#define GROUP_OP_AND 0
|
#define GROUP_OP_AND 0
|
||||||
#define GROUP_OP_NAND 1
|
#define GROUP_OP_NAND 1
|
||||||
|
|
||||||
@ -384,6 +378,7 @@ extern int g_groupmask;
|
|||||||
extern int g_groupop;
|
extern int g_groupop;
|
||||||
extern const int gSizes[18];
|
extern const int gSizes[18];
|
||||||
|
|
||||||
|
float UTIL_WeaponTimeBase(void);
|
||||||
unsigned int U_Random(void);
|
unsigned int U_Random(void);
|
||||||
void U_Srand(unsigned int seed);
|
void U_Srand(unsigned int seed);
|
||||||
int UTIL_SharedRandomLong(unsigned int seed, int low, int high);
|
int UTIL_SharedRandomLong(unsigned int seed, int low, int high);
|
||||||
|
@ -945,7 +945,7 @@ void CBasePlayerWeapon::__MAKE_VHOOK(ItemPostFrame)(void)
|
|||||||
FireRemaining(m_iFamasShotsFired, m_flFamasShoot, FALSE);
|
FireRemaining(m_iFamasShotsFired, m_flFamasShoot, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_flNextPrimaryAttack <= WEAPON_TIMEBASED)
|
if (m_flNextPrimaryAttack <= UTIL_WeaponTimeBase())
|
||||||
{
|
{
|
||||||
if (m_pPlayer->m_bResumeZoom)
|
if (m_pPlayer->m_bResumeZoom)
|
||||||
{
|
{
|
||||||
@ -977,11 +977,11 @@ void CBasePlayerWeapon::__MAKE_VHOOK(ItemPostFrame)(void)
|
|||||||
SecondaryAttack();
|
SecondaryAttack();
|
||||||
m_pPlayer->pev->button &= ~IN_ATTACK2;
|
m_pPlayer->pev->button &= ~IN_ATTACK2;
|
||||||
m_fInReload = FALSE;
|
m_fInReload = FALSE;
|
||||||
m_pPlayer->m_flNextAttack = WEAPON_TIMEBASED;
|
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_fInReload && m_pPlayer->m_flNextAttack <= WEAPON_TIMEBASED)
|
if (m_fInReload && m_pPlayer->m_flNextAttack <= UTIL_WeaponTimeBase())
|
||||||
{
|
{
|
||||||
// complete the reload.
|
// complete the reload.
|
||||||
int j = Q_min(iMaxClip() - m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]);
|
int j = Q_min(iMaxClip() - m_iClip, m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]);
|
||||||
@ -993,7 +993,7 @@ void CBasePlayerWeapon::__MAKE_VHOOK(ItemPostFrame)(void)
|
|||||||
m_fInReload = FALSE;
|
m_fInReload = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((usableButtons & IN_ATTACK2) && CanAttack(m_flNextSecondaryAttack, WEAPON_TIMEBASED, UseDecrement()))
|
if ((usableButtons & IN_ATTACK2) && CanAttack(m_flNextSecondaryAttack, UTIL_WeaponTimeBase(), UseDecrement()))
|
||||||
{
|
{
|
||||||
if (pszAmmo2() && !m_pPlayer->m_rgAmmo[SecondaryAmmoIndex()])
|
if (pszAmmo2() && !m_pPlayer->m_rgAmmo[SecondaryAmmoIndex()])
|
||||||
{
|
{
|
||||||
@ -1003,7 +1003,7 @@ void CBasePlayerWeapon::__MAKE_VHOOK(ItemPostFrame)(void)
|
|||||||
SecondaryAttack();
|
SecondaryAttack();
|
||||||
m_pPlayer->pev->button &= ~IN_ATTACK2;
|
m_pPlayer->pev->button &= ~IN_ATTACK2;
|
||||||
}
|
}
|
||||||
else if ((m_pPlayer->pev->button & IN_ATTACK) && CanAttack(m_flNextPrimaryAttack, WEAPON_TIMEBASED, UseDecrement()))
|
else if ((m_pPlayer->pev->button & IN_ATTACK) && CanAttack(m_flNextPrimaryAttack, UTIL_WeaponTimeBase(), UseDecrement()))
|
||||||
{
|
{
|
||||||
if ((m_iClip == 0 && pszAmmo1()) || (iMaxClip() == WEAPON_NOCLIP && !m_pPlayer->m_rgAmmo[PrimaryAmmoIndex()]))
|
if ((m_iClip == 0 && pszAmmo1()) || (iMaxClip() == WEAPON_NOCLIP && !m_pPlayer->m_rgAmmo[PrimaryAmmoIndex()]))
|
||||||
{
|
{
|
||||||
@ -1017,7 +1017,7 @@ void CBasePlayerWeapon::__MAKE_VHOOK(ItemPostFrame)(void)
|
|||||||
PrimaryAttack();
|
PrimaryAttack();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((m_pPlayer->pev->button & IN_RELOAD) && iMaxClip() != WEAPON_NOCLIP && !m_fInReload && m_flNextPrimaryAttack < WEAPON_TIMEBASED)
|
else if ((m_pPlayer->pev->button & IN_RELOAD) && iMaxClip() != WEAPON_NOCLIP && !m_fInReload && m_flNextPrimaryAttack < UTIL_WeaponTimeBase())
|
||||||
{
|
{
|
||||||
if (m_flFamasShoot == 0 && m_flGlock18Shoot == 0)
|
if (m_flFamasShoot == 0 && m_flGlock18Shoot == 0)
|
||||||
{
|
{
|
||||||
@ -1056,13 +1056,13 @@ void CBasePlayerWeapon::__MAKE_VHOOK(ItemPostFrame)(void)
|
|||||||
else
|
else
|
||||||
m_iShotsFired = 0;
|
m_iShotsFired = 0;
|
||||||
|
|
||||||
if (!IsUseable() && m_flNextPrimaryAttack < WEAPON_TIMEBASED)
|
if (!IsUseable() && m_flNextPrimaryAttack < UTIL_WeaponTimeBase())
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
// weapon isn't useable, switch.
|
// weapon isn't useable, switch.
|
||||||
if (!(iFlags() & ITEM_FLAG_NOAUTOSWITCHEMPTY) && g_pGameRules->GetNextBestWeapon(m_pPlayer, this))
|
if (!(iFlags() & ITEM_FLAG_NOAUTOSWITCHEMPTY) && g_pGameRules->GetNextBestWeapon(m_pPlayer, this))
|
||||||
{
|
{
|
||||||
m_flNextPrimaryAttack = WEAPON_TIMEBASED + 0.3;
|
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.3;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1072,7 +1072,7 @@ void CBasePlayerWeapon::__MAKE_VHOOK(ItemPostFrame)(void)
|
|||||||
if (!(m_iWeaponState & WPNSTATE_SHIELD_DRAWN))
|
if (!(m_iWeaponState & WPNSTATE_SHIELD_DRAWN))
|
||||||
{
|
{
|
||||||
// weapon is useable. Reload if empty and weapon has waited as long as it has to after firing
|
// weapon is useable. Reload if empty and weapon has waited as long as it has to after firing
|
||||||
if (!m_iClip && !(iFlags() & ITEM_FLAG_NOAUTORELOAD) && m_flNextPrimaryAttack < WEAPON_TIMEBASED)
|
if (!m_iClip && !(iFlags() & ITEM_FLAG_NOAUTORELOAD) && m_flNextPrimaryAttack < UTIL_WeaponTimeBase())
|
||||||
{
|
{
|
||||||
if (m_flFamasShoot == 0 && m_flGlock18Shoot == 0)
|
if (m_flFamasShoot == 0 && m_flGlock18Shoot == 0)
|
||||||
{
|
{
|
||||||
@ -1636,9 +1636,9 @@ float CBasePlayerWeapon::GetNextAttackDelay(float delay)
|
|||||||
flCreep = flTimeBetweenFires - m_flPrevPrimaryAttack;
|
flCreep = flTimeBetweenFires - m_flPrevPrimaryAttack;
|
||||||
}
|
}
|
||||||
|
|
||||||
float flNextAttack = WEAPON_TIMEBASED + delay - flCreep;
|
float flNextAttack = UTIL_WeaponTimeBase() + delay - flCreep;
|
||||||
#else
|
#else
|
||||||
float flNextAttack = WEAPON_TIMEBASED + delay;
|
float flNextAttack = UTIL_WeaponTimeBase() + delay;
|
||||||
#endif // REGAMEDLL_BUILD_6153
|
#endif // REGAMEDLL_BUILD_6153
|
||||||
|
|
||||||
// save the last fire time
|
// save the last fire time
|
||||||
@ -1646,7 +1646,7 @@ float CBasePlayerWeapon::GetNextAttackDelay(float delay)
|
|||||||
|
|
||||||
// we need to remember what the m_flNextPrimaryAttack time is set to for each shot,
|
// we need to remember what the m_flNextPrimaryAttack time is set to for each shot,
|
||||||
// store it as m_flPrevPrimaryAttack.
|
// store it as m_flPrevPrimaryAttack.
|
||||||
m_flPrevPrimaryAttack = flNextAttack - WEAPON_TIMEBASED;
|
m_flPrevPrimaryAttack = flNextAttack - UTIL_WeaponTimeBase();
|
||||||
|
|
||||||
return flNextAttack;
|
return flNextAttack;
|
||||||
}
|
}
|
||||||
|
@ -904,33 +904,45 @@ private:
|
|||||||
class CC4: public CBasePlayerWeapon
|
class CC4: public CBasePlayerWeapon
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NOBODY virtual void Spawn(void);
|
virtual void Spawn(void);
|
||||||
NOBODY virtual void Precache(void);
|
virtual void Precache(void);
|
||||||
NOBODY virtual void KeyValue(KeyValueData *pkvd);
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
NOBODY virtual void Use(CBaseEntity *pActivator,CBaseEntity *pCaller,USE_TYPE useType,float value);
|
virtual void Use(CBaseEntity *pActivator,CBaseEntity *pCaller,USE_TYPE useType,float value);
|
||||||
NOBODY virtual int GetItemInfo(ItemInfo *p);
|
virtual int GetItemInfo(ItemInfo *p);
|
||||||
NOBODY virtual BOOL Deploy(void);
|
virtual BOOL Deploy(void);
|
||||||
NOBODY virtual void Holster(int skiplocal);
|
virtual void Holster(int skiplocal);
|
||||||
virtual float GetMaxSpeed(void)
|
virtual float GetMaxSpeed(void);
|
||||||
{
|
|
||||||
return 250.0f;
|
|
||||||
}
|
|
||||||
virtual int iItemSlot(void)
|
virtual int iItemSlot(void)
|
||||||
{
|
{
|
||||||
return C4_SLOT;
|
return C4_SLOT;
|
||||||
}
|
}
|
||||||
NOBODY virtual void PrimaryAttack(void);
|
virtual void PrimaryAttack(void);
|
||||||
NOBODY virtual void WeaponIdle(void);
|
virtual void WeaponIdle(void);
|
||||||
virtual BOOL UseDecrement(void)
|
virtual BOOL UseDecrement(void)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
#ifdef HOOK_GAMEDLL
|
||||||
|
|
||||||
|
void Spawn_(void);
|
||||||
|
void Precache_(void);
|
||||||
|
void KeyValue_(KeyValueData *pkvd);
|
||||||
|
void Use_(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
|
int GetItemInfo_(ItemInfo *p);
|
||||||
|
BOOL Deploy_(void);
|
||||||
|
void Holster_(int skiplocal);
|
||||||
|
void PrimaryAttack_(void);
|
||||||
|
void WeaponIdle_(void);
|
||||||
|
|
||||||
|
#endif // HOOK_GAMEDLL
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool m_bStartedArming;
|
bool m_bStartedArming;
|
||||||
bool m_bBombPlacedAnimation;
|
bool m_bBombPlacedAnimation;
|
||||||
float m_fArmedTime;
|
float m_fArmedTime;
|
||||||
private:
|
private:
|
||||||
bool m_bHasShield;
|
bool m_bHasShield;
|
||||||
|
|
||||||
};/* size: 348, cachelines: 6, members: 5 */
|
};/* size: 348, cachelines: 6, members: 5 */
|
||||||
|
|
||||||
/* <24afee> ../cstrike/dlls/weapons.h:750 */
|
/* <24afee> ../cstrike/dlls/weapons.h:750 */
|
||||||
@ -1041,10 +1053,10 @@ private:
|
|||||||
class CGLOCK18: public CBasePlayerWeapon
|
class CGLOCK18: public CBasePlayerWeapon
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NOBODY virtual void Spawn(void);
|
virtual void Spawn(void);
|
||||||
NOBODY virtual void Precache(void);
|
virtual void Precache(void);
|
||||||
NOBODY virtual int GetItemInfo(ItemInfo *p);
|
virtual int GetItemInfo(ItemInfo *p);
|
||||||
NOBODY virtual BOOL Deploy(void);
|
virtual BOOL Deploy(void);
|
||||||
virtual float GetMaxSpeed(void)
|
virtual float GetMaxSpeed(void)
|
||||||
{
|
{
|
||||||
return m_fMaxSpeed;
|
return m_fMaxSpeed;
|
||||||
@ -1053,10 +1065,10 @@ public:
|
|||||||
{
|
{
|
||||||
return PISTOL_SLOT;
|
return PISTOL_SLOT;
|
||||||
}
|
}
|
||||||
NOBODY virtual void PrimaryAttack(void);
|
virtual void PrimaryAttack(void);
|
||||||
NOBODY virtual void SecondaryAttack(void);
|
virtual void SecondaryAttack(void);
|
||||||
NOBODY virtual void Reload(void);
|
virtual void Reload(void);
|
||||||
NOBODY virtual void WeaponIdle(void);
|
virtual void WeaponIdle(void);
|
||||||
virtual BOOL UseDecrement(void)
|
virtual BOOL UseDecrement(void)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1065,11 +1077,26 @@ public:
|
|||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
#ifdef HOOK_GAMEDLL
|
||||||
|
|
||||||
|
void Spawn_(void);
|
||||||
|
void Precache_(void);
|
||||||
|
int GetItemInfo_(ItemInfo *p);
|
||||||
|
BOOL Deploy_(void);
|
||||||
|
void PrimaryAttack_(void);
|
||||||
|
void SecondaryAttack_(void);
|
||||||
|
void Reload_(void);
|
||||||
|
void WeaponIdle_(void);
|
||||||
|
|
||||||
|
#endif // HOOK_GAMEDLL
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NOBODY void GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst);
|
void GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int m_iShell;
|
int m_iShell;
|
||||||
bool m_bBurstFire;
|
bool m_bBurstFire;
|
||||||
|
|
||||||
};/* size: 344, cachelines: 6, members: 3 */
|
};/* size: 344, cachelines: 6, members: 3 */
|
||||||
|
|
||||||
/* <26a48a> ../cstrike/dlls/weapons.h:852 */
|
/* <26a48a> ../cstrike/dlls/weapons.h:852 */
|
||||||
@ -1772,9 +1799,12 @@ BOOL CanAttack(float attack_time, float curtime, BOOL isPredicted);
|
|||||||
// linked object
|
// linked object
|
||||||
C_DLLEXPORT void weapon_knife(entvars_t *pev);
|
C_DLLEXPORT void weapon_knife(entvars_t *pev);
|
||||||
C_DLLEXPORT void weapon_usp(entvars_t *pev);
|
C_DLLEXPORT void weapon_usp(entvars_t *pev);
|
||||||
|
C_DLLEXPORT void weapon_glock18(entvars_t *pev);
|
||||||
|
C_DLLEXPORT void weapon_c4(entvars_t *pev);
|
||||||
C_DLLEXPORT void weapon_awp(entvars_t *pev);
|
C_DLLEXPORT void weapon_awp(entvars_t *pev);
|
||||||
C_DLLEXPORT void armoury_entity(entvars_t *pev);
|
|
||||||
C_DLLEXPORT void weaponbox(entvars_t *pev);
|
|
||||||
C_DLLEXPORT void weapon_p90(entvars_t *pev);
|
C_DLLEXPORT void weapon_p90(entvars_t *pev);
|
||||||
|
|
||||||
|
C_DLLEXPORT void armoury_entity(entvars_t *pev);
|
||||||
|
C_DLLEXPORT void weaponbox(entvars_t *pev);
|
||||||
|
|
||||||
#endif // WEAPONS_H
|
#endif // WEAPONS_H
|
||||||
|
@ -59,10 +59,7 @@ int CAWP::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
|
|||||||
p->iMaxClip = AWP_MAX_CLIP;
|
p->iMaxClip = AWP_MAX_CLIP;
|
||||||
p->iSlot = 0;
|
p->iSlot = 0;
|
||||||
p->iPosition = 2;
|
p->iPosition = 2;
|
||||||
|
p->iId = m_iId = WEAPON_AWP;
|
||||||
m_iId = WEAPON_AWP;
|
|
||||||
p->iId = WEAPON_AWP;
|
|
||||||
|
|
||||||
p->iFlags = 0;
|
p->iFlags = 0;
|
||||||
p->iWeight = AWP_WEIGHT;
|
p->iWeight = AWP_WEIGHT;
|
||||||
|
|
||||||
@ -77,7 +74,7 @@ BOOL CAWP::__MAKE_VHOOK(Deploy)(void)
|
|||||||
m_pPlayer->m_flNextAttack = GetNextAttackDelay(1.45);
|
m_pPlayer->m_flNextAttack = GetNextAttackDelay(1.45);
|
||||||
m_flNextPrimaryAttack = m_pPlayer->m_flNextAttack;
|
m_flNextPrimaryAttack = m_pPlayer->m_flNextAttack;
|
||||||
|
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 1.0;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -103,7 +100,7 @@ void CAWP::__MAKE_VHOOK(SecondaryAttack)(void)
|
|||||||
m_pPlayer->ResetMaxSpeed();
|
m_pPlayer->ResetMaxSpeed();
|
||||||
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
|
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
|
||||||
|
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 0.3;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <23fd53> ../cstrike/dlls/wpn_shared/wpn_awp.cpp:143 */
|
/* <23fd53> ../cstrike/dlls/wpn_shared/wpn_awp.cpp:143 */
|
||||||
@ -134,9 +131,7 @@ void CAWP::__MAKE_VHOOK(PrimaryAttack)(void)
|
|||||||
/* <23fe76> ../cstrike/dlls/wpn_shared/wpn_awp.cpp:157 */
|
/* <23fe76> ../cstrike/dlls/wpn_shared/wpn_awp.cpp:157 */
|
||||||
void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
|
void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
|
||||||
{
|
{
|
||||||
Vector vecAiming;
|
Vector vecAiming, vecSrc, vecDir;
|
||||||
Vector vecSrc;
|
|
||||||
Vector vecDir;
|
|
||||||
int flag;
|
int flag;
|
||||||
|
|
||||||
if (m_pPlayer->pev->fov != DEFAULT_FOV)
|
if (m_pPlayer->pev->fov != DEFAULT_FOV)
|
||||||
@ -194,7 +189,7 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
|
|||||||
115,
|
115,
|
||||||
0.99,
|
0.99,
|
||||||
m_pPlayer->pev,
|
m_pPlayer->pev,
|
||||||
true,
|
true, // TODO: why awp is have bPistol set true?
|
||||||
m_pPlayer->random_seed
|
m_pPlayer->random_seed
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -228,7 +223,7 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
|
|||||||
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
|
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 2.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;
|
||||||
m_pPlayer->pev->punchangle.x -= 2;
|
m_pPlayer->pev->punchangle.x -= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,9 +259,9 @@ void CAWP::__MAKE_VHOOK(WeaponIdle)(void)
|
|||||||
ResetEmptySound();
|
ResetEmptySound();
|
||||||
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
|
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
|
||||||
|
|
||||||
if (m_flTimeWeaponIdle <= WEAPON_TIMEBASED && m_iClip)
|
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase() && m_iClip)
|
||||||
{
|
{
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 60;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 60;
|
||||||
SendWeaponAnim(AWP_IDLE, UseDecrement() != FALSE);
|
SendWeaponAnim(AWP_IDLE, UseDecrement() != FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,102 +1,401 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
#define C4_MAX_AMMO 1
|
||||||
|
#define C4_MAX_SPEED 250.0
|
||||||
|
#define C4_ARMING_ON_TIME 3.0
|
||||||
|
|
||||||
|
enum c4_e
|
||||||
|
{
|
||||||
|
C4_IDLE1,
|
||||||
|
C4_DRAW,
|
||||||
|
C4_DROP,
|
||||||
|
C4_ARM
|
||||||
|
};
|
||||||
|
|
||||||
/* <246a03> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:48 */
|
/* <246a03> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:48 */
|
||||||
LINK_ENTITY_TO_CLASS(weapon_c4, CC4);
|
LINK_ENTITY_TO_CLASS(weapon_c4, CC4);
|
||||||
|
|
||||||
/* <2469b9> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:50 */
|
/* <2469b9> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:50 */
|
||||||
NOBODY void CC4::Spawn(void)
|
void CC4::__MAKE_VHOOK(Spawn)(void)
|
||||||
{
|
{
|
||||||
// Spawn(CC4 *const this); // 50
|
SET_MODEL(edict(), "models/w_backpack.mdl");
|
||||||
|
|
||||||
|
pev->frame = 0;
|
||||||
|
pev->body = 3;
|
||||||
|
pev->sequence = 0;
|
||||||
|
pev->framerate = 0;
|
||||||
|
|
||||||
|
m_iId = WEAPON_C4;
|
||||||
|
m_iDefaultAmmo = C4_DEFAULT_GIVE;
|
||||||
|
m_bStartedArming = false;
|
||||||
|
m_fArmedTime = 0;
|
||||||
|
|
||||||
|
if (!FStringNull(pev->targetname))
|
||||||
|
{
|
||||||
|
pev->effects |= EF_NODRAW;
|
||||||
|
DROP_TO_FLOOR(edict());
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FallInit();
|
||||||
|
SetThink(&CBasePlayerItem::FallThink);
|
||||||
|
pev->nextthink = UTIL_WeaponTimeBase() + 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <246418> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:80 */
|
/* <246418> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:80 */
|
||||||
NOBODY void CC4::Precache(void)
|
void CC4::__MAKE_VHOOK(Precache)(void)
|
||||||
{
|
{
|
||||||
|
PRECACHE_MODEL("models/v_c4.mdl");
|
||||||
|
PRECACHE_MODEL("models/w_backpack.mdl");
|
||||||
|
|
||||||
|
PRECACHE_SOUND("weapons/c4_click.wav");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <24643f> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:88 */
|
/* <24643f> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:88 */
|
||||||
NOBODY int CC4::GetItemInfo(ItemInfo *p)
|
int CC4::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
|
||||||
{
|
{
|
||||||
|
p->pszName = STRING(pev->classname);
|
||||||
|
p->pszAmmo1 = "C4";
|
||||||
|
p->iMaxAmmo1 = C4_MAX_AMMO;
|
||||||
|
p->pszAmmo2 = NULL;
|
||||||
|
p->iMaxAmmo2 = -1;
|
||||||
|
p->iMaxClip = WEAPON_NOCLIP;
|
||||||
|
p->iSlot = 4;
|
||||||
|
p->iPosition = 3;
|
||||||
|
p->iId = m_iId = WEAPON_C4;
|
||||||
|
p->iWeight = C4_WEIGHT;
|
||||||
|
p->iFlags = (ITEM_FLAG_LIMITINWORLD | ITEM_FLAG_EXHAUSTIBLE);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2466d5> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:105 */
|
/* <2466d5> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:105 */
|
||||||
NOBODY BOOL CC4::Deploy(void)
|
BOOL CC4::__MAKE_VHOOK(Deploy)(void)
|
||||||
{
|
{
|
||||||
|
pev->body = 0;
|
||||||
|
|
||||||
|
m_bStartedArming = false;
|
||||||
|
m_fArmedTime = 0;
|
||||||
|
|
||||||
|
if (m_pPlayer->HasShield())
|
||||||
|
{
|
||||||
|
m_bHasShield = true;
|
||||||
|
m_pPlayer->pev->gamestate = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DefaultDeploy("models/v_c4.mdl", "models/p_c4.mdl", C4_DRAW, "c4", UseDecrement() != FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2466fc> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:123 */
|
/* <2466fc> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:123 */
|
||||||
NOBODY void CC4::Holster(int skiplocal)
|
void CC4::__MAKE_VHOOK(Holster)(int skiplocal)
|
||||||
{
|
{
|
||||||
// Holster(CC4 *const this,
|
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
|
||||||
// int skiplocal); // 123
|
m_bStartedArming = false;
|
||||||
|
|
||||||
|
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
|
||||||
|
{
|
||||||
|
m_pPlayer->pev->weapons &= ~(1 << WEAPON_C4);
|
||||||
|
DestroyItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_bHasShield)
|
||||||
|
{
|
||||||
|
m_pPlayer->pev->gamestate = 0;
|
||||||
|
m_bHasShield = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2464e8> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:152 */
|
/* <2464e8> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:152 */
|
||||||
NOBODY void CC4::PrimaryAttack(void)
|
void CC4::__MAKE_VHOOK(PrimaryAttack)(void)
|
||||||
{
|
{
|
||||||
// {
|
BOOL PlaceBomb;
|
||||||
// BOOL PlaceBomb; // 154
|
int inBombZone, onGround;
|
||||||
// class CGrenade *pBomb; // 155
|
|
||||||
// int onGround; // 161
|
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
|
||||||
// int inBombZone; // 164
|
{
|
||||||
// {
|
return;
|
||||||
// class CBaseEntity *pEntity; // 288
|
}
|
||||||
// class CBasePlayer *pTempPlayer; // 289
|
|
||||||
// Vector(Vector *const this,
|
inBombZone = (m_pPlayer->m_signals.GetState() & SIGNAL_BOMB) == SIGNAL_BOMB;
|
||||||
// float X,
|
onGround = (m_pPlayer->pev->flags & FL_ONGROUND) == FL_ONGROUND;
|
||||||
// float Y,
|
PlaceBomb = (onGround && inBombZone);
|
||||||
// float Z); // 277
|
|
||||||
// Vector(Vector *const this,
|
if (!m_bStartedArming)
|
||||||
// const Vector &v); // 277
|
{
|
||||||
// MESSAGE_BEGIN(int msg_dest,
|
if (!inBombZone)
|
||||||
// int msg_type,
|
{
|
||||||
// const float *pOrigin,
|
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_At_Bomb_Spot");
|
||||||
// edict_t *ed); // 280
|
m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
|
||||||
// edict(CBaseEntity *const this); // 283
|
return;
|
||||||
// ENTINDEX(edict_t *pEdict); // 283
|
}
|
||||||
// MESSAGE_BEGIN(int msg_dest,
|
|
||||||
// int msg_type,
|
if (!onGround)
|
||||||
// const float *pOrigin,
|
{
|
||||||
// edict_t *ed); // 293
|
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground");
|
||||||
// edict(CBaseEntity *const this); // 315
|
m_flNextPrimaryAttack = GetNextAttackDelay(1);
|
||||||
// EMIT_SOUND(edict_t *entity,
|
return;
|
||||||
// int channel,
|
}
|
||||||
// const char *sample,
|
|
||||||
// float volume,
|
m_bStartedArming = true;
|
||||||
// float attenuation); // 319
|
m_bBombPlacedAnimation = false;
|
||||||
// edict(CBaseEntity *const this); // 315
|
m_fArmedTime = gpGlobals->time + C4_ARMING_ON_TIME;
|
||||||
// }
|
|
||||||
// }
|
SendWeaponAnim(C4_ARM, UseDecrement() != FALSE);
|
||||||
|
|
||||||
|
SET_CLIENT_MAXSPEED(m_pPlayer->edict(), 1.0);
|
||||||
|
|
||||||
|
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
|
||||||
|
m_pPlayer->SetProgressBarTime(C4_ARMING_ON_TIME);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (PlaceBomb)
|
||||||
|
{
|
||||||
|
CBaseEntity *pEntity = NULL;
|
||||||
|
CBasePlayer *pTempPlayer = NULL;
|
||||||
|
|
||||||
|
if (m_fArmedTime <= gpGlobals->time)
|
||||||
|
{
|
||||||
|
if (m_bStartedArming)
|
||||||
|
{
|
||||||
|
m_bStartedArming = false;
|
||||||
|
m_fArmedTime = 0;
|
||||||
|
|
||||||
|
Broadcast("BOMBPL");
|
||||||
|
m_pPlayer->m_bHasC4 = false;
|
||||||
|
|
||||||
|
if (pev->speed != 0 && g_pGameRules != NULL)
|
||||||
|
{
|
||||||
|
g_pGameRules->m_iC4Timer = (int)pev->speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
CGrenade *pBomb = CGrenade::ShootSatchelCharge(m_pPlayer->pev, m_pPlayer->pev->origin, Vector(0, 0, 0));
|
||||||
|
|
||||||
|
MESSAGE_BEGIN(MSG_SPEC, SVC_DIRECTOR);
|
||||||
|
WRITE_BYTE(9);
|
||||||
|
WRITE_BYTE(DRC_CMD_EVENT);
|
||||||
|
WRITE_SHORT(m_pPlayer->entindex());
|
||||||
|
WRITE_SHORT(0);
|
||||||
|
WRITE_LONG(DRC_FLAG_FACEPLAYER | 11);
|
||||||
|
MESSAGE_END();
|
||||||
|
|
||||||
|
MESSAGE_BEGIN(MSG_ALL, gmsgBombDrop);
|
||||||
|
WRITE_COORD(pBomb->pev->origin.x);
|
||||||
|
WRITE_COORD(pBomb->pev->origin.y);
|
||||||
|
WRITE_COORD(pBomb->pev->origin.z);
|
||||||
|
WRITE_BYTE(1);
|
||||||
|
MESSAGE_END();
|
||||||
|
|
||||||
|
UTIL_ClientPrintAll(HUD_PRINTCENTER, "#Bomb_Planted");
|
||||||
|
|
||||||
|
TheBots->OnEvent(EVENT_BOMB_PLANTED, m_pPlayer, pBomb);
|
||||||
|
|
||||||
|
if (g_pGameRules->IsCareer() && !m_pPlayer->IsBot())
|
||||||
|
{
|
||||||
|
TheCareerTasks->HandleEvent(EVENT_BOMB_PLANTED, m_pPlayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
UTIL_LogPrintf
|
||||||
|
(
|
||||||
|
"\"%s<%i><%s><TERRORIST>\" triggered \"Planted_The_Bomb\"\n",
|
||||||
|
STRING(m_pPlayer->pev->netname),
|
||||||
|
GETPLAYERUSERID(m_pPlayer->edict()),
|
||||||
|
GETPLAYERAUTHID(m_pPlayer->edict())
|
||||||
|
);
|
||||||
|
|
||||||
|
g_pGameRules->m_bBombDropped = FALSE;
|
||||||
|
EMIT_SOUND(edict(), CHAN_WEAPON, "weapons/c4_plant.wav", VOL_NORM, ATTN_NORM);
|
||||||
|
|
||||||
|
m_pPlayer->pev->body = 0;
|
||||||
|
m_pPlayer->ResetMaxSpeed();
|
||||||
|
m_pPlayer->SetBombIcon(FALSE);
|
||||||
|
|
||||||
|
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
|
||||||
|
|
||||||
|
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
|
||||||
|
{
|
||||||
|
RetireWeapon();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m_fArmedTime - 0.75 <= gpGlobals->time && !m_bBombPlacedAnimation)
|
||||||
|
{
|
||||||
|
m_bBombPlacedAnimation = true;
|
||||||
|
|
||||||
|
SendWeaponAnim(C4_DROP, UseDecrement() != FALSE);
|
||||||
|
m_pPlayer->SetAnimation(PLAYER_HOLDBOMB);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (inBombZone)
|
||||||
|
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground");
|
||||||
|
else
|
||||||
|
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Arming_Cancelled");
|
||||||
|
|
||||||
|
m_bStartedArming = false;
|
||||||
|
m_flNextPrimaryAttack = GetNextAttackDelay(1.5);
|
||||||
|
|
||||||
|
m_pPlayer->ResetMaxSpeed();
|
||||||
|
m_pPlayer->SetProgressBarTime(0);
|
||||||
|
m_pPlayer->SetAnimation(PLAYER_HOLDBOMB);
|
||||||
|
|
||||||
|
SendWeaponAnim(m_bBombPlacedAnimation ? C4_DRAW : C4_IDLE1, UseDecrement() != FALSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_flNextPrimaryAttack = GetNextAttackDelay(0.3);
|
||||||
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2464c1> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:358 */
|
/* <2464c1> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:358 */
|
||||||
NOBODY void CC4::WeaponIdle(void)
|
void CC4::__MAKE_VHOOK(WeaponIdle)(void)
|
||||||
{
|
{
|
||||||
}
|
if (m_bStartedArming)
|
||||||
|
{
|
||||||
|
m_bStartedArming = false;
|
||||||
|
|
||||||
/* <24674f> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:419 */
|
m_pPlayer->ResetMaxSpeed();
|
||||||
NOBODY void CC4::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
|
||||||
{
|
m_pPlayer->SetProgressBarTime(0);
|
||||||
// {
|
|
||||||
// class CBasePlayer *pPlayer; // 423
|
SendWeaponAnim(m_bBombPlacedAnimation ? C4_DRAW : C4_IDLE1, UseDecrement() != FALSE);
|
||||||
// edict_t *m_pentOldCurBombTarget; // 426
|
}
|
||||||
// class CGrenade *pC4; // 435
|
|
||||||
// }
|
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
|
||||||
// Use(CC4 *const this,
|
{
|
||||||
// class CBaseEntity *pActivator,
|
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
|
||||||
// class CBaseEntity *pCaller,
|
{
|
||||||
// USE_TYPE useType,
|
RetireWeapon();
|
||||||
// float value); // 419
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SendWeaponAnim(C4_DRAW, UseDecrement() != FALSE);
|
||||||
|
SendWeaponAnim(C4_IDLE1, UseDecrement() != FALSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2468b7> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:399 */
|
/* <2468b7> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:399 */
|
||||||
NOBODY void CC4::KeyValue(KeyValueData *pkvd)
|
void CC4::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
// FStrEq(const char *sz1,
|
if (FStrEq(pkvd->szKeyName, "detonatedelay"))
|
||||||
// const char *sz2); // 401
|
{
|
||||||
// FStrEq(const char *sz1,
|
pev->speed = Q_atof(pkvd->szValue);
|
||||||
// const char *sz2); // 406
|
pkvd->fHandled = TRUE;
|
||||||
// KeyValue(CC4 *const this,
|
}
|
||||||
// KeyValueData *pkvd); // 399
|
else if (FStrEq(pkvd->szKeyName, "detonatetarget"))
|
||||||
// atof(const char *__nptr); // 403
|
{
|
||||||
|
pev->noise1 = ALLOC_STRING(pkvd->szValue);
|
||||||
|
pkvd->fHandled = TRUE;
|
||||||
|
}
|
||||||
|
else if (FStrEq(pkvd->szKeyName, "defusetarget"))
|
||||||
|
{
|
||||||
|
pev->target = ALLOC_STRING(pkvd->szValue);
|
||||||
|
pkvd->fHandled = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CBaseEntity::KeyValue(pkvd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* <24674f> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:419 */
|
||||||
|
void CC4::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
|
{
|
||||||
|
if (m_pPlayer != NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CBasePlayer *pPlayer = reinterpret_cast<CBasePlayer *>(UTIL_PlayerByIndex(1));
|
||||||
|
|
||||||
|
if (pPlayer != NULL)
|
||||||
|
{
|
||||||
|
edict_t *m_pentOldCurBombTarget = pPlayer->m_pentCurBombTarget;
|
||||||
|
pPlayer->m_pentCurBombTarget = NULL;
|
||||||
|
|
||||||
|
if (pev->speed != 0 && g_pGameRules)
|
||||||
|
{
|
||||||
|
g_pGameRules->m_iC4Timer = (int)pev->speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
EMIT_SOUND(edict(), CHAN_WEAPON, "weapons/c4_plant.wav", VOL_NORM, ATTN_NORM);
|
||||||
|
|
||||||
|
CGrenade::ShootSatchelCharge(m_pPlayer->pev, m_pPlayer->pev->origin, Vector(0, 0, 0));
|
||||||
|
|
||||||
|
CGrenade *pC4 = NULL;
|
||||||
|
while ((pC4 = (CGrenade *)UTIL_FindEntityByClassname(pC4, "grenade")) != NULL)
|
||||||
|
{
|
||||||
|
if (pC4->m_bIsC4 && pC4->m_flNextFreq == gpGlobals->time)
|
||||||
|
{
|
||||||
|
pC4->pev->target = pev->target;
|
||||||
|
pC4->pev->noise1 = pev->noise1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pPlayer->m_pentCurBombTarget = m_pentOldCurBombTarget;
|
||||||
|
SUB_Remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* <2463cc> ../cstrike/dlls/weapons.h:732 */
|
||||||
|
float CC4::GetMaxSpeed(void)
|
||||||
|
{
|
||||||
|
return C4_MAX_SPEED;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HOOK_GAMEDLL
|
||||||
|
|
||||||
|
void CC4::Spawn(void)
|
||||||
|
{
|
||||||
|
Spawn_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CC4::Precache(void)
|
||||||
|
{
|
||||||
|
Precache_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CC4::KeyValue(KeyValueData *pkvd)
|
||||||
|
{
|
||||||
|
KeyValue_(pkvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CC4::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
|
{
|
||||||
|
Use_(pActivator, pCaller, useType, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CC4::GetItemInfo(ItemInfo *p)
|
||||||
|
{
|
||||||
|
return GetItemInfo_(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CC4::Deploy(void)
|
||||||
|
{
|
||||||
|
return Deploy_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CC4::Holster(int skiplocal)
|
||||||
|
{
|
||||||
|
Holster_(skiplocal);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CC4::PrimaryAttack(void)
|
||||||
|
{
|
||||||
|
PrimaryAttack_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CC4::WeaponIdle(void)
|
||||||
|
{
|
||||||
|
WeaponIdle_();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // HOOK_GAMEDLL
|
||||||
|
@ -1,73 +1,422 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
#define GLOCK18_MAX_SPEED 250
|
||||||
|
#define GLOCK18_RELOAD_TIME 2.2
|
||||||
|
|
||||||
|
enum glock18_e
|
||||||
|
{
|
||||||
|
GLOCK18_IDLE1,
|
||||||
|
GLOCK18_IDLE2,
|
||||||
|
GLOCK18_IDLE3,
|
||||||
|
GLOCK18_SHOOT,
|
||||||
|
GLOCK18_SHOOT2,
|
||||||
|
GLOCK18_SHOOT3,
|
||||||
|
GLOCK18_SHOOT_EMPTY,
|
||||||
|
GLOCK18_RELOAD,
|
||||||
|
GLOCK18_DRAW,
|
||||||
|
GLOCK18_HOLSTER,
|
||||||
|
GLOCK18_ADD_SILENCER,
|
||||||
|
GLOCK18_DRAW2,
|
||||||
|
GLOCK18_RELOAD2
|
||||||
|
};
|
||||||
|
|
||||||
|
enum glock18_shield_e
|
||||||
|
{
|
||||||
|
GLOCK18_SHIELD_IDLE1,
|
||||||
|
GLOCK18_SHIELD_SHOOT,
|
||||||
|
GLOCK18_SHIELD_SHOOT2,
|
||||||
|
GLOCK18_SHIELD_SHOOT_EMPTY,
|
||||||
|
GLOCK18_SHIELD_RELOAD,
|
||||||
|
GLOCK18_SHIELD_DRAW,
|
||||||
|
GLOCK18_SHIELD_IDLE,
|
||||||
|
GLOCK18_SHIELD_UP,
|
||||||
|
GLOCK18_SHIELD_DOWN
|
||||||
|
};
|
||||||
|
|
||||||
/* <2662bb> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:68 */
|
/* <2662bb> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:68 */
|
||||||
LINK_ENTITY_TO_CLASS(weapon_glock18, CGLOCK18);
|
LINK_ENTITY_TO_CLASS(weapon_glock18, CGLOCK18);
|
||||||
|
|
||||||
/* <26611a> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:70 */
|
/* <26611a> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:70 */
|
||||||
NOBODY void CGLOCK18::Spawn(void)
|
void CGLOCK18::__MAKE_VHOOK(Spawn)(void)
|
||||||
{
|
{
|
||||||
|
Precache();
|
||||||
|
m_iId = WEAPON_GLOCK18;
|
||||||
|
SET_MODEL(edict(), "models/w_glock18.mdl");
|
||||||
|
|
||||||
|
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
|
||||||
|
m_iDefaultAmmo = GLOCK18_DEFAULT_GIVE;
|
||||||
|
m_bBurstFire = false;
|
||||||
|
|
||||||
|
m_iGlock18ShotsFired = 0;
|
||||||
|
m_flGlock18Shoot = 0;
|
||||||
|
m_flAccuracy = 0.9;
|
||||||
|
|
||||||
|
FallInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2660c0> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:88 */
|
/* <2660c0> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:88 */
|
||||||
NOBODY void CGLOCK18::Precache(void)
|
void CGLOCK18::__MAKE_VHOOK(Precache)(void)
|
||||||
{
|
{
|
||||||
|
PRECACHE_MODEL("models/v_glock18.mdl");
|
||||||
|
PRECACHE_MODEL("models/w_glock18.mdl");
|
||||||
|
PRECACHE_MODEL("models/shield/v_shield_glock18.mdl");
|
||||||
|
|
||||||
|
PRECACHE_SOUND("weapons/glock18-1.wav");
|
||||||
|
PRECACHE_SOUND("weapons/glock18-2.wav");
|
||||||
|
PRECACHE_SOUND("weapons/clipout1.wav");
|
||||||
|
PRECACHE_SOUND("weapons/clipin1.wav");
|
||||||
|
PRECACHE_SOUND("weapons/sliderelease1.wav");
|
||||||
|
PRECACHE_SOUND("weapons/slideback1.wav");
|
||||||
|
PRECACHE_SOUND("weapons/357_cock1.wav");
|
||||||
|
PRECACHE_SOUND("weapons/de_clipin.wav");
|
||||||
|
PRECACHE_SOUND("weapons/de_clipout.wav");
|
||||||
|
|
||||||
|
m_iShellId = m_iShell = PRECACHE_MODEL("models/pshell.mdl");
|
||||||
|
m_usFireGlock18 = PRECACHE_EVENT(1, "events/glock18.sc");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2660e7> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:112 */
|
/* <2660e7> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:112 */
|
||||||
NOBODY int CGLOCK18::GetItemInfo(ItemInfo *p)
|
int CGLOCK18::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
|
||||||
{
|
{
|
||||||
|
p->pszName = STRING(pev->classname);
|
||||||
|
p->pszAmmo1 = "9mm";
|
||||||
|
p->iMaxAmmo1 = MAX_AMMO_9MM;
|
||||||
|
p->pszAmmo2 = NULL;
|
||||||
|
p->iMaxAmmo2 = -1;
|
||||||
|
p->iMaxClip = GLOCK18_MAX_CLIP;
|
||||||
|
p->iSlot = 1;
|
||||||
|
p->iPosition = 2;
|
||||||
|
p->iId = m_iId = WEAPON_GLOCK18;
|
||||||
|
p->iFlags = 0;
|
||||||
|
p->iWeight = GLOCK18_WEIGHT;
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <266281> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:129 */
|
/* <266281> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:129 */
|
||||||
NOBODY BOOL CGLOCK18::Deploy(void)
|
BOOL CGLOCK18::__MAKE_VHOOK(Deploy)(void)
|
||||||
{
|
{
|
||||||
// Deploy(CGLOCK18 *const this); // 129
|
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
|
||||||
|
|
||||||
|
m_bBurstFire = false;
|
||||||
|
m_iGlock18ShotsFired = 0;
|
||||||
|
m_flGlock18Shoot = 0;
|
||||||
|
m_flAccuracy = 0.9;
|
||||||
|
m_fMaxSpeed = GLOCK18_MAX_SPEED;
|
||||||
|
|
||||||
|
m_pPlayer->m_bShieldDrawn = false;
|
||||||
|
|
||||||
|
if (m_pPlayer->HasShield())
|
||||||
|
{
|
||||||
|
m_iWeaponState &= ~WPNSTATE_GLOCK18_BURST_MODE;
|
||||||
|
return DefaultDeploy("models/shield/v_shield_glock18.mdl", "models/shield/p_shield_glock18.mdl", GLOCK18_SHIELD_DRAW, "shieldgun", UseDecrement() != FALSE);
|
||||||
|
}
|
||||||
|
else if (RANDOM_LONG(0, 1))
|
||||||
|
{
|
||||||
|
return DefaultDeploy("models/v_glock18.mdl", "models/p_glock18.mdl", GLOCK18_DRAW, "onehanded", UseDecrement() != FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return DefaultDeploy("models/v_glock18.mdl", "models/p_glock18.mdl", GLOCK18_DRAW2, "onehanded", UseDecrement() != FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <266246> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:156 */
|
/* <266246> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:156 */
|
||||||
NOBODY void CGLOCK18::SecondaryAttack(void)
|
void CGLOCK18::__MAKE_VHOOK(SecondaryAttack)(void)
|
||||||
{
|
{
|
||||||
// SecondaryAttack(CGLOCK18 *const this); // 156
|
if (ShieldSecondaryFire(GLOCK18_SHIELD_UP, GLOCK18_SHIELD_DOWN))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_iWeaponState & WPNSTATE_GLOCK18_BURST_MODE)
|
||||||
|
{
|
||||||
|
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_SemiAuto");
|
||||||
|
m_iWeaponState &= ~WPNSTATE_GLOCK18_BURST_MODE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#Switch_To_BurstFire");
|
||||||
|
m_iWeaponState |= WPNSTATE_GLOCK18_BURST_MODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2664c3> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:175 */
|
/* <2664c3> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:175 */
|
||||||
NOBODY void CGLOCK18::PrimaryAttack(void)
|
void CGLOCK18::__MAKE_VHOOK(PrimaryAttack)(void)
|
||||||
{
|
{
|
||||||
// Length2D(const Vector *const this); // 181
|
if (m_iWeaponState & WPNSTATE_GLOCK18_BURST_MODE)
|
||||||
// Length2D(const Vector *const this); // 192
|
{
|
||||||
|
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
|
||||||
|
{
|
||||||
|
GLOCK18Fire(1.2 * (1 - m_flAccuracy), 0.5, TRUE);
|
||||||
|
}
|
||||||
|
else if (m_pPlayer->pev->velocity.Length2D() > 0)
|
||||||
|
{
|
||||||
|
GLOCK18Fire(0.185 * (1 - m_flAccuracy), 0.5, TRUE);
|
||||||
|
}
|
||||||
|
else if (m_pPlayer->pev->flags & FL_DUCKING)
|
||||||
|
{
|
||||||
|
GLOCK18Fire(0.095 * (1 - m_flAccuracy), 0.5, TRUE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GLOCK18Fire(0.3 * (1 - m_flAccuracy), 0.5, TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
|
||||||
|
{
|
||||||
|
GLOCK18Fire(1.0 * (1 - m_flAccuracy), 0.2, FALSE);
|
||||||
|
}
|
||||||
|
else if (m_pPlayer->pev->velocity.Length2D() > 0)
|
||||||
|
{
|
||||||
|
GLOCK18Fire(0.165 * (1 - m_flAccuracy), 0.2, FALSE);
|
||||||
|
}
|
||||||
|
else if (m_pPlayer->pev->flags & FL_DUCKING)
|
||||||
|
{
|
||||||
|
GLOCK18Fire(0.075 * (1 - m_flAccuracy), 0.2, FALSE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GLOCK18Fire(0.1 * (1 - m_flAccuracy), 0.2, FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <266385> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:201 */
|
/* <266385> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:201 */
|
||||||
NOBODY void CGLOCK18::GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst)
|
void CGLOCK18::GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst)
|
||||||
{
|
{
|
||||||
// {
|
Vector vecAiming, vecSrc, vecDir;
|
||||||
// Vector vecAiming; // 264
|
int flag;
|
||||||
// Vector vecSrc; // 266
|
|
||||||
// Vector vecDir; // 268
|
if (bFireBurst)
|
||||||
// int flag; // 272
|
{
|
||||||
// operator+(const Vector *const this,
|
m_iGlock18ShotsFired = 0;
|
||||||
// const Vector &v); // 257
|
}
|
||||||
// Vector(Vector *const this,
|
else
|
||||||
// const Vector &v); // 269
|
{
|
||||||
// Vector(Vector *const this,
|
m_iShotsFired++;
|
||||||
// const Vector &v); // 269
|
|
||||||
// }
|
if (m_iShotsFired > 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
flCycleTime -= 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_flLastFire)
|
||||||
|
{
|
||||||
|
m_flAccuracy -= (0.325 - (gpGlobals->time - m_flLastFire)) * 0.275;
|
||||||
|
|
||||||
|
if (m_flAccuracy > 0.9)
|
||||||
|
{
|
||||||
|
m_flAccuracy = 0.9;
|
||||||
|
}
|
||||||
|
else if (m_flAccuracy < 0.6)
|
||||||
|
{
|
||||||
|
m_flAccuracy = 0.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_flLastFire = gpGlobals->time;
|
||||||
|
|
||||||
|
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 = NORMAL_GUN_FLASH;
|
||||||
|
|
||||||
|
vecSrc = m_pPlayer->GetGunPosition();
|
||||||
|
vecDir = gpGlobals->v_forward;
|
||||||
|
|
||||||
|
vecAiming = m_pPlayer->FireBullets3
|
||||||
|
(
|
||||||
|
vecSrc,
|
||||||
|
vecDir,
|
||||||
|
flSpread,
|
||||||
|
8192,
|
||||||
|
1,
|
||||||
|
BULLET_PLAYER_9MM,
|
||||||
|
25,
|
||||||
|
0.75,
|
||||||
|
m_pPlayer->pev,
|
||||||
|
true,
|
||||||
|
m_pPlayer->random_seed
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef CLIENT_WEAPONS
|
||||||
|
flag = FEV_NOTHOST;
|
||||||
|
#else
|
||||||
|
flag = 0;
|
||||||
|
#endif // CLIENT_WEAPONS
|
||||||
|
|
||||||
|
PLAYBACK_EVENT_FULL
|
||||||
|
(
|
||||||
|
flag,
|
||||||
|
m_pPlayer->edict(),
|
||||||
|
m_usFireGlock18,
|
||||||
|
0,
|
||||||
|
(float *)&g_vecZero,
|
||||||
|
(float *)&g_vecZero,
|
||||||
|
vecAiming.x,
|
||||||
|
vecAiming.y,
|
||||||
|
(int)(m_pPlayer->pev->punchangle.x * 100),
|
||||||
|
(int)(m_pPlayer->pev->punchangle.y * 100),
|
||||||
|
m_iClip == 0,
|
||||||
|
FALSE
|
||||||
|
);
|
||||||
|
|
||||||
|
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
|
||||||
|
|
||||||
|
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
|
||||||
|
{
|
||||||
|
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.5;
|
||||||
|
|
||||||
|
if (bFireBurst)
|
||||||
|
{
|
||||||
|
m_iGlock18ShotsFired++;
|
||||||
|
m_flGlock18Shoot = gpGlobals->time + 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ResetPlayerShieldAnim();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <2661e8> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:307 */
|
/* <2661e8> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:307 */
|
||||||
NOBODY void CGLOCK18::Reload(void)
|
void CGLOCK18::__MAKE_VHOOK(Reload)(void)
|
||||||
{
|
{
|
||||||
// {
|
int iResult;
|
||||||
// int iResult; // 312
|
|
||||||
// }
|
if (m_pPlayer->ammo_9mm <= 0)
|
||||||
// Reload(CGLOCK18 *const this); // 307
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_pPlayer->HasShield())
|
||||||
|
iResult = GLOCK18_SHIELD_RELOAD;
|
||||||
|
else if (RANDOM_LONG(0, 1))
|
||||||
|
iResult = GLOCK18_RELOAD;
|
||||||
|
else
|
||||||
|
iResult = GLOCK18_RELOAD2;
|
||||||
|
|
||||||
|
if (DefaultReload(GLOCK18_MAX_CLIP, iResult, GLOCK18_RELOAD_TIME))
|
||||||
|
{
|
||||||
|
m_pPlayer->SetAnimation(PLAYER_RELOAD);
|
||||||
|
m_flAccuracy = 0.9;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <266190> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:329 */
|
/* <266190> ../cstrike/dlls/wpn_shared/wpn_glock18.cpp:329 */
|
||||||
NOBODY void CGLOCK18::WeaponIdle(void)
|
void CGLOCK18::__MAKE_VHOOK(WeaponIdle)(void)
|
||||||
{
|
{
|
||||||
// {
|
int iAnim;
|
||||||
// int iAnim; // 350
|
float flRand;
|
||||||
// float flRand; // 351
|
|
||||||
// }
|
ResetEmptySound();
|
||||||
|
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
|
||||||
|
|
||||||
|
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_pPlayer->HasShield())
|
||||||
|
{
|
||||||
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
|
||||||
|
|
||||||
|
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
|
||||||
|
{
|
||||||
|
SendWeaponAnim(GLOCK18_SHIELD_IDLE, UseDecrement() != FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (m_iClip)
|
||||||
|
{
|
||||||
|
flRand = RANDOM_FLOAT(0, 1);
|
||||||
|
|
||||||
|
if (flRand <= 0.3)
|
||||||
|
{
|
||||||
|
iAnim = GLOCK18_IDLE3;
|
||||||
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3.0625;
|
||||||
|
}
|
||||||
|
else if (flRand <= 0.6)
|
||||||
|
{
|
||||||
|
iAnim = GLOCK18_IDLE1;
|
||||||
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3.75;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iAnim = GLOCK18_IDLE2;
|
||||||
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
SendWeaponAnim(iAnim, UseDecrement() != FALSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HOOK_GAMEDLL
|
||||||
|
|
||||||
|
void CGLOCK18::Spawn(void)
|
||||||
|
{
|
||||||
|
Spawn_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGLOCK18::Precache(void)
|
||||||
|
{
|
||||||
|
Precache_();
|
||||||
|
}
|
||||||
|
|
||||||
|
int CGLOCK18::GetItemInfo(ItemInfo *p)
|
||||||
|
{
|
||||||
|
return GetItemInfo_(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CGLOCK18::Deploy(void)
|
||||||
|
{
|
||||||
|
return Deploy_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGLOCK18::PrimaryAttack(void)
|
||||||
|
{
|
||||||
|
PrimaryAttack_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGLOCK18::SecondaryAttack(void)
|
||||||
|
{
|
||||||
|
SecondaryAttack_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGLOCK18::Reload(void)
|
||||||
|
{
|
||||||
|
Reload_();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGLOCK18::WeaponIdle(void)
|
||||||
|
{
|
||||||
|
WeaponIdle_();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // HOOK_GAMEDLL
|
||||||
|
@ -76,7 +76,10 @@ int CKnife::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
|
|||||||
p->iSlot = 2;
|
p->iSlot = 2;
|
||||||
p->iPosition = 1;
|
p->iPosition = 1;
|
||||||
p->iId = WEAPON_KNIFE;
|
p->iId = WEAPON_KNIFE;
|
||||||
|
|
||||||
|
// TODO: it is not being used
|
||||||
//p->iFlags = 0;
|
//p->iFlags = 0;
|
||||||
|
|
||||||
p->iWeight = KNIFE_WEIGHT;
|
p->iWeight = KNIFE_WEIGHT;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -104,7 +107,7 @@ BOOL CKnife::__MAKE_VHOOK(Deploy)(void)
|
|||||||
/* <27052b> ../cstrike/dlls/wpn_shared/wpn_knife.cpp:119 */
|
/* <27052b> ../cstrike/dlls/wpn_shared/wpn_knife.cpp:119 */
|
||||||
void CKnife::__MAKE_VHOOK(Holster)(int skiplocal)
|
void CKnife::__MAKE_VHOOK(Holster)(int skiplocal)
|
||||||
{
|
{
|
||||||
m_pPlayer->m_flNextAttack = WEAPON_TIMEBASED + 0.5;
|
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <270d70> ../cstrike/dlls/wpn_shared/wpn_knife.cpp:124 */
|
/* <270d70> ../cstrike/dlls/wpn_shared/wpn_knife.cpp:124 */
|
||||||
@ -248,8 +251,8 @@ bool CKnife::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
|
|||||||
m_pPlayer->ResetMaxSpeed();
|
m_pPlayer->ResetMaxSpeed();
|
||||||
|
|
||||||
m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
|
m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 0.4;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4;
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 0.6;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.6;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -260,7 +263,7 @@ void CKnife::__MAKE_VHOOK(SecondaryAttack)(void)
|
|||||||
if (!ShieldSecondaryFire(KNIFE_SHIELD_UP, KNIFE_SHIELD_DOWN))
|
if (!ShieldSecondaryFire(KNIFE_SHIELD_UP, KNIFE_SHIELD_DOWN))
|
||||||
{
|
{
|
||||||
Stab(TRUE);
|
Stab(TRUE);
|
||||||
pev->nextthink = WEAPON_TIMEBASED + 0.35;
|
pev->nextthink = UTIL_WeaponTimeBase() + 0.35;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,14 +285,14 @@ void CKnife::__MAKE_VHOOK(WeaponIdle)(void)
|
|||||||
ResetEmptySound();
|
ResetEmptySound();
|
||||||
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
|
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
|
||||||
|
|
||||||
if (m_flTimeWeaponIdle > WEAPON_TIMEBASED)
|
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_pPlayer->m_bShieldDrawn)
|
if (!m_pPlayer->m_bShieldDrawn)
|
||||||
{
|
{
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 20.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
|
||||||
SendWeaponAnim(KNIFE_IDLE, UseDecrement() != FALSE);
|
SendWeaponAnim(KNIFE_IDLE, UseDecrement() != FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -338,17 +341,17 @@ int CKnife::Swing(int fFirst)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_flNextPrimaryAttack = GetNextAttackDelay(0.35);
|
m_flNextPrimaryAttack = GetNextAttackDelay(0.35);
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 0.5;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendWeaponAnim(KNIFE_SHIELD_ATTACKHIT, UseDecrement() != FALSE);
|
SendWeaponAnim(KNIFE_SHIELD_ATTACKHIT, UseDecrement() != FALSE);
|
||||||
|
|
||||||
m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
|
m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 1.2;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 2.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;
|
||||||
|
|
||||||
if (RANDOM_LONG(0, 1))
|
if (RANDOM_LONG(0, 1))
|
||||||
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, 94);
|
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, 94);
|
||||||
@ -371,17 +374,17 @@ int CKnife::Swing(int fFirst)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
|
m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 0.5;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SendWeaponAnim(KNIFE_SHIELD_ATTACKHIT, UseDecrement() != FALSE);
|
SendWeaponAnim(KNIFE_SHIELD_ATTACKHIT, UseDecrement() != FALSE);
|
||||||
|
|
||||||
m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
|
m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 1.2;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 2.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;
|
||||||
|
|
||||||
CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);
|
CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);
|
||||||
SetPlayerShieldAnim();
|
SetPlayerShieldAnim();
|
||||||
@ -389,7 +392,7 @@ int CKnife::Swing(int fFirst)
|
|||||||
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
|
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
|
||||||
ClearMultiDamage();
|
ClearMultiDamage();
|
||||||
|
|
||||||
if (m_flNextPrimaryAttack + 0.4 < WEAPON_TIMEBASED)
|
if (m_flNextPrimaryAttack + 0.4 < UTIL_WeaponTimeBase())
|
||||||
pEntity->TraceAttack(m_pPlayer->pev, 20, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET));
|
pEntity->TraceAttack(m_pPlayer->pev, 20, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET));
|
||||||
else
|
else
|
||||||
pEntity->TraceAttack(m_pPlayer->pev, 15, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET));
|
pEntity->TraceAttack(m_pPlayer->pev, 15, gpGlobals->v_forward, &tr, (DMG_NEVERGIB | DMG_BULLET));
|
||||||
@ -435,7 +438,7 @@ int CKnife::Swing(int fFirst)
|
|||||||
m_trHit = tr;
|
m_trHit = tr;
|
||||||
SetThink(&CKnife::Smack);
|
SetThink(&CKnife::Smack);
|
||||||
|
|
||||||
pev->nextthink = 0.2;
|
pev->nextthink = UTIL_WeaponTimeBase() + 0.2;
|
||||||
m_pPlayer->m_iWeaponVolume = (int)(flVol * KNIFE_WALLHIT_VOLUME);
|
m_pPlayer->m_iWeaponVolume = (int)(flVol * KNIFE_WALLHIT_VOLUME);
|
||||||
|
|
||||||
ResetPlayerShieldAnim();
|
ResetPlayerShieldAnim();
|
||||||
@ -488,7 +491,7 @@ int CKnife::Stab(int fFirst)
|
|||||||
SendWeaponAnim(KNIFE_STABMISS, UseDecrement() != FALSE);
|
SendWeaponAnim(KNIFE_STABMISS, UseDecrement() != FALSE);
|
||||||
|
|
||||||
m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
|
m_flNextPrimaryAttack = GetNextAttackDelay(1.0);
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 1.0;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0;
|
||||||
|
|
||||||
if (RANDOM_LONG(0, 1))
|
if (RANDOM_LONG(0, 1))
|
||||||
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, 94);
|
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_WEAPON, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, 94);
|
||||||
@ -505,7 +508,7 @@ int CKnife::Stab(int fFirst)
|
|||||||
SendWeaponAnim(KNIFE_STABHIT, UseDecrement() != FALSE);
|
SendWeaponAnim(KNIFE_STABHIT, UseDecrement() != FALSE);
|
||||||
|
|
||||||
m_flNextPrimaryAttack = GetNextAttackDelay(1.1);
|
m_flNextPrimaryAttack = GetNextAttackDelay(1.1);
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 1.1;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.1;
|
||||||
|
|
||||||
CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);
|
CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);
|
||||||
|
|
||||||
@ -571,7 +574,7 @@ int CKnife::Stab(int fFirst)
|
|||||||
m_pPlayer->m_iWeaponVolume = (int)(flVol * KNIFE_WALLHIT_VOLUME);
|
m_pPlayer->m_iWeaponVolume = (int)(flVol * KNIFE_WALLHIT_VOLUME);
|
||||||
|
|
||||||
SetThink(&CKnife::Smack);
|
SetThink(&CKnife::Smack);
|
||||||
pev->nextthink = 0.2;
|
pev->nextthink = UTIL_WeaponTimeBase() + 0.2;
|
||||||
|
|
||||||
ResetPlayerShieldAnim();
|
ResetPlayerShieldAnim();
|
||||||
}
|
}
|
||||||
|
@ -58,10 +58,7 @@ int CP90::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
|
|||||||
p->iMaxClip = P90_MAX_CLIP;
|
p->iMaxClip = P90_MAX_CLIP;
|
||||||
p->iSlot = 0;
|
p->iSlot = 0;
|
||||||
p->iPosition = 8;
|
p->iPosition = 8;
|
||||||
|
p->iId = m_iId = WEAPON_P90;
|
||||||
m_iId = WEAPON_P90;
|
|
||||||
p->iId = WEAPON_P90;
|
|
||||||
|
|
||||||
p->iFlags = 0;
|
p->iFlags = 0;
|
||||||
p->iWeight = P90_WEIGHT;
|
p->iWeight = P90_WEIGHT;
|
||||||
|
|
||||||
@ -100,9 +97,7 @@ void CP90::__MAKE_VHOOK(PrimaryAttack)(void)
|
|||||||
/* <296647> ../cstrike/dlls/wpn_shared/wpn_p90.cpp:120 */
|
/* <296647> ../cstrike/dlls/wpn_shared/wpn_p90.cpp:120 */
|
||||||
void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
|
void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
|
||||||
{
|
{
|
||||||
Vector vecAiming;
|
Vector vecAiming, vecSrc, vecDir;
|
||||||
Vector vecSrc;
|
|
||||||
Vector vecDir;
|
|
||||||
int flag;
|
int flag;
|
||||||
|
|
||||||
m_bDelayFire = true;
|
m_bDelayFire = true;
|
||||||
@ -186,7 +181,7 @@ void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
|
|||||||
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
|
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 2.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;
|
||||||
|
|
||||||
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
|
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
|
||||||
{
|
{
|
||||||
@ -229,12 +224,12 @@ void CP90::__MAKE_VHOOK(WeaponIdle)(void)
|
|||||||
ResetEmptySound();
|
ResetEmptySound();
|
||||||
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
|
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
|
||||||
|
|
||||||
if (m_flTimeWeaponIdle > WEAPON_TIMEBASED)
|
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 20.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
|
||||||
SendWeaponAnim(P90_IDLE1, UseDecrement() != FALSE);
|
SendWeaponAnim(P90_IDLE1, UseDecrement() != FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,19 +77,16 @@ void CUSP::__MAKE_VHOOK(Precache)(void)
|
|||||||
/* <2bacfb> ../cstrike/dlls/wpn_shared/wpn_usp.cpp:107 */
|
/* <2bacfb> ../cstrike/dlls/wpn_shared/wpn_usp.cpp:107 */
|
||||||
int CUSP::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
|
int CUSP::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
|
||||||
{
|
{
|
||||||
|
p->pszName = STRING(pev->classname);
|
||||||
p->pszAmmo1 = "45ACP";
|
p->pszAmmo1 = "45ACP";
|
||||||
p->iMaxAmmo1 = MAX_AMMO_45ACP;
|
p->iMaxAmmo1 = MAX_AMMO_45ACP;
|
||||||
p->pszName = STRING(pev->classname);
|
|
||||||
p->pszAmmo2 = 0;
|
p->pszAmmo2 = 0;
|
||||||
p->iMaxAmmo2 = -1;
|
p->iMaxAmmo2 = -1;
|
||||||
p->iMaxClip = USP_MAX_CLIP;
|
p->iMaxClip = USP_MAX_CLIP;
|
||||||
p->iSlot = 1;
|
p->iSlot = 1;
|
||||||
p->iPosition = 4;
|
p->iPosition = 4;
|
||||||
p->iFlags = 0;
|
p->iFlags = 0;
|
||||||
|
p->iId = m_iId = WEAPON_USP;
|
||||||
m_iId = WEAPON_USP;
|
|
||||||
p->iId = WEAPON_USP;
|
|
||||||
|
|
||||||
p->iWeight = USP_WEIGHT;
|
p->iWeight = USP_WEIGHT;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -139,9 +136,8 @@ void CUSP::__MAKE_VHOOK(SecondaryAttack)(void)
|
|||||||
Q_strcpy(m_pPlayer->m_szAnimExtention, "onehanded");
|
Q_strcpy(m_pPlayer->m_szAnimExtention, "onehanded");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_flNextSecondaryAttack = WEAPON_TIMEBASED + 3.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3.0;
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 3.0;
|
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 3.0;
|
||||||
|
|
||||||
m_flNextPrimaryAttack = GetNextAttackDelay(3.0);
|
m_flNextPrimaryAttack = GetNextAttackDelay(3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,9 +189,7 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
|
|||||||
{
|
{
|
||||||
int flag;
|
int flag;
|
||||||
int iDamage;
|
int iDamage;
|
||||||
Vector vecAiming;
|
Vector vecAiming, vecSrc, vecDir;
|
||||||
Vector vecSrc;
|
|
||||||
Vector vecDir;
|
|
||||||
|
|
||||||
flCycleTime -= 0.075;
|
flCycleTime -= 0.075;
|
||||||
|
|
||||||
@ -300,7 +294,7 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
|
|||||||
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, FALSE);
|
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 2;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2;
|
||||||
m_pPlayer->pev->punchangle.x -= 2;
|
m_pPlayer->pev->punchangle.x -= 2;
|
||||||
ResetPlayerShieldAnim();
|
ResetPlayerShieldAnim();
|
||||||
}
|
}
|
||||||
@ -345,7 +339,7 @@ void CUSP::__MAKE_VHOOK(WeaponIdle)(void)
|
|||||||
|
|
||||||
if (m_pPlayer->HasShield())
|
if (m_pPlayer->HasShield())
|
||||||
{
|
{
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 20.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
|
||||||
|
|
||||||
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
|
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
|
||||||
{
|
{
|
||||||
@ -356,7 +350,7 @@ void CUSP::__MAKE_VHOOK(WeaponIdle)(void)
|
|||||||
{
|
{
|
||||||
int iAnim = (~m_iWeaponState & WPNSTATE_USP_SILENCED) ? USP_UNSIL_IDLE: USP_IDLE;
|
int iAnim = (~m_iWeaponState & WPNSTATE_USP_SILENCED) ? USP_UNSIL_IDLE: USP_IDLE;
|
||||||
|
|
||||||
m_flTimeWeaponIdle = WEAPON_TIMEBASED + 60.0;
|
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 60.0;
|
||||||
SendWeaponAnim(iAnim, UseDecrement());
|
SendWeaponAnim(iAnim, UseDecrement());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3104,20 +3104,20 @@ FunctionHook g_FunctionHooks[] =
|
|||||||
{ 0x01D02BF0, "_ZN4CAWP7AWPFireEffi", mfunc_ptr_cast(&CAWP::AWPFire) },
|
{ 0x01D02BF0, "_ZN4CAWP7AWPFireEffi", mfunc_ptr_cast(&CAWP::AWPFire) },
|
||||||
//CC4
|
//CC4
|
||||||
//virtual func
|
//virtual func
|
||||||
//{ 0x0, "_ZN3CC45SpawnEv", mfunc_ptr_cast(&CC4::Spawn) },
|
{ 0x01D03030, "_ZN3CC45SpawnEv", mfunc_ptr_cast(&CC4::Spawn_) },
|
||||||
//{ 0x0, "_ZN3CC48PrecacheEv", mfunc_ptr_cast(&CC4::Precache) },
|
{ 0x01D030F0, "_ZN3CC48PrecacheEv", mfunc_ptr_cast(&CC4::Precache_) },
|
||||||
//{ 0x0, "_ZN3CC48KeyValueEP14KeyValueData_s", mfunc_ptr_cast(&CC4::KeyValue) },
|
{ 0x01D03840, "_ZN3CC48KeyValueEP14KeyValueData_s", mfunc_ptr_cast(&CC4::KeyValue_) },
|
||||||
//{ 0x0, "_ZN3CC43UseEP11CBaseEntityS1_8USE_TYPEf", mfunc_ptr_cast(&CC4::Use) },
|
{ 0x01D03900, "_ZN3CC43UseEP11CBaseEntityS1_8USE_TYPEf", mfunc_ptr_cast(&CC4::Use_) },
|
||||||
//{ 0x0, "_ZN3CC411GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CC4::GetItemInfo) },
|
{ 0x01D03120, "_ZN3CC411GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CC4::GetItemInfo_) },
|
||||||
//{ 0x0, "_ZN3CC46DeployEv", mfunc_ptr_cast(&CC4::Deploy) },
|
{ 0x01D03190, "_ZN3CC46DeployEv", mfunc_ptr_cast(&CC4::Deploy_) },
|
||||||
//{ 0x0, "_ZN3CC47HolsterEi", mfunc_ptr_cast(&CC4::Holster) },
|
{ 0x01D03200, "_ZN3CC47HolsterEi", mfunc_ptr_cast(&CC4::Holster_) },
|
||||||
//{ 0x0, "_ZN3CC411GetMaxSpeedEv", mfunc_ptr_cast(&CC4::GetMaxSpeed) },
|
//{ 0x01D03A80, "_ZN3CC411GetMaxSpeedEv", mfunc_ptr_cast(&CC4::GetMaxSpeed_) }, // DEFAULT
|
||||||
//{ 0x0, "_ZN3CC49iItemSlotEv", mfunc_ptr_cast(&CC4::iItemSlot) },
|
//{ 0x01D03A70, "_ZN3CC49iItemSlotEv", mfunc_ptr_cast(&CC4::iItemSlot_) }, // DEFAULT
|
||||||
//{ 0x0, "_ZN3CC413PrimaryAttackEv", mfunc_ptr_cast(&CC4::PrimaryAttack) },
|
{ 0x01D03280, "_ZN3CC413PrimaryAttackEv", mfunc_ptr_cast(&CC4::PrimaryAttack_) },
|
||||||
//{ 0x0, "_ZN3CC410WeaponIdleEv", mfunc_ptr_cast(&CC4::WeaponIdle) },
|
{ 0x01D03750, "_ZN3CC410WeaponIdleEv", mfunc_ptr_cast(&CC4::WeaponIdle_) },
|
||||||
//{ 0x0, "_ZN3CC412UseDecrementEv", mfunc_ptr_cast(&CC4::UseDecrement) },
|
//{ 0x01D03A90, "_ZN3CC412UseDecrementEv", mfunc_ptr_cast(&CC4::UseDecrement_) }, // DEFAULT
|
||||||
//non-virtual func
|
//non-virtual func
|
||||||
//{ 0x0, "weapon_c4", (size_t)&weapon_c4 },
|
{ 0x01D02FE0, "weapon_c4", (size_t)&weapon_c4 },
|
||||||
//CDEAGLE
|
//CDEAGLE
|
||||||
//virtual func
|
//virtual func
|
||||||
//{ 0x0, "_ZN7CDEAGLE5SpawnEv", mfunc_ptr_cast(&CDEAGLE::Spawn) },
|
//{ 0x0, "_ZN7CDEAGLE5SpawnEv", mfunc_ptr_cast(&CDEAGLE::Spawn) },
|
||||||
@ -3174,21 +3174,21 @@ FunctionHook g_FunctionHooks[] =
|
|||||||
//{ 0x0, "_ZN6CG3SG19G3SG1FireEffi", mfunc_ptr_cast(&CG3SG1::G3SG1Fire) },
|
//{ 0x0, "_ZN6CG3SG19G3SG1FireEffi", mfunc_ptr_cast(&CG3SG1::G3SG1Fire) },
|
||||||
//CGLOCK18
|
//CGLOCK18
|
||||||
//virtual func
|
//virtual func
|
||||||
//{ 0x0, "_ZN8CGLOCK185SpawnEv", mfunc_ptr_cast(&CGLOCK18::Spawn) },
|
{ 0x01D071E0, "_ZN8CGLOCK185SpawnEv", mfunc_ptr_cast(&CGLOCK18::Spawn_) },
|
||||||
//{ 0x0, "_ZN8CGLOCK188PrecacheEv", mfunc_ptr_cast(&CGLOCK18::Precache) },
|
{ 0x01D07250, "_ZN8CGLOCK188PrecacheEv", mfunc_ptr_cast(&CGLOCK18::Precache_) },
|
||||||
//{ 0x0, "_ZN8CGLOCK1811GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CGLOCK18::GetItemInfo) },
|
{ 0x01D07310, "_ZN8CGLOCK1811GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CGLOCK18::GetItemInfo_) },
|
||||||
//{ 0x0, "_ZN8CGLOCK186DeployEv", mfunc_ptr_cast(&CGLOCK18::Deploy) },
|
{ 0x01D07380, "_ZN8CGLOCK186DeployEv", mfunc_ptr_cast(&CGLOCK18::Deploy_) },
|
||||||
//{ 0x0, "_ZN8CGLOCK1811GetMaxSpeedEv", mfunc_ptr_cast(&CGLOCK18::GetMaxSpeed) },
|
//{ 0x01D07B10, "_ZN8CGLOCK1811GetMaxSpeedEv", mfunc_ptr_cast(&CGLOCK18::GetMaxSpeed_) }, // DEFAULT
|
||||||
//{ 0x0, "_ZN8CGLOCK189iItemSlotEv", mfunc_ptr_cast(&CGLOCK18::iItemSlot) },
|
//{ 0x01D07B00, "_ZN8CGLOCK189iItemSlotEv", mfunc_ptr_cast(&CGLOCK18::iItemSlot_) }, // DEFAULT
|
||||||
//{ 0x0, "_ZN8CGLOCK1813PrimaryAttackEv", mfunc_ptr_cast(&CGLOCK18::PrimaryAttack) },
|
{ 0x01D07510, "_ZN8CGLOCK1813PrimaryAttackEv", mfunc_ptr_cast(&CGLOCK18::PrimaryAttack_) },
|
||||||
//{ 0x0, "_ZN8CGLOCK1815SecondaryAttackEv", mfunc_ptr_cast(&CGLOCK18::SecondaryAttack) },
|
{ 0x01D07480, "_ZN8CGLOCK1815SecondaryAttackEv", mfunc_ptr_cast(&CGLOCK18::SecondaryAttack_) },
|
||||||
//{ 0x0, "_ZN8CGLOCK186ReloadEv", mfunc_ptr_cast(&CGLOCK18::Reload) },
|
{ 0x01D07980, "_ZN8CGLOCK186ReloadEv", mfunc_ptr_cast(&CGLOCK18::Reload_) },
|
||||||
//{ 0x0, "_ZN8CGLOCK1810WeaponIdleEv", mfunc_ptr_cast(&CGLOCK18::WeaponIdle) },
|
{ 0x01D079F0, "_ZN8CGLOCK1810WeaponIdleEv", mfunc_ptr_cast(&CGLOCK18::WeaponIdle_) },
|
||||||
//{ 0x0, "_ZN8CGLOCK1812UseDecrementEv", mfunc_ptr_cast(&CGLOCK18::UseDecrement) },
|
//{ 0x01D07B20, "_ZN8CGLOCK1812UseDecrementEv", mfunc_ptr_cast(&CGLOCK18::UseDecrement_) }, // DEFAULT
|
||||||
//{ 0x0, "_ZN8CGLOCK188IsPistolEv", mfunc_ptr_cast(&CGLOCK18::IsPistol) },
|
//{ 0x01D07B30, "_ZN8CGLOCK188IsPistolEv", mfunc_ptr_cast(&CGLOCK18::IsPistol_) }, // DEFAULT
|
||||||
//non-virtual func
|
//non-virtual func
|
||||||
//{ 0x0, "weapon_glock18", (size_t)&weapon_glock18 },
|
{ 0x01D07190, "weapon_glock18", (size_t)&weapon_glock18 },
|
||||||
//{ 0x0, "_ZN6CG3SG19G3SG1FireEffi", mfunc_ptr_cast(&CG3SG1::GLOCK18Fire) },
|
{ 0x01D07670, "_ZN8CGLOCK1811GLOCK18FireEffi", mfunc_ptr_cast(&CGLOCK18::GLOCK18Fire) },
|
||||||
//CHEGrenade
|
//CHEGrenade
|
||||||
//virtual func
|
//virtual func
|
||||||
//{ 0x0, "_ZN10CHEGrenade5SpawnEv", mfunc_ptr_cast(&CHEGrenade::Spawn) },
|
//{ 0x0, "_ZN10CHEGrenade5SpawnEv", mfunc_ptr_cast(&CHEGrenade::Spawn) },
|
||||||
@ -5332,6 +5332,11 @@ VirtualTableRef g_TableRefs[] =
|
|||||||
{ 0x01DF46BC, "CKnife", CWEAPON_VIRTUAL_COUNT },
|
{ 0x01DF46BC, "CKnife", CWEAPON_VIRTUAL_COUNT },
|
||||||
{ 0x01DF34E4, "CAWP", CWEAPON_VIRTUAL_COUNT },
|
{ 0x01DF34E4, "CAWP", CWEAPON_VIRTUAL_COUNT },
|
||||||
{ 0x01DF51AC, "CP90", CWEAPON_VIRTUAL_COUNT },
|
{ 0x01DF51AC, "CP90", CWEAPON_VIRTUAL_COUNT },
|
||||||
|
{ 0x01DF4394, "CGLOCK18", 95 },
|
||||||
|
{ 0x01DF5C6C, "CUSP", 95 },
|
||||||
|
{ 0x01DF368C, "CC4", CWEAPON_VIRTUAL_COUNT },
|
||||||
|
|
||||||
|
{ 0x01DFD984, "CWShield", CBASE_VIRTUAL_COUNT },
|
||||||
|
|
||||||
// CBaseEntity
|
// CBaseEntity
|
||||||
{ 0x01DF8A94, "CGib", CBASE_VIRTUAL_COUNT },
|
{ 0x01DF8A94, "CGib", CBASE_VIRTUAL_COUNT },
|
||||||
@ -5514,10 +5519,6 @@ VirtualTableRef g_TableRefs[] =
|
|||||||
{ 0x01E01000, "CCSTutorBuyMenuState", 3 },
|
{ 0x01E01000, "CCSTutorBuyMenuState", 3 },
|
||||||
{ 0x01E01010, "CCSTutorWaitingForStartState", 3 },
|
{ 0x01E01010, "CCSTutorWaitingForStartState", 3 },
|
||||||
|
|
||||||
// Weapons vtable
|
|
||||||
{ 0x01DF5C6C, "CUSP", 95 },
|
|
||||||
{ 0x01DFD984, "CWShield", CBASE_VIRTUAL_COUNT },
|
|
||||||
|
|
||||||
{ NULL, NULL } // BaseClass__for_vtbl
|
{ NULL, NULL } // BaseClass__for_vtbl
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user