Forum.iFiction.Ru

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

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

Вы не зашли.

   #1
29.10.2013 12:01

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Такой вопрос. Вставляю вот этот код диалога (приведен в обучении):

Параграф-диалог

<<display 'Параграф-диалог'>>

<<if $диалог_персонаж eq 1>>
    Реплика главного героя.
    Реплика второстепенного персонажа.
    [[Реплика героя, вариант 1|Параграф-диалог {$диалог_персонаж = 2}]]
    [[Реплика героя, вариант 2|Параграф-диалог {$диалог_персонаж = 3}]]

<<elseif $диалог_персонаж eq 2>>
    Реплика героя, вариант 1.
    Реакция второстепенного персонажа.
    [[Закончить разговор|Параграф-сцена {$диалог_персонаж = 4}]]

<<elseif $диалог_персонаж eq 3>>
    Реплика героя, вариант 2.
    Реакция второстепенного персонажа.
    [[Закончить разговор|Параграф-сцена {$диалог_персонаж = 4}]]

<<elseif $диалог_персонаж eq 4>>
    Реплика героя.
    Второстепенный персонаж напоминает, что уже разговаривали.
    [[Закончить разговор|Параграф-сцена]]

<<endif>>

У меня отображается только название диалога - Параграф-диалог и все. Что не правильно делаю?

Неактивен

   #2
29.10.2013 12:24

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Morych написал:

alfa10 написал:

У меня отображается только название диалога - Параграф-диалог и все. Что не правильно делаю?

Думаю, что не определена переменная $диалог_персонаж. Перед тем как вызывать параграф-диалог нужно задать начальное значение переменной:
<<set $диалог_персонаж = 1>>

А зачем параграф вызывается сам из себя (<<display 'Параграф-диалог'>>)?

Дык вот это именно пример из обучения. Если присваивать переменную <<set $диалог_персонаж = 1>>, то:

[[Реплика героя, вариант 1|Параграф-диалог {$диалог_персонаж = 2}]]
[[Реплика героя, вариант 2|Параграф-диалог {$диалог_персонаж = 3}]]

уже не срабатывают

Неактивен

   #3
29.10.2013 12:30

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Morych написал:

<<set $диалог_персонаж = 1>> нужно написать не в параграфе-диалоге, а в самом начале истории, в параграфе "Start".

Точняк! Все заработало! Спасибо тебе, дружище!

Неактивен

   #4
29.10.2013 21:23

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Ребят, такой вопрос: создаю книгу, вставляю в нею фотки. Потом сохраняю книгу в файл HTML. На другом компьютере запускаю этот сохраненный файл - а фоток нет. Как делать так, чтобы фотографии были в книге, даже если я смотрю файл на другом компьютере? Например, вот напишу я книгу, захочу ее сохранить в файл и отослать друзьям - а фотки получается, пропадут?

Неактивен

   #5
30.10.2013 00:00

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Morych написал:

alfa10 написал:

Ребят, такой вопрос: создаю книгу, вставляю в нею фотки. Потом сохраняю книгу в файл HTML. На другом компьютере запускаю этот сохраненный файл - а фоток нет. Как делать так, чтобы фотографии были в книге, даже если я смотрю файл на другом компьютере? Например, вот напишу я книгу, захочу ее сохранить в файл и отослать друзьям - а фотки получается, пропадут?

Картинки не встраиваются в html-файл, там только изображения кнопок. Если ты добавляешь картинки пунктом меню "Выбрать локальный файл", они копируются в папку files рядом с sm-файлом. Соответственно отсылай друзьям ещё и папку files вместе с html-файлом. Для пересылки по почте можно всё предварительно упаковать в архив.

Получается только так? А если публиковать книгу из программы в библиотеку - тогда все нормально пропишется и фотографии останутся?

И еще вопрос - почему то вставляю музыку, а она не играется на странице, хотя значок динамика отображается на странице. Код такого вида вставляю:

Код:

[[File: files/Scooter - Fire.mp3]]

Неактивен

   #6
30.10.2013 10:12

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Morych написал:

А какой браузер ты используешь, случайно не Оперу? Для неё нужен звуковой файл с таким же именем, но в формате ogg. Если вставляешь музыку в игру, придётся каждый звуковой файл в двух форматах рядышком класть mp3 и ogg, чтобы у всех проигрывалась музыка независимо от браузера.

Firefox.
А музыка будет играть только на одной странице, или пока не закрою в параграфе тег <<noaudio>>?

Неактивен

   #7
30.10.2013 14:36

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Код:

<<if $диалог eq 1>>
<<clrscr>>
<<random $rnd = 8>>
<<set $маги = 5>>
<<set $удача = $удача>>
===Ваш рейтинг удачи равен ''<<print $удача>>''===

