Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Исходник [Сурс] Valorant — Функция спавна гильз через EjectShellCasing (C++)

  • Автор темы Автор темы hex_cat
  • Дата начала Дата начала
Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
658
Реакции
18
Короче, народ, решил поковырять внутренности Валоранта на предмет визуальных эффектов через анриловские функции. Наткнулся на интересный момент с EjectShellCasing, решил вынести это в отдельный тред.

Суть в чем: мы можем принудительно вызывать функцию спавна гильз через process_event, не дожидаясь реального выстрела или стандартной анимации. По факту, это дает возможность навалить визуального шума на экране, если выкрутить spawn_amount на максимум.

Техническая часть:
Код:
Expand Collapse Copy
void currentequippable::EjectShellCasing()
{
static uobject* function = nullptr;
if (!function)
{
function = uobject::find_object<uobject*>(L"Gun_C.EjectShellCasing");
}
if (!function) return;
struct { } Parameters;
this->process_event(function, &Parameters);
}

Для реализации в основном цикле используем простейший тайминг, чтобы не превратить экран в сплошной поток текстур гильз, который сразу улетит в детект из-за аномального количества объектов:

Код:
Expand Collapse Copy
if (globals::misc::bullet_spawn && character->is_alive())
{
static DWORD last_shell_tick = 0;
static DWORD last_fired_time = 0; 
bool is_shooting_now = (GetAsyncKeyState(VK_LBUTTON) & 0x8000) != 0 || globals::stop_for_auto_shoot;
if (is_shooting_now)
last_fired_time = GetTickCount();
bool should_eject = is_shooting_now || (GetTickCount() - last_fired_time < 5000);
if (should_eject && GetTickCount() - last_shell_tick > 50) 
{
if (auto invetory = character->get_inventory())
{
if (auto get_weapon = invetory->get_current_equippable())
{
int spawn_amount = globals::misc::bullet_spawn_amount > 0 ? globals::misc::bullet_spawn_amount : 1;
for (int i = 0; i < spawn_amount; i++) {
get_weapon->EjectShellCasing();
}
last_shell_tick = GetTickCount();
}
}
}
}

Что по фактам:
  1. Стейт: Это чистая работа с объектами через UObject, никакой магии.
  2. Риски: Для Валоранта любой инжект — это прямой путь к пермачу от Вангарда. Если будете пробовать на основе, даже не думайте, отлетите моментально. Юзайте только на левых аккаунтах для тестов.
  3. Оптимизация: Тайминг в 50мс стоит как заглушка, можно поиграться, но не ставьте слишком мало, иначе просадки ФПС на спавне объектов гарантированы.

Кто-то уже пробовал вызывать другие эвенты через process_event в этом движке? Интересует, что еще можно дернуть без триггера варнов от сервера. Делитесь своими наработками, кто копает в этом направлении.
 
Назад
Сверху Снизу