|
|
|
|
Таймеры на 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 сек игрового времени они идут, нападая на всех, к точке. Вопрос, есть ли другие способы? Так как из-за этого способа они тупят, что облегчает жизнь игроку. А я карту делаю по большей части для себя, и мне не нужно этого. Ну, потому что другим она просто не нужна...
|
|
|
|
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. я Сумерть.
|
|
|
|
|
|
|
|
|
|
|