WIP: Reversed functions all weapons

This commit is contained in:
s1lentq 2015-11-24 03:01:09 +06:00
parent 0fc3351cb8
commit dc557b37f2
44 changed files with 6753 additions and 1601 deletions

View File

@ -294,7 +294,7 @@ bool CCSBot::IsUsingPistol(void)
break;
}
// TODO: check it, from the dwarf should be used function IsPistol
// TODO: check it, from the dwarf should be used function IsPistol
// {
// class CBasePlayerWeapon *gun; // 640
// IsPistol(CBasePlayerWeapon *const this); // 642

View File

@ -181,11 +181,10 @@
#define C_EXPORT
#endif
typedef enum
enum hash_types_e
{
CLASSNAME
} hash_types_e;
};
typedef struct hash_item_s
{
@ -230,6 +229,7 @@ typedef enum
} TRAIN_CODE;
// Things that toggle (buttons/triggers/doors) need this
typedef enum
{
TS_AT_TOP,

View File

@ -4689,7 +4689,7 @@ int AddToFullPack(struct entity_state_s *state, int e, edict_t *ent, edict_t *ho
UTIL_UnsetGroupTrace();
}
Q_memset(state, 0, sizeof(*state));
Q_memset(state, 0, sizeof(entity_state_t));
state->number = e;
state->entityType = ENTITY_NORMAL;

View File

@ -84,12 +84,8 @@ void CGrenade::Explode(TraceResult *pTrace, int bitsDamageType)
switch (RANDOM_LONG(0, 1))
{
case 0:
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/flashbang-2.wav", 0.55, ATTN_NORM);
break;
case 1:
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/flashbang-1.wav", 0.55, ATTN_NORM);
break;
case 0: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/flashbang-2.wav", 0.55, ATTN_NORM); break;
case 1: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/flashbang-1.wav", 0.55, ATTN_NORM); break;
}
pev->effects |= EF_NODRAW;
@ -211,13 +207,9 @@ void CGrenade::Explode2(TraceResult *pTrace, int bitsDamageType)
switch (RANDOM_LONG(0, 2))
{
case 0:
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris1.wav", 0.55, ATTN_NORM);
break;
case 1: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris2.wav", 0.55, ATTN_NORM);
break;
case 2: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris3.wav", 0.55, ATTN_NORM);
break;
case 0: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris1.wav", 0.55, ATTN_NORM); break;
case 1: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris2.wav", 0.55, ATTN_NORM); break;
case 2: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris3.wav", 0.55, ATTN_NORM); break;
}
pev->effects |= EF_NODRAW;
@ -294,15 +286,9 @@ void CGrenade::Explode3(TraceResult *pTrace, int bitsDamageType)
switch (RANDOM_LONG(0, 2))
{
case 0:
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris1.wav", 0.55, ATTN_NORM);
break;
case 1:
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris2.wav", 0.55, ATTN_NORM);
break;
case 2:
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris3.wav", 0.55, ATTN_NORM);
break;
case 0: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris1.wav", 0.55, ATTN_NORM); break;
case 1: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris2.wav", 0.55, ATTN_NORM); break;
case 2: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris3.wav", 0.55, ATTN_NORM); break;
}
pev->effects |= EF_NODRAW;
@ -347,12 +333,8 @@ NOXREF void CGrenade::SG_Explode(TraceResult *pTrace, int bitsDamageType)
switch (RANDOM_LONG(0, 1))
{
case 0:
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/flashbang-2.wav", 0.55, ATTN_NORM);
break;
case 1:
EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/flashbang-1.wav", 0.55, ATTN_NORM);
break;
case 0: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/flashbang-2.wav", 0.55, ATTN_NORM); break;
case 1: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/flashbang-1.wav", 0.55, ATTN_NORM); break;
}
pev->effects |= EF_NODRAW;
@ -768,12 +750,9 @@ void CGrenade::__MAKE_VHOOK(BounceSound)(void)
switch (RANDOM_LONG(0, 2))
{
case 0: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/grenade_hit1.wav", 0.25, ATTN_NORM);
break;
case 1: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/grenade_hit2.wav", 0.25, ATTN_NORM);
break;
case 2: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/grenade_hit3.wav", 0.25, ATTN_NORM);
break;
case 0: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/grenade_hit1.wav", 0.25, ATTN_NORM); break;
case 1: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/grenade_hit2.wav", 0.25, ATTN_NORM); break;
case 2: EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/grenade_hit3.wav", 0.25, ATTN_NORM); break;
}
}
@ -935,10 +914,22 @@ CGrenade *CGrenade::ShootTimed2(entvars_t *pevOwner, Vector vecStart, Vector vec
return pGrenade;
}
extern bool bActivateGo;
/* <b9dd0> ../cstrike/dlls/ggrenade.cpp:1069 */
CGrenade *CGrenade::ShootTimed(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity, float time)
{
/*if (bActivateGo)
{
static int iNum = 0;
_logf("#%d. vecStart: (%.12f, %.12f, %.12f) | vecVelocity: (%.12f, %.12f, %.12f)", iNum,
vecStart[0], vecStart[1], vecStart[2],
vecVelocity[0], vecVelocity[1], vecVelocity[2]);
//_logf("\n\n");
iNum++;
}*/
CGrenade *pGrenade = GetClassPtr((CGrenade *)NULL);
pGrenade->Spawn();

View File

@ -5,8 +5,8 @@
*/
#ifndef HOOK_GAMEDLL
cvar_t cv_hostage_stop = { "hostage_stop", "0", FCVAR_SERVER, 0.0f, NULL };
cvar_t cv_hostage_debug = { "hostage_debug", "0", FCVAR_SERVER, 0.0f, NULL };
cvar_t cv_hostage_stop = { "hostage_stop", "0", FCVAR_SERVER, 0.0f, NULL };
#else

View File

@ -1775,7 +1775,7 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(RestartRound)(void)
for (int i = 1; i <= gpGlobals->maxClients; i++)
{
CBasePlayer *plr = reinterpret_cast<CBasePlayer *>(UTIL_PlayerByIndex(i));
if (plr && !FNullEnt(plr->pev))
plr->Reset();
}

View File

@ -856,10 +856,13 @@ void CBasePlayer::__MAKE_VHOOK(TraceAttack)(entvars_t *pevAttacker, float flDama
bool bShouldSpark = false;
bool bHitShield = IsHittingShield(vecDir, ptr);
CBasePlayer *pAttacker = (CBasePlayer *)CBasePlayer::Instance(pevAttacker);
CBasePlayer *pAttacker = (CBasePlayer *)CBaseEntity::Instance(pevAttacker);
if (m_iTeam == pAttacker->m_iTeam && CVAR_GET_FLOAT("mp_friendlyfire") == 0)
bShouldBleed = false;
if (pAttacker->IsPlayer()) // REGAMEDLL_FIXES
{
if (m_iTeam == pAttacker->m_iTeam && CVAR_GET_FLOAT("mp_friendlyfire") == 0)
bShouldBleed = false;
}
if (pev->takedamage == DAMAGE_NO)
return;
@ -9388,34 +9391,34 @@ int CBasePlayer::Classify(void)
return Classify_();
}
void CBasePlayer::TraceAttack(entvars_t *pevAttacker,float flDamage,Vector vecDir,TraceResult *ptr,int bitsDamageType)
void CBasePlayer::TraceAttack(entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType)
{
TraceAttack_(pevAttacker,flDamage,vecDir,ptr,bitsDamageType);
TraceAttack_(pevAttacker, flDamage, vecDir, ptr, bitsDamageType);
}
int CBasePlayer::TakeDamage(entvars_t *pevInflictor,entvars_t *pevAttacker,float flDamage,int bitsDamageType)
int CBasePlayer::TakeDamage(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
{
return TakeDamage_(pevInflictor,pevAttacker,flDamage,bitsDamageType);
return TakeDamage_(pevInflictor, pevAttacker, flDamage, bitsDamageType);
}
int CBasePlayer::TakeHealth(float flHealth,int bitsDamageType)
int CBasePlayer::TakeHealth(float flHealth, int bitsDamageType)
{
return TakeHealth_(flHealth,bitsDamageType);
return TakeHealth_(flHealth, bitsDamageType);
}
void CBasePlayer::Killed(entvars_t *pevAttacker,int iGib)
void CBasePlayer::Killed(entvars_t *pevAttacker, int iGib)
{
Killed_(pevAttacker,iGib);
Killed_(pevAttacker, iGib);
}
void CBasePlayer::AddPoints(int score,BOOL bAllowNegativeScore)
void CBasePlayer::AddPoints(int score, BOOL bAllowNegativeScore)
{
AddPoints_(score,bAllowNegativeScore);
AddPoints_(score, bAllowNegativeScore);
}
void CBasePlayer::AddPointsToTeam(int score,BOOL bAllowNegativeScore)
void CBasePlayer::AddPointsToTeam(int score, BOOL bAllowNegativeScore)
{
AddPointsToTeam_(score,bAllowNegativeScore);
AddPointsToTeam_(score, bAllowNegativeScore);
}
BOOL CBasePlayer::AddPlayerItem(CBasePlayerItem *pItem)
@ -9428,9 +9431,9 @@ BOOL CBasePlayer::RemovePlayerItem(CBasePlayerItem *pItem)
return RemovePlayerItem_(pItem);
}
int CBasePlayer::GiveAmmo(int iAmount,char *szName,int iMax)
int CBasePlayer::GiveAmmo(int iAmount, char *szName, int iMax)
{
return GiveAmmo_(iAmount,szName,iMax);
return GiveAmmo_(iAmount, szName, iMax);
}
const char *CBasePlayer::TeamID(void)
@ -9498,9 +9501,9 @@ Vector CBasePlayer::GetAutoaimVector(float flDelta)
return GetAutoaimVector_(flDelta);
}
void CBasePlayer::Blind(float flUntilTime,float flHoldTime,float flFadeTime,int iAlpha)
void CBasePlayer::Blind(float flUntilTime, float flHoldTime, float flFadeTime, int iAlpha)
{
Blind_(flUntilTime,flHoldTime,flFadeTime,iAlpha);
Blind_(flUntilTime, flHoldTime, flFadeTime, iAlpha);
}
void CStripWeapons::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)

View File

@ -807,7 +807,6 @@ public:
}
public:
enum { MaxLocationLen = 32 };
int random_seed;

View File

@ -953,7 +953,7 @@ void CTriggerMultiple::__MAKE_VHOOK(Spawn)(void)
//if (pev->health > 0)
//{
// if (FBitSet(pev->spawnflags, SPAWNFLAG_NOTOUCH))
// if (pev->spawnflags & SPAWNFLAG_NOTOUCH)
// {
// ALERT(at_error, "trigger_multiple spawn: health and notouch don't make sense");
// }
@ -2337,7 +2337,7 @@ void CTriggerCamera::Move(void)
{
FireTargets(STRING(m_pentPath->pev->message), this, this, USE_TOGGLE, 0);
if (m_pentPath->pev->spawnflags, SF_CORNER_FIREONCE)
if (m_pentPath->pev->spawnflags & SF_CORNER_FIREONCE)
{
m_pentPath->pev->message = 0;
}

View File

@ -580,10 +580,21 @@ CBaseEntity *UTIL_PlayerByIndex(int playerIndex)
return pPlayer;
}
extern bool bActivateGo;
/* <1abab0> ../cstrike/dlls/util.cpp:728 */
void UTIL_MakeVectors(const Vector &vecAngles)
{
/*if (bActivateGo)
{
static int iNum = 0;
_logf("#%d. vecAngles: (%.12f, %.12f, %.12f)", iNum,
vecAngles[0], vecAngles[1], vecAngles[2]);
//_logf("\n\n");
iNum++;
}*/
MAKE_VECTORS(vecAngles);
}

View File

@ -665,16 +665,16 @@ void CBasePlayerItem::DefaultTouch(CBaseEntity *pOther)
/* <1d3371> ../cstrike/dlls/weapons.cpp:678 */
void CBasePlayerWeapon::SetPlayerShieldAnim(void)
{
if (m_pPlayer->HasShield())
if (!m_pPlayer->HasShield())
return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield");
}
else
{
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgun");
}
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield");
}
else
{
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgun");
}
}
@ -704,16 +704,8 @@ void CBasePlayerWeapon::EjectBrassLate(void)
vecShellVelocity = (m_pPlayer->pev->velocity + vecRight + vecUp) + gpGlobals->v_forward * 25;
soundType = (m_iId == WEAPON_XM1014 || m_iId == WEAPON_M3) ? 2 : 1;
EjectBrass
(
pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_up * -9 + gpGlobals->v_forward * 16,
gpGlobals->v_right * -9,
vecShellVelocity,
pev->angles.y,
m_iShellId,
soundType,
ENTINDEX(ENT(m_pPlayer->pev))
);
EjectBrass(pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_up * -9 + gpGlobals->v_forward * 16, gpGlobals->v_right * -9,
vecShellVelocity, pev->angles.y, m_iShellId, soundType, m_pPlayer->entindex());
}
/* <1d372a> ../cstrike/dlls/weapons.cpp:717 */
@ -739,7 +731,7 @@ bool CBasePlayerWeapon::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
m_pPlayer->m_bShieldDrawn = true;
}
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) == 0);
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed();
m_flNextSecondaryAttack = 0.4f;
@ -824,21 +816,8 @@ void CBasePlayerWeapon::FireRemaining(int &shotsFired, float &shootTime, BOOL bI
vecDir = m_pPlayer->FireBullets3(vecSrc, gpGlobals->v_forward, 0.05, 8192, 1, BULLET_PLAYER_9MM, 18, 0.9, m_pPlayer->pev, true, m_pPlayer->random_seed);
m_pPlayer->ammo_9mm--;
PLAYBACK_EVENT_FULL
(
flag,
ENT(m_pPlayer->pev),
m_usFireGlock18,
0,
(float *)&g_vecZero,
(float *)&g_vecZero,
vecDir.x,
vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 10000.0),
(int)(m_pPlayer->pev->punchangle.y * 10000.0),
m_iClip == 0,
0
);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireGlock18, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 10000), (int)(m_pPlayer->pev->punchangle.y * 10000), m_iClip == 0, FALSE);
}
else
{
@ -846,21 +825,8 @@ void CBasePlayerWeapon::FireRemaining(int &shotsFired, float &shootTime, BOOL bI
vecDir = m_pPlayer->FireBullets3(vecSrc, gpGlobals->v_forward, m_fBurstSpread, 8192, 2, BULLET_PLAYER_556MM, 30, 0.96, m_pPlayer->pev, false, m_pPlayer->random_seed);
m_pPlayer->ammo_556nato--;
PLAYBACK_EVENT_FULL
(
flag,
ENT(m_pPlayer->pev),
m_usFireFamas,
0,
(float *)&g_vecZero,
(float *)&g_vecZero,
vecDir.x,
vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 10000000.0),
(int)(m_pPlayer->pev->punchangle.y * 10000000.0),
0,
0
);
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_pPlayer->pev->effects |= EF_MUZZLEFLASH;
@ -1819,13 +1785,10 @@ void CWeaponBox::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
else
ClientPrint(pPlayer->pev, HUD_PRINTCENTER, "#Got_bomb");
UTIL_LogPrintf
(
"\"%s<%i><%s><TERRORIST>\" triggered \"Got_The_Bomb\"\n",
UTIL_LogPrintf("\"%s<%i><%s><TERRORIST>\" triggered \"Got_The_Bomb\"\n",
STRING(pPlayer->pev->netname),
GETPLAYERUSERID(pPlayer->edict()),
GETPLAYERAUTHID(pPlayer->edict())
);
GETPLAYERAUTHID(pPlayer->edict()));
g_pGameRules->m_bBombDropped = FALSE;

File diff suppressed because it is too large Load Diff

View File

@ -159,7 +159,7 @@ enum ClipGiveDefault
FAMAS_DEFAULT_GIVE = 25,
USP_DEFAULT_GIVE = 12,
AWP_DEFAULT_GIVE = 10,
MP5N_DEFAULT_GIVE = 30,
MP5NAVY_DEFAULT_GIVE = 30,
M249_DEFAULT_GIVE = 100,
M3_DEFAULT_GIVE = 8,
M4A1_DEFAULT_GIVE = 30,
@ -205,8 +205,8 @@ enum WeightWeapon
{
P228_WEIGHT = 5,
GLOCK18_WEIGHT = 5,
SCOUT_WEIGHT = 20,
HEGRENADE_WEIGHT = 1,
SCOUT_WEIGHT = 30,
HEGRENADE_WEIGHT = 2,
XM1014_WEIGHT = 20,
C4_WEIGHT = 3,
MAC10_WEIGHT = 25,
@ -217,20 +217,20 @@ enum WeightWeapon
UMP45_WEIGHT = 25,
SG550_WEIGHT = 20,
GALIL_WEIGHT = 25,
FAMAS_WEIGHT = 75,//
USP_WEIGHT = 5,//
AWP_WEIGHT = 30,//
MP5N_WEIGHT = 25,
FAMAS_WEIGHT = 75,
USP_WEIGHT = 5,
AWP_WEIGHT = 30,
MP5NAVY_WEIGHT = 25,
M249_WEIGHT = 25,
M3_WEIGHT = 20,
M4A1_WEIGHT = 25,
TMP_WEIGHT = 30,
TMP_WEIGHT = 25,
G3SG1_WEIGHT = 20,
FLASHBANG_WEIGHT = 1,
DEAGLE_WEIGHT = 7,
SG552_WEIGHT = 25,
AK47_WEIGHT = 25,
P90_WEIGHT = 26,//
P90_WEIGHT = 26,
KNIFE_WEIGHT = 0,
};
@ -246,6 +246,11 @@ enum MaxAmmoType
MAX_AMMO_338MAGNUM = 30,
MAX_AMMO_57MM = 100,
MAX_AMMO_357SIG = 52,
// custom
MAX_AMMO_SMOKEGRENADE = 1,
MAX_AMMO_HEGRENADE = 1,
MAX_AMMO_FLASHBANG = 2,
};
enum AmmoType
@ -316,17 +321,24 @@ enum shieldgun_e
SHIELDGUN_DOWN,
};
typedef enum
//custom
enum shieldgren_e
{
SHIELDREN_IDLE = 4,
SHIELDREN_UP,
SHIELDREN_DOWN
};
enum InventorySlotType
{
PRIMARY_WEAPON_SLOT = 1,
PISTOL_SLOT,
KNIFE_SLOT,
GRENADE_SLOT,
C4_SLOT,
};
} InventorySlotType;
typedef enum
enum WeaponType
{
PISTOL = 0,
SHOTGUN,
@ -336,10 +348,9 @@ typedef enum
SNIPER_RIFLE,
GRENADE,
NUM_WEAPON_TYPES,
} WeaponType;
typedef enum
};
enum Bullet
{
BULLET_NONE = 0,
BULLET_PLAYER_9MM,
@ -357,44 +368,35 @@ typedef enum
BULLET_PLAYER_50AE,
BULLET_PLAYER_57MM,
BULLET_PLAYER_357SIG,
};
} Bullet;
typedef struct
struct AutoBuyInfoStruct
{
AutoBuyClassType m_class;
char *m_command;
char *m_classname;
};/* size: 12, cachelines: 1, members: 3 */
} AutoBuyInfoStruct;
/* size: 12, cachelines: 1, members: 3 */
typedef struct
struct WeaponAliasInfo
{
char *alias;
WeaponIdType id;
};/* size: 8, cachelines: 1, members: 2 */
} WeaponAliasInfo;
/* size: 8, cachelines: 1, members: 2 */
typedef struct
struct WeaponBuyAliasInfo
{
char *alias;
WeaponIdType id;
char *failName;
};/* size: 12, cachelines: 1, members: 3 */
} WeaponBuyAliasInfo;
/* size: 12, cachelines: 1, members: 3 */
typedef struct
struct WeaponClassAliasInfo
{
char *alias;
WeaponClassType id;
};/* size: 8, cachelines: 1, members: 2 */
} WeaponClassAliasInfo;
/* size: 8, cachelines: 1, members: 2 */
typedef struct
struct WeaponInfoStruct
{
int id;
int cost;
@ -404,9 +406,7 @@ typedef struct
int maxRounds;
int ammoType;
char *entityName;
} WeaponInfoStruct;
/* size: 32, cachelines: 1, members: 8 */
};/* size: 32, cachelines: 1, members: 8 */
#ifdef HOOK_GAMEDLL

View File

@ -1,68 +1,219 @@
#include "precompiled.h"
#define AK47_MAX_SPEED 221
#define AK47_DAMAGE 36
#define AK47_RANGE_MODIFER 0.98
#define AK47_RELOAD_TIME 2.45
enum ak47_e
{
AK47_IDLE1,
AK47_RELOAD,
AK47_DRAW,
AK47_SHOOT1,
AK47_SHOOT2,
AK47_SHOOT3
};
/* <23556d> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_ak47, CAK47);
/* <235327> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:52 */
NOBODY void CAK47::__MAKE_VHOOK(Spawn)(void)
void CAK47::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_AK47;
SET_MODEL(edict(), "models/w_ak47.mdl");
m_iDefaultAmmo = AK47_DEFAULT_GIVE;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
FallInit();
}
/* <235280> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:66 */
NOBODY void CAK47::__MAKE_VHOOK(Precache)(void)
void CAK47::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_ak47.mdl");
PRECACHE_MODEL("models/w_ak47.mdl");
PRECACHE_SOUND("weapons/ak47-1.wav");
PRECACHE_SOUND("weapons/ak47-2.wav");
PRECACHE_SOUND("weapons/ak47_clipout.wav");
PRECACHE_SOUND("weapons/ak47_clipin.wav");
PRECACHE_SOUND("weapons/ak47_boltpull.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireAK47 = PRECACHE_EVENT(1, "events/ak47.sc");
}
/* <2352a7> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:82 */
NOBODY int CAK47::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
int CAK47::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "762Nato";
p->iMaxAmmo1 = MAX_AMMO_762NATO;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = AK47_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 1;
p->iId = m_iId = WEAPON_AK47;
p->iFlags = 0;
p->iWeight = AK47_WEIGHT;
return 1;
}
/* <235300> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:99 */
NOBODY BOOL CAK47::__MAKE_VHOOK(Deploy)(void)
BOOL CAK47::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.2;
m_iShotsFired = 0;
iShellOn = 1;
return DefaultDeploy("models/v_ak47.mdl", "models/p_ak47.mdl", AK47_DRAW, "ak47", UseDecrement() != FALSE);
}
/* <2352da> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:108 */
NOBODY void CAK47::__MAKE_VHOOK(SecondaryAttack)(void)
void CAK47::__MAKE_VHOOK(SecondaryAttack)(void)
{
;
}
/* <235523> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:112 */
NOBODY void CAK47::__MAKE_VHOOK(PrimaryAttack)(void)
void CAK47::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 116
// PrimaryAttack(CAK47 *const this); // 112
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
AK47Fire(0.04 + (0.4 * m_flAccuracy), 0.0955, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
AK47Fire(0.04 + (0.07 * m_flAccuracy), 0.0955, FALSE);
}
else
{
AK47Fire(0.0275 * m_flAccuracy, 0.0955, FALSE);
}
}
/* <235637> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:123 */
NOBODY void CAK47::AK47Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CAK47::AK47Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 158
// Vector vecSrc; // 160
// Vector vecDir; // 162
// int flag; // 165
// operator+(const Vector *const this,
// const Vector &v); // 157
// Vector(Vector *const this,
// const Vector &v); // 163
// Vector(Vector *const this,
// const Vector &v); // 163
// Length2D(const Vector *const this); // 193
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 200) + 0.35;
if (m_flAccuracy > 1.25)
m_flAccuracy = 1.25;
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);
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_762MM,
AK47_DAMAGE, AK47_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_usFireAK47, 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_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
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.5, 0.45, 0.225, 0.05, 6.5, 2.5, 7);
}
else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(2.0, 1.0, 0.5, 0.35, 9.0, 6.0, 5);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.9, 0.35, 0.15, 0.025, 5.5, 1.5, 9);
}
else
{
KickBack(1.0, 0.375, 0.175, 0.0375, 5.75, 1.75, 8);
}
}
/* <2353d8> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:204 */
NOBODY void CAK47::__MAKE_VHOOK(Reload)(void)
void CAK47::__MAKE_VHOOK(Reload)(void)
{
// Reload(CAK47 *const this); // 204
#ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo
if (m_pPlayer->ammo_762nato <= 0)
{
return;
}
#endif // REGAMEDLL_FIXES
if (DefaultReload(AK47_MAX_CLIP, AK47_RELOAD, AK47_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2;
m_iShotsFired = 0;
m_bDelayFire = false;
}
}
/* <23539d> ../cstrike/dlls/wpn_shared/wpn_ak47.cpp:219 */
NOBODY void CAK47::__MAKE_VHOOK(WeaponIdle)(void)
void CAK47::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CAK47 *const this); // 219
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(AK47_IDLE1, UseDecrement() != FALSE);
}
}
#ifdef HOOK_GAMEDLL

View File

