Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

   #201
08.05.2013 10:26

Вета
Участник (+249, -34)
Зарегистрирован: 05.08.2010
Сообщений: 369
Вебсайт

Мой блог: http://veta.ifiction.ru/

Re: Как сделать что-то или "я вот не понимаю"

А напомните мне, пожалуйста, как сделать сл. конструкцию:

#1

<<display 'служ'>>


#2

<<display 'служ'>>


#служ
===[[ГЛАВНАЯ|???]] | [[СТАТУС|статус]] | [[ПЕРЕМЕЩЕНИЯ|перемещения]]===
----


------------
Как сделать ссылку в служебной локации, чтобы при нажатии на ГЛАВНАЯ меня всегда возвращало в текущую локацию, даже если она сменилась.

Неактивен

   #202
08.05.2013 12:38

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

Вета, хочу уточнить, "перемещения" - это вкладка с перечнем выходов из данной локации?

UPD: Если да, то что-то вроде того:

Код:

:: StoryTitle
Интерфейс на вкладках

:: Start
[[Старт|Лок1 {$main = true}]]

:: Обновить
<<clrscr>>
<<display $loc>>

:: Лок1
<<set $loc = 'Лок1'>>
<<display 'служ'>>
<<if $main>> 
    Это локация 1.
<<else>>
    [[Пойти на локацию 2|Лок2 {$main = true}]]
    [[Пойти на локацию 3|Лок3 {$main = true}]]
<<endif>>

:: Лок2
<<set $loc = 'Лок2'>>
<<display 'служ'>>
<<if $main>> 
    Вы находитесь на локации 2.
<<else>>
    [[Вернуться на локацию 1|Лок1 {$main = true}]]
<<endif>>

:: Лок3
<<set $loc = 'Лок3'>>
<<display 'служ'>>
<<if $main>> 
    А это локация 3.
<<else>>
    [[Идти на локацию 2|Лок2 {$main = true}]]
<<endif>>

:: статус
===[[ГЛАВНАЯ|Обновить {$main = true}]] | СТАТУС | [[ПЕРЕМЕЩЕНИЯ|Обновить {$main = false}]]===
----
Имя: ''Вета''
Класс: ''Волшебница''
Жизнь: ''100/100''
Мана: ''90/200''

:: служ
<<if $main>>
    ===ГЛАВНАЯ | [[СТАТУС|статус]] | [[ПЕРЕМЕЩЕНИЯ|Обновить {$main = false}]]===
<<else>>
    ===[[ГЛАВНАЯ|Обновить {$main = true}]] | [[СТАТУС|статус]] | ПЕРЕМЕЩЕНИЯ===
<<endif>>
----

Отредактировано Morych (08.05.2013 13:22)

Неактивен

   #203
08.05.2013 14:12

Korwin
Гоблин, зеленый от недосыпа (+160, -14)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 783
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Как сделать что-то или "я вот не понимаю"

Напомните мне, как сохранить игру с "Гиперкниги" с иллюстрациями?

Отредактировано Korwin (08.05.2013 14:35)

Неактивен

   #204
08.05.2013 14:18

DoubleDragon
Модератор (+384, -29)
Откуда: Москва
Зарегистрирован: 07.04.2012
Сообщений: 1749
Вебсайт

Разработчик "AXMA Story Maker"

Re: Как сделать что-то или "я вот не понимаю"

Пока, к сожалению, никак.

Неактивен

   #205
08.05.2013 22:20

sosiskin
Участник (+8, -9)
Зарегистрирован: 02.02.2012
Сообщений: 144

Re: Как сделать что-то или "я вот не понимаю"

прошу прощения, одно уточнение по "Словопаду":
Я так понял, перед тем как вызвать $input, вы останавливаете "Словопад", чтобы окно ввода не сбивалось. А почему оно сбивается и исчезает от "словопада"? Это обусловлено приростом количества строк или свойством самого окна ввода? Его никак нельзя оставить на экране при включении словопада? например, так

Код:

:: Добавить
#<<if not $newWord.length>>
#    <<stop "Словопад2">>
    Новое слово:
    <<input "Добавить" $newWord>>
<<else>>

Попробовал убрать <<stop>>, словопад сбивал поле ввода после первого цикла.

Отредактировано sosiskin (08.05.2013 23:55)

