eug.ramires 40 Posted October 6, 2023 Подскажите! Решил посчитать отношение процента побед на конкретной технике к проценту побед на аккаунте прописал в конфиге такой формулой: <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
ktulho 5,793 #537425 Posted October 6, 2023 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
eug.ramires 40 #537426 Posted October 6, 2023 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 5,793 #537427 Posted October 6, 2023 (edited) @eug.ramires Прикрепите конфиг Edited October 6, 2023 by ktulho Share this post Link to post Short link Share on other sites
Jack_ppc 77 #537429 Posted October 6, 2023 @ktulho где-то уже было такое - эти арифметические макросы все равно выдают ошибку, что нет одного аргумента. Парсер как-будто пропускает эту проверку {{mystat.winrate?{{py:div({{v.winrate}}, {{mystat.winrate}})%0.2f~}}}} Share this post Link to post Short link Share on other sites
eug.ramires 40 #537430 Posted October 6, 2023 1 час назад, ktulho сказал: @eug.ramires Прикрепите конфиг statVehicle.xc Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,181 #537431 Posted October 6, 2023 Если макрос может возвращать пусто, значит нужно дописывать дефолтную подстановку 0 Share this post Link to post Short link Share on other sites
ktulho 5,793 #537434 Posted October 7, 2023 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
steaxch 356 #537437 Posted October 7, 2023 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
ktulho 5,793 #537439 Posted October 7, 2023 @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" }, 1 Share this post Link to post Short link Share on other sites
eug.ramires 40 #537442 Posted October 7, 2023 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