Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Amok[MEn] lpw
Зарегистрирован: 14.08.2009 Сообщения: 62
|
Добавлено: Пн Май 16, 2016 8:51 pm Заголовок сообщения: Автоматическое создание скриншота с результатом в демке? |
|
|
Имеется 100500 демок *.dm2.
Нужно для каждой сделать скриншот с итоговой таблицей (результатами игры).
Хотелось бы по возможности автоматизировать процесс.
Использовал Q2PRO-клиент. Написал конфиг, который ставит timescale 10 (для ускорения проигрывания демки) и триггер, реагирующий на фразу "Timelimit hit" и создающий скриншот. Однако, нихера триггер не срабатывает. Как я понимаю, потому что нет сервера (этот же триггер отлично делает скрины, если запускать его на клиенте, который подключён к серверу - я на чемпах так делал все скрины на админском компьютере).
Подскажите куда копать? Может в других клиентах триггеры работают?
Если удасться забороть кваку, то далее можно будет написать bat-ничек, который будет сам по списку демок запускать кваку с конфигом и демой, делать скрин и переходить к следующей деме. |
|
Вернуться к началу |
|
|
AlexJ papa
Зарегистрирован: 02.10.2009 Сообщения: 471
|
Добавлено: Вт Май 17, 2016 3:55 pm Заголовок сообщения: |
|
|
обязательно скриншот? если только данные создавать со счетом, то проще написать парсер файла демки - в нем есть вся инфа о результатах.? |
|
Вернуться к началу |
|
|
AlexJ papa
Зарегистрирован: 02.10.2009 Сообщения: 471
|
Добавлено: Вт Май 17, 2016 4:04 pm Заголовок сообщения: |
|
|
под r1q2:
timedemo 1 (ускоряем)
trigger "screenshot jpg" "Match ended."
map демка
после проигрывания демки пишет скрин |
|
Вернуться к началу |
|
|
Amok[MEn] lpw
Зарегистрирован: 14.08.2009 Сообщения: 62
|
Добавлено: Вт Май 17, 2016 5:38 pm Заголовок сообщения: |
|
|
AlexJ писал(а): |
обязательно скриншот? если только данные создавать со счетом, то проще написать парсер файла демки |
Парсить тоже буду. Однако хочу скрин. |
|
Вернуться к началу |
|
|
Amok[MEn] lpw
Зарегистрирован: 14.08.2009 Сообщения: 62
|
Добавлено: Вт Май 17, 2016 9:55 pm Заголовок сообщения: |
|
|
AlexJ писал(а): |
trigger "screenshot jpg" "Match ended."
|
Пашет. Только триггер должен быть обязательно с wildcard'ом.
И вот верный триггер:
Код: |
trigger "timedemo 0;wait;wait;wait;wait;wait;screenshot" "Timelimit hit*" |
|
|
Вернуться к началу |
|
|
Amok[MEn] lpw
Зарегистрирован: 14.08.2009 Сообщения: 62
|
Добавлено: Вт Май 17, 2016 10:03 pm Заголовок сообщения: |
|
|
А кто объяснит, почему тригеры в демке работают в r1q2 и не работают в q2pro? У них же даже синтаксис одинаковый?
Я прав в том что q2pro считает *.dm2 "клиентской" демкой (сам q2pro говорит об этом в подсказке при попытке просмотреть *.dm2 командой demoplay) и как бы не считает серверные сообщения типа "Timelimit hit" за "настоящие" серверные? Т. е. для него они уже не серверные, а так, херня на палочке из прошлого? |
|
Вернуться к началу |
|
|
the_doom papa
Зарегистрирован: 23.02.2007 Сообщения: 630 Откуда: Пермь
|
|
Вернуться к началу |
|
|
Amok[MEn] lpw
Зарегистрирован: 14.08.2009 Сообщения: 62
|
Добавлено: Вт Май 24, 2016 8:02 pm Заголовок сообщения: |
|
|
the_doom писал(а): |
по этой ссылке есть ответы на твои вопросы :)
на си это означает:
если (не cls.demo.playback) и (cl.serverstate не равно ss_broadcast) |
Т. е. триггер сработает если всё это выражение TRUE. А значит переменные имеют значения:
cls.demo.playback = FALSE
и
cl.serverstate = TRUE и ss_broadcast = FALSE
либо же
cls.demo.playback = FALSE
и
cl.serverstate = FALSE и ss_broadcast = TRUE
В любом случае, для запуска триггера необходима переменная cls.demo.playback в значении FALSE. Т. е. если интерпретировать её дословно - "играется демка" = FALSE. Т. е. демка играться не должна.
Однако это не снимает мой вопрос: зачем Skuller'у понадобилось явно запрещать использование треггеров в демках! |
|
Вернуться к началу |
|
|
Amok[MEn] lpw
Зарегистрирован: 14.08.2009 Сообщения: 62
|
Добавлено: Ср Апр 12, 2017 5:19 pm Заголовок сообщения: |
|
|
Апну темку.
Исследования r1q2 b8012 показали целый ряд пиздецов:
1) Команда screenshot не позволяет задавать имя файла и путь сохранения! Т. е. тупо по-умолчанию пишет .\каталог_мода_демки\scrnshot\quake000.png с автоматическим увеличением номера демки (типа quake001.png ... quake002.png и т. д.)
2) Ускорение проигрывания демки конечно и не сильно бодрое: либо timedemo 1, либо timescale вроде выше 2 (значения типа 1.1 или 1.2 работают, предел визуально наступает где-то после 1.5). Нельзя адски ускорить демку, выставив timescale 100, например. Что крайне замедляет просмотр 100500 демок.
3) Нихрена нет документации на клиента. Даже в лучшие годы, на ныне уже сдохшем форуме R1CH'а, не было полной документации.
В связи с этим, для автоматической подготовки снимков r1q2 не годится! Максимум что можно: запускать его на серии из нескольких демок и потом вручную разбираться со скринами (переименовывать). |
|
Вернуться к началу |
|
|
Amok[MEn] lpw
Зарегистрирован: 14.08.2009 Сообщения: 62
|
Добавлено: Пн Ноя 11, 2019 12:42 am Заголовок сообщения: |
|
|
Сохраню тут для истории.
Я изменил в файле src/client/parse.c в 2-х местах строку
Код: |
if (!cls.demo.playback && cl.serverstate != ss_broadcast) { |
на
Код: |
if (cls.demo.playback && cl.serverstate != ss_broadcast) { |
Сбилдил клиента и триггеры заработали.
Однако проблема автосохранения скрина пока мной так и не решена. Проблема в том, что итоговая таблица с результатами появляется через хз какое время после срабатывания триггера на сообщение об окончании матча, и нельзя однозначно сказать, что вот через 10 или 100500 wait'ов она уже будет на экране и можно делать скрин... |
|
Вернуться к началу |
|
|
|