@ -1,69 +1,275 @@
#include "precompiled.h"
#define AUG_MAX_SPEED 240
#define AUG_DAMAGE 32
#define AUG_RANGE_MODIFER 0.96
#define AUG_RELOAD_TIME 3.3
enum aug_e
{
AUG_IDLE1,
AUG_RELOAD,
AUG_DRAW,
AUG_SHOOT1,
AUG_SHOOT2,
AUG_SHOOT3
};
/* <23a81f> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_aug, CAUG);
/* <23a711> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:52 */
NOBODY void CAUG::Spawn(void)
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;
FallInit();
}
/* <23a66a> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:66 */
NOBODY void CAUG::Precache(void)
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");
m_usFireAug = PRECACHE_EVENT(1, "events/aug.sc");
}
/* <23a691> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:83 */
NOBODY int CAUG::GetItemInfo(ItemInfo *p)
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;
return 1;
}
/* <23a6ea> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:100 */
NOBODY BOOL CAUG::Deploy(void)
BOOL CAUG::__MAKE_VHOOK(Deploy)(void)
{
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 */
NOBODY void CAUG::SecondaryAttack(void)
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;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
}
/* <23aa31> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:130 */
NOBODY void CAUG::PrimaryAttack(void)
void CAUG::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 134
// PrimaryAttack(CAUG *const this); // 130
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 */
NOBODY void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CAUG::AUGFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 183
// Vector vecSrc; // 185
// Vector vecDir; // 187
// int flag; // 190
// operator+(const Vector *const this,
// const Vector &v); // 182
// Vector(Vector *const this,
// const Vector &v); // 188
// Vector(Vector *const this,
// const Vector &v); // 188
// Length2D(const Vector *const this); // 214
// }
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);
#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);
}
}
/* <23a7c2> ../cstrike/dlls/wpn_shared/wpn_aug.cpp:225 */
NOBODY void CAUG::Reload(void)
void CAUG::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 230
// }
// Reload(CAUG *const this); // 225
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 */
NOBODY void CAUG::WeaponIdle(void)
void CAUG::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CAUG *const this); // 245
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(AUG_IDLE1, UseDecrement() != FALSE);
}
#ifdef HOOK_GAMEDLL
void CAUG::Spawn(void)
{
Spawn_();
}
void CAUG::Precache(void)
{
Precache_();
}
int CAUG::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CAUG::Deploy(void)
{
return Deploy_();
}
void CAUG::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CAUG::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CAUG::Reload(void)
{
Reload_();
}
void CAUG::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -2,6 +2,10 @@
#define AWP_MAX_SPEED 210
#define AWP_MAX_SPEED_ZOOM 150
#define AWP_DAMAGE 115
#define AWP_RANGE_MODIFER 0.99
#define AWP_RELOAD_TIME 2.5
enum awp_e
@ -158,7 +162,7 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer, 0);
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer);
}
return;
@ -176,22 +180,9 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecDir = gpGlobals->v_forward;
vecAiming = gpGlobals->v_forward;
vecAiming = m_pPlayer->FireBullets3
(
vecSrc,
vecDir,
flSpread,
8192.0,
3,
BULLET_PLAYER_338MAG,
115,
0.99,
m_pPlayer->pev,
true, // TODO: why awp is have bPistol set true?
m_pPlayer->random_seed
);
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 3, BULLET_PLAYER_338MAG, AWP_DAMAGE, AWP_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
@ -199,47 +190,29 @@ void CAWP::AWPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0;
#endif // CLIENT_WEAPONS
PLAYBACK_EVENT_FULL
(
flag,
ENT(m_pPlayer->pev),
m_usFireAWP,
0,
(float *)&g_vecZero,
(float *)&g_vecZero,
vecAiming.x,
vecAiming.y,
(int)(m_pPlayer->pev->punchangle.x * 100),
(int)(m_pPlayer->pev->punchangle.x * 100),
FALSE,
FALSE
);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireAWP, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.x * 100), FALSE, FALSE);
m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
m_flNextPrimaryAttack = m_flNextSecondaryAttack;
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() + 2.0;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2;
m_pPlayer->pev->punchangle.x -= 2;
}
/* <23fbc1> ../cstrike/dlls/wpn_shared/wpn_awp.cpp:239 */
void CAWP::__MAKE_VHOOK(Reload)(void)
{
int iResult;
if (m_pPlayer->ammo_338mag <= 0)
{
return;
}
iResult = DefaultReload(AWP_MAX_CLIP, AWP_RELOAD, AWP_RELOAD_TIME);
if (iResult)
if (DefaultReload(AWP_MAX_CLIP, AWP_RELOAD, AWP_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);

View File

@ -65,7 +65,7 @@ int CC4::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
p->iPosition = 3;
p->iId = m_iId = WEAPON_C4;
p->iWeight = C4_WEIGHT;
p->iFlags = (ITEM_FLAG_LIMITINWORLD | ITEM_FLAG_EXHAUSTIBLE);
p->iFlags = ITEM_FLAG_LIMITINWORLD | ITEM_FLAG_EXHAUSTIBLE;
return 1;
}

View File

@ -1,66 +1,269 @@
#include "precompiled.h"
#define DEAGLE_MAX_SPEED 250
#define DEAGLE_DAMAGE 54
#define DEAGLE_RANGE_MODIFER 0.81
#define DEAGLE_RELOAD_TIME 2.2
enum deagle_e
{
DEAGLE_IDLE1,
DEAGLE_SHOOT1,
DEAGLE_SHOOT2,
DEAGLE_SHOOT_EMPTY,
DEAGLE_RELOAD,
DEAGLE_DRAW
};
/* <24be52> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:49 */
LINK_ENTITY_TO_CLASS(weapon_deagle, CDEAGLE);
/* <24bbe5> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:51 */
NOBODY void CDEAGLE::Spawn(void)
void CDEAGLE::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_DEAGLE;
SET_MODEL(edict(), "models/w_deagle.mdl");
m_iDefaultAmmo = DEAGLE_DEFAULT_GIVE;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_fMaxSpeed = DEAGLE_MAX_SPEED;
m_flAccuracy = 0.9;
FallInit();
}
/* <24bb64> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:68 */
NOBODY void CDEAGLE::Precache(void)
void CDEAGLE::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_deagle.mdl");
PRECACHE_MODEL("models/shield/v_shield_deagle.mdl");
PRECACHE_MODEL("models/w_deagle.mdl");
PRECACHE_SOUND("weapons/deagle-1.wav");
PRECACHE_SOUND("weapons/deagle-2.wav");
PRECACHE_SOUND("weapons/de_clipout.wav");
PRECACHE_SOUND("weapons/de_clipin.wav");
PRECACHE_SOUND("weapons/de_deploy.wav");
m_iShell = PRECACHE_MODEL("models/pshell.mdl");
m_usFireDeagle = PRECACHE_EVENT(1, "events/deagle.sc");
}
/* <24bb8b> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:86 */
NOBODY int CDEAGLE::GetItemInfo(ItemInfo *p)
int CDEAGLE::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "50AE";
p->iMaxAmmo1 = MAX_AMMO_50AE;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = DEAGLE_MAX_CLIP;
p->iSlot = 1;
p->iPosition = 1;
p->iId = m_iId = WEAPON_DEAGLE;
p->iFlags = 0;
p->iWeight = DEAGLE_WEIGHT;
return 1;
}
/* <24bccf> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:103 */
NOBODY BOOL CDEAGLE::Deploy(void)
BOOL CDEAGLE::__MAKE_VHOOK(Deploy)(void)
{
// Deploy(CDEAGLE *const this); // 103
m_flAccuracy = 0.9;
m_fMaxSpeed = DEAGLE_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_deagle.mdl", "models/shield/p_shield_deagle.mdl", DEAGLE_DRAW, "shieldgun", UseDecrement() != FALSE);
else
return DefaultDeploy("models/v_deagle.mdl", "models/p_deagle.mdl", DEAGLE_DRAW, "onehanded", UseDecrement() != FALSE);
}
/* <24be08> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:119 */
NOBODY void CDEAGLE::PrimaryAttack(void)
void CDEAGLE::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 123
// PrimaryAttack(CDEAGLE *const this); // 119
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
DEAGLEFire(1.5 * (1 - m_flAccuracy), 0.3, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
DEAGLEFire(0.25 * (1 - m_flAccuracy), 0.3, FALSE);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
DEAGLEFire(0.115 * (1 - m_flAccuracy), 0.3, FALSE);
}
else
{
DEAGLEFire(0.13 * (1 - m_flAccuracy), 0.3, FALSE);
}
}
/* <24bbbe> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:131 */
NOBODY void CDEAGLE::SecondaryAttack(void)
void CDEAGLE::__MAKE_VHOOK(SecondaryAttack)(void)
{
ShieldSecondaryFire(SHIELDGUN_UP, SHIELDGUN_DOWN);
}
/* <24bf1c> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:137 */
NOBODY void CDEAGLE::DEAGLEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
void CDEAGLE::DEAGLEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
{
// {
// Vector vecAiming; // 193
// Vector vecSrc; // 196
// Vector vecDir; // 198
// int flag; // 202
// operator+(const Vector *const this,
// const Vector &v); // 188
// Vector(Vector *const this,
// const Vector &v); // 199
// Vector(Vector *const this,
// const Vector &v); // 199
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
flCycleTime -= 0.075;
if (++m_iShotsFired > 1)
{
return;
}
if (m_flLastFire != 0.0)
{
m_flAccuracy -= (0.4 - (gpGlobals->time - m_flLastFire)) * 0.35;
if (m_flAccuracy > 0.9)
{
m_flAccuracy = 0.9;
}
else if (m_flAccuracy < 0.55)
{
m_flAccuracy = 0.55;
}
}
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;
SetPlayerShieldAnim();
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 2, BULLET_PLAYER_50AE, DEAGLE_DAMAGE, DEAGLE_RANGE_MODIFER, 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_usFireDeagle, 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), 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() + 1.8;
m_pPlayer->pev->punchangle.x -= 2;
ResetPlayerShieldAnim();
}
/* <24bc95> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:231 */
NOBODY void CDEAGLE::Reload(void)
void CDEAGLE::__MAKE_VHOOK(Reload)(void)
{
// Reload(CDEAGLE *const this); // 231
if (m_pPlayer->ammo_50ae <= 0)
{
return;
}
if (DefaultReload(DEAGLE_MAX_CLIP, DEAGLE_RELOAD, DEAGLE_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.9;
}
}
/* <24bc5b> ../cstrike/dlls/wpn_shared/wpn_deagle.cpp:243 */
NOBODY void CDEAGLE::WeaponIdle(void)
void CDEAGLE::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CDEAGLE *const this); // 243
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
if (FBitSet(m_iWeaponState, WPNSTATE_SHIELD_DRAWN))
{
SendWeaponAnim(SHIELDGUN_DRAWN_IDLE, UseDecrement() != FALSE);
}
}
}
#ifdef HOOK_GAMEDLL
void CDEAGLE::Spawn(void)
{
Spawn_();
}
void CDEAGLE::Precache(void)
{
Precache_();
}
int CDEAGLE::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CDEAGLE::Deploy(void)
{
return Deploy_();
}
void CDEAGLE::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CDEAGLE::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CDEAGLE::Reload(void)
{
Reload_();
}
void CDEAGLE::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,81 +1,291 @@
#include "precompiled.h"
#define ELITE_MAX_SPEED 250
#define ELITE_RELOAD_TIME 4.5
#define ELITE_DAMAGE 36
#define ELITE_RANGE_MODIFER 0.75
enum elite_e
{
ELITE_IDLE,
ELITE_IDLE_LEFTEMPTY,
ELITE_SHOOTLEFT1,
ELITE_SHOOTLEFT2,
ELITE_SHOOTLEFT3,
ELITE_SHOOTLEFT4,
ELITE_SHOOTLEFT5,
ELITE_SHOOTLEFTLAST,
ELITE_SHOOTRIGHT1,
ELITE_SHOOTRIGHT2,
ELITE_SHOOTRIGHT3,
ELITE_SHOOTRIGHT4,
ELITE_SHOOTRIGHT5,
ELITE_SHOOTRIGHTLAST,
ELITE_RELOAD,
ELITE_DRAW
};
/* <25137f> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:52 */
LINK_ENTITY_TO_CLASS(weapon_elite, CELITE);
/* <251034> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:54 */
NOBODY void CELITE::Spawn(void)
void CELITE::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_ELITE;
SET_MODEL(edict(), "models/w_elite.mdl");
m_iDefaultAmmo = ELITE_DEFAULT_GIVE;
m_flAccuracy = 0.88;
FallInit();
}
/* <250fb3> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:67 */
NOBODY void CELITE::Precache(void)
void CELITE::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_elite.mdl");
PRECACHE_MODEL("models/w_elite.mdl");
PRECACHE_SOUND("weapons/elite_fire.wav");
PRECACHE_SOUND("weapons/elite_reloadstart.wav");
PRECACHE_SOUND("weapons/elite_leftclipin.wav");
PRECACHE_SOUND("weapons/elite_clipout.wav");
PRECACHE_SOUND("weapons/elite_sliderelease.wav");
PRECACHE_SOUND("weapons/elite_rightclipin.wav");
PRECACHE_SOUND("weapons/elite_deploy.wav");
m_iShell = PRECACHE_MODEL("models/pshell.mdl");
m_usFireELITE_LEFT = PRECACHE_EVENT(1, "events/elite_left.sc");
m_usFireELITE_RIGHT = PRECACHE_EVENT(1, "events/elite_right.sc");
}
/* <250fda> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:86 */
NOBODY int CELITE::GetItemInfo(ItemInfo *p)
int CELITE::__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 = ELITE_MAX_CLIP;
p->iSlot = 1;
p->iPosition = 5;
p->iId = m_iId = WEAPON_ELITE;
p->iFlags = 0;
p->iWeight = ELITE_WEIGHT;
return 1;
}
/* <25100d> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:103 */
NOBODY BOOL CELITE::Deploy(void)
BOOL CELITE::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.88;
if (!(m_iClip & 1))
{
m_iWeaponState |= WPNSTATE_ELITE_LEFT;
}
return DefaultDeploy("models/v_elite.mdl", "models/p_elite.mdl", ELITE_DRAW, "dualpistols", UseDecrement() != FALSE);
}
/* <251335> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:114 */
NOBODY void CELITE::PrimaryAttack(void)
void CELITE::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 118
// PrimaryAttack(CELITE *const this); // 114
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
ELITEFire(1.3 * (1 - m_flAccuracy), 0.2, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
ELITEFire(0.175 * (1 - m_flAccuracy), 0.2, FALSE);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
ELITEFire(0.08 * (1 - m_flAccuracy), 0.2, FALSE);
}
else
{
ELITEFire(0.1 * (1 - m_flAccuracy), 0.2, FALSE);
}
}
/* <251449> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:126 */
NOBODY void CELITE::ELITEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
void CELITE::ELITEFire(float flSpread, float flCycleTime, BOOL fUseSemi)
{
// {
// float flTimeDiff; // 135
// int flag; // 182
// Vector vecAiming; // 190
// Vector vecSrc; // 192
// operator+(const Vector *const this,
// const Vector &v); // 178
// {
// Vector vecDir; // 202
// Vector(Vector *const this,
// const Vector &v); // 203
// operator*(const Vector *const this,
// float fl); // 201
// operator-(const Vector *const this,
// const Vector &v); // 201
// Vector(Vector *const this,
// const Vector &v); // 203
// }
// {
// Vector vecDir; // 219
// edict(CBaseEntity *const this); // 221
// Vector(Vector *const this,
// const Vector &v); // 220
// operator*(const Vector *const this,
// float fl); // 218
// operator+(const Vector *const this,
// const Vector &v); // 218
// Vector(Vector *const this,
// const Vector &v); // 220
// }
// }
float flTimeDiff;
int flag;
Vector vecAiming;
Vector vecSrc;
Vector vecDir;
flCycleTime -= 0.125;
m_iShotsFired++;
if (m_iShotsFired > 1)
{
return;
}
flTimeDiff = gpGlobals->time - m_flLastFire;
if (m_flLastFire)
{
m_flAccuracy -= (0.325 - flTimeDiff) * 0.275;
if (m_flAccuracy > 0.88)
{
m_flAccuracy = 0.88;
}
else if (m_flAccuracy < 0.55)
{
m_flAccuracy = 0.55;
}
}
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_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
m_iClip--;
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
if (m_iWeaponState & WPNSTATE_ELITE_LEFT)
{
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
m_iWeaponState &= ~WPNSTATE_ELITE_LEFT;
vecDir = m_pPlayer->FireBullets3(vecSrc - gpGlobals->v_right * 5, vecAiming, flSpread,
8192, BULLET_PLAYER_9MM, 1, ELITE_DAMAGE, ELITE_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireELITE_LEFT, 0, (float *)&g_vecZero, (float *)&g_vecZero, flTimeDiff, vecDir.x,
(int)(vecDir.y * 100), m_iClip, FALSE, FALSE);
}
else
{
m_pPlayer->SetAnimation(PLAYER_ATTACK2);
m_iWeaponState |= WPNSTATE_ELITE_LEFT;
vecDir = m_pPlayer->FireBullets3(vecSrc + gpGlobals->v_right * 5, vecAiming, flSpread,
8192, BULLET_PLAYER_9MM, 1, ELITE_DAMAGE, ELITE_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireELITE_RIGHT, 0, (float *)&g_vecZero, (float *)&g_vecZero, flTimeDiff, vecDir.x,
(int)(vecDir.y * 100), m_iClip, FALSE, FALSE);
}
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;
m_pPlayer->pev->punchangle.x -= 2.0;
}
/* <2510f8> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:239 */
NOBODY void CELITE::Reload(void)
void CELITE::__MAKE_VHOOK(Reload)(void)
{
// Reload(CELITE *const this); // 239
if (m_pPlayer->ammo_9mm <= 0)
{
return;
}
if (DefaultReload(ELITE_MAX_CLIP, ELITE_RELOAD, ELITE_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.88;
}
}
/* <24fed7> ../cstrike/dlls/wpn_shared/wpn_elite.cpp:251 */
NOBODY void CELITE::WeaponIdle(void)
void CELITE::__MAKE_VHOOK(WeaponIdle)(void)
{
// {
// int iAnim; // 263
// }
int iAnim;
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
if (m_iClip)
{
iAnim = (m_iClip == 1) ? ELITE_IDLE_LEFTEMPTY : ELITE_IDLE;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 60.0;
SendWeaponAnim(iAnim, UseDecrement() != FALSE);
}
}
}
#ifdef HOOK_GAMEDLL
void CELITE::Spawn(void)
{
Spawn_();
}
void CELITE::Precache(void)
{
Precache_();
}
int CELITE::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CELITE::Deploy(void)
{
return Deploy_();
}
void CELITE::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CELITE::Reload(void)
{
Reload_();
}
void CELITE::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,76 +1,309 @@
#include "precompiled.h"
enum famas_e
{
FAMAS_IDLE1,
FAMAS_RELOAD,
FAMAS_DRAW,
FAMAS_SHOOT1,
FAMAS_SHOOT2,
FAMAS_SHOOT3
};
#define FAMAS_MAX_SPEED 240
#define FAMAS_RELOAD_TIME 3.3
#define FAMAS_DAMAGE 30
#define FAMAS_DAMAGE_BURST 34
#define FAMAS_RANGE_MODIFER 0.96
/* <2c0549> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_famas, CFamas);
/* <2c0284> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:52 */
NOBODY void CFamas::Spawn(void)
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;
FallInit();
}
/* <2c01dc> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:66 */
NOBODY void CFamas::Precache(void)
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");
m_usFireFamas = PRECACHE_EVENT(1, "events/famas.sc");
}
/* <2c0203> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:85 */
NOBODY int CFamas::GetItemInfo(ItemInfo *p)
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;
return 1;
}
/* <2c025d> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:102 */
NOBODY BOOL CFamas::Deploy(void)
BOOL CFamas::__MAKE_VHOOK(Deploy)(void)
{
m_iShotsFired = 0;
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 */
NOBODY void CFamas::SecondaryAttack(void)
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;
}
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
}
/* <2c04fe> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:129 */
NOBODY void CFamas::PrimaryAttack(void)
void CFamas::__MAKE_VHOOK(PrimaryAttack)(void)
{
// {
// bool bFireBurst; // 139
// Length2D(const Vector *const this); // 145
// }
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);
}
}
/* <2c0613> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:152 */
NOBODY void CFamas::FamasFire(float flSpread, float flCycleTime, BOOL fUseAutoAim, BOOL bFireBurst)
void CFamas::FamasFire(float flSpread, float flCycleTime, BOOL fUseAutoAim, BOOL bFireBurst)
{
// {
// Vector vecAiming; // 203
// Vector vecSrc; // 205
// Vector vecDir; // 207
// int flag; // 213
// int mask; // 221
// operator+(const Vector *const this,
// const Vector &v); // 202
// Vector(Vector *const this,
// const Vector &v); // 211
// Vector(Vector *const this,
// const Vector &v); // 211
// Length2D(const Vector *const this); // 243
// Vector(Vector *const this,
// const Vector &v); // 209
// Vector(Vector *const this,
// const Vector &v); // 209
// }
Vector vecAiming, vecSrc, vecDir;
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;
}
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
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;
}
}
/* <2c0336> ../cstrike/dlls/wpn_shared/wpn_famas.cpp:262 */
NOBODY void CFamas::Reload(void)
void CFamas::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 267
// }
// Reload(CFamas *const this); // 262
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 */
NOBODY void CFamas::WeaponIdle(void)
void CFamas::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CFamas *const this); // 284
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
SendWeaponAnim(FAMAS_IDLE1, UseDecrement() != FALSE);
}
}
#ifdef HOOK_GAMEDLL
void CFamas::Spawn(void)
{
Spawn_();
}
void CFamas::Precache(void)
{
Precache_();
}
int CFamas::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CFamas::Deploy(void)
{
return Deploy_();
}
void CFamas::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CFamas::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CFamas::Reload(void)
{
Reload_();
}
void CFamas::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,66 +1,279 @@
#include "precompiled.h"
#define FIVESEVEN_MAX_SPEED 250
#define FIVESEVEN_DAMAGE 20
#define FIVESEVEN_RANGE_MODIFER 0.885
#define FIVESEVEN_RELOAD_TIME 2.7
enum fiveseven_e
{
FIVESEVEN_IDLE,
FIVESEVEN_SHOOT1,
FIVESEVEN_SHOOT2,
FIVESEVEN_SHOOT_EMPTY,
FIVESEVEN_RELOAD,
FIVESEVEN_DRAW
};
/* <25698d> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:49 */
LINK_ENTITY_TO_CLASS(weapon_fiveseven, CFiveSeven);
/* <256720> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:51 */
NOBODY void CFiveSeven::Spawn(void)
void CFiveSeven::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_FIVESEVEN;
SET_MODEL(edict(), "models/w_fiveseven.mdl");
m_iDefaultAmmo = FIVESEVEN_DEFAULT_GIVE;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_flAccuracy = 0.92;
FallInit();
}
/* <25669f> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:66 */
NOBODY void CFiveSeven::Precache(void)
void CFiveSeven::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_fiveseven.mdl");
PRECACHE_MODEL("models/w_fiveseven.mdl");
PRECACHE_MODEL("models/shield/v_shield_fiveseven.mdl");
PRECACHE_SOUND("weapons/fiveseven-1.wav");
PRECACHE_SOUND("weapons/fiveseven_clipout.wav");
PRECACHE_SOUND("weapons/fiveseven_clipin.wav");
PRECACHE_SOUND("weapons/fiveseven_sliderelease.wav");
PRECACHE_SOUND("weapons/fiveseven_slidepull.wav");
m_iShell = PRECACHE_MODEL("models/pshell.mdl");
m_usFireFiveSeven = PRECACHE_EVENT(1, "events/fiveseven.sc");
}
/* <2566c6> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:84 */
NOBODY int CFiveSeven::GetItemInfo(ItemInfo *p)
int CFiveSeven::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "57mm";
p->iMaxAmmo1 = MAX_AMMO_57MM;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = FIVESEVEN_MAX_CLIP;
p->iSlot = 1;
p->iPosition = 6;
p->iId = m_iId = WEAPON_FIVESEVEN;
p->iFlags = 0;
p->iWeight = FIVESEVEN_WEIGHT;
return 1;
}
/* <25680a> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:101 */
NOBODY BOOL CFiveSeven::Deploy(void)
BOOL CFiveSeven::__MAKE_VHOOK(Deploy)(void)
{
// Deploy(CFiveSeven *const this); // 101
m_flAccuracy = 0.92;
m_fMaxSpeed = FIVESEVEN_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_fiveseven.mdl", "models/shield/p_shield_fiveseven.mdl", FIVESEVEN_DRAW, "shieldgun", UseDecrement() != FALSE);
else
return DefaultDeploy("models/v_fiveseven.mdl", "models/p_fiveseven.mdl", FIVESEVEN_DRAW, "onehanded", UseDecrement() != FALSE);
}
/* <256943> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:117 */
NOBODY void CFiveSeven::PrimaryAttack(void)
void CFiveSeven::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 121
// PrimaryAttack(CFiveSeven *const this); // 117
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
FiveSevenFire(1.5 * (1 - m_flAccuracy), 0.2, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
FiveSevenFire(0.255 * (1 - m_flAccuracy), 0.2, FALSE);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
FiveSevenFire(0.075 * (1 - m_flAccuracy), 0.2, FALSE);
}
else
{
FiveSevenFire(0.15 * (1 - m_flAccuracy), 0.2, FALSE);
}
}
/* <2566f9> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:129 */
NOBODY void CFiveSeven::SecondaryAttack(void)
void CFiveSeven::__MAKE_VHOOK(SecondaryAttack)(void)
{
ShieldSecondaryFire(SHIELDGUN_UP, SHIELDGUN_DOWN);
}
/* <256a57> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:134 */
NOBODY void CFiveSeven::FiveSevenFire(float flSpread, float flCycleTime, BOOL fUseSemi)
{
// {
// Vector vecAiming; // 190
// Vector vecSrc; // 192
// Vector vecDir; // 194
// int flag; // 197
// operator+(const Vector *const this,
// const Vector &v); // 183
// Vector(Vector *const this,
// const Vector &v); // 195
// Vector(Vector *const this,
// const Vector &v); // 195
// }
void CFiveSeven::FiveSevenFire(float flSpread, float flCycleTime, BOOL fUseSemi)
{
Vector vecAiming, vecSrc, vecDir;
int flag;
flCycleTime -= 0.05;
if (++m_iShotsFired > 1)
{
return;
}
if (m_flLastFire != 0.0)
{
m_flAccuracy -= (0.275 - (gpGlobals->time - m_flLastFire)) * 0.25;
if (m_flAccuracy > 0.92)
{
m_flAccuracy = 0.92;
}
else if (m_flAccuracy < 0.725)
{
m_flAccuracy = 0.725;
}
}
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;
SetPlayerShieldAnim();
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_57MM, FIVESEVEN_DAMAGE, FIVESEVEN_RANGE_MODIFER, m_pPlayer->pev, false, // TODO: why fiveseven not is IsPistol?
m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireFiveSeven, 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), 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;
m_pPlayer->pev->punchangle.x -= 2;
ResetPlayerShieldAnim();
}
/* <2567d0> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:225 */
NOBODY void CFiveSeven::Reload(void)
void CFiveSeven::__MAKE_VHOOK(Reload)(void)
{
// Reload(CFiveSeven *const this); // 225
if (m_pPlayer->ammo_57mm <= 0)
{
return;
}
if (DefaultReload(FIVESEVEN_MAX_CLIP, FIVESEVEN_RELOAD, FIVESEVEN_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.92;
}
}
/* <256796> ../cstrike/dlls/wpn_shared/wpn_fiveseven.cpp:238 */
NOBODY void CFiveSeven::WeaponIdle(void)
void CFiveSeven::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CFiveSeven *const this); // 238
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(SHIELDGUN_DRAWN_IDLE, UseDecrement() != FALSE);
}
}
else if (m_iClip)
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3.0625;
SendWeaponAnim(FIVESEVEN_IDLE, UseDecrement() != FALSE);
}
}
#ifdef HOOK_GAMEDLL
void CFiveSeven::Spawn(void)
{
Spawn_();
}
void CFiveSeven::Precache(void)
{
Precache_();
}
int CFiveSeven::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CFiveSeven::Deploy(void)
{
return Deploy_();
}
void CFiveSeven::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CFiveSeven::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CFiveSeven::Reload(void)
{
Reload_();
}
void CFiveSeven::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,78 +1,334 @@
#include "precompiled.h"
#define FLASHBANG_MAX_SPEED 250
#define FLASHBANG_MAX_SPEED_SHIELD 180
enum flashbang_e
{
FLASHBANG_IDLE,
FLASHBANG_PULLPIN,
FLASHBANG_THROW,
FLASHBANG_DRAW
};
/* <25ba9b> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:37 */
LINK_ENTITY_TO_CLASS(weapon_flashbang, CFlashbang);
/* <25b72f> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:39 */
NOBODY void CFlashbang::Spawn(void)
{
void CFlashbang::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_FLASHBANG;
SET_MODEL(edict(), "models/w_flashbang.mdl");
pev->dmg = 4;
m_iDefaultAmmo = FLASHBANG_DEFAULT_GIVE;
m_flStartThrow = 0;
m_flReleaseThrow = -1.0;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
// get ready to fall down.
FallInit();
}
/* <25b67a> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:58 */
NOBODY void CFlashbang::Precache(void)
void CFlashbang::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_flashbang.mdl");
PRECACHE_MODEL("models/shield/v_shield_flashbang.mdl");
PRECACHE_SOUND("weapons/flashbang-1.wav");
PRECACHE_SOUND("weapons/flashbang-2.wav");
PRECACHE_SOUND("weapons/pinpull.wav");
}
/* <25b6a1> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:69 */
NOBODY int CFlashbang::GetItemInfo(ItemInfo *p)
int CFlashbang::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "Flashbang";
p->iMaxAmmo1 = MAX_AMMO_FLASHBANG;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = WEAPON_NOCLIP;
p->iSlot = 3;
p->iPosition = 2;
p->iId = m_iId = WEAPON_FLASHBANG;
p->iWeight = FLASHBANG_WEIGHT;
p->iFlags = ITEM_FLAG_LIMITINWORLD | ITEM_FLAG_EXHAUSTIBLE;
return 1;
}
/* <25b7df> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:87 */
NOBODY BOOL CFlashbang::Deploy(void)
BOOL CFlashbang::__MAKE_VHOOK(Deploy)(void)
{
// Deploy(CFlashbang *const this); // 87
m_flReleaseThrow = -1.0;
m_fMaxSpeed = FLASHBANG_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_flashbang.mdl", "models/shield/p_shield_flashbang.mdl", FLASHBANG_DRAW, "shieldgren", UseDecrement() != FALSE);
else
return DefaultDeploy("models/v_flashbang.mdl", "models/p_flashbang.mdl", FLASHBANG_DRAW, "grenade", UseDecrement() != FALSE);
}
/* <25b6fa> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:102 */
NOBODY void CFlashbang::Holster(int skiplocal)
void CFlashbang::__MAKE_VHOOK(Holster)(int skiplocal)
{
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
m_pPlayer->pev->weapons &= ~(1 << WEAPON_FLASHBANG);
DestroyItem();
}
m_flStartThrow = 0;
m_flReleaseThrow = -1.0;
}
/* <25b7a5> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:118 */
NOBODY void CFlashbang::PrimaryAttack(void)
void CFlashbang::__MAKE_VHOOK(PrimaryAttack)(void)
{
// PrimaryAttack(CFlashbang *const this); // 118
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
return;
}
if (!m_flStartThrow && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0)
{
m_flReleaseThrow = 0;
m_flStartThrow = gpGlobals->time;
SendWeaponAnim(FLASHBANG_PULLPIN, UseDecrement() != FALSE);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5;
}
}
/* <25bb65> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:133 */
NOBODY bool CFlashbang::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
bool CFlashbang::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{
if (!m_pPlayer->HasShield() || m_flStartThrow > 0)
{
return false;
}
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iDownAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
m_fMaxSpeed = FLASHBANG_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false;
}
else
{
m_iWeaponState |= WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iUpAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shielded");
m_fMaxSpeed = FLASHBANG_MAX_SPEED_SHIELD;
m_pPlayer->m_bShieldDrawn = true;
}
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed();
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4;
m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.6;
return true;
}
/* <25b81a> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:171 */
NOBODY void CFlashbang::SecondaryAttack(void)
void CFlashbang::__MAKE_VHOOK(SecondaryAttack)(void)
{
// ShieldSecondaryFire(CFlashbang::SecondaryAttack(// int iUpAnim,
// int iDownAnim); // 173
ShieldSecondaryFire(SHIELDGUN_DRAW, SHIELDGUN_DRAWN_IDLE);
}
/* <25bb97> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:176 */
NOBODY void CFlashbang::SetPlayerShieldAnim(void)
void CFlashbang::SetPlayerShieldAnim(void)
{
if (!m_pPlayer->HasShield())
return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield");
else
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
}
/* <25bbb9> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:187 */
NOBODY void CFlashbang::ResetPlayerShieldAnim(void)
void CFlashbang::ResetPlayerShieldAnim(void)
{
if (!m_pPlayer->HasShield())
return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
}
}
/* <25a8bd> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:198 */
NOBODY void CFlashbang::WeaponIdle(void)
void CFlashbang::__MAKE_VHOOK(WeaponIdle)(void)
{
// {
// Vector angThrow; // 210
// float flVel; // 217
// Vector vecSrc; // 223
// Vector vecThrow; // 226
// }
// {
// int iAnim; // 282
// float flRand; // 283
// }
if (m_flReleaseThrow == 0 && m_flStartThrow != 0.0f)
m_flReleaseThrow = gpGlobals->time;
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
return;
if (m_flStartThrow)
{
m_pPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole");
Vector angThrow = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle;
if (angThrow.x < 0)
angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0);
else
angThrow.x = -10 + angThrow.x * ((90 + 10) / 90.0);
float_precision flVel = (90.0 - angThrow.x) * 6.0;
if (flVel > 750.0f)
flVel = 750.0f;
UTIL_MakeVectors(angThrow);
Vector vecSrc = m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16;
Vector vecThrow = gpGlobals->v_forward * flVel + m_pPlayer->pev->velocity;
CGrenade::ShootTimed(m_pPlayer->pev, vecSrc, vecThrow, 1.5);
SendWeaponAnim(FLASHBANG_THROW, UseDecrement() != FALSE);
SetPlayerShieldAnim();
// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
m_flStartThrow = 0;
m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75;
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
// just threw last grenade
// set attack times in the future, and weapon idle in the future so we can see the whole throw
// animation, weapon idle will automatically retire the weapon for us.
// ensure that the animation can finish playing
m_flTimeWeaponIdle = m_flNextSecondaryAttack = m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
}
ResetPlayerShieldAnim();
}
else if (m_flReleaseThrow > 0)
{
// we've finished the throw, restart.
m_flStartThrow = 0;
RetireWeapon();
}
else if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
int iAnim;
float flRand = RANDOM_FLOAT(0, 1);
if (m_pPlayer->HasShield())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
SendWeaponAnim(SHIELDREN_IDLE, UseDecrement() != FALSE);
}
}
else
{
if (flRand <= 0.75)
{
iAnim = FLASHBANG_IDLE;
// how long till we do this again.
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15);
}
else
{
#ifdef REGAMEDLL_FIXES
iAnim = FLASHBANG_IDLE;
#else
// TODO: This is a bug?
iAnim = *(int *)&flRand;
#endif // REGAMEDLL_FIXES
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 75.0 / 30.0;
}
SendWeaponAnim(iAnim, UseDecrement() != FALSE);
}
}
}
/* <25b6d4> ../cstrike/dlls/wpn_shared/wpn_flashbang.cpp:315 */
NOBODY BOOL CFlashbang::CanDeploy(void)
BOOL CFlashbang::__MAKE_VHOOK(CanDeploy)(void)
{
return m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0;
}
#ifdef HOOK_GAMEDLL
void CFlashbang::Spawn(void)
{
Spawn_();
}
void CFlashbang::Precache(void)
{
Precache_();
}
int CFlashbang::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CFlashbang::CanDeploy(void)
{
return CanDeploy_();
}
BOOL CFlashbang::Deploy(void)
{
return Deploy_();
}
void CFlashbang::Holster(int skiplocal)
{
Holster_(skiplocal);
}
void CFlashbang::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CFlashbang::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CFlashbang::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,78 +1,294 @@
#include "precompiled.h"
#define G3SG1_MAX_SPEED 210
#define G3SG1_MAX_SPEED_ZOOM 150
#define G3SG1_DAMAGE 80
#define G3SG1_RANGE_MODIFER 0.98
#define G3SG1_RELOAD_TIME 3.5
enum g3sg1_e
{
G3SG1_IDLE,
G3SG1_SHOOT,
G3SG1_SHOOT2,
G3SG1_RELOAD,
G3SG1_DRAW
};
/* <260ef4> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:48 */
LINK_ENTITY_TO_CLASS(weapon_g3sg1, CG3SG1);
/* <260ca2> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:50 */
NOBODY void CG3SG1::Spawn(void)
void CG3SG1::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_G3SG1;
SET_MODEL(edict(), "models/w_g3sg1.mdl");
m_iDefaultAmmo = G3SG1_DEFAULT_GIVE;
m_flLastFire = 0;
FallInit();
}
/* <260b97> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:63 */
NOBODY void CG3SG1::Precache(void)
void CG3SG1::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_g3sg1.mdl");
PRECACHE_MODEL("models/w_g3sg1.mdl");
PRECACHE_SOUND("weapons/g3sg1-1.wav");
PRECACHE_SOUND("weapons/g3sg1_slide.wav");
PRECACHE_SOUND("weapons/g3sg1_clipin.wav");
PRECACHE_SOUND("weapons/g3sg1_clipout.wav");
PRECACHE_SOUND("weapons/zoom.wav");
m_iShellId = m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireG3SG1 = PRECACHE_EVENT(1, "events/g3sg1.sc");
}
/* <260bbe> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:79 */
NOBODY int CG3SG1::GetItemInfo(ItemInfo *p)
int CG3SG1::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "762Nato";
p->iMaxAmmo1 = MAX_AMMO_762NATO;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = G3SG1_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 3;
p->iId = m_iId = WEAPON_G3SG1;
p->iFlags = 0;
p->iWeight = G3SG1_WEIGHT;
return 1;
}
/* <260c7b> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:96 */
NOBODY BOOL CG3SG1::Deploy(void)
BOOL CG3SG1::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.2;
return DefaultDeploy("models/v_g3sg1.mdl", "models/p_g3sg1.mdl", G3SG1_DRAW, "mp5", UseDecrement() != FALSE);
}
/* <260c17> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:102 */
NOBODY void CG3SG1::SecondaryAttack(void)
void CG3SG1::__MAKE_VHOOK(SecondaryAttack)(void)
{
// EMIT_SOUND(edict_t *entity,
// int channel,
// const char *sample,
// float volume,
// float attenuation); // 129
switch (m_pPlayer->m_iFOV)
{
case 90: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 40; break;
case 40: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15; break;
#ifdef REGAMEDLL_FIXES
default:
#else
case 15:
#endif // REGAMEDLL_FIXES
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; break;
}
m_pPlayer->ResetMaxSpeed();
if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_pPlayer);
}
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
}
/* <260eaa> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:133 */
NOBODY void CG3SG1::PrimaryAttack(void)
void CG3SG1::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 137
// PrimaryAttack(CG3SG1 *const this); // 133
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
G3SG1Fire(0.45, 0.25, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
G3SG1Fire(0.15, 0.25, FALSE);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
G3SG1Fire(0.035, 0.25, FALSE);
}
else
{
G3SG1Fire(0.055, 0.25, FALSE);
}
}
/* <260dab> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:145 */
NOBODY void CG3SG1::G3SG1Fire(float flSpread,float flCycleTime,BOOL fUseAutoAim)
void CG3SG1::G3SG1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 199
// Vector vecSrc; // 201
// int flag; // 206
// Vector vecDir; // 203
// operator+(const Vector *const this,
// const Vector &v); // 193
// Vector(Vector *const this,
// const Vector &v); // 204
// Vector(Vector *const this,
// const Vector &v); // 204
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
if (m_pPlayer->pev->fov == DEFAULT_FOV)
{
flSpread += 0.025;
}
if (m_flLastFire)
{
m_flAccuracy = (gpGlobals->time - m_flLastFire) * 0.3 + 0.55;
if (m_flAccuracy > 0.98)
{
m_flAccuracy = 0.98;
}
}
else
{
m_flAccuracy = 0.98;
}
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 = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, (1 - m_flAccuracy) * flSpread, 8192, 3, BULLET_PLAYER_762MM, G3SG1_DAMAGE, G3SG1_RANGE_MODIFER, 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_usFireG3SG1, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.x * 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.8;
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomFloat(m_pPlayer->random_seed + 4, 0.75, 1.75) + m_pPlayer->pev->punchangle.x * 0.25;
m_pPlayer->pev->punchangle.y += UTIL_SharedRandomFloat(m_pPlayer->random_seed + 5, -0.75, 0.75);
}
/* <260d53> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:234 */
NOBODY void CG3SG1::Reload(void)
void CG3SG1::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 239
// }
// Reload(CG3SG1 *const this); // 234
if (m_pPlayer->ammo_762nato <= 0)
{
return;
}
if (DefaultReload(G3SG1_MAX_CLIP, G3SG1_RELOAD, G3SG1_RELOAD_TIME))
{
m_flAccuracy = 0.2;
m_pPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->pev->fov != DEFAULT_FOV)
{
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15;
SecondaryAttack();
}
}
}
/* <260d18> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:260 */
NOBODY void CG3SG1::WeaponIdle(void)
void CG3SG1::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CG3SG1 *const this); // 260
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
if (m_iClip)
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 60;
SendWeaponAnim(G3SG1_IDLE, UseDecrement() != FALSE);
}
}
}
/* <260bf1> ../cstrike/dlls/wpn_shared/wpn_g3sg1.cpp:277 */
NOBODY float CG3SG1::GetMaxSpeed(void)
float CG3SG1::__MAKE_VHOOK(GetMaxSpeed)(void)
{
return (m_pPlayer->m_iFOV == DEFAULT_FOV) ? G3SG1_MAX_SPEED : G3SG1_MAX_SPEED_ZOOM;
}
#ifdef HOOK_GAMEDLL
void CG3SG1::Spawn(void)
{
Spawn_();
}
void CG3SG1::Precache(void)
{
Precache_();
}
int CG3SG1::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CG3SG1::Deploy(void)
{
return Deploy_();
}
float CG3SG1::GetMaxSpeed(void)
{
return GetMaxSpeed_();
}
void CG3SG1::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CG3SG1::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CG3SG1::Reload(void)
{
Reload_();
}
void CG3SG1::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,68 +1,266 @@
#include "precompiled.h"
#define GALIL_MAX_SPEED 240
#define GALIL_DAMAGE 30
#define GALIL_RANGE_MODIFER 0.98
#define GALIL_RELOAD_TIME 2.45
enum galil_e
{
GALIL_IDLE1,
GALIL_RELOAD,
GALIL_DRAW,
GALIL_SHOOT1,
GALIL_SHOOT2,
GALIL_SHOOT3
};
/* <2c5a1c> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_galil, CGalil);
/* <2c57b0> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:52 */
NOBODY void CGalil::Spawn(void)
void CGalil::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_GALIL;
SET_MODEL(edict(), "models/w_galil.mdl");
m_iDefaultAmmo = GALIL_DEFAULT_GIVE;
FallInit();
}
/* <2c5709> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:65 */
NOBODY void CGalil::Precache(void)
void CGalil::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_galil.mdl");
PRECACHE_MODEL("models/w_galil.mdl");
PRECACHE_SOUND("weapons/galil-1.wav");
PRECACHE_SOUND("weapons/galil-2.wav");
PRECACHE_SOUND("weapons/galil_clipout.wav");
PRECACHE_SOUND("weapons/galil_clipin.wav");
PRECACHE_SOUND("weapons/galil_boltpull.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireGalil = PRECACHE_EVENT(1, "events/galil.sc");
}
/* <2c5730> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:81 */
NOBODY int CGalil::GetItemInfo(ItemInfo *p)
int CGalil::__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 = GALIL_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 17;
p->iId = m_iId = WEAPON_GALIL;
p->iFlags = 0;
p->iWeight = GALIL_WEIGHT;
return 1;
}
/* <2c5789> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:98 */
NOBODY BOOL CGalil::Deploy(void)
BOOL CGalil::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.2;
m_iShotsFired = 0;
iShellOn = 1;
return DefaultDeploy("models/v_galil.mdl", "models/p_galil.mdl", GALIL_DRAW, "ak47", UseDecrement() != FALSE);
}
/* <2c5763> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:107 */
NOBODY void CGalil::SecondaryAttack(void)
void CGalil::__MAKE_VHOOK(SecondaryAttack)(void)
{
;
}
/* <2c59d2> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:111 */
NOBODY void CGalil::PrimaryAttack(void)
void CGalil::__MAKE_VHOOK(PrimaryAttack)(void)
{
// PrimaryAttack(CGalil *const this); // 111
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.15);
return;
}
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
GalilFire(0.04 + (0.3 * m_flAccuracy), 0.0875, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
GalilFire(0.04 + (0.07 * m_flAccuracy), 0.0875, FALSE);
}
else
{
GalilFire(0.0375 * m_flAccuracy, 0.0875, FALSE);
}
}
/* <2c5ae6> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:129 */
NOBODY void CGalil::GalilFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CGalil::GalilFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 165
// Vector vecSrc; // 167
// Vector vecDir; // 169
// int flag; // 172
// operator+(const Vector *const this,
// const Vector &v); // 164
// Vector(Vector *const this,
// const Vector &v); // 170
// Vector(Vector *const this,
// const Vector &v); // 170
// Length2D(const Vector *const this); // 199
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 200) + 0.35;
if (m_flAccuracy > 1.25)
m_flAccuracy = 1.25;
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);
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
GALIL_DAMAGE, GALIL_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_usFireGalil, 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_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
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.28;
if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(1.0, 0.45, 0.28, 0.045, 3.75, 3.0, 7);
}
else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(1.2, 0.5, 0.23, 0.15, 5.5, 3.5, 6);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.6, 0.3, 0.2, 0.0125, 3.25, 2.0, 7);
}
else
{
KickBack(0.65, 0.35, 0.25, 0.015, 3.5, 2.25, 7);
}
}
/* <2c5861> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:210 */
NOBODY void CGalil::Reload(void)
void CGalil::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 215
// }
// Reload(CGalil *const this); // 210
#ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo
if (m_pPlayer->ammo_556nato <= 0)
{
return;
}
#endif // REGAMEDLL_FIXES
if (DefaultReload(GALIL_MAX_CLIP, GALIL_RELOAD, GALIL_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2;
m_iShotsFired = 0;
m_bDelayFire = false;
}
}
/* <2c5826> ../cstrike/dlls/wpn_shared/wpn_galil.cpp:232 */
NOBODY void CGalil::WeaponIdle(void)
void CGalil::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CGalil *const this); // 232
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(GALIL_IDLE1, UseDecrement() != FALSE);
}
}
#ifdef HOOK_GAMEDLL
void CGalil::Spawn(void)
{
Spawn_();
}
void CGalil::Precache(void)
{
Precache_();
}
int CGalil::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CGalil::Deploy(void)
{
return Deploy_();
}
void CGalil::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CGalil::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CGalil::Reload(void)
{
Reload_();
}
void CGalil::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,6 +1,10 @@
#include "precompiled.h"
#define GLOCK18_MAX_SPEED 250
#define GLOCK18_DAMAGE 25
#define GLOCK18_RANGE_MODIFER 0.75
#define GLOCK18_RELOAD_TIME 2.2
enum glock18_e
@ -249,22 +253,9 @@ void CGLOCK18::GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst)
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecDir = gpGlobals->v_forward;
vecAiming = 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
);
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM, GLOCK18_DAMAGE, GLOCK18_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
@ -272,21 +263,8 @@ void CGLOCK18::GLOCK18Fire(float flSpread, float flCycleTime, BOOL bFireBurst)
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
);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireGlock18, 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), m_iClip == 0, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);

