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

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

  • Автор темы Автор темы hex_cat
  • Дата начала Дата начала
Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
309
Реакции
7
Короче, народ, решил поковырять внутренности Валоранта на предмет визуальных эффектов через анриловские функции. Наткнулся на интересный момент с 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 в этом движке? Интересует, что еще можно дернуть без триггера варнов от сервера. Делитесь своими наработками, кто копает в этом направлении.
 
Назад
Сверху Снизу