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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

2D - 3D object.AttachWidget2D


icreator

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

по-моему уже давно это не работает вообще:

object.AddToProjected(id, 0)

к тому же в обновлении 2.0.09.10 [8.09.2011] запретили ставить 2Д метки на объекты, которые не отслеживаются в GetProjectedInfo

и вообще 3Д метки с ошибками ставятся на объекты. есть какие мысли по этому поводу?

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

просьба всех заинтересованных отписаться на форуме АО тут:

Форум АО - тема

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

The object.AddToProjected function has always been only available to objects that are recognized by the Detectors. These include astral monsters (look at the add-on AMIT), quest/vendor NPCs, group/raid members, detected devices, so on..

This function has never included enemy/friendly players.

This is due to the projectedInfo being usable to check real ranges.

As for your 2d/3d widget problem, it would seem there is some invisible panel in the way. Perhaps some priority adjustments might fix this?

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

object.AddToProjected(id, 0) - просто все объекты, которые могут быть детектированы и так уже добавлены в Projects. Вызов данной функции ничего не делает ((

кстати теперь на астральных мобах 2D не работает, хотя они есть на карте...

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

AMIT don't work on rus AO!

Error: addon AMIT: UI::LuaObjectAttachWidget2D: this object is not detected by avatar. id: 29539, details: int __cdecl UI::LuaObjectAttachWidget2D(struct lua_State *)

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

Кстати, Айси, чтобы аддон не выдавал ошибки (описание которых я скидывал в откаченной нынче теме) нужно чтобы в функции AddWidget3D параметры autoResizeX, autoResizeY не были оба равны true. Т.е. или рассчет по высоте, или по ширине, или ни то ни другое. Если и то и другое - выдается непонятная ошибка.

Например в TargetsManager\Scripts\GUI2D-as3D.lua 28 строка, функция в которой вызывается AddWidget3D в котором оба параметра равны true.

Кстати что мне стало интересно - может ли параметр minSizeLimit быть больше чем maxSizeLimit? Логически напрашивается ответ "нет", но увеличение виджета при отдалении юнита иногда могло бы быть полезно.

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

Из неудобств я заметил то, что если виджет приаттачить к какому-либо объекту, а потом использовать object.DetachWidget3D( objectId, widget ), после чего попытаться снова приаттачить виджет уже к ДРУГОМУ объекту - виджет будет вести себя точно так же как если бы он был приаттачен сперва к одному, а потом ко второму объекту без использования функции DetachWidget3D.

Кстати в таком случае виджет ведет себя странно, аттачась к объектам из списка в непонятном порядке...

И это ксати вызывает подозрение что функция DetachWidget3D попросту скрывает виджет.

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

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

Короче по поводу 3Д виджетов... Яхереюдорогаяредакция... Больше нет слов...

==

Провел собственные исследования:

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

Славабогу свой Control3DSafe создавать не нужно - есть любезно передоставленый

Находится по адресу : stateMainForm:GetChildUnchecked( "MainAddonMainForm", false ):GetChildChecked("MainScreenControl3D", false)

1. Добавляем в него свой 2Д виджет (AddWidget3D). С параметрами разбирается каждый по своему. За каким сделаны сразу 2 параметра autoResizeX, autoResizeY - опять же знают только дорогие и любимые

2. Хочим повесить метку над обьектом (AttachWidget3D), по вкусу регулируем высоту подвешивания.

3. Хочим убрать нафиг эту метку (DetachWidget3D или даже кардинально DetachAllWidgets3D). Хренас2 - нифига не меняется - как висел - так и продолжает висеть и радовать

4. Хочим повесить на другой обьект - аналогично п.2. Но тут возникает интересная фигня:

а) оба обьекта видны на экране - метка висит на 1-м. Хотя, если они передвигаются - может прыгать от 1 к другому (т.е. исчезает на одном и появляется на другом)

б) виден только 1 из обьектов - висит на нем

в) убегаем нафиг от 1-го обьекта как чтобы он пропал - метка ессно остается висеть на 2-м

Отсюда вывод: DetachWidget3D или ваще не работает или фраза " "Отвязывает" указанный контрол как Widget3D от объекта." криэйторами понимается как то по другому, не так как я, ущербный, думаю

