Сейчас 10:51:38 Четверг, 25 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Таймеры на GUI
Таймеры на GUI
Samedy_Дата: Пятница, 29 Мая 2015, 11:05:58 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Почему Timer с массивом 1 работает, а с массивом 2 уже нет? С этим как-то можно что-то сделать?
И есть ли тогда способ на гуи сделать периодический запуск таймера после определенных действий?
Например,
Первый триггер:
с: прошло n секунд
д: запуск таймера timer[1], отображение окошка, уничтожение таймера timer[1] после его истечения
Второй триггер:
с: таймер с массивом 1 истекает
д: совершают опр. действия и включается след. триггер
Третий триггер:
с: каждые n секунд
у: в группе нет юнитов
д: запустить таймер с массивом 2
Приведенный пример у меня не работает. Почему? Что делать? Создавать отдельную переменную для каждого таймера и его окошка?
Если ли вариант сделать это в 1-2 триггера?
 

SirNikolasДата: Пятница, 29 Мая 2015, 11:08:37 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
При создании массива таймеров (а также отрядов, групп игроков и чего-нибудь еще, о чем я забыл) в Редакторе Переменных необходимо задать размер массива.

 

Samedy_Дата: Пятница, 29 Мая 2015, 11:39:07 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата SirNikolas ()
При создании массива таймеров (а также отрядов, групп игроков и чего-нибудь еще, о чем я забыл) в Редакторе Переменных необходимо задать размер массива.

Указал размер - не помогло. :'(
Спасибо, что так быстро отозвался.

Добавлено (29 Мая 2015, 11:39:07)
---------------------------------------------
Не помогло даже использование разных переменных. В чем может быть причина?

 

sumertДата: Пятница, 29 Мая 2015, 12:23:39 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
Цитата Samedy_ ()
очему Timer с массивом 1 работает, а с массивом 2 уже нет?

Во-первых, называй правильно. Я вообще сначала подумал, что у тебя 2 разных массива, а у тебя, если я правильно понял, массив один и ты обращаешься к индексам массива.
Цитата Samedy_ ()
Первый триггер:
с: прошло n секунд
д: запуск таймера timer[1], отображение окошка, уничтожение таймера timer[1] после его истечения

Полагаю, у тебя там используется Wait. Запуск и уничтожения таймера делай двумя разными триггерами. Дело в том, что wait очень кривой. Если запустить таймер на 10 секунд и следом wait(10), то они не будут совпадать.
Цитата Samedy_ ()
Второй триггер:
с: таймер с массивом 1 истекает
д: совершают опр. действия и включается след. триггер

а что за "след триггер"?
Цитата Samedy_ ()
Третий триггер:
с: каждые n секунд
у: в группе нет юнитов
д: запустить таймер с массивом 2

Здесь может быть ошибка в условии. Дело в том, что умерший юнит также считается, что он в группе. Это лишь предположение... Лучше всего выложить код или скинуть карту, это значительно облегчит и нам задачу и ускорит твое решение проблемы.
я правильно понял, что у тебя проблемы именно с третьим триггером? Если так, то он вовсе не запускается или какой-нибудь результат дает?
 

Samedy_Дата: Пятница, 29 Мая 2015, 13:06:29 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Проблема с третьим триггером. Он не запускает таймер, а все остальные действия делает.

Добавлено (29 Мая 2015, 12:47:33)
---------------------------------------------
И у меня условие правильное, вроде как. Указано "кол-во ЖИВЫХ юнитов в группе".

Добавлено (29 Мая 2015, 13:06:29)
---------------------------------------------
Решил сделать чуточку иначе. Работает. но только единожды.
Карта с триггером: http://my-files.ru/ncrrma.123456.w3x

 

sumertДата: Пятница, 29 Мая 2015, 13:47:16 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
Цитата Samedy_ ()
Работает. но только единожды.

Ошибка в условии. Следи за переменной RoundlnProgress.
При инициализации она равна "нет".
У тебя запускается триггер Vawe. Условие чтобы эта переменная равна "нет". Потом у тебя она опять присваивается "нет", даный тригер отрубается и запускается триггер Begin. В этом триггере переменная становится равной "да" и включается триггер Vawe, который работать не будет, ибо в условии написано, что переменная должна быть "нет", а она уже благодаря Begin стала "да" и больше не изменяется. Не знаю твоей задумки, поэтому решения предлагать не буду.
P.S. Wait и таймеры - зло. Есть событие Время - Timer expires, что означает "таймер истек". Советую это использовать. То бишь в одном триггере запускать таймер, а во втором при событии, что таймер истек, делать уже то, что надо.
 

Samedy_Дата: Пятница, 29 Мая 2015, 14:10:34 | Сообщение # 7
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Простейшая задумка: таймер истекает - создать юнитов; юниты убиты - показать таймер; снова создать юнитов и так n раз.
Как же мне тогда сделать так, чтобы по умолчанию переменная была равна "нет", а после итечения таймера становилась "Да", если не так, как я уже сделал?

