1
0
Fork 0
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.
steed-preface/main.lua

200 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"
require "theme"
require "dbg"
game.use = 'В приключенческих играх принято обдумывать поступки. Беспорядочное щёлканье по всем ссылкам и набор бессмысленных фраз ни к чему хорошему вас не приведут.';
set_music('bardtale.xm');
dofile('objects.lua');
main = room {
nam = 'Добро пожаловать',
act = function() -- only one vobj, no check, just goto
goto('act1r1');
end,
dsc = txtc("Эта игра поможет вам ориентироваться в Steed.")..[[^^
Steed -- это движок для создания игр. Он основан на коде другого движка, INSTEAD. По сравнению с INSTEAD Steed предлагает несколько новых возможностей; все игры от INSTEAD запускаются здесь без изменений.^^
Прежде всего надо сказать, что возможности Steed уходят далеко за пределы того, что будет показано в этой игре. Кроме текстовых приключений (управляемых мышкой или командами), на нём возможно создавать аркады, головоломки и даже чисто графические квесты.^^
Каждая игра состоит из сцен. Сейчас вы читаете описание такой сцены. ^^
Слова <<Добро пожаловать>>, подсвеченные красным цветом -- это заголовок сцены. Каждая сцена должна иметь заголовок, но не обязательно должна показывать его. ^^
Сцена может содержать несколько объектов, с которыми может действовать игрок. В этой сцене находится только один объект -- ссылка <<Дальше>>. Нажмите на неё, чтобы продолжить.]],
obj = {
vobj('continue', '{Дальше}'),
},
};
act1r1 = room {
nam = 'Действие первое. Гипертекстовое приключение.',
enter = function()
lifeon('act1r1');
theme.gfx.bg("summer.jpg");
theme.inv.geom(1100, 10, 180, 730);
theme.win.geom(60, 10, 1000, 730);
theme.inv.color(nil, "#800000", "#800000");
end,
life = function()
if (arcade._spent == true) then
lifeoff('act1r1');
return (act1r1.obj:add(vway('continue', [[^^Это было просто, не правда ли? Но это была всего лишь одна сцена. Сейчас вы узнаете, как вести себя в более просторном окружении. Пожалуйста, пройдите {дальше.}]], 'act1r2')));
end;
if have('ruble') and have('penny') then return [[Предметы в вашем инвентаре находятся всегда с вами. Чтобы осмотреть их, достаточно дважды щёлкнуть на названии предмета. Если вы предпочитаете управление с клавиатуры, вы можете нажать <<Tab>>, чтобы переключиться на панель инвентаря, выбрать нужный предмет стрелками курсора и нажать <<Ввод>> (Enter) дважды. Чтобы вернуться к описанию сцены, нажмите <<Tab>> ещё раз.^^
Попробуйте опустить монеты в автомат. Для этого щёлкните сначала на монете, а потом -- на автомате.]] end;
end,
dsc = [[Сейчас вы находитесь в имитации приключенческой игры. Для наглядности вам будет показано несколько примеров игр. Вы оцените их управление и получите понятие о возможностях движка.^^
Объекты в сцене -- это чаще всего какие-нибудь предметы. В этой сцене находится три предмета. Два из них вы можете положить в свой инвентарь. Попробуйте щёлкнуть по всем ссылкам.]],
obj = { 'penny', 'ruble', 'arcade'},
};
act1r2 = room{
nam = 'Действие первое, сцена вторая.',
enter = function()
inv():zap();
set_music('w-mh.it');
return [[Сейчас вам предстоит самостоятельно найти выход из этой мини-игры. Чтобы перейти в соседнюю комнату, используйте ссылки перехода, расположенные под заголовком сцены.^^
Когда вы совершаете какое-то действие в сцене, её описание исчезает. Если вы хотите ещё раз прочитать описание сцены, нажмите F5 или щёлкните на заголовке, выделенным красным цветом.]];
end,
dsc = [[Поле. Ржаное поле. Дует лёгкий ветерок. Ярко светит тёплое солнце. В голубом небе поют птицы.]],
obj = {'obj_hill','mountains','obj_river'},
way = {'hill','river'}
}
hill = room{
nam = 'Холм',
enter = code[[lifeon('hill')]],
exit = code[[lifeoff('hill')]],
life = function()
local reaction = {
'У ваших ног пробегает полевая мышка. Вы осторожно переступаете, чтобы не задавить её.',
'На берёзу садится воробей и заинтересованно начинает разглядывать вас, крутя головой. Прежде чем вы делаете малейшее движение, он снимается с ветки и улетает прочь.'};
if (rnd(5) > 2) then return reaction[rnd(#reaction)]; end;
end,
dsc = [[]],
obj = {'tree','boy'},
way = {'field'},
}
river = room{
nam = 'Река',
pic = 'river.jpg',
dsc = [[Неторопливо течёт река мимо ржаного поля. В зелёной прохладной воде отражается голубое небо.]],
way = {'field'}
}
field = room{
nam = 'Поле',
enter = code[[lifeon('field')]],
exit = code[[lifeoff('field')]],
life = function()
local reaction = {'Над вами пролетает стриж.','Ветер доносит до вас тихие звуки флейты.'};
if (rnd(5) > 2) then return reaction[rnd(#reaction)]; end;
end,
dsc = [[Поле. Ржаное поле. Дует лёгкий ветерок. Ярко светит тёплое солнце. В голубом небе поют птицы.]],
obj = {'obj_hill','mountains','obj_river'},
way = {'hill','river'}
}
dlg_boy = dlg{
nam = 'Диалог с мальчиком',
dsc = [[На вас выжидающе смотрит маленький блондинчик в клетчатой рубашке и простых коричневых шортах. Он лежит в тени и играется с флейтой.]],
obj = {
phr('Привет. Как ты сюда попал?',[[--Привет. Как ты сюда попал?^^--А вот она -- тропинка.]],code[[hill.obj:add('obj_wayout');hill.way:add('out');]]),
_phr('Слушай, а что это за венок висит?', [[--Слушай, а что это за венок висит?^^--Не трогай. Висит и висит, тебе-то что?]])
}
}
out = room{
nam = 'По тропинке',
dsc = [[Вы благополучно выходите из полей.]],
enter = code[[set_music('approach.it');]],
act = function()
goto('act2');
end,
obj = {vobj('continue', '{Продолжить}'),}
}
act2 = room {
nam = 'Действие второе. Текстовое приключение.',
enter = function()
theme.gfx.bg("winter_dusk_by_raoul_pop.jpg");
theme.inv.reset();
theme.win.reset();
me().panel:add 'parser';
--theme.win.color("#ffd0c0", "#a060f0", "#a060f0");
end,
dsc = [[Чтобы не превращать короткое введение в долгую прогулку на несколько часов, это действие было сокращено до минимума.^^
Здесь вам предстоит ознакомиться с управлением в обычном текстовом квесте. В классических текстовых приключениях вы должны набирать команды на клавиатуре, чтобы взаимодействовать с игрой. Здесь нет ссылок.^^
Для простоты это поле принимает только одну команду -- <<Продолжить>>. Наберите команду, нажмите <<ВВОД>> (или Enter) и игра отреагирует на то, что вы набрали.^^
Эта памятка не исчезнет при выполнении любого действия, как в предыдущих сценах.^^
Чтобы вызвать меню Steed, нажмите на кнопке меню (в этой игре она выглядит как силуэт лошади). В меню вам доступны многие функции управления играми, например, можно сохранить игру и позже -- вернуться к ней.]],
next = code [[ goto 'act3' ]],
obj = {parser}
};
act3 = room {
nam = 'Действие третье. Мини-игра.',
enter = function()
--theme.gfx.bg("winter_dusk_by_raoul_pop.jpg");
theme.inv.reset();
theme.win.reset();
--theme.win.color("#ffd0c0", "#a060f0", "#a060f0");
end,
dsc = [[Здесь будет Очень Простая Мини-Игра как пример того, что можно сделать на Steed.]],
};
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')},
};