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

Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
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:
"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:
#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 и других, они также используют эту технологию для синхронизации подсветки с игровыми событиями. Исходя из этого, можно сделать вывод, что дядюшка Габен не такой уж и плохой человек, чего не скажешь о разрабах этой игры в целом.
 

Вложения

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