Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #551
12.01.2015 23:24

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

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

Да вроде с сортировкой разобрался. Зацените что имеем на выходе сейчас.

https://cloud.mail.ru/public/a6478949ef … %D1%80.rar

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

Неактивен

0    0    #552
14.01.2015 13:37

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

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

Вот такую ошибку постоянно выдает программа. Ошибка не только у меня, но и у друзей.


Прикрепленные файлы:
Screenshot_1.png, Размер: 339,514 байт, Скачано: 195

Неактивен

0    0    #553
14.01.2015 17:47

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

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

Парни, нужна помощь! Есть массив в начале игры:

Код:

<<set $очки = [0, 0, 0, 0, 0, 0, 0, 0]>>

Теперь значит есть такой кусок кода:

Код:

<<set $i = 0>>

<<loop $имя.length>>

    <<set $индекс = $place[$i].split('|')[1]>>

    <<print ($i + 1)>> место: <<print $имя[$индекс]>> (<<print $промахов0_лежа1[$индекс]>>, <<print $промахов0_лежа2[$индекс]>>, <<print $промахов0_стоя1[$индекс]>>, <<print $промахов0_стоя2[$индекс]>>) - <<print $счетчик_хода0[$индекс]>> метров до финиша.

    <<set $i++>>

<<endloop>>

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

Код:

$счетчик_хода0[$индекс]

становится равно 0 или меньше, присуждается 60 очков, следующему - 54 и так далее. При этом, если игрок финишировал, то он уже не должен отображаться в следующем ходе.

Неактивен

0    0    #554
14.01.2015 17:47

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

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

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

alfa10 написал:

Вот такую ошибку постоянно выдает программа. Ошибка не только у меня, но и у друзей.

Надо понять, при каких условиях она возникает.

Неактивен

0    0    #555
15.01.2015 13:44

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

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

Еще вопрос:
Вот кусок кода:

Код:

<<row 'Промежуточная отметка'>>

<<set $place = []>>

<<set $i = 0>>



<<loop $имя.length>>
<<if $счетчик_хода0[$i] lt 0>>
<<goto 'Результаты Гонки-1'>>
<<endif>>

    <<if $счетчик_хода0[$i] lt 10>>

        <<set $place.push("0000" + $счетчик_хода0[$i] + "|" + $i)>>

    <<elseif $счетчик_хода0[$i] lt 100>>

        <<set $place.push("000" + $счетчик_хода0[$i] + "|" + $i)>>

<<elseif $счетчик_хода0[$i] lt 1000>>

        <<set $place.push("00" + $счетчик_хода0[$i] + "|" + $i)>>

<<elseif $счетчик_хода0[$i] lt 10000>>

        <<set $place.push("0" + $счетчик_хода0[$i] + "|" + $i)>>

    <<else>>

        <<set $place.push($счетчик_хода0[$i] + "|" + $i)>>

    <<endif>>

    <<set $i++>>

<<endloop>>

По идее, эта часть кода

Код:

<<if $счетчик_хода0[$i] lt 0>>
<<goto 'Результаты Гонки-1'>>
<<endif>>

говорит нам о том, что если значение меньше нуля, то переходим к другому параграфу, но почему то работает это вот так (указано на скриншоте). Почему появляется кнопка "далее", которой нет в параграфе "Результаты Гонки-1", но есть в параграфе с тем куском кода. И при нажатии на эту кнопку продолжается тот параграф?!


Прикрепленные файлы:
Screenshot_1.png, Размер: 23,232 байт, Скачано: 194

Неактивен

0    0    #556
15.01.2015 16:54

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

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

Есть такой массив в начале игры: <<set $очки = [0, 0, 0, 0]>>
И есть такой: <<set $имя = [Вася, Петя, Игорь, Илья]>>
Нужно, чтобы после финиша гонки спортсмены записали на свой счет очки. За первое место 60, за второе 55, за третье 50 и за четвертое - 45.

Есть код:

Код:

<<set $i = 0>>

<<set $финишировал = 65>>

<<loop $имя.length>>

<<set $финишировал = $финишировал - 5>>

