Вопросы по Lua, XML, WoW API.  
Автор Сообщение

0
Сообщение Вопросы по Lua, XML, WoW API.

wit4er писал(а):

А можно ли добавить 2 минутный таймер для БГ?

Можно это:

Код:
local function SafeQueue_Update()
local queued
for i=1, 11 do
local status, _, _, _, _, _, registeredMatch = GetBattlefieldStatus(i)
if registeredMatch == 1 then
if status == "queued" then
queued = true
if not queueTime then
queueTime = GetTime()
end
elseif status == "confirm" then
if queueTime then
SafeQueue_PrintTimeWaited()
queueTime = nil
end
remaining = 0
queue = i
end
break
end
end
if not queued and queueTime then queueTime = nil end
end

 

Заменить на это:

Код:

local function SafeQueue_Update()
local queued
for i=1, 11 do
local status, _, _, _, _, _, registeredMatch = GetBattlefieldStatus(i)
if status == "queued" then
queued = true
if not queueTime then
queueTime = GetTime()
end
break
elseif status == "confirm" then
if queueTime then
SafeQueue_PrintTimeWaited()
queueTime = nil
end
remaining = 0
queue = i
break
end

end
if not queued and queueTime then queueTime = nil end
end

 

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

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

Хз, это близзы что-то не то намутили или с чем это связанно.

 

И еще важная штука, я когда пастил тебе все эти обрезанные версии забыл, что я под свою версию клиента убирал там функцию одну, тебе нужно в функции

local function SafeQueue_Update()

Заменить строку:

for i=1, 11 do

На:

for i=1, GetMaxBattlefieldID() do 

 


А может у меня показывало 40 секунд для рбг потому-что пиратка.. И вошло на него по истечении 40 секунд, потому-что пиратка.



19 мар 2012, 16:41
Профиль



<Имя Говорит Само за Себя>


Сервер: Гордунни
0
Сообщение Вопросы по Lua, XML, WoW API.

Можно вставать в 2 конкретных БГ

или на одно случайное

или на одну арену

а лфд тут причем?

Заменить строку:

 

Цитата:
for i=1, 11 do

На:

for i=1, GetMaxBattlefieldID() do

Спасибо!

Цитата:
А может у меня показывало 40 секунд для рбг потому-что пиратка.. И вошло на него по истечении 40 секунд, потому-что пиратка.

 На РБГ вроде как можно заходить в течение всего матча.



19 мар 2012, 16:50
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Ой фу, какое рбг, это я запарился. Случайное.


Лфд тоже может считатся как одна из очередей, а может и не считатся, не знаю точно.



19 мар 2012, 17:07
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Есть вопрост по Scale объектов.

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

http://www.wowpedia.org/UI_Scale

http://www.wowpedia.org/UI_Coordinates

 

Есть конкретная задача.

На экране есть некоторый объект, и в данный момент меня устраивает его размер.

Но затем возникает необходимость изменить parent этого объекта, а у этого парента другой скейл чем у предведущего парента, и отображаемый размер моего объекта изменяется, потому-что скейл наследуется от парента к чилдрену.

Но наследуется он не путем назначения чилдрену такого-же значения скейла как у его парента, а как множитель, то есть скейл объекта в обоих случаях остается 1, но размер при этом разный.

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

 

Например:

Скейл объекта = 1.1

Скейл парент1 = 1.2

Скейл парент2 = 2

 

На сколько нужно умножить/разделить скейл объекта, что-бы будучи чилдреном парент2 он имел такой-же реальный размер как если-бы был чилдреном парент1.

 

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

 

UPD

Ага, дошло, что-бы отключить зависимость скейла объекта от парента нужно установить объекту скейл равный его скейлу деленому на скейл парента.

Соответственно что-бы сделать то, что я хочу, нужно взять и установить объекту скейл, равный его скейлу деленному на скейл парент2 и умноженный на скейл парент1, и тогда его размер будет прежним.



21 мар 2012, 00:29
Профиль



<Имя Говорит Само за Себя>


Сервер: Гордунни
0
Сообщение Вопросы по Lua, XML, WoW API.

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



21 мар 2012, 01:09
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Цвет текста на фрейме не имеет отношения к фрейму.

Есть объект FontString, у него есть API где есть функция FontString:SetTextColor(red,green,blue,alpha)

То есть что-бы изменить цвет какого-то текста, тебе нужно либо иметь ссылку на объект (FontString) являющийся этим текстом, либо знать его имя (если только он не безымянный).

 

