Да вроде с сортировкой разобрался. Зацените что имеем на выходе сейчас.
https://cloud.mail.ru/public/a6478949ef … %D1%80.rar
Просьба подсказать, как сделать так, чтобы спортсмены, у которых счетчик хода достигнет нуля, получали статус финишировавших, и получали места и очки, в порядке финиша.
Неактивен
Вот такую ошибку постоянно выдает программа. Ошибка не только у меня, но и у друзей.
Неактивен
Парни, нужна помощь! Есть массив в начале игры:
<<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 и так далее. При этом, если игрок финишировал, то он уже не должен отображаться в следующем ходе.
Неактивен
alfa10 написал:
Вот такую ошибку постоянно выдает программа. Ошибка не только у меня, но и у друзей.
Надо понять, при каких условиях она возникает.
Неактивен
Еще вопрос:
Вот кусок кода:
<<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", но есть в параграфе с тем куском кода. И при нажатии на эту кнопку продолжается тот параграф?!
Неактивен
Есть такой массив в начале игры: <<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)
Неактивен
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>> --- после этой строки больше ничего не должно быть!
Неактивен
Спасибо, дружище!
Вопрос! Есть код:
<<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... (вообщем начисление без логики какой-то, просто реальное начисление согласно биатлонному правилу)???
Неактивен
Здравствуйте 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)
Неактивен
Здравствуйте! Я хоть и не DoubleDragon, но вижу, что здесь чего-то не хватает:
<<if $month eq 13>>
<<set $month = 1>>
<<set $year = $year + >>
<<endif>>
Неактивен
Спасибо огромное! Модуль заработал.
И сразу появился еще один вопрос..
Прописал 2 тестовые ссылки в заголовок
[[*Подождать 15 минут| календарь {$мин = $мин + 15}]] | [[*Подождать 1 час| календарь {$мин = $мин + 60}]]
Календарь работает, но данные в текущем времени обновляются только при переходе в другой параграф. Есть ли возможность обновлять данные без перехода между параграфами?
Отредактировано Сергей Соловьев (10.04.2015 15:22)
Неактивен
Сергей Соловьев написал:
Спасибо огромное! Модуль заработал.
И сразу появился еще один вопрос..
Прописал 2 тестовые ссылки в заголовок
[[*Подождать 15 минут| календарь {$мин = $мин + 15}]] | [[*Подождать 1 час| календарь {$мин = $мин + 60}]]
Календарь работает, но данные в текущем времени обновляются только при переходе в другой параграф. Есть ли возможность обновлять данные без перехода между параграфами?
Это непросто и повлечёт за собой сильное усложнение кода. Если очень хочется, копайте в сторону макроса <<repeat>>. Но текстовые игры не подразумевают обновление экрана без участия игрока.
Неактивен
Сергей Соловьев написал:
Спасибо огромное! Модуль заработал.
И сразу появился еще один вопрос..
Прописал 2 тестовые ссылки в заголовок
[[*Подождать 15 минут| календарь {$мин = $мин + 15}]] | [[*Подождать 1 час| календарь {$мин = $мин + 60}]]
Календарь работает, но данные в текущем времени обновляются только при переходе в другой параграф. Есть ли возможность обновлять данные без перехода между параграфами?
Я думаю, тут речь идет не об обновлении в реальном времени. Если так, то макрос <<repeat>> не нужен.
Просто поменяйте в ссылке целевой параграф на параграф с текущей локацией:
[[Подождать 15 минут| квартира {$мин = $мин + 15}]] (и ссылка нужна обычная, а не многоразовая)
Параграф "календарь" судя по коду и так вызовется в заголовке.
Неактивен
В версии AXMA Story Maker 2.6 когда делаю ссылку при нажатии на изображение, параграф выделяется красным цветом. Это мешает, если таких параграфов много. как можно решить проблему? Заранее спасибо!
Отредактировано Андрей Васенев (18.04.2015 21:49)
Неактивен
Андрей Васенев написал:
В версии AXMA Story Maker 2.6 когда делаю ссылку при нажатии на изображение, параграф выделяется красным цветом. Это мешает, если таких параграфов много. как можно решить проблему? Заранее спасибо!
Это ошибка, которая уже исправлена. Её не будет в следующей версии, которая ожидается скоро.
Не заметил, что речь о версии 2.6. К сожалению, эта версия больше не будет обновляться, поэтому ничего не поделаешь...
Неактивен
Жаль. Спасибо за ответ!
Неактивен
Добрый день.
Пытаюсь создать время суток, но руки кривые, как видно.
Задача сделать часы в меню заголовок, и привязать к определенным действиям времязатрату. Необходимы всего 3 переменные "час", "минута" и "день".
Пытался сделать по аналогии Календаря Сергея Соловьева, но не вышло.
Прошу помочь составить код или поделиться уже готовым и комментариями по встраиванию данного кода в повествование.
Спасибо большое.
Неактивен
Когда-то пытался сам сделать такое. Вот мои наработки (см. вложение). Реализованы минуты, часы, дни, дни недели, месяцы, года со следующими оговорками: во всех месяцах равное количество дней, високосные года и прочие мелочи не учитываются.
Поскольку игру забросил, то код до конца не проверен, поэтому возможны глюки.
Применение:
Начальные значения указываются в параграфе "!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)
Неактивен
Спасибо, Alex842!!!
Не ждал что так скоро будет ответ.
Поковыряюсь с кодом по мере сил и возможностей.
Неактивен
Подскажите, а как добавить иллюстрацию в окно указанное на скриншоте?
Буду весьма благодарен.
[img][/img]
Неактивен
Михаил Кочетов написал:
Подскажите, а как добавить иллюстрацию в окно указанное на скриншоте?
Буду весьма благодарен.
Используйте макрос <<picture '[[File: ]]'>>.
И потратьте немного времени на изучение руководства. Там все это описано.
Отредактировано Alex842 (27.04.2015 13:28)
Неактивен
Здравствуйте, мучаюсь вашей программой. Такая проблема - не пойму что не так. Первая if срабатывает герой попадает куда надо, а дальше ссылки не работают, хотя $разговор_таверня меняет значение. Первое условие не пропадает.
________________________
@@@[[*Заметки|Заметки]]   [[*Инвентарь|Инвентарь]]@@@
<<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)
Неактивен
Люди подскажите пожалуйста,чтобы сохранять в HTML надо купить проффесиональный аккаунт ? он 900 рублей стоит ? спасибо.
а сохранив в библиотеку,захожу в свой профиль вижу свою книгу выбираю ,но она грузится,но не запускается,белый экран короче. помогите пожалуйста,только в редакторе могу запускать. (((
Отредактировано pronin (23.06.2015 14:59)
Неактивен