Guest wander Posted March 13, 2010 Share Posted March 13, 2010 Подскажите, что за событие отвечает за всплывающие подсказки при наведении на предметы? Большое спасибо. Quote Link to comment Share on other sites More sharing options...
SLA Posted March 13, 2010 Share Posted March 13, 2010 Посмотри в аддонах 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, для текстов тултипа... Примерно, так. Quote Link to comment Share on other sites More sharing options...
DarkMaster Posted March 14, 2010 Share Posted March 14, 2010 Увы, <reactionOnPointing>tooltip</reactionOnPointing> работает только для WidgetPanel, или я что то не так делаю *)))) Но получилось только к панельке прикрутить Quote Link to comment Share on other sites More sharing options...
Guest wander Posted March 14, 2010 Share Posted March 14, 2010 Спасибо, это все очень познавательно и пригодится. Но мой вопрос немного о другом. Когда пользователь наводит мышкой на какой-либо предмет всплывает подсказка. Мне надо повесить свой обработчик на это действие. Нашел в справке EVENT_SHOW_ITEMS_INFO, но похоже это не то. Так как при наведении оно не срабатывает. Quote Link to comment Share on other sites More sharing options...
Guest wait Posted March 14, 2010 Share Posted March 14, 2010 SCRIPT_REQUEST_CONTEXT_TOOLTIP с проверкой на params.tooltip == TOOLTIP_ITEM. ну и соотвественно SCRIPT_REQUEST_CONTEXT_COMPARE_TOOLTIP для сравнения предметов. Quote Link to comment Share on other sites More sharing options...
Guest wander Posted March 14, 2010 Share Posted March 14, 2010 Вот спасибо! То, что нужно! PS. Как же ж в Lua после строго типизированных языков непривычно Quote Link to comment Share on other sites More sharing options...
SLA Posted March 14, 2010 Share Posted March 14, 2010 LUA - страна чудес. Мало того, что он не делает разницы между int и float (для меня это было шоком), так в нём ещё и НЕ существует названий переменных -- после интерпретации, они все преврящаются в безымянные ссылки. Вычитал где-то на просторах интернета. EDIT: В том смысле, что нет возможности получить ИМЯ переменной. Quote Link to comment Share on other sites More sharing options...
Guest wander Posted March 14, 2010 Share Posted March 14, 2010 А можно сразу вопрос? Где посмотреть справку по SCRIPT_REQUEST_CONTEXT_TOOLTIP? кроме поля tooltip какие еще поля есть? Quote Link to comment Share on other sites More sharing options...
SLA Posted March 14, 2010 Share Posted March 14, 2010 Все справки здесь: Interface.1.0.03.26.2.zip Quote Link to comment Share on other sites More sharing options...
Guest wander Posted March 14, 2010 Share Posted March 14, 2010 Отпад! Спасибо! Сокровищница Али-Бабы? ) Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted March 14, 2010 Share Posted March 14, 2010 Вообще эта реакция есть только у панельки и кнопки. и у меня панель не отзывалась на 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> записывать? Quote Link to comment Share on other sites More sharing options...
SLA Posted March 14, 2010 Share Posted March 14, 2010 ДА! ) Оно самое! Это полная коллекция всех скриптов игры, до того, как Нивал скомпилировал их в версии 1.0.04, чтобы помешать нам делать наши модификации Quote Link to comment Share on other sites More sharing options...
SLA Posted March 14, 2010 Share Posted March 14, 2010 Для панели, как я понимаю, <reactionOnPointing> пишется ПРЯМО в <WidgetPanel>. Code: <WidgetPanel> ... ... <reactionOnPointing>tooltip</reactionOnPointing> </WidgetPanel> Вот и разобрались, и с кнопками, и с панелями =) Quote Link to comment Share on other sites More sharing options...
Guest Valltron Posted March 14, 2010 Share Posted March 14, 2010 именно так и делал, но реакции на реакцию не было буду пробовать, значит. Кстати, еще различия: для кнопки <ReactionOnPointing> для панельки: <reactionOnPointing> Quote Link to comment Share on other sites More sharing options...
Guest wait Posted March 14, 2010 Share Posted March 14, 2010 Quote: LUA - страна чудес. Мало того, что он не делает разницы между int и float (для меня это было шоком), так в нём ещё и НЕ существует названий переменных -- после интерпретации, они все преврящаются в безымянные ссылки. Вычитал где-то на просторах интернета. EDIT: В том смысле, что нет возможности получить ИМЯ переменной. это верно только для локальных переменных, не для глобальных.а разницы между int & float нет, потому что движок приводит их к double - и работает соотвественно... Quote Link to comment Share on other sites More sharing options...
DarkMaster Posted March 14, 2010 Share Posted March 14, 2010 Вот пример. 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" ), ну и все тоже самое с вызовом тултипа. Quote Link to comment Share on other sites More sharing options...
Recommended Posts