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

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

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