Jump to content
Sign in to follow this  
V3ct0r

Загрузчик модов для сервера и клиента (PKOdev.NET mod loader)

Recommended Posts

Загрузчик модов для сервера и клиента (PKOdev.NET mod loader)

 

screenshot_1.png

 

 

Проблема


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


Например:
1) Исправление SQL-инъекций в AccountServer.exe и GroupServer.exe;
2) Увеличение лимитов для .txt/.bin файлов (ItemInfo, CharacterInfo, SkillInfo и других);
3) Обработка сообщений в канал местного чата с помощью lua функции HandleChat();
4) Трансформация персонажей с помощью lua функции TransformCha();
5) Панель наложенных на персонажа эффектов;
6) Отображение уровня ЖЗ и МН под персонажами и монстрами.


Таким образом, с помощью модов можно исправлять критические баги и уязвимости, изменять настройки, добавлять новый функционал и возможности.
Изначально появление модов было вызвано отсутствием в открытом доступе исходных кодов клиента и сервера: разработчикам ничего не оставалось, кроме того, как редактировать исполняемые .exe файлы, развивая и применяя навыки реверс-инжиниринга. После публикации "исходников" популярность модов по-прежнему остается на высоком уровне. Этому способствует ряд причин:
1) Низкое качество полученных исходных кодов, отсутствие опыта их использования. Чтобы ими пользоваться, администратору нужно обладать широкими знаниями языка программирования C++, разбираться в клиент-серверной архитектуре, понимать как устроен сервер и клиент. Кроме того, исходные коды требуют длительного изучения и исследования на предмет багов и уязвимостей, включая процесс тестирования;
2) Существующие официальные сборки сервера и клиента в полной мере удовлетворяют требованиям большинства администраторов и игроков, кроме того, их работоспособность и надежность подтверждена годами практического применения. Для них было создано множество программ, скриптов и модов, которые могут быть несовместимы с исполняемыми файлами сервера и клиента, собранными из исходных кодов;
3) Изучение исходных кодов позволяет лучше понять устройство исполняемых файлов сервера и клиента Пиратии. Такие полученные знания делают возможным создавать моды повышенной сложности.


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


В настоящий момент разработка модов связана с некоторыми проблемами:
1) В нашем сообществе отсутствует четкий стандарт и культура написания модов. Кто-то внедряет код непосредственно в исполняемый .exe файл методом "патчинга", другие предпочитают писать DLL-библиотеки. Некоторые моды могут конфликтовать друг с другом, что приводит к ошибкам и трудноуловимым багам;
2) Как следствие, установка модов сопряжена с определенными трудностями: например, как перенести мод из одного GameServer.exe в другой? Каждый раз необходимо заниматься редактированием ("патчингом") исполняемых .exe файлов, а для этого нужно обладать специальными знаниями и навыками. Если моды выполнены в виде DLL-библиотек, то каждый мод необходимо вручную вносить в таблицу импорта исполняемого .exe файла. Все это неудобно, отнимает много времени и создает вероятность совершения ошибок в процессе установки и появления багов; 
3) Существует некоторое множество версий GameServer.exe и Game.exe (остальные серверные исполняемые .exe файлы не принимаем во внимание), которые имеют различную двоичную структуру. Иными словами, разработанный мод для GameServer.exe версии 1.36 не будет работать с GameServer.exe версии 1.38 – Вам необходимо разрабатывать мод под конкретный .exe файл. Вследствие этого возникает путаница с версиями исполняемых файлов. Яркий пример – адреса лимитов для .txt/.bin: думаю, многие заметили что они разные для разных .exe.


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

 


Загрузчик модов


Загрузчик модов выполняет несколько задач:

1) Унификация процесса создания, установки и запуска модов;
2) Определение типа и версии исполняемого .exe файла, который подлежит модификации;
3) Поиск установленных модов, определение их версии и совместимости с целевым исполняемым .exe файлом, подключение модов к исполняемому .exe файлу клиента или сервера.


