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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

Интерфейсные аддоны (Инструкция)


Гость mehael

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

I used Mehael's discovery to create LibTiogan.lua, found in my WhisperWindow add-on. Reintegrates Alt-Z/EscapeMenu hiding for userMods.

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

  • Ответов 66
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

да я все же исхитрилась - там идет сдвиг от центра либо на +-69 либо +-128 - приходится просто масштабировать этот сдвиг

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

Возможно стоит делать тоже самое что и от нажатия на кнопку "Скрыть все".. так называется помоему..

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

УРА! я смогла подменить стандартные виджеты своим!

Code:
--- найдем виджет системного аддона

local wForm = stateMainForm:GetChildChecked("RollGreedNeed", true)

---getAllChildrensOfWidget("rgn",w)

---rgn:MainPanel

---:MainPanel:RGNPanel02

---:MainPanel:RGNPanel02:ItemIcon02

---:MainPanel:RGNPanel02:ItemName02

---:MainPanel:RGNPanel02:ButtonPass02

---:MainPanel:RGNPanel02:ButtonNeed02

---:MainPanel:RGNPanel02:ButtonGreed02

---:MainPanel:RGNPanel02:Timebar02

local ws = wForm:GetChildChecked("MainPanel", false)

------ set.text = set.widget:GetChildChecked( "ItemName" .. string.format ( "%02d", index ), false )

------ self.panels [ id ] .text:SetVal( "item_name", itemInfo.name )

local index = 1

local name = "ItemName" .. string.format ( "%02d", index )

--- найдем такой виджет внутри

local wItem = wForm:GetChildChecked( name, true )

--- возьмем его родителя

local wtParent = wItem:GetParent()

--- уничтожим виджет

wItem:DestroyWidget()

--- возьмем описание с нашего виджета

local DescEL = wtInput1:GetWidgetDesc() --- запомним описание едит-лайн

--- создадим новый

----stateMainForm:CreateWidgetByDesc( DescEL ):SetName( name )

mainForm:CreateWidgetByDesc( DescEL ):SetName( name )

local wNew = mainForm:GetChildChecked( name, false )

---- присоединим его кродителю

wtParent:AddChild( wNew )

--- выведем инфо об объекте и убедимся что он изменился

exObj("new ItemName", wtParent:GetChildChecked( name, false ) )

exObj - моя библиотечная функция

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

Поздравляю :) Кстати можно расширить окно стандартного аддона и приатачить туда своих кнопок\надписей.. и возможно сделать обратное.

Сейчас я встраиваю в стандартный кастбар иконку-картинку PicCastbar-а.. с возможностью менять текстуры бара.. потому как для повторения оригинального кода мне не хватает функционала ;) кроме того планируется расширение функционала )

PS.: буду пропадать некоторое количество дней..

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

I think should add to AddonManager this code for hiding all addons from Manager.. but now I attach LibTiogan.lua to 1st post..

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

вот с помощью подпрограмм можно все элементы интерфейса посжимать/переместить

Code:

function wtResize( w, dX, dY )

local place = w:GetPlacementPlain()

place.sizeX = place.sizeX + dX

place.sizeY = place.sizeY + dY

w:SetPlacementPlain(place)

end

function wtScale( w, scaleX, scaleY, andChildrens )

local place = w:GetPlacementPlain()

place.posX = math.ceil(place.posX * scaleX)

place.sizeX = math.ceil(place.sizeX * scaleX)

place.highPosX = math.ceil(place.highPosX * scaleX)

place.posY = math.ceil(place.posY * scaleY)

place.sizeY = math.ceil(place.sizeY * scaleY)

place.highPosY = math.ceil(place.highPosY * scaleY)

w:SetPlacementPlain(place)

if andChildrens then

--- всех детишек тоже

for _, wCh in w:GetNamedChildren() do

wtScale( wCh, scaleX, scaleY, andChildrens )

end

end

end

function wtMove( w, shiftX, shiftY, highShiftX, highShiftY )

local place = w:GetPlacementPlain()

place.posX = place.posX + shiftX

place.posY = place.posY + shiftY

if highShiftX then place.highPosX = place.highPosX + highShiftX end

if highShiftY then place.highPosY = place.highPosY + highShiftY end

w:SetPlacementPlain(place)