Неактивен

   #206
09.05.2013 00:02

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

Пока мы не вызовем макрос <<stop>>, параграф, указанный ранее в макросе <<repeat>>, будет вызываться снова и снова. Поле ввода можно показать и на параграфе со словопадом, но и в этом случае нужно остановить таймер, иначе через 1 секунду экран обновится, и будет показано новое поле ввода. Всё, что мы за эту секунду туда ввели, естественно, пропадёт. Ниже приведён вариант кода, где поле ввода отображается на главном экране. Добавил ещё ссылку "отмена", если вводить новые слова расхотелось.

Код:

:: StoryTitle
Падающие слова

:: Start
[[Скринсэйвер|Пуск2]]

:: Пуск2
<<set $lstWords = ["AXMA Story Maker", "DoubleDragon", "Morych", "sosiskin", "Суперскринсэйвер"]>>
<<set $lstLines = []>>
<<set $newWord = "-">>
<<loop 20>>
    <<set $lstLines.push(" ")>>
<<endloop>>
<<repeat "Словопад2" 1>>
<<display "Словопад2">>

:: Словопад2
<<if not $newWord.length>>
    <<stop "Словопад2">>
<<else>>
    <<set $r = Math.round(Math.random() * ($lstWords.length - 1))>>
    <<set $x = Math.round(Math.random() * (40 - $lstWords[$r].length))>>
    <<set $k = "">>
    <<loop $x>><<set $k = $k + "&nbsp;">><<endloop>>
    <<if Math.round(Math.random())>>
        <<set $lstLines.unshift($k + $lstWords[$r])>>
    <<else>>
        <<set $lstLines.unshift($lstWords[$r] + $k)>>
    <<endif>>
    <<set $k = $lstLines.pop()>>
<<endif>>
<<clrscr>>
----
<<set $i = 0>>
<<loop $lstLines.length>>==={{{<<print $lstLines[$i] + "<br>">>}}}===<<set $i++>><<endloop>>
----
<<if $newWord.length>>
    [[Добавить слово|Словопад2 {$newWord = ""}]]
<<else>>
    Новое слово:
    <<input "Добавить" $newWord>>
    [[Отмена]]
<<endif>>

:: Добавить
<<set $lstWords.push($newWord)>>
<<repeat "Словопад2" 1>>
<<display "Словопад2">>

:: Отмена
<<set $newWord = "-">>
<<repeat "Словопад2" 1>>
<<display "Словопад2">>

Неактивен

   #207
09.05.2013 02:24

sosiskin
Участник (+8, -9)
Зарегистрирован: 02.02.2012
Сообщений: 144

Re: Как сделать что-то или "я вот не понимаю"

А где задаётся количество строк в словопаде? Как сделать их меньше и, например, сам колодец уже? Я что-то в коде не могу врубиться, где это задаётся.

Неактивен

   #208
09.05.2013 03:03

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

sosiskin написал:

А где задаётся количество строк в словопаде? Как сделать их меньше и, например, сам колодец уже? Я что-то в коде не могу врубиться, где это задаётся.

Количество строк - это число элементов списка $lstLines, задаётся в параграфе "Пуск2". Там где оператор цикла, мы 20 раз добавляем новый элемент в список.
Чтобы сузить "колодец" нужно поменять в строке
<<set $x = Math.round(Math.random() * (40 - $lstWords[$r].length))>>
число 40 на меньшее. Вообще $x - это число неразрывных пробелов, которые добавляются к слову справа или слева.

Неактивен

   #209
09.05.2013 10:51

sosiskin
Участник (+8, -9)
Зарегистрирован: 02.02.2012
Сообщений: 144

Re: Как сделать что-то или "я вот не понимаю"

Ух, спасибо!
Самое последнее: в начале, когда я брал за основу код Астероидов, словопад получился плотнее, т.к. там запускалось не по одному слову в строке, а по несколько.

Код:

:: StoryTitle
словопад 1

:: StoryAuthor
Sosiskin

:: StoryMenu


:: Start
<<style 'sepia'>>
===[[Запустить словопад|Начать]]===
***

:: Начать
<<display 'миелопан'>>


