HEKPOMAHT 2,168 #477086 Posted February 9, 2020 6 минут назад, ktulho сказал: Обновил в шапке скрипт timerEvents.py. фух, работает Меня уже если честно говоря колотун брал, когда в ангар заходил для проверки ---- а для теста боевой части у меня уже терпенья осталось. ... осталось очень мало, если не сказать не осталось совсем. Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477375 Posted February 13, 2020 @ktulho если закрыть клиент после начала боя и снова зайти, событие для {{py:isBattle}} обновляет поле или без обновления поля возвращает battle? Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477376 Posted February 13, 2020 (edited) @HEKPOMAHT Мне кажется, что ты не совсем правильно понимаешь как это работает. Попробую разъяснить на примере {{py:isBattle}} и PY(ON_BEGIN_BATTLE): 1) где-то в скрипте мы узнаем, что начался бой; 2) изменяем в этот момент значение, которое возвращает макрос {{py:isBattle}}, но на экране после этого ничего не измениться, пока не обновиться extraFields, в котором используется данный макрос; 3) чтобы обновить extraFields, в котором используется данный макрос, посылаем в XVM событие ON_BEGIN_BATTLE; 4) XVM просматривает во всех extraFields параметр "updateEvent" на наличие PY(ON_BEGIN_BATTLE); 5) если в extraFields есть PY(ON_BEGIN_BATTLE), то обновляются все параметры данного поля (кроме "enabled"), то есть ВСЕ макросы данного поля возвращают свое текущее значение, в том числе и {{py:isBattle}}. В момент в хода в бой (когда прорисовывается интерфейс) обновляются все поля. Отсюда вывод: 14 часов назад, HEKPOMAHT сказал: событие для {{py:isBattle}} обновляет поле Да, событие PY(ON_BEGIN_BATTLE) обновляет поле, и неважно есть в нем макрос {{py:isBattle}} или нет. 14 часов назад, HEKPOMAHT сказал: если закрыть клиент после начала боя и снова зайти, ... без обновления поля возвращает battle? Да, потому что: Цитата В момент в хода в бой (когда прорисовывается интерфейс) обновляются все поля. Edited February 14, 2020 by ktulho Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477380 Posted February 14, 2020 @ktulho начало боя не обсуждаем - там всё ясно. Если после повторного входа в бой должны обновляться поля - не понятно почему не срабатывает анимация на картинку - висит статичная. Если просто начало боя - то работает как положено. либо опять же, пробовать заменить метод. ---- хотя замена метода ничего не даст. Там нужно, что бы при повторном заходе в бой поле обновилось именно по событию. А так остановлено на первом кадре. ---- у меня вчера была мысль, можно ли сделать, чтобы помимо самого момента начала боя событие PY(ON_BEGIN_BATTL) ещё один раз обновляло поле закрытия клиента и повторного захода в бой. 35 минут назад, HEKPOMAHT сказал: не понятно почему не срабатывает сам и отвечу - поле обновляется не по событию. Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477386 Posted February 14, 2020 (edited) 2 часа назад, HEKPOMAHT сказал: закрытия клиента и повторного захода в бой. Кроме тебя, никто не закрывает и не открывает клиент во время боя. Edited February 14, 2020 by ktulho Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477387 Posted February 14, 2020 16 минут назад, ktulho сказал: Кроме тебя, никто не закрывает и не открывает клиент во время боя. кроме меня тут много кто вообще ничего не делает, даже не пытаются вникнуть в элементарные вещи я и то, случайно это обнаружил. А если предположить, что у кого-то будет потеряна связь с сервером во время боя - будет аналогичная ситуация. Либо исправлять - либо искать другое решение. Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477389 Posted February 14, 2020 @HEKPOMAHT Событие PY(ON_BEGIN_BATTL) посылается во время входа в бой. Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477390 Posted February 14, 2020 @ktulho зайду с другой стороны: можно ли его изменить, чтобы оно посылалось во время входа в бой после закрытия клиента? * и ещё посылалось Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477391 Posted February 14, 2020 Только что, HEKPOMAHT сказал: зайду с другой стороны: можно ли его изменить, чтобы оно посылалось во время входа в бой после закрытия клиента? Отвечу с другой стороны: Событие PY(ON_BEGIN_BATTL) посылается когда бы ты не зашел в бой. Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477392 Posted February 14, 2020 @ktulho если не срабатывает анимация после закрытия клиента и повторного захода в бой, значит что-то не то. Ладно, буду смотреть, может что другое придумаю, может использовать {{py:xvm.leftTime(x)}}. А так оставлять не вариант. Намеренно из боя ни кто не выходит, но если такое у кого приключится - будет висеть текст до конца боя... нужно переделывать. Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477393 Posted February 14, 2020 (edited) 18 минут назад, HEKPOMAHT сказал: Ладно, буду смотреть, может что другое придумаю, может использовать {{py:xvm.leftTime(x)}}. Интересно, как этот макрос тебе поможет тебе? 18 минут назад, HEKPOMAHT сказал: Намеренно из боя ни кто не выходит, но если такое у кого приключится - будет висеть текст до конца боя... нужно переделывать. И не поспоришь, нужно переделывать. Edited February 14, 2020 by ktulho Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477394 Posted February 14, 2020 @HEKPOMAHT Прикрепи реплей, который начинается с середины боя. Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477401 Posted February 14, 2020 41 минуту назад, ktulho сказал: Интересно, как этот макрос тебе поможет тебе? а я ещё прошлый раз (давно когда-то хотел испробовать) толку от него не добился. Думал возобновить попытку. 30 минут назад, ktulho сказал: реплей, который начинается с середины боя в середине боя.wotreplay Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477415 Posted February 14, 2020 @ktulho не знаю, имеет ли это значение, но сравнительно недавно заметил что у PreBattleTimer в бою нет 29, а щелчок на значение есть. Как я понял данные скрипт "начало боя" из него берёт. Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477416 Posted February 14, 2020 2 минуты назад, HEKPOMAHT сказал: @ktulho не знаю, имеет ли это значение, но сравнительно недавно заметил что у PreBattleTimer в бою нет 29, а щелчок на значение есть. Как я понял данные скрипт "начало боя" из него берёт. Ничего не понял. Но скорее всего это не имеет ни какого значения. Если ты об этом: 4 часа назад, HEKPOMAHT сказал: если не срабатывает анимация после закрытия клиента и повторного захода в бой, значит что-то не то. то проблема в том, что когда ты заходишь в бой, событие PY(ON_BEGIN_BATTLE) посылается гораздо раньше (у меня на 3 секунды раньше), чем отрисовываются extraFields. Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477417 Posted February 14, 2020 2 минуты назад, ktulho сказал: Ничего не понял. Но скорее всего это не имеет ни какого значения. да, выходит что не имеет. Пусть тогда для информации будет: {{py:xvm.secondsBT}} в текущем патче после "ожидания игроков" начинает отсчёт не с 29, а с 28 (тест на ссд). Причём сравнение с 29 возвращает пусто. А на реплее норм. 7 минут назад, ktulho сказал: проблема в том, что когда ты заходишь в бой, событие PY(ON_BEGIN_BATTLE) посылается гораздо раньше вот вот, я про это изначально и спрашивал Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477423 Posted February 14, 2020 @HEKPOMAHT Вообще я надеялся, что сработает такая конструкция: "test1": { "updateEvent": "PY(ON_BEGIN_BATTLE)", "tweens": [ [ "fromTo", 1, { "alpha": 1 }, { "alpha": 0 } ] ], "alpha": "{{py:isBattle?0|100}}", "format": "ЖДЁМ" }, Но видимо макросы "обновляют" параметры позже, чем tweens. Может @sirmax сможет что-то сделать, а может и это заодно заработает. Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477425 Posted February 14, 2020 18 минут назад, ktulho сказал: Вообще я надеялся, что сработает такая конструкция уже с год уже как работает: https://koreanrandom.com/forum/topic/36869-battletimer-средствами-xvm/?do=findComment&comment=449449 ---- я хотел сделал для "Начало боя" ролик 1-2 сек на затухание отдельным полем, как это было во флэше клиента. То есть не резко пропадает (как в том примере), а затухает. "updateEvent": "PY(ON_BEGIN_BATTLE)", "tweens": [ [ "delay", 1 ], [ "to", 2, { "alpha": 0 } ] ], "format": "{{py:isBattle?{{l10n:Battle starts}}}}" если сразу войти в бой то норм, если после закрытия, то текст висит. Как мы выяснили, потому что событие посылается раньше. Я устроил эту чехарду именно из-за этого двух секундного хвостика. Да оно может и тог не стоит, но всё-таки ---- вот вот - резко пропадает как прикреплённой gif анимации примера. Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #477428 Posted February 14, 2020 1 минуту назад, HEKPOMAHT сказал: уже с год уже как работает: Что работает? Мы же про tweens говорим. Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,168 #477430 Posted February 14, 2020 2 минуты назад, ktulho сказал: Что работает? Мы же про tweens говорим. то что до начала боя всё работает. Если ты указал {{py:isBattle?0|100}} то после начала боя согласно макроса поле будет скрыто. а нужно наоборот {{py:isBattle?100|0}} чтобы в начале боя было 100 в течении 2-3 сек по анимации. Quote Share this post Link to post Short link Share on other sites