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 |
|
| |
CamilleDaniel | Дата: Понедельник, 05 Октября 2020, 22:36 | Сообщение # 2 |
уже был
Сейчас нет на сайте
| Самый крутой сервис во всем СНГ. Крутая атмосфера, огромные выигрыши и все это Вулкан Платинум игровые. Крутая игрушка, всем советую!
|
|
| |