Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float GetSpread ( C_BaseCombatWeapon* pBaseWeapon )
- {
- if (!pBaseWeapon) return 0.0f;
- float m_flAccuracy = *MakePointer<float>(pBaseWeapon, 0x760);
- const char* weaponName = pBaseWeapon->GetName();
- weaponID ID = GetWeaponID(weaponName);
- C_BaseEntity* pLocalPlayer = g_pInterfaces->m_pClientEntList->GetClientEntity(g_pInterfaces->m_pEngineClient->GetLocalPlayer())->GetBaseEntity();
- int m_bWeaponBit = 0;
- float flSpread = 0.0f;
- if (!pLocalPlayer)
- return 0.0f;
- int iFlags = pLocalPlayer->m_fFlags;
- int iSpeed = 0;
- float fFOV = Entity::GetFOV((C_BasePlayer*)pLocalPlayer);
- Vector vecVelocity = pLocalPlayer->m_vecVelocity;
- if (!vecVelocity.IsLengthLessThan(1.0f))
- iSpeed = vecVelocity.Length2D();
- switch (ID)
- {
- case WEAPON_AK47:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = (0.04 + (0.4) * (m_flAccuracy));
- else if(iSpeed > 140)
- flSpread = (0.04 + (0.07) * (m_flAccuracy));
- else
- flSpread = ((0.0275) * (m_flAccuracy));
- break;
- }
- case WEAPON_AUG:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = (0.035 + (0.4) * (m_flAccuracy));
- else if (iSpeed > 140)
- flSpread = (0.035 + (0.07) * (m_flAccuracy));
- else
- flSpread = ((0.02) * (m_flAccuracy));
- break;
- }
- case WEAPON_AWP:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = 0.85;
- else if (iSpeed > 140)
- flSpread = 0.25;
- else if (iSpeed > 10)
- flSpread = 0.1;
- else if (iFlags &FL_DUCKING)
- flSpread = 0.0;
- else
- flSpread = 0.001;
- if(fFOV == 90)
- flSpread += 0.08;
- break;
- }
- case WEAPON_DEAGLE:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((1.5) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = ((0.25) * (1 - m_flAccuracy));
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.115) * (1 - m_flAccuracy));
- else
- flSpread = ((0.13) * (1 - m_flAccuracy));
- break;
- }
- case WEAPON_ELITES:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((1.3) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = ((0.175) * (1 - m_flAccuracy));
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.08) * (1 - m_flAccuracy));
- else
- flSpread = ((0.1) * (1 - m_flAccuracy));
- break;
- }
- case WEAPON_FAMAS:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = (0.030 + (0.3) * (m_flAccuracy));
- else if(iSpeed > 140)
- flSpread = (0.030 + (0.07) * (m_flAccuracy));
- else
- flSpread = ((0.020) * (m_flAccuracy));
- break;
- }
- case WEAPON_FIVESEVEN:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((1.5) * (1 - m_flAccuracy));
- else if (iSpeed > 5)
- flSpread = ((0.255) * (1 - m_flAccuracy));
- else if (iFlags &FL_DUCKING)
- flSpread = ((0.075) * (1 - m_flAccuracy));
- else
- flSpread = ((0.15) * (1 - m_flAccuracy));
- break;
- }
- case WEAPON_G3SG1:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((0.45) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = 0.15;
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.035) * (1 - m_flAccuracy));
- else
- flSpread = ((0.055) * (1 - m_flAccuracy));
- if(fFOV == 90)
- flSpread += 0.025;
- break;
- }
- case WEAPON_GALIL:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = (0.04 + (0.3) * (m_flAccuracy));
- else if(iSpeed > 140)
- flSpread = (0.04 + (0.07) * (m_flAccuracy));
- else
- flSpread = ((0.0375) * (m_flAccuracy));
- break;
- }
- case WEAPON_GLOCK18:
- {
- if(m_bWeaponBit)
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((1.2) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = ((0.185) * (1 - m_flAccuracy));
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.095) * (1 - m_flAccuracy));
- else
- flSpread = ((0.3) * (1 - m_flAccuracy));
- }
- else
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((1.0) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = ((0.165) * (1 - m_flAccuracy));
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.075) * (1 - m_flAccuracy));
- else
- flSpread = ((0.1) * (1 - m_flAccuracy));
- }
- break;
- }
- case WEAPON_M249:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = (0.045 + (0.5) * (m_flAccuracy));
- else if(iSpeed > 140)
- flSpread = (0.045 + (0.095) * (m_flAccuracy));
- else
- flSpread = ((0.03) * (m_flAccuracy));
- break;
- }
- case WEAPON_M4A1:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = (0.035 + (0.4) * (m_flAccuracy));
- else if(iSpeed > 140)
- flSpread = (0.035 + (0.07) * (m_flAccuracy));
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.095) * (1 - m_flAccuracy));
- else if(m_bWeaponBit)
- flSpread = ((0.025) * (m_flAccuracy));
- else
- flSpread = ((0.02) * (m_flAccuracy));
- break;
- }
- case WEAPON_MAC10:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((0.375) * (m_flAccuracy));
- else
- flSpread = ((0.03) * (m_flAccuracy));
- break;
- }
- case WEAPON_MP5:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((0.2) * (m_flAccuracy));
- else
- flSpread = ((0.04) * (m_flAccuracy));
- break;
- }
- case WEAPON_P228:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((1.5) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = ((0.255) * (1 - m_flAccuracy));
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.075) * (1 - m_flAccuracy));
- else
- flSpread = ((0.15) * (1 - m_flAccuracy));
- break;
- }
- case WEAPON_P90:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((0.3) * (m_flAccuracy));
- else if(iSpeed > 170)
- flSpread = ((0.115) * (m_flAccuracy));
- else
- flSpread = ((0.045) * (m_flAccuracy));
- break;
- }
- case WEAPON_SCOUT:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = 0.2;
- else if(iSpeed > 170)
- flSpread = 0.075;
- else if((iFlags &FL_DUCKING))
- flSpread = 0.0;
- else
- flSpread = 0.007;
- if(fFOV == 90)
- flSpread += 0.025;
- break;
- }
- case WEAPON_SG550:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((0.45) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = 0.15;
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.04) * (1 - m_flAccuracy));
- else
- flSpread = ((0.05) * (1 - m_flAccuracy));
- if(fFOV == 90)
- flSpread += 0.025;
- break;
- }
- case WEAPON_SG552:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = (0.035 + (0.45) * (m_flAccuracy));
- else if(iSpeed > 140)
- flSpread = (0.035 + (0.075) * (m_flAccuracy));
- else
- flSpread = ((0.02) * (m_flAccuracy));
- break;
- }
- case WEAPON_TMP:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((0.25) * (m_flAccuracy));
- else
- flSpread = ((0.03) * (m_flAccuracy));
- break;
- }
- case WEAPON_UMP45:
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((0.24) * (m_flAccuracy));
- else
- flSpread = ((0.04) * (m_flAccuracy));
- break;
- }
- case WEAPON_USP45:
- {
- if(m_bWeaponBit)
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((1.3) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = ((0.25) * (1 - m_flAccuracy));
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.125) * (1 - m_flAccuracy));
- else
- flSpread = ((0.15) * (1 - m_flAccuracy));
- }
- else
- {
- if(!(iFlags &FL_ONGROUND))
- flSpread = ((1.2) * (1 - m_flAccuracy));
- else if(iSpeed > 5)
- flSpread = ((0.225) * (1 - m_flAccuracy));
- else if((iFlags &FL_DUCKING))
- flSpread = ((0.08) * (1 - m_flAccuracy));
- else
- flSpread = ((0.1) * (1 - m_flAccuracy));
- }
- break;
- }
- default:
- flSpread = 0.0;
- }
- return flSpread;
- }
- weaponID GetWeaponID(const char *szWeaponName)
- {
- if(!szWeaponName || !strcmp(szWeaponName,"weapon_none") || !strcmp(szWeaponName,"weapon_shieldgun"))
- return WEAPON_NONE;
- if(!strcmp(szWeaponName,"weapon_ak47"))
- return WEAPON_AK47;
- if(!strcmp(szWeaponName,"weapon_aug"))
- return WEAPON_AUG;
- if(!strcmp(szWeaponName,"weapon_awp"))
- return WEAPON_AWP;
- if(!strcmp(szWeaponName,"weapon_c4"))
- return WEAPON_C4;
- if(!strcmp(szWeaponName,"weapon_deagle"))
- return WEAPON_DEAGLE;
- if(!strcmp(szWeaponName,"weapon_elite"))
- return WEAPON_ELITES;
- if(!strcmp(szWeaponName,"weapon_famas"))
- return WEAPON_FAMAS;
- if(!strcmp(szWeaponName,"weapon_fiveseven"))
- return WEAPON_FIVESEVEN;
- if(!strcmp(szWeaponName,"weapon_flashbang"))
- return WEAPON_FLASHBANG;
- if(!strcmp(szWeaponName,"weapon_g3sg1"))
- return WEAPON_G3SG1;
- if(!strcmp(szWeaponName,"weapon_galil"))
- return WEAPON_GALIL;
- if(!strcmp(szWeaponName,"weapon_glock"))
- return WEAPON_GLOCK18;
- if(!strcmp(szWeaponName,"weapon_hegrenade"))
- return WEAPON_HE_GRENADE;
- if(!strcmp(szWeaponName,"weapon_knife"))
- return WEAPON_KNIFE;
- if(!strcmp(szWeaponName,"weapon_m249"))
- return WEAPON_M249;
- if(!strcmp(szWeaponName,"weapon_m3"))
- return WEAPON_M3;
- if(!strcmp(szWeaponName,"weapon_m4a1"))
- return WEAPON_M4A1;
- if(!strcmp(szWeaponName,"weapon_mac10"))
- return WEAPON_MAC10;
- if(!strcmp(szWeaponName,"weapon_mp5navy"))
- return WEAPON_MP5;
- if(!strcmp(szWeaponName,"weapon_p228"))
- return WEAPON_P228;
- if(!strcmp(szWeaponName,"weapon_p90"))
- return WEAPON_P90;
- if(!strcmp(szWeaponName,"weapon_scout"))
- return WEAPON_SCOUT;
- if(!strcmp(szWeaponName,"weapon_sg550"))
- return WEAPON_SG550;
- if(!strcmp(szWeaponName,"weapon_sg552"))
- return WEAPON_SG552;
- if(!strcmp(szWeaponName,"weapon_smokegrenade"))
- return WEAPON_SMOKE_GRENADE;
- if(!strcmp(szWeaponName,"weapon_tmp"))
- return WEAPON_TMP;
- if(!strcmp(szWeaponName,"weapon_ump45"))
- return WEAPON_UMP45;
- if(!strcmp(szWeaponName,"weapon_usp"))
- return WEAPON_USP45;
- if(!strcmp(szWeaponName,"weapon_xm1014"))
- return WEAPON_XM1014;
- return WEAPON_NONE;
- }
Add Comment
Please, Sign In to add comment