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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

Создание GUI


Гость Solmir

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

еще интересное замечание - если системный ( ну и видимо пользовательский) аддон выгружен, то его виджеты есть в системе, но они не показываются по :Show():

Code:

userMods.StateUnloadManagedAddon( "RollGreedNeed" )

local w = stateMainForm:GetChildChecked("RollGreedNeed", false)

--- вывести список детей в логфайл

getAllChildrensOfWidget("rgn",w)

w:Show(true)

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

  • 2 недели спустя...

а какие есть теги для реакции, типа

Code:
<reactionOnPointing></reactionOnPointing>

а зачем: <ReactionOnUp>true</ReactionOnUp>

Code:
<Variants>

<Item>

<Reaction>left_click</Reaction>

</Item>

</Variants>

например чтобы была реакция на right_click

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

Почитай 1-й пост темы

Скачай файлик. Там довольно много интересных вещей. Жаль, LUA-код не посмотреть

Quote:
а зачем: <ReactionOnUp>true</ReactionOnUp>

Реагировать можно сразу же после нажатия на кнопку или после ее отжатия.

Этим параметром и устанавливается способ

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

Code:
<Reaction />
<ReactionRightClick />
<reactionDblClick />
<ReactionOnUp>false</ReactionOnUp>
<ReactionOnPointing />
<soundOver href="" />
<soundPress href="" />
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Found another series of defined <rs class=""> tags.

Size8

Size10

Size12

Size14

Size16

Size18

Size20

Size22

Values are used in assigning the chat window sizes, but can be applied as CSS classes in text widgets, via standard definition or SetClassVal. <Size20>Text.</Size20>

Functions better than SetTextScale()

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

ну вот в общем как совместить возможность перетаскивания виджетов (DnD) и возможность чтобы они были прозрачны для мышки

если вы хотите сделать виджет перетаскиваемым, то надо в его описании поставить:

Code:
<TransparentInput>false</TransparentInput>

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

Code:
w = mainForm:GetChildUnchecked("DnDPanel" , false )

DnD:Init( 558, w, w, true )

из библиотеки LibDnD.lua

но если вы хотите чтобы виджет был прозрачен для мышки - чтобы можно было выбирать объекты под окном виджета то надо в описании писать:

Code:
<TransparentInput>false</TransparentInput>

<PickChildrenOnly>true</PickChildrenOnly>

либо

Code:
<TransparentInput>true</TransparentInput>

но тогда такое окно уже мышкой не потаскать по экрану.

поэтому включение и выключение DnD надо делать в коде

инициализация так:

Code:
w = getNamedChild(mainForm, "DnDPanel" , false )

DnD:Init( 558, w, w, true )

local pDnD = w:GetPlacementPlain()

w = W("SetPanel")

local p = w:GetPlacementPlain()

p.posX = pDnD.posX; p.posY = pDnD.posY; w:SetPlacementPlain(p)

и потом включение и выключение с запоминанием положения:

Code:

...

elseif params.sender == "dnd_chk" then

local b = params.widget:GetVariant() == 1

--- поменяем выбор

params.widget:SetVariant( b and 0 or 1)

local wDnD = W("DnDPanel") --- подпрограмма выбора виджета

local wSP = W("SetPanel") --- подпрограмма выбора виджета

local p

if not b then

p = wSP:GetPlacementPlain()

wDnD:SetPlacementPlain(p)

for k in p do p [k] =0 end --- обнулим все

p.alignX = 3; p.alignY = 3

wSP:SetPlacementPlain(p)

wDnD:Show(true)

wDnD:AddChild(wSP)

else

p = wDnD:GetPlacementPlain()

mainForm:AddChild(wSP)

wSP:SetPlacementPlain(p)

PS.place = p

wDnD:Show(false)

end

...

да, еще прозрачности у обоих панелей разная для наглядности

получится примерно так:

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

вод подскажите каким образом в поле вводе EditLine на аукционе цифры позиционируются вправо??

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

This is in WW and ActionsMod. You would have to find out the AlignX CSS class tags, if they exist.

Ex. EditLine:SetGlobalClasses( {[1] = "tip_blue", [2] = "Size14",})

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

If that exists. It would more than likely be a state defined global class variable though. "AlignLeft" and such ideas, I have no idea what it actually is.

Google Translate:

Если это существует. Было бы более чем вероятно, будет состояние, определяемое глобальной переменной класса, хотя. "AlignLeft", и такие идеи, я понятия не имею, что это на самом деле.

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

  • 3 недели спустя...

