-- $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 [[Предметы в вашем инвентаре находятся всегда с вами. Чтобы осмотреть их, достаточно дважды щёлкнуть на названии предмета. Если вы предпочитаете управление с клавиатуры, вы можете нажать <>, чтобы переключиться на панель инвентаря, выбрать нужный предмет стрелками курсора и нажать <<Ввод>> (Enter) дважды. Чтобы вернуться к описанию сцены, нажмите <> ещё раз.^^ Попробуйте опустить монеты в автомат. Для этого щёлкните сначала на монете, а потом -- на автомате.]] 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 [encoded.lua] - закодировать исходный текст lua (используйте doencfile для загрузки такого файла);^ -mode [ШИРИНАxВЫСОТА] - установить разрешение. ]], way = {'help2', 'credits'} };