Сейчас 20:02:34 Воскресенье, 26 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Как наносить урон за 1 пройденную клетку?
DreiiДата: Понедельник, 03 Января 2011, 19:37:33 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Как наносить урон за 1 пройденную клетку?

 

EnforcerДата: Понедельник, 03 Января 2011, 19:39:48 | Сообщение # 2
Энф
Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
Создаешь триггер.

Периодическое событие Каждые 0.5 секунд.
Условие - Расстояние между Дамми и Юнитов > 100
Действие
Нанести урон Юниту = Расстоянию между дамми и юниту.
Двигать мгновенно Дами на точку местоположения юнита.


 

DreiiДата: Понедельник, 03 Января 2011, 19:43:51 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Enforcer, а в Jass?
я делал так
Code

local location pt=LoadLocationHandle(Hash,i,2)
local location pt2=GetUnitLoc(t)
local real dx = GetLocationX(pt) - GetLocationX(pt2)
local real dy = GetLocationY(pt) - GetLocationY(pt2)  
if GetUnitAbilityLevel(t, 'BEsh')>0then  
call UnitDamageTarget(u,t,SquareRoot(dx * dx + dy * dy)*0.25,true,false,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
...


но с каждым пройденным шагом расстояние увеличиваеться


 

Banzay89Дата: Понедельник, 03 Января 2011, 20:17:45 | Сообщение # 4
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Dreii, я вот в своей карте сделал скилл на подобии ульты блудсикера из доты, только там каст дамми идет только тогда, когда герой проходит определённое расстояние. Думаю разберёшся

Code
function Thrunder_camp_Actions takes nothing returns nothing
local timer   t=GetExpiredTimer()
local integer Id=GetHandleId(t)
local unit    u=LoadUnitHandle(udg_H, Id, 0)
local real    x=LoadReal(udg_H, Id, 1)
local real    y=LoadReal(udg_H, Id, 2)
local integer lvl=LoadInteger(udg_H, Id, 3)
local integer c=LoadInteger(udg_H, Id, 4)
local unit    d
if c<=80 and GetWidgetLife(u) > 0.405 then
  set c=c+1
   call SaveInteger(udg_H, Id, 4, c)
if SquareRoot((x-GetUnitX(u))*(x-GetUnitX(u))+(y-GetUnitY(u))*(y-GetUnitY(u))) >= 60 then
   set x=GetUnitX(u)
    set y=GetUnitY(u)
     call SaveReal(udg_H, Id, 1, x)
      call SaveReal(udg_H, Id, 2, y)
   set d=CreateUnit(GetOwningPlayer(u),'h004',x,y,0)
    call UnitAddAbility(d,'A01U')
     call SetUnitAbilityLevel(d,'A01U',lvl)
      call IssueImmediateOrder(d, "thunderclap")
       call UnitApplyTimedLife(d, 'BTLF', 1)
        call DestroyEffect(AddSpecialEffect( "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl",x,y))
endif
else
call SetUnitPathing(u, true)
call PauseTimer(t)
call FlushChildHashtable(udg_H, Id)
call DestroyTimer(t)
endif
set  t=null
set  u=null
set  d=null
endfunction

function Trig_thrunder_camp_Actions takes nothing returns nothing
local unit    u=GetSpellAbilityUnit()
local real    x=GetUnitX(u)
local real    y=GetUnitY(u)
local timer   t=CreateTimer()
local integer lvl=GetUnitAbilityLevel(u,'A01T')
local integer c=0
call  SetUnitPathing(u, false)
call  SaveUnitHandle(udg_H, GetHandleId(t), 0, u)
call  SaveReal(udg_H, GetHandleId(t), 1, x)
call  SaveReal(udg_H, GetHandleId(t), 2, y)
call  SaveInteger(udg_H, GetHandleId(t), 3, lvl)
call  SaveInteger(udg_H, GetHandleId(t), 4, c)
call  TimerStart(t, 0.05, true, function Thrunder_camp_Actions)
set   t=null
set   u=null
endfunction

Добавлено (03-01-2011, 20:17)
---------------------------------------------
вобщим наносишь урон, заносишь нынешнюю позицыю юнита в переменную и опять проверяеш не прошол ли юнит нужную дистанцию

 

SirNikolasДата: Вторник, 04 Января 2011, 08:59:17 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Banzay89, а почему ты жизнь сравниваешь с .405?

 

redy5Дата: Вторник, 04 Января 2011, 09:03:31 | Сообщение # 6
8 уровень
Группа: Проверенные
Сообщений: 572
Награды: 0
Репутация: 54
Блокировки:
Я знаю,но это слишком геморно...
Делишь всю карту на области размером с клетку,и при попадании в какуюлибо клетку наносишь герою урон 1 раз


 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz