Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

  • Список
  •  » Quest Soft Player
  •  » Модуль для работы с меню (расширение функционала оператора "menu")

0    0    #1
09.01.2011 23:30

Olegus t.Gl.
Участник (+1039, -248)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2851
Вебсайт

Модуль для работы с меню (расширение функционала оператора "menu")

Поскольку реализуемый мной проект основан на выпадающих при нажатии на ссылках в тексте меню с перечнем вариантов действий, то этот модуль — один из главных! — попытка сделать процесс формирования и использования подобных меню удобным и функциональным. Ранее я выкладывал наброски подобного — теперь это полноценный модуль, в котором я почистил код, кое-что переписал, добавил кое-какие новшества, написал документацию и пример использования.

Данный модуль предоставляет следующие возможности:

  • Передача в вызываемую локацию/функцию произвольного числа параметров.
  • Получение времени, затраченного игроком на выбор пункта из меню.
  • Добавление в меню пунктов, которые появляются в нём только при соблюдении ряда условий.
  • Прописывание выполняемого кода прямо в настройках пункта меню, без отсылки к другим локациям/функциям.

Текущая версия: 1.1 (скачать)
Документация on-line: https://ifiction.ru/h/otg_lib_menu_help.html

Пример работы с обычным меню:

Код:

!Создаем обычное меню для объекта "Пещера".
GS 'Меню.Создать','МенюПещера'
GS 'Меню.ДобавитьПункт','МенюПещера','Осмотреть пещеру','','ДействияВПещере','осмотреть'
GS 'Меню.ДобавитьПункт','МенюПещера','Обыскать пещеру','','ДействияВПещере','осмотреть','тщательно'
*NL '<p>Вы сидите посреди <a href="exec: GS ''Меню.Вызвать'',''МенюПещера''">пещеры</a>.</p>'

Пример работы с усложнённым меню:

Код:

!Создаем усложненное меню для объекта "Сундук".
GS 'Меню.Создать','МенюСундук'
!----------
!Добавляем пункт меню со встроенным выполняемым кодом
GS 'Меню.ДобавитьПункт','МенюСундук','Осмотреть сундук'
!При выборе пункта меню не вызывается локация-обработчик, а выполняется заданный код
GS 'Меню.ДобавитьМодуль','МенюСундук',{
    *NL
    if СундукОткрыт=0:
        *NL 'Крепкий деревянный сундук с очень простым замком.'
    else
        *NL 'Сундук пуст.'
    end
}
!----------
!Добавляем пункт меню с условием, т.е. этот пункт появляется в меню только при выполнении определенного условия
GS 'Меню.ДобавитьПункт','МенюСундук','Открыть сундук'
!Задаем условие включения пункта в меню
GS 'Меню.ДобавитьУсловие','МенюСундук',{Result=IIF(СундукОткрыт,0,-1)}
!Назначаем код, который будет выполняться при выборе пункта
GS 'Меню.ДобавитьМодуль','МенюСундук',{
    *NL 
    *NL 'Поколодовав немного над замком, вы открыли сундук. На это ушло '+func('Меню.Время','МенюСундук')+' миллисекунд.'
    СундукОткрыт=-1
}
*NL '<p>Перед вами стоит <a href="exec: GS ''Меню.Вызвать'',''МенюСундук''">сундук</a>.</p>'

Прикрепленные файлы:
otg_lib_menu_v011.zip, Размер: 13,655 байт, Скачано: 1,358

Неактивен

0    0    #2
13.01.2011 18:52

Tedi
Участник
Зарегистрирован: 13.01.2011
Сообщений: 2

Re: Модуль для работы с меню (расширение функционала оператора "menu")

Спасибо!. Удобный модуль
Только вопрос.. Можно ли заменить команды на английские термины...))
Наример

Menu.Create
Menu.Add_Item
Menu.Add_Condition
Menu.Add_Mod
Menu.Call
Menu.Select
Menu.Time
Menu.Del

Ну или чтото в этом роде.. просто так удобней когда команды на латинице))

Отредактировано Tedi (13.01.2011 18:52)

Неактивен

0    0    #3
14.01.2011 10:15

Olegus t.Gl.
Участник (+1039, -248)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2851
Вебсайт

Re: Модуль для работы с меню (расширение функционала оператора "menu")

Tedi написал:

Спасибо!. Удобный модуль
Только вопрос.. Можно ли заменить команды на английские термины...))
Ну или чтото в этом роде.. просто так удобней когда команды на латинице))

Сделано. В архиве лежат обе версии. В документации также добавлены англоязычные варианты команд.

Неактивен

0    0    #4
14.01.2011 10:59

Tedi
Участник
Зарегистрирован: 13.01.2011
Сообщений: 2

Re: Модуль для работы с меню (расширение функционала оператора "menu")

Спасибо Olegus t.Gl.  smile

Неактивен

0    0    #5
15.01.2011 00:11

Olegus t.Gl.
Участник (+1039, -248)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2851
Вебсайт

Re: Модуль для работы с меню (расширение функционала оператора "menu")

Обновил модуль (версия 1.1):

  • Добавлен оператор "Меню.ОбработкаСобытия" ("Menu.AddEvent").
  • Время, потраченное на выбор действия из меню, подсчитывается даже при отказе от выбора.

Неактивен

0    0    #6
02.06.2011 22:59

Olegus t.Gl.
Участник (+1039, -248)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2851
Вебсайт

Re: Модуль для работы с меню (расширение функционала оператора "menu")

Так, для своего проекта в модуль работы с меню кое-что добавил:

  • Функция "Меню.Размер" — возвращает количество активных элементов в меню (с учётом всех условий и т.п.).
  • К перечню заданных параметров вызываемой локации/модуля автоматически добавляется ещё один — название пункта меню.
  • Добавлена команда "Меню.ДобавитьПунктСМодулем" — для краткости записи: вызов модуля без параметров (ну кроме названия пункта меню, который автоматически добавится).

Неактивен

  • Список
  •  » Quest Soft Player
  •  » Модуль для работы с меню (расширение функционала оператора "menu")

Powered by PunBB
© copyright 2001–2021 iFiction.Ru