5 645 [MRDRS] AutoSpy Мододел 3 070 публикаций 1 598 боёв Жалоба #1 Опубликовано: 15 май 2024, 19:27:08 (изменено) Всем привет! СКАЧАТЬ (сборка от 04 декабря 2024) Это техническая модификация, которая содержит в себе функции и компоненты для разметки Unbound2 для моддинга. Библиотека призвана помочь в разработке модификаций, чтобы не плодить один и тот же код в нескольких модах. А также при необходимости обновления небольшого участка кода какого-то компонента не придется переделывать все моды с ним (его копиями). Содержимое библиотеки: Скрытый текст Компоненты: ModCheckBox - чекбокс ModSlider - ползунок ModOptionsButton - кнопка вызова элемента опции ModDraggableElement - перетаскивание по экрану ModRadioButtons - радиобатон (выбор исключающий остальные в группе) Функции (основные макросы): MOD_GET_TRANSLATE - получение авторского перевода MOD_CREATE_SHIP_PARAMS - активация в DH информации о параметрах кораблей в бою MOD_GET_SHIP_TTX - получение данных о ТТХ корабля игрока MOD_MOUSE_ACTIVE_SCOPE - получение данных об активации мыши (нажатие Ctrl) MOD_GET_UPREFS, MOD_VAR_BOOL, MOD_VAR_NUM - чтение сохраненных настроек пользователя MOD_HDIVIDER, MOD_VDIVIDER - горизонтальный и вертикальный разделитель с предустановленными отступами 2px и 6px соответственно MOD_HP_SCOPE - получение данных из компонента health Использование: - Скачать архив с библиотекой - Распаковать содержимое архива в папку модификаций клиента игры, к примеру в C:\Games\Korabli\bin\ABCD\res_mods\, где ABCD - номер актуального билда игры (папка с наибольшим числом в названии). Если вы используете хотя бы один из моих модов и устанавливаете их вручную (не через модпаки), то подпишитесь на эту тему, чтобы не пропустить новости об обновлении библиотеки. -- Библиотека распространяется без каких-либо ограничений, но с условием сохранения авторства каждого компонента или функции. Если у кого-то появится желание чем-то дополнить содержимое или что-то доработать из имеющегося, то как говорится - добро пожаловать, пишите в ЛС. Изменено 4 дек 2024, 21:01:12 пользователем AutoSpy 6 Рассказать о публикации Ссылка на публикацию
4 006 [GA] BattleFrame Разработчик, Коллекционер 2 856 публикаций 23 434 боя Жалоба #2 Опубликовано: 16 май 2024, 06:51:11 Опубликовано. 2 Рассказать о публикации Ссылка на публикацию
5 645 [MRDRS] AutoSpy Мододел 3 070 публикаций 1 598 боёв Жалоба #3 Опубликовано: 16 июн 2024, 09:51:01 (изменено) ИНТЕРАКТИВНЫЕ ЭЛЕМЕНТЫ К таким элементам относятся те, которые позволяют взаимодействовать с ними пользователю (как правило мышью) для управления соответствующими значениями опций: чекбокс, радиобатон, ползунок и т.д. Особенности интерактивных элементов данной библиотеки: - Самостоятельное взаимодействие с файлом пользовательских настроек preferenses.xml. То есть в коде не нужно обрабатывать события этого элемента, а также передавать ему заранее считанные значения из файла настроек. - При отсутствии сохраненных настроек значение может быть взято из словарика (dict), объявленного в модификации и переданного элементу в качестве аргумента. - Возможность указать название "родительской" опции, на основании значения которой элемент будет активен или наоборот - неактивен. Пример записи опции в файле настроек preferenses.xml: <myMod_showLevel> значение </myMod_showLevel> Интерпретация в аргументах: <_setKey_delim_setProp> значение </_setKey_delim_setProp> Пример объявления словарика со значениями по умолчанию: (def constant MY_MOD_DEFAULT_PARAMS { showLevel: true, # for ModCheckBox alpha: 70, # for ModSlider } ) Стандартные аргументы интерактивных элементов (обязательные выделены зеленым цветом, оранжевым - рекомендуемые) Название Тип Значение по умолчанию Описание _setKey str нет, обязательный параметр Первая часть в названии параметра, хранящегося в файле настроек. Значение должно быть уникальным по отношению к другим модификациям, например название мода: teamsMiniPanel _setProp str нет, обязательный параметр Вторая часть в названии параметра, хранящегося в файле настроек. Это название самой опции, которое используются в коде как переменная, например: showLevel _caption str нет Отображаемое название опции. При отсутствии аргумента будет подставлено значение _setProp _defaults dict нет Константа или переменная (тип dict - словарик), в которой указано значение опции по умолчанию. При отсутствии этого аргумента значение опции будет установлено в false или 0 _delim str _ (знак подчеркивания) Соединительная часть между _setKey и _setProp. Используется для более удобного чтения файла при поиске в нем записанных значений _enabled bool true Значение true/false, отвечающее за активацию элемента, то есть доступен он к взаимодействию с пользователем или нет _parentProp str нет Название опции, отвечающее за активацию элемента, то есть доступен он к взаимодействию с пользователем или нет. Игнорируется если ничего не указано _watchPrefs bool true Дополнительный аргумент для включения/отключения считывания значения опции из файла настроек ModCheckBox - альтернатива клиентскому CheckBox (разг.: чекбокс, флажок). Скрытый текст В коде элемент объявлен следующим образом: (def element ModCheckBox (_caption:str='', _setProp:str='', _setKey:str='', _delim:str='_', _defaults:dict={}, _enabled:bool=true, _parentProp:str='', _watchPrefs:bool=true) layout=true) Используются стандартные аргументы элементов, своих уникальных нет. Пример использования: (element ModCheckBox _setKey='myMod' _setProp='showLevel' _caption='Отображать уровень корабля' _defaults = "MY_MOD_DEFAULT_PARAMS" ) ModSlider - альтернатива клиентскому Slider (разг.: ползунок). Скрытый текст В коде элемент объявлен следующим образом: (def element ModSlider (_caption:str='', _showValue:bool=false, _setProp:str='', _setKey:str='', _delim:str='_', _defaults:dict={}, _enabled:bool=true, _parentProp:str='', _watchPrefs:bool=true, _min:number=0, _max:number=100, _width:number=174) layout=true) Используются стандартные аргументы элементов, а также есть свои: Название Тип Значение по умолчанию Описание _showValue bool false Отображать или нет текущее значение в скобках после названия опции. Например: Прозрачность (10) _min number 0 Минимальное значение "ползунка" (крайнее левое положение) _max number 100 Максимальное значение "ползунка" (крайнее правое положение) _width number 174 Ширина элемента Пример использования: (element ModSlider _setKey='myMod' _setProp='alpha' _caption='Прозрачность' _defaults = "MY_MOD_DEFAULT_PARAMS" _showValue=true _min=5 _max=90 _width=140 ) ModRadioButtons - радиобатон (выбор исключающий остальные в группе) Скрытый текст В коде элемент объявлен следующим образом: (def element ModRadioButtons (_caption:str='', _itemsCount:number=0, _itemsCaptions:array=[], _hflow:bool=false, _setProp:str='', _setKey:str='', _delim:str='_', _defaults:dict={}, _watchPrefs:bool=true) Используются стандартные аргументы элементов, а также есть свои: Название Тип Значение по умолчанию Описание _itemsCount number 0 Количество элементов в группе _itemsCaptions array [] Массив со строковыми значениями названий каждого элемента. По умолчанию название элемента Тип 1, Тип 2 и т.д. Если _itemsCount не указан, но заполнен данный параметр, то количество элементов будет равно количеству элементов этого массива _hflow bool false Указывает на то, что нужно расположить элементы горизонтально Пример использования: (element ModRadioButtons _caption = "tr('IDS_COLORBLIND_FILTER_MODE') + ' (' + toLower(tr('IDS_SHIP_TYPES')) +'):'" _itemsCount=3 _hflow=true _setProp='iconType' _setKey = "MOD_TM_PREF_KEY" _defaults = "MOD_TM_PARAMS" ) Пост будет обновляться по мере появления новых интерактивных элементов или изменений в библиотеке. Изменено 13 сен 2024, 10:52:49 пользователем AutoSpy 1 Рассказать о публикации Ссылка на публикацию
5 645 [MRDRS] AutoSpy Мододел 3 070 публикаций 1 598 боёв Жалоба #4 Опубликовано: 16 июн 2024, 11:56:59 (изменено) РАБОТА С ФАЙЛОМ ПОЛЬЗОВАТЕЛЬСКИХ НАСТРОЕК PREFERENCES.XML Файл настроек расположен в корневой папке игры. В него записываются практически все пользовательские настройки, такие как: отмечен или нет чекбокс, какое положение ползунка, к примеру прозрачности воды на мини-карте установил пользователь, размеры окна чата в порту и т.д. Клиент игры при запуске загружает в память этот файл и работает с ним в течении всей сессии. Запись в файл происходит при корректном завершении работы клиента игры. Чтение записей и их значений выполняется в коде разметки с помощью специального компонента в DataHub - userPrefs, а запись - специальной функцией python. Ниже в сокращённом виде предоставлена структура файла, где показаны ключевые разделы в которых по традиции модификации хранят значения своих опций и параметров: <preferences.xml> <scriptsPreferences> <ui> <elementsGroupExpand> # значения типа bool <myIndicator_enabled> true </myIndicator_enabled> </elementsGroupExpand> <chatBoxWidth> # значения типов number и string <myIndicator_alpha> 75.0000 </myIndicator_alpha> </chatBoxWidth> </ui> </scriptsPreferences> </preferences.xml> Для организации работы с компонентом userPrefs в библиотеке представлено несколько макросов, которые используются в scope элемента. (def macro MOD_GET_UPREFS (_isActive:expression=true) - главный макрос, который обращается к компоненту userPrefs и создает два словарика с переменными bool и number. Макрос получает данные при загрузке кода (вход в бой, к примеру) , а обновляет их только если активен курсор мыши (зажата клавиша Ctrl). Это позволяет снизить влияние на FPS при установке и обновлении значений интерактивных элементов. Но есть дополнительная возможность ограничить обновление данных даже при зажатом Ctrl через единственный необязательный аргумент _isActive - выражение, результатом которого должно быть true или false (по умолчанию - true). Макросы объявления переменных и присвоения им значений из userPrefs: (def macro MOD_VAR_BOOL (_name:expression, _key:expression, _defaults:expression={}, _delim:expression='_') # тип bool (def macro MOD_VAR_NUM (_name:expression, _key:expression, _defaults:expression={}, _delim:expression='_') # тип number Аргументы этих макросов схожи по назначению со стандартными аргументами интерактивных элементов: _name - название переменной и значения аналогично _setProp, обязательный аргумент. _key - значение аналогичное _setKey, обязательный аргумент. _defaults - словарик значений по умолчанию, желательно передать в макрос. _delim - разделитель. По умолчанию знак подчеркивания. В файле preferences.xml это выглядит так: <_key_delim_name> значение </_key_delim_name> Пример использования: (scope # Объявление словаря значений по умолчанию (var defaultParams:dict = {enabled: true, alpha: 100}) # Объявление словарей uPrefsBool и uPrefsNum с данными из компонента userPrefs (macro MOD_GET_UPREFS) # Объявление переменной с именем enabled с типом bool и присвоение ей значения из uPrefsBool (macro MOD_VAR_BOOL _name = "'enabled'" _key = "'myIndicator'" _defaults = "defaultParams") # Объявление переменной с именем alpha с типом number и присвоение ей значения из uPrefsNum (macro MOD_VAR_NUM _name = "'alpha'" _key = "'myIndicator'" _defaults = "defaultParams") ) # Примеры оперирования полученными переменными (bind visible "enabled") (style (bind alpha "alpha") ) Изменено 16 июн 2024, 14:54:56 пользователем AutoSpy 2 Рассказать о публикации Ссылка на публикацию
5 645 [MRDRS] AutoSpy Мододел 3 070 публикаций 1 598 боёв Жалоба #5 Опубликовано: 16 июн 2024, 14:54:42 (изменено) ВСПОМОГАТЕЛЬНЫЕ ЭЛЕМЕНТЫ ModOptionsButton - элемент вызова меню настроек мода. Представляет из себя кнопку в виде пиктограммы шестеренки (как пример такая кнопка есть у мини-карты). При нажатии на кнопку происходит открытие вашего элемента, содержащего набор компонентов для настроек: чекбоксы, слайдеры и т.д.. Объявление в коде: (def element ModOptionsButton (_elemName:str, _posX:number=0, _posY:number=0) layout=true) Аргументы: _elemName - название вашего элемента-меню с набором компонентов для настройки мода. Обязательный параметр. _posX и _posY - начальное положение меню относительно кнопки. По умолчанию 0. Использование: Скрытый текст (def element MyModMain () (scope ... ) ... (element ModOptionsButton _elemName='MyModMenu' _posX=10 _posY=20 ) ... ) (def element MyModMenu () (scope ... ) (tf (text='Настройки моего мода') ) (macro MOD_HDIVIDER) (element ModCheckBox _caption='Отображать панель' _setProp='showPanel' _setKey='myMod' _defaults = "MY_MOD_DEFAULT_PARAMS") (element ModSlider _caption='Прозрачность' _setProp='alpha' _setKey='myMod' _defaults = "MY_MOD_DEFAULT_PARAMS") ) Изменено 13 сен 2024, 11:04:43 пользователем AutoSpy 2 Рассказать о публикации Ссылка на публикацию
5 645 [MRDRS] AutoSpy Мододел 3 070 публикаций 1 598 боёв Жалоба #6 Опубликовано: 13 сен 2024, 11:02:40 (изменено) ФУНКЦИОНАЛ ПЕРЕТАСКИВАНИЯ МОДА ПО ЭКРАНУ (DRAG AND DROP) ModDraggableElement - этот элемент необходимо поместить в блок кода элемента, за который пользователь будет перетаскивать мод по экрану. Аргументы (обязательные): Название Тип Значение по умолчанию Описание _wndName str нет уникальное имя перемещаемого элемента в пределах всех модификаций игры, как правило - ключ для хранения настроек в файле preferences.xml _defaults dict нет словарик со значениями позиции элемента по осям X и Y по умолчанию _defaults{positionX, positionY} _elemSizes dict нет _elemSizes{width, height} - ширина и высота элемента для исключения случаев вылета за пределы экрана _showHint bool true Отображать или нет всплывающую подсказку "Перенесите панель в любую удобную точку экрана (удержание левой кнопки мыши)" _showBg bool false Отображать подложку MOD_DRAGGABLE_GET_POSITION - получение сохраненных данных о позиции мода на экране (хранятся в файле preferences.xml). Аргументы _wndName и _defaults Результат функции: _dragPosX и _dragPosY (описание ниже) MOD_DRAGGABLE_SET_POSITION - установка позиции мода на экране. Аргументы: Название Тип Значение по умолчанию Описание _dragPosX number нет позиция элемента по оси X _dragPosY number нет позиция элемента по оси Y Пример работы с этим функционалом можно посмотреть в моём моде Таймер боя Изменено 13 сен 2024, 12:31:00 пользователем AutoSpy 2 Рассказать о публикации Ссылка на публикацию