|
|
|
|
Таймеры
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 15:08:23 | Сообщение # 1 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| Мне нужно сделать секундную задержку в цикле: Code loop exitwhen i > 5 set x = GetUnitX(b) set y = GetUnitY(b) call SetUnitPosition(a,x,y) call SetUnitAnimation(a,"attack") set i = i + 1 endloop Как это сделать через таймеры?
|
|
|
|
Faion | Дата: Воскресенье, 31 Июля 2011, 15:18:36 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| TimerStart(t,1.0,true,function yourfunc)
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
Сообщение отредактировал Faion - Воскресенье, 31 Июля 2011, 15:18:49 |
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 15:26:09 | Сообщение # 3 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| Faion, Quote (Faion) TimerStart(t,1.0,true,function yourfunc) Ну если я правильно понимаю так можно сделать паузу перед включением функции а использовать таймер чтобы сделать паузу в цикле?Если можешь напиши пожалуйста пример.
|
|
|
|
lawson | Дата: Воскресенье, 31 Июля 2011, 15:36:39 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Kr0nus) Мне нужно сделать секундную задержку в цикле: Чередующееся событие или действие по истечению времени это таймер, а цикл выполнение действий до определенного условия. Для твоего варианта ипользутеся таймер!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 31 Июля 2011, 15:40:26 |
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 15:40:49 | Сообщение # 5 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| lawson, Quote (lawson) Для твоего варианта ипользутеся таймер! Quote (Kr0nus) Как это сделать через таймеры?
|
|
|
|
lawson | Дата: Воскресенье, 31 Июля 2011, 15:42:57 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Kr0nus, Ты внимательней читай сообщения!
Code call TimerStart(t, 1, true, function yourFunc)
Code function YourFunc takes nothing returns nothing set x = GetUnitX(b) set y = GetUnitY(b) call SetUnitPosition(a,x,y) call SetUnitAnimation(a,"attack") endfunction В цикле нельзя ставить паузы у тебя процесоор будет виснуть до тех пор пока цикл не выполнится!!! Code loop exitwhen i > 5 set x = GetUnitX(b) set y = GetUnitY(b) call SetUnitPosition(a,x,y) call SetUnitAnimation(a,"attack") set i = i + 1 пауза на 1 сек endloop в данном случае у тебя будет 5 секунд лаг!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 31 Июля 2011, 15:47:52 |
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 15:47:44 | Сообщение # 7 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| lawson, Я рассматривал этот вариант,но мне надо чтобы эта функция сработала 5 раз и на этом закончилась,будет ли выполнятся это,при том что ты написал?
|
|
|
|
lawson | Дата: Воскресенье, 31 Июля 2011, 15:49:20 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Kr0nus, Чета ты не доганяешь! Пфф ладно на примере тебе покажу. Поставь в цикл PolledWait на 1 секунду увидишь что будет сразу поймешь что я имею ввиду. Еще раз говорю цикл нелзя останавливать!!!! Всякими таймерами Вэйтами, взятками!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 15:51:04 | Сообщение # 9 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| lawson, Я уже говорю не о цикле а об этом: Code function YourFunc takes nothing returns nothing set x = GetUnitX(b) set y = GetUnitY(b) call SetUnitPosition(a,x,y) call SetUnitAnimation(a,"attack") endfunction
|
|
|
|
lawson | Дата: Воскресенье, 31 Июля 2011, 15:51:13 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Kr0nus) но мне надо чтобы эта функция сработала 5 раз и на этом закончилась function YourFunc takes nothing returns nothing set global i = i + 1 set x = GetUnitX(b) set y = GetUnitY(b) call SetUnitPosition(a,x,y) call SetUnitAnimation(a,"attack") if (i) >= 5 then call DestroyTimer(GetExpiredTimer()) endif endfunction
global значит что переменная должна быть глобальной или через хеш сохраняй ее.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 31 Июля 2011, 15:51:59 |
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 15:58:02 | Сообщение # 11 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| Quote (lawson) function YourFunc takes nothing returns nothing set global i = i + 1 set x = GetUnitX(b) set y = GetUnitY(b) call SetUnitPosition(a,x,y) call SetUnitAnimation(a,"attack") if (i) >= 5 then call DestroyTimer(GetExpiredTimer()) endif endfunction По-моему ты все же не понял что я хочу.Объясню,что я хочу сделать. Герой кастует спелл,телепортируется к цели с промежутками в 1 секунду и атакует.
|
|
|
|
lawson | Дата: Воскресенье, 31 Июля 2011, 16:03:11 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Kr0nus) Герой кастует спелл,телепортируется к цели с промежутками в 1 секунду и атакует. Code function YourFunc takes nothing returns nothing set i = i + 1 set x = GetUnitX(b) set y = GetUnitY(b) call SetUnitPosition(a,x,y) call SetUnitAnimation(a,"attack")
if (i >= 5) then call DestroyTimer(GetExpiredTimer()) endif endfunction
call TimerStart(t, 1, true, function yourFunc)
Ты до сих пор не понял?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 31 Июля 2011, 16:03:37 |
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 16:28:39 | Сообщение # 13 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| lawson, Quote (lawson) Ты до сих пор не понял? Все,разобрался Огромное спасибо.Добавлено (31-07-2011, 16:28) --------------------------------------------- lawson, Теперь у меня триггер не работает... Code function Trig_Slash_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A000' ) ) then return false endif return true endfunction
function Trig_Slash_Actions takes nothing returns nothing local unit caster = GetSpellAbilityUnit() local unit target = GetSpellTargetUnit() set udg_caster = caster set udg_target = target local timer t = CreateTimer() call TimerStart( t, 1.00, true, function Slashes ) set caster = null set target = null endfunction
function Slashes takes nothing returns nothing set udg_integer = udg_integer + 1 local unit caster = udg_caster local unit target = udg_target local real x = GetUnitX(target) local real y = GetUnitY(target) call SetUnitPosition(caster,x,y) call SetUnitAnimation(caster,"attack") if (udg_integer >= 5) then set udg_integer = null call DestroyTimer(GetExpiredTimer()) endif set caster = null set target = null endfunction
//=========================================================================== function InitTrig_Slash takes nothing returns nothing set gg_trg_Slash = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Slash, EVENT_PLAYER_UNIT_SPELL_CAST ) call TriggerAddCondition( gg_trg_Slash, Condition( function Trig_Slash_Conditions ) ) call TriggerAddAction( gg_trg_Slash, function Trig_Slash_Actions ) endfunction
|
|
|
|
lawson | Дата: Воскресенье, 31 Июля 2011, 16:33:58 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Kr0nus, Функция которую вызывает таймер всегда должна быть выше той функции где таймер создается. Поменяй местами функции!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 31 Июля 2011, 16:34:25 |
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 16:34:29 | Сообщение # 15 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| lawson, Поменял,но карта все так же не запускается Code function Trig_Slash_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A000' ) ) then return false endif return true endfunction
function Slashes takes nothing returns nothing set udg_integer = udg_integer + 1 local unit caster = udg_caster local unit target = udg_target local real x = GetUnitX(target) local real y = GetUnitY(target) call SetUnitPosition(caster,x,y) call SetUnitAnimation(caster,"attack") if (udg_integer >= 5) then set udg_integer = null call DestroyTimer(GetExpiredTimer()) endif set caster = null set target = null endfunction
function Trig_Slash_Actions takes nothing returns nothing local unit caster = GetSpellAbilityUnit() local unit target = GetSpellTargetUnit() set udg_caster = caster set udg_target = target local timer t = CreateTimer() call TimerStart( t, 1.00, true, function Slashes ) set caster = null set target = null endfunction
//=========================================================================== function InitTrig_Slash takes nothing returns nothing set gg_trg_Slash = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Slash, EVENT_PLAYER_UNIT_SPELL_CAST ) call TriggerAddCondition( gg_trg_Slash, Condition( function Trig_Slash_Conditions ) ) call TriggerAddAction( gg_trg_Slash, function Trig_Slash_Actions ) endfunction
|
|
|
|
lawson | Дата: Воскресенье, 31 Июля 2011, 16:44:17 | Сообщение # 16 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| set udg_integer = null что это такое как ты можешь null приписать перменной integer? Мда тебе еще учить и учить жасс. Куча бестолковый действий!
Добавлено (31-07-2011, 16:44) --------------------------------------------- Quote (lawson) local timer t = CreateTimer() А это что такое почему объявляется локальная перменная после начала действий? Это всегда делается перед начало любых действий!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 31 Июля 2011, 16:44:53 |
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 16:49:13 | Сообщение # 17 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| lawson, Ну тогда скинь мне,если можешь,наработку,чтобы я разобрался
|
|
|
|
lawson | Дата: Воскресенье, 31 Июля 2011, 16:53:54 | Сообщение # 18 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| держи
function Trig_Slash_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A000' endfunction
function Slashes takes nothing returns nothing local unit caster = udg_caster local unit target = udg_target local real x = GetUnitX(target) local real y = GetUnitY(target) set udg_integer = udg_integer + 1 call SetUnitPosition(caster,x,y) call SetUnitAnimation(caster,"attack") if (udg_integer >= 5) then set udg_integer = 0 call DestroyTimer(GetExpiredTimer()) endif set caster = null set target = null endfunction
function Trig_Slash_Actions takes nothing returns nothing local unit caster = GetSpellAbilityUnit() local unit target = GetSpellTargetUnit() local timer t = CreateTimer() set udg_caster = caster set udg_target = target call TimerStart( t, 1.00, true, function Slashes ) set caster = null set target = null set t = null endfunction
//=========================================================================== function InitTrig_Slash takes nothing returns nothing set gg_trg_Slash = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Slash, EVENT_PLAYER_UNIT_SPELL_CAST ) call TriggerAddCondition( gg_trg_Slash, Condition( function Trig_Slash_Conditions ) ) call TriggerAddAction( gg_trg_Slash, function Trig_Slash_Actions ) endfunction
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 31 Июля 2011, 16:55:21 |
|
|
|
Kr0nus | Дата: Воскресенье, 31 Июля 2011, 17:01:42 | Сообщение # 19 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| lawson, Спасибо Тему можно закрыть
Сообщение отредактировал Kr0nus - Воскресенье, 31 Июля 2011, 17:36:33 |
|
|
|
|
|
|
|
|
|
|