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