Добавлен
Господа, создал таймер с индексом, на каждый каст спелла к индексу прибавляется 1 и запускается таймер. Однако, при создании 2 триггера, столкнулся с тем, что в Event type - Time - Timer expires при выборе моего таймера в окне индекса нельзя выбрать ни 1 переменной. Подскажите выход.

Принятый ответ

оказывается, во втором триггере я использовал ту же переменную индекса, что и в первом. Melissa и naxim , спасибо вам =)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
17
9 лет назад
Отредактирован naxim
2
Можно триггерно создавать новый триггер и назначать ему новое событие с нужным индексом. Могу сделать карту-пример.
0
20
9 лет назад
0
naxim:
ты подкинул мне отличную идею, точнее напомнил про одну полезную функцию. сейчас попробую
0
17
9 лет назад
0
ssbbssc:
naxim:
ты подкинул мне отличную идею, точнее напомнил про одну полезную функцию. сейчас попробую
Какую функцию?
naxim:
Можно триггерно создавать новый триггер и назначать ему новое событие с нужным индексом. Могу сделать карту-пример.
Уже написал, а теперь понял, что индекс и этим способом не достать.
Но если вместо таймера использовать "Wait" и локальные переменные в одном триггере, то получится.
0
20
9 лет назад
0
naxim:
ssbbssc:
naxim:
ты подкинул мне отличную идею, точнее напомнил про одну полезную функцию. сейчас попробую
Какую функцию?
naxim:
Можно триггерно создавать новый триггер и назначать ему новое событие с нужным индексом. Могу сделать карту-пример.
Уже написал, а теперь понял, что индекс и этим способом не достать.
Но если вместо таймера использовать "Wait" и локальные переменные в одном триггере, то получится.
я потому и использую таймеры, ибо wait мне не нравится. а функиция - добавление event response, то есть я впихиваю событие с таймером и с нужным индексом в триггер. однако триггер с таймером сработал только один раз и больше не фурычил =\
В общем, я пытаюсь создать способность, которая будет увеличивать для каждого кастера свою переменную на короткое время. Кастом велью использовать не получится.
0
17
9 лет назад
0
Подскажите выход.
А у тебя каждый таймер запускается на одинаковое количество секунд? Если да, я догадываюсь, как можно отследить индекс.
ssbbssc:
однако триггер с таймером сработал только один раз и больше не фурычил =\
Можно создавать триггер действием, новым действием задавать ему событие. Пусть единственным действием созданного триггера будет вызов нужного тебе триггера.
0
20
9 лет назад
0
naxim:
Подскажите выход.
А у тебя каждый таймер запускается на одинаковое количество секунд? Если да, я догадываюсь, как можно отследить индекс.
ssbbssc:
однако триггер с таймером сработал только один раз и больше не фурычил =\
Можно создавать триггер действием, новым действием задавать ему событие. Пусть единственным действием созданного триггера будет вызов нужного тебе триггера.
Да, на 20 секунд. Если не трудно, напиши карту пример, я уже убегаю по делам.
2
17
9 лет назад
Отредактирован naxim
2
Да, на 20 секунд. Если не трудно, напиши карту пример, я уже убегаю по делам.
Напишу. Жди.
Таймеры идут одинаковое время. Отсюда следует, что первый запущенный таймер завершится только первым. Второй запущенный - только вторым. Третий - только третьим. Они не могут поменяться местами, а значит, инкрементом можно отследить их индекс.
Либо, если бы у тебя были таймеры с разным временем, но версия Warcraft III не меньше 1.26 (в нём добавили хеш-таблицы), то с помощью хеш-таблиц, если я их правильно понимаю, можно отследить индекс.
ssbbssc:
однако триггер с таймером сработал только один раз и больше не фурычил =\
Внезапно обнаружил. До какого индекса будут создаваться таймеры, определяет "Раз.". Например, если бы ты указал "Раз." равным 5, у тебя бы сработало 5 таймеров.
Чтобы это обойти, , перед запуском таймера, нужно создавать новый таймер строкой кода "Custom script: set udg_TheTimer[udg_TheTimerIndex] = CreateTimer()".
Сделал и прикрепляю карту с первым способов (инкремент). Попробую ещё с помощью хеш-таблиц.
Загруженные файлы
0
29
9 лет назад
Отредактирован Doc
0
Одна группа юнитов, одна хеш таблица.
При касте добавляем кастера в группу, записываем в хештаблице на этого юнита integer timeRemaining = 5 (например), записываем на него нужное значение в ту же хештаблицу.
Делаем триггер который срабатывает каждую секунду.
В нем для всех юнитов в нашей группе уменьшаем timeRemaining на 1, если timeRemaining == 0, убираем из группы, уменьшаем нужное значение.
Доступно?
Будет погрешность от 0 до 1 секунды, если не нравится - делаем период триггера 0.01, действия те же.
И да вы все тут пытаетесь симулировать хеш-таблицы или параллельные массивы через индексы, когда вам уже все инструменты даны.
0
17
9 лет назад
0
С хеш-таблицами не разобрался.
Doc:
И да вы все тут пытаетесь симулировать хеш-таблицы или параллельные массивы через индексы, когда вам уже все инструменты даны.
Приведи цитаты всех, где мы пытаемся.
0
29
9 лет назад
0
Б-же это не тредик для срача. Цитаты я еще должен ему приводить, пфф.
Я просто скажу, что твой код не подходит и работать как нужно автору не будет.
Мое правильно реализованное предложение будет работать идеально в любых условиях.
За сим удаляюсь, заранее пожалуйста.
0
24
9 лет назад
Отредактирован Melissa
0
Ты не влепишь событие Таймер[переменная] истекает в начальный вид карты или как это лучше сказать.
Чему равна твоя переменная на данный момент, пока ты в редакторе? 0. Или заданному значению в редакторе переменных.
Значит в код пойдёт "Истекает таймер 0 (или начальное значение)" а это значит что? Что это всё равно что постоянную(а не переменную) поставить в событие или попросту говоря индекс 1,2,3 ... Поэтому и не дают тебе переменную влепить.
Но ты можешь конвертировать в текст и влепить в тексте переменную, ошибки выдавать он не должен но это тебя не спасёт, только 0 будет работать.
Циклом Добавляй событие в этот триггер - от 1 до 228 триггер - добавить новое событие - Таймер[A] истекает
Ну или увеличивай свою переменную и добавляй так событие при касте.
ssbbssc:
Кастом велью использовать не получится
CV всегда использовать получится, если что. Вообще системы через нумеровку CV самые лёгкие.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.