Если у Вас есть вопросы, как сделать что-то в программе или Вы не понимаете чего-то (то ли это ошибка, то ли фича и т.д.), то спрашивайте в этой теме.
Неактивен
Спасибо за консоль!
Но я вот не понимаю, при каком условии переменная в консоль попадает? Объявляю и использую я переменных больше, чем отображается в списке объектов (в редакторе) и соответственно в консоли.
Неактивен
Попадают туда по мере присваивания им значений.
Неактивен
Как пофиксить проблему с кодировкой? Например, вот http://mutnosoft.ru/story.html. Проблема, вроде, с тем, что по-дефолту не та кодировка, что надо. И это можно пофиксить через htacces как-то.
Неактивен
Да, это у вас сервер неправильный заголовок выдаёт. Посмотрите инфу по настройке htaccess, например, здесь: http://www.askapache.com/htaccess/setti … cess.html. Нужно выставить именно UTF-8.
Неактивен
А почему пассажи, которые выводятся по [[+|] выводятся обязательно через три звёздочки? Можно это как-нибудь опционировать?
Отредактировано sosiskin (28.07.2012 13:26)
Неактивен
Есть две истории. Как их соединить вместе, не переписывая параграф за параграфом?
Неактивен
Есть две истории. Как их соединить вместе, не переписывая параграф за параграфом?
Открыть в код блокноте и скопировать? :)
Неактивен
Штатно. Через кнопку загрузить/добавить. Читайте мануал.
Неактивен
sosiskin написал:
А почему пассажи, которые выводятся по [[+|] выводятся обязательно через три звёздочки? Можно это как-нибудь опционировать?
Пока нет. Их отсутствие может запутать читателя, когда параграф длинный он может не понять что что-то произошло после нажатия на ссылку.
Неактивен
По звёздочкам в итоге сделаю так. При нажатии на ссылку с + они добавляться не будут. А при использовании макроса actions - будут. Думаю, это всех устроит
Неактивен
В общем я уже сделал изменение переменных по нажатию ссылок. Но пришлось серьёзно перетрясти парсер. Надо теперь шлифануть и оттестировать.
Неактивен
Доступна новая версия 0.8.5. Подробности см. здесь: https://forum.ifiction.ru/viewtopic.php … 471#p24471
Неактивен
Здравствуйте! Во время очередного тестирования проекта открылась пустая веб-страница. Как-будто пустой проект! Меню сверху было отображено. Писалась книга на версии программы 0.9. Сегодня попыталась открыть и протестировать в версии 0.9.6. Результат тот же. Браузер - Firefox.
Автор хватается за сердце... Подскажите, что это может быть?
Неактивен
Скиньте мне файл, который пытаетесь открыть. Это единственный вариант найти причину. Я напишу вам в личку мой e-mail.
Неактивен
Доступна релизная версия 1.0. Подробности здесь: https://forum.ifiction.ru/viewtopic.php … 600#p24600
Неактивен
Если из интернета, то просто укажите ссылку на неё.
Если с вашего диска, то скопируйте её туда же, где сохранён Ваш файл истории и просто укажите её имя.
Неактивен
1. Можно ли присваивать имя одной переменной - другой переменной? Например, $объект1 = $объект2
Просто при написании обширной работы заготовки текста удобно хранить в библиотеке с индексами, и при надобности просто присваивать нужное название переменной.
2. Можно ли в конце названия параграфа присваивать не одну, а несколько переменных? [[Текст, который будет виден | Название параграфа {$объект1 = выражение1; $объект2 = выражение2}]]
Неактивен
Цитирую руководство:Можно изменять значения нескольких объектов сразу:
{$объект1=25} {$объект2='Кирпич'} {$объект3=$объект1+10}
Неактивен
DoubleDragon написал:
Цитирую руководство:
Можно изменять значения нескольких объектов сразу:
{$объект1=25} {$объект2='Кирпич'} {$объект3=$объект1+10}
ок, спасибо, может я проглядел, но в онлайн хелпе я такого не видел
вообще, оглавление хелпа неплохо бы когда-нибудь с подпунктами написать, иногда очень долго листать приходится, ища нужную инфу.
Вот я по звуку хотел спросить в частности:
Звук по умолчанию играет один раз, или в цикле?
Ну, там может какой-нибудь <<cycle_sound>> макрос есть, чтоб файлик в петле игрался.
Второе - поддерживается ли OGG? У него на малых битрейтах компрессия лучше звучит, чем у МР3, и можно супермаленькими файлами оперировать, трафик мобильный экономя, опять же.
Неактивен
Звук в цикле играет. OGG поддерживается. Более того, для совместимости со всеми браузерами необходимо, чтобы имелись и OGG и MP3 файлы. Они должны иметь одинаковое имя и лежать в одной папке.
Неактивен
А еще было бы здорово, если бы локация обновлялась при нажатии на ссылку, ну или была бы такая возможность.
Например:
=========================
ТЕКСТ
[[+Первая.. | о_заводе {$пролог = 1}]]
<<if $пролог eq 1>>
[[+Вторая... | о_заводе {$пролог = 3}]]
<<endif>>
[[+Третья... | о_заводе {$пролог = 2}]]
========================
При нажатии на первую ссылку у меня появляется в локации текст и параграф становится равен 1. Но вторая ссылка не становится видимой, хотя условие выполняется.
Неактивен
Вета написал:
вторая ссылка не становится видимой, хотя условие выполняется.
но стоп, условие же находится внутри цикла if-then-endif, как же оно выполнится, если условие для его выполнения не выполнено?
Неактивен
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 на новую строку. А мне нужно чтобы он продолжал текст.
Неактивен
Вета написал:
Подскажите, как сделать такую вещь, чтобы при вставке текста из другой локации, он бы не переносился на новую строку.
Пример:
#1
Стрелка указывает на <<display '2'>>
-------------------------------------------------------
Если есть несколько условий в параграфе 2, текст из параграфа 2 переносится почему-то в параграфе 1 на новую строку. А мне нужно чтобы он продолжал текст.
Все условия в параграфе 2 пишите в одну строку и убедитесь, что весь текст параграфа не содержит ни одного перевода строки:
<<if $strelka eq 0>>север<<elseif $strelka eq 1>>восток<<elseif $strelka eq 2>>юг<<else>>запад<<endif>>
UPD: Flash меня опередил
Отредактировано Morych (01.10.2012 15:08)
Неактивен
О, спасибо )
Кстати, я поняла, какую фишку я еще хочу.
Чтобы в ссылках добавдляющих (+) была возможность обновлять текущий параграф (аналогия gs на qsp). А то приходится создавать еще один лишний параграф и действия.
Отредактировано Вета (01.10.2012 15:46)
Неактивен
О! еще непонятки есть
#книги_з1
Ряды книг
[[+Взять книгу|книги_з1]]
<<if $книга neq 1 and $часы_з1 eq 1>>
Нужно взять книгу
<<set $книга = 1>>
<<else>>
Книга не нужна
<<endif>>
===========================
Соль в том,то даже если я не нажимаю "Взять книгу", он мне уже отображает условия (читайте - обновляет локацию). Дополнительную локацию создавать не хочу, их итак много. Как теперь сделать так, чтобы локация не обновлялась, пока не нажмешь действие.
Неактивен
Вета написал:
Соль в том,то даже если я не нажимаю "Взять книгу", он мне уже отображает условия (читайте - обновляет локацию). Дополнительную локацию создавать не хочу, их итак много. Как теперь сделать так, чтобы локация не обновлялась, пока не нажмешь действие.
Обработка кода не заканчивается на ссылках. Поэтому при первом же входе в локацию, пишется "Ряды книг", ниже ссылка "Взять книгу" и далее текст из условия. Поскольку стоит else в условии, а не elseif, то в любом случае какой-то текст из условия напишется. На самом деле локация не обновлялась, просто код выполнился до конца.
А что нужно сделать? Чтобы описание локации и собирание предметов были в одном параграфе? Если так, то можно использовать передачу параметра при переходе:
#книги_з1 <<if !($take)>> #просто описание Ряды книг [[+Взять книгу|книги_з1 {$take = 1}]] <<elseif $take eq 1>> #действие с книгой <<if $книга neq 1 and $часы_з1 eq 1>> Нужно взять книгу <<set $книга = 1>> <<else>> Книга не нужна <<endif>> <<endif>>
Отредактировано Morych (01.10.2012 18:13)
Неактивен
Morych написал:
Вета написал:
Соль в том,то даже если я не нажимаю "Взять книгу", он мне уже отображает условия (читайте - обновляет локацию). Дополнительную локацию создавать не хочу, их итак много. Как теперь сделать так, чтобы локация не обновлялась, пока не нажмешь действие.
Обработка кода не заканчивается на ссылках. Поэтому при первом же входе в локацию, пишется "Ряды книг", ниже ссылка "Взять книгу" и далее текст из условия. Поскольку стоит else в условии, а не elseif, то в любом случае какой-то текст из условия напишется. На самом деле локация не обновлялась, просто код выполнился до конца.
А что нужно сделать? Чтобы описание локации и собирание предметов были в одном параграфе? Если так, то можно использовать передачу параметра при переходе:Код:
#книги_з1 <<if !($take)>> #просто описание Ряды книг [[+Взять книгу|книги_з1 {$take = 1}]] <<elseif $take eq 1>> #действие с книгой <<if $книга neq 1 and $часы_з1 eq 1>> Нужно взять книгу <<set $книга = 1>> <<else>> Книга не нужна <<endif>> <<endif>>
А когда второй раз в локацию зайдешь, он разве все не отобразит опять? Мне действия с книгой нужно чтобы появлялись, когда у меня в другой локации там сработает переменная часы_з1. В общем, так и так делать еще одну локацию. Печалька.
Отредактировано Вета (01.10.2012 19:22)
Неактивен
Вета написал:
А когда второй раз в локацию зайдешь, он разве все не отобразит опять? Мне действия с книгой нужно чтобы появлялись, когда у меня в другой локации там сработает переменная часы_з1. В общем, так и так делать еще одну локацию. Печалька.
Главное без паники! Со всем разберемся!
Давай всё же определимся с задачей для ясности. Есть локация с описанием. На ней валяется предмет, который можно взять (если он не взят) и только при срабатывании какой-то переменной (в другой локации). В этом случае к описанию добавляется фраза о необходимости взять предмет и ссылка-действие. При подборе предмета также выводится соответствующая фраза, добавляясь к описанию. Самое главное - всё это должно быть втиснуто в один параграф. Верно? Если нет, поправь. Тогда код параграфа:
<<if !($take)>> #по умолчанию выполняется это условие, покажем описание: Внезапно, ряды книг! Тысячи их! #и добавим к описанию ещё строчку и, возможно, ссылку: <<if $часы_з1 eq 1 and $книга eq 0>> #часы сработали и книг при себе нет: Нужно [[+взять книгу|книги_з1 {$take = 1}]]! <<else>> #иначе: Книга не нужна. <<endif>> [[Покинуть локацию|start]] <<elseif $take eq 1>> #перешли по +ссылке в эту же локу, но с другим значением параметра take: Вы берёте книгу. <<set $книга = 1>> #на всякий случай обнулим take <<set $take = 0>> <<endif>>
В стартовой локации не забудь инициализировать переменную <<set $книга = 0>>
Неактивен
kerber, в твоём варианте, если часы не сработали, при нажатии на ссылку - она станет недоступной, но к описанию локации ничего не добавится.
Ой, уже удолил
Отредактировано Morych (01.10.2012 22:14)
Неактивен
Спасибо, Морич, да как-то так. Дальше буду думкать
Неактивен
Вета написал:
Спасибо, Морич, да как-то так. Дальше буду думкать
"Морич" - это по-буржуйски. Всё прогрессивное человечество говорит "Мóрыч"
Ну, если что, обращайся.
Неактивен
Кстати, еще вопрос по аудио.
1. Можно ли вставлять мелодии в переходах (как объекты)?
2. Можно ли вставлять аудио из папки с игрой или только с сайта?
Неактивен
Вета написал:
Кстати, еще вопрос по аудио.
1. Можно ли вставлять мелодии в переходах (как объекты)?
2. Можно ли вставлять аудио из папки с игрой или только с сайта?
Мелодию можно запустить как из интернета:
[[File: http://sm.axmasoft.com/rsc/kr.mp3]]
так и с диска (проверено):
[[File: music\kr.mp3]] - в папке с игрой есть папка music, в которой лежит файл.
(Точно такая же ситуация с картинками.)
В переходах можно вставлять только переменные. Но зато можно сделать так:
:: Аудио <<if $music eq 0>> [[File: music\mus0.mp3]] <<elseif $music eq 1>> [[File: music\mus1.mp3]] <<endif>>
и вызывать эту локацию по разному: [[Музыка 0|Аудио {$music = 0}]] или [[Музыка 1|Аудио {$music = 1}]]
Неактивен
Подтверждаю слова Morych о том, что музыка вставляется также, как и картинки.
Неактивен
Flash написал:
У меня почему-то не пашет.
Чтобы разобраться с проблемой, нужен конкретный пример, где не работает.
Неактивен
ОС какая? Windows, Linux, OS X? Русские буквы в пути есть? Файл истории был сохранён?
Неактивен
XP, в пути были, но в относительном не было. Что еще за файл истории? Мб, я просто сам что-то напутал, но так и не удалось получить тогда звучания музыки, что маловероятно.
Неактивен
Нет, так было раньше. Теперь путь выстраивается относительно сохранённого sm файла. А, ну ещё, если у вас Firefox, используйте ogg файл.
Неактивен
kerber написал:
Насколько я понял, путь прописывается от файла asm-preview.html
Т.е. папка music должна лежать в папке Program Data.
Я сохранял в файл игру и путь верный был.
DoubleDragon написал:
Нет, так было раньше. Теперь путь выстраивается относительно сохранённого sm файла. А, ну ещё, если у вас Firefox, используйте ogg файл.
У меня Opera.
Неактивен
Opera тоже mp3 не умеет. В руководстве написано, что надо класть оба файла - mp3 и ogg с одинаковым именем в одну папку. Тогда будет работать везде.
Неактивен
Подскажите, пожалуйста, как попроще сделать комбинирование предметов в инвентаре друг с другом. А то у меня получается с кучей параграфов на каждый предмет.
Неактивен
Вета, ты хочешь предоставить возможность игроку любой предмет попытаться соединить с любым другим? А стоит ли это делать, если в большинстве случаев мы увидим что-то вроде "Вы попытались соединить X и Y, но ничего не вышло"? Или большинство предметов у тебя как раз комбинируемые? Опиши, как ты хочешь, чтобы это выглядело? Может так: при выборе предмета инвентаря, после описания предмета есть ссылка "комбинировать...", при нажатии на которую выводится список предметов (кроме того, который соединяем). При выборе второго предмета переходим на параграф результата соединения. Попробую что-нибудь придумать. Но проще всего так, как, скорее всего, делаешь ты Только кучу параграфов можно всегда объединить благодаря передаче параметра.
Неактивен
Пример комбинирования двух предметов инвентаря
:: Start[::]22-45-0 <<set $кирка = 1>> <<set $топор = 1>> <<set $золото = 1>> :: StoryMenu[::]623-10-0 [[+Инвентарь {$item1 = 0}]] :: Инвентарь[::]580-299-0 <<set $n = 0>> <<if $item1 eq 0>> У Вас в кармане: <<else>> Выберите второй предмет: <<endif>><<if $кирка gt 0 and $item1 neq 1>><<display Запятая>>[[+кирка]]<<endif>><<if $топор gt 0 and $item1 neq 2>><<display Запятая>>[[+топор]]<<endif>><<if $золото gt 0 and $item1 neq 3>><<display Запятая>>[[+золотые монеты]] (<<print $золото>> шт.)<<endif>><<if $n eq 0>>ничего нет<<endif>>. :: Запятая[::]792-216-0 <<if $n gt 0>>, <<endif>><<set $n++>> :: кирка[::]720-503-0 #номер предмета = 1 <<if $item1 eq 0>> Старая ржавая кирка. <<if $n gt 1>>[[+комбинировать с...|инвентарь {$item1 = 1}]]<<endif>> <<elseif $item1 eq 2>> Взяв в одну руку кирку, а в другую топор, вы представили себя рудокопом-лесорубом. <<elseif $item1 eq 3>> Размахнувшись киркой, вы пробили отверстие в золотой монетке. Теперь можно повесить её на шею. <<endif>> <<if $item1 gt 0>> <<set $item1 = 0>> <<endif>> :: топор[::]864-504-0 #номер предмета = 2 <<if $item1 eq 0>> Настоящий топор лесоруба. <<if $n gt 1>>[[+комбинировать с...|инвентарь {$item1 = 2}]]<<endif>> <<elseif $item1 eq 1>> <<set $item1 = 2>> <<display кирка>> <<elseif $item1 eq 3>> Ловко орудуя топором, вы разрубили все ваши монеты пополам. Теперь у вас в два раза больше золота. <<set $золото = $золото * 2>> <<endif>> <<if $item1 gt 0>> <<set $item1 = 0>> <<endif>> :: золотые монеты[::]1008-504-0 #номер предмета = 3 <<if $item1 eq 0>> Монеты из чистого золота. <<if $n gt 1>>[[+комбинировать с...|инвентарь {$item1 = 3}]]<<endif>> <<elseif $item1 eq 1>> <<set $item1 = 3>> <<display кирка>> <<elseif $item1 eq 2>> <<set $item1 = 3>> <<display топор>> <<endif>> <<if $item1 gt 0>> <<set $item1 = 0>> <<endif>>
Неактивен
Хм... Я пока никак не делаю, я себе это мысленно представила. Такие вещи на АКСМЕ пока сложно реализуются, честно говоря.
Я вот думаю, как мне условия сделать в зависимости от нахождения игрока на локации, но, кажется, придумала. )
Неактивен
Вета написал:
Такие вещи на АКСМЕ пока сложно реализуются, честно говоря.
Приведённый выше код сложен? Можно по-другому: в параграфе описания предмета перечислить вручную все возможные действия с этим предметом (ссылка ведущая на этот же параграф, но с другим параметром, для уменьшения числа параграфов). Преимущество этого метода: действия будут оформлены более литературно.
Вета написал:
Я вот думаю, как мне условия сделать в зависимости от нахождения игрока на локации, но, кажется, придумала. )
Интересно, как?
Неактивен
Morych написал:
Вета написал:
Такие вещи на АКСМЕ пока сложно реализуются, честно говоря.
Приведённый выше код сложен? Можно по-другому: в параграфе описания предмета перечислить вручную все возможные действия с этим предметом (ссылка ведущая на этот же параграф, но с другим параметром, для уменьшения числа параграфов). Преимущество этого метода: действия будут оформлены более литературно.
Вета написал:
Я вот думаю, как мне условия сделать в зависимости от нахождения игрока на локации, но, кажется, придумала. )
Интересно, как?
Задавать на каждой локации $curloc='название_локации'
А потом в инвентаре делать условие.
if $curloc='Беседка': дейтвие1
if $curloc='Дом': дейтвие2
Надеюсь, так будет работать... Если "нет", Драгону срочно надо сделать ))
Отредактировано Вета (15.10.2012 17:01)
Неактивен
Вета написал:
if $curloc='Дом': дейтвие2
Надеюсь, так будет работать... Если "нет", Драгону срочно надо сделать ))
Вот так точно будет работать:
<<if $curloc eq 'Дом'>> [[+дейтвие2]] <<endif>>
Надо предложить Драгону сделать конвертер QSP --> ASM
Неактивен
Пятнишный пост.
Лучше просто и по-русски -- "Дракон". Есть физические причины иметь такой ник. "Драгон", как и "Морич" -- слишком по-имперски
Неактивен
Morych написал:
Вета написал:
if $curloc='Дом': дейтвие2
Надеюсь, так будет работать... Если "нет", Драгону срочно надо сделать ))Вот так точно будет работать:
<<if $curloc eq 'Дом'>> [[+дейтвие2]] <<endif>>
Надо предложить Драгону сделать конвертер QSP --> ASM
Ну да. Просто я помню кусповую конструкцию лучше ))
Отредактировано Вета (16.10.2012 11:13)
Неактивен
Подскажите, пожалуйста, а сколько максимум может быть локаций в программе? Или неограниченно?
И близкий вопрос: размер "рабочего стола", то есть поля, в котором находятся древа и ветки параграфов и переходов - неизменен? То есть, если делать игру с тысячами локаций, придётся параграфы визуально перетаскивать друг на друга, что бы вместились в этом поле? Или поле будет автоматически расширяться? Или можно как-то руками изменить его размер?
Неактивен
Количество параграфов неограничено.
Размер "Рабочего стола" пока изменять нельзя.
Если у вас очень много параграфов, например, более тысячи, воспользуйтесь функцией расстановки. Параграфы будут уплотнены. Можете написать мне личное сообщение, если имеете трудности с работой программы.
Неактивен
Значит, планируется изменение размеров? Это было бы замечательно Если предложения по этому изменению не было, то вношу Кстати, а почему бы не сделать функцию очень сильного уменьшения окошек параграфов? Буквально маленький квадратик, выбранного цвета, в котором ничего кроме названия параграфа мелким шрифтом. Очень бы пригодилось для общего охвата карты локаций, а то сейчас уменьшаются незначительно.
Проблем пока нет, но есть идея для одного проекта, и для начала нужно решить, в какой программе начинать работу, что бы потом не спохватываться.
А максимальное количество знаков в одном параграфе не планируется увеличивать выше 20к ?
Неактивен
Вопрос ещё один А ручной ввод присутствует? В обучалке про него не увидел, в самой программе тоже... Где-то на форуме промелькнуло что-то насчёт ручного ввода, но пробежал мимо, а теперь не могу найти. Если нет ручного ввода слов, то планируется ли в будущем? А если уже есть, то как его сотворить?
Неактивен
Извините, не понял, что такое "ручной ввод"?
А используя автоматическую расстановку можно вместить хоть 10000 параграфов, просто они будут сложены стопочками. Если же увеличивать размер рабочего стола, то программа будет неизбежно тормозить.
Неактивен
Debyr написал:
... но есть идея для одного проекта...
И этот проект "Война и мир 2: Интерактивная версия"
Ручной ввод -- это, наверно, возможность ввода какого-либо текста игроком в текстовом поле или в инпут боксе. Не иначе, чтобы организовать парсер
Неактивен
Текстовый ввод нужен не только для парсера (например, ввод имени, а у меня в игре есть сейф, например), а для парсера и не обязателен текстовй ввод (бывают игры где нужно выбирать глаголы и существительные из готового списка).
Неактивен
Я как раз хотел предложить использовать текстовый ввод по методу Флэша (при помощи "экранной клавиатуры"), если мы верно истолковали термин "ручной ввод".
Неактивен
Flash написал:
... для парсера и не обязателен текстовый ввод ...
Как раз таки обязателен. "Парсерная игра" эта ввод игроком команд вручную с клавиатуры. Выбор вариантов действий из готового списка, как и составление команды из готовых списков глаголов и существительных, называть "парсером", мягко говоря, не совсем корректно.
http://ifwiki.ru/Парсер
http://ifwiki.ru/Категория:Парсерные_платформы
Неактивен
Серый Волк написал:
Flash написал:
... для парсера и не обязателен текстовый ввод ...
Как раз таки обязателен. "Парсерная игра" эта ввод игроком команд вручную с клавиатуры. Выбор вариантов действий из готового списка, как и составление команды из готовых списков глаголов и существительных, называть "парсером", мягко говоря, не совсем корректно.
Парсинг подразумевает синтаксический анализ введеного текста. Как именно он будет вводиться вообщем-то по барабану. В играх Legend (Eric the Unready, Gataway) была возможность выбора необходимых глаголов и существительных из меню.
Отредактировано zerrr (18.10.2012 12:06)
Неактивен
Morych написал:
Я как раз хотел предложить использовать текстовый ввод по методу Флэша (при помощи "экранной клавиатуры"), если мы верно истолковали термин "ручной ввод".
Этот метод явно не мой, он был еще во всяких jRPG в 80х годах на консолях, а, мб, и где-то еще раньше.
Отредактировано Flash (18.10.2012 14:59)
Неактивен
Поскольку вчера в ходе обсуждения на каналах топика "Адвентюры vs Квесты" я говорил Адженте, какой Zerrr молодец, и что я всецело согласен со всем, что он уже сюда написал и заранее готов подписаться под всем, что он скажет ещё... (какое отвратительно-длинное получается предложение)... то да, если брать распознование (синтаксический анализ) составленной из выбранных слов фразы и вывод на неё реакции - тогда по барабану. Но есть (даже у нас) игры, где ввод организован выбором констукции глагол+существительное, но синтаксический анализ никакой там не проводится, программа просто даёт отклик именно на это действие. Точно так же, как даёт отклик на нажатие кнопки в любой менюшной игре. Именно такие игры я имел в виду.
P.S. Не ясно только, почему три последних поста перенесены (как мне показалось) в эту ветку.
UPD. Вернулись.
Отредактировано Серый Волк (18.10.2012 15:37)
Неактивен
Форум чудит
Серый Волк написал:
P.S. Не ясно только, почему три последних поста перенесены (как мне показалось) в эту ветку.
Не показалось )) почему перенесли - без понятия.
Серый Волк написал:
Но есть (даже у нас) игры, где ввод организован выбором констукции глагол+существительное, но синтаксический анализ никакой там не проводится, программа просто даёт отклик именно на это действие. Точно так же, как даёт отклик на нажатие кнопки в любой менюшной игре. Именно такие игры я имел в виду.
Ясно. Приведенная чуть выше игра "звездное наследие" в этом странном топике и есть пример псевдопарсинга (если я правильно помню). А вот приведенная мной "Gateway" (если вдруг ты не в курсе) - это полноценный парсинг с возможностью использования меню.
Отредактировано zerrr (18.10.2012 14:58)
Неактивен
Нет, не Война и Мир 2, конечно же. Просто история Вселенной от Большого Взрыва до тепловой её смерти.
10000 скорее всего будет мало, и если не стоит менять размер окна, то как насчёт суперуменьшения иконок параграфов?
Ручной ввод, это, если хотите, ручное присвоение значения какой-то переменной. Например, тому же имени.
Сначала записывается, что существует такая-то переменная, затем через специальный оператор предлагается выбор, какое значением ему придать. Скажем, как-нибудь так:
<<set $name=>>
input $name
Где вторая строчка в игре проявится как поле для ввода значения. Игрок напишет, скажем, "Вася", и переменной $name присвоится значение "Вася".
Ну или может быть можно сделать автоматически, если у команды <<set $object=>> стоит равно и ничего после него, то это само по себе будет проявляться в игре предложением ввода? Или как-то так.
Пример, как это используется и работает, есть, скажем, в программке для текстовых квестов URQEdit. Там можно ещё и определять, является ли переменная текстовой, или циферной, или любой. И тогда, например, можно будет сделать, что в предложении ввести имя можно будет вводить только буквы, а в предложении ввести возраст - только цифры. Хорошо бы ещё придумать, как внести пределы, например, чтоб нельзя было написать возраст в 200 или 300 лет, а, например, только от 18 до 40.
Короче, если это у вас есть, подскажите, как пользоваться, если нет, очевидно, нужно сделать Вряд ли это будет сложно, как мне кажется
Неактивен
Кстати, важный вопрос... А почему не видны изображения? Пробовал закидывать картинку в папку с сейвом sm, в папку с html документом, указывал путь, как указано в обучении, сохранял, запускаю - изображения нет. Что же с ним нужно на самом деле сделать, что бы появилось?
Неактивен
Debyr написал:
Короче, если это у вас есть, подскажите, как пользоваться, если нет, очевидно, нужно сделать Вряд ли это будет сложно, как мне кажется
Нет, сейчас такого нет. Сделать, конечно, не очень сложно, но это потребует дополнительного тестирования. Поэтому до конца КРИЛ (15 ноября с. г.) не появится точно. А так да, можно подумать.
Неактивен
Ручной ввод, это, если хотите, ручное присвоение значения какой-то переменной (с) Debyr
Вон оно что имелось в виду. А мы тут уже развели в сторону дебатов...
Зер, тоже ясно. Да, с "Gateway" я не знаком, а "Звёздное наследие", ты верно помнишь, как раз из "таких"
Неактивен
Большая просьба писать по теме. Для флейма есть другие темы.
Неактивен
Debyr написал:
Кстати, важный вопрос... А почему не видны изображения? Пробовал закидывать картинку в папку с сейвом sm, в папку с html документом, указывал путь, как указано в обучении, сохранял, запускаю - изображения нет. Что же с ним нужно на самом деле сделать, что бы появилось?
Изображения видны. Положите картинку в папку с файлом истории *.sm
И в тексте параграфа пишите [[File: yourimage.png]]
Неактивен
Нет, сейчас такого нет. Сделать, конечно, не очень сложно, но это потребует дополнительного тестирования. Поэтому до конца КРИЛ (15 ноября с. г.) не появится точно. А так да, можно подумать.
Ничего страшного, года два у вас есть в запасе
Кстати, этого вроде в урке нету, но тоже может понадобиться - переход по вписанным значениям... То есть, к примеру, выводится текст:
Вы видите комнату, здесь восемь дверей, какую хотите открыть?
И поле ввода, куда можно ввести цифры от 1 до 8. Ввёл число - попал в задуманный под единицей параграф. Даже можно будет один параграф сделать для всех восьми дверей, просто сделать проверку if, что если число было введено 1, то выдаёт такой текст, если число 3, другой, и так далее. Я имею ввиду, что и просто имея возможность ввода значения переменной, это можно замутить, но будет, скорее всего, сложно, а может это как-то упростить?
Если кратко, в целом интересен вариант свободного перемещения.. Скажем, выбираю я кнопками, на какую улицу придти. А там поле ввода "дом:" и "квартира". И вводишь, например, значение Дом: 19, квартира 3, жмёшь кнопку (или щёлкаешь энтер, или что-то ещё), и оказываешься в параграфе с, так сказать, такими координатами. Или в с такими условиями, не суть важно. Главное, что требуется, это что бы такое было удобно написать, не путаясь при этом сильно в вариантах и не ломая голову, как хитро извернуться с задаванием и проверками переменных... Если такое получится - будет просто шикарно
И ещё, можно включить проверку числовых переменных в диапазоне? Скажем, у вас есть хп от 0 до 100, включаете посмотреть, сколько сейчас, а под числом комментарий, и например от 1 до 20 хп - пишет что "вы при смерти", если от 20 до 50 - "вы тяжело ранены", и так далее. А то не нашёл вроде как это можно замутить, есть ли такое?
Кроме того, как насчёт картинок на задний фон, над которым будет размещаться текст? Текст при этом можно сделать с тенью, что бы было видно на любом цвете, и не сливалось.
Неактивен
Morych написал:
Изображения видны. Положите картинку в папку с файлом истории *.sm
И в тексте параграфа пишите [[File: yourimage.png]]
О, благодарю... Предлагаю внести изменения в описание руководства и в самой программе, так как в руководстве написано "вставьте специальную ссылку, начинающуюся с префикса Файл: или File: и содержащую адрес изображения и его расширение. Поддерживаются форматы png, jpeg, gif."
И ведь это относится к изображениям, хранящимся на компе, и единственно верное, что можно понять, это что нужно вставить собственно адрес, то есть указать путь, то есть написать, например "С:\хрень\картинки\ололо.jpg" и никак иначе. А оказывается, что нужно поместить картинку в одну папку с сейвом, и, видимо, хранить её там... Ведь это совсем отличается от написанного О,О а [[File: path_to_image.jpg]] тоже намекает на то, что нужно вписать сюда путь к файлу, хотя должно быть, выходит, написано что-то вроде "name_image" ?
Очень запутывает, я даже нервничал вчера по поводу, что всё делаю по инструкции, но ничего не получается
Кстати, ээ... А что, если я кому-то даю игру, я должен дать ему html файл, sm-сейв игры и изображения в одной с ним папке? В смысле, нельзя всё упаковать в один файл, что бы любому скинул файлик, он открыл, и увидел и изображения и музыку?
Неактивен
А то не нашёл вроде как это можно замутить, есть ли такое?
<<if ($hp >= 20) and ($hp < 50)>>
вы тяжело ранены
<<elseif ($hp > 0) and ($hp < 20)>>
вы при смерти
#итд
<<endif>>
И поле ввода, куда можно ввести цифры от 1 до 8. Ввёл число - попал в задуманный под единицей параграф. Даже можно будет один параграф сделать для всех восьми дверей, просто сделать проверку if, что если число было введено 1, то выдаёт такой текст, если число 3, другой, и так далее. Я имею ввиду, что и просто имея возможность ввода значения переменной, это можно замутить, но будет, скорее всего, сложно, а может это как-то упростить?
Не часто я вижу комнаты, из которых можно попасть сразу в 8 других комнат, но тут же сомнительно преимущество текстового ввода над менюшкой.
А оказывается, что нужно поместить картинку в одну папку с сейвом
Не обязательно. Просто можно, да и нужно указывать относительный путь. Можно сунуть все картинки в папку с игрой и тогда нужно будет указывать [[File: имя_папки/название_файла.расширение]]
Кстати, ээ... А что, если я кому-то даю игру, я должен дать ему html файл, sm-сейв игры и изображения в одной с ним папке? В смысле, нельзя всё упаковать в один файл, что бы любому скинул файлик, он открыл, и увидел и изображения и музыку?
*.sm - исходник, его давать не надо. Можно и дать, но это ничего не даст другу при игре. Графику и музыку, как уже выше написано, можно поместить в отдельную папку в папке с игрой.
Отредактировано Flash (18.10.2012 17:54)
Неактивен
<<if ($hp >= 20) and ($hp < 50)>>
вы тяжело ранены
<<elseif ($hp > 0) and ($hp < 20)>>
вы при смерти
#итд
<<endif>>
Не знал, что так можно Спасибо
Не часто я вижу комнаты, из которых можно попасть сразу в 8 других комнат, но тут же сомнительно преимущество текстового ввода над менюшкой.
Ну так это же пример использования, а не пример, почему так будет преимущественней. Если хотите преимущества, я уже писал про улицы, например, на каждой из которых может быть по 10 домов и по 20 квартир в каждой.
Не обязательно. Просто можно, да и нужно указывать относительный путь. Можно сунуть все картинки в папку с игрой и тогда нужно будет указывать [[File: имя_папки/название_файла.расширение]]
Вот видите... Хорошо бы подробное внятное описание этого момента, а то приходится спрашивать, и даже в ответах не сразу все нюансы узнаешь о.о
Неактивен
Если картинка лежит локально, на компьютере, то действительно надо указывать путь, но относительный, а не абсолютный. Можно, например, в папке с игрой (где sm) сделать папку "content", в которой сделать папку "images", где и будут лежать все изображения для игры. Тогда для вставки изображения пишем:
[[File: content\images\filename.jpg]]
Весь медиаконтент игры действительно нужно хранить в папке с игрой. Кстати, советую для каждой игры делать свою отдельную папку. Если у вас одна картинка используется в двух играх, скопируйте её в оба места. Тогда можно будет выдать товарищу папку с игрой (и там точно всё будет). Один файл можно получить путём архивации папки. Напомню, что у товарища должен быть установлен asm, чтобы скомпилировать историю у себя. Либо вы можете опубликовать игру в библиотеке и поделиться полученной ссылкой.
Неактивен
Я внесу изменения в руководство, чтобы про адрес к картинке было понятнее.
Неактивен
Напомню, что у товарища должен быть установлен asm, чтобы скомпилировать историю у себя.
это необязательно. Можно просто опубликовать в html файл и передать его вместе с папкой картинок.
Неактивен
Доступна версия 1.4. Подробнее здесь: https://forum.ifiction.ru/viewtopic.php … 372#p25372
Неактивен
Эпиграфа действительно нет, т.к. пока никто не просил. Предполагалось, что его можно вносить в параграф StorySubtitle. Но если нужно, сделаю.
Тогда возникает вопрос. Эпиграфов может быть несколько?
UPD. Или быть может просто добавить выравнивание текста по правому краю?
Неактивен
DoubleDragon написал:
UPD. Или быть может просто добавить выравнивание текста по правому краю?
Универсальное решение — самое лучшее.
Отредактировано Cheshire (25.10.2012 07:43)
Неактивен
Согласен. Добавил кнопку выравнивания по правому краю. Будет доступно 1-го ноября в версии 1.5.
Неактивен
Times.
Неактивен
Вы не представляете, насколько это полезная тема. Я сегодня три раза точно начинала писать сообщение а-ля "помогите, как же это сделать". Придумывала хорошее решение к пятому слову описания проблемы.
Спасибо за помощь в виде хорошего пинка соображалке.
Неактивен
Спасибо за добрые слова и добро пожаловать!
Неактивен
Ребят, нужна помощь.
Сразу скажу, вчера было всё нормально. Сегодня нечто изменилось (обновил версию до 1,6,1?). При компиляции и тестировании файла ссылки на картинки исчезают, и в браузере не отображаются.
Картинка задана в файле таким образом:
[[File: pict\3.png]]
В браузере (Хром) преображается в такую ссылку
file:///C:/Monomach/pict/3.%20png
Вот эти самые %20 всё и портят. Не пойму, откуда они берутся, но мешают.
Если кто в курсе, подскажите срочно пожалуйста.
Отредактировано Ergistal (19.11.2012 18:57)
Неактивен
%20 — это пробел. Разработчик знает о проблеме: https://forum.ifiction.ru/viewtopic.php … 920#p25920
Неактивен
Ошибку исправил. Качайте версию 1.6.2.
Неактивен
Подскажите пожалуйста, как организовать циклическую перестановку значений переменных по щелчку на ссылке.
Хочу сделать что-то типа плоского кубик - рубика 3х3:
|1||2||3|
|4||5||6|
|7||8||0|
Уф! Разобрался с перестановками:
Оказывается, при изменении значения нескольких объектов сразу в конструкции типа:
[[ |game_logic {$ac=$_a}{$ab = $ac}{$aa = $ab}{$_a = $aa}]]
сначала выполняется:
{$_a = $aa}
затем:
{$aa = $ab}
после этого:
{$ab = $ac}
и наконец:
{$ac=$_a}
$_a - вспомогательная переменная.
Отредактировано kerber (25.11.2012 21:19)
Неактивен
Спасибо, посмотрю, почему так происходит.
Неактивен
DoubleDragon написал:
Спасибо, посмотрю, почему так происходит.
А может быть это такая фича, которую надо просто описать в руководстве?
Неактивен
Korwin написал:
DoubleDragon написал:
Спасибо, посмотрю, почему так происходит.
А может быть это такая фича, которую надо просто описать в руководстве?
Да, простого описания, на мой взгляд, вполне достаточно.
Неактивен
1. Можно ли при выводе таблицы убрать её контуры? То есть, чтобы только текст был виден?
2. Можно ли задавать для звукового файла опции "играть один раз" и "повторять в цикле"?
Отредактировано sosiskin (06.01.2013 22:27)
Неактивен
Кельта написал:
sosiskin, а как Вам такой вариант решения вашей проблемы? Например, если бы параграф назывался "пример"
Код:
На столе стоит [[*чайник|пример {$объект = 1}]] и [[*чашка|пример {$объект = 2}]] ---- <<if $объект eq 1>> описание чайника <<elseif $объект eq 2>> описание чашки <<else>> # пустое поле <<endif>>
Попробовал как предложила Кельта, и действительно, надобность в всплывающем контекстном меню вроде отпадает. (Единственное, добавил звёздочки перед каждой ссылкой, чтоб работало как надо.)
Неактивен
sosiskin написал:
1. Можно ли при выводе таблицы убрать её контуры? То есть, чтобы только текст был виден?
2. Можно ли задавать для звукового файла опции "играть один раз" и "повторять в цикле"?
1. Да, сделаю.
2. Надо делать отдельный макрос sound, не в следующей версии.
Неактивен
WeLLWar написал:
Люди пподскажите, почему у меня иногда после создания параграфа АСМ выводит ошибку и вылетает. Приходится каждый раз сохранятся:(
Было так же на версии 1.6.2 С версии 1.6.6 - все нормально.
Мало информации для понимания что происходит: какая ОС, какой компьютер, какое именно сообщение об ошибке пишет программа?
Неактивен
Было так же на версии 1.6.2 С версии 1.6.6 - все нормально.
Мало информации для понимания что происходит: какая ОС, какой компьютер, какое именно сообщение об ошибке пишет программа?
версия 1.7, ОС винХР, компьютер смешно конечно, но 64мб видео, 1гиг РАМ, ну ошибку проглядел, повторится скину сюда...
Отредактировано WeLLWar (11.01.2013 10:21)
Неактивен
Главное напишите, после каких действий это происходит, чтобы можно было воспроизвести ошибку.
Неактивен
Главное напишите, после каких действий это происходит, чтобы можно было воспроизвести ошибку.
Это происходит после создания параграфа, ну... прям царство рандома... может произойти, а может - нет...
Неактивен
А пробовали чисто по програмисстски? Удалить, почистить, по новой скачать переустановить.
Часто спасает от непонятных ошибок.
Неактивен
WeLLWar написал:
прям царство рандома... может произойти, а может - нет...
Из своего опыта советую, во-первых, перегрузиться, и поубирать разные (ненужные) резидентные программы. Всякие виселки, майлрушки, смайлогенераторы и т.п.
Мне, по крайней мере, помогло, и заработали сочетания клавиш.
Неактивен
Не нашёл в официальной справке, каким образом задаётся цвет какого-либо фрагмента текста. Пример: я хочу, чтобы объект был выделен красным жирным.
Неактивен
Такого пока нет.
Неактивен
Можно использовать одноразовые ссылки, начинающиеся с +.
Неактивен
Товарищи, скажите пожалуйста, есть ли возможность менять содержимое параграфа в реальном времени не обновляя страницы. Например поменять фоновую картинку или адрес многоразовой ссылки?
К примеру у меня обстоятельства следующие: есть некий бинокль и есть окно в которое я должен посмотреть. Бинокль сломан и я чиню его в инвентаре. Если я смотрю в окно без бинокля выводится один текст, со сломанным биноклем - другой и с починенным выводит в следующий параграф с картинкой с видом из бинокля. Вероятно я тупой, но тем не менее не хватает мне логики.
Перепробовал несколько вариантов на этот момент пришел примерно к следующему:
:: бинокль
Обычный театральный бинокль. Внутри что то стучит как будто один из окуляров плохо держится на своем месте.
[[*{{{потрясти}}}|трясти]]
:: трясти
<<random $бинокль = 99>>
<<if $бинокль gt 70>>
<<set $починил = 1>>
замечательно!
<<endif>>
<<if $бинокль lte 70>>
не получилось!
<<endif>>
:: комната 1
С права на <<if !($бинокль)>>[[+окне|окно пуст.]]<<endif>><<if ($бинокль)>>[[+окне|окно]]<<endif>><<if $бинокль and $починил>>[[окне|окно]]<<endif>><<if ($заметил_окно)>>окне<<endif>> засохшее растение.
:: окно пуст.
Под окном гудит желтый фонарь. Кажется что он единственный источник света в ночном дворе.
::окно
<<style 'dark'>>
<<if $бинокль and $починил>>[[File: images/vid_iz_okna.jpg]] В бинокль я вижу что в силуэте противоположного дома горит одно окно. Интересно кто там? <<endif>>
<<if $бинокль>> Двумя глазами смотреть невозможно.<<endif>>
То есть мне хочется что бы ссылка "окно" была многоразовой и при первых двух обстоятельствах выводила текст в тот же параграф, а при починенном бинокле отсылала в следующий и все это происходило в одном параграфе.
p.s. спасибо большое, сильно нравится ваша программа!
Отредактировано avatarka (17.01.2013 01:05)
Неактивен
avatarka, будь другом, замени нецензурные словечки в своём примере. Я понимаю, что русские люди обычно с такими словами и чинят что-либо, но как бы на бан не нарваться.
По вопросу. Многоразовая ссылка начинается с *. В параграфе "комната 1" выводи только ссылку [[*окне|окно]] (один раз) при этом совмести параграф "окно пуст." с параграфом "окно", а уже в параграфе "окно" выполняй все проверки. И при починенном бинокле попробуй сначала использовать макрос <<clrscr>> для очистки экрана.
Отредактировано Morych (16.01.2013 10:25)
Неактивен
WeLLWar написал:
Как сделать, чтобы после определённого действия ссылка удалялась?
Кроме одноразовых +ссылок можно использовать более извращённый способ:
Пусть $действие = 0
:: параграф В тексте параграфа присутствует <<if $действие>>ссылка<<else>>[[ссылка|параграф {$действие = 1}]]<<endif>>. <<if $действие>> От нечего делать я нажал на ссылку, и та удалилась. <<endif>>
или без фэйда (но зато при нажатии кнопки "Отменить" вместо отмены действия вернёшься на предыдущий параграф):
:: параграф <<clrscr>> В тексте параграфа присутствует <<if $действие>>ссылка<<else>>[[+ссылка|параграф {$действие = 1}]]<<endif>>. <<if $действие>> От нечего делать я нажал на ссылку, и та удалилась. <<endif>>
Неактивен
Morych написал:
avatarka, будь другом, замени нецензурные словечки в своём примере.
Ну, черновик у меня такой - за литературностью не слежу.)
Morych написал:
попробуй сначала использовать макрос <<clrscr>> для очистки экрана.
Вроде что то понял, буду пробовать.
Неактивен
Вопрос по генератору случайных чисел:
если мне нужно задать промежуток для случайного числа, но не от 0 до Х, а от L>0 до Х.
Можно это сделать?
Я представляю как это сделать, скажем, на LUA, но можно ли сделать средствами АКСМА?
Отредактировано sosiskin (30.01.2013 13:10)
Неактивен
Задаёшь от 0 до X-L, к результату прибавляешь L
Неактивен
пасибо!
ещё вопрос: а можно ли выводить в столбец таблицы повторяющийся параграф (макрос <<repeat>>)?
Допустим, я планирую выводить данные о битве в двух разных столбцах. Эдакий real-time бой. Можно так пользоваться таблицей?
Отредактировано sosiskin (30.01.2013 21:21)
Неактивен
Не, в таблицах вообще нельзя использовать макросы, можно только переменные.
Неактивен
Это пожалуйста.
Неактивен
Хочу сделать следующее:
В локации иногда (по условию) находится персонаж, который блуждает между локациями по определенному алгоритму. Если игрок видит его он может выбрать его и поговорить. Разговор может оказаться длинным, т.е. затрагивать немало параграфов. Вопрос - как потом игрока вернуть в тот же параграф, где начался разговор?
Попробовал сначала запомнить лекущую локацию в переменную <<set $place=$$title>>
А после разговора предложить [[Закончить разговор|$place]] - Ничего не получилось. Что я делаю неправильно, точнее как сделать правильно?
Неактивен
Просто переменные в ссылках не поддерживаются. Можно в параграфе "Закончить разговор" сделать очистку экрана макросом <<clrscr>> и вставить параграф, где начался разговор: <<display $place>>.
Неактивен
Подскажите пожалуйста как сделать следующее:
Вверху параграфа выставлено значение
Оставшееся время работы фильтров:<<print $фильтр>>
, которое должно изменятся при нажатии на ссылку
<<set $локация = 1>> [[*Двигаемся дальше|Локации поверхности {$локация=$номер} {$фильтр=$фильтр-5}]]
где установкой
{$локация=$номер}
устанавливается текст который появится, а
{$фильтр=$фильтр-5}
уменьшает значение.
значение переменной то уменьшается, а так как параграф не обновлялся то
Оставшееся время работы фильтров:<<print $фильтр>>
не изменяется.
Пробовал решить проблему с помощью повторяющегося параграфа и очисткой экрана, но добился лишь того что при нажатии на ссылку значение меняется, но текст появившийся при нажатии естественно быстро исчез из за того что в повторяющемся параграфе стоит очистка параграфа.
Как сделать что бы и значение менялось и текст появившейся по ссылке оставался до следующего нажатия. Может есть идеи.
Неактивен
Может просто вызывать параграф Локации поверхности из себя же обычной ссылкой и в нём же выводить значение $фильтр?
<<print $фильтр>> [[Двигаемся дальше|Локации поверхности {$локация=$номер} {$фильтр=$фильтр-5}]]
Неактивен
DoubleDragon написал:
Может просто вызывать параграф Локации поверхности из себя же обычной ссылкой и в нём же выводить значение $фильтр?
Код:
<<print $фильтр>> [[Двигаемся дальше|Локации поверхности {$локация=$номер} {$фильтр=$фильтр-5}]]
Да сделал так - перенес отображение значения в параграф "локации поверхности" все отображает и значение меняется, но по команде <<return>> из этого параграфа попадая на параграф старт значение фильтр измененное не сохранилось, как было 50, так и есть.
Неактивен
по команде <<return>> из этого параграфа попадая на параграф старт значение фильтр измененное не сохранилось, как было 50, так и есть
Это наверное потому, что в параграфе "старт" старое значение заново присваивается.
Неактивен
Oreolek написал:
Как пользоваться макросом <<input>>
Цитирую руководство пользователя (раздел "Объекты и выражения"):
Чтобы дать возможность читателю ввести с клавиатуры какой-либо текст или число, а потом присвоить его нужному объекту, используйте макрос input:
<<input 'Параграф' $объект>>
После окончания ввода набранное значение будет присвоено указанному объекту, и будет произведён автоматический переход на страницу указанного параграфа.
Неактивен
я начал осваивать axma story maker и возникла трудность я вставил в параграф start звуковой файл но мне не надо чтобы во всех остальных он проигрывался придется создавать пустой звуковой файл или есть другой способ?
Неактивен
Desfir написал:
я начал осваивать axma story maker и возникла трудность я вставил в параграф start звуковой файл но мне не надо чтобы во всех остальных он проигрывался придется создавать пустой звуковой файл или есть другой способ?
используйте макрос <<noaudio>> - он останавливает проигрывание музыки и убирает плеер.
Неактивен
Morych написал:
Desfir написал:
я начал осваивать axma story maker и возникла трудность я вставил в параграф start звуковой файл но мне не надо чтобы во всех остальных он проигрывался придется создавать пустой звуковой файл или есть другой способ?
используйте макрос <<noaudio>> - он останавливает проигрывание музыки и убирает плеер.
Спасибо получилось просто по макросам я еще не читал информацию
Неактивен
Макрос <<display 'название параграфа'>> не изменяет переменную $$title - это логично. Но иногда требуется сделать переход типа goto так, чтобы $$title стало равным параграфу, куда осуществлен переход. Посоветуйте, как сделать?
:: Start <<set $place = $$title>> [[Переход в описание игры|Help]] [[Начало игры|Game]] :: StoryTitle Проверка макроса DISPLAY :: StorySubtitle Проверка справки по игре и работы макроса display. :: StoryMenu [[Об этой истории|Story]] :: StoryAuthor Korwin [[Возврат|place]] :: Game <<set $place = $$title>> Игра началась! [[И так далее...|game2]] [[Переход в описание игры|Help]] :: game2 Игра началась! [[И так далее...|game2]] [[Переход в описание игры|Help]] :: Help Здесь написано как играть в эту игру [[Возврат|place]] :: place <<display $place>> :: Story <<set $place = $$title>> [[Переход в описание игры|Help]] [[Об авторе|StoryAuthor]]
В примере выше попытка дважды вызвать помощь по игре в том же месте приводит нас на пустой экран, так как переменная $$title становится равной 'place'. Подскажите, как это исправить?
Пока сделал так:
[[Вернуться к началу игры|astart]] или <<back>>
Но макрос <<back>> выводит слово <- Назад всегда с новой строки и не подчиняется центрированию, что не всегда удобно...
Отредактировано Korwin (16.03.2013 09:39)
Неактивен
Попробуй такой код:
:: Start [[Переход в описание игры|Help]] [[Начало игры|Game]] :: StoryTitle Проверка макроса DISPLAY :: StorySubtitle Проверка справки по игре и работы макроса display. :: StoryAuthor Korwin :: Game Игра началась! [[И так далее...|game2]] [[Переход в описание игры|Help]] :: game2 Игра началась-2! [[И так далее...|game2]] [[Переход в описание игры|Help]] :: Help Здесь написано как играть в эту игру <<display 'SetFromLoc'>> ===[[Возврат|place]]=== :: place <<display $loc>> :: StoryMenu [[Об этой истории|Story]] :: Story [[Переход в описание игры|Help]] [[Об авторе|Author]] :: Author Автор этой истории: <<display 'StoryAuthor'>> <<display 'SetFromLoc'>> ===[[Возврат|place]]=== :: SetFromLoc <<if ($$from neq 'place') and ($$from neq 'Help') and ($$from neq 'Author')>> <<set $loc = $$from>> <<endif>>
Вроде бы, всё окей
UPD: Упс, не заметил один параграф. Подправил код.
Отредактировано Morych (16.03.2013 13:16)
Неактивен
Morych, спасибо! Переписал твой код руками, сначала не заработало, но я тебе верил! И нашел ошибку у себя! Отладка - может доставлять удовольствие!
Неактивен
Пожалуйста, помогите, очень нужно реализовать в программе "группу +ссылок".
===
Объясняю, что это такое:
Идет диалог персонажей, внизу три ссылки (три варианта ответов). Все три "+вые", то есть при нажатии на них результат появится на той же странице. А теперь вопрос - как же сделать так, чтобы при нажатии на одну из этих ссылок, все разом становились недоступными? Это необходимо, чтобы игрок не подглядел, что будет, если бы он выбрал другой вариант.
===
Иными словами, я хочу объединить "+ ссылку" и "невозвратную ссылку", только в совокупности с другими ссылками на этой странице.
Я знаю, что проще делать обычные невозвратные ссылки, но уж очень нужно остаться на той же странице.
Это нужно также для того, чтобы игрок не просто видел результат а виде:
1) что было
2) что он выбрал
3) результат
И все на одной страничке. Удобно.
===
Или вот еще вариант, даже лучше:
Нужно, чтобы после того, как игрок выбрал один из трех вариантов, случилось следующее:
а) внизу появился результат
б) ссылка, на которую он нажал, стала недействительна
в) другие две ссылки вообще изчезли!
Можно так сделать?
Отредактировано Anderman (08.04.2013 17:05)
Неактивен
Anderman написал:
Пожалуйста, помогите, очень нужно реализовать в программе "группу +ссылок".
===
Объясняю, что это такое:
Идет диалог персонажей, внизу три ссылки (три варианта ответов). Все три "+вые", то есть при нажатии на них результат появится на той же странице. А теперь вопрос - как же сделать так, чтобы при нажатии на одну из этих ссылок, все разом становились недоступными? Это необходимо, чтобы игрок не подглядел, что будет, если бы он выбрал другой вариант.
===
Иными словами, я хочу объединить "+ ссылку" и "невозвратную ссылку", только в совокупности с другими ссылками на этой странице.
Я знаю, что проще делать обычные невозвратные ссылки, но уж очень нужно остаться на той же странице.
Это нужно также для того, чтобы игрок не просто видел результат а виде:
1) что было
2) что он выбрал
3) результат
И все на одной страничке. Удобно.
Пока деактивировать +ссылки без нажатия невозможно. Могу предложить следующее. Создать объект $ответ = false. В параграфах, на которые ссылаются +ссылки написать:
<<if !$ответ>>
Текст параграфа
<<set $ответ = true>>
<<endif>>
Т.е. все ссылки можно будет нажать, но текст покажет только один раз.
Неактивен
Другой вариант. Вместо +ссылок использовать обычные ссылки на этот же параграф, с параметром:
Параграф
Написано, что было
<<if $ответ eq "Вариант 1">>
Выбран 1 вариант
Результат 1
<<elseif $ответ eq "Вариант 2">>
Выбран 2 вариант
Результат 2
<<elseif $ответ eq "Вариант 3">>
Выбран 3 вариант
Результат 3
<<else>>
[[Вариант 1|Параграф {$ответ = "Вариант 1"}]]
[[Вариант 2|Параграф {$ответ = "Вариант 2"}]]
[[Вариант 3|Параграф {$ответ = "Вариант 3"}]]
<<endif>>
Неактивен
Anderman написал:
Пожалуйста, помогите, очень нужно реализовать в программе "группу +ссылок".
===
Объясняю, что это такое:
Идет диалог персонажей, внизу три ссылки (три варианта ответов). Все три "+вые", то есть при нажатии на них результат появится на той же странице. А теперь вопрос - как же сделать так, чтобы при нажатии на одну из этих ссылок, все разом становились недоступными? Это необходимо, чтобы игрок не подглядел, что будет, если бы он выбрал другой вариант.
===
Иными словами, я хочу объединить "+ ссылку" и "невозвратную ссылку", только в совокупности с другими ссылками на этой странице.
Я знаю, что проще делать обычные невозвратные ссылки, но уж очень нужно остаться на той же странице.
Это нужно также для того, чтобы игрок не просто видел результат а виде:
1) что было
2) что он выбрал
3) результат
И все на одной страничке. Удобно.
http://hyperbook.ru/blog.php?id=13636642398167 - вот тут есть хорошая подсказка по теме
А если конкретнее:
:: камень
Перед тобой три наперстка.
<<if !($условие)>>[[Взять левый|камень {$условие=1} {$left=1}]]<<else>>Взять левый<<endif>>
<<if !($условие)>>[[Взять средний|камень {$условие=1} {$center=1}]]<<else>>Взять средний<<endif>>
<<if !($условие)>>[[Взять правый|камень {$условие=1} {$right=1}]]<<else>>Взять правый<<endif>>
<<if $left>>Под левым наперстком пусто<<endif>>
<<if $center>>Под средним наперстком пусто<<endif>>
<<if $right>>Под правым наперстком пусто<<endif>>
Поправил код по подсказке Morych'a
Отредактировано Korwin (08.04.2013 17:11)
Неактивен
Например, так:
<<set $список[2] = $список[2] + 1>>
Неактивен
Да, добавлю.
Неактивен
Oldrik написал:
Как увеличить или уменьшить элемент списка? Не присвоить новое значение, а просто изменить.
По-моему, изменяя значение элемента списка, ты и присваиваешь ему новое значение. Вот в примере выше мы присваиваем новое значение, которое больше текущего значения на 1.
Неактивен
Morych написал:
Oldrik написал:
Как увеличить или уменьшить элемент списка? Не присвоить новое значение, а просто изменить.
По-моему, изменяя значение элемента списка, ты и присваиваешь ему новое значение. Вот в примере выше мы присваиваем новое значение, которое больше текущего значения на 1.
Просто был нужен пример кода.
Неактивен
Вопрос по javascript.
Нашёл очень интересные глитч-скрипты, создающие эффект сбоя монитора или графики (глитч). Вот страничка разработки, примеры можно посмотреть здесь.
Можно ли встраивать такой скрипт в АХМА? (особенно интересует Glitch Transition, вызывающий эффект лишь на какое-то время).
И можно ли присвоить ему, скажем, макрос?
Отредактировано sosiskin (01.05.2013 10:49)
Неактивен
Есть идея встроить различные фильтры для обработки изображений.
Неактивен
sosiskin написал:
Вопрос по javascript.
Нашёл очень интересные глитч-скрипты, создающие эффект сбоя монитора или графики (глитч). Вот страничка разработки, примеры можно посмотреть здесь.
Можно ли встраивать такой скрипт в АХМА? (особенно интересует Glitch Transition, вызывающий эффект лишь на какое-то время).
И можно ли присвоить ему, скажем, макрос?
1. С одной стороны, встраивание произвольных скриптов в ASM - любопытно... Расширяет возможности. Но потенциально - уже вероятны некоторые риски, например переходы на произвольные страницы, встраивание рекламы и так далее. Впрочем я не очень компетентен в таких вопросах.
2. А зачем глитч-эффекты в текстовом квесте? Почему нельзя сделать пару картинок и подменять их по условию?.
Неактивен
Korwin написал:
2. А зачем глитч-эффекты в текстовом квесте? Почему нельзя сделать пару картинок и подменять их по условию?.
То-то и ценно, что глитч происходит именно с текстом, а не картинкой. Например, по сюжету вы управляете слегка неисправным роботом, система которого заражена вирусом. Время от времени текст глитчует (как экран парсера вот в этой игре).
Или (ещё лучше) сделать глитчем смену параграфов на экране. Чтобы при надобности один параграф превращался так в другой.
Отредактировано sosiskin (01.05.2013 23:15)
Неактивен
Народ, подсобите с организацией кода, пожалуйста.
Есть такая задача, похожая на АХМА игру Asteroids, но с урезанной математикой, попроще: нужно чтоб в табличном окошке с заданной скоростью падали слова из списка (по принципу звёзд в игре Asteroids, но быстрее).
Направьте мысль в нужную сторону, плиз! Очень буду благодарен. Код "астероидов" меня сбивает с толку, гуманитарий, чо. ))
Неактивен
sosiskin написал:
Народ, подсобите с организацией кода, пожалуйста.
Есть такая задача, похожая на АХМА игру Asteroids, но с урезанной математикой, попроще: нужно чтоб в табличном окошке с заданной скоростью падали слова из списка (по принципу звёзд в игре Asteroids, но быстрее).
Направьте мысль в нужную сторону, плиз! Очень буду благодарен. Код "астероидов" меня сбивает с толку, гуманитарий, чо. ))
Насколько я помню, минимальный интервал таймера - 1 секунда. Чтобы слова падали быстрее, можно изменять их позицию не на одну строку, а на две, например.
Слова из списка должны падать по одному?
Неактивен
Morych написал:
Слова из списка должны падать по одному?
Нет, в том-то и дело, нужно чтобы они падали вниз (или вверх) толпой, как старые текстовые скринсейверы, словно медленный снег из слов. Причём список хотелось бы подставлять динамически.
Я взял Астероиды, повставлял вместо символов точек и звёздочек слова. Но хочется чтобы код линий (строк) был одним, а подставлять просто из массива переменные по очереди, в каждой линии.
Как такое лучше сделать?
Отредактировано sosiskin (07.05.2013 17:02)
Неактивен
Хм, попробую что-нибудь придумать
А пока может это натолкнёт на верный путь:
:: StoryTitle Падающие слова :: Start <<set $lstWords = ("Эти слова будут падать, пока не закончатся...").split(" ")>> <<set $i = 0>> <<set $y = 0>> <<set $ymax = 4>> [[Пуск!|Пуск]] :: Пуск <<repeat "Словопад" 1>> <<display "Словопад">> :: Словопад <<clrscr>> ===''Словопад''=== <<set $j = $i + 1>><<set $p = $lstWords.length - $i - 1>><<loop $p>><<print $lstWords[$j]>> <<set $j++>><<endloop>><<br>><<loop $y>><<br>><<endloop>><<if $i lt $lstWords.length>><<print $lstWords[$i]>><<endif>><<set $p = $ymax - $y>><<loop $p>><<br>><<endloop>><<set $j = 0>><<loop $i>><<print $lstWords[$j]>> <<set $j++>><<endloop>> <<set $y++>> <<if $y eq $ymax>> <<set $i++>> <<set $y = 0>> <<if $i eq $lstWords.length + 1>> <<stop "Словопад">> ===''Конец''=== <<elseif $i eq $lstWords.length>> <<set $y = $ymax - 1>> <<endif>> <<endif>>
Отредактировано Morych (07.05.2013 17:10)
Неактивен
Кстати, именно для этой разработки я спрашивал про визуальные эффекты на javascript, потому как если на такой "падающий текст" натравить глитч-скрипт, получится очень интересное окошко, цветной спрайт из обычного текста.
Неактивен
sosiskin написал:
нужно чтобы они падали вниз (или вверх) толпой, как старые текстовые скринсейверы, словно медленный снег из слов. Причём список хотелось бы подставлять динамически.
Вот:
:: StoryTitle Падающие слова :: Start [[Скринсейвер|Пуск2]] :: Пуск2 <<set $lstWords = ["AXMA Story Maker", "DoubleDragon", "Morych", "sosiskin", "Суперскринсейвер"]>> <<set $lstLines = []>> <<set $newWord = "">> <<loop 10>> <<set $lstLines.push(" ")>> <<endloop>> <<repeat "Словопад2" 1>> <<display "Словопад2">> :: Словопад2 <<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 + " ">><<endloop>> <<if Math.round(Math.random())>> <<set $lstLines.unshift($k + $lstWords[$r])>> <<else>> <<set $lstLines.unshift($lstWords[$r] + $k)>> <<endif>> <<set $k = $lstLines.pop()>> <<clrscr>> ---- <<set $i = 0>> <<loop $lstLines.length>>==={{{<<print $lstLines[$i] + "<br>">>}}}===<<set $i++>><<endloop>> ---- [[Добавить слов|Добавить {$newWord = ""}]] :: Добавить <<if not $newWord.length>> <<stop "Словопад2">> Новое слово: <<input "Добавить" $newWord>> <<else>> <<set $lstWords.push($newWord)>> <<repeat "Словопад2" 1>> <<display "Словопад2">> <<endif>>
Текстовый скринсейвер (можно динамически добавлять слова).
Неактивен
Morych написал:
А пока может это натолкнёт на верный путь:
я чёто не могу понять, как сделать, чтоб целиком набор слов не виден было изначально, и чтобы они не по порядку один за другим падали по левому краю, а на разном отступе.
Может, всё-таки через списки (массив) как-то можно сделать?
В общем, я пока кое-как запилил на основе кода Астероидов, вставив туда списки.
Отредактировано sosiskin (07.05.2013 19:39)
Неактивен
sosiskin написал:
Morych написал:
А пока может это натолкнёт на верный путь:
я чёто не могу понять, как сделать, чтоб целиком набор слов не виден было изначально, и чтобы они не по порядку один за другим падали по левому краю, а на разном отступе.
Может, всё-таки через списки (массив) как-то можно сделать?
В общем, я пока кое-как запилил на основе кода Астероидов, вставив туда списки.
А как же моё предыдущее сообщение #194? Там через списки, изначально не видно ничего, не по порядку и на разном отступе.
Неактивен
Я проверил - всё работает. Для этого примера нужна последняя версия - 1.9.9.
Неактивен
Большущее спасибо!
Кстати, за этой придумкой вспомнил про Asciimator.
Отредактировано sosiskin (08.05.2013 10:25)
Неактивен
А напомните мне, пожалуйста, как сделать сл. конструкцию:
#1
<<display 'служ'>>
#2
<<display 'служ'>>
#служ
===[[ГЛАВНАЯ|???]] | [[СТАТУС|статус]] | [[ПЕРЕМЕЩЕНИЯ|перемещения]]===
----
------------
Как сделать ссылку в служебной локации, чтобы при нажатии на ГЛАВНАЯ меня всегда возвращало в текущую локацию, даже если она сменилась.
Неактивен
Вета, хочу уточнить, "перемещения" - это вкладка с перечнем выходов из данной локации?
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)
Неактивен
Напомните мне, как сохранить игру с "Гиперкниги" с иллюстрациями?
Отредактировано Korwin (08.05.2013 14:35)
Неактивен
Пока, к сожалению, никак.
Неактивен
прошу прощения, одно уточнение по "Словопаду":
Я так понял, перед тем как вызвать $input, вы останавливаете "Словопад", чтобы окно ввода не сбивалось. А почему оно сбивается и исчезает от "словопада"? Это обусловлено приростом количества строк или свойством самого окна ввода? Его никак нельзя оставить на экране при включении словопада? например, так
:: Добавить #<<if not $newWord.length>> # <<stop "Словопад2">> Новое слово: <<input "Добавить" $newWord>> <<else>>
Попробовал убрать <<stop>>, словопад сбивал поле ввода после первого цикла.
Отредактировано sosiskin (08.05.2013 23:55)
Неактивен
Пока мы не вызовем макрос <<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 + " ">><<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">>
Неактивен
sosiskin написал:
А где задаётся количество строк в словопаде? Как сделать их меньше и, например, сам колодец уже? Я что-то в коде не могу врубиться, где это задаётся.
Количество строк - это число элементов списка $lstLines, задаётся в параграфе "Пуск2". Там где оператор цикла, мы 20 раз добавляем новый элемент в список.
Чтобы сузить "колодец" нужно поменять в строке
<<set $x = Math.round(Math.random() * (40 - $lstWords[$r].length))>>
число 40 на меньшее. Вообще $x - это число неразрывных пробелов, которые добавляются к слову справа или слева.
Неактивен
Ух, спасибо!
Самое последнее: в начале, когда я брал за основу код Астероидов, словопад получился плотнее, т.к. там запускалось не по одному слову в строке, а по несколько.
:: 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 $линия = $линия + ' '>> <<set $код = $код + '0'>> <<endif>> <<random $объект = 8>> <<if $объект eq 0>> <<set $линия = $линия + $словосписок [2]>> <<set $код = $код + '1'>> <<else>> <<set $линия = $линия + ' '>> <<set $код = $код + '0'>> <<endif>> <<random $объект = 8>> <<if $объект eq 0>> <<set $линия = $линия + $словосписок [3]>> <<set $код = $код + '1'>> <<else>> <<set $линия = $линия + ' '>> <<set $код = $код + '0'>> <<endif>> <<random $объект = 8>> <<if $объект eq 0>> <<set $линия = $линия + $словосписок [4]>> <<set $код = $код + '1'>> <<else>> <<set $линия = $линия + ' '>> <<set $код = $код + '0'>> <<endif>> <<random $объект = 8>> <<if $объект eq 0>> <<set $линия = $линия + $словосписок [5]>> <<set $код = $код + '1'>> <<else>> <<set $линия = $линия + ' '>> <<set $код = $код + '0'>> <<endif>> <<random $объект = 8>> <<if $объект eq 0>> <<set $линия = $линия + $словосписок [6]>> <<set $код = $код + '1'>> <<else>> <<set $линия = $линия + ' '>> <<set $код = $код + '0'>> <<endif>> <<random $объект = 8>> <<if $объект eq 0>> <<set $линия = $линия + $словосписок [7]>> <<set $код = $код + '1'>> <<else>> <<set $линия = $линия + ' '>> <<set $код = $код + '0'>> <<endif>> <<random $объект = 8>> <<if $объект eq 0>> <<set $линия = $линия + '*'>> <<set $код = $код + '1'>> <<else>> <<set $линия = $линия + ' '>> <<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 = ' '>> <<endif>> <<random $объект = 9>> <<if $объект eq 0>> <<set $н2 = '•'>> <<elseif $объект eq 1>> <<set $н2 = '.'>> <<else>> <<set $н2 = ' '>> <<endif>> <<random $объект = 9>> <<if $объект eq 0>> <<set $н3 = '•'>> <<elseif $объект eq 1>> <<set $н3 = '.'>> <<else>> <<set $н3 = ' '>> <<endif>> :: Влево <<if $положение>1>> <<set $положение = $положение-1>> <<endif>> :: Вправо <<if $положение<8>> <<set $положение = $положение+1>> <<endif>> :: Вывод # положения звездолёта <<set $линия_звездолёта = ' '>> <<if $положение eq 1>> <<set $линия_звездолёта = '▲ '>> <<elseif $положение eq 2>> <<set $линия_звездолёта = ' ▲ '>> <<elseif $положение eq 3>> <<set $линия_звездолёта = ' ▲ '>> <<elseif $положение eq 4>> <<set $линия_звездолёта = ' ▲ '>> <<elseif $положение eq 5>> <<set $линия_звездолёта = ' ▲ '>> <<elseif $положение eq 6>> <<set $линия_звездолёта = ' ▲ '>> <<elseif $положение eq 7>> <<set $линия_звездолёта = ' ▲ '>> <<elseif $положение eq 8>> <<set $линия_звездолёта = ' ▲'>> <<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 $линия = '==={{{ }}}==='>> <<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>>
Можно ли добиться такого с новым кодом?
Неактивен
Morych, нет. На перемещения не обращай внимание, это просто название ссылки такое. Меня интересует, чтобы я всегда попадала из любой локации в главную, то есть там, где текст основного описания. У тебя так вроде в принцессе было.
Например, я зашла в инвентарь, потом в статус, а потом хочу вернуться в локацию, где изначально была.
Неактивен
Вета, в том примере так и сделано. Суть такова. На каждом параграфе-сцене, где есть описание, ты устанавливаешь значение переменной $loc равным названию параграфа. А ссылка "Главная" ведёт на служебный параграф "Обновить", который очищает экран и показывает параграф-сцену:
:: Обновить
<<clrscr>>
<<display $loc>>
Неактивен
Можно, кстати, использовать системную переменную $$title, которая содержит имя текущего параграфа:
:: Обновить <<clrscr>> <<display $$title>>
Неактивен
DoubleDragon написал:
Можно, кстати, использовать системную переменную $$title, которая содержит имя текущего параграфа:
Код:
:: Обновить <<clrscr>> <<display $$title>>
Это так для обновления текущего параграфа. Но если Вета походит по вкладкам "Статус" и "Перемещения", а потом нажмёт "Главная":
===[[ГЛАВНАЯ|Обновить]] | [[СТАТУС|статус]] | [[ПЕРЕМЕЩЕНИЯ|перемещения]]===
то вновь окажется в обновлённом Статусе или Перемещениях. Поэтому нужно запоминать название параграфа-сцены, где описание.
Неактивен
Да, спасибо
Неактивен
Morych написал:
В редакторе есть кнопочка "Тёмная тема". Наде её нажать.
Тьфу ты чёрт! Век живи - дураком помрешь! Попробовал темную тему - решил, что светлая нравится больше :-) Но всё равно спасибо большое!
Неактивен
В анонсе версии 2.0 прочел о возможности конвертации в ePub. Отсюда вопрос - какие требования к квесту предъявляются, чтобы его можно было конвертировать в данный формат? Только картинки и гиперссылки? Условия и объекты уже нельзя?
Неактивен
Korwin написал:
В анонсе версии 2.0 прочел о возможности конвертации в ePub. Отсюда вопрос - какие требования к квесту предъявляются, чтобы его можно было конвертировать в данный формат? Только картинки и гиперссылки? Условия и объекты уже нельзя?
Насколько я знаю, будут разрешены макросы «display» и «br». Больше ничего нельзя, только текст, картинки и ссылки.
Неактивен
Здравствуйте. Хотел поинтересоваться макросом random. Цель-добиться свободного перемещения по квартире, но при первом посещении комнат, обстановка в них должна забиваться рандомно, и вроде бы одного макроса random хватает, но проблема вот в чем. При возвращении на предыдущий экран, и очередном входе в уже зарандомированную комнату, обстановка вновь рандомится. Можно ли было сделать так, чтобы обстановка рандомировалась единожды и сохраняла своё положение без лишней сети сцен?
Неактивен
NekronMono
Вариант А.
Сделать генерацию новой комнаты раньше, чем в неё вошёл. Например в стартовом параграфе.
Вариант Б.
Сделать по условию, при первом посещении.
: Старт
<<set $посещение = 0>>
: Комната
<<if $посещение eq 0>>
<<random $Генерация = 9>>
<<set $посещение = 1>>
#Задаём стартовую обстановку
<<endif>>
#Текст параграфа
Неактивен
NekronMono написал:
При возвращении на предыдущий экран... обстановка вновь рандомится.
Если речь идёт о кнопке "Отменить" в левом верхнем углу экрана (и макросе «back»), то избежать перегенерации комнаты можно, только воспользовавшись вариантом А от Ergistal-а. Вариант Б поможет при обычном повторном переходе в комнату, но от кнопки "Отменить" не спасёт.
Неактивен
Спасибо большое.
Есть еще такой вопрос.
У нас есть деревня разбитая на координаты. Количество домов в каждой клеточке рандомируются во время старта вместе с генерированием вариантов домов (то есть у меня написано 10 вариантов обустройства дома, персонажи и события в нем, программа рандомно выбирает какой из вариантов выбрать). Но нужно добиться такого результата, чтобы при повторении варианта, переменные не смешивались и не сбивались, то есть если я разбил окно в доме номер 1, то в доме номер 8 (где у меня попался такой же вариант развития событий) окно стояла на месте, но у первого окно оставалось разбитым. Неужели придётся каждой координате, дому и варианту писать одинаковые скрипты, только с разными переменными?
Неактивен
http://sm.axmasoft.com/ru/help.html
В руководстве пользователя Вам помогут в подразделе "Для опытных авторов"
* Циклы (многократное исполнение набора команд)
* Списки (одномерные массивы)
Вам придётся параметры с помощью цикла загонять в список, потом извлекать оттуда с помощью цикла.
А обработку команд (создание случайного расположения, отображение комнаты и.т.д) достаточно написать один раз, и вызывать её командой "display".
Пример не напишу, он довольно громоздкий получится, а времени сейчас нет.
Неактивен
Большое спасибо.
Может кто нибудь подсобить примером?
Хорошим примером работы со списками хотя бы, я не совсем отчетливо понял, что это такое.
Неактивен
NekronMono написал:
Спасибо большое.
Есть еще такой вопрос.
У нас есть деревня разбитая на координаты. Количество домов в каждой клеточке рандомируются во время старта вместе с генерированием вариантов домов (то есть у меня написано 10 вариантов обустройства дома, персонажи и события в нем, программа рандомно выбирает какой из вариантов выбрать). Но нужно добиться такого результата, чтобы при повторении варианта, переменные не смешивались и не сбивались, то есть если я разбил окно в доме номер 1, то в доме номер 8 (где у меня попался такой же вариант развития событий) окно стояла на месте, но у первого окно оставалось разбитым. Неужели придётся каждой координате, дому и варианту писать одинаковые скрипты, только с разными переменными?
Одинаковые скрипты точно писать не надо. Попробуем разобраться. Ergistal правильно подсказал насчёт списков и циклов. Все свойства дома можно поместить в списки. Например список, который отвечает за состояние окна во всех домах:
<<set $window = [true, true, true]>>
Пусть у нас есть три дома, а true означает, что окно целое. Теперь разбиваем окно в первом доме:
<<set $window[0] = false>>
Индекс первого дома = 0. И разобьем окно в третьем доме:
<<set $window[2] = false>>
Теперь можно задать другой список с другим свойством. Цвет стен, например:
<<set $color = ["синие", "чёрные", "красные"]>>
Теперь нам надо знать в который по счёту дом мы зашли. Индекс дома занесём в переменную $n, тогда для любого дома:
:: Дома Вы зашли в дом номер <<print $n>>. У этого дома <<print $color[$n]>> стены. Окно <<if $window[$n]>>целёхонько<<else>>разбито<<endif>>.
А переходы в разные дома могут выглядеть так:
[[Идти в первый дом|Дома {$n = 0}]] [[Идти во второй дом|Дома {$n = 1}]] [[Идти в третий дом|Дома {$n = 2}]]
Неактивен
Если вопросы были отвечены, я спрошу еще раз, уж простите)
1. Я хочу, что бы игрок нашел предмет, но он мог поленится и не зайти. Дальше я делаю проверку с if, т.е есть предмет\нету предмета, но мне выдает ошибку. Уточните как правильно это сделать пжста
2. Я хочу, что бы игрок ввел свое имя с клавиатуры, как мне сделать так, что бы по ходу квесте, нпс к нему обращались и запомнили его имя
Отредактировано Nabusan (08.07.2013 19:01)
Неактивен
Nabusan написал:
Если вопросы были отвечены, я спрошу еще раз, уж простите)
1. Я хочу, что бы игрок нашел предмет, но он мог поленится и не зайти. Дальше я делаю проверку с if, т.е есть предмет\нету предмета, но мне выдает ошибку. Уточните как правильно это сделать пжста
2. Я хочу, что бы игрок ввел свое имя с клавиатуры, как мне сделать так, что бы по ходу квесте, нпс к нему обращались и запомнили его имя
1. В начале игры пишем <<set $predmet = 0>> это будет означать, что предмета у гг нет. Там, где он его находит, пишем <<set $predmet = 1>> Тогда проверка наличия предмета:
<<if $predmet>> Предмет есть. <<else>> Нет предмета. <<endif>>
2. Например:
:: ВводИмени Как звать-то тебя, дружище? <<input 'Нпц' $name>> :: Нпц Ну привет, <<print $name>>!
А вообще советую посмотреть учебник в блоге "Гиперкниги", там про все это подробно писано. Например, в этой главе кроме всего прочего говорится, что делать, если игрок вздумает ввести имя капсом.
Неактивен
Но вот ситуация:
в окне, герою нужно щелкнуть на обыск, не нажал-не нашел.
А у меня почему то все равно находит
Осталось послднее - Ваш Класс Хотя, человечеческие закрома полны сюрпризов [[+Обыскать закрома|Меч {$Меч=1}]] <<set $Меч = 1>> [[-Воин|Воин]] [[-Маг|Маг]] [[-Вор|Вор]]
Неактивен
Nabusan написал:
Но вот ситуация:
в окне, герою нужно щелкнуть на обыск, не нажал-не нашел.
А у меня почему то все равно находит
Осталось послднее - Ваш Класс Хотя, человечеческие закрома полны сюрпризов [[+Обыскать закрома|Меч {$Меч=1}]] <<set $Меч = 1>> <--- так вот поэтому и находит :) [[-Воин|Воин]] [[-Маг|Маг]] [[-Вор|Вор]]
При построении страницы весь код параграфа выполняется последовательно и до конца. Т.е. когда вы видите на экране текст со ссылками, объект $меч уже равен 1. А вот присваивание значений в ссылках (в фигурных скобках) выполняется только при нажатии на ссылку.
Неактивен
Приветствую, уважаемые!! Я новичок.
Пытаюсь сделать на платформе AXMA Story Maker интерактивный тренинг.
В тренинге есть задания, на которые пользователь может ответить письменно прямо в тексте, онлайн.
Подскажите как сделать, чтобы текст, который вводит пользователь сохранялся. И как реализовать возможность распечатки сохраненных пользователем результатов, отправки на e-mail
Неактивен
plusova написал:
Приветствую, уважаемые!! Я новичок.
Пытаюсь сделать на платформе AXMA Story Maker интерактивный тренинг.
В тренинге есть задания, на которые пользователь может ответить письменно прямо в тексте, онлайн.
Подскажите как сделать, чтобы текст, который вводит пользователь сохранялся. И как реализовать возможность распечатки сохраненных пользователем результатов, отправки на e-mail
Добро пожаловать в сообщество Аксмавторов!
Значения всех объектов (в том числе и те, которые вводит пользователь) сохраняются при нажатии кнопки "Сохранить состояние" в Меню.
Распечатку можно реализовать средствами браузера, в котором будет проигрываться тренинг. Если вы будете использовать "Хром", то там, знаю, можно
распечатать в pdf-файл. А вот автоматическую отправку на почту, боюсь, реализовать невозможно. Если только кто-нибудь не подскажет нестандартное решение.
Неактивен
Morych, спасибочки за скорый ответ.
Morych написал:
Значения всех объектов (в том числе и те, которые вводит пользователь) сохраняются при нажатии кнопки "Сохранить состояние" в Меню.
нажатие кнописьки это понятно. Вопрос: как бы сделать ссылку на эту кнопиську сразу под окошком ввода? и
чтобы текст при этом сразу же на странице просмотра отражался?
Неактивен
Нажатие, извините, чего?
Ссылку под окошком ввода никак не сделаешь, она всегда в определённом месте. Можно только сообщить пользователю про такую возможность. Вообще я говорю про сохранение значений между сеансами. Т.е. сохранение значений после закрытия браузера. А текущие значения объектов и так хранятся в памяти, их можно показывать макросом «print».
Неактивен
Morych написал:
Возможно, если вы более подробно расскажете про задачу, мне удастся помочь примером кода.
Есть описание задания данное автором.
Под ним окошко для ввода текста пользователем.
Задача 1: чтобы введенный пользователем текст сразу отображался на этой же странице и был виден пользователю (в принципе вы это объяснили, но я пока не разобралась как объект создать).
Задача 2: чтобы у меня была возможность посмотреть что написал пользователь
Неактивен
plusova написал:
Есть описание задания данное автором.
Под ним окошко для ввода текста пользователем.
Задача 1: чтобы введенный пользователем текст сразу отображался на этой же странице и был виден пользователю (в принципе вы это объяснили, но я пока не разобралась как объект создать).
Задача 2: чтобы у меня была возможность посмотреть что написал пользователь
Создать объект можно при помощи макроса «set». Пример задачи 1:
:: Start (<-- это название параграфа) # Создаем объект «$ответ», изначально его значение равно пустой строке <<set $ответ = "">> [[Приступить к выполнению задания|Задание]] :: Задание Описание задания. <<if $ответ eq "">> # Если ответа ещё не было, показываем текстовое поле ввода Введите ваш ответ: <<input "Задание" $ответ>> <<else>> # Иначе показываем ответ пользователя Ваш ответ: <<print $ответ>> <<endif>>
По поводу задачи 2, вы сможете посмотреть, что написал пользователь, только если будете сидеть рядом с пользователем и смотреть на его монитор. Наверно, вы хотели отправлять лог работы пользователя себе на e-mail? Если такая фича и будет реализована, не думаю, что это произойдёт скоро.
Неактивен
Спасибо за пример. Разобралась наконец с объектами.
С параграфом не очень удобно. он добавляет текст внизу страницы, а надо в месте вставки. или я что-то не так делаю.
и почему-то ответ пользователя так и не отображается.
Morych написал:
По поводу задачи 2, вы сможете посмотреть, что написал пользователь, только если будете сидеть рядом с пользователем и смотреть на его монитор. Наверно, вы хотели отправлять лог работы пользователя себе на e-mail? Если такая фича и будет реализована, не думаю, что это произойдёт скоро.
Задачу два Вы перевели совершенно верно, жаль что так.
Неактивен
Как вариант малой автоматизации:
поздравляем вы выполнили задание!
Скопируйте текст с этой страницы и отправьте на ящик Sobaka@jambux.ru
Неактивен
plusova написал:
С параграфом не очень удобно. он добавляет текст внизу страницы, а надо в месте вставки. или я что-то не так делаю.
и почему-то ответ пользователя так и не отображается.
А дайте посмотреть код вашей истории. Если не хотите светить текст заданий, можно в личку или замените всю секретную инфу.
Неактивен
Morych написал:
А дайте посмотреть код вашей истории. Если не хотите светить текст заданий, можно в личку или замените всю секретную инфу.
Да ничего секретного. Все равно планируют бесплатно в общий доступ выложить. Пока у меня с разметкой мозг в кучку сбивается и на историю "это" мало похоже.
Показать по сути нечего, похоже на обычный pdf файл . Еж ли есть у Вас такая возможность запишите, пожалуйста (пожалуйста, пожалуйста, пожалуйста), толковый видео урок "для начинающих" по использованию макросов. Желательно с пошаговыми демо примерами типа: делаешь это (код) - получаешь это (пример в интерактивной книжке). Буду крайне признательна, и есть подозрение что не только я. Видео с экрана можно записать программой jing или camtasia
Отредактировано plusova (11.07.2013 00:44)
Неактивен
Morych написал:
А дайте посмотреть код вашей истории. .
Есть два варианта, первый не подошел, т.к. текст пользователя выводится на новой странице
Вар 1
:: Start <<set $ответ = "">> Здравствуй, дорогой друг! Не пора ли нам потренироваться? [[+Приступить к заданию|Задание {$ответ=""}]] :: Задание Описание задания. <<if $ответ eq "">> # Если ответа ещё не было, показываем текстовое поле ввода Введите ваш ответ: <<input "Задание" $ответ>> <<else>> # Иначе показываем ответ пользователя Ваш ответ: <<print $ответ>> <<endif>>
В этом варианте на странице отображается задание и строка ввода, а ответ пользователя открывается на новой странице. Нужно чтобы ответ отображался здесь же.
Вар 2.
Бог с ней со стартовой страницей, попробуем все сделать на странице задания. И оооо... эврика, работает как надо.
::Start <<set $ответ = "">> <<set $ответ2 = "">> <<set $ответ3 = "">> :: День 1 Здравствуй, дорогой друг! начнем выполнение упражнения! 1. первый замечательный вопрос? <<if $ответ eq "">> # Если ответа ещё не было, показываем текстовое поле ввода Введите ваш ответ: <<input "день 1" $ответ>> <<else>> # Иначе показываем ответ пользователя Ваш ответ: <<print $ответ>> <<endif>> 2. второй замечательный вопрос? <<if $ответ2 eq "">> # Если ответа ещё не было, показываем текстовое поле ввода Введите ваш ответ: <<input "день 1" $ответ2>> <<else>> # Иначе показываем ответ пользователя Ваш ответ: <<print $ответ2>> <<endif>> 3. третий замечательный вопрос? <<if $ответ3 eq "">> # Если ответа ещё не было, показываем текстовое поле ввода Введите ваш ответ: <<input "день 1" $ответ3>> <<else>> # Иначе показываем ответ пользователя Ваш ответ: <<print $ответ3>> <<endif>>
Теперь все работает. А что все
<<set $ответ = "">>
надо на стартовой странице вводить? Почему-то когда сеты вводила прямо в параграфе "День 1" ответы пользователя вообще неотображались
_________________________________________
Отредактировано plusova (11.07.2013 02:57)
Неактивен
Да. Они не отображались, ибо каждый раз выполнялся код
<<set $ответ = "">> <<set $ответ2 = "">> <<set $ответ3 = "">>
и введенный ответ "затирался". Но
<<set $ответ = "">> <<set $ответ2 = "">> <<set $ответ3 = "">>
в параграфе Start можно и не задавать, а изменить условия
<<if $ответ eq "">> <<if $ответ2 eq "">> <<if $ответ3 eq "">>
на
<<if !($ответ)>> <<if !($ответ2)>> <<if !($ответ3)>>
! используются для проверки объекта на существование.
Неактивен
Flash написал:
в параграфе Start можно и не задавать, а изменить условия.
Здравствуйте, Flash!
Если я не правильно поняла, то поправьте меня: set можно вообще не задавать?
И поясните где изменить условия: в Start или в параграфе "День1"?
Спасибо за интересный ответ.
Неактивен
Пока вы не зададите set или не присвоите переменным $ответ..$ответ3 значения каким-нибудь другим способом (через фигурные скобки в ссылке или макросом input) значения этих переменных буду равны undefined (не определённое значение).
Имелось ввиду, что можно сделать так:
:: Start [[День 1]] :: День 1 Здравствуй, дорогой друг! начнем выполнение упражнения! 1. первый замечательный вопрос? <<if !($ответ)>> Введите ваш ответ: <<input "день 1" $ответ>> <<else>> Ваш ответ: <<print $ответ>> <<endif>> 2. второй замечательный вопрос? <<if !($ответ2)>> Введите ваш ответ: <<input "день 1" $ответ2>> <<else>> Ваш ответ: <<print $ответ2>> <<endif>> 3. третий замечательный вопрос? <<if !($ответ3)>> Введите ваш ответ: <<input "день 1" $ответ3>> <<else>> Ваш ответ: <<print $ответ3>> <<endif>>
Т.е. в параграфе Start ничего не задаём, никаких set, там только ссылка на параграф День 1. А условия меняем в параграфе День 1 (условия — это if). Может вам будет удобней использовать вместо восклицательного знака в условии оператор not:
<<if !($ответ3)>> то же самое что и <<if not $ответ3>>
Неактивен
Что же касается видеоуроков, то их делает Илья Богомолов, ссылки есть в соседней теме.
Также на сайте «Гиперкниги» есть специальный раздел помощи для авторов.
Неактивен
Гайз, простите блондинковопрос, но я сейчас свихнусь. Что-то нажала, и пропала визуализация ссылок (белые стрелочки). Сейчас отображаются только ссылки, ведущие из активного параграфа (желтые стрелочки). Как вернуть белые стрелочки?
Неактивен
Alina написал:
Гайз, простите блондинковопрос, но я сейчас свихнусь. Что-то нажала, и пропала визуализация ссылок (белые стрелочки). Сейчас отображаются только ссылки, ведущие из активного параграфа (желтые стрелочки). Как вернуть белые стрелочки?
Смею предположить, вы только что создали сто первый параграф. Именно при таком числе параграфов (более сотни) визуализация стрелок-связей автоматически отключается. Но, возможно, разработчик пофиксит эту фичу в следующей версии программы.
Неактивен
Вопрос. Если я ставлю
<<random $вызов = 2>>
У меня могут появиться числа 1 и 2 или 0, 1 и 2?
Отредактировано Вета (18.07.2013 20:57)
Неактивен
0,1,2.
Неактивен
Есть такая конструкция:
#инвентарь
<<display 'Вкладки'>>
__''НА СЕБЕ:''__
Шелковое розовое платье -> [[-Снять|платье]]
Туфельки -> [[-Снять|туфли]]
------------------
#платье
<<clrscr>>
<<display 'инвентарь'>>
//описание1//
------------------
#туфли
<<clrscr>>
<<display 'Инвентарь'>>
//описание2//
-------------------
#вкладки
<<if $$title.toLowerCase() eq 'заметки'>>
===^^[[Сцена|Обновить]] | Заметки | [[Инвентарь|Инвентарь]]^^===
<<elseif $$title.toLowerCase() eq 'инвентарь'>>
===^^[[Сцена|Обновить]] | [[Заметки|Заметки]] | Инвентарь^^===
<<else>>
<<if $$title.toLowerCase() neq 'обновить'>>
<<set $passage = $$title>>
<<endif>>
===^^Сцена | [[Заметки|Заметки]] | [[Инвентарь|Инвентарь]]^^===
<<endif>>
-----------------------
Что собственно получается.
Когда нажимаю на "снять платье" , внизу появляется описание1, когда нажимаю на "снять туфли", описание1 пропадает, появляется описание2, то есть текст меняется в зависимости от использования предметов в инвентаре, а не нагромождается вниз. Это и было нужно. Но теперь, при переходе на Сцену (во вкладках) почему - то отображается текст инвентаря, а не сцены. Причем, он почему-то сразу мне перескакивает на сцену, когда нажимаю "снять". Где я не права?
Отредактировано Вета (30.07.2013 19:03)
Неактивен
Еще вопрос - есть ли в аксме зачеркнутый текст?
Неактивен
Вета написал:
Еще вопрос - есть ли в аксме зачеркнутый текст?
Пока нет. Будет в 2.0.
Неактивен
А что делать по предыдущему вопросу? Игра стоит, а срок идет (
Кажется, смогла сделать.
Но появился еще вопрос: как сделать условие на наименование локации, типа:
Если локация = дом, то ......
Причем, это надо сделать так:
сцена(тайтл) у нас=комната, если переключаться по вкладкам комната-инвентарь.
#инвентарь
<<display 'Вкладки'>>
__''НА СЕБЕ:''__
Шелковое розовое платье -> [[*Снять|платье]]
Туфельки -> [[*Снять|туфли]]
#платье
вот тут условие: если тайтл=комната, то ....
иначе....
===
Не работает.
Отредактировано Вета (30.07.2013 21:21)
Неактивен
Сорри. Сейчас на даче в экстремальных условиях
Смогу посмотреть не ранее, чем через несколько дней.
Неактивен
Вета написал:
как сделать условие на наименование локации ... если тайтл=комната, то
$$title — системная переменная, в которой хранится название текущего параграфа. А игровая локация или сцена может состоять из нескольких параграфов, и наоборот, в один параграф можно запихнуть несколько локаций. Поэтому лучшим решением будет завести дополнительную переменную, в которой будет храниться название именно локации, сцены. Тут уж ты сможешь единолично контролировать изменение значения этой переменной. Т.е. в нужном месте сделаешь <<set $curloc = "комната">> и все условия будут работать.
В твоём примере подозреваю, что $$title всегда равно "инвентарь". Можно это проверить макросом print или в консоли.
Неактивен
Ага, спасибо, Морыч, так получается. Локация, действительно, инвентарь. Просто я знаю, как в том же куспе это сделать и пытаюсь подстроиться по аналогии, но не выходит Жаль, что в аксме нет резкого goto, чтобы сразу уходил на другой параграф, иногда бы пригодилось. Ну и всплывающие подменю в ссылках, конечно. Хотя, может, с помощью явы скрипта их и можно как-то реализовать.
Неактивен
Вета написал:
Жаль, что в аксме нет резкого goto, чтобы сразу уходил на другой параграф, иногда бы пригодилось.
А как же последовательность макросов:
<<clrscr>>
<<display 'GoToLocation'>>
Единственное, тут уже будут нюансы с переменной $$title (она не поменяется) и с кнопкой "Отмена" (соответственно и с макросами back и return). Просто физически мы остаёмся на том же параграфе. А можно пример, для чего нужен оператор goto?
Ну и всплывающие подменю в ссылках, конечно. Хотя, может, с помощью явы скрипта их и можно как-то реализовать.
Меню по ссылке, как в куспе, конечно, пока нет, но можно сделать аналог. Задача какая? Я нажимаю ссылку и появляются несколько дополнительных действий. Верно? Попробуй как-то так:
:: локация Вы в своей комнате. Тут есть [[*окно|меню {$объект = "окно"}]]. :: меню <<if $объект eq "окно">> ---- [[посмотреть в окно]] [[открыть окно]] [[выпрыгнуть из окна]] <<endif>>
Неактивен
Пример для goto-например, в том же драконьем кодексе. В локации логово у меня существовала проверка номера дня. Когда наступал пятый день, там стояло goto 'праздник' и персонажа сразу перекидывало в другую локацию. А так приходилось делать дополнительное условие и дополнительную ссылку-перехода "Идти на праздник" + снова выводилось описание логова.
А подменю удобно тем, что меньше загромождает экран кучей ссылок и при смене предмета, вообще убирается без последствий.
Неактивен
Так можешь попробовать в "Кодексе" сделать внутри условия вместо ссылки очистку экрана и следом display 'праздник'. Или в параграфе "праздник" первой строкой поставь очистку экрана.
Насчёт подменю, оно будет меняться при выборе разных предметов (при наличии у предметов каких-то действий). А убирать без последствий его можно при выборе того же самого предмета второй раз подряд: нажал предмет — появились действия, нажал ещё раз — исчезли. И экран не загромождается. Для этого просто надо будет запоминать последний выбранный предмет.
Неактивен
Помогите сделать боевую систему... думал сделать что-то типа поставить на рандом объект сила и если у персонажа есть меч он увеличает урон, а броня снижает получаемый урон, плюс удача, которая позволяет увернуться от удара, мастерство отбить и прочее. Вот только все это реализовать не получается я в АСМе ньюби:(
Неактивен
WeLLWar написал:
Помогите сделать боевую систему... думал сделать что-то типа поставить на рандом объект сила и если у персонажа есть меч он увеличает урон, а броня снижает получаемый урон, плюс удача, которая позволяет увернуться от удара, мастерство отбить и прочее. Вот только все это реализовать не получается я в АСМе ньюби:(
Попробую набросать пример поединка по предложенному техзаданию.
Неактивен
В какой-то игре я наблюдал, как прозвучал одиночный звук, и тут же прекратился, не стал играть в цикле (параграф не менялся при этом). Как такого можно добиться? С помощью $$time задавать <<noaudio>> в какой-то момент, или ещё как?
Неактивен
Можно попробовать <<noaudio>> запихнуть в параграф, который вызывать по <<repeat>>. И после остановки звука останавливать повтор этого параграфа по <<stop>>. Но проблема, по-правде в том, что неизвестно, когда читателю загрузится аудиофайл из инета - скорости-то у всех разные
Неактивен
Можно ещё просто делать аудиофайл с длинной тишиной в конце, а при переходе на другой параграф делать <<noaudio>>. Тишина не должна сильно влиять на размер файла.
Неактивен
А вот и боевая система "Арена"! http://hyperbook.ru/file13764029087384
Неактивен
А DD как всегда меня опередил
Ну в общем да. Там боевая система «Арена», а обсуждения боевых систем предлагаю перенести в эту тему.
Неактивен
Подскажите, пожалуйста, как сделать следующее:
Есть Параграф1, в котором сначала пару секунд должен выводиться прогресс бар в виде добавляющихся точек (......), после чего выводится Параграф2.
Заранее премного благодарю!
Неактивен
:: тест1 <<set $takt = 0>> <<repeat 'Повтор' 1>> :: Повтор .<<set $takt = $takt + 1>><<if $takt eq 5>><<stop 'Повтор'>><<br>>Конец отсчёта<<endif>>
Вот такой код из двух параграфов. В параграфе Повтор важно написать весь код в одну строку без единого пробела между командами, для того чтобы точки выводились в линию, а не перескакивали каждая на следующую строчку.
Параграф Тест1
<<set $takt = 0>>
Здесь задаём счётчик такт.
<<repeat 'Повтор' 1>>
Включаем повторение, с задержкой в 1 секунду.
Параграф Повтор
.
Выводим точку
<<set $takt = $takt + 1>>
Увеличиваем значение счётчика на единицу.
<<if $takt eq 5>>
Проверяем число повторений, в данном случае выводится 5 точек, за 5 секунд реального времени.
<<stop 'Повтор'>><<br>>Конец отсчёта<<endif>>
Если условие соблюдается (5 повторений), тогда повторение останавливается и на новой строке выводится сообщение (или ссылка).
Отредактировано Ergistal (20.08.2013 00:36)
Неактивен
Ergistal, огромное спасибо! Особенно за подробное разъяснение.
А задержка может быть меньше секунды? Скажем, полсекунды?
Уже прочитал в руководстве. Нельзя.
Отредактировано sosiskin (20.08.2013 00:49)
Неактивен
А через Loop сразу попробовал, но там есть очень хитрая загвоздочка в тех-задании. Попробуй.
Неактивен
Ergistal написал:
А через Loop сразу попробовал, но там есть очень хитрая загвоздочка в тех-задании. Попробуй.
У меня вот что получилось:
:: Start [[Test]] :: Test # Начальное значение счётчика <<set $time = 0>> # Запускаем повтор параграфа1 с интервалом 1 сек. <<repeat 'Passage1' 1>> # И сразу же показываем параграф <<display 'Passage1'>> :: Passage1 # Очистка экрана (т.к. параграф по таймеру добавляется к текущему) <<clrscr>> # Увеличиваем счётчик на 1 <<set $time++>> <<if $time eq 6>> # Если параграф1 вызывается 6-й раз (нарисовано уже 5 точек) останавливаем повторение <<stop 'Passage1'>> # И показываем параграф2 <<display 'Passage2'>> <<else>> # Иначе выводим точки в цикле. Который раз вызывается параграф1, столько и точек Loading<<loop $time>>.<<endloop>> <<endif>> :: Passage2 Hello world!
Неактивен
Morych
Да, отлично вышло обошёл загвоздку с задержкой! но для этого пришлось лишний repeat прицеплять. Зато у меня короче код вышел
Отредактировано Ergistal (20.08.2013 11:04)
Неактивен
Как можно в ссылке сделать переход на переменную?
<<if $сутки eq 1>>
__===''День [[(сменить)| {$сутки=2}$curloc]]''===__
<<else>>
__===''Ночь [[(сменить)| {$сутки=1}$curloc]]''=== __
<<endif>>
$curloc - переменная наименования локации задана в каждой локации.
напр.
#горы
<<set $curloc = 'горы'>>
-----------------------------
#лес
<<set $curloc = 'лес'>>
Отредактировано Вета (20.08.2013 14:57)
Неактивен
Вета написал:
Как можно в ссылке сделать переход на переменную?
<<if $сутки eq 1>>
__===''День [[(сменить)| {$сутки=2}$curloc]]''===__
<<else>>
__===''Ночь [[(сменить)| {$сутки=1}$curloc]]''=== __
<<endif>>
$curloc - переменная наименования локации задана в каждой локации.
напр.
#горы
<<set $curloc = 'горы'>>
-----------------------------
#лес
<<set $curloc = 'лес'>>
Я давно мечтаю про такую фичу))
Сейчас можно сделать таким образом:
:: горы <<set $curloc = 'горы'>> ===''Ночь [[(сменить)|Переход {$сутки=1}]]''=== :: Переход <<clrscr>> <<display $curloc>>
Неактивен
Morych написал:
Вета написал:
Как можно в ссылке сделать переход на переменную?
<<if $сутки eq 1>>
__===''День [[(сменить)| {$сутки=2}$curloc]]''===__
<<else>>
__===''Ночь [[(сменить)| {$сутки=1}$curloc]]''=== __
<<endif>>
$curloc - переменная наименования локации задана в каждой локации.
напр.
#горы
<<set $curloc = 'горы'>>
-----------------------------
#лес
<<set $curloc = 'лес'>>Я давно мечтаю про такую фичу))
Сейчас можно сделать таким образом:Код:
:: горы <<set $curloc = 'горы'>> ===''Ночь [[(сменить)|Переход {$сутки=1}]]''=== :: Переход <<clrscr>> <<display $curloc>>
Боюсь, как бы у меня остальное не нарушилось... Там же вкладки... Давай пилить Драгона, пусть сделает эту фичу.
К тому же мне надо сменить на день... И там еще с числами будет завязано потом...
ЗЫ: попробовала, не получается, как нужно
Отредактировано Вета (20.08.2013 15:55)
Неактивен
А вообще такая фича планируется?
А то у меня внезапно игра на КРИЛ на Аксме без нее перекочует на кусп, ибо альтернативной замены я не вижу, чтобы не порушилась конструкция геймплея.
ЗЫ: В версии 2.0 вроде планируется, да?
Отредактировано Вета (20.08.2013 16:35)
Неактивен
Вета написал:
А вообще такая фича планируется?
А то у меня внезапно игра на КРИЛ на Аксме без нее перекочует на кусп, ибо альтернативной замены я не вижу, чтобы не порушилась конструкция геймплея.
Итак, Вета пустила в ход мягкий шантаж, что же будет дальше?
Если не опасаешься, что я похищу твою идею для КРИЛа, можешь мне куда-нибудь в личку полный код игры показать. Так, по кусочку трудно сказать, где баг.
Неактивен
Написала
ЗЫ: Никакого шантажа, констатация факта в связи с невозможностью реализации )))
Неактивен
Возможно всё
Но только если мне вменяемо скажут, что надо сделать, а то сейчас и так голова пухнет
PS. И в тему предложений, пожалуйста.
Неактивен
Морыч, ты можешь это для Драгона правильно сформулировать?
Неактивен
Вета написал:
Морыч, ты можешь это для Драгона правильно сформулировать?
Попробовал сформулировать здесь. Посмотри и дополни при необходимости, а то ведь я написал, чего мне хочется. Вдруг, ты другое имела ввиду
Неактивен
Cheshire написал:
А можно как-нибудь отключить затухание/проявление текста при переходе? В определённых условиях очень мешает это «мигание».
Я у себя использую такую хитрость, как переход по добавляющей ссылке (с плюсом) и очистку экрана. При этом обязательно нужно передавать в ссылке параметр. Например:
:: Passage1 <<clrscr>> ===Text 1=== [[+Go to 2|Passage2 {$a = $a}]] :: Passage2 <<clrscr>> ===Text 2=== [[+Go to 1|Passage1 {$a = $a}]]
Неактивен
Просто изначально стоял запрет на вызов параграфа из самого себя. А указание параметра это обходит.
Неактивен
arudzo написал:
Ребята подскажите как сделать раскрывыющеюся ссылку? Урок данный на этом форуме прочёл, сделал как там написано (наверное?) но ничего не получается! Может кто нибудь покажет код готовой ссылки для ознакомления? Спасибо!
Параграф с такой ссылкой выглядит следующим образом:
:: НазваниеПараграфа <<clrscr>> [[+Название ссылки|НазваниеПараграфа {$признак1 = !$признак1}]]<<if $признак1>> ▼<<br>>Содержимое, которое появляется или прячется при нажатии на ссылку. Может быть не только текст, но и картинки.<<else>> ►<<endif>>
А в параграфе «Start» обязательно нужно указать изначальное значение признака:
<<set $признак1 = false>>
Неактивен
romz написал:
как вставить активную ссылку (url), чтобы при клике переходило на указанный сайт
[[текст ссылки|https://forum.ifiction.ru]]
так должно работать
Неактивен
подскажите пожалуйста, возможно ли как-то сделать генерацию футбольного матча и результаты конкретного игрока если он главный персонаж... типа наподобие PRO Soccer Стань Легендой
Неактивен
Max написал:
подскажите пожалуйста, возможно ли как-то сделать генерацию футбольного матча и результаты конкретного игрока если он главный персонаж... типа наподобие PRO Soccer Стань Легендой
Честно даже не понимаю, зачем это надо.. причем в текстовой реализации...
Так-то можно сделать все. Главное придумать алгоритм. Графическое отображение естественно будет отсутствовать, скорее всего только словесное сопровождение, где будут рандомно выдаваться события.
А результаты конкретного игрока... да тоже, почему нет.
Редко когда бывает, что что-то сделать нельзя) тут скорее вопрос возникает "Зачем" и "Кому это надо".
Неактивен
Fahrengeit, ну если Max запостил тут вопрос, значит ему надо
Max, я увы не играл в "PRO Soccer Стань Легендой", но, например, можно так: команды некоторое число раз бегают то к одним воротам, то к другим - используем цикл со случайным числом повторений. А внутри цикла при помощи генератора случайных чисел проверяем, удалось ли команде добежать до ворот противника, удалось ли пробить по воротам, и, собственно, был ли гол. Затем то же самое для команды противника. Шанс того или иного события должен зависеть от уровня команды. Чтобы отметить действия отдельного игрока, в атаке проверяем, получил ли герой мяч или сделал голевую передачу и т.п. (опять при помощи рандома). Чтобы описать алгоритм подробней, нужно хорошо разбираться в футболе, а не как я.
Неактивен
Я видимо не правильно задал вопрос)))
я не программист и вообще далекий от этого человек, игры делать не могу, но у меня есть мечта сделать что-то вроде симулятора жизни футболиста, как с профессиональной стороны, так и с описанием личной жизни (попал из простого клуба, например, в Барсу - появилось бало, тратит его, может быть выбор ходить по клубам как Чипсоид ))) или посвящать себя только футболу, как относится к нему пресса, болельщики и .т.п.). Я совершенно случайно наткнулся на AXMA Story Maker, и мне кажется в этой проге возможно хоть как-то реализовать задуманное.
прописать текст представляю как, но вот как генерировать матчи - не знаю...
вижу так -
молодой футболист имеет определенные показатели, генерируется матч (не знаю как учитывать его данные на игру) и потом показывается, забил ли гол, и вообще попал в основной состав... если все ОК - развивается и т.п.
Вопрос: как сделать систему генерации матчей?? предполагаю, что матчи будут генерироваться не все, допустим за месяц - сыграл столько-то, забил столько-то с такими-то командами...
В общем идея есть, а как реализовать пока не представляю(((
Буду признателен если что-нибудь посоветуете.
Неактивен
Max написал:
Я совершенно случайно наткнулся на AXMA Story Maker, и мне кажется в этой проге возможно хоть как-то реализовать задуманное.
Конечно, возможно! Самое главное, представлять, что ты хочешь видеть на экране, а как это сделать — будем разбираться, тем более, если мечта
Я сначала подумал, что ты хочешь получить сгенерированное описание всего матча, а не только его результатов. И, возможно, генерировать весь матч было бы интереснее, особенно, если в процессе матча можно управлять героем: самому вдарить по воротам, отдать пас или прислушаться, что орёт тренер.
Ну а результаты матча в простейшем случае можно сделать так:
<<random $goals1 = 10>> <<random $goals2 = 10>> ===Результат матча=== ===<<print $goals1>> : <<print $goals2>>===
В приведённом примере результат всегда случайный, т.е. никак не зависит от силы команд.
Если у нас есть параметры, которые отвечают за силу команд, можно их использовать, чтобы определить, какая команда победила, и только потом определить счёт.
Допустим параметр "сила команды" может принимать значения от 0 до 10. У команды с силой 0 нет никаких шансов победить команду с силой 10 (можно надеяться только на ничью). У команд с равными силами шансы 50/50.
параграф Матч
<<set $sila1 = 9>> <<set $sila2 = 4>> <<random $goals1 = 5>> <<random $goals2 = 5>> <<random $rnd = 99>> <<if $rnd lt 50 + ($sila1 - $sila2) * 5>> <<set $goals1 = $goals1 + $goals2>> <<else>> <<set $goals2 = $goals2 + $goals1>> <<endif>> ===Результат матча=== ===<<print $goals1>> : <<print $goals2>>=== [[Сыграть ещё раз|Матч]]
В этом примере чаще будет побеждать первая команда, хотя у второй тоже есть шанс и победить, и сыграть вничью. Поизменяй параметры $sila1 и $sila2 и посмотри, как меняются результаты матчей.
Неактивен
Такой вопрос. Вставляю вот этот код диалога (приведен в обучении):
Параграф-диалог
<<display 'Параграф-диалог'>>
<<if $диалог_персонаж eq 1>>
Реплика главного героя.
Реплика второстепенного персонажа.
[[Реплика героя, вариант 1|Параграф-диалог {$диалог_персонаж = 2}]]
[[Реплика героя, вариант 2|Параграф-диалог {$диалог_персонаж = 3}]]
<<elseif $диалог_персонаж eq 2>>
Реплика героя, вариант 1.
Реакция второстепенного персонажа.
[[Закончить разговор|Параграф-сцена {$диалог_персонаж = 4}]]
<<elseif $диалог_персонаж eq 3>>
Реплика героя, вариант 2.
Реакция второстепенного персонажа.
[[Закончить разговор|Параграф-сцена {$диалог_персонаж = 4}]]
<<elseif $диалог_персонаж eq 4>>
Реплика героя.
Второстепенный персонаж напоминает, что уже разговаривали.
[[Закончить разговор|Параграф-сцена]]
<<endif>>
У меня отображается только название диалога - Параграф-диалог и все. Что не правильно делаю?
Неактивен
alfa10 написал:
У меня отображается только название диалога - Параграф-диалог и все. Что не правильно делаю?
Думаю, что не определена переменная $диалог_персонаж. Перед тем как вызывать параграф-диалог нужно задать начальное значение переменной:
<<set $диалог_персонаж = 1>>
А зачем параграф вызывается сам из себя (<<display 'Параграф-диалог'>>)?
Неактивен
Oldrik написал:
О, уже ответили.
А зачем ты удалил свой пример? У тебя ведь там было как раз про то, как сделать показатели гг-футболиста, а у меня в примере только общий счёт.
Неактивен
Morych написал:
alfa10 написал:
У меня отображается только название диалога - Параграф-диалог и все. Что не правильно делаю?
Думаю, что не определена переменная $диалог_персонаж. Перед тем как вызывать параграф-диалог нужно задать начальное значение переменной:
<<set $диалог_персонаж = 1>>
А зачем параграф вызывается сам из себя (<<display 'Параграф-диалог'>>)?
Дык вот это именно пример из обучения. Если присваивать переменную <<set $диалог_персонаж = 1>>, то:
[[Реплика героя, вариант 1|Параграф-диалог {$диалог_персонаж = 2}]]
[[Реплика героя, вариант 2|Параграф-диалог {$диалог_персонаж = 3}]]
уже не срабатывают
Неактивен
Morych написал:
<<set $диалог_персонаж = 1>> нужно написать не в параграфе-диалоге, а в самом начале истории, в параграфе "Start".
Точняк! Все заработало! Спасибо тебе, дружище!
Неактивен
alfa10 написал:
Точняк! Все заработало! Спасибо тебе, дружище!
Обращайся!
alfa10 написал:
Дык вот это именно пример из обучения.
Я вот заглянул в учебник, и там на самом деле <<display 'Заголовок'>>
Неактивен
Morych, код самому не понравился.
Немного переделал:
<<set $gg = [0,0]>> - Где 0 - опыт Главного Героя (ГГ)(например опыт = забитых мячей), 1 - навык.
<<set $com_gg = [0,0]>> - команда ГГ, где 0 - название, 1 - навык.
<<set $match = [0,0,0,0]>> - Где 0 - с кем играли, 1 - сколько пропустили, 2 - сколько забили, 3 - сколько забил ГГ.
<<set $random $a0 = 3>> - выбирается с кем играли.
<<set $match[0] = $a0>>
<<display 'com'>> - тут названия команд и их характеристики. (<<set $com = ['Газмяс',1]>> Название и навык команды).
<<random $a1 = 10>>
<<random $a2 = 10>>
<<if $com[1] gt $com_gg[1]>>
<<set $a1 = $a1 + 1>>
<<elseif $com[1] lt $com_gg[1]>>
<<set $a2 = $a2 + 1>>
<<endif>>
#Какая команда опытнее та и забила один гарантированный гол. Можно сделать шанс на забитие.#
<<random $b = 9>>
<<if $gg[1] gte 3 and $gg[1] lt 6>>
<<set $b = $b + 1>>
<<elseif $gg[1] gte 6 and $gg[1] lt 9>>
<<set $b = $b + 2>>
<<elseif $gg[1] gte 9>>
<<set $b = $b + 3>>
<<endif>>
#Чем больше навык игрока - тем больше его шанс забить гол.#
<<if $b gte 4 and $b lt 6>>
<<set $match[3] = $match[3] + 1>>
Игрок забил один мяч.
<<elseif $b gte 6 and $b lt 9>>
<<set $match[3] = $match[3] + 2>>
Игрок забил два мяча.
<<elseif $b gte 9>>
<<set $match[3] = $match[3] + 3>>
Игрок забил три мяча.
<<endif>>
#Участие игрока в матче#
<<set $a2 = $a2 + $match[3]>> - результат команды игрока.
<<set $gg[0] = $gg[0] + $match[3]>> - прокачка ГГ.
<<if $a1 gt $a2>>
Проиграли.
<<elseif $a1 eq $a2>>
Ничья.
<<else>>
Победа.
<<endif>>
#Результат матча#
Счёт - <<print $a1>> : <<print $a2>>
Отредактировано Oldrik (29.10.2013 13:05)
Неактивен
Ребят, такой вопрос: создаю книгу, вставляю в нею фотки. Потом сохраняю книгу в файл HTML. На другом компьютере запускаю этот сохраненный файл - а фоток нет. Как делать так, чтобы фотографии были в книге, даже если я смотрю файл на другом компьютере? Например, вот напишу я книгу, захочу ее сохранить в файл и отослать друзьям - а фотки получается, пропадут?
Неактивен
alfa10 написал:
Ребят, такой вопрос: создаю книгу, вставляю в нею фотки. Потом сохраняю книгу в файл HTML. На другом компьютере запускаю этот сохраненный файл - а фоток нет. Как делать так, чтобы фотографии были в книге, даже если я смотрю файл на другом компьютере? Например, вот напишу я книгу, захочу ее сохранить в файл и отослать друзьям - а фотки получается, пропадут?
Картинки не встраиваются в html-файл, там только изображения кнопок. Если ты добавляешь картинки пунктом меню "Выбрать локальный файл", они копируются в папку files рядом с sm-файлом. Соответственно отсылай друзьям ещё и папку files вместе с html-файлом. Для пересылки по почте можно всё предварительно упаковать в архив.
Неактивен
Morych написал:
alfa10 написал:
Ребят, такой вопрос: создаю книгу, вставляю в нею фотки. Потом сохраняю книгу в файл HTML. На другом компьютере запускаю этот сохраненный файл - а фоток нет. Как делать так, чтобы фотографии были в книге, даже если я смотрю файл на другом компьютере? Например, вот напишу я книгу, захочу ее сохранить в файл и отослать друзьям - а фотки получается, пропадут?
Картинки не встраиваются в html-файл, там только изображения кнопок. Если ты добавляешь картинки пунктом меню "Выбрать локальный файл", они копируются в папку files рядом с sm-файлом. Соответственно отсылай друзьям ещё и папку files вместе с html-файлом. Для пересылки по почте можно всё предварительно упаковать в архив.
Получается только так? А если публиковать книгу из программы в библиотеку - тогда все нормально пропишется и фотографии останутся?
И еще вопрос - почему то вставляю музыку, а она не играется на странице, хотя значок динамика отображается на странице. Код такого вида вставляю:
[[File: files/Scooter - Fire.mp3]]
Неактивен
alfa10 написал:
Получается только так? А если публиковать книгу из программы в библиотеку - тогда все нормально пропишется и фотографии останутся?
Когда будешь публиковать в библиотеку, редактор закачает все картинки и музыку на сайт, и у всех будет всё отображаться (при условии подключения к Интернету )
alfa10 написал:
И еще вопрос - почему то вставляю музыку, а она не играется на странице, хотя значок динамика отображается на странице. Код такого вида вставляю:
Код:
[[File: files/Scooter - Fire.mp3]]
А какой браузер ты используешь, случайно не Оперу? Для неё нужен звуковой файл с таким же именем, но в формате ogg. Если вставляешь музыку в игру, придётся каждый звуковой файл в двух форматах рядышком класть mp3 и ogg, чтобы у всех проигрывалась музыка независимо от браузера.
Неактивен
Morych написал:
А какой браузер ты используешь, случайно не Оперу? Для неё нужен звуковой файл с таким же именем, но в формате ogg. Если вставляешь музыку в игру, придётся каждый звуковой файл в двух форматах рядышком класть mp3 и ogg, чтобы у всех проигрывалась музыка независимо от браузера.
Firefox.
А музыка будет играть только на одной странице, или пока не закрою в параграфе тег <<noaudio>>?
Неактивен
А музыка будет играть только на одной странице, или пока не закрою в параграфе тег <<noaudio>>?
Во всех параграфах. Пока не встретится тег <<noaudio>>.
P.S. в Firefox нужно использовать ogg формат. Но лучше сделать и mp3 файл, чтобы не зависеть от браузера.
Неактивен
Oldrik написал:
Morych, код самому не понравился.
Немного переделал:
<<set $gg = [0,0]>> - Где 0 - опыт Главного Героя (ГГ)(например опыт = забитых мячей), 1 - навык.
<<set $com_gg = [0,0]>> - команда ГГ, где 0 - название, 1 - навык.
<<set $match = [0,0,0,0]>> - Где 0 - с кем играли, 1 - сколько пропустили, 2 - сколько забили, 3 - сколько забил ГГ.
<<set $random $a0 = 3>> - выбирается с кем играли.
<<set $match[0] = $a0>>
<<display 'com'>> - тут названия команд и их характеристики. (<<set $com = ['Газмяс',1]>> Название и навык команды).
<<random $a1 = 10>>
<<random $a2 = 10>>
<<if $com[1] gt $com_gg[1]>>
<<set $a1 = $a1 + 1>>
<<elseif $com[1] lt $com_gg[1]>>
<<set $a2 = $a2 + 1>>
<<endif>>
#Какая команда опытнее та и забила один гарантированный гол. Можно сделать шанс на забитие.#
<<random $b = 9>>
<<if $gg[1] gte 3 and $gg[1] lt 6>>
<<set $b = $b + 1>>
<<elseif $gg[1] gte 6 and $gg[1] lt 9>>
<<set $b = $b + 2>>
<<elseif $gg[1] gte 9>>
<<set $b = $b + 3>>
<<endif>>
#Чем больше навык игрока - тем больше его шанс забить гол.#
<<if $b gte 4 and $b lt 6>>
<<set $match[3] = $match[3] + 1>>
Игрок забил один мяч.
<<elseif $b gte 6 and $b lt 9>>
<<set $match[3] = $match[3] + 2>>
Игрок забил два мяча.
<<elseif $b gte 9>>
<<set $match[3] = $match[3] + 3>>
Игрок забил три мяча.
<<endif>>
#Участие игрока в матче#
<<set $a2 = $a2 + $match[3]>> - результат команды игрока.
<<set $gg[0] = $gg[0] + $match[3]>> - прокачка ГГ.
<<if $a1 gt $a2>>
Проиграли.
<<elseif $a1 eq $a2>>
Ничья.
<<else>>
Победа.
<<endif>>
#Результат матча#
Счёт - <<print $a1>> : <<print $a2>>
Я долго пытался разобраться в этом.. пробовал и так и так...
мне кажется, что здесь
<<set $random $a0 = 3>> - выбирается с кем играли. ---->>> ошибка
ни как не могу врубиться в следующее:
- что означает объект и рядом с ним []. например - $match[3]
- если возможно для чайника объясните по -шагово... я не понимаю, почему ставятся те или иные числа (((
Неактивен
<<if $диалог eq 1>> <<clrscr>> <<random $rnd = 8>> <<set $маги = 5>> <<set $удача = $удача>> ===Ваш рейтинг удачи равен ''<<print $удача>>''===
Интересует вот эта строка из кода:
<<set $удача = $удача>>
Правильно ли я понимаю, что в этом параграфе текущий параметр удачи берется от предыдущего параметра удачи?
Неактивен
мне кажется, что здесь
<<set $random $a0 = 3>> - выбирается с кем играли. ---->>> ошибка
ни как не могу врубиться в следующее:
- что означает объект и рядом с ним []. например - $match[3]
- если возможно для чайника объясните по -шагово... я не понимаю, почему ставятся те или иные числа (((
Да, разумеется ошибка. Надо было хоть разок глазами пробежать.
<<random $a0 = 3>> - Так правильно.
Неактивен
Flash написал:
alfa10, эта строчка ничего не делает. Переменная приравнивпется сама себе.
а как тогда сделать, чтобы в текущем параграфе переменная брала то значение, которое она имела до этого параграфа? Может так тогда?
<<set $удача1 = $удача>>
Неактивен
Max написал:
что означает объект и рядом с ним []. например - $match[3]
Это означает, что объект $match является списком (одномерным массивом), а $match[3] - это элемент списка с индексом 3. Как верно подметил Flash, можно почитать в руководстве пользователя про списки.
Вообще мне кажется, в примере Oldrik'а можно вполне обойтись без списков, заменив их на простые объекты. Например, вместо $match[3] --> $сколькоЗабилГГ
Неактивен
alfa10 написал:
Flash написал:
alfa10, эта строчка ничего не делает. Переменная приравнивпется сама себе.
а как тогда сделать, чтобы в текущем параграфе переменная брала то значение, которое она имела до этого параграфа? Может так тогда?
Код:
<<set $удача1 = $удача>>
Все переменные глобальные. Т.е. если задать значение переменной на одном параграфе, на всех следующих параграфах переменная сохранит это значение. До тех пор пока ты не перезапустишь игру.
Неактивен
Вопросов у меня много, так что сорри. Я начинающий интерактивовод
Музыка работает если файл 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)
Неактивен
<<set $ясила = 3>>
<<set $врагсила = 6>>
<<set $жизнь = 10>>
<<set $жизнь1 = 5>>
<<random $кубик = 10>>
<<if $кубик gte ($врагсила-$ясила)>>
<<set $жизнь1 = $жизнь1 - 1>>
<<print $я>> - <<print $жизнь>>
<<print $враг>> - <<print $жизнь1>>
<<else>>
<<set $жизнь = $жизнь - 1>>
<<print $я>> - <<print $жизнь>>
<<print $враг>> - <<print $жизнь1>>
<<endif>>
Так должно работать.
Ошибка в <<print $жизнь-1>>. Print служит для вывода значения объекта, а не его изменения.
Неактивен
alfa10 написал:
Теперь вопрос - а как сделать так, чтобы мелодии игрались по-очереди по ходу книги?
Если есть несколько мелодий и нужно, чтобы они игрались друг за другом независимо от параграфа, можно соединить их в один файл. Правда он будет загружаться некоторое, возможно, продолжительное время.
Неактивен
alfa10 написал:
А что означает gte ? Значение "больше"?
gte = Greater Than or Equals - больше либо равно. Лучше используй в макросах if именно такие, буквенные операторы.
alfa10 написал:
Как можно сделать так, чтобы при значении параметра $жизнь - 0 бой заканчивался?
Ещё один макрос if. Попробуй так:
<<if $жизнь lte 0>> (меньше либо равно)
<<goto 'ГеймОвер'>> (переход на другой параграф)
<<endif>>
Неактивен
Ну, вот, получается видимо так:
<<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)
Неактивен
alfa10 написал:
А как зациклить код? Чтобы значения уменьшались до того момента, пока переменная жизнь не примет нулевое значение?
Допустим, сражение у нас в параграфе "Битва". Начальное значение жизней нужно установить до этого параграфа:
:: Параграф_до_битвы <<set $жизнь = 7>> <<set $жизнь1 = 6>> Внезапно путь преграждает <<print $враг>>! <<print $я>> - <<print $жизнь>> <<print $враг>> - <<print $жизнь1>> [[Начать битву|Битва]] [[Убежать|Бегство]] :: Битва <<random $кубик = 10>> <<if $кубик gte 3>> <<print $я>> наносит удар! <<set $жизнь1 = $жизнь1 - 1>> <<else>> <<print $враг>> наносит удар! <<set $жизнь = $жизнь - 1>> <<endif>> <<print $я>> - <<print $жизнь>> <<print $враг>> - <<print $жизнь1>> <<if $жизнь lte 0>> <<print $я>> падает на землю без чувств... [[Это конец|GameOver]] <<elseif $жизнь1 lte 0>> <<print $враг>> падает на землю, путь свободен! [[Праздновать победу|Победа]] <<else>> [[Продолжать битву|Битва]] [[Убежать|Бегство]] <<endif>>
Лучше зацикливать так, на ссылках, чтобы у игрока создавалось ощущение, что он на что-то влияет.
Неактивен
Спасибо тебе большое! очень сильно помогаешь мне И всем вам ребята - большое спасибо
А есть ли при создании книги ограничение в количестве параграфов? А то, у меня тут глобальная книга намечается
Еще вопрос - можно ли сделать, чтобы во время боя страница автоматически обновлялась, а не клацать каждый раз на продолжить?
Отредактировано alfa10 (31.10.2013 13:23)
Неактивен
Ограничений на количество параграфов нет.
А для автообновления параграфа рекомендую использовать макрос <<repeat>> (см. мануал).
Неактивен
alfa10 написал:
Спасибо тебе большое! очень сильно помогаешь мне И всем вам ребята - большое спасибо
Пожалуйста
alfa10 написал:
Еще вопрос - можно ли сделать, чтобы во время боя страница автоматически обновлялась, а не клацать каждый раз на продолжить?
Как заметил DD, можно через макрос repeat:
:: Параграф_до_битвы ... [[Начать битву|НачалоБитвы]] (всё то же самое кроме этой строчки) :: НачалоБитвы <<repeat 'Битва' 2>> (здесь число - это время обновления в секундах) <<display 'Битва'>> (сразу показываем параграф "Битва", чтобы не ждать первый раз) :: Битва <<clrscr>> (в самом начале очищаем экран, если не очищать - будет "лог" битвы) <<random $кубик = 10>> <<if $кубик gte 3>> <<print $я>> наносит удар! <<set $жизнь1 = $жизнь1 - 1>> <<else>> <<print $враг>> наносит удар! <<set $жизнь = $жизнь - 1>> <<endif>> <<print $я>> - <<print $жизнь>> <<print $враг>> - <<print $жизнь1>> <<if $жизнь lte 0>> <<print $я>> падает на землю без чувств... <<stop 'Битва'>> (битва окончена - останавливаем авто обновление) [[Это конец|GameOver]] <<elseif $жизнь1 lte 0>> <<print $враг>> падает на землю, путь свободен! <<stop 'Битва'>> (и в этом случае тоже останавливаем) [[Праздновать победу|Победа]] <<endif>>
И да, Руководство пользователя AXMA Story Maker - очень хорошая вещь, рекомендую!
Неактивен
Господа, а есть ли возможность на этом движке запилить рогалик? Я в программирование не силен, поэтому у меня даже нет особых идей по алгоритму передвижения героя-символа по пустому полю.
Неактивен
NeoMatrix777 написал:
Господа, а есть ли возможность на этом движке запилить рогалик? Я в программирование не силен, поэтому у меня даже нет особых идей по алгоритму передвижения героя-символа по пустому полю.
Ну а что, списки и циклы есть, моноширинный шрифт есть - значит теоретически возможно Только карта будет монохромной, разве что некоторые объекты на карте будут ссылками. Ещё один нюанс: на мелких экранах мобильных устройств карта может отображаться неверно из-за переносов строк (но в меню можно попробовать изменить размер шрифта). А идея алгоритма передвижения проста: у героя есть координаты X и Y. Если герой идёт на север или юг, изменяем вертикальную координату, на запад или восток - горизонтальную. Заодно с изменением координаты проверяем границы окна и карты, наличие на пути непроходимых объектов, затем перерисовываем карту.
Неактивен
Вот ковырялся ковырялся, пытаясь сгенерировать футбольный матч и получилось так:
:: матч
<<set $ком_ГГ = ['Барса',20]>>
<<set $ком = ['Атлетико',15]>>
<<random $гол1 = 2>>
<<random $гол2 = 2>>
<<random $rnd = 99>>
<<if $rnd lt 50 + ($ком_ГГ[1] - $ком[1]) * 5>>
<<set $гол1 = $гол1 + $гол2>>
<<else>>
<<set $гол2 = $гол2 + $гол1>>
<<endif>>
''===результат матча===''
===<<print $гол1>> : <<print $гол2>>===
===<<print $ком_ГГ[0]>> : <<print $ком[0]>>===
<<if $гол1 gt $гол2>>
Победили хозяева
<<elseif $гол1 eq $гол2>>
у нас ничья
<<elseif $гол1 lt $гол2>>
Хозяева проиграли
<<endif>>
[[узнать результаты ГГ|забил гг]]
:: забил гг
<<set $ГГ = 10>>
<<random $игра_ГГ = 9>>
<<if $ГГ lte 9 and $игра_ГГ lte 7>>
<<set $голГГ = 0>>
<<elseif $ГГ gte 9 and $ГГ lte 7 and $ком_ГГ[1] eq 1>>
<<set $голГГ = 0>>
<<elseif $ГГ gte 9 and $ГГ gt 8 and $ком_ГГ[1] gt 1>>
<<set $голГГ = $гол1>>
<<endif>>
''===результат игрока===''
<<if $голГГ eq 0>>
игрок не забил
<<elseif $голГГ eq $гол1>>
игрок забил <<print $голГГ>> голов
<<endif>>
... все равно меня как-то это не устраивает... хочется, чтобы в данный на команду было и атака и защита и мораль... и чтобы эти показатели как-то влияли на матч... также и по игроку...
Неактивен
Oldrik написал:
А ещё ТриДэ, стотыщь полигонов только на мяч, фото текстуры и Лондонский Симфонический на подпевке. Начинай с малого, с чем-то большим ты перегоришь раньше времени.
все таки хочется сделать игру от первого лица и чтобы именно он влиял на игру, а не из результатов игры высчитывать сколько он забил...
А так согласен - лучше начинать с малого)))
Неактивен
подскажите, как понимать эту запись
<<random $гол1 = 2>>
<<random $гол2 = 2>>
<<random $rnd = 99>>
<<if $rnd lt 50 + ($ком_ГГ[1] - $ком[1]) * 5>>
особенно последняя строчка...
я хочу использовать силу атаки и силу защиты, так, чтобы атака слабее имела меньше вероятности пробиться через сильную защиту
пробую так, но все равно криво(((
<<set $ком_ГГ = ['Барса',90,70]>>
<<set $ком = ['Атлетико',70,60]>>
<<random $гол1 = 2>>
<<random $гол2 = 2>>
<<random $rnd = 99>>
<<if $rnd lt 50 + ($ком_ГГ[1] - $ком[2]) * 5>>
<<set $гол_ком_ГГ = $гол1 + $гол2>>
<<else>>
<<set $гол_ком_ГГ = 0>>
<<endif>>
<<random $rnd1 = 99>>
<<if $rnd1 lt 50 + ($ком[1] - $ком_ГГ[2]) * 5>>
<<set $гол_ком = $гол1 + $гол2>>
<<else>>
<<set $гол_ком = 0>>
<<endif>>
почему-то не получается ((( вообще ничего не высвечивается(((
Отредактировано Max (01.11.2013 16:03)
Неактивен
Max написал:
подскажите, как понимать эту запись
<<random $гол1 = 2>>
<<random $гол2 = 2>>
<<random $rnd = 99>>
<<if $rnd lt 50 + ($ком_ГГ[1] - $ком[1]) * 5>>
особенно последняя строчка...
Ну <<random $rnd = N>> означает случайное целое число от 0 до N включительно.
Рандом от 0 до 99 я использую, когда известна вероятность какого-то события, и надо определить, произошло ли событие:
<<random $rnd = 99>>
<<if $rnd lt M>>
# Событие произошло!
<<endif>>
где M - это вероятность события в процентах (от 0 до 100).
Теперь, допустим, если силы команд равны, то вероятность победы первой команды = 50%. Иначе разница в силе команд на 1 изменяет вероятность победы/поражения на 5%. Соответственно, если первая команда сильнее хотя бы на 10, вероятность её победы = 100%.
Попробуй просто перед матчем рассчитывать общую "силу" команды. А вот сила в данном случае уже зависит от атаки, защиты, и морали (дома играем или в гостях).
Неактивен
Morych написал:
Попробуй просто перед матчем рассчитывать общую "силу" команды. А вот сила в данном случае уже зависит от атаки, защиты, и морали (дома играем или в гостях).
тогда каждый раз выбирая команду, нужно в ручную прописывать влияние Ат, Защ, Мор на СИЛУ???
Неактивен
То, что требуется система координат - достаточно естественно. Однако каким более конкретным образом она пилиться? Я вот думал как-нибудь через массивы, но чего-то ни к чему толковому не пришел...
Неактивен
NeoMatrix777 написал:
Господа, а есть ли возможность на этом движке запилить рогалик? Я в программирование не силен, поэтому у меня даже нет особых идей по алгоритму передвижения героя-символа по пустому полю.
Подводных камней слишком много, если делать это на АСМе.
Max написал:
Morych написал:
Попробуй просто перед матчем рассчитывать общую "силу" команды. А вот сила в данном случае уже зависит от атаки, защиты, и морали (дома играем или в гостях).
тогда каждый раз выбирая команду, нужно в ручную прописывать влияние Ат, Защ, Мор на СИЛУ???
Нет, если я правильно понял вопрос.
Неактивен
Там может быть только текст. Вставляйте в параграф Start.
Неактивен
Max написал:
тогда каждый раз выбирая команду, нужно в ручную прописывать влияние Ат, Защ, Мор на СИЛУ???
Морыч категорически одобряет параметр "Мор"
Вручную не надо, формула же будет. Только нужно определиться с диапазоном изменения Атк, Защ и Мор. Например, от 1 до 10.
Тогда можно, к примеру, так:
<<if команда1_играет_дома>> <<set $K = 1>> (коэф. влияния морали) <<else>> <<set $K = 0.5>> <<endif>> <<set $Сила1 = Math.round(Math.max(1, $Атк1 - $Защ2 + $Мор1 * $К))>> (при помощи max ограничиваем силу, чтобы не получилась меньше 1, round - округление до целого) <<set $Сила2 = Math.round(Math.max(1, $Атк2 - $Защ1 + $Мор2 * (1.5 - $К)))>> (если первая команда играет у себя, то вторая в гостях, и наоборот)
Получается, Сила может принимать значения от 1 до 19, а разница сил от -18 до 18. Значит условие для определения победителя немного изменится:
<<random $rnd = 99>>
<<if $rnd lt 50 + ($Сила1 - $Сила2) * 2.6>>
Т.о. при самом лучшем раскладе шанс победы 96.8%, оставшиеся проценты - шанс критической неудачи. То же самое и с критическим успехом при наихудшем раскладе.
Неактивен
NeoMatrix777 написал:
То, что требуется система координат - достаточно естественно. Однако каким более конкретным образом она пилиться? Я вот думал как-нибудь через массивы, но чего-то ни к чему толковому не пришел...
Через массивы, всё верно, массивы строк. Например, в цикле вывести все строки массива карты до координаты Y гг. Затем выводим часть строки до координаты X, рисуем @ (гг), выводим оставшуюся часть строки, затем выводим оставшиеся строки карты.
Неактивен
Фух, загрузил свою первую интерактивную книгу в библиотеку. Правда, почему-то, при загрузке ругалось на музыкальный файл формата OGG. Пришлось музыку исключить из книги
Неактивен
Надо было и ogg и mp3 - оба файла сделать.
А так - поздравляю с успешным дебютом!
Неактивен
DoubleDragon написал:
Надо было и ogg и mp3 - оба файла сделать.
А так - поздравляю с успешным дебютом!
Спасибо! А насколько он успешный - покажет время и участие в конкурсе 31
Неактивен
Просьба помочь разобраться в ошибке кода:
<<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>>
Почему-то у меня назад не возвращает. Как можно сделать так, чтобы если жизни остаются, параграф продолжался заново с начала?
Неактивен
alfa10 написал:
Просьба помочь разобраться в ошибке кода:
Почему-то у меня назад не возвращает. Как можно сделать так, чтобы если жизни остаются, параграф продолжался заново с начала?
Давай попробуем разобраться, но сначала небольшая работа над ошибками Читай закомментированные строки (после символа #)
<<set $жизнь = $жизнь>> <<set $жизнь1 = $жизнь1>> # Две верхние строчки не нужны Мое здоровье - ''<<print $жизнь>>'' Здоровье вора - ''<<print $жизнь1>>'' Вор поворачивается ко мне. Его лицо скрывает балахон. Не говоря ни слова, гость направляется на меня... <<if $успех eq 1>> [[Ударить в лицо|БойВорНеус {$успех = 2}]] [[Ударить в живот|БойВорНеус {$успех = 3}]] [[Кинуть в вора стул|БойВорНеус {$успех = 4}]] <<endif>> # Советую выделять внутренности блока if-endif # при помощи табуляции, код будет легче читать <<if $успех eq 2>> <<clrscr>> <<random $кубик = 6>> <<if $кубик gte 5>> Я ударяю вора в голову. Великолепный удар! <<set $жизнь1 = $жизнь1 - 3>> Мое здоровье - ''<<print $жизнь>>'' Здоровье вора - ''<<print $жизнь1>>'' <<else>> Вор ставит блок и проводит ответный удар! <<set $жизнь = $жизнь - 1>> Мое здоровье - ''<<print $жизнь>>'' Здоровье вора - ''<<print $жизнь1>>'' <<endif>> # Выше дважды написано одно и то же (про жизни гг и противника) # такого быть не должно. Лучше вынести эти две строки за endif, # вот прям сюда <<if $жизнь1 lte 0>> <<goto 'ОсмотретьсяЖив'>> <<else>> <<goto 'БойВорНеус' {$успех = 1}>> <<elseif $жизнь lte 0>> <<goto 'Конец1'>> <<else>> <<goto 'БойВорНеус' {$успех = 1}>> <<endif>> # Программа никогда не дойдёт до двух нижних goto, # поскольку при истинности первого условия выполнится первый goto, # а второй goto выполнится во всех остальных случаях. # В блоке if-endif внутри может быть сколько угодно elseif, # но всегда только один else, причём стоять он должен самым последним! <<endif>>
Неактивен
Вот есть код:
:: Пещера <<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"
Неактивен
Есть ли параграф "Пещера"? Если есть, то, скорее всего, в нем и содержится ошибка. А тут две ошибки:
<<if $жизнь lte 0>> <<goto 'Конец'>> <<elseif $жизнь1 lte 0>> <<display 'Пещера'>> <<elseif $жизнь2 lte 0>> <<display 'Пещера'>> <<elseif $жизнь1 + $жизнь2 lte 0>> (1) <<goto 'пещера2'>> (2) <<else>>
(2) никогда не выполнится, ибо до него тупо никогда не доберется очередь.
(1) неправильно производится проверка. Если значение одной из переменных будет отрицательным, а другой положительным, то их сумма может оказаться равной либо меньше нуля. Правильно будет:
<<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>>
Неактивен
Не, чет не то... если прописываю так:
<<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)
Неактивен
Хочу сделать программу, где при вводе улицы и номера дома выдается наименование района. Получается, в одном параграфе нужно ввести нечто типа:
<<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)
Неактивен
:: vvod Введите адрес: <<input '0' $адрес>> Пример: Калинина, 155 :: 0 <<set $адрес = $адрес.replace(/ /g,"").toLowerCase()>> <<set $улица = "">> <<set $дом = "">> <<set $зап = 0>> <<set $i = -1>> <<loop $адрес.length>> <<set $i++>> <<if $адрес[$i] eq ",">> <<set $зап = 1>> <<continue>> <<endif>> <<if $зап eq 0>> <<set $улица = $улица + $адрес[$i]>> <<else>> <<set $дом = $дом + $адрес[$i]>> <<endif>> <<endloop>> <<if $улица eq "калинина" and $дом gte 1 and $дом lte 50>> Вокзал <<elseif $улица eq "калинина" and $дом gte 51 and $дом lte 200>> Черемушки <<elseif $улица eq "красныхпартизан" and $дом gte 1 and $дом lte 100>> Центральный район <<else>> Район не определен! <<endif>>
Неактивен
alfa10 написал:
Спасибо! Еще б расшифровал бы код - вообще круто было бы
Этот код разбивает введённую строку $адрес на две строки: $улица и $дом. Разделение строк происходит в цикле посимвольно: до запятой - собирается название улицы, после запятой - номер дома.
Есть другой способ сделать то же самое:
:: vvod Введите адрес: <<input '0' $адрес>> :: 0 <<set $адрес = $адрес.replace(/ /g,"").toLowerCase()>> ---- удалить все пробелы из строки $адрес, преобразовать в нижний регистр <<set $улица = "">> <<set $дом = "">> <<set $i = $адрес.indexOf(",")>> ---- индекс первой запятой в строке $адрес <<if $i gt -1>> ---- если есть запятая <<set $улица = $адрес.substr(0, $i)>> ---- название улицы - это часть строки до запятой <<set $дом = $адрес.substr($i + 1)>> ---- номер дома - часть строки после запятой <<endif>> Улица: <<print $улица>>; Дом: <<print $дом>>;
Неактивен
Поясню тогда из своего примера, чего нет в примере Морыча:
<<set $зап = 0>> ---- переменная дающая понять попалась уже запятая в цикле или нет. 0 - не попадалась, 1 - попадалась <<set $i = -1>> ---- эта переменная будет обозначать индекс символа в строке $адрес <<loop $адрес.length>> ---- объявление цикла, цикл будет выполняться столько раз, сколько символов в строке $адрес <<set $i++>> ---- увеличиваем $i, таким образом в первый раз $i будет равен 0, а индекс в строке как раз и начинается с нуля <<if $адрес[$i] eq ",">> ---- проверяем не является ли символ в строке $адрес с индексом $i запятой и если да, то <<set $зап = 1>> ---- устанавливаем значение переменной $зап = 1 <<continue>> ---- не выполняем все что ниже идет по циклу, а снова возвращаемся на его начало. Еще существует полезная штукенция как <<break>>, которая вообще полностью прекращает цикл. О ней и вообще о всем остальном можно прочитать в справке <<endif>> <<if $зап eq 0>> ---- если $зап равен 0, то <<set $улица = $улица + $адрес[$i]>> ---- прибавляем к строке $улица символ с индексом $i из строки $адрес <<else>> ---- иначе <<set $дом = $дом + $адрес[$i]>> ---- прибавляем к строке $дом символ с индексом $i из строки $адрес <<endif>> <<endloop>> ---- конец цикла
Изменение регистра нужно по причине того, что, например, строка "Каланина" не равна строке "каланина", а пробелы я удалил для удобства. Кстати, также тут
<<if $улица eq "калинина" and $дом gte 1 and $дом lte 50>> Вокзал <<elseif $улица eq "калинина" and $дом gte 51 and $дом lte 200>> Черемушки <<elseif $улица eq "красныхпартизан" and $дом gte 1 and $дом lte 100>> Центральный район <<else>> Район не определен! <<endif>>
можно увидеть что переменная $дом, где хранится номер дома в виде строки, сравнивается с числами. Так можно делать далеко не во всех языках программирования, но тут так делать можно.
Отредактировано Flash (14.11.2013 20:24)
Неактивен
Flash, ты уже достиг достаточного уровня просветления
Когда же, наконец, мы увидим твою работу в библиотеке?
Неактивен
Кстати, в примере выше есть баг: если ввести в поле ввода число и нажать enter, то произойдет вылет на стартовый параграф. Это можно вылечить, если перед
<<set $адрес = $адрес.replace(/ /g,"").toLowerCase()>>
добавить строку
<<set $адрес = $адрес + "">>
Таким приемом мы преобразуем число в строку.
Неактивен
Подскажите пожайлуста, можно ли в книгу-игру вставлять видео ролики. Без участия интернета, тоесть можно ли вставлять ролики кроме ютуба. Если ролик будет лежать в папке с игрой например. Как это сделать?
Неактивен
Нет, нельзя. Дело в том, что в этом случае размер файлов становится слишком большим для публикации в библиотеке.
Неактивен
Всем привет. Разрешите несколько вопросов от новичка (пока разбираюсь с программированием):
1. Разъясните пожалуйста на примере полезности и необходимость использования массивов.
2. Где-то в блоге (не помню где) обмолвились о недокументированных многомерных массивах, больше ни где этого не видел. Есть ли такое, можно ли это использовать, если да, то где?
3. Можно ли сохранить рассказ, т.е. нельзя ли вывести линейный рассказ, полученный во время прочтения пользователем, т.е. прочитать то, что получилось от начала до конца во время чтения?
4. Можно ли, и если да, то как протестировать выполняются ли все участки кода (т.е. есть ли теоретическая возможность того, что все параграфы будут воспроизведены или наоборот есть пути с тупиками)? Подобный тест был бы полезен в виду появления в программе динамических ссылок.
Неактивен
Отвечаю
1. Не используйте массивы, пока не почувствуете необходимость в них.
2. Такого нет и не планируется.
3. Такого пока нет.
4. Не представляю, как сделать это
Неактивен
Нет, пока так сделать нельзя. В планах.
Неактивен
Flash написал:
А почему же у меня тогда это работает?
А как? Пример в студию
Неактивен
Ого, а я не знал
Морыч, я сделал это
Неактивен
Очень может быть Flash, спасибо!
Неактивен
Помогите с кодом:
Условие: есть три навыка (Навык Тяжелого оружия ближнего боя, Легкого оружия ближнего боя и Оружия дальнего боя). Есть один дар и два таланта, которым можно придать значение навыка. Дар и талант не могут быть обозначены одним навыком, как и два таланта. Если обозначить навык как дар, то возможность выбрать как талант исчезнет. Однако если выбрать даром другой навык, то возможность опять появится. С талантами то же самое. Если выбрать один для навыка, возможность выбрать этот навык вторым талантом должна исчезнуть.
Я разобралась с даром, однако проблема с талантами. Как сделать так, чтобы выбрав один, исчезала возможность выбрать второй и дар? (если выбрать сначала дар, возможность выбрать талант все таки исчезала.... раньше)
Параграф "анкета8":
[[Тяжёлое оружие ближнего боя|анкета9 {$0001=1}]] [[Лёгкое оружие ближнего боя|анкета9 {$0001=2}]] [[Оружие дальнего боя|анкета9 {$0001=3}]]
(Не буквеннык объекты, так как нажимая на ссылки сверху, играющий лишь попадает на страницу с описанием навыка, а не выбирает его)
Параграф "анкета9":
<<if $0001 eq 1>> Описание навыка "Тяжелое оружие". <<if !$дар >>[[Выбрать как дар|анкета9{$дар = 'тяжелое оружие'}]]<<elseif $дар neq 'тяжелое оружие'>>[[Выбрать этот дар вместо прежнего|анкета9{$дар = 'тяжелое оружие'}]]<<endif>> <<if $дар neq 'тяжелое оружие' and (!$талант1 or $талант1 neq 'тяжелое оружие')>>[[Выбрать как талант|анкета9 {$талант1 eq 'тяжелое оружие'}]] <<elseif $дар neq 'тяжелое оружие' and (!$талант2 or $талант2 neq 'тяжелое оружие' and $талант1>>[[Выбрать как талант|анкета9 {$талант2 eq 'тяжелое оружие'}]] <<endif>> <<elseif $0001 eq 2>> Описание навыка "Легкое оружие". <<if !$дар>>[[Выбрать как дар|анкета9{$дар = 'легкое оружие'}]]<<elseif $дар neq 'легкое оружие'>>[[Выбрать этот дар вместо прежнего|анкета9{$дар = 'легкое оружие'}]]<<endif>> <<if $дар neq 'легкое оружие' and (!$талант1 or $талант1 neq 'легкое оружие')>>[[Выбрать как талант|анкета9 {$талант1 eq 'легкое оружие'}]] <<elseif $дар neq 'легкое оружие' and (!$талант2 or $талант2 neq 'легкое оружие' and $талант1>>[[Выбрать как талант|анкета9 {$талант2 eq 'легкое оружие'}]] <<endif>> <<elseif $0001 eq 3>> Описание навыка "Дальнее оружие". <<if !$дар>>[[Выбрать как дар|анкета9{$дар = 'дальнее оружие'}]]<<elseif $дар neq 'дальнее оружие'>>[[Выбрать этот дар вместо прежнего|анкета9{$дар = 'дальнее оружие'}]]<<endif>> <<endif>> <<if $дар neq 'дальнее оружие' and (!$талант1 or $талант1 neq 'дальнее оружие')>>[[Выбрать как талант|анкета9 {$талант1 eq 'дальнее оружие'}]] <<elseif $дар neq 'дальнее оружие' and (!$талант2 or $талант2 neq 'дальнее оружие' and $талант1>>[[Выбрать как талант|анкета9 {$талант2 eq 'дальнее оружие'}]] <<endif>> ---- [[Вернуться|анкета8]]
Без добавления условного оператора с $талант1 и $талант2, объект $дар работает как нужно, однако при нынешнем коде вообще ничего не отображается. Почему?
Неактивен
Delakha написал:
Условие: есть три навыка (Навык Тяжелого оружия ближнего боя, Легкого оружия ближнего боя и Оружия дальнего боя). Есть один дар и два таланта, которым можно придать значение навыка. Дар и талант не могут быть обозначены одним навыком, как и два таланта. Если обозначить навык как дар, то возможность выбрать как талант исчезнет. Однако если выбрать даром другой навык, то возможность опять появится. С талантами то же самое. Если выбрать один для навыка, возможность выбрать этот навык вторым талантом должна исчезнуть.
Я тут покрутил немного, и получилось вот что:
:: Start <<display 'Объекты'>> [[Навыки]] :: Объекты <<set $навык = "">> <<set $нет = "нет">> <<set $дар = $нет>> <<set $талант1 = $нет>> <<set $талант2 = $нет>> <<set $выбрано = 0>> :: Навыки <<if ($выбрано neq 1) and ($дар eq $навык)>> <<set $дар = $нет>> <<endif>> <<if ($выбрано neq 2) and ($талант1 eq $навык)>> <<set $талант1 = $нет>> <<endif>> <<if ($выбрано neq 3) and ($талант2 eq $навык)>> <<set $талант2 = $нет>> <<endif>> Дар: <<print $дар>> Талант первый: <<print $талант1>> Талант второй: <<print $талант2>> [[Тяжёлое оружие ближнего боя|ОписаниеНавыков {$навык = "тяжёлое оружие"}]] [[Лёгкое оружие ближнего боя|ОписаниеНавыков {$навык = "лёгкое оружие"}]] [[Оружие дальнего боя|ОписаниеНавыков {$навык = "дальнее оружие"}]] :: ОписаниеНавыков <<if $навык eq "тяжёлое оружие">> Описание навыка «Тяжёлое оружие». <<elseif $навык eq "лёгкое оружие">> Описание навыка «Лёгкое оружие». <<else>> Описание навыка «Дальнее оружие». <<endif>> <<if $навык neq $дар>> [[Выбрать как дар|Навыки {$дар = $навык} {$выбрано = 1}]] <<endif>> <<if ($навык neq $талант1) and ($навык neq $талант2)>> <<if ($талант1 eq $нет) or ($талант2 neq $нет)>> [[Выбрать как талант|Навыки {$талант1 = $навык} {$выбрано = 2}]] <<else>> [[Выбрать как талант|Навыки {$талант2 = $навык} {$выбрано = 3}]] <<endif>> <<endif>> [[Назад|Навыки {$навык = ""}]]
Посмотрите, правильно ли работает.
У вас, я заметил, отсутствует закрывающая скобка в таких условиях:
<<elseif $дар neq 'тяжелое оружие' and (!$талант2 or $талант2 neq 'тяжелое оружие' and $талант1>>
Неактивен
Начал изучать ASM и в третьем уроке http://hyperbook.ru/blog.php?id=13628097918637 какие-то нелады с разнообразием описаний. Если сделать все по уроку, то получается, то первое описание совсем не выводится, а остальные чередуются. В чем загвоздка? Спасибо.
Неактивен
Из учебника:
В самом начале истории мы создадим объект «$селение», в котором будем запоминать номер описания сцены «Старое селение». Первоначально значение объекта «$селение» будет равно 1.
Т.е. в параграфе Start нужно написать:
<<set $селение = 1>>
Этой командой мы явно задаём начальное значение объекта. Если этого не сделать, значение объекта будет неопределённым (undefinied).
В учебнике все начальные значения объектов задаются в специальном параграфе "Создание объектов", который вызывается во вступлении. Смотрите главу "Инициализация объектов" в четвёртой части.
Неактивен
Как из своего (скачанного) конструктора перенести игру в онлайновый? Путем копирование исходного кода (кнопой "Новая", затем "Из буфера обмена") не выходит , "ок" жмется, но увы, игра не появляется (окно, также, не закрывается).
Неактивен
Да, только так. А размер большой? Может просто тормозит и надо подождать? А вы копируете sm файл или исходник из режима редактора?
Неактивен
Собственно, дело именно в этом. Если копировать из редактора, то не выходит, а если открыть файл sm в блокноте и скопировать оттуда, то все отлично.
(В окошке онлайн конструктора так и написано: скопируйте исходный текст из файла *.sm)
Неактивен
Кстати, в грядущем обновлении я это уже поправил и можно будет вставлять и оттуда и оттуда.
Неактивен
Здравствуйте! Я здесь человек новый, уж простите. если что не так. А вопрос у меня вот какой: можно ли сделать так, чтобы числовые переменные из одного параграфа прочитывались при нажатии на ссылку в другом параграфе.
Допустим, мы создаем примитивный симулятор жизни, где у героя есть 3 параметра: возраст. сила и интеллект. И вот наш герой размышляет над выбором профессии: кузнец или библиотекарь. Если станет кузнецом - то будет прокачивать силу, а если библиотекарем - то интеллект. Параграф Установка объектов выглядит так:
спойлер…
Вступление выглядит вот так:
спойлер…
А Основной параграф - так:
спойлер…
Как ни странно, если нажимать ссылку "дальше", то увеличивается лишь возраст героя, а его сила и интеллект не обсчитываются!. Можно, конечно, прописать кусок:
<<If $кузнец eq true>>
<<set $сила = $сила + 1>>
<<elseIf $библиотекарь eq true>>
<<set $интеллект = $интеллект + 1>>
<<endIf>>
...прямо в основном параграфе, но для меня это не вариант (ведь таких кусков будет очень много). Как же быть? Как заставить их работать? Пробовал и так и эдак, но ничего не выходит, так что я уже в полной прострации... Помогите!
Файл с игрой здесь:
http://yadi.sk/d/W-aW_tn0Hnchj
Отредактировано Atoll2 (12.02.2014 23:24)
Неактивен
Привет! Просить прощения не нужно, это специальная тема для вопросов и ответов Программа работает совсем не странно, а вполне себе логично. Параграф «Установка объектов» выполнился один раз и всё. Чтобы какой-то код выполнился ещё раз, соответствующий параграф нужно вызвать (макросом <<display>>, <<goto>> или перейти в параграф по ссылке). Предлагаю перенести проверку профессии в новый параграф «Увеличение возраста», и написать там так:
<<set $время = $время + 1>> <<If $кузнец>> <<set $сила = $сила + 1>> <<elseIf $библиотекарь>> <<set $интеллект = $интеллект + 1>> <<endIf>> <<goto 'Основной параграф'>>
Конечно же из параграфа «Установки объектов» этот кусок кода надо убрать, т.к. ни одна из проверок там не работает (и $кузнец и $библиотекарь = false).
А в «Основном параграфе» внизу напишем так:
[[Повзрослеть|Увеличение возраста]]
П.С. И ещё один момент, относящийся к стилю программирования. Если мы проверяем логическую переменную на истинность, то пишем просто <<if $объект>>, если на ложность, то <<if not $объект>> или <<if !$объект>>.
Неактивен
П.С. И ещё один момент, относящийся к стилю программирования. Если мы проверяем логическую переменную на истинность, то пишем просто <<if $объект>>, если на ложность, то <<if not $объект>> или <<if !$объект>>.
Кстати есть один подводный камень при такой проверке. <<if $объект>> не будет истиной, если $объект = "" (пустая строка) или $объект = 0. Такое поведение ASM унаследовал от Javascript.
P.S. Наверное ещё стоит написать, что соответственно <<if $объект>> будет истиной, если $объект имеет любое значение, кроме 0, "" и false
Неактивен
Нене, я про проверку значения объектов, которые используются для хранения исключительно true либо false. В остальных случаях лучше использовать eq, чтобы код легче читался.
Неактивен
Morych написал:
Предлагаю перенести проверку профессии в новый параграф «Увеличение возраста»
Попробовал - РАБОТАЕТ!!! Большое человеческое спасибо! Я так и знал, что есть какое-то очень простое решение, но вот никак не мог до него додуматься...
Неактивен
Morych написал:
Пожалуйста! Обращайтесь, если что
Ну коли так, то у меня ещё вопрос
Допустим, тот же самый герой зарабатывает по 100 монет в год и тут же кладёт их в банк под 5% годовых. И всё бы ничего, но print выдает точное значение переменной, в результате получается вот какая фигня:
Профессия: кузнец
Возраст: 25
Сила: 30
Интеллект: 20
Деньги: 1257.7892535548833 монет
Выглядит ужасно. Можно ли сделать так, чтобы print выдавал только целую часть (1257 монет) и отсекал то, что после запятой?
Отредактировано Atoll2 (14.02.2014 21:18)
Неактивен
Очень просто, даже я смогу ответить
Используйте Math.floor(x), где x - число, от которого требуется отбросить дробную часть.
См. статью в блоге: http://hyperbook.ru/blog.php?id=13633403734658
Неактивен
DoubleDragon написал:
Очень просто, даже я смогу ответить
Используйте Math.floor(x), где x - число, от которого требуется отбросить дробную часть.
См. статью в блоге: http://hyperbook.ru/blog.php?id=13633403734658
Спасибо.
Неактивен
Нет, это запрещено.
Неактивен
Что-то у меня не получается с динамическими ссылками сделать в облачном конструкторе
#инт
===[[Главная|ДИНАМИЧЕСКАЯ ССЫЛКА]]||[[Инвентарь|инвентарь]]===
#1
<<display 'инт'>>
Текст-текст-текст
#2
<<display 'инт'>>
Текст-текст-текст
=====================================
Что я должна написать в ссылке "Главная", чтобы он мне из инвентаря каждый раз возвращался на параграф, где я нахожусь? Что-то я туплю...
Неактивен
Вета, прошу прощения за поздний ответ, праздники, сама понимаешь. Собственно вот:
:: Start [[Старт|параграф 1]] :: параграф 1 <<display 'инт'>> Текст, текст, текст... [[Идти в 2|параграф 2]] :: параграф 2 <<display 'инт'>> Текст 2, текст 2, текст 2... [[Идти в 1|параграф 1]] :: инвентарь <<display 'инт'>> Список предметов... :: инт <<if $$title neq "инвентарь">> ===Главная || [[Инвентарь|инвентарь {$passage = $$title}]]=== <<else>> ===[[Главная|$passage]] || Инвентарь=== <<endif>>
Неактивен
Да ничего, нормально. ))) А что означает $passage = $$title?
Неактивен
И еще, как мне в инвентаре сделать проверку такого вида:
предмет - НИТКИ (ссылка)
Щелкаем по ниткам.
Если локация=1, то переходим на эту локацию и там появляется ссылка "Использовать нитки"
иначе
появляется надпись в инвентаре: "Нитки тут не применимы".
Неактивен
Вета написал:
Да ничего, нормально. ))) А что означает $passage = $$title?
$$title - это название текущего параграфа.
$$from - это название предыдущего параграфа.
См. руководство пользователя, раздел "Системные объекты": http://sm.axmasoft.com/ru/help.html
Неактивен
Вета написал:
И еще, как мне в инвентаре сделать проверку такого вида:
предмет - НИТКИ (ссылка)
Щелкаем по ниткам.
Если локация=1, то переходим на эту локацию и там появляется ссылка "Использовать нитки"
иначе
появляется надпись в инвентаре: "Нитки тут не применимы".
Вот попробуй так:
:: Start <<fade = 500>> <<set $item = "">> <<set $nitki = 1>> [[Старт|параграф 1]] :: параграф 1 <<display 'инт'>> Тут нет ничего интересного. Только дверь в другую комнату. [[Идти в другую комнату|параграф 2]] <<display 'предметы'>> :: параграф 2 <<display 'инт'>> Здесь стоит швейная машинка.<<if $nitki eq 2>> Вы заправили в машинку свои нитки. Осталось найти занавеску и можно сшить плащ.<<endif>> [[Вернуться в пустую комнату|параграф 1]] <<display 'предметы'>> :: инт <<if $$title neq "инвентарь">> ===Главная || [[Инвентарь|инвентарь {$passage = $$title}]]=== <<else>> ===[[Главная|$passage]] || Инвентарь=== <<endif>> :: инвентарь <<display 'инт'>> Содержимое карманов: <<if $nitki eq 1>> * [[Нитки|$passage {$item = "нитки"}]] <<endif>> <<if (not $use) and ($item neq "")>> Вы не представляете, как здесь можно использовать <<print $item>>. <<endif>> <<set $item = "">> :: предметы <<set $use = false>> <<if $item eq "нитки">> <<if $passage eq "параграф 2">> [[Заправить нитки в машинку|$passage {$nitki = 2}]] <<set $use = true>> <<endif>> <<endif>> <<if (not $use) and ($item neq "")>> <<goto 'инвентарь'>> <<else>> <<set $item = "">> <<endif>>
Неактивен
Здравствуйте, пишу RPG-кинигу на АХМА, возникла небольшая проблемка. Попробую описать как можно подробнее.
1. Поскольку игра RPG, мне нужно сделать так, чтобы в случае, если здоровье героя ($xp_vip) станет равно нулю, игра перекинула бы его на экран смерти.
2. Делаю это методом задания условия в начале параграфа
<<if $xp_vip eq 0>> <<goto 'Смерть хр'>> <<endif>>
Вроде все должно работать, НО. На деле меня отправляет на параграф смерти, при этом под ним отображается текст следующего действия предыдушего параграфа (подробнее на скринах).
Посоветуйте что-нибудь.
P.s. Параграфы сделаны как в обучении, т.е по схеме:
Параграф1
<<if !$параграф_1>> Какой-то текст [[Действие1|Параграф1 {$параграф_1=1}]] [[Действие2|Параграф1 {$параграф_1=2}]] <<elseif !$параграф_1 eq 1>> Какой-то текст [[Действие1|Параграф1 {$параграф_1=3}]] [[Действие2|Параграф1 {$параграф_1=4}]] ... <<endif>>
Скрины (большой размер):
спойлер…
Зараниее спасибо!
Неактивен
Приветствую! Добро пожаловать в клуб "тех, кто пишет RPG на AXMA"!
Сразу по приведённому кусочку кода:
<<if !$параграф_1>> ---- здесь, чтобы было понятнее, можно заменить на <<if $параграф_1 eq 0>> при условии, что где-то перед этим задано <<set $параграф_1 = 0>>
Какой-то текст
[[Действие1|Параграф1 {$параграф_1=1}]]
[[Действие2|Параграф1 {$параграф_1=2}]]
<<elseif !$параграф_1 eq 1>> ---- а вот тут ошибка, надо убрать восклицательный знак, оставить <<elseif $параграф_1 eq 1>> (! - это логическое отрицание, "не")
Какой-то текст
[[Действие1|Параграф1 {$параграф_1=3}]]
[[Действие2|Параграф1 {$параграф_1=4}]]
...
<<endif>>
А этот код
<<if $xp_vip eq 0>>
<<goto 'Смерть хр'>>
<<endif>>
попробуйте просто переместить в самый низ параграфа.
Неактивен
Morych написал:
А этот код
<<if $xp_vip eq 0>>
<<goto 'Смерть хр'>>
<<endif>>
попробуйте просто переместить в самый низ параграфа.
Да, это сработало Но теперь проблема другая: Тот экран, где у читателя отнимается последнее очко здоровья, не отображается. Выглядит не очень красиво, читал-читал человек, вдруг ни с того ни с сего бац и умер.
Хотелось бы, чтобы код работал так, чтобы последний параграф (где отображаются сведения о том, при каких обстоятельствах у игрока было отнято последнее очко здоровья) отображался, а уже потом появлялось сообщение о смерти.
Можно было бы как-то вывести этот текст на экран смерти тегом <<display>> или как-то так, но я же не знаю когда именно персонаж игрока умрет.
Получается, самое простое решение, прописывать к каждому условию <<if .... and $xp_vip neq 0>>?
Спасибо за исправления У меня все переменные в начале параграфа задаются, поэтому первый параграф с условием !$var, потому что иначе (если я задам <<set $var=0>>), при обновлении страницы (которое происходит при переходе по ссылке действия), мое значение будет сбрасываться на 0, если я правильно все понимаю. Либо писать: <<if !$var>><<set $var=0>><<endif>>, что, на мой взгляд, просто лишняя строчка кода.
Неактивен
Да, если ни с того ни с сего бац и умер, это, конечно, не очень хорошо.
Т.е. больничную палату и надпись "Здоровье -1" надо показать. Я так понимаю, там в зависимости от какого-то действия здоровье уменьшается (не согласился на клизму?)
Значит в конце этого параграфа ставим условие "если здоровье больше нуля", то показываем дальнейшие возможные действия, а иначе ставим единственную ссылку вроде "Далее" или "Почувствовать себя хуже". И эта ссылка, конечно же, ведёт на параграф "Смерть хр".
Таким образом можно сделать такую проверку на смерть только там, где уменьшается здоровье, и смерть теоретически возможна.
Неактивен
Вопрос: можно ли в профессиональной версии АХМА пользоваться скриптами jQuery для оформления абзацев?
Вот такими, например.
Неактивен
По идее, можно. Но придётся вручную править html файл (включать туда ссылки на js-скрипты). Автоматическое внесение изменение в html пока не предусмотрено, поэтому в библиотеке такой модифицированный файл разместить не удастся.
Неактивен
Подскажите, пжл., а что значит в профессиональной версии пункт: Лицензия на редактирование сгенерированного HTML файла. Т.е. я смогу редактировать сгенерированные файлы html?
Неактивен
Alex842 написал:
Подскажите, пжл., а что значит в профессиональной версии пункт: Лицензия на редактирование сгенерированного HTML файла. Т.е. я смогу редактировать сгенерированные файлы html?
Да, именно так. В обычной версии это запрещено.
Неактивен
Alex842 написал:
А как это сделать? Просто я решил поддержать Вашу разработку и приобрел про-версию. Но как в ней редактировать хтмл-файл я не понимаю.
Редактировать непосредственно из программы можно только параграф стилей StoryStyle. Готовый HTML придётся редактировать в любом стороннем текстовом редакторе, поддерживающем кодировку UTF-8.
Неактивен
DoubleDragon написал:
Alex842 написал:
А как это сделать? Просто я решил поддержать Вашу разработку и приобрел про-версию. Но как в ней редактировать хтмл-файл я не понимаю.
Редактировать непосредственно из программы можно только параграф стилей StoryStyle. Готовый HTML придётся редактировать в любом стороннем текстовом редакторе, поддерживающем кодировку UTF-8.
Понятно. Спасибо!
Неактивен
Уважаемые знатоки, вопрос от нубья. Вот я в AXMA Story Maker делаю креатив по типу интерактивного рассказа с "ветвящимся" по переходам сюжетом. При выборе одного из вариантов перехода (к примеру, [[+Действие 1|Вариант 1]], [[+Действие 2|Вариант 2]], и [[+Действие 3|Вариант 3]]) части рассказа выстраиваются единым текстом, одна за другой - так, как мне хотелось бы для удобочитаемости. Но при этом при выборе Действие 1 никуда не исчезают Действие 2 и Действие 3 соответственно. А возможно ли сделать так, чтобы при выборе одного варианта перехода другие исчезали либо становились "неактивными", и воспользоваться ими можно было бы только при повторном запуске рассказа (т.е. чтобы рассказ был "необратим", но при этом выбираемые части выстраивались друг за другом в единый текст, а не сменяли одна другую)?
В случае если выше это уже рассматривалось - прощения прошу ).
Неактивен
Мартын Вачикпян написал:
Уважаемые знатоки, вопрос от нубья. Вот я в AXMA Story Maker делаю креатив по типу интерактивного рассказа с "ветвящимся" по переходам сюжетом. При выборе одного из вариантов перехода (к примеру, [[+Действие 1|Вариант 1]], [[+Действие 2|Вариант 2]], и [[+Действие 3|Вариант 3]]) части рассказа выстраиваются единым текстом, одна за другой - так, как мне хотелось бы для удобочитаемости. Но при этом при выборе Действие 1 никуда не исчезают Действие 2 и Действие 3 соответственно. А возможно ли сделать так, чтобы при выборе одного варианта перехода другие исчезали либо становились "неактивными", и воспользоваться ими можно было бы только при повторном запуске рассказа (т.е. чтобы рассказ был "необратим", но при этом выбираемые части выстраивались друг за другом в единый текст, а не сменяли одна другую)?
В случае если выше это уже рассматривалось - прощения прошу ).
Прошу прощения за поздний ответ, я тут был довольно далеко от компа. Такой ундумоподобный стиль как бы противоречит идеологии АСМа, при которой текст предыдущего параграфа как раз должен стираться. Но с добавляющими ссылками можно сделать, например, так:
:: StoryAuthor Morych :: StoryTitle Сплошной текст :: StorySubtitle Заготовка интерактивной истории. :: Start [[Начало|начало]] :: начало <<set $selected_1 = false>> <<set $selected_2 = false>> <<set $selected_3 = false>> Начало истории. [[+Действие 1|развилка1 {$action = 1}]] [[+Действие 2|развилка1 {$action = 2}]] [[+Действие 3|развилка1 {$action = 3}]] :: развилка1 <<if not $selected_1>> <<if $action eq 1>> Первый вариант развития событий. [[+Действие 1|развилка2 {$action = 1}]] [[+Действие 2|развилка2 {$action = 2}]] <<elseif $action eq 2>> Второй вариант событий. [[+Действие 1|развилка2 {$action = 3}]] [[+Действие 2|развилка2 {$action = 4}]] <<else>> Ну и третий вариант. [[+Действие 1|развилка2 {$action = 5}]] <<endif>> <<set $selected_1 = true>> <<endif>> :: развилка2 <<if not $selected_2>> <<if $action eq 1>> Продолжение первого пути. [[+Действие 1|финал {$action = 3}]] <<elseif $action eq 2>> Второе продолжение первого пути. [[+Действие 1|финал {$action = 2}]] [[+Действие 2|финал {$action = 5}]] <<elseif $action eq 3>> Первый вариант продолжения второго пути. [[+Действие 1|финал {$action = 1}]] [[+Действие 2|финал {$action = 2}]] <<elseif $action eq 4>> Второй вариант продолжения второго же пути. [[+Действие 1|финал {$action = 4}]] <<else>> Продолжение третьего пути. [[+Действие 1|финал {$action = 5}]] [[+Действие 2|финал {$action = 3}]] <<endif>> <<set $selected_2 = true>> <<endif>> :: финал <<if not $selected_3>> <<if $action eq 1>> Первый финал. <<elseif $action eq 2>> Второй финал. <<elseif $action eq 3>> Третий финал. <<elseif $action eq 4>> Четвёртый финал. <<else>> Пятый финал. <<endif>> <<set $selected_3 = true>> [[Начать заново|начало]] <<endif>>
Это первое, что пришло в голову. Подумаю ещё.
Неактивен
Доброго времени суток. Я только-только начал знакомство с программой и уже возник такой вопрос. По ходу сюжета мне нужно что бы выйдя из комнаты (которая является постоянной и гг. будет в неё возвращаться) к примеру, в коридор гг. попадал в обязательное ответвление, для знакомства с персонажем которого он если бы я не направил его так он мог бы и пропустить и по возвращении с этого побочного «знакомства» он больше туда из комнаты не мог вернуться (тесть ссылка на эту часть исчезла и была заменена обычным выходом в коридор)
Обычная Комната – (параграф с сюжетным коридором) –обычный коридор –обычная комната (сюжетный коридор мы больше не видим)
Неактивен
Василий Новойдарский написал:
Доброго времени суток. Я только-только начал знакомство с программой и уже возник такой вопрос. По ходу сюжета мне нужно что бы выйдя из комнаты (которая является постоянной и гг. будет в неё возвращаться) к примеру, в коридор гг. попадал в обязательное ответвление, для знакомства с персонажем которого он если бы я не направил его так он мог бы и пропустить и по возвращении с этого побочного «знакомства» он больше туда из комнаты не мог вернуться (тесть ссылка на эту часть исчезла и была заменена обычным выходом в коридор)
Обычная Комната – (параграф с сюжетным коридором) –обычный коридор –обычная комната (сюжетный коридор мы больше не видим)
Привет! Если я правильно понял, то можно так:
:: Start <<set $коридор = 0>> [[Начать игру|Комната]] :: Комната Описание комнаты. <<if $коридор eq 0>> [[Выйти из комнаты|СюжетныйКоридор]] <<else>> [[Выйти из комнаты|Коридор]] <<endif>> :: СюжетныйКоридор Описание знакомства. <<set $коридор = 2>> [[Вернуться в комнату|Комната]] :: Коридор Описание обычного коридора. <<set $коридор = 1>> [[Вернуться в комнату|Комната]]
Неактивен
Morych написал:
Привет! Если я правильно понял, то можно так:
Спасибо большое помогло.
Неактивен
Я сразу хочу извиняться, понимаю, что справку легче прочесть и прочее, но я там, что-то туго информацию воспринимаю. Мне всегда было проще если мне что-то объясняли.
В общем, с
Первое это ввести скажем так «Усталость» персонажа, ну к примеру, что бы за сутки он мог совершить ограниченное количество действий (нарубить дров, натаскать воды, потренироваться) и что бы количество очков действий со временем росло (то есть что бы характеристики в совокупности своей влияли на эту "усталость" ну или, что бы не усложнять жизнь зависела она от характеристики "выносливость")
Второе это ввести проверку на объекты которые на нем (например, одел он броню, взял меч - может сходить в пещеру, которая без наличия эквпипа просто была бы не доступна, но с другой стороны в броне и при оружии его не пустят к старейшине, то есть локация "старейшина" не доступна) и в то же время в броне он выглядит внушительно, то есть у некоторых НПС появляются новые ветки диалогов.
Третье наложить на это все еще и проверку характеристик (то есть броню он не может носить, пока у него нет определенного значения силы, а что бы её повысить нужно к примеру, поколоть дрова)
И последние отношения с НПС (то есть понравилась к примеру, нашему гг. Василиса и пошел он для неё подвиги совершать, подарки дарить, улучшая тем самым её отношение к себе, а на определенном моменте открывается спец. квест от неё, по выполнении которого герой получает возможность дальнейшего развития отношений то есть появляются новые ветки диалога)
И возник новый вопрос, можно ли как то числовое значение навыка прикрыть словом? ( к примеру Сила =1, а на параграфе где стоят характеристики навыки отображается Сила - "Хилый")
И еще парочка вопросов, в которых за ночь так и не смог разобраться:
Первый я создал отдельный параграф с описанием характеристик, персонажей, подсказками, доступный из любой локации но вот как сделать обратный переход не пойму.
Второй как сделать смену дня и ночи, что бы было разделение на утро, день, вечер и ночь (хочу завязать появление некоторых квестов на определенное время суток) ну и соответственно как сделать глобальный перезапуск тобишь гг лег спать, очки действий обновились (возможно произошли какие то события пока он спал)
Понимаю, что прошу многовато, до чего-то может и сам дойду, но пока не получается. Захотелось сделать что-то в стиле олдскульных РПГ, только в текстовом варианте, и в древнерусской стилистике.
Скажу сразу боевку пока даже и не планирую, скорее это будет что то типа квеста.
Отредактировано Василий Новойдарский (25.07.2014 07:01)
Неактивен
Вопросов много, будем разбираться по порядку.
Василий Новойдарский написал:
можно ли как то числовое значение навыка прикрыть словом? ( к примеру Сила =1, а на параграфе где стоят характеристики навыки отображается Сила - "Хилый")
Самый очевидный вариант — выводить нужное слово через блок условий.
<<random $sila = 5>> (случайное значение силы от 0 до 5)
В параграфе характеристик:
Сила: <<if $sila eq 0>>вялый<<elseif $sila eq 1>>хилый<<elseif $sila eq 2>>слабый<<elseif $sila eq 3>>не такой уж и слабый<<elseif $sila eq 4>>сильный<<else>>наисильнейший<<endif>>
Более прикольный вариант — сделать через массив:
<<set $silaText = ["вялый", "хилый", "слабый", "не такой уж и слабый", "сильный", "наисильнейший"]>> (этот массив объявить в самом начале игры)
В параграфе характеристик:
Сила: <<print $silaText[$sila]>>
Но здесь уже надо следить, чтобы значение переменной $sila не ушло за пределы диапазона 0...5 (тогда как в варианте с условиями при запредельной силе всё равно будет выводиться "наисильнейший").
Неактивен
Василий Новойдарский написал:
«Усталость» персонажа, ну к примеру, что бы за сутки он мог совершить ограниченное количество действий (нарубить дров, натаскать воды, потренироваться) и что бы количество очков действий со временем росло (то есть что бы характеристики в совокупности своей влияли на эту "усталость" ну или, что бы не усложнять жизнь зависела она от характеристики "выносливость")
В параграфе, который запускается каждый раз после сна:
<<set $ustal = $sila * 3 + $vynos * 5>> (определяем "усталость" — она зависит от силы и в большей степени от выносливости)
В параграфе, где возможны тренировки:
<<if $ustal gte 5>>
[[Натаскать воды|ТаскатьВоду]]
<<endif>>
<<if $ustal gte 10>>
[[Наколоть дров|КолотьДрова]]
<<endif>>
<<if $ustal gte 15>>
[[Потренироваться|Тренироваться]]
<<endif>>
В каждом из параграфов-тренировок уменьшаем "усталость", например, для дров:
Схватил тут наш <<print $name>> топор, да как принялся им помахивать, только щепки от дров летят во все стороны. Притомился малость, зато все дрова переколол да в поленницу их уложил.
<<set $ustal = $ustal - 10>> (уменьшаем "усталость")
<<set $sila = $sila + 1>> (но, допустим, это занятие прибавило силы)
Если надо, можно ввести ещё переменную-признак для каждой тренировки, чтобы нельзя было колоть дрова несколько раз в день:
<<if $ustal gte 10 and not $drova>>
[[Наколоть дров|КолотьДрова]]
<<endif>>
После сна ставим <<set $drova = false>> а после рубки дров <<set $drova = true>>
Неактивен
Morych написал:
<<random $sila = 5>> (случайное значение силы от 0 до 5)
В параграфе характеристик:
Сила: <<if $sila eq 0>>вялый<<elseif $sila eq 1>>хилый<<elseif $sila eq 2>>слабый<<elseif $sila eq 3>>не такой уж и слабый<<elseif $sila eq 4>>сильный<<else>>наисильнейший<<endif>>
Сразу такой вопрос, а к примеру можно сделать диапазон значений (ну что бы к примеру Вялый был от 0 до 10)
Неактивен
Василий Новойдарский написал:
я создал отдельный параграф с описанием характеристик, персонажей, подсказками, доступный из любой локации но вот как сделать обратный переход
Можно использовать стандартный макрос <<return 'Закрыть подсказку'>> (выводит ссылку, которая возвращает на предыдущий параграф)
Василий Новойдарский написал:
как сделать смену дня и ночи, что бы было разделение на утро, день, вечер и ночь (хочу завязать появление некоторых квестов на определенное время суток) ну и соответственно как сделать глобальный перезапуск тобишь гг лег спать, очки действий обновились (возможно произошли какие то события пока он спал)
Нужно ввести переменную "время", которая будет принимать значения от 0 до 23:
<<set $time = 7>> (игра начинается с 7 утра)
И ещё нам понадобятся:
<<set $timeAdd = 0>> (переменная для увеличения времени)
<<set $day = 0>> (переменная для подсчёта прошедших игровых дней, если надо)
Теперь заводим отдельный параграф для увеличения времени:
:: ПрошлоВремя
<<set $time = $time + $timeAdd>>
<<set $timeAdd = 0>>
<<if $time gt 23>>
<<set $time = $time - 24>>
<<set $day = $day + 1>>
<<endif>>
При каждом продолжительном действии надо вызывать этот параграф, предварительно задав значение переменной $timeAdd. Например, при рубке дров:
...все дрова переколол да в поленницу их уложил.
<<set $timeAdd = 2>>
<<display 'ПрошлоВремя'>> (незаметно прошло 2 часа)
Действия зависящие от времени суток:
<<if $time lt 5 or $time gt 21>>
[[Посетить сеновал|Сеновал]] (на сеновал можно отправиться только в тёмное время суток)
<<endif>>
Вот в то же самое тёмное время суток можно отправиться спать. Везде, где герой может прилечь, поставь такую же ссылку, зависящую от времени, которая отправляет на параграф "Сон".
:: Сон
<<random $timeAdd = 3>>
<<set $timeAdd = $timeAdd + 5>>
<<set $ustal = $sila * 3 + $vynos * 5 + $timeAdd * 2>> (чем больше поспал, тем больше очков действия)
<<display 'ПрошлоВремя'>> (герой поспал от 5 до 8 часов)
<<random $rnd = 99>>
<<if $rnd lt 35>>
За это время случилось событие, которое может случиться с вероятностью 35%.
<<endif>>
<<return 'Проснуться'>> (возвращаемся на предыдущий параграф, где и засыпали)
Неактивен
Василий Новойдарский написал:
можно сделать диапазон значений (ну что бы к примеру Вялый был от 0 до 10)
Вот знал, что сразу надо про диапазоны написать
Сила: <<if $sila lte 10>>вялый<<elseif $sila lte 20>>хилый<<elseif $sila lte 30>>слабый<<elseif $sila lte 40>>не такой уж и слабый<<elseif $sila lte 50>>сильный<<else>>наисильнейший<<endif>>
lte — меньше либо равно
Неактивен
Уххх спасибо огромное сильно выручили. Я за эти 40 минут продвинулся дальше, чем за всю ночь (а ведь залип даже и не заметил как утро настало, благо отпуск)
Неактивен
Доброго времени суток. Такой вопрос, по поводу параграфа характеристик с которого нужно вернуться на предыдущую локацию. Если я для каждого персонажа сделал отдельный параграф с описанием, то по возвращении на параграф "Характеристики" ссылка типа <<return 'Назад'>> перестает возвращать в игру.
Неактивен
Вопрос по макросу "goto".
В описании сказано: "Этот макрос совершает мгновенный переход на указанный параграф, прерывая выполнение текущего параграфа"
Пример:
Параграф_0
<<if $условие eq 10>>
<<goto 'Параграф_1'>>
<<endif>>
Какой-то текст
Если $условие равно десяти происходит переход на "Параграф_1" и отображается текст как из "Параграфа_1", так и из "Параграфа_0". Так и должно быть? Я понимал, что исходя из "прерывая выполнение текущего параграфа" текст из "Параграфа_0" не должен отображаться.
Неактивен
Вроде не нашла тут подобный вопрос.
Столкнулась с проблемой в циклах.
У меня есть некий массив, список одежды в гардеробе. Он не постоянный, меняется при получении новой вещи или выбрасывания старой.
При заходе в шкаф хочу сделать возможность одеть эту вещь.
Следующий код по логике выглядит рабочим
$одежда[0] - то, что прямо сейчас надето.
<<set $i=0>> <<if $гардероб.length > 0>> <<loop $гардероб.length>> <<set $вещь = $гардероб[$i]>> <<if $вещь != $одежда[0] >> [[-надеть|шкаф {$одежда[0] = $вещь}]] вещь = <<print $вещь>>, i = <<print $i>>, гардероб = <<print $гардероб[$i]>> <<endif>> <<set $i++>> <<endloop>> <<endif>>
Но в реальности оказывается, что {$одежда[0] = $вещь} в ссылке в любом случае получается равной последнему элементу списка, хотя выводимые значения под ссылкой показаны верны.
Получается, что при создании ссылок с изменением величин на используется последнее значение этой величины.
Или это я тормоз и что-то не то делаю и не так понимаю, или это и вправду не очень удобный косяк
Неактивен
Aruny написал:
Вроде не нашла тут подобный вопрос.
Столкнулась с проблемой в циклах.
У меня есть некий массив, список одежды в гардеробе. Он не постоянный, меняется при получении новой вещи или выбрасывания старой.
При заходе в шкаф хочу сделать возможность одеть эту вещь.
Следующий код по логике выглядит рабочим
$одежда[0] - то, что прямо сейчас надето.Код:
<<set $i=0>> <<if $гардероб.length > 0>> <<loop $гардероб.length>> <<set $вещь = $гардероб[$i]>> <<if $вещь != $одежда[0] >> [[-надеть|шкаф {$одежда[0] = $вещь}]] вещь = <<print $вещь>>, i = <<print $i>>, гардероб = <<print $гардероб[$i]>> <<endif>> <<set $i++>> <<endloop>> <<endif>>Но в реальности оказывается, что {$одежда[0] = $вещь} в ссылке в любом случае получается равной последнему элементу списка, хотя выводимые значения под ссылкой показаны верны.
Получается, что при создании ссылок с изменением величин на используется последнее значение этой величины.
Или это я тормоз и что-то не то делаю и не так понимаю, или это и вправду не очень удобный косяк
Вы всё понимаете абсолютно правильно, но в то же время это и не косяк. Во многих случаях нужно, чтобы в качестве параметра в ссылке передавалось именно текущее значение переменной. Текущее на момент нажатия ссылки игроком, а не на момент вывода ссылки на экран. Я тоже сразу же столкнулся с этой особенностью, когда делал свой инвентарь. Я решаю это следующим образом:
- добавляем в игру много однотипных параграфов вида:
:: вещь_0 [[-надеть|шкаф {$индекс = 0}]] :: вещь_1 [[-надеть|шкаф {$индекс = 1}]] :: вещь_255 [[-надеть|шкаф {$индекс = 255}]]
- в цикле используем дисплей, чтобы показать параграф с нужной ссылкой
<<set $i=0>> # <<if $гардероб.length > 0>> -- эта проверка не обязательна <<loop $гардероб.length>> <<set $вещь = $гардероб[$i]>> <<if $вещь neq $одежда[0]>> <<set $ссылка = "вещь_" + $i>> <<display $ссылка>> вещь = <<print $вещь>>, i = <<print $i>>, гардероб = <<print $гардероб[$i]>> <<endif>> <<set $i++>> <<endloop>>
Теперь все ссылки передают разные значения параметра, и в параграфе "шкаф" надеваем вещь $гардероб[$индекс]. Число мини-параграфов со ссылками равно максимальному теоретическому числу элементов массива $гардероб. Это число вам, скорее всего, будет известно — количество всех предметов одежды в игре.
Неактивен
Да я так же вышла из положения - при выводе информации о вещи выставляю типа "если зашли из шкафа, то выводим возможность надеть", "если зашли из магазина, то выводим информацию о возможности купить".
Просто так получается множество однотипных лишних строк, которые можно было бы уместить в одну. Двадцать вещей - двадцать строк вида [[надеть|шкаф {$одежда = ...}]] и ещё двадцать на покупку. И ещё двадцать на выброс...
Никакой оптимизации кода и уважения к ресурсам
Неактивен
Aruny написал:
Да я так же вышла из положения - при выводе информации о вещи выставляю типа "если зашли из шкафа, то выводим возможность надеть", "если зашли из магазина, то выводим информацию о возможности купить".
Просто так получается множество однотипных лишних строк, которые можно было бы уместить в одну. Двадцать вещей - двадцать строк вида [[надеть|шкаф {$одежда = ...}]] и ещё двадцать на покупку. И ещё двадцать на выброс...
Никакой оптимизации кода и уважения к ресурсам
А попробуйте использовать ссылки вида: [[$текстСсылки|$переход {$одежда = ...}]]
Перед циклом задаём <<set $текстСсылки = "надеть">> <<set $переход = "шкаф">> или <<set $текстСсылки = "купить">> <<set $переход = "бутик">>
Можно сделать ещё понятнее для игрока, если устанавливать <<set $текстСсылки = "Надеть " + $вещь>> (только названия вещей нужно изначально задать в винительном падеже)
Неактивен
Oldrik написал:
Вопрос по макросу "goto".
В описании сказано: "Этот макрос совершает мгновенный переход на указанный параграф, прерывая выполнение текущего параграфа"
Пример:
Параграф_0
<<if $условие eq 10>>
<<goto 'Параграф_1'>>
<<endif>>
Какой-то текст
Если $условие равно десяти происходит переход на "Параграф_1" и отображается текст как из "Параграфа_1", так и из "Параграфа_0". Так и должно быть? Я понимал, что исходя из "прерывая выполнение текущего параграфа" текст из "Параграфа_0" не должен отображаться.
Насколько я помню, текст старого параграфа после goto всё равно отображается под новым параграфом. Тут нужно мнение разработчика, а пока могу посоветовать:
:: Параграф_0 <<if $условие eq 10>> <<goto 'Параграф_1'>> <<else>> Какой-то текст <<endif>>
Неактивен
Да, действительно, это ошибка. Код после goto выполняется. Подумаю, что можно сделать.
Неактивен
Василий Новойдарский написал:
Доброго времени суток. Такой вопрос, по поводу параграфа характеристик с которого нужно вернуться на предыдущую локацию. Если я для каждого персонажа сделал отдельный параграф с описанием, то по возвращении на параграф "Характеристики" ссылка типа <<return 'Назад'>> перестает возвращать в игру.
Ссылка <<return>> возвращает на предыдущий параграф, который не всегда будет игровым при такой организации характеристик.
Можно сделать так:
:: Start <<set $currentPassage = $$title>> :: Характеристики <<if $$from neq "Характеристики" and $$from neq "Описание 1" and $$from neq "Описание 2" and $$from neq "Описание 3">> # В этом условии перечисляем названия всех параграфов, которые не являются игровыми, но могут быть предыдущими для параграфа "Характеристики" <<set $currentPassage = $$from>> <<endif>> [[Смотреть описание 1|Описание 1]] [[Смотреть описание 2|Описание 2]] [[Смотреть описание 3|Описание 3]] [[Назад в игру|$currentPassage]] :: Описание 1 Описание первого персонажа [[Назад|Характеристики]] :: Описание 2 Описание второго персонажа [[Назад|Характеристики]] :: Описание 3 Описание третьего персонажа [[Назад|Характеристики]]
В том случае, если характеристики доступны из меню, нужно в условие добавить: and $$from neq "StorySubtitle" and $$from neq "Об авторе", и другие параграфы, которые также доступны из меню. Кроме того, желательно все эти StoryMenu-параграфы переделать по аналогии с характеристиками (добавить условие и ссылку). Иначе ссылка характеристик "Назад в игру" будет возвращать не туда, если в игре сначала открыть "Об авторе", а потом "Характеристики".
Конечно же сам параграф "StorySubtitle" переделывать не нужно, там должно быть только описание игры и всё. Вместо этого нужно добавить новый параграф "Об игре", где уже выполнить <<display 'StorySubtitle'>>.
Вариант 2: вместо длинного условия в параграфе "Характеристики" можно в каждом игровом параграфе выполнять <<set $currentPassage = $$title>>
$$title (название текущего параграфа) и $$from (название предыдущего параграфа) — это системные переменные
Неактивен
Еще один вопрос :
По поводу рандомных событий.
Есть параграф со ссылками появляющимися при определенных условиях:
К примеру
::Перекресток <<if $sila lte 10 and ustal gte 15>> Иван собрался с силами и пошел в темноту леса. [[Идти в лес| Лес]] <<elseif $sila lte 15 and ustal gte 20>> Иван собрал всю волю в кулак, перехватил покрепче меч и зашел в источающее смрад, темное лоно пещеры. [[Идти в пещеру| Пещера]] <<endif>>
И вот в этот параграф я хочу добавить рандомные события которые бы при срабатывании перекрывали собой все доступные варианты.
Т.е. выйдя на перекресток наш герой внезапно наткнулся на дриаду сидящую на камне. И пока она с ней не поговорит остальные варианты не будут видны.
Неактивен
Василий Новойдарский написал:
хочу добавить рандомные события которые бы при срабатывании перекрывали собой все доступные варианты.
Т.е. выйдя на перекресток наш герой внезапно наткнулся на дриаду сидящую на камне. И пока она с ней не поговорит остальные варианты не будут видны.
И снова нам поможет макрос <<if>>
# Признаки для случайных событий: false - события не было, true - событие было <<set $event1 = false>> <<set $event2 = false>> :: Перекресток Иван вышел на перекресток, к большому и каменному камню. # Получаем случайное число от 0 до 10 <<random $event = 10>> <<if $event eq 1 and !$event1>> <<set $event1 = true>> И тут внезапно на камне появилась дриада. Иван хотел было дать дёру, но дриада молвила: -- Не пытайся дать дёру, добрый молодец, иначе я кину рут, а потом шадоу болт. Ваня понял, что ему остаётся только одно... [[Поговорить с дриадой|Дриада]] <<elseif $event eq 2 and !$event2>> <<set $event2 = true>> Другое случайное событие... <<else>> # Случайных событий не было, выводим список обычных действий На камне, конечно же, красовалась надпись: Налево -- тёмный лес (1 верста) Направо -- зловонная пещера (3 версты) <<if $sila lte 10 and $ustal gte 15>> [[Идти в лес|Лес]] <<endif>> <<if $sila lte 15 and $ustal gte 20>> [[Идти в пещеру|Пещера]] <<endif>> [[Побродить вокруг перекрёстка|Перекресток]] [[Вернуться в деревню|Деревня]] <<endif>>
Я расположил обычные действия в отдельных блоках if-endif, чтобы у игрока был выбор, пойти в лес или в пещеру, если параметры позволяют выбирать. А тексты описаний леса и пещеры лучше располагать в соответствующих параграфах.
Неактивен
Почему то эта конструкция выдает мне белый экран...
Неактивен
Василий Новойдарский написал:
Почему то эта конструкция выдает мне белый экран...
И точно, там проблема в условиях.
Нужно писать либо <<if $event eq 1 and !$event1>> либо <<if ($event eq 1) and (not $event1)>>
Сейчас подправлю и текст примера.
Неактивен
А как сделать слияние строк в переменную? Чтобы можно было выводить в ссылке типа [[согласиться на $money|agree1 ]] ? А то вариант [[согласиться на <<print $money>> |agree1 ]] выводит вместо переходной ссылки только это: <>
А [[согласиться на $money |agree1 ]] выводит "согласиться на asm_var0"
Ложная тревога.
Нашла
перед выводом ссылки сделать
<<set $i = "согласиться на " + $i >>
и в ссылке просто [[$i | agree1]]
Не привыкла складывать текст с числами
Отредактировано Aruny (02.08.2014 10:37)
Неактивен
А как сделать, чтобы нормально моноширинный был? А то {{{}}} не очень-то помогает, всё равно символы разной ширины получаются и из-за этого не могу выстроить лабиринт Немного, но сдвигаются ряды.
Или можно ли вывести символы из расширенной таблицы ASCII, там, где закрашенные прямоугольники?
И можно ли сделать, чтобы множественные пробелы не заменялись на один, а выводилось сколько их надо., или это ограничение HTML не обходится?
Неактивен
Aruny написал:
И можно ли сделать, чтобы множественные пробелы не заменялись на один, а выводилось сколько их надо., или это ограничение HTML не обходится?
Можно использовать неразрывные пробелы, АХМА их не режет.
Отредактировано Cheshire (02.08.2014 20:25)
Неактивен
Думаю, это не столько АСМ режет пробелы, сколько браузер убирает лишние по его мнению пробелы из текста.
Действительно, вместо пробелов в этом случае надо использовать а чтобы не набирать эту последовательность символов, можно выделить пробел(ы) в редакторе и нажать кнопку "Текст в символы HTML". Ну и любые символы Юникода, конечно, тоже можно использовать.
Неактивен
Morych написал:
Думаю, это не столько АСМ режет пробелы, сколько браузер убирает лишние по его мнению пробелы из текста.
Верно, прошу прощения за дезинформацию.
Неактивен
Спасибо Но добавить символы типа этого ▒ (альт+177) почему-то не получилось и на тоже что-то "компилятор" ругается
И моноширинный текст на самом деле не моноширинный.
Вышла из положения чисто по женски - подобрала символы, совпадающие по ширине. То есть в заглавной букве "Ш" умещается четыре точки подряд (....), а значок человечка - три символа: .о.
Зато теперьу меня есть двумерный лабиринт
Неактивен
Aruny написал:
Спасибо Но добавить символы типа этого ▒ (альт+177) почему-то не получилось и на тоже что-то "компилятор" ругается
И моноширинный текст на самом деле не моноширинный.
Вышла из положения чисто по женски - подобрала символы, совпадающие по ширине. То есть в заглавной букве "Ш" умещается четыре точки подряд (....), а значок человечка - три символа: .о.
Зато теперьу меня есть двумерный лабиринт
Поздравляю! Когда можно будет поиграть?
А вообще любопытно взглянуть на код, должно всё получаться и с символами, и с моноширинным шрифтом. Сейчас могу предположить, что внутри текста, помеченного как моноширинный, встречаются конструкции <<if>>...<<endif>> или <<loop>> - они сбивают форматирование. Выход - сначала формировать цельные строки лабиринта, и только потом делать <<print $labirint>>.
Неактивен
Поиграть конкретно в пишущуюся вряд ли получится... очень большие сомнения, что у меня хватит усидчивости, творческого порыва и фантазии закончить, а во вторых, рейтинг 18++ и гарантированно не пройдёт цензуру.
Что поменьше, по своим рассказам, может и буду делать, но уже позже.
И да, там именно в выводе присутствуют макросы <if>
Код выкладываю не кодом из файла, а как в редакторе.
Предварительно устанавливаем переменные
задаем переменные # список "открытых" мест на карте - куда можно пойти (маг, трущобы, ворота - открыты по умолчанию) # [0] - начальная локация. 0 - не открыта. #таверна[0] - известно ли о таверне (0 нет, 1 да) <<set $таверна = [0, 0]>> <<set $дом_константина = []>> <<set $дом_константина[0] = 0>> <<set $ночлежка = []>> <<set $ночлежка[0] = 0>> <<set $бордель = []>> <<set $бордель[0] = 0>> <<set $рынок = []>> <<set $рынок[0] = 0>> <<set $больница = []>> <<set $больница[0] = 0>> # для гуляния по городу #[0] - персонаж, [1] - ворота, 2 - маг, 3 - Константин, 4 - рынок 5 -ночлежка 6 - бордель 7-таверна <<set $координаты = [0, 59, 325, 111, 165, 294, 183, 288]>> #ширина города <<set $xmax=20>> #сам город, задаём только карту. 0 - прохода нет, 'x' - проход есть <<set $город=[0,0,0,0,0,'x',0,0,'x',0,0,0,'x',0,0,0,'x',0,0,0,0,0,0,0,0,'x',0,0,'x',0,0,0,'x',0,0,0,'x',0,0,0,0,0,0,0,0,'x',0,0,'x','x','x','x','x','x','x','x','x','x','x','x',0,0,0,0,0,'x',0,0,'x',0,0,'x',0,0,'x',0,0,'x',0,0,0,0,0,0,0,'x',0,0,'x',0,0,'x',0,0,'x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x',0,0,0,'x',0,0,0,0,'x',0,0,'x',0,0,'x',0,0,'x',0,'x','x','x',0,'x',0,0,0,0,'x',0,0,'x',0,0,'x',0,0,'x',0,'x',0,0,0,'x',0,0,0,0,'x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x',0,0,'x',0,0,'x',0,'x',0,'x',0,'x',0,0,0,0,'x','x','x','x',0,0,'x','x','x','x',0,'x','x','x',0,'x',0,0,0,0,'x','x','x','x',0,0,'x',0,0,0,0,'x',0,0,0,'x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x',0,'x',0,0,'x',0,0,'x',0,0,'x',0,0,0,'x',0,'x',0,0,'x',0,'x',0,0,'x',0,0,'x',0,0,'x',0,0,'x','x',0,'x',0,0,'x',0,'x',0,0,'x',0,0,'x',0,0,'x',0,0,'x',0,0,'x','x','x','x',0,'x','x','x','x','x','x','x','x','x','x','x','x','x',0,0,'x',0,0,'x',0,'x',0,0,'x',0,0,'x',0,0,'x',0,0,'x','x','x','x','x','x','x',0,'x',0,0,'x',0,0,'x',0,0,'x','x','x','x',0,0,'x','x','x','x',0,'x',0,0,'x',0,0,'x',0,0,'x',0,0,0,0,0,'x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x']>> #задаём места в городе <<set $город[59]=1>> <<set $город[325]=2>> <<set $город[111]=3>> <<set $город[165]=4>> <<set $город[294]=5>> <<set $город[183]=6>> <<set $город[288]=7>> <<set $flag = false>> <<set $откуда='ворота в город 1'>> <<if $откуда=='ворота в город 1'>> <<set $координаты[0] = 59>> <<elseif $откуда=='дом мага 1'>> <<set $координаты[0] = 325>> <<elseif $откуда=='дом Константина 1'>> <<set $координаты[0] = 111>> <<elseif $откуда=='рынок 1'>> <<set $координаты[0] = 165>> <<elseif $откуда=='ночлежка 1'>> <<set $координаты[0] = 183>> <<elseif $откуда=='бордель 1'>> <<set $координаты[0] = 288>> <<endif>> [[погулять по городу|гулять город 1]]
теперь сам параграф гуляния
<<set $flag=0>> <<set $flag2=0>> вы начали от <<print $откуда>> <<nop>> <<set $w="Ш">> <<set $q="....">> <<set $me=".ö.">> <<set $i=0>> <<set $j=0>> <<loop $город.length>> <<if $i==$координаты[0]>> <<print $me>> <<if $город[$i] > 0>> <<set $flag=1>> <<set $flag2=$город[$i]>> <<endif>> <<else>> <<if $город[$i] == 0 >> <<print $w>> <<elseif $город[$i] == 'x'>> <<print $q>> <<else>> <<if $город[$i] == 1>> .<<print ($город[$i])>>. <<endif>> <<if $город[$i] == 2>> .<<print ($город[$i])>>. <<endif>> <<if $город[$i] == 3>> <<if $дом_Константина[0]>0 >> .<<print ($город[$i])>>. <<else>><<print $q>><<endif>><<endif>> <<if $город[$i] == 4 >> <<if $рынок[0]>0 >> .<<print ($город[$i])>>. <<else>><<print $q>><<endif>><<endif>> <<if $город[$i] == 5 >><<if $ночлежка[0]>0 >> .<<print ($город[$i])>>. <<else>><<print $q>><<endif>><<endif>> <<if $город[$i] == 6 >><<if $бордель[0]>0 >> .<<print ($город[$i])>>. <<else>><<print $q>><<endif>><<endif>> <<if $город[$i] == 7 >><<if $таверна[0]>0 >> .<<print ($город[$i])>>. <<else>><<print $q>><<endif>><<endif>> <<endif>> <<endif>> <<set $i++>> <<set $j++>> <<if $j == $xmax>> <<set $j=0>><<br>> <<endif>> <<endloop>> <<if $город[$координаты[0]-1] != 0>> [[-влево|гулять город 1{$координаты[0] = $координаты[0]-1}{$flag=0}{$flag2=0}]] <<else>> влево <<endif>> <<if $город[$координаты[0]+1] != 0>> [[-вправо|гулять город 1{$координаты[0] = $координаты[0]+1}{$flag=0}{$flag2=0}]] <<else>> вправо <<endif>> <<if $город[$координаты[0]+$xmax] != 0>> [[-вниз|гулять город 1{$координаты[0] = $координаты[0]+$xmax}{$flag=0}{$flag2=0}]] <<else>> вниз <<endif>> <<if $город[$координаты[0]-$xmax] != 0>> [[-вверх|гулять город 1{$координаты[0] = $координаты[0]-$xmax}{$flag=0}{$flag2=0}]] <<else>> вверх <<endif>> <<br>> #выводим "легенду" 1 - ворота в город, 2 - дом мага <<if $дом_Константина[0]>0 >>, 3 - дом Константина<<endif>> <<if $рынок[0]>0 >>, 4 - рынок<<endif>> <<if $ночлежка[0]>0 >>, 5 - ночлежка<<endif>> <<if $бордель[0]>0 >>, 6 - бордель<<endif>> <<if $таверна[0]>0 >>, 7 - таверна<<endif>> <<endnop>> <<if $flag == 1>> <<if $flag2==1>> === вы вышли к воротам в город === # [[перейти к воротам|ворота в город 1]] <<endif>> <<if $flag2==2>> === вы вышли к дому мага === # [[перейти к дому мага|дом мага 1]] <<endif>> <<if $flag2==3>> === вы вышли к дому Константина === # [[перейти к дому Константина|дом Константина 1]] <<endif>> <<if $flag2==4>> === вы вышли к рынку === <<set $рынок[0]=1>> # [[перейти к рынку|рынок 1]] <<endif>> <<if $flag2==5>> === вы вышли к ночлежке === <<set $ночлежка[0]=1>> # [[перейти к ночлежке|ночлежка 1]] <<endif>> <<if $flag2==7>> === вы вышли к таверне === <<set $таверна[0]=1>> # [[перейти к таверне|ночлежка 1]] <<endif>> <<endif>> [[-вернуться в начальную точку|$откуда]]
для удобства задания карты города сначала рисую типа такого и потом убрать комментарии, перевод строк и сменить 1 на 'x':
# матрица для рисования города #0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0, #0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0, #0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1, #0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0, #0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1, #1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0, #1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1,0, #1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0, #1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, #1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0, #1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,1,0, #1,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0, #1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, #1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0, #1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,0,0, #1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1, #1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0, #1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1, #1,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1, #1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,1,1, #1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
Неактивен
Aruny написал:
И да, там именно в выводе присутствуют макросы <if>
Ну вот об этом я и говорил. Я чуть-чуть подправил:
<<set $flag=0>> <<set $flag2=0>> вы начали от <<print $откуда>> <<nop>> <<set $w="▒">> <<set $q=" ">> <<set $me="ö">> <<set $i=0>> <<set $j=0>> # строка для "сборки" карты <<set $screen = "">> <<loop $город.length>> <<if $i==$координаты[0]>> <<set $screen = $screen + $me>> <<if $город[$i] > 0>> <<set $flag=1>> <<set $flag2=$город[$i]>> <<endif>> <<else>> <<if $город[$i] == 0 >> <<set $screen = $screen + $w>> <<elseif $город[$i] == 'x'>> <<set $screen = $screen + $q>> <<else>> <<if $город[$i] == 1>> <<set $screen = $screen + $город[$i]>> <<endif>> <<if $город[$i] == 2>> <<set $screen = $screen + $город[$i]>> <<endif>> <<if $город[$i] == 3>> <<if $дом_Константина[0]>0 >> <<set $screen = $screen + $город[$i]>> <<else>> <<set $screen = $screen + $q>> <<endif>> <<endif>> <<if $город[$i] == 4 >> <<if $рынок[0]>0 >> <<set $screen = $screen + $город[$i]>> <<else>> <<set $screen = $screen + $q>> <<endif>> <<endif>> <<if $город[$i] == 5 >> <<if $ночлежка[0]>0 >> <<set $screen = $screen + $город[$i]>> <<else>> <<set $screen = $screen + $q>> <<endif>> <<endif>> <<if $город[$i] == 6 >><<if $бордель[0]>0 >> <<set $screen = $screen + $город[$i]>> <<else>> <<set $screen = $screen + $q>> <<endif>> <<endif>> <<if $город[$i] == 7 >><<if $таверна[0]>0 >> <<set $screen = $screen + $город[$i]>> <<else>> <<set $screen = $screen + $q>> <<endif>> <<endif>> <<endif>> <<endif>> <<set $i++>> <<set $j++>> <<if $j == $xmax>> <<set $j=0>> <<set $screen = $screen + "<br>">> <<endif>> <<endloop>> ==={{{<<print $screen>>}}}=== <<if $город[$координаты[0]-1] != 0>> [[-влево|гулять город 1{$координаты[0] = $координаты[0]-1}{$flag=0}{$flag2=0}]] <<else>> влево <<endif>> <<if $город[$координаты[0]+1] != 0>> [[-вправо|гулять город 1{$координаты[0] = $координаты[0]+1}{$flag=0}{$flag2=0}]] <<else>> вправо <<endif>> <<if $город[$координаты[0]+$xmax] != 0>> [[-вниз|гулять город 1{$координаты[0] = $координаты[0]+$xmax}{$flag=0}{$flag2=0}]] <<else>> вниз <<endif>> <<if $город[$координаты[0]-$xmax] != 0>> [[-вверх|гулять город 1{$координаты[0] = $координаты[0]-$xmax}{$flag=0}{$flag2=0}]] <<else>> вверх <<endif>> <<br>> #выводим "легенду" 1 - ворота в город, 2 - дом мага <<if $дом_Константина[0]>0 >>, 3 - дом Константина<<endif>> <<if $рынок[0]>0 >>, 4 - рынок<<endif>> <<if $ночлежка[0]>0 >>, 5 - ночлежка<<endif>> <<if $бордель[0]>0 >>, 6 - бордель<<endif>> <<if $таверна[0]>0 >>, 7 - таверна<<endif>> <<endnop>> <<if $flag == 1>> <<if $flag2==1>> === вы вышли к воротам в город === # [[перейти к воротам|ворота в город 1]] <<endif>> <<if $flag2==2>> === вы вышли к дому мага === # [[перейти к дому мага|дом мага 1]] <<endif>> <<if $flag2==3>> === вы вышли к дому Константина === # [[перейти к дому Константина|дом Константина 1]] <<endif>> <<if $flag2==4>> === вы вышли к рынку === <<set $рынок[0]=1>> # [[перейти к рынку|рынок 1]] <<endif>> <<if $flag2==5>> === вы вышли к ночлежке === <<set $ночлежка[0]=1>> # [[перейти к ночлежке|ночлежка 1]] <<endif>> <<if $flag2==7>> === вы вышли к таверне === <<set $таверна[0]=1>> # [[перейти к таверне|ночлежка 1]] <<endif>> <<endif>> [[-вернуться в начальную точку|$откуда]]
И вот, что у нас тогда получается (я подправил StoryStyle, чтобы убрать расстояние между строками):
спойлер…
Вроде бы, даже работать стало немного быстрее. Однако всё равно у меня на машине подтормаживает. Слишком уж большую карту показываем сразу. Опять же есть риск, что на смартфоне карта поплывёт. Советую подумать в сторону ограничения видимой области карты. Например 10 на 10 клеток. Подходим к краю за 2-3 клетки, карта сдвигается.
А так всё очень хорошо работает, почти полноценный рогалик
P.S. Рейтингом 18++ нас не испугаешь! Цензура цензурой, а в песочницу-то гарантированно пройдёт
Неактивен
Я её изначально не собиралась выводить, это для отладки работы алгоритма сделала. Хотела вслепую гонять персонажа, без карты.
Но с таким вариантом, как у вас получился, точно засяду за визуализацию. ;-)
Ну, раз не боитесь жёсткой порнографии, то как доделаю первую главу, выложу
Отредактировано Aruny (04.08.2014 14:11)
Неактивен
Вслепую ходить по такому большому лабиринту никто не захочет, даже вам надоест А вот с визуализацией - это совсем другое дело. Можно ещё выводить текстом, что находится около гг на севере, на юге, западе и востоке. И ссылки навигации лучше сделать "крестиком", а не в одну строку.
Жёсткая порнография, написанная девочкой... так это ведь женский любовный роман
Неактивен
Delakha написал:
Можно ли поставить ударение в слове?
Можно попробовать использовать все эти буковки из "Таблицы символов", всякие á, ó, é, ý. Или выделить курсивом или жирным шрифтом нужную букву.
Неактивен
Доброго времени суток такой вопрос возник.
Хочу сделать дни недели с Понедельника по Воскресенье. Понимаю что нужно сделать цикл но не могу допереть до самой конструкции.
Неактивен
Примерно я так себе это представляю
::Start <<set $den = 1>>
Далее я сделал параграф Состояния куда вывожу информацию
''Время:'' <<if $time gte 5 and $time lte 11>>Утро<<elseif $time gte 12 and $time lte 17>>День <<elseif $time gte 18 and $time lte 23>>Вечер<<elseif $time gte 24 and $time lte 4>>Ночь<<endif>> | ''День недели:'' <<if $den eq 1>>Понедельник<<elseif $den eq 2>>Вторник<<elseif $den eq 3>>Среда <<elseif $den eq 4>>Четверг<<elseif $den eq 5>>Пятница<<elseif $den eq 6>>Суббота<<elseif $den eq 7>>Воскресенье<<endif>>
А вот где мне запускать обнуление я не представляю или нужно через if добавлять доп. параметр или делать цикл...
Отредактировано Василий Новойдарский (09.08.2014 11:51)
Неактивен
Василий Новойдарский написал:
Примерно я так себе это представляю
Код:
::Start <<set $den = 1>>Далее я сделал параграф Состояния куда вывожу информацию
Код:
''Время:'' <<if $time gte 5 and $time lte 11>>Утро<<elseif $time gte 12 and $time lte 17>>День <<elseif $time gte 18 and $time lte 23>>Вечер<<elseif $time gte 24 and $time lte 4>>Ночь<<endif>> | ''День недели:'' <<if $den eq 1>>Понедельник<<elseif $den eq 2>>Вторник<<elseif $den eq 3>>Среда <<elseif $den eq 4>>Четверг<<elseif $den eq 5>>Пятница<<elseif $den eq 6>>Суббота<<elseif $den eq 7>>Воскресенье<<endif>>А вот где мне запускать обнуление я не представляю или нужно через if добавлять доп. параметр или делать цикл...
А параграф "ПрошлоВермя" есть? Я приводил его код, когда мы обсуждали игровое время. Можно его подправить так:
:: ПрошлоВремя
<<set $time = $time + $timeAdd>>
<<set $timeAdd = 0>>
<<if $time gt 23>>
<<set $time = $time - 24>>
<<set $day = $day + 1>>
<<set $den = $den + 1>>
<<if $den gt 7>>
<<set $den = 1>>
<<endif>>
<<endif>>
А в параграфе "Start" можно сделать:
<<random $den = 6>>
<<set $den = $den + 1>>
Неактивен
Ага спасибо что то такое я и сделал толкьо более костляво
Неактивен
А есть какой-нибудь простой, "встроенный", способ проверить число на чётность?
Или конструкция вида
<< if Math.round($Х/2) <= $Х/2 >> чётное! <<else>>нечетное<<endif>>
и так нормальная?
И можно ли передавать параметры в <<display 'параграф'>>, или только сетами перед выводом?
Неактивен
Aruny написал:
А есть какой-нибудь простой, "встроенный", способ проверить число на чётность?
Или конструкция вида
<< if Math.round($Х/2) <= $Х/2 >> чётное! <<else>>нечетное<<endif>>
и так нормальная?
И можно ли передавать параметры в <<display 'параграф'>>, или только сетами перед выводом?
Думаю, лучше использовать
<<if $X%2==0>> чётное! <<else>> нечётное <<endif>>
Параметры в <<display 'параграф'>>
можно передовать только предварительной установкой обычных переменных.
Неактивен
Доброго времени суток. Я немного переделал концепцию усталости (теперь это просто очки действий) и соответственно возникли следующие вопросы:
Как мне сделать так, что бы к примеру в ссылке отображалось сколько очков будет тратиться на действие
К примеру:
"Нарубить дров (2)", где 2 соответственно очки затраченные на это действие.
И второй как сделать ссылку неактивной если очков не хватает (то есть, что бы она была видна но использовать её было невозможно)
И еще один как ограничить очки так что бы они не уходили в минус а останавливались на 0.
Отредактировано Василий Новойдарский (28.08.2014 04:10)
Неактивен
Василий Новойдарский написал:
Как мне сделать так, что бы к примеру в ссылке отображалось сколько очков будет тратиться на действие
К примеру:
"Нарубить дров (2)", где 2 соответственно очки затраченные на это действие.
И второй как сделать ссылку неактивной если очков не хватает (то есть, что бы она была видна но использовать её было невозможно)
Допустим, мы определили, что для выполнения действия требуется определенное число очков действий, и пусть это значение у нас записано в переменной $apCost, а в переменной $ap - доступные очки действий гг, тогда:
<<set $text = "Нарубить дров (" + $apCost + ")">>
<<if $apCost lte $ap>>
[[$text|НарубитьДров]]
<<else>>
<<print $text>>
<<endif>>
Василий Новойдарский написал:
И еще один как ограничить очки так что бы они не уходили в минус а останавливались на 0.
Можно использовать при каждом уменьшении переменной if или Math.max:
<<set $ap = Math.max(0, $ap)>>
или
<<if $ap lt 0>>
<<set $ap = 0>>
<<endif>>
Неактивен
А можно ли сделать передачу адреса изображения через переменную?
Пока вижу только прямое указание адреса вида [[File: 01-02.jpg]]
А мне бы хотелось сделать вида [[File: $картинка]], где $картинка = '01' + '-' + '02' + '.jpg'
Неактивен
Aruny написал:
А можно ли сделать передачу адреса изображения через переменную?
Пока вижу только прямое указание адреса вида [[File: 01-02.jpg]]
А мне бы хотелось сделать вида [[File: $картинка]], где $картинка = '01' + '-' + '02' + '.jpg'
Это надо писать в Предложения по новому функционалу. А пока можно лишь наделать много параграфов вида "img_01_02", где будет только [[File: 01-02.jpg]] и вызывать их через <<$картинка = "img_01_02">> <<display $картинка>>
Неактивен
Спасибо, но я обойдусь и одним параграфом с кучей ифов
типа
<<set $img='01-02'>>
<<display 'image'>>
::image
<<if $img='01-02'>>[[file: 01-02.jpg]]
<<elseif ...>>
Пойду в предложения писать
Неактивен
У меня возник вопрос. Я написал историю, выложил ссылки на музыку, но вот какая незадача, музыка воспроизводится только на моем компьютере. На других компьютерах или любом другом устройстве музыки нет. В чем может быть проблема?
Неактивен
Алекс Давыдов написал:
У меня возник вопрос. Я написал историю, выложил ссылки на музыку, но вот какая незадача, музыка воспроизводится только на моем компьютере. На других компьютерах или любом другом устройстве музыки нет. В чем может быть проблема?
В каком формате музыка? Нужно и в mp3 и в ogg делать. И какие пути к музыкальным файлам? Может они абсолютные и ведут только к файлам на вашем компьютере.
Неактивен
DoubleDragon написал:
Алекс Давыдов написал:
У меня возник вопрос. Я написал историю, выложил ссылки на музыку, но вот какая незадача, музыка воспроизводится только на моем компьютере. На других компьютерах или любом другом устройстве музыки нет. В чем может быть проблема?
В каком формате музыка? Нужно и в mp3 и в ogg делать. И какие пути к музыкальным файлам? Может они абсолютные и ведут только к файлам на вашем компьютере.
Музыка в формате mp3. Получается мне нужно добавить еще ссылку на ogg? Я через браузер выкладывал. У меня большое количество музыки, в 20МБ не укладывается.
Путь из интернета, указать ссылкой. Я указываю. В тестовом варианте работает, заливаю, проверяю, у меня работает. У других возникают проблемы. Пробовал запускать с планшета, проблема идентична. В чем дело не могу понять...
Отредактировано Алекс Давыдов (29.09.2014 19:53)
Неактивен
Формат ogg нужен только для Firefox. В каком браузере музыка не работает?
Неактивен
Не работает абсолютно в любом браузере. Что главное, на моем компьютере работает. Проверил на другом компьютере, нет музыки. Планшет, нет музыки. Телефон, нет музыки. Только на том устройстве, на котором работал...
Может быть дело вот в чем, вне которые файлы (Картинки) я загрузил "Локальным файлом", дальше музыку уже через интернет. Локальные файлы и файлы из интернета могут каким-то способом конфликтовать?
Неактивен
А на каком сайте лежит музыка? Может к ней просто нет доступа без вашего пароля?
Неактивен
Брал ссылку из Вконтакте. Просил помощи у еще одного писателя, он берет музыку от туда же, но у него все работает хорошо.
Хотя возможно вы правы. Если я добавляю музыку из альбома, то получается система не может зайти в альбом (Ссылку на мелодию она распознает, но включить ее не может.) такой вариант событий возможен?
Отредактировано Алекс Давыдов (30.09.2014 13:29)
Неактивен
Алекс Давыдов написал:
Брал ссылку из Вконтакте. Просил помощи у еще одного писателя, он берет музыку от туда же, но у него все работает хорошо.
Хотя возможно вы правы. Если я добавляю музыку из альбома, то получается система не может зайти в альбом (Ссылку на мелодию она распознает, но включить ее не может.) такой вариант событий возможен?
Да, скорее всего дело в этом.
Неактивен
Подскажите, что-то никак не могу разобраться со списками, а точнее как мне добавить ссылки в списки. Т.е. чтобы можно было вывести список элементов и при клике на каждый элемент происходил переход на многоразовый абзац с описанием предмета.
Неактивен
Alex842 написал:
Подскажите, что-то никак не могу разобраться со списками, а точнее как мне добавить ссылки в списки. Т.е. чтобы можно было вывести список элементов и при клике на каждый элемент происходил переход на многоразовый абзац с описанием предмета.
Ссылки в список не добавишь, но можно добавить строки-названия параграфов. Эта идея использована, например, в модуле Инвентарь. А суть такова. Для каждого предмета создаём параграф вида:
:: кольцо всевластья
[[*кольцо всевластья|описание {$item = "кольцо всевластья"} {$desc = "Оба-на, колечко!.. Вот свезло, так свезло!.."}]]
В наш список где-то добавляем название предмета:
<<set $itemsList.push("кольцо всевластья")>>
И где-то нам надо отобразить список:
У вас в карманцах:
<<set $i = 0>>
<<loop $itemsList.length>>
<<display $itemsList[$i]>>
<<set $i++>>
<<endloop>>
Таким образом на экране получаем список многоразовых ссылок на параграф "описание", в который передаём разные параметры, в зависимости от выбранного предмета. Сам параграф "описание" выглядит как-то так:
:: описание
''<<print $item>>''
<<print $desc>>
(и ещё тут могут быть разные действия для разных предметов)
Очевидный недостаток метода - необходимость создавать отдельный мелкий параграф для каждого из существующих в игре предметов. Можно об этом забыть при добавлении новых предметов в игру. При этом Асм 2.х ругается на отсутствующий параграф, а в 3-й версии ссылка просто нажимается без какой-либо реакции.
П.С. Прошу прощения за поздний ответ.
Неактивен
Aruny написал:
Я не тормоз. я не тормоз, я умею читать.... но ни фига не вижу!
Где и как делать вывод информации в другие окошки в третьей версии?
Смотря в какие
В окно меню через параграф StoryMenu или через макрос <<menu>>.
В окно с иллюстрацией через макрос <<picture>>.
Во всплывающие окна через ссылку со звёздочкой: [[*ссылка]].
Неактивен
Не могу разобраться как вставлять звук. Задача при открытии очередного параграфа, запустить звук один раз.
Делаю так:
1. В нужном параграфе прописываю:
<<sound 'звук'>>
2. Создаю новый параграф с именем "звук".
3. В котором прописываю: [[File: files/звук.mp3]] . В той же папке лежит такой же файл ogg.
4. При сохранении параграфа со строкой <<sound 'звук'>> выдает ошибку некорректный макрос.
Что делаю неправильно и как нужно?
Неактивен
Ruser написал:
Не могу разобраться как вставлять звук. Задача при открытии очередного параграфа, запустить звук один раз.
Делаю так:
1. В нужном параграфе прописываю:
<<sound 'звук'>>
2. Создаю новый параграф с именем "звук".
3. В котором прописываю: [[File: files/звук.mp3]] . В той же папке лежит такой же файл ogg.
4. При сохранении параграфа со строкой <<sound 'звук'>> выдает ошибку некорректный макрос.
Что делаю неправильно и как нужно?
Для начала нужно добавить звук через кнопку "Добавить -> Звук". Затем в нужном месте параграфа вставляете макрос <<sound ''>>. Ставите курсор между кавычек и нажимаете Tab. Появляется список доступных звуков (тех что вы выбрали через кнопку "Добавить"). Обратите внимание, что поддерживаются только файлы mp3 не более 150 кб! Поэтому возможны проблемы с воспроизведением в FireFox.
П.С. Забыл написать, что эта инструкция действительна для 3 версии.
Если у вас стоит 2 версия, то в ней, насколько я знаю, нельзя запустить звук один раз. Можно сделать ему "бесконечную" тишину в аудиоредакторе.
Отредактировано Alex842 (08.12.2014 11:01)
Неактивен
Да, всё так.
Неактивен
Ruser написал:
Alex842, спасибо! У меня как раз 2.6. Третий тормозит, но придется пробовать в нем....
Не за что.
Кстати, последняя демка тормозит значительно меньше.
Единственное, раздражает как реализовано перетаскивание параграфов. Т.е. какое-то оно дерганое. В отличие от онлайн-версии. Если бы это был паскаль, то я бы сказал, что отключена функция "отображать содержимое при перетаскивании". Может быть что-то такое и здесь надо включить? А то мы видим перемещаемый абзац только в момент его "захвата" и "бросания в точку назначения". Приходится мучатся с "прицеливанием".
Неактивен
Alex842 написал:
Ruser написал:
Alex842, спасибо! У меня как раз 2.6. Третий тормозит, но придется пробовать в нем....
Не за что.
Кстати, последняя демка тормозит значительно меньше.
Единственное, раздражает как реализовано перетаскивание параграфов. Т.е. какое-то оно дерганое. В отличие от онлайн-версии. Если бы это был паскаль, то я бы сказал, что отключена функция "отображать содержимое при перетаскивании". Может быть что-то такое и здесь надо включить? А то мы видим перемещаемый абзац только в момент его "захвата" и "бросания в точку назначения". Приходится мучатся с "прицеливанием".
Это проблема первой версии библиотеки Webkit под Windows, которая отвечает за прорисовку. При первой же возможности буду переводить всё на новую версию Webkit, но пока придётся с этим жить.
Неактивен
Ребята, задумал сделать интерактивную игру про биатлон Пока не могу понять следующий момент как реализовать: спортсмены бегут спринт, у каждого свое время, финишируют, им присваивается их результат (время) - тут все понятно как делается, но... как сделать так, чтобы после финиша программа считала, у кого из спортсменов результат лучше, у кого хуже? Например, спортсмен А прошел трассу за 5 минут 10 секунд, спортсмен Б - за 5 минут 14 секунд, спортсмен В - за 4 минуты 59 секунд. Должно быть на финише так - первым будет В, вторым А, третьим - Б. Как сделать, чтобы программа считала места по результатам?
Неактивен
alfa10 написал:
Ребята, задумал сделать интерактивную игру про биатлон Пока не могу понять следующий момент как реализовать: спортсмены бегут спринт, у каждого свое время, финишируют, им присваивается их результат (время) - тут все понятно как делается, но... как сделать так, чтобы после финиша программа считала, у кого из спортсменов результат лучше, у кого хуже? Например, спортсмен А прошел трассу за 5 минут 10 секунд, спортсмен Б - за 5 минут 14 секунд, спортсмен В - за 4 минуты 59 секунд. Должно быть на финише так - первым будет В, вторым А, третьим - Б. Как сделать, чтобы программа считала места по результатам?
Можно, например, так:
:: biatlon <<set $name = ["Alex", "Bob", "Carl"]>> <<set $time = [0, 0, 0]>> <<set $place = []>> <<set $i = 0>> <<loop $time.length>> <<random $min = 2>> <<set $min = $min + 4>> <<random $sek = 59>> <<if $sek lt 10>> <<set $sek = "0" + $sek>> <<endif>> <<set $time[$i] = $min + ":" + $sek>> <<set $place.push($time[$i] + "|" + $name[$i])>> <<set $i++>> <<endloop>> <<set $place = $place.sort()>> Results: <<set $i = 0>> <<loop $place.length>> <<set $position = $place[$i].split('|')>> <<print ($i + 1)>> - <<print $position[1]>> (<<print $position[0]>>) <<set $i++>> <<endloop>> [[Repeat|biatlon]]
Суть в том, что мы заносим время вместе с именами спортсменов в новый массив, который затем сортируем. Поскольку элементы этого массива начинаются с времени, он сортируется в порядке возрастания времени. Программа не учитывает случай, если спортсмены показали одинаковый результат. Не знаю, бывает ли такое в биатлоне.
Неактивен
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)
Неактивен
alfa10 написал:
Morych, а можно расшифровку? Результаты будут заноситься не рандомные. Одинаковых результатов не будет, так что все норм.
Не пойму, что означает в коде параметр "i" и "$place.push".
И вот эта часть кода не ясна мне:
<<loop $place.length>>
<<set $position = $place[$i].split('|')>>
<<print ($i + 1)>> - <<print $position[1]>> (<<print $position[0]>>)
<<set $i++>>
<<endloop>>
Давай попробуем разобраться. параметр $i - это просто переменная-счётчик, при помощи которой мы перебираем все индексы массива. От 0 до 2 в нашем случае, но в общем случае число элементов массива нам не известно, поэтому используем цикл и переменную $i.
При помощи $place.push мы заносим в массив новые элементы.
Теперь часть кода:
<<loop $place.length>> --- цикл, повторяющийся столько раз, сколько элементов в массиве $place.
<<set $position = $place[$i].split('|')>> --- берём i-й элемент массива $place (это будет строка вида "5:09|Имя спортсмена") разделяем эту строку при помощи метода split по символу "|" и получаем массив из двух строк - отдельно время, отдельно имя биатлониста. Массив этот заносится в переменную $position.
<<print ($i + 1)>> - <<print $position[1]>> (<<print $position[0]>>) --- выводим на экран номер места, затем имя спортсмена (первый элемент массива $position) и в скобках его время (нулевой элемент массива $position).
<<set $i++>> --- увеличиваем переменную-счётчик на 1, чтобы перейти к следующему элементу массива $place при следующем повторении цикла.
<<endloop>> --- конец цикла.
Спрашивай ещё, если что!
Неактивен
Чуть-чуть въехал. А вот смотри, к примеру, имеем два спортсмена (вводим переменные $имя и $имя1). Один прошел трассу за 70 ходов, а второй за 64 хода.
<<set $имя = Вася>>
<<set $имя1 = Петя>>
<<set $счетчик_хода_имя = 0>> #персональный счетчик хода спортсмена Васи
<<set $счетчик_хода_имя1 = 0>> #персональный счетчик хода спортсмена Пети
...
:: В след. параграфе получаем финишные значения:
<<set $счетчик_хода_имя = 70>>
<<set $счетчик_хода_имя = 64>>
Теперь надо чтобы выдало результаты по местам: 1 место - получается занял второй спортсмен (Петя), 2 место - первый спортсмен (Вася).
Неактивен
Всё то же самое, как и со временем, только вместо времени добавляем в массив $place счётчики ходов вместе с именами:
<<set $place = []>> --- создадим новый массив
<<set $place.push($счетчик_хода_имя + "|" + $имя)>> --- добавили в массив счетчик ходов и имя первого спортсмена (значения разделены символом "|")
<<set $place.push($счетчик_хода_имя1 + "|" + $имя1)>> --- добавили в массив счетчик ходов и имя второго спортсмена
<<set $place = $place.sort()>> --- отсортировали массив
Теперь в массиве $place спортсмены расположены по возрастанию значений их ходов: нулевой элемент - первое место, первый элемент - второе место и так далее. Чтобы всё работало правильно, нужно перед занесением значений в массив $place убедиться, что число символов для параметра сортировки у всех спортсменов будет одинаково. Т.е. если число ходов может быть от 10 до 99 - все хорошо, но если число ходов может быть 100 и больше, то и все прочие счетчики ходов нужно дополнить до трёх символов: 064, 070, 125.
Неактивен
Делаю так:
: Начало
<<set $имя = 'Вася'>>
<<set $имя1 = 'Петя'>>
<<set $счетчик_хода_имя = 0>>
<<set $счетчик_хода_имя1 = 0>>
[[Ход игрока|Просчет]]
: Просчет
<<random $кубик = 50>>
<<set $счетчик_хода_имя = $счетчик_хода_имя + $кубик>>
[[Ход соперника|Просчет соперника]]
: Просчет соперника
<<random $кубик = 50>>
<<set $счетчик_хода_имя1 = $счетчик_хода_имя1 + $кубик>>
[[Финиш|Финиш]]
: Финиш
А как тут код прописать?
И еще нужно, чтобы разница, полученная между числами плюсовалась в след. параграфе к значению $счетчик_хода_имя. Например, Петя прошел гонку за 64 хода, а Вася за 70. Разница между ними равна 6. Значит в след. параграфе у Пети будет к счетчику хода прибавлено значение 6, а у Васи это значение будет равно 0.
Неактивен
Тогда лучше сразу составлять код из расчёта, что спортсменов много. Но прежде хотелось бы подробнее узнать логику игры: по пунктам что за чем должно происходить, включая то прибавление разницы ходов.
Неактивен
Morych написал:
Тогда лучше сразу составлять код из расчёта, что спортсменов много. Но прежде хотелось бы подробнее узнать логику игры: по пунктам что за чем должно происходить, включая то прибавление разницы ходов.
Если знаком с биатлоном то будет легче понять Если нет, то попытаюсь логику передать:
Будет, скажем 12 сборных, в каждой по 6 спортсменов. Итого - 72 спортсмена. Сперва все бегут спринт (то есть, тут все ходят по очереди, кто затратил на прохождение трассы меньше всего времени - тот победитель. Далее все бегут преследование. Тут разница (отставание от победителя спринта) ходов должна записываться в переменную длины пройденной трассы. То есть, если Петя в спринте был лучше Васи, и прошел за 64 хода трассу, а Вася за 70, то в преследовании Петя должен при старте иметь показатель <<$длина_пройденной_трассы_Петя = $длина_пройденной_трассы_Петя + 6>>. То есть, он раньше на 6 ходов, чем Вася стартанул в гонке. При чем, вместо "6" должна наверное быть некая переменная, типа <<$отставание_от_первого_места_в_спринте>>, которая на финише спринта формировала бы сразу разницу отставаний между местами автоматом. Вот как то так должно быть!
Отредактировано alfa10 (01.01.2015 22:33)
Неактивен
alfa10 написал:
Будет, скажем 12 сборных, в каждой по 6 спортсменов. Итого - 72 спортсмена. Сперва все бегут спринт (то есть, тут все ходят по очереди, кто затратил на прохождение трассы меньше всего времени - тот победитель. Далее все бегут преследование. Тут разница (отставание от победителя спринта) ходов должна записываться в переменную длины пройденной трассы. То есть, если Петя в спринте был лучше Васи, и прошел за 64 хода трассу, а Вася за 70, то в преследовании Петя должен при старте иметь показатель <<$длина_пройденной_трассы_Петя = $длина_пройденной_трассы_Петя + 6>>. То есть, он раньше на 6 ходов, чем Вася стартанул в гонке. При чем, вместо "6" должна наверное быть некая переменная, типа <<$отставание_от_первого_места_в_спринте>>, которая на финише спринта формировала бы сразу разницу отставаний между местами автоматом.
Так, значит после спринта у нас есть массив ходов, которые спортсмены затратили на прохождение трассы:
<<set $ходы_спринт = [64, 70, ... 60]>> (итого в массиве 72 элемента)
Найдем число ходов лидера спринта (минимальное число ходов):
<<set $ходы_лидера = $ходы_спринт.sort()[0]>> --- сортируем массив и берем первый элемент отсортированного массива - минимальное значение
Перед началом преследования:
<<set $ходы_преследование = [0, 0, ... 0]>> --- число ходов, которые спортсмены затратят на прохождение гонки-преследования
и увеличим число ходов в зависимости от результата в спринте:
<<set $i = 0>>
<<loop $ходы_преследование.length>>
<<set $ходы_преследование[$i] = $ходы_спринт[$i] - $ходы_лидера>>
<<set $i++>>
<<endloop>>
теперь перед началом преследования у каждого спортсмена уже установлено стартовое число ходов, а у лидера спринта это число будет = 0.
Это то, что было нужно?
Неактивен
Morych написал:
alfa10 написал:
Будет, скажем 12 сборных, в каждой по 6 спортсменов. Итого - 72 спортсмена. Сперва все бегут спринт (то есть, тут все ходят по очереди, кто затратил на прохождение трассы меньше всего времени - тот победитель. Далее все бегут преследование. Тут разница (отставание от победителя спринта) ходов должна записываться в переменную длины пройденной трассы. То есть, если Петя в спринте был лучше Васи, и прошел за 64 хода трассу, а Вася за 70, то в преследовании Петя должен при старте иметь показатель <<$длина_пройденной_трассы_Петя = $длина_пройденной_трассы_Петя + 6>>. То есть, он раньше на 6 ходов, чем Вася стартанул в гонке. При чем, вместо "6" должна наверное быть некая переменная, типа <<$отставание_от_первого_места_в_спринте>>, которая на финише спринта формировала бы сразу разницу отставаний между местами автоматом.
Так, значит после спринта у нас есть массив ходов, которые спортсмены затратили на прохождение трассы:
<<set $ходы_спринт = [64, 70, ... 60]>> (итого в массиве 72 элемента)
Найдем число ходов лидера спринта (минимальное число ходов):
<<set $ходы_лидера = $ходы_спринт.sort()[0]>> --- сортируем массив и берем первый элемент отсортированного массива - минимальное значение
Перед началом преследования:
<<set $ходы_преследование = [0, 0, ... 0]>> --- число ходов, которые спортсмены затратят на прохождение гонки-преследования
и увеличим число ходов в зависимости от результата в спринте:
<<set $i = 0>>
<<loop $ходы_преследование.length>>
<<set $ходы_преследование[$i] = $ходы_спринт[$i] - $ходы_лидера>>
<<set $i++>>
<<endloop>>
теперь перед началом преследования у каждого спортсмена уже установлено стартовое число ходов, а у лидера спринта это число будет = 0.
Это то, что было нужно?
Блин, вообще не пойму код
Неактивен
<<set $ходы_спринт = [64, 70, ... 60]>> (итого в массиве 72 элемента)
А как система поймет, кто за сколько ходов прошел спринт? Я так понимаю, в массиве уже конкретные результаты тут указаны?
теперь перед началом преследования у каждого спортсмена уже установлено стартовое число ходов, а у лидера спринта это число будет = 0.
Так у лидера наоборот, должен быть бонус перед другими, он же раньше второго номера уйдет на трассу на n-ходов.
Неактивен
Вот получил такой вот результат при таком вот коде. Места определились некорректно!
Неактивен
alfa10 написал:
<<set $ходы_спринт = [64, 70, ... 60]>> (итого в массиве 72 элемента)
А как система поймет, кто за сколько ходов прошел спринт? Я так понимаю, в массиве уже конкретные результаты тут указаны?
Да, все верно, тут указаны конкретные результаты после спринта просто для примера. Перед спринтом этот массив будет содержать все нули, а во время спринта значения поменяются в зависимости от характеристик спортсменов, каких-то внешних факторов, выбора игрока или чего-то еще.
alfa10 написал:
теперь перед началом преследования у каждого спортсмена уже установлено стартовое число ходов, а у лидера спринта это число будет = 0.
Так у лидера наоборот, должен быть бонус перед другими, он же раньше второго номера уйдет на трассу на n-ходов.
Нам нужно определиться, что считать результатом. Если число затраченных ходов, как в спринте, то минимальное значение ходов будет лучшим результатом. Поэтому стартовое значение = 0 - это и есть самый лучший бонус, т.е. лидер стартует сразу, без ожидания. А тот, кто отстал от лидера в спринте на 10 ходов, и у кого значит стартовое значение ходов = 10 - тот, получается, как бы ждет 10 ходов прежде чем начать преследование.
Неактивен
alfa10 написал:
Вот получил такой вот результат при таком вот коде. Места определились некорректно!
Это как раз тот случай, о котором я говорил в этом сообщении. В массив для сортировки нужно заносить не "4", а "04"!
Неактивен
Morych написал:
Это как раз тот случай, о котором я говорил в этом сообщении. В массив для сортировки нужно заносить не "4", а "04"!
У меня сейчас на финише такой код:
<<set $place = []>> <<set $place.push($счетчик_хода_имя + "|" + $имя)>> <<set $place.push($счетчик_хода_имя1 + "|" + $имя1)>> <<set $place.push($счетчик_хода_имя2 + "|" + $имя2)>> <<set $place.push($счетчик_хода_имя3 + "|" + $имя3)>> <<set $place.push($счетчик_хода_имя4 + "|" + $имя4)>> <<set $place.push($счетчик_хода_имя5 + "|" + $имя5)>> <<set $place = $place.sort()>> Результаты гонки: <<set $i = 0>> <<loop $place.length>> <<set $position = $place[$i].split('|')>> <<print ($i + 1)>> - <<print $position[1]>> (<<print $position[0]>>) <<set $i++>> <<endloop>> [[Преследование|Преследование]]
Где надо в массиве добавить 0?
Неактивен
Если число ходов не может быть больше 999, то вместо:
<<set $place.push($счетчик_хода_имя + "|" + $имя)>>
Делаем так:
<<if $счетчик_хода_имя lt 10>>
<<set $place.push("00" + $счетчик_хода_имя + "|" + $имя)>> --- если значение ходов от 0 до 9, добавляем "00" к счетчику ходов
<<elseif $счетчик_хода_имя lt 100>>
<<set $place.push("0" + $счетчик_хода_имя + "|" + $имя)>> --- иначе, если значение ходов от 10 до 99, добавляем "0"
<<else>>
<<set $place.push($счетчик_хода_имя + "|" + $имя)>> --- иначе, если значение ходов больше либо равно 100, ничего не добавляем
<<endif>>
Таким образом число ходов всегда будет состоять из 3 символов, и мы будем сортировать такие значения:
"064|Вася"
"008|Петя"
"256|Ваня"
Неактивен
Да, тут надо использовать цикл и массивы. И не забыть про переменную $i
<<set $i = 0>>
<<loop 72>>
<<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>>
Неактивен
Morych, а посмотри плиз мой сейв. Как тут код можно упростить?
Неактивен
Еще вопрос по другому моему проекту. Нужно сделать жеребьевку команд в турнирной сетке. Сперва будет 32 команды. Отсюда вопросы:
1) как сделать жеребьевку команд в турнирной сетке (1/32 финала)? Команды не должны повторяться
2) как сделать рандомные результаты матчей между соперниками? Более сильные команды должны иметь бонус при расчете результатов перед более слабыми командами.
3) как вывести из дальнейшей жеребьевки (1/16 финала) проигравшие команды?
Неактивен
alfa10 написал:
Morych, а посмотри плиз мой сейв. Как тут код можно упростить?
Посмотрел и все переписал
Неактивен
alfa10 написал:
Еще вопрос по другому моему проекту. Нужно сделать жеребьевку команд в турнирной сетке. Сперва будет 32 команды. Отсюда вопросы:
1) как сделать жеребьевку команд в турнирной сетке (1/32 финала)? Команды не должны повторяться
2) как сделать рандомные результаты матчей между соперниками? Более сильные команды должны иметь бонус при расчете результатов перед более слабыми командами.
3) как вывести из дальнейшей жеребьевки (1/16 финала) проигравшие команды?
Нечто похожее - рандомная выборка неповторяющихся элементов - есть в этой части учебника. Можно там пример кода глянуть. Делается при помощи массива и его метода splice:
- загоняем все 32 команды в общий массив;
- в цикле получаем рандомный индекс массива (рандом по длине);
- методом splice вырезаем этот рандомный элемент из общего массива.
На следующем шаге цикла рандом будет выбирать уже только из оставшихся команд.
Неактивен
alfa10 написал:
а как работать с таблицами можно? Можно где-нибудь примеры посмотреть?
Все есть в руководстве пользователя:
<<row 'Заголовок таблицы'>>
<<row 'Столбец 1' 'Столбец 2'>>
<<row 'Столбец 1' 'Столбец 2' noborder>>
Неактивен
alfa10 написал:
А если мне надо три строки и более? И с фотками внутри колонки, а? Программа ругается на третий столбец
Строк может быть сколько угодно. Столбцов - не более двух.
Неактивен
Можно вставлять изображения:
<<row 'Лого' '[[File: http://sm.axmasoft.com/rsc/logo.png]]'>>
Ссылки нельзя.
Неактивен
<<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()>> ''Общий зачет Кубка мира:'' ---- <<set $i = 0>> <<loop $имя.length>> <<set $индекс = $place[$i].split('|')[1]>> <<print ($i + 1)>> место: <<print $имя[$индекс]>> (<<print $очки[$индекс]>>) <<set $i++>> <<endloop>>
Этот код делает сортировку спортсменов по местам, где первое место - у кого меньшее число очков. А как сделать сортировку наоборот, чтобы первым был тот, у кого больше всего очков?
Неактивен
Есть кусок кода значений:
<<set $процент_лежка = ($попал_лежка*100)/$выстрел_лежка>> <<set $процент_стойка = ($попал_стойка*100)/$выстрел_стойка>> <<set $выстрел_лежка = 15>> <<set $выстрел_стойка = 0>> <<set $попал_лежка = 12>> <<set $попал_стойка = 0>>
Есть кусок кода вывода значения на экран:
Точность стрельбы лежа: <<print $процент_лежка>> %
Получаю в итоге:
Точность стрельбы лежа: NaN %
Почему, ребят?
Неактивен
alfa10 написал:
А как сделать сортировку наоборот, чтобы первым был тот, у кого больше всего очков?
Вместо
<<set $place = $place.sort()>>
Нужно написать
<<set $place = $place.sort().reverse()>>
Элементы массива будут отсортированы по убыванию.
Неактивен
Кстати, числовые массивы правильно сортировать так: <<set $place = $place.sort(*)>>
(звёздочка показывает, что сортировать значения надо как числа).
Сравните:<<set $arr = [5,10,1,111,100,2]>>
<<print $arr.sort()>>
<<print $arr.sort(*)>>
Этот код выводит:1,10,100,111,2,5
1,2,5,10,100,111
Но я сейчас посмотрел, это работает только в версиях 2.x, а в 3.0 не работает из-за допущенной ошибки, которую я поправлю в ближайшем обновлении.
Неактивен
Полезное замечание! Правда, применительно к биатлону такая сортировка не подходит, поскольку в массиве у нас не просто числа, а еще какая-то дополнительная информация, отделенная условным символом. Это может быть имя или индекс спортсмена. После сортировки нам нельзя потерять связь между числовым параметром и самим спортсменом. А поскольку сортируются строки, в числовом параметре мы добавляем нули вместо отсутствующих разрядов. Ничего лучше я не придумал. Может, есть более красивый способ?
Неактивен
Morych написал:
alfa10 написал:
А как сделать сортировку наоборот, чтобы первым был тот, у кого больше всего очков?
Вместо
<<set $place = $place.sort()>>
Нужно написать
<<set $place = $place.sort().reverse()>>
Элементы массива будут отсортированы по убыванию.
Спасибо большое, дружище!!!
Неактивен
Вот, прилагаю сейв, если интересно?! Пока реализовал на базе белорусских спортсменок главное меню, и все окна главного меню, кроме "Начать гонку". Вот думаю, как сделать, чтобы после финиша гонки очки присуждались в зависимости от занятой позиции?! Например, 1 место - 10 очков, второе - 8, Третье - 6 и т.д. Там ведь будет массив. Поможете, ребята?
P.S. На втором слайде (где только крестик ошибки фотографии) нажмите на крестике. Просто там открытие 3 слайда при щелчке по фотке сделал.
Вообщем, архив тут: https://cloud.mail.ru/public/a6478949ef … %D1%80.rar
Отредактировано alfa10 (06.01.2015 23:04)
Неактивен
А что, неплохо. Надо допилить сами гонки и получится этакий симулятор.
Неактивен
DoubleDragon написал:
А что, неплохо. Надо допилить сами гонки и получится этакий симулятор.
Парни, поможите? Пока вот интересует момент, как сделать так, чтобы очки присуждались согласно занятым местам спортсменам?
Отредактировано alfa10 (07.01.2015 21:24)
Неактивен
Ребята, сейчас столкнулся с проблемой, что эстафета не получается
1 - непонятно, как прописать, на каком этапе будет выступать именно мой спортсмен? Ведь я то могу выбрать любого спортсмена...
2 - непонятно, как сделать так, чтобы на финише очки присуждались сборной, а не спортсмену. Надо понять, как система поймет, что финишировавший спортсмен принадлежит к конкретной сборной?
Посмотрите?
https://cloud.mail.ru/public/be22f9339b … 1%D1%82.sm
Отредактировано alfa10 (08.01.2015 23:57)
Неактивен
Такой еще вопрос: создал в начале игры массив <<set $имя = []>>. Также в начале игры называю своего спортсмена <<input '' $имя0>>. Как значение $имя0 вписать в массив?
Неактивен
Парни, сел окончательно с игрой. Совершенно не пойму с просчетом гонок. Нужно вводить по идее очень много параметров: ведь, кто-то может бежать дистанцию, а кто то в это время стрелять. Как это сделать, мне не понятно! Хочу спросить, может кто-то сможет мне помочь в реализации игры по моим консультациям? В знак благодарности, я готов буду оплатить Вашу помощь. Не крупно конечно, но пару тысяч выделить смогу.
Неактивен
Можно ли, имея разные переменные, например (результат1, результат2, результат3, результат4), объединить их в массив, и сделать сортировку этого массива так, чтобы результаты с наименьшим числовым значением выводились выше, чем результаты с большим числовым значением?
Например:
Результат1 - 50 ходов
Результат2 - 75 ходов
Результат3 - 28 ходов
Результат4 - 52 хода
Выводится так:
1 место - Результат3 - 28 ходов
2 место - Результат1 - 50 ходов
3 место - Результат4 - 52 хода
4 место - Результат2 - 75 ходов
Неактивен
alfa10 написал:
Такой еще вопрос: создал в начале игры массив <<set $имя = []>>. Также в начале игры называю своего спортсмена <<input '' $имя0>>. Как значение $имя0 вписать в массив?
<<set $имя.push($имя0)>>
Неактивен
alfa10 написал:
Можно ли, имея разные переменные, например (результат1, результат2, результат3, результат4), объединить их в массив, и сделать сортировку этого массива так, чтобы результаты с наименьшим числовым значением выводились выше, чем результаты с большим числовым значением?
Например:
Результат1 - 50 ходов
Результат2 - 75 ходов
Результат3 - 28 ходов
Результат4 - 52 хода
Выводится так:
1 место - Результат3 - 28 ходов
2 место - Результат1 - 50 ходов
3 место - Результат4 - 52 хода
4 место - Результат2 - 75 ходов
Это мы уже проходили
<<set $результат1 = 50>> <<set $результат2 = 75>> <<set $результат3 = 28>> <<set $результат4 = 52>> <<set $места = []>> <<set $места.push($результат1 + "|Результат1")>> <<set $места.push($результат2 + "|Результат2")>> <<set $места.push($результат3 + "|Результат3")>> <<set $места.push($результат4 + "|Результат4")>> <<set $места = $места.sort()>> <<set $номер = 0>> <<loop $места.length>> <<set $результат = $места[$номер].split("|")>> <<set $место = $номер + 1>> <<print $место>> место - <<print $результат[1]>> - <<print $результат[0]>> ходов <<set $номер++>> <<endloop>>
А чтобы в зависимости от числа выводить "ход", "хода" или "ходов", смотри эту заметку.
Неактивен
alfa10 написал:
Парни, сел окончательно с игрой. Совершенно не пойму с просчетом гонок. Нужно вводить по идее очень много параметров: ведь, кто-то может бежать дистанцию, а кто то в это время стрелять. Как это сделать, мне не понятно! Хочу спросить, может кто-то сможет мне помочь в реализации игры по моим консультациям? В знак благодарности, я готов буду оплатить Вашу помощь. Не крупно конечно, но пару тысяч выделить смогу.
Попробуй спросить в Потоке. Сюда, мне кажется, увлекающиеся Асмом реже заглядывают.
Неактивен
Для DoubleDragon (вопрос из потока).
Смотри, есть код:
<<loop $имя.length>> <<if $счетчик_хода0[$i] lt 10>> <<set $place.push("000" + $счетчик_хода0[$i] + "|" + $i)>> <<elseif $счетчик_хода0[$i] lt 100>> <<set $place.push("00" + $счетчик_хода0[$i] + "|" + $i)>> <<else>> <<set $place.push($счетчик_хода0[$i] + "|" + $i)>> <<endif>> <<set $i++>> <<endloop>>
Этот код соритрует и показывает мне лидера гонки:
750 - Вася
985 - Петя
1055 - Коля
А если у меня такие значения получаются в гонке:
9750 - Вася
9985 - Петя
10055 - Коля
Как мне надо будет код записать?
Неактивен
Кстати, alfa10, когда появится поддержка функции sort(*), можно попробовать добавлять в массив без дополнительных нулей, но через точку, а не через вертикальную линию. Т.е. так:
<<set $place.push($счетчик_хода0[$i] + "." + $i)>>
тогда в массиве у нас окажутся дробные числа (где целая часть - количество ходов, а дробная часть - это индекс спортсмена). Такой массив уже можно будет отсортировать методом sort(*) и сортироваться будут вообще любые значения ходов, без необходимости, повторюсь, добавлять дополнительные нули.
Потом, правда, и разделять строку надо будет по символу "."
Неактивен
Да вроде с сортировкой разобрался. Зацените что имеем на выходе сейчас.
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)
Неактивен
pronin написал:
Люди подскажите пожалуйста,чтобы сохранять в HTML надо купить проффесиональный аккаунт ? он 900 рублей стоит ? спасибо.
Если у Вас третья версия программы, то да. Если вторая, то нет. Ещё можно опубликовать историю в библиотеке и скачать оттуда.
Неактивен
pronin написал:
Люди подскажите пожалуйста,чтобы сохранять в HTML надо купить проффесиональный аккаунт ? он 900 рублей стоит ? спасибо.
а сохранив в библиотеку,захожу в свой профиль вижу свою книгу выбираю ,но она грузится,но не запускается,белый экран короче. помогите пожалуйста,только в редакторе могу запускать. (((
Да, чтобы сохранить в HTML надо купить проффесиональный аккаунт.
А из профиля можно загрузить только исходный sm-файл книги.
Неактивен
Всем доброго времени суток. Хочу автоматически формировать ссылки, например так:
<<set $a = ["e", "b", "c", "d"]>> <<set $aa = 0>> <<loop 4>> <<set $b = $a[$aa]>> [[$b|$b]] <<set $aa++>> <<endloop>>
Но ссылки всегда создаются на параграф d (хотя имена разные).
И ещё код
<<if $a[$b[c]] eq 1>> <<endif>>
Считается некорректным (типа ссылка). Приходится создавать ещё одну переменную.
Был ещё вопрос по рекурсии, но я её победил
Отредактировано elgarf (05.07.2015 10:38)
Неактивен
Ссылки в цикле обрабатываются некорректно. Это известный баг, надеюсь побороть его.
И да, вложенные элементы массива считаются некорректными.
Неактивен
Есть какое-нибудь временное решение с ссылками в цикле? Кроме того, чтобы раскрыть его?
Попробую переписать на рекурсию.
С рекурсией тоже не работает.
Отредактировано elgarf (05.07.2015 15:25)
Неактивен
Блин, пока нету (:
Неактивен
Я так понял, что это не только в циклах проблема: типа в переход подставляется именно переменная, а не её значение? Этому есть какое-то практическое применение, или просто ограничение системы?
Неактивен
elgarf написал:
Я так понял, что это не только в циклах проблема: типа в переход подставляется именно переменная, а не её значение? Этому есть какое-то практическое применение, или просто ограничение системы?
Просто значение переменной подставляется в ссылку после того, как отработает цикл. Соответственно, это значение всегда равно последнему в цикле.
Неактивен
elgarf написал:
Не только в цикле так
Код:
<<set $a = 1>> [[A|$a]] <<set $a = 2>> [[B|$a]]
Да, переменные во все ссылки подставляются после отработки всего кода параграфа. Пока альтернативы нет.
Неактивен
Подскажите, пожалуйста, есть ли в актуальной версии 3-й АSM разные макросы для циклического и единоразового вызова звуковых файлов? Например, можно ли вызвать один звук, чтобы крутился в цикле, и второй звук в другом потоке, чтобы проигрался один раз?
Отредактировано Алексей Бакасин (26.07.2015 11:56)
Неактивен
Алексей Бакасин написал:
Подскажите, пожалуйста, есть ли в актуальной версии 3-й АSM разные макросы для циклического и единоразового вызова звуковых файлов? Например, можно ли вызвать один звук, чтобы крутился в цикле, и второй звук в другом потоке, чтобы проигрался один раз?
Музыка может играть только одна. Количество одновременных звуков не ограничено.
Неактивен
DoubleDragon написал:
Музыка может играть только одна. Количество одновременных звуков не ограничено.
подскажите оформление макросов, пожалуйста, что значит "количество одновременных неограничено", но в это же время музыка "только одна"?
Неактивен
Алексей Бакасин написал:
DoubleDragon написал:
Музыка может играть только одна. Количество одновременных звуков не ограничено.
подскажите оформление макросов, пожалуйста, что значит "количество одновременных неограничено", но в это же время музыка "только одна"?
Музыка вставляется через [[File: files/музыка.mp3]]
, а звуки через <<sound 'имя_звука'>>
.
Неактивен
DoubleDragon написал:
Музыка вставляется через
[[File: files/музыка.mp3]]
, а звуки через<<sound 'имя_звука'>>
.
Спасибо. А 'имя_звука' - это переменная или тоже название файла?
Неактивен
Алексей Бакасин написал:
DoubleDragon написал:
Музыка вставляется через
[[File: files/музыка.mp3]]
, а звуки через<<sound 'имя_звука'>>
.Спасибо. А 'имя_звука' - это переменная или тоже название файла?
Звуки добавляются через меню "Добавить/Звук" и им присваиваются имена.
Неактивен
DoubleDragon написал:
Звуки добавляются через меню "Добавить/Звук" и им присваиваются имена.
Нажимаю на "Добавить" (плюсик), и просто в тексте появляются два двоеточия. Никакого запроса к загрузке аудиофайла нет. Где именно то меню "Добавить/звук"?
EDIT
Разобрался, спасибо. По привычке торчу всё время в редакторе кода, а много функций доступны в основном окне.
Отредактировано Алексей Бакасин (26.07.2015 19:30)
Неактивен
Подскажите, можно ли вызывать звуки из списка? Мне нужно, чтобы в одном и том же параграфе по очереди в цикле вызывались звуки из заданного списка. Я понимаю, как пользоваться списками, но можно ли в список помещать имена звуков, и как это сделать? Через переменные?
Спасибо!
Отредактировано Алексей Бакасин (02.08.2015 11:06)
Неактивен
Алексей Бакасин написал:
Подскажите, можно ли вызывать звуки из списка? Мне нужно, чтобы в одном и том же параграфе по очереди в цикле вызывались звуки из заданного списка. Я понимаю, как пользоваться списками, но можно ли в список помещать имена звуков, и как это сделать? Через переменные?
Спасибо!
Звуки можно помещать в переменные, но воспроизводиться они будут одновременно, так как код не ждёт окончания заука.
Неактивен
DoubleDragon написал:
Звуки можно помещать в переменные
Значит ли это, что <<sound 'snd1'>> я могу задать как <<sound $var1>>?
Неактивен
Алексей Бакасин написал:
DoubleDragon написал:
Звуки можно помещать в переменные
Значит ли это, что <<sound 'snd1'>> я могу задать как <<sound $var1>>?
Да.
Неактивен
Не отображаются объекты по команде print пишет undefitient как быть
Неактивен
Андей Фонарь написал:
Не отображаются объекты по команде print пишет undefitient как быть
Выложить сюда фрагмент кода.
Неактивен
Как создать время в AXMA и как сделать так, чтобы текст\параграф появился через определенное время?
Неактивен
Константин Шарыкин написал:
Как создать время в AXMA и как сделать так, чтобы текст\параграф появился через определенное время?
Смотрите в сторону макроса repeat
.
Неактивен
DoubleDragon написал:
Смотрите в сторону макроса
repeat
.
ОКей, без вопросов, но появились новые проблемы:
- Параграф не отображается, где создано время
- При прописывание кода:
<<stop 'Примеры' >>
, не показываится следующий параграф.
Неактивен
Константин Шарыкин написал:
DoubleDragon написал:
Смотрите в сторону макроса
repeat
.ОКей, без вопросов, но появились новые проблемы:
- Параграф не отображается, где создано время
- При прописывание кода:Код:
<<stop 'Примеры' >>, не показываится следующий параграф.
Тогда весь код в студию.
Неактивен
Для первого случая
<<print $$time=4>>
Для второго случая
<<repeat 'Антивирусы' 15>> <<stop 'Антивирусы' >> .body { background-image: url(https://yadi.sk/i/2dvr2OurgPdDY); background-color: #c7b39b; }
Кстати говоря, у меня background не показывает
Отредактировано Константин Шарыкин (22.09.2015 22:24)
Неактивен
<<print $$time=4>>
Так делать нельзя. Системные переменные только для чтения.
background-image: url(https://yadi.sk/i/2dvr2OurgPdDY);
Не показывает, потому что это не картинка, а html страница.
Неактивен
DoubleDragon написал:
Так делать нельзя. Системные переменные только для чтения.
background-image: url(https://yadi.sk/i/2dvr2OurgPdDY);
Не показывает, потому что это не картинка, а html страница.
1. А как тогда?
2.А можно сделать, чтобы было с интернета?
Отредактировано Константин Шарыкин (23.09.2015 17:15)
Неактивен
Помогите пожалуйста
Неактивен
Константин Шарыкин написал:
Помогите пожалуйста
Вставить картинку можно с интернета и с компьютера.
Пример картинки из интернета:
[[Файл: http://sm.axmasoft.com/rsc/logo.png]]
То есть прописывается полный путь к картинке с расширением.
Отредактировано FILINSHEIN (04.10.2015 21:51)
Неактивен
FILINSHEIN написал:
Константин Шарыкин написал:
Помогите пожалуйста
Вставить картинку можно с интернета и с компьютера.
Пример картинки из интернета:Код:
[[Файл: http://sm.axmasoft.com/rsc/logo.png]]То есть прописывается полный путь к картинке с расширением.
А хорошо, а как сделать так, чтобы эта картинка была фоном?
И когда я прописываю такой код:
<<repeat 'Антивирусы' 15>> <<stop 'Антивирусы' >>
То не отображает ничего. Вообще. Даже через 15 сек.
И как сделать ходы? Ребят, срочно надо, позарез, т.к еду на Киев.
Отредактировано Константин Шарыкин (06.10.2015 08:36)
Неактивен
Константин Шарыкин написал:
А хорошо, а как сделать так, чтобы эта картинка была фоном?
Руководство пользователя, раздел - "Работа со спрайтами".
Неактивен
FILINSHEIN написал:
Руководство пользователя, раздел - "Работа со спрайтами".
Вот такой код?
image 'Файл: http://sm.axmasoft.com/rsc/logo.png'
Неактивен
Константин Шарыкин написал:
И когда я прописываю такой код:
Код:
<<repeat 'Антивирусы' 15>> <<stop 'Антивирусы' >>То не отображает ничего. Вообще. Даже через 15 сек.
Ну все же логично, ничего отображать и не должно. Ты же запускаешь таймер и тут же его останавливаешь, он просто не успевает сработать. Если нужно, чтобы параграф "Антивирусы" отработал только один раз через 15 секунд после запуска таймера, макрос <<stop 'Антивирусы'>> нужно перенести в сам параграф "Антивирусы". Через 15 секунд он выполнится и сам же остановит таймер.
Неактивен
Константин Шарыкин написал:
Код:
.body { background-image: url(https://yadi.sk/i/2dvr2OurgPdDY); background-color: #c7b39b; }Кстати говоря, у меня background не показывает
DoubleDragon уже ответил: в url() нужно просто запихнуть ссылку на саму картинку, а не на веб-страницу. В данном случае на странице https://yadi.sk/i/2dvr2OurgPdDY кликаем на картинку, она открывается в новом окне, и там в адресной строке мы берем ссылку на картинку:
спойлер…
Помещаем всю эту страшную ссылку в url(), и фон появится. Только в версии Асм 4+ селектор должен быть не .body, а #body.
Неактивен
Morych написал:
Константин Шарыкин написал:
Код:
.body { background-image: url(https://yadi.sk/i/2dvr2OurgPdDY); background-color: #c7b39b; }Кстати говоря, у меня background не показывает
DoubleDragon уже ответил: в url() нужно просто запихнуть ссылку на саму картинку, а не на веб-страницу. В данном случае на странице https://yadi.sk/i/2dvr2OurgPdDY кликаем на картинку, она открывается в новом окне, и там в адресной строке мы берем ссылку на картинку:
спойлер…
Помещаем всю эту страшную ссылку в url(), и фон появится. Только в версии Асм 4+ селектор должен быть не .body, а #body.
Все, я нашел! Огромное спасибо!
Остается решить вопрос с проблемой по поводу времени, и можно ехать в Киев!
Хочу допустим чтобы персонаж за определенное время, нашел смартфон!
Как это сделать? Можно случай с ходами!
Неактивен
Константин Шарыкин написал:
Хочу допустим чтобы персонаж за определенное время, нашел смартфон!
Как это сделать? Можно случай с ходами!
В текстовой игре всегда лучше использовать игровое время, а не реальное. Ну или вот именно ходы. Нужно предварительно завести переменную, в которой будем хранить число ходов, например:
<<set $turn = 0>>
Каждое действие в игре увеличивает значение этой переменной. Ну, например, гг находится в комнате и должен найти смартфон:
:: Комната <<if $turn eq 0>> Внезапно вы слышите где-то неподалеку урчание вибрирующего смартфона. Это, наверняка, очень важный звонок! <<elseif $turn lt 10>> Пусто. Смартфон тем временем продолжает звонить... <<else>> Все, смартфон замолк - вы понимаете, что это конец. <<endif>> <<if $turn lt 10>> [[Глянуть под кроватью|Комната {$turn = $turn + 1}]] [[Порыться в мусорном ведре|Комната {$turn = $turn + 6}]] [[Проверить задний карман|Смартфон найден]] [[Передохнуть|Комната {$turn = $turn + 3}]] <<endif>>
Неактивен
Такой вопрос:
Как сделать так, что бы действие появилось при определенных условиях?
Неактивен
Ну помогите народ. Ну дайте сделаю игру.
Неактивен
Константин Шарыкин написал:
Такой вопрос:
Как сделать так, что бы действие появилось при определенных условиях?
Вот же пример сверху:
<<if $turn lt 10>> [[Глянуть под кроватью|Комната {$turn = $turn + 1}]] [[Порыться в мусорном ведре|Комната {$turn = $turn + 6}]] [[Проверить задний карман|Смартфон найден]] [[Передохнуть|Комната {$turn = $turn + 3}]] <<endif>>
Неактивен
DoubleDragon написал:
Константин Шарыкин написал:
Такой вопрос:
Как сделать так, что бы действие появилось при определенных условиях?Вот же пример сверху:
Код:
<<if $turn lt 10>> [[Глянуть под кроватью|Комната {$turn = $turn + 1}]] [[Порыться в мусорном ведре|Комната {$turn = $turn + 6}]] [[Проверить задний карман|Смартфон найден]] [[Передохнуть|Комната {$turn = $turn + 3}]] <<endif>>
Я имел ввиду, что если допустим герой посмотрел комнату, то он может ли продолжить в ней быть, или появиться кнопка"отправиться в другую комнату", вот что я имел ввиду.
Неактивен
Почему АКСМА 4 неправильно работает, если в строке встречается квадратная скобка.
Например:
<<set $ТамараК = '[[+сумочка|Тамара Ивановна сумочка]]'>>
не должно ничего выводить
а оно выводит
<сумочка'>>
Как с этим жить?
Неактивен
Annushka написал:
Почему АКСМА 4 неправильно работает, если в строке встречается квадратная скобка.
Например:
<<set $ТамараК = '[[+сумочка|Тамара Ивановна сумочка]]'>>
не должно ничего выводить
а оно выводит
<сумочка'>>
Как с этим жить?
Потому что принимает скобки за ссылку на элемент массива.
Можно поменять [
на & #91; ]
на & #93; (уберите пробелы после &).
Неактивен
Константин Шарыкин написал:
Такой вопрос:
Как сделать так, что бы действие появилось при определенных условиях?
1) Создаешь переменную для хранения нужного параметра
2) Ссылку-действие помещаешь внутрь макроса <<if>> ... <<endif>> где проверяется значение этого параметра
3) В нужный момент устанавливаешь тебуемое значение параметра
Константин Шарыкин написал:
Я имел ввиду, что если допустим герой посмотрел комнату, то он может ли продолжить в ней быть, или появиться кнопка"отправиться в другую комнату", вот что я имел ввиду.
Пример:
:: Start <<set $komnata = 0>> [[Идти в комнату 1|Комната 1]] :: Комната 1 Вы в комнате 1. [[Осмотреть комнату|Комната 1 {$komnata = 1}]] <<if $komnata eq 1>> [[Идти в комнату 2|Комната 2]] <<endif>>
Неактивен
DoubleDragon написал:
Потому что принимает скобки за ссылку на элемент массива.
Можно поменять[
на & #91;]
на & #93; (уберите пробелы после &).
Спасибо, больше не показывает лишнего. Но я вообще ожидала что эти ссылки будут потом показываться в тексте именно как ссылки.
А они показываются как скобочки
Отредактировано Annushka (15.11.2015 20:08)
Неактивен
Annushka написал:
DoubleDragon написал:
Потому что принимает скобки за ссылку на элемент массива.
Можно поменять[
на & #91;]
на & #93; (уберите пробелы после &).Спасибо, больше не показывает лишнего. Но я вообще ожидала что эти ссылки будут потом показываться в тексте именно как ссылки.
А они показываются как скобочки
Тогда так:
<<set $ТамараК = 'Тамара Ивановна сумочка'>> <<set $сумочка = 'сумочка'>> [[+$сумочка|$ТамараК]]
Неактивен
1) Как можно использовать в игре ASCII-арт? Пробовал заключать в <<nop>> и фиксировать количество пробелов через <<tab n>>, но что-то не вышло. Аналога <pre> не предусмотрено?
2) Кто-нибудь пробовал реализовать достижения, открывающие дополнительный контент? Вроде того, что в игре есть несколько концовок, за каждую получается достижение (в меню, например, даётся ссылка на параграф, где указан список открытых), когда игрок проходит все - ему даётся ссылка на дополнительную сцену или концепт-арты или черновики или чего там автор учудит. Думал, можно сделать так, что restart ведёт не на start, а на параграф, где можно задать значение объекту концовкаN: 1 или true. Но уже на второй концовке при переходе произойдёт сброс всех параметров и проверить, какие концовки были получены уже не удастся. Если же рестарт не делать, то надо сбрасывать все используемые в игре переменные, кроме концовочных, вручную. Так?
Неактивен
Есть моноширинное форматирование текста: {{{Текст}}}
Неактивен
Пробелы в нём съедаются. Вот, к примеру, как такой простой рисунок нарисовать?
/\_/\ ( x_0 ) (_____) | |
Если писать так:
{{{ /\_/\}}} {{{( x_0 )}}} {{{(_____)}}} {{{ | |}}}
То верх и низ съезжают. И от пустых строк не получается избавиться. Если конструкцию ещё и в nop заключить, то она вообще выведется в одну строку.
Неактивен
Вместо пробелов надо использовать неразрывный пробел и писать в одну строку разбивая её макросом <<br>>. Согласен, неудобно.
Неактивен
Здравствуйте люди! Вопрос у меня нубский, но можно ли (и если да то КАК?) получить случайный элемент списка? Допустим, есть у нас список:
$имена = ['Иван','Степан','Захар']
и есть фраза типа: "на утренней прогулке я встретил человека по имени..." - но вот как вставить туда рэндомное имя? Как я ни тужился, но рэндом выдает только номер элемента (в данном случае 0 или 1 или 2) а мне-то нужен текст!
Отредактировано Alex2015 (18.11.2015 18:16)
Неактивен
Alex2015 написал:
Здравствуйте люди! Вопрос у меня нубский, но можно ли (и если да то КАК?) получить случайный элемент списка? Допустим, есть у нас список:
$имена = ['Иван','Степан','Захар']
и есть фраза типа: "на утренней прогулке я встретил человека по имени..." - но вот как вставить туда рэндомное имя? Как я ни тужился, но рэндом выдает только номер элемента (в данном случае 0 или 1 или 2) а мне-то нужен текст!
Это делается так:
<<set $имена = ['Иван','Степан','Захар'] >> <<random $rnd = 2>> <<print $имена[$rnd]>>
Неактивен
Добрый день!
Подскажите, какой параметр в абзаце стилей отвечает за расстояние между абзацами?
И как уменьшить расстояние между строчками в маркированном списке?
Неактивен
Alex842 написал:
Добрый день!
Подскажите, какой параметр в абзаце стилей отвечает за расстояние между абзацами?
И как уменьшить расстояние между строчками в маркированном списке?
Поищите в параграфе стилей параметр line-height
. Попробуйте его поменять.
Неактивен
Добавил звук в редакторе (25кб, мп3, вызываю соответственно <<sound 'sound1'>>, но звук не воспроизводится. Попробовал запустить как музыку через [[File: files/sound1.mp3]] тоже нет.
К слову это [[Файл: http://sm.axmasoft.com/rsc/kr.mp3]] воспроизводится, но скачанный файл [[Файл: files/kr.mp3]] - нет. Картинки из этой же папки отображаются нормально.
Неактивен
Leosan написал:
Добавил звук в редакторе (25кб, мп3, вызываю соответственно <<sound 'sound1'>>, но звук не воспроизводится. Попробовал запустить как музыку через [[File: files/sound1.mp3]] тоже нет.
К слову это [[Файл: http://sm.axmasoft.com/rsc/kr.mp3]] воспроизводится, но скачанный файл [[Файл: files/kr.mp3]] - нет. Картинки из этой же папки отображаются нормально.
В онлайн редакторе и в библиотеке всё будет нормально. Это особенность Windows версии.
Неактивен
Здравствуйте!
AXMA Story Maker - штука замечательная, но возник такой вопрос: можно ли (и если да то как) заставить игру вести лог событий. Простейший пример: в игре только две переменных - время и погода:
<<set $время = 1>>
<<random $погода = 1>>
Игрок жмет кнопку "далее", наступает новый день, переменная $время увеличивается на 1, а рэндомная $погода принимает значение 1 (ясно) или 0 (пасмурно). На экране игрок видит вот что:
День <<print $время>>: <<if $погода eq 1>>Ясно<<else>>Пасмурно<<endif>>
Но вот как заставить игру запомнить что, например, день 25 был ясным, а день 46 - пасмурным? Хотелось бы иметь параграф "хронология", в котором записывалось бы что-то типа:
День 1: Пасмурно
День 2: Ясно
День 3: Пасмурно
День 4: Пасмурно
День 5: Ясно
...
День 85: Пасмурно
Как я ни пытался, ничего не получается Возможно ли это в принципе?
Пример (та самая игра "погода"): https://yadi.sk/d/xbGjRVdFmigs9
Отредактировано Alex2015 (07.01.2016 11:32)
Неактивен
Можно завести список: <<set $хронология = []>>, а потом добавлять в него элементы: <<set $хронология.push($погода)>>.
Подробнее о списках читайте в руководстве пользователя.
Неактивен
DoubleDragon написал:
Можно завести список: <<set $хронология = []>>, а потом добавлять в него элементы: <<set $хронология.push($погода)>>.
Подробнее о списках читайте в руководстве пользователя.
Именно то, что нужно! СПАСИБО!!!
PS И вот так всегда: испробовал уже самые извращенные изощренные способы, вводил кучу дополнительных объектов и ни фига не получалось. А решение-то было рядом...
Неактивен
Подскажите как на 4ой версии аксмы сделать смену фона, в зависимости от происходящего в истории?
На 2ой версии можно было выбирать тему макросом <<style>> , в 4ке это не возможно(
В данный момент вышел из положения, путем показа солнышка или луны в заголовке, но, это все не то.
Заранее спасибо!)
Неактивен
Поработал не много с календарем.
Конечно есть что улучшать, добавить алгоритм Зеллера, улучшить работу в цикле, если кто поможет - Велком)))
Високосность присутствует
:: time <<loop 10>><<if $minut gte 60>> <<set $hour = $hour + 1>> <<set $minut = $minut - 60>> <<endif>><<endloop>> <<loop 10>><<if $hour gte 24>> <<set $day = $day + 1>> <<set $hour = $hour - 24>> <<set $week = $week + 1>> <<endif>><<endloop>> <<If $week gt 7 >> <<set $week = $week - 7>> <<endif>> <<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)>> <<if $day gt 31>> <<set $day = $day - 31>> <<set $month = $month + 1>> <<endif>> <<endif>> <<if ($month eq 4) or ($month eq 6) or ($month eq 9) or ($month eq 11)>> <<if $day gt 30>> <<set $day = $day - 30>> <<set $month = $month + 1>> <<endif>> <<endif>> <<if $month eq 2 and $year%4 neq 0>> <<if $day gt 28>> <<set $day = $day - 28>> <<set $month = $month + 1>> <<endif>> <<endif>> <<if $month eq 2 and $year%4 eq 0>> <<if $day gt 29>> <<set $day = $day - 29>> <<set $month = $month + 1>> <<endif>> <<endif>> <<if $month gt 12>> <<set $year = $year + 1>> <<set $month = $month - 12>> <<endif>> <<If $week == 1>> <<set $day_name ='Пн'>> <<endif>> <<If $week == 2>> <<set $day_name ='Вт'>> <<endif>> <<If $week == 3>> <<set $day_name ='Ср'>> <<endif>> <<If $week == 4>> <<set $day_name ='Чт'>> <<endif>> <<If $week == 5>> <<set $day_name ='Пт'>> <<endif>> <<If $week == 6>> <<set $day_name ='Сб'>> <<endif>> <<If $week == 7>> <<set $day_name ='Вс'>> <<endif>> <<If $month == 1>> <<set $month_name = 'января'>> <<endif>> <<If $month == 2>> <<set $month_name = 'февраля'>> <<endif>> <<If $month == 3>> <<set $month_name = 'марта'>> <<endif>> <<If $month == 4>> <<set $month_name = 'апреля'>> <<endif>> <<If $month == 5>> <<set $month_name = 'мая'>> <<endif>> <<If $month == 6>> <<set $month_name = 'июня'>> <<endif>> <<If $month == 7>> <<set $month_name = 'июля'>> <<endif>> <<If $month == 8>> <<set $month_name = 'августа'>> <<endif>> <<If $month == 9>> <<set $month_name = 'сентября'>> <<endif>> <<If $month == 10>> <<set $month_name = 'октября'>> <<endif>> <<If $month == 11>> <<set $month_name = 'ноября'>> <<endif>> <<If $month == 12>> <<set $month_name = 'декабря'>> <<endif>> <<if $hour lt 10>> <<set $nullh=0>><<endif>> <<if $hour gte 10>> <<set $nullh=''>><<endif>> <<if $minut lt 10>> <<set $nullm=0>><<endif>> <<if $minut gte 10>> <<set $nullm=''>><<endif>>
Вывод можно оформить самим как угодно.
Пример:
<<print $nullh>><<print $hour>>:<<print $nullm>><<print $minut>> <<print $day_name>>. <<print $day>> <<print $month_name>> <<print $year>>г.
Конечно не забыть задать стартовые параметры
:: s_c <<set $minut = 20>> <<set $hour = 23>> <<set $day = 27>> <<set $week = 4>> <<set $month = 2>> <<set $year = 1700>>
и подключить
<<display 'time'>>
Отредактировано cd3snake (20.01.2016 19:01)
Неактивен
Круто, спасибо!
Неактивен
По работе календаря
С циклом 10 можно передавать
minut = minut + 600
hour = hour + 240
Если передавать больше, ломается, можно получить - nn часов и nnn минут.
Того что есть, более чем достаточно, кому мало, можно увеличить n раз выполнение цикла.
Более 100 делать не рекомендую, начинаются притормаживания.
Можно даже оптимизировать цикл часов. Не вижу смысла в передачи количества часов > 2ух суток.
Так же можно передавать day, не забыв так же прибавить week. И т.д.
Отредактировано cd3snake (22.01.2016 10:20)
Неактивен
Причесал не много. теперь в минутах, неделя спокойно переваривается
<<loop $minut.toString()*10>> <<if $minut gte 60>> <<set $hour = $hour + 1>> <<set $minut = $minut - 60>> <<endif>> <<endloop>> <<loop $hour.toString()*10>> <<if $hour gte 24>> <<set $day = $day + 1>> <<set $hour = $hour - 24>> <<set $week = $week + 1>> <<endif>> <<endloop>> <<If $week gt 7 >> <<set $week = $week - 7>> <<endif>> ############ <<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)>> <<if $day gt 31>> <<set $day = $day - 31>> <<set $month = $month + 1>> <<endif>> <<endif>> ############ <<if ($month eq 4) or ($month eq 6) or ($month eq 9) or ($month eq 11)>> <<if $day gt 30>> <<set $day = $day - 30>> <<set $month = $month + 1>> <<endif>> <<endif>> ############ <<if $month eq 2 and $year%4 eq 0>> <<if $day gt 29>> <<set $day = $day - 29>> <<set $month = $month + 1>> <<endif>> <<endif>> <<if $month eq 2 and $year%4 neq 0>> <<if $day gt 28>> <<set $day = $day - 28>> <<set $month = $month + 1>> <<endif>> <<endif>> ######### <<if $month gt 12>> <<set $year = $year + 1>> <<set $month = $month - 12>> <<endif>> ######### <<If $week == 1>> <<set $day_name ='Пн'>> <<endif>> <<If $week == 2>> <<set $day_name ='Вт'>> <<endif>> <<If $week == 3>> <<set $day_name ='Ср'>> <<endif>> <<If $week == 4>> <<set $day_name ='Чт'>> <<endif>> <<If $week == 5>> <<set $day_name ='Пт'>> <<endif>> <<If $week == 6>> <<set $day_name ='Сб'>> <<endif>> <<If $week == 7>> <<set $day_name ='Вс'>> <<endif>> <<If $month == 1>> <<set $month_name = 'января'>> <<endif>> <<If $month == 2>> <<set $month_name = 'февраля'>> <<endif>> <<If $month == 3>> <<set $month_name = 'марта'>> <<endif>> <<If $month == 4>> <<set $month_name = 'апреля'>> <<endif>> <<If $month == 5>> <<set $month_name = 'мая'>> <<endif>> <<If $month == 6>> <<set $month_name = 'июня'>> <<endif>> <<If $month == 7>> <<set $month_name = 'июля'>> <<endif>> <<If $month == 8>> <<set $month_name = 'августа'>> <<endif>> <<If $month == 9>> <<set $month_name = 'сентября'>> <<endif>> <<If $month == 10>> <<set $month_name = 'октября'>> <<endif>> <<If $month == 11>> <<set $month_name = 'ноября'>> <<endif>> <<If $month == 12>> <<set $month_name = 'декабря'>> <<endif>> ######### <<if $hour lt 10>><<set $nullh=0>><<else>><<set $nullh=''>><<endif>> <<if $minut lt 10>><<set $nullm=0>><<else>><<set $nullm=''>><<endif>>
Неактивен
Здравствуйте, возможно ли пересчитать определенный элемент в списке и получить его кол-во не прибегая к лупам? Допустим, мне нужно знать, сколько раз в списке встречается двойка в функции ифа.
Неактивен
Маверик Романов написал:
Здравствуйте, возможно ли пересчитать определенный элемент в списке и получить его кол-во не прибегая к лупам? Допустим, мне нужно знать, сколько раз в списке встречается двойка в функции ифа.
Хмм, так, навскидку ничего кроме циклов в голову не приходит... А чем плох этот вариант?
Неактивен
DoubleDragon написал:
Хмм, так, навскидку ничего кроме циклов в голову не приходит... А чем плох этот вариант?
Многовато возни каждый раз, как нужно проверить список на наличие чего-либо, или достать конкретный неизвестный индекс...
Другой вопрос, можно ли добавить\поменять менюшки в стиле storymenu, заодно чтобы использовать в них обычный текст?
Можно ли еще отключить кнопку "назад"?
Отредактировано Маверик Романов (09.03.2016 02:39)
Неактивен
Маверик Романов написал:
DoubleDragon написал:
Хмм, так, навскидку ничего кроме циклов в голову не приходит... А чем плох этот вариант?
Многовато возни каждый раз, как нужно проверить список на наличие чего-либо, или достать конкретный неизвестный индекс...
Другой вопрос, можно ли добавить\поменять менюшки в стиле storymenu, заодно чтобы использовать в них обычный текст?
Можно ли еще отключить кнопку "назад"?
Можно сделать в меню такую ссылку на несуществующий параграф: [[*Текст|Ссылка в никуда]].
Кнопка Назад отключается в меню Вид / Изменить тему. Надо кликнуть по кнопке и снять галочку.
Неактивен
DoubleDragon написал:
Можно сделать в меню такую ссылку на несуществующий параграф: [[*Текст|Ссылка в никуда]].
Я бы предпочел что-то более конфигурабельное и менее выпячивающееся. Список определенных статов или даже таблицы.. Да и стандартная менюшка вполне пригодна в использовании. Добавлять дополнительные было бы очень даже...
Кнопка Назад отключается в меню Вид / Изменить тему. Надо кликнуть по кнопке и снять галочку.
Спасибо!
Отредактировано Маверик Романов (09.03.2016 20:55)
Неактивен
Так в ссылках же можно использовать переменные. Пишите в меню что хотите. RTFM
P. S. Даже картинки в меню вставляются элементарно вместо текста.
Неактивен
Почему там ничего кроме ссылок (и картинок?) не отображается то? И можно ли как-нибудь настроить размеры и выключить иллюстрацию к примеру? о дополнительных боковых окнах уже не прошу.
Неактивен
Маверик Романов написал:
Почему там ничего кроме ссылок (и картинок?) не отображается то? И можно ли как-нибудь настроить размеры и выключить иллюстрацию к примеру? о дополнительных боковых окнах уже не прошу.
Потому что это МЕНЮ. В параграфе стилей StoryStyle можно отредактировать размеры окон или вовсе убрать их. Также можно выбрать одноконный режим кнопкой Новая.
Неактивен
Добрый день!
Подскажите, пожалуйста, как отцентровать кнопки, чтоб рамки у этих кнопок не пропадали?
===[[-Далее|пролог]]===
так не работает
Неактивен
Вета написал:
Добрый день!
Подскажите, пожалуйста, как отцентровать кнопки, чтоб рамки у этих кнопок не пропадали?
===[[-Далее|пролог]]===
так не работает
Уже ответил в потоке, но повторю и здесь. К сожалению, никак. Только через параграф стилей.
Неактивен
Только-только начал работать с AXMA.
Можно ли как-нибудь провернуть такое: у меня есть сцена, в которой игрок должен совершить какое-то действие в течение, допустим, 10 секунд, после чего, если игрок ничего не предпринял, его перекидывает на следующий параграф и там идет дальше. Вопрос мой такой: можно ли как-нибудь в этот первый параграф поставить "секундомер", который в режиме реального времени показывал, сколько секунд прошло с открытия параграфа? То есть, посреди параграфа была бы надпись "время:" и динамически изменяющиеся цифры?
Отредактировано Данил Зорин (25.03.2016 19:58)
Неактивен
Используйте макрос <<repeat>>.
Неактивен
Привет парни. Делаю новую версию биатлона (Морыч с даблдраганом сильно помогли в тот раз, но код игры был потерян, восстанавливаю все заново. Есть вопросы, помогите плиз:
1 вопрос
спойлер…
Выводятся значения, вида: 56,877777777. Как сделать, чтобы число округлялось, типа - 57?
2 вопрос
спойлер…
Код выводит информацию:
1 место: Вася - 1000 метров до финиша
2 место: Игорь - 1350 метров до финиша.
Как сделать, чтобы было так:
1 место: Вася - 1000 метров до финиша
2 место: Игорь - 350 метров от Васи
???
Неактивен
Как сделать, чтобы число округлялось, типа - 57?
Math.Round()
Код выводит информацию:
1 место: Вася - 1000 метров до финиша
2 место: Игорь - 1350 метров до финиша.
Как сделать, чтобы было так:
1 место: Вася - 1000 метров до финиша
2 место: Игорь - 350 метров от Васи
Впихивать проверку на место, если не первое, то вычитать расстояние текущего из расстояния предыдущего места и ссылаться на имя.
Неактивен
Можно ли (и как) заменить ссылки на параграфы на кнопки через [[ [[File: '']] |]] так, чтобы выстраивались в ряд, а не в колонну?
Неактивен
Маверик Романов написал:
Можно ли (и как) заменить ссылки на параграфы на кнопки через [[ [[File: '']] |]] так, чтобы выстраивались в ряд, а не в колонну?
Можно через параграф StoryStyle.
Неактивен
DoubleDragon написал:
Маверик Романов написал:
Можно ли (и как) заменить ссылки на параграфы на кнопки через [[ [[File: '']] |]] так, чтобы выстраивались в ряд, а не в колонну?
Можно через параграф StoryStyle.
Было бы неплохо хотя бы какой-нибудь минималистичный гайд по нему, а то банальное изменение размеров окон заняло у меня несколько часов в прошлый раз
Неактивен
Маверик Романов написал:
DoubleDragon написал:
Маверик Романов написал:
Можно ли (и как) заменить ссылки на параграфы на кнопки через [[ [[File: '']] |]] так, чтобы выстраивались в ряд, а не в колонну?
Можно через параграф StoryStyle.
Было бы неплохо хотя бы какой-нибудь минималистичный гайд по нему, а то банальное изменение размеров окон заняло у меня несколько часов в прошлый раз
Очень большие изменения шаблона StoryStyle в последних версиях. Как всё устаканится, пропишу комментарии к каждой секции.
Неактивен
DoubleDragon написал:
Маверик Романов написал:
DoubleDragon написал:
Можно через параграф StoryStyle.Было бы неплохо хотя бы какой-нибудь минималистичный гайд по нему, а то банальное изменение размеров окон заняло у меня несколько часов в прошлый раз
Очень большие изменения шаблона StoryStyle в последних версиях. Как всё устаканится, пропишу комментарии к каждой секции.
Спасибо большое! Есть намеки на дату выхода следующей версии?
Неактивен
Спасибо большое! Есть намеки на дату выхода следующей версии?
7-10 дней. Будет много вкусного
Неактивен
<<set $i = 0>> <<loop $characterlist.length>> <<if $charactercondition[$i] eq 1>> [[continue{$ii=$i}]] <<endif>> <<set $i++>> <<endloop>>
Есть ли возможность сделать так, чтобы ссылки, созданные лупом по данной схеме работали как надо? Или альтернативные варианты, чтобы не выписывать 20 раз каждого возможного персонажа.
Отредактировано Маверик Романов (08.04.2016 19:39)
Неактивен
Маверик Романов написал:
Код:
<<set $i = 0>> <<loop $characterlist.length>> <<if $charactercondition[$i] eq 1>> [[continue{$ii=$i}]] <<endif>> <<set $i++>> <<endloop>>Есть ли возможность сделать так, чтобы ссылки, созданные лупом по данной схеме работали как надо? Или альтернативные варианты, чтобы не выписывать 20 раз каждого возможного персонажа.
Если честно - это самый застарелый баг. Попробую поправить его к выходу очередной версии. Там не всё так просто
Неактивен
Баг ли? по-моему там просто {} внутри переходов активируется только по нажатию, а не по генерации ссылки.
Неактивен
Маверик Романов написал:
Баг ли? по-моему там просто {} внутри переходов активируется только по нажатию, а не по генерации ссылки.
Да, именно так. Но по сути это баг.
Неактивен
Покопался в одной крупной игре на твайне, и увидел там такую вещь...
$список\объект[$i].подобъект1 $объект\список[$i].подобъект2 $объект\список[$i].подобъект3
Обрадовался, что смогу запихнуть 30 подобъектов и один список персонажей и не мучиться, но к сожалению без результата. Нет ли подобной функции (не нашел в их хелпе ничего конкретно об этом) это подлисты и на аксме такое в принципе не возможно?
Отредактировано Маверик Романов (10.04.2016 14:40)
Неактивен
Маверик Романов написал:
Покопался в одной крупной игре на твайне, и увидел там такую вещь...
Код:
$список\объект[$i].подобъект1 $список\объект[$i].подобъект2 $список\объект[$i].подобъект3Обрадовался, что смогу запихнуть 30 подобъектов и один список персонажей и не мучиться, но к сожалению без результата. Нет ли подобной функции (не нашел в их хелпе ничего конкретно об этом) это подлисты и на аксме такое в принципе не возможно?
Да, сейчас такого нет, но планируется.
Неактивен
alfa10 написал:
файл весит 29 МБ. при попытке вывести игру в html-файл после долгого ожидания (час) происходит ошибка (вернее, операция сбрасывается). как быть и почему?
Скорее всего из-за размера. А в онлайн версии пробовал?
P.S. Возможно файл и скомпилировался. Проверить это можно в профиле, где теперь есть ссылка для скачивания последнего экспортированного HTML-файла.
Неактивен
в кабинете вроде только ссылки на .sm файл есть, вроде же, а не на html? просто должно открываться окно, где выбираем куда сохранить html-файл, а окно не открывается. каков допустимый размер файла? просто все нужно, удалять код где то не вариант))))
Неактивен
alfa10 написал:
в кабинете вроде только ссылки на .sm файл есть, вроде же, а не на html? просто должно открываться окно, где выбираем куда сохранить html-файл, а окно не открывается. каков допустимый размер файла? просто все нужно, удалять код где то не вариант))))
У про пользователей теперь есть и ссылка на html.
Допустимый размер неизвестен, так как это зависит от компа и ОС, где он компилится. Онлайн версия обычно выдерживает больший размер.
Неактивен
alfa10 написал:
а где ссылка в личном кабинете? вижу файлы, счёт и публикации. и все. тип ака - про
Если ни один файл не экспортировался, то ссылки нет. Попробуй экспорт из онлайн версии.
Неактивен
alfa10 написал:
а при выводе html интернет должен быть включён? а то я экспортировал без интернета
Да, конечно
Неактивен
alfa10 написал:
Все заработало! Инет нужен был))))
Кстати, не самопиар а так - хотелось бы показать народу свою игру - Биатлон, чтобы видели, что можно выжать из платформы AXMA.
Ну так показывай
Неактивен
DoubleDragon написал:
Так в ссылках же можно использовать переменные.
Если использовать [[$объект|nothing]], то работает нормально, но если [[текст + $объект|nothing]], то выдает наименование переменной аля var157, вместо значения. Впрочем это справедливо и для обычных ссылок на параграфы, но в меню это критично, так как по другому текст в одну строку с переменной не вбить.
Отредактировано Маверик Романов (21.04.2016 19:30)
Неактивен
Маверик Романов написал:
DoubleDragon написал:
Так в ссылках же можно использовать переменные.
Если использовать [[$объект|nothing]], то работает нормально, но если [[текст + $объект|nothing]], то выдает наименование переменной аля var157, вместо значения. Впрочем это справедливо и для обычных ссылок на параграфы, но в меню это критично, так как по другому текст в одну строку с переменной не вбить.
Так и должно быть. Объект (переменная) - это не выражение. Во все макросы подставляются значения объектов. Читайте руководство, а не придумывайте несуществующие конструкции.
Неактивен
DoubleDragon написал:
Маверик Романов написал:
DoubleDragon написал:
Так в ссылках же можно использовать переменные.
Если использовать [[$объект|nothing]], то работает нормально, но если [[текст + $объект|nothing]], то выдает наименование переменной аля var157, вместо значения. Впрочем это справедливо и для обычных ссылок на параграфы, но в меню это критично, так как по другому текст в одну строку с переменной не вбить.
Так и должно быть. Объект (переменная) - это не выражение. Во все макросы подставляются значения объектов. Читайте руководство, а не придумывайте несуществующие конструкции.
В руководстве далеко не всё упомянуто, кроме того меня интересует выполнение конкретных задач, а не работа в узких рамках
Неактивен
Маверик Романов написал:
Если использовать [[$объект|nothing]], то работает нормально, но если [[текст + $объект|nothing]], то выдает наименование переменной аля var157, вместо значения.
А если ввести еще одну переменную?
Например, выводим в тексте ссылки название текущего параграфа:
<<set $var = 'Название параграфа: '+$$title>> [[$var|параграф3]]
Т.е. заранее объявить новую переменную, а потом уже вставлять ее значение в ссылку.
ПС.
Вот код истории с несколькими примерами динамического изменения текста ссылки:
:: StorySubtitle Вставьте сюда краткое описание игры или её фабулу, уведомление пользователям или любой текст, который должен быть виден при запуске игры. :: StoryAuthor Автор игры :: StoryTitle Название игры :: StoryMenu [[*Вступление|StorySubtitle]] :: Start #Объявляем переменную в самом начале игры <<set $var = 'Название параграфа: '>> Это первый параграф и первое, что увидит пользователь после краткого описания. Отсюда начинается написанная Вами игра. <<picture '[[File: http://sm.axmasoft.com/rsc/back.jpg]]'>> [[Дальше|Новый_параграф]] :: новый_параграф #Вставяем в меню и ссылку <<menu '[[$var+$$title|Параграф3]] '>> [[$var+$$title|параграф3]] :: параграф3 #Можно поменять текст переменной <<set $var = 'Изменил текст: '>> <<menu '[[$var+$$title|Параграф3]] '>> [[$var+$$title|параграф3]]
Отредактировано Alex842 (22.04.2016 13:08)
Неактивен
DoubleDragon написал:
alfa10 написал:
Все заработало! Инет нужен был))))
Кстати, не самопиар а так - хотелось бы показать народу свою игру - Биатлон, чтобы видели, что можно выжать из платформы AXMA.Ну так показывай
Чет не выкладывается, пишет ошибку. Видимо файл большого размера
Неактивен
Есть переменные: команда1, команда2 и т.д... Как сделать, чтобы рандомно составлялась сетка турнира между этими командами?
Например, Команда3 против Команда1, Команда2 против Команда10.
И дальше чтобы проигравшие в сите не участвовали уже. Т.е., если Команда3 и Команда2 проиграли, дальше сеялись уже без них сетки
Неактивен
И еще вопрос - прописываю команды:
<<set $команда1 = 'Россия'>>
<<set $команда2 = 'Чехия'>>
<<set $команда3 = 'Канада'>>
Как сделать, чтобы при выборе конкретной команды для игры, на экран выводилась фотография флага страны?
Неактивен
Alex842 написал:
А если ввести еще одну переменную?
Например, выводим в тексте ссылки название текущего параграфа:
Идея хорошая, но тогда каждый раз при смене ключевой переменной нужно так же прописывать обновление новой переменной, из-за чего мне придется дописывать с пол сотни новых строк везде, где только можно. Мне уже больше интересней, реально ли через стори стайл добавить дополнительное окно с текстом, куда я могу вбивать переменные данные когда мне нужно, которые были бы у игрока перед глазами в любой момент(ну и как это можно сделать).
Чет не выкладывается, пишет ошибку. Видимо файл большого размера
Пробуй через онлайн версию.
И еще вопрос - прописываю команды:
<<set $команда1 = 'Россия'>>
<<set $команда2 = 'Чехия'>>
<<set $команда3 = 'Канада'>>
Как сделать, чтобы при выборе конкретной команды для игры, на экран выводилась фотография флага страны?
Насколько я знаю, изображения можно вбивать в переменные, которые потом привязать к командам. Ну или по холопски
<<if $командаN eq x>> <<picture 'file:blabla'>> <<elseif ....>>
Как сделать, чтобы рандомно составлялась сетка турнира между этими командами?
Берешь первую команду, задаешь рандомное значение из числа максимально возможных мест, ставишь команду в это место, берешь следующую команду, задаешь рандомное значение, делаешь проверку, не занято ли место, если занято - реролл или взять не занятое место, берешь третью команду...
И дальше чтобы проигравшие в сите не участвовали уже. Т.е., если Команда3 и Команда2 проиграли, дальше сеялись уже без них сетки
Вводишь переменные $проигралаЛиКоманда1/2/3..., когда проигрывают - убираешь из сетки, или добавляешь к ним, что проиграли. Не уверен, как при этом остальная сетка будет перестраиваться.
Отредактировано Маверик Романов (22.04.2016 14:15)
Неактивен
Еще вопрос. Прописал восемь команд, прописал массив из очков для этих команд:
<<set $очки = [0, 0, 0, 0, 0, 0, 0, 0]>>
Теперь к примеру играет команда1 с командой8, и команда8 победила, как прописать ей в очки 3 очка?
Неактивен
alfa10 написал:
Еще вопрос. Прописал восемь команд, прописал массив из очков для этих команд:
<<set $очки = [0, 0, 0, 0, 0, 0, 0, 0]>>
Теперь к примеру играет команда1 с командой8, и команда8 победила, как прописать ей в очки 3 очка?
<<set $очки[8] = $очки[8] + 3>> или <<set $очки[8] += 3>>
Скорей всего победителей ты будешь отслеживать через [$i], так что в скобках вместо цифр будут переменные с номером команды, очки которой ты меняешь.
Неактивен
alfa10 написал:
Код:
<<set $очки[8] = $очки[8] + 3>> или <<set $очки[8] += 3>>Только почему-то первая команда в массиве идет как очки[0], а не очки[1].
Потому что отсчеты массивов начинаются с нуля, а не с единицы.
Неактивен
Как можно сделать текстовые полоски, как сделаны в арене? http://hyperbook.ru/file13764029087384
На ум приходит проверка стата и через луп добавлять знак на каждые 5% от максимального числа, после чего добавлять через второй луп пустой знак на оставшиеся проценты, но выглядит как-то это очень наркомански для меня и может есть вариант лучше?
Неактивен
Маверик Романов написал:
Как можно сделать текстовые полоски, как сделаны в арене? http://hyperbook.ru/file13764029087384
На ум приходит проверка стата и через луп добавлять знак на каждые 5% от максимального числа, после чего добавлять через второй луп пустой знак на оставшиеся проценты, но выглядит как-то это очень наркомански для меня и может есть вариант лучше?
Целая статья на эту тему: http://hyperbook.ru/blog.php?id=13688673359088
Неактивен
Есть длинная строка чисел, загнанных в объект. Как можно заменить одно из чисел в строке на другое с минимальными нагрузками?
<<set $объект.toString().charAt() = N>> не канает.
Неактивен
Маверик Романов написал:
Есть длинная строка чисел, загнанных в объект. Как можно заменить одно из чисел в строке на другое с минимальными нагрузками?
<<set $объект.toString().charAt() = N>> не канает.
Вопрос не очень понятен. Если имеется ввиду замена одного символа на другой, то, конечно, через replace:
<<set $объект = $объект.replace(/1/g,'2')>>
Неактивен
DoubleDragon написал:
Маверик Романов написал:
Есть длинная строка чисел, загнанных в объект. Как можно заменить одно из чисел в строке на другое с минимальными нагрузками?
<<set $объект.toString().charAt() = N>> не канает.Вопрос не очень понятен. Если имеется ввиду замена одного символа на другой, то, конечно, через replace:
Код:
<<set $объект = $объект.replace(/1/g,'2')>>
Да, но в этом случае заменяется конкретный символ (/1/g). У меня в строке может быть слишком много одинаковых символов, чтобы рассчитывать на это. Есть ли вариант указания символа как в charAt?
Неактивен
Маверик Романов написал:
DoubleDragon написал:
Маверик Романов написал:
Есть длинная строка чисел, загнанных в объект. Как можно заменить одно из чисел в строке на другое с минимальными нагрузками?
<<set $объект.toString().charAt() = N>> не канает.Вопрос не очень понятен. Если имеется ввиду замена одного символа на другой, то, конечно, через replace:
Код:
<<set $объект = $объект.replace(/1/g,'2')>>Да, но в этом случае заменяется конкретный символ (/1/g). У меня в строке может быть слишком много одинаковых символов, чтобы рассчитывать на это. Есть ли вариант указания символа как в charAt?
Можно так ($индекс - номер заменяемого числа, начиная с 1):
<<set $объект = 1234567890+''>> <<set $индекс = 3>> <<set $объект = $объект.substr(0,$индекс-1)+'4'+$объект.substr($индекс)>> <<print $объект>>
Будет выведено 1244567890
.
Неактивен
DoubleDragon написал:
Маверик Романов написал:
DoubleDragon написал:
Вопрос не очень понятен. Если имеется ввиду замена одного символа на другой, то, конечно, через replace:Код:
<<set $объект = $объект.replace(/1/g,'2')>>Да, но в этом случае заменяется конкретный символ (/1/g). У меня в строке может быть слишком много одинаковых символов, чтобы рассчитывать на это. Есть ли вариант указания символа как в charAt?
Можно так ($индекс - номер заменяемого числа, начиная с 1):
Код:
<<set $объект = 1234567890+''>> <<set $индекс = 3>> <<set $объект = $объект.substr(0,$индекс-1)+'4'+$объект.substr($индекс)>> <<print $объект>>Будет выведено
1244567890
.
Это подходит, спасибо.
Неактивен
Сижу, ломаю голову.
Есть ряд рандомно сгенерированных числовых объектов ($i $i2 $i3... к примеру). Как можно определить который из них является самым большим, или маленьким?
Неактивен
Маверик Романов написал:
Сижу, ломаю голову.
Есть ряд рандомно сгенерированных числовых объектов ($i $i2 $i3... к примеру). Как можно определить который из них является самым большим, или маленьким?
Статья в блоге: http://hyperbook.ru/blog.php?id=13633403734658
Смотреть в сторону Math.min
и Math.max
.
Неактивен
DoubleDragon написал:
Маверик Романов написал:
Сижу, ломаю голову.
Есть ряд рандомно сгенерированных числовых объектов ($i $i2 $i3... к примеру). Как можно определить который из них является самым большим, или маленьким?Статья в блоге: http://hyperbook.ru/blog.php?id=13633403734658
Смотреть в сторонуMath.min
иMath.max
.
Про math.min/max я знаю, но они указывают на содержание объекта, а не на сам объект. Мне нужно знать, к какому объекту принадлежит это число.
Неактивен
Если объекты записаны в массив -- пробежаться по нему: сарвнить каждого кандидата с текущим максимумом (минимумом), если кандидат больше (меньше) -> заменить номер текущего максимума (минимума) на номер кандидата, а значение -- на значение. В конце цикла останется номер и значение максимального (минимального) числа.
Неактивен
blinovvi написал:
Если объекты записаны в массив
Нет.
Неактивен
Маверик Романов написал:
blinovvi написал:
Если объекты записаны в массив
Нет.
Тогда пиши по-человечески.
Неактивен
DoubleDragon написал:
Маверик Романов написал:
blinovvi написал:
Если объекты записаны в массив
Нет.
Тогда пиши по-человечески.
Что писать то? есть набор объектов, $i1 $i2 $i3 ... $in, которым были присвоены значения. Есть ли способ определить который из объектов имеет наибольшее-наименьшее значение?
Неактивен
Тогда чем не устраивает этот код?
<<set $1 = 1>> <<set $2 = 2>> <<set $3 = 3>> <<print Math.max($1,$2,$3)>>
Неактивен
DoubleDragon написал:
Тогда чем не устраивает этот код?
Код:
<<set $1 = 1>> <<set $2 = 2>> <<set $3 = 3>> <<print Math.max($1,$2,$3)>>
Тем, что будет получено 3, а не $3. Как потом из числа получить нужный объект? Сверять конечное число со всеми объектами из списка только если, но это выглядит мягко говоря неадекватно, особенно при большом списке.
Неактивен
Маверик Романов написал:
DoubleDragon написал:
Тогда чем не устраивает этот код?
Код:
<<set $1 = 1>> <<set $2 = 2>> <<set $3 = 3>> <<print Math.max($1,$2,$3)>>Тем, что будет получено 3, а не $3. Как потом из числа получить нужный объект? Сверять конечное число со всеми объектами из списка только если, но это выглядит мягко говоря неадекватно, особенно при большом списке.
Невозможно по значению получить однозначно имя объекта, хотя бы потому, что их может быть сколько угодно. Даже при сравнении получишь не имя объекта, а его значение.
Неактивен
Вероятно странный вопрос, но как можно проверить, является ли переменная NaN после неудачных вычислений?
Пардон, вопрос снят. Забыл про .toString.
Отредактировано Маверик Романов (05.06.2016 15:53)
Неактивен
Можно ли как-нибудь вызвать всплывающее окно (как при * в начале ссылки) при переходе на новый экран, а не активации ссылки? Как, например, в самом первом экране, где показывается название произведения поверх старта.
Неактивен
Маверик Романов написал:
Можно ли как-нибудь вызвать всплывающее окно (как при * в начале ссылки) при переходе на новый экран, а не активации ссылки? Как, например, в самом первом экране, где показывается название произведения поверх старта.
К сожалению, нет.
Неактивен
здравствуйте , у меня имеются 2 вопроса, которые хотелось бы решить.
1 ) У меня есть герой с определенными характеристиками (Для него я создал отдельный файл), например <<set $Сила = 10>> . как мне сделать так, что при нажатии на (уменьши уровень своей [[СИЛА на 1 и вежливо объяснишь, что твоя судьба предрешена. |Вежливо объяснишь, что твоя судьба предрешена.]]) История продолжалась уже после нажатия с изменением характеристики персонажа в большую или меньшую сторону?
Я пишу это так : уменьши уровень своей [[СИЛА на 1 и вежливо объяснишь, что твоя судьба предрешена. |Вежливо объяснишь, что твоя судьба предрешена. {$сила = -1}]]
2) При начале истории, хотелось бы создавать характеристики персонажа. У меня уже есть файл с переменными , но как сделать так, чтобы характеристики задавались перед началом повествования при этом имея на распределения ограниченное количество очков, например 10 и при этом чтобы читатель видел свои характеристики с с правой стороны?
Неактивен
Здравствуйте!
Подскажите пожалуйста, существует ли в данном редакторе возможность парсера или его аналога. По сюжету требуется, чтобы игрок ввёл в поле слово-ответ на задаваемый вопрос. Как понимаю, такой возможности нет? А как тогда в данном редакторе выполнить подобную задумку? То есть требуется, чтобы игрок каким-то образом ответил на поставленный вопрос, но, желательно, без выбора вариантов (как в тесте), а ввёл это значение сам.
Благодарю за внимание.
Неактивен
Просто прохожий написал:
Здравствуйте!
Подскажите пожалуйста, существует ли в данном редакторе возможность парсера или его аналога. По сюжету требуется, чтобы игрок ввёл в поле слово-ответ на задаваемый вопрос. Как понимаю, такой возможности нет? А как тогда в данном редакторе выполнить подобную задумку? То есть требуется, чтобы игрок каким-то образом ответил на поставленный вопрос, но, желательно, без выбора вариантов (как в тесте), а ввёл это значение сам.
Благодарю за внимание.
Для этого есть макрос input
. Ищите его описание в руководстве пользователя: http://axma.ru/ru/help.html
Неактивен
Благодарю за ответ.
Отредактировано Просто прохожий (09.09.2016 20:21)
Неактивен
Здравствуйте. У меня несколько проблем возникло.
Сделал меню характеристик героя, на которое можно в любой момент выйти через StoryMenu. Сделал возвращение из него через макрос <<set $currentPassage = $$title>>, который задаётся в игровой комнате, откуда переходишь в меню характеристик и, сколько бы там не повышал/не ходил, при возврате оказываешься там, откуда прибыл. Всё работает, но если отправляешь в меню характеристик из комнаты, где, скажем, игрок повысил свои характеристики (например, сила +1), то при возвращении в эту комнату из меню персонажа, игрок снова может поднять силу и так до бесконечности. Так-то простая проблема, но что-то не могу додуматься, как её решить.
Это во-первых. А во-вторых, я не понимаю, как закрепить повышение характеристик в меню персонажа. То есть я могу их повышать или понижать, например, имея 3 очка уровня, вложить одно в силу, другое в ловкость и интеллект, но, при возвращении из меню персонажа в игровую комнату и снова заходя в окно игрока, значения у характеристик остаются повышенными, но я могу снова перераспределить уже переспраспределённые характеристики. То есть вернуть то, что я вложил в силу, интеллект и ловкость, и бросить все три очка в удачу. Можете, пожалуйста, подсказать, как сделать так, чтобы распределение очков характеристик, при выходе из меню персонажа, сохранялось, и я не мог, при новом заходе в меню персонажа, их заново перераспределить?
Кроме того, хотелось бы доделать в моей игре систему опыту. Когда игрок набирает определённое кол-во опыта, то переходит на новый уровень и ему даются очки распределения характеристик в меню персонажа. Можете подсказать, как это лучше оформить?
Понимаю, что написал много, но, может быть, кто-нибудь ответит. Хотел сказать, что у вас получился замечательный редактор. Огромная благодарность тем, кто его сделал.
Отредактировано Начинающий (13.10.2016 11:53)
Неактивен
Здравствуйте!
Изучаю аксму уже некоторое время и переношу на нее свою историю. В ней необходимо, чтобы 10 ключевых персонажей либо выжили, либо погибли (каждого по отдельности можно спасти и наоборот). На каждого из персонажей был заведен свитч (жив - true, мертв - false). Но есть проблема: на все 10 персонажей прописано по несколько вариантов концовок. Соответственно, для каждой я прописываю if $перс1 == 'true' and $перс2 == 'false' и т.д. Можно ли как-то сократить количество этих условий? Потому как я допускаю мелкие косяки и редактор аксмы не считывает их, как надо, а иногда и вовсе не выдает, т.к. считает, что нужного варианта нет. Плюс из-за большого количества операторов и предметов сохранение не работает верно, т.к. в ключевых эпизодах у меня выводятся разные части текста при определенных условиях. Стоит загрузить игру, как эти условия почему-то не запоминаются.
А еще хотелось бы узнать размер рамки в пикселях. Или, может быть, есть шаблон, как ее правильно делать?
Заранее благодарю за ответ!
Неактивен
Ну, во-первых, true и false в кавычки заключать точно не стоит.
Во-вторых, true можно опускать, типа того: <<if $фонарь>>
По рамке. В разных темах она разной ширины. По поводу вопроса, как её правильно делать, рекомендую поискать border-image css
Неактивен
DoubleDragon написал:
Ну, во-первых, true и false в кавычки заключать точно не стоит.
Во-вторых, true можно опускать, типа того: <<if $фонарь>>
По рамке. В разных темах она разной ширины. По поводу вопроса, как её правильно делать, рекомендую поискатьborder-image css
Спасибо за помощь!
P.S: Пожалуйста, подскажите еще, как убрать из стиля блоки с меню и обложкой? Как это было в старых дизайнах (sepia \ dark \ default).
Отредактировано Leem (29.11.2016 22:30)
Неактивен
Самый простой способ - это использовать тип игры "Книга-игра", который можно выставить кнопкой "Новая".
Неактивен
У меня с Android не получается вставить изображение. Получается только ссылкой.
Действовал так:
Нажимаю в редакторе большой +
Добавить спрайт
Выбираю спрайт из планшета
Прсваиваю имя: 1.png
В редакторе появляется новое поле со спрайтом
В параграфе пытаюсь его вставить командой <<picture '[[File: files/1.png]]'>>
но не выводится.
Неактивен
Спрайты можно вставлять макросами <<sprite>> и <<image>>, почитайте руководство.
Неактивен
Народ, подскажите, пожалуйста
Проблема такая - при экспортировании проекта в html, наотрез отказываются проигрываться аудиофайлы и изображения. Вместо изображений - крестик, а в момент, когда должны проигрываться аудио, вылезает ошибка. Изображения клал в одной папке вместе с sm файлом. Звуки тоже. Облазил все, но не нашел ничего конкретного. Браузер - хром, версия программы - последняя.
Неактивен
Александр Невский написал:
Народ, подскажите, пожалуйста
Проблема такая - при экспортировании проекта в html, наотрез отказываются проигрываться аудиофайлы и изображения. Вместо изображений - крестик, а в момент, когда должны проигрываться аудио, вылезает ошибка. Изображения клал в одной папке вместе с sm файлом. Звуки тоже. Облазил все, но не нашел ничего конкретного. Браузер - хром, версия программы - последняя.
Попробуйте положить медиафайлы в папку files.
Неактивен
Попробовал. Создал папку, добавил медиафайлы, sm-файл и экспортировал html в эту же папку. Ничего не изменилось - вместо картинок по-прежнему крестики, а при загрузке аудиофайла выдает ошибку.
Неактивен
Александр Невский написал:
Попробовал. Создал папку, добавил медиафайлы, sm-файл и экспортировал html в эту же папку. Ничего не изменилось - вместо картинок по-прежнему крестики, а при загрузке аудиофайла выдает ошибку.
html файл не надо класть в папку files. html и files должны лежать в одной папке.
Неактивен
Хотел выразить благодарность за помощь, все заработало, спасибо огромное!
Неактивен
DoubleDragon написал:
При работе с AXMA Story Maker на ПК обнаружил, что записав в параграф вывод картинки, при запуске выводится сообщение о просьбе ввести путь к медиафайлам (хотя путь прописан был правильно). Эта проблема устраняется, когда воспользуешься авто вставкой изображения.
Неактивен
Vladimir написал:
DoubleDragon написал:
При работе с AXMA Story Maker на ПК обнаружил, что записав в параграф вывод картинки, при запуске выводится сообщение о просьбе ввести путь к медиафайлам (хотя путь прописан был правильно). Эта проблема устраняется, когда воспользуешься авто вставкой изображения.
Правильно, нужно указать папку с медиафайлами нажатием на соответствующую ссылку внизу экрана.
Неактивен
DoubleDragon написал:
Правильно, нужно указать папку с медиафайлами нажатием на соответствующую ссылку внизу экрана.
Блин, ну догадаться же трудно!! Хоть бы написали об этом в инструкции. Я сперва даже не подумал, что внизу строчка (по центру) - это опция.
Неактивен
Vladimir написал:
DoubleDragon написал:
Правильно, нужно указать папку с медиафайлами нажатием на соответствующую ссылку внизу экрана.
Блин, ну догадаться же трудно!! Хоть бы написали об этом в инструкции. Я сперва даже не подумал, что внизу строчка (по центру) - это опция.
Может и трудно, но это первый вопрос на эту тему за год.
Неактивен
DoubleDragon написал:
Может и трудно, но это первый вопрос на эту тему за год.
Не обижайтесь, но из моей практики по работе с документациями и инструкциями выяснил, что идеальных документаций нет и не было. То, что разработчику ясно как "дважды два", то "новичку" любая программа, любой язык - эта как неизведанная планета для только что приземлившихся пришельцев: вроде бы все планеты похожи, кое-где подобная флора-фауна встречалась, но вдруг обнаружится какая-нибудь тварюга, с которой ну никакого сладу. Тут поможет только сам "создатель".
Неактивен
В демо-игре "Мечелом" (визуальная новелла) по бокам выводятся спрайты, и некоторые из них кликабельны (картинка по нажатию выводится в картинку по центру экрана). Это сделано штатными средствами ASM, или это они уже сами правили html? Какой синтаксис, чтобы сделать спрайт кликабельным и выводить по нажатию параграф?
Или это просто делается встраиванием спрайта в параграф?
Отредактировано Алексей Бакасин (15.01.2017 11:45)
Неактивен
Это не спрайты, а картинки, вставленные макросом menu:
<<menu '[[*[[File: media/swordbreaker/map_button.jpg]]|Карта]][[File: media/swordbreaker/heart.png]][[File: media/swordbreaker/heart_black.png]][[File: media/swordbreaker/heart_black.png]]'>>
Неактивен
Ага, понятно, спасибо.
Но я со спрайтами не могу пока разобраться. Вот я пытаюсь например, вставить спрайт макросом по умолчанию, но ничего не появляется.
<<sprite '[[File: img/sprt1.gif]]',@,@,@,@,100,1,1000>>
И вместо чего проставлены собачки?
Неактивен
Алексей Бакасин написал:
Ага, понятно, спасибо.
Но я со спрайтами не могу пока разобраться. Вот я пытаюсь например, вставить спрайт макросом по умолчанию, но ничего не появляется.
<<sprite '[[File: img/sprt1.gif]]',@,@,@,@,100,1,1000>>
И вместо чего проставлены собачки?
Собачки - это значения по умолчанию, а вставлять макросы надо кнопкой Добавить>Спрайт. Потом в макросе sprite указать присвоенное имя.
Неактивен
Спасибо, теперь понятно!
Отредактировано Алексей Бакасин (15.01.2017 12:35)
Неактивен
Добрый день. Как вы наверное уже догадались, я новичок в АХМА и ещё больший новичок даже в элементарном программировании.
Теперь по делу.
Я пишу историю, и не смог разобраться с отображением статов ГГ. В идеале это должно отображаться в Story Menu на боковой панели, чтобы читатель мог видеть влияние своего выбора на свои статы.
Или же посоветуйте какую-то возможность сделать всплывающее меню со статами, без отрыва от текущей сюжетной линии(сюжет линейный).
Заранее благодарен.
Попробую привести пример.
Есть 3 стата ГГ, в Start я их прописал
<<set $stat1 = 0>> <<set $stat2 = 0>> <<set $stat3 = 0>>
и хотелось бы, чтобы в StoryMenu отображалась либо выпадающая вкладка, которая отображает текущее значение всех статов, либо сразу было видно текущее значение статов.
Вопрос закрыт с помощью добрых людей.
Очень приятно было ждать 3 дня в надежде на Вас.
Отредактировано Мракобес Угрюмый (21.01.2017 15:04)
Неактивен
Доброго дня, форум.
Банальный технический вопрос, упоминаний которого я на форуме не нашел.
Поставил версию 5.1 (64х процессор) на windows10. Проблема: параграфы в главном окне невероятно плохо выделяются и перетаскиваются. Чтобы выделить конкретный параграф необходимо кликнуть в пустое пространство слева от него, просто угадывая, где его "зацепить". Это неудобство делает затруднительным всю работу в среде.
Подскажите пожалуйста решение, либо ветвь форума, где подобное уже обсуждалось. Уверен, так и есть, да я проморгал. Спасибо.
Неактивен
Эта проблема обсуждается здесь: http://hyperbook.ru/blog.php?id=14807505313424#last
Неактивен
Решил продолжить создание игры "Биатлон". При попытке запустить игру (в программе - кнопка "запустить") программа зависает (висит более 30 минут точно). Как можно решить эту проблему? Да, данных в игре много, но все они нужны...
Неактивен
alfa10 написал:
Решил продолжить создание игры "Биатлон". При попытке запустить игру (в программе - кнопка "запустить") программа зависает (висит более 30 минут точно). Как можно решить эту проблему? Да, данных в игре много, но все они нужны...
А в какой версии это происходит?
Неактивен
А в какой версии это происходит?
В текущей. В программе и в онлайн. А на старой версии (не помню ее, но в ней еще в первой появились окна справа вверху), игра норм запускалась. Ну как норм - долго, но запускалась в итоге. А в новой версии - висит и все...
Отредактировано alfa10 (28.02.2017 16:24)
Неактивен
alfa10 написал:
А в какой версии это происходит?
В текущей. В программе и в онлайн. А на старой версии (не помню ее, но в ней еще в первой появились окна справа вверху), игра норм запускалась. Ну как норм - долго, но запускалась в итоге. А в новой версии - висит и все...
Тогда один вариант - скинуть на hyperbook@axmasoft.com исходники игры, чтобы можно было выловить проблему.
Неактивен
Получил.
Неактивен
Здравствуйте, купил платный профиль для AXMA.
Вроде теперь сохранять можно в html-файл, но возникло два вопроса.
1. Зачем нужен регистрационный код, который прислали при покупке этой программы? Написано (Регистрационный ключ (для версий 2.x)) -- куда и зачем его вводить?
2. Сохраняя игру в html-файл на компьютере, оттуда пропадают все аудио файлы и картинки. Как корова языком слизнула. Хотя при загрузке на сайт hyperbook всё нормально. Почитал тему, пишут, что нужно сохранять html-файл в папку с игрой, рядом с папками files. Проделал это, но всё ни музыки, ни картинок. Как быть, что исправить? Куда и как сохранять html-файл, чтобы все материалы были на месте?
3. И вот ещё вопрос. Можно ли как-нибудь отключить сохранения в игре или хотя бы ограничить их 1-2 сохранениями?
4. Как можно выравнять текст не по краям, а по ширине страницы? Через параграф стилей? Но как именно это сделать?
Отредактировано Нужник (10.03.2017 17:28)
Неактивен
Нужник написал:
Здравствуйте, купил платный профиль для AXMA.
Вроде теперь сохранять можно в html-файл, но возникло два вопроса.
1. Зачем нужен регистрационный код, который прислали при покупке этой программы? Написано (Регистрационный ключ (для версий 2.x)) -- куда и зачем его вводить?
2. Сохраняя игру в html-файл на компьютере, оттуда пропадают все аудио файлы и картинки. Как корова языком слизнула. Хотя при загрузке на сайт hyperbook всё нормально. Почитал тему, пишут, что нужно сохранять html-файл в папку с игрой, рядом с папками files. Проделал это, но всё ни музыки, ни картинок. Как быть, что исправить? Куда и как сохранять html-файл, чтобы все материалы были на месте?
3. И вот ещё вопрос. Можно ли как-нибудь отключить сохранения в игре или хотя бы ограничить их 1-2 сохранениями?
4. Как можно выравнять текст не по краям, а по ширине страницы? Через параграф стилей? Но как именно это сделать?
1. Регистрационный код, как и указано, для старых версий 2.х. Они остались у некоторых пользователей.
2. Класть html-файл надо в туже папку, что и исходный sm-файл. В html-файле пути к медиафайлам относительные, и он, конечно, не включает в себя медиафайлы.
3. Отключить можно, отредактировав html-файл. Надо удалить вот это:prefsDiv.innerHTML+='<div><span class=plink onclick=\"SaveLoadWind(true);\">Сохранить</span></div><div><span class=plink onclick=\"SaveLoadWind(false);\">Восстановить</span></div>';
4. Да, нужно добавить в список стилей #print {стили} вот это:text-align:justify;
Неактивен
Уважаемый, DoubleDragon!
Пытаюсь так делать, но получившийся html-файл всё равно не показывает ни картинки, ни музыку, хотя я даже открываю его блокнотом и вижу, что везде прописан правильный путь к этим картинкам и музыке. Сохраняю игру туда же, где лежит исходный sm-файл: не в папку files, а в папку, где лежит и папка files и сама игра. Ну, то есть есть общая папка Игра, в ней папка files и музыка, там же исходный sm-файл. Сохраняю html-файл в папку игра, но в файле ничего не появлется - ни картинок, ни музыки. Что я делаю не так?
За остальные ответы спасибо, вроде понял! Со стилями попытаюсь разобраться. Указанными вами код нужно в параграфе стилей сюда воткнуть?
#print {max-width:none;}
Вместо none?
Неактивен
Нужник написал:
Уважаемый, DoubleDragon!
Пытаюсь так делать, но получившийся html-файл всё равно не показывает ни картинки, ни музыку, хотя я даже открываю его блокнотом и вижу, что везде прописан правильный путь к этим картинкам и музыке. Сохраняю игру туда же, где лежит исходный sm-файл: не в папку files, а в папку, где лежит и папка files и сама игра. Ну, то есть есть общая папка Игра, в ней папка files и музыка, там же исходный sm-файл. Сохраняю html-файл в папку игра, но в файле ничего не появлется - ни картинок, ни музыки. Что я делаю не так?
За остальные ответы спасибо, вроде понял! Со стилями попытаюсь разобраться. Указанными вами код нужно в параграфе стилей сюда воткнуть?
#print {max-width:none;}
Вместо none?
Нет, не вместо, а добавить. Отправьте на support@axmasoft.com html-файл и файлы картинок и музыки, посмотрим.
Неактивен
DoubleDragon написал:
Нужник написал:
Нет, не вместо, а добавить. Отправьте на support@axmasoft.com html-файл и файлы картинок и музыки, посмотрим.
Так, с картинками и звуками в html-файле разобрался. Дело было в браузере, Explover просто не отображал содержание, а вот другие браузеры легко его отобразили.
С выравниванием текста по ширине тоже разобрался. Получилось.
Даже получилось убрать сохранения и менять то, сколько слотов доступно будет (1 или 6). Поэтому последний вопрос такой: а можно ли сделать так, что сохранения нельзя было перезаписыват. Т.е. одна ячейка = одно состояние, которое можно перезагружать, но нельзя перезаписывать. И если да, то как и где это поменять прописать можно?
А так, благодарю за советы, всё помогло!
Отредактировано Нужник (11.03.2017 17:58)
Неактивен
У меня вопрос.
В представленном мною скрине я интересуюсь, а как записать какой-либо текст в эти два окошка? я так понял, что там должен быть инвентарь, здоровье или что то подобное. Но как туда что-то написать или добавить?
Неактивен
Сергей Лебедев-Халецкий написал:
У меня вопрос.
В представленном мною скрине я интересуюсь, а как записать какой-либо текст в эти два окошка? я так понял, что там должен быть инвентарь, здоровье или что то подобное. Но как туда что-то написать или добавить?
Читайте в руководстве пользователя про макросы picture и menu.
Неактивен
Здрасьте. вопросик возник.
Спрайты возможно накладывать только на основную иллюстрацию (ту, которая через <<picture 'адрес файла'>> выводится), или же есть возможность наложить и на произвольно вставленную в текст параграфа картинку?
Неактивен
Только на иллюстрацию.
Неактивен
Ну и еще один вопросик, даже два:
Мне необходимо реализовать групповой бой. Как это сделать через серию одиночных боев я представляю, но это немного не то, равно как и рассчитываемый программой исход боя по нажатию кнопки "в бой". Нужен именно групповой бой, причем все члены отряда должны находиться под управлением игрока.
Вопрос: реализовывалось ли подобное, если да, то где можно посмотреть если не код, то хотя бы пример реализации?
И второй. Можно ли уничтожить определенную переменную?
Отредактировано Алексей Зеленов (08.04.2017 18:24)
Неактивен
Алексей Зеленов написал:
Ну и еще один вопросик, даже два:
Мне необходимо реализовать групповой бой. Как это сделать через серию одиночных боев я представляю, но это немного не то, равно как и рассчитываемый программой исход боя по нажатию кнопки "в бой". Нужен именно групповой бой, причем все члены отряда должны находиться под управлением игрока.
Вопрос: реализовывалось ли подобное, если да, то где можно посмотреть если не код, то хотя бы пример реализации?
И второй. Можно ли уничтожить определенную переменную?
Отвечу на вопрос про переменную:<<set $var = undefined>>
Неактивен
Алексей Зеленов написал:
Ну и еще один вопросик, даже два:
Мне необходимо реализовать групповой бой. Как это сделать через серию одиночных боев я представляю, но это немного не то, равно как и рассчитываемый программой исход боя по нажатию кнопки "в бой". Нужен именно групповой бой, причем все члены отряда должны находиться под управлением игрока.
Вопрос: реализовывалось ли подобное, если да, то где можно посмотреть если не код, то хотя бы пример реализации?
И второй. Можно ли уничтожить определенную переменную?
Привет, Алексей. Может немного не в тему скажу, но сейчас пробую реализовать групповой бой на другом движке. Могу рассказать общую схему:
1. Есть отряд свой и противника. В этом отряде у каждого есть свой тип движения - атака вражеского юнита, защита своего юнита.
2. В каждой фазе боя надо раздать приказы каждому участнику, кто будет кого защищать из своих, кто будет нападать на какого врага. Когда всем приказы розданы, то начинается расчет повреждений, сначала с одной стороны, потом с другой. Если у атакуемого юнита есть свой защитник, то сначала он получают урон, а потом уже сама цель.
3. Плюс к этому на каждой фазе можно что-нить сколдовать, полечить кого, отравить.
4. Ну надо еще и ИИ прикрутить, чтобы правильно гасил игрока.
Неактивен
Здравствуйте! Назрел глупый вопрос.
"Добавляющая ссылка" - хочется ее использовать для более детального описания сцены, не засоряя параграф заранее. Но для каждого описания используется отдельный параграф (часто, всего для пары строк или абзаца). Учитывая, что в каждом основном параграфе добавляющих ссылок не менее 3-4, общее количество параграфов истории пухнет до невообразимого. Очень легко запутаться потом в этом ворохе( Есть ли способы реализовать описания "под катом" попроще?
Неактивен
laralenne написал:
Здравствуйте! Назрел глупый вопрос.
"Добавляющая ссылка" - хочется ее использовать для более детального описания сцены, не засоряя параграф заранее. Но для каждого описания используется отдельный параграф (часто, всего для пары строк или абзаца). Учитывая, что в каждом основном параграфе добавляющих ссылок не менее 3-4, общее количество параграфов истории пухнет до невообразимого. Очень легко запутаться потом в этом ворохе( Есть ли способы реализовать описания "под катом" попроще?
Такое можно сделать с многоразовыми ссылками:
<<if !$ссылка>> Первое описание сцены. //[[*Ссылка1|$$title{$ссылка=1}]]// //[[*Ссылка2|$$title{$ссылка=2}]]// <<elseif $ссылка==1>> Описание1 <<elseif $ссылка==2>> Описание2 <<endif>>
Неактивен
Что касается «уничтожения переменной» (в отличие от установки ее на 0) Может ли автор использовать << set! $ Variable >> Как в «set not variable»?
Это может возникнуть, если использовать переменные типа
[[* Возьмите веревку | takerope] {$rope}]
[[* Отверните веревку | droprope] {!$ Rope}]
Неактивен
HanonO написал:
Что касается «уничтожения переменной» (в отличие от установки ее на 0) Может ли автор использовать << set! $ Variable >> Как в «set not variable»?
Это может возникнуть, если использовать переменные типа
[[* Возьмите веревку | takerope] {$rope}]
[[* Отверните веревку | droprope] {!$ Rope}]
Для «уничтожения переменной» надо писать так:
<< set $Variable = undefined >> [[* Отверните веревку | droprope] {$Rope=undefined}]]
Неактивен
Подскажите пожалуйста, в мануале не нашел:
Случайное значение из массива.
Покрутив туда-сюда пришел к такому виду:
<<set $список = ["страшная","красивая","милая","пьяная"]>> Перед вами <<print $список[random(0,$список.length-1)]>> девушка.
1) Однако тыкнув Tab после $ я увидел еще макрос "случайно".. Это что за макрос? Может где-то можно почитать про него?
2) Есть какие-то ещё варианты рандомно вставить из массива значение?
Either не особо подходит, так как массивов несколько, и выбранный в самом начале будет сопровождать игру.
Думал еще о ссылках, спрайтах и изображениях (путях) в массивах. Можно ли получать? Но тут я еще не пробовал разбираться, но если подскажете буду премного благодарен?
Отредактировано Rubber (17.06.2017 21:56)
Неактивен
Win 7, ASM 5.6.1
Не работает макрос choice. Как я его не пытался использовать, системная переменная $$choice не инициализируется выбранным значением, а собственный объект вне зависимости от выбора пользователя получает нулевое значение. Приходится выкручиваться, создавая ссылки и дополнительные параграфы, но это неудобно и не совсем то, что я хотел бы получить.
Еще не работает макрос sound. Перепробовал все мыслимые варианты. Звуковые файлы размещал на локальной машине и на собственном хостинге.
Помогите, пожалуйста, в этом разобраться.
Отредактировано Lake (20.06.2017 05:34)
Неактивен
Rubber написал:
Подскажите пожалуйста, в мануале не нашел:
Случайное значение из массива.
Покрутив туда-сюда пришел к такому виду:Код:
<<set $список = ["страшная","красивая","милая","пьяная"]>> Перед вами <<print $список[random(0,$список.length-1)]>> девушка.1) Однако тыкнув Tab после $ я увидел еще макрос "случайно".. Это что за макрос? Может где-то можно почитать про него?
2) Есть какие-то ещё варианты рандомно вставить из массива значение?
Either не особо подходит, так как массивов несколько, и выбранный в самом начале будет сопровождать игру.
Думал еще о ссылках, спрайтах и изображениях (путях) в массивах. Можно ли получать? Но тут я еще не пробовал разбираться, но если подскажете буду премного благодарен?
В мануале, в разделе "Объекы и выражения" есть специальный раздел "Случайные значения", не представляю, как Вы его пропустили. В ссылках и спрайтах можно использовать объекты, например: [[$ссылка]], rtfm.
Неактивен
Lake написал:
Win 7, ASM 5.6.1
Не работает макрос choice. Как я его не пытался использовать, системная переменная $$choice не инициализируется выбранным значением, а собственный объект вне зависимости от выбора пользователя получает нулевое значение. Приходится выкручиваться, создавая ссылки и дополнительные параграфы, но это неудобно и не совсем то, что я хотел бы получить.
Еще не работает макрос sound. Перепробовал все мыслимые варианты. Звуковые файлы размещал на локальной машине и на собственном хостинге.
Помогите, пожалуйста, в этом разобраться.
Значение макроса choice проверяется не в том параграфе, в котором находится этот макрос, а в параграфе, в который читатель переходит по любой созданной автором ссылке.
Как вы добавляете звук для макроса sound? Напишите пример его использования у вас.
Неактивен
DoubleDragon написал:
Значение макроса choice проверяется не в том параграфе, в котором находится этот макрос, а в параграфе, в который читатель переходит по любой созданной автором ссылке.
Как вы добавляете звук для макроса sound? Напишите пример его использования у вас.
1. Понял. Мне кажется, это не совсем удобно, опять создается дополнительный параграф и читатель должен совершить дополнительное действие для перехода в новый параграф.
2. в папку files добавляю mp3-файл, а в параграфе вызываю его командой <<sound 'files/...mp.3'>>
в моей книге сейчас этот макрос вызывается в параграфе Start и - ни звука (( http://hyperbook.ru/file14977361641834
Отредактировано Lake (20.06.2017 08:04)
Неактивен
Lake написал:
2. в папку files добавляю mp3-файл, а в параграфе вызываю его командой <<sound 'files/...mp.3'>>
А как написано в мануале?
Неактивен
DoubleDragon написал:
Lake написал:
2. в папку files добавляю mp3-файл, а в параграфе вызываю его командой <<sound 'files/...mp.3'>>
А как написано в мануале?
Ошибку свою понял. А толку-то ...
Добавил звук через кнопку "Добавить", дал ему имя muse3, вставил макрос <<sound 'muse3'>>в параграф "Start" и ...
тишина ((
При этом я не могу понять, где по идее должен сохраниться этот звук? В разделе с sm-файлом никаких новых файлов не появляется. Опять я что-то делаю не так ((
Отредактировано Lake (20.06.2017 22:46)
Неактивен
Отвечу сам себе. Звук добавляется сначала в тело файла sm, а потом, видимо, и в html-файл.
Например, у меня так:
muse3::data:audio/mp3;base64,SUQzAwAAAAAfdlRJV....
Предположим, у меня когда-нибудь все же заработает макрос <<sound ''>>. Могу ли я вручную из файла sm удалить ненужный мне звук, не нарушая целостность sm-файла?
Неактивен
Не, ну я проявил характер и заставил работать <<sound ...
Фишка в том, что звук не воcпроизводится в параграфе Start! Но если вернуться из следующего за Start параграфа назад, то работает!
Виной тому скорее всего параграф StorySubitle, который выводится одновременно с параграфом Start.
Отредактировано Lake (21.06.2017 09:05)
Неактивен
Есть изящное решение для следующей задачи? Сам пока что-то не могу сообразить.
Хочу макросом repeat производить регулярный контроль наличия у игрока денег, инвентаря и тп.
И в случае каких-то контрольных значений выводить соответствующее сообщение. Беда в том, что я могу мгновенно, без участия игрока, выводить сообщения только макросом display.
При этом текст добавляется снизу и очень часто может остаться незамеченным для игрока.
Очищать содержимое параграфа перед выводом сообщения - не вариант. Сообщение может появиться в тот момент, когда игрок еще не успел прочитать текст параграфа.
В идеале было бы хорошо выводить параграф с таким сообщением в окне, как это происходит по многоразовой ссылке.
Вообще, в данный момент есть кто-нибудь, кто делает игру на ASM? Можно было бы вместе решать какие-то практические задачи, не донимая вопросами разработчика.
Отредактировано Lake (21.06.2017 11:48)
Неактивен
Просто мозг себе порвал, как сделать аларм, с периодичностью во времени предупреждающий игрока о некоей ситуации в игре.
Окей, я запускаю параграф через макрос repeat с интервалом времени.
Вот он срабатывает, выводит предупреждающее сообщение, например, спрайтом на иллюстрации.
НО! При этом вывод текущего параграфа прерывается выводом спрайта.
Акей, я могу заставить движок при нажатии игроком на спрайт вывести текущий параграф заново. Ну а если у меня в этом параграфе проводятся какие-то вычисления?! Я выполню их дважды, а мне это совершенно не нужно!
Вот и как быть?! (((
Отредактировано Lake (22.06.2017 07:09)
Неактивен
А можно как нибудь поставить эффекты на аудио? Мне нужно что бы первая музыка плавно переходила в другую. А то просто:
[[File: мызыка/песня.mp3]]
<<noaudio>>
[[File: мызыка/песня2.mp3]]
слишком резко получается.
Неактивен
Максим Коржик написал:
А можно как нибудь поставить эффекты на аудио? Мне нужно что бы первая музыка плавно переходила в другую. А то просто:
[[File: мызыка/песня.mp3]]
<<noaudio>>
[[File: мызыка/песня2.mp3]]
слишком резко получается.
нет такого.
единственный вариант склеить два трека в каком-нибудь муз. редакторе и сразу сделать плавный переход
Неактивен
Lake написал:
нет такого.
единственный вариант склеить два трека в каком-нибудь муз. редакторе и сразу сделать плавный переход
Только еще не известно с какой скоростью будет листать читатель, и следовательно на какой секунде мне сделать переход. Но все равно спасибо
Неактивен
Максим Коржик написал:
Lake написал:
нет такого.
единственный вариант склеить два трека в каком-нибудь муз. редакторе и сразу сделать плавный переходТолько еще не известно с какой скоростью будет листать читатель, и следовательно на какой секунде мне сделать переход. Но все равно спасибо
А, понял. Разные треки в разных параграфах?
У меня есть такое, но при переходе по ушам не бьет. Просто нужно подбирать треки, которые начинаются не с громкого вступления, а плавно-постепенно. ))
Почему-то в ASM не обнаружил макроса типа <<wait N>>, где N - число секунд. Иногда нужна такая задержка, и в данном случае тоже бы пригодилась.
Неактивен
Lake написал:
А, понял. Разные треки в разных параграфах?
У меня есть такое, но при переходе по ушам не бьет. Просто нужно подбирать треки, которые начинаются не с громкого вступления, а плавно-постепенно. ))
Почему-то в ASM не обнаружил макроса типа <<wait N>>, где N - число секунд. Иногда нужна такая задержка, и в данном случае тоже бы пригодилась.
В точку. Так и придется делать. А не подскажешь как сделать что бы при переходе из одной комнаты в неизвестную и назад, менялось название действия. Типа:
Пустой коридор.
1. Войти в левую комнату.
2. Войти в правую комнату.
Заходим в левую комнату и отправляемся назад.
Пустой коридор.
1.Войти в ванну
2.Войти в правую комнату.
Неактивен
Максим Коржик написал:
А не подскажешь как сделать что бы при переходе из одной комнаты в неизвестную и назад, менялось название действия. Типа:
Пустой коридор.
1. Войти в левую комнату.
2. Войти в правую комнату.
Заходим в левую комнату и отправляемся назад.
Пустой коридор.
1.Войти в ванну
2.Войти в правую комнату.
Не понял логику. игрок вернулся назад и увидел совершенно другую "картину"? зачем тогда возвращаться в предыдущий параграф? не проще использовать новый параграф?
А вообще в качестве текста ссылки и параграфа можно использовать объекты
[[$ТекстСсылки[$n]|$НазваниеПараграфа]]
зашли из комнаты 1 в комнату 2
поменяли значения для текста ссылки и параграфа и вернулись назад. Тогда в комнате 1 уже можно отобразить совершенно другие переходы.
Неактивен
Lake написал:
Отвечу сам себе. Звук добавляется сначала в тело файла sm, а потом, видимо, и в html-файл.
Например, у меня так:Код:
muse3::data:audio/mp3;base64,SUQzAwAAAAAfdlRJV....Предположим, у меня когда-нибудь все же заработает макрос <<sound ''>>. Могу ли я вручную из файла sm удалить ненужный мне звук, не нарушая целостность sm-файла?
Меню Вид>Спрайты и звуки.
Неактивен
DoubleDragon написал:
Lake написал:
Отвечу сам себе. Звук добавляется сначала в тело файла sm, а потом, видимо, и в html-файл.
Например, у меня так:Код:
muse3::data:audio/mp3;base64,SUQzAwAAAAAfdlRJV....Предположим, у меня когда-нибудь все же заработает макрос <<sound ''>>. Могу ли я вручную из файла sm удалить ненужный мне звук, не нарушая целостность sm-файла?
Меню Вид>Спрайты и звуки.
Благодарю!
Вручную тоже нормально выковыривается. ))
Неактивен
Вопрос от новичка.
Добрый день.
Подскажите, если такие возможности в редакторе АХМА.
1) Отображение текста в окне для изображения (для нескольких параграфов).
2) Плавное появление текста (эффект) как при печати в живую(для нескольких параграфов).
3) Замедление/ускорение скорости появления текста.
Заранее большое спасибо за ответ!
Отредактировано AHTOH (26.06.2017 08:57)
Неактивен
AHTOH написал:
Вопрос от новичка.
Добрый день.
Подскажите, если такие возможности в редакторе АХМА.
1) Отображение текста в окне для изображения (для нескольких параграфов).
2) Плавное появление текста (эффект) как при печати в живую(для нескольких параграфов).
3) Замедление/ускорение скорости появления текста.
Заранее большое спасибо за ответ!
1) Отображение текста в окне - это есть, реализуется с помощью префикса "*" перед ссылкой
что такое "Отображение текста в окне для изображения" я не понял
2) есть в теме "Визуальная новелла". При запуске клиента ASM доступен пример использования некоторый возможностей движка. И в этом примере текст как раз и выводится с эффектом "телетайпа"
3) можно сделать посредством редактирования JS в в итоговом html-коде. Но бесплатная версия ASM этого не разрешает. Возможно, есть способ и попроще.
Неактивен
Lake написал:
AHTOH написал:
Вопрос от новичка.
Добрый день.
Подскажите, если такие возможности в редакторе АХМА.
1) Отображение текста в окне для изображения (для нескольких параграфов).
2) Плавное появление текста (эффект) как при печати в живую(для нескольких параграфов).
3) Замедление/ускорение скорости появления текста.
Заранее большое спасибо за ответ!1) Отображение текста в окне - это есть, реализуется с помощью префикса "*" перед ссылкой
что такое "Отображение текста в окне для изображения" я не понял
2) есть в теме "Визуальная новелла". При запуске клиента ASM доступен пример использования некоторый возможностей движка. И в этом примере текст как раз и выводится с эффектом "телетайпа"
3) можно сделать посредством редактирования JS в в итоговом html-коде. Но бесплатная версия ASM этого не разрешает. Возможно, есть способ и попроще.
Большое спасибо за ответ.
1) в данном блоке размещаются изображения <<picture '[[имя файла]]'>>. Есть ли пример как использовать * ?
2) Тоже не совсем понятно, что есть ASM и где его запустить.
3)С этим вроде понятно. Редактирование в html Java
Спасибо.
Неактивен
1) [[*Текст ссылки | Название параграфа]]
во всплывающем блоке (параграфе) нельзя установить фоновое изображение с помощью <<picture ... , но можно в текст вставить изображение
пример:
текст
[[Файл: files/sinus-8.png]]
текст
2) http://sm.axmasoft.com/download.php
мне кажется, клиент удобнее использовать, чем онлайн-редактор
Отредактировано Lake (26.06.2017 10:44)
Неактивен
Lake написал:
1) [[*Текст ссылки | Название параграфа]]
во всплывающем блоке (параграфе) нельзя установить фоновое изображение с помощью <<picture ... , но можно в текст вставить изображение
пример:
текст
[[Файл: files/sinus-8.png]]
текст
2) http://sm.axmasoft.com/download.php
мне кажется, клиент удобнее использовать, чем онлайн-редактор
1) Теперь, я понял. Вы говорили про всплывающее окно. Но вопрос стоит в другом. Есть окно которое называется "Иллюстрация" (оно у меня верхнее, центральное окно) в него помещаются изображения в через строку<<picture '[[files/sinus-8.png]]'>>
Если просто [[files/sinus-8.png]] то картинка появляется в нижнем окошке, где появляется текст. Так вот, можно ли поставить текст в окно "Иллюстрация" ?
2) Я пользуюсь клиентом, в нем есть помощь и руководство пользователя, а также помощь авторам, но к сожалению ничего кроме скрутки не нашел. Есть возможность указать, где конкретно это написано ?
Спасибо.
Неактивен
1. Увы, нигде не видел упоминания о такой возможности.
2. есть сильное подозрение, что у нас стоят разные темы. В моей теме "телеграф" работает по умолчанию.
вот как все выглядит у меня (прикрепленный файл). Там, где обрывается текст, и происходит постепенное появление текста.
Неактивен
Lake написал:
1. Увы, нигде не видел упоминания о такой возможности.
2. есть сильное подозрение, что у нас стоят разные темы. В моей теме "телеграф" работает по умолчанию.
вот как все выглядит у меня (прикрепленный файл). Там, где обрывается текст, и происходит постепенное появление текста.
Видимо, все таки разные темы и версии редактора.
В любом случаи, спасибо за помощь!
Неактивен
AHTOH написал:
Lake написал:
1. Увы, нигде не видел упоминания о такой возможности.
2. есть сильное подозрение, что у нас стоят разные темы. В моей теме "телеграф" работает по умолчанию.
вот как все выглядит у меня (прикрепленный файл). Там, где обрывается текст, и происходит постепенное появление текста.Видимо, все таки разные темы и версии редактора.
В любом случаи, спасибо за помощь!
у меня 5.6.1
Тему не менял, как скачал, так и работаю с тем примером, что был.
Неактивен
Увидел одну визуальную новеллу в библиотеке, в которой автор выделял разные имена, разными цветами. Как это можно реализовать?
Неактивен
Максим Коржик написал:
Увидел одну визуальную новеллу в библиотеке, в которой автор выделял разные имена, разными цветами. Как это можно реализовать?
В параграфе используем макрос для класса:
<<class 'className'>>Текст<<endclass>>
и в специальном параграфе для описания классов задаем классу необходимые параметры, например:
.className {color: green;}
Отредактировано Lake (30.06.2017 09:55)
Неактивен
Lake написал:
Максим Коржик написал:
Увидел одну визуальную новеллу в библиотеке, в которой автор выделял разные имена, разными цветами. Как это можно реализовать?
В параграфе используем макрос для класса:
<<class 'className'>>Текст<<endclass>>
и в специальном параграфе для описания классов задаем классу необходимые параметры, например:
.className {color: green;}
Можно по подробнее. А то я уже попробовал и либо сбивается вообще все, либо ничего не происходит
Неактивен
Максим Коржик написал:
Можно по подробнее. А то я уже попробовал и либо сбивается вообще все, либо ничего не происходит
Куда ж еще подробнее? ))
свои стили нужно добавлять в параграф StoryStyle (см. скриншот)
Если его вдруг нет, то его можно создать с помощью Добавить -> Параграф стилей
Если все равно не получается, опишите, что вы конкретно делаете, с примером кода.
Неактивен
Lake написал:
Куда ж еще подробнее? ))
свои стили нужно добавлять в параграф StoryStyle (см. скриншот)
Если его вдруг нет, то его можно создать с помощью Добавить -> Параграф стилей
Если все равно не получается, опишите, что вы конкретно делаете, с примером кода.
Мне нужно что бы текст на 1 скриншоте был другого цвета
Но после того как создаю storytitle, картинка слетает и получается как на 2 скриншоте
Неактивен
Максим Коржик написал:
Lake написал:
Куда ж еще подробнее? ))
свои стили нужно добавлять в параграф StoryStyle (см. скриншот)
Если его вдруг нет, то его можно создать с помощью Добавить -> Параграф стилей
Если все равно не получается, опишите, что вы конкретно делаете, с примером кода.Мне нужно что бы текст на 1 скриншоте был другого цвета
Но после того как создаю storytitle, картинка слетает и получается как на 2 скриншоте
Неактивен
1. в StoryTitle стили не работают. Или имеется в виду StoryStyle?
2. зачем использовать заведомо старую версию ASM, если есть более продвинутая 5.6.1
в любом случае, по старой версии ASM подсказать ничего не смогу, никогда ее не использовал
Отредактировано Lake (02.07.2017 07:50)
Неактивен
То ли баг, то ли я опять что-то неправильно понимаю
fade для чего нужен? для регулирования скорости вывода текста?
если это так, то макрос fade у меня не работает
<<fade = 0>> работает - текст появляется сразу
а при любом другом значение, например
<<fade = 300>>
все равно используется какое-то дефолтное значение, скорость вывода текста не меняется
Отредактировано Lake (05.07.2017 00:07)
Неактивен
Здравствуйте. никак не могу понять, каким образом вставить рандомное изображение? кодом столкнулся первый раз
Неактивен
Lake написал:
То ли баг, то ли я опять что-то неправильно понимаю
fade для чего нужен? для регулирования скорости вывода текста?
если это так, то макрос fade у меня не работает
<<fade = 0>> работает - текст появляется сразу
а при любом другом значение, например
<<fade = 300>>
все равно используется какое-то дефолтное значение, скорость вывода текста не меняется
Этот макрос изменяет не скорость вывода текста, а скорость анимации страницы. <<fade = 0>> отключает анимацию и текста и страницы. Об этом сказано в руководстве.
Неактивен
andersen4000 написал:
Здравствуйте. никак не могу понять, каким образом вставить рандомное изображение? кодом столкнулся первый раз
В настоящий момент только через условия. Предварительно надо сгенерировать случайное значение макросом random и в зависимости от результата выводить нужное изображение. Спрайты можно выводить через переменные, поэтому можно сделать массив имён спрайтов и случайно выбирать из него значения.
Неактивен
Сорри, может я как обычно в танке и чего-то не знаю, но а версии 5.8 можно как-то переключить язык на русский в редакторе?
И где взять актуальную справку по всем премудростям нового интерфейса и функционала?
Неактивен
Ajenta написал:
Сорри, может я как обычно в танке и чего-то не знаю, но а версии 5.8 можно как-то переключить язык на русский в редакторе?
И где взять актуальную справку по всем премудростям нового интерфейса и функционала?
Можно. Меню Help / Change Language.
Руководство обновляется постоянно: http://axma.ru/ru/help.html и в блоге: http://hyperbook.ru/blog.php?theme=5
Неактивен
Подскажите, пожалуйста, раздел справки, где можно прочитать о том, как сделать картиночную кнопку в игре.
Например иконку карты, при клике на которую открывалась бы сама карта.
Неактивен
Например, так:
<<menu '[[File: button.jpg]]'>>
Пример здесь: http://hyperbook.ru/file14591508000000
Неактивен
DoubleDragon написал:
Например, так:
<<menu '[[File: button.jpg]]'>>
Пример здесь: http://hyperbook.ru/file14591508000000
Примерно - это хорошо. А конкретно сие где-нибудь описано? Или это уже за пределами аксмы в штмл лезть надо?
Потому что из этой строки не сильно понятно как делать. (
Или может есть где-то исходный код демо Мечелома? Или другой исходный код с функционалом кнопок?
И да, курсор мышки как-то можно поменять? А то новый какой-то сильно большой и никуда не вписывается.
Неактивен
Скачать исходники Мечелома можно здесь: http://axma.ru/examples/Swordbreaker.zip
Курсор можно изменить через параграф стилей StoryStyle (кнопка Добавить / Параграф стилей).
Неактивен
Захотел сделать нечто вроде парсерной мини-игры, чтобы игрок вводил сообщения и получал на них ответ. Естественно, мне понадобился союз "или", чтобы расширить варианты вводимых ответов. Его я использовал в виде "or", потом попробовал вариант "||", в обоих случаях результат один -- на экране выводится текст результата еще до того, как введено какое-либо значение. Если сделать два блока ЕСЛИ-ТО, в которых предложить два варианта в зависимости от введенных данных, то все равно выводится первый ответ на вопрос.
Введите сообщение:
<<input '105' $gg_say>>
<<if $gg_say.toLowerCase() eq 'привет'>>
-- Здравствуй. Как скоро ты будешь на месте?
<<endif>>
<<if $gg_say.toLowerCase() eq 'как дела?'>>
-- Пока все хорошо. А ты как?
<<endif>>
Мне кажется, что все логично, но я не программист, поэтому у меня такие простые вещи почему-то не срабатывают. Если спросить, "как дела?", то на экране появится сразу два ответа:
-- Здравствуй. Как скоро ты будешь на месте?
-- Пока все хорошо. А ты как?
Как быть? Что делать?
Кажется, я нашел достаточно интересное решение, используя массивы и циклы!
Отредактировано Станислав Соловьев (03.11.2017 10:02)
Неактивен
Станислав Соловьев написал:
Захотел сделать нечто вроде парсерной мини-игры, чтобы игрок вводил сообщения и получал на них ответ. Естественно, мне понадобился союз "или", чтобы расширить варианты вводимых ответов. Его я использовал в виде "or", потом попробовал вариант "||", в обоих случаях результат один -- на экране выводится текст результата еще до того, как введено какое-либо значение. Если сделать два блока ЕСЛИ-ТО, в которых предложить два варианта в зависимости от введенных данных, то все равно выводится первый ответ на вопрос.
Введите сообщение:
<<input '105' $gg_say>>
<<if $gg_say.toLowerCase() eq 'привет'>>
-- Здравствуй. Как скоро ты будешь на месте?
<<endif>>
<<if $gg_say.toLowerCase() eq 'как дела?'>>
-- Пока все хорошо. А ты как?
<<endif>>
Мне кажется, что все логично, но я не программист, поэтому у меня такие простые вещи почему-то не срабатывают. Если спросить, "как дела?", то на экране появится сразу два ответа:
-- Здравствуй. Как скоро ты будешь на месте?
-- Пока все хорошо. А ты как?
Как быть? Что делать?
Кажется, я нашел достаточно интересное решение, используя массивы и циклы!
<<input '105' $gg_say>> <<if $gg_say.toLowerCase() eq 'привет'>> -- Здравствуй. Как скоро ты будешь на месте? <<elseif $gg_say.toLowerCase() eq 'как дела?'>> -- Пока все хорошо. А ты как? <<endif>>
Прочитайте главу "Отображение текста по условию" в руководстве пользователя.
Неактивен
Спасибо, но я все это читал и в данном конкретном случае статья не несет никакой пользы.
Неактивен
Подскажите пожалуйста, какие классы отвечают за всплывающие окна при открытии файла? Каким-то образом я "сломал" окно с автором, аннотацией и названием и теперь они медленно, черным шрифтом проявляются слева в центре экрана и лишены всех (вероятно) стилей.
Неактивен
Станислав Соловьев написал:
Подскажите пожалуйста, какие классы отвечают за всплывающие окна при открытии файла? Каким-то образом я "сломал" окно с автором, аннотацией и названием и теперь они медленно, черным шрифтом проявляются слева в центре экрана и лишены всех (вероятно) стилей.
Попробуйте добавить в параграф StoryStyle следующие строки:
#storyauthor {font-size:1.3em; letter-spacing:0.12em; line-height:1;} #storytitle {font-size:1.8em; margin:1em 0; line-height:1;} #storyauthor p, #storytitle p {margin:0;} #storysubtitle {font-size:0.8em; text-align:center; max-height:8em; overflow:auto; -webkit-overflow-scrolling:touch;}
И удалите существующую строку с #storyauthor.
Неактивен
Сравнивая два параграфа стилей, я заметил, что как раз этих строк нет в моем сломанном варианте, но их вставка не помогла. Изменился шрифт, да и только. В общем, я не поленился переделать все с нуля, благо, готовые стили уже имелись и вроде все работает хорошо.
Неактивен
Вот уже "много лет" мечтаю сделать свой первый текстовый квест на андроид, но не знаю, как (исключая возможность "стать разработчиком на андроид"). Могу ли я как-то конвертировать html-файл в apk через android studio? Как скоро будет реализован проект novels.ru?
Неактивен
Станислав Соловьев написал:
Вот уже "много лет" мечтаю сделать свой первый текстовый квест на андроид, но не знаю, как (исключая возможность "стать разработчиком на андроид"). Могу ли я как-то конвертировать html-файл в apk через android studio? Как скоро будет реализован проект novels.ru?
По андроиду сейчас ничего не скажу, а novels.ru будет запущен после 20-го декабря.
Неактивен
День добрый. Вопросик созрел.
Мне надо сгенерировать случайное число однотипных переменных,
грубо говоря $переменная1, $переменная2? $переменная3... $переменнаяДцать...
При каждом запуске игры их число может отличаться.
Как бы все это дело организовать? Уверен, что оно просто, но туплю уже второй день...
Неактивен
Алексей Зеленов написал:
День добрый. Вопросик созрел.
Мне надо сгенерировать случайное число однотипных переменных,
грубо говоря $переменная1, $переменная2? $переменная3... $переменнаяДцать...
При каждом запуске игры их число может отличаться.
Как бы все это дело организовать? Уверен, что оно просто, но туплю уже второй день...
А значения у них разные или одинаковые?
Неактивен
Значения числовые, одинаковые. Но в дальнейшем будут изменяться независимо друг от друга.
Отредактировано Алексей Зеленов (23.01.2018 08:28)
Неактивен
Алексей Зеленов написал:
Значения числовые, одинаковые. Но в дальнейшем будут изменяться независимо друг от друга.
Можно создать список случайной длины (в примере от 10 до 20), а затем заполнить его в цикле нужными значениями (в примере числом 1):
<<random $длина = 10>> <<set $длина = $длина+10>> <<set $список = []>> <<set $список.length = $длина>> <<set $i = 0>> <<loop $длина>> <<set $список[$i] = 1>> <<set $i++>> <<endloop>>
Обращаться потом к созданным переменным нужно так: $список[i], где i - номер переменной, начиная с 0.
Неактивен
Да, как раз то что нужно! Заодно повод получше с массивами разобраться появился.
Кстати, когда релиз на JS ожидать? Ну или хоть пощупать бету.
Отредактировано Алексей Зеленов (23.01.2018 13:13)
Неактивен
Кстати, когда релиз на JS ожидать? Ну или хоть пощупать бету.
Бета скоро будет готова, я отпишусь.
Неактивен
alfa10 написал:
Привет!
Коллеги, ребятки, подскажите, будет ли возможность портировать на андроид? Хочу свой хит перенести на андроид и играться на телефоне!
Будет точно. Думаю к весне.
Неактивен
alfa10 написал:
Отлично! А портировать можно будет готовый уже код на андроид или придется заново, с нуля, на андроид уже писать код?
Готовый, конечно.
Неактивен
Мир вашему дому.
Наконец перечитал эту тему.
Чтоб полностью вкурить свои вопросы перечитывал несколько раз, чтоб получить ответы.
90% из того что мне было необходимо реализовал.
Вполне всё понятно.... / только надо самому тестить раз 20, чтоб точно осознать, как происходит необходимое событие./
Много букв перечитал по ссылкам, в мануалах и сайтах по работе на АХМА.
Осталось ещё чуть чуть и можно читать заново. С первого раза не всё запоминается. / Добрая улыбка /
Что получилось:...
или что хотел:....
Интерактивный примитивный рассказ ( повествование ) на основе текста и "Анимации"
Как это странно выглядит... но Анимация оказалась в 90% проЭкта - реализовано.
Сменное фоновое звуковое сопровождение - реализовано.
сменные звуковые Эффекты локаций - реализовано.
Запуск проЭкта на виртуальном сервере - реализовано. / много звука, картинок, анимации. /
На днях закачаю на живой хостинг для теста.
++++
Конечно помогли / открытые коды ***. sm./ проектов.
В них наглядно видно как правильно делать.
Простые проекты вполне полезны и познавательны.
++++
Коды сложных проектов не нашёл. / жаль /
++++
Сейчас стоит задача по продукту полировать, полировать, полировать....
Ещё много предстоит изучить и искать ответы на поставленные мою перед собой задачи.
+++
Мои задачи:
Реализовать в проекте визуальные мини игры:
Тетрис
Подбор цифр
Шарики - коды нашёл
Лабиринт
Сапёр
Арканойд
....
Произвести смену указателя мышки для отдельных локаций.
Изменение шрифтов и их цвета для отдельных локаций.
Хотелось бы осознать полностью возможности Движка и свои скилы усидчивости в изучении и реализации продуктов.
Всем спасибо за ваши вопросы. Они познавательны и ответы на них полезны!
Желаю всем сил в ваших желаниях создавать продукты на движке AXMA.
P.S.
Сайтик хочу замутить на AXMA...
Отредактировано Bondersan (03.02.2018 20:11)
Неактивен
Помогите мне пожалуйста! никак не разберусь с выбором действия...
Нужно выбрать одно из двух действий, но как идти дальше по каждому действию?
Возможно ли здесь сделать так, чтобы для прохождения по определенной ветке дальше нужно выбрать одновременно несколько из списка, а не что то одно?
Неактивен
Алексей Хорев написал:
Помогите мне пожалуйста! никак не разберусь с выбором действия...
Нужно выбрать одно из двух действий, но как идти дальше по каждому действию?
Возможно ли здесь сделать так, чтобы для прохождения по определенной ветке дальше нужно выбрать одновременно несколько из списка, а не что то одно?
[[Текст ссылки | Название параграфа - Х ]] / Это только для перехода на следующий параграф Х / клик на текстовое поле.
Это меню для перехода в любой из выбранных параграфов.
[[Текст ссылки | Название параграфа-1]]
[[Текст ссылки | Название параграфа-2]]
[[Текст ссылки | Название параграфа-3]]
[[Текст ссылки | Название параграфа-4]]
[[Текст ссылки | Название параграфа-5]]
Открыл выбранный параграф, там такое же меню
[[Текст ссылки | Название параграфа-6]]
[[Текст ссылки | Название параграфа-7]]
[[Текст ссылки | Название параграфа-8]]
[[Текст ссылки | Название параграфа-9]]
[[Текст ссылки | Название параграфа-10]]
Открыл следующий выбранный параграф, там такое же меню.....
Неактивен
Кто нибудь закачивал анимацию в проекты?
У меня анимация с шумами.
Шумы генерирует АХМА.
Альфа фон чистый,
Подкладываю палитру шум пропадает.
Но с палитрой Спрайт закрывает иллюстрацию.
В любых других програх анимация чистая.
Отредактировано Bondersan (06.02.2018 17:17)
Неактивен
Bondersan написал:
Алексей Хорев написал:
Помогите мне пожалуйста! никак не разберусь с выбором действия...
Нужно выбрать одно из двух действий, но как идти дальше по каждому действию?
Возможно ли здесь сделать так, чтобы для прохождения по определенной ветке дальше нужно выбрать одновременно несколько из списка, а не что то одно?[[Текст ссылки | Название параграфа - Х ]] / Это только для перехода на следующий параграф Х / клик на текстовое поле.
Это меню для перехода в любой из выбранных параграфов.
[[Текст ссылки | Название параграфа-1]]
[[Текст ссылки | Название параграфа-2]]
[[Текст ссылки | Название параграфа-3]]
[[Текст ссылки | Название параграфа-4]]
[[Текст ссылки | Название параграфа-5]]
Открыл выбранный параграф, там такое же меню
[[Текст ссылки | Название параграфа-6]]
[[Текст ссылки | Название параграфа-7]]
[[Текст ссылки | Название параграфа-8]]
[[Текст ссылки | Название параграфа-9]]
[[Текст ссылки | Название параграфа-10]]
Открыл следующий выбранный параграф, там такое же меню.....
Имелось ввиду через команду choise или if
то есть к примеру чтобы сварить компот мненадо из списка фрукты овощи вода кастрюля плита самолет сковородка выбрать фрукты вода кастрюля и только тогда он даст идти по основной ветке
Неактивен
Алексей Хорев написал:
Имелось ввиду через команду choise или if
то есть к примеру чтобы сварить компот мненадо из списка фрукты овощи вода кастрюля плита самолет сковородка выбрать фрукты вода кастрюля и только тогда он даст идти по основной ветке
Смотри проект БЫКИ и КОРОВЫ.
Там это реализовано в цифрах.
Выбор две цифры.
У тебя будет выбор три, пять значений.
Это если я правильно понял.
Неактивен
Алексей Хорев написал:
Помогите мне пожалуйста! никак не разберусь с выбором действия...
Нужно выбрать одно из двух действий, но как идти дальше по каждому действию?
Возможно ли здесь сделать так, чтобы для прохождения по определенной ветке дальше нужно выбрать одновременно несколько из списка, а не что то одно?
(sorry for English)
If you are using the choice macro, yes. If the player selects a choice it will set the variable which will occur when they click a separate regular link to move on.
If the player does not make a selection, the variable in your choice macro will be set to 0.
The way to ensure the player chooses everything from a list is to send them to a passage which checks to make sure none of your choice macro variables are 0. If any of them are 0, you send them back to choose again.
----
(извините за Перевод Google)
Если вы используете макрос выбора, да. Если игрок выбирает выбор, он будет устанавливать переменную, которая будет возникать, когда они нажимают на отдельную регулярную ссылку для перехода.
Если игрок не делает выбор, переменная в вашем макросе выбора будет установлена в 0.
Способ гарантировать, что игрок выбирает все из списка, - это отправить их в проход, который проверяет, чтобы ни одна из ваших макропеременных выбора не была равна 0. Если какой-либо из них равен 0, вы отправляете их обратно, чтобы выбрать еще раз.
Неактивен
HanonO написал:
Алексей Хорев написал:
Помогите мне пожалуйста! никак не разберусь с выбором действия...
Нужно выбрать одно из двух действий, но как идти дальше по каждому действию?
Возможно ли здесь сделать так, чтобы для прохождения по определенной ветке дальше нужно выбрать одновременно несколько из списка, а не что то одно?(sorry for English)
If you are using the choice macro, yes. If the player selects a choice it will set the variable which will occur when they click a separate regular link to move on.
If the player does not make a selection, the variable in your choice macro will be set to 0.
The way to ensure the player chooses everything from a list is to send them to a passage which checks to make sure none of your choice macro variables are 0. If any of them are 0, you send them back to choose again.
----
(извините за Перевод Google)
Если вы используете макрос выбора, да. Если игрок выбирает выбор, он будет устанавливать переменную, которая будет возникать, когда они нажимают на отдельную регулярную ссылку для перехода.
Если игрок не делает выбор, переменная в вашем макросе выбора будет установлена в 0.
Способ гарантировать, что игрок выбирает все из списка, - это отправить их в проход, который проверяет, чтобы ни одна из ваших макропеременных выбора не была равна 0. Если какой-либо из них равен 0, вы отправляете их обратно, чтобы выбрать еще раз.
можно пример кода написать такого?
Неактивен
Просьба на тестирование.
Закиньте этот файл в ваш проект.
Под него положите любого цвета фон.
Кроме белого.
И скажите у вас шум есть или нет?
Если есть шум, то откуда он берётся?
Если шума нет. Скиньте код как вы его прописали.
Неактивен
Как протестировать последовательность локаций?
Необходимо протестить установленные переходы с 20 - 21 - 22 - 23 - 24 - 50
Начиная с 20. или именно с предыдущей локации, на следующую, которая должна быть далее.
Но не с начало.
Можно конечно переписать путь от первой к 20 и "Запустить"
Но что то не хочется постоянно переписывать и лочить и переписывать.
Тестирую переходы музыкального сопровождения, анимаций и функционал локаций.
До какого веса проекта может обрабатывать движок?
Есть ли ограничения в количестве и размере внешних файлов для обработки в движке?
Папочка "files" уже весит 30 мегабайт. С 50 файлами.
Отредактировано Bondersan (07.02.2018 14:04)
Неактивен
Bondersan написал:
Как протестировать последовательность локаций?
Необходимо протестить установленные переходы с 20 - 21 - 22 - 23 - 24 - 50
Начиная с 20. или именно с предыдущей локации, на следующую, которая должна быть далее.
Но не с начало.
Можно конечно переписать путь от первой к 20 и "Запустить"
Но что то не хочется постоянно переписывать и лочить и переписывать.
Тестирую переходы музыкального сопровождения, анимаций и функционал локаций.
До какого веса проекта может обрабатывать движок?
Есть ли ограничения в количестве и размере внешних файлов для обработки в движке?
Папочка "files" уже весит 30 мегабайт. С 50 файлами.
По тестированию ничего не скажу, только вариант с ссылками на нужный параграф.
Ограничений по количеству и размеру файлов нет, но публикации в библиотеку ограничены 20 Мб (80 для novels.ru).
Неактивен
DoubleDragon написал:
По тестированию ничего не скажу, только вариант с ссылками на нужный параграф.
Ограничений по количеству и размеру файлов нет, но публикации в библиотеку ограничены 20 Мб (80 для novels.ru).
Угу спасибо.
Залил к себе на хостинг. Жду индексации...
Встретился с багом. Не срабатывает музыка.
В начальной локации запускаю музыку.
2-3-4 локации всё нормально.
В четвёртой пишу / ноаудио /
далее строка новая музыка.
идёт 2-3-4 локации.
потом опять /но аудио /
и новая мелодия.
И тут ошибка ....
Ошибка вылазит на других компах. При тесте.
Далее ...
следующая локация 8
но аудио
и новая мелодия.
Опять всё работает.
следующая локация 9
но аудио
и новая мелодия.
Опять всё работает.
следующая локация 9
но аудио
и новая мелодия.
Опять всё работает.
следующая локация 10
но аудио
и новая мелодия.
Опять всё работает.
поменял мелодию / где ошибка /
всё равно не пашет. именно в этом моменте.
Обидно что при тесте у себя всё работает.
Буду копать ....
+++++++++
По мусору на анимации....
я попозже пришлю на мыло заготовки проекта.
Неактивен
Со звуком разобрался.
Движок тупо игнорирует данную мелодию.
Не хочет её кушать и всё.
Пробовал брать другую версию всё равно не хочет.
Заменил мелодию на другую всё встало на свои места.
Неактивен
Прошу протетстировать.
http://купилкимэн.рф/
Звук
Анимацию
Кнопочки на смартфонах и планшетах.
Корректность звуковых эффектов
циклы переходов между локациями.
проект сырой. Не то что сырой а совсем сырой.
Реализация на 10% от релиза.
Задачи по проекту. Прокачаться на АХМА
Создать примитивный детский обзор на персонажа "Купилкимен"
Отредактировано Bondersan (08.02.2018 16:31)
Неактивен
DoubleDragon написал:
Алексей Зеленов написал:
Значения числовые, одинаковые. Но в дальнейшем будут изменяться независимо друг от друга.
Можно создать список случайной длины (в примере от 10 до 20), а затем заполнить его в цикле нужными значениями (в примере числом 1):
Код:
<<random $длина = 10>> <<set $длина = $длина+10>> <<set $список = []>> <<set $список.length = $длина>> <<set $i = 0>> <<loop $длина>> <<set $список[$i] = 1>> <<set $i++>> <<endloop>>Обращаться потом к созданным переменным нужно так: $список[i], где i - номер переменной, начиная с 0.
ограничения на количество элементов массива (списка) есть? А на количество переменных в игре?
Отредактировано Алексей Зеленов (09.02.2018 13:20)
Неактивен
Алексей Зеленов написал:
DoubleDragon написал:
Алексей Зеленов написал:
Значения числовые, одинаковые. Но в дальнейшем будут изменяться независимо друг от друга.
Можно создать список случайной длины (в примере от 10 до 20), а затем заполнить его в цикле нужными значениями (в примере числом 1):
Код:
<<random $длина = 10>> <<set $длина = $длина+10>> <<set $список = []>> <<set $список.length = $длина>> <<set $i = 0>> <<loop $длина>> <<set $список[$i] = 1>> <<set $i++>> <<endloop>>Обращаться потом к созданным переменным нужно так: $список[i], где i - номер переменной, начиная с 0.
ограничения на количество элементов массива (списка) есть? А на количество переменных в игре?
Нет, никаких ограничений нет.
Неактивен
У меня ругается на размер "Спрайтов"
Пишет, что большие.
Меньше делать размер плохо получается. Анимация не полноценная.
++++
Как сделать меню с сылкой на внешний проект?
А то как то в одном проекте уже три случайно получилось.
Громоздко получается.
Отредактировано Bondersan (14.02.2018 00:06)
Неактивен
Bondersan написал:
Запуск музыки можно сделать в самом начале?
У меня только в локации Старт запускается.
Так ведь Start и есть первый параграф?
Неактивен
Bondersan написал:
У меня ругается на размер "Спрайтов"
Пишет, что большие.
Меньше делать размер плохо получается. Анимация не полноценная.
А какой формат спрайта, gif?
Bondersan написал:
Как сделать меню с сылкой на внешний проект?
А то как то в одном проекте уже три случайно получилось.
Громоздко получается.
Не понял вопроса.
Неактивен
DoubleDragon написал:
.А какой формат спрайта, gif?
Угу гифы
Анимацию в другом формате не пробовал.
Как то обсуждали другие форматы анимации.
Гиф более менее вменяем по отношению к другим форматам.
DoubleDragon написал:
. Не понял вопроса.
Хочу чтоб из локации была ссылка на другой проект
Кликаешь и запускается другой движок этого же формата.
Типа перехода из одной игры первой части во вторую. и обратно в определённую локацию.
Так упростит строительство вавилонской башни.
Start это запуск игры. А запуск продукта это "StoryAuthor" "StorySubtitle" "StoryTitle"
Как сделать звуковое сопровождение при запуске html?
Неактивен
Bondersan написал:
DoubleDragon написал:
.А какой формат спрайта, gif?
Угу гифы
Анимацию в другом формате не пробовал.
Как то обсуждали другие форматы анимации.
Гиф более менее вменяем по отношению к другим форматам.DoubleDragon написал:
. Не понял вопроса.
Хочу чтоб из локации была ссылка на другой проект
Кликаешь и запускается другой движок этого же формата.
Типа перехода из одной игры первой части во вторую. и обратно в определённую локацию.
Так упростит строительство вавилонской башни.
Start это запуск игры. А запуск продукта это "StoryAuthor" "StorySubtitle" "StoryTitle"
Как сделать звуковое сопровождение при запуске html?
Ограничение на размер спрайтов можно снять вручную, но предупреждаю, что это приведёт к долгой загрузке и запуску игры. Если всё же надо, пишите в личку.
Ссылки на внешние страницы делаются таким макаром: [[Яндекс|http://ya.ru]]
.
Запуск музыки сразу после запуска игры сделать невозможно, это особенность движка, наличие которой позволяет играть музыку и на iOS девайсах.
Неактивен
DoubleDragon написал:
Ограничение на размер спрайтов можно снять вручную, но предупреждаю, что это приведёт к долгой загрузке и запуску игры. Если всё же надо, пишите в личку.
Ссылки на внешние страницы делаются таким макаром:[[Яндекс|http://ya.ru]]
.
Запуск музыки сразу после запуска игры сделать невозможно, это особенность движка, наличие которой позволяет играть музыку и на iOS девайсах.
С размером анимации понял. Как только войду в 147% тупик буду запрашивать помощи.
За подсказку с внешней ссылкой спасибо.
Значит у меня где то косяк буду искать.....
С музыкой пошёл другим путём. Добавил локаций, изменил структуру.
Вроде получилось, как задумано.
Нужен совет:
Как сделать нормальный музыкальный переход между локациями?
Ещё момент, который пробую реализовать.
На локации более одного анимированного спрайта. Один спрайт в какой то момент должен пропасть
и запуститься другой спрайт. Как такое кодом прописать?
Возможно ли работу спрайтов связать с текстовым окном?
+++++++++
Если реализовывать выход из проекта и запуск другого проекта...
Возможно ли отрезать стандартные условия запуска и произвести запуск первой локации?
Что посоветуете?
Либо...
Существует ли возможность запустить из внешней ссылки \ команды \ нужную локацию в другом проекте.
В пример:
У нас история из 3 частей ( три отдельных проекта) из первой части 7 локация
[[20 локация |http://название сайтa.ru/каталог/проект.html/локация-20]]
.
надо запустить 20 локацию второго проекта.
Отредактировано Bondersan (16.02.2018 18:04)
Неактивен
Напоминаю
Можно как то решить задачу с фоновым шумом на гифке.
Образец на прошлой страничке выкладывал.
Визуально протесть можно по ссылке.
Отредактировано Bondersan (16.02.2018 18:05)
Неактивен
Алексей Хорев написал:
можно пример кода написать такого?
Sorry for the delay, and sorry if this is not what you asked for and I misunderstood due to Google Translate. Here is a code example:
:: Start How to make sure the player selects one of everything. You need a fruit: <<choice 'apple;banana;peach' $fruit>> And a protein: <<choice 'beef;chicken;tofu' $protein>> And a dessert! <<choice 'cake;pie;ice cream' $dessert>> [[Order!]] :: order! <<if $fruit eq 0 or $protein eq 0 or $dessert eq 0>> You need to choose one from each menu section, please select again: Variables set: <<print $fruit>> <<print $protein>> <<print $dessert>> [[Start]] <<else>> Okay, your order will be up soon. Variables set: <<print $fruit>> <<print $protein>> <<print $dessert>> <<endif>>
Отредактировано HanonO (16.02.2018 19:27)
Неактивен
Чего то я делаю не правильно.
Роботы на меня ругаются.
Яндекс игнорирует. ( к другим поисковикам не пристаю)
Подтягивание нового контента долго до двух часов ... ждать...
Спрайты глючат - либо тормозят либо ускоряются.
Внутри структуры бардак.... уже путаюсь.
Движок тестит и выявляет наивные ошибки на ровном месте.
Спрайты друг на друга лезут... Звук тормозит...
Ещё немного и наверно с нуля начну.
По другому алгоритму...
Неактивен
Подскажите пожалуйста, есть ли в текущей версии возможность сделать спрайт кликабельным, чтоб, например, вызывать диалоги с персонажем, кликая на его спрайте?
Неактивен
Алексей Бакасин написал:
Подскажите пожалуйста, есть ли в текущей версии возможность сделать спрайт кликабельным, чтоб, например, вызывать диалоги с персонажем, кликая на его спрайте?
И чтоб после клика спрайт заменялся...
Было бы очень круто!
Неактивен
Алексей Бакасин написал:
Подскажите пожалуйста, есть ли в текущей версии возможность сделать спрайт кликабельным, чтоб, например, вызывать диалоги с персонажем, кликая на его спрайте?
Можно (укажите вместо "Имя параграфа" нужный):
<<sprite 'https://novels.ru/rsc/examples/sprite.png', @, 5, @, 50, 100, 3, 1000, 'Имя параграфа'>>
Неактивен
Спасибо!!
Неактивен
Накосячил.
И тут же возник вопрос.
Изменил структуру папок. Вытащил файлы из "files" в отдельную папку. ( Много файлов получалось в одной папке неудобно )
Назвал папку "fon". Дал права "Выполнять Поиск" "Чтение" для роботов.
Роботы игнорируют эту папку.
Пока всё было в одной папке роботы моментально кушали новые файлы.
Как правильно нужно было сделать?
/ files / fon /....
или /корневой каталог /fon/...
???
Понимаю, что вопрос не по тематике AXMA Story Maker.
Но в даном варианте я делаю онлайн продукт, онлайн разработки.
Кому то вполне поможет в дальнейшем избежать моих ошибок.
++++
В идеале надо делать отдельную страничку независимую от AXMA и в ней запуск продукт AXMA Story Maker.
Я стал делать открытый запуск AXMA Story Maker.
Переименовав файл *****.html
В "index. html", что и производит запуск AXMA Story Maker при входе на домен.
++++
Может ли влиять на работу AXMA создание новых папок в корневом каталоге?
Ограничение на количество папок и количество файлов в продукте?
Имеет ли значение название папок для работы AXMA ?
Отредактировано Bondersan (22.02.2018 11:36)
Неактивен
И ещ раз здрасьте.
код
<<display 'параграфN'>> <<repeat 'параграфN' 5>>
выводит содержимое "параграфN" в текущем параграфе. Допустим в параграфN генерируется рандомное число.
тогда в текущем параграфе будут последовательно сверху вниз выводиться числа:
random1
random2
random3
random4
random5
...
randomn
Вопрос. Возможно ли, чтобы новые сообщения появлялись не внизу, а вверху
randomn
...
random5
random4
random3
random2
random1
т.е. результат самой свежей обработки "параграфN" выводился всегда вверху?
Отредактировано Алексей Зеленов (24.02.2018 19:43)
Неактивен
Можно сохранять вывод в переменную, добавлять к ней новое значение, очищать поле вывода и выводить новое значение переменной:
<<random $новое = 100>> <<set $вывод = $новое+"<br>"+$вывод>> <<clrscr>> <<print $вывод>>
Но предварительно создайте переменную $вывод (перед макросом repeat):
<<set $вывод = "">>
Неактивен
Не понимаю!
Сделал самостоятельную страничку.
В ней сделал ссылку на файл ****.html
Папку с каталогами проекта положил в каталог сайта.
Проверяю всё запускается.
Запускаю с браузеров.
Работает!
Но криво.
Картинки не все запускаются.
Половина картинок и музыки запускается половина нет.
По логике роботы не имеют отношения к файлам.
Это отдельный продукт.
Аналогично запуска из любой папки на системном блоке.
Что я делаю не так?
спойлер…
++++++++++++
Решение:
Удаляю, всё что не запускается.
Ставлю, что запускается.
Выглядит странно, но такое решение пока оптимальное.
Отредактировано Bondersan (26.02.2018 20:24)
Неактивен
Дошло время до рандомного спрайта.
И так.
У нас иллюстрация на ней есть спрайт.
В тексте есть предложение из двух трёх действий.
Необходимо выбрать одно решение – действие.
Выбрав одно решение, запускается спрайт по данному параметру.
В условии стоят два три спрайта не видимые пользователю.
Есть возможность такое организовать?
+++++++
Либо
Организация данного события в одной локации или проще создать 2-3 локации по варианту выбора пользователя?
Пользователь выбирает действие – открывается новая локация с условием спрайта.
Как правильно реализовать?
Отредактировано Bondersan (26.02.2018 20:50)
Неактивен
Запустил примитивный квест.
На примитивной структуре.
Обратил внимание, на возврат в локацию с ранее запущенным спрайтом (механика один раз) спрайт не возвращается в исходное положение.
Вышел из положения, создавая дубликат возвратной локации.
Удалил весь проЭкт на хостинге. Загрузил заново. Запустил. Всё запустилось нормально.
В итоге получилось: Непонятно по каким причинам. Движок не запускает в онлайне определённого вида музыку, иллюстрации, спрайты.
Решение: Удалять вставлять другие.
Переименовывание и изменение не помогает.
Создаю новые, которые запускаются.
Грешу на кривые руки.
Реализация проЭкта на самом примитивном уровне.
Неактивен
Всё начало собрано.
105 локаций
40 анимированных спрайтов
14 иллюстраций
13 фотографий
15 звуковых фоновых сопровождений
1 ветвь текстовый рассказ ( без оформления)
2 квестовых сценария
2 ветки развития сценария.
Спасибо за движок!
Думал, что будет сложнее.
http://kypilkimen.ru/
Отредактировано Bondersan (27.02.2018 16:30)
Неактивен
Можно ли сделать, чтобы спрайт слегка хаотично двигался в радиусе вокруг одной точки, наподобие мухи или комара? Подсобите, пожалуйста, с кодом! Теоретически я понимаю, что это можно с функцией тайминга сделать, но математического аппарата не хватает, чтобы изобрести код.
Неактивен
Делаю новый Онлайн проЭкт. По заказу трудящихся.
Обратил внимание, что роботы не очень то кушают картинки.
Звук кушают сразу. Спрайты тоже со свистом.
А иллюстрации они не любят. Могут скушать одну две... Потом долго думать...
На хостинге под движок сайта robots.txt прописан правильно, так как должно быть. Если его править, то он всё равно восстанавливается...
Как ему хочется.
Тут у меня даже не вопрос, а сам факт событий при которых надо ждать, того события, чтоб проЭкт полностью скушался роботами, для показа общественности.
Ну и в догонку.... Альфа версия начальная почти 100 мб.
Резать картинки пробовал, но совсем плохо получается. Контента много.
+++++
Можно конечно залить весь свой контент на хостиг, а продукт выложить в общую базу. Но это можно сказать полный перебор параграфов по ссылкам.
Как роботы докушают контент скину ссылку для желающих тестить.
Неактивен
В догонку...
Просматриваю ваши работы.
У 99% одни и те же ошибки.
В этой теме есть все ответы.
+++++
Если картинки не грузятся, смотрите регистры.
Если регистры правильные, то не отдаёт ресурс ( ВК особенно жаден)
Качаем картинку кладём на другой сайт, который отдаёт картинки - И вот счастье.
Правильные пути пишем изначально. Тестируем проекты на первых параграфах. Если работает, то копируем параграф и правим, его соблюдая правила, которые работают.
Неактивен
Не знаю, что получилось...
Но начал делать этот проЭкт достаточно давно.
В эту летнюю ночь, что то доделал...
И выношу на показ.
Конечно надо мне быть по скромнее.... и доделывать всё по уму и по правилам.
Но это должно толкнуть новых творцов к новым творениям.
++++++
ПроЭкт "Чудный Выходной"
По заказу трудящихся масс.
http://kypilkimen.ru/Weekend/weekend.html
Пробовал реализовать карточную игру. Понравится вам или нет.... Это ваше решение!
Примитивно! Просто! Но вполне играбельно.
Ошибки по игре пишите мне на почту хостинга или сюда в приват.
С грамматикой и пунктуацией всё плохо. Видите ошибку ! Фиксируйте локацию, пишите... исправлю.
По проЭкту "Чудный Выходной" ещё около 10-20 веток в разработке, которые может быть при вдохновении прикручу.
ПроЭкт с минимальной анимацией. С минимальной текстовой слагающей. Это именно тот проЭкт который сможет сделать любой новичок на этом движке, прочитав эту тему от начало и до конца.
+++++++++++
Если вы выкладываете проекты себе на хостинг. Готовьтесь увидеть много разных ваших ошибок.
Увидеть их на ваших компах не возможно. Они не проявляются. А при онлайн версии, все ваши косяки будут как на ладони!
Тестируйте и проверяйте всё! И не один раз.
Отредактировано Bondersan (28.06.2018 03:49)
Неактивен
Здравствуйте!
Пользоваться AXMA я начал примерно месяц назад. Все было замечательно: я учился создавать игры, позвал друзей. Среди них оказался художник. Времени у нас немало, поэтому мы решили создать средненький квест про детектива в далеком будущем. В тот же момент я задался вопросом -как опубликовать игру?в AXMA написано, что игра выводится в HTML. Больше я ничего не узнал.
Вследствие этого у меня к вам, дорогие пользователи форума, вопросы:
1). Как играть в нашу игру на телефонах (мобильный AXMA не считается). Как перевести игру из HTML в apk?
2). Как опубликовать игру в Play Market/Ios/другие магазины.
Жду вашего ответа.
Не гневайтесь на нас пожалуйста. Мы ещё новички и многого не понимаем
Неактивен
George213141 написал:
Здравствуйте!
Пользоваться AXMA я начал примерно месяц назад. Все было замечательно: я учился создавать игры, позвал друзей. Среди них оказался художник. Времени у нас немало, поэтому мы решили создать средненький квест про детектива в далеком будущем. В тот же момент я задался вопросом -как опубликовать игру?в AXMA написано, что игра выводится в HTML. Больше я ничего не узнал.
Вследствие этого у меня к вам, дорогие пользователи форума, вопросы:
1). Как играть в нашу игру на телефонах (мобильный AXMA не считается). Как перевести игру из HTML в apk?
2). Как опубликовать игру в Play Market/Ios/другие магазины.
Жду вашего ответа.
Не гневайтесь на нас пожалуйста. Мы ещё новички и многого не понимаем
Из HTML в apk....
Если у разработчика AXMA есть совместимость движков, то просто. Надо запустить преобразователь. Где его взять?
Одному богу известно.
В двух словах:
apk -это исполняемый архивный загрузчик для андройд.
html- это система разметки текста.
Надо ДраконДраконыча дождаться. Он точно ответит более грамотно.
Думаю, что конвертировать ручками придётся большую часть продукта.
Для публикации в магазинах, необходимо получить платную версию AXMA Сконвертировать продукт в HTML. Полный пакет игры упаковать в архив, выложить на торговую площадку продукт. Как коммерческое изделие. На площадках видел только один продукт в коммерческой продажи.
Это реально крутое изделие!
У меня все игры созданные на AXMA запускаются на любом телекоммуникационном устройстве, на котором есть дисплей и ВайФай. Проблем не наблюдалось с HTML.
Не считая, того что я пробовал создавать на AXMA игровой сайт. И он вполне был работоспособный.
Отредактировано Bondersan (30.06.2018 23:27)
Неактивен
George213141 написал:
1). Как играть в нашу игру на телефонах (мобильный AXMA не считается). Как перевести игру из HTML в apk?
У меня получилось это сделать, путем каких-то нечеловеческих действий, установки Cordova, Java библиотек и тому подобных непонятностей. Как это повторить, я не знаю. В самый неподходящий момент ноут полетел и все, что устанавливалось с бубном в руках навсегда утрачено. Скажу одно, пока разработчик Аксма не смог решить проблему с воспроизведением звука в играх. В apk-файле звуки выдают ошибки, но играть все равно можно и довольно приятно все выглядит на любом устройстве. Ключ к вашему желанию опубликовать игру в Маркет - Cordova.
Неактивен
George213141 написал:
Здравствуйте!
Пользоваться AXMA я начал примерно месяц назад. Все было замечательно: я учился создавать игры, позвал друзей. Среди них оказался художник. Времени у нас немало, поэтому мы решили создать средненький квест про детектива в далеком будущем. В тот же момент я задался вопросом -как опубликовать игру?в AXMA написано, что игра выводится в HTML. Больше я ничего не узнал.
Вследствие этого у меня к вам, дорогие пользователи форума, вопросы:
1). Как играть в нашу игру на телефонах (мобильный AXMA не считается). Как перевести игру из HTML в apk?
2). Как опубликовать игру в Play Market/Ios/другие магазины.
Жду вашего ответа.
Не гневайтесь на нас пожалуйста. Мы ещё новички и многого не понимаем
Если игра достойная, упакуем в apk и опубликуем в Play Market. Пишите на hyperbook@axmasoft.com.
Неактивен
Всем спасибо за ответы! Теперь мы знаем, что делать.
Неактивен
Всем здравствуйте! Во время создания драки у меня возникла проблема.
Вот пример
<<set $сцена = 'Битва с драконом'>>
<<display 'Заголовок'>>
<<if $драка eq 1>>
Ты атакуешь первым
[[Кинуть копьё|Замок{$драка=2}]]
[[Спрятаться|Замок{$драка=3}]]
<<elseif $драка eq 2>>
Ты кинул копьё, но промахнулся <<set $драка = 4>>
<<elseif $драка eq 3>>
ты так плохо спрятался, что дракон нашёл тебя <<set $драка = 4>>
<<elseif $драка eq 4>>
Он плюнул в тебя огненный шар
ты умер
<<endif>>
я вставил подчеркнутые макросы, чтобы не добавлять кнопку типа "закончить ход". К сожалению, у меня ничего не получилось и макросы set не работали.
Что я делаю не так? Почему у меня ничего не работает? Подскажите пожалуйста. Заранее спасибо.
Неактивен
Хочу реализовать карточную игру 21. В том же проЭкте.
"Чудный Выходной"
Но какой раз начиная создавать систему не могу уловить полную картину сценария.
Есть кто может подсказать на пальцах правильно доступную для реализации систему?
А то я мозг ломаю блуждая в трёх елях.
Не обязательно подлинность 21 а что то похожее на неё....
Неактивен
George213141 написал:
Всем здравствуйте! Во время создания драки у меня возникла проблема.
Привет. Даже если тебе дадут готовый ответ, пользы от этого ты почти не получишь, поэтому рекомендую разобраться самому. Есть замечательный сайт, где я черпал первые знания по использованию данного редактора. Вот тебе ссылка:
http://morych.blogspot.com/p/axma.html
В частности, там есть решение той задачи, которую ты себе поставил.
Неактивен
Ally55 написал:
Добрый день! Подскажите, пожалуйста, можно ли как-то "растянуть" сетку в axma story maker, чтобы увеличить рабочее пространство?
Решил эту задачу, складыванием в пул нескольких сцен.
Тут проще вести одну ветку потом её сложить в пул, выдернуть сцену и от неё вести новую ветку.
Если ведёшь более 20-30 веток одновременно то да места не хватает. Решение = в пул.
10-20 веток вмещаются на рабочем окне нормально.
Когда переваливает за 130-140 сцен тут уже напрягаешься по взрослому!
Надо вести рукописный блокнот, чтоб быстрее ориентироваться в своём же проЭкте.
Главное не бросать проЭкт когда более 100 сцен с десятками веток....
Потом вспоминать напряжно....
Надо продолжать и продолжать творить достигая поставленной перед собой цели!!!
Неактивен
Всем здравствуйте! Мы хотим, чтобы наша игра работала на телефонах. В связи с этим у меня накопились вопросы.
1). Как будет выглядеть игра на телефоне?
2). Можно ли играть в игру в вертикальной ориентации? Что надо для этого сделать?
3). Что нужно сделать, чтобы увеличить текстовую часть в интерактивной новелле (мы хотим разделить экран пополам на текст и картинку)?
Спасибо за все ответы!
Неактивен
George213141 написал:
Всем здравствуйте! Мы хотим, чтобы наша игра работала на телефонах. В связи с этим у меня накопились вопросы.
1). Как будет выглядеть игра на телефоне?
2). Можно ли играть в игру в вертикальной ориентации? Что надо для этого сделать?
3). Что нужно сделать, чтобы увеличить текстовую часть в интерактивной новелле (мы хотим разделить экран пополам на текст и картинку)?
Спасибо за все ответы!
Просто запустите игру в онлайн версии редактора, измените размер окна браузера до минимума и увидете как игра будет выглядеть на телефоне, в т. ч. в вертикальной ориентации (lifehack).
Неактивен
DoubleDragon написал:
George213141 написал:
Всем здравствуйте! Мы хотим, чтобы наша игра работала на телефонах. В связи с этим у меня накопились вопросы.
1). Как будет выглядеть игра на телефоне?
2). Можно ли играть в игру в вертикальной ориентации? Что надо для этого сделать?
3). Что нужно сделать, чтобы увеличить текстовую часть в интерактивной новелле (мы хотим разделить экран пополам на текст и картинку)?
Спасибо за все ответы!Просто запустите игру в онлайн версии редактора, измените размер окна браузера до минимума и увидете как игра будет выглядеть на телефоне, в т. ч. в вертикальной ориентации (lifehack).
Может ребятам проще посоветовать купить домен с хостингом и тестировать по факту.
Я не знаю есть ли сейчас халявные онлайн ресурсы для таких экспериментов.
Но думаю, если поискать то можно что то найти...
В крайнем случае если скилы прокачены можно виртуальный хостинг запустить на домашнем компе для ВайФая.
+++
Мне походу повезло сразу. Я на своём хостинге тренировался. Ибо задачи были делать игру онлайн версию. Почему я и выбрал ваш уникальный движок.
Неактивен
Здравствуйте! Ещё один вопрос. Голова окончательно не хочет думать
Хотели сделать бесконечную игру, в которой появляются враги (у каждого рандомное здоровье в пределах 5) и мы должны их убивать (урон=4). когда здоровье врага меньше или равно урону, все гладко. но когда здоровье равно 5, игра пропускает его просто так. вместо него появляется новый. как сделать так, чтобы игрок мог добить врага (у врага 5 хр. мы сносим ему 4 а потом еще раз бьём с тем же уроном. он умирает и появляется новый).
вот пример кода
#Параграф с битвами
<<display 'Создание объектов'>>
у врага <<print $здоровье_врага>> жизней
[[-ударить|Start{$здоровье_врага_после_урона=$здоровье_врага-$урон}]]
<<if $здоровье_врага_после_урона lt 1>>
(прошлая битва)ты победил его
<<endif>>
#параграф "Создание объектов"
<<random $здоровье_врага= 4>>
<<set $здоровье_врага++>>
<<set $урон=4>>
+++
Понимаю, что всех уже достал. Но уверяю вас, помогая нам, вы делаете огромную услугу.
Неактивен
Всем здравствуйте! При добавлении картинки с помощью макроса <<pic>> на тесте появляется большой белый крест. Что делать?
Неактивен
George213141 написал:
Всем здравствуйте! При добавлении картинки с помощью макроса <<pic>> на тесте появляется большой белый крест. Что делать?
Исправить путь к картинке.
Неактивен
картинка находится в папке files. причём, когда я создаю пустую игру и вставляю картинку в start, то всё работает.
Неактивен
George213141 написал:
картинка находится в папке files. причём, когда я создаю пустую игру и вставляю картинку в start, то всё работает.
Скопируйте сюда путь к картинке.
Неактивен
George213141 написал:
Всем здравствуйте! При добавлении картинки с помощью макроса <<pic>> на тесте появляется большой белый крест. Что делать?
Крест это процесс захвата объекта кодом, но без возможности вывода его в работу.
Картинка может не соответствовать определённым стандартам. Надо пробовать менять её разрешение и размер.
Для теста попробовать засунуть другую картинку, третью... четвёртую....
Если у всех картинок "КРЕСТИК"
Значит ошибка в прописке кода.
Пробелы, запятые, большие и прописные буквы, а также подмена букв латиницей по раскладки на клавиатуре.
На тесте в компе большая часть ошибок сглаживается. Но на тесте в интернете любой даже самый малый косяк будет выводится ошибкой.
Неактивен
Привет, ребят.
Подскажите, как сделать красную строку, чтобы абзац был похож, ну, на абзац. По идее, за это должно отвечать свойство text-indent, но оно почему-то не работает.
И ещё вопрос. Что мне нужно поправить в параграфе стилей, чтобы ссылки были ссылками, а не кнопками?
Забавный момент, кстати: если бахнуть перед ссылкой макросс <<tab>>, например, то её «кнопочное» оформление перестаёт работать, и она начинает выглядеть так, как мне надо. Но это, разумеется, не решение.
Неактивен
Алиса Кисина написал:
Привет, ребят.
Подскажите, как сделать красную строку, чтобы абзац был похож, ну, на абзац. По идее, за это должно отвечать свойство text-indent, но оно почему-то не работает.
И ещё вопрос. Что мне нужно поправить в параграфе стилей, чтобы ссылки были ссылками, а не кнопками?
Забавный момент, кстати: если бахнуть перед ссылкой макросс <<tab>>, например, то её «кнопочное» оформление перестаёт работать, и она начинает выглядеть так, как мне надо. Но это, разумеется, не решение.
Привет. Чтобы дать ответ, подскажите, с какой версией программы Вы работаете и какой тип игры создаёте? (из тех, которые выбираются по кнопке "Новая")
Неактивен
DoubleDragon написал:
Привет. Чтобы дать ответ, подскажите, с какой версией программы Вы работаете и какой тип игры создаёте? (из тех, которые выбираются по кнопке "Новая")
ASM 6.1, интерактивная история.
Неактивен
DoubleDragon написал:
Алиса Кисина написал:
Привет, ребят.
Подскажите, как сделать красную строку, чтобы абзац был похож, ну, на абзац. По идее, за это должно отвечать свойство text-indent, но оно почему-то не работает.
И ещё вопрос. Что мне нужно поправить в параграфе стилей, чтобы ссылки были ссылками, а не кнопками?
Забавный момент, кстати: если бахнуть перед ссылкой макросс <<tab>>, например, то её «кнопочное» оформление перестаёт работать, и она начинает выглядеть так, как мне надо. Но это, разумеется, не решение.Привет. Чтобы дать ответ, подскажите, с какой версией программы Вы работаете и какой тип игры создаёте? (из тех, которые выбираются по кнопке "Новая")
В этой версии ссылки автоматически превращаются в кнопки, если в строке больше ничего нет. Добавьте в конце и ссылка останется ссылкой. В JS версии можно отдельно создавать ссылки, отдельно кнопки.
Простого способа сделать отступ у абзаца нет. По многим причинам.
Неактивен
Всем привет.
Никак не могу сообразить, как работает функция goto.
Код такой:
if(отношение==10) { goto("Конец1"); } Продолжение параграфа.
Т.е. у меня есть переменная, которую я проверяю в начале каждого абзаца. Если значение переменной достигает 10, игра должны завершиться. Если нет, то продолжается. Но вышеуказанный код не работает. Игра не хочет переходить на параграф "конец1", а продолжает выводить текст текущего параграфа, хотя переменная равна 10.
Версия программы ASM JS beta 7
Отредактировано Alex842 (10.12.2018 16:49)
Неактивен
Alex842 написал:
Всем привет.
Никак не могу сообразить, как работает функция goto.
Код такой:Код:
if(отношение==10) { goto("Конец1"); } Продолжение параграфа.Т.е. у меня есть переменная, которую я проверяю в начале каждого абзаца. Если значение переменной достигает 10, игра должны завершиться. Если нет, то продолжается. Но вышеуказанный код не работает. Игра не хочет переходить на параграф "конец1", а продолжает выводить текст текущего параграфа, хотя переменная равна 10.
Версия программы ASM JS beta 7
Привет, данный форум больше не поддерживается, просьба задавать все вопросы на новом форуме: https://axma.info/forum/
Неактивен