Jump to content
Korean Random

OpenWG.Utils: комплект полезняшек для InnoSetup (и не только)


Recommended Posts

Описание

 

Библиотека предзназначенная для облегчения написания установщиков модификаций для WoT.

 

Основная функция -- поиск клиентов игры и получение информации о них (версия, локаль, реалм и прочее) а также помощь в разграничении контента для Wargaming/Lesta клиентов.

 

Однако, есть и другие фишки, такие как:

  • распаковка BigWorld XML
  • работа с JSON
  • конвертация PNG -> BMP
  • поиск запущенных процессов в каталоге и их завершение
  • отображение сплэшскрина
  • замена в строке по регулярному выражению
  • детектирование Wine
  • поиск клиентов
    • WGC / Steam / 360 / LGC
    • Получение предпочительного клиента (текущий выбранный в WGC)
  • работа с клиентом
    • получение версии клиента и ее сверка по регулярному выражению
    • получение версии исполняемого файла клиента
    • получение реалма (EU/NA/ASIA/CN/RU)
    • получение типа по контенту (SD/HD)
    • получение типа лаунчера (WGC/Steam/360/LGC)
    • получение типа релиза (Release/Common Test/Super Test/Sandbox)
    • получение пути до активного в клиенте mods/res_mods
    • получение языка клиента
    • детектирование запуска и завершение клиента

 

 

Как пользоваться 

1) скачиваем

 

2) из комплекта поставки утягиваем два файла

  • bin/openwg.utils.x86_32.dll
  • innosetup/openwg.utils.iss

 

3) в своем корневом .iss файле прописываете

#define OPENWGUTILS_DIR_SRC    "bin"
#define OPENWGUTILS_DIR_UNINST APP_DIR_UNINST
#include "openwg.utils.iss"

где

  • OPENWGUTILS_DIR_SRC -- путь к каталогу куда вы положили .dll
  • OPENWGUTILS_DIR_UNINST  -- путь к каталогу файла деинсталляции относительно {app}, в подавляющем большинстве случаев должен совпадать с UninstallFilesDir

 

4)  изучаем пример в innosetup_demo/openwg_utils_demo.iss и вызываем нужные вещи, подробности вызова можно подсмотреть в openwg.utils.iss и  в *.h файлах в каталоге include

 

Пользователи

 

Название Сопровождающий Ссылка
XVM.Installer v1 @Mixaill https://gitlab.com/xvm/xvm/-/tree/master/src/installer
XVM.Installer v2 @ktulho https://gitlab.com/xvm/xvm.installer
Protanki @Yusha https://protanki.tv/
Jove's @phantasm https://joves-modpack.ru/
KorbenTeam @phantasm https://korbenteam.org/modpack
Amway921 @AtotIK https://wgmods.net/95/
Vspishka @AtotIK https://wgmods.net/131/
WGMods @AtotIK https://wgmods.net/16/ , RIP начиная с WoT 1.19.0 🥲
LeBwa team @POLIROID https://lebwa.tv/hub/modpack-lebwa-team
Tomato.gg @POLIROID https://wgmods.net/6391/
ModPacker @Polyacov_Yury https://github.com/PolyacovYury/ModPacker
    напишите в комментариях если про вас забыл/не знал

 

 

Скачать

OpenWG.Utils_v2024.03.27.1.zip

 

Исходный код

https://gitlab.com/openwg/openwg.utils

 