Представляет собой DLL-библиотеку, которая единоразово подключается к исполняемому .exe файлу клиента или сервера . Моды так же являются DLL-библиотеками, которые помещаются в определенную директорию и автоматически запускаются загрузчиком при запуске клиента или сервера.


Перед запуском исполняемого .exe файла клиента или сервера управление передается загрузчику. Загрузчик определяет тип и версию .exe файла, к которому он привязан, и начинает процесс поиска DLL-библиотек в директории "mods" из корневой папки клиента/сервера. Текущая найденная DLL-библиотека динамически подключается к процессу клиента/сервера, после чего загрузчик запрашивает у библиотеки информацию о моде: название мода, тип и версия целевого .exe файла, версия мода, имя автора модификации. Если тип и версия .exe файла с загрузчиком совпадает с типом и версией .exe файла, полученными из DLL-библиотеки мода, то загрузчик дает моду команду на запуск. Далее мод вносит изменения в код процесса исполняемого файла, тем самым осуществляя модификацию. Перед завершением процесса клиента/сервера управление снова передается загрузчику, который по очереди отключает от процесса все моды.


Текущая версия загрузчика может работать с официальными 1.3x версиями Game.exe (клиент) и GameServer.exe (сервер)
Определение типа исполняемого файла (GameServer.exe или Game.exe) и его версии производится по метке времени компиляции (linker timestamp), которая записана в COFF-заголовке каждого исполняемого файла.


Поддерживаемые Game.exe и GameServer.exe

---------------------+----+----------------+--------------  
Название             | ID |   Обозначение  | Метка времени 
---------------------+----+----------------+--------------
GameServer.exe  1.36 |  1 | GAMESERVER_136 | 1204708785
---------------------+----+----------------+--------------
GameServer.exe  1.38 |  2 | GAMESERVER_138 | 1204708785
---------------------+---+----------------+--------------
Game.exe             |  3 | GAME_13X_0     | 1222073761
---------------------+----+----------------+--------------
Game.exe             |  4 | GAME_13X_1     | 1243412597
---------------------+----+----------------+--------------
Game.exe             |  5 | GAME_13X_2     | 1252912474
---------------------+----+----------------+--------------
Game.exe             |  6 | GAME_13X_3     | 1244511158
---------------------+----+----------------+--------------
Game.exe             |  7 | GAME_13X_4     | 1585009030
---------------------+----+----------------+--------------
Game.exe             |  8 | GAME_13X_5     | 1207214236
---------------------+----+----------------+--------------
GateServer.exe 1.38  | 101| GATESERVER_138 | 1224838480
---------------------+----+----------------+--------------

 


Установка загрузчика модов

 

screenshot_2.png


1) В корневой директории исполняемого .exe файла, к которому подключается загрузчик модов, создайте папку с названием "mods"*. В этой папке будут храниться DLL-библиотеки модов;
2) Откройте исполняемый .exe файл в программе CFF Explorer. Перейдите на вкладку "Import adder" (1);
3) Нажмите кнопку "Add" (2) и выберите файл pkodev.mod.loader.dll;
4) В списке "Exported functions" выберите "ExportedFunction" (3);
5) Нажмите кнопку "Import By Name" (4);
6) Снимите флажок "Rebuild OFTs" (5);
7) Нажмите кнопку "Rebuild Import Table" (6);
8  ) Сохраните файл (7).
9) Запустите исполняемый .exe файл. В окне консоли вы должны увидеть следующее сообщение:

[pkodev.mod.loader] -----------------------------------------------
[pkodev.mod.loader]    PKOdev.NET mod loader ver. 1.0 by V3ct0r
[pkodev.mod.loader] -----------------------------------------------

Если у исполняемого файла нет окна консоли, например, у Game.exe, то запустите его следующим образом:

system\Game.exe startgame > output.txt 

Теперь вывод в консоль будет перенаправлен в текстовый файл output.txt.


* Примечание: для Game.exe папка "mods" должна находиться в корневой директории игрового клиента, а не в папке system.

 


Установка модов