<<set $очки[$индекс] = $очки[$индекс] + $финишировал>>

    <<set $индекс = $place[$i].split('|')[1]>>

    <<print ($i + 1)>> место: <<print $имя[$индекс]>> (<<print $промахов0_лежа1[$индекс]>>, <<print $промахов0_лежа2[$индекс]>>, <<print $промахов0_стоя1[$индекс]>>, <<print $промахов0_стоя2[$индекс]>>) - <<print $финишировал>> очков за гонку.

    <<set $i++>>

<<endloop>>

На экране выводятся результаты, типа:

Игорь - 60 очков за гонку
Вася - 55 очков за гонку
Илья - 50 очков за гонку
Петя - 45 очков за гонку

После этого захожу в параграф статистики. Вот его код:

Код:

<<set $place = []>>

<<set $i = 0>>

<<loop $имя.length>>

    <<if $очки[$i] lt 10>>

        <<set $place.push("00" + $очки[$i] + "|" + $i)>>

    <<elseif $очки[$i] lt 100>>

        <<set $place.push("0" + $очки[$i] + "|" + $i)>>

    <<else>>

        <<set $place.push($очки[$i] + "|" + $i)>>

    <<endif>>

    <<set $i++>>

<<endloop>>

<<set $place = $place.sort().reverse()>>

<<row 'Общий зачет Кубка мира'>>

<<set $i = 0>>

<<loop $имя.length>>

    <<set $индекс = $place[$i].split('|')[1]>>

    <<print ($i + 1)>> место: <<print $имя[$индекс]>> (<<print $очки[$индекс]>>)

    <<set $i++>>

<<endloop>>

Все бы хорошо, но, почему то, спортсмен, занявший в гонке последнее место, в статистике получает 60 очков (т.е., за первое место в гонке).

Петя - 60 очков за гонку
Игорь - 55 очков за гонку
Вася - 50 очков за гонку
Илья - 45 очков за гонку

В чем ошибка?

Отредактировано alfa10 (15.01.2015 18:27)

Неактивен

0    0    #557
15.01.2015 19:01

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

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

Пост 556 - проблема решена

Неактивен

0    0    #558
17.01.2015 11:22

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

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

alfa10 написал:

По идее, эта часть кода

Код:

<<if $счетчик_хода0[$i] lt 0>>
<<goto 'Результаты Гонки-1'>>
<<endif>>

говорит нам о том, что если значение меньше нуля, то переходим к другому параграфу, но почему то работает это вот так (указано на скриншоте). Почему появляется кнопка "далее", которой нет в параграфе "Результаты Гонки-1", но есть в параграфе с тем куском кода. И при нажатии на эту кнопку продолжается тот параграф?!

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

В нашем случае по идее нужно сделать так:

Код:

<<set $нужен_переход = false>>

<<loop ...>>
   <<if $счетчик_хода0[$i] lt 0>>
      <<set $нужен_переход = true>>
      <<break>>  --- выходим из цикла!
   <<endif>>
   ...
<<endloop>>

<<if $нужен_переход>>
   <<goto 'Результаты Гонки-1'>>
<<else>>
   ...
   А здесь выполняется оставшаяся часть текущего параграфа!
   ...
<<endif>> --- после этой строки больше ничего не должно быть!

Неактивен

0    0    #559
18.01.2015 18:00

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

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

Спасибо, дружище!
Вопрос! Есть код:

Код:

<<set $i = 0>>

<<set $финишировал = 65>>

<<loop $имя.length>>

<<set $финишировал = $финишировал - 5>>

<<if $финишировал lt 0>>

<<set $финишировал = 0>>

<<endif>>

    <<set $индекс = $place[$i].split('|')[1]>>

<<set $очки[$индекс] = $очки[$индекс] + $финишировал>>

<<set $очки_индивидуалка[$индекс] = $очки_индивидуалка[$индекс] + $финишировал>>

    <<print ($i + 1)>> место: <<print $имя[$индекс]>> - <<print $финишировал>> очков (Общий зачет - <<print $очки[$индекс]>>; Индивидуальная гонка <<print $очки_индивидуалка[$индекс]>>)

    <<set $i++>>

<<endloop>>

Он начисляет очки так: 1 место - 60, второе - 55, третье - 50 ... и так до нуля. Как можно сделать, чтобы очки начислялись так: 1 место - 60, второе - 54, третье - 50, четвертое - 48, пятое - 46... (вообщем начисление без логики какой-то, просто реальное начисление согласно биатлонному правилу)???

Неактивен

0    0    #560
10.04.2015 11:24