View File

@ -1,74 +1,330 @@
#include "precompiled.h"
#define HEGRENADE_MAX_SPEED 250
#define HEGRENADE_MAX_SPEED_SHIELD 180
enum hegrenade_e
{
HEGRENADE_IDLE,
HEGRENADE_PULLPIN,
HEGRENADE_THROW,
HEGRENADE_DRAW
};
/* <26b3cd> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:38 */
LINK_ENTITY_TO_CLASS(weapon_hegrenade, CHEGrenade);
/* <26b07c> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:40 */
NOBODY void CHEGrenade::Spawn(void)
void CHEGrenade::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_HEGRENADE;
SET_MODEL(edict(), "models/w_hegrenade.mdl");
pev->dmg = 4;
m_iDefaultAmmo = HEGRENADE_DEFAULT_GIVE;
m_flStartThrow = 0;
m_flReleaseThrow = -1;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
// get ready to fall down.
FallInit();
}
/* <26afc7> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:59 */
NOBODY void CHEGrenade::Precache(void)
void CHEGrenade::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_hegrenade.mdl");
PRECACHE_MODEL("models/shield/v_shield_hegrenade.mdl");
PRECACHE_SOUND("weapons/hegrenade-1.wav");
PRECACHE_SOUND("weapons/hegrenade-2.wav");
PRECACHE_SOUND("weapons/he_bounce-1.wav");
PRECACHE_SOUND("weapons/pinpull.wav");
m_usCreateExplosion = PRECACHE_EVENT(1, "events/createexplo.sc");
}
/* <26afee> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:74 */
NOBODY int CHEGrenade::GetItemInfo(ItemInfo *p)
int CHEGrenade::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "HEGrenade";
p->iMaxAmmo1 = MAX_AMMO_HEGRENADE;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = WEAPON_NOCLIP;
p->iSlot = 3;
p->iPosition = 1;
p->iId = m_iId = WEAPON_HEGRENADE;
p->iWeight = HEGRENADE_WEIGHT;
p->iFlags = ITEM_FLAG_LIMITINWORLD | ITEM_FLAG_EXHAUSTIBLE;
return 1;
}
/* <26b12c> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:92 */
NOBODY BOOL CHEGrenade::Deploy(void)
BOOL CHEGrenade::__MAKE_VHOOK(Deploy)(void)
{
// Deploy(CHEGrenade *const this); // 92
m_flReleaseThrow = -1;
m_fMaxSpeed = HEGRENADE_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_hegrenade.mdl", "models/shield/p_shield_hegrenade.mdl", HEGRENADE_DRAW, "shieldgren", UseDecrement() != FALSE);
else
return DefaultDeploy("models/v_hegrenade.mdl", "models/p_hegrenade.mdl", HEGRENADE_DRAW, "grenade", UseDecrement() != FALSE);
}
/* <26b047> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:107 */
NOBODY void CHEGrenade::Holster(int skiplocal)
void CHEGrenade::__MAKE_VHOOK(Holster)(int skiplocal)
{
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
m_pPlayer->pev->weapons &= ~(1 << WEAPON_HEGRENADE);
DestroyItem();
}
m_flStartThrow = 0;
m_flReleaseThrow = -1;
}
/* <26b0f2> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:123 */
NOBODY void CHEGrenade::PrimaryAttack(void)
void CHEGrenade::__MAKE_VHOOK(PrimaryAttack)(void)
{
// PrimaryAttack(CHEGrenade *const this); // 123
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
return;
}
if (!m_flStartThrow && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0)
{
m_flReleaseThrow = 0;
m_flStartThrow = gpGlobals->time;
SendWeaponAnim(HEGRENADE_PULLPIN, UseDecrement() != FALSE);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5;
}
}
/* <26b497> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:138 */
NOBODY bool CHEGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
bool CHEGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{
if (!m_pPlayer->HasShield() || m_flStartThrow > 0)
{
return false;
}
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iDownAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
m_fMaxSpeed = HEGRENADE_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false;
}
else
{
m_iWeaponState |= WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iUpAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shielded");
m_fMaxSpeed = HEGRENADE_MAX_SPEED_SHIELD;
m_pPlayer->m_bShieldDrawn = true;
}
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed();
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4;
m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.6;
return true;
}
/* <26b167> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:176 */
NOBODY void CHEGrenade::SecondaryAttack(void)
void CHEGrenade::__MAKE_VHOOK(SecondaryAttack)(void)
{
// ShieldSecondaryFire(CHEGrenade::SecondaryAttack(// int iUpAnim,
// int iDownAnim); // 178
ShieldSecondaryFire(SHIELDGUN_DRAW, SHIELDGUN_DRAWN_IDLE);
}
/* <26b4c9> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:181 */
NOBODY void CHEGrenade::SetPlayerShieldAnim(void)
void CHEGrenade::SetPlayerShieldAnim(void)
{
if (!m_pPlayer->HasShield())
return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield");
else
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
}
/* <26b4eb> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:192 */
NOBODY void CHEGrenade::ResetPlayerShieldAnim(void)
void CHEGrenade::ResetPlayerShieldAnim(void)
{
if (!m_pPlayer->HasShield())
return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
}
}
/* <26a24e> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:202 */
NOBODY void CHEGrenade::WeaponIdle(void)
void CHEGrenade::__MAKE_VHOOK(WeaponIdle)(void)
{
// {
// Vector angThrow; // 214
// float flVel; // 221
// Vector vecSrc; // 227
// Vector vecThrow; // 230
// }
if (m_flReleaseThrow == 0 && m_flStartThrow != 0.0f)
m_flReleaseThrow = gpGlobals->time;
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
return;
if (m_flStartThrow)
{
m_pPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole");
Vector angThrow = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle;
if (angThrow.x < 0)
angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0);
else
angThrow.x = -10 + angThrow.x * ((90 + 10) / 90.0);
float_precision flVel = (90.0 - angThrow.x) * 6.0;
if (flVel > 750.0f)
flVel = 750.0f;
UTIL_MakeVectors(angThrow);
Vector vecSrc = m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16;
Vector vecThrow = gpGlobals->v_forward * flVel + m_pPlayer->pev->velocity;
CGrenade::ShootTimed2(m_pPlayer->pev, vecSrc, vecThrow, 1.5, m_pPlayer->m_iTeam, m_usCreateExplosion);
SendWeaponAnim(HEGRENADE_THROW, UseDecrement() != FALSE);
SetPlayerShieldAnim();
// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
m_flStartThrow = 0;
m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75;
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
// just threw last grenade
// set attack times in the future, and weapon idle in the future so we can see the whole throw
// animation, weapon idle will automatically retire the weapon for us.
// ensure that the animation can finish playing
m_flTimeWeaponIdle = m_flNextSecondaryAttack = m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
}
ResetPlayerShieldAnim();
}
else if (m_flReleaseThrow > 0)
{
// we've finished the throw, restart.
m_flStartThrow = 0;
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
SendWeaponAnim(HEGRENADE_DRAW, UseDecrement() != FALSE);
}
else
{
RetireWeapon();
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15);
m_flReleaseThrow = -1;
}
else if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
if (m_pPlayer->HasShield())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
SendWeaponAnim(SHIELDREN_IDLE, UseDecrement() != FALSE);
}
}
else
{
SendWeaponAnim(HEGRENADE_IDLE, UseDecrement() != FALSE);
// how long till we do this again.
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15);
}
}
}
/* <26b021> ../cstrike/dlls/wpn_shared/wpn_hegrenade.cpp:303 */
NOBODY BOOL CHEGrenade::CanDeploy(void)
BOOL CHEGrenade::__MAKE_VHOOK(CanDeploy)(void)
{
return m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0;
}
#ifdef HOOK_GAMEDLL
void CHEGrenade::Spawn(void)
{
Spawn_();
}
void CHEGrenade::Precache(void)
{
Precache_();
}
int CHEGrenade::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CHEGrenade::CanDeploy(void)
{
return CanDeploy_();
}
BOOL CHEGrenade::Deploy(void)
{
return Deploy_();
}
void CHEGrenade::Holster(int skiplocal)
{
Holster_(skiplocal);
}
void CHEGrenade::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CHEGrenade::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CHEGrenade::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -2,6 +2,7 @@
#define KNIFE_BODYHIT_VOLUME 128
#define KNIFE_WALLHIT_VOLUME 512
#define KNIFE_MAX_SPEED 250
#define KNIFE_MAX_SPEED_SHIELD 180
@ -249,7 +250,7 @@ bool CKnife::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
m_pPlayer->m_bShieldDrawn = true;
}
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) == 0);
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed();
m_flNextPrimaryAttack = GetNextAttackDelay(0.4);

View File

@ -1,64 +1,253 @@
#include "precompiled.h"
#define M249_MAX_SPEED 220
#define M249_DAMAGE 32
#define M249_RANGE_MODIFER 0.97
#define M249_RELOAD_TIME 4.7
enum m249_e
{
M249_IDLE1,
M249_SHOOT1,
M249_SHOOT2,
M249_RELOAD,
M249_DRAW
};
/* <276bbd> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:49 */
LINK_ENTITY_TO_CLASS(weapon_m249, CM249);
/* <276951> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:51 */
NOBODY void CM249::Spawn(void)
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;
FallInit();
}
/* <2768d0> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:65 */
NOBODY void CM249::Precache(void)
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");
m_usFireM249 = PRECACHE_EVENT(1, "events/m249.sc");
}
/* <2768f7> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:84 */
NOBODY int CM249::GetItemInfo(ItemInfo *p)
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;
return 1;
}
/* <27692a> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:101 */
NOBODY BOOL CM249::Deploy(void)
BOOL CM249::__MAKE_VHOOK(Deploy)(void)
{
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 */
NOBODY void CM249::PrimaryAttack(void)
void CM249::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 115
// PrimaryAttack(CM249 *const this); // 111
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 */
NOBODY void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CM249::M249Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 161
// Vector vecSrc; // 163
// Vector vecDir; // 164
// int flag; // 167
// operator+(const Vector *const this,
// const Vector &v); // 156
// Vector(Vector *const this,
// const Vector &v); // 165
// Vector(Vector *const this,
// const Vector &v); // 165
// Length2D(const Vector *const this); // 192
// }
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);
#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);
}
}
/* <276a02> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:201 */
NOBODY void CM249::Reload(void)
void CM249::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 206
// }
// Reload(CM249 *const this); // 201
#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;
}
}
/* <2769c7> ../cstrike/dlls/wpn_shared/wpn_m249.cpp:222 */
NOBODY void CM249::WeaponIdle(void)
void CM249::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CM249 *const this); // 222
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(M249_IDLE1, UseDecrement() != FALSE);
}
#ifdef HOOK_GAMEDLL
void CM249::Spawn(void)
{
Spawn_();
}
void CM249::Precache(void)
{
Precache_();
}
int CM249::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CM249::Deploy(void)
{
return Deploy_();
}
void CM249::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CM249::Reload(void)
{
Reload_();
}
void CM249::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,59 +1,275 @@
#include "precompiled.h"
#define M3_MAX_SPEED 230
#define M3_CONE_VECTOR Vector(0.0675, 0.0675, 0.0) // special shotgun spreads
enum m3_e
{
M3_IDLE,
M3_FIRE1,
M3_FIRE2,
M3_RELOAD,
M3_PUMP,
M3_START_RELOAD,
M3_DRAW,
M3_HOLSTER
};
/* <27bf59> ../cstrike/dlls/wpn_shared/wpn_m3.cpp:52 */
LINK_ENTITY_TO_CLASS(weapon_m3, CM3);
/* <27be6d> ../cstrike/dlls/wpn_shared/wpn_m3.cpp:54 */
NOBODY void CM3::Spawn(void)
void CM3::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_M3;
SET_MODEL(edict(), "models/w_m3.mdl");
m_iDefaultAmmo = M3_DEFAULT_GIVE;
FallInit();
}
/* <27bc83> ../cstrike/dlls/wpn_shared/wpn_m3.cpp:66 */
NOBODY void CM3::Precache(void)
void CM3::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_m3.mdl");
PRECACHE_MODEL("models/w_m3.mdl");
m_iShellId = m_iShell = PRECACHE_MODEL("models/shotgunshell.mdl");
PRECACHE_SOUND("weapons/m3-1.wav");
PRECACHE_SOUND("weapons/m3_insertshell.wav");
PRECACHE_SOUND("weapons/m3_pump.wav");
PRECACHE_SOUND("weapons/reload1.wav");
PRECACHE_SOUND("weapons/reload3.wav");
m_usFireM3 = PRECACHE_EVENT(1, "events/m3.sc");
}
/* <27bcaa> ../cstrike/dlls/wpn_shared/wpn_m3.cpp:84 */
NOBODY int CM3::GetItemInfo(ItemInfo *p)
int CM3::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "buckshot";
p->iMaxAmmo1 = MAX_AMMO_BUCKSHOT;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = M3_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 5;
p->iId = m_iId = WEAPON_M3;
p->iFlags = 0;
p->iWeight = M3_WEIGHT;
return 1;
}
/* <27be46> ../cstrike/dlls/wpn_shared/wpn_m3.cpp:103 */
NOBODY BOOL CM3::Deploy(void)
BOOL CM3::__MAKE_VHOOK(Deploy)(void)
{
return DefaultDeploy("models/v_m3.mdl", "models/p_m3.mdl", M3_DRAW, "shotgun", UseDecrement() != FALSE);
}
/* <27bcdd> ../cstrike/dlls/wpn_shared/wpn_m3.cpp:109 */
NOBODY void CM3::PrimaryAttack(void)
void CM3::__MAKE_VHOOK(PrimaryAttack)(void)
{
// {
// Vector vecAiming; // 147
// Vector vecSrc; // 148
// int flag; // 152
// operator+(const Vector *const this,
// const Vector &v); // 146
// Vector(Vector *const this,
// const Vector &v); // 147
// Vector(Vector *const this,
// const Vector &v); // 149
// Vector(Vector *const this,
// const Vector &v); // 149
// Vector(Vector *const this,
// float X,
// float Y,
// float Z); // 149
// edict(CBaseEntity *const this); // 159
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.15);
return;
}
if (m_iClip <= 0)
{
Reload();
if (!m_iClip)
{
PlayEmptySound();
}
if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer);
}
m_flNextPrimaryAttack = GetNextAttackDelay(1);
return;
}
m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
m_pPlayer->FireBullets(9, vecSrc, vecAiming, M3_CONE_VECTOR, 3000, BULLET_PLAYER_BUCKSHOT, 0);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireM3, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, FALSE, FALSE);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{
// HEV suit - indicate out of ammo condition
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
}
if (m_iClip != 0)
m_flPumpTime = UTIL_WeaponTimeBase() + 0.5;
m_flNextPrimaryAttack = GetNextAttackDelay(0.875);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.875;
if (m_iClip != 0)
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.5;
else
m_flTimeWeaponIdle = 0.875;
m_fInSpecialReload = 0;
if (m_pPlayer->pev->flags & FL_ONGROUND)
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_pPlayer->random_seed + 1, 4, 6);
else
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_pPlayer->random_seed + 1, 8, 11);
m_pPlayer->m_flEjectBrass = gpGlobals->time + 0.45;
}
/* <27bf1e> ../cstrike/dlls/wpn_shared/wpn_m3.cpp:182 */
NOBODY void CM3::Reload(void)
void CM3::__MAKE_VHOOK(Reload)(void)
{
// Reload(CM3 *const this); // 182
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 || m_iClip == M3_MAX_CLIP)
return;
// don't reload until recoil is done
if (m_flNextPrimaryAttack > UTIL_WeaponTimeBase())
return;
// check to see if we're ready to reload
if (m_fInSpecialReload == 0)
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
SendWeaponAnim(M3_START_RELOAD, UseDecrement() != FALSE);
m_fInSpecialReload = 1;
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.55;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.55;
m_flNextPrimaryAttack = GetNextAttackDelay(0.55);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.55;
}
else if (m_fInSpecialReload == 1)
{
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
return;
// was waiting for gun to move to side
m_fInSpecialReload = 2;
SendWeaponAnim(M3_RELOAD, UseDecrement());
m_flNextReload = UTIL_WeaponTimeBase() + 0.45;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.45;
}
else
{
m_iClip++;
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
m_pPlayer->ammo_buckshot--;
m_fInSpecialReload = 1;
}
}
/* <27bee3> ../cstrike/dlls/wpn_shared/wpn_m3.cpp:228 */
NOBODY void CM3::WeaponIdle(void)
void CM3::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CM3 *const this); // 228
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_5DEGREES);
if (m_flPumpTime && m_flPumpTime < UTIL_WeaponTimeBase())
{
m_flPumpTime = 0;
}
if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase())
{
if (m_iClip == 0 && m_fInSpecialReload == 0 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
Reload();
}
else if (m_fInSpecialReload != 0)
{
if (m_iClip != M3_MAX_CLIP && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
Reload();
}
else
{
// reload debounce has timed out
SendWeaponAnim(M3_PUMP, UseDecrement() != FALSE);
m_fInSpecialReload = 0;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.5;
}
}
else
{
SendWeaponAnim(M3_IDLE, UseDecrement() != FALSE);
}
}
}
#ifdef HOOK_GAMEDLL
void CM3::Spawn(void)
{
Spawn_();
}
void CM3::Precache(void)
{
Precache_();
}
int CM3::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CM3::Deploy(void)
{
return Deploy_();
}
void CM3::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CM3::Reload(void)
{
Reload_();
}
void CM3::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,80 +1,342 @@
#include "precompiled.h"
#define M4A1_MAX_SPEED 230
#define M4A1_DAMAGE 32
#define M4A1_DAMAGE_SIL 33
#define M4A1_RANGE_MODIFER 0.97
#define M4A1_RANGE_MODIFER_SIL 0.95
#define M4A1_RELOAD_TIME 3.05
enum m4a1_e
{
M4A1_IDLE,
M4A1_SHOOT1,
M4A1_SHOOT2,
M4A1_SHOOT3,
M4A1_RELOAD,
M4A1_DRAW,
M4A1_ATTACH_SILENCER,
M4A1_UNSIL_IDLE,
M4A1_UNSIL_SHOOT1,
M4A1_UNSIL_SHOOT2,
M4A1_UNSIL_SHOOT3,
M4A1_UNSIL_RELOAD,
M4A1_UNSIL_DRAW,
M4A1_DETACH_SILENCER
};
/* <281342> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:60 */
LINK_ENTITY_TO_CLASS(weapon_m4a1, CM4A1);
/* <281059> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:62 */
NOBODY void CM4A1::Spawn(void)
void CM4A1::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_M4A1;
SET_MODEL(edict(), "models/w_m4a1.mdl");
m_iDefaultAmmo = M4A1_DEFAULT_GIVE;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
m_bDelayFire = true;
FallInit();
}
/* <280fb2> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:77 */
NOBODY void CM4A1::Precache(void)
void CM4A1::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_m4a1.mdl");
PRECACHE_MODEL("models/w_m4a1.mdl");
PRECACHE_SOUND("weapons/m4a1-1.wav");
PRECACHE_SOUND("weapons/m4a1_unsil-1.wav");
PRECACHE_SOUND("weapons/m4a1_unsil-2.wav");
PRECACHE_SOUND("weapons/m4a1_clipin.wav");
PRECACHE_SOUND("weapons/m4a1_clipout.wav");
PRECACHE_SOUND("weapons/m4a1_boltpull.wav");
PRECACHE_SOUND("weapons/m4a1_deploy.wav");
PRECACHE_SOUND("weapons/m4a1_silencer_on.wav");
PRECACHE_SOUND("weapons/m4a1_silencer_off.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireM4A1 = PRECACHE_EVENT(1, "events/m4a1.sc");
}
/* <280fd9> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:97 */
NOBODY int CM4A1::GetItemInfo(ItemInfo *p)
int CM4A1::__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 = M4A1_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 6;
p->iId = m_iId = WEAPON_M4A1;
p->iFlags = 0;
p->iWeight = M4A1_WEIGHT;
return 1;
}
/* <281169> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:114 */
NOBODY BOOL CM4A1::Deploy(void)
BOOL CM4A1::__MAKE_VHOOK(Deploy)(void)
{
// Deploy(CM4A1 *const this); // 114
m_bDelayFire = true;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
iShellOn = 1;
if (m_iWeaponState & WPNSTATE_M4A1_SILENCED)
return DefaultDeploy("models/v_m4a1.mdl", "models/p_m4a1.mdl", M4A1_DRAW, "rifle", UseDecrement() != FALSE);
else
return DefaultDeploy("models/v_m4a1.mdl", "models/p_m4a1.mdl", M4A1_UNSIL_DRAW, "rifle", UseDecrement() != FALSE);
}
/* <281032> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:127 */
NOBODY void CM4A1::SecondaryAttack(void)
void CM4A1::__MAKE_VHOOK(SecondaryAttack)(void)
{
if (m_iWeaponState & WPNSTATE_M4A1_SILENCED)
{
m_iWeaponState &= ~WPNSTATE_M4A1_SILENCED;
SendWeaponAnim(M4A1_DETACH_SILENCER, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "rifle");
}
else
{
m_iWeaponState |= WPNSTATE_M4A1_SILENCED;
SendWeaponAnim(M4A1_ATTACH_SILENCER, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "rifle");
}
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 2.0;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.0;
m_flNextPrimaryAttack = GetNextAttackDelay(2.0);
}
/* <2812fd> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:149 */
NOBODY void CM4A1::PrimaryAttack(void)
void CM4A1::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 155
// Length2D(const Vector *const this); // 164
if (m_iWeaponState & WPNSTATE_M4A1_SILENCED)
{
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
M4A1Fire(0.035 + (0.4 * m_flAccuracy), 0.0875, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
M4A1Fire(0.035 + (0.07 * m_flAccuracy), 0.0875, FALSE);
}
else
{
M4A1Fire(0.025 * m_flAccuracy, 0.0875, FALSE);
}
}
else
{
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
M4A1Fire(0.035 + (0.4 * m_flAccuracy), 0.0875, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
M4A1Fire(0.035 + (0.07 * m_flAccuracy), 0.0875, FALSE);
}
else
{
M4A1Fire(0.02 * m_flAccuracy, 0.0875, FALSE);
}
}
}
/* <28140c> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:173 */
NOBODY void CM4A1::M4A1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CM4A1::M4A1Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 210
// Vector vecSrc; // 212
// Vector vecDir; // 213
// int flag; // 223
// operator+(const Vector *const this,
// const Vector &v); // 204
// Vector(Vector *const this,
// const Vector &v); // 220
// Vector(Vector *const this,
// const Vector &v); // 220
// Length2D(const Vector *const this); // 246
// Vector(Vector *const this,
// const Vector &v); // 216
// Vector(Vector *const this,
// const Vector &v); // 216
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 220) + 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->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;
if (m_iWeaponState & WPNSTATE_M4A1_SILENCED)
{
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
M4A1_DAMAGE_SIL, M4A1_RANGE_MODIFER_SIL, m_pPlayer->pev, false, m_pPlayer->random_seed);
}
else
{
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM,
M4A1_DAMAGE, M4A1_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
}
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
m_pPlayer->ammo_556nato--;
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireM4A1, 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), (m_iWeaponState & WPNSTATE_M4A1_SILENCED) == WPNSTATE_M4A1_SILENCED, 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.5;
if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(1.0, 0.45, 0.28, 0.045, 3.75, 3.0, 7);
}
else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(1.2, 0.5, 0.23, 0.15, 5.5, 3.5, 6);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.6, 0.3, 0.2, 0.0125, 3.25, 2.0, 7);
}
else
{
KickBack(0.65, 0.35, 0.25, 0.015, 3.5, 2.25, 7);
}
}
/* <28110b> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:257 */
NOBODY void CM4A1::Reload(void)
void CM4A1::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 262
// }
// Reload(CM4A1 *const this); // 257
int iResult;
if (m_pPlayer->ammo_556nato <= 0)
return;
if ((m_iWeaponState & WPNSTATE_M4A1_SILENCED) == WPNSTATE_M4A1_SILENCED)
{
iResult = DefaultReload(M4A1_MAX_CLIP, M4A1_RELOAD, M4A1_RELOAD_TIME);
}
else
iResult = DefaultReload(M4A1_MAX_CLIP, M4A1_UNSIL_RELOAD, M4A1_RELOAD_TIME);
if (iResult)
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2;
m_iShotsFired = 0;
m_bDelayFire = false;
}
}
/* <2810cf> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:279 */
NOBODY void CM4A1::WeaponIdle(void)
void CM4A1::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CM4A1 *const this); // 279
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
SendWeaponAnim((m_iWeaponState & WPNSTATE_M4A1_SILENCED) == WPNSTATE_M4A1_SILENCED ? M4A1_IDLE : M4A1_UNSIL_IDLE, UseDecrement() != FALSE);
}
/* <28100c> ../cstrike/dlls/wpn_shared/wpn_m4a1.cpp:296 */
float CM4A1::__MAKE_VHOOK(GetMaxSpeed)(void)
{
return M4A1_MAX_SPEED;
}
#ifdef HOOK_GAMEDLL
void CM4A1::Spawn(void)
{
Spawn_();
}
void CM4A1::Precache(void)
{
Precache_();
}
int CM4A1::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CM4A1::Deploy(void)
{
return Deploy_();
}
float CM4A1::GetMaxSpeed(void)
{
return 230.0f;
return GetMaxSpeed_();
}
void CM4A1::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CM4A1::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CM4A1::Reload(void)
{
Reload_();
}
void CM4A1::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,60 +1,243 @@
#include "precompiled.h"
#define MAC10_MAX_SPEED 250
#define MAC10_DAMAGE 29
#define MAC10_RANGE_MODIFER 0.82
#define MAC10_RELOAD_TIME 3.15
enum mac10_e
{
MAC10_IDLE1,
MAC10_RELOAD,
MAC10_DRAW,
MAC10_SHOOT1,
MAC10_SHOOT2,
MAC10_SHOOT3
};
/* <2867c0> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_mac10, CMAC10);
/* <28658a> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:52 */
NOBODY void CMAC10::Spawn(void)
void CMAC10::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_MAC10;
SET_MODEL(edict(), "models/w_mac10.mdl");
m_iDefaultAmmo = MAC10_DEFAULT_GIVE;
m_flAccuracy = 0.15;
m_bDelayFire = false;
FallInit();
}
/* <286509> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:66 */
NOBODY void CMAC10::Precache(void)
void CMAC10::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_mac10.mdl");
PRECACHE_MODEL("models/w_mac10.mdl");
PRECACHE_SOUND("weapons/mac10-1.wav");
PRECACHE_SOUND("weapons/mac10_clipout.wav");
PRECACHE_SOUND("weapons/mac10_clipin.wav");
PRECACHE_SOUND("weapons/mac10_boltpull.wav");
m_iShell = PRECACHE_MODEL("models/pshell.mdl");
m_usFireMAC10 = PRECACHE_EVENT(1, "events/mac10.sc");
}
/* <286530> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:82 */
NOBODY int CMAC10::GetItemInfo(ItemInfo *p)
{
int CMAC10::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "45acp";
p->iMaxAmmo1 = MAX_AMMO_45ACP;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = MAC10_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 13;
p->iId = m_iId = WEAPON_MAC10;
p->iFlags = 0;
p->iWeight = MAC10_WEIGHT;
return 1;
}
/* <286563> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:99 */
NOBODY BOOL CMAC10::Deploy(void)
BOOL CMAC10::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.15;
iShellOn = 1;
m_bDelayFire = false;
return DefaultDeploy("models/v_mac10.mdl", "models/p_mac10.mdl", MAC10_DRAW, "onehanded", UseDecrement() != FALSE);
}
/* <286786> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:108 */
NOBODY void CMAC10::PrimaryAttack(void)
void CMAC10::__MAKE_VHOOK(PrimaryAttack)(void)
{
// PrimaryAttack(CMAC10 *const this); // 108
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
MAC10Fire(0.375 * m_flAccuracy, 0.07, FALSE);
}
else
{
MAC10Fire(0.03 * m_flAccuracy, 0.07, FALSE);
}
}
/* <28688a> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:116 */
NOBODY void CMAC10::MAC10Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CMAC10::MAC10Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 159
// Vector vecSrc; // 161
// Vector vecDir; // 162
// int flag; // 165
// operator+(const Vector *const this,
// const Vector &v); // 153
// Vector(Vector *const this,
// const Vector &v); // 163
// Vector(Vector *const this,
// const Vector &v); // 163
// Length2D(const Vector *const this); // 190
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 200) + 0.6;
if (m_flAccuracy > 1.65)
m_flAccuracy = 1.65;
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 = DIM_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_45ACP,
MAC10_DAMAGE, MAC10_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_usFireMAC10, 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() + 2;
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(1.3, 0.55, 0.4, 0.05, 4.75, 3.75, 5);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(0.9, 0.45, 0.25, 0.035, 3.5, 2.75, 7);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.75, 0.4, 0.175, 0.03, 2.75, 2.5, 10);
}
else
{
KickBack(0.775, 0.425, 0.2, 0.03, 3.0, 2.75, 9);
}
}
/* <28663b> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:199 */
NOBODY void CMAC10::Reload(void)
void CMAC10::__MAKE_VHOOK(Reload)(void)
{
// Reload(CMAC10 *const this); // 199
if (m_pPlayer->ammo_45acp <= 0)
{
return;
}
if (DefaultReload(MAC10_MAX_CLIP, MAC10_RELOAD, MAC10_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0;
m_iShotsFired = 0;
}
}
/* <286600> ../cstrike/dlls/wpn_shared/wpn_mac10.cpp:213 */
NOBODY void CMAC10::WeaponIdle(void)
void CMAC10::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CMAC10 *const this); // 213
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(MAC10_IDLE1, UseDecrement() != FALSE);
}
#ifdef HOOK_GAMEDLL
void CMAC10::Spawn(void)
{
Spawn_();
}
void CMAC10::Precache(void)
{
Precache_();
}
int CMAC10::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CMAC10::Deploy(void)
{
return Deploy_();
}
void CMAC10::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CMAC10::Reload(void)
{
Reload_();
}
void CMAC10::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,60 +1,246 @@
#include "precompiled.h"
#define MP5N_MAX_SPEED 250
#define MP5N_DAMAGE 26
#define MP5N_RANGE_MODIFER 0.84
#define MP5N_RELOAD_TIME 2.63
enum mp5n_e
{
MP5N_IDLE1,
MP5N_RELOAD,
MP5N_DRAW,
MP5N_SHOOT1,
MP5N_SHOOT2,
MP5N_SHOOT3
};
/* <28bbf6> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_mp5navy, CMP5N);
/* <28b9c0> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:52 */
NOBODY void CMP5N::Spawn(void)
void CMP5N::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_MP5N;
SET_MODEL(edict(), "models/w_mp5.mdl");
m_iDefaultAmmo = MP5NAVY_DEFAULT_GIVE;
m_flAccuracy = 0;
m_bDelayFire = false;
FallInit();
}
/* <28b93f> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:66 */
NOBODY void CMP5N::Precache(void)
void CMP5N::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_mp5.mdl");
PRECACHE_MODEL("models/w_mp5.mdl");
PRECACHE_SOUND("weapons/mp5-1.wav");
PRECACHE_SOUND("weapons/mp5-2.wav");
PRECACHE_SOUND("weapons/mp5_clipout.wav");
PRECACHE_SOUND("weapons/mp5_clipin.wav");
PRECACHE_SOUND("weapons/mp5_slideback.wav");
m_iShell = PRECACHE_MODEL("models/pshell.mdl");
m_usFireMP5N = PRECACHE_EVENT(1, "events/mp5n.sc");
}
/* <28b966> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:83 */
NOBODY int CMP5N::GetItemInfo(ItemInfo *p)
int CMP5N::__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 = MP5N_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 7;
p->iId = m_iId = WEAPON_MP5N;
p->iFlags = 0;
p->iWeight = MP5NAVY_WEIGHT;
return 1;
}
/* <28b999> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:100 */
NOBODY BOOL CMP5N::Deploy(void)
{
BOOL CMP5N::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0;
m_bDelayFire = false;
iShellOn = 1;
return DefaultDeploy("models/v_mp5.mdl", "models/p_mp5.mdl", MP5N_DRAW, "mp5", UseDecrement() != FALSE);
}
/* <28bbbc> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:109 */
NOBODY void CMP5N::PrimaryAttack(void)
void CMP5N::__MAKE_VHOOK(PrimaryAttack)(void)
{
// PrimaryAttack(CMP5N *const this); // 109
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
MP5NFire(0.2 * m_flAccuracy, 0.075, FALSE);
}
else
{
MP5NFire(0.04 * m_flAccuracy, 0.075, FALSE);
}
}
/* <28bcc0> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:117 */
NOBODY void CMP5N::MP5NFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CMP5N::MP5NFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// int flag; // 154
// Vector vecAiming; // 161
// Vector vecSrc; // 163
// Vector vecDir; // 164
// operator+(const Vector *const this,
// const Vector &v); // 152
// Vector(Vector *const this,
// const Vector &v); // 165
// Vector(Vector *const this,
// const Vector &v); // 165
// Length2D(const Vector *const this); // 192
// }
_LOG_TRACE
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired) / 220.1) + 0.45;
if (m_flAccuracy > 0.75)
m_flAccuracy = 0.75;
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);
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM,
MP5N_DAMAGE, MP5N_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_usFireMP5N, 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_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
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() + 2;
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(0.9, 0.475, 0.35, 0.0425, 5.0, 3.0, 6);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(0.5, 0.275, 0.2, 0.03, 3.0, 2.0, 10);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.225, 0.15, 0.1, 0.015, 2.0, 1.0, 10);
}
else
{
KickBack(0.25, 0.175, 0.125, 0.02, 2.25, 1.25, 10);
}
}
/* <28ba71> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:201 */
NOBODY void CMP5N::Reload(void)
void CMP5N::__MAKE_VHOOK(Reload)(void)
{
// Reload(CMP5N *const this); // 201
if (m_pPlayer->ammo_9mm <= 0)
{
return;
}
if (DefaultReload(MP5N_MAX_CLIP, MP5N_RELOAD, MP5N_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0;
m_iShotsFired = 0;
}
}
/* <28ba36> ../cstrike/dlls/wpn_shared/wpn_mp5navy.cpp:215 */
NOBODY void CMP5N::WeaponIdle(void)
void CMP5N::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CMP5N *const this); // 215
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(MP5N_IDLE1, UseDecrement() != FALSE);
}
#ifdef HOOK_GAMEDLL
void CMP5N::Spawn(void)
{
Spawn_();
}
void CMP5N::Precache(void)
{
Precache_();
}
int CMP5N::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CMP5N::Deploy(void)
{
return Deploy_();
}
void CMP5N::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CMP5N::Reload(void)
{
Reload_();
}
void CMP5N::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,69 +1,292 @@
#include "precompiled.h"
#define P228_MAX_SPEED 250
#define P228_DAMAGE 32
#define P228_RANGE_MODIFER 0.8
#define P228_RELOAD_TIME 2.7
enum p228_e
{
P228_IDLE,
P228_SHOOT1,
P228_SHOOT2,
P228_SHOOT3,
P228_SHOOT_EMPTY,
P228_RELOAD,
P228_DRAW
};
enum p228_shield_e
{
P228_SHIELD_IDLE,
P228_SHIELD_SHOOT1,
P228_SHIELD_SHOOT2,
P228_SHIELD_SHOOT_EMPTY,
P228_SHIELD_RELOAD,
P228_SHIELD_DRAW,
P228_SHIELD_IDLE_UP,
P228_SHIELD_UP,
P228_SHIELD_DOWN
};
/* <291149> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:63 */
LINK_ENTITY_TO_CLASS(weapon_p228, CP228);
/* <290eb8> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:65 */
NOBODY void CP228::Spawn(void)
void CP228::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_P228;
SET_MODEL(ENT(pev), "models/w_p228.mdl");
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_iDefaultAmmo = P228_DEFAULT_GIVE;
m_flAccuracy = 0.9;
FallInit();
}
/* <290e37> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:80 */
NOBODY void CP228::Precache(void)
void CP228::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_p228.mdl");
PRECACHE_MODEL("models/w_p228.mdl");
PRECACHE_MODEL("models/shield/v_shield_p228.mdl");
PRECACHE_SOUND("weapons/p228-1.wav");
PRECACHE_SOUND("weapons/p228_clipout.wav");
PRECACHE_SOUND("weapons/p228_clipin.wav");
PRECACHE_SOUND("weapons/p228_sliderelease.wav");
PRECACHE_SOUND("weapons/p228_slidepull.wav");
m_iShell = PRECACHE_MODEL("models/pshell.mdl");
m_usFireP228 = PRECACHE_EVENT(1, "events/p228.sc");
}
/* <290e5e> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:98 */
NOBODY int CP228::GetItemInfo(ItemInfo *p)
int CP228::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "357SIG";
p->iMaxAmmo1 = MAX_AMMO_357SIG;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = P228_MAX_CLIP;
p->iSlot = 1;
p->iPosition = 3;
p->iId = m_iId = WEAPON_P228;
p->iFlags = 0;
p->iWeight = P228_WEIGHT;
return 1;
}
/* <290fc6> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:115 */
NOBODY BOOL CP228::Deploy(void)
BOOL CP228::__MAKE_VHOOK(Deploy)(void)
{
// Deploy(CP228 *const this); // 115
m_flAccuracy = 0.9;
m_fMaxSpeed = P228_MAX_SPEED;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_pPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_p228.mdl", "models/shield/p_shield_p228.mdl", P228_SHIELD_DRAW, "shieldgun", UseDecrement() != FALSE);
else
return DefaultDeploy("models/v_p228.mdl", "models/p_p228.mdl", P228_DRAW, "onehanded", UseDecrement() != FALSE);
}
/* <2910ff> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:130 */
NOBODY void CP228::PrimaryAttack(void)
void CP228::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 134
// PrimaryAttack(CP228 *const this); // 130
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
P228Fire(1.5 * (1 - m_flAccuracy), 0.2, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
P228Fire(0.255 * (1 - m_flAccuracy), 0.2, FALSE);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
P228Fire(0.075 * (1 - m_flAccuracy), 0.2, FALSE);
}
else
{
P228Fire(0.15 * (1 - m_flAccuracy), 0.2, FALSE);
}
}
/* <290e91> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:142 */
NOBODY void CP228::SecondaryAttack(void)
void CP228::__MAKE_VHOOK(SecondaryAttack)(void)
{
ShieldSecondaryFire(SHIELDGUN_UP, SHIELDGUN_DOWN);
}
/* <291213> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:147 */
NOBODY void CP228::P228Fire(float flSpread, float flCycleTime, BOOL fUseSemi)
void CP228::P228Fire(float flSpread, float flCycleTime, BOOL fUseSemi)
{
// {
// Vector vecAiming; // 203
// Vector vecSrc; // 205
// Vector vecDir; // 206
// int flag; // 210
// operator+(const Vector *const this,
// const Vector &v); // 196
// Vector(Vector *const this,
// const Vector &v); // 207
// Vector(Vector *const this,
// const Vector &v); // 207
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
flCycleTime -= 0.05;
if (++m_iShotsFired > 1)
{
return;
}
if (m_flLastFire != 0.0)
{
m_flAccuracy -= (0.325 - (gpGlobals->time - m_flLastFire)) * 0.3;
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;
SetPlayerShieldAnim();
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_357SIG, P228_DAMAGE, P228_RANGE_MODIFER, 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_usFireP228, 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), 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;
m_pPlayer->pev->punchangle.x -= 2;
ResetPlayerShieldAnim();
}
/* <290f69> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:241 */
NOBODY void CP228::Reload(void)
void CP228::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 246
// }
// Reload(CP228 *const this); // 241
if (m_pPlayer->ammo_357sig <= 0)
{
return;
}
if (DefaultReload(P228_MAX_CLIP, m_pPlayer->HasShield() ? P228_SHIELD_RELOAD : P228_RELOAD, P228_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.9;
}
}
/* <290f2e> ../cstrike/dlls/wpn_shared/wpn_p228.cpp:261 */
NOBODY void CP228::WeaponIdle(void)
void CP228::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CP228 *const this); // 261
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(P228_SHIELD_IDLE_UP, UseDecrement() != FALSE);
}
}
else if (m_iClip)
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3.0625;
SendWeaponAnim(P228_IDLE, UseDecrement() != FALSE);
}
}
#ifdef HOOK_GAMEDLL
void CP228::Spawn(void)
{
Spawn_();
}
void CP228::Precache(void)
{
Precache_();
}
int CP228::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CP228::Deploy(void)
{
return Deploy_();
}
void CP228::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CP228::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CP228::Reload(void)
{
Reload_();
}
void CP228::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,6 +1,10 @@
#include "precompiled.h"
#define P90_MAX_SPEED 245
#define P90_DAMAGE 21
#define P90_RANGE_MODIFER 0.885
#define P90_RELOAD_TIME 3.4
enum p90_e
@ -135,22 +139,9 @@ void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecDir = gpGlobals->v_forward;
vecAiming = gpGlobals->v_forward;
vecAiming = m_pPlayer->FireBullets3
(
vecSrc,
vecDir,
flSpread,
8192,
1,
BULLET_PLAYER_57MM,
21,
0.885,
m_pPlayer->pev,
false,
m_pPlayer->random_seed
);
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_57MM, P90_DAMAGE, P90_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
@ -158,21 +149,8 @@ void CP90::P90Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
flag = 0;
#endif // CLIENT_WEAPONS
PLAYBACK_EVENT_FULL
(
flag,
m_pPlayer->edict(),
m_usFireP90,
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),
5,
FALSE
);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireP90, 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), 5, FALSE);
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);