:: что-то
Ты стоишь прямо у закрытой двери. На двери горит слово ''"калбер-"'' Небольшая панель с подсвеченными кнопками предлагает ввести ответное слово.
<<input 'Проверка пароля 1' $пароль>>
(Чтобы слушать подсказки в информационном эфире, вы можете [[включить ''миелофон''|миелофон]].)

:: Пространство
<<clrscr>>
<<set $расстояние = 1>>
<<if $расстояние lte 0>>
    <<stop 'Пространство'>>
----
<<else>>
    <<set $код_последний = $код8>>
    <<display 'Новая линия'>>
    <<set $линия8 = $линия7>>
    <<set $код8 = $код7>>
    <<set $линия7 = $линия6>>
    <<set $код7 = $код6>>
    <<set $линия6 = $линия5>>
    <<set $код6 = $код5>>
    <<set $линия5 = $линия4>>
    <<set $код5 = $код4>>
    <<set $линия4 = $линия3>>
    <<set $код4 = $код3>>
    <<set $линия3 = $линия2>>
    <<set $код3 = $код2>>
    <<set $линия2 = $линия1>>
    <<set $код2 = $код1>>
    <<set $линия1 = $линия>>
    <<set $код1 = $код>>
    <<display 'Вывод'>>
    # переводим положение в двоичный код
    <<if $положение eq 1>>
        <<set $положение_код = '10000000'>>
    <<elseif $положение eq 2>>
        <<set $положение_код = '01000000'>>
    <<elseif $положение eq 3>>
        <<set $положение_код = '00100000'>>
    <<elseif $положение eq 4>>
        <<set $положение_код = '00010000'>>
    <<elseif $положение eq 5>>
        <<set $положение_код = '00001000'>>
    <<elseif $положение eq 6>>
        <<set $положение_код = '00000100'>>
    <<elseif $положение eq 7>>
        <<set $положение_код = '00000010'>>
    <<elseif $положение eq 8>>
        <<set $положение_код = '00000001'>>
    <<endif>>
    
<<endif>>

:: Новая линия
<<set $линия = ''>>
<<set $код = ''>>
<<random $объект = 8>>
<<if $объект eq 0>>
    <<set $линия = $линия + $словосписок [1]>>
    <<set $код = $код + '1'>>
<<else>>
    <<set $линия = $линия + '&nbsp;'>>
    <<set $код = $код + '0'>>
<<endif>>
<<random $объект = 8>>
<<if $объект eq 0>>
    <<set $линия = $линия + $словосписок [2]>>
    <<set $код = $код + '1'>>
<<else>>
    <<set $линия = $линия + '&nbsp;'>>
    <<set $код = $код + '0'>>
<<endif>>
<<random $объект = 8>>
<<if $объект eq 0>>
    <<set $линия = $линия + $словосписок [3]>>
    <<set $код = $код + '1'>>
<<else>>
    <<set $линия = $линия + '&nbsp;'>>
    <<set $код = $код + '0'>>
<<endif>>
<<random $объект = 8>>
<<if $объект eq 0>>
    <<set $линия = $линия + $словосписок [4]>>
    <<set $код = $код + '1'>>
<<else>>
    <<set $линия = $линия + '&nbsp;'>>
    <<set $код = $код + '0'>>
<<endif>>
<<random $объект = 8>>
<<if $объект eq 0>>
    <<set $линия = $линия + $словосписок [5]>>
    <<set $код = $код + '1'>>
<<else>>
    <<set $линия = $линия + '&nbsp;'>>
    <<set $код = $код + '0'>>
<<endif>>
<<random $объект = 8>>
<<if $объект eq 0>>
    <<set $линия = $линия + $словосписок [6]>>
    <<set $код = $код + '1'>>
<<else>>
    <<set $линия = $линия + '&nbsp;'>>
    <<set $код = $код + '0'>>
<<endif>>
<<random $объект = 8>>
<<if $объект eq 0>>
    <<set $линия = $линия + $словосписок [7]>>
    <<set $код = $код + '1'>>
<<else>>
    <<set $линия = $линия + '&nbsp;'>>
    <<set $код = $код + '0'>>
<<endif>>
<<random $объект = 8>>
<<if $объект eq 0>>
    <<set $линия = $линия + '*'>>
    <<set $код = $код + '1'>>
<<else>>
    <<set $линия = $линия + '&nbsp;'>>
    <<set $код = $код + '0'>>
