Skip to content

Быстрое меню

TrueCat17 edited this page Dec 3, 2023 · 5 revisions

Описание

Быстрое меню находится снизу диалогового окна и содержит часто используемые кнопки:
New Visual Novell

Переменная quick_menu отвечает за включение (True, по умолчанию) или отключение (False) этого меню.


Свойства кнопок

Об изменении свойств кнопок (размеры, изображения, шрифт и т. д.) читайте в статье Интерфейс (gui).


Добавление

Вы можете добавить свою кнопку в быстрое меню.

Списком (list) кнопок является quick_menu_screen.items.

Добавление своей кнопки:
quick_menu_screen.items.append(['Screenshot', make_screenshot])

Добавляемый объект является массивом со следующими элементами:

  1. Строка с названием кнопки (автоматически будет применена система перевода);
  2. Функция, которая будет вызвана при нажатии на кнопку;
  3. Необязательный аргумент - вызываемый объект (callable - например, функция), возвращающий True (если кнопку нужно показать) или False (если нет).

Т. к. quick_menu_screen.items является простым массивом, то доступны все его методы.
Вот более сложный пример:

my_score = 0

def my_secret_func():
	# remove button from list
	i = 0
	while i < len(quick_menu_screen.items):
		if quick_menu_screen.items[i][0] == 'Something':
			quick_menu_screen.items.pop(i)
			break
		i += 1
	
	notification.out('Something')

quick_menu_screen.items.insert(1, ['Something', my_secret_func, Eval('my_score > 10')])

Здесь кнопка "вставляется" (insert) так, что после этого занимает место 1 (отчёт идёт с 0).
Также стоит обратить внимание на условие отображения: значение переменной my_score должно быть больше 10. Для упрощения проверки рекомендуется ввести (или скопипастить) в консоль (Shift+O) код my_score = 11.

Ну и перед удалением производится поиск элемента.
Почему бы просто не вызвать quick_menu_screen.items.pop(1), ведь именно в индекс 1 мы его и добавляли?
Специально для случая, когда после этого кода что-то могло вставить ещё одну кнопку перед нашей.


Объяснение Eval

"Вызов" экземпляра класса Eval возвращает то, что вернул бы код, который был передан ему при создании.
Пример:

my_var = 5
def my_func(a):
	return a * 2

e = Eval('my_var * my_func(2) + 3')
answer1 = e() # 23

def instead_eval():
	return my_var * my_func(2) + 3
answer2 = instead_eval() # 23

Перевод

Перевод выполняется довольно просто (это код верхнего уровня - не в блоках init, label и т. д.):

translate russian strings:
	
	old 'Screenshot'
	new 'Скриншот'
	
	old 'Something'
	new 'Что-то'

Подробнее читайте в статье Система переводов.


Далее ->
<- Назад

Основы
Если вы новичок, то будет достаточно прочитать лишь это, пока ваш энтузиазм не исчерпан.
Остальное можно будет прочесть по мере надобности.

  1. Быстрый старт!
  2. Основы команд и блоков.
  3. Простейшие примеры.
  4. Изображения.
  5. Музыка и звуки.

Документация по RPG-части находится здесь.


Более сложные вещи
Через некоторое время вам, возможно, потребуются более продвинутые возможности.

  1. Функции для изображений (im-функции).
  2. Эффекты.
  3. Времена суток.
  4. ATL (анимации и трансформации).
  5. Ввод с клавиатуры.
  6. Введение в ScreenLang (GUI, интерфейс).
  7. Конфигурирование игры.

Дополнительно


Перед самым началом
Советы для новичков и не только.


Оффтоп.

Clone this wiki locally