То есть что-бы например поменять цвета текста на всех юнитфреймах нужно найти имена всех этих фонтстрингов, или-же найти способ нахождения ссылок на них.

 


Ну, а дальше, имея этот список объектов, составляем из него таблицу и итерацией по таблице устанавливаем всем объектам один цвет.



21 мар 2012, 01:27
Профиль



<Мёртвая Хватка>


Сервер: Азурегос
2х2: 1766
3х3: 1794
0
Сообщение Вопросы по Lua, XML, WoW API.

вот еще удобный вариант http://www.wowwiki.com/UI_escape_sequences

 



21 мар 2012, 12:28
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Привет. Интересует вопрос, можно ли получить доступ из LUA к вот этому тексту/фрейму: http://goo.gl/Sx7Ze ? Цвет там поменять, или функцию которая тригерится.



29 мар 2012, 21:45
Профиль WWW

0
Сообщение Вопросы по Lua, XML, WoW API.

доброго времени суток!

увожаемые зантоки подскажите пожалуйста как получить информацию о иконке по фрейм_бар 

возможно ли чтото вроде BT4Button1:ПоказатьПутьДоИко() ?

 



30 мар 2012, 06:11
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Bers писал(а):

доброго времени суток!

увожаемые зантоки подскажите пожалуйста как получить информацию о иконке по фрейм_бар 

возможно ли чтото вроде BT4Button1:ПоказатьПутьДоИко() ?

Иконки спеллов можно найти на http://www.wowpedia.org/Portal:Main Например: спелл - Mind Control название иконки - Spell_shadow_shadowworddominate и путь соответственно Interface\\Icons\\Spell_shadow_shadowworddominate

http://www.wowwiki.com/WoWWiki:WoW_Icons/Icon_List

Оно ?



30 мар 2012, 11:09
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

ну... тут нужно получить путь до иконки не для того чтобы насладится ею... а чтобы отследить изменение...

 

скажем в аддоне TellMeWhen

 



30 мар 2012, 13:00
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

RDIFB0 писал(а):

Привет. Интересует вопрос, можно ли получить доступ из LUA к вот этому тексту/фрейму: http://goo.gl/Sx7Ze ? Цвет там поменять, или функцию которая тригерится.

Ты имеешь ввиду стандартный текст боя, который показывает нанесенный урон/исцеление?

Точно уверен, что для него ты можешь поменять шрифт.

Возможно еще добавить там обводку вокруг букв или тень.

 

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

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

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

 

Bers писал(а):

ну... тут нужно получить путь до иконки не для того чтобы насладится ею... а чтобы отследить изменение...

 

скажем в аддоне TellMeWhen

 

 

Что именно ты хочешь определять по изменению иконки, приведи пример.

 

Делается это через хуки функций установки текстуры к текстурам иконок данных фреймов, или через глобальный хук функции установки текстуры к текстуре (но это не ок), и без некоторого опыта программирования тут не обойтись.

 

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



30 мар 2012, 14:19
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

все гораздо сложнее :)

 

есть офгейм совтинка которая умеет читать API клиента и выводить полученные данные скажем в форме текста (в реальном времени)

Грубо говаря нужна для своих разных целей  

 

проблема в том что я хочу сделать простую логику (в моей софтинке) если в 

TellMeWhen_Group1_Icon1 находится к примеру(Interface\\Icons\\Spell_shadow_shadowworddominate)

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

все что касается самого процеса проблем нет 

но как в API сказать выводи путь до иконки в определенном фрейме понять немогу :unknw  

 

тоесть мне нужно чтото простое типо /run print(TellMeWhen_Group1_Icon1:ПутьДоИконки()); увы я неочень знаком с правелами этого языка, пока знаю тока такой метод вывода :unknw  может быть есть чтото вроде ПутьДоИконки(TellMeWhen_Group1_Icon1) ?

весь вики по API и LUA излазил так нечего ненашол ... только все связанное с координатами итдтп



30 мар 2012, 18:47
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Если тебя интересует просто получение пути к иконки в какой-то самим тобой установленный момент времени то нет никаких проблем.

 

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

 

На примере фреймов бартендера4, там каждый фрейм имеет такую структуру:

 

Level 1: BT4Button52 (CheckButton)


Childrens:
BT4Button52Cooldown (Cooldown, Hided)