Чтобы установить мод достаточно поместить его DLL-библиотеку в папку "mods". Для удобства каждый мод можно помещать в отдельную папку. 


Пример структуры папок для GameServer.exe:

GameServer
|
-> Mods
   |
   -> .disabled
   |
   -> .priority
   |
   -> pkodev.mod.example1.server.138.dll
   |
   -> pkodev.mod.example2
      | 
      -> pkodev.mod.example2.server.138.dll
   |
   -> pkodev.mod.example3
      | 
      -> pkodev.mod.example3.server.138.dll

После запуска исполняемого .exe файла Вы должны увидеть новый мод в списке загруженных модов:

screenshot_3.png

 

 

Удаление модов


Чтобы удалить мод, необходимо удалить его DLL-библиотеку из папки "mods".

 

 

Временное отключение модов

 

Чтобы отменить загрузку тех или иных модов, создайте в корневой директории с модами (папка "mods") файл ".disabled" и запишите в него названия модов, которые необходимо временно отключить, с новой строки. Например:

// Файл: mods\.disabled
// Запишите ниже названия модов, которые необходимо отключить
pkodev.mod.fullmap
pkodev.mod.tablelimit

Таким образом, моды "pkodev.mod.fullmap" и "pkodev.mod.tablelimit" будут проигнорированы загрузчиком.

 

 

Приоритет загрузки модов

 

Загрузчик модов позволяет загружать те или иные моды в указанном порядке. Для этого создайте в корневой директории с модами (папка "mods") файл ".priority" и запишите в него названия модов в порядке убывания приоритета. Моды, не записанные в данном файле, будут загружены после модов с приоритетом, в случайном порядке. Например:

// Файл mods\.priority
// Запишите ниже названия модов в порядке убывания приоритета загрузки
pkodev.mod.power
pkodev.mod.tablelimit
pkodev.mod.fullmap

 

Моды будут загружены в следующем порядке:

1. pkodev.mod.power;

2. pkodev.mod.tablelimit;

3. pkodev.mod.fullmap;

4. Далее - все остальные обнаруженные в папке "mods" моды в случайном порядке.

 

 

Создание мода


Для того, чтобы мод мог быть загружен загрузчиком, он должен соответствовать следующим требованиям:
1) Название DLL-библиотеки мода должно быть вида:

pkodev.mod.<название мода>.<client или server>.<обозначение версии.exe >.dll

Например:

pkodev.mod.tablelimit.client.13x_0.dll
pkodev.mod.mobspawn.server.138.dll

2) DLL-библиотека мода должна экспортировать 3 функции:

 

__declspec(dllexport) void __cdecl GetModInformation(mod_info& info)

 

Заполнить структуру типа mod_info. Данная структура содержит основную информацию о моде: название, версию, имя автора, ID типа и версии исполняемого .exe файла, для которого предназначен мод.

 

// Mod information structure
struct mod_info
{
    // Название мода
    char name[128];
    
    // Версия мода
    char version[64];
    
    // Имя автора
    char author[64];
    
    // Тип и версия целевого .exe файла (см. таблицу)
    unsigned int exe_version;
};

 

__declspec(dllexport) void __cdecl Start(const char* path)

 

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


__declspec(dllexport) void __cdecl Stop()


Остановить мод. В данной функции мод должен сохранить свои настройки, откатить модификацию процесса (необязательно) и освободить ресурсы.

 

3) Тип и версия исполняемого файла, указанная в DLL-библиотеке мода (структура modinfo, поле exe_version), должны совпадать с типом и версией исполняемого файла, для которого он предназначен. Если загрузчик определил тип и версию исполняемого файла как GameServer.exe 1.38 (GAMESERVER_138) с ID 2 (см. таблицу выше), то DLL-библиотека мода должна записывать в поле exe_version значение 2.

 

 

Пример разработки мода


Для разработки мода можно использовать любой язык программирования, который поддерживает создание DLL-библиотек. Я буду использовать язык C++ и среду разработки Visual Studio 2019 Community.


