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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

Спец-символы в LUA


Mesqalito

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

А именно: как вставить перенос строки? Пробовал \r\n, но не работает. Пробовал <br> - тоже не работает)

Кусок кода примерно такой:

Code:
desc = userMods.ToWString("News\r\n<br>" .. userMods.FromWString(news) .. "Description\n" .. userMods.FromWString(desc))

Это модификация к GuildGui1b, файл ScriptGuildGui1b.lua, после строки 552. Хочу сделать тултип, в котором было бы описание гильдии и новость дня(т.к. сейчас новость вообще никаким способом нельзя посмотреть - она обрезается даже в офф. гилд-манагере).

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

Я так понимаю, SetMultiline() и SetWrapText() отвечают за перенос текста у края контейнера, но мне нужно не это. Мне нужен перенос строки в конкретном месте.

Что это вообще за WString такой и почему он не опознает спец символы?

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

try this:

Code:
desc = userMods.ToWString("<html>News<br>" .. userMods.FromWString(news) .. "Description\n" .. userMods.FromWString(desc).."</html>")
Ссылка на комментарий
Поделиться на другие сайты

Carnifex, it doesn't work, as predicted.

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

Code:
desc = userMods.ToWString("NEWS:" .. 

"                                                                                                                                                                                                " ..

userMods.FromWString(news) ..

"                                                                                                                                                                                                " ..

"DESCRIPTION:" .. 

"                                                                                                                                                                                                " ..

userMods.FromWString(desc))

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

But it works in the tooltips of items ingame, and i thought, that are also WStrings.

(In our bad localisation you can sometimes see the html-code of the tooltips, because the gms make mistakes with the html-tags and there you can see the <br/>-tag to).

But if it work, you must start with <html> and end with </html> (try this with multiline set true)

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

Эм, а если так?

Code:
desc = userMods.ToWString(

    string.format(

        "NEWS:\n%s\nDESCRIPTION:\n%s",

        userMods.FromWString(news),

        userMods.FromWString(desc)

    )

)

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

Carnifex говорит, ему приходилось видеть в игре <br/>. Предлагает попробовать <br/>, при том, что весь текст нужно обернуть в <html> и </html>, и выставить multiline true.

Имхо, стоит попробовать.

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

Все это замечательно работет, если писать в лог (Mods.txt)

С TextView, куда походу и надо выводить, не прокатывает

ЗЫ. Может проще править не строчку, а сам файл ресурса? Куда там пишется она. Сделать 2 TextView вместо 1

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

Разница только в использовании string.format вместо конкатенации, но на выходе все равно получается тот же string со спец-символами, которые при конвертировании в WString куда-то теряются.

Ниже писали, возможно, это проблема именно контейнера. Посмотрим, что там SLA намутил с GuildGui1b и если че, буду издеваться над его версией уже :)

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

Работает, гут! По крайней мере, код выглядеть стал чуть-чуть лучше. Но костыль это не отменяет)

В общем, выложишь свою версию, а там посмотрим.

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

Да, чо-т невнимательно первое сообщение прочел и предложил тоже самое о_0

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

Вдогонку.

Возможно ли как то определить ширину строчки?

У Нивала тултипы по ширине разные, в зависимости от текста. Они вручную выставляют или атоматом как то считается?

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

Если я правильно тебя понял, в том же файле дальше по коду:

Code:
local dlina = string.len(userMods.FromWString( desc ))

sizeY = math.ceil (dlina/80) * 25

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

А, не. Немного неправильно выразился

Как узнать (и можно ли вообще) ширину текста в TextView?

Не, конечно, можно тупо заранее посчитать количество символов в txt-шнике которые будут отображаться, потом каждый раз суммировать длину строк во всех текстовых валуях и тех символов, подставлять в формулу...

У меня не стоит ГилдГуи. Как оно себя ведет на разных разрешениях и при разных размерах шрифта? Менять каждый раз формулу?

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

Quote:
Не, конечно, можно тупо заранее посчитать количество символов в txt-шнике


Так и сделано в GuildGui1b, но это ОЧЕНЬ ОЧЕНЬ приблизительный метод. Потому, что все буквы имеют разную ширину - буква щ в три раза шире буквы i. В WinAPI, например, существует специальная функция, которой указываешь строку, шрифт, размер шрифта, и она возвращает числа, ширину и высоту строки в пикселях... Сомневаюсь, что что-то такое есть в АО. Очевидно, тут дело в тегах XBD-файлов. Потому, что Lua-код, формирующий тултип, вообще не занимается такими подсчётами.

Quote:
У меня не стоит ГилдГуи. Как оно себя ведет на разных разрешениях и при разных размерах шрифта?


Да там sizeY = math.ceil (dlina/80) * 25 с огромным запасом место дано, поэтому не обрезается. А вычисление это, вообще, лишнее. Если бы знать, как выглядит XDB контейнера тултипа, то нужно просто сделать нормальный "резиновый" контейнер, и всё.

