• Страница 1 из 1
  • 1
Форум » Обсуждение аддонов » Разработка аддонов WoW » неоновый чат
неоновый чат
megs
Сержант
есть такая фишка по смене цветовой схемы чата по разным каналам
но вся суть в том что отображение цвета и рамки фрейма происходит только при написании чего либо
подскажите кто знает как сделать так что бы цвет и рамка отображалаись постояннно
вот собственно наглядное изображение дефекта

Код

local chatborder = CreateFrame("Button", nil, ChatFrame1EditBox)
chatborder:SetBackdrop(GameTooltip:GetBackdrop())
chatborder:SetBackdropColor(0,0,0,0)
chatborder:SetBackdropBorderColor(0,0,0,0)
chatborder:EnableMouse(false)

local chateditbox = CreateFrame("Button", nil, ChatFrame1EditBox)
chateditbox:SetBackdrop(GameTooltip:GetBackdrop())
chateditbox:SetBackdropColor(0,0,0,0)
chateditbox:SetBackdropBorderColor(0,0,0,0)

hooksecurefunc("ChatEdit_UpdateHeader", function(editbox)
  if ACTIVE_CHAT_EDIT_BOX then
   local type = editbox:GetAttribute("chatType")
   local frame = string.match(ACTIVE_CHAT_EDIT_BOX:GetName(),"ChatFrame%d",1) or string.match(ACTIVE_CHAT_EDIT_BOX:GetName(),"GMChatFrame",1)
    
   if NeonChatDB[1] then chatborder:Hide() else chatborder:Show() end

   if ( type == "CHANNEL" ) then
    local id = GetChannelName(editbox:GetAttribute("channelTarget"))
    if id == 0 then  
     chatborder:SetBackdropBorderColor(0.5,0.5,0.5)
     chatborder:SetBackdropColor(0.5,0.5,0.5)
     chateditbox:SetBackdropColor(0.5/3,0.5/3,0.5/3)
    else  
     chatborder:SetBackdropBorderColor(ChatTypeInfo[type..id].r,ChatTypeInfo[type..id].g,ChatTypeInfo[type..id].b)
     chatborder:SetBackdropColor(ChatTypeInfo[type..id].r/3,ChatTypeInfo[type..id].g/3,ChatTypeInfo[type..id].b/3)
     chateditbox:SetBackdropColor(ChatTypeInfo[type..id].r/3,ChatTypeInfo[type..id].g/3,ChatTypeInfo[type..id].b/3)
    end
   else
    if ChatTypeInfo[type].r == nil or ChatTypeInfo[type].g == nil or ChatTypeInfo[type].b == nil then return else
     chatborder:SetBackdropBorderColor(ChatTypeInfo[type].r,ChatTypeInfo[type].g,ChatTypeInfo[type].b)
     chatborder:SetBackdropColor(ChatTypeInfo[type].r/3,ChatTypeInfo[type].g/3,ChatTypeInfo[type].b/3)
     chateditbox:SetBackdropColor(ChatTypeInfo[type].r/3,ChatTypeInfo[type].g/3,ChatTypeInfo[type].b/3)
    end
   end
    
   chatborder:SetParent(ACTIVE_CHAT_EDIT_BOX)
   chatborder:ClearAllPoints()
   chatborder:SetPoint("TOPLEFT", frame.."TopLeftTexture",0,0)
   chatborder:SetPoint("BOTTOMRIGHT", frame.."BottomRightTexture",0,1)
   chateditbox:SetParent(ACTIVE_CHAT_EDIT_BOX)
   chateditbox:ClearAllPoints()
   chateditbox:SetPoint("TOPLEFT",ACTIVE_CHAT_EDIT_BOX:GetName().."FocusLeft","TOPLEFT",4,-3)
   chateditbox:SetPoint("BOTTOMRIGHT",ACTIVE_CHAT_EDIT_BOX:GetName().."FocusRight","BOTTOMRIGHT",-4,3)
   chateditbox:SetFrameLevel(_G[frame.."EditBox"]:GetFrameLevel()-1)
   chatborder:SetFrameStrata(_G[frame]:GetFrameStrata())
   chatborder:SetFrameLevel(_G[frame]:GetFrameLevel()-1)

  else
   chatborder:SetBackdropBorderColor(0,0,0,0)
   chatborder:SetBackdropColor(0,0,0,0)
   chateditbox:SetBackdropColor(0,0,0,0)
  end
   
  for chatframe=1,CURRENT_CHAT_FRAME_ID do
   for i=6,8 do select(i, _G["ChatFrame"..chatframe.."EditBox"]:GetRegions()):Hide() end
  end
end)

SLASH_NEONCHAT1 = "/neonchat"
SLASH_NEONCHAT2 = "/nc"
SlashCmdList["NEONCHAT"] = function()
  if NeonChatDB[1] then  
   NeonChatDB[1] = nil
   print("|cFFFF9900NeonChat:|r Chat coloring |cFF00FF00ON|r")
  else
   NeonChatDB[1] = true
   print("|cFFFF9900NeonChat:|r Chat coloring |cFFFF0000OFF|r")
  end
end
Сообщение # 1 написано 16.01.2013 в 22:07
Nyll
В коде есть условие:

Код
if ACTIVE_CHAT_EDIT_BOX then


Это означает что если редактирование включено то оно будет задавать цвет.

И в самом низу у тебя есть

Код
  else  
    chatborder:SetBackdropBorderColor(0,0,0,0)  
    chatborder:SetBackdropColor(0,0,0,0)  
    chateditbox:SetBackdropColor(0,0,0,0)


Оно задает фрейме цвет если редактирование не включено (т.е делает цвет по умолчанию)
Если убрать