<<endif>>
# обрамление слева
<<display 'Прочие объекты'>>
<<set $н4 = $н1>><<set $н5 = $н2>><<set $н6 = $н3>>
<<display 'Прочие объекты'>>
<<set $линия = '==={{{' + $н4+$н5+$н6 + $линия + $н1+$н2+$н3 + '}}}==='>>

:: Прочие объекты
# использовать $н1, $н2, $н3
<<random $объект = 9>>
<<if $объект eq 0>>
    <<set $н1 = '•'>>
<<elseif $объект eq 1>>
    <<set $н1 = '.'>>
<<else>>
    <<set $н1 = '&nbsp;'>>
<<endif>>
<<random $объект = 9>>
<<if $объект eq 0>>
    <<set $н2 = '•'>>
<<elseif $объект eq 1>>
    <<set $н2 = '.'>>
<<else>>
    <<set $н2 = '&nbsp;'>>
<<endif>>
<<random $объект = 9>>
<<if $объект eq 0>>
    <<set $н3 = '•'>>
<<elseif $объект eq 1>>
    <<set $н3 = '.'>>
<<else>>
    <<set $н3 = '&nbsp;'>>
<<endif>>

:: Влево
<<if $положение>1>>
    <<set $положение = $положение-1>>
<<endif>>

:: Вправо
<<if $положение<8>>
    <<set $положение = $положение+1>>
<<endif>>

:: Вывод
# положения звездолёта
<<set $линия_звездолёта = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'>>
<<if $положение eq 1>>
    <<set $линия_звездолёта = '▲&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'>>
<<elseif $положение eq 2>>
    <<set $линия_звездолёта = '&nbsp;▲&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'>>
<<elseif $положение eq 3>>
    <<set $линия_звездолёта = '&nbsp;&nbsp;▲&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'>>
<<elseif $положение eq 4>>
    <<set $линия_звездолёта = '&nbsp;&nbsp;&nbsp;▲&nbsp;&nbsp;&nbsp;&nbsp;'>>
<<elseif $положение eq 5>>
    <<set $линия_звездолёта = '&nbsp;&nbsp;&nbsp;&nbsp;▲&nbsp;&nbsp;&nbsp;'>>
<<elseif $положение eq 6>>
    <<set $линия_звездолёта = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▲&nbsp;&nbsp;'>>
<<elseif $положение eq 7>>
    <<set $линия_звездолёта = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▲&nbsp;'>>
<<elseif $положение eq 8>>
    <<set $линия_звездолёта = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;▲'>>
<<endif>>
# вывод пространства
#<<print $линия1>><<print $линия2>><<print $линия3>><<print $линия4>><<print $линия5>><<print $линия6>><<print $линия7>><<print $линия8>>==={{{<<print $линия_звездолёта>>}}}===
# вывод пространства
@@@<<print $линия1>><<print $линия2>><<print $линия3>><<print $линия4>><<print $линия5>><<print $линия6>><<print $линия7>><<print $линия8>>@@@
# вывод кнопок
# вывод расстояния

:: StorySubtitle


:: Проверка пароля 1
<<if $пароль == $словосписок [4]>>
Правильно! <<print $пароль>>! Вы угадали. Дверь открывается.
<<else>>
Что? Это не правильный пароль. Попробуйте ещё раз.
<<input 'неправильно раз' $пароль>>
<<endif>>

:: неправильно раз
Очевидно, вы не знаете пароля. Вводить слова наугад может занять много времени. Попробуйте [[воспользоваться ''миелофоном''|миелофон]].

:: миелофон
<<display 'миелопан'>>
<<display 'ground'>>

:: ground
Ты стоишь у закрытой двери. На двери горит слово ''"калбер-"'' Небольшая панель с подсвеченными кнопками предлагает ввести ответное слово.
<<input 'Проверка пароля 1' $пароль>>