P.S. Обновление GuildGui1b уже залито :)

P.S. @Vomitus Стоит попробовать то, что предложил Carnifex несколькими постами выше. А то, его дельное предложение осталось незамеченным во вчерашней бурной дискуссии...
Он говорит, в gPotato переводчиками работают гуманитарии, которые, как и положено гуманитариям, при переводе "не замечают" html-тегов, и портят их :)) Так, в игре иногда проскакивают сообщения с "видимыми" html-тегами (в русской версии тоже иногда бывает). И Carnifex видел среди них тег </br>. Возможно, и я тоже видел </br> где-то в АО. Так что, имхо, стоит попробовать предложенный им вариант.
Ссылка на комментарий
Поделиться на другие сайты

Я пробовал с html тегом как и описано - теги выводятся простым текстом. Видимо, нужно(если можно) задать в контейнере тип отображения html вместо текста - может тогда что-то выйдет.

Еще раз вопрос: что собой представляет тип WString? Где можно посмотрет ьего спецификацию?

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

Дело наверно все-таки не в типе строчки, а в том куда ее выводят

Quote:
Строки в формате Unicode - WSTRING. Этот тип подобен строкам с завершающим нулевым байтом, но для каждого символа предусмотрено два байта (wide characters).
Ссылка на комментарий
Поделиться на другие сайты

Знаю, ЗНАЮ КАК !!! =D

Говорил же, Carnifex был прав, когда говорил,что видел <br> в игре!

Хотите верьте, хотите проверьте. Переносом строк можно полюбоваться в аддоне SampleLibDnD, который приаттачен в конце первого сообщения в теме HOW-TO: LibDnD.lua (Библиотека Drag&Drop).

Конечно, контейнер должен быть помечен как Multiline. Ключевой момент - оказывается, <br> должен иметь открывающий и закрывающий теги (!), как будто это "параграф" (<p>) в HTML'е:

Code:
Строка1<br>Строка2</br><br>Строка3</br>

или, абсолютно то же самое, но выглядит аккуратнее:

Code:
<br>Строка1</br><br>Строка2</br><br>Строка3</br>

А теперь, бонус :) <p> тоже работает! Но делает бОльшие расстояния между строками, чем <br>:

Code:
<p>Строка1</p><p>Строка2</p><p>Строка3</p>
Ссылка на комментарий
Поделиться на другие сайты

Чет у меня не получается.

Добавил мультилайн в файл News.(WidgetTextView).xdb(подсмотрел в SampleLibDnD_2010-09-28.zip/Text.(WidgetTextView).xdb):

Code:

<?xml version="1.0" encoding="UTF-8" ?>

<WidgetTextView>

<Name>News</Name>

<Placement>

<X>

<Align>WIDGET_ALIGN_BOTH</Align>

<Pos>95</Pos>

<HighPos>95</HighPos>

</X>

<Y>

<Align>WIDGET_ALIGN_LOW</Align>

<Pos>35</Pos>

<Size>30</Size>

</Y>

</Placement>

<TextStyle>

<multiline>true</multiline>

</TextStyle>

<FormatFileRef href="News.txt" />

<reactionOnPointing>description</reactionOnPointing>

</WidgetTextView>

Содержимое такое:

Code:

userMods.ToWString("<html><p>NEWS:</p>" .. 

string.rep(" ", 400) ..

userMods.FromWString(news) ..

string.rep(" ", 400) ..

"<br>DESCRIPTION:</br>" .. 

string.rep(" ", 400) ..

userMods.FromWString(desc) ..

"</html>")

В итоге html форматирования нет, теги отображаются в чистом виде. Что я не так делаю?

PS Мучаю все тот же GuildGui1b.

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

Нет нет, теги нельзя указывать в самом тексте, иначе они и будут показаны "как есть". Тут есть только два варианта:

а) Вписать теги прямо в TXT-файл,привязанный к этому WidgetTextView, как сделано во всех аддонах.

Например, в файле Description.txt:

<header alignx = "left" fontsize="13"><tip_white><rs class="class"><r name="DESC"/><br><r name="DESC2"/></br></rs></tip_white></header>

В Lua вот так:

wtDescription:SetVal( "DESC", news )

wtDescription:SetVal( "DESC2", desc )

б) Никогда не видел этого в аддонах, но формат WidgetTextView можно задать прямо из Lua, функцией SetFormat():

wtDescription:SetFormat( "<header alignx = \"left\" fontsize=\"13\"><tip_white><rs class=\"class\"><r name=\"DESC\"/></rs></tip_white></header>" )

wtDescription:SetVal( "DESC", news )

wtDescription:SetVal( "DESC2", desc )

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

  • 3 недели спустя...
Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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