Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 13 Ноя 2022
- Сообщения
- 146
- Реакции
- 3
так если валидная то чё это за хуйня?
Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Потому что сурс кусок говна
с педалями нету, но есть норм view angles авто стрейферрасскажу факт, на дарксайд сдк еще никто не смог сделать нормальный автострейф с педалями потому что база
найтмод я пофиксил
void c_movement::auto_strafe()
{
if (!g_interfaces->m_engine->is_connected() || !g_interfaces->m_engine->is_in_game())
return;
if (!g_ctx->m_local_pawn || !g_ctx->m_local_controller->m_pawn_is_alive())
return;
if (g_ctx->m_local_pawn->m_flags() & FL_ONGROUND)
return;
if (g_ctx->m_local_pawn->m_move_type() == 1794 || g_ctx->m_local_pawn->m_move_type() == 2313)
return;
if (!g_cfg->misc.m_auto_strafe)
return;
if (g_ctx->m_user_cmd->m_button_state.m_button_state & (1 << 16))
return;
auto movement_services = g_ctx->m_local_pawn->m_movement_services();
if (!movement_services)
return;
vec3_t vel = g_ctx->m_local_pawn->m_vec_abs_velocity();
vec3_t move = movement_services->m_last_movement_impulses();
float yaw = normalize(g_interfaces->m_csgo_input->get_view_angles().y);
static uint64_t last_pressed = 0;
static uint64_t last_buttons = 0;
const auto current_buttons = g_ctx->m_user_cmd->m_button_state.m_button_state;
auto check_button = [&](const uint64_t button) {
if (current_buttons & button && (!(last_buttons & button) ||
(button & IN_MOVELEFT && !(last_pressed & IN_MOVERIGHT)) ||
(button & IN_MOVERIGHT && !(last_pressed & IN_MOVELEFT)) ||
(button & IN_FORWARD && !(last_pressed & IN_BACK)) ||
(button & IN_BACK && !(last_pressed & IN_FORWARD)))) {
if (button & IN_MOVELEFT)
last_pressed &= ~IN_MOVERIGHT;
else if (button & IN_MOVERIGHT)
last_pressed &= ~IN_MOVELEFT;
else if (button & IN_FORWARD)
last_pressed &= ~IN_BACK;
else if (button & IN_BACK)
last_pressed &= ~IN_FORWARD;
last_pressed |= button;
}
else if (!(current_buttons & button))
last_pressed &= ~button;
};
check_button(IN_MOVELEFT);
check_button(IN_MOVERIGHT);
check_button(IN_FORWARD);
check_button(IN_BACK);
last_buttons = current_buttons;
float offset = 0.f;
if (last_pressed & IN_MOVELEFT)
offset += 90.f;
if (last_pressed & IN_MOVERIGHT)
offset -= 90.f;
if (last_pressed & IN_FORWARD)
offset *= 0.5f;
else if (last_pressed & IN_BACK)
offset = -offset * 0.5f + 180.f;
yaw += offset;
float velocity_angle = RAD2DEG * std::atan2f(vel.y, vel.x);
if (velocity_angle < 0.0f)
velocity_angle += 360.0f;
velocity_angle -= floorf(velocity_angle / 360.0f + 0.5f) * 360.0f;
float speed = vel.length_2d();
float ideal = speed > 0.f ? std::clamp(RAD2DEG * std::atan2(40.f / speed, 1.f), 0.0f, 90.0f) : 90.0f;
float correct = (100.f - 100) * 0.01f * ideal;
auto rotate_movement = [](float target_yaw) {
float rot = DEG2RAD * (g_interfaces->m_csgo_input->get_view_angles().y - target_yaw);
float new_forward = std::cos(rot) * g_ctx->m_user_cmd->pb.mutable_base()->forwardmove() -
std::sin(rot) * g_ctx->m_user_cmd->pb.mutable_base()->leftmove();
float new_side = std::sin(rot) * g_ctx->m_user_cmd->pb.mutable_base()->forwardmove() +
std::cos(rot) * g_ctx->m_user_cmd->pb.mutable_base()->leftmove();
g_ctx->m_user_cmd->m_button_state.m_button_state &= ~(IN_BACK | IN_FORWARD | IN_MOVELEFT | IN_MOVERIGHT);
g_ctx->m_user_cmd->m_button_state.m_button_state2 &= ~(IN_BACK | IN_FORWARD | IN_MOVELEFT | IN_MOVERIGHT);
g_ctx->m_user_cmd->pb.mutable_base()->set_forwardmove(std::clamp(new_forward, -1.f, 1.f));
g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(std::clamp(new_side * -1.f, -1.f, 1.f));
if (g_ctx->m_user_cmd->pb.mutable_base()->forwardmove() > 0.0f)
g_ctx->m_user_cmd->m_button_state.m_button_state |= IN_FORWARD;
else if (g_ctx->m_user_cmd->pb.mutable_base()->forwardmove() < 0.0f)
g_ctx->m_user_cmd->m_button_state.m_button_state |= IN_BACK;
if (g_ctx->m_user_cmd->pb.mutable_base()->leftmove() > 0.0f)
g_ctx->m_user_cmd->m_button_state.m_button_state |= IN_MOVELEFT;
else if (g_ctx->m_user_cmd->pb.mutable_base()->leftmove() < 0.0f)
g_ctx->m_user_cmd->m_button_state.m_button_state |= IN_MOVERIGHT;
};
float velocity_delta = normalize(yaw - velocity_angle);
if (fabsf(velocity_delta) > 90.f)
velocity_delta = std::copysignf(90.f, velocity_delta);
g_ctx->m_user_cmd->pb.mutable_base()->set_forwardmove(0.f);
g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(0.f);
if (speed <= 80.f) {
yaw += ideal * 3.0f;
g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(1.0f);
}
else if (velocity_delta > correct) {
yaw = velocity_angle + correct * 4.0f;
g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(-1.0f);
}
else if (velocity_delta < -correct) {
yaw = velocity_angle - correct * 4.0f;
g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(1.0f);
}
else {
yaw += ideal * 4.0f;
g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(1.0f);
}
rotate_movement(normalize(yaw));
}
вылетает при заходе за любую команду (спеки, кт, т)
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.
мне скиньСкрытое содержимое
педали реддера у всех уже естьс педалями нету, но есть норм view angles авто стрейфер
Код:void c_movement::auto_strafe() { if (!g_interfaces->m_engine->is_connected() || !g_interfaces->m_engine->is_in_game()) return; if (!g_ctx->m_local_pawn || !g_ctx->m_local_controller->m_pawn_is_alive()) return; if (g_ctx->m_local_pawn->m_flags() & FL_ONGROUND) return; if (g_ctx->m_local_pawn->m_move_type() == 1794 || g_ctx->m_local_pawn->m_move_type() == 2313) return; if (!g_cfg->misc.m_auto_strafe) return; if (g_ctx->m_user_cmd->m_button_state.m_button_state & (1 << 16)) return; auto movement_services = g_ctx->m_local_pawn->m_movement_services(); if (!movement_services) return; vec3_t vel = g_ctx->m_local_pawn->m_vec_abs_velocity(); vec3_t move = movement_services->m_last_movement_impulses(); float yaw = normalize(g_interfaces->m_csgo_input->get_view_angles().y); static uint64_t last_pressed = 0; static uint64_t last_buttons = 0; const auto current_buttons = g_ctx->m_user_cmd->m_button_state.m_button_state; auto check_button = [&](const uint64_t button) { if (current_buttons & button && (!(last_buttons & button) || (button & IN_MOVELEFT && !(last_pressed & IN_MOVERIGHT)) || (button & IN_MOVERIGHT && !(last_pressed & IN_MOVELEFT)) || (button & IN_FORWARD && !(last_pressed & IN_BACK)) || (button & IN_BACK && !(last_pressed & IN_FORWARD)))) { if (button & IN_MOVELEFT) last_pressed &= ~IN_MOVERIGHT; else if (button & IN_MOVERIGHT) last_pressed &= ~IN_MOVELEFT; else if (button & IN_FORWARD) last_pressed &= ~IN_BACK; else if (button & IN_BACK) last_pressed &= ~IN_FORWARD; last_pressed |= button; } else if (!(current_buttons & button)) last_pressed &= ~button; }; check_button(IN_MOVELEFT); check_button(IN_MOVERIGHT); check_button(IN_FORWARD); check_button(IN_BACK); last_buttons = current_buttons; float offset = 0.f; if (last_pressed & IN_MOVELEFT) offset += 90.f; if (last_pressed & IN_MOVERIGHT) offset -= 90.f; if (last_pressed & IN_FORWARD) offset *= 0.5f; else if (last_pressed & IN_BACK) offset = -offset * 0.5f + 180.f; yaw += offset; float velocity_angle = RAD2DEG * std::atan2f(vel.y, vel.x); if (velocity_angle < 0.0f) velocity_angle += 360.0f; velocity_angle -= floorf(velocity_angle / 360.0f + 0.5f) * 360.0f; float speed = vel.length_2d(); float ideal = speed > 0.f ? std::clamp(RAD2DEG * std::atan2(40.f / speed, 1.f), 0.0f, 90.0f) : 90.0f; float correct = (100.f - 100) * 0.01f * ideal; auto rotate_movement = [](float target_yaw) { float rot = DEG2RAD * (g_interfaces->m_csgo_input->get_view_angles().y - target_yaw); float new_forward = std::cos(rot) * g_ctx->m_user_cmd->pb.mutable_base()->forwardmove() - std::sin(rot) * g_ctx->m_user_cmd->pb.mutable_base()->leftmove(); float new_side = std::sin(rot) * g_ctx->m_user_cmd->pb.mutable_base()->forwardmove() + std::cos(rot) * g_ctx->m_user_cmd->pb.mutable_base()->leftmove(); g_ctx->m_user_cmd->m_button_state.m_button_state &= ~(IN_BACK | IN_FORWARD | IN_MOVELEFT | IN_MOVERIGHT); g_ctx->m_user_cmd->m_button_state.m_button_state2 &= ~(IN_BACK | IN_FORWARD | IN_MOVELEFT | IN_MOVERIGHT); g_ctx->m_user_cmd->pb.mutable_base()->set_forwardmove(std::clamp(new_forward, -1.f, 1.f)); g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(std::clamp(new_side * -1.f, -1.f, 1.f)); if (g_ctx->m_user_cmd->pb.mutable_base()->forwardmove() > 0.0f) g_ctx->m_user_cmd->m_button_state.m_button_state |= IN_FORWARD; else if (g_ctx->m_user_cmd->pb.mutable_base()->forwardmove() < 0.0f) g_ctx->m_user_cmd->m_button_state.m_button_state |= IN_BACK; if (g_ctx->m_user_cmd->pb.mutable_base()->leftmove() > 0.0f) g_ctx->m_user_cmd->m_button_state.m_button_state |= IN_MOVELEFT; else if (g_ctx->m_user_cmd->pb.mutable_base()->leftmove() < 0.0f) g_ctx->m_user_cmd->m_button_state.m_button_state |= IN_MOVERIGHT; }; float velocity_delta = normalize(yaw - velocity_angle); if (fabsf(velocity_delta) > 90.f) velocity_delta = std::copysignf(90.f, velocity_delta); g_ctx->m_user_cmd->pb.mutable_base()->set_forwardmove(0.f); g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(0.f); if (speed <= 80.f) { yaw += ideal * 3.0f; g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(1.0f); } else if (velocity_delta > correct) { yaw = velocity_angle + correct * 4.0f; g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(-1.0f); } else if (velocity_delta < -correct) { yaw = velocity_angle - correct * 4.0f; g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(1.0f); } else { yaw += ideal * 4.0f; g_ctx->m_user_cmd->pb.mutable_base()->set_leftmove(1.0f); } rotate_movement(normalize(yaw)); }
мне скинь
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.
шедеврСкрытое содержимое
мне скиньСкрытое содержимое
if (!entity->has_armor(hitgroup) || damage <= 0.0f)
return;
// Расчёт урона с учётом брони
float armor_ratio = weapon_data->m_armor_ratio();
float armor_bonus = 0.5f;
float heavy_armor_bonus = 1.0f;
const int armor_value = entity->m_armor_value();
float new_damage = damage;
float damage_to_armor = damage * armor_ratio * armor_bonus;
float damage_to_health = damage - damage_to_armor;
if (damage_to_armor > armor_value) {
damage_to_armor = static_cast<float>(armor_value);
damage_to_health = damage - damage_to_armor / armor_bonus;
}
damage = damage_to_health;
}
так авол исправно работает и такой проверки нет, нах это добавлять?Пацы чтобы исправить логику auto wall
Сделайте 1 вещь в Has_armor исправить эту строчку float heavy_armor_bonus = 1.0f, armor_bonus = 0.5f, armor_ratio = weapon_data->m_armor_ratio( ) * 0.5f; НА
1:if (!entity->has_armor(hitgroup) || damage <= 0.0f) return; // Расчёт урона с учётом брони float armor_ratio = weapon_data->m_armor_ratio(); float armor_bonus = 0.5f; float heavy_armor_bonus = 1.0f; const int armor_value = entity->m_armor_value(); float new_damage = damage; float damage_to_armor = damage * armor_ratio * armor_bonus; float damage_to_health = damage - damage_to_armor; if (damage_to_armor > armor_value) { damage_to_armor = static_cast<float>(armor_value); damage_to_health = damage - damage_to_armor / armor_bonus; } damage = damage_to_health; }
рейдж говянно написан, проверки калл. у тебя из за проверки на is player pawn крашит в рейдже
Ты говоришь авол идеально работает? когда он с кт базы хуярит через стены в т базу и стреляет в не существующие стенки где прострелить нельзя!так авол исправно работает и такой проверки нет, нах это добавлять?
рейдж говянно написан, проверки калл. у тебя из за проверки на is player pawn крашит в рейдже
Могу скинуть код на луа системуТы говоришь авол идеально работает? когда он с кт базы хуярит через стены в т базу и стреляет в не существующие стенки где прострелить нельзя!
Краша не одного не было и все идеально рабоает
Доква что в моем коде нету крашовТы говоришь авол идеально работает? когда он с кт базы хуярит через стены в т базу и стреляет в не существующие стенки где прострелить нельзя!
Краша не одного не было и все идеально работает
Могу скинуть код на луа систему
Также хорошо стал пробивать стеныТы говоришь авол идеально работает? когда он с кт базы хуярит через стены в т базу и стреляет в не существующие стенки где прострелить нельзя!
Краша не одного не было и все идеально работает
Могу скинуть код на луа систему
Доква что в моем коде нету крашов
почему крашит при возрождении? и какая именно проверка вызывает краш, у меня когда я зашел за кт и возродился в дебаггере начало спамить heap corruptionтак авол исправно работает и такой проверки нет, нах это добавлять?
рейдж говянно написан, проверки калл. у тебя из за проверки на is player pawn крашит в рейдже
bool c_rage_bot::weapon_is_at_max_accuracy(c_cs_weapon_base_v_data* weapon_data, float inaccuracy) {
auto local_data = g_prediction->get_local_data();
if (!local_data)
return false;
constexpr auto round_accuracy = [](float accuracy) { return floorf(accuracy * 170.f) / 170.f; };
constexpr auto round_duck_accuracy = [](float accuracy) { return floorf(accuracy * 300.f) / 300.f; };
float speed = g_ctx->m_local_pawn->m_vec_abs_velocity().length();
// Исправлено условие is_scoped: должно быть true, если оружие снайперское и игрок прицелен
bool is_scoped = (weapon_data->m_weapon_type() == WEAPONTYPE_SNIPER_RIFLE) &&
((g_ctx->m_user_cmd->m_button_state.m_button_state & IN_ZOOM) || g_ctx->m_local_pawn->m_scoped());
bool is_ducking = (g_ctx->m_local_pawn->m_flags() & FL_DUCKING) || (g_ctx->m_user_cmd->m_button_state.m_button_state & IN_DUCK);
bool on_ground = (g_ctx->m_local_pawn->m_flags() & FL_ONGROUND);
float rounded_accuracy = round_accuracy(inaccuracy);
float rounded_duck_accuracy = round_duck_accuracy(inaccuracy);
// Проверяем условия достижения максимальной точности
if (on_ground) {
if (is_scoped) {
if (is_ducking && rounded_duck_accuracy <= local_data->m_inaccuracy)
return true;
if (speed <= 0.f && rounded_accuracy <= local_data->m_inaccuracy)
return true;
} else {
// Для не снайперских оружий можно добавить логику, если надо
if (rounded_accuracy <= local_data->m_inaccuracy)
return true;
}
}
return false;
}
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.
Я уже его пофиксилСкрытое содержимое
пофиксите лучше ебучий автостоп который я пробовал фиксить но нихуя не ворк
zakiньЯ уже его пофиксил
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz