Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

Обьединение WString.


Гость jkot

Рекомендуемые сообщения

Code:
wstring_результат = wstring_переменная .. wstring_переменная
в луа обеденение это ".."
Ссылка на комментарий
Поделиться на другие сайты

нет, wstring нельзя так объединять, т.к. это userdata

по моему должна быть специальная команда, которая возвращает объединенную строку... но я не уверен

Ссылка на комментарий
Поделиться на другие сайты

Столкнулся с проблемой

Есть перменная типа WString пытаюсь сравнить с ней какоелибо значение - результат всегда отрецательный, кто подскажет что делать ?

Пример

Code:

   SpellInfo.Name -- WString

   name -- Строка заданная "text"

   if SpellInfo.Name == name then 

       .......

   else

       ........

   end

Пробовал конвертировать с помощью debugCommon.ToWString( "text" ) - вообще не работает, видимо отклучена дебаг библиотека. Пробовал tostring( "text" ) тоже самое.

Есть идеи что может быть не так ?

Ссылка на комментарий
Поделиться на другие сайты

тоже самое. нельзя просто сравнивать wstring. темболее с другими данными.

для сравнения 2х wstring используй common.CompareWString( wstring1, wstring2 )

если строка string у тебя постоянна, то можешь ее записать в текстовом файле и сохраниьт в кодировке UTF-16LE

подключить этот файл к себе: в xdb прописать <TextFileRef href="FILENAME.txt" />

и из скрипта получать уже local text = GetText( "FILENAME" )

и уже text будет иметь тип wstring

и уже сравнивай через CompareWString

примерно так... если что непонятно смотри примеры, смотри апи, мож что накопаешь :) расскажешь.

Как сравнивать разные типы данных я хз :)

Ссылка на комментарий
Поделиться на другие сайты

кстати, "объединение"wstring тем же способом производится

в txt пишем:

Code:
<header color="0xFFCC1111" alignx="center" shadow="1"><rs class="class"> <r name="key"/><r name="value"/></rs></header>

дальше уже устанавливаем готовой строке нужные значение через виджет:

Code:
valuedText:SetVal( "key", wstring1 )

valuedText:SetVal( "value", wstring2 )

Ссылка на комментарий
Поделиться на другие сайты

Блин писец просто работа с текстом и контролами через одно место. Ктонить может полный пример выложить -

1. Вывод сообшения в чат

2. Создать окошко и выводить туда текст в TextView

Ниваловские примеры пестрят вот такими констукциями debugCommon.ToWString( "Hi, all." )

Когда пишеш в коде - это не пашет ! Вот я логики ен вижу нафига это отрубать то ? Зачем! Нада писать нивалу чтоб врубили возможность вот так задавать WString

debugCommon.ToWString( "Hi, all." )

Ссылка на комментарий
Поделиться на другие сайты

debugCommon не работает.

1. group.ChatSay( ... ) строка должна быть Wstring

2. пока не разбирался

Ссылка на комментарий
Поделиться на другие сайты

Самая большая проблема иммено в Wstring *)))) Как ее получить нормальным человеческим способом а не через ж... , тоесть файл *)

Ссылка на комментарий
Поделиться на другие сайты

Quote:
Как ее получить нормальным человеческим способом