Сергей Соловьев
Участник
Зарегистрирован: 10.04.2015
Сообщений: 2

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

Здравствуйте DoubleDragon.

Прохожу Ваш мануал на сайте. Решил написать свой модуль - календарь. Столкнулся с проблемой "белый экран", при этом редактор не показывает ошибок.

параграф - Создание объектов

<<set $year = 2015>>
<<set $month = 10>>
<<set $day = 1>>
<<set $week = 4>>
<<set $hour = 7>>
<<set $min = 0>>

параграф - календарь

<<if ($month eq 1) or ($month eq 3) or ($month eq 5) or ($month eq 7) or ($month eq 8) or ($month eq 10) or ($month eq 12)>>
    #31
     <<if $day gt 31>>
        <<set $day = 1>>
        <<set $month = $month + 1>>
    <<endif>>
<<endif>>
############
<<if ($month eq 2) or ($month eq 4) or ($month eq 6) or ($month eq 9) or ($month eq 11)>>
    #30
     <<if $day gt 30>>
        <<set $day = 1>>
        <<set $month = $month + 1>>
    <<endif>>
<<endif>>
############
<<if $month eq 2>>
    #28
     <<if $day gt 28>>
        <<set $day = 1>>
        <<set $month = $month + 1>>
    <<endif>>
<<endif>>
#########
<<if $month eq 0>>
    <<set $month = 1>>
<<endif>>
#########
<<if $month eq 13>>
    <<set $month = 1>>
    <<set $year = $year + >>
<<endif>>

<<if $week gt 7>>
    <<set $week = 1>>
<<endif>>

параграф - заголовок

<<display 'календарь'>>
Сейчас <<if $min gt 9>><<print $hour>>:<<print $min>> часов <<print $week>> <<print $day>> <<print $mounth>> <<print $year>> года<<endif>><<if $min lt 10>><<print $hour>>:0<<print $min>> часов <<print $week>> <<print $day>> <<print $month>> <<print $year>> года <<endif>>
@@@''~~[[+инвентарь]]~~''@@@
----
===''<<print $сцена>>''===
----

ну и первый же параграф-локация - квартира

<<set $сцена = 'Квартира'>>
<<display 'Заголовок'>>

Квартира без излишеств, то что надо студенту. 2 комнаты, кухня, совместный санузел, зал и спальня.
....
....

Это первый параграф в котором подключается заголовок, и в нем пустая страница

Отредактировано Сергей Соловьев (10.04.2015 11:49)

Неактивен

0    0    #561
10.04.2015 13:47

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

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

Здравствуйте! Я хоть и не DoubleDragon, но вижу, что здесь чего-то не хватает:

<<if $month eq 13>>
    <<set $month = 1>>
    <<set $year = $year + >>
<<endif>>

Неактивен

0    0    #562
10.04.2015 14:08

Сергей Соловьев
Участник
Зарегистрирован: 10.04.2015
Сообщений: 2

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

Спасибо огромное! Модуль заработал.
И сразу появился еще один вопрос..
Прописал 2 тестовые ссылки в заголовок
[[*Подождать 15 минут| календарь {$мин = $мин + 15}]] | [[*Подождать 1 час| календарь {$мин = $мин + 60}]]
Календарь работает, но данные в текущем времени обновляются только при переходе в другой параграф. Есть ли возможность обновлять данные без перехода между параграфами?

Отредактировано Сергей Соловьев (10.04.2015 15:22)

Неактивен

0    0    #563
10.04.2015 17:54

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

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

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

Сергей Соловьев написал:

Спасибо огромное! Модуль заработал.
И сразу появился еще один вопрос..
Прописал 2 тестовые ссылки в заголовок
[[*Подождать 15 минут| календарь {$мин = $мин + 15}]] | [[*Подождать 1 час| календарь {$мин = $мин + 60}]]
Календарь работает, но данные в текущем времени обновляются только при переходе в другой параграф. Есть ли возможность обновлять данные без перехода между параграфами?

Это непросто и повлечёт за собой сильное усложнение кода. Если очень хочется, копайте в сторону макроса <<repeat>>. Но текстовые игры не подразумевают обновление экрана без участия игрока.

Неактивен

0    0    #564
10.04.2015 22:41

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

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

Сергей Соловьев написал:

