Всем здравствуйте, знаете такое заклинание предмет в 1 доте(есть и в 2 доте но мне нужен именно 1) какое то мантия при нажатии холодные снаряды запускаются в разную сторону и замедляет,
Вопрос: как такое сделать ? И чтобы он только наносил урон а не замедлял

function J9O takes nothing returns nothing
  local unit P8I=GetEnumUnit()
  local group JAO=ND0
  local unit P7I=NE0
  if IsUnitInGroup(P8I,JAO)==false then
    call GroupAddUnit(JAO,P8I)
    call IssueTargetOrder(NF0,"slow",P8I)
    set JJI=true
    call DamageTarget(P7I,P8I,1,200)
    set JJI=false
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",P8I,"origin"))
  endif
  set P8I=null
  set JAO=null
  set P7I=null
endfunction

function JBO takes nothing returns boolean
  local trigger t=GetTriggeringTrigger()
  local integer S5I=GetHandleId(t)
  local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
  local unit I01=(LoadUnitHandle(HashData,(S5I),(19)))
  local group JAO=(LoadGroupHandle(HashData,(S5I),(133)))
  local real d
  local real x
  local real x0=GetUnitX(P7I)
  local real y
  local real y0=GetUnitY(P7I)
  local group g=NTI()
  local integer NPI=GetTriggerEvalCount(t)
  local integer i
  call SetUnitX(I01,GetUnitX(P7I))
  call SetUnitY(I01,GetUnitY(P7I))
  set ND0=JAO
  set NE0=P7I
  set NF0=(LoadUnitHandle(HashData,(S5I),(132)))
  if GetTriggerEvalCount(t)>37 then
    call KillUnit(I01)
    call NSI(JAO)
    call FlushChildHashtable(HashData,(S5I))
    call S0I(t)
  else
    set d=NPI*21
    set i=0
    loop
      exitwhen i>36
      set x=x0+d*Cos(360*i/36*bj_DEGTORAD)
      set y=y0+d*Sin(360*i/36*bj_DEGTORAD)
      set GK=P7I
      call GroupEnumUnitsInRange(g,x,y,150,Condition(function C81))
      call ForGroup(g,function J9O)
      set i=i+1
    endloop
  endif
  call NSI(g)
  set t=null
  set I01=null
  set JAO=null
  set P7I=null
  set g=null
  return false
endfunction

function JCO takes nothing returns nothing
  local unit SFI=GetTriggerUnit()
  local real x=GetUnitX(SFI)
  local real y=GetUnitY(SFI)
  local group JAO=NTI()
  local trigger t=CreateTrigger()
  local integer S5I=GetHandleId(t)
  local unit I01=CreateUnit(GetOwningPlayer(SFI),'h091',x,y,0)
  local unit JDO=CreateUnit(GetOwningPlayer(SFI),'e00E',GetUnitX(SFI),GetUnitY(SFI),0)
  call UnitAddAbility(JDO,'A0T0')
  call SaveGroupHandle(HashData,(S5I),(133),(JAO))
  call SaveUnitHandle(HashData,(S5I),(19),(I01))
  call SaveUnitHandle(HashData,(S5I),(132),(JDO))
  call SaveUnitHandle(HashData,(S5I),(2),(SFI))
  call TriggerRegisterTimerEvent(t,0.06,true)
  call TriggerAddCondition(t,Condition(function JBO))
  set t=null
  set JAO=null
  set I01=null
  set JDO=null
  set SFI=null
endfunction

