//----------------------------------------------------------------------------- // Purpose: Save CPU cycles by letting the HUD system early cull // costly traversal. Called per frame, return true if thinking and // painting need to occur. //----------------------------------------------------------------------------- bool CHudCrosshair::ShouldDraw( void ) { bool bNeedsDraw; C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer(); if ( !pPlayer ) return false; // draw a crosshair only if alive or spectating in eye if ( IsXbox() ) { bNeedsDraw = m_pCrosshair && !engine->IsDrawingLoadingImage() && !engine->IsPaused() && !pPlayer->IsSuitEquipped() && g_pClientMode->ShouldDrawCrosshair() && !( pPlayer->GetFlags() & FL_FROZEN ) && ( pPlayer->entindex() == render->GetViewEntity() ) && ( pPlayer->IsAlive() || ( pPlayer->GetObserverMode() == OBS_MODE_IN_EYE ) || ( cl_observercrosshair.GetBool() && pPlayer->GetObserverMode() == OBS_MODE_ROAMING ) ); } else { bNeedsDraw = m_pCrosshair && crosshair.GetInt() && !engine->IsDrawingLoadingImage() && !engine->IsPaused() && g_pClientMode->ShouldDrawCrosshair() && !( pPlayer->GetFlags() & FL_FROZEN ) && ( pPlayer->entindex() == render->GetViewEntity() ) && ( pPlayer->IsAlive() || ( pPlayer->GetObserverMode() == OBS_MODE_IN_EYE ) || ( cl_observercrosshair.GetBool() && pPlayer->GetObserverMode() == OBS_MODE_ROAMING ) ); } return ( bNeedsDraw && CHudElement::ShouldDraw() ); }
//----------------------------------------------------------------------------- // Purpose: Save CPU cycles by letting the HUD system early cull // costly traversal. Called per frame, return true if thinking and // painting need to occur. //----------------------------------------------------------------------------- bool CHudCrosshair::ShouldDraw( void ) { bool bNeedsDraw; if ( m_bHideCrosshair ) return false; C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer(); if ( !pPlayer ) return false; C_BaseCombatWeapon *pWeapon = pPlayer->GetActiveWeapon(); if ( pWeapon && !pWeapon->ShouldDrawCrosshair() ) return false; #ifdef PORTAL C_Portal_Player *portalPlayer = ToPortalPlayer(pPlayer); if ( portalPlayer && portalPlayer->IsSuppressingCrosshair() ) return false; #endif // PORTAL /* disabled to avoid assuming it's an HL2 player. // suppress crosshair in zoom. if ( pPlayer->m_HL2Local.m_bZooming ) return false; */ // draw a crosshair only if alive or spectating in eye if ( IsX360() ) { bNeedsDraw = m_pCrosshair && !engine->IsDrawingLoadingImage() && !engine->IsPaused() && ( !pPlayer->IsSuitEquipped() || g_pGameRules->IsMultiplayer() ) && g_pClientMode->ShouldDrawCrosshair() && !( pPlayer->GetFlags() & FL_FROZEN ) && ( pPlayer->entindex() == render->GetViewEntity() ) && ( pPlayer->IsAlive() || ( pPlayer->GetObserverMode() == OBS_MODE_IN_EYE ) || ( cl_observercrosshair.GetBool() && pPlayer->GetObserverMode() == OBS_MODE_ROAMING ) ); } else { bNeedsDraw = m_pCrosshair && crosshair.GetInt() && !engine->IsDrawingLoadingImage() && !engine->IsPaused() && g_pClientMode->ShouldDrawCrosshair() && !( pPlayer->GetFlags() & FL_FROZEN ) && ( pPlayer->entindex() == render->GetViewEntity() ) && !pPlayer->IsInVGuiInputMode() && ( pPlayer->IsAlive() || ( pPlayer->GetObserverMode() == OBS_MODE_IN_EYE ) || ( cl_observercrosshair.GetBool() && pPlayer->GetObserverMode() == OBS_MODE_ROAMING ) ); } return ( bNeedsDraw && CHudElement::ShouldDraw() ); }
/* ================ AdjustAngles Moves the local angle positions ================ */ void CInput::AdjustAngles ( float frametime ) { float speed; QAngle viewangles; // Determine control scaling factor ( multiplies time ) speed = DetermineKeySpeed( frametime ); if ( speed <= 0.0f ) { return; } C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer(); if (pPlayer && (pPlayer->GetFlags() & (FL_FREECAM | FL_REMOTECONTROLLED) || pPlayer->m_nButtons & IN_WALK)) return; // Retrieve latest view direction from engine engine->GetViewAngles( viewangles ); // Adjust YAW AdjustYaw( speed, viewangles ); // Adjust PITCH if keyboard looking AdjustPitch( speed, viewangles ); // Make sure values are legitimate ClampAngles( viewangles ); // Store new view angles into engine view direction engine->SetViewAngles( viewangles ); }
//----------------------------------------------------------------------------- // Purpose: Save CPU cycles by letting the HUD system early cull // costly traversal. Called per frame, return true if thinking and // painting need to occur. //----------------------------------------------------------------------------- bool CDAHudCrosshair::ShouldDraw( void ) { // OnThink isn't called when the thing isn't visible so force it to update. CalculateCrosshair(); bool bNeedsDraw; if ( m_bHideCrosshair ) return false; C_BasePlayer* pPlayer = C_BasePlayer::GetLocalPlayer(); if ( !pPlayer ) return false; C_BaseCombatWeapon *pWeapon = pPlayer->GetActiveWeapon(); if ( pWeapon && !pWeapon->ShouldDrawCrosshair() ) return false; ConVarRef cl_observercrosshair("cl_observercrosshair"); // draw a crosshair only if alive or spectating in eye if ( IsX360() ) { bNeedsDraw = m_pCrosshair && !engine->IsDrawingLoadingImage() && !engine->IsPaused() && ( !pPlayer->IsSuitEquipped() || g_pGameRules->IsMultiplayer() ) && g_pClientMode->ShouldDrawCrosshair() && !( pPlayer->GetFlags() & FL_FROZEN ) && ( pPlayer->entindex() == render->GetViewEntity() ) && ( pPlayer->IsAlive() || ( pPlayer->GetObserverMode() == OBS_MODE_IN_EYE ) || ( cl_observercrosshair.GetBool() && pPlayer->GetObserverMode() == OBS_MODE_ROAMING ) ); } else { bNeedsDraw = m_pCrosshair && da_crosshair.GetInt() && !engine->IsDrawingLoadingImage() && !engine->IsPaused() && g_pClientMode->ShouldDrawCrosshair() && !( pPlayer->GetFlags() & FL_FROZEN ) && ( pPlayer->entindex() == render->GetViewEntity() ) && !pPlayer->IsInVGuiInputMode() && ( pPlayer->IsAlive() || ( pPlayer->GetObserverMode() == OBS_MODE_IN_EYE ) || ( cl_observercrosshair.GetBool() && pPlayer->GetObserverMode() == OBS_MODE_ROAMING ) ); } return ( bNeedsDraw && CHudElement::ShouldDraw() ); }
//----------------------------------------------------------------------------- // Purpose: returns true if the weapon selection hud should be hidden because // the CHudMenu is open //----------------------------------------------------------------------------- bool CBaseHudWeaponSelection::IsHudMenuPreventingWeaponSelection() { // Don't allow weapon selection if we're frozen in place C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer(); if ( pPlayer->GetFlags() & FL_FROZEN || pPlayer->IsPlayerDead() ) return true; return IsHudMenuTakingInput(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseHudWeaponSelection::OnThink( void ) { // Don't allow weapon selection if we're frozen in place C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer(); if ( pPlayer->GetFlags() & FL_FROZEN || pPlayer->IsPlayerDead() ) { if ( IsInSelectionMode() ) { CancelWeaponSelection(); } } }
void C_HLTVCamera::CalcInEyeCamView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov ) { C_BasePlayer *pPlayer = UTIL_PlayerByIndex( m_iTraget1 ); if ( !pPlayer ) return; if ( !pPlayer->IsAlive() ) { // if dead, show from 3rd person CalcChaseCamView( eyeOrigin, eyeAngles, fov ); return; } m_aCamAngle = pPlayer->EyeAngles(); m_vCamOrigin = pPlayer->GetAbsOrigin(); m_flFOV = pPlayer->GetFOV(); if ( pPlayer->GetFlags() & FL_DUCKING ) { m_vCamOrigin += VEC_DUCK_VIEW; } else { m_vCamOrigin += VEC_VIEW; } eyeOrigin = m_vCamOrigin; eyeAngles = m_aCamAngle; fov = m_flFOV; pPlayer->CalcViewModelView( eyeOrigin, eyeAngles); C_BaseViewModel *pViewModel = pPlayer->GetViewModel( 0 ); if ( pViewModel ) { Assert( pViewModel->GetOwner() == pPlayer ); pViewModel->UpdateVisibility(); } }
void AutoStrafe::CreateMove(CUserCmd* cmd) { if (!Settings::AutoStrafe::enabled) return; C_BasePlayer* localplayer = (C_BasePlayer*)entitylist->GetClientEntity(engine->GetLocalPlayer()); if (!localplayer) return; if (!localplayer->GetAlive()) return; if (localplayer->GetFlags() & FL_ONGROUND) return; if (localplayer->GetMoveType() == MOVETYPE_LADDER || localplayer->GetMoveType() == MOVETYPE_NOCLIP) return; if (cmd->mousedx > 1 || cmd->mousedx < -1) { switch (Settings::AutoStrafe::type) { case AS_FORWARDS: cmd->sidemove = cmd->mousedx < 0.f ? -450.f : 450.f; break; case AS_BACKWARDS: cmd->sidemove = cmd->mousedx < 0.f ? 450.f : -450.f; break; case AS_LEFTSIDEWAYS: cmd->forwardmove = cmd->mousedx < 0.f ? -450.f : 450.f; break; case AS_RIGHTSIDEWAYS: cmd->forwardmove = cmd->mousedx < 0.f ? 450.f : -450.f; break; } } }
void Aimbot::CreateMove(CUserCmd* cmd) { Aimbot::UpdateValues(); if (!Settings::Aimbot::enabled) return; QAngle oldAngle; engine->GetViewAngles(oldAngle); float oldForward = cmd->forwardmove; float oldSideMove = cmd->sidemove; QAngle angle = cmd->viewangles; shouldAim = Settings::Aimbot::AutoShoot::enabled; C_BasePlayer* localplayer = (C_BasePlayer*) entityList->GetClientEntity(engine->GetLocalPlayer()); if (!localplayer || !localplayer->GetAlive()) return; if (Settings::Aimbot::IgnoreJump::enabled && !(localplayer->GetFlags() & FL_ONGROUND)) return; C_BaseCombatWeapon* activeWeapon = (C_BaseCombatWeapon*) entityList->GetClientEntityFromHandle(localplayer->GetActiveWeapon()); if (!activeWeapon || activeWeapon->GetInReload()) return; CSWeaponType weaponType = activeWeapon->GetCSWpnData()->GetWeaponType(); if (weaponType == CSWeaponType::WEAPONTYPE_C4 || weaponType == CSWeaponType::WEAPONTYPE_GRENADE || weaponType == CSWeaponType::WEAPONTYPE_KNIFE) return; Bone aw_bone; float bestDamage = 0.0f; C_BasePlayer* player = GetClosestPlayer(cmd, true, aw_bone, bestDamage); if (player) { bool skipPlayer = false; Vector eVecTarget = player->GetBonePosition((int) aw_bone); Vector pVecTarget = localplayer->GetEyePosition(); if (Settings::Aimbot::SmokeCheck::enabled && LineGoesThroughSmoke(pVecTarget, eVecTarget, true)) skipPlayer = true; if (Settings::Aimbot::FlashCheck::enabled && localplayer->GetFlashBangTime() - globalVars->curtime > 2.0f) skipPlayer = true; if (skipPlayer) player = nullptr; if (Settings::Aimbot::AutoAim::enabled && !skipPlayer) { if (cmd->buttons & IN_ATTACK && !Settings::Aimbot::aimkeyOnly) shouldAim = true; if (inputSystem->IsButtonDown(Settings::Aimbot::aimkey)) shouldAim = true; if (shouldAim) { if (Settings::Aimbot::Prediction::enabled) { pVecTarget = VelocityExtrapolate(localplayer, pVecTarget); // get eye pos next tick eVecTarget = VelocityExtrapolate(player, eVecTarget); // get target pos next tick } angle = Math::CalcAngle(pVecTarget, eVecTarget); if (Settings::Aimbot::ErrorMargin::enabled) ApplyErrorToAngle(&angle, Settings::Aimbot::ErrorMargin::value); } } } Aimbot::AimStep(player, angle, cmd); Aimbot::AutoCrouch(player, cmd); Aimbot::AutoSlow(player, oldForward, oldSideMove, bestDamage, activeWeapon, cmd); Aimbot::AutoPistol(activeWeapon, cmd); Aimbot::AutoShoot(player, activeWeapon, cmd); Aimbot::RCS(angle, player, cmd); Aimbot::Smooth(player, angle, cmd); Aimbot::ShootCheck(activeWeapon, cmd); Aimbot::NoShoot(activeWeapon, player, cmd); Math::NormalizeAngles(angle); Math::ClampAngles(angle); if (angle != cmd->viewangles) cmd->viewangles = angle; Math::CorrectMovement(oldAngle, cmd, oldForward, oldSideMove); if (!Settings::Aimbot::silent) engine->SetViewAngles(cmd->viewangles); }
//----------------------------------------------------------------------------- // Purpose: MouseMove -- main entry point for applying mouse // Input : *cmd - //----------------------------------------------------------------------------- void CInput::MouseMove( CUserCmd *cmd ) { float mouse_x, mouse_y; float mx, my; QAngle viewangles; C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer(); if (pPlayer && (pPlayer->GetFlags() & (FL_FREECAM | FL_REMOTECONTROLLED) || pPlayer->m_nButtons & IN_WALK)) { viewangles = m_aCameraViewAngles; m_bWasFreeCam = true; } else { if (m_bWasFreeCam) { viewangles = m_aCameraViewAngles; m_bWasFreeCam = false; } else engine->GetViewAngles(viewangles); } // Validate mouse speed/acceleration settings CheckMouseAcclerationVars(); // Don't drift pitch at all while mouselooking. view->StopPitchDrift (); //jjb - this disables normal mouse control if the user is trying to // move the camera, or if the mouse cursor is visible if ( !m_fCameraInterceptingMouse && !vgui::surface()->IsCursorVisible() ) { // Sample mouse one more time AccumulateMouse(); // Latch accumulated mouse movements and reset accumulators GetAccumulatedMouseDeltasAndResetAccumulators( &mx, &my ); // Filter, etc. the delta values and place into mouse_x and mouse_y GetMouseDelta( mx, my, &mouse_x, &mouse_y ); // Apply scaling factor ScaleMouse( &mouse_x, &mouse_y ); // Let the client mode at the mouse input before it's used g_pClientMode->OverrideMouseInput( &mouse_x, &mouse_y ); // Add mouse X/Y movement to cmd ApplyMouse( viewangles, cmd, mouse_x, mouse_y ); // Re-center the mouse. ResetMouse(); } m_aCameraViewAngles = viewangles; if (!(pPlayer->GetFlags() & (FL_FREECAM | FL_REMOTECONTROLLED) || pPlayer->m_nButtons & IN_WALK)) engine->SetViewAngles( viewangles ); }