206 lines
12 KiB
Lua
206 lines
12 KiB
Lua
-- $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.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 = { 'arcade', 'ruble', 'penny'},
|
||
};
|
||
|
||
act1r2 = room{
|
||
nam = 'Действие второе.',
|
||
enter = function()
|
||
inv():zap();
|
||
theme.gfx.bg("summer.jpg");
|
||
theme.inv.reset();
|
||
theme.win.reset();
|
||
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('ending');
|
||
end,
|
||
obj = {vobj('continue', '{Продолжить}'),}
|
||
}
|
||
|
||
ending = 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 существуют и совершенно другие. Обязательно поиграйте!^^
|
||
Если вы задумали написать свою игру, вы можете прочитать документацию. Она лежит в каталоге doc там, где вы установили Steed или в /usr/share/doc/steed. Вам также поможет исходный код этой игры.^^
|
||
На этом введение в Steed закончено. Спасибо за игру!]],
|
||
way = {'help', 'help2', 'credits'}
|
||
};
|
||
|
||
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'}
|
||
}
|
||
|
||
help = room {
|
||
nam = 'Список горячих клавиш',
|
||
dsc = [[
|
||
Esc - Вызов меню;^
|
||
Alt+Q - Выход;^
|
||
Alt+Enter - Полноэкранный/оконный режим;^
|
||
F5 - Обновление сцены;^
|
||
Пробел/Backspace - Прокрутка описания сцены;^
|
||
Tab/Shift+Tab - Переключение между активными зонами;^
|
||
PgUp/PgDn - Прокрутка активной зоны;^
|
||
Стрелки влево/вправо - Выбор ссылок в активной зоне;^
|
||
F2 - Сохранение игры;^
|
||
F3 - Загрузка игры;^
|
||
F8 - Быстрое сохранение игры;^
|
||
F9 - Быстрая загрузка игры.^^
|
||
|
||
Клавиши, поведение которых зависит от выбранного режима клавиатуры
|
||
(см. Меню -> Настройки -> Режим клавиатуры):^^
|
||
|
||
Стрелки вверх/вниз:^
|
||
- В режиме "Прокрутка": прокрутка активной зоны;^
|
||
- В режиме "Ссылки": выбор ссылок в активной зоне;^
|
||
- В режиме "Умный": одновременно выбор ссылок и прокрутка активной зоны.^^
|
||
|
||
Стрелки вверх/вниз + Shift или Alt:^
|
||
- В режиме "Прокрутка": выбор ссылок в активной зоне;^
|
||
- В режиме "Ссылки": прокрутка активной зоны;^
|
||
- В режиме "Умный": прокрутка активной зоны.
|
||
]],
|
||
way = {'help2', 'credits'}
|
||
};
|
||
|
||
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ВЫСОТА] - установить разрешение.
|
||
]],
|
||
way = {'help2', 'credits'}
|
||
};
|