оказывается функции меняющие цвет виджета

GetBackgroundColor

GetForegroundColor

работают только если заданы ссылки в описании виджета:

Code:
<BackLayer href=""/ >

<FrontLayer href="" />

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

  • 2 недели спустя...

судя по моим раскопкам...

MainPanel.(WidgetPanel).xdb

Code:
  <Forms>

    <Item>

      <Form href="GUI/MainForm.(WidgetForm).xdb#xpointer(/WidgetForm)" />

      <Id>Main</Id>

    </Item>

  </Forms>

  <MainFormId>Main</MainFormId>

В главной форме содержатся все обработчики событий вашего аддона для вложенных виджетов.

то есть если вы свой виджет подсоедините к другому дереву виджетов, имеющих другой MainForm - то отклик на все реакции будут посылаться не в ваши скрипты а в скрипты того аддона, которому принадлежит та mainForm.

Code:
sysWidget:AddChild(myWidget)

Однако если вы подключите к другому дерееву виджетов свою основную форму то все будет нормально

Code:
sysWidget:AddChild(mainForm)
Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

"""Пользовательские аддоны теперь скрываются с экрана по нажатии Alt+Z и при показе главного меню игры. Это работает лишь в случае, если главная форма названа именем аддона."""

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

Фигня полная.

После того, как научились обходиться без этой комбинации, они взяли и наконец то запилили ее

Правда, чегой то рано - еще 3-х лет не прошло, как обещали

SLA придется опять обновлять кучу аддонов :)))

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

Quote:
"Пользовательские аддоны теперь скрываются с экрана по нажатии Alt+Z и при показе главного меню игры. Это работает лишь в случае, если главная форма названа именем аддона."

Ура!!! Наконец-то! :)
Действительно, в аддонах, у которых в MainForm, в <Name>, написано имя аддона, скрываются с экрана, как по Alt+Z, так и при показе меню :)

Quote:
Правда, чегой то рано - еще 3-х лет не прошло, как обещали

Не 3, а всего лишь полтора года =)))

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

На самом деле, до сих пор, это было, мягко говоря, неудобно - нам приходилось прятать аддоны либо AddonManager'ом, либо огромной функцией, которая потенциально ненадёжна, и могла периодически ломаться (LibTiogan однажды поломался).

Quote:
SLA придется опять обновлять кучу аддонов :)))

ОМГ!!! Я после предыдущего патча ещё не все аддоны обновил, и тут, внезапно, 2.0.07!
Буквально завтра-послезавтра, залью все аддоны, в которых до сих пор не исправлен Drag&Drop, а также, аддоны, работающие с бафами (они тоже поломались в 2.0.06). Естественно, везде переименую MainForm'ы. Но СНАЧАЛА, протестирую, как всё это работает в 2.0.07...
Ссылка на комментарий
Поделиться на другие сайты

Quote:
На самом деле, до сих пор, это было, мягко говоря, неудобно - нам приходилось прятать аддоны либо AddonManager'ом, либо огромной функцией, которая потенциально ненадёжна, и могла периодически ломаться (LibTiogan однажды поломался).

Как обычно - мой простейший способ никто не понял и не принял... Кроме icreator
Ссылка на комментарий
Поделиться на другие сайты

Я мог что-то пропустить, но насколько знаю, не все простейшие способы годятся для EU/US версий АО. Поэтому, и появилась LibTiogan.

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

2SLA

Тут Nikon описывал свой метод. Его вполне можно использовать в EU/US версиях, по-моему.

Quote:
Как обычно
о_0 ?!111разраз

Quote:
простейший способ никто не понял и не принял

Не в этом дело.

[cut] Сколько аддонов можно повесить на форму какой-нибудь сумки, например? Нужно будет следить за уникальностью имен виджетов, ведь если используется рекурсивный поиск каждый раз, когда тот или иной виджет нужен (да, я нупЪ и делаю именно так везде, где не важна скорость ): ), а не хранение 100500 ссылок на них, появляется вероятность взять, мягка говоря, не совсем то, что нужно, верно?

А если такой поиск есть и в стандартном скрипте? (не, ну, мало ли :))

Далее, если я эту сумку заменю своей, например, или просто отключу? Аддон просто не будет работать в лучшем случае?

Ну, и в общем, после разделения стандартных и пользовательских на уровне, ммм, "пространств событий" о_0 лично мне не очень-то хочется править/добавлять что-то в их "кишках(-и)", но это уже не столь существенно в сравнении с вышеизложенным, думаю. [/cut]

