Jump to content
Korean Random
AntonVK

[1.21.0.x] Цифровые часы, аналоговые часы и калькулятор в ангаре (с конфигом)

Recommended Posts

В этом обновлении опять что-то сломалось, у меня не применяется конфиг, хотя часы с калькулятором работают.

 

Также ничего не пишется в python.log

 

Update: понял, поменялись пути

 

Update2: как временное решение,

 

скопировать директорию  (если игра установлена в C:\Games\World_of_Tanks ):

 

C:\Games\World_of_Tanks\mods\configs\AntonVK

 

в

 

C:\Games\World_of_Tanks\win32\mods\configs\AntonVK

 

В win32 директории mods\configs нет, поэтому нужно создать

 

В ближайшее время я исправлю мод.

Edited by AntonVK
  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

@AntonVK как вариант, использовать симлинки из старого пути в новые папки win32/win64

Share this post


Link to post

Short link
Share on other sites

А не проще ли точку в начале пути в скрипте мода к файлу конфига добавить например так: cfg_file = '../mods/configs/AntonVK/configHangarClock.xml'   и все будет правильно работать.

Хотя я не спец, а просто как вариант... Заранее прошу не пинать.

У меня и так пока все работает! в 32 директории ничего не создавал, конфиг по старому пути \World_of_Tanks\mods\configs\***

вот наверное где-то здесь надо исправить:

 def py_getWoTPath(self):
        __WoT__ = os.path.dirname(os.path.abspath(__file__))
        __WoT__ = __WoT__[0:__WoT__.rfind('scripts')]
        return __WoT__

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites
8 hours ago, Nowik1971 said:

У меня часы работают с конфигом по старому пути... и 1,5 версия и 1,6

 

странно. По идее не должно.

 

3 hours ago, niZMo said:

@AntonVK как вариант, использовать симлинки из старого пути в новые папки win32/win64

 

это предполагает дополнительное вмешательство со стороны пользователя. Пусть мод делает правильно самостоятельно.

 

2 hours ago, Nowik1971 said:

А не проще ли точку в начале пути в скрипте мода к файлу конфига добавить например так: cfg_file = '../mods/configs/AntonVK/configHangarClock.xml'   и все будет правильно работать.

Хотя я не спец, а просто как вариант... Заранее прошу не пинать.

У меня и так пока все работает! в 32 директории ничего не создавал, конфиг по старому пути \World_of_Tanks\mods\configs\***

вот наверное где-то здесь надо исправить:

 def py_getWoTPath(self):
        __WoT__ = os.path.dirname(os.path.abspath(__file__))
        __WoT__ = __WoT__[0:__WoT__.rfind('scripts')]
        return __WoT__

 

Можно, наверное, и с точкой. Когда создали пакеты модов у меня не получалось путь указать таким образом, поэтому я определял местоположение текущей директории в питоновском скрипте. 

 

Да, в этой части кода и исправлю. Обрежу правую часть с win(32|64). Можно и во флеше сделать, но в питоне проще. на выходных обновлю, может раньше, если получится.

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites
Цитата

скопировать директорию  (если игра установлена в C:\Games\World_of_Tanks ):

C:\Games\World_of_Tanks\mods\configs\AntonVK

в

C:\Games\World_of_Tanks\win32\mods\configs\AntonVK

уже и это не работает,скорее всего из за переименования World_of_Tanks в World_of_Tanks_RU.Но сам калькулятор работает без возможности перемещения(в правом верхнем углу под свободкой).

Share this post


Link to post

Short link
Share on other sites
1 час назад, Slava7572 сказал:

уже и это не работает,скорее всего из за переименования World_of_Tanks в World_of_Tanks_RU.Но сам калькулятор работает без возможности перемещения(в правом верхнем углу под свободкой).

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

Калькулем не пользуюсь, часы работают!

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites
1 час назад, Nowik1971 сказал:

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

Калькулем не пользуюсь, часы работают!

и у меня работает,просто расположен бог знает где,часы не юзаю....

хотел сам исправить,но там какая то странная конструкция,почему жестко не прописать путь,а его сначала определять,он же не меняется:amazed:Это проще и у всех работает.Я правда тот еще знаток:veryhappy:

Share this post


Link to post

Short link
Share on other sites
08.12.2019 в 21:27, Slava7572 сказал:

почему жестко не прописать путь,а его сначала определять,он же не меняется

эмм, это не меняется у тех, кто по-дефолту ставит все приложухи и игры (OMG!)

Share this post


Link to post

Short link
Share on other sites
6 часов назад, niZMo сказал:

эмм, это не меняется у тех, кто по-дефолту ставит все приложухи и игры (OMG!)