Regions:
1 BT4Button52Icon (Texture, Visible)
2 BT4Button52Flash (Texture, Hided)
3 BT4Button52FlyoutBorder (Texture, Hided)
4 BT4Button52FlyoutBorderShadow (Texture, Hided)
5 BT4Button52FlyoutArrow (Texture, Hided)
6 BT4Button52HotKey (FontString, Hided)
7 BT4Button52Count (FontString, Visible)
8 BT4Button52Name (FontString, Hided)
9 BT4Button52Border (Texture, Hided)
10 BT4Button52NormalTexture (Texture, Visible)
11 UnnamedObject (Texture, Hided)
12 UnnamedObject (Texture, Visible)
13 UnnamedObject (Texture, Hided)

 

То есть что-бы, к примеру, получить текстурку установленную в кнопку бартендера, находящуюся под твоим курсором мышки можно использовать следующий скрипт:

 

/run print(select(1, GetMouseFocus():GetRegions()):GetTexture())

 

Если нужна текстура какой-то конкретной кнопки бартендера то вместо GetMouseFocus() пиши ее название или ссылку на нее.

 

Но это работает только для бартендера4.

 

Что-бы получать иконки от других фреймов, ты должен разобратся чьим region (какого фрейма) является объект texture в который установлена эта иконка, и на каком месте он стоит среди других регионов этого фрейма.


Ах да, еще у texture может быть имя, тогда зная ее имя ты можешь обращатся к ней по этому имени, т.е. ИмяТекстуры:GetTexture() вернет тебе установленную в нее текстуру.

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



30 мар 2012, 18:59
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Отрицание писал(а):

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

Блин жаль, идея фикс тогда накрылась.

Bers писал(а):

тоесть мне нужно чтото простое типо /run print(TellMeWhen_Group1_Icon1:ПутьДоИконки());

Вродь как-то так /run print(TellMeWhen_Group1_Icon1Icon:GetTexture())



30 мар 2012, 19:06
Профиль WWW

0
Сообщение Вопросы по Lua, XML, WoW API.

Отрицание и RDIFB0 респект вам и уважуха!

 

2 недели гуглил именно это  :]

 

ОГРОМНОЕ СПС!!!



31 мар 2012, 02:50
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Мне нужна штука, которая делала-бы из луа скриптов standalone .exe, нашел srlua, разбираюсь как и что с ним делается, кто-нибуть пробовал делать такое вообще?



31 мар 2012, 14:55
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Хмм, нашел еще несколько самодельных сборщиков, но какие-то они все стремные, походу нужно как-то делать это самому вижуал студию.



31 мар 2012, 16:33
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

Разбираюсь с AceDB, не могу понять как делать дефолтовую дб.

Вот у меня есть некоторая таблица

 

local DefaultDB = {
['profile'] = {
["TestValue1"] = 1,
["TestValue2"] = 2,
["TestValue3"] = 3,
["TestValue4"] = 4,
["DebugMode"] = false,
},
}

 

Где содержится дефолтный каркас по которому создавать все профили, в аддоне первой командой для создания дб используется:

 

DB = LibStub("AceDB-3.0"):New(AddonName..'DB', DefaultDB, true)

 

Но при первом запуске аддона (в смысле удалив файлики сейвед вариаблес из втф) профиль Default создается полностью пустой, ни одно из значений из таблицы в нем не сохраняется.

 

Так-же пробовал после этой первой команды юзать:

 

DB:RegisterDefaults(DefaultDB)
DB:ResetProfile()

 

И все равно значения из моей DefaultDB таблицы не заносятся туда.

 



01 апр 2012, 01:49
Профиль

0
Сообщение Вопросы по Lua, XML, WoW API.

MainMenuBarLeftEndCap:Hide();MainMenuBarRightEndCap:Hide()
MainMenuBarTexture0:Hide()
MainMenuBarTexture1:Hide()
MainMenuBarTexture2:Hide()
MainMenuBarTexture3:Hide()

MainMenuBarLeftEndCap:Hide()
MainMenuBarRightEndCap:Hide()

MainMenuMaxLevelBar0:Hide()
MainMenuMaxLevelBar1:Hide()
MainMenuMaxLevelBar2:Hide()
MainMenuMaxLevelBar3:Hide()

BonusActionBarFrameTexture1:Hide()
BonusActionBarFrameTexture2:Hide()
BonusActionBarFrameTexture3:Hide()
BonusActionBarFrameTexture4:Hide()

Всегда работало, создал аддон. Всегда все ок было, сегодня захожу с этим аддоном 10-15фпс. без него 45-60.

Что сломалось?



01 апр 2012, 02:00
Профиль
Начать новую тему Ответить на тему


Перейти:  

На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.
Рейтинг@Mail.ru