История версий

  • v2022.12.04.1
    • первая для широкой публики
  • v2023.03.17.1
    • переработано API для взаимодействия с JSON
  • v2023.03.18.1
    • добавлены функции `JSON_SetDouble()`, `JSON_SetInteger()`, `JSON_SetString()`
  • v2023.03.18.2
    • исправлена потеря комментариев в JSON-файлах
  • v2023.08.01.1
    • исправлено дублирование клиентов WoT/МТ в случае если регистр имени каталога в файловой системе отличался от такового в конфигурационных файлах WGC/LGC
  • v2023.09.01.1
    • добавлены фукнции `JSON_ContainsKey()`, `JSON_GetString()`
  • v2023.09.17.1
    •  добавлены функции WWISE_OpenFile(), WWISE_CloseFile(), WWISE_Close(), WWISE_LicenseGet(), WWISE_LicenseSet()
  • v2023.09.21.1

    •  добавлены конвертеры лицензий WWISE-файлов в виде exe-файлов: wwise_convert_to_unlicensedwwise_convert_to_wg

  • v2023.11.01.1
    • добавлена функция NETWORK_Ping
    • добавлена функция NETWORK_Resolve
  • v2023.12.10.1
    • добавлена функция FS_FileEqual
    • добавлена функция FS_FileExists
    • добавлена функция XML_AddKey
    • добавлена функция XML_Close
    • добавлена функция XML_ContainsKey
    • добавлена функция XML_ContainsKeyEx
    • добавлена функция XML_OpenFile
    • добавлена функция XML_SaveFile
  • v2023.12.11.1
    • порефакторено внутри
  • v2023.12.12.1
    • добавлена функция FS_Search_QueryFolder (поиск каталога по регекспу)
    • добавлена функция FS_Search_Close
    • добавлена функция FS_Search_GetCount
    • добавлена функция FS_Search_GetPath
  •  v2023.12.13.1
    • оптимизирован FS_Search_QueryFolder
    • добавлена функция SPLASHSCREEN_Show
    • добавлена функция SPLASHSCREEN_Close
  •  v2024.02.02.1
    • добавлена функция WOT_GetClientVendor
    • исправлен вывод WOT_GetClientType для MT PublicTest
    • исправлена работы функции CHECK_IsLesta если клиент был добавлен вручную
    • в функцию CLIENT_FormatString добавлен вывод типа (WoT/MT)
  • v2024.02.10.1
    • добавлена функция SPLASHSCREEN_CloseAfter
    • добавлен фильтр по вендору в  WOT_LauncherSetDefault (только ВГ, только Леста, все вместе) 
  •  v2024.03.27.1
    • SPLASHCREEN_*: устранена проблема с перепутанными R и B каналами в .png
    • в поставку добавлена демка owg_bwxml_unpack (анпакер XML, можно перетаскивать на exe)
    • в поставку возвращена демка owg_wot_detect (поиск клиентов)
    • в поставку возвращены демки owg_wwise_convert_to (смена лицензии WWISE банок)

OpenWG.Utils_v2024.03.27.1.zip

Edited by Mixaill
  • Upvote 14
Link to comment
Short link
Share on other sites

  • The topic was pinned

Немного обновлений:

  • v2023.03.17.1
    • переработано API для взаимодействия с JSON
  • v2023.03.18.1
    • добавлены функции `JSON_SetDouble()`, `JSON_SetInteger()`, `JSON_SetString()`
  • v2023.03.18.2
    • исправлена потеря комментариев в JSON-файлах
  • v2023.08.01.1
    • исправлено дублирование клиентов WoT/МТ в случае если регистр имени каталога в файловой системе отличался от такового в конфигурационных файлах WGC/LGC
  • v2023.09.01.1
    • добавлены фукнции `JSON_ContainsKey()`, `JSON_GetString()`

 

 

Планы на будущее:

* распаковка BWXML в буфер

* смена лицензии банка WWise

Edited by Mixaill
  • Upvote 3
Link to comment
Short link
Share on other sites

Немного обновлений:

 

 v2023.09.17.1

* добавлены функции
   * WWISE_OpenFile()
   * WWISE_CloseFile()
   * WWISE_Close()
   * WWISE_LicenseGet() //0 - хз/битая банка, 1 - нет лицензии, 2 - лицензия ВГ
   * WWISE_LicenseSet()

 

 

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

procedure unlicense_bank(path:String);
var
  Handle: Integer;
begin
  Handle := WWISE_OpenFile(path);
  if WWISE_LicenseGet(Handle) = 2 then
  begin
     WWISE_LicenseSet(Handle, 1)
     WWISE_SaveFile(Handle, path)
  end;
  WWISE_Close(Handle);
end;

лицензию можно менять как в сторону нет -> WG, так и WG -> нет

 

Планы на будущее:

* распаковка BWXML в буфер

* смена лицензии на банки внутри вотмода без ручной распаковки и запаковки

* вынос менялки лицензии в консольную утилиту

Edited by Mixaill
  • Upvote 1
Link to comment
Short link
Share on other sites

v2023.09.21.1

* добавлены конвертеры лицензий в виде exe-файлов (достаточно перетянуть банки на ехешку)

  *  wwise_convert_to_unlicensed - конвертирует банки в Леста-совместимые

  *  wwise_convert_to_wg - конвертирует банки в ВГ-совместимые

 

 

OpenWG.Utils_v2023.09.21.1.zip

Edited by Mixaill
  • Upvote 12
Link to comment
Short link
Share on other sites

  • 5 months later...
12.09.2023 в 15:52, Mixaill сказал:

Немного обновлений:

  • v2023.03.17.1
    • переработано API для взаимодействия с JSON
  • v2023.03.18.1
    • добавлены функции `JSON_SetDouble()`, `JSON_SetInteger()`, `JSON_SetString()`
  • v2023.03.18.2
    • исправлена потеря комментариев в JSON-файлах
  • v2023.08.01.1
    • исправлено дублирование клиентов WoT/МТ в случае если регистр имени каталога в файловой системе отличался от такового в конфигурационных файлах WGC/LGC
  • v2023.09.01.1
    • добавлены фукнции `JSON_ContainsKey()`, `JSON_GetString()`

 

 

Планы на будущее:

* распаковка BWXML в буфер

* смена лицензии банка WWise

 

