Перейти к основному содержимому

2.2. Как сделать, чтобы из одной локации меня через пару секунд перебрасывало в другую локацию?

В: Как сделать, чтобы из одной локации меня через пару секунд перебрасывало в другую локацию?

О: Вы можете написать любое событие, происходящее с течением действительного времени, если будете использовать локацию-счётчик.

Для начала нужно создать локацию-счётчик:

  • создаём локацию, название может быть любым, например "реалтайм".
  • указываем плееру, какую локацию ему нужно использовать, как локацию-счётчик. Пишем, например на самой первой локации в игре:
$counter = "реалтайм"

По умолчанию обращение к локации-счётчику выполняется каждые пол секунды. Если нужно изменить период обращения, воспользуйтесь оператором settimer. В качестве аргумента этому оператору указывается период обращения к локации-счётчику в миллисекундах:

! обращение к локации-счётчику каждые 100 мс.

settimer 100

Теперь на локации-счётчике пишем требуемый код. Например, данный код будет перебрасывать на локацию "комната" через 4 секунды после того, как игрок зашёл на локацию "коридор":

! фиксируем, в какое время обратились к локации-счётчику

local time_now = msecscount
if $curloc="коридор":
! если текущая локация "коридор"
! фиксируем в timer время, в какое должен произойти переход

if timer=0: timer=time_now+4000
if time_now>=timer and timer>0:
! если текущее время достигло нужного

! записываем в переменную timer -1,

! чтобы больше этот код не исполнялся

timer=-1
! совершаем переход

goto "комната"
! закрываем условие

end
! закрываем условие

end
! переменная timer являюется глобальной

Довольно простой код. Функция msecscount возвращает, сколько прошло миллисекунд с момента начала игры.