Дамми - это юнит которым не может управлять игрок, но которым можно управлять с помощью триггеров и иногда ИИ(Искусственный интелект). Эти юниты используются чаще всего для применения GUI или Jass способностей. Как правильно настроить дамми?
1. Зайдите в PO(Редактор объектов F6). Создайте новую боевую единицу. Например скопируйте стрелка у Альянса. Но ни когда не берите за основу рабочего. 2. Теперь нужно его правильно настроить:
Если вам нужен дамми для применения заклинания, то нужно убрать у него атаку, чтобы после применения своей способности и до момента когда он удалится дамми не атаковал врагов.
Следующее действие: мы убираем тень у дамми, ведь его ни должно быть видно.
У dummy юнита так же нужно убрать файл модели. Чтобы это сделать нужно изменить строку: Графика файл модели и написать там любой текст (главное чтоб он не соответствовал ни одной модели. Я написал ;;;.mdl)
Чтогбы дамми своевольно не передвигался установим ему скорость на 0
А для того чтобы он своевременно применял заклинание даём ему большую скорость поворота.
Чтобы дамми создавался в любой области на карте (например на воде или на заблокированной местности) зделаем его Летающим.
Чтобы наш дамми не мешал для прохода остальным юнитам сделаем его минимально широким.
Теперь самое главное. Делаем юнита не выделяемым для игрока добавляем ему способность "москиты". Юнит становится неуязвимым и его нельзя будет выбрать. Некоторые считают что дамми юниту нужно давать способность "неуязвимый(нейтральный)" чтобы его нельзя было убить например магией, но это не так. Потому что способность "москиты" уже делает юнита абсолютно неуязвимым. P.S. Способность москиты можно дать только в PO(Редактор объектов F6). Триггерно её добавить нельзя.
Чтобы с помощью нашего дамми не открывалось дополнительное поле зрение - установим его на 0
Чтобы дамми не занимал потребление пищи (и не занимал место отведённое для войск) делаем следующее:
Так же советую удалить все возможные параметры. Чем меньше у дамми параметров - тем меньше нагрузка на систему при его создании.(с.) Есть ещё один нюанс с маной. Можно установить её на максимум и при его создании триггером ставить значение на 100%. Но я советую давать дамми скил который не использует маны для применения.
Как сделать чтобы dummy применил способность?
События Боевая единица - Событие Завершает применение способности
Советую применять именно его, но так же можно воспользоваться и другими (по ситуации)
Условия (Применяемая способность) равно (в этом поле находится та способность которую должен применить ваш юнит (чаще всего это способность пустышка на основе канала, об этом я раскажу позднее))
Действия Создаём дамми. Устанавливаем ему таймер истечения 1 секунды вполне достаточно для применения допустим волны силы. Добавляем ему способность которую он должен применить. Устанавливаем ей тот же левл который и у юнита кастера. Приказываем дамми применить нужную способность.
В действиях все способности разделены на 4 группы:
Цель юнит
Цель точка (игровой карты)
Цель декорация
Без указания цели
В зависимости от этих условий, действие для приказа нужно искать в своей категории.
Автор: Zip Версия: 0.2
Сообщение отредактировал UZzip - Среда, 15 Декабря 2010, 23:33:19
Создайте новую боевую единицу. Например скопируйте стрелка у Альянса. Но ни когда не берите за основу рабочего.
Почему это не выбирать рабочего? Самый подходящий юнит для создания дамми - светлячок. У него нет атак, у него нет тени. Его минимально настроить нужно.
Quote (UZzip)
У dummy юнита так же нужно убрать файл модели. Чтобы это сделать нужно изменить строку: Графика файл модели и написать там любой текст (главное чтоб он не соответствовал ни одной модели. Я написал ;;;.mdl)
У дамми нужно ставить файл модели Разрушаемые объекты - стена подъемника а не всякие там ;;;.mdl
к слову. Автор - у дамми нужно так же удалить тень, и удалить ВСЕ возможные параметры. Чем меньше у него параметров - тем меньше нагрузка на систему при его создании. Так же нужно дать достаточно много маны. и скорость поворота поставить на 3.0, тогда он будет поворачиватья мгновенно и не будет задержки перед даммикастом.
Кстати, иногда используется такой прием. Создается триггер событие: юнит умирает. Затем создается локальная переменная, которая присваевается умершему юниту. Затем Wait. И Remove(локальная перменная). при этом у дамми бнита ставится 30 хп и отрицательный реген. В итоге, если дамми юнит случайно не был удален, то он вскоре умрет и удалиться. Конечно, каждый по-разному заботиться об удалении дамми-юнитов, но все же в статье об этом надо было сказать.
sumert, кретинизм. Дамми юниту надо давать таймер жизни. А умирающих юнитов негероев должен удалять триггер через таймер. Вейты, напомню - могут дать баг и юнит останется висеть в памяти.
function removeunittimed takes nothing returns nothing local timer t = GetExpiredTimer() local unit u = LoadUnitHandle(udg_Hash, GetHandleId(t), 1) call RemoveUnit(u) call FlushChildHashtable(udg_Hash, GetHandleId(t)) call DestroyTimer(t) set t = null set u = null endfunction
function RemUT takes unit u, real time returns nothing local timer t = CreateTimer()
call TimerStart(t, time, false, function removeunittimed)
set t = null endfunction
и в любом триггере делаешь событие - юнит умирает, проверка на героя и запускаешь call RemUT(GetTriggerUnit(), 10) и через 10 секунд юнит будет уничтожен.
local unit u = LoadUnitHandle(udg_Hash, GetHandleId(t), 1) call RemoveUnit(u) call FlushChildHashtable(udg_Hash, GetHandleId(t)) call DestroyTimer(t) set t = null set u = null endfunction function RemUT takes unit u, real time returns nothing local timer t = CreateTimer() call SaveUnitHandle(udg_Hash, GetHandleId(t), 1, u) call TimerStart(t, time, false, function removeunittimed) set t = null endfunction