namespace viewtricks{ float drop_angles( CUserCmd* cmd ) { if ( m_pCvars->aim_down->GetBool() ) { if ( chk_flags(cmd->buttons,IN_ATTACK) ) { static __int32 pass = 0; if ( ++pass > 2 ){pass = 0;} float factor = (((1.0 + m_pNospread->qreco.x) / (1.0 + ((1.0 + pass) / 2.0))) - 1.0); cmd->viewangles.x -= factor; vgi::m_pEngine->SetViewAngles(cmd->viewangles); return factor; } } return 0; } QAngle aim_inaccuracy( CUserCmd* cmd ) { if ( m_pCvars->aim_zone->GetBool() ) { if ( chk_flags(cmd->buttons,IN_ATTACK) ) { // not do unwanted shit int _x = ( !m_pCvars->aim_zone_x->GetBool() ) ? 1 : (GetTickCount() % m_pCvars->aim_zone_x->GetDword()); int _y = ( !m_pCvars->aim_zone_y->GetBool() ) ? 1 : (GetTickCount() % m_pCvars->aim_zone_y->GetDword()); int _z = ( !m_pCvars->aim_zone_z->GetBool() ) ? 1 : (GetTickCount() % m_pCvars->aim_zone_z->GetDword()); QAngle factor = QAngle( ( _x == 1 ) ? 0 : _x, ( _y == 1 ) ? 0 : _y, ( _z == 1 ) ? 0 : _z ); cmd->viewangles += factor; vgi::m_pEngine->SetViewAngles(cmd->viewangles); return factor; } } return QAngle(0,0,0); } QAngle fixup_fire( CUserCmd* cmd ) { if ( chk_flags(cmd->buttons,IN_ATTACK) ) { // now fix angles if( m_pCvars->aim_nospread->GetBool() ) { if ( !m_pNospread->qsprd._is_zero() ) { bool manual = ( m_pCvars->aim_manual_nospread_angles->GetBool() ); cmd->viewangles.x = ( manual ) ? (cmd->viewangles.x - m_pNospread->qsprd.x) : (cmd->viewangles.x + m_pNospread->qsprd.x); cmd->viewangles.y = ( manual ) ? (cmd->viewangles.y - m_pNospread->qsprd.y) : (cmd->viewangles.y + m_pNospread->qsprd.y); cmd->viewangles.z = ( manual ) ? (cmd->viewangles.z - m_pNospread->qsprd.z) : (cmd->viewangles.z + m_pNospread->qsprd.z); } } if( m_pCvars->aim_norecoil->GetBool() ) { if ( !m_pNospread->qreco._is_zero() ) { cmd->viewangles.x -= m_pNospread->qreco.x * m_pCvars->aim_norecoil_x->GetFloat(); cmd->viewangles.y -= m_pNospread->qreco.y * m_pCvars->aim_norecoil_y->GetFloat(); cmd->viewangles.z -= m_pNospread->qreco.z * m_pCvars->aim_norecoil_z->GetFloat(); } } } return cmd->viewangles; } }; using namespace viewtricks; void fix_angles( CUserCmd* cmd ) { float fixup = drop_angles( cmd ); // drop the view down QAngle inacurate = aim_inaccuracy( cmd );// move the final aim position not to be 100% accurate (look like you can miss-shot) cmd->viewangles = fixup_fire( cmd ); // remove recoil n spread // this way it not fucks the aim & can be used w/ recoil & spread corrector cmd->viewangles -= inacurate; cmd->viewangles.x += fixup; }