Сповіщення
Очистити все

Таймери


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Навіщо потрібні таймери? Припустимо, ви хочете, щоб Меченому після діалогу надійшло повідомлення на ПДА, але не відразу, а для надання більшого реалізму із затримкою в ~7-8 секунд. У такому випадку, якщо ви читаєте цю статтю, то у вас є:
- готовий діалог
- потрібна функція у свіжому скриптовому файлі.
Щоб створити таймер, необхідно відкрити файл з вашими скриптами і написати наступне :

local iTimer
 function function_onetimer ( ) 
    iTimer = time_global ( ) + 6 * 1000  
end
 
function timer_5_minutes ( ) 
    if iTimer and iTimer < time_global ( )  then  
        iTimer = nil  
        wolfscripts.humorist_killed_msg ( )  
    end 
end

 

Поясню:

function function_onetimer ( )  - назва функції ( це головна функція і її викликатимемо з діалогу ) 
    iTimer = time_global ( ) + 6 * 1000  - затримка за часом (6 секунд) 
function timer_5_minutes ( )  - власне, налаштування таймера
        iTimer = nil        -- відключаємо таймер 
        wolfscripts.humorist_killed_msg ( )  -- назва скрипта. Назва функції

Тут начебто все просто. Але таймер просто так не почне працювати. Лезем у bind_stalker.script та в

function actor_binder:update(delta)

пишемо:

назва_вашого_скрипта.timer_5_minutes()

Вуаля, тепер все працює. Дякую за увагу. Так, до речі, з діалогу викликаємо функцію function_onetimer .

Але є спосіб простіше

 
   function action_timer ( )
      .... ваш код після закінчення таймера ....
   end
 
   function start_timer ( ) 
      -- піднімаємо таймер на 10 секунд 
      local iTimer = time_global ( ) + 10000
 
      -- функція очікування закінчення таймера 
      local  function check_timer ( ) 
         return time_global ( ) > iTimer
       end
 
      - Ставимо її на апдейт 
      level.add_call ( check_timer, action_timer ) 
   end
 

По суті, це те саме, але реалізація простіше. Все міститься в одному файлі, без редагування bind_stalker.script.


   
Цитата