:: миелопан
<<set $словосписок = ["sosiskin","{{{Morych}}}", "//ifiction//","''weird''","axma","story","словопад","мнемо",".", "•",".","•"]>>
#<<set $расстояние = 6000>>
#<<set $энергия = 3>>
# подготовка пространства
<<set $линия = '==={{{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}}==='>>
<<set $линия1 = $линия>>
<<set $линия2 = $линия>>
<<set $линия3 = $линия>>
<<set $линия4 = $линия>>
<<set $линия5 = $линия>>
<<set $линия6 = $линия>>
<<set $линия7 = $линия>>
<<set $линия8 = $линия>>
# подготовка двоичных кодов линий
<<set $код = '00000000'>>
<<set $код1 = $код>>
<<set $код2 = $код>>
<<set $код3 = $код>>
<<set $код4 = $код>>
<<set $код5 = $код>>
<<set $код6 = $код>>
<<set $код7 = $код>>
<<set $код8 = $код>>
# начальная позиция звездолёта
<<set $положение = 5>>
<<set $положение_код = '00001000'>>
# запускаем движение
<<display 'Пространство'>>
<<repeat 'Пространство' 1>>

Можно ли добиться такого с новым кодом?

Неактивен

   #210
09.05.2013 16:45

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

Можно сделать случайное число слов в строке. Как освобожусь немного, постараюсь набросать код.

Неактивен

   #211
12.05.2013 21:30

Вета
Участник (+249, -34)
Зарегистрирован: 05.08.2010
Сообщений: 369
Вебсайт

Мой блог: http://veta.ifiction.ru/

Re: Как сделать что-то или "я вот не понимаю"

Morych, нет. На перемещения не обращай внимание, это просто название ссылки такое. Меня интересует, чтобы я всегда попадала из любой локации в главную, то есть там, где текст основного описания. У тебя так вроде в принцессе было.
Например, я зашла в инвентарь, потом в статус, а потом хочу вернуться в локацию, где изначально была.

Неактивен

   #212
13.05.2013 10:18

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

Вета, в том примере так и сделано. Суть такова. На каждом параграфе-сцене, где есть описание, ты устанавливаешь значение переменной $loc равным названию параграфа. А ссылка "Главная" ведёт на служебный параграф "Обновить", который очищает экран и показывает параграф-сцену:

:: Обновить
<<clrscr>>
<<display $loc>>

Неактивен

   #213
13.05.2013 10:22

DoubleDragon
Модератор (+384, -29)
Откуда: Москва
Зарегистрирован: 07.04.2012
Сообщений: 1749
Вебсайт

Разработчик "AXMA Story Maker"

Re: Как сделать что-то или "я вот не понимаю"

Можно, кстати, использовать системную переменную $$title, которая содержит имя текущего параграфа:

Код:

:: Обновить
<<clrscr>>
<<display $$title>>

Неактивен

   #214
13.05.2013 10:29

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

DoubleDragon написал:

Можно, кстати, использовать системную переменную $$title, которая содержит имя текущего параграфа:

Код:

:: Обновить
<<clrscr>>
<<display $$title>>

Это так для обновления текущего параграфа. Но если Вета походит по вкладкам "Статус" и "Перемещения", а потом нажмёт "Главная":

===[[ГЛАВНАЯ|Обновить]] | [[СТАТУС|статус]] | [[ПЕРЕМЕЩЕНИЯ|перемещения]]===

то вновь окажется в обновлённом Статусе или Перемещениях. Поэтому нужно запоминать название параграфа-сцены, где описание.

Неактивен

   #215
13.05.2013 13:23

Вета
Участник (+249, -34)
Зарегистрирован: 05.08.2010
Сообщений: 369
Вебсайт

Мой блог: http://veta.ifiction.ru/

Re: Как сделать что-то или "я вот не понимаю"

Да, спасибо smile

Неактивен

   #216
27.05.2013 13:31

Korwin
Гоблин, зеленый от недосыпа (+160, -14)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 783
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Как сделать что-то или "я вот не понимаю"

Подскажите, как менять тему редактора?

Неактивен

   #217
27.05.2013 14:00

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

В редакторе есть кнопочка "Тёмная тема". Наде её нажать.

Неактивен

   #218
27.05.2013 14:54

Korwin
Гоблин, зеленый от недосыпа (+160, -14)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 783
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Как сделать что-то или "я вот не понимаю"

Morych написал:

В редакторе есть кнопочка "Тёмная тема". Наде её нажать.

Тьфу ты чёрт! Век живи - дураком помрешь! Попробовал темную тему - решил, что светлая нравится больше :-) Но всё равно спасибо большое!

Неактивен

   #219
04.06.2013 12:53

