sosiskin написал:
Вета написал:
вторая ссылка не становится видимой, хотя условие выполняется.
но стоп, условие же находится внутри цикла if-then-endif, как же оно выполнится, если условие для его выполнения не выполнено?
Почему не выполнено? Я нажимаю на первую ссылку, там у меня смена значения объекта (пролог=1) и условие становится выполненным. А вторая ссылка все равно не появляется.
Неактивен
Не выполнено, потому что при нажатии на первую ссылку, вы передаёте управлению параграфу, на который ведёт ссылка. В данном случае на параграф "о_заводе".
Неактивен
DoubleDragon написал:
Не выполнено, потому что при нажатии на первую ссылку, вы передаёте управлению параграфу, на который ведёт ссылка. В данном случае на параграф "о_заводе".
А как сделать, чтобы выполняло тогда? В параграфе "о_заводе" нужно менять значение переменной?
Неактивен
Вета написал:
DoubleDragon написал:
Не выполнено, потому что при нажатии на первую ссылку, вы передаёте управлению параграфу, на который ведёт ссылка. В данном случае на параграф "о_заводе".
А как сделать, чтобы выполняло тогда? В параграфе "о_заводе" нужно менять значение переменной?
А параграф с кодом как называется "о_заводе"? Или это другой параграф?
Неактивен
Это другой.
Неактивен
Вета написал:
А как сделать, чтобы выполняло тогда? В параграфе "о_заводе" нужно менять значение переменной?
Даже если поменять значение переменной в параграфе "о_заводе", результат будет тем же. А все потому, что описание завода добавляется к текущему параграфу, который был сформирован при старом значении переменной, и с тех пор не обновлялся.
Как вариант, можно вместе с частью описания завода выводить и дополнительную ссылку на продолжение описания:
параграф "о_заводе" <<if $пролог eq 1>> Это большой завод. [[+Хочу знать больше|о_заводе {$пролог = 2}]] <<elseif $пролог eq 2>> У него есть высокая труба. [[+Хочу знать больше|о_заводе {$пролог = 3}]] <<elseif $пролог eq 3>> Верх трубы теряется в облаках... или это дым? <<endif>>
Не проверял, но по идее должно работать.
Неактивен
третий день бьюсь, не могу понять ,как работают объекты. мне надо сделать например непроходимые двери пока не найдешь ключ. и после того как ключ взят на другой странице дверь рабочая ссылка это можно наглядно как нибудь сделать. виде примера. очень надо сделать
Неактивен
Простейший пример:
###параграф "Комната 1"### Вы видите дверь. <<if $ключ>> Дверь заперта, но, к счастью, у Вас есть ключ. [[Открыть дверь|Комната 2]] <<else>> Похоже, без ключа эту дверь не откроешь. [[Глянуть под ковриком|Коврик]] <<endif>> ###параграф "Коврик"### Под ковриком Вы нашли ключ. <<set $ключ = 1>> [[Вернуть коврик на место|Комната 1]]
Отредактировано Morych (26.08.2012 17:43)
Неактивен
Возможно ли сделать, чтобы носить инвентарь с собой? чтобы использывать его с определенной целю. Например есть трещина в сырой стене, текст не выделен, ходим дальше по лакациям, находим кирку-она срабатывает не как ключ, а только если игрок в определенном месте ее выбрит. Вообще было бы здорово если бы уже профи выложили примеры разных хитростей в игре, это бы помогло всем. Да и создавать интереснее.
Неактивен
Я делаю инвентарь примерно так. Есть специальный параграф "StoryMenu", там делаем ссылку с плюсом на параграф "Инвентарь", в котором выводим перечень предметов. Каждый предмет - тоже ссылка с плюсом, которая ведет на параграф описания предмета, а также доступных действий с этим предметом.
:: StoryMenu [[+Инвентарь]] :: Инвентарь <<set $n = 0>> У Вас в кармане: <<if $кирка>><<set $n++>>[[+кирка]]<<endif>><<if $топор>><<if $n gt 0>>, <<endif>><<set $n++>>[[+топор]]<<endif>><<if $золото gt 0>><<if $n gt 0>>, <<endif>><<set $n++>>[[+золотые монеты]] (<<print $золото>> шт.)<<endif>><<if $n eq 0>>ничего нет<<endif>>. :: кирка Старая ржавая кирка. [[+Чистить кирку]] <<if $трещина and !($стена_сломана)>> [[Долбить стену с трещиной|Стена с трещиной {$стена_сломана = 1}]] <<endif>> :: Стена с трещиной Вы в заброшенной штольне. <<if $стена_сломана>> В сырой стене теперь есть проход. [[Лезть в проход {$трещина = 0}]] <<else>> <<set $трещина = 1>> В глаза бросается трещина в сырой стене. <<endif>> [[Уйти|Выход из пещеры {$трещина = 0}]]
Вот и всё, пробуйте. Осталось только на какой-нибудь локации найти кирку, т.е. присвоить $кирка = 1. В инвентаре можно заметить переменную $n. Она считает имеющиеся предметы, чтобы дописывать запятые, если предметов больше 1 и вставить надпись "ничего нет", если число предметов = 0. А насчёт разных хитростей в игре, то, я думаю, профи их выложат, но после конкурса.
Неактивен
Пожалуйста. На самом деле все просто. Для каждой вещи в инвентаре добавляйте блок:
<<if $предмет gt 0>><<if $n gt 0>>, <<endif>><<set $n++>>[[+предмет]] (<<print $предмет>> шт.)<<endif>>
Это в общем случае, если экземпляров данного предмета может быть несколько. Т.о. переменная $предмет хранит количество.
Если немного поработать, можно описание инвентаря сделать более литературным. Например, если разных предметов у ГГ больше одного, то перед последним предметом вместо запятой можно поставить "и". Подскажу, что для этого сначала нужно посчитать количество разных предметов.
Кстати, повторяющиеся куски кода:
<<if $n gt 0>>, <<endif>><<set $n++>>
можно (и нужно) поместить в специальный параграф, назовем его, "Инв", который потом вызывать макросом <<display 'Инв'>> :
<<if $предмет gt 0>><<display 'Инв'>>[[+предмет]] (<<print $предмет>> шт.)<<endif>>
Отредактировано Morych (27.08.2012 13:19)
Неактивен
sosiskin написал:
<<set $n++>> - это что, инкремент переменной на единицу? я о двух плюсиках нигде в хелпе не встречал упоминаний.
Совершенно верно. Эквивалентно <<set $n = $n + 1>>
Еще есть инкремент на произвольную величину: <<set $n+=5>>
Теоретически должен работать синтаксис JavaScript. Нужно спросить у DoubleDragon.
Неактивен
Работает. Кроме $n--.
Неактивен
Morych написал:
Пожалуйста. На самом деле все просто. Для каждой вещи в инвентаре добавляйте блок:
<<if $предмет gt 0>><<if $n gt 0>>, <<endif>><<set $n++>>[[+предмет]] (<<print $предмет>> шт.)<<endif>>
Это в общем случае, если экземпляров данного предмета может быть несколько. Т.о. переменная $предмет хранит количество.
Если немного поработать, можно описание инвентаря сделать более литературным. Например, если разных предметов у ГГ больше одного, то перед последним предметом вместо запятой можно поставить "и". Подскажу, что для этого сначала нужно посчитать количество разных предметов.
Кстати, повторяющиеся куски кода:
<<if $n gt 0>>, <<endif>><<set $n++>>
можно (и нужно) поместить в специальный параграф, назовем его, "Инв", который потом вызывать макросом <<display 'Инв'>> :
<<if $предмет gt 0>><<display 'Инв'>>[[+предмет]] (<<print $предмет>> шт.)<<endif>>
вот такой бы блок для вещей сделать в макросы и было удобно если бы пользователь мог вносить в макросы свои блоки. У меня уже больше 41 параграфа я теряюсь периодически в них, тут как то по глупости нажал раставить- был взрыв мозга. Поэтому если создавать еще параграфы на макросы, то лабиринты нервно курят.
Отредактировано vinurd (28.08.2012 03:09)
Неактивен
vinurd написал:
вот такой бы блок для вещей сделать в макросы и было удобно если бы пользователь мог вносить в макросы свои блоки.
Это, скорее, сниппеты нежели макросы. Написал про них в тему предложений.
Неактивен
Подскажите, как сделать такую вещь, чтобы при вставке текста из другой локации, он бы не переносился на новую строку.
Пример:
#1
Стрелка указывает на <<display '2'>>
-------------------------------------------------------
Если есть несколько условий в параграфе 2, текст из параграфа 2 переносится почему-то в параграфе 1 на новую строку. А мне нужно чтобы он продолжал текст.
Неактивен