Интересует вот эта строка из кода:

Код:

<<set $удача = $удача>>

Правильно ли я понимаю, что в  этом параграфе текущий параметр удачи берется от предыдущего параметра удачи?

Неактивен

   #8
30.10.2013 15:41

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Flash написал:

alfa10,  эта строчка ничего не делает. Переменная приравнивпется сама себе.

а как тогда сделать, чтобы в текущем параграфе переменная брала то значение, которое она имела до этого параграфа? Может так тогда?

Код:

<<set $удача1 = $удача>>

Неактивен

   #9
30.10.2013 20:45

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Вопросов у меня много, так что сорри. Я начинающий интерактивовод smile
Музыка работает если файл OGG. Разобрался. Спасибо за помощь. Теперь вопрос - а как сделать так, чтобы мелодии игрались по-очереди по ходу книги?

Еще вопрос. Вот фрагмент кода:

Код:

<<set $ясила = 3>>
<<set $врагсила = 6>>
<<set $жизнь = 10>>
<<set $жизнь1 = 5>>
<<random $кубик = 10>>
<<if $кубик > ($врагсила-$ясила)>>
<<print $я>> - <<print $жизнь>>
<<print $враг>> - <<print $жизнь1-1>>    
<<else>>
<<print $я>> - <<print $жизнь-1>>
<<print $враг>> -<<print $жизнь1>>    
<<endif>>

Как я его вижу:
даю значение силы мне - 3
даю значение силы врагу - 6
даю значение жизни себе - 10
даю значение жизни врагу - 5
даю рендомное значение кубику от 0 (или все-таки 1) до 5
если значение кубика больше значения (сила врага - моя сила) то
выводится имя переменной $я (вводил в прошлом параграфе) - выводится значение (моя жизнь) // например, Сергей - 10
выводится имя переменной $враг (вводил в прошлом параграфе) - выводится значение (жизнь врага минус 1)// например, Сергей - 4
иначе
выводится имя переменной $я (вводил в прошлом параграфе) - выводится значение (моя жизнь минус 1)
выводится имя переменной $враг (вводил в прошлом параграфе) - выводится значение (жизнь врага)
закрытие кода

Но, почему то, у меня ничего не выводится. Пишется NaN. Где моя ошибка?

Отредактировано alfa10 (30.10.2013 22:56)

Неактивен

   #10
31.10.2013 10:52

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Отлично! Все работает! Спасибо!
А что означает gte ? Значение "больше"?

Как можно сделать так, чтобы при значении параметра $жизнь - 0 бой заканчивался?

Неактивен

   #11
31.10.2013 11:17

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Ну, вот, получается видимо так:

Код:

<<set $жизнь = 1>>
<<set $жизнь1 = 1>>
<<random $кубик = 10>>
<<if $кубик gte 3>>
<<set $жизнь1 = $жизнь1 - 1>>
<<if $жизнь1 lte 0>>
<<goto 'GameOver1'>>
<<else>>
<<print $я>> - <<print $жизнь>>
<<print $враг>> - <<print $жизнь1>>   
<<endif>>
<<else>>
<<set $жизнь = $жизнь - 1>>
<<if $жизнь lte 0>>
<<goto 'GameOver'>>
<<else>>
<<print $я>> - <<print $жизнь>>
<<print $враг>> - <<print $жизнь1>> 
<<endif>>
<<endif>>

А как зациклить код? Чтобы значения уменьшались до того момента, пока переменная жизнь не примет нулевое значение?

Отредактировано alfa10 (31.10.2013 11:28)

Неактивен

   #12
31.10.2013 12:18

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Спасибо тебе большое! очень сильно помогаешь мне smile И всем вам ребята - большое спасибо

А есть ли при создании книги ограничение в количестве параграфов? А то, у меня тут глобальная книга намечается smile

Еще вопрос - можно ли сделать, чтобы во время боя страница автоматически обновлялась, а не клацать каждый раз на продолжить?

Отредактировано alfa10 (31.10.2013 13:23)

Неактивен

   #13
02.11.2013 16:29

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

В параграфе StoryAuthor вставка картинок запрещена чтоли? Хотел вставить туда текст красивого шрифта, а нифига...

Неактивен

   #14
03.11.2013 19:17

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Фух, загрузил свою первую интерактивную книгу в библиотеку. Правда, почему-то, при загрузке ругалось на музыкальный файл формата OGG. Пришлось музыку исключить из книги sad

Неактивен

   #15
03.11.2013 22:04

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

DoubleDragon написал:

Надо было и ogg и mp3 - оба файла сделать.
А так - поздравляю с успешным дебютом!

Спасибо! А насколько он успешный - покажет время и участие в конкурсе 31 wink