end

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

и вызов:

Code:
wtScale(stateMainForm,  0.7, 0.8, true)

уменьшит ВСЕ элементы системного интерфейса!!!!

я так себе в TargetsManager сделала!

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

Code:
<BackLayer href="w.(WidgetLayerTiledTexture).xdb#xpointer(/WidgetLayerTiledTexture)" />

не корректно отображаются - короче они не отрегулировались. кто-нибудь знает почему? Может быть надо все делать через:

Code:

<BackLayer href="w.(WidgetLayerSimpleTexture).xdb#xpointer(/WidgetLayerSimpleTexture)" />

а как рамку у поля ввода сделать тогда правильно? которые у меня в AucEDSman есть

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

В общем, LibTiogan у меня не дал никакого эффекта: ни в составе WW/CTT, ни будучи добавленным в другой аддон. Странно, да :(

В обкатываемую версию АМ пока включил следующий код, вроде, работает о_0 Решил зацепиться за состояния формы/панели главного меню. Все-таки вероятность его отключения заметно ниже, чем у чата, т.е. более устойчивый маркер.

Code:
---------------------------------------------------------------------------------------------------

-- SCRIPT_TOGGLE_UI

---------------------------------------------------------------------------------------------------

do

Global( "check", {} )

for _, v in ipairs( stateMainForm:GetNamedChildren() ) do

local widget = v

if next( check ) then break end

for _, v2 in pairs( v:GetNamedChildren() ) do

if next( check ) then break end

for _, v3 in pairs( v2:GetNamedChildren() ) do

if v3:GetName() == "CurrentShard" then

table.insert( check, widget )

table.insert( check, widget:GetChildChecked( "MainPanel", false ) )

break

end

end

end

end

end

---------------------------------------------------------------------------------------------------

common.RegisterEventHandler(

function()

local isVisible = check [ 1 ] :IsVisible() and not check [ 2 ] :IsVisible()

if check [ 3 ]  ~= isVisible then userMods.SendEvent( "SCRIPT_TOGGLE_UI", { visible = isVisible } ); check [ 3 ]  = isVisible; end

end,

"EVENT_SECOND_TIMER"

)

---------------------------------------------------------------------------------------------------

Не флудит событием, кнопку "Скрыть все" можно выкинуть.

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

Tiled textures are meant to be just that, tiles. They are images that are slated and then repeated as the container that holds them gets larger. Making the container smaller just reduces the amount of tiles shown until it just begins to cut the initial image.

Google Translate:

Плиточные текстуры предназначены для только что, плитки. Они изображения, которые намечены, а затем повторяется как контейнер, который держит их становится больше. Создание контейнера меньше только уменьшает количество плитки показано, пока это только начинает резать исходного изображения.

Edit: By the way, widgetsSystem:SetShrinkRatio(.8) does a similar function to your wtScale(stateMainForm, .8, .8, true). I used it in my minor add-on, Shrink, a while ago.

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

Probably not, but it doesn't mess up the positioning of things like the action bar. Same word squashing and such though.

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

widgetsSystem:SetShrinkRatio( 0.8 )

у обычных виджетов этого нету и она весь интерфейс сжимает - причем сжатие еще хуже чем у моего - все едет и не совпадает... может надо совместно их использовать? Тем более что widgetsSystem:SetShrinkRatio() вызывает событие EVENT_UPDATE_SHRINK_RATIO - хотя его может вызывать и наш пользовательский wtScale()

myWidget:SetShrinkRatio( 0.8 ) - вызывает ошибку

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

нет дело не в том, а в том что есть имя у виджета или нет - ведь если виджет без имени на него ссылку никак не получить - поэтому он и не сжимается

причем даже можно у всех виджетов сжедать одно и тоже имя:

Code:
<WidgetPanel>

<Name>wp</Name>

...

поэтому ВСЕ виджеты (и их дети) должны иметь ИМЯ чтобы они корректно сжимались

единственно что я не смогла сжать - это кнопки

Code:
<WidgetButton>

<Name>Button1</Name>

<Header>

<Prototype href="Button/ButtonRegular.Prototype.(WidgetButton).xdb#xpointer(/WidgetButton)" />

</Header>

...

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

нашла форму:

WidgetsManagerForm

Code:

local w = stateMainForm:GetChildUnchecked("WidgetsManagerForm", false)

w:Show(true)

она не высветилась ((

там куча вложенных форм и прочего

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

It's meant to literally be used on widgetsSystem. nothing else.

Google Translate:

Это означает, в буквальном смысле быть использованы на widgetsSystem. больше ничего.

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

I'm still worried about producing things via this methodology, even though we got the "a-OK" from two fronts.

Here's a little taste though;

ao415.jpg

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

Yes, PLATES uses /buffdnd to add drag and drop panels to the BuffInfo add-ons. (has done so since the 18th of Jan.)

My new add-on ActionsMod, not yet on UI9, adds drag and drop panels to the Action Bar slots via /abdnd.

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

Начал открывать для себя чУдный мир стандартных аддонов

Мммм.. у пользовательских аддонов проблемы "Alt+Z", "ESC"?

Паразитируем на стандартных аддонах

1. Ищем стандартный, форма которого удовлетворяет условиям:

Quote:

alignX == 3

alignY == 3

IsVisible == true

2. Находим таких несколько (в скобках приоритет формы)

ContextOvertip (900)

ContextDamageVisualization (1200)

ContextOverlayMap (3200)

ContextBag (4200)

ContextEmotions (6900)

AstralMap (7400)

ContextItemMall (7900)

ну и тд, все перечислять не буду

Итого:

В раздел начальной инициализации своего аддона добавляем, к примеру, строчку:

Code:
stateMainForm:GetChildUnchecked("ContextOverlayMap",false):AddChild(mainForm)

Запускаем свой аддон и радуемся результату :)

Естественно выгрузка/перезагрузка "доноров" во время работы не рекомендуется

Работа со своими виджетами нисколько не изменяется

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

The "AddChild" command acts as a "stealing" mechanic in this case. IE, once you take it away it no longer belongs to the parent that owned it. You're basically kidnapping the stateMainForm's child ContextOverlayMap. So only one add-on could use this. Right?

So instead of "AddChild", just store the Form as a Global and then ask if it is visible, similar to what I did in LibTiogan.lua.

Google Translate:

"AddChild" команда действует как "кража" механика в этом случае. IE, как только вы отнять ее он больше не принадлежит родителя, что он принадлежал. Вы в основном похищение ребенка ContextOverlayMap stateMainForm's. Так только один дополнения могут использовать эту функцию. Правильно?

Таким образом, вместо "AddChild", просто хранить виде Global, а затем спросить, если видно, подобное тому, что я сделал в LibTiogan.lua.

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

Not absolutely clearly. The code line resulted above, is fulfilled 1 time at add-on start.

In it the user form is added by child ContextOverlayMap. More than anything it is not necessary to do.

Such forms it is possible to add a little, different add-ons to 1 parent (for example, I have added DarkDPSMeter and LightDPS children ContextBag - they not bad work together, including DnD)

The code in TiogansEvent, as far as I understand, is fulfilled every second?

Quote:
The "AddChild" command acts as a "stealing" mechanic in this case

I move the form (with all contents) on the form of other add-on

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

Nooo, you just add your widget's mainForm asa child tosome another widget!

So if there is

Map/image

Map/buttons

And that's all you just add another child like

Map/MainForm

and then nothing special happens, but if motherform of Map is hidden all your addon forms are automaticaly hidden too.

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

Quote:

Map/image
Map/buttons

And that's all you just add another child like
Map/MainForm

so that's that
Before
Map/image
Map/buttons
after
Map/image
Map/buttons
Map/MainForm

Quote:
but if motherform of Map is hidden all your addon forms are automaticaly hidden too

That we also wanted to achieve (reaction on "Alt+Z" and "ESC")

Try to make it :)
Ссылка на комментарий
Поделиться на другие сайты

IMO we need some kind of standart here.... Like LibDnD.

I mean, to use one certain addon for this, and, maybe, rename our "mainForm" and store a global var like "MFName" if it's impossible to have two samenamed childs (and if main form's name is needed somewhere outside the addon, idk this yet).

And we should not unload or force hide that addon ever.

Like... ItemMall. It's on top of everything and i think noone will ever care to unload it. What do you think?

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

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

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

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

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

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

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


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

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

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