function JEO takes nothing returns nothing
  if GetSpellAbilityId()=='A0T9' then
    call JCO()
  endif
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
27
Можно было вбить название итема в поиск, наверняка, на хайве уже есть такой скилл. Сейчас уже есть кучу навыков из доты, выложенных в виде карты или кода. пс я прошел доту тысячу лет назад, и забыл все, поэтому лучше название итема скидывай. Но кажется в вспоминается, это самый имбовый итем с интеллектом
26
МрачныйВорон, это Шива. При активации создаёт эффект разлетающихся в разные стороны атак Коатля, и каждого задетого должно разить фростновой единожды. Почему эффект, а не дамми-юнит - там что-то с производительностью было связанно, ибо их там 24+ сразу двигается. По механике аналогично ульте Веномансера. Там что-то типа периодической переборки всех юнитов вокруг кастера, с увеличивающимся радиусом, поэтому можно абузить а покрывать просто огромные расстояния этим уроном...
32
Extremator, там кастомная модель, разлета снарядов.
Могу скинуть код, он там примитивный.
26
quq_CCCP:
там кастомная модель, разлета снарядов.
Об этом и речь
создаёт эффект разлетающихся в разные стороны атак Коатля
32
function J9O takes nothing returns nothing
  local unit P8I=GetEnumUnit()
  local group JAO=ND0
  local unit P7I=NE0
  if IsUnitInGroup(P8I,JAO)==false then
    call GroupAddUnit(JAO,P8I)
    call IssueTargetOrder(NF0,"slow",P8I)
    set JJI=true
    call DamageTarget(P7I,P8I,1,200)
    set JJI=false
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",P8I,"origin"))
  endif
  set P8I=null
  set JAO=null
  set P7I=null
endfunction

function JBO takes nothing returns boolean
  local trigger t=GetTriggeringTrigger()
  local integer S5I=GetHandleId(t)
  local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
  local unit I01=(LoadUnitHandle(HashData,(S5I),(19)))
  local group JAO=(LoadGroupHandle(HashData,(S5I),(133)))
  local real d
  local real x
  local real x0=GetUnitX(P7I)
  local real y
  local real y0=GetUnitY(P7I)
  local group g=NTI()
  local integer NPI=GetTriggerEvalCount(t)
  local integer i
  call SetUnitX(I01,GetUnitX(P7I))
  call SetUnitY(I01,GetUnitY(P7I))
  set ND0=JAO
  set NE0=P7I
  set NF0=(LoadUnitHandle(HashData,(S5I),(132)))
  if GetTriggerEvalCount(t)>37 then
    call KillUnit(I01)
    call NSI(JAO)
    call FlushChildHashtable(HashData,(S5I))
    call S0I(t)
  else
    set d=NPI*21
    set i=0
    loop
      exitwhen i>36
      set x=x0+d*Cos(360*i/36*bj_DEGTORAD)
      set y=y0+d*Sin(360*i/36*bj_DEGTORAD)
      set GK=P7I
      call GroupEnumUnitsInRange(g,x,y,150,Condition(function C81))
      call ForGroup(g,function J9O)
      set i=i+1
    endloop
  endif
  call NSI(g)
  set t=null
  set I01=null
  set JAO=null
  set P7I=null
  set g=null
  return false
endfunction

function JCO takes nothing returns nothing
  local unit SFI=GetTriggerUnit()
  local real x=GetUnitX(SFI)
  local real y=GetUnitY(SFI)
  local group JAO=NTI()
  local trigger t=CreateTrigger()
  local integer S5I=GetHandleId(t)
  local unit I01=CreateUnit(GetOwningPlayer(SFI),'h091',x,y,0)
  local unit JDO=CreateUnit(GetOwningPlayer(SFI),'e00E',GetUnitX(SFI),GetUnitY(SFI),0)
  call UnitAddAbility(JDO,'A0T0')
  call SaveGroupHandle(HashData,(S5I),(133),(JAO))
  call SaveUnitHandle(HashData,(S5I),(19),(I01))
  call SaveUnitHandle(HashData,(S5I),(132),(JDO))
  call SaveUnitHandle(HashData,(S5I),(2),(SFI))
  call TriggerRegisterTimerEvent(t,0.06,true)
  call TriggerAddCondition(t,Condition(function JBO))
  set t=null
  set JAO=null
  set I01=null
  set JDO=null
  set SFI=null
endfunction

function JEO takes nothing returns nothing
  if GetSpellAbilityId()=='A0T9' then
    call JCO()
  endif