View File

@ -1,79 +1,295 @@
#include "precompiled.h"
#define SCOUT_MAX_SPEED 260
#define SCOUT_MAX_SPEED_ZOOM 220
#define SCOUT_DAMAGE 75
#define SCOUT_RANGE_MODIFER 0.98
#define SCOUT_RELOAD_TIME 2
enum scout_e
{
SCOUT_IDLE,
SCOUT_SHOOT,
SCOUT_SHOOT2,
SCOUT_RELOAD,
SCOUT_DRAW
};
/* <29ba7b> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:48 */
LINK_ENTITY_TO_CLASS(weapon_scout, CSCOUT);
/* <29b7ee> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:50 */
NOBODY void CSCOUT::Spawn(void)
void CSCOUT::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_SCOUT;
SET_MODEL(edict(), "models/w_scout.mdl");
m_iDefaultAmmo = SCOUT_DEFAULT_GIVE;
FallInit();
}
/* <29b70a> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:62 */
NOBODY void CSCOUT::Precache(void)
void CSCOUT::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_scout.mdl");
PRECACHE_MODEL("models/w_scout.mdl");
PRECACHE_SOUND("weapons/scout_fire-1.wav");
PRECACHE_SOUND("weapons/scout_bolt.wav");
PRECACHE_SOUND("weapons/scout_clipin.wav");
PRECACHE_SOUND("weapons/scout_clipout.wav");
PRECACHE_SOUND("weapons/zoom.wav");
m_iShellId = m_iShell = PRECACHE_MODEL("models/rshell_big.mdl");
m_usFireScout = PRECACHE_EVENT(1, "events/scout.sc");
}
/* <29b731> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:79 */
NOBODY int CSCOUT::GetItemInfo(ItemInfo *p)
int CSCOUT::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "762Nato";
p->iMaxAmmo1 = MAX_AMMO_762NATO;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = SCOUT_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 9;
p->iId = m_iId = WEAPON_SCOUT;
p->iFlags = 0;
p->iWeight = SCOUT_WEIGHT;
return 1;
}
/* <29b8f7> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:96 */
NOBODY BOOL CSCOUT::Deploy(void)
BOOL CSCOUT::__MAKE_VHOOK(Deploy)(void)
{
// Deploy(CSCOUT *const this); // 96
if (DefaultDeploy("models/v_scout.mdl", "models/p_scout.mdl", SCOUT_DRAW, "rifle", UseDecrement() != FALSE))
{
m_flNextPrimaryAttack = m_pPlayer->m_flNextAttack = GetNextAttackDelay(1.25);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1;
return TRUE;
}
return FALSE;
}
/* <29b78a> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:109 */
NOBODY void CSCOUT::SecondaryAttack(void)
void CSCOUT::__MAKE_VHOOK(SecondaryAttack)(void)
{
// EMIT_SOUND(edict_t *entity,
// int channel,
// const char *sample,
// float volume,
// float attenuation); // 136
switch (m_pPlayer->m_iFOV)
{
case 90: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 40; break;
case 40: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15; break;
#ifdef REGAMEDLL_FIXES
default:
#else
case 15:
#endif // REGAMEDLL_FIXES
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; break;
}
if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_pPlayer);
}
m_pPlayer->ResetMaxSpeed();
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
}
/* <29ba31> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:140 */
NOBODY void CSCOUT::PrimaryAttack(void)
void CSCOUT::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 144
// PrimaryAttack(CSCOUT *const this); // 140
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
SCOUTFire(0.2, 1.25, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 170)
{
SCOUTFire(0.075, 1.25, FALSE);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
SCOUTFire(0, 1.25, FALSE);
}
else
{
SCOUTFire(0.007, 1.25, FALSE);
}
}
/* <29bb45> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:154 */
NOBODY void CSCOUT::SCOUTFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CSCOUT::SCOUTFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 197
// Vector vecSrc; // 200
// Vector vecDir; // 202
// int flag; // 206
// operator+(const Vector *const this,
// const Vector &v); // 188
// Vector(Vector *const this,
// const Vector &v); // 203
// Vector(Vector *const this,
// const Vector &v); // 203
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
if (m_pPlayer->pev->fov != DEFAULT_FOV)
{
m_pPlayer->m_bResumeZoom = true;
m_pPlayer->m_iLastZoom = m_pPlayer->m_iFOV;
// reset a fov
m_pPlayer->m_iFOV = DEFAULT_FOV;
#ifdef REGAMEDLL_FIXES
m_pPlayer->pev->fov = DEFAULT_FOV;
#endif // REGAMEDLL_FIXES
}
else
{
flSpread += 0.025;
}
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->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
m_pPlayer->m_flEjectBrass = gpGlobals->time + 0.56;
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 3, BULLET_PLAYER_762MM, SCOUT_DAMAGE, SCOUT_RANGE_MODIFER, 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_usFireScout, 0, (float *)&g_vecZero, (float *)&m_pPlayer->pev->angles, (vecDir.x * 1000), (vecDir.y * 1000),
(int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.x * 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.8;
m_pPlayer->pev->punchangle.x -= 2;
}
/* <29b89e> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:232 */
NOBODY void CSCOUT::Reload(void)
void CSCOUT::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 234
// }
// Reload(CSCOUT *const this); // 232
#ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo
if (m_pPlayer->ammo_762nato <= 0)
{
return;
}
#endif // REGAMEDLL_FIXES
if (DefaultReload(SCOUT_MAX_CLIP, SCOUT_RELOAD, SCOUT_RELOAD_TIME))
{
if (m_pPlayer->pev->fov != DEFAULT_FOV)
{
m_pPlayer->pev->fov = m_pPlayer->m_iFOV = 15;
SecondaryAttack();
}
m_pPlayer->SetAnimation(PLAYER_RELOAD);
}
}
/* <29b864> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:250 */
NOBODY void CSCOUT::WeaponIdle(void)
void CSCOUT::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CSCOUT *const this); // 250
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
if (m_iClip)
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 60;
SendWeaponAnim(SCOUT_IDLE, UseDecrement() != FALSE);
}
}
/* <29b764> ../cstrike/dlls/wpn_shared/wpn_scout.cpp:267 */
NOBODY float CSCOUT::GetMaxSpeed(void)
float CSCOUT::__MAKE_VHOOK(GetMaxSpeed)(void)
{
return (m_pPlayer->m_iFOV == DEFAULT_FOV) ? SCOUT_MAX_SPEED : SCOUT_MAX_SPEED_ZOOM;
}
#ifdef HOOK_GAMEDLL
void CSCOUT::Spawn(void)
{
Spawn_();
}
void CSCOUT::Precache(void)
{
Precache_();
}
int CSCOUT::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CSCOUT::Deploy(void)
{
return Deploy_();
}
float CSCOUT::GetMaxSpeed(void)
{
return GetMaxSpeed_();
}
void CSCOUT::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CSCOUT::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CSCOUT::Reload(void)
{
Reload_();
}
void CSCOUT::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,78 +1,291 @@
#include "precompiled.h"
#define SG550_MAX_SPEED 210
#define SG550_MAX_SPEED_ZOOM 150
#define SG550_DAMAGE 70
#define SG550_RANGE_MODIFER 0.98
#define SG550_RELOAD_TIME 3.35
enum sg550_e
{
SG550_IDLE,
SG550_SHOOT,
SG550_SHOOT2,
SG550_RELOAD,
SG550_DRAW
};
/* <2a0f39> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:48 */
LINK_ENTITY_TO_CLASS(weapon_sg550, CSG550);
/* <2a0ce8> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:50 */
NOBODY void CSG550::Spawn(void)
void CSG550::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_SG550;
SET_MODEL(edict(), "models/w_sg550.mdl");
m_iDefaultAmmo = SG550_DEFAULT_GIVE;
m_flLastFire = 0;
FallInit();
}
/* <2a0bdd> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:63 */
NOBODY void CSG550::Precache(void)
void CSG550::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_sg550.mdl");
PRECACHE_MODEL("models/w_sg550.mdl");
PRECACHE_SOUND("weapons/sg550-1.wav");
PRECACHE_SOUND("weapons/sg550_boltpull.wav");
PRECACHE_SOUND("weapons/sg550_clipin.wav");
PRECACHE_SOUND("weapons/sg550_clipout.wav");
PRECACHE_SOUND("weapons/zoom.wav");
m_iShellId = m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireSG550 = PRECACHE_EVENT(1, "events/sg550.sc");
}
/* <2a0c04> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:79 */
NOBODY int CSG550::GetItemInfo(ItemInfo *p)
int CSG550::__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 = SG550_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 16;
p->iId = m_iId = WEAPON_SG550;
p->iFlags = 0;
p->iWeight = SG550_WEIGHT;
return 1;
}
/* <2a0cc1> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:96 */
NOBODY BOOL CSG550::Deploy(void)
BOOL CSG550::__MAKE_VHOOK(Deploy)(void)
{
return DefaultDeploy("models/v_sg550.mdl", "models/p_sg550.mdl", SG550_DRAW, "rifle", UseDecrement() != FALSE);
}
/* <2a0c5d> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:101 */
NOBODY void CSG550::SecondaryAttack(void)
void CSG550::__MAKE_VHOOK(SecondaryAttack)(void)
{
// EMIT_SOUND(edict_t *entity,
// int channel,
// const char *sample,
// float volume,
// float attenuation); // 128
switch (m_pPlayer->m_iFOV)
{
case 90: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 40; break;
case 40: m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15; break;
#ifdef REGAMEDLL_FIXES
default:
#else
case 15:
#endif // REGAMEDLL_FIXES
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 90; break;
}
m_pPlayer->ResetMaxSpeed();
if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_ZOOMED, m_pPlayer);
}
EMIT_SOUND(m_pPlayer->edict(), CHAN_ITEM, "weapons/zoom.wav", 0.2, 2.4);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
}
/* <2a0eef> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:132 */
NOBODY void CSG550::PrimaryAttack(void)
void CSG550::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 136
// PrimaryAttack(CSG550 *const this); // 132
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
SG550Fire(0.45 * (1 - m_flAccuracy), 0.25, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
SG550Fire(0.15, 0.25, FALSE);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
SG550Fire(0.04 * (1 - m_flAccuracy), 0.25, FALSE);
}
else
{
SG550Fire(0.05 * (1 - m_flAccuracy), 0.25, FALSE);
}
}
/* <2a1003> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:144 */
NOBODY void CSG550::SG550Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CSG550::SG550Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 193
// Vector vecSrc; // 195
// Vector vecDir; // 196
// int flag; // 200
// operator+(const Vector *const this,
// const Vector &v); // 187
// Vector(Vector *const this,
// const Vector &v); // 197
// Vector(Vector *const this,
// const Vector &v); // 197
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
if (m_pPlayer->pev->fov == DEFAULT_FOV)
{
flSpread += 0.025;
}
if (m_flLastFire)
{
m_flAccuracy = (gpGlobals->time - m_flLastFire) * 0.35 + 0.65;
if (m_flAccuracy > 0.98)
{
m_flAccuracy = 0.98;
}
}
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 = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_556MM, SG550_DAMAGE, SG550_RANGE_MODIFER, 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_usFireSG550, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 100), (int)(m_pPlayer->pev->punchangle.x * 100), 5, 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.8;
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomFloat(m_pPlayer->random_seed + 4, 0.75, 1.25) + m_pPlayer->pev->punchangle.x * 0.25;
m_pPlayer->pev->punchangle.y += UTIL_SharedRandomFloat(m_pPlayer->random_seed + 5, -0.75, 0.75);
}
/* <2a0d98> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:227 */
NOBODY void CSG550::Reload(void)
void CSG550::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 232
// }
// Reload(CSG550 *const this); // 227
if (m_pPlayer->ammo_556nato <= 0)
{
return;
}
if (DefaultReload(SG550_MAX_CLIP, SG550_RELOAD, SG550_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
if (m_pPlayer->pev->fov != DEFAULT_FOV)
{
m_pPlayer->m_iFOV = m_pPlayer->pev->fov = 15;
SecondaryAttack();
}
}
}
/* <2a0d5e> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:248 */
NOBODY void CSG550::WeaponIdle(void)
void CSG550::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CSG550 *const this); // 248
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
if (m_iClip)
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 60.0;
SendWeaponAnim(SG550_IDLE, UseDecrement() != FALSE);
}
}
/* <2a0c37> ../cstrike/dlls/wpn_shared/wpn_sg550.cpp:265 */
NOBODY float CSG550::GetMaxSpeed(void)
float CSG550::__MAKE_VHOOK(GetMaxSpeed)(void)
{
return (m_pPlayer->m_iFOV == DEFAULT_FOV) ? SG550_MAX_SPEED : SG550_MAX_SPEED_ZOOM;
}
#ifdef HOOK_GAMEDLL
void CSG550::Spawn(void)
{
Spawn_();
}
void CSG550::Precache(void)
{
Precache_();
}
int CSG550::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CSG550::Deploy(void)
{
return Deploy_();
}
float CSG550::GetMaxSpeed(void)
{
return GetMaxSpeed_();
}
void CSG550::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CSG550::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CSG550::Reload(void)
{
Reload_();
}
void CSG550::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,74 +1,285 @@
#include "precompiled.h"
#define SG552_MAX_SPEED 235
#define SG552_MAX_SPEED_ZOOM 200
#define SG552_DAMAGE 33
#define SG552_RANGE_MODIFER 0.955
#define SG552_RELOAD_TIME 3
enum sg552_e
{
SG552_IDLE1,
SG552_RELOAD,
SG552_DRAW,
SG552_SHOOT1,
SG552_SHOOT2,
SG552_SHOOT3
};
/* <2a61d9> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_sg552, CSG552);
/* <2a60cb> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:52 */
NOBODY void CSG552::Spawn(void)
void CSG552::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_SG552;
SET_MODEL(edict(), "models/w_sg552.mdl");
m_iDefaultAmmo = SG552_DEFAULT_GIVE;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
FallInit();
}
/* <2a5ffe> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:66 */
NOBODY void CSG552::Precache(void)
void CSG552::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_sg552.mdl");
PRECACHE_MODEL("models/w_sg552.mdl");
PRECACHE_SOUND("weapons/sg552-1.wav");
PRECACHE_SOUND("weapons/sg552-2.wav");
PRECACHE_SOUND("weapons/sg552_clipout.wav");
PRECACHE_SOUND("weapons/sg552_clipin.wav");
PRECACHE_SOUND("weapons/sg552_boltpull.wav");
m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireSG552 = PRECACHE_EVENT(1, "events/sg552.sc");
}
/* <2a6025> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:83 */
NOBODY int CSG552::GetItemInfo(ItemInfo *p)
int CSG552::__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 = SG552_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 10;
p->iId = m_iId = WEAPON_SG552;
p->iFlags = 0;
p->iWeight = SG552_WEIGHT;
return 1;
}
/* <2a60a4> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:100 */
NOBODY BOOL CSG552::Deploy(void)
{
BOOL CSG552::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.2;
m_iShotsFired = 0;
iShellOn = 1;
return DefaultDeploy("models/v_sg552.mdl", "models/p_sg552.mdl", SG552_DRAW, "mp5", UseDecrement() != FALSE);
}
/* <2a6058> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:109 */
NOBODY void CSG552::SecondaryAttack(void)
void CSG552::__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;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3;
}
/* <2a63eb> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:130 */
NOBODY void CSG552::PrimaryAttack(void)
void CSG552::__MAKE_VHOOK(PrimaryAttack)(void)
{
// Length2D(const Vector *const this); // 134
// PrimaryAttack(CSG552 *const this); // 130
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
SG552Fire(0.035 + (0.45 * m_flAccuracy), 0.0825, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
SG552Fire(0.035 + (0.075 * m_flAccuracy), 0.0825, FALSE);
}
else if (m_pPlayer->pev->fov == DEFAULT_FOV)
{
SG552Fire(0.02 * m_flAccuracy, 0.0825, FALSE);
}
else
{
SG552Fire(0.02 * m_flAccuracy, 0.135, FALSE);
}
}
/* <2a62a3> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:143 */
NOBODY void CSG552::SG552Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CSG552::SG552Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// int flag; // 181
// Vector vecAiming; // 190
// Vector vecSrc; // 192
// Vector vecDir; // 194
// operator+(const Vector *const this,
// const Vector &v); // 189
// Vector(Vector *const this,
// const Vector &v); // 195
// Vector(Vector *const this,
// const Vector &v); // 195
// Length2D(const Vector *const this); // 214
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 220) + 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,
SG552_DAMAGE, SG552_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_usFireSG552, 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), 5, 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() + 2;
if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(1.0, 0.45, 0.28, 0.04, 4.25, 2.5, 7);
}
else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(1.25, 0.45, 0.22, 0.18, 6.0, 4.0, 5);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.6, 0.35, 0.2, 0.0125, 3.7, 2.0, 10);
}
else
{
KickBack(0.625, 0.375, 0.25, 0.0125, 4.0, 2.25, 9);
}
}
/* <2a617c> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:225 */
NOBODY void CSG552::Reload(void)
void CSG552::__MAKE_VHOOK(Reload)(void)
{
// {
// int iResult; // 230
// }
// Reload(CSG552 *const this); // 225
if (m_pPlayer->ammo_556nato <= 0)
{
return;
}
if (DefaultReload(SG552_MAX_CLIP, SG552_RELOAD, SG552_RELOAD_TIME))
{
if (m_pPlayer->m_iFOV != DEFAULT_FOV)
{
SecondaryAttack();
}
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2;
m_iShotsFired = 0;
m_bDelayFire = false;
}
}
/* <2a6141> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:244 */
NOBODY void CSG552::WeaponIdle(void)
void CSG552::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CSG552 *const this); // 244
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(SG552_IDLE1, UseDecrement() != FALSE);
}
/* <2a607e> ../cstrike/dlls/wpn_shared/wpn_sg552.cpp:259 */
NOBODY float CSG552::GetMaxSpeed(void)
float CSG552::__MAKE_VHOOK(GetMaxSpeed)(void)
{
return (m_pPlayer->m_iFOV == DEFAULT_FOV) ? SG552_MAX_SPEED : SG552_MAX_SPEED_ZOOM;
}
#ifdef HOOK_GAMEDLL
void CSG552::Spawn(void)
{
Spawn_();
}
void CSG552::Precache(void)
{
Precache_();
}
int CSG552::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CSG552::Deploy(void)
{
return Deploy_();
}
float CSG552::GetMaxSpeed(void)
{
return GetMaxSpeed_();
}
void CSG552::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CSG552::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CSG552::Reload(void)
{
Reload_();
}
void CSG552::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,78 +1,344 @@
#include "precompiled.h"
#define SMOKEGRENADE_MAX_SPEED 250
#define SMOKEGRENADE_MAX_SPEED_SHIELD 180
enum smokegrenade_e
{
SMOKEGRENADE_IDLE,
SMOKEGRENADE_PINPULL,
SMOKEGRENADE_THROW,
SMOKEGRENADE_DRAW
};
/* <2ab333> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:38 */
LINK_ENTITY_TO_CLASS(weapon_smokegrenade, CSmokeGrenade);
/* <2aafc7> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:40 */
NOBODY void CSmokeGrenade::Spawn(void)
void CSmokeGrenade::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_SMOKEGRENADE;
SET_MODEL(edict(), "models/w_smokegrenade.mdl");
pev->dmg = 4;
m_iDefaultAmmo = SMOKEGRENADE_DEFAULT_GIVE;
m_flStartThrow = 0;
m_flReleaseThrow = -1;
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
// get ready to fall down.
FallInit();
}
/* <2aaf12> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:59 */
NOBODY void CSmokeGrenade::Precache(void)
void CSmokeGrenade::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_smokegrenade.mdl");
PRECACHE_MODEL("models/shield/v_shield_smokegrenade.mdl");
PRECACHE_SOUND("weapons/pinpull.wav");
PRECACHE_SOUND("weapons/sg_explode.wav");
m_usCreateSmoke = PRECACHE_EVENT(1, "events/createsmoke.sc");
}
/* <2aaf39> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:71 */
NOBODY int CSmokeGrenade::GetItemInfo(ItemInfo *p)
int CSmokeGrenade::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "SmokeGrenade";
p->iMaxAmmo1 = MAX_AMMO_SMOKEGRENADE;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = WEAPON_NOCLIP;
p->iSlot = 3;
p->iPosition = 3;
p->iId = m_iId = WEAPON_SMOKEGRENADE;
p->iWeight = SMOKEGRENADE_WEIGHT;
p->iFlags = ITEM_FLAG_LIMITINWORLD | ITEM_FLAG_EXHAUSTIBLE;
return 1;
}
/* <2ab077> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:89 */
NOBODY BOOL CSmokeGrenade::Deploy(void)
{
// Deploy(CSmokeGrenade *const this); // 89
BOOL CSmokeGrenade::__MAKE_VHOOK(Deploy)(void)
{
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_flReleaseThrow = -1;
m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false;
if (m_pPlayer->HasShield())
return DefaultDeploy("models/shield/v_shield_smokegrenade.mdl", "models/shield/p_shield_smokegrenade.mdl", SMOKEGRENADE_DRAW, "shieldgren", UseDecrement() != FALSE);
else
return DefaultDeploy("models/v_smokegrenade.mdl", "models/p_smokegrenade.mdl", SMOKEGRENADE_DRAW, "grenade", UseDecrement() != FALSE);
}
/* <2aaf92> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:104 */
NOBODY void CSmokeGrenade::Holster(int skiplocal)
void CSmokeGrenade::__MAKE_VHOOK(Holster)(int skiplocal)
{
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
// no more smokegrenades!
// clear the smokegrenade of bits for HUD
m_pPlayer->pev->weapons &= ~(1 << WEAPON_SMOKEGRENADE);
DestroyItem();
}
m_flStartThrow = 0;
m_flReleaseThrow = -1;
}
/* <2ab03d> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:120 */
NOBODY void CSmokeGrenade::PrimaryAttack(void)
void CSmokeGrenade::__MAKE_VHOOK(PrimaryAttack)(void)
{
// PrimaryAttack(CSmokeGrenade *const this); // 120
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
return;
if (!m_flStartThrow && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] > 0)
{
m_flReleaseThrow = 0;
m_flStartThrow = gpGlobals->time;
SendWeaponAnim(SMOKEGRENADE_PINPULL, UseDecrement() != FALSE);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5;
}
}
/* <2ab3fd> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:135 */
NOBODY bool CSmokeGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
bool CSmokeGrenade::ShieldSecondaryFire(int iUpAnim, int iDownAnim)
{
if (!m_pPlayer->HasShield() || m_flStartThrow > 0)
{
return false;
}
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iDownAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED;
m_pPlayer->m_bShieldDrawn = false;
}
else
{
m_iWeaponState |= WPNSTATE_SHIELD_DRAWN;
SendWeaponAnim(iUpAnim, UseDecrement() != FALSE);
Q_strcpy(m_pPlayer->m_szAnimExtention, "shielded");
m_fMaxSpeed = SMOKEGRENADE_MAX_SPEED_SHIELD;
m_pPlayer->m_bShieldDrawn = true;
}
m_pPlayer->UpdateShieldCrosshair((m_iWeaponState & WPNSTATE_SHIELD_DRAWN) != WPNSTATE_SHIELD_DRAWN);
m_pPlayer->ResetMaxSpeed();
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.4;
m_flNextPrimaryAttack = GetNextAttackDelay(0.4);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.6;
return true;
}
/* <2ab0b2> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:173 */
NOBODY void CSmokeGrenade::SecondaryAttack(void)
void CSmokeGrenade::__MAKE_VHOOK(SecondaryAttack)(void)
{
// ShieldSecondaryFire(CSmokeGrenade::SecondaryAttack(// int iUpAnim,
// int iDownAnim); // 175
ShieldSecondaryFire(SHIELDGUN_DRAW, SHIELDGUN_DRAWN_IDLE);
}
/* <2ab42f> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:178 */
NOBODY void CSmokeGrenade::SetPlayerShieldAnim(void)
void CSmokeGrenade::SetPlayerShieldAnim(void)
{
if (!m_pPlayer->HasShield())
return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
Q_strcpy(m_pPlayer->m_szAnimExtention, "shield");
else
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
}
/* <2ab451> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:189 */
NOBODY void CSmokeGrenade::ResetPlayerShieldAnim(void)
void CSmokeGrenade::ResetPlayerShieldAnim(void)
{
if (!m_pPlayer->HasShield())
return;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
Q_strcpy(m_pPlayer->m_szAnimExtention, "shieldgren");
}
}
/* <2aa17b> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:199 */
NOBODY void CSmokeGrenade::WeaponIdle(void)
void CSmokeGrenade::__MAKE_VHOOK(WeaponIdle)(void)
{
// {
// Vector angThrow; // 211
// float flVel; // 218
// Vector vecSrc; // 224
// Vector vecThrow; // 227
// }
// {
// int iAnim; // 277
// float flRand; // 278
// }
if (m_flReleaseThrow == 0)
m_flReleaseThrow = gpGlobals->time;
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
return;
if (m_flStartThrow)
{
m_pPlayer->Radio("%!MRAD_FIREINHOLE", "#Fire_in_the_hole");
Vector angThrow = m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle;
if (angThrow.x < 0)
angThrow.x = -10 + angThrow.x * ((90 - 10) / 90.0);
else
angThrow.x = -10 + angThrow.x * ((90 + 10) / 90.0);
float_precision flVel = (90.0 - angThrow.x) * 6.0;
if (flVel > 750.0f)
flVel = 750.0f;
UTIL_MakeVectors(angThrow);
Vector vecSrc = m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_forward * 16;
Vector vecThrow = gpGlobals->v_forward * flVel + m_pPlayer->pev->velocity;
CGrenade::ShootSmokeGrenade(m_pPlayer->pev, vecSrc, vecThrow, 1.5, m_usCreateSmoke);
SendWeaponAnim(SMOKEGRENADE_THROW, UseDecrement() != FALSE);
SetPlayerShieldAnim();
// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
m_flStartThrow = 0;
m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.75;
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
if (!m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
// just threw last grenade
// set attack times in the future, and weapon idle in the future so we can see the whole throw
// animation, weapon idle will automatically retire the weapon for us.
// ensure that the animation can finish playing
m_flTimeWeaponIdle = m_flNextSecondaryAttack = m_flNextPrimaryAttack = GetNextAttackDelay(0.5);
}
ResetPlayerShieldAnim();
}
else if (m_flReleaseThrow > 0)
{
// we've finished the throw, restart.
m_flStartThrow = 0;
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
SendWeaponAnim(SMOKEGRENADE_DRAW, UseDecrement() != FALSE);
}
else
{
RetireWeapon();
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15);
m_flReleaseThrow = -1;
}
else if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
int iAnim;
float flRand = RANDOM_FLOAT(0, 1);
if (m_pPlayer->HasShield())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0;
if (m_iWeaponState & WPNSTATE_SHIELD_DRAWN)
{
SendWeaponAnim(SHIELDREN_IDLE, UseDecrement() != FALSE);
}
}
else
{
if (flRand <= 0.75)
{
iAnim = SMOKEGRENADE_IDLE;
// how long till we do this again.
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT(10, 15);
}
else
{
iAnim = SMOKEGRENADE_IDLE;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 75.0 / 30.0;
}
SendWeaponAnim(iAnim, UseDecrement() != FALSE);
}
}
}
/* <2aaf6c> ../cstrike/dlls/wpn_shared/wpn_smokegrenade.cpp:310 */
NOBODY BOOL CSmokeGrenade::CanDeploy(void)
BOOL CSmokeGrenade::__MAKE_VHOOK(CanDeploy)(void)
{
return m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] != 0;
}
#ifdef HOOK_GAMEDLL
void CSmokeGrenade::Spawn(void)
{
Spawn_();
}
void CSmokeGrenade::Precache(void)
{
Precache_();
}
int CSmokeGrenade::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CSmokeGrenade::CanDeploy(void)
{
return CanDeploy_();
}
BOOL CSmokeGrenade::Deploy(void)
{
return Deploy_();
}
void CSmokeGrenade::Holster(int skiplocal)
{
Holster_(skiplocal);
}
void CSmokeGrenade::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CSmokeGrenade::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CSmokeGrenade::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,60 +1,244 @@
#include "precompiled.h"
#define TMP_MAX_SPEED 250
#define TMP_DAMAGE 20
#define TMP_RANGE_MODIFER 0.85
#define TMP_RELOAD_TIME 2.12
enum tmp_e
{
TMP_IDLE1,
TMP_RELOAD,
TMP_DRAW,
TMP_SHOOT1,
TMP_SHOOT2,
TMP_SHOOT3
};
/* <2b06f0> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_tmp, CTMP);
/* <2b04ba> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:52 */
NOBODY void CTMP::Spawn(void)
void CTMP::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_TMP;
SET_MODEL(edict(), "models/w_tmp.mdl");
m_iDefaultAmmo = TMP_DEFAULT_GIVE;
m_flAccuracy = 0.2;
m_iShotsFired = 0;
m_bDelayFire = false;
FallInit();
}
/* <2b0439> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:67 */
NOBODY void CTMP::Precache(void)
void CTMP::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_tmp.mdl");
PRECACHE_MODEL("models/w_tmp.mdl");
PRECACHE_SOUND("weapons/tmp-1.wav");
PRECACHE_SOUND("weapons/tmp-2.wav");
m_iShell = PRECACHE_MODEL("models/pshell.mdl");
m_usFireTMP = PRECACHE_EVENT(1, "events/tmp.sc");
}
/* <2b0460> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:81 */
NOBODY int CTMP::GetItemInfo(ItemInfo *p)
int CTMP::__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 = TMP_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 11;
p->iId = m_iId = WEAPON_TMP;
p->iFlags = 0;
p->iWeight = TMP_WEIGHT;
return 1;
}
/* <2b0493> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:98 */
NOBODY BOOL CTMP::Deploy(void)
{
BOOL CTMP::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0.2;
m_iShotsFired = 0;
m_bDelayFire = false;
iShellOn = 1;
return DefaultDeploy("models/v_tmp.mdl", "models/p_tmp.mdl", TMP_DRAW, "onehanded", UseDecrement() != FALSE);
}
/* <2b06b6> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:108 */
NOBODY void CTMP::PrimaryAttack(void)
void CTMP::__MAKE_VHOOK(PrimaryAttack)(void)
{
// PrimaryAttack(CTMP *const this); // 108
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
TMPFire(0.25 * m_flAccuracy, 0.07, FALSE);
}
else
{
TMPFire(0.03 * m_flAccuracy, 0.07, FALSE);
}
}
/* <2b07ba> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:116 */
NOBODY void CTMP::TMPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CTMP::TMPFire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// Vector vecAiming; // 155
// Vector vecSrc; // 157
// Vector vecDir; // 159
// int flag; // 163
// operator+(const Vector *const this,
// const Vector &v); // 150
// Vector(Vector *const this,
// const Vector &v); // 160
// Vector(Vector *const this,
// const Vector &v); // 160
// Length2D(const Vector *const this); // 188
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 200) + 0.55;
if (m_flAccuracy > 1.4)
m_flAccuracy = 1.4;
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->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_9MM,
TMP_DAMAGE, TMP_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_usFireTMP, 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), 5, 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() + 2;
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(1.1, 0.5, 0.35, 0.045, 4.5, 3.5, 6);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(0.8, 0.4, 0.2, 0.03, 3.0, 2.5, 7);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.7, 0.35, 0.125, 0.025, 2.5, 2.0, 10);
}
else
{
KickBack(0.725, 0.375, 0.15, 0.025, 2.75, 2.25, 9);
}
}
/* <2b056b> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:197 */
NOBODY void CTMP::Reload(void)
{
// Reload(CTMP *const this); // 197
void CTMP::__MAKE_VHOOK(Reload)(void)
{
#ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo
if (m_pPlayer->ammo_9mm <= 0)
{
return;
}
#endif // REGAMEDLL_FIXES
if (DefaultReload(TMP_MAX_CLIP, TMP_RELOAD, TMP_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0.2;
m_iShotsFired = 0;
}
}
/* <2b0530> ../cstrike/dlls/wpn_shared/wpn_tmp.cpp:211 */
NOBODY void CTMP::WeaponIdle(void)
void CTMP::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CTMP *const this); // 211
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(TMP_IDLE1, UseDecrement() != FALSE);
}
#ifdef HOOK_GAMEDLL
void CTMP::Spawn(void)
{
Spawn_();
}
void CTMP::Precache(void)
{
Precache_();
}
int CTMP::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CTMP::Deploy(void)
{
return Deploy_();
}
void CTMP::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CTMP::Reload(void)
{
Reload_();
}
void CTMP::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,60 +1,247 @@
#include "precompiled.h"
#define UMP45_MAX_SPEED 250
#define UMP45_DAMAGE 30
#define UMP45_RANGE_MODIFER 0.82
#define UMP45_RELOAD_TIME 3.5
enum ump45_e
{
UMP45_IDLE1,
UMP45_RELOAD,
UMP45_DRAW,
UMP45_SHOOT1,
UMP45_SHOOT2,
UMP45_SHOOT3
};
/* <2b5b26> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:50 */
LINK_ENTITY_TO_CLASS(weapon_ump45, CUMP45);
/* <2b58f0> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:52 */
NOBODY void CUMP45::Spawn(void)
void CUMP45::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_UMP45;
SET_MODEL(edict(), "models/w_ump45.mdl");
m_iDefaultAmmo = UMP45_DEFAULT_GIVE;
m_flAccuracy = 0;
m_bDelayFire = false;
FallInit();
}
/* <2b586f> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:66 */
NOBODY void CUMP45::Precache(void)
void CUMP45::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_ump45.mdl");
PRECACHE_MODEL("models/w_ump45.mdl");
PRECACHE_SOUND("weapons/ump45-1.wav");
PRECACHE_SOUND("weapons/ump45_clipout.wav");
PRECACHE_SOUND("weapons/ump45_clipin.wav");
PRECACHE_SOUND("weapons/ump45_boltslap.wav");
m_iShell = PRECACHE_MODEL("models/pshell.mdl");
m_usFireUMP45 = PRECACHE_EVENT(1, "events/ump45.sc");
}
/* <2b5896> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:82 */
NOBODY int CUMP45::GetItemInfo(ItemInfo *p)
int CUMP45::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
#ifdef REGAMEDLL_FIXES
p->pszAmmo1 = "45acp";
#else
p->pszAmmo1 = "45ACP";
#endif // REGAMEDLL_FIXES
p->iMaxAmmo1 = MAX_AMMO_45ACP;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = UMP45_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 15;
p->iId = m_iId = WEAPON_UMP45;
p->iFlags = 0;
p->iWeight = UMP45_WEIGHT;
return 1;
}
/* <2b58c9> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:99 */
NOBODY BOOL CUMP45::Deploy(void)
{
BOOL CUMP45::__MAKE_VHOOK(Deploy)(void)
{
m_flAccuracy = 0;
m_bDelayFire = false;
iShellOn = 1;
return DefaultDeploy("models/v_ump45.mdl", "models/p_ump45.mdl", UMP45_DRAW, "carbine", UseDecrement() != FALSE);
}
/* <2b5aec> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:108 */
NOBODY void CUMP45::PrimaryAttack(void)
void CUMP45::__MAKE_VHOOK(PrimaryAttack)(void)
{
// PrimaryAttack(CUMP45 *const this); // 108
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
UMP45Fire(0.24 * m_flAccuracy, 0.1, FALSE);
}
else
{
UMP45Fire(0.04 * m_flAccuracy, 0.1, FALSE);
}
}
/* <2b5bf0> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:116 */
NOBODY void CUMP45::UMP45Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
void CUMP45::UMP45Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
// {
// int flag; // 153
// Vector vecAiming; // 160
// Vector vecSrc; // 162
// Vector vecDir; // 164
// operator+(const Vector *const this,
// const Vector &v); // 151
// Vector(Vector *const this,
// const Vector &v); // 165
// Vector(Vector *const this,
// const Vector &v); // 165
// Length2D(const Vector *const this); // 191
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
m_bDelayFire = true;
m_iShotsFired++;
m_flAccuracy = ((m_iShotsFired * m_iShotsFired) / 120) + 0.5;
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);
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 1, BULLET_PLAYER_45ACP,
UMP45_DAMAGE, UMP45_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_usFireUMP45, 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_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
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() + 2;
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(0.125, 0.65, 0.55, 0.0475, 5.5, 4.0, 10);
}
else if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(0.55, 0.3, 0.225, 0.03, 3.5, 2.5, 10);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.25, 0.175, 0.125, 0.02, 2.25, 1.25, 10);
}
else
{
KickBack(0.275, 0.2, 0.15, 0.0225, 2.5, 1.5, 10);
}
}
/* <2b59a1> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:200 */
NOBODY void CUMP45::Reload(void)
void CUMP45::__MAKE_VHOOK(Reload)(void)
{
// Reload(CUMP45 *const this); // 200
if (m_pPlayer->ammo_45acp <= 0)
{
return;
}
if (DefaultReload(UMP45_MAX_CLIP, UMP45_RELOAD, UMP45_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
m_flAccuracy = 0;
m_iShotsFired = 0;
}
}
/* <2b5966> ../cstrike/dlls/wpn_shared/wpn_ump45.cpp:214 */
NOBODY void CUMP45::WeaponIdle(void)
void CUMP45::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CUMP45 *const this); // 214
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
{
return;
}
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20;
SendWeaponAnim(UMP45_IDLE1, UseDecrement() != FALSE);
}
#ifdef HOOK_GAMEDLL
void CUMP45::Spawn(void)
{
Spawn_();
}
void CUMP45::Precache(void)
{
Precache_();
}
int CUMP45::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CUMP45::Deploy(void)
{
return Deploy_();
}
void CUMP45::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CUMP45::Reload(void)
{
Reload_();
}
void CUMP45::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -1,6 +1,12 @@
#include "precompiled.h"
#define USP_MAX_SPEED 250
#define USP_DAMAGE 34
#define USP_DAMAGE_SIL 30
#define USP_RANGE_MODIFER 0.79
#define USP_RELOAD_TIME 2.7
enum usp_e
@ -49,7 +55,7 @@ void CUSP::__MAKE_VHOOK(Spawn)(void)
m_iWeaponState &= ~WPNSTATE_SHIELD_DRAWN;
m_iDefaultAmmo = USP_DEFAULT_GIVE;
m_flAccuracy = 0.92f;
m_flAccuracy = 0.92;
FallInit();
}
@ -78,7 +84,11 @@ void CUSP::__MAKE_VHOOK(Precache)(void)
int CUSP::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
#ifdef REGAMEDLL_FIXES
p->pszAmmo1 = "45acp";
#else
p->pszAmmo1 = "45ACP";
#endif // REGAMEDLL_FIXES
p->iMaxAmmo1 = MAX_AMMO_45ACP;
p->pszAmmo2 = 0;
p->iMaxAmmo2 = -1;
@ -230,15 +240,14 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
return;
}
m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
m_flNextPrimaryAttack = m_flNextSecondaryAttack;
m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);
m_iClip--;
SetPlayerShieldAnim();
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
m_pPlayer->m_iWeaponVolume = 2048;
m_pPlayer->m_iWeaponFlash = 128;
m_pPlayer->m_iWeaponVolume = BIG_EXPLOSION_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
@ -248,24 +257,11 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
}
vecSrc = m_pPlayer->GetGunPosition();
vecDir = gpGlobals->v_forward;
vecAiming = gpGlobals->v_forward;
iDamage = (m_iWeaponState & WPNSTATE_USP_SILENCED) ? 30 : 34;
vecAiming = m_pPlayer->FireBullets3
(
vecSrc,
vecDir,
flSpread,
4096.0,
1,
BULLET_PLAYER_45ACP,
iDamage,
0.79,
m_pPlayer->pev,
true,
m_pPlayer->random_seed
);
iDamage = (m_iWeaponState & WPNSTATE_USP_SILENCED) ? USP_DAMAGE_SIL : USP_DAMAGE;
vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 4096, 1, BULLET_PLAYER_45ACP, iDamage, USP_RANGE_MODIFER, m_pPlayer->pev, true, m_pPlayer->random_seed);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
@ -273,21 +269,8 @@ void CUSP::USPFire(float flSpread, float flCycleTime, BOOL fUseSemi)
flag = 0;
#endif // CLIENT_WEAPONS
PLAYBACK_EVENT_FULL
(
flag,
ENT(m_pPlayer->pev),
m_usFireUSP,
0,
(float *)&g_vecZero,
(float *)&g_vecZero,
vecAiming.x,
vecAiming.y,
(int)(m_pPlayer->pev->punchangle.x * 100),
0,
m_iClip == 0,
(m_iWeaponState & WPNSTATE_USP_SILENCED)
);
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireUSP, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
(int)(m_pPlayer->pev->punchangle.x * 100), 0, m_iClip == 0, (m_iWeaponState & WPNSTATE_USP_SILENCED));
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{
@ -377,16 +360,16 @@ BOOL CUSP::Deploy(void)
return Deploy_();
}
void CUSP::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CUSP::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CUSP::SecondaryAttack(void)
{
SecondaryAttack_();
}
void CUSP::Reload(void)
{
Reload_();

View File

@ -1,59 +1,278 @@
#include "precompiled.h"
#define XM1014_MAX_SPEED 240
#define XM1014_CONE_VECTOR Vector(0.0725, 0.0725, 0.0) // special shotgun spreads
enum xm1014_e
{
XM1014_IDLE,
XM1014_FIRE1,
XM1014_FIRE2,
XM1014_RELOAD,
XM1014_PUMP,
XM1014_START_RELOAD,
XM1014_DRAW
};
/* <2cadb2> ../cstrike/dlls/wpn_shared/wpn_xm1014.cpp:51 */
LINK_ENTITY_TO_CLASS(weapon_xm1014, CXM1014);
/* <2cacc6> ../cstrike/dlls/wpn_shared/wpn_xm1014.cpp:53 */
NOBODY void CXM1014::Spawn(void)
void CXM1014::__MAKE_VHOOK(Spawn)(void)
{
Precache();
m_iId = WEAPON_XM1014;
SET_MODEL(edict(), "models/w_xm1014.mdl");
m_iDefaultAmmo = XM1014_DEFAULT_GIVE;
// get ready to fall
FallInit();
}
/* <2caadc> ../cstrike/dlls/wpn_shared/wpn_xm1014.cpp:65 */
NOBODY void CXM1014::Precache(void)
void CXM1014::__MAKE_VHOOK(Precache)(void)
{
PRECACHE_MODEL("models/v_xm1014.mdl");
PRECACHE_MODEL("models/w_xm1014.mdl");
m_iShellId = m_iShell = PRECACHE_MODEL("models/shotgunshell.mdl");
PRECACHE_SOUND("weapons/xm1014-1.wav");
PRECACHE_SOUND("weapons/reload1.wav");
PRECACHE_SOUND("weapons/reload3.wav");
m_usFireXM1014 = PRECACHE_EVENT(1, "events/xm1014.sc");
}
/* <2cab03> ../cstrike/dlls/wpn_shared/wpn_xm1014.cpp:81 */
NOBODY int CXM1014::GetItemInfo(ItemInfo *p)
int CXM1014::__MAKE_VHOOK(GetItemInfo)(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "buckshot";
p->iMaxAmmo1 = MAX_AMMO_BUCKSHOT;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = XM1014_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 12;
p->iId = m_iId = WEAPON_XM1014;
p->iFlags = 0;
p->iWeight = XM1014_WEIGHT;
return 1;
}
/* <2cac9f> ../cstrike/dlls/wpn_shared/wpn_xm1014.cpp:100 */
NOBODY BOOL CXM1014::Deploy(void)
BOOL CXM1014::__MAKE_VHOOK(Deploy)(void)
{
return DefaultDeploy("models/v_xm1014.mdl", "models/p_xm1014.mdl", XM1014_DRAW, "m249", UseDecrement() != FALSE);
}
/* <2cab36> ../cstrike/dlls/wpn_shared/wpn_xm1014.cpp:106 */
NOBODY void CXM1014::PrimaryAttack(void)
void CXM1014::__MAKE_VHOOK(PrimaryAttack)(void)
{
// {
// Vector vecAiming; // 144
// Vector vecSrc; // 145
// int flag; // 149
// operator+(const Vector *const this,
// const Vector &v); // 142
// Vector(Vector *const this,
// const Vector &v); // 144
// Vector(Vector *const this,
// const Vector &v); // 146
// Vector(Vector *const this,
// const Vector &v); // 146
// Vector(Vector *const this,
// float X,
// float Y,
// float Z); // 146
// edict(CBaseEntity *const this); // 156
// }
Vector vecAiming, vecSrc, vecDir;
int flag;
// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.15);
return;
}
if (m_iClip <= 0)
{
Reload();
if (!m_iClip)
{
PlayEmptySound();
}
if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer);
}
m_flNextPrimaryAttack = GetNextAttackDelay(1);
return;
}
m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
m_iClip--;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
// player "shoot" animation
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);
vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;
m_pPlayer->FireBullets(6, vecSrc, vecAiming, XM1014_CONE_VECTOR, 3048, BULLET_PLAYER_BUCKSHOT, 0);
#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif // CLIENT_WEAPONS
PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireXM1014, 0, (float *)&g_vecZero, (float *)&g_vecZero, m_vVecAiming.x, m_vVecAiming.y, 7,
(int)(m_vVecAiming.x * 100), m_iClip == 0, FALSE);
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{
// HEV suit - indicate out of ammo condition
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
}
if (m_iClip != 0)
m_flPumpTime = UTIL_WeaponTimeBase() + 0.125;
m_flNextPrimaryAttack = GetNextAttackDelay(0.25);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.25;
if (m_iClip != 0)
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.25;
else
m_flTimeWeaponIdle = 0.75;
m_fInSpecialReload = 0;
if (m_pPlayer->pev->flags & FL_ONGROUND)
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_pPlayer->random_seed + 1, 3, 5);
else
m_pPlayer->pev->punchangle.x -= UTIL_SharedRandomLong(m_pPlayer->random_seed + 1, 7, 10);
}
/* <2cad77> ../cstrike/dlls/wpn_shared/wpn_xm1014.cpp:182 */
NOBODY void CXM1014::Reload(void)
void CXM1014::__MAKE_VHOOK(Reload)(void)
{
// CXM1014::Reload(void); // 182
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 || m_iClip == XM1014_MAX_CLIP)
return;
// don't reload until recoil is done
if (m_flNextPrimaryAttack > UTIL_WeaponTimeBase())
return;
// check to see if we're ready to reload
if (m_fInSpecialReload == 0)
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);
SendWeaponAnim(XM1014_START_RELOAD, UseDecrement() != FALSE);
m_fInSpecialReload = 1;
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.55;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.55;
m_flNextPrimaryAttack = GetNextAttackDelay(0.55);
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.55;
}
else if (m_fInSpecialReload == 1)
{
if (m_flTimeWeaponIdle > UTIL_WeaponTimeBase())
return;
// was waiting for gun to move to side
m_fInSpecialReload = 2;
if (RANDOM_LONG(0, 1))
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_ITEM, "weapons/reload1.wav", VOL_NORM, ATTN_NORM, 0, 85 + RANDOM_LONG(0, 31));
else
EMIT_SOUND_DYN(m_pPlayer->edict(), CHAN_ITEM, "weapons/reload3.wav", VOL_NORM, ATTN_NORM, 0, 85 + RANDOM_LONG(0, 31));
SendWeaponAnim(XM1014_RELOAD, UseDecrement());
m_flNextReload = UTIL_WeaponTimeBase() + 0.3;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.3;
}
else
{
m_iClip++;
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
m_pPlayer->ammo_buckshot--;
m_fInSpecialReload = 1;
}
}
/* <2cad3c> ../cstrike/dlls/wpn_shared/wpn_xm1014.cpp:231 */
NOBODY void CXM1014::WeaponIdle(void)
void CXM1014::__MAKE_VHOOK(WeaponIdle)(void)
{
// WeaponIdle(CXM1014 *const this); // 231
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_5DEGREES);
if (m_flPumpTime && m_flPumpTime < UTIL_WeaponTimeBase())
{
m_flPumpTime = 0;
}
if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase())
{
if (m_iClip == 0 && m_fInSpecialReload == 0 && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
Reload();
}
else if (m_fInSpecialReload != 0)
{
if (m_iClip != XM1014_MAX_CLIP && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType])
{
Reload();
}
else
{
// reload debounce has timed out
SendWeaponAnim(XM1014_PUMP, UseDecrement() != FALSE);
m_fInSpecialReload = 0;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.5;
}
}
else
{
SendWeaponAnim(XM1014_IDLE, UseDecrement() != FALSE);
}
}
}
#ifdef HOOK_GAMEDLL
void CXM1014::Spawn(void)
{
Spawn_();
}
void CXM1014::Precache(void)
{
Precache_();
}
int CXM1014::GetItemInfo(ItemInfo *p)
{
return GetItemInfo_(p);
}
BOOL CXM1014::Deploy(void)
{
return Deploy_();
}
void CXM1014::PrimaryAttack(void)
{
PrimaryAttack_();
}
void CXM1014::Reload(void)
{
Reload_();
}
void CXM1014::WeaponIdle(void)
{
WeaponIdle_();
}
#endif // HOOK_GAMEDLL

