| Автор | Сообщение | 
        
	
	
			| 
					
						Daniel
					
					 [11.7]
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.
 
 | 
		
			| 01 апр 2012, 14:24 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						witcher
					
					 [14.3]
					
                 
   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.
ты не там ищешь проблему  скобочка эта на 27 строке вот что творится с фреймами:   
 
 | 
		
			| 01 апр 2012, 14:31 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Отрицание
					
					 [1.8]
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Не совсем понимаю логику, зачем ты делаешь это:   local _, instanceType = IsInInstance()if instanceType == "arena" or "pvp" then
   Выходит, что твой скрипт не будет включатся до тех пор пока ты не войдешь на бг или арену? Но после того как зашел он будет работать везде, и в данжах тоже. Какой в этом смысл?
 
 | 
		
			| 01 апр 2012, 14:39 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						witcher
					
					 [14.3]
					
                 
   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Отрицание писал(а): 
Не совсем понимаю логику, зачем ты делаешь это:   local _, instanceType = IsInInstance()if instanceType == "arena" or "pvp" then
   Выходит, что твой скрипт не будет включатся до тех пор пока ты не войдешь на бг или арену? Но после того как зашел он будет работать везде, и в данжах тоже. Какой в этом смысл? 
возможно, но если их убрать проблема останется
 
 | 
		
			| 01 апр 2012, 14:44 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Отрицание
					
					 [1.8]
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Вообще что этот скрипт должен делать? Окрашивать по классу пати фреймы, убирать некоторый хлам с пати фреймов и менять положение петов для пати? В теории должно работать так   Код: local f = CreateFrame("Frame")f:SetScript("OnEvent",function(self, event)
 for i=1,4
 do
 local v,s,f,p,bar,color;
 if UnitExists("party"..i) then
 f=_G["PartyMemberFrame"..i];
 s=_G["PartyMemberFrame"..i.."Speaker"]:SetAlpha(0);
 v=_G["PartyMemberFrame"..i.."PVPIcon"]:SetAlpha(0);
 bar = _G["PartyMemberFrame"..i.."HealthBar"]
 color = RAID_CLASS_COLORS[select(2,UnitClass(""..i))]
 bar:SetStatusBarColor(color.r,color.g,color.b)
 if UnitExists("partypet"..i) then
 p=_G["PartyMemberFrame"..i.."PetFrame"];
 p:SetPoint("TOPLEFT", f, "TOPLEFT", 23, -43);
 end
 end
 end
 end)
 f:RegisterEvent("PLAYER_ENTERING_WORLD")
 f:RegisterEvent("PARTY_MEMBERS_CHANGED")
 f:RegisterEvent("UNIT_FACTION")
  А все остальное там лишнее. Но можешь еще заодно протестировать так:   Код: local f = CreateFrame("Frame")f:SetScript("OnUpdate",function(self, event)
 for i=1,4
 do
 local v,s,f,p,bar,color;
 if UnitExists("party"..i) then
 f=_G["PartyMemberFrame"..i];
 s=_G["PartyMemberFrame"..i.."Speaker"]:SetAlpha(0);
 v=_G["PartyMemberFrame"..i.."PVPIcon"]:SetAlpha(0);
 bar = _G["PartyMemberFrame"..i.."HealthBar"]
 color = RAID_CLASS_COLORS[select(2,UnitClass(""..i))]
 bar:SetStatusBarColor(color.r,color.g,color.b)
 if UnitExists("partypet"..i) then
 p=_G["PartyMemberFrame"..i.."PetFrame"];
 p:SetPoint("TOPLEFT", f, "TOPLEFT", 23, -43);
 end
 end
 end
 end)
  Но второй вариант это не подходящее для постоянной работы решение, это чисто потестить некоторую возможность, что-бы понять где проблема.  
 
 | 
		
			| 01 апр 2012, 15:04 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						witcher
					
					 [14.3]
					
                 
   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.не работает Скрытый текст 
