собсно вопрос: каким способом можно реализовать такую систему - допустим на юнита использовано заклинание "невидимость", ему при этом дается способность "змеиная ловкость". нужно чтобы через 30 секунд "змеиная ловкость" удалилась из способностей данного юнита (грубо говоря нужно чтобы способность давалась юниту на время,а по истечении опр времени удалялась, при этом на карте у каждого игрока может быть по несколько таких юнитов, короч МУИ). сам пробовал через пики группы юнитов, но очень загружает игру, через массивы таймеров не допер как сделать, если кто знает подскажите как либо покажите на примере, буду благодарен :)
Вопрос остается открытым, ведь если бафф будет сдиспелен способность остается... хотел подредактировать вариант триггера Dragonear(см. картинку xgm.guru/files/100/146859/primer.jpg ) но не знаю нужной функции в джассе :)

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

Я бы на вашем месте использовал "Custom Script", то есть вставил локальные переменные на языке jass. Вышло бы приблизительно так:
Вот рабочий триггер. Никаких глобальных переменных. Работает со множествами игроков и юнитов. Не тормозит карту.
В условиях: (Ability being cast) равно "Здесь поставь способность которая применяется на юнита"
Описываю действия:
  1. Создаем локальную переменную юнита
  2. Даем юниту на которого применяется способность "Невидимость", способность "Змеиная ловкость"
  3. В локальную переменную юнита вписываем юнита на которого применена способность
  4. Ждем тридцать секунд, то есть столько времени, сколько у юнита будет доп. способность "Змеиная ловкость"
  5. По истечении времени забираем у юнита доп. способность "Змеиная ловкость"
В пятой строке 'AEev' - это код способности "Змеиная ловкость"
Если что-то не понятно - обращайся.
Напоминаю - триггер полностью играбельный!
К комментарию добавляю карту с рабочим триггером:
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
11
9 лет назад
Отредактирован Dragonear
2
Я бы на вашем месте использовал "Custom Script", то есть вставил локальные переменные на языке jass. Вышло бы приблизительно так:
Вот рабочий триггер. Никаких глобальных переменных. Работает со множествами игроков и юнитов. Не тормозит карту.
В условиях: (Ability being cast) равно "Здесь поставь способность которая применяется на юнита"
Описываю действия:
  1. Создаем локальную переменную юнита
  2. Даем юниту на которого применяется способность "Невидимость", способность "Змеиная ловкость"
  3. В локальную переменную юнита вписываем юнита на которого применена способность
  4. Ждем тридцать секунд, то есть столько времени, сколько у юнита будет доп. способность "Змеиная ловкость"
  5. По истечении времени забираем у юнита доп. способность "Змеиная ловкость"
В пятой строке 'AEev' - это код способности "Змеиная ловкость"
Если что-то не понятно - обращайся.
Напоминаю - триггер полностью играбельный!
К комментарию добавляю карту с рабочим триггером:
Загруженные файлы
Принятый ответ
0
5
9 лет назад
0
хм, спасибо ребят,буду дома обязательно все проверю
0
11
9 лет назад
0
Не за что)
2
5
9 лет назад
2
спасибо все триггеры рабочие, но у Dragonear реально проще и лучше ) Спасибо
5
24
9 лет назад
Отредактирован prog
5
Castwork, проще то проще, но есть проблема... Нет сброса таймера - если на юнита два раза подряд скастовать способность, дающую дополнительную способность, то дополнительная способность пропадет после истечения первого таймера, а не второго.
Dragonear, да хоть до смерти заминусуйся, а описанная проблема сама никуда не денется.
1
15
9 лет назад
1
А если невидимость прерывается, уклонение же останется. Поэтому вариант с вейтом не очень.
0
24
9 лет назад
Отредактирован prog
0
По хорошему нужна система расширенных кастом данных (через параллельные массивы или через хештаблицу или через любое другое извращение), позволяющая привязать к юниту таймер и дополнительную информацию вроде того, какие дополнительные способности этому юниту выданы.
При обнаружении применения способности выдаем юниту дополнительную и запускаем таймер с небольшим периодом, который проверяет юнита и при необходимости удаляет дополнительную способность.
Я, кстати, делал такое и без привязки таймера к каждому юниту - через группу, которую перебирал пару раз в секунду. Естественно, в группу добавлялись только юниты, для которых была нужна проверка. работало шустро на очень старом железе. Правда дополнительные данные всеравно хранились в хештаблице - без них больше одной такой способности запаришься делать.
0
5
9 лет назад
0
Я, кстати, делал такое и без привязки таймера к каждому юниту - через группу, которую перебирал пару раз в секунду. Естественно, в группу добавлялись только юниты, для которых была нужна проверка. работало шустро на очень старом железе. Правда дополнительные данные всеравно хранились в хештаблице - без них больше одной такой способности запаришься делать.
prog, когда очень много юнитов возникают лаги. я проверял, именно из-за этого триггера, к сожалению :(
0
24
9 лет назад
Отредактирован prog
0
Castwork, просто много юнитов или много юнитов под воздействием особых способностей? Какие проверки делаются для каждого юнита в группе?
И главное, как реализован таймер? Через периодическое событие в ГУИ или через нормальный таймер в JASS?
Последний вопрос вызван тем, что у меня бывало так, что периодическое событие вызывало дикие лаги само по себе - без какой-либо начинки внутри, одним фактом своего присутствия. кажется, именно тогда я и начал всерьез учить jass ибо достало
0
5
9 лет назад
Отредактирован Castwork
0
prog, много юнитов под воздействием абилки и триггера.
таймер через периодическое событие ГУЙ
кажется тоже пора взяться за джасс :(
0
24
9 лет назад
Отредактирован prog
0
Castwork, кстати, если юнитов слишком много, их можно разделять в несколько групп на разных таймерах - помогает. Но у меня до этого дошло когда задействованных юнитов было несколько сотен и нужны были довольно тяжелые проверки с кучей математики.
Но учить jass это маст хев если нужно что-то, срабатывающее чаще чем раз в несколько секунд.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.