Jump to content
Korean Random
goodman

Динамические макросы в Python

Recommended Posts

Возможно, но у меня желание нет. На данный момент, вроде, в ru секторе популярны 3 мода, реализующий данный функционал.

Жаль. Активистов твоего уровня очень мало, night_dragon_on тоже не будет делать, Kotyarko_O пропал куда то, а больше ни кого и не знаю. Честно сказать ты и так на доброй воле многое сделал для нас Громаднейшее спасибо за это. 

Share this post


Link to post

Short link
Share on other sites

 

 

.А вообще сложно допустим адаптировать уже готовый код,но средствами ХВМ?
, не сложно. 

 

ХВМ пользовалось бы популярностью не меньше,чем тот же демедж лог))
, наверняка пользовалось бы большой популярностью.

@Kornet_WA, @Slava7572, переделывать этот мод под XVM нет ни какого смысла. Но если очень хочется, то это не сложно. Заменить такие конструкции:

def new_onBecomePlayer(self):
    old_onBecomePlayer(self)
    stat.battleResultsAvailable.set()
    stat.load()


old_onBecomePlayer = Account.onBecomePlayer
Account.onBecomePlayer = new_onBecomePlayer

на такие:

@registerEvent(Account, 'onBecomePlayer')
def new_onBecomePlayer(self):
    stat.battleResultsAvailable.set()
    stat.load()

Или такие:

def new_onBecomeNonPlayer(self):
    stat.battleResultsAvailable.clear()
    old_onBecomeNonPlayer(self)


old_onBecomeNonPlayer = Account.onBecomeNonPlayer
Account.onBecomeNonPlayer = new_onBecomeNonPlayer

на такие:

@overrideMethod(Account, 'onBecomeNonPlayer')
def new_onBecomeNonPlayer(base, self):
    stat.battleResultsAvailable.clear()
    base(self)

И сделать чтение конфигурационных файлов через XVM (так удобнее). В данном моде, вроде, ни чего больше менять не надо. Если будут вопросы, то задавайте, наверняка кто-нибудь ответит. 

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

 

 

сделать чтение конфигурационных файлов через XVM (так удобнее).

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

def load(self):..        path = '/'.join(['.', 'res_mods', 'configs', 'wotstat'])..

если заменить на

def load(self):..        path = '/'.join(['.', 'res_mods', 'configs', 'xvm', 'wotstat'])

то папка, вроде, должна читаться из конфигс\хвм?

Share this post


Link to post

Short link
Share on other sites

@vlad_cs_sr, я имел ввиду перенести настройки в XVM. То есть добавить в @xvm.xc:

"wotstat": ${"wotstat.xc":"wotstat"},

Добавить в папку со своим конфигом файл wotstat.xc. И перенести туда содержимое файла config.json. В скрипт добавить импорт:

import xvm_main.python.config as config

После этого, в скрипте заменяем такие конструкции:

self.config.get('battleStatPatterns',[])self.config.get('dailyAutoResetHour', 4)и т.д.

на такие

config.get('wotstat/battleStatPatterns',[])config.get('wotstat/dailyAutoResetHour', 4)
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

, не сложно. 

 

, наверняка пользовалось бы большой популярностью.

 

@Kornet_WA, @Slava7572, переделывать этот мод под XVM нет ни какого смысла. Но если очень хочется, то это не сложно. Заменить такие конструкции:

def new_onBecomePlayer(self):    old_onBecomePlayer(self)    stat.battleResultsAvailable.set()    stat.load()old_onBecomePlayer = Account.onBecomePlayerAccount.onBecomePlayer = new_onBecomePlayer

на такие:

@registerEvent(Account, 'onBecomePlayer')def new_onBecomePlayer(self):    stat.battleResultsAvailable.set()    stat.load()

Или такие:

def new_onBecomeNonPlayer(self):    stat.battleResultsAvailable.clear()    old_onBecomeNonPlayer(self)old_onBecomeNonPlayer = Account.onBecomeNonPlayerAccount.onBecomeNonPlayer = new_onBecomeNonPlayer

на такие:

@overrideMethod(Account, 'onBecomeNonPlayer')def new_onBecomeNonPlayer(base, self):    stat.battleResultsAvailable.clear()    base(self)

И сделать чтение конфигурационных файлов через XVM (так удобнее). В данном моде, вроде, ни чего больше менять не надо. Если будут вопросы, то задавайте, наверняка кто-нибудь ответит. 

 

Вы просто лучший)))Обязательно переделаю как время будет.С точки зрения производительности(как я понял) может смысла и нет,но он есть хотя бы потому,что все будет в одном комплексном моде ХВМ,опять же не будет проблем с постоянными обновлениями картохи.

Спасибо!

  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

опять же не будет проблем с постоянными обновлениями картохи
, почему не будет? Такие же проблемы, как и в отдельном моде, будут. 

Share this post


Link to post

Short link
Share on other sites

, почему не будет? Такие же проблемы, как и в отдельном моде, будут. 

Я имею ввиду перекомпил и прочие еженедельные "радости",сейчас правда в этом плане чуть легче,не каждый патч меняют что то кардинально,но все же намного проще исправить .ру файл,чем .рус :)

Share this post


Link to post

Short link
Share on other sites

Хотелось бы конечно и новых плюшек. например размер окна по вертикали, просил полиройда говорил что возможно но так и забиыл. Выбор первой вкладки в окне статистики по умолчанию. Информационные сообщения от ВГ иногда висят под статистикой. Кстати сообщение о предыдущем бое в чат логичнее было бы засунуть  сюда  туда же и фишку на ограничение строк в чате.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