endfunction
Принятый ответ
2
((код jass
function J9O takes nothing returns nothing
local unit P8I=GetEnumUnit()
local group JAO=ND0
local unit P7I=NE0
if IsUnitInGroup(P8I,JAO)==false then
call GroupAddUnit(JAO,P8I)
call IssueTargetOrder(NF0,"slow",P8I)
set JJI=true
call DamageTarget(P7I,P8I,1,200)
set JJI=false
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",P8I,"origin"))
endif
set P8I=null
set JAO=null
set P7I=null
endfunction
function JBO takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer S5I=GetHandleId(t)
local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
local unit I01=(LoadUnitHandle(HashData,(S5I),(19)))
local group JAO=(LoadGroupHandle(HashData,(S5I),(133)))
local real d
local real x
local real x0=GetUnitX(P7I)
local real y
local real y0=GetUnitY(P7I)
local group g=NTI()
local integer NPI=GetTriggerEvalCount(t)
local integer i
call SetUnitX(I01,GetUnitX(P7I))
call SetUnitY(I01,GetUnitY(P7I))
set ND0=JAO
set NE0=P7I
set NF0=(LoadUnitHandle(HashData,(S5I),(132)))
if GetTriggerEvalCount(t)>37 then
call KillUnit(I01)
call NSI(JAO)
call FlushChildHashtable(HashData,(S5I))
call S0I(t)
else
set d=NPI*21
set i=0
loop
exitwhen i>36
set x=x0+d*Cos(360*i/36*bj_DEGTORAD)
set y=y0+d*Sin(360*i/36*bj_DEGTORAD)
set GK=P7I
call GroupEnumUnitsInRange(g,x,y,150,Condition(function C81))
call ForGroup(g,function J9O)
set i=i+1
endloop
endif
call NSI(g)
set t=null
set I01=null
set JAO=null
set P7I=null
set g=null
return false
endfunction
function JCO takes nothing returns nothing
local unit SFI=GetTriggerUnit()
local real x=GetUnitX(SFI)
local real y=GetUnitY(SFI)
local group JAO=NTI()
local trigger t=CreateTrigger()
local integer S5I=GetHandleId(t)
local unit I01=CreateUnit(GetOwningPlayer(SFI),'h091',x,y,0)
local unit JDO=CreateUnit(GetOwningPlayer(SFI),'e00E',GetUnitX(SFI),GetUnitY(SFI),0)
call UnitAddAbility(JDO,'A0T0')
call SaveGroupHandle(HashData,(S5I),(133),(JAO))
call SaveUnitHandle(HashData,(S5I),(19),(I01))
call SaveUnitHandle(HashData,(S5I),(132),(JDO))
call SaveUnitHandle(HashData,(S5I),(2),(SFI))
call TriggerRegisterTimerEvent(t,0.06,true)
call TriggerAddCondition(t,Condition(function JBO))
set t=null
set JAO=null
set I01=null
set JDO=null
set SFI=null
endfunction
function JEO takes nothing returns nothing
if GetSpellAbilityId()=='A0T9' then
call JCO()
endif
endfunction
))
Ухты , а где его нужно вводить? В какую программу?
27
Предмет Shiva's Guard (shivas, shiva) способность Arctic Blast

Super cool, просто код скопируй в карту, и никакой программы не нужно. Единственное, что триггер инициируй с хэш-таблицей.
  1. создаешь переменную хэш-таблицу с названием Hash, ведь нам надо в коде выше HashData заменить. Создаешь триггер с событием инициализации. Типа на старте нужно создать таблицу set Hash = InitHashTable() могу ошибаться, ту ли нативку прописал, посмотри в статье про хэш-таблицу
  2. Берешь создаешь пустой триггер с событием юнит применчет способность, затем конвентируй в код, функцию инициализации с событием/условием/действии кода не удаляй. В них надо проставить названия функции выше. далее копируешь выше код, и вставляешь.

Или заходи в дискард. Там люди научат


