Spaier
offline
Опыт:
128Активность: |
FireBall проблема
Второй спелл на Jass. Хотел сделать фаерболл, но дамми телепортируется вместо движения. Сам проблему найти не смог.
» раскрыть library F hashtable H = InitHashtable() function DBT takes real x1, real y1, real x2, real y2 returns real return SquareRoot((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) endfunction endlibrary library Firaga takes F private integer FD = 'h000' //Дамми private real DMG = 100 //Урон private integer Firaga = 'A002' //Способность private real speed = 20 //Скорость private string se = "Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl" //Взрыв function FCond takes nothing returns boolean return GetSpellAbilityId() == Firaga endfunction function Handler takes nothing returns nothing timer t = GetExpiredTimer() int id = GetHandleId(H) unit u = LoadUnitHandle(H, id, 0) unit ue = LoadUnitHandle(H, id, 1) unit d = LoadUnitHandle(H, id, 2) real xd = GetUnitX(d) real yd = GetUnitY(d) real x1 = GetUnitX(ue) real y1 = GetUnitY(ue) real a = Atan2(y1-yd, x1-xd) BJDebugMsg("3") if (DBT(xd, yd, x1, y1)>40.) then SetUnitX(d, xd+speed*Cos(a)) SetUnitY(d, yd+speed*Sin(a)) BJDebugMsg("4") else DestroyEffect(AddSpecialEffect(se, x1, y1)) UnitDamageTarget(u,ue,DMG,false,false,null,null,null) BJDebugMsg("5") RemoveUnit(d) FlushChildHashtable(H,id) PauseTimer(t) DestroyTimer(t) endif d = null ue = null u = null t = null endfunction function TrigFiraga takes nothing returns nothing timer t = CreateTimer() int id = GetHandleId(H) unit u = GetSpellAbilityUnit() unit ue = GetSpellTargetUnit() real x = GetUnitX(u) real y = GetUnitY(u) real f = GetUnitFacing(u) BJDebugMsg("1") SaveUnitHandle(H, id, 0, u) SaveUnitHandle(H, id, 1, ue) SaveUnitHandle(H, id, 2, CreateUnit(GetOwningPlayer(u),FD, x+50.*Cos(f*bj_DEGTORAD), y+50.*Sin(f*bj_DEGTORAD), f)) TimerStart(t, 0.025, true, function Handler) BJDebugMsg("2") u = null ue = null t = null endfunction function InitTrig_Firaga takes nothing returns nothing set gg_trg_Firaga = CreateTrigger( ) TriggerRegisterAnyUnitEventBJ(gg_trg_Firaga, EVENT_PLAYER_UNIT_SPELL_EFFECT) TriggerAddCondition(gg_trg_Firaga, Condition(function FCond)) call TriggerAddAction( gg_trg_Firaga, function TrigFiraga ) endfunction endlibrary Заменил код, не то кидал. Отредактировано Spaier, 16.07.2014 в 16:36. |
16.07.2014, 15:54 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
отладка где? |
16.07.2014, 16:09 | #2
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Spaier
offline
Опыт:
128Активность: |
Я вставлял BJDebugMsg
между различными частями кода, всё показывалось. Spaier добавил: Проблема решилась пересозданием дамми, как закрыть тему? |
16.07.2014, 16:56 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
nvc123
new status
offline
Опыт:
59,284Активность: |
|
16.07.2014, 19:42 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,124Активность: |
куча лишних телодвижений в коде, к слову, можно использовать отладку с умом а не бездумно тыкать циферки где попало |
16.07.2014, 19:44 | #5
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
nvc123, у меня в карте все спелы на таймерах сделаны. ничего не лагает. |
19.07.2014, 01:37 | #6
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|