Добавлено (29 Мая 2015, 14:10:34)
---------------------------------------------
Перепробовал если не все, то почти все - не понимаю что делать с переменной, хоть убей.

 

sumertДата: Пятница, 29 Мая 2015, 14:21:43 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
Samedy_, у тебя там все очень криво сделано... У тебя и условие кривое-багнутое. Если не заметил, ты там сделал условие "Кол-во юнитов типа хз у игрока синего", при этом ты проигнорил тип юнита, из-за чего оно не срабатывало. Переменная по сути не нужна, так что удалил её нафиг. вот, я исправил, сильно менять не стал.
Карта
 

Samedy_Дата: Пятница, 29 Мая 2015, 14:42:32 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата sumert ()
Samedy_, у тебя там все очень криво сделано... У тебя и условие кривое-багнутое. Если не заметил, ты там сделал условие "Кол-во юнитов типа хз у игрока синего", при этом ты проигнорил тип юнита, из-за чего оно не срабатывало. Переменная по сути не нужна, так что удалил её нафиг. вот, я исправил, сильно менять не стал.
Карта

Мб со мной что-то не так, но все равно не работает. Таймер создается 1 раз, после убийства юнитов ничего не происходит. :'(

Добавлено (29 Мая 2015, 14:29:45)
---------------------------------------------
Вот так еще пробовал.
http://puu.sh/i4GA8/8328d77bc4.png
http://puu.sh/i4GB2/24af76d337.png
Тоже нифига.

Добавлено (29 Мая 2015, 14:31:40)
---------------------------------------------
Может цикл нужен? Чтобы он это 10, например, раз делал?

Добавлено (29 Мая 2015, 14:38:54)
---------------------------------------------
Спустя минуты 4 триггер таки запустился, почему так?

Добавлено (29 Мая 2015, 14:42:32)
---------------------------------------------
Все, понял. Не глянул условие. Получается, надо удалить умирающего юнита и все будет окей...

 

sumertДата: Пятница, 29 Мая 2015, 14:43:44 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
ох, уж эти русифицированные триггеры.
Ты чего опять намудрил-то?)
Зачем Wait удалил, если не используешь альтернативу? И почему теперь нгетотсылки к триггеру Begin, ведь он же создает юнитов. У тебя сейчас получилось, что таймер создается, он истекает и ничего не делает.
Я же тебе скинул рабочую версию. Я лично проверил, все работает, как надо.
 

Samedy_Дата: Пятница, 29 Мая 2015, 14:52:21 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата sumert ()
Я же тебе скинул рабочую версию. Я лично проверил, все работает, как надо.

Да, спасибо тебе. Я понял уже.))
И в общем, спасибо что время на меня потратили. Тему можно закрыть, но перед этим еще маленький вопросик.
Задам тут, ибо новую тему создавать было бы не целесообразно.)
Так вот, у меня в JNGP добавлены новые gui-функции (это же можно так назвать?) Но они как бы пустые совершенно. Из-за чего так? Конфликт с русификатором?
 

НаклзДата: Пятница, 29 Мая 2015, 19:43:00 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Да.
 

Samedy_Дата: Воскресенье, 31 Мая 2015, 09:13:58 | Сообщение # 13
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Спасибо всем, кто отписывался еще раз. SirNikolas, закрывай. :)

Добавлено (31 Мая 2015, 00:02:37)
---------------------------------------------
Раз тему не закрыли, спрошу тут.
Возможно ли сделать так, чтобы у героя всегда максимальный запас маны был 100 и никакие бонусы его не увеличивали?

Добавлено (31 Мая 2015, 00:11:15)
---------------------------------------------

Цитата Samedy_ ()
Раз тему не закрыли, спрошу тут.
Возможно ли сделать так, чтобы у героя всегда максимальный запас маны был 100 и никакие бонусы его не увеличивали?

Отбой по вопросу.

Добавлено (31 Мая 2015, 00:32:03)
---------------------------------------------
Назрел еще вопрос.
Триггером юнитам отдан приказ - бежать к точке, нападая на противников. После того как она приходят к точке - задается новая и он бежит к ней. В той точке здание, которое юниты должны уничтожить, а на пути к нему гер.
После того как эти юниты убивают гера, она возвращаются обратно на исходную позицию. Вопрос: как сделать так, чтобы они никуда не возвращались и продолжали бить здание/других героев, а потом здания?

Добавлено (31 Мая 2015, 09:13:58)
---------------------------------------------
И еще один. :)
Есть Casting unit, который занесен в одноименную переменную без массива. Назовем его UnitA. И есть еще один Casting unit - UnitB. Оба они используют одну и ту же способность.
Вопрос: приведет ли к ошибке то, что у переменной нет массива?

 