Код
  else  
    chatborder:SetBackdropBorderColor(0,0,0,0)  
    chatborder:SetBackdropColor(0,0,0,0)  
    chateditbox:SetBackdropColor(0,0,0,0)


То цвет будет сохранятся.

Вот код. Попробуй должно работать.
Код
local chatborder = CreateFrame("Button", nil, ChatFrame1EditBox)  
chatborder:SetBackdrop(GameTooltip:GetBackdrop())  
chatborder:SetBackdropColor(0,0,0,0)  
chatborder:SetBackdropBorderColor(0,0,0,0)  
chatborder:EnableMouse(false)  

local chateditbox = CreateFrame("Button", nil, ChatFrame1EditBox)  
chateditbox:SetBackdrop(GameTooltip:GetBackdrop())  
chateditbox:SetBackdropColor(0,0,0,0)  
chateditbox:SetBackdropBorderColor(0,0,0,0)  

hooksecurefunc("ChatEdit_UpdateHeader", function(editbox)  
   if ACTIVE_CHAT_EDIT_BOX then  
    local type = editbox:GetAttribute("chatType")  
    local frame = string.match(ACTIVE_CHAT_EDIT_BOX:GetName(),"ChatFrame%d",1) or string.match(ACTIVE_CHAT_EDIT_BOX:GetName(),"GMChatFrame",1)  
      
    if NeonChatDB[1] then chatborder:Hide() else chatborder:Show() end  

    if ( type == "CHANNEL" ) then  
     local id = GetChannelName(editbox:GetAttribute("channelTarget"))  
     if id == 0 then   
      chatborder:SetBackdropBorderColor(0.5,0.5,0.5)  
      chatborder:SetBackdropColor(0.5,0.5,0.5)  
      chateditbox:SetBackdropColor(0.5/3,0.5/3,0.5/3)  
     else   
      chatborder:SetBackdropBorderColor(ChatTypeInfo[type..id].r,ChatTypeInfo[type..id].g,ChatTypeInfo[type..id].b)  
      chatborder:SetBackdropColor(ChatTypeInfo[type..id].r/3,ChatTypeInfo[type..id].g/3,ChatTypeInfo[type..id].b/3)  
      chateditbox:SetBackdropColor(ChatTypeInfo[type..id].r/3,ChatTypeInfo[type..id].g/3,ChatTypeInfo[type..id].b/3)  
     end  
    else  
     if ChatTypeInfo[type].r == nil or ChatTypeInfo[type].g == nil or ChatTypeInfo[type].b == nil then return else  
      chatborder:SetBackdropBorderColor(ChatTypeInfo[type].r,ChatTypeInfo[type].g,ChatTypeInfo[type].b)  
      chatborder:SetBackdropColor(ChatTypeInfo[type].r/3,ChatTypeInfo[type].g/3,ChatTypeInfo[type].b/3)  
      chateditbox:SetBackdropColor(ChatTypeInfo[type].r/3,ChatTypeInfo[type].g/3,ChatTypeInfo[type].b/3)  
     end  
    end  
      
    chatborder:SetParent(ACTIVE_CHAT_EDIT_BOX)  
    chatborder:ClearAllPoints()  
    chatborder:SetPoint("TOPLEFT", frame.."TopLeftTexture",0,0)  
    chatborder:SetPoint("BOTTOMRIGHT", frame.."BottomRightTexture",0,1)  
    chateditbox:SetParent(ACTIVE_CHAT_EDIT_BOX)  
    chateditbox:ClearAllPoints()  
    chateditbox:SetPoint("TOPLEFT",ACTIVE_CHAT_EDIT_BOX:GetName().."FocusLeft","TOPLEFT",4,-3)  
    chateditbox:SetPoint("BOTTOMRIGHT",ACTIVE_CHAT_EDIT_BOX:GetName().."FocusRight","BOTTOMRIGHT",-4,3)  
    chateditbox:SetFrameLevel(_G[frame.."EditBox"]:GetFrameLevel()-1)  
    chatborder:SetFrameStrata(_G[frame]:GetFrameStrata())  
    chatborder:SetFrameLevel(_G[frame]:GetFrameLevel()-1)  

   --[[else  
    chatborder:SetBackdropBorderColor(0,0,0,0)  
    chatborder:SetBackdropColor(0,0,0,0)  
    chateditbox:SetBackdropColor(0,0,0,0)  
   end]]
     
   for chatframe=1,CURRENT_CHAT_FRAME_ID do  
    for i=6,8 do select(i, _G["ChatFrame"..chatframe.."EditBox"]:GetRegions()):Hide() end  
   end  
end)  

SLASH_NEONCHAT1 = "/neonchat"  
SLASH_NEONCHAT2 = "/nc"  
SlashCmdList["NEONCHAT"] = function()  
   if NeonChatDB[1] then   
    NeonChatDB[1] = nil  
    print("|cFFFF9900NeonChat:|r Chat coloring |cFF00FF00ON|r")  
   else  
    NeonChatDB[1] = true  
    print("|cFFFF9900NeonChat:|r Chat coloring |cFFFF0000OFF|r")  
   end  
end
Маме беркута привет!
Сообщение # 2 написано 17.01.2013 в 09:24
thebodazlo
Скаут
нулл мой бред уже тут
анимешники я знаю ваши игры.ваше аниме давит мозг людям и заставляет их становится чем то другим. но теперь все изменится.пора брать ваш мозг в руки! лом мозга уже здесь!
Сообщение # 3 написано 19.01.2013 в 01:33
Форум » Обсуждение аддонов » Разработка аддонов WoW » неоновый чат
  • Страница 1 из 1
  • 1
Поиск: