| Дата: Четверг, 29.09.2011, 17:33 | Сообщение # 1 |
Полковник
Сообщений: 228
|
Меня терзает такой вапрос: я хочу чтоб у меня заклинание "безмолвие" было пасивной аурой, тоесть повторялось каждую секунду (например, чародейская аура) и так всегда. Подскажите плиз через какие тригеры ето зделать?
Есть сторона зла и сторона добра. Берем середину ^_^
|
|
|
|
|
| Дата: Пятница, 30.09.2011, 17:57 | Сообщение # 3 |
Подполковник
Сообщений: 144
|
мммм можно сделать так -События ---Каждые 0.01 секунд -Условия ---((Атакующий юнит) герой Маг) равно Да -Дейтсвия ---Боевая еденица - Использовать заклинание Безмолвие на Атакованный юнит
только безмолвие будет работать при атаке
|
|
|
|
| Дата: Пятница, 30.09.2011, 18:18 | Сообщение # 4 |
Полковник
Сообщений: 228
|
хороший вариант , но мне надо чуть другое)
Есть сторона зла и сторона добра. Берем середину ^_^
|
|
|
|
| Дата: Воскресенье, 02.10.2011, 00:11 | Сообщение # 5 |
Генералиссимус
Сообщений: 2438
|
Quote (Random_chel) -Каждые 0.01 секунд Хорошо, что я не админ, за такие события банил бы к чертям))) Вы хоть представляете что такое 1 сотая секунды ???? Или что может за это время сделать варик? А например, на сколько мусорный тригге размножающийся со скоростью 100 клонов в секунду сможет засрать озу?
Причем тут атака тоже не совсем ясно)) ибо прикрепления к событию то нет. Если это работает ( в условиях отсутствия триггеров изменяющих переменную BJ_AttakingUnit ), то снимаю шляпу и в очередной раз вспоминаю близзардов плохим словом.
Путь был правильный у вас)))
Но я никак не пойму, почему вы не умеете использовать ПИКЕД ЮНИТ!?!?!? Эта функция просто не заменима! Объясню, что она делает ([dashed]ВНИМАНИЕ ПИШУ ТОК 1 РАЗ И ХРЕН ГДЕ ПОВТАРЮ[/dashed])
На англ: (unit group - piked unit) На русском: юзайте англ. код. Русский изврат и не используется никогда как первичный или основной. Категория: Отряд (unit group) Название: Pick Every Unit In Unit Group And Do Multiple Actions
Переоценить важность этой функции - чрезвычайно сложно. Она действует по принципу "For" т.е. организовывает цикл и перебирает необходимые данные. Что это за данные? Буду объяснять на понятном языке без всяких: Она попросту перебирает юнитов, подходящих под заданные условия.
Для примера я использовал условие: Units in range(600.00 of unit position(Верховный маг)) Таким образом, все дальнейшие действия, если их указать для picked unit, будут выполнены для всех юнитов, что в данный момент находятся в радиусе 600 от героя, пример:
Спецэффект - Create speceffect at unit position(position of picked unit), я оставил тот, что у меня был по стандарту.
т.к. событие я назначил "каждые 1 сек", то необходимо предпринять хоть какие-то попытки по устранению утечек памяти. Ставим: Destroy speceffect(Last created speceffect)
В итоге спецэффект проиграется и тут же получит команду уничтожится, полностью от утечек это нас не избавит, но через пол часа такой игры, вы не зависните точно.
И так что мы имеем? ------------------------------------------------------ Событие: периодическое, каждые 1 сек. Условие: [dashed]нет[/dashed] Действие: Пик всех, кто в ренже проиграть анимацию на позиции пикнутого юнита удалить последнюю созданную анимацию ------------------------------------------------------
Если запустите карту то увидите "пикед" в действии. Без него триггер бы занимал кучу гуи в несколько триггеров и массу утечек. Те, кто знают jass мучились бы меньше, да и вообще бы не мучились профи, но так или иначе эта функция упрощает жизнь.
Вернемся к просьбе автора темы и приблизим наработку к его вопросу.
По сути триггер готов, но не хватает мелочей, например: Под данное условие попадает, и сам верховный маг, поэтому, необходимо исключить его из выборки. Тут есть 2 варианта: 1) изменяем условие, т.е. конструируем его через "and" и к тому, что есть, дописываем юнит компарисон -> юнит не равно верховный маг. 2) добавляем условие уже в сам пикед (см. наработку)
Всегда в else я ставлю Do nothing т.к. в ранних версиях его отсутствие вызывало сбой.
Немного лучше, но мы снова кое что упустили! Ведь скилл должен работать только если у нас есть чародейская аура! Ок, ставим условие (в основной триггер): Integer comparison -> Unit- lvl of ability for unit больше или равно 1
C таким условием наш триггер будет срабатывать и крутить только если у героя есть чародейская аура.
Необходима зависимость от уровня скилла? Например, будет меняться расстояние: удобнее всего его разделить на уровни, например всего 600 максимум ренж и уровней 6. 600/6 = 100 т.е. в условии вместо 600 мы ставим: арифметик -> 100.00 * (преобразование-> Integer To Real -> lvl of ability for unit) В итоге ренж на 1 уровне у нас будет 1*100 = 100 на 2: 2*100 = 200 и т.д.
Для полного кайфа осталось только силенс прописать каждому, правда?) Я не стал заморачиваться, написал и так много + время у меня нынче дорого стоит.
Но, подскажу, как сделать: Необходимо создать дамми юнита и дать ему безоткатный скилл с требованием 0 маны и ренжем на всю карту( тогда не придется его ни таскать ни пересоздавать по 500 раз, засерая память) - сало. И заставлять кидать сало на каждого пикнутого юнита.
Ну, вот вроди и всё, надеюсь, не возникнет вопросов как это сделать для многопользовательской игры. Тут просто вместо верховного мага сделаешь переменную или будешь распознавать по типу. И лучше бы не допускать возможности играть таким персонажем нескольким игрокам одновременно, будут ошибки в работе триггера.
Ну вот, надеюсь научитесь пикедом пользоваться, а то я в темах пишу про него и никто не понимает.
Напоминаю, начинающим jass'ерам:
Не используйте локальные переменные в гуи пикеда и фора, триггер сконструирован так, что фор и пикед крутятся отдельно и в них локальные переменные не действуют.
Сообщение отредактировал DonLaonda - Воскресенье, 02.10.2011, 00:20 |
|
|
|
| Дата: Воскресенье, 02.10.2011, 09:33 | Сообщение # 6 |
Подполковник
Сообщений: 144
|
ай яй яй извиняйте, я тогда бухой был не то написал, я даже сам не понял что я написал
Сообщение отредактировал Random_chel - Воскресенье, 02.10.2011, 09:37 |
|
|
|