void resolver::resolve_yaw() { if (!player || !player->is_alive()) return; player_info_t playerInfo; if (!m_engine()->GetPlayerInfo(player->EntIndex(), &playerInfo)) return; if (globals.local()->is_alive() && player->m_iTeamNum() != globals.local()->m_iTeamNum()) { auto animstate = player->get_animation_state(); float maxDesyncDelta = GetMaxDesyncDelta(player); float eyeYaw = animstate->m_flEyeYaw; float goalFeetYaw = animstate->m_flGoalFeetYaw; // Determine enemy desync side bool isMoving = player->m_vecVelocity().Length2D() > 0.1f; bool isSlowWalk = (animstate->m_velocity > 0.0f && animstate->m_velocity <= 70.0f && animstate->m_flFeetSpeedForwardsOrSideWays <= 0.0f); bool hasAdjustLayer = animstate->GetLayerWeight(3) > 0.0f && animstate->GetLayerCycle(3) > 0.0f; if (!isMoving || (isSlowWalk && !hasAdjustLayer)) { float deltaRotateFirst = std::abs(animstate->GetLayerPlaybackRate(6) - resolver_layers[0][6].m_flPlaybackRate); float deltaRotateSecond = std::abs(animstate->GetLayerPlaybackRate(6) - resolver_layers[2][6].m_flPlaybackRate); float deltaRotateThird = std::abs(animstate->GetLayerPlaybackRate(6) - resolver_layers[1][6].m_flPlaybackRate); if (deltaRotateFirst < deltaRotateSecond || deltaRotateSecond <= deltaRotateThird) { if (deltaRotateFirst >= deltaRotateThird && deltaRotateSecond > deltaRotateThird) { // sol taraf bro animstate->m_flGoalFeetYaw = math::normalize_yaw(player->m_angEyeAngles().y + maxDesyncDelta); globals.g.updating_animation = true; // Analyze animation layers if (animstate->GetLayerActivity(3) == ACT_CSGO_IDLE_TURN_BALANCEADJUST || animstate->GetLayerActivity(5) == ACT_CSGO_IDLE_TURN_BALANCEADJUST) { // Enemy is likely adjusting balance // Perform additional actions or logic based on this information } // Perform additional cycles and traces for better resolution PerformCycle(animstate, 5, resolver_layers[0][5].m_flCycle); PerformTrace(animstate, 5, resolver_layers[0][5].m_flPosX, resolver_layers[0][5].m_flPosY); PerformCycle(animstate, 6, resolver_layers[0][6].m_flCycle); PerformTrace(animstate, 6, resolver_layers[0][6].m_flPosX, resolver_layers[0][6].m_flPosY); } } else { // sağ taraf animstate->m_flGoalFeetYaw = math::normalize_yaw(player->m_angEyeAngles().y - maxDesyncDelta); globals.g.updating_animation = true; // Analyze animation layers if (animstate->GetLayerActivity(3) == ACT_CSGO_IDLE_TURN_BALANCEADJUST || animstate->GetLayerActivity(5) == ACT_CSGO_IDLE_TURN_BALANCEADJUST) { // Enemy is likely adjusting balance // Perform additional actions or logic based on this information } // Perform additional cycles and traces for better resolution PerformCycle(animstate, 5, resolver_layers[1][5].m_flCycle); PerformTrace(animstate, 5, resolver_layers[1][5].m_flPosX, resolver_layers[1][5].m_flPosY); PerformCycle(animstate, 6, resolver_layers[1][6].m_flCycle); PerformTrace(animstate, 6, resolver_layers[1][6].m_flPosX, resolver_layers[1][6].m_flPosY); } if (deltaRotateFirst < deltaRotateThird && deltaRotateSecond <= deltaRotateThird) { // Resolve to the back side animstate->m_flGoalFeetYaw = math::normalize_yaw(player->m_angEyeAngles().y + 180.0f); globals.g.updating_animation = true; // Analyze animation layers if (animstate->GetLayerActivity(3) == ACT_CSGO_IDLE_TURN_BALANCEADJUST || animstate->GetLayerActivity(5) == ACT_CSGO_IDLE_TURN_BALANCEADJUST) { // Enemy is likely adjusting balance // Perform additional actions or logic based on this information } // Perform additional cycles and traces for better resolution PerformCycle(animstate, 5, resolver_layers[2][5].m_flCycle); PerformTrace(animstate, 5, resolver_layers[2][5].m_flPosX, resolver_layers[2][5].m_flPosY); PerformCycle(animstate, 6, resolver_layers[2][6].m_flCycle); PerformTrace(animstate, 6, resolver_layers[2][6].m_flPosX, resolver_layers[2][6].m_flPosY); } else { // Resolve to the default side animstate->m_flGoalFeetYaw = math::normalize_yaw(player->m_angEyeAngles().y); globals.g.updating_animation = true; // Analyze animation layers if (animstate->GetLayerActivity(3) == ACT_CSGO_IDLE_TURN_BALANCEADJUST || animstate->GetLayerActivity(5) == ACT_CSGO_IDLE_TURN_BALANCEADJUST) { // Enemy is likely adjusting balance // Perform additional actions or logic based on this information } // Perform additional cycles and traces for better resolution PerformCycle(animstate, 5, resolver_layers[3][5].m_flCycle); PerformTrace(animstate, 5, resolver_layers[3][5].m_flPosX, resolver_layers[3][5].m_flPosY); PerformCycle(animstate, 6, resolver_layers[3][6].m_flCycle); PerformTrace(animstate, 6, resolver_layers[3][6].m_flPosX, resolver_layers[3][6].m_flPosY); } } } }