Хочу спросить, как добавить эффект к юниту, которого призываешь. Допусти хочу призвать дха воды, и чтобы при его появлении появлялся эффект чего нибудь на время. Это ведь делается без триггеров? Или как это сделать?

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

Создать эффект, занести в локальную переменную с помощью кастом скрипта (1 строчка), вейт, удалить с помощью кастом скрипта (2 строчки) Не рекомендую.
Создать эффект, создать таймер, удалить эффект по истечению таймера (способ передачи эффекта в таймер на твой вкус - глобальные переменные, массивы хэш-таблицы, вроде все перечислил, что на гуях легко сделать)
Как сделать конкретно - идем сюда и читаем, читаем. Это полезно и уменьшит количество появляющихся при работе с редактором вопросов в дальнейшем.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
19
5 лет назад
2
Похожие вопросы:

ответ
Ты это для опыта все такие вопросы задаешь?
Убрать у скила такое последствие или триггерно(как всегда).Поставь своему магу 0манны и скилу 0 и кд на скилл и отниматься не чего не будет.
ответ
Нет, дело в том что ветра и шипы неруба берут модель героя и крепят к кости спецэффекта, а потом ставят все на место ( Юнит а это время стоит на земле). Так что только кастом шипы. Можно посмотреть код в доте Фрога, там кто то умный писал заменитель шипов для доты.
ответ
В РО, такое невозможно сделать. Подробно на триггерах? Ну вот пример, а если нужно ещё подробнее, то учебник по Jass в руки.
На проклятие в РО,или любой другой спелл,ставится минимальная дистанция
function Trig_Spell_Actions takes nothing returns nothing
local location loc = Location(GetWidgetX(GetSpellAbilityUnit()),GetWidgetY(GetSpellAbilityUnit()))
local unit u = null
if GetSpellAbilityId() == 'АЙ ДИ СКИЛЛА' then
set u = CreateUnitAtLoc(GetOwningPlayer(GetSpellAbilityUnit()),'АЙ ДИ ДАММИ ЮНИТА-ЭФФЕКТА',loc,0.00)
call IssueTargetOrder(u,"curse",GetSpellTargetUnit())
endif
call RemoveLocation(loc)
set loc = null
endfunction

//===========================================================================
function InitTrig_Spell takes nothing returns nothing
    local integer i = 0
    set gg_trg_Spell = CreateTrigger()
    loop 
    exitwhen i > 12
        call TriggerRegisterPlayerUnitEvent(gg_trg_Spell, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
    set i = i + 1
    endloop
    call TriggerAddAction( gg_trg_Spell , function Trig_Spell_Actions )
endfunction
Потом тоже самое, только отследить каст проклятия, проверить тип юнита и удалить его из игры.
ответ
~8gabriel8:
ответ
Drulia_san, Ну да.
Добавляешь аурку - вот тебе баф на юните. Самый простой способ как по мне.
+Можно эффекты настроить, что вполне неплохо. Пока висит фейковый баф(наша аура) - на юните есть эффект.
Через дамми касты я пробовал, но долго+муторно+подключается дамми система = +лаги и местами утечки.
Насчёт таймаута - это уже по самим спеллам, я долго мучался чтобы оно всё работало как надо и не оверлапалось
Вот такой штукой у меня удаляется баф:
public function unitRemoveAbilityandBuffBY(unit u,integer dhv,integer mLv) returns boolean
	boolean b=UnitRemoveAbility(u,dhv)
  	UnitMakeAbilityPermanent(u,false,dhv)
  	UnitRemoveAbility(u,mLv)
	return b

0
5
5 лет назад
Отредактирован Wadimiru
0
Создать эффект, занести в локальную переменную с помощью кастом скрипта (1 строчка), вейт, удалить с помощью кастом скрипта (2 строчки) Не рекомендую.
Создать эффект, создать таймер, удалить эффект по истечению таймера (способ передачи эффекта в таймер на твой вкус - глобальные переменные, массивы хэш-таблицы, вроде все перечислил, что на гуях легко сделать)
Как сделать конкретно - идем сюда и читаем, читаем. Это полезно и уменьшит количество появляющихся при работе с редактором вопросов в дальнейшем.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.