Jump to content
Alloder.pro  about Allods with love 😱
Search In
  • More options...
Find results that contain...
Find results in...

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

Digest April

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

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


Guest wander
 Share

Recommended Posts

Guest wander

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

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

Link to comment
Share on other sites

Посмотри в аддонах 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, для текстов тултипа...

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

Link to comment
Share on other sites

Guest wander

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

Guest wander

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Guest wander

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

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

Link to comment
Share on other sites

Guest Valltron

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

и у меня панель не отзывалась на 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> записывать?

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

Code:
<WidgetPanel>

...

...

<reactionOnPointing>tooltip</reactionOnPointing>

</WidgetPanel>

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

Link to comment
Share on other sites

Guest Valltron

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

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

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

Link to comment
Share on other sites

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

это верно только для локальных переменных, не для глобальных.
а разницы между int & float нет, потому что движок приводит их к double - и работает соотвественно...
Link to comment
Share on other sites

Вот пример.

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" ), ну и все тоже самое с вызовом тултипа.

Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use