Подскажите пожалуйста как сделать так что бы всегда определялся и подставлялся клиент Лесты а не WG . Просто у меня два клиента леста и евро стоят и всегда первым делом в автоматическом поиске игры подставляется Евро клиент. А мне нужно что бы Леста была. Что мне сделать нужно. Не как самостоятельно разобраться не получается. Подскажите пожалуйста. нужно что бы всегда выбиралось первым делом так как на скреншоте 

Screenshot_1.png.181f6efa203d679b35e581917bbd18e5.png

Link to comment
Short link
Share on other sites

  • 4 months later...
14.03.2024 в 10:43, P.S.Enot сказал:

 

Подскажите пожалуйста как сделать так что бы всегда определялся и подставлялся клиент Лесты а не WG . Просто у меня два клиента леста и евро стоят и всегда первым делом в автоматическом поиске игры подставляется Евро клиент. А мне нужно что бы Леста была. Что мне сделать нужно. Не как самостоятельно разобраться не получается. Подскажите пожалуйста. нужно что бы всегда выбиралось первым делом так как на скреншоте 

Screenshot_1.png.181f6efa203d679b35e581917bbd18e5.png

В данной библиотеке есть прекрасная функция - WOT_LauncherSetDefault(LauncherFlavour) -> Устанавливает дефолтным указанный "Launcher Flavour", и возвращает количество найденных клиентов на ПК

Link to comment
Short link
Share on other sites

1 час назад, _McClayn_EU сказал:

В данной библиотеке есть прекрасная функция - WOT_LauncherSetDefault(LauncherFlavour) -> Устанавливает дефолтным указанный "Launcher Flavour", и возвращает количество найденных клиентов на ПК

Спасибо за ответ. но уже давным давно все решено и сделанно вот 

Screenshot_2.png.4fb64ae455768d7e4553581a74067de7.png

Screenshot_1.png.5e3ce500b6cac644e7144546052434bf.pngScreenshot_5.thumb.png.a6a5390941723fc2143a285b2e285bd5.png

Правда пришлось немного скрипт библиотекиOpenWG.Utils переписывать для полной совместимости с библиотекой FMXInno.dll  

Edited by P.S.Enot
Link to comment
Short link
Share on other sites

04.12.2022 в 22:33, Mixaill сказал:

Пользователи

> напишите в комментариях если про вас забыл/не знал

 

Второй вариант, пожалуйста :)

https://github.com/PolyacovYury/ModPacker
Буквально только что домигрировал код со старых костылей на утилиты в топике.

Coбираю им свои Тёмные Подвалы в кучку. Буду обновлять только пак, архивы останутся в лимбе.

(да, я собираюсь обновить свои поделия на 1.28/1.25. Зря отпуск брал, что ли?)

  • Upvote 5
Link to comment
Short link
Share on other sites

Немного обновлений

 

v2023.11.01.1

  • добавлена функция NETWORK_Ping
  • добавлена функция NETWORK_Resolve

v2023.12.10.1

  • добавлена функция FS_FileEqual
  • добавлена функция FS_FileExists
  • добавлена функция XML_AddKey
  • добавлена функция XML_Close
  • добавлена функция XML_ContainsKey
  • добавлена функция XML_ContainsKeyEx
  • добавлена функция XML_OpenFile
  • добавлена функция XML_SaveFile

v2023.12.11.1

  • порефакторено внутри

v2023.12.12.1

  • добавлена функция FS_Search_QueryFolder (поиск каталога по регекспу)
  • добавлена функция FS_Search_Close
  • добавлена функция FS_Search_GetCount
  • добавлена функция FS_Search_GetPath

 v2023.12.13.1

  • оптимизирован FS_Search_QueryFolder
  • добавлена функция SPLASHSCREEN_Show
  • добавлена функция SPLASHSCREEN_Close

 v2024.02.02.1

  • добавлена функция WOT_GetClientVendor
  • исправлен вывод WOT_GetClientType для MT PublicTest
  • исправлена работы функции CHECK_IsLesta если клиент был добавлен вручную
  • в функцию CLIENT_FormatString добавлен вывод типа (WoT/MT)

v2024.02.10.1

  • добавлена функция SPLASHSCREEN_CloseAfter
  • добавлен фильтр по вендору в  WOT_LauncherSetDefault (только ВГ, только Леста, все вместе) 

 v2024.03.27.1

  • SPLASHCREEN_*: устранена проблема с перепутанными R и B каналами в .png
  • в поставку добавлена демка owg_bwxml_unpack (анпакер XML, можно перетаскивать на exe)
  • в поставку возвращена демка owg_wot_detect (поиск клиентов)
  • в поставку возвращены демки owg_wwise_convert_to (смена лицензии WWISE банок)

OpenWG.Utils_v2024.03.27.1.zip

  • Upvote 2
Link to comment
Short link
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.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...