внутри клиента не меняется..как правило,по крайней мере очень редко.В других скриптах именно так.

Share this post


Link to post

Short link
Share on other sites

Решил вот такие аналоговые часики сделать. Вроде работает, перенесу в клиент.

 

Untitled.thumb.jpg.b6f919ecb79beb9842d2e36d11e0667b.jpg

 

P.S. Все ленюсь подправить переопределенеи путей к конфигам, там одна строчка в скрипте питона

 

__WoT__ = re.sub(r"(win\d*)([\\]*)", "", __WoT__)

 

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

@AntonVK прикольно. Продолжай, пожалуйста, работу.

Сам я выбрал этот вариант: плюсы - компактность и аутентичность.

image.png.a5f1579916844118c62209b6021fe3e2.png

Аналоговые подойдут тем, у кого разрешение экрана позволяет размещать такие элементы. Лично мне приходится играть иногда на буке 720р.

Edited by niZMo
запяточка

Share this post


Link to post

Short link
Share on other sites
1 minute ago, niZMo said:

@AntonVK прикольно. Продолжай, пожалуйста работу.

Сам я выбрал этот вариант: плюсы - компактность и аутентичность.

image.png.a5f1579916844118c62209b6021fe3e2.png

Аналоговые подойдут тем, у кого разрешение экрана позволяет размещать такие элементы. Лично мне приходится играть иногда на буке 720р.

 

Да, с аналоговыми особо не разрисуешься, ну у меня будут занимать 128х128 пикселей, это не особо много, размер калькулятора, например, 260х284

Share this post


Link to post

Short link
Share on other sites
11 часов назад, AntonVK сказал:

Все ленюсь подправить переопределенеи путей к конфигам, там одна строчка в скрипте питона

Старый скрипт в принципе работает,но я все же переписал,пока не тестил,если что закину сюда потом:Default:

П.С:не проканало,не совсем понял трогать ли первую строку там,но в обоих случаях вот что:

2019-12-19 17:48:47.067: ERROR: Traceback (most recent call last):


2019-12-19 17:48:47.067: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.068: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.319: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at LoginPageUI/__setProp_bgModeButton_LoginPage_bgModeButton_0()
    at LoginPageUI instance constructor()
    at login_fla::MainTimeline instance constructor()
2019-12-19 17:48:47.342: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.342: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.342: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.346: INFO: [root] [XFW/Actionscript] getMods: found: {'xvm_lobby': '../../../res_mods/mods/xfw_packages/xvm_lobby/as_lobby/xvm_lobby.swf'}
2019-12-19 17:48:47.347: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.347: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.347: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.348: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.348: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.348: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.349: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.349: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.349: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.350: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.350: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.351: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.353: ERROR: rudimentaryPopovers: must not load into login screen!
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()

Edited by Slava7572

Share this post


Link to post

Short link
Share on other sites
2 hours ago, Slava7572 said:

Старый скрипт в принципе работает,но я все же переписал,пока не тестил,если что закину сюда потом:Default:

П.С:не проканало,не совсем понял трогать ли первую строку там,но в обоих случаях вот что:

 

  Reveal hidden contents

2019-12-19 17:48:47.067: ERROR: Traceback (most recent call last):


2019-12-19 17:48:47.067: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.068: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.319: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at LoginPageUI/__setProp_bgModeButton_LoginPage_bgModeButton_0()
    at LoginPageUI instance constructor()
    at login_fla::MainTimeline instance constructor()
2019-12-19 17:48:47.342: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.342: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.342: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.346: INFO: [root] [XFW/Actionscript] getMods: found: {'xvm_lobby': '../../../res_mods/mods/xfw_packages/xvm_lobby/as_lobby/xvm_lobby.swf'}
2019-12-19 17:48:47.347: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.347: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.347: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.348: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.348: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.348: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.349: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.349: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.349: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.350: ERROR: Traceback (most recent call last):
2019-12-19 17:48:47.350: ERROR:   File "mod_hangarCalculatorButton", line 38, in py_getWoTPath
2019-12-19 17:48:47.351: ERROR: NameError: global name 're' is not defined
2019-12-19 17:48:47.353: ERROR: rudimentaryPopovers: must not load into login screen!
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()
2019-12-19 17:48:47.357: ERROR: TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at hCalculatorButton/initConfig()
    at hCalculatorButton/initCalculatorButton()
    at hCalculatorButton/frame1()
    at method id: 134()
    at scaleform.clik.core::UIComponent/draw()
    at scaleform.clik.core::UIComponent/validateNow()
    at set scaleform.clik.controls::Button/selected()
    at net.wg.gui.login.impl::LoginPage/as_showLoginVideo()
    at net.wg.infrastructure.base.meta.impl::LoaderManagerMeta/viewLoadedS()
    at net.wg.infrastructure.managers.impl::LoaderManager/onSWFLoaded()

 

 