Message: Interface\AddOns\NeilyoScript\NeilyoScript.lua:513: attempt to index local 'color' (a nil value)Time: 04/01/12 16:21:52
 Count: 408
 Stack: Interface\AddOns\NeilyoScript\NeilyoScript.lua:513: in function <Interface\AddOns\NeilyoScript\NeilyoScript.lua:503>
 Locals: self = <unnamed> {0 = <userdata>
 }
 event = "PARTY_MEMBERS_CHANGED"
 (for index) = 1
 (for limit) = 4
 (for step) = 1
 i = 1
 v = nil
 s = nil
 f = PartyMemberFrame1 {
 0 = <userdata>
 portrait = PartyMemberFrame1Portrait {
 }
 statusSign = -1
 unit = "party1"
 debuffTotal = 0
 statusCounter = 0
 healthbar = PartyMemberFrame1HealthBar {
 }
 menu = <function> defined @Interface\FrameXML\PartyMemberFrame.lua:105
 manabar = PartyMemberFrame1ManaBar {
 }
 phasingIcon = PartyMemberFrame1PhasingIcon {
 }
 unitHPPercent = 1
 threatIndicator = PartyMemberFrame1Flash {
 }
 state = "player"
 myHealPredictionBar = PartyMemberFrame1MyHealPredictionBar {
 }
 noTextPrefix = true
 debuffCountdown = 30
 OnEvent = <function> defined *:OnEvent:1
 numDebuffs = 0
 otherHealPredictionBar = PartyMemberFrame1OtherHealPredictionBar {
 }
 name = PartyMemberFrame1Name {
 }
 }
 p = nil
 bar = PartyMemberFrame1HealthBar {
 0 = <userdata>
 currValue = 152073
 frequentUpdates = true
 textLockable = 1
 forceHideText = false
 cvarLabel = "STATUS_TEXT_PARTY"
 capNumericDisplay = true
 TextString = PartyMemberFrame1HealthBarText {
 }
 zeroText = "цель мертва"
 disconnected = false
 unit = "party1"
 lockShow = 0
 cvar = "partyStatusText"
 }
 color = nil
 (*temporary) = <function> defined =[C]:-1
 (*temporary) = PartyMemberFrame1HealthBar {
 0 = <userdata>
 currValue = 152073
 frequentUpdates = true
 textLockable = 1
 forceHideText = false
 cvarLabel = "STATUS_TEXT_PARTY"
 capNumericDisplay = true
 TextString = PartyMemberFrame1HealthBarText {
 }
 zeroText = "цель мертва"
 disconnected = false
 unit = "party1"
 lockShow = 0
 cvar = "partyStatusText"
 }
 (*temporary) = 2
 (*temporary) = nil
 (*temporary) = nil
 (*temporary) = nil
 (*temporary) = nil
 (*temporary) = "attempt to index local 'color' (a nil value)"
Отрицание писал(а): 
Вообще что этот скрипт должен делать? Окрашивать по классу пати фреймы, убирать некоторый хлам с пати фреймов и менять положение петов для пати? 
Показывает пати фреймы в рейде. Но проблема в том, что просто Show(); не работает как нужно, фреймы могут пропадать, когда игрок садится на машину на острове завоеваний или еще что-нибудь подобное.  
 
 | 
		
			| 01 апр 2012, 15:22 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Отрицание
					
					 [1.8]
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.:Show() работает как нужно, просто фреймы пропадают потому-что где-то в коде близзов к ним применяется :Hide() Можно заблокировать применение :Hide(), но тогда нужно писать свой код который будет скрывать фреймы когда ты не в пати и не в рейде, или-же читать код близзов и разбиратся когда и в связи с чем применяется :Hide() и перехватывать каждый отдельно.
 
 | 
		
			| 01 апр 2012, 20:08 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						witcher
					
					 [14.3]
					
                 
   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Отрицание писал(а): 
:Show() работает как нужно, просто фреймы пропадают потому-что где-то в коде близзов к ним применяется :Hide() Можно заблокировать применение :Hide(), но тогда нужно писать свой код который будет скрывать фреймы когда ты не в пати и не в рейде, или-же читать код близзов и разбиратся когда и в связи с чем применяется :Hide() и перехватывать каждый отдельно. 
Проблему со скрытием фреймов я решил более-менее, но вот с цветом большие проблемы. Он постоянно меняеться на зеленый, иногда даже мелькает очень быстро. 
 
 | 
		
			| 01 апр 2012, 21:27 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						RDIFB0
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Код: color = RAID_CLASS_COLORS[select(2,UnitClass(""..i))]А тут так и задумано, что в функцию передаются цифры, или не ?
 
 | 
		
			| 01 апр 2012, 21:52 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						witcher
					
					 [14.3]
					
                 
   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Вобщем сделал скрипт, за несколько БГ багов не обнаружил, но скорее всего они будут вылезать иногда. Код: 
