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

290 lines
13 KiB
Lua
Raw Normal View History

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