В качестве примера создадим мод для GameServer.exe версии 1.38 (ID 2), который будет выводить в его окно сообщение "Hello world!".


1) Определим название мода, пусть оно будет: 

pkodev.mod.helloworld

Тогда название DLL-библиотеки мода будет:

pkodev.mod.helloworld.server.138.dll

2) Создадим проект динамически подключаемой библиотеки .DLL;
3) Подключаем к проекту файл loader.h (см. вложения в конце данного сообщения);
4) Реализуем функцию GetModInformation():

void GetModInformation(mod_info& info)
{
    strcpy_s(info.name, "pkodev.mod.helloworld");
    strcpy_s(info.version, "1.0");
    strcpy_s(info.author, "V3ct0r");
    info.exe_version = GAMESERVER_138;
}

5) Реализуем функцию Start():

void Start(const char* path)
{
    std::cout << "Hello world!" << std::endl;
    std::cout << "path = " << path << std::endl << std::endl;
}

6) Реализуем функцию Stop():

void Stop()
{

}

7) Скомпилируем проект. В результате мы получим файл pkodev.mod.helloworld.server.138.dll;
8 ) Устанавливаем и тестируем мод. В окне GameServer.exe мы должны увидеть сообщение "Hello world!" и путь до корневой директории мода:

 

screenshot_4.png


Проект примера мода можно найти во вложении.

 

 

Скачать


1) Загрузчик модов;

2) Исходный код загрузчика модов для Visual Studio 2019 Community (C++);

3) Интерфейс для создания модов (файл loader.h);

4) Проект примера мода "Hello world!" для Visual Studio 2019 Community (C++);

5) Образцы исполняемых файлов клиента и сервера из таблицы (7.3 Мб);

6) Шаблон проекта мода PKOdev.NET loader для Visual Studio 2019 Community (C++).

 

 

Доступные моды

 

1) Подключение Game.exe к Stall Server (сервер "оффлайн" ларьков);

2) Исправление мгновенного возрождения убитых монстров после перезапуска сервера;

3) Редактирование лимитов .txt таблиц;

4) Система рейтинга игроков;

5) Система ежедневных наград за вход в игру;

6) Отображение времени отката ("кулдауна") умений;

7) Отображение координат под NPC;

8 ) Автоматическое подключение к серверу / вход в игру;

9) Социальные кнопки (Discord, Youtube, Twitch и др.);

10) Медали (ожерелья) со званиями;

11) Отображение уровня персонажа игрока рядом с его именем;

12) Отображение дополнительных параметров на форме с характеристиками персонажа (frmState);

13) Время сервера;

14) Антибот;

15) Отображение уровня предметов на иконках ("умные иконки");

16) Отображение названия предмета в аппарели;

17) Изменение размера персонажей;

18) Отображение времени отклика ("пинг") на форме выбора сервера;

19) Система контрактов;

20) Отключение проверки пароля при входе во внутриигровой Интернет-магазин;

21) Отключение сообщений об ошибках при компиляции .txt-таблиц (table_bin);

22) Очистка чатов;

23) Исправление сброса профессии персонажей при переподключении к серверу ("слёт профессии");

24) Цветные GM-сообщения (GM notice);

25) 60 кадров в секунду (60 FPS);

26) Эффект полета для крыльев;

27) Полная карта местности для региона;

28) Выделение друзей и врагов цветом.

 

(Обновлено 18.02.2022)

 

 

Если у Вас есть какие-либо вопросы или возникли проблемы, то смело спрашивайте в данной теме! :smile:

  • Like 2
  • Thanks 2

Share this post


Link to post
Share on other sites

Добавил образцы исполняемых файлов сервера и клиента, приведенные в таблице, для разработчиков модов.

 

Скачать (7.3 Мб)

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

@V3ct0r, спасибо за проделанную работу! 
Многие годы мы вместе с разработчиками стремились к такому единому и очень удобному плагину. Прям большой респект! 👍

