AHK скрипт Killsound for cs2 (without cheat)

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции
35
1.5. Запрещено указывать название темы полностью или частично заглавными буквами. Это же относится к сообщениям на форуме.
Всем привет! Любите звуки после убийств, но, дядечка Габен их не добавляет? Нате вам такую приблуду. Запускаете где и когда угодно и кайфуете.

Вашему вниманию - GameState Integration (GSI) - это интерфейс, позволяющий сторонним приложениям получать данные о состоянии игры в режиме реального времени. Эта функция позволяет разработчикам интегрировать сторонние инструменты и системы для анализа матчей, стриминга, создания HUD-ов, и различных аналитических решений.

GSI работает через локальный сервер HTTP. Когда игра запущена, CS отправляет данные о состоянии игры на определённый URL, настроенный пользователем или разработчиком, в виде JSON-файла. Эти данные включают информацию о текущей игре, игроках, команде, оружии, бомбах и так далее.

То есть это официальная фишка игры, которую может юзать каждый без всякого риска получить VAC.

Что нужно сделать, чтобы скрипт работал:

1. Создать конфигурационный файл .cfg, который будет храниться в папке csgo​
  • перейти по пути: <диск со Стимом>\Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg
  • в папке cfg создать файл .cfg с названием gamestate_integration_t1ran со следующим содержимым:
cfg:
Expand Collapse Copy
"GSI v1.0.0"
{
    "uri" "http://127.0.0.1:3000"
    "timeout" "1.0"
    "buffer" "0.01"
    "throttle" "0.01"
    "heartbeat" "1.0"
    "data"
        {
            "provider"                  "0"
            "map"                       "0"
            "round"                     "0"
            "player_id"                 "1"
            "player_weapons"            "0"
            "player_match_stats"        "1"
            "player_state"              "0"
            "allplayers_id"             "0"
            "allplayers_state"          "0"
            "allplayers_match_stats"    "0"
        }
}
  • убеждаемся, что выполнили два предыдущих пункта правильно
  • готово!

2. У кого не скачан, скачиваем AutoHotkey второй версии (именно второй, и никак иначе) -
Пожалуйста, авторизуйтесь для просмотра ссылки.
  • создаем новый скрипт AutoHotkey, называем его и вставляем в него следующий код:
AutoHotkey v2.0.18:
Expand Collapse Copy
#SingleInstance Force
OnExit CLOSE_ALL_PROCESS

psCode := "
(
# Создание HTTP-сервера на порту 3000
$listener = [System.Net.HttpListener]::new()
$listener.Prefixes.Add('http://127.0.0.1:3000/')
$listener.Start()
$dataStore = ''  # Переменная для хранения данных
while ($true) {
    # Ожидание запроса
    $context = $listener.GetContext()
    $request = $context.Request
    $response = $context.Response
    # Обработка POST-запроса
    if ($request.HttpMethod -eq 'POST') {
        # Чтение данных из потока запроса
        $reader = New-Object System.IO.StreamReader($request.InputStream)
        $data = $reader.ReadToEnd()
        $dataStore = $data  # Сохранение данных
        # Отправка ответа
        $responseString = 'Данные успешно приняты'
        $buffer = [System.Text.Encoding]::UTF8.GetBytes($responseString)
        $response.ContentLength64 = $buffer.Length
        $response.OutputStream.Write($buffer, 0, $buffer.Length)
        $response.OutputStream.Close()
    }
    elseif ($request.HttpMethod -eq 'GET') {
        # Обработка GET-запроса
        $responseString = $dataStore
        $buffer = [System.Text.Encoding]::UTF8.GetBytes($responseString)
        $response.ContentLength64 = $buffer.Length
        $response.OutputStream.Write($buffer, 0, $buffer.Length)
        $response.OutputStream.Close()
    }
}
$listener.Stop()
$listener.Close()
)"
Run("powershell.exe -NoExit -ExecutionPolicy Bypass -WindowStyle Hidden -Command " psCode, , "Hide", &PID_PS_SCRIPT)
HttpRequest := ComObject("WinHttp.WinHttpRequest.5.1")
HttpRequest.Open("GET", "http://127.0.0.1:3000/", false)
old_kill := ""
old_steamid := ""
loop {
    HttpRequest.Send()
    Response := HttpRequest.ResponseText
    if (start := RegExMatch(Response, '"steamid": "(\d+)"', &SubPat)) {
        steamid := SubPat[1]
        if (old_steamid = "") {
            old_steamid := steamid
        }
        if (steamid != old_steamid) {
            old_steamid := steamid
            old_kill := ""
        }
    }
    if (RegExMatch(Response, '"kills": (\d+)', &SubPat, start)) {
        kill := SubPat[1]
        if (old_kill = "") {
            old_kill := kill
        }
        if (kill != old_kill) {
            SoundPlay("mixkit-service-bell-931.wav", 0)
            old_kill := kill
        }
    }
    Sleep(1)
}
CLOSE_ALL_PROCESS(Exit, ExitApp)
{
    ProcessClose(PID_PS_SCRIPT)
}
END::ExitApp()
  • сохраняем
  • готово!
По завершении всех этапов не спешим запускать скрипт. В строке №65 указан звуковой файл - SoundPlay("mixkit-service-bell-931.wav", 0). Вместо моего вы можете вставить любой другой на ваше усмотрение, но на всякий случай оставлю свой звуковой файл здесь, вдруг вам понравится звук.

Итак, убеждаемся, что все сделали правильно, и теперь можно наконец-то запускать скрипт!

Как закрыть/выключить скрипт? — Нажмите клавишу END на клавиатуре или закройте его из Tray, как любой другой AHK-скрипт.

Как я уже говорил ранее, это официальный инструмент, созданный компанией Valve, который используют операторы на турнирах для отображения красивых световых и звуковых элементов в матчах в зависимости от ситуации. Если у вас есть устройства компаний SteelSeries, Razer и других, они также используют эту технологию для синхронизации подсветки с игровыми событиями. Исходя из этого, можно сделать вывод, что дядюшка Габен не такой уж и плохой человек, чего не скажешь о разрабах этой игры в целом.
 

Вложения

Последнее редактирование:
как он работает?
 
Назад
Сверху Снизу