[RMXP] -HtMaL(AG47)- (Test Name)
Ну, тебе право виднее, у меня сложилось впечатление, что игра ближе не к РПГ, а к визуальной новелле. Сейчас, когда уже есть наработки, это звучит даже не как предложение перехода на другой двиг, а просто как мысль удивления!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Набросал небольшой скриптик вывода диалоговых сообщений.
Вывод сообщений:
Соответственно "Greetings" это имя блока.
-1 - параметр.
Если 1-й параметр -1, то выводятся все сообщения блока по очереди.
Если 1-й параметр nil, то выводится случайное сообщение из набора.
Если 1-й параметр -- что-то другое, то выводится сообщение с соответствующим ключом.
Если 1-й параметр циферка которая больше или равна нулю, то выводится сообщение с порядковым номером в списке блока, смотря какая цифра.
Ключ - то, что до знака равно.
Например: "block_name=Greetings"
Ключ - "block_name"
В функцию show_msg ключ передается обязательно в кавычках. Т.к. строка.
Или без кавычек, если как цифра-порядковый номер.
1-й записью каждого блока должно быть:
"block_name=имя блока сообщений"
Под спойлером код. По этой ссылке есть проект с демонстрацией, если нужно.
Возможно код кривоват. Но работать должен.
Раздел "Блоки с сообщениями" (тут задаются блоки сообщений)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Сообщений: 394
- Спасибо получено: 169
Для того, чтобы сделать всё необходимое, мне нужно запускать сообщения из-под конкретной сцены, сделанной на базе Window_Command. К примеру, вот схема выбора блока сообщений:
Но проблема в том, что сообщения из-под сцен не запускаются. Я уже пыталась попробовать запускать их через параллельный коммон-ивент после выбора команды, однако это потерпело неудачу. Твоя схема тоже не возымела действия - она направлена на запуск с игрового поля, но не со скрипта, а сама схема больше напоминает систему скриптовых сокращений запуска диалогов в игре, а не запуска самих сообщений скриптом. Возможно, что ты не до конца меня понял, но это нормально.
А пока - небольшой апдейт скриншотами - обработанная и модифицированная для проекта Scene_Name:
Теперь в проекте можно легко печатать имена при помощи клавиатуры - также этот скрипт поддерживает часть символики, однако существует одна весомая проблема, которая мной не может быть решена - это переход между русской раскладкой и английской. Если найдётся человек, который будет способен доработать эту систему, то я буду очень благодарна.
Проект-HtMaL(AG47)-
NST: Серьёзные недоработки в активном интерфейсе.
PST: Системный сбой. Критическое состояние.
PDT: Анонс маловероятен.
Yin
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Т.е. нужно перенести обработку и обновление диалогового окна в сцену,
код которой под спойлером?
Или сделать отдельную сцену, которая будет отображать сообщения?
Через параллельный ивент сообщения не показываются, т.к. диалоговое окно обрабатывается в Scene_Map, а у вас значение переменной $scene заменяется на Scene_Talk.
Т.е. Scene_Map перестает функционировать.
Также есть такой вариант:
# Отсюда должен запускаться блок 1
$scene = Scene_Map.new
# Вывод сообщений
Насчет переключения раскладки. Возможно смогу чем-то помочь, но нужно взглянуть на код.
Здесь или по почте: lekste@mail.ru
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Сообщений: 394
- Спасибо получено: 169
Т.е. нужно перенести обработку и обновление диалогового окна в сцену,
код которой под спойлером?
Или сделать отдельную сцену, которая будет отображать сообщения?
Рассматривается оба варианта, но второй с точки моего зрения предпочтительнее - однако здесь возникает вопрос в том, способна ли будет написанная система будет гармонировать с модифицированными системами сообщений.
Насчет переключения раскладки. Возможно смогу чем-то помочь, но нужно взглянуть на код.
Само собой:
Здесь используется стандарная схема управления от Близзарда, которая является частью ToA.
Проект-HtMaL(AG47)-
NST: Серьёзные недоработки в активном интерфейсе.
PST: Системный сбой. Критическое состояние.
PDT: Анонс маловероятен.
Yin
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Параметры вывода задаются как в пред. варианте, но передаются при создании SceneMessage.
Например: $scene = Scene_Message.new("Greetings", nil)
Результат: Выведется 1 случайное сообщение из блока "Greetings".
К сожалению, я так и не вспомнил, как отключал очистку карты при смене сцены.
Если вспомню, допишу.
Насчет подсистемы ввода имени.
Как называется система, из которой взят скрипт?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Сообщений: 394
- Спасибо получено: 169
Возможно поздно, но как-то так работает.
Никак не поздно - я всё равно сейчас занята написанием и модификацией интерфейса магазина под небольшой кастомный скрипт. Сегодня посмотрю и проверю работу внутри проекта.
Насчет подсистемы ввода имени.
Как называется система, из которой взят скрипт?
Я не поняла основу вопроса. Этот скрипт полный и включает в себя все системы. Во втором скрипте - система управления и написания сообщений.
Проект-HtMaL(AG47)-
NST: Серьёзные недоработки в активном интерфейсе.
PST: Системный сбой. Критическое состояние.
PDT: Анонс маловероятен.
Yin
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Предлагаю такой вариант:
1) В модуль Input добавляем ассоциативный массив, содержащий символы языка.
Например: KeyRus = {'A' => 'Ф', 'R' => 'К' }
В данном случае, английской букве 'A' соответствует русская 'Ф' и т д.
2) В измененный Scene_Name добавляем функции инициализации и преобразования символа в активный язык:
Здесь, массив @langs содержит идентификаторы доступных языков,
а @active_lang_id указывает номер текущего активного языка.
Функция преобразования в зависимости от активного языка (проверка по идентификатору из массива), заменяет английский символ на, соответствующий ему, символ активного языка.
Если соответствие не найдено (т.е. в данном случае, не найдено соответствие в массиве Input::RusKey), то вернется исходный англ. символ.
В ином случае, вернется соответствующий русский символ.
Таким образом, нет необходимости определять соответствие для всех клавиш, если их значение на текущем языке совпадает с англ. значением.
Например, можно не определять соответствие для "C", т.к. на клавиатуре англ. "С" и русский "С" расположены на одной клавише и не отличаются по внешнему виду.
Также не приходится переопределять спецсимволы такие, как #, $ и т д.
Ну, и добавим комбинацию клавиш для переключения языка.
Для этого добавим следующие строчки в функцию "update".
Например, после:
У меня все.
Надеюсь, помог.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Сообщений: 394
- Спасибо получено: 169
И кодом здесь:
Проект-HtMaL(AG47)-
NST: Серьёзные недоработки в активном интерфейсе.
PST: Системный сбой. Критическое состояние.
PDT: Анонс маловероятен.
Yin
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
на "let = getActiveLangLetter(Input::Key.index(i))".
Таким образом, полученный символ передастся в функцию и, в переменную let
попадет измененный символ.
Про "Больше букв". Так ведь на клавиатуре части русских букв соответствуют
другие символы в англ. разметке.
Думаю, единственная особенность здесь будет в двойном указании соответствия
(для заглавной и строчной буквы)
Например: '>' => 'Ю' '.' => 'ю'
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.