Наши пожелания к дальнейшему развитию темы:
1. Кнопка в данной теме "донат автору".
2. Мод, который поможет редактировать вшитые стоимости в Game.exe. К примеру: ковки, комбинирования и прочего. Стоимость отображается у НПС в диалоговых окнах.
 

Адреса прилагаю (возможны неточности, зависит от Game.exe). 

Вковать: 0006A301
Улучшить: 00071A5C
Комбинировать: 000719FA
Продырявить: 0006A36A
Плавка: 00069A75
Вставить в аппарель: 00071A2C
Вытащить гем: ?

3. Вызов со стороны сервера стрелки пути под персонажем на нужные координаты. В идеале - авто-путь.

4. Цветные ники персонажей.

5. Цветные GM сообщения (с возможностью выбрать цвет).

 

UP 24.01.2022:
- Эффект полета крыльям по ID предмета.

- Сохранять КД на панели навыков при перемещении между локациями (мб записывать массив КД в файл на стороне клиента?). 

 

На нашем проекте многое из перечисленного есть, но я думаю многим это будет полезно и упростит разработку.

Edited by Fomin
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Соглашусь с вышесказанным!)

 

Мои пожелания к дальнейшему развитию темы:

1. Мод, который уберет MessageBox в компиляции txt --> bin;

2. Иконки гильдий;

3. Иконки рядом с ником;

4. Изменение цвета любых позиций предмета(атака/самоцветы/защита...);

5. Изменение цвета фона информации о предмете(если навести на предмет, будет голубая рамка и полу-прозрачный фон).. Игра с прозрачностью и цветом рамки;(кастомизация всегда классно);

6. Панель эффектов.

 

И список от знакомого разработчика:

7. IGS внутри GameServer + покупка в IGS за репутацию;
8. Ездовые питомцы;
9. Аппарели не привязанные к вещам;
10. Расширение банка и временного мешка;
11. Расширение инвентаря до 100 или более ячеек;
12. Добавление новых ячеек LOOK - фея/крылья/корабль...;
13. Карта местности для всех карт;

14. Фикс мобов на мини-карте в хаосе(как пример), когда при 2+ открытии на мини карте видно красные точки;

15. Гибкая настройка чата

"типо при инициализации ГСа будет назначаться цена за сообщение

в конфиге ГСа эта штука есть но не работает, насколько я помню"

Edited by Graf
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Привет @Fomin и @Graf! Благодарю вас за ваши отзывы и внимание к теме!

 

По мере своих возможностей, я постараюсь реализовать ваши идеи касательно новых модов. Единственное мое пожелание - это чтобы вы подробнее их описали. Я с вами свяжусь, если у меня возникнут вопросы, либо, при желании, можете развернуто написать здесь.

 

  • Like 2

Share this post


Link to post
Share on other sites

Привет Всем. Как Вам такая идея мода за мат в чате отправлять игрока в тюрьму тем самым реализуем большее применение данной локации и дисциплина в игре 😉

И вот еще идея можно сделать похожий мод на Редактирование лимитов .txt таблиц; только на аппы чтобы можно было устанавливать большее кол-во без ХЕКС-редактора 😉

Edited by small666
  • Thanks 1

Share this post


Link to post
Share on other sites

Привет, @small666

 

1) Идея интересная, но определение наличия мата в сообщениях достаточно нетривиальная задача;

2) Можно будет сделать такой мод, тем более у нас есть гайд по этой теме:

 


Share this post


Link to post
Share on other sites
2 hours ago, V3ct0r said:

Привет, @small666

 

1) Идея интересная, но определение наличия мата в сообщениях достаточно нетривиальная задача;

2) Можно будет сделать такой мод, тем более у нас есть гайд по этой теме:

 

А нельзя добавить перехватчик на луа с плюсов, когда сообщения закрываются звёздачками? По-моему, не должно быть так сложно, но я уже не помню как это всё устроено на сервере, поэтому могу быть не прав.

Share this post


Link to post
Share on other sites
22 hours ago, patrick13 said:

