quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
Отказывается работать функция
Собственно функция проверки если в указанной точке блокиратор пути (или прочий разрушаемый объект или нет)...
((код jass
globals
boolean bj_result = false endglobals function HasDestructable takes nothing returns nothing if GetEnumDestructable( ) != null then set bj_result = false endif set bj_result = true endfunction function IsPointPathable takes real x, real y returns boolean local rect r = Rect( x - 50.00, y - 50.00, x + 50.00, y + 50.00 ) call EnumDestructablesInRect( r, null, function HasDestructable ) call RemoveRect( r ) set r = null return bj_result endfunction )) |
02.06.2012, 17:38 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Msey
????
offline
Опыт:
67,346Активность: |
попробуй так в твоей ф-ии результат все равно будет true Отредактировано Msey, 02.06.2012 в 18:16. |
02.06.2012, 17:51 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
Msey, несколько не понял про локалку, она то ту причём, суть в том что если в области есть декорация, то от ней должен быть рекошет, а этого не происходит, пытаюсь сделать скилл на побобии ульта BladeMaster'а чтобы он крутился и самостоятельно двигался в указанном направлении рекошетил от препятствий.
» недоделанный скилл
((код jass
function Trig_Chaos_Tornado_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A01W' endfunction function HasDestructable takes nothing returns nothing
local boolean bj_result = false if GetEnumDestructable( ) == null then else set bj_result = true endif endfunction function IsPointPathable takes real x, real y returns boolean
local rect r = Rect(x - 50.00,y - 50.00,x + 50.00,y + 50.00) call EnumDestructablesInRect(r,null,function HasDestructable) call RemoveRect(r) set r = null return bj_result endfunction function WindMasterMove takes nothing returns nothing
local timer t =GetExpiredTimer() local integer HashId = GetHandleId(t) local unit WindMaster = LoadUnitHandle(bj_lastCreatedHashtable,HashId,0) local real WmA = LoadReal(bj_lastCreatedHashtable,HashId,1) local real WmX = GetUnitX(WindMaster) + 20 * Cos(WmA * bj_DEGTORAD) local real WmY = GetUnitY(WindMaster) + 20 * Sin(WmA * bj_DEGTORAD) local real Range = LoadReal(bj_lastCreatedHashtable,HashId,2) + 20.00 call SaveReal(bj_lastCreatedHashtable,HashId,2,Range) if IsPointPathable(WmX,WmY) then call SetUnitPosition(WindMaster,WmX,WmY) call SetUnitAnimation(WindMaster,"attack walk stand spin") else set WmA = abp(WmX,GetUnitX(WindMaster),WmY,GetUnitY(WindMaster))/2 call SaveReal(bj_lastCreatedHashtable,HashId,1,WmA) call SetUnitAnimation(WindMaster,"attack walk stand spin") endif if Range >= 700.00 then call PauseUnit(WindMaster,false) call SetUnitInvulnerable(WindMaster,false) call ResetUnitAnimation(WindMaster) call SetUnitPathing(WindMaster,true) call PauseTimer(t) call DestroyTimer(t) call FlushChildHashtable(bj_lastCreatedHashtable,HashId) endif set t = null endfunction function Trig_Chaos_Tornado_Actions takes nothing returns nothing
local unit WindMaster = GetSpellAbilityUnit() local real WmX = GetUnitX(WindMaster) local real WmY = GetUnitY(WindMaster) local real CX = GetSpellTargetX() local real CY = GetSpellTargetY() local real WmA = abp(WmX,CX,WmY,CY) local timer t = CreateTimer() local integer HashId = GetHandleId(t) call SetUnitInvulnerable(WindMaster,true) call SetUnitPathing(WindMaster,false) call SetUnitAnimation(WindMaster,"attack walk stand spin") call PauseUnit(WindMaster,true) call SaveUnitHandle(bj_lastCreatedHashtable,HashId,0,WindMaster) call SaveReal(bj_lastCreatedHashtable,HashId,1,WmA) call SaveReal(bj_lastCreatedHashtable,HashId,2,0.00) call TimerStart(t, 0.04, true, function WindMasterMove) set t= null set WindMaster = null endfunction =========================================================================== function InitTrig_Chaos_Tornado takes nothing returns nothing set gg_trg_Chaos_Tornado = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Chaos_Tornado, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Chaos_Tornado, Condition( function Trig_Chaos_Tornado_Conditions ) ) call TriggerAddAction( gg_trg_Chaos_Tornado, function Trig_Chaos_Tornado_Actions ) endfunction )) |
02.06.2012, 18:00 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Msey
????
offline
Опыт:
67,346Активность: |
суть была не в локалке, а в неправильном построении кондишна подправил пост |
02.06.2012, 18:02 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
как летал герой через блокираторы пути так и летает... |
02.06.2012, 19:26 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Msey
????
offline
Опыт:
67,346Активность: |
И с true и с false? |
02.06.2012, 19:43 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J64_
offline
Опыт:
4,724Активность: |
quq_CCCP:
учитесь правильно организовывать алгоритмы:
|
02.06.2012, 20:46 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
|
02.06.2012, 20:48 | #8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
ScorpioT1000, ну всегда true возвращяет, если ставить false в \
((код jass
if IsPointPathable(WmX,WmY)then set bj_result = false call SetUnitPosition(WindMaster,WmX,WmY) call SetUnitAnimation(WindMaster,"attack walk stand spin") ..... ..... ..... )) То срабатывает 1 раз, IsTerrainPathable - не проверяет есть ли блокираторы пути в точке... Как же тут быть, примитивная проверка, если декорация в точек или нету... |
03.06.2012, 08:18 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
IsTerrainPathable все проверяет |
03.06.2012, 08:42 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Master_chan
Полуночный командир
offline
Опыт:
15,660Активность: |
ScorpioT1000:
Не реагирует на объекты вообще, проверяет только базовую карту путей. Как вариант:
|
03.06.2012, 08:48 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,338Активность: |
Master_chan, вот щяс как надо работает, спс за помощь, а то как я не извращался с boolean не работало... |
03.06.2012, 09:26 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Master_chan
Полуночный командир
offline
Опыт:
15,660Активность: |
Ок, тему закрываю. |
03.06.2012, 09:30 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|