, наверняка пользовалось бы большой популярностью.

@Kornet_WA, @Slava7572, переделывать этот мод под XVM нет ни какого смысла. Но если очень хочется, то это не сложно. Заменить такие конструкции:

def new_onBecomePlayer(self):
    old_onBecomePlayer(self)
    stat.battleResultsAvailable.set()
    stat.load()


old_onBecomePlayer = Account.onBecomePlayer
Account.onBecomePlayer = new_onBecomePlayer

на такие:

@registerEvent(Account, 'onBecomePlayer')
def new_onBecomePlayer(self):
    stat.battleResultsAvailable.set()
    stat.load()

Или такие:

def new_onBecomeNonPlayer(self):
    stat.battleResultsAvailable.clear()
    old_onBecomeNonPlayer(self)


old_onBecomeNonPlayer = Account.onBecomeNonPlayer
Account.onBecomeNonPlayer = new_onBecomeNonPlayer

на такие:

@overrideMethod(Account, 'onBecomeNonPlayer')
def new_onBecomeNonPlayer(base, self):
    stat.battleResultsAvailable.clear()
    base(self)

И сделать чтение конфигурационных файлов через XVM (так удобнее). В данном моде, вроде, ни чего больше менять не надо. Если будут вопросы, то задавайте, наверняка кто-нибудь ответит. 

 

 

 

 

@vlad_cs_sr, я имел ввиду перенести настройки в XVM. То есть добавить в @xvm.xc:

"wotstat": ${"wotstat.xc":"wotstat"},

Добавить в папку со своим конфигом файл wotstat.xc. И перенести туда содержимое файла config.json. В скрипт добавить импорт:

import xvm_main.python.config as config

После этого, в скрипте заменяем такие конструкции:

self.config.get('battleStatPatterns',[])
self.config.get('dailyAutoResetHour', 4)
и т.д.

на такие

config.get('wotstat/battleStatPatterns',[])
config.get('wotstat/dailyAutoResetHour', 4)

В общем, намутил чего-то, и оно не взлетело mod_stat.zip

Зато мод пишет ошибки в журнал xvm.log

Share this post


Link to post

Short link
Share on other sites

 

 

Зато мод пишет ошибки в журнал
, это надо у @sirmax спросить. В py_macro запрещено использовать eval()?

Share this post


Link to post

Short link
Share on other sites

Значит не так просто будет переделать данный мод на py_macro.

Share this post


Link to post

Short link
Share on other sites

С другой стороны, лично для меня, если мод не будет включен в состав дефолта, всё равно, что отдельный устанавливать, что аддон.

Share this post


Link to post

Short link
Share on other sites

@sirmax, а с этим поможешь? 

 

ну или хотя бы какой *.ру отвечает за вывод статистики на вкладке "достижения/техника"?

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites

Я не смотрел, нет времени. Логика отображения в достижениях во флеше, а не в питоне.

Share this post


Link to post

Short link
Share on other sites

 

 

ну или хотя бы какой *.ру отвечает за вывод статистики на вкладке "достижения/техника"?
, а то что выложил  night_dragon_on не помогло?

Share this post


Link to post

Short link
Share on other sites

, а то что выложил  night_dragon_on не помогло?

помогло, очень! 

 

Инфа "осталось побед до" кроме как в ангаре в достижениях нигде больше не выводилась, ее продублировать - 10 строк кода.

Но с макросами статистики вопрос в другом: зачем заново писать код для расчета wn8 и Eff если есть готовый в "недрах" хвм и его можно вывести в виджете? вот если макросы не расшариваются для ангара, тогда придется, но тут ведь еще паровозом придется писать код на окраску по значению, по сути "с нуля" создавать эти макросы с динамической окраской...

имхо не настолько я хочу этот виджет, чтобы так заморачиваться (с моим уровнем знаний - задачка на пару недель минимум, да и вряд ли самостоятельно осилю - классический случай когда желание намного опережает возможность)...

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites

 

 

но тут ведь еще паровозом придется писать код на окраску по значению, по сути "с нуля" создавать эти макросы с динамической окраской...
, ну это не потребуется, есть же
├────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│xvm.py (utils.py)           │{{py:xvm.dynamic_color_rating(r, v)}}     │макрос плавного перехода цвета между границами цветов из файла color.xc, r - название секции из
│                            │                                          │файла color.xc, v - значение. Пример: {{py:xvm.dynamic_color_rating('x', {{xwn8}})}}
├────────────────────────────┼──────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────── 

Share this post


Link to post

Short link
Share on other sites

, ну это не потребуется, есть же

├────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│xvm.py (utils.py)           │{{py:xvm.dynamic_color_rating(r, v)}}     │макрос плавного перехода цвета между границами цветов из файла color.xc, r - название секции из
│                            │                                          │файла color.xc, v - значение. Пример: {{py:xvm.dynamic_color_rating('x', {{xwn8}})}}
├────────────────────────────┼──────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────── 

тут "плавный" переход, а надо "резкий", 1430 - желтый, 1431 - зеленый (пример, цифры с потолка)

Share this post


Link to post

Short link
Share on other sites

 

 

тут "плавный" переход, а надо "резкий", 1430 - желтый, 1431 - зеленый (пример, цифры с потолка)
, да ты даже не заметишь разницы), Если сделаешь макросы статистики, то я добавлю макрос "резкого" перехода.)

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