upd: Эх, нубас. :( Искать нужно только в форме-паразите, и проблем не будет.

Перечитал метод - "претензии" притянуты за уши :) = "способ не понял"

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

Эх, пропустил я, когда-то, это обсуждение... Прочитал. Интересно, метод очень хороший, но всё равно, не самый надёжный, в долгосрочной перспективе. Разработчики умудряются периодически "ломать" даже такие довольно устоявшиеся вещи, на которых работают LibDnD и GetGameLocalization(). Причём, ломают с завидной регулярностью, аж каждые несколько месяцев! Я бы не полагался на то, что какой-то конкретный виджет будет существовать в каком-то встроенном аддоне "вечно". Ну или, если аддон сам будет (при каждом запуске) искать любой подходящий виджет перебором, то всё равно, привязываешься к приоритету найденного виджета, что тоже не очень хорошо, наверное, т.к. если однажды аддону начнёт попадаться другой (новый) виджет, то и приоритет у него будет уже другой. С другой стороны, конечно, согласен, пока других альтернатив не было, такой способ был самым удобным.

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

Еще раз повторюсь:

Quote:
никто не понял

Видимо я не умею обьяснять простые вещи

" Эх, нубас" - искать нужно в mainForm. Удивительно, да?

Сколько аддонов можно заделать детьми? Как то не задумывался. ХЗ. Штук под 100, может больше, может меньше. И даже с одинаковыми именами, как ни странно.

Quote:
Далее, если я эту сумку заменю своей, например, или просто отключу? Аддон просто не будет работать в лучшем случае?

Если ты ее отключишь во время работы, естественно, не увидишь и детей. Выбирай правильного родителя и не отключай че попало.

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

--

"Паразитирование" работает во всех моих текущих аддонах. В русской и американской версиях (2.0.02)

И даже если вдруг завтра выйдет патч, убирающий/заменяющий родителя - мои аддоны будут работать, только без скрытия

Quote:
о_0 ?!111разраз

Напомнить ситуацию со сломаным в 2.0 ДнД?

Тогда SLA "не понял" и предпочел поверить бредням "представителя".

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

В 2.0.06 он снова правил ДнД

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

Quote:
Видимо я не умею обьяснять простые вещи

Или я не в состоянии понимать простые вещи (:

Quote:
проще использовать чужой код, чем разбираться в его работе

Разумеется. Ведь библиотека для того и пишется, чтоб другие имели возможность тупо взять ее и предельно просто использовать частично или полностью весь тот богатый функционал, который она предоставляет. Это отнюдь не означает, что, имея желание или потребность, не стоит разбираться в ее "механике".
Но в целом, с претензией скорее согласен, чем нет.


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

С другой стороны, какой-нибудь специально написанный системный аддон, одна из функций которого - отправка события на сокрытие.
Все! Остальные 100500 аддонов с gui просто подписываются на это событие. В стандартных аддонах может что угодно меняться: приоритеты форм, имена виджетов, их количество, структура, условия видимости и т.п. В случаях таких изменений, если потребуется, достаточно поправить _один_ аддон, и все снова будет замечательно :).

Ровно также необходимо выделять и LibDnD, и GetGameLocalization, и что-то еще, о чем сейчас не вспомнил, в отдельные системные или служебные (называть можно как угодно) аддоны. Такие аддоны вылизывать коллективно (разумеется, если будет коллектив и желание XD) до идела или близкого к этому в быстродействии, устойчивости к ошибкам, совместимости, эффективности использования памяти и т.п.

В конце-концов, это просто удобно для пользователя. Не бежать обновлять 100500 аддонов, "вдруг" переставших работать частично или полностью после каждого мало-мальски крупного обновления, а скачать пару фиксов к служебным аддонам.

ВотЪ. Я так считаю. Опять же, очень так не слабо могу ошибаться. Всегда готов выслушать аргументированную критику ^_____^
Ссылка на комментарий
Поделиться на другие сайты

Quote:
Во-первых, основная функция метода и работоспособность "паразита" целиком и полностью зависят от донора.
Во-вторых, наследуемый приоритет и алгоритм видимости донора.
В-третьих, разрастание кода и потребляемой памяти.