Спасибо огромное! Модуль заработал.
И сразу появился еще один вопрос..
Прописал 2 тестовые ссылки в заголовок
[[*Подождать 15 минут| календарь {$мин = $мин + 15}]] | [[*Подождать 1 час| календарь {$мин = $мин + 60}]]
Календарь работает, но данные в текущем времени обновляются только при переходе в другой параграф. Есть ли возможность обновлять данные без перехода между параграфами?

Я думаю, тут речь идет не об обновлении в реальном времени. Если так, то макрос <<repeat>> не нужен.
Просто поменяйте в ссылке целевой параграф на параграф с текущей локацией:

[[Подождать 15 минут| квартира {$мин = $мин + 15}]] (и ссылка нужна обычная, а не многоразовая)

Параграф "календарь" судя по коду и так вызовется в заголовке.

Неактивен

0    0    #565
18.04.2015 21:48

Андрей Васенев
Участник
Зарегистрирован: 18.04.2015
Сообщений: 2

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

В версии  AXMA Story Maker 2.6 когда делаю ссылку при нажатии на изображение, параграф выделяется красным цветом. Это мешает, если таких параграфов много. как можно решить проблему? Заранее спасибо!

Отредактировано Андрей Васенев (18.04.2015 21:49)

Неактивен

0    0    #566
19.04.2015 07:47

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

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

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

Андрей Васенев написал:

В версии  AXMA Story Maker 2.6 когда делаю ссылку при нажатии на изображение, параграф выделяется красным цветом. Это мешает, если таких параграфов много. как можно решить проблему? Заранее спасибо!

Это ошибка, которая уже исправлена. Её не будет в следующей версии, которая ожидается скоро.
Не заметил, что речь о версии 2.6. К сожалению, эта версия больше не будет обновляться, поэтому ничего не поделаешь...

Неактивен

0    0    #567
19.04.2015 10:20

Андрей Васенев
Участник
Зарегистрирован: 18.04.2015
Сообщений: 2

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

Жаль. Спасибо за ответ!

Неактивен

0    0    #568
25.04.2015 23:55

Михаил Кочетов
Участник
Зарегистрирован: 25.04.2015
Сообщений: 3

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

Добрый день.

Пытаюсь создать время суток, но руки кривые, как видно.
Задача сделать часы в меню заголовок, и привязать к определенным действиям времязатрату. Необходимы всего 3 переменные "час", "минута" и "день".

Пытался сделать по аналогии Календаря Сергея Соловьева, но не вышло.

Прошу помочь составить код или поделиться уже готовым и комментариями по встраиванию данного кода в повествование.

Спасибо большое.

Неактивен

0    0    #569
26.04.2015 00:22

Alex842
Участник (+2)
Откуда: Москва
Зарегистрирован: 24.04.2014
Сообщений: 61

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

Когда-то пытался сам сделать такое. Вот мои наработки (см. вложение). Реализованы минуты, часы, дни, дни недели, месяцы, года со следующими оговорками: во всех месяцах равное количество дней, високосные года и прочие мелочи не учитываются. smile
Поскольку игру забросил, то код до конца не проверен, поэтому возможны глюки.

Применение:
Начальные значения указываются в параграфе "!Start_Characteristics". Его нужно обязательно вызвать в самом начале истории. Параграф "!Time" отвечает за обработку значений. Параграф "!Time_Show" отвечает за отображение. Именно в нём можете менять оформление. Вот эта конструкция нужна для правильного отображения часов. Т.е. чтобы вместо "2:10" отображалось "02:10".

Код:

<<print $hour>>:<<If $minut <=9>>0<<print $minut>><<else>><<print $minut>><<endif>>

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

Код:

<<display '!time'>>
<<display '!time_show'>>

Первая строка служит для обновления значений, а вторая для отображения.

Для внедрения в свою историю можете либо создать параграфы в программе и скопировать соответствующее содержимое, либо открыть Ваш файл .sm и мой файл в текстовом редакторе и скопировать содержимое моего файла в начало или в конец своего файла.

P.S. Сейчас погонял немного свой код и заметил такой глюк: не стоит за один раз к значению минуты прибавлять более 120 минут. Иначе возникают проблемы с отображением.
Т.е. в данной конструкции

Код:

[[Прибавить 1 час 20 минут|Test {$minut=$minut+80}]]

не стоит использовать значение более 120. В чем ошибка пока разбираться в лом.

