Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Weapon.h"
- #include "Player.h"
- #include "HL2.h"
- #include "NetVarManager.h"
- const char* C_BaseCombatWeapon::GetName()
- {
- typedef const char* (__thiscall* GetNameFn)(void*);
- return GetMethod<GetNameFn>(this, 260)(this);
- }
- const char* C_BaseCombatWeapon::GetPrintName()
- {
- typedef const char* (__thiscall* GetPrintNameFn)(void*);
- return GetMethod<GetPrintNameFn>(this, 261)(this);
- }
- int C_BaseCombatWeapon::GetPrimaryAmmoType()
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_BaseCombatWeapon", "m_iPrimaryAmmoType");
- return *(int*)(this + dwOffset);
- }
- int C_BaseCombatWeapon::GetSecondaryAmmoType()
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_BaseCombatWeapon", "m_iSecondaryAmmoType");
- return *(int*)(this + dwOffset);
- }
- int C_BaseCombatWeapon::Clip1()
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_BaseCombatWeapon", "m_iClip1");
- return *(int*)(this + dwOffset);
- }
- int C_BaseCombatWeapon::Clip2()
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_BaseCombatWeapon", "m_iClip2");
- return *(int*)(this + dwOffset);
- }
- float C_BaseCombatWeapon::GetNextPrimaryAttack()
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_BaseCombatWeapon", "m_flNextPrimaryAttack");
- return *(float*)(this + dwOffset);
- }
- float C_BaseCombatWeapon::GetNextSecondaryAttack()
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_BaseCombatWeapon", "m_flNextSecondaryAttack");
- return *(float*)(this + dwOffset);
- }
- const char* WeaponIDToAlias(int id)
- {
- typedef const char* (*WeaponIDToAliasFn)(int);
- static WeaponIDToAliasFn WeaponIDToAlias = (WeaponIDToAliasFn)API::PatternScan(0xC9F4E76B, "8B 44 24 04 83 F8 22");
- if (!WeaponIDToAlias)
- return NULL;
- return WeaponIDToAlias(id);
- }
- CCSWeaponInfo C_WeaponCSBase::GetCSWpnData()
- {
- typedef CCSWeaponInfo& (__thiscall* GetCSWpnDataFn)(void*);
- static GetCSWpnDataFn GetCSWpnData = (GetCSWpnDataFn)API::PatternScan(0xC9F4E76B, "66 8B 81 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 04");
- if (!GetCSWpnData)
- return CCSWeaponInfo();
- CCSWeaponInfo CSWeaponInfo = GetCSWpnData(this);
- if (GetWeaponID() == WEAPON_GLOCK)
- {
- if (IsInSpecialMode())
- {
- CSWeaponInfo.m_iDamage = 18;
- CSWeaponInfo.m_flRangeModifier = 0.9f;
- }
- }
- else if (GetWeaponID() == WEAPON_M4A1)
- {
- if (IsInSpecialMode())
- {
- CSWeaponInfo.m_flRangeModifier = 0.95f;
- }
- }
- else if (GetWeaponID() == WEAPON_USP)
- {
- if (IsInSpecialMode())
- {
- CSWeaponInfo.m_iDamage = 30;
- }
- }
- return CSWeaponInfo;
- }
- CSWeaponID C_WeaponCSBase::GetWeaponID()
- {
- typedef int(__thiscall* GetWeaponIDFn)(void*);
- return (CSWeaponID)GetMethod<GetWeaponIDFn>(this, 297)(this);
- }
- float C_WeaponCSBase::GetAccuracy()
- {
- return *(float*)(this + 0x760);
- }
- bool C_WeaponCSBase::IsInSpecialMode()
- {
- if (GetWeaponID() == WEAPON_FAMAS)
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_WeaponFamas", "m_bBurstMode");
- return *(bool*)(this + dwOffset);
- }
- else if (GetWeaponID() == WEAPON_GLOCK)
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_WeaponGlock", "m_bBurstMode");
- return *(bool*)(this + dwOffset);
- }
- else if (GetWeaponID() == WEAPON_M4A1)
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_WeaponM4A1", "m_bSilencerOn");
- return *(bool*)(this + dwOffset);
- }
- else if (GetWeaponID() == WEAPON_USP)
- {
- static uintptr_t dwOffset = gNetVarManager.GetNetVar("DT_WeaponUSP", "m_bSilencerOn");
- return *(bool*)(this + dwOffset);
- }
- return false;
- }
- float C_WeaponCSBase::GetGlockShoot()
- {
- return *(float*)(this + 0x780);
- }
- float C_WeaponCSBase::GetFamasShoot()
- {
- return *(float*)(this + 0x784);
- }
- float C_WeaponCSBase::GetFamasBurstSpread()
- {
- return *(float*)(this + 0x78C);
- }
- float C_WeaponCSBase::GetSpread()
- {
- C_CSPlayer* pLocal = C_CSPlayer::GetLocalCSPlayer();
- if (!pLocal)
- return 0.0f;
- float flSpread = 0.0f;
- int iSpeed = (int)pLocal->GetLocalVelocity().Length2D();
- switch (GetWeaponID())
- {
- case WEAPON_NONE:
- {
- flSpread = 0.0f;
- break;
- }
- case WEAPON_AK47:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = (0.04f + (0.4f) * (GetAccuracy()));
- else if (iSpeed > 140)
- flSpread = (0.04f + (0.07f) * (GetAccuracy()));
- else
- flSpread = ((0.0275f) * (GetAccuracy()));
- break;
- }
- case WEAPON_AUG:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = (0.035f + (0.4f) * (GetAccuracy()));
- else if (iSpeed > 140)
- flSpread = (0.035f + (0.07f) * (GetAccuracy()));
- else
- flSpread = ((0.02f) * (GetAccuracy()));
- break;
- }
- case WEAPON_AWP:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = 0.85f;
- else if (iSpeed > 140)
- flSpread = 0.25f;
- else if (iSpeed > 10)
- flSpread = 0.10f;
- else if (pLocal->GetFlags() & FL_DUCKING)
- flSpread = 0.0f;
- else
- flSpread = 0.001f;
- if (pLocal->GetFOV() == 0 || pLocal->GetFOV() == 90)
- flSpread += 0.08f;
- break;
- }
- case WEAPON_C4:
- {
- flSpread = 0.0f;
- break;
- }
- case WEAPON_DEAGLE:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((1.5f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = ((0.25f) * (1 - GetAccuracy()));
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.115f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.13f) * (1 - GetAccuracy()));
- break;
- }
- case WEAPON_ELITE:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((1.3f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = ((0.175f) * (1 - GetAccuracy()));
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.08f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.1f) * (1 - GetAccuracy()));
- break;
- }
- case WEAPON_FAMAS:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = (0.03f + (0.3f) * (GetAccuracy()));
- else if (iSpeed > 140)
- flSpread = (0.03f + (0.07f) * (GetAccuracy()));
- else
- flSpread = ((0.02f) * (GetAccuracy()));
- if (IsInSpecialMode())
- {
- if (GetFamasShoot() != 0.0f && GetFamasShoot() < HL2::m_pGlobals->curtime)
- {
- flSpread = GetFamasBurstSpread();
- }
- }
- else
- {
- flSpread += 0.01f;
- }
- break;
- }
- case WEAPON_FIVESEVEN:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((1.5f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = ((0.255f) * (1 - GetAccuracy()));
- else if (pLocal->GetFlags() & FL_DUCKING)
- flSpread = ((0.075f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.15f) * (1 - GetAccuracy()));
- break;
- }
- case WEAPON_FLASHBANG:
- {
- flSpread = 0.0f;
- break;
- }
- case WEAPON_G3SG1:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((0.45f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = 0.15f;
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.035f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.055f) * (1 - GetAccuracy()));
- if (pLocal->GetFOV() == 0 || pLocal->GetFOV() == 90)
- flSpread += 0.025f;
- break;
- }
- case WEAPON_GALIL:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = (0.04f + (0.3f) * (GetAccuracy()));
- else if (iSpeed > 140)
- flSpread = (0.04f + (0.07f) * (GetAccuracy()));
- else
- flSpread = ((0.0375f) * (GetAccuracy()));
- break;
- }
- case WEAPON_GLOCK:
- {
- if (IsInSpecialMode())
- {
- if (GetGlockShoot() != 0.0f)
- {
- flSpread = 0.05f;
- }
- else
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((1.2f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = ((0.185f) * (1 - GetAccuracy()));
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.095f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.3f) * (1 - GetAccuracy()));
- }
- }
- else
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((1.0f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = ((0.165f) * (1 - GetAccuracy()));
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.075f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.1f) * (1 - GetAccuracy()));
- }
- break;
- }
- case WEAPON_HEGRENADE:
- {
- flSpread = 0.0f;
- break;
- }
- case WEAPON_KNIFE:
- {
- flSpread = 0.0f;
- break;
- }
- case WEAPON_M249:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = (0.045f + (0.5f) * (GetAccuracy()));
- else if (iSpeed > 140)
- flSpread = (0.045f + (0.095f) * (GetAccuracy()));
- else
- flSpread = ((0.03f) * (GetAccuracy()));
- break;
- }
- case WEAPON_M3:
- {
- flSpread = 0.0675f;
- break;
- }
- case WEAPON_M4A1:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = (0.035f + (0.4f) * (GetAccuracy()));
- else if (iSpeed > 140)
- flSpread = (0.035f + (0.07f) * (GetAccuracy()));
- else
- {
- if (IsInSpecialMode())
- flSpread = ((0.025f) * (GetAccuracy()));
- else
- flSpread = ((0.02f) * (GetAccuracy()));
- }
- break;
- }
- case WEAPON_MAC10:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((0.375f) * (GetAccuracy()));
- else
- flSpread = ((0.03f) * (GetAccuracy()));
- break;
- }
- case WEAPON_MP5NAVY:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((0.2f) * (GetAccuracy()));
- else
- flSpread = ((0.04f) * (GetAccuracy()));
- break;
- }
- case WEAPON_P228:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((1.5f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = ((0.255f) * (1 - GetAccuracy()));
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.075f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.15f) * (1 - GetAccuracy()));
- break;
- }
- case WEAPON_P90:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((0.3f) * (GetAccuracy()));
- else if (iSpeed > 170)
- flSpread = ((0.115f) * (GetAccuracy()));
- else
- flSpread = ((0.045f) * (GetAccuracy()));
- break;
- }
- case WEAPON_SCOUT:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = 0.2f;
- else if (iSpeed > 170)
- flSpread = 0.075f;
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = 0.0f;
- else
- flSpread = 0.007f;
- if (pLocal->GetFOV() == 0 || pLocal->GetFOV() == 90)
- flSpread += 0.025f;
- break;
- }
- case WEAPON_SG550:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((0.45f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = 0.15f;
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.04f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.05f) * (1 - GetAccuracy()));
- if (pLocal->GetFOV() == 0 || pLocal->GetFOV() == 90)
- flSpread += 0.025f;
- break;
- }
- case WEAPON_SG552:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = (0.035f + (0.45f) * (GetAccuracy()));
- else if (iSpeed > 140)
- flSpread = (0.035f + (0.075f) * (GetAccuracy()));
- else
- flSpread = ((0.02f) * (GetAccuracy()));
- break;
- }
- case WEAPON_SMOKEGRENADE:
- {
- flSpread = 0.0f;
- break;
- }
- case WEAPON_TMP:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((0.25f) * (GetAccuracy()));
- else
- flSpread = ((0.03f) * (GetAccuracy()));
- break;
- }
- case WEAPON_UMP45:
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((0.24f) * (GetAccuracy()));
- else
- flSpread = ((0.04f) * (GetAccuracy()));
- break;
- }
- case WEAPON_USP:
- {
- if (IsInSpecialMode())
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((1.3f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = ((0.25f) * (1 - GetAccuracy()));
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.125f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.15f) * (1 - GetAccuracy()));
- }
- else
- {
- if (!(pLocal->GetFlags() & FL_ONGROUND))
- flSpread = ((1.2f) * (1 - GetAccuracy()));
- else if (iSpeed > 5)
- flSpread = ((0.225f) * (1 - GetAccuracy()));
- else if ((pLocal->GetFlags() & FL_DUCKING))
- flSpread = ((0.08f) * (1 - GetAccuracy()));
- else
- flSpread = ((0.1f) * (1 - GetAccuracy()));
- }
- break;
- }
- case WEAPON_XM1014:
- {
- flSpread = 0.0725f;
- break;
- }
- default:
- {
- flSpread = 0.0f;
- break;
- }
- }
- return flSpread;
- }
- bool C_WeaponCSBase::IsMeleeWeapon()
- {
- return GetCSWpnData().m_WeaponType == WEAPONTYPE_KNIFE
- || GetCSWpnData().m_WeaponType == WEAPONTYPE_C4
- || GetCSWpnData().m_WeaponType == WEAPONTYPE_GRENADE;
- }
- bool C_WeaponCSBase::CanFire()
- {
- C_CSPlayer* pLocal = C_CSPlayer::GetLocalCSPlayer();
- if (!pLocal)
- return false;
- if (GetWeaponID() == WEAPON_GLOCK)
- {
- if (IsInSpecialMode())
- {
- if (GetGlockShoot() != 0.0f)
- {
- return true;
- }
- }
- }
- else if (GetWeaponID() == WEAPON_FAMAS)
- {
- if (IsInSpecialMode())
- {
- if (GetFamasShoot() != 0.0f && GetFamasShoot() < HL2::m_pGlobals->curtime)
- {
- return true;
- }
- }
- }
- return HL2::m_pGlobals->curtime >= pLocal->GetNextAttack()
- && HL2::m_pGlobals->curtime >= GetNextPrimaryAttack();
- }
Advertisement
Add Comment
Please, Sign In to add comment