Неактивен

   #16
04.11.2013 13:19

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Просьба помочь разобраться в ошибке кода:

Код:

<<set $жизнь = $жизнь>>
<<set $жизнь1 = $жизнь1>>
Мое здоровье - ''<<print $жизнь>>''
Здоровье вора - ''<<print $жизнь1>>''

Вор поворачивается ко мне. Его лицо скрывает балахон.  Не говоря ни слова, гость направляется на меня...
<<if $успех eq 1>>  [b]----------------------------------------возврат сюда[/b]
[[Ударить в лицо|БойВорНеус {$успех = 2}]]
[[Ударить в живот|БойВорНеус {$успех = 3}]]
[[Кинуть в вора стул|БойВорНеус {$успех = 4}]]
<<endif>>
<<if $успех eq 2>>
<<clrscr>>
<<random $кубик = 6>>
<<if $кубик gte 5>>
Я ударяю вора в голову. Великолепный удар!
<<set $жизнь1 = $жизнь1 - 3>>
Мое здоровье - ''<<print $жизнь>>''
Здоровье вора - ''<<print $жизнь1>>''
<<else>>
Вор ставит блок и проводит ответный удар!
<<set $жизнь = $жизнь - 1>>
Мое здоровье - ''<<print $жизнь>>''
Здоровье вора - ''<<print $жизнь1>>''
<<endif>>
<<if $жизнь1 lte 0>>
<<goto 'ОсмотретьсяЖив'>>    
<<else>>
<<goto 'БойВорНеус' {$успех = 1}>>    
<<elseif $жизнь lte 0>>
<<goto 'Конец1'>>    
<<else>>
<<goto 'БойВорНеус' {$успех = 1}>>    
<<endif>>
<<endif>>

Почему-то у меня назад не возвращает. Как можно сделать так, чтобы если жизни остаются, параграф продолжался заново с начала?

Неактивен

   #17
07.11.2013 18:50

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Вот есть код:

Код:

:: Пещера
<<display 'Инвентарь0'>>
Здоровье охотника - <<print $жизнь1>>
Здоровье охотницы - <<print $жизнь2>>
# Начало цикла
<<if $жизнь lte 0>>
<<goto 'Конец'>>
<<elseif $жизнь1 lte 0>>
<<display 'Пещера'>>
<<elseif $жизнь2 lte 0>>
<<display 'Пещера'>>
<<elseif $жизнь1 + $жизнь2 lte 0>>
<<goto 'пещера2'>>
<<else>>
''Выберите действие против охотника:''
# Магия огня 
<<if $мана gte 3>>
[[Огонь I (шанс 50%, урон 20, мана - 3)|Пещера1 {$действие = 2}]]    
<<endif>>
# Магия огня
[[Бросить камень (шанс 20%, урон - 30)|Пещера1 {$действие = 3}]]
[[Ударить рукой (шанс 50%, урон - 10)|Пещера1 {$действие = 4}]]
[[Бросить ногой (шанс 50%, урон - 10)|Пещера1 {$действие = 5}]]    
<<endif>>
# Начало цикла

Получается так: мой герой бьется против двух врагов. Хочу, чтобы при гибели первого врага шло сражение с другим врагом. Но при гибели одного из врагов игра виснет. Полагаю, что из-за:

вот этой записи в коде

Код:

<<if $жизнь lte 0>>
<<goto 'Конец'>>
<<elseif $жизнь1 lte 0>>
<<display 'Пещера'>>
<<elseif $жизнь2 lte 0>>
<<display 'Пещера'>>
<<elseif $жизнь1 + $жизнь2 lte 0>>
<<goto 'пещера2'>>
<<else>>

Я вижу ее так: если моя жизнь меньше или равна 0, то идем в параграф "Конец". Если жизнь противника1 меньше или равна 0, то продолжаем бой. Если жизнь противника2  меньше или равно 0, то продолжаем бой. Если жизни соперников 1 и 2 вместе меньше или равны 0 (т.е. обо уничтожены), то переходим в параграф "Пещера 2"

Неактивен

   #18
08.11.2013 22:17

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Не, чет не то... если прописываю так:

Код:

<<if $жизнь lte 0>>
<<goto 'Конец'>>
<<elseif ($жизнь1 lte 0) and ($жизнь2 lte 0)>>
<<goto 'пещера2'>>
<<elseif $жизнь1 lte 0>>
<<display 'Пещера'>>
<<elseif $жизнь2 lte 0>>
<<display 'Пещера'>>
<<else>>

то игра виснет... Да и получается, если убивают врага (жизнь1, например), а второй жив, то получается первый опять ходит, даже если он мертв уже

