Всем здравствуйте, знаете такое заклинание предмет в 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
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
27
5 месяцев назад
0
Можно было вбить название итема в поиск, наверняка, на хайве уже есть такой скилл. Сейчас уже есть кучу навыков из доты, выложенных в виде карты или кода. пс я прошел доту тысячу лет назад, и забыл все, поэтому лучше название итема скидывай. Но кажется в вспоминается, это самый имбовый итем с интеллектом
0
26
5 месяцев назад
0
МрачныйВорон, это Шива. При активации создаёт эффект разлетающихся в разные стороны атак Коатля, и каждого задетого должно разить фростновой единожды. Почему эффект, а не дамми-юнит - там что-то с производительностью было связанно, ибо их там 24+ сразу двигается. По механике аналогично ульте Веномансера. Там что-то типа периодической переборки всех юнитов вокруг кастера, с увеличивающимся радиусом, поэтому можно абузить а покрывать просто огромные расстояния этим уроном...
0
32
5 месяцев назад
0
Extremator, там кастомная модель, разлета снарядов.
Могу скинуть код, он там примитивный.
0
26
5 месяцев назад
0
quq_CCCP:
там кастомная модель, разлета снарядов.
Об этом и речь
создаёт эффект разлетающихся в разные стороны атак Коатля
0
32
5 месяцев назад
0
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
Принятый ответ
0
2
5 месяцев назад
0
((код 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
))
Ухты , а где его нужно вводить? В какую программу?
0
27
5 месяцев назад
Отредактирован MpW
0
Предмет Shiva's Guard (shivas, shiva) способность Arctic Blast

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

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


0
26
5 месяцев назад
0
МрачныйВорон:
просто код скопируй в карту
И оно не будет работать.
0
27
5 месяцев назад
Отредактирован MpW
0
Extremator, да, там код из доты не полностью скопирован. Не хватает несколько функц NTI C81 но их можно выдрать. Не зватает функц очищения. Но можно переделать на таймер, чем дрючить триггер-таймер
0
32
5 месяцев назад
0
NTI - тупо CreateGroup, ну NSI - DestroyGroup
Если в карте нету GroupUtils (прекрасно гуглится на хайве).
Триггер меняем на таймер, но я скинул не для копипаста а для изучения, сложного в коде ничего нету.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.