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

206 lines
12 KiB
Lua
Raw Normal View History

2011-08-22 10:20:09 +03:00
-- $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,
2011-09-03 13:53:09 +03:00
dsc = txtc("Эта игра поможет вам сориентироваться в Steed.")..[[^^
2011-08-22 10:20:09 +03:00
Steed -- это движок для создания игр. Он основан на коде другого движка, INSTEAD. По сравнению с INSTEAD Steed предлагает несколько новых возможностей; все игры от INSTEAD запускаются здесь без изменений.^^
Прежде всего надо сказать, что возможности Steed уходят далеко за пределы того, что будет показано в этой игре. Кроме текстовых приключений (управляемых мышкой или командами), на нём возможно создавать аркады, головоломки и даже чисто графические квесты.^^
Каждая игра состоит из сцен. Сейчас вы читаете описание такой сцены. ^^
Слова <<Добро пожаловать>>, подсвеченные красным цветом -- это заголовок сцены. Каждая сцена должна иметь заголовок, но не обязательно должна показывать его. ^^
Сцена может содержать несколько объектов, с которыми может действовать игрок. В этой сцене находится только один объект -- ссылка <<Дальше>>. Нажмите на неё, чтобы продолжить.]],
obj = {
vobj('continue', '{Дальше}'),
},
};
act1r1 = room {
2011-09-03 17:14:37 +03:00
nam = 'Действие первое.',
2011-08-22 10:20:09 +03:00
enter = function()
lifeon('act1r1');
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 = [[Сейчас вы находитесь в имитации приключенческой игры. Для наглядности вам будет показано несколько примеров игр. Вы оцените их управление и получите понятие о возможностях движка.^^
Объекты в сцене -- это чаще всего какие-нибудь предметы. В этой сцене находится три предмета. Два из них вы можете положить в свой инвентарь. Попробуйте щёлкнуть по всем ссылкам.]],
2011-09-03 17:14:37 +03:00
obj = { 'arcade', 'ruble', 'penny'},
2011-08-22 10:20:09 +03:00
};
act1r2 = room{
2011-09-03 17:14:37 +03:00
nam = 'Действие второе.',
2011-08-22 10:20:09 +03:00
enter = function()
inv():zap();
2011-09-03 17:14:37 +03:00
theme.gfx.bg("summer.jpg");
2011-09-03 13:53:09 +03:00
theme.inv.reset();
theme.win.reset();
2011-08-22 10:20:09 +03:00
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()
2011-09-03 17:14:37 +03:00
goto('ending');
2011-08-22 10:20:09 +03:00
end,
obj = {vobj('continue', '{Продолжить}'),}
}
2011-09-03 17:14:37 +03:00
ending = room {
nam = 'Эпилог',
2011-08-22 10:20:09 +03:00
enter = function()
--theme.gfx.bg("winter_dusk_by_raoul_pop.jpg");
theme.inv.reset();
theme.win.reset();
--theme.win.color("#ffd0c0", "#a060f0", "#a060f0");
end,
2011-09-03 17:14:37 +03:00
dsc = [[Поздравляем! Теперь вы легко сможете играть в гипертекстовые приключения.^^
Но кроме подобных игр, на Steed существуют и совершенно другие. Обязательно поиграйте!^^
Если вы задумали написать свою игру, вы можете прочитать документацию. Она лежит в каталоге doc там, где вы установили Steed или в /usr/share/doc/steed. Вам также поможет исходный код этой игры.^^
На этом введение в Steed закончено. Спасибо за игру!]],
way = {'help', 'help2', 'credits'}
2011-08-22 10:20:09 +03:00
};
2011-09-03 17:14:37 +03:00
credits = room{
nam = "Использованные работы",
dsc = [[
В игре использована музыка:^^
DipA -- A Bard's Tale^
warder -- Muuttohaukka^
Nightbeat -- Approach^^
В игре использованы иллюстрации по лицензии CC-BY:^^
Raoul Pop -- Winter dusk^
Joe Linux -- Golden Coin^
a.dombrowski -- River and mountains^^
Также использованы куски кода из игры «Погружение в INSTEAD» Петра Косых (а именно две справочные комнаты).
]],
way = {'help', 'help2'}
}
2011-08-22 10:20:09 +03:00
help = room {
2011-09-03 17:14:37 +03:00
nam = 'Список горячих клавиш',
2011-08-22 10:20:09 +03:00
dsc = [[
Esc - Вызов меню;^
Alt+Q - Выход;^
Alt+Enter - Полноэкранный/оконный режим;^
F5 - Обновление сцены;^
Пробел/Backspace - Прокрутка описания сцены;^
Tab/Shift+Tab - Переключение между активными зонами;^
PgUp/PgDn - Прокрутка активной зоны;^
Стрелки влево/вправо - Выбор ссылок в активной зоне;^
F2 - Сохранение игры;^
F3 - Загрузка игры;^
F8 - Быстрое сохранение игры;^
F9 - Быстрая загрузка игры.^^
Клавиши, поведение которых зависит от выбранного режима клавиатуры
(см. Меню -> Настройки -> Режим клавиатуры):^^
Стрелки вверх/вниз:^
 - В режиме "Прокрутка": прокрутка активной зоны;^
 - В режиме "Ссылки": выбор ссылок в активной зоне;^
 - В режиме "Умный": одновременно выбор ссылок и прокрутка активной зоны.^^
Стрелки вверх/вниз + Shift или Alt:^
 - В режиме "Прокрутка": выбор ссылок в активной зоне;^
 - В режиме "Ссылки": прокрутка активной зоны;^
 - В режиме "Умный": прокрутка активной зоны.
]],
2011-09-03 17:14:37 +03:00
way = {'help2', 'credits'}
2011-08-22 10:20:09 +03:00
};
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ВЫСОТА] - установить разрешение.
]],
2011-09-03 17:14:37 +03:00
way = {'help2', 'credits'}
2011-08-22 10:20:09 +03:00
};