Уважаемые знатоки, вопрос от нубья. Вот я в AXMA Story Maker делаю креатив по типу интерактивного рассказа с "ветвящимся" по переходам сюжетом. При выборе одного из вариантов перехода (к примеру, [[+Действие 1|Вариант 1]], [[+Действие 2|Вариант 2]], и [[+Действие 3|Вариант 3]]) части рассказа выстраиваются единым текстом, одна за другой - так, как мне хотелось бы для удобочитаемости. Но при этом при выборе Действие 1 никуда не исчезают Действие 2 и Действие 3 соответственно. А возможно ли сделать так, чтобы при выборе одного варианта перехода другие исчезали либо становились "неактивными", и воспользоваться ими можно было бы только при повторном запуске рассказа (т.е. чтобы рассказ был "необратим", но при этом выбираемые части выстраивались друг за другом в единый текст, а не сменяли одна другую)?
В случае если выше это уже рассматривалось - прощения прошу ).
Неактивен
Мартын Вачикпян написал:
Уважаемые знатоки, вопрос от нубья. Вот я в AXMA Story Maker делаю креатив по типу интерактивного рассказа с "ветвящимся" по переходам сюжетом. При выборе одного из вариантов перехода (к примеру, [[+Действие 1|Вариант 1]], [[+Действие 2|Вариант 2]], и [[+Действие 3|Вариант 3]]) части рассказа выстраиваются единым текстом, одна за другой - так, как мне хотелось бы для удобочитаемости. Но при этом при выборе Действие 1 никуда не исчезают Действие 2 и Действие 3 соответственно. А возможно ли сделать так, чтобы при выборе одного варианта перехода другие исчезали либо становились "неактивными", и воспользоваться ими можно было бы только при повторном запуске рассказа (т.е. чтобы рассказ был "необратим", но при этом выбираемые части выстраивались друг за другом в единый текст, а не сменяли одна другую)?
В случае если выше это уже рассматривалось - прощения прошу ).
Прошу прощения за поздний ответ, я тут был довольно далеко от компа. Такой ундумоподобный стиль как бы противоречит идеологии АСМа, при которой текст предыдущего параграфа как раз должен стираться. Но с добавляющими ссылками можно сделать, например, так:
:: StoryAuthor Morych :: StoryTitle Сплошной текст :: StorySubtitle Заготовка интерактивной истории. :: Start [[Начало|начало]] :: начало <<set $selected_1 = false>> <<set $selected_2 = false>> <<set $selected_3 = false>> Начало истории. [[+Действие 1|развилка1 {$action = 1}]] [[+Действие 2|развилка1 {$action = 2}]] [[+Действие 3|развилка1 {$action = 3}]] :: развилка1 <<if not $selected_1>> <<if $action eq 1>> Первый вариант развития событий. [[+Действие 1|развилка2 {$action = 1}]] [[+Действие 2|развилка2 {$action = 2}]] <<elseif $action eq 2>> Второй вариант событий. [[+Действие 1|развилка2 {$action = 3}]] [[+Действие 2|развилка2 {$action = 4}]] <<else>> Ну и третий вариант. [[+Действие 1|развилка2 {$action = 5}]] <<endif>> <<set $selected_1 = true>> <<endif>> :: развилка2 <<if not $selected_2>> <<if $action eq 1>> Продолжение первого пути. [[+Действие 1|финал {$action = 3}]] <<elseif $action eq 2>> Второе продолжение первого пути. [[+Действие 1|финал {$action = 2}]] [[+Действие 2|финал {$action = 5}]] <<elseif $action eq 3>> Первый вариант продолжения второго пути. [[+Действие 1|финал {$action = 1}]] [[+Действие 2|финал {$action = 2}]] <<elseif $action eq 4>> Второй вариант продолжения второго же пути. [[+Действие 1|финал {$action = 4}]] <<else>> Продолжение третьего пути. [[+Действие 1|финал {$action = 5}]] [[+Действие 2|финал {$action = 3}]] <<endif>> <<set $selected_2 = true>> <<endif>> :: финал <<if not $selected_3>> <<if $action eq 1>> Первый финал. <<elseif $action eq 2>> Второй финал. <<elseif $action eq 3>> Третий финал. <<elseif $action eq 4>> Четвёртый финал. <<else>> Пятый финал. <<endif>> <<set $selected_3 = true>> [[Начать заново|начало]] <<endif>>
Это первое, что пришло в голову. Подумаю ещё.
Неактивен
Доброго времени суток. Я только-только начал знакомство с программой и уже возник такой вопрос. По ходу сюжета мне нужно что бы выйдя из комнаты (которая является постоянной и гг. будет в неё возвращаться) к примеру, в коридор гг. попадал в обязательное ответвление, для знакомства с персонажем которого он если бы я не направил его так он мог бы и пропустить и по возвращении с этого побочного «знакомства» он больше туда из комнаты не мог вернуться (тесть ссылка на эту часть исчезла и была заменена обычным выходом в коридор)
Обычная Комната – (параграф с сюжетным коридором) –обычный коридор –обычная комната (сюжетный коридор мы больше не видим)
Неактивен
Василий Новойдарский написал:
Доброго времени суток. Я только-только начал знакомство с программой и уже возник такой вопрос. По ходу сюжета мне нужно что бы выйдя из комнаты (которая является постоянной и гг. будет в неё возвращаться) к примеру, в коридор гг. попадал в обязательное ответвление, для знакомства с персонажем которого он если бы я не направил его так он мог бы и пропустить и по возвращении с этого побочного «знакомства» он больше туда из комнаты не мог вернуться (тесть ссылка на эту часть исчезла и была заменена обычным выходом в коридор)
Обычная Комната – (параграф с сюжетным коридором) –обычный коридор –обычная комната (сюжетный коридор мы больше не видим)
Привет! Если я правильно понял, то можно так:
:: Start <<set $коридор = 0>> [[Начать игру|Комната]] :: Комната Описание комнаты. <<if $коридор eq 0>> [[Выйти из комнаты|СюжетныйКоридор]] <<else>> [[Выйти из комнаты|Коридор]] <<endif>> :: СюжетныйКоридор Описание знакомства. <<set $коридор = 2>> [[Вернуться в комнату|Комната]] :: Коридор Описание обычного коридора. <<set $коридор = 1>> [[Вернуться в комнату|Комната]]
Неактивен
Morych написал:
Привет! Если я правильно понял, то можно так:
Спасибо большое помогло.
Неактивен
Я сразу хочу извиняться, понимаю, что справку легче прочесть и прочее, но я там, что-то туго информацию воспринимаю. Мне всегда было проще если мне что-то объясняли.
В общем, с
Первое это ввести скажем так «Усталость» персонажа, ну к примеру, что бы за сутки он мог совершить ограниченное количество действий (нарубить дров, натаскать воды, потренироваться) и что бы количество очков действий со временем росло (то есть что бы характеристики в совокупности своей влияли на эту "усталость" ну или, что бы не усложнять жизнь зависела она от характеристики "выносливость")
Второе это ввести проверку на объекты которые на нем (например, одел он броню, взял меч - может сходить в пещеру, которая без наличия эквпипа просто была бы не доступна, но с другой стороны в броне и при оружии его не пустят к старейшине, то есть локация "старейшина" не доступна) и в то же время в броне он выглядит внушительно, то есть у некоторых НПС появляются новые ветки диалогов.
Третье наложить на это все еще и проверку характеристик (то есть броню он не может носить, пока у него нет определенного значения силы, а что бы её повысить нужно к примеру, поколоть дрова)
И последние отношения с НПС (то есть понравилась к примеру, нашему гг. Василиса и пошел он для неё подвиги совершать, подарки дарить, улучшая тем самым её отношение к себе, а на определенном моменте открывается спец. квест от неё, по выполнении которого герой получает возможность дальнейшего развития отношений то есть появляются новые ветки диалога)
И возник новый вопрос, можно ли как то числовое значение навыка прикрыть словом? ( к примеру Сила =1, а на параграфе где стоят характеристики навыки отображается Сила - "Хилый")
И еще парочка вопросов, в которых за ночь так и не смог разобраться:
Первый я создал отдельный параграф с описанием характеристик, персонажей, подсказками, доступный из любой локации но вот как сделать обратный переход не пойму.
Второй как сделать смену дня и ночи, что бы было разделение на утро, день, вечер и ночь (хочу завязать появление некоторых квестов на определенное время суток) ну и соответственно как сделать глобальный перезапуск тобишь гг лег спать, очки действий обновились (возможно произошли какие то события пока он спал)
Понимаю, что прошу многовато, до чего-то может и сам дойду, но пока не получается. Захотелось сделать что-то в стиле олдскульных РПГ, только в текстовом варианте, и в древнерусской стилистике.
Скажу сразу боевку пока даже и не планирую, скорее это будет что то типа квеста.
Отредактировано Василий Новойдарский (25.07.2014 07:01)
Неактивен
Вопросов много, будем разбираться по порядку.
Василий Новойдарский написал:
можно ли как то числовое значение навыка прикрыть словом? ( к примеру Сила =1, а на параграфе где стоят характеристики навыки отображается Сила - "Хилый")
Самый очевидный вариант — выводить нужное слово через блок условий.
<<random $sila = 5>> (случайное значение силы от 0 до 5)
В параграфе характеристик:
Сила: <<if $sila eq 0>>вялый<<elseif $sila eq 1>>хилый<<elseif $sila eq 2>>слабый<<elseif $sila eq 3>>не такой уж и слабый<<elseif $sila eq 4>>сильный<<else>>наисильнейший<<endif>>
Более прикольный вариант — сделать через массив:
<<set $silaText = ["вялый", "хилый", "слабый", "не такой уж и слабый", "сильный", "наисильнейший"]>> (этот массив объявить в самом начале игры)
В параграфе характеристик:
Сила: <<print $silaText[$sila]>>
Но здесь уже надо следить, чтобы значение переменной $sila не ушло за пределы диапазона 0...5 (тогда как в варианте с условиями при запредельной силе всё равно будет выводиться "наисильнейший").
Неактивен
Василий Новойдарский написал:
«Усталость» персонажа, ну к примеру, что бы за сутки он мог совершить ограниченное количество действий (нарубить дров, натаскать воды, потренироваться) и что бы количество очков действий со временем росло (то есть что бы характеристики в совокупности своей влияли на эту "усталость" ну или, что бы не усложнять жизнь зависела она от характеристики "выносливость")
В параграфе, который запускается каждый раз после сна:
<<set $ustal = $sila * 3 + $vynos * 5>> (определяем "усталость" — она зависит от силы и в большей степени от выносливости)
В параграфе, где возможны тренировки:
<<if $ustal gte 5>>
[[Натаскать воды|ТаскатьВоду]]
<<endif>>
<<if $ustal gte 10>>
[[Наколоть дров|КолотьДрова]]
<<endif>>
<<if $ustal gte 15>>
[[Потренироваться|Тренироваться]]
<<endif>>
В каждом из параграфов-тренировок уменьшаем "усталость", например, для дров:
Схватил тут наш <<print $name>> топор, да как принялся им помахивать, только щепки от дров летят во все стороны. Притомился малость, зато все дрова переколол да в поленницу их уложил.
<<set $ustal = $ustal - 10>> (уменьшаем "усталость")
<<set $sila = $sila + 1>> (но, допустим, это занятие прибавило силы)
Если надо, можно ввести ещё переменную-признак для каждой тренировки, чтобы нельзя было колоть дрова несколько раз в день:
<<if $ustal gte 10 and not $drova>>
[[Наколоть дров|КолотьДрова]]
<<endif>>
После сна ставим <<set $drova = false>> а после рубки дров <<set $drova = true>>
Неактивен
Morych написал:
<<random $sila = 5>> (случайное значение силы от 0 до 5)
В параграфе характеристик:
Сила: <<if $sila eq 0>>вялый<<elseif $sila eq 1>>хилый<<elseif $sila eq 2>>слабый<<elseif $sila eq 3>>не такой уж и слабый<<elseif $sila eq 4>>сильный<<else>>наисильнейший<<endif>>
Сразу такой вопрос, а к примеру можно сделать диапазон значений (ну что бы к примеру Вялый был от 0 до 10)
Неактивен
Василий Новойдарский написал:
я создал отдельный параграф с описанием характеристик, персонажей, подсказками, доступный из любой локации но вот как сделать обратный переход
Можно использовать стандартный макрос <<return 'Закрыть подсказку'>> (выводит ссылку, которая возвращает на предыдущий параграф)
Василий Новойдарский написал:
как сделать смену дня и ночи, что бы было разделение на утро, день, вечер и ночь (хочу завязать появление некоторых квестов на определенное время суток) ну и соответственно как сделать глобальный перезапуск тобишь гг лег спать, очки действий обновились (возможно произошли какие то события пока он спал)
Нужно ввести переменную "время", которая будет принимать значения от 0 до 23:
<<set $time = 7>> (игра начинается с 7 утра)
И ещё нам понадобятся:
<<set $timeAdd = 0>> (переменная для увеличения времени)
<<set $day = 0>> (переменная для подсчёта прошедших игровых дней, если надо)
Теперь заводим отдельный параграф для увеличения времени:
:: ПрошлоВремя
<<set $time = $time + $timeAdd>>
<<set $timeAdd = 0>>
<<if $time gt 23>>
<<set $time = $time - 24>>
<<set $day = $day + 1>>
<<endif>>
При каждом продолжительном действии надо вызывать этот параграф, предварительно задав значение переменной $timeAdd. Например, при рубке дров:
...все дрова переколол да в поленницу их уложил.
<<set $timeAdd = 2>>
<<display 'ПрошлоВремя'>> (незаметно прошло 2 часа)
Действия зависящие от времени суток:
<<if $time lt 5 or $time gt 21>>
[[Посетить сеновал|Сеновал]] (на сеновал можно отправиться только в тёмное время суток)
<<endif>>
Вот в то же самое тёмное время суток можно отправиться спать. Везде, где герой может прилечь, поставь такую же ссылку, зависящую от времени, которая отправляет на параграф "Сон".
:: Сон
<<random $timeAdd = 3>>
<<set $timeAdd = $timeAdd + 5>>
<<set $ustal = $sila * 3 + $vynos * 5 + $timeAdd * 2>> (чем больше поспал, тем больше очков действия)
<<display 'ПрошлоВремя'>> (герой поспал от 5 до 8 часов)
<<random $rnd = 99>>
<<if $rnd lt 35>>
За это время случилось событие, которое может случиться с вероятностью 35%.
<<endif>>
<<return 'Проснуться'>> (возвращаемся на предыдущий параграф, где и засыпали)
Неактивен
Василий Новойдарский написал:
можно сделать диапазон значений (ну что бы к примеру Вялый был от 0 до 10)
Вот знал, что сразу надо про диапазоны написать
Сила: <<if $sila lte 10>>вялый<<elseif $sila lte 20>>хилый<<elseif $sila lte 30>>слабый<<elseif $sila lte 40>>не такой уж и слабый<<elseif $sila lte 50>>сильный<<else>>наисильнейший<<endif>>
lte — меньше либо равно
Неактивен
Уххх спасибо огромное сильно выручили. Я за эти 40 минут продвинулся дальше, чем за всю ночь (а ведь залип даже и не заметил как утро настало, благо отпуск)
Неактивен
Доброго времени суток. Такой вопрос, по поводу параграфа характеристик с которого нужно вернуться на предыдущую локацию. Если я для каждого персонажа сделал отдельный параграф с описанием, то по возвращении на параграф "Характеристики" ссылка типа <<return 'Назад'>> перестает возвращать в игру.
Неактивен
Вопрос по макросу "goto".
В описании сказано: "Этот макрос совершает мгновенный переход на указанный параграф, прерывая выполнение текущего параграфа"
Пример:
Параграф_0
<<if $условие eq 10>>
<<goto 'Параграф_1'>>
<<endif>>
Какой-то текст
Если $условие равно десяти происходит переход на "Параграф_1" и отображается текст как из "Параграфа_1", так и из "Параграфа_0". Так и должно быть? Я понимал, что исходя из "прерывая выполнение текущего параграфа" текст из "Параграфа_0" не должен отображаться.
Неактивен
Вроде не нашла тут подобный вопрос.
Столкнулась с проблемой в циклах.
У меня есть некий массив, список одежды в гардеробе. Он не постоянный, меняется при получении новой вещи или выбрасывания старой.
При заходе в шкаф хочу сделать возможность одеть эту вещь.
Следующий код по логике выглядит рабочим
$одежда[0] - то, что прямо сейчас надето.
<<set $i=0>> <<if $гардероб.length > 0>> <<loop $гардероб.length>> <<set $вещь = $гардероб[$i]>> <<if $вещь != $одежда[0] >> [[-надеть|шкаф {$одежда[0] = $вещь}]] вещь = <<print $вещь>>, i = <<print $i>>, гардероб = <<print $гардероб[$i]>> <<endif>> <<set $i++>> <<endloop>> <<endif>>
Но в реальности оказывается, что {$одежда[0] = $вещь} в ссылке в любом случае получается равной последнему элементу списка, хотя выводимые значения под ссылкой показаны верны.
Получается, что при создании ссылок с изменением величин на используется последнее значение этой величины.
Или это я тормоз и что-то не то делаю и не так понимаю, или это и вправду не очень удобный косяк
Неактивен
Aruny написал:
Вроде не нашла тут подобный вопрос.
Столкнулась с проблемой в циклах.
У меня есть некий массив, список одежды в гардеробе. Он не постоянный, меняется при получении новой вещи или выбрасывания старой.
При заходе в шкаф хочу сделать возможность одеть эту вещь.
Следующий код по логике выглядит рабочим
$одежда[0] - то, что прямо сейчас надето.Код:
<<set $i=0>> <<if $гардероб.length > 0>> <<loop $гардероб.length>> <<set $вещь = $гардероб[$i]>> <<if $вещь != $одежда[0] >> [[-надеть|шкаф {$одежда[0] = $вещь}]] вещь = <<print $вещь>>, i = <<print $i>>, гардероб = <<print $гардероб[$i]>> <<endif>> <<set $i++>> <<endloop>> <<endif>>Но в реальности оказывается, что {$одежда[0] = $вещь} в ссылке в любом случае получается равной последнему элементу списка, хотя выводимые значения под ссылкой показаны верны.
Получается, что при создании ссылок с изменением величин на используется последнее значение этой величины.
Или это я тормоз и что-то не то делаю и не так понимаю, или это и вправду не очень удобный косяк
Вы всё понимаете абсолютно правильно, но в то же время это и не косяк. Во многих случаях нужно, чтобы в качестве параметра в ссылке передавалось именно текущее значение переменной. Текущее на момент нажатия ссылки игроком, а не на момент вывода ссылки на экран. Я тоже сразу же столкнулся с этой особенностью, когда делал свой инвентарь. Я решаю это следующим образом:
- добавляем в игру много однотипных параграфов вида:
:: вещь_0 [[-надеть|шкаф {$индекс = 0}]] :: вещь_1 [[-надеть|шкаф {$индекс = 1}]] :: вещь_255 [[-надеть|шкаф {$индекс = 255}]]
- в цикле используем дисплей, чтобы показать параграф с нужной ссылкой
<<set $i=0>> # <<if $гардероб.length > 0>> -- эта проверка не обязательна <<loop $гардероб.length>> <<set $вещь = $гардероб[$i]>> <<if $вещь neq $одежда[0]>> <<set $ссылка = "вещь_" + $i>> <<display $ссылка>> вещь = <<print $вещь>>, i = <<print $i>>, гардероб = <<print $гардероб[$i]>> <<endif>> <<set $i++>> <<endloop>>
Теперь все ссылки передают разные значения параметра, и в параграфе "шкаф" надеваем вещь $гардероб[$индекс]. Число мини-параграфов со ссылками равно максимальному теоретическому числу элементов массива $гардероб. Это число вам, скорее всего, будет известно — количество всех предметов одежды в игре.
Неактивен
Да я так же вышла из положения - при выводе информации о вещи выставляю типа "если зашли из шкафа, то выводим возможность надеть", "если зашли из магазина, то выводим информацию о возможности купить".
Просто так получается множество однотипных лишних строк, которые можно было бы уместить в одну. Двадцать вещей - двадцать строк вида [[надеть|шкаф {$одежда = ...}]] и ещё двадцать на покупку. И ещё двадцать на выброс...
Никакой оптимизации кода и уважения к ресурсам
Неактивен
Aruny написал:
Да я так же вышла из положения - при выводе информации о вещи выставляю типа "если зашли из шкафа, то выводим возможность надеть", "если зашли из магазина, то выводим информацию о возможности купить".
Просто так получается множество однотипных лишних строк, которые можно было бы уместить в одну. Двадцать вещей - двадцать строк вида [[надеть|шкаф {$одежда = ...}]] и ещё двадцать на покупку. И ещё двадцать на выброс...
Никакой оптимизации кода и уважения к ресурсам
А попробуйте использовать ссылки вида: [[$текстСсылки|$переход {$одежда = ...}]]
Перед циклом задаём <<set $текстСсылки = "надеть">> <<set $переход = "шкаф">> или <<set $текстСсылки = "купить">> <<set $переход = "бутик">>
Можно сделать ещё понятнее для игрока, если устанавливать <<set $текстСсылки = "Надеть " + $вещь>> (только названия вещей нужно изначально задать в винительном падеже)
Неактивен
Oldrik написал:
Вопрос по макросу "goto".
В описании сказано: "Этот макрос совершает мгновенный переход на указанный параграф, прерывая выполнение текущего параграфа"
Пример:
Параграф_0
<<if $условие eq 10>>
<<goto 'Параграф_1'>>
<<endif>>
Какой-то текст
Если $условие равно десяти происходит переход на "Параграф_1" и отображается текст как из "Параграфа_1", так и из "Параграфа_0". Так и должно быть? Я понимал, что исходя из "прерывая выполнение текущего параграфа" текст из "Параграфа_0" не должен отображаться.
Насколько я помню, текст старого параграфа после goto всё равно отображается под новым параграфом. Тут нужно мнение разработчика, а пока могу посоветовать:
:: Параграф_0 <<if $условие eq 10>> <<goto 'Параграф_1'>> <<else>> Какой-то текст <<endif>>
Неактивен
Да, действительно, это ошибка. Код после goto выполняется. Подумаю, что можно сделать.
Неактивен
Василий Новойдарский написал:
Доброго времени суток. Такой вопрос, по поводу параграфа характеристик с которого нужно вернуться на предыдущую локацию. Если я для каждого персонажа сделал отдельный параграф с описанием, то по возвращении на параграф "Характеристики" ссылка типа <<return 'Назад'>> перестает возвращать в игру.
Ссылка <<return>> возвращает на предыдущий параграф, который не всегда будет игровым при такой организации характеристик.
Можно сделать так:
:: Start <<set $currentPassage = $$title>> :: Характеристики <<if $$from neq "Характеристики" and $$from neq "Описание 1" and $$from neq "Описание 2" and $$from neq "Описание 3">> # В этом условии перечисляем названия всех параграфов, которые не являются игровыми, но могут быть предыдущими для параграфа "Характеристики" <<set $currentPassage = $$from>> <<endif>> [[Смотреть описание 1|Описание 1]] [[Смотреть описание 2|Описание 2]] [[Смотреть описание 3|Описание 3]] [[Назад в игру|$currentPassage]] :: Описание 1 Описание первого персонажа [[Назад|Характеристики]] :: Описание 2 Описание второго персонажа [[Назад|Характеристики]] :: Описание 3 Описание третьего персонажа [[Назад|Характеристики]]
В том случае, если характеристики доступны из меню, нужно в условие добавить: and $$from neq "StorySubtitle" and $$from neq "Об авторе", и другие параграфы, которые также доступны из меню. Кроме того, желательно все эти StoryMenu-параграфы переделать по аналогии с характеристиками (добавить условие и ссылку). Иначе ссылка характеристик "Назад в игру" будет возвращать не туда, если в игре сначала открыть "Об авторе", а потом "Характеристики".
Конечно же сам параграф "StorySubtitle" переделывать не нужно, там должно быть только описание игры и всё. Вместо этого нужно добавить новый параграф "Об игре", где уже выполнить <<display 'StorySubtitle'>>.
Вариант 2: вместо длинного условия в параграфе "Характеристики" можно в каждом игровом параграфе выполнять <<set $currentPassage = $$title>>
$$title (название текущего параграфа) и $$from (название предыдущего параграфа) — это системные переменные
Неактивен
Еще один вопрос :
По поводу рандомных событий.
Есть параграф со ссылками появляющимися при определенных условиях:
К примеру
::Перекресток <<if $sila lte 10 and ustal gte 15>> Иван собрался с силами и пошел в темноту леса. [[Идти в лес| Лес]] <<elseif $sila lte 15 and ustal gte 20>> Иван собрал всю волю в кулак, перехватил покрепче меч и зашел в источающее смрад, темное лоно пещеры. [[Идти в пещеру| Пещера]] <<endif>>
И вот в этот параграф я хочу добавить рандомные события которые бы при срабатывании перекрывали собой все доступные варианты.
Т.е. выйдя на перекресток наш герой внезапно наткнулся на дриаду сидящую на камне. И пока она с ней не поговорит остальные варианты не будут видны.
Неактивен
Василий Новойдарский написал:
хочу добавить рандомные события которые бы при срабатывании перекрывали собой все доступные варианты.
Т.е. выйдя на перекресток наш герой внезапно наткнулся на дриаду сидящую на камне. И пока она с ней не поговорит остальные варианты не будут видны.
И снова нам поможет макрос <<if>>
# Признаки для случайных событий: false - события не было, true - событие было <<set $event1 = false>> <<set $event2 = false>> :: Перекресток Иван вышел на перекресток, к большому и каменному камню. # Получаем случайное число от 0 до 10 <<random $event = 10>> <<if $event eq 1 and !$event1>> <<set $event1 = true>> И тут внезапно на камне появилась дриада. Иван хотел было дать дёру, но дриада молвила: -- Не пытайся дать дёру, добрый молодец, иначе я кину рут, а потом шадоу болт. Ваня понял, что ему остаётся только одно... [[Поговорить с дриадой|Дриада]] <<elseif $event eq 2 and !$event2>> <<set $event2 = true>> Другое случайное событие... <<else>> # Случайных событий не было, выводим список обычных действий На камне, конечно же, красовалась надпись: Налево -- тёмный лес (1 верста) Направо -- зловонная пещера (3 версты) <<if $sila lte 10 and $ustal gte 15>> [[Идти в лес|Лес]] <<endif>> <<if $sila lte 15 and $ustal gte 20>> [[Идти в пещеру|Пещера]] <<endif>> [[Побродить вокруг перекрёстка|Перекресток]] [[Вернуться в деревню|Деревня]] <<endif>>
Я расположил обычные действия в отдельных блоках if-endif, чтобы у игрока был выбор, пойти в лес или в пещеру, если параметры позволяют выбирать. А тексты описаний леса и пещеры лучше располагать в соответствующих параграфах.
Неактивен
Почему то эта конструкция выдает мне белый экран...
Неактивен