Суббота, 22 Сентября 2018, 19:31

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Scirra Construct » Получение строки по ID из XML. Диалоги. (Construct 2)
Получение строки по ID из XML. Диалоги.
RikushiДата: Понедельник, 02 Июля 2018, 09:35 | Сообщение # 1
почетный гость
Сейчас нет на сайте
!!! Начало поста в данный момент не актуально, можно даже не читать (15й год). Читаем актуальный вопрос в конце поста.

Приветствую.

В данный момент пытаюсь решить следующую задачу.
Есть xml с некоторым количеством стрингов.

Код

<?xml version="1.0" encoding="windows-1251"?>
<tutor>
<string id='TDialogue_1'>Текст 1</string>
<string id='TDialogue_2'>Текст 2</string>
<string id='TDialogue_3'>Текст 3</string>
</tutor>


Подключаю его к проекту.



Но не могу получить значение конкретной строки.

Пробовал по этому гайду: https://www.scirra.com/tutorials/807/how-to-read-an-xml-and-make-your-game-talk
Но при попытке присвоить тексту xml.StringValue("/tutor/string[@id='TDialogue_1']/text()")
Получаю ошибку, что хмл это не объект.

Пробовал по этому гайду: https://www.scirra.com/tutorials/444/supporting-multiple-languages
Он мне кстати намного больше нравится, за счет использования функи.
Но результат оказался вообще странным, ругается на путь tutor/string, подсвечивая букву N говоря, что это синтаксическая ошибка.

В общем я в недоумении.
Кто-нибудь может решал подобную задачу (добыть конкретную строку)?

Часть 2: Диалоги.

Как лучшим (менее затратным для девелопера) образом реализовать последовательность диалогов (на самом деле монологов)?

Задача:
Есть 4 триггера (читай говорим с 4мя нпц), по достижению персонажем каждого, начинаются диалоги.
На триггере 1 - 4 диалога (4 стринга).
На 2 - 3 диалога.
На 3 - 1.
И на 4 - 4.

Т.е. на тригере 1, появляется диалог с первым стрингом.
Далее после действия (пробел допустим) следующий стринг.
Далее следующий и следующий.

Закрываем. Переходим к следующему тригеру - отображаем следующий диалог из Н строк.

Планировал все это дело делать через переменную (диалог_каунтер).
Т.е.
- Сработал триггер - показали диалог и каунтер ++.
- (Пробел) и (каунтер = 1) - показываем 2й стринг и каунтер ++.
- Пробел и каунтер = 3 - показываем 3й стринг и каунтер ++.
После последнего диалога - обнуляем каунтер.

Какие можно более элегантные и утилитарные решения использовать?
А то боюсь с таким солюшеном можно потом запутаться основательно.

Добавлено (04 августа 2015, 00:38)
---------------------------------------------
О да. И еще в догонку вопрос, как обойти проблемы с кодировкой в xml.
Если просто вывести в виде текста AJAX.LastData, то имеются кракозябры вместо русских символов.
И на windows-1251 и на UTC-8.

Добавлено (04 августа 2015, 00:55)
---------------------------------------------
Все, первый вопрос можно снимать.
Проблема xml.StringValue() была в том, что объект XML был переименован (глупо, тупо, банально).

Проблема кракозябр теперь стоит крайне остро.

Добавлено (04 августа 2015, 01:35)
---------------------------------------------
UPD: Последний вопрос так же снят. Кракозябры побеждены.
Всему виной был кривой текстовый редактор. Саблайм починил проблему.

Добавлено (02 Июля 2018, 08:54)
---------------------------------------------
Вновь встал вопрос по xml.

Как можно получить значение одного параметра xml строки, обратившись к ней по другому значению параметра?
Есть хмл стринга <string id='TMD1' speaker='Player'>Ты кто?</string>.
Обращаюсь к ней по id > XML.StringValue("/string[@id='TDM1']/text()"), чтобы получить значение "Ты кто?".

Как сделать запрос, чтобы получить значение параметра speaker, обращаясь к строке по id?

Было бы очень здорово еслиб кто нибудь ткнул меня в нормальный тутор по xml, с подробно разобранными примерами. Я например, не совсем понимаю, что в данном запросе делает "/text()" и какие бывают альтернативные варианты.

Попробовал так: XML.StringValue("/string[@id='TMD1']/speaker()"), приходит пустая строка.

Добавлено (02 Июля 2018, 09:35)
---------------------------------------------
Как обычно, все решил сам.

XML.StringValue("/string[@id='TMD1']/attribute::speaker()")

Сообщение отредактировал Rikushi - Понедельник, 02 Июля 2018, 08:56
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Scirra Construct » Получение строки по ID из XML. Диалоги. (Construct 2)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2018 Рейтинг