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

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

оказывается, во втором триггере я использовал ту же переменную индекса, что и в первом. Melissa и naxim , спасибо вам =)
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
25
9 лет назад
0
Массив не пашит, что ли?
0
20
9 лет назад
0
Nosferoh:
Массив не пашит, что ли?
Nosferoh:
таймер не выбрать.
Загруженные файлы
2
32
9 лет назад
2
Ты индекс то впиши, не выбрать - все выбрать...
Ты думал что он тебе инвет на весь массив сделает, размечтался для каждой ячейки в массиве будешь делать ивент, причем таймеры то должны быть созданы.
0
20
9 лет назад
Отредактирован ssbbssc
0
quq_CCCP:
Ты индекс то впиши, не выбрать - все выбрать...
Ты думал что он тебе инвет на весь массив сделает, размечтался для каждой ячейки в массиве будешь делать ивент, причем таймеры то должны быть созданы.
Но ведь если я впишу индекс, допустим, 1, то у меня таймер будет отлавливаться только для первого юнита?
Как-то стремно делать кучу евентов с разными номерами индекса для таймера
0
32
9 лет назад
0
Ну все верно, 0 для 1, 1 для 2 и так далее, на все что есть...
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 самые лёгкие.
0
20
9 лет назад
0
Melissa:
велью использовать получится, да, но у меня индексер юнитов уже его занимает.
Сейчас попробую кое-что по предложению naxim'a, если не выйдет - по-твоему способу
2
24
9 лет назад
Отредактирован Melissa
2
Вообще-то там не совсем способ, скорее ответ на вопрос почему переменная не выбирается. Не углублялся в дискуссию вашу (про кв глаз остановился пока страницу вниз мотнул)
ssbbssc:
но у меня индексер юнитов уже его занимает
Секунду, а по твоему я что предлагал делать с КВ???
КВ нужно для индексации, чтобы заводить неограниченное количество данных на любой юнит
0
20
9 лет назад
0
оказывается, во втором триггере я использовал ту же переменную индекса, что и в первом. Melissa и naxim , спасибо вам =)
Принятый ответ
2
17
9 лет назад
Отредактирован naxim
2
  1. Реализовал на хеш-таблицах для таймеров со случайным временем.
  1. Реализовал ещё один вариант для таймеров со случайным временем. Теперь без использования хеш-таблиц.
0
20
9 лет назад
0
naxim:
спасибо, пополнил багаж знаний
Чтобы оставить комментарий, пожалуйста, войдите на сайт.