XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Желтая пресса: обучающие статьи
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
Alonix
*null*
offline
Опыт: 26,861
Активность:
Таймеры
Иногда в Академии задают вопросы о таймерах, но статьи на которую можно послать нигде нет. Вот я и решил написать статью о таймерах.

Таймеры

Начнем с того, что же такое таймер? Таймер-(англ. timer < time время) — прибор производственно-технического, военного или бытового назначения, в заданный момент времени выдающий определённый сигнал, либо включающий — выключающий какое либо оборудование через своё устройство коммутации электроцепи(материал википедии).Конечно,к нашему случаю это не относится.У нас не никакого прибора-только триггры.Но задача схожа с обычным таймером.

Создание таймера

Сделать таймер очень просто. Сначала создаем переменную (пусть будет t) типа "таймер".После сделаем событие при котором создастся таймер. Сделали? Если да, то в триггерах выбираем действие "Обратный отсчет - Start timer".Видим следующее:
Нажимаем на "Timer" и выбираем нашу переменную "t".Нажимаем на "Однократный" и видим выбор:"Однократный" и "Многократный".Однократный таймер действует только один раз, то есть если таймер истечет, то отсчет заново не пойдет. А если вы выберите "Многократный",то все наоборот - после истечения таймер поведет отсчет заново. Вместо "30 seconds"(по умолчанию) ставим время таймера. Уфф, первое действие мы сделали. Но это только начало. Итак, продолжим...

Создание окна таймера

После создания самого таймера начинаем создавать для него окно. Ведь как мы увидим таймер без окна, в котором он будет показываться? Никак! Поэтому и нужно создавать окно для таймера. Создаем переменную типа "окно таймера".Назовем его "window".Далее действие "Обратный отсчет - Create timer window",и видим это:
Вместо (Last started timer) можно выбрать наш таймер "t",а можно оставить как есть - это зависит от того, как вы используете таймеры. Далее клацаем на "Title" и пишем название для таймера, которое будет выше самого отсчета. После присваиваем переменной "window" значение последнего созданного окна таймера(для этого используем "Set variable").Вот и сделано еще одно действие. Переходим к следующему...

Форматирование таймера

Преступим к форматированию таймера. Кто не знает что такое форматирование - просим пройти сюда.А те, кто знает читаем дальше. Форматировать можно 3 вещи: название таймера(Change timer window title),цвет названия(Change timer window title color) и цвет отсчета(Сhange timer window time color).Во всех трех действиях есть общее - строка "Change the того что нужно of (Last created timer window)".Вместо "Last created timer window" выбираем переменную "window" или ту, что вы используете. Все эти действия должны быть обязательно после создания окна таймер, не раньше! Надеюсь, вы поняли, что можно изменять в каждом из действий. Поняли? Тогда переходим к следующему процессу...

Показ таймера

После создания не спешите радоваться - таймер в игре еще не показан, ведь его надо еще показать! Для этого есть специальные действия, которые находятся в "Обратном отсчете".Это "Show/Hide Timer Window" и "Show/Hide Timer Window For Player".Они похожи, вот только второе показывает таймер для отдельного игрока(или группы игроков),а первое для всех без исключения. Вместо (Last created timer window) ставим нашу подругу-переменную "window".Остальные настройки понятны.

Истечение таймера

Вот наш таймер готов. Но что, если ты хочешь сделать действие, которое сработает по истечении таймера? Тогда на помощь тебе приходит событие "Время - Timer expiries":
Это событие срабатывает, когда наш таймер истекает. Вместо "Timer" выбираем наш таймер "t".А далее - дело вкуса.

Дополнительные действия и события

Остались действия и события, не рассмотренные мною ранее. Это "Pause timer" и "Destroy timer window".Для чего нужно "Pause timer"?Этим действием можно останавливать и возобновлять течение отсчета таймера. Это можно использовать для всяческих интересных действий. Это уже вы можете придумать сами. Но вы зададите мне вопрос:"для чего нужно действие "Destroy timer window"?.Это действие удаляет окно таймера. Обычно его используют триггере с событием "Время - Timer expiries" при однократном таймере.
Главное-окно таймера не может быть показано при событии "Map Initialization"!
Ну вот вроде все. Если хотите чем-то поделиться или поправить мою ошибку - пишите.
Старый 01.06.2010, 21:21
StoneHeartis
Kicked by ScorpioT1002
offline
Опыт: 1,009
Активность:
Kakashi23, диалоги и таймеры в пермешку, что не есть гуд. Да и статья, мягко говоря, ненужная.
Старый 01.06.2010, 22:05
agentex

