Kapany3uk Posted September 27, 2016 Share Posted September 27, 2016 то это может сказаться на производительности (весь бой 10 раз секунду будет обновляться поле) а если вывести перезарядку в отдельное поле + обновление только при получении дамага/выстрела (а уж потом раз в 10 сек) ? @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted September 27, 2016 Share Posted September 27, 2016 а если вывести перезарядку в отдельное поле + обновление только при получении дамага/выстрела (а уж потом раз в 10 сек) ? , так и надо сделать, вопрос только как? P.S. Интересно, если поле пустое, его обновление снижает производительность? @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted September 27, 2016 Share Posted September 27, 2016 Снижает, но насколько - сложно сказать. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted September 27, 2016 Share Posted September 27, 2016 (edited) @sirmax, и еще вопрос, есть возможность проверять пустое поле или нет? И если пустое, то не обновлять? Таким способом можно было бы частично управлять обновлением поля из py_macros. Edited September 27, 2016 by ktulho @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted September 27, 2016 Share Posted September 27, 2016 Это все кривая логика. Нужно как-то по-другому делать. Нужны какие-то события из питона. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted September 27, 2016 Share Posted September 27, 2016 Это все кривая логика. Нужно как-то по-другому делать. Нужны какие-то события из питона. Это было бы намного лучше. @ Quote Link to comment Short link Share on other sites More sharing options...
post Posted September 28, 2016 Share Posted September 28, 2016 Было бы неплохо, чтоб новые релизные файлы не затирали измененные. Тобишь, если можно - положить их в папочку со своим конфигом. Я намекаю на xvm.py. @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted September 28, 2016 Share Posted September 28, 2016 Было бы неплохо, чтоб новые релизные файлы не затирали измененные. Тобишь, если можно - положить их в папочку со своим конфигом. Я намекаю на xvm.py. свои файлы переименуй как хочешь и ничего не будет затираться... @ Quote Link to comment Short link Share on other sites More sharing options...
post Posted September 28, 2016 Share Posted September 28, 2016 свои файлы переименуй как хочешь и ничего не будет затираться... А можно подробней? Что значит "как хочешь"? За дамаг лог отвечают файла четыре. И что будет если я их все переименую? 1 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted September 28, 2016 Share Posted September 28, 2016 А можно подробней? Что значит "как хочешь"? За дамаг лог отвечают файла четыре. И что будет если я их все переименую?в корне папки ру-macro можешь переименовать как угодно, хоть 1, 2, 3 и т.п. В подпапках - если переименуешь, то надо будет код править. Файлы .хс переименовывать не нужно (да и не про них печь)Тебе надо было только чтобы xvm.py не затирался - вот его и переименуй, к примеру my_xvm.py Остальное не трогай 1 @ Quote Link to comment Short link Share on other sites More sharing options...
post Posted September 28, 2016 Share Posted September 28, 2016 в корне папки ру-macro можешь переименовать как угодно, хоть 1, 2, 3 и т.п. В подпапках - если переименуешь, то надо будет код править. Файлы .хс переименовывать не нужно (да и не про них печь) Тебе надо было только чтобы xvm.py не затирался - вот его и переименуй, к примеру my_xvm.py Остальное не трогай Да! Попробовал - всё работает, спасибо! Никогда бы не подумал, что так можно. @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted September 29, 2016 Share 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 Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted September 29, 2016 Share Posted September 29, 2016 Можно в py_macro добавить что-то типа events.py, который будет отправлять какие-то типовые события НУЖНО!и еще неплохо бы хоть примерно указать, где и как искать имеющиеся в клиенте события, которые не войдут в "список". @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted September 29, 2016 Share Posted September 29, 2016 НУЖНО! и еще неплохо бы хоть примерно указать, где и как искать имеющиеся в клиенте события, которые не войдут в "список". Думаю, тут вы без меня справитесь пока. Могу разве что на паре каких-нибудь событий показать. Говори, что тебя интересует. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted September 29, 2016 Share Posted September 29, 2016 Добавил события из питона. Еще одна мощная универсальная штука получилась. В конфиге указываем событие "PY(event_name)", где event_name - произвольное название, которое мы будем отправлять из питона: "updateEvent": "PY(test)", В питоне изпользуем метод as_event из модуля xfw: import xfw xfw.as_event('test') Вызываем, соответственно, тогда, когда необходимо обновить поле. Вот это круто. @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted September 29, 2016 Share Posted September 29, 2016 Могу разве что на паре каких-нибудь событий показать. Говори, что тебя интересует. в рамках дамаг-лога нужны события, по которым будет открываться и закрываться battleLabel с последним полученным уроном: снизу слева есть лог, а в момент выстрела по тебе в центре появляется сообщение, которое должно само закрыться по истечении какого-то времени (м.б. настройка в сек). Возможно, это не совсем "события" (а вероятно "совсем не события" :)) про которые ведется речь, но именно такого не хватает. Как вариант - использовать PY(test) в поле "enabled" если это вообще осуществимо... @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted September 29, 2016 Share Posted September 29, 2016 по событиям можно только текст обновлять. @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted September 29, 2016 Share Posted September 29, 2016 по событиям можно только текст обновлять. в таком случае вариант: есть событие - есть текст, нет события (+ задержка) - нет текста. Так возможно? т.е. окно висит постоянно, формат текста "зашит" в ру-макрос, по событию текст обновляется, но отображение регулируется задержкой, по истечении которой текст пропадает до следующего обновления... возможно имеет смысл добавить параметр/макрос этой самой задержки, по типу, к примеру, sixthSenseDuration @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted September 29, 2016 Share Posted September 29, 2016 Так можно. Но эта логика не подходит под общий случай, тут необходимо as_event() отправлять там же, где и py_macro реализован. @ Quote Link to comment Short link Share on other sites More sharing options...
RealVoid Posted October 1, 2016 Share 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 Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.