Guest mehael Posted January 17, 2011 Share Posted January 17, 2011 Вы хотели поменять текстуры стандартного интерфейса? Скрыть ненужные текстовые строки\кнопки стандартного аддона из своего? Или вы хотели переместить какие-либо элементы и добавить своей, более подробной информации? Что-нибудь такое( дазайн deaderaco ) (Ciuine) Тогда мы идем к вам! Для того чтобы получить ссылку на виджет вам потребуется немного поплясать ) Вся ресурсная иерархия ао - дети детей stateMainForm.. таким образом код: Code: getAllChildrensOfWidget("", stateMainForm)--------------- function getAllChildrensOfWidget(tab,widget) local childrens = widget:GetNamedChildren() for _, w in childrens do local tab1 = tab .. ":" .. w:GetName() LogInfo (tab1) getAllChildrensOfWidget(tab1,w) end end (Рекурсия от icreator)Выведет в mods.txt имена всех MainForm и их детей .. (АО может зависнуть на пару секунд) Узнав имя нужного виджета и его родителей, можно получить ссылку на виджет в переменную: Code: local wtMainForm = stateMainForm:GetChildChecked("LagMeter", false )local wtMainPanel = wtMainForm:GetChildChecked("Frame", false ) wtMainPanel:Show(false) вернет нам в переменную wtMainForm главную форму (mainForm) стандартного аддона LagMeter, а в wtMainPanel - главную панель аддона .. с которой мы можем делать все что душе угодно: менять положение, текстуру, получить ссылку на других детей.. проверять - виден тот или иной элемент или нет(!) и юзать все-все функции для widget.. PROFIT? [add] Quote: Duvodas:"Ответ Коммандора: С нашей стороны в этом никакого криминала нет. Хотите работать с позиционированием и текстурами окон - пожалуйста. Но если благие намерения приведут к чему-нибудь зловредному и разрушающему игру, вы вынудите нас отреагировать." [add] Скрытие элементов аддона по Alt-Z/Esc от Ciuine( аддон WhisperWindow) в прикрепленном файле. [add] Внимание! К сожалению имена виджетов не совпадают в каждой из локализаций File: LibTiogan.zip Quote Link to comment Share on other sites More sharing options...
Guest Kratkiy Posted January 17, 2011 Share Posted January 17, 2011 в аддонах ни ничего ни понимаю, для меня это непонятные буковки и циферки) а вопрос такой, вот например есть у меня текстуры, как мне их в игру то вставить? Quote Link to comment Share on other sites More sharing options...
Guest BRUTIs Posted January 17, 2011 Share Posted January 17, 2011 mehael красава незря я пост создавал ! и сразу к делу можно ли сделать у шамов чтоб инергия пета перетаскивалась ? Quote Link to comment Share on other sites More sharing options...
duvo Posted January 17, 2011 Share Posted January 17, 2011 Quote: как мне их в игру то вставить? Написать аддон Quote Link to comment Share on other sites More sharing options...
duvo Posted January 17, 2011 Share Posted January 17, 2011 Да, можно. Quote Link to comment Share on other sites More sharing options...
duvo Posted January 17, 2011 Share Posted January 17, 2011 Это, конечно, здорово, но меня смущает вот это из пользовательского соглашения: Quote: Ограничения для Пользователей Игры: 18. Пользователям запрещен взлом/попытка взлома программных компонентов и/или перехват данных, поступающих к серверу или от сервера. Любое модифицирование, изменение, декомпиляция, продажа, распространение модифицированных материалов Игры целиком либо по частям. Использование программных ошибок, изменения программного кода, получение несанкционированного доступа к серверу и базе данных Игры. В отдельных случаях Оператор имеет право немедленно приостановить доступ Пользователя к Игре и обратиться в органы внутренних дел для рассмотрения в действиях нарушителя наличия или отсутствия состава преступлений, предусмотренных Уголовным Кодексом Российской Федерации или иными аналогичными законами стран — мест пребывания нарушителя. Не уверен, подпадет ли Quote: Вы хотели поменять текстуры стандартного интерфейса? Скрыть ненужные текстовые строки\кнопки стандартного аддона из своего? Или вы хотели переместить какие-либо элементы? под этот пункт. Quote Link to comment Share on other sites More sharing options...
Ciuine Posted January 17, 2011 Share Posted January 17, 2011 I have to agree with Duvodas on this. Where would this lie under the ToS? Because I just ran this code as a test... Code: local wtMainForm = stateMainForm:GetChildChecked("MainAddonMainForm", false )local children = wtMainForm:GetNamedChildren() for i = 0, GetTableSize( children ) - 1 do local wtChild = children local name = wtChild:GetName() LogInfo(name ) end children = wtMainForm:GetChildChecked("WatermarkRight", false ) children:Show(false) And it turned off something I'm pretty sure they don't want you to turn off. Edit: By the way the list in the NA version is not as pretty as just saying "LagMeter"... 90% of our MainForm's are named.. MainForm. Easier code: Code: local children = stateMainForm:GetNamedChildren()for i = 0, GetTableSize( children ) - 1 do local wtChild = children local name = wtChild:GetName() local children2 = wtChild:GetNamedChildren() for j = 0, GetTableSize( children2 ) - 1 do local wtChild = children2 [j] local name2 = wtChild:GetName() LogInfo(i.." " .. name, " "..j..": " .. name2) end end Quote Link to comment Share on other sites More sharing options...
Ciuine Posted January 17, 2011 Share Posted January 17, 2011 Fine to use, supposedly. Until someone uses it maliciously. Quote Link to comment Share on other sites More sharing options...
Guest mehael Posted January 18, 2011 Share Posted January 18, 2011 Если Quote: Вы хотели поменять текстуры стандартного интерфейса? Скрыть ненужные текстовые строки\кнопки стандартного аддона из своего? Или вы хотели переместить какие-либо элементы? возможно противоречит соглашению .. тогда Quote: Игра "Аллоды Онлайн" позволяет игрокам создавать и использовать собственные дополнения ("моды", "аддоны") пользовательского интерфейса. Дополнения поддерживаются только для режима "внутри игры". Т.е. нельзя изменить функциональность, например, главного меню игры или экранов создания и выбора персонажа. Пользовательские дополнения будут работать только после выбора персонажа и захода им в игру. возможно соглашается? По крайней мере я не вспомню чтобы банили за полезные аддоны .. а если начнут - будет весьма печально. Quote Link to comment Share on other sites More sharing options...
Guest mehael Posted January 18, 2011 Share Posted January 18, 2011 ^^.. I wish that will help us.. Срочно переименовываем свои mainForm? Quote Link to comment Share on other sites More sharing options...
Guest mehael Posted January 18, 2011 Share Posted January 18, 2011 Что я нашел то о_О Quote: Пользовательские дополнения совершенно независимы от оригинальных. Они не могут пользоваться никакими ресурсами оригинальной игры (кроме специально оговоренных) и должны содержать полностью все данные и функциональность. Все пользовательские дополнения должны быть созданы либо "с нуля", либо на основе других пользовательских дополнений и/или отдельных элементов (данных и скриптов). Изменять функциональность и внешний вид оригинальных интерфейсов из пользовательских дополнений нельзя. однако ниже Quote: Для предотвращения конфликтов между оригинальными интерфейсами и пользовательскими дополнениями предоставляется возможность выборочного включения/выключения как тех, так и других из пользовательских дополнений (скриптов). ?? .. .. или это писалось очень давно и не в силе, или где-то есть встроенный AddonManager?? Quote Link to comment Share on other sites More sharing options...
Ciuine Posted January 18, 2011 Share Posted January 18, 2011 I don't know, I spoke to a GM about it on my end and like I said, "they" feel if it doesn't cause any malicious harm then it works out. Immediately after that I installed the mechanics into PLATES for the movement of BuffInfo. Quote Link to comment Share on other sites More sharing options...
icreator Posted January 18, 2011 Share Posted January 18, 2011 большое спасибо за находку! но не все так гладко. например виджет аукциона. например я его нахожу так: Code: Global( "wtSysAuction", nil )... local childrens = stateMainForm:GetNamedChildren() for _, w in childrens do local name = w:GetName() if name == "ContextAuction" then wtSysAuction = w LogInfo(name," enabled:",w:IsEnabled(), " visible:",w:IsVisible() ) ---w:Enable(true) ---w:Show(true) else LogInfo(name ) end end но метод Show не работает пока я ручками не подойду к НПС и не открою аукцион через диалог. После того как аукцион открыт - w:Show(true/false) работает правильно - показывает или скрывает окно. а я хотела бы без общения с НПС открыть окно аукциона автомтически - как только мой персонаж встал рядом с аукционом. как это сделать? и почему окно аукциона не показывается с помощью :Show(true)? Quote Link to comment Share on other sites More sharing options...
icreator Posted January 18, 2011 Share Posted January 18, 2011 посмотреть все вложенные можно так: Code: function getAllChildrensOfWidget(tab,widget) local childrens = widget:GetNamedChildren() for _, w in childrens do local tab1 = tab .. ":" .. w:GetName() LogInfo (tab1) getAllChildrensOfWidget(tab1,w) end end Quote Link to comment Share on other sites More sharing options...
Guest mehael Posted January 18, 2011 Share Posted January 18, 2011 Quote: а я хотела бы без общения с НПС открыть окно аукциона автомтически - как только мой персонаж встал рядом с аукционом. как это сделать? Что-то мне подсказывает - никак.. Быстро просмотрев код аукциона, (насколько понял) могу сказать, что данные о лотах приходят по каким-то закрытым функциям\событиям.. а " открыть окно аукциона автомтически " к сожалению входит в категорию запрещенных автоматизаций.. да?Quote: и почему окно аукциона не показывается с помощью :Show(true)? Код старта аукциона .. Code: --------------------------------------------------------------------------------function GetWidgets() wtMain = mainForm:GetChildChecked( "Main", false ) wtMain:Show( false ) local ClosePanel = wtMain:GetChildChecked( "Close", false ) wtClose = ClosePanel:GetChildChecked( "CornerCross", false ) moneyCurrent = money:CreateFrom( wtMain:GetChildChecked( "Money", false ), "moneyCurrent" ) local widget = wtMain:GetChildChecked( "Header", false ) widget = widget:GetChildChecked( "HeaderText", false ) widget:SetVal( "window_header", GetText( "AuctionHeaderLabel" ) )end-------------------------------------------------------------------------------- похоже нужно еще wtMain:Show( true ) заюзать.. да и все-все элементики(тысячи их) похоже нужно проявлять ручками.PS. к сожалению сейчас технические работы и я не могу быть полностью уверенным в выше сказанном >< Quote Link to comment Share on other sites More sharing options...
duvo Posted January 18, 2011 Share Posted January 18, 2011 Кстати, состояние видимости какой-нибудь стандартной формы/панели можно использовать в качестве маркера отключения интерфейса/перехода в главное меню. Правда, отслеживать это состояние возможно лишь по EVENT_SECOND_TIMER, я так понимаю. Это не есть хорошо. Quote Link to comment Share on other sites More sharing options...
Guest mehael Posted January 18, 2011 Share Posted January 18, 2011 Тоже об этом думал.. Вариант - посылать из addonManager-а событие на скрытие... а EVENT_SECOND_TIMER в одном аддоне мы потерпим? Quote Link to comment Share on other sites More sharing options...
duvo Posted January 18, 2011 Share Posted January 18, 2011 Вопрос: Quote: Вот тема. Хотелось бы получить официальный комментарий. Интересует, разумеется, правомерность модификаций таким образом. Не противоречит ли это пользовательскому соглашению? Ответ Коммандора: Quote: С нашей стороны в этом никакого криминала нет. Хотите работать с позиционированием и текстурами окон - пожалуйста. Но если благие намерения приведут к чему-нибудь зловредному и разрушающему игру, вы вынудите нас отреагировать. Quote Link to comment Share on other sites More sharing options...
duvo Posted January 18, 2011 Share Posted January 18, 2011 Да, разумеется, можно и так все организовать. Но в таком случае понадобится, чтобы каждый пользователь, желающий, чтобы аддоны прятались, должен будет устанавливать АМ, который, может быть, ему и не нужен вовсе о_0 Не хотелось бы что-то навязывать. Кроме того, нужно как-то решить проблему одноименности форм в NA версии. Можно, конечно, перебирать детей каждой формы и искать совпадение, но это как-то "топорно". Quote Link to comment Share on other sites More sharing options...
Guest BRUTIs Posted January 18, 2011 Share Posted January 18, 2011 ГРАЦ эра интэрфэйсов началась ! долой моды ) Quote Link to comment Share on other sites More sharing options...
Guest mehael Posted January 18, 2011 Share Posted January 18, 2011 Моды покруче были А если так сильно хочется шкурок на ао.. надо найти художников и работать вместе.. или написать очень простую пошаговую инструкцию. и надеюсь что SLA покинул нас не надолго... Quote Link to comment Share on other sites More sharing options...
Guest SpiderPig Posted January 18, 2011 Share Posted January 18, 2011 пиши простую инструкцию ) есть очень много умельцев кисти и мыши) Quote Link to comment Share on other sites More sharing options...
SLA Posted January 18, 2011 Share Posted January 18, 2011 Ура! ))) Наконец-то, добрались до модификации встроенных аддонов! ) Quote: и надеюсь что SLA покинул нас не надолго... Конечно ненадолго Завтра буду читать весь форум, и отвечу на все сообщения в личке. Quote Link to comment Share on other sites More sharing options...
icreator Posted January 18, 2011 Share Posted January 18, 2011 пыталась разнести панельки группы так чтобы меж ними увеличить расстояние - получилось успешно, но вот панельки баффов - нет ((( там какйто дурацкий алгоритм выденения панельки под бафы согрупника - номер согрупника и номер панельки постоянно меняются (( вот код для разноса панелек согрупников Code: local wtPlates = stateMainForm:GetChildChecked("Plates", false) local wtParty = wtPlates:GetChildChecked("Party", false) wtParty:Show(true) local shift = 20 local p = wtParty:GetPlacementPlain() --- изначально там было: --- exObj("p", p) ---.alignY = 1{number} ---.sizingY = 0{number} ---.highPosY = 35{number} ---.sizeX = 220{number} ---.sizeY = 345{number} ---.alignX = 0{number} ---.posX = 10{number} ---.sizingX = 0{number} ---.posY = 0{number} ---.highPosX = 0{number} --- делаем выравнивание по вехнему краю и смещаем и делаем шире чтобы влезли все панельки группы p.sizeY = 325 + 5*shift p.alignY = 0 p.highPosY = 0 p.posY = 310 wtParty:SetPlacementPlain(p) --- теперь раздвинем сами панельки согрупников for i = 1, 5 do local wtMember = wtParty:GetChildChecked("Member0".. i, false) ---exObj("place"..i, wtMember:GetPlacementPlain() ) local p = wtMember:GetPlacementPlain() p.alignY = 0 p.highPosY = 0 p.posY = (i-1)*(68+shift) --- изначально сдвиг был 68 wtMember:SetPlacementPlain(p) wtMember:Show(true) end а вот в панельках бафов бардак (( Code: local w = stateMainForm:GetChildChecked("BuffInfoParty", false) ---w:Show(true) local p = w:GetPlacementPlain() ---exObj("buff place", p ) ---Info: addon TargetManager(EDS): buff place.alignY = 0{number} ---Info: addon TargetManager(EDS): buff place.sizingY = 0{number} ---Info: addon TargetManager(EDS): buff place.highPosY = 0{number} ---Info: addon TargetManager(EDS): buff place.sizeX = 200{number} ---Info: addon TargetManager(EDS): buff place.sizeY = 360{number} ---Info: addon TargetManager(EDS): buff place.alignX = 0{number} ---Info: addon TargetManager(EDS): buff place.posX = 232{number} ---Info: addon TargetManager(EDS): buff place.sizingX = 0{number} ---Info: addon TargetManager(EDS): buff place.posY = 320{number} ---Info: addon TargetManager(EDS): buff place.highPosX = 0{number} p.sizeY = 310 + 5*shift p.posY = 300 p.alignY = 0 p.highPosY = 0 w:SetPlacementPlain(p) ---exObj("buff party names", w:GetNamedChildren() ) for i=0,4 do local wtMember = w:GetNamedChildren() local p = wtMember:GetPlacementPlain() exObj("buff ["..i.."] p", p) --- тут у них каждый элемент по своему сдинут и не по списку номеров p.posY = (i-1)*(68+shift) wtMember:SetPlacementPlain(p) wtMember:Show(true) end на самом деле каждая панелька каждый раз меняет свои align например так: Code: Info: addon TargetManager(EDS): change buff [1] p.alignY = 2{number}Info: addon TargetManager(EDS): change buff [1] p.sizingY = 0{number} Info: addon TargetManager(EDS): change buff [1] p.highPosY = 0{number} Info: addon TargetManager(EDS): change buff [1] p.sizeX = 200{number} Info: addon TargetManager(EDS): change buff [1] p.sizeY = 55.599987030029{number} Info: addon TargetManager(EDS): change buff [1] p.alignX = 3{number} Info: addon TargetManager(EDS): change buff [1] p.posX = 0{number} Info: addon TargetManager(EDS): change buff [1] p.sizingX = 0{number} Info: addon TargetManager(EDS): change buff [1] p.posY = -69{number} Info: addon TargetManager(EDS): change buff [1] p.highPosX = 0{number} при изменении группы ее положение тут же меняется и она уже отображет бафы другого согрупника: Code: Info: addon TargetManager(EDS): change buff [1] p.alignY = 2{number}Info: addon TargetManager(EDS): change buff [1] p.sizingY = 0{number} Info: addon TargetManager(EDS): change buff [1] p.highPosY = 0{number} Info: addon TargetManager(EDS): change buff [1] p.sizeX = 200{number} Info: addon TargetManager(EDS): change buff [1] p.sizeY = 55.599987030029{number} Info: addon TargetManager(EDS): change buff [1] p.alignX = 3{number} Info: addon TargetManager(EDS): change buff [1] p.posX = 0{number} Info: addon TargetManager(EDS): change buff [1] p.sizingX = 0{number} Info: addon TargetManager(EDS): change buff [1] p.posY = -138{number} Info: addon TargetManager(EDS): change buff [1] p.highPosX = 0{number} как быть не знаю Quote Link to comment Share on other sites More sharing options...
Guest mehael Posted January 19, 2011 Share Posted January 19, 2011 Старый код.. однако подозреваю что он может быть слишком старым Code: -- Set Placement for n = 1, 5 do -- согрупники for i = 1, 6 do -- количество бафов local strBuffNumber = string.format ( "%02d", i ) local wtPanel = mainForm:GetChildChecked( "BuffMember" .. n, false ) local wtBuff = wtPanel:GetChildChecked( "Buff" .. strBuffNumber , false ) wtBuff:SetName( "Buff" .. strBuffNumber .. n ) local placement = wtBuff:GetPlacementPlain() placement.posX = math.mod( i - 1, BUFFS_SLOTSWIDE ) * 35 placement.posY = math.floor( (i - 1) / BUFFS_SLOTSWIDE ) * 35 wtBuff:SetPlacementPlain( placement ) end end В любом случае алгоритм должен быть расположения бафов ? Придется наблюдать за именами этих баф-виджетов и искать логику.. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.