local f = CreateFrame("Frame")f:RegisterEvent("PLAYER_ENTERING_WORLD")
 f:RegisterEvent("PLAYER_TARGET_CHANGED")
 f:RegisterEvent("PLAYER_FOCUS_CHANGED")
 f:RegisterEvent("PLAYER_GAINS_VEHICLE_DATA")
 f:RegisterEvent("PLAYER_LOSES_VEHICLE_DATA")
 f:RegisterEvent("PLAYER_ENTERING_BATTLEGROUND")
 f:RegisterEvent("PARTY_MEMBERS_CHANGED")
 f:RegisterEvent("PARTY_LEADER_CHANGED")
 f:RegisterEvent("PARTY_LOOT_METHOD_CHANGED")
 f:RegisterEvent("MUTELIST_UPDATE")
 f:RegisterEvent("IGNORELIST_UPDATE")
 f:RegisterEvent("UNIT_FACTION")
 f:RegisterEvent("UNIT_AURA")
 f:RegisterEvent("UNIT_CONNECTION")
 f:RegisterEvent("UNIT_PET")
 f:RegisterEvent("VARIABLES_LOADED")
 f:RegisterEvent("READY_CHECK")
 f:RegisterEvent("READY_CHECK_CONFIRM")
 f:RegisterEvent("READY_CHECK_FINISHED")
 f:RegisterEvent("UNIT_ENTERED_VEHICLE")
 f:RegisterEvent("UNIT_MODEL_CHANGED")
 f:RegisterEvent("UNIT_EXITED_VEHICLE")
 f:RegisterEvent("UNIT_HEALTH")
 f:RegisterEvent("UNIT_MAXHEALTH")
 --f:RegisterEvent("PARTY_MEMBER_ENABLE")
 --f:RegisterEvent("PARTY_MEMBER_DISABLE")
 f:RegisterEvent("UNIT_PHASE");
 f:SetScript("OnEvent",function()
 for i=1,4 do local v,f,p,s,d;
 f=_G["PartyMemberFrame"..i];
 p=_G["PartyMemberFrame"..i.."PetFrame"];
 v=_G["PartyMemberFrame"..i.."PVPIcon"]:SetAlpha(0);
 s=_G["PartyMemberFrame"..i.."Speaker"]:SetAlpha(0);
 d=_G["PartyMemberFrame"..i.."Disconnect"]:SetAlpha(0);
 if UnitExists("party"..i) then
 f:Show();
 if UnitExists("partypet"..i) then
 p:SetPoint("TOPLEFT", f, "TOPLEFT", 23, -43);
 p:SetAlpha(0)end end end
 end)
 
 
 local UnitIsPlayer,UnitPlayerOrPetInParty,
 UnitIsConnected, UnitClass, RAID_CLASS_COLORS =
 UnitIsPlayer, UnitPlayerOrPetInParty, UnitIsConnected,
 UnitClass, RAID_CLASS_COLORS
 local _, class, c
 local function colour(statusbar, unit)
 if UnitIsPlayer(unit) and
 UnitPlayerOrPetInParty(unit) and
 UnitIsConnected(unit) and
 unit == statusbar.unit and
 UnitClass(unit) then
 _, class = UnitClass(unit)
 c = CUSTOM_CLASS_COLORS and
 CUSTOM_CLASS_COLORS[class] or
 RAID_CLASS_COLORS[class]
 statusbar:SetStatusBarColor(c.r, c.g, c.b)
 end
 end
 hooksecurefunc("UnitFrameHealthBar_Update", colour)
 hooksecurefunc("HealthBar_OnValueChanged", function(self)
 colour(self, self.unit)
 end)
 local sb = _G.GameTooltipStatusBar
 local addon = CreateFrame("Frame", "StatusColour")
 addon:RegisterEvent("UPDATE_MOUSEOVER_UNIT")
 addon:SetScript("OnEvent", function()
 colour(sb, "mouseover")
 end)
  
 
 | 
		
			| 01 апр 2012, 21:53 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						witcher
					
					 [14.3]
					
                 
   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Такой вопрос, как самым простым способом реализовать зависимость прозрачности иконки спелла от оставшегося кд. Например есть код Код: USD="UNIT_SPELLCAST_SUCCEEDED";
 OT="OnEvent"; FR="Frame"; RF=CreateFrame; RD="Border"; UE=UnitName GR=RF(FR) GR.c=RF("Cooldown","GAR",GR.t) GR:RegisterEvent(USD) GR.c:SetAllPoints(GR)
 GR:SetPoint("TOPRIGHT",FocusFrame,-1,1) GR:SetSize(22,22)GR.t=GR:CreateTexture(nil,RD) GR.t:SetAllPoints()GR.t:SetTexture("Interface\\Icons\\spell_frost_iceshock")GR:SetScript(OT,function(self,event,...)
 if UE(select(1,...))==UE("player")and select(5,...)==703 then GAR:SetCooldown(GetTime(),23) end end)Мне надо, чтобы например, когда кд не запущен прозрачность была 0.5, а когда кд запустился 1, затем снова 0.5.
 
 | 
		
			| 10 апр 2012, 16:24 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Neopriest
					
					 [2.9]
					
                 
 
					
						
						
 <Школа Хогвартс>
 
       Сервер:
  Страж Смерти
						
							Рейтинг поля боя:  2146
						
							2х2:  1830
							
								3х3:  1969
							
								5х5:  1530
							
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.напишите пожалуйста макрос на изменение размера баффов врага в таргете таргете
 
 | 
		
			| 10 апр 2012, 22:52 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Отрицание
					
					 [1.8]
					
                 
 
					
				   | 
					
						
							1
						
						
					
				   Вопросы по Lua, XML, WoW API.wit4er писал(а): 