А нельзя добавить перехватчик на луа с плюсов, когда сообщения закрываются звёздачками? По-моему, не должно быть так сложно, но я уже не помню как это всё устроено на сервере, поэтому могу быть не прав.

Я больше про выделение матных слов из сообщений от игроков. Нужно составить достаточно большой словарь таких слов. Далее, человек может использовать мат завуалированно, в виде различных склонений, либо разбавлять матные слова разными символами, чтобы запутать "антимат".

 

С технической точки зрения я представляю себе это как мод для клиента под GM-аккаунтом, либо даже в виде отдельной программы (бота), который будет получать пакеты с сообщениями в каналы чата и сканировать их на мат. Персонаж под такой модификацией будет находиться на локации "Тюрьма". При наличии мата в сообщении, мод отправляет на сервер GM-команду &call <Имя игрока>, тем самым телепортируя его к себе в тюрьму. При необходимости "антимат" меняет свое положение с помощью команды &move <x,> <y>, <карта>. Соответствующие наработки имеются. Таким образом мы покрываем все основные каналы чата.

  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, V3ct0r said:

Я больше про выделение матных слов из сообщений от игроков. Нужно составить достаточно большой словарь таких слов. Далее, человек может использовать мат завуалированно, в виде различных склонений, либо разбавлять матные слова разными символами, чтобы запутать "антимат".

 

С технической точки зрения я представляю себе это как мод для клиента под GM-аккаунтом, либо даже в виде отдельной программы (бота), который будет получать пакеты с сообщениями в каналы чата и сканировать их на мат. Персонаж под такой модификацией будет находиться на локации "Тюрьма". При наличии мата в сообщении, мод отправляет на сервер GM-команду &call <Имя игрока>, тем самым телепортируя его к себе в тюрьму. При необходимости "антимат" меняет свое положение с помощью команды &move <x,> <y>, <карта>. Соответствующие наработки имеются. Таким образом мы покрываем все основные каналы чата.

Понял, звучит интересно!

Share this post


Link to post
Share on other sites
5 часов назад, V3ct0r сказал:

Я больше про выделение матных слов из сообщений от игроков. Нужно составить достаточно большой словарь таких слов. Далее, человек может использовать мат завуалированно, в виде различных склонений, либо разбавлять матные слова разными символами, чтобы запутать "антимат".

 

С технической точки зрения я представляю себе это как мод для клиента под GM-аккаунтом, либо даже в виде отдельной программы (бота), который будет получать пакеты с сообщениями в каналы чата и сканировать их на мат. Персонаж под такой модификацией будет находиться на локации "Тюрьма". При наличии мата в сообщении, мод отправляет на сервер GM-команду &call <Имя игрока>, тем самым телепортируя его к себе в тюрьму. При необходимости "антимат" меняет свое положение с помощью команды &move <x,> <y>, <карта>. Соответствующие наработки имеются. Таким образом мы покрываем все основные каналы чата.

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

Тем самым игрок А не будет видеть сообщений от игрока Б, который использует ненормативную лексику. Но игрок А будет видеть сообщения игрока В, хотя игрок В использует ненормативную лексику, но ему с кайфом читать эти сообщения.  Игрок Б при этом видит сообщения обоих( А и В ), пока не добавит их в свой черный список. 

Причем это все касается чатов "ЛС", "Местный", "Торг", "Мир".  При этом возможно "Групповой" не нужно игнорировать. Но это на усмотрение разработчика и администраторов. 

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

Edited by Kara Online

Контакты:
Сайт: https://magicseaonline.com/
Telegram:
https://t.me/magicsea_online - здесь мы публикуем последние новости по разработке
Группа VK:
https://vk.cc/chjbzd
Чат VK: https://vk.cc/chjc8L
Discord: 
https://discord.gg/nqkv76YVbj
Форум: https://forum.magicseaonline.com
YouTube: https://goo-gl.me/vfqtA

С уважением, Magicsea Team

Share this post


Link to post
Share on other sites
On 2/16/2022 at 3:21 PM, Kara Online said:

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