Ах да, еще одна мелочь:

3Д виджеты аттачатся не всегда. Походу есть проверки не влазит ли он в какой нить другой 3Д обьект и вообще будет ли виден игроку. Так к многим девайсам оно не аттачится, к некоторым юнитам тоже (логики не понял)

Если виджет не приаттачился приходит замечательный евент EVENT_CANNOT_ATTACH_WIDGET_3D в котором приходит только ИД обьекта. Догадывася сам че там не приаттачилось и почему... "Попытайся, дорогОй, еще раз, а вдруг получится.."

При этом развешиванием 3Д меток занимается какой то из стандартных аддонов и при этом весьма успешно => приходит куча ивентов EVENT_CANNOT_ATTACH_WIDGET_3D, видимо кому то нужных.... песец...

===

ЗЫ. Ну да, можно ради каждого юнита добавлять 2Д-виджет в 3Д-контрол, аттачить(если не получилось - пробовать снова и снова) и, когда не нужна метка, удалять нафиг обратно (RemoveWidget3D). И так далее для каждого нового обьекта.

Вероятно эта последовательность действий и является правельной работой с 3Д-контролом по мнению любимых и родных

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

  • 1 месяц спустя...

мой первый пост на этом форуме.

я только начал вплотную разбираться с Lua (в частности с АО addons api). захотел кое-что сделать по своему, понадобилось ставить метки. но перечитав темы форума по несколько раз только накопилась куча вопросов (потому как практики написания чего-либо на Луа ноль).

объясните пожалуйста на какие объекты можно сейчас ставить метки (в особенности widget3D), с юнитами все понятно, с устройствами вроде тоже, только не знаю точно какие объекты считаются устройствами.

а также как правильно добавить 2Д-виджет в 3Д-контрол и приатачить его?

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

да DetachWidget3D что-то как-то не работает или странно работает

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

3Д метки развешивает какой-то системный аддон - и на него приходят EVENT_CANNOT_ATTACH_WIDGET_3D

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

смотри аддоны NamePlateBars NamePlateBars2

там норм метки (виджеты) вешаются

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

NamePlateBars2 смотрел, но с одного взгляда не поймешь всего, но я в том не переживаю (потому как Delphi, javascript+html+css+php освоил самостоятельно, с Lua тоже разберусь).

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

- я хочу узнать к чему можно вообще приатачить метку/виджет. в частности к каким объектам относятся квестовые ресурсы (межевые камни, шишки на ЦС и т.п.) а также астральные камни? NamePlateBars2 вешает названия на все устройства что найдет, но перечисленое не относится к ним.

- сейчас возможно вешать метку видную через препятствия?

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

1) Экспериментируй. Астральные камни - тоже "девайсы". Они приходят в EVENT_DEVICE_SPAWNED. Можно ли вешать на них 3Д виджеты - люди говорят что нет, я не пробовал. Еще, говорят, нелзя вешать на сундуки на арене смерти.

2) Нет, нельзя. Можно вешать только 2Д(2д "3д" потому что плоские) виджеты которые параллельны плоскости экрана. Если они будут очень большого размера - их "может быть видно" сквозь препятствия. Например если приаттачить к объекту охрененно большое "солнышко" с лучами то можно будет легко понять где находися объект.

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

Пример:

Code:
local wtControl3D = stateMainForm:GetChildChecked( "MainAddonMainForm", false ):GetChildChecked( "MainScreenControl3D", false )

OurWidget = mainForm:CreateWidgetByDesc(2DWidget:GetWidgetDesc())

local size = {}

size.sizeX = 1

size.sizeY = 1

wtControl3D:AddWidget3D( OurWidget , size, object.GetPos(avatar.GetId()), false, false, 75.0, WIDGET_3D_BIND_POINT_HIGH, 1, 1 )

object.AttachWidget3D( v, wtControl3D, OurWidget , 3 )

OurWidget :Show(true)

Где 2DWidget - это некий 2Д виджет (панель/кнопка/еще че).

Кстати кнопки как-то "не так" аттачатся, т.е. приаттачить кнопку на которую можно будет нажать теперь вроде как нельзя.

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

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

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

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

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

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

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

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

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

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