26
МрачныйВорон:
просто код скопируй в карту
И оно не будет работать.
27
Extremator, да, там код из доты не полностью скопирован. Не хватает несколько функц NTI C81 но их можно выдрать. Не зватает функц очищения. Но можно переделать на таймер, чем дрючить триггер-таймер
32
NTI - тупо CreateGroup, ну NSI - DestroyGroup
Если в карте нету GroupUtils (прекрасно гуглится на хайве).
Триггер меняем на таймер, но я скинул не для копипаста а для изучения, сложного в коде ничего нету.
2
((код jass
function J9O takes nothing returns nothing
local unit P8I=GetEnumUnit()
local group JAO=ND0
local unit P7I=NE0
if IsUnitInGroup(P8I,JAO)==false then
call GroupAddUnit(JAO,P8I)
call IssueTargetOrder(NF0,"slow",P8I)
set JJI=true
call DamageTarget(P7I,P8I,1,200)
set JJI=false
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",P8I,"origin"))
endif
set P8I=null
set JAO=null
set P7I=null
endfunction
function JBO takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer S5I=GetHandleId(t)
local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
local unit I01=(LoadUnitHandle(HashData,(S5I),(19)))
local group JAO=(LoadGroupHandle(HashData,(S5I),(133)))
local real d
local real x
local real x0=GetUnitX(P7I)
local real y
local real y0=GetUnitY(P7I)
local group g=NTI()
local integer NPI=GetTriggerEvalCount(t)
local integer i
call SetUnitX(I01,GetUnitX(P7I))
call SetUnitY(I01,GetUnitY(P7I))
set ND0=JAO
set NE0=P7I
set NF0=(LoadUnitHandle(HashData,(S5I),(132)))
if GetTriggerEvalCount(t)>37 then
call KillUnit(I01)
call NSI(JAO)
call FlushChildHashtable(HashData,(S5I))
call S0I(t)
else
set d=NPI*21
set i=0
loop
exitwhen i>36
set x=x0+d*Cos(360*i/36*bj_DEGTORAD)
set y=y0+d*Sin(360*i/36*bj_DEGTORAD)
set GK=P7I
call GroupEnumUnitsInRange(g,x,y,150,Condition(function C81))
call ForGroup(g,function J9O)
set i=i+1
endloop
endif
call NSI(g)
set t=null
set I01=null
set JAO=null
set P7I=null
set g=null
return false
endfunction
function JCO takes nothing returns nothing
local unit SFI=GetTriggerUnit()
local real x=GetUnitX(SFI)
local real y=GetUnitY(SFI)
local group JAO=NTI()
local trigger t=CreateTrigger()
local integer S5I=GetHandleId(t)
local unit I01=CreateUnit(GetOwningPlayer(SFI),'h091',x,y,0)
local unit JDO=CreateUnit(GetOwningPlayer(SFI),'e00E',GetUnitX(SFI),GetUnitY(SFI),0)
call UnitAddAbility(JDO,'A0T0')
call SaveGroupHandle(HashData,(S5I),(133),(JAO))
call SaveUnitHandle(HashData,(S5I),(19),(I01))
call SaveUnitHandle(HashData,(S5I),(132),(JDO))
call SaveUnitHandle(HashData,(S5I),(2),(SFI))
call TriggerRegisterTimerEvent(t,0.06,true)
call TriggerAddCondition(t,Condition(function JBO))
set t=null
set JAO=null
set I01=null
set JDO=null
set SFI=null
endfunction
function JEO takes nothing returns nothing
if GetSpellAbilityId()=='A0T9' then
call JCO()
endif
endfunction
))
Так стоп.. а где здесь
Событие?
Условие?
Действия???
32
Как где, не видно? TriggerCondition, тут все в условиях написано.
Код Jass, собвственно все что надо таймер, дамми юнит с модлью кольца и группа, по малому периоду двигаем даммика за юнитом кастером и выбираем всех врагов вокруг, с каждым тиком таймера увеличиваем радиус поиска группы, тех кто уже попался отсеиваем, а тех кто попался впервые дамажим, замедление делается дамми юнитом кидающим ледяную звезду в себя, урон по площяди убран, только замедление.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.