MoD Posted July 3, 2022 Share Posted July 3, 2022 (edited) У кого-то получалось открыть в браузере локальный хтмл файлик? Вообще пытаюсь решить задачу - накидать достаточно сложный интерфейс, на флеше делать облом, пытаюсь найти решение, как обойтись без флеша. Edited July 3, 2022 by MoD 2 @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted July 3, 2022 Share Posted July 3, 2022 В эту сторону не копал? 1 @ Quote Link to comment Short link Share on other sites More sharing options...
MoD Posted July 3, 2022 Author Share Posted July 3, 2022 Ёшки, как я мог про это забыть. Это может быть выходом 1 @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted July 3, 2022 Share Posted July 3, 2022 Если накопаешь что-то, напиши о своих находках, плиз) Оч интересная тема. @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted July 4, 2022 Share Posted July 4, 2022 (edited) @MoD если ты про отображение своей HTML странички ЧИСТО В АНГАРЕ - то proof of work есть у @spoter в его ядре. На счёт боя тем более. А вот на счёт Coherent UI - тут вообще не понятно как с ним работать. Единственное что знаю, то что к примеру AmmunitionPanel в ангаре (либо в бою?) написан на CoherentUI, а не Флеше Edited July 4, 2022 by Kurzdor @ Quote Link to comment Short link Share on other sites More sharing options...
MoD Posted July 4, 2022 Author Share Posted July 4, 2022 44 minutes ago, Kurzdor said: @MoD если ты про отображение своей HTML странички ЧИСТО В АНГАРЕ - то proof of work есть у @spoter в его ядре. На счёт боя тем более. А вот на счёт Coherent UI - тут вообще не понятно как с ним работать. Единственное что знаю, то что к примеру AmmunitionPanel в ангаре (либо в бою?) написан на CoherentUI, а не Флеше Спасибо. А можно меня носом ткнуть в этот PoC от Спотера? ЗЫ Я когда-то в 18м году делал мод, который такую страницу отображал, но такой метод уже не работает. ЗЗЫ Когерент - курю по чуть-чуть, там реально на нём дохрена написано уже, в res/gui.pkg там можно найти папку в которой километры окошек лежат. Вообще очень вероятно, что скорее всего на когеренте и буду делать, он вроде простой как угол дома. Ну а на форум - выложу акакой-то простой пример @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted July 4, 2022 Share Posted July 4, 2022 (edited) @MoD меня больше всего интересует как отобразить уже готовый элемент на Coherent)https://github.com/spoter/spoter-mods/tree/master/mod_mods_gui Код под защитой. HTMLь лежит туть https://github.com/spoter/spoter-mods/blob/master/mod_mods_gui/release/i18n/module_settings.html Из того что я понимаю - при запуске клиенте запускается сервер на localhost на порте 31338, который отдаёт статику в виде HTMLки сверху. Ну и плюс отдельное API, которое хэндлит POST запросы. var endPoint = 'http://localhost:31338'; При клике на "Сохранить настройки" делается POST на /save к примеру. Как именно подружить внутриигровой бразуер с localhost-ом не курил. P.S. Вообще, хорошая идея сделать настройщик на веб технологиях. Проще и больше возможностей. Хоть до того что пиши его на React, TypeScript, блэкджеком и девушками. К слову WG пишет свои компоненты на React, судя по коду на React 16.6 + TypeScript как раз. Но проблема этих компонентов, что они с коробки (как и большая часть всего JS) скомпиленный из ES6+ в ES5, обфусцированный и минифицирован webpack-ом. Edited July 4, 2022 by Kurzdor 1 @ Quote Link to comment Short link Share on other sites More sharing options...
MoD Posted July 4, 2022 Author Share Posted July 4, 2022 1 hour ago, Kurzdor said: @MoD меня больше всего интересует как отобразить уже готовый элемент на Coherent)https://github.com/spoter/spoter-mods/tree/master/mod_mods_gui Код под защитой. HTMLь лежит туть https://github.com/spoter/spoter-mods/blob/master/mod_mods_gui/release/i18n/module_settings.html Из того что я понимаю - при запуске клиенте запускается сервер на localhost на порте 31338, который отдаёт статику в виде HTMLки сверху. Ну и плюс отдельное API, которое хэндлит POST запросы. var endPoint = 'http://localhost:31338'; При клике на "Сохранить настройки" делается POST на /save к примеру. Как именно подружить внутриигровой бразуер с localhost-ом не курил. P.S. Вообще, хорошая идея сделать настройщик на веб технологиях. Проще и больше возможностей. Хоть до того что пиши его на React, TypeScript, блэкджеком и девушками. К слову WG пишет свои компоненты на React, судя по коду на React 16.6 + TypeScript как раз. Но проблема этих компонентов, что они с коробки (как и большая часть всего JS) скомпиленный из ES6+ в ES5, обфусцированный и минифицирован webpack-ом. Спасибо Хм, странно, через свой сервак на локалхосте я пробовал оно не работало. Но попробую со спотеровским модом @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted July 4, 2022 Share Posted July 4, 2022 (edited) @MoD не, ну может быть Спотер что-то патчил для этого.@spoter не мог бы подсказать по этому поводу? Edited July 4, 2022 by Kurzdor @ Quote Link to comment Short link Share on other sites More sharing options...
MoD Posted July 4, 2022 Author Share Posted July 4, 2022 Just now, Kurzdor said: @MoD не, ну может быть Спотер что-то патчил для этого хз, поэксперементирую ещё... @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted July 4, 2022 Share Posted July 4, 2022 6 часов назад, Kurzdor сказал: не, ну может быть Спотер что-то патчил для этого. Просто так не заработает. Но подробностей никаких не помню. @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted July 4, 2022 Share Posted July 4, 2022 @StranikS_Scan насколько я читал на корейке, то там есть whitelist доменов. И да, больше ничего не знаю тоже. @ Quote Link to comment Short link Share on other sites More sharing options...
MoD Posted July 4, 2022 Author Share Posted July 4, 2022 9 hours ago, Kurzdor said: К слову WG пишет свои компоненты на React, судя по коду на React 16.6 + TypeScript как раз. Но проблема этих компонентов, что они с коробки (как и большая часть всего JS) скомпиленный из ES6+ в ES5, обфусцированный и минифицирован webpack-ом. Тут как раз пофиг, пока курил эту кашу, там оно так работает: всего-то надо, чтобы подключался <script src="../../../../lib/vendors.js"></script> Это в плане хтмл, остальное оно самое делает. тут внезапно надо понять как объяснить игре, что у неё появились доп ссылки на ресурсы, то, что описано в файле res_map.json и R.views @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted July 4, 2022 Share Posted July 4, 2022 @MoD Ну там лежит React, да. По поводу res_map ты копаешь в не нужные дебри. Это Unbound. Который в калябликах используется на полную. К слову, в кораблях неплохая такая документация по моддингу. Вот тебе пример откуда копать:https://github.com/StranikS-Scan/WorldOfTanks-Decompiled/blob/1ac158b6d8dd7ae64c67d5be6a6cbfe769295216/source/res/scripts/client/gui/impl/battle/battle_notifier/battle_notifier_view.py ViewSettings(R.views.battle.battle_notifier.BattleNotifierView(), ViewFlags.COMPONENT, BattleNotifierViewModel()) @ Quote Link to comment Short link Share on other sites More sharing options...
MoD Posted July 4, 2022 Author Share Posted July 4, 2022 (edited) 9 minutes ago, Kurzdor said: @MoD Ну там лежит React, да. По поводу res_map ты копаешь в не нужные дебри. Это Unbound. Который в калябликах используется на полную. К слову, в кораблях неплохая такая документация по моддингу. Вот тебе пример откуда копать:https://github.com/StranikS-Scan/WorldOfTanks-Decompiled/blob/1ac158b6d8dd7ae64c67d5be6a6cbfe769295216/source/res/scripts/client/gui/impl/battle/battle_notifier/battle_notifier_view.py ViewSettings(R.views.battle.battle_notifier.BattleNotifierView(), ViewFlags.COMPONENT, BattleNotifierViewModel()) Спаисбо, загляну. реакт или не реакт - пофиг. там главное лежит объект "engine" - который и является мостиком между питоном хмтл так вот в том и прикол, что надо пока раскурить, как через R.views подсунуть новые объекты Edited July 4, 2022 by MoD @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted July 5, 2022 Share Posted July 5, 2022 @MoD просто посмотри что отдаёт R.views.battle.battle_notifier.BattleNotifierView(). Скорее всего что str @ Quote Link to comment Short link Share on other sites More sharing options...
MoD Posted July 5, 2022 Author Share Posted July 5, 2022 12 minutes ago, Kurzdor said: @MoD просто посмотри что отдаёт R.views.battle.battle_notifier.BattleNotifierView(). Скорее всего что str Там инстанс DynAccessor, c магическкой константой, и всё это радостно уходит сразу в нативный код из питона @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted September 7, 2022 Share Posted September 7, 2022 Что-нибудь получилось? @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted April 22 Share Posted April 22 Я тут чего то решил потыкаться в браузер, kr открылся У них там Chrome/73.0.3683.75, так что надо билдить сайт под старые браузеры Способ немного незаконный Как я понял, whitelist по url проверяется в нативном BigWorld.createWebView, скорее всего, его можно найти как dll (я не нашел), и наверняка там тупо стрингами хранится список вайтлиста НО, если переходить по сайтам внутри браузера, всё работает. Я в hosts подменил ip для igb-trading-caravan-ru.tanki.su, а он в вайтлисте. По ip хожу на свой сервер, откуда можно уже куда угодно хоть в гугл. К сожалению, я не нашел как выполнить на сайте произвольный JS, чтоб изнутри браузера перейти на другой url. (ну как, нашел, WebBrowser.executeJavascript, но кажется его выпилили: AttributeError: 'WebRender.WebBrowserProvider' object has no attribute 'executeJavascript') В теории, можно в прод пустить используя поддомен, например wotstat.igb-trading-caravan-ru.tanki.su, и в хостс соответственно тоже поддомен, и оно работет, однако редачить пользовательский hosts звучит не очень правильно. Может можно как то подменить dns изнутри игры, но как то я хз как оно в винде, чатгпт говорит нельзя. Если кто то захочет повторить, вот код: from helpers import dependency from adisp import adisp_process from skeletons.gui.game_control import IBrowserController class Demo(): browserCtrl = dependency.descriptor(IBrowserController) @adisp_process def __init__(self): yield self.browserCtrl.load('http://wotstat.igb-trading-caravan-ru.tanki.su') Demo() C:\Windows\System32\drivers\etc\hosts 84.38.183.104 wotstat.igb-trading-caravan-ru.tanki.su 3 @ 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.