IIIНекромантIII, в таком случае клич должен ещё и на врагов производить угнетающий эффект. Типа космодесантник и окружающие союзники стали на время сильнее, быстрее и скоростнее с повышением регенерации, а враги ослабли, замедлились, скорость убавилась и регенерация уменьшилась.
quq_CCCP, конечно, интересно же)
P. S. Мне для мемхака устанавливать ничего не надо, просто обычный запуск карты сделаю?
P. P. S. А как, кстати, в данном случае отличить физический урон от магического при атаке жаром преисподней или другим заклинанием?
molot39, только у способности один уровень, ускорение атаки делается за счёт наложения заклинания, бафф которого виден, но там главное правильно поставить описание баффу, однако это страшно при иммунитете к магии, либо развеивании. По идее иммунитет к магии преодолим, если будет стоить заклинание дамми 0 маны, а вот развеивание не знаю. Просто герой задуман как антимаг, а у магов всякие развеивания очень вероятны. В любом случае охота узнать мнение quq_CCCP.
Он имеет ввиду, чтобы ты проверил способность вместе с предметом Огненный плащ или способностью Жар преисподней, не будет ли это считаться атакой юнита, как будет работать, когда много юнитов к тебе подбегает, ведь часть из них как бы будет атакована не в первый раз, а часть в первый одновременно, если эффект будет считаться атакой, естественно.
Nikson12, перечитай сам, у него способности нет в редакторе. Он в самом начале просто орфографическую ошибку допустил, вместо "негеройской" указал "не геройской".
function Trig_Fervor_Conditions takes nothing returns boolean
return GetUnitAbilityLevel(GetAttacker(),'A06C') > 0 and not IsUnitType(GetTriggerUnit(),UNIT_TYPE_STRUCTURE)
endfunction
function Trig_Fervor_Tick takes nothing returns nothing
local unit u
local unit targ
local trigger t = GetTriggeringTrigger()
local hashtable gc = udg_HashCache
local integer s = GetHandleId(t)
local integer lvl = GetUnitAbilityLevel(u,'A06C')
local integer c = 0
if GetTriggerEventId() == EVENT_UNIT_DAMAGED then
set u = LoadUnitHandle(gc,s,1)
if GetEventDamageSource() == u then
set targ = GetTriggerUnit()
set c = GetUnitAbilityLevel(u,'A08T')
if targ != LoadUnitHandle(gc,GetHandleId(u),StringHash("trollfervor")) then
set c = R2I(c/2)
call SaveUnitHandle(gc,GetHandleId(u),StringHash("trollfervor"),targ)
else
set c = c+1
if c > lvl+1 then
set c = lvl+1
endif
endif
call SetUnitAbilityLevel(u,'A08T',c)
set targ = null
endif
set u = null
endif
call TriggerRemoveAction(t,LoadTriggerActionHandle(gc,s,2))
call FlushChildHashtable(gc,s)
call KillTrigger(t)
set t = null
set gc = null
endfunction
function Trig_Fervor takes nothing returns nothing
local unit u = GetAttacker()
local unit targ = GetTriggerUnit()
local trigger t = CreateTrigger()
local integer s = GetHandleId(t)
local hashtable gc = udg_HashCache
local triggeraction ta
if GetUnitAbilityLevel(u,'A08T') == 0 then
call UnitAddAbility(u,'A08T')
endif
call SaveUnitHandle(gc,s,1,u)
call TriggerRegisterUnitEvent(t,targ,EVENT_UNIT_DAMAGED)
call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_ISSUED_ORDER)
call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_ISSUED_POINT_ORDER)
call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_ISSUED_TARGET_ORDER)
call TriggerRegisterTimerEvent(t,2.5,false)
set ta = TriggerAddAction(t,function Trig_Fervor_Tick)
call SaveTriggerActionHandle(gc,s,2,ta)
set u = null
set targ = null
set t = null
set gc = null
set ta = null
endfunction
function InitTrig_Fervor takes nothing returns nothing
set gg_trg_Fervor = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Fervor, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Fervor, Condition( function Trig_Fervor_Conditions ) )
call TriggerAddAction( gg_trg_Fervor, function Trig_Fervor)
endfunction
И в инициализации создаётся хеш-таблица udg_HashCache.
molot39, ещё один гениальный коммент?
Чего-то нынче вопросы и ответы хгм тухнут, уже человек со стороны просто скинул мне ссылку на реализацию способностей тролля в DotA:
pro100master, в DotA это очень нужно, конечно, невероятно просто! Там все атакуют юнита один раз, потом часик где-то бегают, никого не атакуя, потом возвращаются к атакованному юниту, чтобы снова драться)))
Valeera, вижу систему, которая показывает характеристики предметов. Может смысл в каком-то комментарии, но мне он не открылся. quq_CCCP, там у Рексара самое близкое рёв медвежий, который прибавляет процент скорости атаки юнитам.
Нашёл другую OpenDotA, где эта способность есть, а значит и триггер к ней скорее всего тоже. Но выглядит для меня устрашающе, там более 700 неотсортированных триггеров, при этом в JASS я почти не понимаю. Попробую ориентироваться на raw-код способности.
pro100master, механику я понимаю, меня интересует, как именно это должно быть реализовано, чтобы потом не было разных конфликтов (в DotA об этом, наверное, позаботились). Увеличивать скорость стакающимся баффом, способностью или триггерно; отслеживать юнита через сравнение с целью предыдущего удара, либо иначе можно; с увеличением уровня способности во время атаки одного юнита, что будет?
» WarCraft 3 / Стан
» WarCraft 3 / Не знаю какую ульту дать.
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Не знаю какую ульту дать.
Хотя мне идея с орбитальной бомбардировкой понравилась.
Ред. 8gabriel8
» WarCraft 3 / Как сделать способность?
P. S. Мне для мемхака устанавливать ничего не надо, просто обычный запуск карты сделаю?
P. P. S. А как, кстати, в данном случае отличить физический урон от магического при атаке жаром преисподней или другим заклинанием?
Ред. 8gabriel8
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Исчезающие текстуры
» WarCraft 3 / Как сделать способность?
Ред. 8gabriel8
» WarCraft 3 / Москиты
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Как сделать способность?
Ред. 8gabriel8
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Как сделать способность?
Чего-то нынче вопросы и ответы хгм тухнут, уже человек со стороны просто скинул мне ссылку на реализацию способностей тролля в DotA:
» WarCraft 3 / Москиты
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Как сделать способность?
quq_CCCP, там у Рексара самое близкое рёв медвежий, который прибавляет процент скорости атаки юнитам.
» WarCraft 3 / Как сделать способность?
» WarCraft 3 / Способности и текст
» WarCraft 3 / Отрицательное значение для значения "Шкала выбора" у юнита
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Модель, свечения, тимколор
» WarCraft 3 / Способности и алгоритмы на заказ
P. S. А как ты хочешь способность срздавать?