Jump to content
Korean Random
eug.ramires

О работе макроса {{py:div(a, b)}}

Recommended Posts

Подскажите! Решил посчитать отношение процента побед на конкретной технике к проценту побед на аккаунте прописал в конфиге

такой формулой:

<font face='$TitleFont' size='17' color='{{v.c_winrate}}'>{{{{py:div({{v.winrate}}, {{mystat.winrate}})}}%0.2f~}}

Выражение работает значение отражается в ангаре, но при этом в логе XVM появляется ошибка

2023-10-06 16:15:10: [ERROR] Traceback (most recent call last):
  File "res_mods/mods/xfw_packages\xvm_pymacro\python\__init__.py", line 157, in process
    return (func(), deterministic)
  File "res_mods/mods/xfw_packages\xvm_pymacro\python\__init__.py", line 123, in <lambda>
    return (lambda: func(*args), deterministic)
TypeError: math_div() takes exactly 2 arguments (1 given)
arg='div(43.362831858407, )'

Что не так? Что значит эта ошибка в логе?

Прилагаю лог

xvm.log

Share this post


Link to post

Short link
Share on other sites
4 часа назад, eug.ramires сказал:

Что не так? Что значит эта ошибка в логе?

 

4 часа назад, eug.ramires сказал:

TypeError: math_div() takes exactly 2 arguments (1 given)

arg='div(43.362831858407, )'

Ошибка означает, что макросу {{py:div(a, b)}}, передан один аргумент, а не два. В данном случае макрос {{mystat.winrate}} вернул пусто. Чтобы избежать данной ошибки, необходимо добавить проверку.

<font face='$TitleFont' size='17' color='{{v.c_winrate}}'>{{mystat.winrate?{{py:div({{v.winrate}}, {{mystat.winrate}})%0.2f~}}}}

 

Share this post


Link to post

Short link
Share on other sites
49 минут назад, ktulho сказал:

 

Ошибка означает, что макросу {{py:div(a, b)}}, передан один аргумент, а не два. В данном случае макрос {{mystat.winrate}} вернул пусто. Чтобы избежать данной ошибки, необходимо добавить проверку.


<font face='$TitleFont' size='17' color='{{v.c_winrate}}'>{{mystat.winrate?{{py:div({{v.winrate}}, {{mystat.winrate}})%0.2f~}}}}

 

Попробывал с этим выражением все равно в логе ошибка

2023-10-06 21:21:35: [ERROR] Traceback (most recent call last):
  File "res_mods/mods/xfw_packages\xvm_pymacro\python\__init__.py", line 157, in process
    return (func(), deterministic)
  File "res_mods/mods/xfw_packages\xvm_pymacro\python\__init__.py", line 123, in <lambda>
    return (lambda: func(*args), deterministic)
TypeError: math_div() takes exactly 2 arguments (1 given)
arg='div(45.23809523809524, )'

xvm.log

Share this post


Link to post

Short link
Share on other sites

@ktulho где-то уже было такое - эти арифметические макросы все равно выдают ошибку, что нет одного аргумента. Парсер как-будто пропускает эту проверку 

{{mystat.winrate?{{py:div({{v.winrate}}, {{mystat.winrate}})%0.2f~}}}}

Share this post


Link to post

Short link
Share on other sites

Если макрос может возвращать пусто, значит нужно дописывать дефолтную подстановку 0

Share this post


Link to post

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

@ktulho где-то уже было такое - эти арифметические макросы все равно выдают ошибку, что нет одного аргумента. Парсер как-будто пропускает эту проверку 


{{mystat.winrate?{{py:div({{v.winrate}}, {{mystat.winrate}})%0.2f~}}}}

Точно, я же и писал. https://kr.cm/f/t/67803/c/526664/

@eug.ramires Тогда можно попробовать так:

<font face='$TitleFont' size='17' color='{{v.c_winrate}}'>{{py:div({{mystat.winrate?{{v.winrate?{{v.winrate}}|0}}|0}}, {{mystat.winrate?{{mystat.winrate}}|1}})%0.2f~}}</font>

Если какой-то из макросов {{v.winrate}}, {{mystat.winrate}} возвращает пусто, то вся конструкция возвратит 0.

Share this post


Link to post

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

Точно, я же и писал. https://kr.cm/f/t/67803/c/526664/

 

 

 

@ktulho  я тогда забил на это потом в танках перерыв делал, сейчас башка не соображает, как в мою конструкцию эти 0 и 1 добавить, помоги

 

// Уровень полевой модернизации
{"enabled": true, "x": 133, "y": 19, "layer": "normal", "width": 24, "height": 24, "src": "{{v.levelPostProgress?xvm://res/TPblHbl4/modernization/number_{{v.level=6?{{v.levelPostProgress=5?max|{{v.levelPostProgress}}}}|{{v.level={{py:sum({{v.levelPostProgress}},2)}}?max|{{v.levelPostProgress}}}}}}}}.png" },

 

Share this post


Link to post

Short link
Share on other sites

@steaxch наверное так:

// Уровень полевой модернизации
{"enabled": true, "x": 133, "y": 19, "layer": "normal", "width": 24, "height": 24, "src": "{{v.levelPostProgress?xvm://res/TPblHbl4/modernization/number_{{v.level=6?{{v.levelPostProgress=5?max|{{v.levelPostProgress}}}}|{{v.level={{py:sum({{v.levelPostProgress?v.levelPostProgress|20}},2)}}?max|{{v.levelPostProgress}}}}}}}}.png" },

 

  • Upvote 1

Share this post


Link to post

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

Точно, я же и писал. https://kr.cm/f/t/67803/c/526664/

@eug.ramires Тогда можно попробовать так:


<font face='$TitleFont' size='17' color='{{v.c_winrate}}'>{{py:div({{mystat.winrate?{{v.winrate?{{v.winrate}}|0}}|0}}, {{mystat.winrate?{{mystat.winrate}}|1}})%0.2f~}}</font>

Если какой-то из макросов {{v.winrate}}, {{mystat.winrate}} возвращает пусто, то вся конструкция возвратит 0.

Сыграл пару боев лог чистый ошибка исчезла. Спасибо!

Share this post


Link to post

Short link
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...