Таймеры — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Таймеры — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Новая страница: «Для чего нужны таймеры? Предположим, вы хотите, чтобы Меченому после диалога пришло сообще...»)
 
(Но есть способ проще)
 
(не показаны 9 промежуточные версии 7 участников)
Строка 1: Строка 1:
 
Для чего нужны таймеры?
 
Для чего нужны таймеры?
Предположим, вы хотите, чтобы Меченому после диалога пришло сообщение на ПДА, но не сразу, а для придания большего реализма с задержкой в ~7-8 секунд. В таком случае, если вы читаете эту статью, то у вас есть
+
Предположим, вы хотите, чтобы Меченому после диалога пришло сообщение на ПДА, но не сразу, а для придания большего реализма с задержкой в ~7-8 секунд. В таком случае, если вы читаете эту статью, то у вас есть:
 +
<br>
 +
- Готовый диалог<br>
 +
- Необходимая функция в свежем скриптовом файле.
 +
<br>
 +
Для того, чтобы создать таймер, необходимо открыть файл с вашими скриптами и написать следующее :
  
Готовый диалог
+
<lua>local iTimer
Необходимая функция в свежем скриптовом файле.
+
 
+
Для того, чтобы создать таймер, необходимо открыть файл с вашими скриптами и написать следующее (пишите сплошняком, Википедия криво обработала текст):
+
 
+
 
+
 
+
 
+
local iTimer
+
 
function function_onetimer()
 
function function_onetimer()
 
     iTimer = time_global() + 6*1000  
 
     iTimer = time_global() + 6*1000  
Строка 20: Строка 17:
 
         wolfscripts.humorist_killed_msg()  
 
         wolfscripts.humorist_killed_msg()  
 
     end
 
     end
end  
+
end </lua>
  
  
  
Разъясню  
+
Разъясню:
 
+
<lua>function function_onetimer() — название функции (это главная функция и её будем вызывать из диалога)
function function_onetimer() — название функции (это главная функция и её будем вызывать из диалога)
+
 
     iTimer = time_global() + 6*1000 -- задержка по времени (6 секунд)
 
     iTimer = time_global() + 6*1000 -- задержка по времени (6 секунд)
 
function timer_5_minutes() — собственно, настройки таймера
 
function timer_5_minutes() — собственно, настройки таймера
 
         iTimer = nil      -- отключаем таймер
 
         iTimer = nil      -- отключаем таймер
         wolfscripts.humorist_killed_msg() -- название скрипта.название функции
+
         wolfscripts.humorist_killed_msg() -- название скрипта.название функции</lua>
  
Тут, вроде бы, всё просто. Но таймер просто так не заработает. Лезем в bind_stalker.script и в
 
  
function actor_binder:update(delta)
+
Тут, вроде бы, всё просто. Но таймер просто так не заработает. Лезем в '''bind_stalker.script''' и в
  
пишем
+
<code>function actor_binder:update(delta)</code>
  
название_вашего_скрипта.timer_5_minutes()
+
 
 +
пишем:
 +
 
 +
<code>название_вашего_скрипта.timer_5_minutes()</code>
  
 
Вуаля, теперь всё работает. Спасибо за внимание.
 
Вуаля, теперь всё работает. Спасибо за внимание.
Да, кстати, из диалога вызываем функцию function_onetimer.
+
Да, кстати, из диалога вызываем функцию '''function_onetimer'''.
 +
 
 +
=== Но есть способ проще ===
 +
<lua>
 +
  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
 +
</lua>
 +
 
 +
По сути, это то же самое, но реализация проще. Все умещается в одном файле, без редактирования '''bind_stalker.script'''.
 +
 
 +
 
 +
[[Категория:Скрипты]]

Текущая версия на 17:52, 9 июля 2015

Для чего нужны таймеры? Предположим, вы хотите, чтобы Меченому после диалога пришло сообщение на ПДА, но не сразу, а для придания большего реализма с задержкой в ~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.

Другие места
LANGUAGE