Такой вопрос, как самым простым способом реализовать зависимость прозрачности иконки спелла от оставшегося кд. Мне надо, чтобы например, когда кд не запущен прозрачность была 0.5, а когда кд запустился 1, затем снова 0.5. 
  Вот такой вариант:   Код: 
GR = CreateFrame("Frame")GR:SetAlpha(0.5)
 GR.c = CreateFrame("Cooldown", "GAR", GR.t)GR.c:SetAllPoints(GR)
 GR:SetPoint("TOPRIGHT", FocusFrame, -1, 1)
 GR:SetSize(22, 22)
 GR.t = GR:CreateTexture(nil, "Border")GR.t:SetAllPoints()
 GR.t:SetTexture("Interface\\Icons\\spell_frost_iceshock")
 GR:SetScript("OnEvent",function(self, event, ...)if UnitName(select(1, ...)) == UnitName("player") and select(5, ...) == 703 then
 GAR:SetCooldown(GetTime(), 23)
 GR:SetAlpha(1)
 end
 end)
 GR:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
  Будет делать это, но только 1 раз. То есть вначале иконка будет полупрозрачно, после того, как запустилось кд она станет полностью не прозрачной, но по окончании первого кд она не станет снова полупрозрачной, и останется полностью видимой до следующего /reload   А вот что-бы она становилась прозрачной по окончанию кд тебе при старте кд нужно запускать таймер который будет длится столько-же сколько длится кд, и привязывать к этому таймеру соответствующий фрейм, и что-бы по окончанию таймера он сбрасывал альфу в 0.5   Поидее это так:   Код: 
