Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

15.2. Как задействовать строку ввода в игре?

В: Как задействовать строку ввода в игре?

О:

Начать следует с того, что любой текст, введённый игроком, можно получить в любой момент с помощью функции `$user_text`.

Для примера попробуйте сделать следующее:

  1. Включите строку ввода:

    showinput 1
  2. Создайте действие:

    act "Вывести текст из строки ввода":
        *pl $user_text
    end
  3. Теперь запустите игру, пробуйте вводить текст в поле ввода, а затем нажимать на действие. Текст из поля ввода будет появляться на экране.

Далее обратимся к локации-обработчику строки ввода. Несмотря на то, что предназначение локации "обработчик строки ввода", сама по себе эта локация строку ввода не обрабатывает. Код этой системной локации выполняется, если установить курсор в поле ввода, а затем нажать клавишу "Enter".

Для того, чтобы это проверить, проделайте следующее:

  1. Создайте новую локацию. Имя может быть любым, но для примера назовём её "обработчик_ввода".
  2. Чтобы плеер понял, какую локацию он должен использовать, как обработчик строки ввода, необходимо прописать название этой локации в переменной `$usercom`. Например, на самой первой локации в игре пишем:

    $usercom="обработчик_ввода"
  3. На локации-обработчике строки ввода пишем такой код:

    ! увеличиваем значение переменной на единицу
    enter=enter+1
    ! выводим на экран
    *pl enter
  4. Теперь, когда вы запустите игру и установите курсор в поле ввода, а затем нажмёте клавишу "Enter", вы увидите, что на экране появится число. С каждым нажатием клавиши "Enter" на экране будет появляться новое число.

Объединив две эти возможности, можно задействовать строку ввода. Т.е. по нажатию клавиши "Enter", прямо на локации-обработчике строки ввода с помощью функции `$user_text` получаем текст, введённый игроком, и производим действия, в зависимости от того, что нам нужно:

! локация "обработчик_ввода" (usercom)
if $user_text="войти в комнату":
! если введён текст "войти в комнату"
    
! отправляем игрока на локацию "комната"
    goto "комната"
! закрываем условие
end