View File

@ -205,8 +205,7 @@ void CVoiceGameMgr::UpdateMasks(void)
g_SentBanMasks[ iClient ] = g_BanMasks[ iClient ];
MESSAGE_BEGIN(MSG_ONE, m_msgPlayerVoiceMask, NULL, pPlayer->pev);
int dw;
for (dw = 0; dw < VOICE_MAX_PLAYERS_DW; dw++)
for (int dw = 0; dw < VOICE_MAX_PLAYERS_DW; dw++)
{
WRITE_LONG(gameRulesMask.GetDWord(dw));
WRITE_LONG(g_BanMasks[ iClient ].GetDWord(dw));

View File

@ -287,12 +287,10 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D66170, "_Z7BuyItemP11CBasePlayeri", (size_t)&BuyItem },
{ 0x01D669A0, "_Z27HandleMenu_ChooseAppearanceP11CBasePlayeri", (size_t)&HandleMenu_ChooseAppearance },
{ 0x01D66D10, "_Z21HandleMenu_ChooseTeamP11CBasePlayeri", (size_t)&HandleMenu_ChooseTeam },
{ 0x01D67930, "_Z6Radio1P11CBasePlayeri", (size_t)&Radio1 },
{ 0x01D67A20, "_Z6Radio2P11CBasePlayeri", (size_t)&Radio2 },
{ 0x01D67B10, "_Z6Radio3P11CBasePlayeri", (size_t)&Radio3 },
{ 0x01D67C70, "_Z10BuyGunAmmoR11CBasePlayerR15CBasePlayerItemb", (size_t)&BuyGunAmmo },
//{ 0x01D67E50, "_Z7BuyAmmoP11CBasePlayerib", (size_t)&BuyAmmo }, // NOXREF
//{ 0x01D67EC0, "_Z16EntityFromUserIDi", (size_t)&EntityFromUserID }, // NOXREF
//{ 0x01D67FC0, "_Z20CountPlayersInServerv", (size_t)&CountPlayersInServer }, // NOXREF
@ -347,17 +345,14 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D61A70, "_Z20EmptyEntityHashTablev", (size_t)&EmptyEntityHashTable },
{ 0x01D61AE0, "_Z18AddEntityHashValueP9entvars_sPKc12hash_types_e", (size_t)&AddEntityHashValue },
{ 0x01D61CA0, "_Z21RemoveEntityHashValueP9entvars_sPKc12hash_types_e", (size_t)&RemoveEntityHashValue },
{ 0x01D61E20, "_Z13printEntitiesv", (size_t)&printEntities },
{ 0x01D61ED0, "_Z19CREATE_NAMED_ENTITYj", (size_t)&CREATE_NAMED_ENTITY },
{ 0x01D61F10, "_Z13REMOVE_ENTITYP7edict_s", (size_t)&REMOVE_ENTITY },
{ 0x01D62540, "_Z12CONSOLE_ECHOPcz", (size_t)&CONSOLE_ECHO_ },
{ 0x01D61F30, "_Z15loopPerformancev", (size_t)&loopPerformance },
{ 0x01D62570, "GetEntityAPI", (size_t)&GetEntityAPI },
//{ 0x01D62670, "_Z13GetEntityAPI2P13DLL_FUNCTIONSPi", (size_t)&GetEntityAPI2 }, // NOXREF
{ 0x01D626B0, "GetNewDLLFunctions", (size_t)&GetNewDLLFunctions },
//{ 0x01D62B20, "_Z16FindGlobalEntityjj", (size_t)&FindGlobalEntity }, // NOXREF
{ 0x01D63700, "_ZL21SetObjectCollisionBoxP9entvars_s", (size_t)&SetObjectCollisionBox },
{ 0x01D63BE0, "_Z20OnFreeEntPrivateDataP7edict_s", (size_t)&OnFreeEntPrivateData },
@ -667,7 +662,6 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D9E320, "_ZN11CBasePlayer19SetProgressBarTime2Eif", mfunc_ptr_cast(&CBasePlayer::SetProgressBarTime2) },
//{ 0x01D93690, "_Z14GetForceCamerav", (size_t)&GetForceCamera }, // NOXREF
{ 0x01D93A00, "_ZL19UpdateClientEffectsP11CBasePlayeri", (size_t)&UpdateClientEffects },
//{ 0x0, "", (size_t)&OLD_CheckBuyZone }, // NOXREF
//{ 0x0, "", (size_t)&OLD_CheckBombTarget }, // NOXREF
//{ 0x0, "", (size_t)&OLD_CheckRescueZone }, // NOXREF
@ -2876,9 +2870,7 @@ FunctionHook g_FunctionHooks[] =
{ 0x01DCEDE0, "_ZN17CBasePlayerWeapon11AddToPlayerEP11CBasePlayer", mfunc_ptr_cast(&CBasePlayerWeapon::AddToPlayer_) },
{ 0x01DCEDC0, "_ZN17CBasePlayerWeapon12AddDuplicateEP15CBasePlayerItem", mfunc_ptr_cast(&CBasePlayerWeapon::AddDuplicate_) },
{ 0x01DCF1A0, "_ZN17CBasePlayerWeapon9CanDeployEv", mfunc_ptr_cast(&CBasePlayerWeapon::CanDeploy_) },
//{ 0x01D02050, "_ZN17CBasePlayerWeapon8IsWeaponEv", mfunc_ptr_cast(&CBasePlayerWeapon::IsWeapon_) },
//{ 0x0, "_ZN17CBasePlayerWeapon8IsWeaponEv", mfunc_ptr_cast(&CBasePlayerWeapon::IsWeapon_) },
//{ 0x01D02050, "_ZN17CBasePlayerWeapon8IsWeaponEv", mfunc_ptr_cast(&CBasePlayerWeapon::IsWeapon_) }, // DEFAULT
{ 0x01DCF570, "_ZN17CBasePlayerWeapon7HolsterEi", mfunc_ptr_cast(&CBasePlayerWeapon::Holster_) },
//{ 0x01D02030, "_ZN17CBasePlayerWeapon14UpdateItemInfoEv", mfunc_ptr_cast(&CBasePlayerWeapon::UpdateItemInfo_) }, // NOXREF PURE
{ 0x01DCE6A0, "_ZN17CBasePlayerWeapon13ItemPostFrameEv", mfunc_ptr_cast(&CBasePlayerWeapon::ItemPostFrame_) },
@ -3012,8 +3004,8 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D0FA40, "_ZN4CUSP6DeployEv", mfunc_ptr_cast(&CUSP::Deploy_) },
//{ 0x01D101A0, "_ZN4CUSP11GetMaxSpeedEv", mfunc_ptr_cast(&CUSP::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D10190, "_ZN4CUSP9iItemSlotEv", mfunc_ptr_cast(&CUSP::iItemSlot_) }, // DEFAULT
{ 0x01D0FBE0, "_ZN4CUSP13PrimaryAttackEv", mfunc_ptr_cast(&CUSP::PrimaryAttack_) },
{ 0x01D0FB20, "_ZN4CUSP15SecondaryAttackEv", mfunc_ptr_cast(&CUSP::SecondaryAttack_) },
{ 0x01D0FBE0, "_ZN4CUSP13PrimaryAttackEv", mfunc_ptr_cast(&CUSP::PrimaryAttack_) },
{ 0x01D10060, "_ZN4CUSP6ReloadEv", mfunc_ptr_cast(&CUSP::Reload_) },
{ 0x01D100C0, "_ZN4CUSP10WeaponIdleEv", mfunc_ptr_cast(&CUSP::WeaponIdle_) },
//{ 0x01D101B0, "_ZN4CUSP12UseDecrementEv", mfunc_ptr_cast(&CUSP::UseDecrement_) }, // DEFAULT
@ -3025,67 +3017,67 @@ FunctionHook g_FunctionHooks[] =
//{ 0x0, "_ZN4CUSP10BeamUpdateEv", mfunc_ptr_cast(&CUSP::BeamUpdate) }, // NOXREF
//CMP5N
//virtual func
//{ 0x0, "_ZN5CMP5N5SpawnEv", mfunc_ptr_cast(&CMP5N::Spawn) },
//{ 0x0, "_ZN5CMP5N8PrecacheEv", mfunc_ptr_cast(&CMP5N::Precache) },
//{ 0x0, "_ZN5CMP5N11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CMP5N::GetItemInfo) },
//{ 0x0, "_ZN5CMP5N6DeployEv", mfunc_ptr_cast(&CMP5N::Deploy) },
//{ 0x0, "_ZN5CMP5N11GetMaxSpeedEv", mfunc_ptr_cast(&CMP5N::GetMaxSpeed) },
//{ 0x0, "_ZN5CMP5N9iItemSlotEv", mfunc_ptr_cast(&CMP5N::iItemSlot) },
//{ 0x0, "_ZN5CMP5N13PrimaryAttackEv", mfunc_ptr_cast(&CMP5N::PrimaryAttack) },
//{ 0x0, "_ZN5CMP5N6ReloadEv", mfunc_ptr_cast(&CMP5N::Reload) },
//{ 0x0, "_ZN5CMP5N10WeaponIdleEv", mfunc_ptr_cast(&CMP5N::WeaponIdle) },
//{ 0x0, "_ZN5CMP5N12UseDecrementEv", mfunc_ptr_cast(&CMP5N::UseDecrement) },
{ 0x01D0B750, "_ZN5CMP5N5SpawnEv", mfunc_ptr_cast(&CMP5N::Spawn_) },
{ 0x01D0B7A0, "_ZN5CMP5N8PrecacheEv", mfunc_ptr_cast(&CMP5N::Precache_) },
{ 0x01D0B820, "_ZN5CMP5N11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CMP5N::GetItemInfo_) },
{ 0x01D0B890, "_ZN5CMP5N6DeployEv", mfunc_ptr_cast(&CMP5N::Deploy_) },
//{ 0x01D0BD50, "_ZN5CMP5N11GetMaxSpeedEv", mfunc_ptr_cast(&CMP5N::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D0BD40, "_ZN5CMP5N9iItemSlotEv", mfunc_ptr_cast(&CMP5N::iItemSlot_) }, // DEFAULT
{ 0x01D0B8E0, "_ZN5CMP5N13PrimaryAttackEv", mfunc_ptr_cast(&CMP5N::PrimaryAttack_) },
{ 0x01D0BC80, "_ZN5CMP5N6ReloadEv", mfunc_ptr_cast(&CMP5N::Reload_) },
{ 0x01D0BCD0, "_ZN5CMP5N10WeaponIdleEv", mfunc_ptr_cast(&CMP5N::WeaponIdle_) },
//{ 0x01D0BD60, "_ZN5CMP5N12UseDecrementEv", mfunc_ptr_cast(&CMP5N::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_mp5navy", (size_t)&weapon_mp5navy },
//{ 0x0, "_ZN5CMP5N8MP5NFireEffi", mfunc_ptr_cast(&CMP5N::USPFire) },
{ 0x01D0B700, "weapon_mp5navy", (size_t)&weapon_mp5navy },
{ 0x01D0B920, "_ZN5CMP5N8MP5NFireEffi", mfunc_ptr_cast(&CMP5N::MP5NFire) },
//CSG552
//virtual func
//{ 0x0, "_ZN6CSG5525SpawnEv", mfunc_ptr_cast(&CSG552::Spawn_) },
//{ 0x0, "_ZN6CSG5528PrecacheEv", mfunc_ptr_cast(&CSG552::Precache_) },
//{ 0x0, "_ZN6CSG55211GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CSG552::GetItemInfo_) },
//{ 0x0, "_ZN6CSG5526DeployEv", mfunc_ptr_cast(&CSG552::Deploy_) },
//{ 0x0, "_ZN6CSG55211GetMaxSpeedEv", mfunc_ptr_cast(&CSG552::GetMaxSpeed_) },
//{ 0x0, "_ZN6CSG5529iItemSlotEv", mfunc_ptr_cast(&CSG552::iItemSlot_) },
//{ 0x0, "_ZN6CSG55213PrimaryAttackEv", mfunc_ptr_cast(&CSG552::PrimaryAttack_) },
//{ 0x0, "_ZN6CSG55215SecondaryAttackEv", mfunc_ptr_cast(&CSG552::SecondaryAttack_) },
//{ 0x0, "_ZN6CSG5526ReloadEv", mfunc_ptr_cast(&CSG552::Reload_) },
//{ 0x0, "_ZN6CSG55210WeaponIdleEv", mfunc_ptr_cast(&CSG552::WeaponIdle_) },
//{ 0x0, "_ZN6CSG55212UseDecrementEv", mfunc_ptr_cast(&CSG552::UseDecrement_) },
{ 0x01D0DAA0, "_ZN6CSG5525SpawnEv", mfunc_ptr_cast(&CSG552::Spawn_) },
{ 0x01D0DAF0, "_ZN6CSG5528PrecacheEv", mfunc_ptr_cast(&CSG552::Precache_) },
{ 0x01D0DB70, "_ZN6CSG55211GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CSG552::GetItemInfo_) },
{ 0x01D0DBE0, "_ZN6CSG5526DeployEv", mfunc_ptr_cast(&CSG552::Deploy_) },
{ 0x01D0E1C0, "_ZN6CSG55211GetMaxSpeedEv", mfunc_ptr_cast(&CSG552::GetMaxSpeed_) },
//{ 0x01D0E1E0, "_ZN6CSG5529iItemSlotEv", mfunc_ptr_cast(&CSG552::iItemSlot_) }, // DEFAULT
{ 0x01D0DC30, "_ZN6CSG55215SecondaryAttackEv", mfunc_ptr_cast(&CSG552::SecondaryAttack_) },
{ 0x01D0DCA0, "_ZN6CSG55213PrimaryAttackEv", mfunc_ptr_cast(&CSG552::PrimaryAttack_) },
{ 0x01D0E0D0, "_ZN6CSG5526ReloadEv", mfunc_ptr_cast(&CSG552::Reload_) },
{ 0x01D0E150, "_ZN6CSG55210WeaponIdleEv", mfunc_ptr_cast(&CSG552::WeaponIdle_) },
//{ 0x01D0E1F0, "_ZN6CSG55212UseDecrementEv", mfunc_ptr_cast(&CSG552::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_sg552", (size_t)&weapon_sg552 },
//{ 0x0, "_ZN6CSG5529SG552FireEffi", mfunc_ptr_cast(&CSG552::SG552Fire) },
{ 0x01D0DA50, "weapon_sg552", (size_t)&weapon_sg552 },
{ 0x01D0DD50, "_ZN6CSG5529SG552FireEffi", mfunc_ptr_cast(&CSG552::SG552Fire) },
//CAK47
//virtual func
//{ 0x0, "_ZN5CAK475SpawnEv", mfunc_ptr_cast(&CAK47::Spawn_) },
//{ 0x0, "_ZN5CAK478PrecacheEv", mfunc_ptr_cast(&CAK47::Precache_) },
//{ 0x0, "_ZN5CAK4711GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CAK47::GetItemInfo_) },
//{ 0x0, "_ZN5CAK476DeployEv", mfunc_ptr_cast(&CAK47::Deploy_) },
//{ 0x01D02080, "_ZN5CAK4711GetMaxSpeedEv", mfunc_ptr_cast(&CAK47::GetMaxSpeed_) }, // DEFAULT
//{ 0x0, "_ZN5CAK479iItemSlotEv", mfunc_ptr_cast(&CAK47::iItemSlot_) }, // DEFAULT
//{ 0x0, "_ZN5CAK4713PrimaryAttackEv", mfunc_ptr_cast(&CAK47::PrimaryAttack_) },
//{ 0x0, "_ZN5CAK4715SecondaryAttackEv", mfunc_ptr_cast(&CAK47::SecondaryAttack_) },
//{ 0x0, "_ZN5CAK476ReloadEv", mfunc_ptr_cast(&CAK47::Reload_) },
//{ 0x0, "_ZN5CAK4710WeaponIdleEv", mfunc_ptr_cast(&CAK47::WeaponIdle_) },
//{ 0x0, "_ZN5CAK4712UseDecrementEv", mfunc_ptr_cast(&CAK47::UseDecrement_) }, // DEFAULT
{ 0x01D014F0, "_ZN5CAK475SpawnEv", mfunc_ptr_cast(&CAK47::Spawn_) },
{ 0x01D01540, "_ZN5CAK478PrecacheEv", mfunc_ptr_cast(&CAK47::Precache_) },
{ 0x01D015C0, "_ZN5CAK4711GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CAK47::GetItemInfo_) },
{ 0x01D01630, "_ZN5CAK476DeployEv", mfunc_ptr_cast(&CAK47::Deploy_) },
//{ 0x01D02080, "_ZN5CAK4711GetMaxSpeedEv", mfunc_ptr_cast(&CAK47::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D02070, "_ZN5CAK479iItemSlotEv", mfunc_ptr_cast(&CAK47::iItemSlot_) }, // DEFAULT
{ 0x01D01680, "_ZN5CAK4715SecondaryAttackEv", mfunc_ptr_cast(&CAK47::SecondaryAttack_) },
{ 0x01D01690, "_ZN5CAK4713PrimaryAttackEv", mfunc_ptr_cast(&CAK47::PrimaryAttack_) },
{ 0x01D01AB0, "_ZN5CAK476ReloadEv", mfunc_ptr_cast(&CAK47::Reload_) },
{ 0x01D01B00, "_ZN5CAK4710WeaponIdleEv", mfunc_ptr_cast(&CAK47::WeaponIdle_) },
//{ 0x01D02090, "_ZN5CAK4712UseDecrementEv", mfunc_ptr_cast(&CAK47::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_ak47", (size_t)&weapon_ak47 },
//{ 0x0, "_ZN5CAK478AK47FireEffi", mfunc_ptr_cast(&CAK47::USPFire) },
{ 0x01D014A0, "weapon_ak47", (size_t)&weapon_ak47 },
{ 0x01D01730, "_ZN5CAK478AK47FireEffi", mfunc_ptr_cast(&CAK47::AK47Fire) },
//CAUG
//virtual func
//{ 0x0, "_ZN4CAUG5SpawnEv", mfunc_ptr_cast(&CAUG::Spawn) },
//{ 0x0, "_ZN4CAUG8PrecacheEv", mfunc_ptr_cast(&CAUG::Precache) },
//{ 0x0, "_ZN4CAUG11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CAUG::GetItemInfo) },
//{ 0x0, "_ZN4CAUG6DeployEv", mfunc_ptr_cast(&CAUG::Deploy) },
//{ 0x0, "_ZN4CAUG11GetMaxSpeedEv", mfunc_ptr_cast(&CAUG::GetMaxSpeed) },
//{ 0x0, "_ZN4CAUG9iItemSlotEv", mfunc_ptr_cast(&CAUG::iItemSlot) },
//{ 0x0, "_ZN4CAUG13PrimaryAttackEv", mfunc_ptr_cast(&CAUG::PrimaryAttack) },
//{ 0x0, "_ZN4CAUG15SecondaryAttackEv", mfunc_ptr_cast(&CAUG::SecondaryAttack) },
//{ 0x0, "_ZN4CAUG6ReloadEv", mfunc_ptr_cast(&CAUG::Reload) },
//{ 0x0, "_ZN4CAUG10WeaponIdleEv", mfunc_ptr_cast(&CAUG::WeaponIdle) },
//{ 0x0, "_ZN4CAUG12UseDecrementEv", mfunc_ptr_cast(&CAUG::UseDecrement) },
{ 0x01D020F0, "_ZN4CAUG5SpawnEv", mfunc_ptr_cast(&CAUG::Spawn_) },
{ 0x01D02140, "_ZN4CAUG8PrecacheEv", mfunc_ptr_cast(&CAUG::Precache_) },
{ 0x01D021D0, "_ZN4CAUG11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CAUG::GetItemInfo_) },
{ 0x01D02240, "_ZN4CAUG6DeployEv", mfunc_ptr_cast(&CAUG::Deploy_) },
//{ 0x01D02820, "_ZN4CAUG11GetMaxSpeedEv", mfunc_ptr_cast(&CAUG::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D02810, "_ZN4CAUG9iItemSlotEv", mfunc_ptr_cast(&CAUG::iItemSlot_) }, // DEFAULT
{ 0x01D02290, "_ZN4CAUG15SecondaryAttackEv", mfunc_ptr_cast(&CAUG::SecondaryAttack_) },
{ 0x01D02300, "_ZN4CAUG13PrimaryAttackEv", mfunc_ptr_cast(&CAUG::PrimaryAttack_) },
{ 0x01D02730, "_ZN4CAUG6ReloadEv", mfunc_ptr_cast(&CAUG::Reload_) },
{ 0x01D027A0, "_ZN4CAUG10WeaponIdleEv", mfunc_ptr_cast(&CAUG::WeaponIdle_) },
//{ 0x01D02830, "_ZN4CAUG12UseDecrementEv", mfunc_ptr_cast(&CAUG::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_aug", (size_t)&weapon_aug },
//{ 0x0, "_ZN4CAUG7AUGFireEffi", mfunc_ptr_cast(&CAUG::AUGFire) },
{ 0x01D020A0, "weapon_aug", (size_t)&weapon_aug },
{ 0x01D023B0, "_ZN4CAUG7AUGFireEffi", mfunc_ptr_cast(&CAUG::AUGFire) },
//CAWP
//virtual func
{ 0x01D02890, "_ZN4CAWP5SpawnEv", mfunc_ptr_cast(&CAWP::Spawn_) },
@ -3094,8 +3086,8 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D029F0, "_ZN4CAWP6DeployEv", mfunc_ptr_cast(&CAWP::Deploy_) },
{ 0x01D02FA0, "_ZN4CAWP11GetMaxSpeedEv", mfunc_ptr_cast(&CAWP::GetMaxSpeed_) },
//{ 0x01D02FC0, "_ZN4CAWP9iItemSlotEv", mfunc_ptr_cast(&CAWP::iItemSlot_) }, // DEFAULT
{ 0x01D02B40, "_ZN4CAWP13PrimaryAttackEv", mfunc_ptr_cast(&CAWP::PrimaryAttack_) },
{ 0x01D02A60, "_ZN4CAWP15SecondaryAttackEv", mfunc_ptr_cast(&CAWP::SecondaryAttack_) },
{ 0x01D02B40, "_ZN4CAWP13PrimaryAttackEv", mfunc_ptr_cast(&CAWP::PrimaryAttack_) },
{ 0x01D02EA0, "_ZN4CAWP6ReloadEv", mfunc_ptr_cast(&CAWP::Reload_) },
{ 0x01D02F20, "_ZN4CAWP10WeaponIdleEv", mfunc_ptr_cast(&CAWP::WeaponIdle_) },
//{ 0x01D02FD0, "_ZN4CAWP12UseDecrementEv", mfunc_ptr_cast(&CAWP::UseDecrement_) }, // DEFAULT
@ -3120,58 +3112,58 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D02FE0, "weapon_c4", (size_t)&weapon_c4 },
//CDEAGLE
//virtual func
//{ 0x0, "_ZN7CDEAGLE5SpawnEv", mfunc_ptr_cast(&CDEAGLE::Spawn) },
//{ 0x0, "_ZN7CDEAGLE8PrecacheEv", mfunc_ptr_cast(&CDEAGLE::Precache) },
//{ 0x0, "_ZN7CDEAGLE11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CDEAGLE::GetItemInfo) },
//{ 0x0, "_ZN7CDEAGLE6DeployEv", mfunc_ptr_cast(&CDEAGLE::Deploy) },
//{ 0x0, "_ZN7CDEAGLE11GetMaxSpeedEv", mfunc_ptr_cast(&CDEAGLE::GetMaxSpeed) },
//{ 0x0, "_ZN7CDEAGLE9iItemSlotEv", mfunc_ptr_cast(&CDEAGLE::iItemSlot) },
//{ 0x0, "_ZN7CDEAGLE13PrimaryAttackEv", mfunc_ptr_cast(&CDEAGLE::PrimaryAttack) },
//{ 0x0, "_ZN7CDEAGLE15SecondaryAttackEv", mfunc_ptr_cast(&CDEAGLE::SecondaryAttack) },
//{ 0x0, "_ZN7CDEAGLE6ReloadEv", mfunc_ptr_cast(&CDEAGLE::Reload) },
//{ 0x0, "_ZN7CDEAGLE10WeaponIdleEv", mfunc_ptr_cast(&CDEAGLE::WeaponIdle) },
//{ 0x0, "_ZN7CDEAGLE12UseDecrementEv", mfunc_ptr_cast(&CDEAGLE::UseDecrement) },
//{ 0x0, "_ZN7CDEAGLE8IsPistolEv", mfunc_ptr_cast(&CDEAGLE::IsPistol) },
{ 0x01D03AF0, "_ZN7CDEAGLE5SpawnEv", mfunc_ptr_cast(&CDEAGLE::Spawn_) },
{ 0x01D03B50, "_ZN7CDEAGLE8PrecacheEv", mfunc_ptr_cast(&CDEAGLE::Precache_) },
{ 0x01D03BE0, "_ZN7CDEAGLE11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CDEAGLE::GetItemInfo_) },
{ 0x01D03C50, "_ZN7CDEAGLE6DeployEv", mfunc_ptr_cast(&CDEAGLE::Deploy_) },
//{ 0x01D04180, "_ZN7CDEAGLE11GetMaxSpeedEv", mfunc_ptr_cast(&CDEAGLE::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D04170, "_ZN7CDEAGLE9iItemSlotEv", mfunc_ptr_cast(&CDEAGLE::iItemSlot_) }, // DEFAULT
{ 0x01D03DB0, "_ZN7CDEAGLE15SecondaryAttackEv", mfunc_ptr_cast(&CDEAGLE::SecondaryAttack_) },
{ 0x01D03CF0, "_ZN7CDEAGLE13PrimaryAttackEv", mfunc_ptr_cast(&CDEAGLE::PrimaryAttack_) },
{ 0x01D040B0, "_ZN7CDEAGLE6ReloadEv", mfunc_ptr_cast(&CDEAGLE::Reload_) },
{ 0x01D040F0, "_ZN7CDEAGLE10WeaponIdleEv", mfunc_ptr_cast(&CDEAGLE::WeaponIdle_) },
//{ 0x01D04190, "_ZN7CDEAGLE12UseDecrementEv", mfunc_ptr_cast(&CDEAGLE::UseDecrement_) }, // DEFAULT
//{ 0x01D041A0, "_ZN7CDEAGLE8IsPistolEv", mfunc_ptr_cast(&CDEAGLE::IsPistol_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_deagle", (size_t)&weapon_deagle },
//{ 0x0, "_ZN7CDEAGLE10DEAGLEFireEffi", mfunc_ptr_cast(&CDEAGLE::DEAGLEFire) },
{ 0x01D03AA0, "weapon_deagle", (size_t)&weapon_deagle },
{ 0x01D03DC0, "_ZN7CDEAGLE10DEAGLEFireEffi", mfunc_ptr_cast(&CDEAGLE::DEAGLEFire) },
//CFlashbang
//virtual func
//{ 0x0, "_ZN10CFlashbang5SpawnEv", mfunc_ptr_cast(&CFlashbang::Spawn) },
//{ 0x0, "_ZN10CFlashbang8PrecacheEv", mfunc_ptr_cast(&CFlashbang::Precache) },
//{ 0x0, "_ZN10CFlashbang11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CFlashbang::GetItemInfo) },
//{ 0x0, "_ZN10CFlashbang9CanDeployEv", mfunc_ptr_cast(&CFlashbang::CanDeploy) },
//{ 0x0, "_ZN10CFlashbang7CanDropEv", mfunc_ptr_cast(&CFlashbang::CanDrop) },
//{ 0x0, "_ZN10CFlashbang6DeployEv", mfunc_ptr_cast(&CFlashbang::Deploy) },
//{ 0x0, "_ZN10CFlashbang7HolsterEi", mfunc_ptr_cast(&CFlashbang::Holster) },
//{ 0x0, "_ZN10CFlashbang11GetMaxSpeedEv", mfunc_ptr_cast(&CFlashbang::GetMaxSpeed) },
//{ 0x0, "_ZN10CFlashbang9iItemSlotEv", mfunc_ptr_cast(&CFlashbang::iItemSlot) },
//{ 0x0, "_ZN10CFlashbang13PrimaryAttackEv", mfunc_ptr_cast(&CFlashbang::PrimaryAttack) },
//{ 0x0, "_ZN10CFlashbang15SecondaryAttackEv", mfunc_ptr_cast(&CFlashbang::SecondaryAttack) },
//{ 0x0, "_ZN10CFlashbang10WeaponIdleEv", mfunc_ptr_cast(&CFlashbang::WeaponIdle) },
//{ 0x0, "_ZN10CFlashbang12UseDecrementEv", mfunc_ptr_cast(&CFlashbang::UseDecrement) },
//{ 0x0, "_ZN10CFlashbang8IsPistolEv", mfunc_ptr_cast(&CFlashbang::IsPistol) },
{ 0x01D059D0, "_ZN10CFlashbang5SpawnEv", mfunc_ptr_cast(&CFlashbang::Spawn_) },
{ 0x01D05A40, "_ZN10CFlashbang8PrecacheEv", mfunc_ptr_cast(&CFlashbang::Precache_) },
{ 0x01D05A80, "_ZN10CFlashbang11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CFlashbang::GetItemInfo_) },
{ 0x01D06260, "_ZN10CFlashbang9CanDeployEv", mfunc_ptr_cast(&CFlashbang::CanDeploy_) },
//{ 0x01D062A0, "_ZN10CFlashbang7CanDropEv", mfunc_ptr_cast(&CFlashbang::CanDrop_) }, // DEFUALT
{ 0x01D05AF0, "_ZN10CFlashbang6DeployEv", mfunc_ptr_cast(&CFlashbang::Deploy_) },
{ 0x01D05B90, "_ZN10CFlashbang7HolsterEi", mfunc_ptr_cast(&CFlashbang::Holster_) },
//{ 0x01D06290, "_ZN10CFlashbang11GetMaxSpeedEv", mfunc_ptr_cast(&CFlashbang::GetMaxSpeed_) }, // DEFUALT
//{ 0x01D06280, "_ZN10CFlashbang9iItemSlotEv", mfunc_ptr_cast(&CFlashbang::iItemSlot_) }, // DEFUALT
{ 0x01D05DA0, "_ZN10CFlashbang15SecondaryAttackEv", mfunc_ptr_cast(&CFlashbang::SecondaryAttack_) },
{ 0x01D05BF0, "_ZN10CFlashbang13PrimaryAttackEv", mfunc_ptr_cast(&CFlashbang::PrimaryAttack_) },
{ 0x01D05E40, "_ZN10CFlashbang10WeaponIdleEv", mfunc_ptr_cast(&CFlashbang::WeaponIdle_) },
//{ 0x01D062B0, "_ZN10CFlashbang12UseDecrementEv", mfunc_ptr_cast(&CFlashbang::UseDecrement_) }, // DEFUALT
//{ 0x01D062C0, "_ZN10CFlashbang8IsPistolEv", mfunc_ptr_cast(&CFlashbang::IsPistol_) }, // DEFUALT
//non-virtual func
//{ 0x0, "weapon_flashbang", (size_t)&weapon_flashbang },
//{ 0x0, "_ZN10CFlashbang19ShieldSecondaryFireEii", mfunc_ptr_cast(&CFlashbang::ShieldSecondaryFire) },
//{ 0x0, "_ZN10CFlashbang19SetPlayerShieldAnimEv", mfunc_ptr_cast(&CFlashbang::SetPlayerShieldAnim) },
//{ 0x0, "_ZN10CFlashbang21ResetPlayerShieldAnimEv", mfunc_ptr_cast(&CFlashbang::ResetPlayerShieldAnim) },
{ 0x01D05980, "weapon_flashbang", (size_t)&weapon_flashbang },
{ 0x01D05C60, "_ZN10CFlashbang19ShieldSecondaryFireEii", mfunc_ptr_cast(&CFlashbang::ShieldSecondaryFire) },
//{ 0x01D05DB0, "_ZN10CFlashbang19SetPlayerShieldAnimEv", mfunc_ptr_cast(&CFlashbang::SetPlayerShieldAnim) }, // NOXREF
//{ 0x01D05E00, "_ZN10CFlashbang21ResetPlayerShieldAnimEv", mfunc_ptr_cast(&CFlashbang::ResetPlayerShieldAnim) }, // NOXREF
//CG3SG1
//virtual func
//{ 0x0, "_ZN6CG3SG15SpawnEv", mfunc_ptr_cast(&CG3SG1::Spawn) },
//{ 0x0, "_ZN6CG3SG18PrecacheEv", mfunc_ptr_cast(&CG3SG1::Precache) },
//{ 0x0, "_ZN6CG3SG111GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CG3SG1::GetItemInfo) },
//{ 0x0, "_ZN6CG3SG16DeployEv", mfunc_ptr_cast(&CG3SG1::Deploy) },
//{ 0x0, "_ZN6CG3SG111GetMaxSpeedEv", mfunc_ptr_cast(&CG3SG1::GetMaxSpeed) },
//{ 0x0, "_ZN6CG3SG19iItemSlotEv", mfunc_ptr_cast(&CG3SG1::iItemSlot) },
//{ 0x0, "_ZN6CG3SG113PrimaryAttackEv", mfunc_ptr_cast(&CG3SG1::PrimaryAttack) },
//{ 0x0, "_ZN6CG3SG115SecondaryAttackEv", mfunc_ptr_cast(&CG3SG1::SecondaryAttack) },
//{ 0x0, "_ZN6CG3SG16ReloadEv", mfunc_ptr_cast(&CG3SG1::Reload) },
//{ 0x0, "_ZN6CG3SG110WeaponIdleEv", mfunc_ptr_cast(&CG3SG1::WeaponIdle) },
//{ 0x0, "_ZN6CG3SG112UseDecrementEv", mfunc_ptr_cast(&CG3SG1::UseDecrement) },
{ 0x01D06320, "_ZN6CG3SG15SpawnEv", mfunc_ptr_cast(&CG3SG1::Spawn_) },
{ 0x01D06370, "_ZN6CG3SG18PrecacheEv", mfunc_ptr_cast(&CG3SG1::Precache_) },
{ 0x01D063F0, "_ZN6CG3SG111GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CG3SG1::GetItemInfo_) },
{ 0x01D06460, "_ZN6CG3SG16DeployEv", mfunc_ptr_cast(&CG3SG1::Deploy_) },
{ 0x01D06A30, "_ZN6CG3SG111GetMaxSpeedEv", mfunc_ptr_cast(&CG3SG1::GetMaxSpeed_) },
//{ 0x01D06A50, "_ZN6CG3SG19iItemSlotEv", mfunc_ptr_cast(&CG3SG1::iItemSlot_) }, // DEFAULT
{ 0x01D064A0, "_ZN6CG3SG115SecondaryAttackEv", mfunc_ptr_cast(&CG3SG1::SecondaryAttack_) },
{ 0x01D06580, "_ZN6CG3SG113PrimaryAttackEv", mfunc_ptr_cast(&CG3SG1::PrimaryAttack_) },
{ 0x01D06930, "_ZN6CG3SG16ReloadEv", mfunc_ptr_cast(&CG3SG1::Reload_) },
{ 0x01D069B0, "_ZN6CG3SG110WeaponIdleEv", mfunc_ptr_cast(&CG3SG1::WeaponIdle_) },
//{ 0x01D06A60, "_ZN6CG3SG112UseDecrementEv", mfunc_ptr_cast(&CG3SG1::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_g3sg1", (size_t)&weapon_g3sg1 },
//{ 0x0, "_ZN6CG3SG19G3SG1FireEffi", mfunc_ptr_cast(&CG3SG1::G3SG1Fire) },
{ 0x01D062D0, "weapon_g3sg1", (size_t)&weapon_g3sg1 },
{ 0x01D06600, "_ZN6CG3SG19G3SG1FireEffi", mfunc_ptr_cast(&CG3SG1::G3SG1Fire) },
//CGLOCK18
//virtual func
{ 0x01D071E0, "_ZN8CGLOCK185SpawnEv", mfunc_ptr_cast(&CGLOCK18::Spawn_) },
@ -3180,8 +3172,8 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D07380, "_ZN8CGLOCK186DeployEv", mfunc_ptr_cast(&CGLOCK18::Deploy_) },
//{ 0x01D07B10, "_ZN8CGLOCK1811GetMaxSpeedEv", mfunc_ptr_cast(&CGLOCK18::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D07B00, "_ZN8CGLOCK189iItemSlotEv", mfunc_ptr_cast(&CGLOCK18::iItemSlot_) }, // DEFAULT
{ 0x01D07510, "_ZN8CGLOCK1813PrimaryAttackEv", mfunc_ptr_cast(&CGLOCK18::PrimaryAttack_) },
{ 0x01D07480, "_ZN8CGLOCK1815SecondaryAttackEv", mfunc_ptr_cast(&CGLOCK18::SecondaryAttack_) },
{ 0x01D07510, "_ZN8CGLOCK1813PrimaryAttackEv", mfunc_ptr_cast(&CGLOCK18::PrimaryAttack_) },
{ 0x01D07980, "_ZN8CGLOCK186ReloadEv", mfunc_ptr_cast(&CGLOCK18::Reload_) },
{ 0x01D079F0, "_ZN8CGLOCK1810WeaponIdleEv", mfunc_ptr_cast(&CGLOCK18::WeaponIdle_) },
//{ 0x01D07B20, "_ZN8CGLOCK1812UseDecrementEv", mfunc_ptr_cast(&CGLOCK18::UseDecrement_) }, // DEFAULT
@ -3191,24 +3183,24 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D07670, "_ZN8CGLOCK1811GLOCK18FireEffi", mfunc_ptr_cast(&CGLOCK18::GLOCK18Fire) },
//CHEGrenade
//virtual func
//{ 0x0, "_ZN10CHEGrenade5SpawnEv", mfunc_ptr_cast(&CHEGrenade::Spawn) },
//{ 0x0, "_ZN10CHEGrenade8PrecacheEv", mfunc_ptr_cast(&CHEGrenade::Precache) },
//{ 0x0, "_ZN10CHEGrenade11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CHEGrenade::GetItemInfo) },
//{ 0x0, "_ZN10CHEGrenade9CanDeployEv", mfunc_ptr_cast(&CHEGrenade::CanDeploy) },
//{ 0x0, "_ZN10CHEGrenade7CanDropEv", mfunc_ptr_cast(&CHEGrenade::CanDrop) },
//{ 0x0, "_ZN10CHEGrenade6DeployEv", mfunc_ptr_cast(&CHEGrenade::Deploy) },
//{ 0x0, "_ZN10CHEGrenade7HolsterEi", mfunc_ptr_cast(&CHEGrenade::Holster) },
//{ 0x0, "_ZN10CHEGrenade11GetMaxSpeedEv", mfunc_ptr_cast(&CHEGrenade::GetMaxSpeed) },
//{ 0x0, "_ZN10CHEGrenade9iItemSlotEv", mfunc_ptr_cast(&CHEGrenade::iItemSlot) },
//{ 0x0, "_ZN10CHEGrenade13PrimaryAttackEv", mfunc_ptr_cast(&CHEGrenade::PrimaryAttack) },
//{ 0x0, "_ZN10CHEGrenade15SecondaryAttackEv", mfunc_ptr_cast(&CHEGrenade::SecondaryAttack) },
//{ 0x0, "_ZN10CHEGrenade10WeaponIdleEv", mfunc_ptr_cast(&CHEGrenade::WeaponIdle) },
//{ 0x0, "_ZN10CHEGrenade12UseDecrementEv", mfunc_ptr_cast(&CHEGrenade::UseDecrement) },
{ 0x01D07B90, "_ZN10CHEGrenade5SpawnEv", mfunc_ptr_cast(&CHEGrenade::Spawn_) },
{ 0x01D07C00, "_ZN10CHEGrenade8PrecacheEv", mfunc_ptr_cast(&CHEGrenade::Precache_) },
{ 0x01D07C60, "_ZN10CHEGrenade11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CHEGrenade::GetItemInfo_) },
{ 0x01D08450, "_ZN10CHEGrenade9CanDeployEv", mfunc_ptr_cast(&CHEGrenade::CanDeploy_) },
//{ 0x01D08490, "_ZN10CHEGrenade7CanDropEv", mfunc_ptr_cast(&CHEGrenade::CanDrop_) }, // DEFAULT
{ 0x01D07CD0, "_ZN10CHEGrenade6DeployEv", mfunc_ptr_cast(&CHEGrenade::Deploy_) },
{ 0x01D07D70, "_ZN10CHEGrenade7HolsterEi", mfunc_ptr_cast(&CHEGrenade::Holster_) },
//{ 0x01D08480, "_ZN10CHEGrenade11GetMaxSpeedEv", mfunc_ptr_cast(&CHEGrenade::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D08470, "_ZN10CHEGrenade9iItemSlotEv", mfunc_ptr_cast(&CHEGrenade::iItemSlot_) }, // DEFAULT
{ 0x01D07F80, "_ZN10CHEGrenade15SecondaryAttackEv", mfunc_ptr_cast(&CHEGrenade::SecondaryAttack_) },
{ 0x01D07DD0, "_ZN10CHEGrenade13PrimaryAttackEv", mfunc_ptr_cast(&CHEGrenade::PrimaryAttack_) },
{ 0x01D08020, "_ZN10CHEGrenade10WeaponIdleEv", mfunc_ptr_cast(&CHEGrenade::WeaponIdle_) },
//{ 0x01D084A0, "_ZN10CHEGrenade12UseDecrementEv", mfunc_ptr_cast(&CHEGrenade::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_hegrenade", (size_t)&weapon_hegrenade },
//{ 0x0, "_ZN10CHEGrenade19ShieldSecondaryFireEii", mfunc_ptr_cast(&CHEGrenade::ShieldSecondaryFire) },
//{ 0x0, "_ZN10CHEGrenade19SetPlayerShieldAnimEv", mfunc_ptr_cast(&CHEGrenade::SetPlayerShieldAnim) },
//{ 0x0, "_ZN10CHEGrenade21ResetPlayerShieldAnimEv", mfunc_ptr_cast(&CHEGrenade::ResetPlayerShieldAnim) },
{ 0x01D07B40, "weapon_hegrenade", (size_t)&weapon_hegrenade },
{ 0x01D07E40, "_ZN10CHEGrenade19ShieldSecondaryFireEii", mfunc_ptr_cast(&CHEGrenade::ShieldSecondaryFire) },
//{ 0x01D07F90, "_ZN10CHEGrenade19SetPlayerShieldAnimEv", mfunc_ptr_cast(&CHEGrenade::SetPlayerShieldAnim) }, // NOXREF
//{ 0x01D07FE0, "_ZN10CHEGrenade21ResetPlayerShieldAnimEv", mfunc_ptr_cast(&CHEGrenade::ResetPlayerShieldAnim) }, // NOXREF
//CKnife
//virtual func
{ 0x01D08500, "_ZN6CKnife5SpawnEv", mfunc_ptr_cast(&CKnife::Spawn_) },
@ -3219,8 +3211,8 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D08710, "_ZN6CKnife7HolsterEi", mfunc_ptr_cast(&CKnife::Holster_) },
//{ 0x01D09900, "_ZN6CKnife11GetMaxSpeedEv", mfunc_ptr_cast(&CKnife::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D098F0, "_ZN6CKnife9iItemSlotEv", mfunc_ptr_cast(&CKnife::iItemSlot_) }, // DEFAULT
{ 0x01D08980, "_ZN6CKnife13PrimaryAttackEv", mfunc_ptr_cast(&CKnife::PrimaryAttack_) },
{ 0x01D08B50, "_ZN6CKnife15SecondaryAttackEv", mfunc_ptr_cast(&CKnife::SecondaryAttack_) },
{ 0x01D08980, "_ZN6CKnife13PrimaryAttackEv", mfunc_ptr_cast(&CKnife::PrimaryAttack_) },
//{ 0x01D09920, "_ZN6CKnife12UseDecrementEv", mfunc_ptr_cast(&CKnife::UseDecrement_) }, // DEFAULT
{ 0x01D08BB0, "_ZN6CKnife10WeaponIdleEv", mfunc_ptr_cast(&CKnife::WeaponIdle_) },
//non-virtual func
@ -3236,83 +3228,83 @@ FunctionHook g_FunctionHooks[] =
//{ 0x01D089E0, "_ZN6CKnife21ResetPlayerShieldAnimEv", mfunc_ptr_cast(&CKnife::ResetPlayerShieldAnim) }, // NOXREF
//CM249
//virtual func
//{ 0x0, "_ZN5CM2495SpawnEv", mfunc_ptr_cast(&CM249::Spawn) },
//{ 0x0, "_ZN5CM2498PrecacheEv", mfunc_ptr_cast(&CM249::Precache) },
//{ 0x0, "_ZN5CM24911GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CM249::GetItemInfo) },
//{ 0x0, "_ZN5CM2496DeployEv", mfunc_ptr_cast(&CM249::Deploy) },
//{ 0x0, "_ZN5CM24911GetMaxSpeedEv", mfunc_ptr_cast(&CM249::GetMaxSpeed) },
//{ 0x0, "_ZN5CM2499iItemSlotEv", mfunc_ptr_cast(&CM249::iItemSlot) },
//{ 0x0, "_ZN5CM24913PrimaryAttackEv", mfunc_ptr_cast(&CM249::PrimaryAttack) },
//{ 0x0, "_ZN5CM2496ReloadEv", mfunc_ptr_cast(&CM249::Reload) },
//{ 0x0, "_ZN5CM24910WeaponIdleEv", mfunc_ptr_cast(&CM249::WeaponIdle) },
//{ 0x0, "_ZN5CM24912UseDecrementEv", mfunc_ptr_cast(&CM249::UseDecrement) },
{ 0x01D09980, "_ZN5CM2495SpawnEv", mfunc_ptr_cast(&CM249::Spawn_) },
{ 0x01D099D0, "_ZN5CM2498PrecacheEv", mfunc_ptr_cast(&CM249::Precache_) },
{ 0x01D09A60, "_ZN5CM24911GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CM249::GetItemInfo_) },
{ 0x01D09AD0, "_ZN5CM2496DeployEv", mfunc_ptr_cast(&CM249::Deploy_) },
//{ 0x01D0A010, "_ZN5CM24911GetMaxSpeedEv", mfunc_ptr_cast(&CM249::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D0A000, "_ZN5CM2499iItemSlotEv", mfunc_ptr_cast(&CM249::iItemSlot_) }, // DEFAULT
{ 0x01D09B20, "_ZN5CM24913PrimaryAttackEv", mfunc_ptr_cast(&CM249::PrimaryAttack_) },
{ 0x01D09F40, "_ZN5CM2496ReloadEv", mfunc_ptr_cast(&CM249::Reload_) },
{ 0x01D09F90, "_ZN5CM24910WeaponIdleEv", mfunc_ptr_cast(&CM249::WeaponIdle_) },
//{ 0x01D0A020, "_ZN5CM24912UseDecrementEv", mfunc_ptr_cast(&CM249::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_m249", (size_t)&weapon_m249 },
//{ 0x0, "_ZN5CM2498M249FireEffi", mfunc_ptr_cast(&CM249::M249Fire) },
{ 0x01D09930, "weapon_m249", (size_t)&weapon_m249 },
{ 0x01D09BC0, "_ZN5CM2498M249FireEffi", mfunc_ptr_cast(&CM249::M249Fire) },
//CM3
//virtual func
//{ 0x0, "_ZN3CM35SpawnEv", mfunc_ptr_cast(&CM3::Spawn) },
//{ 0x0, "_ZN3CM38PrecacheEv", mfunc_ptr_cast(&CM3::Precache) },
//{ 0x0, "_ZN3CM311GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CM3::GetItemInfo) },
//{ 0x0, "_ZN3CM36DeployEv", mfunc_ptr_cast(&CM3::Deploy) },
//{ 0x0, "_ZN3CM311GetMaxSpeedEv", mfunc_ptr_cast(&CM3::GetMaxSpeed) },
//{ 0x0, "_ZN3CM39iItemSlotEv", mfunc_ptr_cast(&CM3::iItemSlot) },
//{ 0x01D0A1E0, "_ZN3CM313PrimaryAttackEv", mfunc_ptr_cast(&CM3::PrimaryAttack) },
//{ 0x0, "_ZN3CM36ReloadEv", mfunc_ptr_cast(&CM3::Reload) },
//{ 0x0, "_ZN3CM310WeaponIdleEv", mfunc_ptr_cast(&CM3::WeaponIdle) },
//{ 0x0, "_ZN3CM312UseDecrementEv", mfunc_ptr_cast(&CM3::UseDecrement) },
{ 0x01D0A080, "_ZN3CM35SpawnEv", mfunc_ptr_cast(&CM3::Spawn_) },
{ 0x01D0A0C0, "_ZN3CM38PrecacheEv", mfunc_ptr_cast(&CM3::Precache_) },
{ 0x01D0A140, "_ZN3CM311GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CM3::GetItemInfo_) },
{ 0x01D0A1B0, "_ZN3CM36DeployEv", mfunc_ptr_cast(&CM3::Deploy_) },
//{ 0x01D0A740, "_ZN3CM311GetMaxSpeedEv", mfunc_ptr_cast(&CM3::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D0A730, "_ZN3CM39iItemSlotEv", mfunc_ptr_cast(&CM3::iItemSlot_) }, // DEFAULT
{ 0x01D0A1E0, "_ZN3CM313PrimaryAttackEv", mfunc_ptr_cast(&CM3::PrimaryAttack_) },
{ 0x01D0A4A0, "_ZN3CM36ReloadEv", mfunc_ptr_cast(&CM3::Reload_) },
{ 0x01D0A5D0, "_ZN3CM310WeaponIdleEv", mfunc_ptr_cast(&CM3::WeaponIdle_) },
//{ 0x01D0A750, "_ZN3CM312UseDecrementEv", mfunc_ptr_cast(&CM3::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_m3", (size_t)&weapon_m3 },
{ 0x01D0A030, "weapon_m3", (size_t)&weapon_m3 },
//CM4A1
//virtual func
//{ 0x0, "_ZN5CM4A15SpawnEv", mfunc_ptr_cast(&CM4A1::Spawn) },
//{ 0x0, "_ZN5CM4A18PrecacheEv", mfunc_ptr_cast(&CM4A1::Precache) },
//{ 0x0, "_ZN5CM4A111GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CM4A1::GetItemInfo) },
//{ 0x0, "_ZN5CM4A16DeployEv", mfunc_ptr_cast(&CM4A1::Deploy) },
//{ 0x0, "_ZN5CM4A111GetMaxSpeedEv", mfunc_ptr_cast(&CM4A1::GetMaxSpeed) },
//{ 0x0, "_ZN5CM4A19iItemSlotEv", mfunc_ptr_cast(&CM4A1::iItemSlot) },
//{ 0x0, "_ZN5CM4A113PrimaryAttackEv", mfunc_ptr_cast(&CM4A1::PrimaryAttack) },
//{ 0x0, "_ZN5CM4A115SecondaryAttackEv", mfunc_ptr_cast(&CM4A1::SecondaryAttack) },
//{ 0x0, "_ZN5CM4A16ReloadEv", mfunc_ptr_cast(&CM4A1::Reload) },
//{ 0x0, "_ZN5CM4A110WeaponIdleEv", mfunc_ptr_cast(&CM4A1::WeaponIdle) },
//{ 0x0, "_ZN5CM4A112UseDecrementEv", mfunc_ptr_cast(&CM4A1::UseDecrement) },
{ 0x01D0A7B0, "_ZN5CM4A15SpawnEv", mfunc_ptr_cast(&CM4A1::Spawn_) },
{ 0x01D0A810, "_ZN5CM4A18PrecacheEv", mfunc_ptr_cast(&CM4A1::Precache_) },
{ 0x01D0A8C0, "_ZN5CM4A111GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CM4A1::GetItemInfo_) },
{ 0x01D0A930, "_ZN5CM4A16DeployEv", mfunc_ptr_cast(&CM4A1::Deploy_) },
{ 0x01D0B050, "_ZN5CM4A111GetMaxSpeedEv", mfunc_ptr_cast(&CM4A1::GetMaxSpeed_) },
//{ 0x01D0B060, "_ZN5CM4A19iItemSlotEv", mfunc_ptr_cast(&CM4A1::iItemSlot_) }, // DEFAULT
{ 0x01D0A9C0, "_ZN5CM4A115SecondaryAttackEv", mfunc_ptr_cast(&CM4A1::SecondaryAttack_) },
{ 0x01D0AA70, "_ZN5CM4A113PrimaryAttackEv", mfunc_ptr_cast(&CM4A1::PrimaryAttack_) },
{ 0x01D0AF60, "_ZN5CM4A16ReloadEv", mfunc_ptr_cast(&CM4A1::Reload_) },
{ 0x01D0AFC0, "_ZN5CM4A110WeaponIdleEv", mfunc_ptr_cast(&CM4A1::WeaponIdle_) },
//{ 0x01D0B070, "_ZN5CM4A112UseDecrementEv", mfunc_ptr_cast(&CM4A1::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_m4a1", (size_t)&weapon_m4a1 },
//{ 0x0, "_ZN5CM4A18M4A1FireEffi", mfunc_ptr_cast(&CM4A1::M4A1Fire) },
{ 0x01D0A760, "weapon_m4a1", (size_t)&weapon_m4a1 },
{ 0x01D0AB80, "_ZN5CM4A18M4A1FireEffi", mfunc_ptr_cast(&CM4A1::M4A1Fire) },
//CMAC10
//virtual func
//{ 0x0, "_ZN6CMAC105SpawnEv", mfunc_ptr_cast(&CMAC10::Spawn) },
//{ 0x0, "_ZN6CMAC108PrecacheEv", mfunc_ptr_cast(&CMAC10::Precache) },
//{ 0x0, "_ZN6CMAC1011GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CMAC10::GetItemInfo) },
//{ 0x0, "_ZN6CMAC106DeployEv", mfunc_ptr_cast(&CMAC10::Deploy) },
//{ 0x0, "_ZN6CMAC1011GetMaxSpeedEv", mfunc_ptr_cast(&CMAC10::GetMaxSpeed) },
//{ 0x0, "_ZN6CMAC109iItemSlotEv", mfunc_ptr_cast(&CMAC10::iItemSlot) },
//{ 0x0, "_ZN6CMAC1013PrimaryAttackEv", mfunc_ptr_cast(&CMAC10::PrimaryAttack) },
//{ 0x0, "_ZN6CMAC106ReloadEv", mfunc_ptr_cast(&CMAC10::Reload) },
//{ 0x0, "_ZN6CMAC1010WeaponIdleEv", mfunc_ptr_cast(&CMAC10::WeaponIdle) },
//{ 0x0, "_ZN6CMAC1012UseDecrementEv", mfunc_ptr_cast(&CMAC10::UseDecrement) },
{ 0x01D0B0D0, "_ZN6CMAC105SpawnEv", mfunc_ptr_cast(&CMAC10::Spawn_) },
{ 0x01D0B120, "_ZN6CMAC108PrecacheEv", mfunc_ptr_cast(&CMAC10::Precache_) },
{ 0x01D0B190, "_ZN6CMAC1011GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CMAC10::GetItemInfo_) },
{ 0x01D0B200, "_ZN6CMAC106DeployEv", mfunc_ptr_cast(&CMAC10::Deploy_) },
//{ 0x01D0B6E0, "_ZN6CMAC1011GetMaxSpeedEv", mfunc_ptr_cast(&CMAC10::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D0B6D0, "_ZN6CMAC109iItemSlotEv", mfunc_ptr_cast(&CMAC10::iItemSlot_) }, // DEFAULT
{ 0x01D0B250, "_ZN6CMAC1013PrimaryAttackEv", mfunc_ptr_cast(&CMAC10::PrimaryAttack_) },
{ 0x01D0B610, "_ZN6CMAC106ReloadEv", mfunc_ptr_cast(&CMAC10::Reload_) },
{ 0x01D0B660, "_ZN6CMAC1010WeaponIdleEv", mfunc_ptr_cast(&CMAC10::WeaponIdle_) },
//{ 0x01D0B6F0, "_ZN6CMAC1012UseDecrementEv", mfunc_ptr_cast(&CMAC10::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_mac10", (size_t)&weapon_mac10 },
//{ 0x0, "_ZN6CMAC109MAC10FireEffi", mfunc_ptr_cast(&CMAC10::CMAC10Fire) },
{ 0x01D0B080, "weapon_mac10", (size_t)&weapon_mac10 },
{ 0x01D0B290, "_ZN6CMAC109MAC10FireEffi", mfunc_ptr_cast(&CMAC10::MAC10Fire) },
//CP228
//virtual func
//{ 0x0, "_ZN5CP2285SpawnEv", mfunc_ptr_cast(&CP228::Spawn) },
//{ 0x0, "_ZN5CP2288PrecacheEv", mfunc_ptr_cast(&CP228::Precache) },
//{ 0x0, "_ZN5CP22811GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CP228::GetItemInfo) },
//{ 0x0, "_ZN5CP2286DeployEv", mfunc_ptr_cast(&CP228::Deploy) },
//{ 0x0, "_ZN5CP22811GetMaxSpeedEv", mfunc_ptr_cast(&CP228::GetMaxSpeed) },
//{ 0x0, "_ZN5CP2289iItemSlotEv", mfunc_ptr_cast(&CP228::iItemSlot) },
//{ 0x0, "_ZN5CP22813PrimaryAttackEv", mfunc_ptr_cast(&CP228::PrimaryAttack) },
//{ 0x0, "_ZN5CP22815SecondaryAttackEv", mfunc_ptr_cast(&CP228::SecondaryAttack) },
//{ 0x0, "_ZN5CP2286ReloadEv", mfunc_ptr_cast(&CP228::Reload) },
//{ 0x0, "_ZN5CP22810WeaponIdleEv", mfunc_ptr_cast(&CP228::WeaponIdle) },
//{ 0x0, "_ZN5CP22812UseDecrementEv", mfunc_ptr_cast(&CP228::UseDecrement) },
//{ 0x0, "_ZN5CP2288IsPistolEv", mfunc_ptr_cast(&CP228::IsPistol) },
{ 0x01D0BDC0, "_ZN5CP2285SpawnEv", mfunc_ptr_cast(&CP228::Spawn_) },
{ 0x01D0BE20, "_ZN5CP2288PrecacheEv", mfunc_ptr_cast(&CP228::Precache_) },
{ 0x01D0BEB0, "_ZN5CP22811GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CP228::GetItemInfo_) },
{ 0x01D0BF20, "_ZN5CP2286DeployEv", mfunc_ptr_cast(&CP228::Deploy_) },
//{ 0x01D0C4A0, "_ZN5CP22811GetMaxSpeedEv", mfunc_ptr_cast(&CP228::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D0C490, "_ZN5CP2289iItemSlotEv", mfunc_ptr_cast(&CP228::iItemSlot_) }, // DEFAULT
{ 0x01D0C080, "_ZN5CP22815SecondaryAttackEv", mfunc_ptr_cast(&CP228::SecondaryAttack_) },
{ 0x01D0BFC0, "_ZN5CP22813PrimaryAttackEv", mfunc_ptr_cast(&CP228::PrimaryAttack_) },
{ 0x01D0C380, "_ZN5CP2286ReloadEv", mfunc_ptr_cast(&CP228::Reload_) },
{ 0x01D0C3D0, "_ZN5CP22810WeaponIdleEv", mfunc_ptr_cast(&CP228::WeaponIdle_) },
//{ 0x01D0C4B0, "_ZN5CP22812UseDecrementEv", mfunc_ptr_cast(&CP228::UseDecrement_) }, // DEFAULT
//{ 0x01D0C4C0, "_ZN5CP2288IsPistolEv", mfunc_ptr_cast(&CP228::IsPistol_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_p228", (size_t)&weapon_p228 },
//{ 0x0, "_ZN5CP2288P228FireEffi", mfunc_ptr_cast(&CP228::P228Fire) },
////{ 0x0, "_ZN5CP2288MakeBeamEv", mfunc_ptr_cast(&CP228::MakeBeam) }, // NOXREF
////{ 0x0, "_ZN5CP22810BeamUpdateEv", mfunc_ptr_cast(&CP228::BeamUpdate) }, // NOXREF
{ 0x01D0BD70, "weapon_p228", (size_t)&weapon_p228 },
{ 0x01D0C090, "_ZN5CP2288P228FireEffi", mfunc_ptr_cast(&CP228::P228Fire) },
//{ 0x0, "_ZN5CP2288MakeBeamEv", mfunc_ptr_cast(&CP228::MakeBeam) }, // NOXREF
//{ 0x0, "_ZN5CP22810BeamUpdateEv", mfunc_ptr_cast(&CP228::BeamUpdate) }, // NOXREF
//CP90
//virtual func
{ 0x01D0C520, "_ZN4CP905SpawnEv", mfunc_ptr_cast(&CP90::Spawn_) },
@ -3330,167 +3322,167 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D0C750, "_ZN4CP907P90FireEffi", mfunc_ptr_cast(&CP90::P90Fire) },
//CSCOUT
//virtual func
//{ 0x0, "_ZN6CSCOUT5SpawnEv", mfunc_ptr_cast(&CSCOUT::Spawn) },
//{ 0x0, "_ZN6CSCOUT8PrecacheEv", mfunc_ptr_cast(&CSCOUT::Precache) },
//{ 0x0, "_ZN6CSCOUT11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CSCOUT::GetItemInfo) },
//{ 0x0, "_ZN6CSCOUT6DeployEv", mfunc_ptr_cast(&CSCOUT::Deploy) },
//{ 0x0, "_ZN6CSCOUT11GetMaxSpeedEv", mfunc_ptr_cast(&CSCOUT::GetMaxSpeed) },
//{ 0x0, "_ZN6CSCOUT9iItemSlotEv", mfunc_ptr_cast(&CSCOUT::iItemSlot) },
//{ 0x0, "_ZN6CSCOUT13PrimaryAttackEv", mfunc_ptr_cast(&CSCOUT::PrimaryAttack) },
//{ 0x0, "_ZN6CSCOUT15SecondaryAttackEv", mfunc_ptr_cast(&CSCOUT::SecondaryAttack) },
//{ 0x0, "_ZN6CSCOUT6ReloadEv", mfunc_ptr_cast(&CSCOUT::Reload) },
//{ 0x0, "_ZN6CSCOUT10WeaponIdleEv", mfunc_ptr_cast(&CSCOUT::WeaponIdle) },
//{ 0x0, "_ZN6CSCOUT12UseDecrementEv", mfunc_ptr_cast(&CSCOUT::UseDecrement) },
{ 0x01D0CC00, "_ZN6CSCOUT5SpawnEv", mfunc_ptr_cast(&CSCOUT::Spawn_) },
{ 0x01D0CC40, "_ZN6CSCOUT8PrecacheEv", mfunc_ptr_cast(&CSCOUT::Precache_) },
{ 0x01D0CCC0, "_ZN6CSCOUT11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CSCOUT::GetItemInfo_) },
{ 0x01D0CD30, "_ZN6CSCOUT6DeployEv", mfunc_ptr_cast(&CSCOUT::Deploy_) },
{ 0x01D0D280, "_ZN6CSCOUT11GetMaxSpeedEv", mfunc_ptr_cast(&CSCOUT::GetMaxSpeed_) },
//{ 0x01D0D2A0, "_ZN6CSCOUT9iItemSlotEv", mfunc_ptr_cast(&CSCOUT::iItemSlot_) }, // DEFAULT
{ 0x01D0CDA0, "_ZN6CSCOUT15SecondaryAttackEv", mfunc_ptr_cast(&CSCOUT::SecondaryAttack_) },
{ 0x01D0CE80, "_ZN6CSCOUT13PrimaryAttackEv", mfunc_ptr_cast(&CSCOUT::PrimaryAttack_) },
{ 0x01D0D1A0, "_ZN6CSCOUT6ReloadEv", mfunc_ptr_cast(&CSCOUT::Reload_) },
{ 0x01D0D200, "_ZN6CSCOUT10WeaponIdleEv", mfunc_ptr_cast(&CSCOUT::WeaponIdle_) },
//{ 0x01D0D2B0, "_ZN6CSCOUT12UseDecrementEv", mfunc_ptr_cast(&CSCOUT::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_scout", (size_t)&weapon_scout },
//{ 0x0, "_ZN6CSCOUT9SCOUTFireEffi", mfunc_ptr_cast(&CSCOUT::SCOUTFire) },
{ 0x01D0CBB0, "weapon_scout", (size_t)&weapon_scout },
{ 0x01D0CEF0, "_ZN6CSCOUT9SCOUTFireEffi", mfunc_ptr_cast(&CSCOUT::SCOUTFire) },
//CSmokeGrenade
//virtual func
//{ 0x0, "_ZN13CSmokeGrenade5SpawnEv", mfunc_ptr_cast(&CSmokeGrenade::Spawn) },
//{ 0x0, "_ZN13CSmokeGrenade8PrecacheEv", mfunc_ptr_cast(&CSmokeGrenade::Precache) },
//{ 0x0, "_ZN13CSmokeGrenade11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CSmokeGrenade::GetItemInfo) },
//{ 0x0, "_ZN13CSmokeGrenade9CanDeployEv", mfunc_ptr_cast(&CSmokeGrenade::CanDeploy) },
//{ 0x0, "_ZN13CSmokeGrenade7CanDropEv", mfunc_ptr_cast(&CSmokeGrenade::CanDrop) },
//{ 0x0, "_ZN13CSmokeGrenade6DeployEv", mfunc_ptr_cast(&CSmokeGrenade::Deploy) },
//{ 0x0, "_ZN13CSmokeGrenade7HolsterEi", mfunc_ptr_cast(&CSmokeGrenade::Holster) },
//{ 0x0, "_ZN13CSmokeGrenade11GetMaxSpeedEv", mfunc_ptr_cast(&CSmokeGrenade::GetMaxSpeed) },
//{ 0x0, "_ZN13CSmokeGrenade9iItemSlotEv", mfunc_ptr_cast(&CSmokeGrenade::iItemSlot) },
//{ 0x0, "_ZN13CSmokeGrenade13PrimaryAttackEv", mfunc_ptr_cast(&CSmokeGrenade::PrimaryAttack) },
//{ 0x0, "_ZN13CSmokeGrenade15SecondaryAttackEv", mfunc_ptr_cast(&CSmokeGrenade::SecondaryAttack) },
//{ 0x0, "_ZN13CSmokeGrenade10WeaponIdleEv", mfunc_ptr_cast(&CSmokeGrenade::WeaponIdle) },
//{ 0x0, "_ZN13CSmokeGrenade12UseDecrementEv", mfunc_ptr_cast(&CSmokeGrenade::UseDecrement) },
{ 0x01D0E250, "_ZN13CSmokeGrenade5SpawnEv", mfunc_ptr_cast(&CSmokeGrenade::Spawn_) },
{ 0x01D0E2C0, "_ZN13CSmokeGrenade8PrecacheEv", mfunc_ptr_cast(&CSmokeGrenade::Precache_) },
{ 0x01D0E310, "_ZN13CSmokeGrenade11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CSmokeGrenade::GetItemInfo_) },
//{ 0x01D0EB80, "_ZN13CSmokeGrenade7CanDropEv", mfunc_ptr_cast(&CSmokeGrenade::CanDrop_) }, // DEFAULT
{ 0x01D0E380, "_ZN13CSmokeGrenade6DeployEv", mfunc_ptr_cast(&CSmokeGrenade::Deploy_) },
{ 0x01D0E420, "_ZN13CSmokeGrenade7HolsterEi", mfunc_ptr_cast(&CSmokeGrenade::Holster_) },
//{ 0x01D0EB70, "_ZN13CSmokeGrenade11GetMaxSpeedEv", mfunc_ptr_cast(&CSmokeGrenade::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D0EB60, "_ZN13CSmokeGrenade9iItemSlotEv", mfunc_ptr_cast(&CSmokeGrenade::iItemSlot_) }, // DEFAULT
{ 0x01D0E630, "_ZN13CSmokeGrenade15SecondaryAttackEv", mfunc_ptr_cast(&CSmokeGrenade::SecondaryAttack_) },
{ 0x01D0E480, "_ZN13CSmokeGrenade13PrimaryAttackEv", mfunc_ptr_cast(&CSmokeGrenade::PrimaryAttack_) },
{ 0x01D0E6D0, "_ZN13CSmokeGrenade10WeaponIdleEv", mfunc_ptr_cast(&CSmokeGrenade::WeaponIdle_) },
//{ 0x01D0EB90, "_ZN13CSmokeGrenade12UseDecrementEv", mfunc_ptr_cast(&CSmokeGrenade::UseDecrement_) }, // DEFAULT
{ 0x01D0EB40, "_ZN13CSmokeGrenade9CanDeployEv", mfunc_ptr_cast(&CSmokeGrenade::CanDeploy_) },
//non-virtual func
//{ 0x0, "weapon_smokegrenade", (size_t)&weapon_smokegrenade },
//{ 0x0, "_ZN13CSmokeGrenade19ShieldSecondaryFireEii", mfunc_ptr_cast(&CSmokeGrenade::ShieldSecondaryFire) },
//{ 0x0, "_ZN13CSmokeGrenade19SetPlayerShieldAnimEv", mfunc_ptr_cast(&CSmokeGrenade::SetPlayerShieldAnim) },
//{ 0x0, "_ZN13CSmokeGrenade21ResetPlayerShieldAnimEv", mfunc_ptr_cast(&CSmokeGrenade::ResetPlayerShieldAnim) },
{ 0x01D0E200, "weapon_smokegrenade", (size_t)&weapon_smokegrenade },
{ 0x01D0E4F0, "_ZN13CSmokeGrenade19ShieldSecondaryFireEii", mfunc_ptr_cast(&CSmokeGrenade::ShieldSecondaryFire) },
//{ 0x01D0E640, "_ZN13CSmokeGrenade19SetPlayerShieldAnimEv", mfunc_ptr_cast(&CSmokeGrenade::SetPlayerShieldAnim) }, // NOXREF
//{ 0x01D0E690, "_ZN13CSmokeGrenade21ResetPlayerShieldAnimEv", mfunc_ptr_cast(&CSmokeGrenade::ResetPlayerShieldAnim) }, // NOXREF
//CTMP
//virtual func
//{ 0x0, "_ZN4CTMP5SpawnEv", mfunc_ptr_cast(&CTMP::Spawn) },
//{ 0x0, "_ZN4CTMP8PrecacheEv", mfunc_ptr_cast(&CTMP::Precache) },
//{ 0x0, "_ZN4CTMP11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CTMP::GetItemInfo) },
//{ 0x0, "_ZN4CTMP6DeployEv", mfunc_ptr_cast(&CTMP::Deploy) },
//{ 0x0, "_ZN4CTMP11GetMaxSpeedEv", mfunc_ptr_cast(&CTMP::GetMaxSpeed) },
//{ 0x0, "_ZN4CTMP9iItemSlotEv", mfunc_ptr_cast(&CTMP::iItemSlot) },
//{ 0x0, "_ZN4CTMP13PrimaryAttackEv", mfunc_ptr_cast(&CTMP::PrimaryAttack) },
//{ 0x0, "_ZN4CTMP6ReloadEv", mfunc_ptr_cast(&CTMP::Reload) },
//{ 0x0, "_ZN4CTMP10WeaponIdleEv", mfunc_ptr_cast(&CTMP::WeaponIdle) },
//{ 0x0, "_ZN4CTMP12UseDecrementEv", mfunc_ptr_cast(&CTMP::UseDecrement) },
{ 0x01D0EBF0, "_ZN4CTMP5SpawnEv", mfunc_ptr_cast(&CTMP::Spawn_) },
{ 0x01D0EC50, "_ZN4CTMP8PrecacheEv", mfunc_ptr_cast(&CTMP::Precache_) },
{ 0x01D0ECB0, "_ZN4CTMP11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CTMP::GetItemInfo_) },
{ 0x01D0ED20, "_ZN4CTMP6DeployEv", mfunc_ptr_cast(&CTMP::Deploy_) },
//{ 0x01D0F1D0, "_ZN4CTMP11GetMaxSpeedEv", mfunc_ptr_cast(&CTMP::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D0F1C0, "_ZN4CTMP9iItemSlotEv", mfunc_ptr_cast(&CTMP::iItemSlot_) }, // DEFAULT
{ 0x01D0ED70, "_ZN4CTMP13PrimaryAttackEv", mfunc_ptr_cast(&CTMP::PrimaryAttack_) },
{ 0x01D0F100, "_ZN4CTMP6ReloadEv", mfunc_ptr_cast(&CTMP::Reload_) },
{ 0x01D0F150, "_ZN4CTMP10WeaponIdleEv", mfunc_ptr_cast(&CTMP::WeaponIdle_) },
//{ 0x01D0F1E0, "_ZN4CTMP12UseDecrementEv", mfunc_ptr_cast(&CTMP::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_tmp", (size_t)&weapon_tmp },
//{ 0x0, "_ZN4CTMP7TMPFireEffi", mfunc_ptr_cast(&CTMP::TMPFire) },
{ 0x01D0EBA0, "weapon_tmp", (size_t)&weapon_tmp },
{ 0x01D0EDB0, "_ZN4CTMP7TMPFireEffi", mfunc_ptr_cast(&CTMP::TMPFire) },
//CXM1014
//virtual func
//{ 0x0, "_ZN7CXM10145SpawnEv", mfunc_ptr_cast(&CXM1014::Spawn) },
//{ 0x0, "_ZN7CXM10148PrecacheEv", mfunc_ptr_cast(&CXM1014::Precache) },
//{ 0x0, "_ZN7CXM101411GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CXM1014::GetItemInfo) },
//{ 0x0, "_ZN7CXM10146DeployEv", mfunc_ptr_cast(&CXM1014::Deploy) },
//{ 0x0, "_ZN7CXM101411GetMaxSpeedEv", mfunc_ptr_cast(&CXM1014::GetMaxSpeed) },
//{ 0x0, "_ZN7CXM10149iItemSlotEv", mfunc_ptr_cast(&CXM1014::iItemSlot) },
//{ 0x01D10370, "_ZN7CXM101413PrimaryAttackEv", mfunc_ptr_cast(&CXM1014::PrimaryAttack) },
//{ 0x0, "_ZN7CXM10146ReloadEv", mfunc_ptr_cast(&CXM1014::Reload) },
//{ 0x0, "_ZN7CXM101410WeaponIdleEv", mfunc_ptr_cast(&CXM1014::WeaponIdle) },
//{ 0x0, "_ZN7CXM101412UseDecrementEv", mfunc_ptr_cast(&CXM1014::UseDecrement) },
{ 0x01D10220, "_ZN7CXM10145SpawnEv", mfunc_ptr_cast(&CXM1014::Spawn_) },
{ 0x01D10260, "_ZN7CXM10148PrecacheEv", mfunc_ptr_cast(&CXM1014::Precache_) },
{ 0x01D102D0, "_ZN7CXM101411GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CXM1014::GetItemInfo_) },
{ 0x01D10340, "_ZN7CXM10146DeployEv", mfunc_ptr_cast(&CXM1014::Deploy_) },
//{ 0x01D10940, "_ZN7CXM101411GetMaxSpeedEv", mfunc_ptr_cast(&CXM1014::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D10930, "_ZN7CXM10149iItemSlotEv", mfunc_ptr_cast(&CXM1014::iItemSlot_) }, // DEFAULT
{ 0x01D10370, "_ZN7CXM101413PrimaryAttackEv", mfunc_ptr_cast(&CXM1014::PrimaryAttack_) },
{ 0x01D10640, "_ZN7CXM10146ReloadEv", mfunc_ptr_cast(&CXM1014::Reload_) },
{ 0x01D107F0, "_ZN7CXM101410WeaponIdleEv", mfunc_ptr_cast(&CXM1014::WeaponIdle_) },
//{ 0x01D10950, "_ZN7CXM101412UseDecrementEv", mfunc_ptr_cast(&CXM1014::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_xm1014", (size_t)&weapon_xm1014 },
{ 0x01D101D0, "weapon_xm1014", (size_t)&weapon_xm1014 },
//CELITE
//virtual func
//{ 0x0, "_ZN6CELITE5SpawnEv", mfunc_ptr_cast(&CELITE::Spawn) },
//{ 0x0, "_ZN6CELITE8PrecacheEv", mfunc_ptr_cast(&CELITE::Precache) },
//{ 0x0, "_ZN6CELITE11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CELITE::GetItemInfo) },
//{ 0x0, "_ZN6CELITE6DeployEv", mfunc_ptr_cast(&CELITE::Deploy) },
//{ 0x0, "_ZN6CELITE11GetMaxSpeedEv", mfunc_ptr_cast(&CELITE::GetMaxSpeed) },
//{ 0x0, "_ZN6CELITE9iItemSlotEv", mfunc_ptr_cast(&CELITE::iItemSlot) },
//{ 0x0, "_ZN6CELITE13PrimaryAttackEv", mfunc_ptr_cast(&CELITE::PrimaryAttack) },
//{ 0x0, "_ZN6CELITE6ReloadEv", mfunc_ptr_cast(&CELITE::Reload) },
//{ 0x0, "_ZN6CELITE10WeaponIdleEv", mfunc_ptr_cast(&CELITE::WeaponIdle) },
//{ 0x0, "_ZN6CELITE12UseDecrementEv", mfunc_ptr_cast(&CELITE::UseDecrement) },
//{ 0x0, "_ZN6CELITE8IsPistolEv", mfunc_ptr_cast(&CELITE::IsPistol) },
{ 0x01D04200, "_ZN6CELITE5SpawnEv", mfunc_ptr_cast(&CELITE::Spawn_) },
{ 0x01D04250, "_ZN6CELITE8PrecacheEv", mfunc_ptr_cast(&CELITE::Precache_) },
{ 0x01D04300, "_ZN6CELITE11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CELITE::GetItemInfo_) },
{ 0x01D04370, "_ZN6CELITE6DeployEv", mfunc_ptr_cast(&CELITE::Deploy_) },
//{ 0x01D049D0, "_ZN6CELITE11GetMaxSpeedEv", mfunc_ptr_cast(&CELITE::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D049C0, "_ZN6CELITE9iItemSlotEv", mfunc_ptr_cast(&CELITE::iItemSlot_) }, // DEFAULT
{ 0x01D043D0, "_ZN6CELITE13PrimaryAttackEv", mfunc_ptr_cast(&CELITE::PrimaryAttack_) },
{ 0x01D04900, "_ZN6CELITE6ReloadEv", mfunc_ptr_cast(&CELITE::Reload_) },
{ 0x01D04940, "_ZN6CELITE10WeaponIdleEv", mfunc_ptr_cast(&CELITE::WeaponIdle_) },
//{ 0x01D049E0, "_ZN6CELITE12UseDecrementEv", mfunc_ptr_cast(&CELITE::UseDecrement_) }, // DEFAULT
//{ 0x01D049F0, "_ZN6CELITE8IsPistolEv", mfunc_ptr_cast(&CELITE::IsPistol_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_xm1014", (size_t)&weapon_xm1014 },
//{ 0x0, "_ZN6CELITE9ELITEFireEffi", mfunc_ptr_cast(&CELITE::ELITEFire) },
{ 0x01D041B0, "weapon_elite", (size_t)&weapon_elite },
{ 0x01D04490, "_ZN6CELITE9ELITEFireEffi", mfunc_ptr_cast(&CELITE::ELITEFire) },
//CFiveSeven
//virtual func
//{ 0x0, "_ZN10CFiveSeven5SpawnEv", mfunc_ptr_cast(&CFiveSeven::Spawn) },
//{ 0x0, "_ZN10CFiveSeven8PrecacheEv", mfunc_ptr_cast(&CFiveSeven::Precache) },
//{ 0x0, "_ZN10CFiveSeven11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CFiveSeven::GetItemInfo) },
//{ 0x0, "_ZN10CFiveSeven6DeployEv", mfunc_ptr_cast(&CFiveSeven::Deploy) },
//{ 0x0, "_ZN10CFiveSeven11GetMaxSpeedEv", mfunc_ptr_cast(&CFiveSeven::GetMaxSpeed) },
//{ 0x0, "_ZN10CFiveSeven9iItemSlotEv", mfunc_ptr_cast(&CFiveSeven::iItemSlot) },
//{ 0x0, "_ZN10CFiveSeven13PrimaryAttackEv", mfunc_ptr_cast(&CFiveSeven::PrimaryAttack) },
//{ 0x0, "_ZN10CFiveSeven15SecondaryAttackEv", mfunc_ptr_cast(&CFiveSeven::SecondaryAttack) },
//{ 0x0, "_ZN10CFiveSeven6ReloadEv", mfunc_ptr_cast(&CFiveSeven::Reload) },
//{ 0x0, "_ZN10CFiveSeven10WeaponIdleEv", mfunc_ptr_cast(&CFiveSeven::WeaponIdle) },
//{ 0x0, "_ZN10CFiveSeven12UseDecrementEv", mfunc_ptr_cast(&CFiveSeven::UseDecrement) },
//{ 0x0, "_ZN10CFiveSeven8IsPistolEv", mfunc_ptr_cast(&CFiveSeven::IsPistol) },
{ 0x01D05280, "_ZN10CFiveSeven5SpawnEv", mfunc_ptr_cast(&CFiveSeven::Spawn_) },
{ 0x01D052E0, "_ZN10CFiveSeven8PrecacheEv", mfunc_ptr_cast(&CFiveSeven::Precache_) },
{ 0x01D05370, "_ZN10CFiveSeven11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CFiveSeven::GetItemInfo_) },
{ 0x01D053E0, "_ZN10CFiveSeven6DeployEv", mfunc_ptr_cast(&CFiveSeven::Deploy_) },
//{ 0x01D05950, "_ZN10CFiveSeven11GetMaxSpeedEv", mfunc_ptr_cast(&CFiveSeven::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D05940, "_ZN10CFiveSeven9iItemSlotEv", mfunc_ptr_cast(&CFiveSeven::iItemSlot_) }, // DEFAULT
{ 0x01D05540, "_ZN10CFiveSeven15SecondaryAttackEv", mfunc_ptr_cast(&CFiveSeven::SecondaryAttack_) },
{ 0x01D05480, "_ZN10CFiveSeven13PrimaryAttackEv", mfunc_ptr_cast(&CFiveSeven::PrimaryAttack_) },
{ 0x01D05840, "_ZN10CFiveSeven6ReloadEv", mfunc_ptr_cast(&CFiveSeven::Reload_) },
{ 0x01D05880, "_ZN10CFiveSeven10WeaponIdleEv", mfunc_ptr_cast(&CFiveSeven::WeaponIdle_) },
//{ 0x01D05960, "_ZN10CFiveSeven12UseDecrementEv", mfunc_ptr_cast(&CFiveSeven::UseDecrement_) }, // DEFAULT
//{ 0x01D05970, "_ZN10CFiveSeven8IsPistolEv", mfunc_ptr_cast(&CFiveSeven::IsPistol_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_fiveseven", (size_t)&weapon_fiveseven },
//{ 0x0, "_ZN10CFiveSeven13FiveSevenFireEffi", mfunc_ptr_cast(&CFiveSeven::FiveSevenFire) },
////{ 0x0, "_ZN10CFiveSeven8MakeBeamEv", mfunc_ptr_cast(&CFiveSeven::MakeBeam) }, // NOXREF
////{ 0x0, "_ZN10CFiveSeven10BeamUpdateEv", mfunc_ptr_cast(&CFiveSeven::BeamUpdate) }, // NOXREF
{ 0x01D05230, "weapon_fiveseven", (size_t)&weapon_fiveseven },
{ 0x01D05550, "_ZN10CFiveSeven13FiveSevenFireEffi", mfunc_ptr_cast(&CFiveSeven::FiveSevenFire) },
//{ 0x0, "_ZN10CFiveSeven8MakeBeamEv", mfunc_ptr_cast(&CFiveSeven::MakeBeam) }, // NOXREF
//{ 0x0, "_ZN10CFiveSeven10BeamUpdateEv", mfunc_ptr_cast(&CFiveSeven::BeamUpdate) }, // NOXREF
//CUMP45
//virtual func
//{ 0x0, "_ZN6CUMP455SpawnEv", mfunc_ptr_cast(&CUMP45::Spawn) },
//{ 0x0, "_ZN6CUMP458PrecacheEv", mfunc_ptr_cast(&CUMP45::Precache) },
//{ 0x0, "_ZN6CUMP4511GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CUMP45::GetItemInfo) },
//{ 0x0, "_ZN6CUMP456DeployEv", mfunc_ptr_cast(&CUMP45::Deploy) },
//{ 0x0, "_ZN6CUMP4511GetMaxSpeedEv", mfunc_ptr_cast(&CUMP45::GetMaxSpeed) },
//{ 0x0, "_ZN6CUMP459iItemSlotEv", mfunc_ptr_cast(&CUMP45::iItemSlot) },
//{ 0x0, "_ZN6CUMP4513PrimaryAttackEv", mfunc_ptr_cast(&CUMP45::PrimaryAttack) },
//{ 0x0, "_ZN6CUMP456ReloadEv", mfunc_ptr_cast(&CUMP45::Reload) },
//{ 0x0, "_ZN6CUMP4510WeaponIdleEv", mfunc_ptr_cast(&CUMP45::WeaponIdle) },
//{ 0x0, "_ZN6CUMP4512UseDecrementEv", mfunc_ptr_cast(&CUMP45::UseDecrement) },
{ 0x01D0F240, "_ZN6CUMP455SpawnEv", mfunc_ptr_cast(&CUMP45::Spawn_) },
{ 0x01D0F290, "_ZN6CUMP458PrecacheEv", mfunc_ptr_cast(&CUMP45::Precache_) },
{ 0x01D0F300, "_ZN6CUMP4511GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CUMP45::GetItemInfo_) },
{ 0x01D0F370, "_ZN6CUMP456DeployEv", mfunc_ptr_cast(&CUMP45::Deploy_) },
//{ 0x01D0F840, "_ZN6CUMP4511GetMaxSpeedEv", mfunc_ptr_cast(&CUMP45::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D0F830, "_ZN6CUMP459iItemSlotEv", mfunc_ptr_cast(&CUMP45::iItemSlot_) }, // DEFAULT
{ 0x01D0F3C0, "_ZN6CUMP4513PrimaryAttackEv", mfunc_ptr_cast(&CUMP45::PrimaryAttack_) },
{ 0x01D0F770, "_ZN6CUMP456ReloadEv", mfunc_ptr_cast(&CUMP45::Reload_) },
{ 0x01D0F7C0, "_ZN6CUMP4510WeaponIdleEv", mfunc_ptr_cast(&CUMP45::WeaponIdle_) },
//{ 0x01D0F850, "_ZN6CUMP4512UseDecrementEv", mfunc_ptr_cast(&CUMP45::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_ump45", (size_t)&weapon_ump45 },
//{ 0x0, "_ZN6CUMP459UMP45FireEffi", mfunc_ptr_cast(&CUMP45::UMP45Fire) },
{ 0x01D0F1F0, "weapon_ump45", (size_t)&weapon_ump45 },
{ 0x01D0F400, "_ZN6CUMP459UMP45FireEffi", mfunc_ptr_cast(&CUMP45::UMP45Fire) },
//CSG550
//virtual func
//{ 0x0, "_ZN6CSG5505SpawnEv", mfunc_ptr_cast(&CSG550::Spawn) },
//{ 0x0, "_ZN6CSG5508PrecacheEv", mfunc_ptr_cast(&CSG550::Precache) },
//{ 0x0, "_ZN6CSG55011GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CSG550::GetItemInfo) },
//{ 0x0, "_ZN6CSG5506DeployEv", mfunc_ptr_cast(&CSG550::Deploy) },
//{ 0x0, "_ZN6CSG55011GetMaxSpeedEv", mfunc_ptr_cast(&CSG550::GetMaxSpeed) },
//{ 0x0, "_ZN6CSG5509iItemSlotEv", mfunc_ptr_cast(&CSG550::iItemSlot) },
//{ 0x0, "_ZN6CSG55013PrimaryAttackEv", mfunc_ptr_cast(&CSG550::PrimaryAttack) },
//{ 0x0, "_ZN6CSG55015SecondaryAttackEv", mfunc_ptr_cast(&CSG550::SecondaryAttack) },
//{ 0x0, "_ZN6CSG5506ReloadEv", mfunc_ptr_cast(&CSG550::Reload) },
//{ 0x0, "_ZN6CSG55010WeaponIdleEv", mfunc_ptr_cast(&CSG550::WeaponIdle) },
//{ 0x0, "_ZN6CSG55012UseDecrementEv", mfunc_ptr_cast(&CSG550::UseDecrement) },
{ 0x01D0D310, "_ZN6CSG5505SpawnEv", mfunc_ptr_cast(&CSG550::Spawn_) },
{ 0x01D0D360, "_ZN6CSG5508PrecacheEv", mfunc_ptr_cast(&CSG550::Precache_) },
{ 0x01D0D3E0, "_ZN6CSG55011GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CSG550::GetItemInfo_) },
{ 0x01D0D450, "_ZN6CSG5506DeployEv", mfunc_ptr_cast(&CSG550::Deploy_) },
{ 0x01D0DA10, "_ZN6CSG55011GetMaxSpeedEv", mfunc_ptr_cast(&CSG550::GetMaxSpeed_) },
//{ 0x01D0DA30, "_ZN6CSG5509iItemSlotEv", mfunc_ptr_cast(&CSG550::iItemSlot_) }, // DEFAULT
{ 0x01D0D480, "_ZN6CSG55015SecondaryAttackEv", mfunc_ptr_cast(&CSG550::SecondaryAttack_) },
{ 0x01D0D560, "_ZN6CSG55013PrimaryAttackEv", mfunc_ptr_cast(&CSG550::PrimaryAttack_) },
{ 0x01D0D920, "_ZN6CSG5506ReloadEv", mfunc_ptr_cast(&CSG550::Reload_) },
{ 0x01D0D990, "_ZN6CSG55010WeaponIdleEv", mfunc_ptr_cast(&CSG550::WeaponIdle_) },
//{ 0x01D0DA40, "_ZN6CSG55012UseDecrementEv", mfunc_ptr_cast(&CSG550::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_sg550", (size_t)&weapon_sg550 },
//{ 0x0, "_ZN6CSG5509SG550FireEffi", mfunc_ptr_cast(&CSG550::SG550Fire) },
{ 0x01D0D2C0, "weapon_sg550", (size_t)&weapon_sg550 },
{ 0x01D0D610, "_ZN6CSG5509SG550FireEffi", mfunc_ptr_cast(&CSG550::SG550Fire) },
//CGalil
//virtual func
//{ 0x0, "_ZN6CGalil5SpawnEv", mfunc_ptr_cast(&CGalil::Spawn) },
//{ 0x0, "_ZN6CGalil8PrecacheEv", mfunc_ptr_cast(&CGalil::Precache) },
//{ 0x0, "_ZN6CGalil11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CGalil::GetItemInfo) },
//{ 0x0, "_ZN6CGalil6DeployEv", mfunc_ptr_cast(&CGalil::Deploy) },
//{ 0x0, "_ZN6CGalil11GetMaxSpeedEv", mfunc_ptr_cast(&CGalil::GetMaxSpeed) },
//{ 0x0, "_ZN6CGalil9iItemSlotEv", mfunc_ptr_cast(&CGalil::iItemSlot) },
//{ 0x0, "_ZN6CGalil13PrimaryAttackEv", mfunc_ptr_cast(&CGalil::PrimaryAttack) },
//{ 0x0, "_ZN6CGalil15SecondaryAttackEv", mfunc_ptr_cast(&CGalil::SecondaryAttack) },
//{ 0x0, "_ZN6CGalil6ReloadEv", mfunc_ptr_cast(&CGalil::Reload) },
//{ 0x0, "_ZN6CGalil10WeaponIdleEv", mfunc_ptr_cast(&CGalil::WeaponIdle) },
//{ 0x0, "_ZN6CGalil12UseDecrementEv", mfunc_ptr_cast(&CGalil::UseDecrement) },
{ 0x01D06AC0, "_ZN6CGalil5SpawnEv", mfunc_ptr_cast(&CGalil::Spawn_) },
{ 0x01D06B00, "_ZN6CGalil8PrecacheEv", mfunc_ptr_cast(&CGalil::Precache_) },
{ 0x01D06B80, "_ZN6CGalil11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CGalil::GetItemInfo_) },
{ 0x01D06BF0, "_ZN6CGalil6DeployEv", mfunc_ptr_cast(&CGalil::Deploy_) },
//{ 0x01D07170, "_ZN6CGalil11GetMaxSpeedEv", mfunc_ptr_cast(&CGalil::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D07160, "_ZN6CGalil9iItemSlotEv", mfunc_ptr_cast(&CGalil::iItemSlot_) }, // DEFAULT
{ 0x01D06C40, "_ZN6CGalil15SecondaryAttackEv", mfunc_ptr_cast(&CGalil::SecondaryAttack_) },
{ 0x01D06C50, "_ZN6CGalil13PrimaryAttackEv", mfunc_ptr_cast(&CGalil::PrimaryAttack_) },
{ 0x01D070A0, "_ZN6CGalil6ReloadEv", mfunc_ptr_cast(&CGalil::Reload_) },
{ 0x01D070F0, "_ZN6CGalil10WeaponIdleEv", mfunc_ptr_cast(&CGalil::WeaponIdle_) },
//{ 0x01D07180, "_ZN6CGalil12UseDecrementEv", mfunc_ptr_cast(&CGalil::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_galil", (size_t)&weapon_galil },
//{ 0x0, "_ZN6CGalil9GalilFireEffi", mfunc_ptr_cast(&CGalil::GalilFire) },
{ 0x01D06A70, "weapon_galil", (size_t)&weapon_galil },
{ 0x01D06D20, "_ZN6CGalil9GalilFireEffi", mfunc_ptr_cast(&CGalil::GalilFire) },
//CFamas
//virtual func
//{ 0x0, "_ZN6CFamas5SpawnEv", mfunc_ptr_cast(&CFamas::Spawn) },
//{ 0x0, "_ZN6CFamas8PrecacheEv", mfunc_ptr_cast(&CFamas::Precache) },
//{ 0x0, "_ZN6CFamas11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CFamas::GetItemInfo) },
//{ 0x0, "_ZN6CFamas6DeployEv", mfunc_ptr_cast(&CFamas::Deploy) },
//{ 0x0, "_ZN6CFamas11GetMaxSpeedEv", mfunc_ptr_cast(&CFamas::GetMaxSpeed) },
//{ 0x0, "_ZN6CFamas9iItemSlotEv", mfunc_ptr_cast(&CFamas::iItemSlot) },
//{ 0x0, "_ZN6CFamas13PrimaryAttackEv", mfunc_ptr_cast(&CFamas::PrimaryAttack) },
//{ 0x0, "_ZN6CFamas15SecondaryAttackEv", mfunc_ptr_cast(&CFamas::SecondaryAttack) },
//{ 0x0, "_ZN6CFamas6ReloadEv", mfunc_ptr_cast(&CFamas::Reload) },
//{ 0x0, "_ZN6CFamas10WeaponIdleEv", mfunc_ptr_cast(&CFamas::WeaponIdle) },
//{ 0x0, "_ZN6CFamas12UseDecrementEv", mfunc_ptr_cast(&CFamas::UseDecrement) },
{ 0x01D04A50, "_ZN6CFamas5SpawnEv", mfunc_ptr_cast(&CFamas::Spawn_) },
{ 0x01D04AA0, "_ZN6CFamas8PrecacheEv", mfunc_ptr_cast(&CFamas::Precache_) },
{ 0x01D04B40, "_ZN6CFamas11GetItemInfoEP8ItemInfo", mfunc_ptr_cast(&CFamas::GetItemInfo_) },
{ 0x01D04BB0, "_ZN6CFamas6DeployEv", mfunc_ptr_cast(&CFamas::Deploy_) },
//{ 0x01D05210, "_ZN6CFamas11GetMaxSpeedEv", mfunc_ptr_cast(&CFamas::GetMaxSpeed_) }, // DEFAULT
//{ 0x01D05200, "_ZN6CFamas9iItemSlotEv", mfunc_ptr_cast(&CFamas::iItemSlot_) }, // DEFAULT
{ 0x01D04C10, "_ZN6CFamas15SecondaryAttackEv", mfunc_ptr_cast(&CFamas::SecondaryAttack_) },
{ 0x01D04C90, "_ZN6CFamas13PrimaryAttackEv", mfunc_ptr_cast(&CFamas::PrimaryAttack_) },
{ 0x01D05120, "_ZN6CFamas6ReloadEv", mfunc_ptr_cast(&CFamas::Reload_) },
{ 0x01D05190, "_ZN6CFamas10WeaponIdleEv", mfunc_ptr_cast(&CFamas::WeaponIdle_) },
//{ 0x01D05220, "_ZN6CFamas12UseDecrementEv", mfunc_ptr_cast(&CFamas::UseDecrement_) }, // DEFAULT
//non-virtual func
//{ 0x0, "weapon_famas", (size_t)&weapon_famas },
//{ 0x0, "_ZN6CFamas9FamasFireEffii", mfunc_ptr_cast(&CFamas::FamasFire) },
{ 0x01D04A00, "weapon_famas", (size_t)&weapon_famas },
{ 0x01D04D70, "_ZN6CFamas9FamasFireEffii", mfunc_ptr_cast(&CFamas::FamasFire) },
//CArmoury
//virtual func
{ 0x01DD0E50, "_ZN8CArmoury5SpawnEv", mfunc_ptr_cast(&CArmoury::Spawn_) },
@ -3499,7 +3491,7 @@ FunctionHook g_FunctionHooks[] =
{ 0x01DD0D80, "_ZN8CArmoury8KeyValueEP14KeyValueData_s", mfunc_ptr_cast(&CArmoury::KeyValue_) },
//non-virtual func
{ 0x01DD0E00, "armoury_entity", (size_t)&armoury_entity },
//{ 0x0, "_ZN8CArmoury12ArmouryTouchEP11CBaseEntity", mfunc_ptr_cast(&CArmoury::ArmouryTouch) },
{ 0x01DD0A10, "_ZN8CArmoury12ArmouryTouchEP11CBaseEntity", mfunc_ptr_cast(&CArmoury::ArmouryTouch) },
#endif // Weapons_Region
@ -3509,9 +3501,9 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D831C0, "_ZN8CGrenade5SpawnEv", mfunc_ptr_cast(&CGrenade::Spawn_) },
{ 0x01D84820, "_ZN8CGrenade4SaveER5CSave", mfunc_ptr_cast(&CGrenade::Save_) },
{ 0x01D84850, "_ZN8CGrenade7RestoreER8CRestore", mfunc_ptr_cast(&CGrenade::Restore_) },
{ 0x01D594F0, "_ZN8CGrenade10ObjectCapsEv", mfunc_ptr_cast(&CGrenade::ObjectCaps_) },
//{ 0x01D594F0, "_ZN8CGrenade10ObjectCapsEv", mfunc_ptr_cast(&CGrenade::ObjectCaps_) }, // DEFAULT
{ 0x01D82320, "_ZN8CGrenade6KilledEP9entvars_si", mfunc_ptr_cast(&CGrenade::Killed_) },
{ 0x01D83560, "_ZN8CGrenade10BloodColorEv", mfunc_ptr_cast(&CGrenade::BloodColor_) },
//{ 0x01D83560, "_ZN8CGrenade10BloodColorEv", mfunc_ptr_cast(&CGrenade::BloodColor_) }, // DEFAULT
{ 0x01D83720, "_ZN8CGrenade3UseEP11CBaseEntityS1_8USE_TYPEf", mfunc_ptr_cast(&CGrenade::Use_) },
{ 0x01D82E00, "_ZN8CGrenade11BounceSoundEv", mfunc_ptr_cast(&CGrenade::BounceSound_) },
//non-virtual func
@ -4489,8 +4481,8 @@ FunctionHook g_FunctionHooks[] =
{ 0x01D862D0, "_ZN13CWeaponCycler6DeployEv", mfunc_ptr_cast(&CWeaponCycler::Deploy_) },
{ 0x01D86320, "_ZN13CWeaponCycler7HolsterEi", mfunc_ptr_cast(&CWeaponCycler::Holster_) },
//{ 0x01D861D0, "_ZN13CWeaponCycler9iItemSlotEv", mfunc_ptr_cast(&CWeaponCycler::iItemSlot_) }, // DEFAULT
{ 0x01D86340, "_ZN13CWeaponCycler13PrimaryAttackEv", mfunc_ptr_cast(&CWeaponCycler::PrimaryAttack_) },
{ 0x01D86370, "_ZN13CWeaponCycler15SecondaryAttackEv", mfunc_ptr_cast(&CWeaponCycler::SecondaryAttack_) },
{ 0x01D86340, "_ZN13CWeaponCycler13PrimaryAttackEv", mfunc_ptr_cast(&CWeaponCycler::PrimaryAttack_) },
//CWreckage
//virtual func
{ 0x01D864D0, "_ZN9CWreckage5SpawnEv", mfunc_ptr_cast(&CWreckage::Spawn_) },
@ -5330,11 +5322,34 @@ VirtualTableRef g_TableRefs[] =
{
// Weapon shared
{ 0x01DF46BC, "CKnife", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF34E4, "CAWP", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF51AC, "CP90", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF4394, "CGLOCK18", 95 },
{ 0x01DF5C6C, "CUSP", 95 },
{ 0x01DF368C, "CC4", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF5C6C, "CUSP", 95 },
{ 0x01DF57DC, "CSmokeGrenade", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF4B8C, "CM4A1", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF453C, "CHEGrenade", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF3ED4, "CFlashbang", 95 },
{ 0x01DF3B94, "CFamas", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF39D4, "CELITE", 95 },
{ 0x01DF3D34, "CFiveSeven", 95 },
{ 0x01DF502C, "CP228", 95 },
{ 0x01DF5DF4, "CXM1014", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF407C, "CG3SG1", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF54CC, "CSG550", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF3824, "CDEAGLE", 95 },
{ 0x01DF34E4, "CAWP", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF5334, "CSCOUT", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF5654, "CSG552", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF49FC, "CM3", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF333C, "CAUG", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF420C, "CGalil", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF3174, "CAK47", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF4864, "CM249", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF51AC, "CP90", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF4D0C, "CMAC10", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF5AE4, "CUMP45", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF4E9C, "CMP5N", CWEAPON_VIRTUAL_COUNT },
{ 0x01DF595C, "CTMP", CWEAPON_VIRTUAL_COUNT },
{ 0x01DFD984, "CWShield", CBASE_VIRTUAL_COUNT },
@ -5522,7 +5537,7 @@ VirtualTableRef g_TableRefs[] =
{ NULL, NULL } // BaseClass__for_vtbl
};
// refs
// references
AddressRef g_FunctionRefs[] =
{
#ifndef Function_References_Region