Есть ли аналог trufigcd , или может кто переписал его на 335?
http://www.c ur s e.com/addons/wow/trufigcd (пробелы убрать)
Есть ли аналог trufigcd , или может кто переписал его на 335?
http://www.c ur s e.com/addons/wow/trufigcd (пробелы убрать)
Последний раз редактировалось Полоумный; 08.07.2015 в 08:06.
>(Alliance)Mushroom<
>(Horde)-Герольд<
С арена спектатра вытащи и не парь себе моск =)
ненашел там такого(
>(Alliance)Mushroom<
>(Horde)-Герольд<
Хорошая идея, в арена спектатре там слишком сложно, долго разбираться в чужом коде, я даже писал разработчику в скайпе. Ему некогда мне помогать. Spell Flash тебе в помощь.
Решил попробовать написать свой с нуля, вот что вышло. Одних иконок мало, добавил и текст. тут используется ScrollFrame и TextString.
Пока не умею менять снизу вверх как у меня, на горизонталь как тут arena_spectator_-_Поиск_в_Google_-_Google_Chrome_2016-01-14_18-33-24.jpg.
Ты трекер аур пытаешься сделать или всплывающий комбат лог?
- - - Updated - - -
Сделай по типу аур на UNIT_SPELLCAST_SUCCIDDED
- - - Updated - - -
А ну да я немного лажанул со спектатром ... Там сервер передает все в виде ивентов , а аддон только "расшифровывает" эти ивенты.
По идее не сложно сделать ... сейчас гляну.
- - - Updated - - -
Изи катка
PHP код:
local anchor = CreateFrame("frame", nil, UIParent)
anchor.unit = "player"
anchor.size = 60
anchor.hold = 4
anchor:SetPoint("CENTER", UIParent, 0, 0)
anchor:SetSize(anchor.size, anchor.size)
local OnUpdate = function(self, elapsed)
self.hold = self.hold - elapsed
if self.hold < 0 then
self:Hide()
else
self:SetAlpha(self.hold)
end
end
local CreateIcon = function(self)
local icon = CreateFrame("frame", nil, self)
icon:Hide()
icon:SetSize(self.size, self.size)
local tex = icon:CreateTexture()
tex:SetAllPoints()
icon.tex = tex
icon.hold = 0
icon.parent = self
icon:SetScript("OnUpdate", OnUpdate)
table.insert(self, icon)
return icon
end
local sort = function(a, b)
if a and b then
return a.hold > b.hold
end
end
local UpdatePosition = function(self)
table.sort(self, sort)
for i = 1, #self do
local icon = self[i]
if not icon then return end
icon:ClearAllPoints()
if i == 1 then
icon:SetPoint("CENTER", self, 0, 0)
else
icon:SetPoint("LEFT", self[i-1], "RIGHT", 2, 0)
end
end
end
local UpdateIcons = function(self, unit, limit, texture)
local index = 1
local icon
for i = 1 , limit do
local tmp = self[i] or CreateIcon(self)
if tmp:IsShown() then
index = index + 1
else
icon = self[index]
end
end
icon.tex:SetTexture(texture)
icon.hold = self.hold
icon:SetAlpha(1)
icon:Show()
UpdatePosition(self)
end
anchor:SetScript("OnEvent", function(self, event, unit, spell, rank)
if unit ~= self.unit then return end
local name, rank, texture = GetSpellInfo(spell, rank)
UpdateIcons(self, unit, 10, texture)
end)
anchor:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
Последний раз редактировалось DreamlØlz; 15.01.2016 в 01:09.
Немного покажу как у меня работает:
Могу задавать время затухания(тут 5), размер, время задержки(5), количество строчек(5), но как сделать сверху вниз, или слева направо, не нашел.
Если убрать текст и повернуть набок, то выйдет 1 в 1 как у тебя. Только строчек кода меньше.
Использую:
UNIT_SPELLCAST_SUCCEEDED
COMBAT_LOG_EVENT_UNFILTERED
SPELL_CAST_START
SPELL_CAST_FAILED только self
SPELL_CAST_SUCCESS - если говорим про лича(trufcdg уже для 6.0.2, то нужно учитывать особенности.) Я заметил парочку.
1) SPELL_AURA_APPLIED пришлось добавить т.к у роги отравление это аура, каст не создаёт.
Возможно есть ещё подобные скилы у других классов.
2) За ДкWorld_of_Warcraft_2016-01-15_07-37-07.jpgWorld_of_Warcraft_2016-01-15_07-36-59.jpg
Хватка, койл, удар смерти создают сразу 2 каста, и соответственно отображает 2 иконки на 1 скастованный спелл. Надо убирать.
{--какой-нибудь блэк лист надо допилить
47632 47633, 49895 --[Лик смерти],
49576, 49560 --[Хватка смерти],
45470, 49924 --[Удар смерти]}
Ну так мой отлично работает.
По поводу строчек кода - во первых с точки зрения нагрузки скрол фрейма работает примерно так же , только шаблон вшит в userdata и не доступен для редактирования луа. Во вторых - у тебя комбат лог ивент , который идет даже в случаях , когда юнита не существует, что дает нагрузку на проц. В третьих С++ часть , которая вшита в userdata не доступна для редактирования через луа - как итог не сможешь изменить направление роста и тд, только стандартный алгоритм.
К стати мой код норм отображает отравление и тд.
alexdubovyck (15.01.2016)
Что он от меня хочет?
World_of_Warcraft_2016-01-16_22-31-34.jpg
Имя себе скрыл: PlayerFrame.name:Hide()PHP код:
local anchor = CreateFrame("frame", nil, UIParent)
anchor.unit = "player"
anchor.size = 22
anchor.hold = 10
anchor:SetPoint("CENTER", PlayerFrame, "CENTER", 5, 24)
anchor:SetSize(anchor.size, anchor.size)
local OnUpdate = function(self, elapsed)
self.hold = self.hold - elapsed
if self.hold < 0 then
self:Hide()
else
self:SetAlpha(self.hold)
end
end
local CreateIcon = function(self)
local icon = CreateFrame("frame", nil, self)
icon:Hide()
icon:SetSize(self.size, self.size)
local tex = icon:CreateTexture()
tex:SetAllPoints()
icon.tex = tex
icon.hold = 0
icon.parent = self
icon:SetScript("OnUpdate", OnUpdate)
table.insert(self, icon)
return icon
end
local sort = function(a, b)
if a and b then
return a.hold > b.hold
end
end
local UpdatePosition = function(self)
table.sort(self, sort)
for i = 1, #self do
local icon = self[i]
if not icon then return end
icon:ClearAllPoints()
if i == 1 then
icon:SetPoint("CENTER", self, 0, 0)
else
icon:SetPoint("LEFT", self[i-1], "RIGHT", 2, 0)
end
end
end
local UpdateIcons = function(self, unit, limit, texture)
local index = 1
local icon
for i = 1 , limit do
local tmp = self[i] or CreateIcon(self)
if tmp:IsShown() then
index = index + 1
else
icon = self[index]
end
end
icon.tex:SetTexture(texture)
icon.hold = self.hold
icon:SetAlpha(1)
icon:Show()
UpdatePosition(self)
end
anchor:SetScript("OnEvent", function(self, event, unit, spell, rank, ...)
if unit ~= self.unit then return end
local name, rank, texture = GetSpellInfo(spell, rank)
UpdateIcons(self, unit, 10, texture)
end)
anchor:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
Таргету: TargetFrameTextureFrameName:Hide()
У тебя большое время показа иконки . Итерация идет от 1 до 10 , а иконок иза большого времени показа хочет создавать больше 10 , тем самым выходя за предел итератора =)PHP код:
local UpdateIcons = function(self, unit, limit, texture)
local index = 1
local icon
for i = 1 , limit do
local tmp = self[i] or CreateIcon(self)
if tmp:IsShown() then
index = index + 1
else
icon = self[index]
end
end
if icon then
icon.tex:SetTexture(texture)
icon.hold = self.hold
icon:SetAlpha(1)
icon:Show()
end
UpdatePosition(self)
end
Т.к у нас local functions
Скрытый текст
то мы можем размножить lua файлик несколько раз для memberparty1, focus, target,(pet, arena1, arena2, ...).
Скрытый текст
Всё сделал, только вот показывать не хочет. Я думаю это из-за огромного количества self. Или self в определённом месте.
Сам UNIT_SPELLCAST_SUCCEEDED дублирует того unita(arg1) который мне нужен.
Скрытый текст
Заменил элементарно anchor.unit = "player" на "focus", "target". Ничего не происходит для target, focus. Показывает только для меня. Как доделать под target, focus, etc... ? подскажи.
Парни, вы меня заинтриговали. я тут сам пытался. но в этом деле я реальный нуб - не получается.. отпишите чем дело то кончилось? у вас получилось под 3.3.5 его интегрировать? и ещё - вы его с нуля писали? или переписывали из других аддонов?