Иконка ресурса

Плагин для CS:GO: Защита от сбоев при обработке сетевых пакетов 1.0.0

Поддерживаемые игры
  1. CS: GO

Плагин для CS:GO: Исправление ошибки NetMsg_StringCmd​

Этот плагин предназначен для исправления ошибки в CS:GO

которая связана с обработкой сетевых сообщений и может вызывать сбои в игре. Плагин перехватывает вызов функции ProcessPacketHeader, чтобы предотвратить ошибки, вызванные слишком большими сетевыми пакетами.

Как это работает​

1. Структура плагина​

Плагин написан на SourceMod и использует динамический детуринг (перехват функций) для изменения поведения игры. В плагине заданы основные параметры, создается объект для работы с детурингом и производится настройка перехвата функций.

2. Загрузка данных и настройка детуринга​

В функции OnPluginStart:

  • Загрузка файла данных: Плагин ищет и загружает файл hvhgg_netmsg_crash_fix.txt, который содержит сигнатуры функций и другую необходимую информацию для работы детуринга.
  • Создание и активация детуринга: Используется объект DynamicDetour для перехвата функции ProcessPacketHeader. Если что-то идет не так (например, файл не найден или не удалось создать детуринг), плагин завершает работу с ошибкой.

3. Перехват функции​

Функция ProcessPacketHeader_Pre выполняется до вызова оригинальной функции ProcessPacketHeader:

  • Получение адреса пакета: Проверяется размер пакета, переданный в функцию. Если размер превышает 2000 байт, функция предотвращает дальнейшее выполнение оригинальной функции, устанавливая значение hReturn.Value в -1 и возвращая MRES_Supercede. Если размер в пределах допустимого, оригинальная функция выполняется как обычно (возвращается MRES_Ignored).

4. Завершение работы​

В функции OnPluginEnd:

  • Отключение перехвата: При завершении работы плагина отключается перехват функции ProcessPacketHeader, если он был активирован.

Примечания​

  • Файл данных: Файл hvhgg_netmsg_crash_fix.txt должен содержать правильные сигнатуры функций для работы плагина. Убедитесь, что этот файл находится в папке gamedata вашего сервера.
  • Сигнатуры функций: В плагине используется сигнатура для функции ProcessPacketHeader, которая определяет, как найти эту функцию в памяти игры.

Использование​

Просто загрузите плагин на сервер CS:GO

и убедитесь, что файл hvhgg_netmsg_crash_fix.txt находится в правильной папке. Плагин автоматически перехватит функцию и будет предотвращать ошибки, связанные с большими сетевыми пакетами.

Заключение​

Этот плагин поможет избежать сбоев в CS:GO

связанных с ошибками в обработке сетевых сообщений. Он прост в установке и использовании, и эффективно решает проблему с ошибками, вызванными переполнением сетевых пакетов.

Исходный код плагина:
C-подобный:
#include <sourcemod>
#include <sdkhooks>
#include <dhooks>

public Plugin:myinfo =
{
    name = "HvH.gg NetMsg Crash Fix",
    author = "imi-tat0r & philip015",
    description = "Fixes a crash related to NetMsg_StringCmd",
    version = "1.0.0",
}

DynamicDetour dDetour;

public void OnPluginStart()
{
    // Load signature from gamedata file
    char buffer[PLATFORM_MAX_PATH];
    BuildPath(Path_SM, buffer, sizeof buffer, "gamedata/hvhgg_netmsg_crash_fix.txt");

    if (!FileExists(buffer))
        SetFailState("\n==========\nMissing required file: \"%s\".\n==========", buffer);

    GameData hGameData = new GameData("hvhgg_netmsg_crash_fix");
    if (!hGameData)
        SetFailState("Failed to load \"hvhgg_netmsg_crash_fix.txt\" gamedata.");

    dDetour = DynamicDetour.FromConf(hGameData, "ProcessPacketHeader");
    if (!dDetour)
        SetFailState("Failed to create DynamicDetour: \"ProcessPacketHeader\"");

    if (!dDetour.Enable(Hook_Pre, ProcessPacketHeader_Pre))
        SetFailState("Failed to detour pre: \"ProcessPacketHeader\"");
}

MRESReturn ProcessPacketHeader_Pre(DHookReturn hReturn, DHookParam hParams)
{
    Address addr = hParams.GetAddress(1);
    if (!addr)
        return MRES_Ignored;
 
    int size = LoadFromAddress(addr + view_as<Address>(0x54), NumberType_Int32);

    // arbitrary value, we might change that
    if (size > 2000)
    {
        hReturn.Value = -1;
        return MRES_Supercede;
    }
    return MRES_Ignored;
}

public void OnPluginEnd()
{
    if (dDetour)
        dDetour.Disable(Hook_Pre, ProcessPacketHeader_Pre);
}
Требования

Зависимости и Требования​

  1. SourceMod: Необходима последняя версия SourceMod для работы плагина.
  2. SDKHooks: Требуется для обработки перехватов функций.
  3. DynamicHook (DHooks): Для динамического перехвата функций.
Убедитесь, что все перечисленные зависимости установлены и актуальны для корректной работы плагина.
Переменные

Доступные Настройки и Переменные Плагина​

На данный момент плагин не имеет настраиваемых переменных или опций. Все функции и поведение плагина задаются в коде и не подлежат изменению через конфигурационные файлы.
Команды
Для этого плагина команды не предусмотрены. Он работает автоматически и не требует пользовательского ввода команд в игре или через консоль. Все действия плагина выполняются на основе его кода и настроек при загрузке и завершении работы.

Доступные Команды Плагина​

На данный момент плагин не имеет команд. Все функциональные возможности и поведение плагина управляются автоматически и не требуют пользовательского ввода команд.
Установка

Руководство по Установке Плагина​

1. Установите SourceMod

  • Скачайте и установите SourceMod на ваш сервер CS

    если он еще не установлен.
2. Установите SDKHooks и DHooks

  • Скачайте и установите SDKHooks и DHooks в соответствии с инструкциями на их страницах.
3. Установите плагин

  • Поместите файл плагина (hvhgg_netmsg_crash_fix.smx) в папку addons/sourcemod/plugins на вашем сервере.
  • Поместите файл плагина (hvhgg_netmsg_crash_fix.sp) в папку addons/sourcemod/scriptings на вашем сервере.

4. Установите файл данных

  • Создайте папку gamedata в addons/sourcemod/, если она еще не существует.
  • Поместите файл данных (hvhgg_netmsg_crash_fix.txt) в папку addons/sourcemod/gamedata.
5. Перезапустите сервер

  • Перезапустите ваш сервер CS

    чтобы плагин и его зависимости начали работать.
  • Мне нравится
Реакции: mrdiega
Автор
Alley
Скачивания
144
Просмотры
918
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Alley

Сверху Снизу