ОК, по пунктам:
1. Именно. Это вообще считаю преимуществом: "кинул и забыл"
2. Доноров больше 100 из них удовлетворяющих условиям и с разным приоритетом достаточно много. К примеру виджеты UnDetector у меня раскиданы по 3-м донорам :))
3. В простейшем случае (без проверок) добавляется 1(одна!) строчка. Если с проверками будет достаточно функции в 3-10 строчек. Ну и, видимо по причине установки нового родителя, потребление памяти возрастает неимоверно... раз в 50, не меньше.
Quote:
С другой стороны, какой-нибудь специально написанный системный аддон, одна из функций которого - отправка события на сокрытие.

Я тебе когда то писал. Повторюсь: ребенок не знает о смене состояния родителя. Если делать ежесекундную проверку - чем этот аддон/модуль будет отличаться от того же LibTiogan?
Quote:
Ровно также необходимо выделять и LibDnD, и GetGameLocalization, и что-то еще, о чем сейчас не вспомнил, в отдельные системные или служебные (называть можно как угодно) аддоны. Такие аддоны вылизывать коллективно (разумеется, если будет коллектив и желание XD) до идела или близкого к этому в быстродействии, устойчивости к ошибкам, совместимости, эффективности использования памяти и т.п.

Наверно правильно будет сделать 1 системный аддон со всеми служебными функциями. По крайней мере новое скрытие пользовательских аддонов в бурговских версиях АО будет еще не скоро

ЗЫ. Попробуй в функцию Init своего AddonManager`а вставить 1 строчку:
Code:
stateMainForm:GetChildUnchecked("ContextBag",false):AddChild(mainForm)

В любое разумное место функции. Только ее одну. И проверить работу
Это не сложно?
В общем то я ее уже приводил в той самой теме. Никто даже не попробовал?
Ссылка на комментарий
Поделиться на другие сайты

Quote:
ОК, по пунктам
Хорошо, согласен.

Quote:
ребенок не знает о смене состояния родителя
А я не утверждал обратного. Более того, сам родитель не знает своего состояния. Вернее, не сообщает о его изменении.

Quote:
делать ежесекундную проверку - чем этот аддон/модуль будет отличаться от того же LibTiogan?
Таймер-то мы можем сделать любой, а по сути - да, не будет отличаться ничем.

Quote:
скрытие пользовательских аддонов в бурговских версиях АО будет еще не скоро

Выход? Использовать твой метод? Вариант.
А если отталкиваться от
Quote:
сделать 1 системный аддон со всеми служебными функциями.
, какое возможно решение?

Quote:
Попробуй в функцию Init
Это не сложно?
Попробовал. Не сложно. Все прекрасно работает, почти: после отключения сумки в логе чисто, после включения не прячутся в меню ни АМ, Лайт :(
Что-то конкретное должен был почерпнуть? Или просто "посмотреть в действии?"
Ссылка на комментарий
Поделиться на другие сайты

Quote:
Попробовал. Не сложно. Все прекрасно работает, почти: после отключения сумки в логе чисто, после включения не прячутся в меню ни АМ, Лайт :(

Quote:
Выбирай правильного родителя и не отключай че попало.

Quote:
Что-то конкретное должен был почерпнуть? Или просто "посмотреть в действии?"

Ответ на этот поток сознания, не?
Quote:
[cut] Сколько аддонов можно повесить на форму какой-нибудь сумки, например? Нужно будет следить за уникальностью имен виджетов, ведь если используется рекурсивный поиск каждый раз, когда тот или иной виджет нужен (да, я нупЪ и делаю именно так везде, где не важна скорость ): ), а не хранение 100500 ссылок на них, появляется вероятность взять, мягка говоря, не совсем то, что нужно, верно?

А если такой поиск есть и в стандартном скрипте? (не, ну, мало ли :))
Далее, если я эту сумку заменю своей, например, или просто отключу? Аддон просто не будет работать в лучшем случае?

Ну, и в общем, после разделения стандартных и пользовательских на уровне, ммм, "пространств событий" о_0 лично мне не очень-то хочется править/добавлять что-то в их "кишках(-и)", но это уже не столь существенно в сравнении с вышеизложенным, думаю. [/cut]

upd: Эх, нубас. :( Искать нужно только в форме-паразите, и проблем не будет.
Перечитал метод - "претензии" притянуты за уши :) = "способ не понял"

Quote:

Quote:
сделать 1 системный аддон со всеми служебными функциями.

какое возможно решение?

Без понятия. Только проверка по таймеру видимости формы любого стандартного визуального аддона.
---
Короче - забей. Все уже давно прошло и никому не надо. Даже мне с тобой
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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