1-- $Name:Навчання$ 2 3instead_version "1.6.0" 4 5require "dash" -- '--' replace :) 6require "para" -- be more "Russian" 7require "quotes" 8 9game.act = 'Не виходить.'; 10game.inv = "Гм.. Не те.."; 11game.use = 'Не спрацює...'; 12 13game.pic = 'instead.png'; 14 15set_music('instead.ogg'); 16 17main = room { 18 nam = 'Навчання', 19 act = function() -- only one vobj, no check, just goto 20 walk('r1'); 21 end, 22 dsc = txtc("Вітаємо в режимі навчання INSTEAD.")..[[^^ 23 Гра складається зі сцен. Кожна сцена гри має опис, 24 що складається зі статичної та динамічної частини. Динамічна частина включає об'єкти, 25 персонажі й т.і. З динамічною частиною гравець може взаємодіяти за допомогою миші, 26 нажимаючи на підсвічені посилання.^^ 27 28 Дана сцена має назву "Навчання" і зараз Ви читаєте статичну частину її опису. 29 Єдиним об'єктом сцени є об'єкт "Далі", котрий Ви бачите внизу тексту. 30 Отже, для продовження навчання Ви можете натиснути на "Далі".]], 31 obj = { 32 vobj('continue', '{Далі}'), 33 }, 34}; 35 36paper = obj { 37 nam = 'папір', 38 dsc = 'Перше, що Ви помічаєте в кімнаті -- {аркуш паперу}.', 39 tak = 'Ви взяли папір.', 40 var { seen = false, haswriting = false }, 41 inv = function(s) 42 if here() == r2 then 43 s.seen = true; 44 end 45 if not s.haswriting then 46 return 'Чистий аркуш картатого паперу. Схоже, його вирвали з зошита.'; 47 end 48 p 'Аркуш картатого паперу, на якому написано Ваше ім`я.'; 49 end, 50 used = function(s, w) 51 if w == pencil and here() == r4 then 52 s.haswriting = true; 53 p 'Ви пишите на аркуші своє ім`я.'; 54 end 55 end, 56}; 57 58pencil = obj { 59 nam = 'олівець', 60 dsc = 'На підлозі лежить {олівець}.', 61 tak = 'Ви підібрали олівець.', 62 var { seen = false }, 63 inv = function(s) 64 if here() == r2 then 65 s.seen = true; 66 end 67 p 'Звичайний дерев`яний олівець.'; 68 end, 69}; 70 71r1 = room { 72 nam = 'Урок 1', 73 enter = code [[ lifeon('r1') ]], 74 life = function(s) 75 if not have 'paper' or not have 'pencil' then 76 return 77 end 78 put(vway('continue', 79 [[Відмінно!^Ви, швидше за все помітили, що статична частина опису сцени 80 зникла, поступившись місцем опису предметів, котрі Ви взяли. 81 Щоб знову подивитись повний опис сцени, можна нажати на її 82 назву, відображену у верхній частині вікна -- "Урок 1". Окрім того, 83 можна нажати клавішу F5 на клавіатурі, результат буде такий само.^^ 84 {Далі}]], 'r2')); 85 lifeoff('r1'); 86 end, 87 dsc = [[Урок 1. Взаємодія з об`єктами^^ 88 Продовжимо урок. Зараз Ви знаходитесь в кімнаті. Візьміть обидва предмети, 89 котрі Ви бачите. Нагадаємо, що для цього Ви можете просто 90 використовувати мишу. Якщо Вам зручніше використовувати клавіатуру -- можна 91 обрати потрібний предмет за допомогою клавіш зі стрілками и натиснути "Введення" для 92 взаємодії з ними.]], 93 obj = { 'paper', 'pencil'}, 94}; 95 96r2 = room { 97 nam = 'Урок 2', 98 enter = code [[ lifeon('r2') ]], 99 life = function(s) 100 if not paper.seen or not pencil.seen then 101 return 102 end 103 put(vway("continue", "Гарно!^^{Далі}", 'r3')); 104 lifeoff('r2'); 105 end, 106 dsc = [[Урок 2. Використання інвентарю - Частина I^^ 107 Тепер у Вас з'явилися предмети, котрі можно використовувати чи вивчати. 108 Для цього призначений інвентар. Ви можете подивитися на будь-який предмет 109 інвентарю двічи клацнувши мишею по цьому предмету. Те ж саме можна 110 зробити за допомогою клавіатури: нажміть "Tab", щоб перемкнутися на панель 111 інвентарю, оберіть потрібний предмет і двічі 112 нажміть "Введення". Щоб повернутися назад до опису сцени, нажмить "Tab" ще раз.^^ 113 114 Отже, подивіться на папір. Потім, повторіть цю операцію з олівцем.]], 115}; 116 117apple = obj { 118 nam = 'яблуко', 119 dsc = 'На столі лежить {яблуко}.', 120 tak = 'Ви взяли яблуко зі столу.', 121 var { knife = false }, 122 inv = function(s) 123 if here() == r4 then 124 remove(s, me()); 125 return 'Вы з`їдаєте яблуко.'; 126 end 127 p 'Виглядає апетитно.'; 128 end, 129}; 130 131desk = obj { 132 nam = 'стіл', 133 dsc = 'В цьому уроці ви бачите дерев`яний {письмовий стіл}.', 134 var { haswriting = false, seen = false }, 135 act = function(s) 136 if s.haswriting then 137 s.seen = true; 138 return 'Великий дубовий письмовий стіл. На стільниці видно дрібний напис олівцем: "Любіть Україну".'; 139 end 140 p 'Великий дубовий письмовий стіл.'; 141 end, 142 used = function(s, w) 143 if w == pencil and not s.haswriting then 144 s.haswriting = true; 145 p 'Ви пишете на столешні декілька літер.'; 146 end 147 end, 148 obj = { 'apple' }, 149}; 150 151r3 = room { 152 nam = 'Урок 3', 153 enter = code [[ lifeon('r3') ]], 154 life = function(s) 155 if not desk.seen or not have('apple') then 156 return 157 end 158 put(vway("continue", "^^{Далі}", 'r4')); 159 lifeoff('r3'); 160 end, 161 dsc = [[Урок 3. Використання інвентаря - Частина II^^ 162 Ви можете задіяти предмети інвентарю на інші предмети сцени чи інвентарю. 163 В цій комнаті ви бачите стіл. Спробуйте задіяти олівець на стіл.^^ 164 165 Для цього клацніть мишей на олівець, а потім на стіл. Те ж саме можна зробити 166 за допомогою клавіатури: використовуючи клавіши "Tab", "Введення" й "стрілки".^^ 167 168 Потім подивіться на стіл. І не забудьте взяти яблуко, воно нам знадобиться в наступному уроці.]], 169 obj = { 'desk' }, 170}; 171 172r4 = room { 173 nam = 'Урок 4', 174 enter = function() 175 apple.knife = false; 176 lifeon('r4'); 177 end, 178 life = function(s) 179 if not paper.haswriting or have('apple') then 180 return 181 end 182 put(vway("continue", "Гаразд.^^{Далі}", 'r5')); 183 lifeoff('r4'); 184 end, 185 dsc = [[Урок 4. Використання інвентарю - Частина III^^ 186 Гаразд, тепер вивчимо ще декілька дій з предметами.^^ 187 188 По-перше, напішить що-небудь на папері. Для цього нажміть мишею 189 на олівець, а потім на папір. Після цього ви можете подивитись 190 на папір, щоб побачити ваш запис.^^ 191 192 По-друге, з'їште яблуко, котре Ви взяли зі столу в попередній кімнаті. 193 Для цього двічи клацніть по яблуку в інвентарі.^^ 194 195 Всі описані дії можна виконати за допомогою клавіатури так само, 196 як показано в попередньому уроці.]], 197}; 198 199r5 = room { 200 nam = 'Урок 5', 201 exit = function(s, t) 202 if t ~= r6 then 203 return 'Цей урок ми вже пройшли.^ Будь ласка, перейдіть на урок 6.', false; 204 end 205 end, 206 dsc = [[Урок 5. Переміщення - Частина I^^ 207 Тепер вивчимо переходи між кімнатами. В цій кімнаті Ви бачите п'ять 208 допоміжних посилань з номерами уроків. Перейдіть на урок 6. ^^ 209 210 Для цього натисніть мишею на відповідне посилання. Ви також можете використати 211 клавіатуру -- виберіть потрібне посилання за допомогою клавіш зі стрілками 212 та нажміть "Введення" для переходу.]], 213 way = { 'r1', 'r2', 'r3', 'r4', 'r6'}, 214}; 215 216r6 = room { 217 nam = 'Урок 6', 218 exit = function(s, t) 219 if t ~= theend then 220 p 'Цей урок ми вже пройшли.^ Будь ласка, перейдіть на останній урок.' 221 return false; -- same as return "text", false 222 end 223 end, 224 dsc = [[Урок 6. Переміщення - Частина II^^ 225 Тепер перейдіть на останній урок.]], 226 way = { 'r1', 'r2', 'r3', 'r4', 'r5', 'theend'}, 227}; 228 229theend = room { 230 nam = 'Останній урок', 231 dsc = [[Ви можете вибирати гру, зберігати та завантажувати її стан і виконувати 232 інші дії за допомогою меню. Для виклику меню натисніть клавішу "Esc" або 233 натисніть мишею на символ меню (справа знизу).^^ 234 Тепер Ви готові до гри. Хай щастить!!!^^ 235 Ігри для INSTEAD можно завантажити тут: ]]..txtu("https://instead-hub.github.io")..[[^^ 236 Для навчання використан трек "Instead game-engine" вiд svenzzon.]], 237 obj = { vway('keys', 'Подивитись {список клавіш}.', 'help')}, 238}; 239 240help = room { 241 nam = 'Список клавіш', 242 dsc = [[ 243 Esc - Виклик меню;^ 244 Alt+Q - Вихід;^ 245 Alt+Enter - Повноекранний/віконний режим;^ 246 F5 - Оновлення сцени;^ 247 Пробел/Backspace - Прокрутка опису сцени;^ 248 Tab/Shift+Tab - Переключення між активними зонами;^ 249 PgUp/PgDn - Прокрутка активної зони;^ 250 Стрілки вліво/вправо - Вибір посиланнь в активній зоні;^ 251 F2 - Збереження гри;^ 252 F3 - Завантаження гри;^ 253 F8 - Швидке збереження гри;^ 254 F9 - Швидке завантаження гри.^^ 255 256 Клавіши, поведінка яких залежить від обраного режиму клавіатури 257 (див. Меню -> Налаштування -> Режим клавіатури):^^ 258 259 Стрілки вгору/вниз:^ 260 - В режимі "Прокрутка": прокрутка активної зони;^ 261 - В режимі "Посилання": вибір посиланнь в активній зоні;^ 262 - В режимі "Розумний": одночасний вибір посиланнь та прокрутка активної зони.^^ 263 264 Стрілки вгору/вниз + Shift або Alt:^ 265 - В режимі "Прокрутка": вибір посиланнь в активній зоні;^ 266 - В режимі "Посилання": прокрутка активної зони;^ 267 - В режимі "Розумний": прокрутка активної зони. 268 ]], 269 obj = { vway('cmdline', 'Подивитись {параметри командного рядка}.', 'help2')}, 270}; 271 272help2 = room { 273 nam = 'Параметри командного рядка', 274 dsc = [[ 275 -nosound - запуск без звуку;^ 276 -debug - режим налагоджування для розробників ігр;^ 277 -theme <тема> - вибір теми;^ 278 -game <гра> - вибір гри;^ 279 -themespath <шлях> - додатковий шлях до тем;^ 280 -gamespath <шлях> - додатковий шлях до ігр;^ 281 -windows - віконний режим;^ 282 -fullscreen - повноекранний режим;^ 283 -noautosave - відключити автозбереження/автозагрузку;^ 284 -encode <game.lua> [encoded.lua] - закодувати вихідний текст lua (використовуйте doencfile для загрузки такого файла);^ 285 -mode [ШИРИНАxВИСОТА] - встановити роздільну здатність екрану. 286 ]], 287 obj = { vway('keys', 'Подивитись {список клавіш}.', 'help')}, 288}; 289