This repository has been archived on 2019-04-06. You can view files and clone it, but cannot push or open issues or pull requests.
adventin/games/tutorial2/main.lua
2011-06-15 13:01:05 +00:00

290 lines
13 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- $Name:Обучение$
instead_version "1.3.1"
require "dash" -- '--' replace :)
require "para" -- be more "Russian"
require "quotes"
game.act = 'Не получается.';
game.inv = "Гм.. Не то..";
game.use = 'Не сработает...';
game.pic = 'instead.png';
set_music('ramparts.mod');
main = room {
nam = 'Обучение',
act = function() -- only one vobj, no check, just goto
goto('r1');
end,
dsc = txtc("Добро пожаловать в режим обучения INSTEAD.")..[[^^
Игра состоит из сцен. Каждая сцена игры имеет описание,
состоящее из статической и динамической части. Динамическая часть включает объекты,
персонажей и т.д. С динамической частью игрок может взаимодействовать с помощью мыши,
нажимая на подсвеченные ссылки.^^
Данная сцена называется "Обучение" и сейчас Вы читаете статическую часть её описания.
Единственным объектом сцены является объект "Дальше", который Вы видите внизу текста.
Итак, для продолжения обучения Вы можете нажать на "Дальше".]],
obj = {
vobj('continue', '{Дальше}'),
},
};
paper = obj {
nam = 'бумага',
dsc = 'Первое, что Вы замечаете в комнате -- {листок бумаги}.',
tak = 'Вы взяли бумагу.',
var { seen = false, haswriting = false },
inv = function(s)
if here() == r2 then
s.seen = true;
end
if not s.haswriting then
return 'Чистый лист клетчатой бумаги. Похоже, его вырвали из тетради.';
end
p 'Лист клетчатой бумаги, на котором написано Ваше имя.';
end,
used = function(s, w)
if w == pencil and here() == r4 then
s.haswriting = true;
p 'Вы пишете на листке своё имя.';
end
end,
};
pencil = obj {
nam = 'карандаш',
dsc = 'На полу лежит {карандаш}.',
tak = 'Вы подобрали карандаш.',
var { seen = false },
inv = function(s)
if here() == r2 then
s.seen = true;
end
p 'Обычный деревянный карандаш.';
end,
};
r1 = room {
nam = 'Урок 1',
enter = code [[ lifeon('r1') ]],
life = function(s)
if not have 'paper' or not have 'pencil' then
return
end
put(vway('continue',
[[Отлично!^Вы скорее всего заметили, что статическая часть описания сцены
исчезла, уступив место описанию предметов, которые Вы взяли.
Чтобы снова посмотреть полное описание сцены, можно нажать на её
название, отображаемое в верхней части окна -- "Урок 1". Кроме того,
можно нажать клавишу F5 на клавиатуре, результат будет таким же.^^
{Дальше}]], 'r2'));
lifeoff('r1');
end,
dsc = [[Урок 1. Взаимодействие с объектами^^
Продолжим урок. Сейчас Вы находитесь в комнате. Возьмите оба предмета,
которые Вы видите. Напомним, что для этого Вы можете просто
использовать мышь. Если Вам удобнее пользоваться клавиатурой -- можно
выбрать нужный предмет с помощью клавиш со стрелками и нажать "Ввод" для
взаимодействия с ним.]],
obj = { 'paper', 'pencil'},
};
r2 = room {
nam = 'Урок 2',
enter = code [[ lifeon('r2') ]],
life = function(s)
if not paper.seen or not pencil.seen then
return
end
put(vway("continue", "Хорошо!^^{Дальше}", 'r3'));
lifeoff('r2');
end,
dsc = [[Урок 2. Использование инвентаря - Часть I^^
Теперь у Вас появились предметы, которые можно использовать или изучать.
Для этого предназначен инвентарь. Вы можете посмотреть на любой предмет
инвентаря дважды щелкнув мышью по этому предмету. То же самое можно
сделать с помощью клавиатуры: нажмите "Tab", чтобы переключиться на панель
инвентаря, выберите нужный предмет и дважды
нажмите "Ввод". Чтобы вернуться назад к описанию сцены, нажмите "Tab" еще раз.^^
Итак, посмотрите на бумагу. Затем, повторите эту операцию с карандашом.]],
};
apple = obj {
nam = 'яблоко',
dsc = 'На столе лежит {яблоко}.',
tak = 'Вы взяли яблоко со стола.',
var { knife = false },
inv = function(s)
if here() == r4 then
remove(s, me());
return 'Вы съедаете яблоко.';
end
p 'Выглядит аппетитно.';
end,
};
desk = obj {
nam = 'стол',
dsc = 'На этом уроке вы видите деревянный {письменный стол}.',
var { haswriting = false, seen = false },
act = function(s)
if s.haswriting then
s.seen = true;
return 'Большой дубовый письменный стол. На столешнице видна мелкая надпись карандашом: "Lorem Ipsum".';
end
p 'Большой дубовый письменный стол.';
end,
used = function(s, w)
if w == pencil and not s.haswriting then
s.haswriting = true;
p 'Вы пишете на столешнице несколько букв.';
end
end,
obj = { 'apple' },
};
r3 = room {
nam = 'Урок 3',
enter = code [[ lifeon('r3') ]],
life = function(s)
if not desk.seen or not have('apple') then
return
end
put(vway("continue", "^^{Дальше}", 'r4'));
lifeoff('r3');
end,
dsc = [[Урок 3. Использование инвентаря - Часть II^^
Вы можете действовать предметами инвентаря на другие предметы сцены или инвентаря.
В этой комнате вы увидите стол. Попробуйте воздействовать карандашом на стол.^^
Для этого нажмите мышью на карандаш, а затем на стол. То же самое можно сделать
с помощью клавиатуры: используя клавиши "Tab", "Ввод" и "стрелки".^^
Затем посмотрите на стол. И не забудьте взять яблоко, оно нам пригодится в следующем уроке.]],
obj = { 'desk' },
};
r4 = room {
nam = 'Урок 4',
enter = function()
apple.knife = false;
lifeon('r4');
end,
life = function(s)
if not paper.haswriting or have('apple') then
return
end
put(vway("continue", "Хорошо.^^{Дальше}", 'r5'));
lifeoff('r4');
end,
dsc = [[Урок 4. Использование инвентаря - Часть III^^
Хорошо, теперь изучим еще несколько действий с предметами.^^
Во-первых, напишите что-нибудь на бумаге. Для этого нажмите мышью
на карандаш, а затем на бумагу. После этого вы можете посмотреть
на бумагу, чтобы увидеть вашу запись.^^
Во-вторых, съешьте яблоко, которое Вы взяли со стола в предыдущей комнате.
Для этого дважды щелкните по яблоку в инвентаре.^^
Все описанные действия можно выполнить с помощью клавиатуры так же,
как показано в предыдущем уроке.]],
};
r5 = room {
nam = 'Урок 5',
exit = function(s, t)
if t ~= r6 then
return 'Этот урок мы уже прошли.^ Пожалуйста, перейдите на урок 6.', false;
end
end,
dsc = [[Урок 5. Перемещение - Часть I^^
Теперь изучим переходы между комнатами. В этой комнате Вы видите пять
дополнительных ссылок с номерами уроков. Перейдите на урок 6. ^^
Для этого нажмите мышью на соответствующую ссылку. Вы также можете воспользоваться
клавиатурой -- выберите нужную ссылку с помощью клавиш со стрелками
и нажмите "Ввод" для перехода.]],
way = { 'r1', 'r2', 'r3', 'r4', 'r6'},
};
r6 = room {
nam = 'Урок 6',
exit = function(s, t)
if t ~= theend then
p 'Этот урок мы уже прошли.^ Пожалуйста, перейдите на последний урок.'
return false; -- same as return "text", false
end
end,
dsc = [[Урок 6. Перемещение - Часть II^^
Теперь перейдите на последний урок.]],
way = { 'r1', 'r2', 'r3', 'r4', 'r6', 'theend'},
};
theend = room {
nam = 'Последний урок',
dsc = [[Вы можете выбирать игру, сохранять и загружать её состояние и выполнять
другие действия с помощью меню. Для вызова меню нажмите клавишу "Esc" или
нажмите мышью на символ меню (справа снизу).^^
Теперь Вы готовы к игре. Удачи!!!^^
Игры для INSTEAD можно скачать здесь: ]]..txtu("http://instead.syscall.ru")..[[^^
В обучении использован трек Ramparts от Scorpion.]],
obj = { vway('keys', 'Посмотреть {список клавиш}.', 'help')},
};
help = room {
nam = 'Список клавиш',
dsc = [[
Esc - Вызов меню;^
Alt+Q - Выход;^
Alt+Enter - Полноэкранный/оконный режим;^
F5 - Обновление сцены;^
Пробел/Backspace - Прокрутка описания сцены;^
Tab/Shift+Tab - Переключение между активными зонами;^
PgUp/PgDn - Прокрутка активной зоны;^
Стрелки влево/вправо - Выбор ссылок в активной зоне;^
F2 - Сохранение игры;^
F3 - Загрузка игры;^
F8 - Быстрое сохранение игры;^
F9 - Быстрая загрузка игры.^^
Клавиши, поведение которых зависит от выбранного режима клавиатуры
(см. Меню -> Настройки -> Режим клавиатуры):^^
Стрелки вверх/вниз:^
 - В режиме "Прокрутка": прокрутка активной зоны;^
 - В режиме "Ссылки": выбор ссылок в активной зоне;^
 - В режиме "Умный": одновременно выбор ссылок и прокрутка активной зоны.^^
Стрелки вверх/вниз + Shift или Alt:^
 - В режиме "Прокрутка": выбор ссылок в активной зоне;^
 - В режиме "Ссылки": прокрутка активной зоны;^
 - В режиме "Умный": прокрутка активной зоны.
]],
obj = { vway('cmdline', 'Посмотреть {параметры командной строки}.', 'help2')},
};
help2 = room {
nam = 'Параметры командной строки',
dsc = [[
-nosound - запуск без звука;^
-alsa - принудительное использование alsa (только для Linux);^
-debug - отладочный режим для разработчика игр;^
-theme <тема> - выбор темы;^
-game <игра> - выбор игры;^
-themespath <путь> - дополнительный путь к темам;^
-gamespath <путь> - дополнительный путь к играм;^
-windows - оконный режим;^
-fullscreen - полноэкранный режим;^
-noautosave - отключить автосохранение/автозагрузку;^
-encode <game.lua> [encoded.lua] - закодировать исходный текст lua (используйте doencfile для загрузки такого файла);^
-mode [ШИРИНАxВЫСОТА] - установить разрешение.
]],
obj = { vway('keys', 'Посмотреть {список клавиш}.', 'help')},
};