GR = CreateFrame("Frame")GR:SetAlpha(0.5)
 GR.c = CreateFrame("Cooldown", "GAR", GR.t)GR.c:SetAllPoints(GR)
 GR:SetPoint("TOPRIGHT", FocusFrame, -1, 1)
 GR:SetSize(22, 22)
 GR.t = GR:CreateTexture(nil, "Border")GR.t:SetAllPoints()
 GR.t:SetTexture("Interface\\Icons\\spell_frost_iceshock")
 GR:SetScript("OnEvent", function(self, event, ...)if UnitName(select(1, ...)) == UnitName("player") and select(5, ...) == 703 then
 GAR:SetCooldown(GetTime(), 23)
 
 GR:SetAlpha(1)
 GR.elapsed = 0
 GR:SetScript('OnUpdate', function(self, elapsed)
 if self.elapsed > 23 then
 self:SetScript('OnUpdate', nil)
 self:SetAlpha(0.5)
 else
 self.elapsed = self.elapsed + elapsed
 end
 end)
 
 end
 end)
 GR:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
  Правда я не понял смысл твоего скрипта, он зачем-то показывает 23-секундное кд после того как ты поюзал гарроту, какой в этом смысл.
 
 | 
		
			| 11 апр 2012, 00:22 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						witcher
					
					 [14.3]
					
                 
   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Отрицание писал(а):  
  Будет делать это, но только 1 раз. То есть вначале иконка будет полупрозрачно, после того, как запустилось кд она станет полностью не прозрачной, но по окончании первого кд она не станет снова полупрозрачной, и останется полностью видимой до следующего /reload  А вот что-бы она становилась прозрачной по окончанию кд тебе при старте кд нужно запускать таймер который будет длится столько-же сколько длится кд, и привязывать к этому таймеру соответствующий фрейм, и что-бы по окончанию таймера он сбрасывал альфу в 0.5
Этот вариант у меня получался  Спасибо попробую   Отрицание писал(а):  
Правда я не понял смысл твоего скрипта, он зачем-то показывает 23-секундное кд после того как ты поюзал гарроту, какой в этом смысл.
Просто диминишинг 18+5 секунд.   
        
 
 | 
		
			| 11 апр 2012, 00:30 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Отрицание
					
					 [1.8]
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Диминишинг вроде 15-18 секунд, 18 это максимум.
 
 | 
		
			| 11 апр 2012, 00:42 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						witcher
					
					 [14.3]
					
                 
   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Отрицание писал(а): 
Диминишинг вроде 15-18 секунд, 18 это максимум. 
да, но чтобы не подключать специальные библиотеки берут максимальный для простоты
 
 | 
		
			| 11 апр 2012, 00:47 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Отрицание
					
					 [1.8]
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.А, понял, я просто забыл про длительность самой гарроты.
 
 | 
		
			| 11 апр 2012, 00:49 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						xelly
					
					 [1.3]
					
                 
 
					
						
						
 
 
       Сервер:
  Outland
						
							Рейтинг поля боя:  1859
						
							2х2:  2438
							
								3х3:  2441
							
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Возник вопрос, насколько сложно написать аддон, который отображает на абилке время её действия. Допустим есть аддон/cкрипт BuffTracker Lua 
Код: 
bl={57934,73651,5171,51713,5277,2983,74001,31224,13877}bs=21;xb=0;yb=55;br=6;bdr="BORDER"be="UNIT_AURA"cbf=CreateFrame;gi=GetSpellInfo;bm=math.ceil;fm=math.floor;st=STANDARD_TEXT_FONT;function cu(s) return UnitBuff("player",gi(s))end
 function Cb(i,s)local _,_,t3=gi(s)local f=cbf("Frame")f:SetSize(bs,bs)f.t=f:CreateTexture(nil,bdr)f.t:SetAllPoints(true)f.t:SetTexture(t3)f.f=f:CreateFontString(nil,bdr)f.f:SetFont(st,11,"OUTLINE")f.f:SetPoint("BOTTOMRIGHT",0,0)return f;end
 function vb(s,i,row)local b1,_,_,b4=cu(s)local f=_G["B"..i]if b1 then f:Show()f:SetPoint("TOP",PlayerFrame,xb+(bs+2)*bm((row-1)%br),yb-(bs+16)*bm(row/br))if(b4>1)then f.f:SetText(b4)end row=row+1;end return row;end
 function ub()for i,s in ipairs(bl)do local b,_,_,_,_,_,k=cu(s)if b then local vt=fm(k-GetTime())if (vt>=60)then vt=bm(vt/60)_G["B"..i].c:SetText(vt.."m")elseif vt >= 0 then _G["B"..i].c:SetText(vt.."")end end end end
 function Cc(f)f.c=f:CreateFontString(nil,bdr)f.c:SetFont(st,11,"OUTLINE")f.c:SetPoint("CENTER",0,-16)end function db()for i in ipairs(bl)do _G["B"..i]:Hide()end end
 for i,s in ipairs(bl)do _G["B"..i]=Cb(i,s)Cc(_G["B"..i])_G["B"..i]:Hide()end function bb()db()local bw=1;for i,s in ipairs(bl)do bw=vb(s,i,bw)end end bk=cbf("Frame")bk:SetScript("OnEvent",bb)bk:SetScript("OnUpdate",ub)bk:RegisterEvent(be)