Я поправлю все же :) просто никак руки не доходили.

 

вначале нужно импортировать библиотеку для работы с регулярными выражениями

 

import re

 

Ссори, с телефона, не очень удобно подробнее писать.

 

а так там просто удаляется win32|64 из пути.

 

если любопытно, ты можешь читать описание к функциям на оф. Документации к питону, ну и много русскоязычных ресурсов с описанием.

Share this post


Link to post

Short link
Share on other sites
22 минуты назад, AntonVK сказал:

import re

во,теперь ясно,я просто вообще зеленый в этих делах,на кошках тренируюсь))

П.С: почему то орион упорно создает лишний обратный слеш в (win\d*) при компиляции,хотя в .ру файле его нет,несколько раз пробовал.Видимо из за нее ошибку выдает 

2019-12-19 18:36:16.446: ERROR: Traceback (most recent call last):
2019-12-19 18:36:16.446: ERROR:   File "mod_hangarCalculatorButton", line 40, in py_getWoTPath
2019-12-19 18:36:16.446: ERROR:   File "scripts/common/Lib/re.py", line 151, in sub
2019-12-19 18:36:16.446: ERROR:   File "scripts/common/Lib/re.py", line 244, in _compile
2019-12-19 18:36:16.446: ERROR: sre_constants.error: unexpected end of regular expression

Ладно,не буду голову морочить,старая версия работает...пока вг опять не решит директорию поменять))

 

Edited by Slava7572

Share this post


Link to post

Short link
Share on other sites

Обовлено до текущей версии игры. Обновления в шапке.

 

Исправил проблему определения путей к конфигурационным файлам в скрипте Python, из-за которой путь к конфигурационным файлам \World_of_Tanks\mods\configs не определялся. Теперь снова можно помещать конфиги в эту директорию.

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

Можно ли как-то в часах убрать зазоры/пробелы в двоеточиях? Нет ли (нельзя ли сделать) для этого какого нибудь простого формата типа <format>{HH}:{mm}:{ss}</format> (как в дате) вместо отдельных <formatHrs>{HH}</formatHrs> | <formatMin>{mm}</formatMin> | <formatSec>{ss}</formatSec>?

Share this post


Link to post

Short link
Share on other sites
On 5/11/2020 at 11:06 PM, beb said:

Можно ли как-то в часах убрать зазоры/пробелы в двоеточиях? Нет ли (нельзя ли сделать) для этого какого нибудь простого формата типа <format>{HH}:{mm}:{ss}</format> (как в дате) вместо отдельных <formatHrs>{HH}</formatHrs> | <formatMin>{mm}</formatMin> | <formatSec>{ss}</formatSec>?

 

К сожалению, этого сделать не получится.

 

<format>{HH}:{mm}:{ss}</format> - так было в самом начале создания мода, пока не появилась возможность расширенного форматирования, выбора шрифта, мигающего разделителя и т.п. Дело в том, что символы у каждого шрифта разные по размерам, в данном случае интересует ширина, у некоторых каждый символ занимает фиксированную позицию, а у некоторых нет. А текст меняется динамически в поле и начинает скакать - смещаться в стороны с каждым новым выводом. Это актуально не для всех шрифтов, но для некоторых выглядит просто отвратительно настолько, что пользоваться такими часами невозможно. В частности для привычного пользователям мода со старых времён  шрифта Micra.

 

Существуют шрифты proportional и monospaced. Micra является proportional, что в случае динамического отображения информации плохо.

 

Подробнее можно почитать здесь, для понимания проблемы:

 

https://blog.usejournal.com/proportional-vs-monospaced-numbers-when-to-use-which-one-in-order-to-avoid-wiggling-labels-e31b1c83e4d0

 

Ну и вот картинка для представления (в случае <format>{HH}:{mm}:{ss}</format> и шрифта Micra вот так начнают смещаться секунды, минуты. )

 

1*5Hy8C28ZA4Scy8evCfSZSA.gif

 

Поэтому каждая выводимая единица времени и разделитель в том числе помещены в отдельное фиксированное текстовое поле, что было делать гораздо более трудозатратно, чем при использовании конструкции <format>{HH}:{mm}:{ss}</format>, так как нужно считать и учитывать размеры всех текстовых полей, а не одного, и выравнивать их относительно экрана.

 

Здесь похожий момент упоминался.

 

https://kr.cm/f/t/13505/c/422305/

Share this post


Link to post

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