RU

Действие по таймеру

Antipod #218 14.04.2011 05:32 17 comments 17396 views

Как сделать?
Ожидание БЕЗ задержки, то есть чтобы игрок мог совершать действия на локации, но чтобы, скажем, через 5 сек произошло действие?

AntiPod,
В стартовой локации пишем

SETTIMER 1000
$COUNTER = 'COUNTER'

В локации, где “запускаем” таймер

run = 1

В локации “COUNTER” пишем

IF run = 1:
    IF run_count = 5:
        ...НУЖНОЕ НАМ ДЕЙСТВИЕ...
        run = 0
        run_count = 0
    ELSE
        run_count = run_count + 1
    END
END

А если прописать

SETTIMER 1000 
$COUNTER = 'COUNTER'

в той локации, где запускается таймер, а ран=1 не писать и в каунтере написать

IF run_count = 5: 
        ...НУЖНОЕ НАМ ДЕЙСТВИЕ... 
        run = 0 
        run_count = 0 
    ELSE 
        run_count = run_count + 1 
    END

Изменится ли что-то? Ведь плеер узнает про локацию счетчик только в тот момент, когда будет запущена необходимая локация.
З.Ы. Я новичок, с меня взятки гладки.

NoNick,
переменная “run” в приведенном мной коде нужна для того, чтобы вовремя остановить и сбросить счетчик “run_count”.

Проще говоря, в моем примере таймер сработает после 5 секунд, произведет действие и выключится.
В твоем, таймер сработает через пять секунд, произведет действие, потом через пять секунд сработает еще раз, опять произведет действие, и т.д. до бесконечности.

Не заметил. Тогда вот так

run_count = run_count + 1
 IF run_count=5:
  операторы
 END

А каунтер задать как в моем пред. посту.

Правда, потом таймер не остановится.

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

idleberry,
см. второй пост темы.

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

ну я сегодня ещё попробую, но третий день подряд делать одну локацию - это не то чего я жду от редактора текстовых квестов…. ><

idleberry:

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

Я как-то делал отдельную библиотеку для работы с таймером в QSP. Вот тут: http://forum.ifiction.ru/viewtopic.php?id=1615 можно посмотреть пример работы.

так, заработало, но….
я понял что вообще не представляю как работает локация-счётчик (информация в справке не даёт нужного и полного представления о поведении этой локации)

объясните мне чтоли подробно, если можно, что происходит с момента присвоения переменной имени локации и далее.
а ещё что будет если в коде локации-счётчика я присвою этой переменной другое значение…

Olegus t.Gl. мощно, спасибо, надеюсь никогда не понадобится :3
я смотрю в архиве не только таймер есть.

idleberry,
QSP предназначен для создания текстовых игр, а не анимационных эффектов. Поэтому неудивительно, что ты столкнулся с трудностями.

Aleks Versus Moderator 15.10.2012 17:37 (13 years ago)

idleberry,
Насколько я ещё не забыл, игрок не может ничего щёлкнуть, будь то выбор действия, переход по ссылке, работа со строкой ввода или инвентарём, пока плеер выполняет какой-либо код. Поскольку ты используешь wait - задержку, плеер не позволит игроку баловаться, пока не выполнит wait и весь следующий за ним код. Чтобы была возможность пропускать анимацию, нужно изначально давать игроку выбор: просматривать анимацию/пропустить анимацию.

а как сделать таймер, запускающийся заново каждый раз при заходе на локацию “запуска” и обнуляющийся при переходе на другую?

Imm0ral,
см. мой пример во втором сообщении. При переходе на другую локацию пишешь

run = 0

и таймер отключается.

Log in or Register to post comments.