Kapany3uk 948 #355069 Posted September 27, 2016 то это может сказаться на производительности (весь бой 10 раз секунду будет обновляться поле) а если вывести перезарядку в отдельное поле + обновление только при получении дамага/выстрела (а уж потом раз в 10 сек) ? Quote Share this post Link to post Short link Share on other sites
ktulho 5,793 #355071 Posted September 27, 2016 а если вывести перезарядку в отдельное поле + обновление только при получении дамага/выстрела (а уж потом раз в 10 сек) ? , так и надо сделать, вопрос только как? P.S. Интересно, если поле пустое, его обновление снижает производительность? Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #355081 Posted September 27, 2016 Снижает, но насколько - сложно сказать. Quote Share this post Link to post Short link Share on other sites
ktulho 5,793 #355083 Posted September 27, 2016 (edited) @sirmax, и еще вопрос, есть возможность проверять пустое поле или нет? И если пустое, то не обновлять? Таким способом можно было бы частично управлять обновлением поля из py_macros. Edited September 27, 2016 by ktulho Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #355155 Posted September 27, 2016 Это все кривая логика. Нужно как-то по-другому делать. Нужны какие-то события из питона. Quote Share this post Link to post Short link Share on other sites
ktulho 5,793 #355156 Posted September 27, 2016 Это все кривая логика. Нужно как-то по-другому делать. Нужны какие-то события из питона. Это было бы намного лучше. Quote Share this post Link to post Short link Share on other sites
post 6 #355259 Posted September 28, 2016 Было бы неплохо, чтоб новые релизные файлы не затирали измененные. Тобишь, если можно - положить их в папочку со своим конфигом. Я намекаю на xvm.py. Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #355261 Posted September 28, 2016 Было бы неплохо, чтоб новые релизные файлы не затирали измененные. Тобишь, если можно - положить их в папочку со своим конфигом. Я намекаю на xvm.py. свои файлы переименуй как хочешь и ничего не будет затираться... Quote Share this post Link to post Short link Share on other sites
post 6 #355277 Posted September 28, 2016 свои файлы переименуй как хочешь и ничего не будет затираться... А можно подробней? Что значит "как хочешь"? За дамаг лог отвечают файла четыре. И что будет если я их все переименую? 1 1 Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #355289 Posted September 28, 2016 А можно подробней? Что значит "как хочешь"? За дамаг лог отвечают файла четыре. И что будет если я их все переименую?в корне папки ру-macro можешь переименовать как угодно, хоть 1, 2, 3 и т.п. В подпапках - если переименуешь, то надо будет код править. Файлы .хс переименовывать не нужно (да и не про них печь)Тебе надо было только чтобы xvm.py не затирался - вот его и переименуй, к примеру my_xvm.py Остальное не трогай 1 Quote Share this post Link to post Short link Share on other sites
post 6 #355309 Posted September 28, 2016 в корне папки ру-macro можешь переименовать как угодно, хоть 1, 2, 3 и т.п. В подпапках - если переименуешь, то надо будет код править. Файлы .хс переименовывать не нужно (да и не про них печь) Тебе надо было только чтобы xvm.py не затирался - вот его и переименуй, к примеру my_xvm.py Остальное не трогай Да! Попробовал - всё работает, спасибо! Никогда бы не подумал, что так можно. Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #355382 Posted September 29, 2016 (edited) , с временем перезарядки сложнее. Обновление раз в секунду таймера (ON_EVERY_SECOND) - это редко, а если введут обновление 10 раз в секунду, то это может сказаться на производительности (весь бой 10 раз секунду будет обновляться поле). Добавил события из питона. Еще одна мощная универсальная штука получилась. В конфиге указываем событие "PY(event_name)", где event_name - произвольное название, которое мы будем отправлять из питона: "updateEvent": "PY(test)", В питоне изпользуем метод as_event из модуля xfw: import xfw xfw.as_event('test') Вызываем, соответственно, тогда, когда необходимо обновить поле. Можно в py_macro добавить что-то типа events.py, который будет отправлять какие-то типовые события, и кто угодно сможет их использовать в своем конфиге. На производительность они практически не будут влиять, если вхолостую будут отправляться, если, конечно, не отправлять их слишком часто (чаще нескольких раз в секунду). Edited September 29, 2016 by sirmax 6 Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #355387 Posted September 29, 2016 Можно в py_macro добавить что-то типа events.py, который будет отправлять какие-то типовые события НУЖНО!и еще неплохо бы хоть примерно указать, где и как искать имеющиеся в клиенте события, которые не войдут в "список". Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #355389 Posted September 29, 2016 НУЖНО! и еще неплохо бы хоть примерно указать, где и как искать имеющиеся в клиенте события, которые не войдут в "список". Думаю, тут вы без меня справитесь пока. Могу разве что на паре каких-нибудь событий показать. Говори, что тебя интересует. Quote Share this post Link to post Short link Share on other sites
ktulho 5,793 #355394 Posted September 29, 2016 Добавил события из питона. Еще одна мощная универсальная штука получилась. В конфиге указываем событие "PY(event_name)", где event_name - произвольное название, которое мы будем отправлять из питона: "updateEvent": "PY(test)", В питоне изпользуем метод as_event из модуля xfw: import xfw xfw.as_event('test') Вызываем, соответственно, тогда, когда необходимо обновить поле. Вот это круто. Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #355399 Posted September 29, 2016 Могу разве что на паре каких-нибудь событий показать. Говори, что тебя интересует. в рамках дамаг-лога нужны события, по которым будет открываться и закрываться battleLabel с последним полученным уроном: снизу слева есть лог, а в момент выстрела по тебе в центре появляется сообщение, которое должно само закрыться по истечении какого-то времени (м.б. настройка в сек). Возможно, это не совсем "события" (а вероятно "совсем не события" :)) про которые ведется речь, но именно такого не хватает. Как вариант - использовать PY(test) в поле "enabled" если это вообще осуществимо... Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #355404 Posted September 29, 2016 по событиям можно только текст обновлять. Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #355409 Posted September 29, 2016 по событиям можно только текст обновлять. в таком случае вариант: есть событие - есть текст, нет события (+ задержка) - нет текста. Так возможно? т.е. окно висит постоянно, формат текста "зашит" в ру-макрос, по событию текст обновляется, но отображение регулируется задержкой, по истечении которой текст пропадает до следующего обновления... возможно имеет смысл добавить параметр/макрос этой самой задержки, по типу, к примеру, sixthSenseDuration Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #355413 Posted September 29, 2016 Так можно. Но эта логика не подходит под общий случай, тут необходимо as_event() отправлять там же, где и py_macro реализован. Quote Share this post Link to post Short link Share on other sites
RealVoid 30 #355732 Posted October 1, 2016 (edited) Доброго времени суток! Есть кто шарящий, кто подскажет, как набросать макрос, чтобы возвращал значение на единицу меньше {{battletier}}, это же не сложно должно быть?Хотя возможно стоит еще сделать с ограничением, чтобы для одиннадцатого уровня боя выдавал девять, как для десятого.Еще интересует, можно ли и насколько сложно получить значение, которое соответствует масштабу иконок классов техники в маркере, которое зависит от расстояния до игрока.Хорошо было бы приделать такую фишку для кастомных иконок, например из шрифта.Да и вообще, порекомендуйте какой-нибудь мануал, какой знаете, по этим макросам и вообще питоне в контексте wot. (а может и питона вообще, насколько это тут необходимо, хех)Должно же быть что-то полезное, чтобы разобраться.UPD: Пролистал эту тему, под конец понял, что все уже есть и мне нужно всего лишь использовать {{py:math.sub({{battletier}},1)}}Впрочем, возможно лучше написать новый макрос в несколько строк на случай 11 лвл, чтобы просто в него {{battletier}} передавать, только завтра, а то ночь уже... 'UPD2:' А вот уже вопрос по теме, хотел сократить вот эту запись в "labelsData" "vtype" "HT": "<font face='vtype'>{{battletier<11?{{level={{battletier}}?u|{{level={{py:math.sub({{battletier}},1)}}?m|g}}}}|{{level=10?u|{{level=9?m|g}}}}}}</font>", До макроса вроде # Символ по положению танка в команде. a,b,c - символы, d - уровень боя, e - уровень танка. @xvm.export('tankPosition') def tank_position(a, b, c, d, e): if d == 11 d = 10 if e == d return a elif e == d - 1 return b else return c и строку сделать например такой "HT": "<font face='vtype'>{{py:tankPosition('u','m','g',{{battletier}},{{level}})}}</font>", Но в итоге получаю nullКакую очевидную вещь я не понимаю? Нужно что-то писать не так, не там или что?Разобрался, синтаксис не тот. 'Сделал так:' # Символ по положению танка в команде. a,b,c - символы, d - уровень боя, e - уровень танка. @xvm.export('tankRank') def tank_rank(a, b, c, d, e): if d > 10: d = 10 if e == d: return a # топ elif e == d - 1: return b # середина else: return c # дно "labelsData": { // Текст для макроса {{.minimap.labelsData.vtype.{{vtype-key}}}} "vtype": { "LT": "<font face='vtype'>i</font>", "MT": "<font face='vtype'>{{py:tankRank('l','n','h',{{battletier}},{{level}})}}</font>", // l,n,h "HT": "<font face='vtype'>{{py:tankRank('u','m','g',{{battletier}},{{level}})}}</font>", // u,m,g "TD": "<font face='vtype'>{{py:tankRank('V','o','j',{{battletier}},{{level}})}}</font>", // V,o,j "SPG": "<font face='vtype'>{{py:tankRank('X','p','k',{{battletier}},{{level}})}}</font>" // X,p,k } Edited October 4, 2016 by RealVoid 1 Quote Share this post Link to post Short link Share on other sites