Тем самым игрок А не будет видеть сообщений от игрока Б, который использует ненормативную лексику. Но игрок А будет видеть сообщения игрока В, хотя игрок В использует ненормативную лексику, но ему с кайфом читать эти сообщения.  Игрок Б при этом видит сообщения обоих( А и В ), пока не добавит их в свой черный список. 

Причем это все касается чатов "ЛС", "Местный", "Торг", "Мир".  При этом возможно "Групповой" не нужно игнорировать. Но это на усмотрение разработчика и администраторов. 

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

Да, хорошая идея. @d3ux предлагал сделать подобное (осторожно, ~30 Мб .gif )

 

Spoiler

1.gif

 

2.png

 

3.gif

 

4.gif

 

 


Share this post


Link to post
Share on other sites

Мне кажется для предложений по созданию модов отдельный раздел не помешает.

А вот еще предложение для серверной части проверка на установленные моды в клиенте 

то есть как я это себе представляю 

на сервере мод с файлом в котором прописаны моды которые должны быть в клиенте и если не соответствует то закрытие клиента 

тем самым администрация сервера может контролировать пользователей на сторонние моды

Сильно не пинайте меня за данную идею 🤗

 

Или вот ещё 

Сравнение вещей как в 2,5 версии 

Edited by small666

Share this post


Link to post
Share on other sites
On 2/19/2022 at 1:48 PM, small666 said:

Мне кажется для предложений по созданию модов отдельный раздел не помешает.

Создал отдельную тему:

 

On 2/19/2022 at 1:48 PM, small666 said:

А вот еще предложение для серверной части проверка на установленные моды в клиенте 

то есть как я это себе представляю 

на сервере мод с файлом в котором прописаны моды которые должны быть в клиенте и если не соответствует то закрытие клиента 

тем самым администрация сервера может контролировать пользователей на сторонние моды

Сильно не пинайте меня за данную идею 🤗

 

Я об этом тоже думал, но наверно лучше перенести этот функционал в какой-либо лаунчер, программу автообновлений, так как там уже будет необходимый задел по работе с файлами клиента.


Share this post


Link to post
Share on other sites
17 часов назад, V3ct0r сказал:

Создал отдельную тему:

 

Я об этом тоже думал, но наверно лучше перенести этот функционал в какой-либо лаунчер, программу автообновлений, так как там уже будет необходимый задел по работе с файлами клиента.

Лаунчер наверное обойти проще, проверил на обновы да закрыл его и делай что хочешь а потом запустил через батник и защита лаунчера не сработает. А на стороне сервера так уже не обойти. Возможно заблуждаюсь

Share this post


Link to post
Share on other sites

Обновление загрузчика модов до версии 1.1

 

+ Добавлена поддержка GateServer.exe версии 1.38 (1224838480);

+ Добавлена возможность отключения загрузки определенных модов. Список отключенных модов записывается с новой строки в файл ".disabled" в корневой директории с модами ("mods\.disabled"), например:

// Write here the names of mods that do not need to be loaded
pkodev.mod.fullmap
pkodev.mod.tablelimit

+ Добавлена возможность указания приоритета загрузки модов. Приоритет загрузки модов в порядке убывания записывается с новой строки в файл ".priority" в корневой директории с модами ("mods\.priority"), например:

// Write down mods loading priority in descending order here
pkodev.mod.power
pkodev.mod.tablelimit
pkodev.mod.fullmap

// Моды будут загружены в следующем порядке:
// 1. pkodev.mod.power
// 2. pkodev.mod.tablelimit
// 3. pkodev.mod.fullmap
// 4. Далее - все остальные обнаруженные в папке "mods" моды в случайном порядке

+ Оптимизация кода и прочие мелкие изменения.

 

 

Все изменения залиты в репозиторий проекта на GitHub.

  • Thanks 2

Share this post


Link to post
Share on other sites

Обновление загрузчика модов от 05.01.2023

 

+ Добавлена поддержка GroupServer.exe версии 1.38 (1224838510).

 

Актуальные бинарные файлы


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...