/run 
Код: 
/run bl={52127,32734,324,61295,55277,8178,73685,96230} /run bs=30;xb=-360;yb=-140;br=6;bdr="BORDER"be="UNIT_AURA"cbf=CreateFrame;gi=GetSpellInfo;bm=math.ceil;fm=math.floor;st=STANDARD_TEXT_FONT;function cu(s)returnUnitBuff("player",gi(s))end /run functionCb(i,s)local _,_,t3=gi(s)local f=cbf("Frame")f:SetSize(bs,bs)f.t=f:CreateTexture(nil,bdr)f.t:SetAllPoints(true)f.t:SetTexture(t3)f.f=f:CreateFontString(nil,bdr)f.f:SetFont(st,12,"OUTLINE")f.f:SetPoint("BOTTOMRIGHT",0,0)return f;end /run function vb(s,i,row)local b1,_,_,b4=cu(s)local f=_G["B"..i]if b1 then f:Show()f:SetPoint("CENTER",xb+(bs+5)*bm((row-1)%br),yb-(bs+10)*bm(row/br))if(b4>1)then f.f:SetText(b4)end row=row+1;endreturn row;end /run function ub()for i,s in ipairs(bl)dolocal b,_,_,_,_,_,k=cu(s)if b thenlocal vt=fm(k-GetTime())if(vt>=60)then vt=bm(vt/60)_G["B"..i].c:SetText(vt.."m")elseif vt >=0then _G["B"..i].c:SetText(vt.."s")endendendend /run functionCc(f)f.c=f:CreateFontString(nil,bdr)f.c:SetFont(st,12,"OUTLINE")f.c:SetPoint("CENTER",0,-20)endfunction db()for i in ipairs(bl)do _G["B"..i]:Hide()endend /run for i,s in ipairs(bl)do _G["B"..i]=Cb(i,s)Cc(_G["B"..i])_G["B"..i]:Hide()endfunction bb()db()local bw=1;for i,s in ipairs(bl)do bw=vb(s,i,bw)endend bk=cbf("Frame")bk:SetScript("OnEvent",bb)bk:SetScript("OnUpdate",ub)bk:RegisterEvent(be)Он создает новый фрейм и показывает на нем время действия баффа. Нужен аддон наподобии Dominos_Bufftimes.Он ставит таймер "кд" на абилку(бафф), а OmniCC уже допиливает на неё кд в виде текста.Хотелось бы увидеть либо просто кд в виде цифр (без дефолтной анимации таймера), либо просто таймер, а OmniCC сделает кд в виде текста.Ну и реально ли отображать таким же способов время действия дебаффа на таргете.Желательно, чтобы спелы заносились по SpellId Dominos_Bufftimes: #470    
 
 | 
		
			| 17 апр 2012, 16:06 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Отрицание
					
					 [1.8]
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Писать с нуля не очень хочеться, за 5 минут не выйдет, но можно как-то подправить что-то в Dominos_Bufftimes. 
 Но я немного не понял проблему, если ты будешь юзать доминос+Dominos_Bufftimes+омницц, то как будут отображаться эти кд? Если так, как у тебя на картинке, то есть цифры "делает" омницц то спираль кдшки можно скрывать в его опциях. А если кд в виде цифр показывает сам Dominos_Bufftimes без омницц, то что в таком случае будет если поставить омницц, они что будут цифры в 2 слоя показывать?
 
 | 
		
			| 19 апр 2012, 19:30 | 
					
					 | 
	
	
		|  | 
    
	
	
			| 
					
						Genrix
					
					 [4.7]
					
                 
 
					
				   | 
					
						
							0
						
						
					
				   Вопросы по Lua, XML, WoW API.Есть вот такой аддон: Скрытый текст 
