Arti
offline
Опыт:
11,196Активность: |
Движение дамми
» нубо код
((код jass
function Trig_FireEscort_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A000' endfunction function FireEscort_Move takes nothing returns nothing
local timer t=GetExpiredTimer() local integer id=GetHandleId(t) local unit dummy = LoadUnitHandle(udg_Hashtable,id,1) local real tx
local real ty set tx = GetUnitX(dummy)
set ty = GetUnitY(dummy) call SetUnitX(dummy,tx+30)
call SetUnitY(dummy,ty+30) endfunction
function Trig_FireEscort_Actions takes nothing returns nothing
local unit caster = GetSpellAbilityUnit() local timer t = CreateTimer() local integer id=GetHandleId(t) local unit dummy set dummy = CreateUnit(GetOwningPlayer(caster), 'h000', x+100, y+100, 90 ) call SaveUnitHandle(udg_Hashtable,id,1,dummy)
call TimerStart(t, 1, true, function FireEscort_Move)
endfunction )) координаты меняются, а дамик не двигается... [+] замечание от Nerevar: Капс в названии темы+неинформативное её название
Отредактировано Nerevar, 10.06.2012 в 22:54. |
10.06.2012, 22:13 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
оБАЛДЕТЬ.
У даммика скорость передвижения 0 - вот и не работает. |
10.06.2012, 22:26 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
И вообще утечек полкило.
|
10.06.2012, 22:38 | #3
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Arti
offline
Опыт:
11,196Активность: |
хм, а чего же на гуи двигается со скоростью передвижения 0 ? |
10.06.2012, 23:21 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
На гуи используется SetUnitPosition |
10.06.2012, 23:23 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
а на гуи нет SetUnitX SetUnitY |
10.06.2012, 23:23 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JugHead
offline
Опыт:
1,612Активность: |
Arti, вот держи фасткод, закомментил думаю поймешь, что да как, если что в личку..
» Сам код:
((код jass
function Trig_FireEscort_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A000' endfunction function FireEscort_Move takes nothing returns nothing
local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local unit d = LoadUnitHandle(udg_Hashtable, id, 1) local real a = LoadReal(udg_Hashtable, id, 0) local real x = GetUnitX(d)+30.*Cos(a*0.0174532) local real y = GetUnitY(d)+30.*Sin(a*0.0174532) добавляешь условие, при котором юнит закончит движение, допустим по дистанции или времени, и когда движение закончится втыкай действия: call PauseTimer(t) call FlushChildHashtable(udg_Hashtable, id) call DestroyTimer(t) Опять же освобождаем память от уже использованных значений, которые нам не понадобятся в дальнейшем, и избегаем утечности. call SetUnitPosition(d, x, y) set t = null set d = null endfunction function Trig_FireEscort_Actions takes nothing returns nothing
local unit c = GetSpellAbilityUnit() юнит-кастер local timer t = CreateTimer() local integer id = GetHandleId(t) local real x = GetUnitX(c) local real y = GetUnitY(c) local real a = GetUnitFacing(c) call SaveReal(udg_Hashtable, id, 0, a) call SaveUnitHandle(udg_Hashtable, id, 1, CreateUnit(GetOwningPlayer(c), 'h000', x+100, y+100, a)) call TimerStart(t, 0.04, true, function FireEscort_Move) set t = null// после запуска таймера необходимо его обнулять, иначе будут утечки. set c = null// с юнитом тоже самое endfunction function InitTrig_FireEscort takes nothing returns nothing set gg_trg_FireEscort = CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_FireEscort, EVENT_PLAYER_UNIT_SPELL_CAST) call TriggerAddCondition(gg_trg_FireEscort, Condition(function Trig_FireEscort_Conditions)) call TriggerAddAction(gg_trg_FireEscort, function Trig_FireEscort_Actions) endfunction )) Отредактировано JugHead, 10.06.2012 в 23:39. |
10.06.2012, 23:34 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Arti
offline
Опыт:
11,196Активность: |
JugHead, насчет оптимизации я и так знаю... Хотя ещё вопрос, почему после 30 стоит точка?! |
11.06.2012, 00:11 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JugHead
offline
Опыт:
1,612Активность: |
Arti, 30.00 , если дробной части нету просто ставь точку, ибо используется real значение. |
11.06.2012, 00:17 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,137Активность: |
потому что тебе по русскому написали сделать условия при которых движение остановится |
11.06.2012, 21:45 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Arti
offline
Опыт:
11,196Активность: |
((код jass
local real xt = GetSpellTargetX()
local real yt = GetSpellTargetY() local real xc = GetUnitX(caster) local real yc = GetUnitY(caster) local real angle = bj_RADTODEG * Atan2(xt-xc ,yt- yc) CreateUnit(GetOwningPlayer(caster), 'h000', xc, yc, angle) )) и создаёт на 90 градусов кривее... |
11.06.2012, 23:38 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JugHead
offline
Опыт:
1,612Активность: |
Arti, держи:
((код jass
local unit caster = GetSpellAbilityUnit() local location p = GetSpellTargetLoc() local real xt = GetLocationX(p) local real yt = GetLocationY(p) local real xc = GetUnitX(caster) local real yc = GetUnitY(caster) local real angle = bj_RADTODEG*Atan2(yt-yc ,xt-xc) local unit d = CreateUnit(GetOwningPlayer(caster), 'h000', xc+100*Cos(angle*0.0174532), yc+100*Sin(angle*0.0174532), angle) call RemoveLocation(p) set p = null set caster = null )) Сделал так, все работает. |
12.06.2012, 00:36 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,185Активность: |
Arti, вот карта дуоса, там как раз примеры всех движений даммиков, и прямое движение, и движение с подскоком, и тд., понятные даже гуишникам, + понятные комментарии.... Отредактировано quq_CCCP, 12.06.2012 в 02:12. |
12.06.2012, 01:59 | #13
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Вообще если хочешь писать на жассе - поиск в руки,статьи в зубы и вперед на амбразуру,а то развели тут детский сад |
12.06.2012, 10:25 | #14
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|