P.S. Все, разобрался в коде... Пришлось упростить боевку (хотел, чтобы по очереди  атаковался сперва первый враг, затем второй). Сделал, что сам выбираю кого атаковать

Отредактировано alfa10 (08.11.2013 22:42)

Неактивен

   #19
13.11.2013 12:01

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Хочу сделать программу, где при вводе улицы и номера дома выдается наименование района. Получается, в одном параграфе нужно ввести нечто типа:

Код:

<<input '0' $адрес>>

В параграфе 0 нужно прописать некий код:

Код:

<<if $адрес eq '12марта130'>>
<<set $адрес = 1>>
<<elseif $адрес eq 'калинина215'>>
<<set $адрес = 2>>    
<<endif>>
<<goto '2'>>

где на выводе (параграф 2) уже есть код:

Код:

<<if $адрес eq 1>>
Черемушки    
<<elseif $адрес eq 2>>
Вокзал
<<else>>
Район не определен!    
<<endif>>

Так все работает! А как сделать, чтобы не прописывать каждый номер дома на улице, а сделать например, чтобы улица Калинина от 1 до 50 автоматически попадала под район Возкал?

Отредактировано alfa10 (13.11.2013 12:28)

Неактивен

   #20
14.11.2013 10:11

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Спасибо! Еще б расшифровал бы код - вообще круто было бы smile

Неактивен

   #21
30.12.2014 23:32

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Ребята, задумал сделать интерактивную игру про биатлон smile Пока не могу понять следующий момент как реализовать: спортсмены бегут спринт, у каждого свое время, финишируют, им присваивается их результат (время) - тут все понятно как делается, но... как сделать так, чтобы после финиша программа считала, у кого из спортсменов результат лучше, у кого хуже? Например, спортсмен А прошел трассу за 5 минут 10 секунд, спортсмен Б - за 5 минут 14 секунд, спортсмен В - за 4 минуты 59 секунд. Должно быть на финише так - первым будет В, вторым А, третьим - Б.  Как сделать, чтобы программа считала места по результатам?

Неактивен

   #22
31.12.2014 11:52

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Morych, а можно расшифровку? Результаты будут заноситься не рандомные. Одинаковых результатов не будет, так что все норм.

Не пойму, что означает в коде параметр "i" и "$place.push".

И вот эта часть кода не ясна мне:

<<loop $place.length>>

    <<set $position = $place[$i].split('|')>>

    <<print ($i + 1)>> - <<print $position[1]>> (<<print $position[0]>>)

    <<set $i++>>

<<endloop>>

Отредактировано alfa10 (31.12.2014 12:01)

Неактивен

   #23
31.12.2014 15:37

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Чуть-чуть въехал. А вот смотри, к примеру, имеем два спортсмена (вводим переменные $имя и $имя1). Один прошел трассу за 70 ходов, а второй за 64 хода.
<<set $имя = Вася>>
<<set $имя1 = Петя>>
<<set $счетчик_хода_имя = 0>> #персональный счетчик хода спортсмена Васи
<<set $счетчик_хода_имя1 = 0>> #персональный счетчик хода спортсмена Пети
...
:: В след. параграфе получаем финишные значения:

<<set $счетчик_хода_имя = 70>>
<<set $счетчик_хода_имя = 64>>
Теперь надо чтобы выдало результаты по местам: 1 место - получается занял второй спортсмен (Петя), 2 место - первый спортсмен (Вася).

Неактивен

   #24
31.12.2014 16:43

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Делаю так:

: Начало

<<set $имя = 'Вася'>>

<<set $имя1 = 'Петя'>>

<<set $счетчик_хода_имя = 0>>

<<set $счетчик_хода_имя1 = 0>>

[[Ход игрока|Просчет]]

: Просчет

<<random $кубик = 50>>

<<set $счетчик_хода_имя = $счетчик_хода_имя + $кубик>>

[[Ход соперника|Просчет соперника]]

: Просчет соперника

<<random $кубик = 50>>

<<set $счетчик_хода_имя1 = $счетчик_хода_имя1 + $кубик>>

[[Финиш|Финиш]]

: Финиш

А как тут код прописать? smile
И еще нужно, чтобы разница, полученная между числами плюсовалась в след. параграфе к значению $счетчик_хода_имя. Например, Петя прошел гонку за   64 хода, а Вася за 70. Разница между ними равна 6. Значит в след. параграфе у Пети будет к счетчику хода прибавлено значение 6, а у Васи это значение будет равно 0.

Неактивен

   #25
01.01.2015 14:44

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

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

Morych написал:

А соперников будет только двое?

нет, будет много, просто на примере двух хотелось понять код

Неактивен

Powered by PunBB
© copyright 2001–2018 iFiction.Ru