НаклзДата: Понедельник, 01 Июня 2015, 10:54:47 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Цитата Samedy_ ()
Назрел еще вопрос.
Триггером юнитам отдан приказ - бежать к точке, нападая на противников. После того как она приходят к точке - задается новая и он бежит к ней. В той точке здание, которое юниты должны уничтожить, а на пути к нему гер.
После того как эти юниты убивают гера, она возвращаются обратно на исходную позицию. Вопрос: как сделать так, чтобы они никуда не возвращались и продолжали бить здание/других героев, а потом здания?

1.Не использовать нейтрально-враждебного игрока, у него свои замашки. Там надо использовать функции из раздела ИИ "Ignore Guard positions" что-то такое, точно не помню.
2.Сделать отлов смерти этого героя (через событие) и потом отдавать приказ на здание.

По поводу второго вопроса вообще не понял, сначала объясни что ты хочешь, это условие, действие? и вообще отсутствие массива может привести к ошибке если использовать Jass (или его другие версии) и там в коде попытаться использовать элемент массива, если переменная вообще без массива. А если на ГУИ то ошибки не будет, потому что ты просто не сможешь указать элемент массива если у переменной нету массива. Однако триггер может работать не так как ты хотел, по этому если приведешь конкретный пример скажу больше.
 

Samedy_Дата: Понедельник, 01 Июня 2015, 12:30:33 | Сообщение # 15
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Наклз, Спасибо большоое за ответ. По поводу второго вопроса, поясню еще раз.
в переменную CastingUnit(боевая единица, галка на массиве не стоит) занесен UnitA, который юзает Благодать.
В тоже в время UnitB, занесенный в ту же переменную CastiinUnit тоже юзает Благодать.
Вопрос: Приведет ли к ошибке то, что они оба в одной переменной без массива?
Если я тебя правильно понял, то нет. Но понял ли правильно ты меня под вопросом)

Добавлено (01 Июня 2015, 12:30:33)
---------------------------------------------
Стоп. ИИ этот для нейтралов? Нейтралов я и так не использую. Юниты принадлежат игроку.
Исправил проблему тем, что просто каждые n сек игрового времени они идут, нападая на всех, к точке.
Вопрос, есть ли другие способы? Так как из-за этого способа они тупят, что облегчает жизнь игроку.
А я карту делаю по большей части для себя, и мне не нужно этого. Ну, потому что другим она просто не нужна... :D

 

sumertДата: Понедельник, 01 Июня 2015, 13:51:35 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
Цитата Samedy_ ()
Есть Casting unit, который занесен в одноименную переменную без массива. Назовем его UnitA. И есть еще один Casting unit - UnitB. Оба они используют одну и ту же способность.
Вопрос: приведет ли к ошибке то, что у переменной нет массива?

Во-первых. ты по ходу понятие не имеешь, что такое массив? МАссив - это группа однотипных переменных, названных одним именем и строго пронумерованные.
Скажем, можно иметь две переменных Unit или один массив Unit, где под индексами 1 и 2 будут эти же переменные.
Цитата Samedy_ ()
В тоже в время UnitB, занесенный в ту же переменную CastiinUnit тоже юзает Благодать.
Вопрос: Приведет ли к ошибке то, что они оба в одной переменной без массива?

Если я правильно понял, ты несколько раз присваиваешь переменной CastingUnit (надеюсь, ты имеешь в виду переменную, а не функцию) различных юнитов. Эта переменная будет равна ПОСЛЕДНЕМУ присвоению.
 

Samedy_Дата: Понедельник, 01 Июня 2015, 16:44:46 | Сообщение # 17
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата sumert ()
будет равна ПОСЛЕДНЕМУ присвоению.

То есть вероятность того, что абилка может багнуться есть и не маленькая? Поэтому лучше юзать в этих случаях индексы, так?
 

sumertДата: Понедельник, 01 Июня 2015, 16:47:43 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
Samedy_, слишком мало информации. По той, что ты дал, ничего не должно багнуться.
 

НаклзДата: Понедельник, 01 Июня 2015, 18:32:53 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Нет. Конечно баг будет. Поясняю на пальцах то что суммерт писал выше:
Ты сохраняешь юнита UnitA в переменную без массива (назовём эту переменную Unit)
Затем ты сохраняешь юнита UnitB в эту же переменную Unit.

После этого, ты делаешь какую-то операцию с переменно Unit, ну например "Убить воина Unit", в таком случае умрут не оба воина, а только UnitB.
 

Samedy_Дата: Понедельник, 01 Июня 2015, 18:41:53 | Сообщение # 20
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Почти об этом и спрашивал. Спасибо за помощь и за то, что вообще отзываетесь. :)
 

sumertДата: Понедельник, 01 Июня 2015, 18:51:08 | Сообщение # 21
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
Цитата Наклз ()
Нет. Конечно баг будет.

Это не баг, норма.
P.S. я Сумерть.
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Таймеры на GUI
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz