Jump to content
Korean Random

Внутриигровой браузер открытие локальной страницы


MoD

Recommended Posts

У кого-то получалось открыть в браузере локальный хтмл файлик?

Вообще пытаюсь решить задачу - накидать достаточно сложный интерфейс, на флеше делать облом, пытаюсь найти решение, как обойтись без флеша.

Edited by MoD
  • Upvote 2
Link to comment
Short link
Share on other sites

@MoD если ты про отображение своей HTML странички ЧИСТО В АНГАРЕ - то proof of work есть у @spoter в его ядре. На счёт боя тем более.

А вот на счёт Coherent UI - тут вообще не понятно как с ним работать. Единственное что знаю, то что к примеру AmmunitionPanel в ангаре (либо в бою?) написан на CoherentUI, а не Флеше

Edited by Kurzdor
Link to comment
Short link
Share on other sites

44 minutes ago, Kurzdor said:

@MoD если ты про отображение своей HTML странички ЧИСТО В АНГАРЕ - то proof of work есть у @spoter в его ядре. На счёт боя тем более.

А вот на счёт Coherent UI - тут вообще не понятно как с ним работать. Единственное что знаю, то что к примеру AmmunitionPanel в ангаре (либо в бою?) написан на CoherentUI, а не Флеше

Спасибо. А можно меня носом ткнуть в этот PoC от Спотера?

ЗЫ Я когда-то в 18м году делал мод, который такую страницу отображал, но такой метод уже не работает.

 

ЗЗЫ Когерент - курю по чуть-чуть, там реально на нём дохрена написано уже, в res/gui.pkg там можно найти папку в которой километры окошек лежат.

Вообще очень вероятно, что скорее всего на когеренте и буду делать, он вроде простой как угол дома. Ну а на форум - выложу акакой-то простой пример

Link to comment
Short link
Share on other sites

@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 by Kurzdor
  • Upvote 1
Link to comment
Short link
Share on other sites

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-ом.

Спасибо

Хм, странно, через свой сервак на локалхосте я пробовал оно не работало. Но попробую со спотеровским модом

Link to comment
Short link
Share on other sites

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

Link to comment
Short link
Share on other sites

@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())

 

Link to comment
Short link
Share on other sites

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 by MoD
Link to comment
Short link
Share on other sites

12 minutes ago, Kurzdor said:

@MoD просто посмотри что отдаёт R.views.battle.battle_notifier.BattleNotifierView().
Скорее всего что str

Там инстанс DynAccessor, c магическкой константой, и всё это радостно уходит сразу в нативный код из питона

Link to comment
Short link
Share on other sites

  • 2 months later...
  • 1 year later...

Я тут чего то решил потыкаться в браузер, 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

 

image.png

  • Upvote 3
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...