P.P.S. Можно использовать альтернативную конструкцию:

Код:

[[Прибавить 3 часа 20 минут|Test {$hour=$hour+3, $minut=$minut+20}]]

В этом случае, вроде бы, все работает как надо.

Отредактировано Alex842 (26.04.2015 00:34)


Прикрепленные файлы:
Время_дни недели_месяцы.sm, Размер: 3,129 байт, Скачано: 503

Неактивен

0    0    #570
26.04.2015 00:42

Михаил Кочетов
Участник
Зарегистрирован: 25.04.2015
Сообщений: 3

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

Спасибо, Alex842!!!
Не ждал что так скоро будет ответ.
Поковыряюсь с кодом по мере сил и возможностей.

Неактивен

0    0    #571
27.04.2015 12:55

Михаил Кочетов
Участник
Зарегистрирован: 25.04.2015
Сообщений: 3

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

Подскажите, а как добавить иллюстрацию в окно указанное на скриншоте?

Буду весьма благодарен.

[img][/img]


Прикрепленные файлы:
Скриншот.jpg, Размер: 113,080 байт, Скачано: 210

Неактивен

0    0    #572
27.04.2015 13:28

Alex842
Участник (+2)
Откуда: Москва
Зарегистрирован: 24.04.2014
Сообщений: 61

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

Михаил Кочетов написал:

Подскажите, а как добавить иллюстрацию в окно указанное на скриншоте?

Буду весьма благодарен.

Используйте макрос <<picture '[[File: ]]'>>.
И потратьте немного времени на изучение руководства. Там все это описано. smile

Отредактировано Alex842 (27.04.2015 13:28)

Неактивен

0    0    #573
22.06.2015 07:11

Алексей Пичугин
Участник
Зарегистрирован: 11.11.2014
Сообщений: 1

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

Здравствуйте, мучаюсь вашей программой. Такая проблема - не пойму что не так. Первая if срабатывает герой попадает куда надо, а дальше ссылки не работают, хотя $разговор_таверня меняет значение. Первое условие не пропадает.
________________________

@@@[[*Заметки|Заметки]]&nbsp&nbsp&nbsp[[*Инвентарь|Инвентарь]]@@@


<<if $разговор_таверня eq 1 and $иниго_таварня eq 2||$иниго_таварня eq 1 and $гг eq "Иниго">>
-- Молодой человек, что вам нужно? Я не подаю бродягам. -- Колумб, повернул к вам голову. -- Вам должно быть стыдно. Нашли бы себе работу.
-- Я как раз хочу попросить Вас взять меня к себе на корабль в экспедицию.
-- Вы не похожи на моряка, да и слишком молоды, для такого опасного мероприятия. -- Колумб повернулся, давая показать, что разговор окончен.
<<print $разговор_таверня>>
[[уйти из таверни|разговор в таверне{$разговор_таверня = 2}]] или [[присесть за свободный столик|разговор в таверне{$разговор_таверня = 3}]]
<<elseif $разговор_таверня eq 2>>   
Вы вышли на улицу и остановились у таверни подумать, что делать дальше?
<<elseif $разговор_таверня eq 3>>
    Вы сели за дальний столик
<<endif>>
***
ЗЫ
Все проблема решена, используя метод танцев с шаманским бубном, было выяснено, что слишком много лишних условий в <<if $разговор_таверня eq 1 and $иниго_таварня eq 2||$иниго_таварня eq 1 and $гг eq "Иниго">>
мое сообщение можно удалить, я не соображу как это сделать.

Отредактировано Алексей Пичугин (22.06.2015 07:37)

Неактивен

0    0    #574
22.06.2015 12:54

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

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

Ну зачем же сразу удалять. Может, у кого похожий вопрос возникнет.

Неактивен

0    0    #575
23.06.2015 14:45

pronin
Участник
Зарегистрирован: 23.06.2015
Сообщений: 2

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

Люди подскажите пожалуйста,чтобы сохранять в HTML надо купить проффесиональный  аккаунт ? он 900 рублей стоит ? спасибо.
а сохранив в  библиотеку,захожу в свой профиль вижу  свою книгу выбираю ,но она грузится,но не запускается,белый экран короче. помогите пожалуйста,только в редакторе могу запускать. (((

Отредактировано pronin (23.06.2015 14:59)

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru