6awka | Дата: Суббота, 04 Августа 2012, 09:31:39 | Сообщение # 1 |
5 уровень
Группа: Пользователи
Сообщений: 144
Награды: 1
Репутация: 35
Блокировки:
| Часто встречаю способности где происходит толкание\притяжение вражеских юнитов. Хочу сделать такое-же, но не пойму как. Взял способность "огненный столб", создал тиггер где выбираются все юниты в радиусе 600 от точки каста, и если они нейтрально враждебны то действие. А дальше понятия не имею что делать.
Помогите, если можно наработку или статью (если есть такая)
|
|
|
|
proten | Дата: Суббота, 04 Августа 2012, 10:23:34 | Сообщение # 2 |
1 уровень
Группа: Пользователи
Сообщений: 7
Награды: 0
Репутация: 0
Блокировки:
| слушай тут недавно была похожая тема введи в поиске крюк если не поможет то помогу тригерно просто пока лень
набираю людей в картостроительную команду подробности здесь http://vk.com/club41514351
|
|
|
|
kapa6acvlk | Дата: Суббота, 04 Августа 2012, 10:55:59 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 612
Награды: 0
Репутация: 361
Блокировки:
| почитай посты, в самом низу пример Добавлено (04 Августа 2012, 10:55:59) --------------------------------------------- http://warcraft3ft.info/forum/22-40889-1
Как говориться, не обязательно есть всю кучу говна, чтобы понять, что она однородна. © Александр Зорич
|
|
|
|
6awka | Дата: Суббота, 04 Августа 2012, 12:31:23 | Сообщение # 4 |
5 уровень
Группа: Пользователи
Сообщений: 144
Награды: 1
Репутация: 35
Блокировки:
| kapa6acvlk, можешь дать ссылку на статьи про
function DistanceBetweenXY takes real x1, real y1, real x2, real y2 returns real return SquareRoot((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) endfunction
function Move takes nothing returns nothing local timer t = GetExpiredTimer() local unit u = LoadUnitHandle(udg_Hash,GetHandleId(t),0) local unit d local unit f local boolean b = LoadBoolean(udg_Hash,GetHandleId(t),2) local real a local real x local real y if(b)then set d = gg_unit_ewsp_0003 set f = gg_unit_ewsp_0001 else set d = gg_unit_ewsp_0001 set f = gg_unit_ewsp_0003 endif if(DistanceBetweenXY(GetUnitX(d),GetUnitY(d),GetUnitX(u),GetUnitY(u))>100.)then set a = Atan2(GetUnitY(d) - GetUnitY(u), GetUnitX(d) - GetUnitX(u)) else call SaveBoolean(udg_Hash,GetHandleId(t),2,not(b)) endif set x = GetUnitX(u) + 25. * Cos(a) set y = GetUnitY(u) + 25. * Sin(a) call SetUnitPosition(u,x,y) set t = null set u = null set d = null set f = null endfunction
function Trig_move_Actions takes nothing returns nothing local timer t = CreateTimer() local unit u = CreateUnit(Player(0),'h000',GetUnitX(gg_unit_ewsp_0001),GetUnitY(gg_unit_ewsp_0001),0.) call SaveUnitHandle(udg_Hash,GetHandleId(t),0,u) call TimerStart(t,0.03,true,function Move) set t = null set u = null endfunction
//=========================================================================== function InitTrig_move takes nothing returns nothing set gg_trg_move = CreateTrigger( ) call TriggerRegisterTimerEventSingle( gg_trg_move, 1.00 ) call TriggerAddAction( gg_trg_move, function Trig_move_Actions ) endfunction и тому подобное???
просто я уже много раз такое встречал, а сам ни сном ни духом. Не то что я совсем нуб (о том как пишутся программы представление имею) просто хотелось бы подробнее узнать про это.
|
|
|
|
L1ke_a_SiR | Дата: Суббота, 04 Августа 2012, 13:20:25 | Сообщение # 5 |
4 уровень
Группа: Проверенные
Сообщений: 99
Награды: 0
Репутация: 39
Блокировки:
| Наработка магнита от Картохи (то что тебе нужно).
Сообщение отредактировал L1ke_a_SiR - Суббота, 04 Августа 2012, 13:20:35 |
|
|
|