Код: 
border = 1 -- Aura Borderspacing = 1 -- Buff Spacing
 --buffs
 b_growthvertical = 1 -- Growth Direction. 1 = down, 2 = up
 b_growthhorizontal = 1 -- Growth Direction. 1 = left, 2 = right
 buffsperrow = 4 -- Buffs Per Rowbuttonsize = 22 -- Buff Size
 --debuffs
 d_growthvertical = 2 -- Growth Direction. 1 = down, 2 = up
 d_growthhorizontal = 1 -- Growth Direction. 1 = left, 2 = right
 debuffsperrow = 5 -- DeBuffs Per Rowdebuffsize = 22 -- Debuff Size
 b_stackfontsize = 12b_durafontsize = 7
 d_stackfontsize = 12d_durafontsize = 7
 font = "Fonts\\DORISPP.TTF" -- Default Spawn Positionslocal positions = {
 [1] = { p = "TOPRIGHT", a = UIParent, x = 0, y = -10 }, -- Buff Anchor
 [2] = { p = "TOPRIGHT", a = UIParent, x = 0, y = -60 }, -- Debuff Anchor
 [3] = { p = "TOPRIGHT", a = UIParent, x = 0, y = -110 }, -- Enchant Anchor
 }
 --End Config
 local function anchor(frame, r, g, b, pos, anchor, x, y)frame:SetBackdrop({bgFile = 'Interface\\Buttons\\WHITE8x8'})
 frame:SetBackdropColor(r, g, b, 0.4)
 ---------------
 if r==1 then
 bsize = debuffsize
 else
 bsize = buttonsize
 end
 frame:SetHeight(bsize+20)
 frame:SetWidth(bsize+20)
 -------------
 frame:SetPoint(pos, anchor, pos, x, y)
 frame:EnableMouse(true)
 frame:SetMovable(true)
 frame:SetUserPlaced(true)
 frame:SetFrameStrata("BACKGROUND")
 frame:SetClampedToScreen(true)
 frame:SetAlpha(0)
 end
 local function MoveFunc(frame)if movebars==1 then
 frame:SetAlpha(1)
 frame:RegisterForDrag("LeftButton","RightButton")
 frame:SetScript("OnDragStart", function(self) self:StartMoving() end)
 frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
 frame:SetFrameStrata("DIALOG")
 elseif movebars==0 then
 frame:SetAlpha(0)
 frame:SetScript("OnDragStart", function(self) self:StopMovingOrSizing() end)
 frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
 frame:SetFrameStrata("BACKGROUND")
 end
 end
 local buffholder = CreateFrame("Frame", "Buffs", UIParent)anchor(buffholder, 0, 1, 0, positions[1].p, positions[1].a, positions[1].x, positions[1].y)
 local debuffholder = CreateFrame("Frame", "Debuffs", UIParent)
 anchor(debuffholder, 1, 0, 0, positions[2].p, positions[2].a, positions[2].x, positions[2].y)
 local enchantholder = CreateFrame("Frame", "TempEnchants", UIParent)
 anchor(enchantholder, 0, 0, 1, positions[3].p, positions[3].a, positions[3].x, positions[3].y)
 SlashCmdList["MOVEBUFFS"] = function()if movebars~=1 then movebars = 1
 else movebars = 0 end
 MoveFunc(buffholder)
 MoveFunc(debuffholder)
 MoveFunc(enchantholder)
 end
 SLASH_MOVEBUFFS1 = "/movebuffs"
 local function makeitgrow(button, index, anchor, framekind)for i = 1, BUFF_ACTUAL_DISPLAY do
 ------------------------------------------------------------
 if framekind == 2 then
 bla = debuffsize
 row = debuffsperrow
 gverti = d_growthvertical
 ghori = d_growthhorizontal
 
 else
 bla = buttonsize
 row = buffsperrow
 gverti = b_growthvertical
 ghori = b_growthhorizontal
 end
 if gverti == 1 then
 if ghori == 1 then
 if index == ((row*i)+1) then _G[button..index]:SetPoint("TOPRIGHT", anchor, "TOPRIGHT", 0, -(bla+spacing+4)*i) end
 else
 if index == ((row*i)+1) then _G[button..index]:SetPoint("TOPLEFT", anchor, "TOPLEFT", 0, -(bla+spacing+4)*i) end
 end
 else
 if ghori == 1 then
 if index == ((row*i)+1) then _G[button..index]:SetPoint("TOPRIGHT", anchor, "TOPRIGHT", 0, (bla+spacing+4)*i) end
 else
 if index == ((row*i)+1) then _G[button..index]:SetPoint("TOPLEFT", anchor, "TOPLEFT", 0, (bla+spacing+4)*i) end
 end
 end
 end
 --------------------------------------------------------------
 if ghori == 1 then
 _G[button..index]:SetPoint("RIGHT", _G[button..(index-1)], "LEFT", -(spacing+4), 0)
 else
 _G[button..index]:SetPoint("LEFT", _G[button..(index-1)], "RIGHT", (spacing+4), 0)
 end
 end
 local function StyleBuffs(button, index, framekind, anchor)local buff = button..index
 _G[buff.."Icon"]:SetTexCoord(.1, .9, .1, .9)
 _G[buff.."Icon"]:SetDrawLayer("OVERLAY")
 _G[buff]:ClearAllPoints()
 ------------------------------------------
 if framekind == 2 then
 bsize = debuffsize
 stackfontsize = d_stackfontsize
 durafontsize = d_durafontsize
 else
 bsize = buttonsize
 stackfontsize = b_stackfontsize
 durafontsize = b_durafontsize
 end
 ------------------------------------------
 _G[buff]:SetHeight(bsize)
 _G[buff]:SetWidth(bsize)
 _G[buff]:SetBackdrop({bgFile = "Interface\\Buttons\\WHITE8x8", insets = { left = -border, right = -border, top = -border, bottom = -border}})
 if framekind == 2 then _G[buff]:SetBackdropColor(.7,0,0,1)
 elseif framekind == 3 then _G[buff]:SetBackdropColor(0,0,.5,1)
 else _G[buff]:SetBackdropColor(0,0,0,1) end
 
 _G[buff.."Count"]:SetFont(font, stackfontsize, "OUTLINE")
 _G[buff.."Duration"]:SetFont(font, durafontsize, "OUTLINE")
 
 _G[buff.."Count"]:ClearAllPoints()
 _G[buff.."Count"]:SetPoint("TOPRIGHT", 2, 0)
 _G[buff.."Count"]:SetDrawLayer("OVERLAY")
 
 _G[buff.."Duration"]:ClearAllPoints()
 _G[buff.."Duration"]:SetPoint("BOTTOM")
 _G[buff.."Duration"]:SetDrawLayer("OVERLAY")
 if _G[buff.."Border"] then _G[buff.."Border"]:Hide() end
 
 if index == 1 then _G[buff]:SetPoint("TOPRIGHT", anchor, "TOPRIGHT", -10, -10) end
 if index ~= 1 then makeitgrow(button, index, _G[button..1], framekind) end
 end
 local function UpdateBuff()for i = 1, BUFF_ACTUAL_DISPLAY do
 StyleBuffs("BuffButton", i, 1, buffholder)
 end
 for i = 1, BuffFrame.numEnchants do
 StyleBuffs("TempEnchant", i, 3, enchantholder)
 end
 end
 local function UpdateDebuff(buttonName, index)
 StyleBuffs(buttonName, index, 2, debuffholder)
 end
 local function updateTime(button, timeLeft)local duration = _G[button:GetName().."Duration"]
 if SHOW_BUFF_DURATIONS == "1" and timeLeft then
 duration:SetTextColor(1, 1, 1)
 local d, h, m, s = ChatFrame_TimeBreakDown(timeLeft);
 if d > 0 then
 duration:SetFormattedText("%1dd", d)
 elseif h > 0 then
 duration:SetFormattedText("%1dh", h)
 elseif m > 0 then
 duration:SetFormattedText("%1dm", m)
 else
 duration:SetFormattedText("%1d", s)
 end
 end
 end
 hooksecurefunc("BuffFrame_UpdateAllBuffAnchors", UpdateBuff)hooksecurefunc("DebuffButton_UpdateAnchors", UpdateDebuff)
 hooksecurefunc("AuraButton_UpdateDuration", updateTime)
 SetCVar("consolidateBuffs", 0)
Отрицание, сделай пожалуйста, чтобы якоря фреймов баффов не сбрасывались при отключении аддона.
 
 | 
		
			| 19 апр 2012, 19:45 | 
					
					 |