GPCracker Posted October 9, 2019 Share Posted October 9, 2019 1 hour ago, Polyacov_Yury said: Предлагаешь нагромоздить конвертацию в кортежи в ридер JSON-конфигов? Предлагаю для всех типов данных и контейнеров обдуманно и осознанно выбирать базовые типы. Везде и всегда. On 10/8/2019 at 5:32 PM, Polyacov_Yury said: Мысль, конечно, неплохая. Но применить можно не везде. Предлагаю посмотреть как это реализовано у меня - в код модификации вшита базовая структура файла конфигурации, в ней для каждого параметра прописаны типы данных и значения по умолчанию. В процессе чтения файла конфигурации происходит автоматическое преобразование полученных из файла сырых данных в целевой объект данных в соответствии с указанным в базовой структуре типом, определяющим характер и последовательность преобразований. К примеру, так в базовой структуре конфигурации выглядит сочетание клавиш, так оно прописано в файлах конфигурации, в конечной рабочей конфигурации параметр является экземпляром вот этого класса, а вот, собственно, цепочка преобразования (раз, два). А вот как выглядит проверка и что происходит на самом деле. Еще немного магии происходит здесь и здесь. В результате проверки получается обработчик, который и управляет конечным значением параметра. Параметр switch определяет, в каком режиме работает сочетание - переключатель (каждое нажатие инициирует переключение статуса на противоположное) или кнопка (активный статус только при удержании в нажатом положении). Параметр invert инвертирует push-событие клавиатуры - переключатель срабатывает на отпускание основной клавиши сочетания, а кнопка возвращает неактивный статус при удержании клавиши в нажатом положении (для примера). Параметр repeat включает обработку повторов при длительном удержании клавиши в нажатом положении, практически никогда не используется. Чтение локализованных текстовых шаблонов с макросами реализовано аналогичным образом - так описан шаблон в базовой структуре конфигурации, а так он выглядит в файлах конфигурации (это ссылка на файл локализации). Полную цепочку преобразований при необходимости отследишь самостоятельно. Вот так скромно и неприметно выглядит форматирование текстового шаблона в коде модификации, а вот что происходит на самом деле. Думаю в качестве примера по переносу сложности из логики в данные вполне пойдет. Что касается кода в классах (типах) данных - он пишется один раз, отлаживается в модульном режиме, после чего про внутренности можно вообще забыть, особенно если при разработке модуля были предусмотрены все возможные (адекватные и логичные, естественно) варианты его использования, и вероятность возникновения необходимости добавления дополнительного функционала минимальна. Так что у меня уже давным-давно металл автоматически конвертируется в танки, причем тихо, скромно, неприметно и практически беспалевно. On 10/8/2019 at 5:32 PM, Polyacov_Yury said: Да и не очень понятно, как я их к Танкам прикручу Могу лишь настоятельно посоветовать прочитать внимательно предоставленные ранее материалы еще раз с самого начала. Хотя ладно, пожалуй немного упрощу тебе задачу. Quote Правило разделения: Отделяйте правила (policy) от механизма (mechanism); отделяйте интерфейс от движка (engine). Хуки - это интерфейс, а модули и классы - это движок. Разделяй и властвуй. А при отладке некоторых модулей (при правильном подходе к их написанию) можно обойтись даже без клиента игры, хватает и обычного питона. @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted April 27, 2020 Author Share Posted April 27, 2020 Ну что, товарищи, продолжаем чинить очевидные баги в никому не нужном очень редко используемом функционале? @NooBooL мне тут в личку пожаловался, мол, не хочет радиальное меню открываться при наведении прицела на противника. После долгих пыток (включающих попытки выйти в бой и не забыть попробовать открыть розу команд, наведя прицел на противника) удалось выяснить, что происходит (вернее, происходило) это только на арте. И таки действительно, я совершил багулю в коде, который отправлял данные в, собственно, само радиальное меню. Баг исправлен, мод перезалит, все дела. Почему функционал не нужный? Да потому что баг в коде сидел никем не замеченным *смотрит на часы* почти полгода - с 7 октября 2019 года. P.S. Смотрите, что нашёл. :D class BattleReplay(object): def handleKeyEvent(self, isDown, key, mods, isRepeat, event): player = BigWorld.player() if not isPlayerAvatar(): return False isCursorVisible = player.isForcedGuiControlMode() if not self.isPlaying: return False elif cmdMap.isFiredList((CommandMapping.CMD_CM_LOCK_TARGET, CommandMapping.CMD_CM_LOCK_TARGET_OFF, CommandMapping.CMD_CM_POSTMORTEM_NEXT_VEHICLE, CommandMapping.CMD_CM_POSTMORTEM_SELF_VEHICLE, CommandMapping.CMD_RADIAL_MENU_SHOW, CommandMapping.CMD_RELOAD_PARTIAL_CLIP), key) and isDown and not isCursorVisible: suppressCommand = True if suppressCommand: return True # при возвращении True дальнейшие хендлеры нажатий клавиш не отрабатывают return False Если коротко - то если в реплее по тем или иным причинам курсор отображается - например, зажат Ctrl - то все вышеперечисленные команды (вкл/выкл автоприцел, переключиться на другой или свой танк в посмертном режиме, перезарядить барабан и, что самое главное - показать радиальное меню) как минимум отправляются на обработку, если, конечно, выполнены все остальные условия. Поскольку для радиального меню таковыми является отсутствие открытых окон (вроде диалогов, меню по Tab или меню, где отдел двигания кнопки хлеб зарабатывает) - то оно честно открывается. @ Quote Link to comment Short link Share on other sites More sharing options...
Hydros Posted April 28, 2020 Share Posted April 28, 2020 (edited) On 1/24/2017 at 9:14 PM, Daryl said: Please for 0.9.17.0.3, make it in french langage! :) Hello guys An old post mentionned this, it is done bellow : { "battleMessage_commandOnDelay": "Cette commande est désactivée, veuillez patienter.", "description": "Radial Menu", "UI_setting_mapMenu_key_text": "Raccourci menu alternatif", "UI_setting_mapMenu_key_tooltip": "Active le menu Radial alternatif à l'aide de cette touche. Un menu spécifique à la carte s'affiche si la config est paramétrée.", "UI_setting_selectedConfig_defaultMeta": "Messages par défaut", "UI_setting_selectedConfig_text": "Configuration active :", "UI_setting_selectedConfig_tooltip": "Cette config sera utilisée par le menu Radial." } See you :) Edited April 28, 2020 by Hydros @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted April 28, 2020 Author Share Posted April 28, 2020 7 минут назад, Hydros сказал: Hello guys An old post mentionned this, it is done bellow : { "battleMessage_commandOnDelay": "Cette commande est désactivée, veuillez patienter.", "description": "Radial Menu", "UI_setting_mapMenu_key_text": "Raccourci menu alternatif", "UI_setting_mapMenu_key_tooltip": "Active le menu Radial alternatif à l'aide de cette touche. Un menu spécifique à la carte s'affiche si la config est paramétrée.", "UI_setting_selectedConfig_defaultMeta": "Messages par défaut", "UI_setting_selectedConfig_text": "Configuration active :", "UI_setting_selectedConfig_tooltip": "Cette config sera utilisée par le menu Radial." } See you :) Thanks. This lang would only affect the mod's settings and a message about command being on cooldown. I think, they requested a "skin" - the command config. I have about a dozen russian configs and one english bundled, but other languages are expected to be created by users manually. @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted July 10, 2020 Author Share Posted July 10, 2020 Ну что, посоны, Радиалка больше нинужна?) @ Quote Link to comment Short link Share on other sites More sharing options...
beb Posted July 12, 2020 Share Posted July 12, 2020 (edited) @Polyacov_Yury, это если у них получится что-то действительно универсальное, и в тоже время гибкое, настраиваемое под индивидуальные предпочтения, во что верится с трудом. PS может быть кому пригодится: В архиве: configs\PYmods\PYmodsGUI\i18n\uk.json configs\PYmods\RadialMenu\i18n\uk.json configs\PYmods\RadialMenu\RadialMenu.json configs\PYmods\RadialMenu\skins\ecommand_en.json configs\PYmods\RadialMenu\skins\ecommand_uk.json uk.json - файли налаштувань моду українською; RadialMenu.json - параметри моду з коментарями українською; ecommand_uk.json - Бойове радіальне меню українською: в основі відповідне до стандартного меню клієнта з доданням окремої команди щодо інформування про висвітлення: "Висвітлений в {ownPos}", "ping": "{ownPos}" (в секції "hotkeyOnly", з активацією по "hotKey": ["KEY_F9"]); ecommand_en.json - Battle Radial Menu in English: basically the same as standard vanilla one, with the separate supplementary command to inform on spotting: "Spotted at {ownPos}", "ping": "{ownPos}" (section "hotkeyOnly", binded to "hotKey": ["KEY_F9"]). PYmods_RadialMenu_uk_ua_Ukrainian_en_English.zip Edited July 12, 2020 by beb @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted July 12, 2020 Author Share Posted July 12, 2020 5 часов назад, beb сказал: @Polyacov_Yury, это если у них получится что-то действительно универсальное, и в тоже время гибкое, настраиваемое под индивидуальные предпочтения, во что верится с трудом. Не знаю. Лично я поглядел и что-то не увидел у них того, что ещё не предлагают 95% конфигов под радиалку (за исключением обкладывания цели матюками, конечно). 1 @ Quote Link to comment Short link Share on other sites More sharing options...
EngineExt Posted August 7, 2020 Share Posted August 7, 2020 (edited) Здравствуйте многоуважаемый. ВГ высрала свою радиалку, поменяв всё, а у игроков эта шляпа вызывает только дискомфорт. Будет ли дальше поддержка этого мода? Возможно он единственное спасение от гомункула что сотворила ВГ. Edited August 7, 2020 by EngineExt @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted August 8, 2020 Author Share Posted August 8, 2020 15 часов назад, EngineExt сказал: Здравствуйте многоуважаемый. ВГ высрала свою радиалку, поменяв всё, а у игроков эта шляпа вызывает только дискомфорт. Будет ли дальше поддержка этого мода? Возможно он единственное спасение от гомункула что сотворила ВГ. Там не только внешне гомункул, но и внутренне. Так что ситуация примерно как с CamoSelector'ом. Напомню, https://boosty.to/polyacov_yury и https://patreon.com/polyacov_yury - способы отвлечь меня от работы на работе в пользу работы над модиками. Потому как иначе получается, что на жизнь едва хватает. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
beb Posted August 8, 2020 Share Posted August 8, 2020 @Polyacov_Yury , скажите, а нельзя ли сделать упрощенную версию, типа RadialMenuMini, которая бы по сути не затрагивала стандартное клиентское меню, а только лишь реализовывала функцию добавления отсутствующих в нем команд "hotkeyOnly": [] // команды, которые в Розе вы не увидите, но будут доступны по хоткею Мне кажется, соответствующий код мини-меню будет гораздо проще и компактнее полного, и в тоже время такой мод может быть востребованным. В текущей реализации мода мой рабочий конфиг: { "default": {}, "hotkeyOnly": [ { "title": "Spotted", "icon": "Helpme", "text": "Spotted at {ownPos}", "chatMode": "Team", "ping": "{ownPos}", "hotKey": ["KEY_F9"] }, { "title": "Attack", "icon": "Support", "text": "Attention to {viewPos}", "chatMode": "Team", "ping": "{viewPos}", "hotKey": ["KEY_F10"] } ] } @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted August 8, 2020 Author Share Posted August 8, 2020 Ну, насчёт Attention - есть кнопка Т в стандартном клиенте. Про Spotted интереснее, конечно. Хотя, если так подумать, на Spotted моды есть. Ну и концепции квадратов в игре больше нет, так что тыкать на себя при засвете довольно бессмысленно. @ Quote Link to comment Short link Share on other sites More sharing options...
Иван Алексеевич Posted August 31, 2021 Share Posted August 31, 2021 @Polyacov_Yury 01.12.2016 в 16:27, Polyacov_Yury сказал: Да понял я, понял. Выкладываю. Настраиваемое боевое радиальное меню команд Модификация - это возрождение всем известного мода от locastan, какое-то время поддерживаемого сначала tehHedger, потом - TRJ_VoRoN. Позволяет кастомизировать пункты радиального меню, добавляя к ним отправку сообщения в чат, клика по квадрату(ам) на миникарте (в том числе - по квадрату вашего местонахождения и/или направления вашего взгляда) и назначать для них комбинации горячих клавиш. Стандартные команды по F2-F8 продолжают работать. Автор не несет ответственности за написанное в конфигах и/или за последствия использования модификации (бан за флуд/мат/оскорбления). А то токсинов понапишут, а Юра виноват :P Настройка Показать содержимое При выборе самого первого скина в настройках (или установке 0 в selectedConfig) все команды в радиальном меню будут стандартными, но мод добавит отправку сообщения "Перезаряжаюсь!" по клавише С. Основной конфиг Показать содержимое { // Глобальный триггер. "enabled": true, // задержка между отправкой сообщения в чат (в мс) "chatDelay": 550, // задержка между нажатием хоткея и отправкой команды в чат, а также между хоткеями (в мс) "hotDelay": 350, // клавиша для отображения альтернативного меню (специфического для карты) "mapMenu_Key": ["KEY_LALT"], // выбранный скин. По умолчанию - мой ^_^ "selectedConfig": 11 } Создание скина Показать содержимое Конфиг состоит из нескольких похожих опциональных секций. Их типы: "TankMenu": {}, // стандартное меню, если не указано для типа танка "lightTankMenu": {}, // меню по типу танка "mediumTankMenu": {}, "heavyTankMenu": {}, "AT-SPGMenu": {}, "SPGMenu": {}, "tankSpecific": {}, // тут можно задать индивидуальные настройки для танка/группы танков "Map_default": {}, // стандартное альтернативное меню "Map_mapname": {}, // меню, появляющееся вместо альтернативного на определенной карте "hotkeyOnly": [] // команды, которые в Розе вы не увидите, но будут доступны по хоткею Во всех секциях, кроме hotkeyOnly и tankSpecific (о второй ниже), добавляются три опциональные секции: "default": [], // прицел ни на кого не наведен "ally": [], // прицел наведен на союзника "enemy": [] // прицел наведен на противника В секциях, тип которых - [], добавляются собственно команды. В секциях кроме hotkeyOnly отобразятся в розе только первые 6 команд. Однако, по хоткею доступны все команды. Структура команды: { "title": "Так точно!", // название команды, отображаемое в радиальном меню. "icon": "Attack", // Иконка. "text": "{randPart}", // текст сообщения. Поддерживаются макросы. "chatMode": "All", // Режим чата: Squad, Team, All (третий отправляет в командный чат, если бой не тренировочный) "command": "POSITIVE", // можно отправить встроенную в клиент команду. "ping": "A2 B4 {ownPos}", // список квадратов для прокликивания. разделяется пробелом. {ownPos} - своя позиция, {viewPos} - куда смотрит камера. "variants": [ "text1", // варианты подстановки вместо макроса randPart. "text2", "text3" ], "sequentChoice": true, // дописываем, если хотим, чтобы сообщения из randPart подставлялись по порядку. Поле опциональное, стандартное значение - false "cooldown": 1.1, // антиспам-задержка между отправками этой команды в секундах. стандартное значение - 1.1 "hotKey": ["KEY_LALT", "KEY_2"], // задание комбинации клавиш. можно прописывать так: [["KEY_LALT", "KEY_RALT"], "KEY_8"] (порядок не важен). Тогда действие сработает, если прожат левый или правый альт и 8. "inPostmortem": False, // Команда сработает, даже если танк игрока мертв. } В команде все поля опциональны. Макросы для поля text и подстановок в variants: {name} - ник цели или ваш ник, если цели нет {vehicle} - название танка цели или вашего танка {clan} - аббревиатура клана цели или вашего танка {randPart} - подстановка рандомного или следующего текста из variants {viewPos} - квадрат, в который смотрит камера {ownPos} - квадрат местонахождения вашего танка {reload} - оставшееся время перезарядки {ammo} - количество снарядов в барабане {ownVehicle} - название вашего танка Особо выскажусь насчет reload и ammo. В большинстве случаев достаточно в команде написать "command": "RELOADINGGUN", и эти значения будут в стандартном сообщении при надобности. Иконки | Встроенные команды // значения: Attack | ATTACK // В атаку! Backtobase | BACKTOBASE // Защищайте базу! Yes | POSITIVE // Так точно! No | NEGATIVE // Никак нет! Helpme| HELPME // Нужна помощь! Reload | RELOADINGGUN // Перезаряжаюсь! Followme | FOLLOWME // За мной! Turnback | TURNBACK // Назад! Helpmeex | HELPMEEX // Помоги! Support | SUPPORTMEWITHFIRE // Поддержите огнем! AttackSPG | ATTACKENEMY // Атакую Stop | STOP // Стой! Насчет tankSpecific. tankSpecific: { "имя_танка1": {}, // настройка идентична таким секциям, как TankMenu "имя_группы1": {}, "имя_танка2": "имя_танка1", // имя_танка1 обязано присутствовать в конфиге "имя_танка3": "имя_группы1" } P.S. Если команда пустая, то есть выглядит так: "default": [ {"title": "some_command"}, // не пустая {}, // вот так выглядит пустая {"icon": "Stop"} // тоже не пустая ] то вместо нее подхватится стандартная. Этим можно воспользоваться для уменьшения занимаемого места в конфиге. Скачать Показать содержимое ЯндексДиск GoogleDrive Список изменений Показать содержимое Ссылка на GitHub (там всегда свежее) 12.07.2018 Ядро: обновлён код, отвечающий за хранение настроек горячих клавиш. Мелкое исправление мелкой ошибки. 10.07.2018 Большой рефакторинг кода. 04.12.2017 Исправлена ошибка, возникшая при скоростном ремонте ошибки, исправленной вчера. 03.12.2017 Команды по хоткею больше не отправляются после гибели танка игрока. Можно отключить, написав в конфиге команды "inPostmortem": True. 29.11.2017 Исправлена ошибка, возникшая при обновлении Ядра. 15.11.2017 Обновление Ядра до версии 2.4.0. 28.10.2017 Аналитика отправляет дату компиляции скрипта. 26.10.2017 Исправление под многобашенность. 21.09.2017 Обнаружена и исправлена ошибка обработки оторванных башен. 04.09.2017 Исправлена ошибка в новом режиме боев. 13.08.2017 Исправлен редкий баг при определении танка игрока. 2.1.2 (18.06.2017) Новая версия Ядра. 2.1.1 (02.03.2017) Переезд в .wotmod-пакет. 2.1.0 (13.12.2016) Переход на modsCore 2.0 Исправлена обработка hotkeyOnly. 08.12.2016 Убрано сообщение в сервисном канале. Галочка для его убирания заменена на надпись "Специально для ...". Исправлена блокировка клика по миникарте при отправке перед ним сообщения в чат. Мелкие правки моего конфига. 04.12.2016 Добавлен конфиг от Ogrebay. Мелкие правки логики. 01.12.2016 Официальный релиз. Добавлена секция tankSpecific. Мелкие правки логики. Запилена куча конфигов. 2.0.0 (26.11.2016) Первый релиз. Спасибки Показать содержимое Авторам мода - за старые исходники :) Команде wotspeak.ru - за новый модуль оперативной памяти :З Здрасти Юрий! У меня большая просьба, Перелазил в гугле, яндексе, яху, кореанрандом, ютуб и т.д, ответа нет нигде! Только краткие описание.. ссылки..наброски..и опять ссылки на краткие пособия! Вопрос к вам, у вас есть возможность, показать в видео как адаптировать этот мод под текущий патч! Читать всякие краткие пособия я не собираюсь, мне надо посмотреть само видео как адаптировать мод к патчу! (увидеть картинку с надписью и увидеть просто надпись! что больше запомнится? Конечно картинка с надписью чем просто надпись, вот у меня так память работает, увижу..! больше запомню чем просто почитаю, вот по этому и прошу видеотутор про адаптацию), программы для редактирования, декомпиляции, для работы с флешами и т.д это всё есть у меня и не большое представление как с ними работать есть! и за пк я сижу уже с 93 года! (пару фраз я то отредактировал в файле ingame_help.mo,такие как захват, помогу, спасибо, слушаюсь капитан, и т.д, но это ведь совсем не то) Интересуюсь именно про расширенную розу команд! Есть такая возможность? @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted August 31, 2021 Author Share Posted August 31, 2021 25 минут назад, Иван Алексеевич сказал: @Polyacov_Yury Здрасти Юрий! У меня большая просьба, Перелазил в гугле, яндексе, яху, кореанрандом, ютуб и т.д, ответа нет нигде! Только краткие описание.. ссылки..наброски..и опять ссылки на краткие пособия! Вопрос к вам, у вас есть возможность, показать в видео как адаптировать этот мод под текущий патч! Читать всякие краткие пособия я не собираюсь, мне надо посмотреть само видео как адаптировать мод к патчу! (увидеть картинку с надписью и увидеть просто надпись! что больше запомнится? Конечно картинка с надписью чем просто надпись, вот у меня так память работает, увижу..! больше запомню чем просто почитаю, вот по этому и прошу видеотутор про адаптацию), программы для редактирования, декомпиляции, для работы с флешами и т.д это всё есть у меня и не большое представление как с ними работать есть! и за пк я сижу уже с 93 года! (пару фраз я то отредактировал в файле ingame_help.mo,такие как захват, помогу, спасибо, слушаюсь капитан, и т.д, но это ведь совсем не то) Интересуюсь именно про расширенную розу команд! Есть такая возможность? Обычно видеогайд нужен по чему-то готовому. Условно - "как я рисовал вот этот арт с понями, рисуйте свои похожим образом". Так вот. Чтобы снять гайд о том, как починить мод, мне нужно починить мод. Суть проблемы в том, что его, по факту, надо не починить, а процентов на 80 с нуля переписать, поскольку ВГ переработали код, на котором мод основан. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.