никак. как они их обзывают - это "локализованная строка" пишешь набор необходимых строк в txt файлах. строк, заготофок форматов строк...
DebugCommon, я уже говорил, отключено с начала ОБТ (или почти с самого начала. Почему в API все примеры даны с этой конструкцией - я не знаю. видать на столько заняты что сами используют старый API... А нам дали именно свой рабочий, немного лишь урезав и дополнив аддон-функциями.
Ссылка на комментарий
Поделиться на другие сайты

Valltron

Чуть более подробно можно? Как потом "загрузить" этот txt , что-бы с ним потом работать как с valuedText??

ЗЫ: цитата из API: "Правила подстановки одного ValuedText в другой см. в http://intra/wiki/engine/ValuedText"

Ссылка на комментарий
Поделиться на другие сайты

я говорил про wstring, ValuedText это другое.

насчет Valued...

можно создать новый экземпляр, установить ему формат из виджета (или, например из <texts href="" />, через gettext), установить класс, это то что у тебя в тэге <rs class=...> определено, и задать значения параметрам, то что в <r name=...>:

Code:
local valuedText = common.CreateValuedText()

valuedText:SetFormat( mywidget:gettext( "textname" ) )

valuedText:SetClassVal( "color_code", "log_yellow" )

valuedText:SetVal( "value", params.name )

и дальше им пользоваться как тебе нужно.

ах, да, это все теоретически выше писал. код не проверял в работе. сам подправишь что не так

Ссылка на комментарий
Поделиться на другие сайты

Quote:
если строка string у тебя постоянна, то можешь ее записать в текстовом файле и сохраниьт в кодировке UTF-16LE
подключить этот файл к себе: в xdb прописать
и из скрипта получать уже local text = GetText( "FILENAME" )

а можно по-подробнее о подключении текстового файла и получении строки типа WString из него?
в каком xdb надо прописать и как именно? и что собой представляет "FILENAME" ?

я пробовал делать так:
в файле AddonDesc.(UIAddon).xdb прописал среди прочего следующее:
Code:

<texts href="Texts.(UIRelatedTexts).xdb#xpointer(/UIRelatedTexts)" />

создал файл Texts.(UIRelatedTexts).xdb с таким содержимым:
Code:

<?xml version="1.0" encoding="UTF-8" ?>
<UIRelatedTexts>
<items>
<Item>
<name>message1</name>
<resource href="message1.txt" />
</Item>
<Item>
<name>message2</name>
<resource href="message2.txt" />
</Item>
</items>
</UIRelatedTexts>

соответственно, сделал 2 текстовых файла в юникод-кодировке (message1.txt и message2.txt)
в lua-скрипте следующая конструкция:
Code:

local msg1 = GetText( "message1" )
local msg2 = GetText( "message2" )
LogInfo( "parameters: ", msg1, " *** ", msg2 )
        group.ChatWhisper( object.GetName( avatar.GetId() ), msg1 )

то есть по идее, я должен получить 2 строки из файлов, записать их в лог, а также первую строку отправить себе в ПМ. но ничего этого не происходит :(
в чем я ошибся? ( все созданные файлы находятся в одном каталоге - корне аддона )
Ссылка на комментарий
Поделиться на другие сайты

Code:
<header color="0xFFCC1111" alignx="center" shadow="1"><rs class="class"> <r name="key"/><r name="value"/></rs></header>


Скажи, а там где ты добыл этот текст, еще такие есть? И если есть, тогда расскажи уж, как и где добыл. Это ключевая информация для правильной работы с текстами, в выданной документации об этом только пол-намека.

Upd. А, в примерах кое-что есть, хотя и не такое.
Ссылка на комментарий
Поделиться на другие сайты

Имхо, вместо этого:

Code:
local msg1 = GetText( "message1" )

нужно так:

Code:
local msg1 = common.GetAddonRelatedText( "message1" )

Так должно работать.

Ссылка на комментарий
Поделиться на другие сайты

local msg1 = common.GetAddonRelatedText(что тут должно быть?)

А конкретней - Как в msg1 получить строчку : "Hello"

Да так , чтобы эта строчка давала true на common.IsWString(msg1).

Выложите пример пожалуста аддона. Где писалось бы в лог msg1 = "Hello"

И Group.ChatSay(msg1) тоже бы чтобы писал>))

Извините , возможно все было уже написано, но нифига не получается.

Ссылка на комментарий
Поделиться на другие сайты

Не GetText() надо, а common.GetAddonRelatedText(). GetText'а не существует.

В Texts.(UIRelatedTexts).xdb поле "name" - любая строка, не обязательно имя файла. По этой строке и добываешь этот текст.

Ссылка на комментарий
Поделиться на другие сайты

Quote:
local msg1 = common.GetAddonRelatedText(что тут должно быть?)

Здесь должен быть идентификатор текстового ресурса, т.е. некое имя, присвоенное текстовому файлу (в кодировке Юникод) с нужной строкой. Это имя, а также путь к файлу задаются в файле .xdb (описателе текстовых ресурсов), ссылка на этот .xdb файл находится в файле-описателе аддона, в теге "texts".
Quote:
Выложите пример пожалуста аддона. Где писалось бы в лог msg1 = "Hello"
И Group.ChatSay(msg1) тоже бы чтобы писал>))

Прикладываю пример такого аддона :)
Ссылка на комментарий
Поделиться на другие сайты

а никак :)

"объединять" объекты типа WString можно только на этапе вывода, т.е. в том месте где их надо отображать (лог-файл, виджет TextView и т.п.)

msg1, msg2, ..., msgN - это как набор кубиков из которых можно путем перестановки складывать разные фразы, но при этом разломать кубик или скрепить между собой 2 кубика нельзя, не предусмотрено у них креплений :)

Ссылка на комментарий
Поделиться на другие сайты

минимальный аддон

или посмотрите там на второй странице такуюже тему - сцылко похоже покоцанное

Ссылка на комментарий
Поделиться на другие сайты

гдето видел в ихнем коде...

слету не нашел

надо поискать в ихних старых исходниках игры

Ссылка на комментарий
Поделиться на другие сайты

Первое что приходить на ум - сделать ValuedText - сложить в него WString-i и потом взять скомпоновоннаую строку GetText -ом. Шас попробую сам на практике .... отпишу что вышло

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования