Большое спасибо.
Может кто нибудь подсобить примером?
Хорошим примером работы со списками хотя бы, я не совсем отчетливо понял, что это такое.
Неактивен
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>>
Неактивен
Что же касается видеоуроков, то их делает Илья Богомолов, ссылки есть в соседней теме.
Также на сайте «Гиперкниги» есть специальный раздел помощи для авторов.
Неактивен