Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su
3.3. Как прикрутить возможность выбора варианта к окну msg?
В: Как прикрутить возможность выбора варианта к окну msg?
В: Подскажите аналог команды `confirm` в QSP.
О:
В классическом плеере у `msg` нет такой возможности, поскольку `msg` не возвращает значений. Вы можете использовать функцию `$input`, и ограничить для игрока возможные варианты ответов:
:loop
! выводим на экран окошко с полем ввода, а результат,
! введёный игроком, возвращаем переменной $answer
$answer = $INPUT ('Хотите продолжить (д/н)?')
! чтобы не учитывать регистр, переводим значение в нижний регистр
$answer=$LCASE($answer)
! проверяем, правильный ли ответ ввёл игрок
IF $answer = 'д':
! если ответ "д" переходим к локации, продолжающей игру
goto "далее"
ELSEIF $answer = 'н':
! если ответ "н" переходим к локации, прерывающей игру
goto "конец"
ELSE
! если игрок ввёл неверный ответ, или не ввёл ничего
! перепрыгиваем на метку loop
JUMP 'loop'
END
! выводим на экран окошко с полем ввода, а результат,
! введёный игроком, возвращаем переменной $answer
$answer = $INPUT ('Хотите продолжить (д/н)?')
! чтобы не учитывать регистр, переводим значение в нижний регистр
$answer=$LCASE($answer)
! проверяем, правильный ли ответ ввёл игрок
IF $answer = 'д':
! если ответ "д" переходим к локации, продолжающей игру
goto "далее"
ELSEIF $answer = 'н':
! если ответ "н" переходим к локации, прерывающей игру
goto "конец"
ELSE
! если игрок ввёл неверный ответ, или не ввёл ничего
! перепрыгиваем на метку loop
JUMP 'loop'
END
Есть вариант использовать всплывающее меню в качестве диалогового окна, но это не очень хороший вариант, так как всплывающее меню появляется точно под курсором мышки и выглядит совсем не как диалоговое окно. Тем не менее вариант рабочий:
# start
*pl "На следующей локации демонстрируется использование меню в качестве даилогового окна для выбора двух вариантов"
$dialog[]="Сообщение: кошелёк или жизнь:dial_loc:?"
$dialog[]="> Кошелёк:dial_loc"
$dialog[]="> Жизнь:dial_loc"
act "Перейти в следующую локацию":
goto 'room'
end
-- start
# room
refint & ! данная функция принудительно обновит содержимое окон плеера при входе на локацию
:loop
menu '$dialog'
if variant<>1: jump 'loop'
-- room
# dial_loc
if args[0]=1:
! данный пункт меню не работает
elseif args[0]=2:
*pl "Вы выбрали вариант кошелёк"
variant=1
elseif args[0]=3:
*pl "Вы выбради вариант жизнь"
variant=1
end
-- dial_loc
*pl "На следующей локации демонстрируется использование меню в качестве даилогового окна для выбора двух вариантов"
$dialog[]="Сообщение: кошелёк или жизнь:dial_loc:?"
$dialog[]="> Кошелёк:dial_loc"
$dialog[]="> Жизнь:dial_loc"
act "Перейти в следующую локацию":
goto 'room'
end
-- start
# room
refint & ! данная функция принудительно обновит содержимое окон плеера при входе на локацию
:loop
menu '$dialog'
if variant<>1: jump 'loop'
-- room
# dial_loc
if args[0]=1:
! данный пункт меню не работает
elseif args[0]=2:
*pl "Вы выбрали вариант кошелёк"
variant=1
elseif args[0]=3:
*pl "Вы выбради вариант жизнь"
variant=1
end
-- dial_loc
В qSpider вы можете написать собственное такое окошко, используя CSS и JavaScript.