Edited online

oreolek 2015-08-14 12:55:43 +00:00
parent 649c5ad9b9
commit 3c94dc2e0b

44
Guide.md Normal file

@ -0,0 +1,44 @@
# [English guide] Usage
## emphasis module
This module lets you ditch `txtb` and `txtem` functions in the game main code. Вместо них используется простой синтаксис выделения текста, скопированный из Markdown. Вместо сложного `pn "Привет"..txtem("Игрок")` вы можете написать просто `pn "Привет *Игрок*"`.
**Usage:**
**bold** or __bold__
*italic* или __italic__
Просто подключите `require "emphasis"` и пользуйтесь этими короткими сокращениями. Модуль подключает модуль `format`.
## choice module
Наглядное использование этого модуля показано в игре ["Шестой город"](https://github.com/Oreolek/sixth_city). Он позволяет показывать фразы в диалогах на основе определённых критериев, которые различаются для каждой фразы. В результате получается сложный геймплей CYOA, основанный на множественных проверках условий.
Для начала покажу обычный диалог. Он ничем не отличается от стандартных диалогов INSTEAD, его можно сделать средствами обычного массива `phr`:
choose = choice {
nam = 'Diner',
dsc = [[I see some food.]],
obj = {
option(nil,'Съесть яблоко', nil, 'pl._ate = "apple"' ),
option(nil,'Съесть перец'), nil, 'pl._ate = "pepper"' ),
option(nil,'Запить водой'), nil, 'pl._drank = "water"' ),
}
}
Чем отличается этот диалог? Во-первых, он описан как объект типа `choice`. Во-вторых, его фразы находятся в массиве `obj` и описаны функциями `option`. Синтаксис функции `option` соответствует функции `phr`, только добавляется новый параметр: условие, при котором появляется фраза. Если это условие пусто (что на языке Lua описывается словом `nil`), то фраза показывается всегда. Давайте посмотрим, что можно сделать при помощи условий:
choose = choice {
nam = 'Diner',
dsc = [[I see some food.]],
obj = {
option(function() return true end,'Eat an apple', nil, 'pl._ate = "apple"' ),
option("pl._ate ~= 'pepper'",'Eat a pepper'), nil, 'pl._ate = "pepper"' ),
option("pl._ate == 'pepper'",'Drink water'), nil, 'pl._drank = "water"' ),
}
}
Теперь третья фраза изначально не видна. Если игрок выберет вторую, то вторая тут же скроется, и появится третья. Условия могут быть также функциями, которые возвращают булево значение (`true` или `false`). Условия могут быть сколь угодно сложными, они могут проверять всё состояние игры.
Здесь также важно то, что условия проверяются при каждой отрисовке комнаты: игрок может активировать предмет в инвентаре, и у него тут же поменяется набор вариантов. Объект choice может реагировать даже на изменение настроек самого INSTEAD — всё, что придёт вам в голову. Это часто удобнее, чем выставлять показ/скрытие каждой фразы явным образом.