Korwin
Гоблин, зеленый от недосыпа (+160, -14)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 783
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Как сделать что-то или "я вот не понимаю"

В анонсе версии 2.0 прочел о возможности конвертации в ePub. Отсюда вопрос - какие требования к квесту предъявляются, чтобы его можно было конвертировать в данный формат? Только картинки и гиперссылки? Условия и объекты уже нельзя?

Неактивен

   #220
04.06.2013 13:13

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

Korwin написал:

В анонсе версии 2.0 прочел о возможности конвертации в ePub. Отсюда вопрос - какие требования к квесту предъявляются, чтобы его можно было конвертировать в данный формат? Только картинки и гиперссылки? Условия и объекты уже нельзя?

Насколько я знаю, будут разрешены макросы «display» и «br». Больше ничего нельзя, только текст, картинки и ссылки.

Неактивен

   #221
17.06.2013 21:00

NekronMono
Участник
Зарегистрирован: 17.06.2013
Сообщений: 3

Re: Как сделать что-то или "я вот не понимаю"

Здравствуйте. Хотел поинтересоваться макросом random. Цель-добиться свободного перемещения по квартире, но при первом посещении комнат, обстановка в них должна забиваться рандомно, и вроде бы одного макроса random хватает, но проблема вот в чем. При возвращении на предыдущий экран, и очередном входе в уже зарандомированную комнату, обстановка вновь рандомится. Можно ли было сделать так, чтобы обстановка рандомировалась единожды и сохраняла своё положение без лишней сети сцен?

Неактивен

   #222
17.06.2013 23:42

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Как сделать что-то или "я вот не понимаю"

NekronMono

Вариант А.
Сделать генерацию новой комнаты раньше, чем в неё вошёл. Например в стартовом параграфе.

Вариант Б.
Сделать по условию, при первом посещении.

: Старт
<<set $посещение = 0>>

: Комната
<<if $посещение eq 0>>
<<random $Генерация = 9>>
<<set $посещение = 1>>
#Задаём стартовую обстановку
<<endif>>

#Текст параграфа

Неактивен

   #223
18.06.2013 03:42

Morych
Модератор (+52, -6)
Откуда: Гродно
Зарегистрирован: 05.07.2012
Сообщений: 517
Вебсайт

Re: Как сделать что-то или "я вот не понимаю"

NekronMono написал:

При возвращении на предыдущий экран... обстановка вновь рандомится.

Если речь идёт о кнопке "Отменить" в левом верхнем углу экрана (и макросе «back»), то избежать перегенерации комнаты можно, только воспользовавшись вариантом А от Ergistal-а. Вариант Б поможет при обычном повторном переходе в комнату, но от кнопки "Отменить" не спасёт.

Неактивен

   #224
19.06.2013 17:36

NekronMono
Участник
Зарегистрирован: 17.06.2013
Сообщений: 3

Re: Как сделать что-то или "я вот не понимаю"

Спасибо большое.
Есть еще такой вопрос.
У нас есть деревня разбитая на координаты. Количество домов  в каждой клеточке рандомируются во время старта вместе с генерированием вариантов домов (то есть у меня написано 10 вариантов обустройства дома, персонажи и события в нем, программа рандомно выбирает какой из вариантов выбрать). Но нужно добиться такого результата, чтобы при повторении варианта, переменные не смешивались и не сбивались, то есть если я разбил окно в доме номер 1, то в доме номер 8 (где у меня попался такой же вариант развития событий) окно стояла на месте, но у первого окно оставалось разбитым. Неужели придётся каждой координате, дому и варианту писать одинаковые скрипты, только с разными переменными?

Неактивен

   #225
19.06.2013 17:54

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Как сделать что-то или "я вот не понимаю"

http://sm.axmasoft.com/ru/help.html

В руководстве пользователя Вам помогут в подразделе "Для опытных авторов"
* Циклы (многократное исполнение набора команд)
* Списки (одномерные массивы)

Вам придётся параметры с помощью цикла загонять в список, потом извлекать оттуда с помощью цикла.

А обработку команд (создание случайного расположения, отображение комнаты и.т.д) достаточно написать один раз, и вызывать её командой "display".

Пример не напишу, он довольно громоздкий получится, а времени сейчас нет.

Неактивен

Powered by PunBB
© copyright 2001–2018 iFiction.Ru