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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

Всплыващие подсказки


Гость wander

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

Подскажите, что за событие отвечает за всплывающие подсказки при наведении на предметы?

Большое спасибо.

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

Посмотри в аддонах AOSimpleCoords и LootInfo. Примерно, так:

В XDB-файле виджета, над которым должна всплывать подсказка:

Code:
<reactionOnPointing>tooltip</reactionOnPointing>

В инициализации скрипта:

Code:
common.RegisterReactionHandler( OnReactionTooltip, "tooltip" )

И, затем, функция, формирующая и показывающая этот тултип. (Впрочем, если он статичный, то лучше заготовить его один раз, ещё при инициализации скрипта, сохранив в глобальную переменную, а из этой функции только показывать его). Выдрано из "AOSimpleCoords":

Code:
function OnReactionTooltip()

local tooltip = {

tooltip = SIMPLE_DESC,

name = common.GetAddonRelatedText( "MyTooltip" ),

desc = common.GetAddonRelatedText( "Tooltip" ),

rect = wtMainPanel:GetRealRect() }

common.SendEvent( "SCRIPT_REQUEST_CONTEXT_TOOLTIP", tooltip ) -- Показывает тултип.

end

Ну и дальше, нужно заготовить эти самые RelatedText, для текстов тултипа...

Примерно, так.

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

Увы, <reactionOnPointing>tooltip</reactionOnPointing> работает только для WidgetPanel, или я что то не так делаю *)))) Но получилось только к панельке прикрутить

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

Спасибо, это все очень познавательно и пригодится. Но мой вопрос немного о другом. Когда пользователь наводит мышкой на какой-либо предмет всплывает подсказка. Мне надо повесить свой обработчик на это действие.

Нашел в справке EVENT_SHOW_ITEMS_INFO, но похоже это не то. Так как при наведении оно не срабатывает.

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

SCRIPT_REQUEST_CONTEXT_TOOLTIP с проверкой на params.tooltip == TOOLTIP_ITEM.

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

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

Вот спасибо! То, что нужно! :)

PS. Как же ж в Lua после строго типизированных языков непривычно :)

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

LUA - страна чудес. Мало того, что он не делает разницы между int и float (для меня это было шоком), так в нём ещё и НЕ существует названий переменных -- после интерпретации, они все преврящаются в безымянные ссылки. Вычитал где-то на просторах интернета. EDIT: В том смысле, что нет возможности получить ИМЯ переменной.

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

А можно сразу вопрос? Где посмотреть справку по SCRIPT_REQUEST_CONTEXT_TOOLTIP?

кроме поля tooltip какие еще поля есть?

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

Вообще эта реакция есть только у панельки и кнопки.

и у меня панель не отзывалась на reactionOnPointing. пришлось юзать кнопку, только там

<reactionOnPointing>REACTION_NAME</reactionOnPointing> нужно вкладывать внутрь <Variants>, получится примерно следующее:

Code:
<Variants>

<Item>

<ReactionOnPointing>tooltip</ReactionOnPointing>

</Item>

</Variants>

далее уже как писалось выше - регистрируем реакцию и пишем обработчик.

минимум это:

Code:
onReaction [ "tooltip" ]  = function( reaction )

    if reaction.active then

        common.SendEvent( "SCRIPT_REQUEST_CONTEXT_TOOLTIP", FillItemsTooltip( reaction.sender ) )

    else

        common.SendEvent( "SCRIPT_HIDE_CONTEXT_TOOLTIP", {} )

    end

end

где FillItemsTooltip( reaction.sender ) это отдельная функция, где задается что писать в тултипе.

А как у тебя панелька срабатывала? куда нужно <reactionOnPointing> записывать?

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

ДА! :)) Оно самое! :)

Это полная коллекция всех скриптов игры, до того, как Нивал скомпилировал их в версии 1.0.04, чтобы помешать нам делать наши модификации :)

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

Для панели, как я понимаю, <reactionOnPointing> пишется ПРЯМО в <WidgetPanel>.

Code:
<WidgetPanel>

...

...

<reactionOnPointing>tooltip</reactionOnPointing>

</WidgetPanel>

Вот и разобрались, и с кнопками, и с панелями =)

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

именно так и делал, но реакции на реакцию не было :( буду пробовать, значит.

Кстати, еще различия: для кнопки <ReactionOnPointing>

для панельки: <reactionOnPointing>

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

Quote:
LUA - страна чудес. Мало того, что он не делает разницы между int и float (для меня это было шоком), так в нём ещё и НЕ существует названий переменных -- после интерпретации, они все преврящаются в безымянные ссылки. Вычитал где-то на просторах интернета. EDIT: В том смысле, что нет возможности получить ИМЯ переменной.

это верно только для локальных переменных, не для глобальных.
а разницы между int & float нет, потому что движок приводит их к double - и работает соотвественно...
Ссылка на комментарий
Поделиться на другие сайты

Вот пример.

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

<WidgetPanel>

<Priority>100</Priority>

<Name>SpellInfo1Bar</Name>

<Children>

</Children>

<BackLayer href="Bar1.(WidgetLayerTiledTexture).xdb#xpointer(/WidgetLayerTiledTexture)" />

<Placement>

<X>

<Align>WIDGET_ALIGN_LOW</Align>

<Size>242</Size>

<Pos>7</Pos>

</X>

<Y>

<Align>WIDGET_ALIGN_LOW</Align>

<Size>18</Size>

<Pos>7</Pos>

</Y>

</Placement>

<reactionOnPointing>GGG1</reactionOnPointing>

</WidgetPanel>

Далее все так же регестрация, common.RegisterReactionHandler( OnDarkDPSMeter_GGG1, "GGG1" ), ну и все тоже самое с вызовом тултипа.

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

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

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

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

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

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

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

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

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

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