function PolarProjectionBJ takes location source, real dist, real angle returns location local real x = GetLocationX(source) + dist * Cos(angle * bj_DEGTORAD) local real y = GetLocationY(source) + dist * Sin(angle * bj_DEGTORAD) return Location(x, y) endfunction
Меня интересует вотэта, функция неработает, может здесь какаята глупая, нубская ошибка, но это мой первый опыт...
Code
function Trig_Move_Conditions takes unit u1, integer 'B000' returns boolean return (GetUnitAbilityLevel(u1, 'B000') > 0) endfunction
//=========================================================================== function InitTrig_Move takes nothing returns nothing set gg_trg_Move = CreateTrigger( ) call TriggerRegisterTimerEventPeriodic( gg_trg_Move, 0.10 ) call TriggerAddCondition( gg_trg_Move, Condition( function Trig_Move_Conditions ) ) call TriggerAddAction( gg_trg_Move, function Trig_Move_Actions ) endfunction
просто я пытался раскрыть полярку ну както неочень вышло... да и скорее всего с условием тоже... просто я не знаю. И ненадо довать некакие нароботки это просто опыт!
function Trig_Move_Conditions takes unit u1, integer 'B000' returns boolean return (GetUnitAbilityLevel(u1, 'B000') > 0) endfunction Это условие для бафа, или для абилки?Или для обоих?
function InitTrig_Move takes nothing returns nothing set gg_trg_Move = CreateTrigger( ) call TriggerRegisterTimerEventPeriodic( gg_trg_Move, 0.10 ) call TriggerAddCondition( gg_trg_Move, Condition( function Trig_Move_Conditions ) ) call TriggerAddAction( gg_trg_Move, function Trig_Move_Actions ) endfunction
1) Функция условия: наличия бафа у юнита не должна ни чего брать так как ты вызываешь ее через Condition(function CONDITION) 2) Где ты раскрыл полярку я понять не могу. 3) В данном триггере(периодическом) ты ни как не сможешь брать юнита как ТриггерЮнита, в этом случае можно использовать только определенных юнитов(записанных в глобальную или в хеш).
Добавлено (08 Январь 2012, 17:31:44) --------------------------------------------- Вот как должно быть в твоем варианте:
function Trig_Move_Conditionstakes unit u1, integer id returns boolean return (GetUnitAbilityLevel(u1, id) > 0) endfunction
function Trig_Move_Actions takes nothing returns nothing if (Trig_Move_Conditions(ГлобальнаяЮнит,'B000')) then - вот что может взять эта функция call SetUnitPositionLoc( ГлобальнаяЮнит, PolarProjectionBJ(GetUnitLoc(ГлобальнаяЮнит), 50.00, GetUnitFacing(ГлобальнаяЮнит)) endif endfunction
//=========================================================================== function InitTrig_Move takes nothing returns nothing set gg_trg_Move = CreateTrigger( ) call TriggerRegisterTimerEventPeriodic( gg_trg_Move, 0.10 ) call TriggerAddCondition( gg_trg_Move, Condition( function Trig_Move_Conditions ) ) - убираем здесь проверку условия так как она не может быть направлена на локального юнита. call TriggerAddAction( gg_trg_Move, function Trig_Move_Actions ) endfunction
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 08 Января 2012, 17:35:40
Добавлено (08 Январь 2012, 17:34:55) --------------------------------------------- lawson, лудше хэш... Я путаюсь в глобальныйх когда их за 20-30, и каждый раз новую создовать, да нет...
Добавлено (08 Январь 2012, 17:35:17) --------------------------------------------- А с хэшом нужен таймер?
function Move takes unit u, real x, real y, real z returns nothing if x !=0. then call SetUnitX(u,x) endif if y !=0. then call SetUnitY(u,y) endif if z !=0. then call SetUnitFlyHeight(u,z,0.) endif endfunction
function Move takes unit u, real x, real y, real z returns nothing if x !=0. then call SetUnitX(u,x) endif if y !=0. then call SetUnitY(u,y) endif if z !=0. then call SetUnitFlyHeight(u,z,0.) endif endfunction
Зачем эти условия?
Quote (Ty3uK)
57.295
Во-первых, 57.296* А во-вторых, .017. bj_DEGTORAD же.