- Сообщений: 55
- Спасибо получено: 72
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.
Дневник персонажа
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Насколько я понял, дневник — лишь часть RPG-игры, а не единственная механика.Aiaz Marx пишет: Подобное можно без каких-либо проблем реализовать на других движках. Поищи информацию по интерактивным рассказам. Писать такое на Мейкере дело неблагодарное.
_____________
Добавлено в 10:43:
Из того, что вижу сейчас: команда «Прервать цикл» завершит вообще все повторения, а не только текущее. Я не знаю, что у тебя там после цикла (поэтому мне нужен скриншот), но, скорее всего, там ничего нет — т.е. событие закончится и тут же начнётся заново, заново заменит картинку №1 на My_Diary_Title и т.д.
Скорее всего, тебе нужно не заканчивать цикл, а сделать в начале цикла метку и сделать переход к этой метке. Чтобы закончилось только вот одно повторение цикла, а не весь цикл.
Кроме того, когда закончится повторение, нужно узнать, на какая сейчас страница открыта (ведь без этого мы не узнаем, какую открывать следующей).
Ну и «Завершить выполнение» завершит выполнение только одной итерации. Но ведь у тебя событие автоматически начнётся заново, оно же автозапускаемое. Т.е. надо выключать переключатель 0004:My_Diary перед «Завершить выполнение».
Ещё, вероятно, где-то в цикле надо вставить команду «Ждать 1 кадр», чтобы цикл ожидал ответа игрока.
Или, как вариант, вообще убрать цикл и сделать это одним общим событием, которое перезапускается в начале каждого следующего кадра.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- разбил дневник на 2 события: одно его открывает (и вызывается один раз), второе перелистывает страницы,
- сохранил бы номер страницы в переменную,
- убрал бы цикл, а вместо него использовал бы факт, что событие автозапускаемое (т.е. оно запустится само после того, как закончится).
Я сделал проект-пример:
DiaryTest.zip (1,4 Мб)
Или, если удобнее, вот скриншоты:
Второе событие:
Вот полный код второго события:
@> УСЛОВИЕ: кнопка Вправо нажата
@> Комментарий: Это можно обернуть в доп. условие, проверяющее,
: : открыта ли страница 1
@> УСЛОВИЕ: Переменная [0040:Текущая страница] == 0
@> Переменная: [0040:Текущая страница] = 1
@> Показать картинку: 1, 'My_Diary_1', (0; 0) (0; 0), (100%, 100%), 255, Нормальное
@> Комментарий: Ожидание нужно, потому что игрок без него сразу всё
: : перелистает
@> Ждать: 10 кадров
@> Завершить выполнение
@>
: КОНЕЦ
@> Комментарий: Это можно обернуть в доп. условие, проверяющее,
: : открыта ли страница 2
@> УСЛОВИЕ: Переменная [0040:Текущая страница] == 1
@> Переменная: [0040:Текущая страница] = 2
@> Показать картинку: 1, 'My_Diary_2', (0; 0) (0; 0), (100%, 100%), 255, Нормальное
@> Ждать: 10 кадров
@> Завершить выполнение
@>
: КОНЕЦ
@> Комментарий: Это можно обернуть в доп. условие, проверяющее,
: : открыта ли страница 3
@> УСЛОВИЕ: Переменная [0040:Текущая страница] == 2
@> Переменная: [0040:Текущая страница] = 3
@> Показать картинку: 1, 'My_Diary_3', (0; 0) (0; 0), (100%, 100%), 255, Нормальное
@> Ждать: 10 кадров
@> Завершить выполнение
@>
: КОНЕЦ
@>
: КОНЕЦ
@> УСЛОВИЕ: кнопка Влево нажата
@> УСЛОВИЕ: Переменная [0040:Текущая страница] == 1
@> Переменная: [0040:Текущая страница] = 0
@> Показать картинку: 1, 'My_Diary_Title', (0; 0) (0; 0), (100%, 100%), 255, Нормальное
@> Ждать: 10 кадров
@> Завершить выполнение
@>
: КОНЕЦ
@> УСЛОВИЕ: Переменная [0040:Текущая страница] == 2
@> Переменная: [0040:Текущая страница] = 1
@> Показать картинку: 1, 'My_Diary_1', (0; 0) (0; 0), (100%, 100%), 255, Нормальное
@> Ждать: 10 кадров
@> Завершить выполнение
@>
: КОНЕЦ
@> УСЛОВИЕ: Переменная [0040:Текущая страница] == 3
@> Переменная: [0040:Текущая страница] = 2
@> Показать картинку: 1, 'My_Diary_2', (0; 0) (0; 0), (100%, 100%), 255, Нормальное
@> Ждать: 10 кадров
@> Завершить выполнение
@>
: КОНЕЦ
@>
: КОНЕЦ
@> УСЛОВИЕ: кнопка B нажата
@> Удаление картинки: 1
@> Переключатель: [0005:Дневник открыт] = ВЫКЛ
@> Завершить выполнение
@>
: КОНЕЦ
@> Комментарий: Это событие автоматическое, т.е. оно будет перезапускаться
: : каждый раз, когда никакое другое событие не действует, до
: : тех пор, пока переключатель не ВЫКЛючится.
: :
: : Т.е. цикл не нужен, оно само перезапускается
Если что-то непонятно — спрашивайте.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Демку я посмотрел, большое спасибо) Почти понял. Надо ещё разбираться. Я пока в Мейкере пару месяцев, ещё не всё освоил.
Делаю сразу две игры. Дома на MV, а на работе на VX Ace. Принцип одинаковый, что очень облегчает задачу.
Нижняя часть окна, хотя наверное уже не актуально:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если событий очень много, то можно сделать уменьшение по шагам. Разместить много условий подряд, начаная с самого маленького. Типа, когда игрок нажимает «вправо», делать что-то такое:Event1 пишет: То есть событие может произойти, а может и не произойти, и производные линии происходящего от этого. И наверное я слишком вариативную игру задумал делать)
— Увеличить текущую страницу на 1
— Если текущая страница = 1:
— Если страница 1 доступна, показать её и завершить выполнение;
— иначе увеличить текущую страницу на 1
— Если текущая страница = 2:
— Если страница 2 доступна, показать её и завершить выполнение;
— иначе увеличить текущую страницу на 1
— Если текущая страница = 3:
— Если страница 3 доступна, показать её и завершить выполнение;
— иначе увеличить текущую страницу на 1
...
(Это сработает, только если последняя страница видна всегда. Но можно вместо неё заднюю сторону тетради показывать.)
Ну и аналогичные проверки придётся повторить при нажатии влево:
— Уменьшить текущую страницу на 1
— Если текущая страница = 3:
— Если страница 3 доступна, показать её и завершить выполнение;
— иначе уменьшить текущую страницу на 1
— Если текущая страница = 2:
— Если страница 2 доступна, показать её и завершить выполнение;
— иначе уменьшить текущую страницу на 1
...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