offline
Опыт: 34,534
Активность:
ненужная.
и устаревшая.
хуже гуи могут быть токо гуи-таймеры
Старый 01.06.2010, 22:09
Alonix
*null*
offline
Опыт: 26,861
Активность:
StoneHeartis, читай начало.Если ты знаешь-то это хорошо.Если нет-то в двойне лучше :D!
Kakashi23 добавил:
и устаревшая.
Найди мне здесь еще одну статью про таймеры и я признаю твои слова.
Старый 01.06.2010, 22:11
agentex

offline
Опыт: 34,534
Активность:
статья про таймеры попросту не нужна. существует timer api от близов описанный в common.j, и он по большому счету в пояснениях не нуждается. единственное стоит отметить несколько фактов - таймер создает новый поток, предотвращение срабатывания таймера последний раз при уничтожении итп
Старый 01.06.2010, 22:12
Alonix
*null*
offline
Опыт: 26,861
Активность:
agentex, тебе тоже надо прочитать первое предложение
Иногда в Академии задают вопросы о таймерах, но статьи на которую можно послать нигде нет. > Вот я и решил написать статью о таймерах.
Старый 01.06.2010, 22:14
agentex

offline
Опыт: 34,534
Активность:
Иногда в Академии задают вопросы о таймерах
покажи хоть одну тему где просят научить юзать таймер
З.Ы. я не против статьи, но она одназначно должна быть выполнена на другом уровне. иначе гуи - мапперов будет становиться все больше.. что печально.
Старый 01.06.2010, 22:15
Alonix
*null*
offline
Опыт: 26,861
Активность:
agentex, сейчас,подожди
Kakashi23 добавил:
Раз
Два
Три
Четыре
Старый 01.06.2010, 22:36
Doc

offline
Опыт: 63,163
Активность:
Уг. Это статья не про таймеры, а про окна таймеров. Таймеры обычно используются по другому.
Старый 01.06.2010, 23:26
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
дописать (чтобы было полезно, а не что-то странное):
  • правильное удаление таймера
  • массив таймеров
  • замена вейтов
  • локальный таймер, запуск таймера и его же отлов в пределах одного триггера
  • фишки с таймерами
Старый 01.06.2010, 23:55
Alonix
*null*
offline
Опыт: 26,861
Активность:
vsparker, если знаешь что добавить-пиши мне в личку.Я добавлю.
Таймеры обычно используются по другому.
Смотря кто и как их использует.
Старый 02.06.2010, 08:58
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
Kakashi23, написать за тебя статью? пожалуй нет =)
Старый 02.06.2010, 13:43
XOR

offline
Опыт: 38,284
Активность:
по хорошему таймеры нужны для запуска функций в большинстве случаев. Статья ни о чем. топикстартер глобально не шарит)
И да, это пропаганда ненужного гуи.
Старый 02.06.2010, 14:15
ScorpioT1000
Работаем
online
Опыт: отключен
Статья говно. Как увидел первые ошибки форматирования в первом абзаце, пропало желание читать. В базе такой статьи не будет.
Раздел "Мультиприменение" этой статьи доступно частично объясняет роль таймеров в коде warcraft III: xgm.ru/project.php?id=100&page=w3_special_programming
В принципе, это уже все знают. А кто не знает - не хочет этого узнавать)
Старый 02.06.2010, 14:19
agentex

offline
Опыт: 34,534
Активность:
И да, это пропаганда ненужного гуи.
Вот и я о томже. Изолировать таких надо
Старый 02.06.2010, 14:33
Alonix
*null*
offline
Опыт: 26,861
Активность:
Ну вы блин...даже не знаю что сказать...я старался,тратил свое время,а вы...вы неуважаете чужой труд!Хоть бы написали:"Молодец,что написал такую статью.Но для статьи это слабовато.Но все равно молодец!".Да пошли вы все...закройте тему!
[+] замечание от XimikS: оскорбление отписавшихся в теме. Не каждый труд полезен)
Старый 02.06.2010, 16:43
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
Kakashi23, доработай, а не ной.
Старый 02.06.2010, 16:50
ScorpioT1000
Работаем
online
Опыт: отключен
я не твоя мама, чтобы хвалить всюду ) но дело в том, что тут всё строилось на изначально неполезных доводах
Старый 02.06.2010, 17:36
XOR

offline
Опыт: 38,284
Активность:
учите jass. Закрыто
Старый 03.06.2010, 01:11

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 18:26.