• Страница 1 из 1
  • 1
Форум » Обсуждение аддонов » Разработка аддонов WoW » Сетка
Сетка
Nyll
Здравствуйте! В эту пятницу мы будем делать "Сетку" на наш экран. Этот урок будет полезен для итогового аддона. Он не просто накладывает сетку на наш экран, но еще может регулировать размер клеток.



Инструкция по созданию toc файла - тык
Ссылка на предыдущие статью - тык
Скачать notepad++ - тык
API функции - тык

Создадим папку, toc файл и lua файл. Напомню, что toc файл называем так же как и папку с аддоном.
Далее открываем lua файл и меняем кодировку, на UTF-8. После того как сменили кодировку пишем в нем:

Code
local blank = {bgFile="interface\\buttons\\white8x8"} -- Текстура.
local index = GetCurrentResolution()
local resolution = select(index, GetScreenResolutions())
local x,y = strsplit("x", resolution)
local linesR = {}
local linesL = {}
local linesT = {}
local linesB = {}
r1 = CreateFrame("Frame","wAlignY",UIParent) -- Создание фреймы вертикальной красной полоски
r1:SetBackdrop(blank) -- Текстуры
r1:SetBackdropColor(1,0,0,1) -- Задает цвет текстуре, как и "Texture:SetVertexColor()"
r1:SetSize(2,y) -- Толщина красной полоски по вертикали
r1:SetPoint("CENTER",UIParent) -- Расположение
table.insert(linesR,r1)
table.insert(linesL,r1)
local r2 = CreateFrame("Frame","wAlignX",r1) -- Создание фреймы горизонтальной красной полоски
r2:SetBackdrop(blank) -- Текстуры
r2:SetBackdropColor(1,0,0,1) -- Задает цвет текстуре, как и "Texture:SetVertexColor()"
r2:SetSize(x,2) -- Толщина красной полоски по горизонтальной
r2:SetPoint("CENTER",UIParent) -- Расположение
table.insert(linesT,r2)
table.insert(linesB,r2)
r1:Hide()
function lineUpdate(space,x,y)
     local numLinesX = (x/space)
     for i = 1,numLinesX do
      if not (linesR[i]) then
       local lR = r1:CreateTexture(nil,"OVERLAY") -- Создание текстуры.
       lR:SetSize(1,y) -- Толщина правых вертикальных полосок
       lR:SetTexture(0,0,0,0.5) -- Цвет правых вертикальных полосок
       lR:SetPoint("LEFT",linesR[i-1],"RIGHT",space,0) -- Позиция
       table.insert(linesR, lR)
      else
       if (i~=1) then
        linesR[i]:SetPoint("LEFT",linesR[i-1],"RIGHT",space,0)
       end
      end
      if not (linesL[i]) then
       local lL = r1:CreateTexture(nil,"OVERLAY") -- Создание текстуры.
       lL:SetSize(1,y) -- Толщина левых вертикальных полосок
       lL:SetTexture(0,0,0,0.5) -- Цвет левых вертикальных полосок
       lL:SetPoint("RIGHT",linesL[i-1],"LEFT",-space,0) -- Позиция
       table.insert(linesL, lL)
      else
       if (i~=1) then
        linesL[i]:SetPoint("RIGHT",linesL[i-1],"LEFT",-space,0)
       end
      end
     end
     local numLinesY = (y/space)
     for j = 1,numLinesY do
      if not (linesT[j]) then
       local lT = r2:CreateTexture(nil,"OVERLAY") -- Создание текстуры.
       lT:SetSize(x,1) -- Толщина верхних горизонтальных полосок
       lT:SetTexture(0,0,0,0.5) -- Цвет верхних горизонтальных полосок
       lT:SetPoint("BOTTOM",linesT[j-1],"TOP",0,space) -- Позиция
       table.insert(linesT, lT)
      else
       if (j~=1) then
        linesT[j]:SetPoint("BOTTOM",linesT[j-1],"TOP",0,space)
       end
      end
      if not (linesB[j]) then
       local lB = r2:CreateTexture(nil,"OVERLAY") -- Создание текстуры.
       lB:SetSize(x,1) -- Толщина нижних горизонтальных полосок
       lB:SetTexture(0,0,0,0.5) -- Цвет нижних горизонтальных полосок
       lB:SetPoint("TOP",linesB[j-1],"BOTTOM",0,-space) -- Позиция
       table.insert(linesB, lB)
      else
       if (j~=1) then
        linesB[j]:SetPoint("TOP",linesB[j-1],"BOTTOM",0,-space)
       end
      end
     end
end
lineUpdate(20,x,y) -- Размер клеточек
SLASH_WALIGN1 = '/walign' -- Слеш команда.
function SlashCmdList.WALIGN(msg, editbox)
     if (msg) and (type(tonumber(msg))=="number") then
      if (tonumber(msg)<=4) then     
       print("Пожалуйста введите размер от 5.") -- Сообщение если размер введен ниже 5     
      else
       if not (r1:IsShown()) then
        r1:Show()
       end
       lineUpdate(msg,x,y)
      end
     else
      if not(r1:IsShown()) then
       r1:Show()
      else
       r1:Hide()
      end
     end
end


Code
r1 = CreateFrame("Frame","wAlignY",UIParent) -- Создание фреймы вертикальной красной полоски

Регистрирует нашу вертикальную полоску.
Code
r1:SetBackdropColor(1,0,0,1) -- Задает цвет текстуре, как и "Texture:SetVertexColor()"

Задаем цвет текстурам у нас он будет красным.
Code
r1:SetSize(2,y) -- Толщина красной полоски по вертикали

Размер красной вертикальной полоски по "Y"
Code
r1:SetPoint("CENTER",UIParent) -- Расположение

Указываем расположение, у нас будет "Center" т.е центр.

Code
local r2 = CreateFrame("Frame","wAlignX",r1) -- Создание фреймы горизонтальной красной полоски

Регистрирует нашу горизантальную полоску.
Code
r2:SetBackdropColor(1,0,0,1) -- Задает цвет текстуре, как и "Texture:SetVertexColor()"

Задаем цвет текстурам у нас он будет красным.
Code
r2:SetSize(x,2) -- Толщина красной полоски по горизонтальной

Размер красной горизонтальной полоски по "X"
Code
r2:SetPoint("CENTER",UIParent)

Указываем расположение, у нас будет "Center" т.е центр.

Code
local lR = r1:CreateTexture(nil,"OVERLAY") -- Создание текстуры.

Создание текстуры.
Code
lR:SetSize(1,y)

Толщина правых вертикальных полосок
Code
lR:SetTexture(0,0,0,0.5)

Цвет правых вертикальных полосок
Code
lR:SetPoint("LEFT",linesR[i-1],"RIGHT",space,0)

Позиция

Code
local lL = r1:CreateTexture(nil,"OVERLAY")

Создание текстуры.
Code
lL:SetSize(1,y)

Толщина левых вертикальных полосок
Code
lL:SetTexture(0,0,0,0.5)

Цвет левых вертикальных полосок
Code
lL:SetPoint("RIGHT",linesL[i-1],"LEFT",-space,0)

Позиция

Ну в общем и так далее smile В следующей статье мы будем делать меню. А потом будем делать итоговый аддон, а каким он будет пока секрет smile


[download]Сетка - 3.3
[/download]
Прикрепления: 5968029.jpg (181.5 Kb)
Маме беркута привет!
Сообщение # 1 отредактировано Nyll - Пятница, 24.02.2012, 12:11
Adamas06
Скаут
а собственно для чего это может пригодиться?
рожденный ползать везде пролезет,
рожденный летать всегда в пролете_
Сообщение # 2 написано 13.01.2012 в 17:13
vitaminwow
Маршал
Nyll, ты извини конечно но зачем еще раз изобретать велосипед? ведь его изобрели уже!!! вот он prof
Аддон называется: Align


/align 32
/align 64
/align 128
/align 256
Сообщение # 3 отредактировано vitaminwow - Пятница, 13.01.2012, 17:38
Nightdiеd
What's up?
Quote (vitaminwow)
Nyll, ты извини конечно но зачем еще раз изобретать велосипед? ведь его изобрели уже!!! вот он

Эх... К счастью, данный раздел не занимается "Ищу новое и полезное!", а учит. Учит создавать аддоны самим.
Сообщение # 4 написано 13.01.2012 в 17:59
jecasman
Скаут
Учит открывать готовый .lua файл и копировать содержимое? No, thanks.
Like a boss
Сообщение # 5 написано 13.01.2012 в 21:58
Juline
!1
Quote (Adamas06)
а собственно для чего это может пригодиться?

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

Quote (jecasman)
Учит открывать готовый .lua файл и копировать содержимое? No, thanks.

Посмотри на ссылку аддона, которую дал vitaminwow: http://www.wowinterface.com/downloads/info6153-Align.html
Коды совсем разные.
Сообщение # 6 написано 14.01.2012 в 01:11
Форум » Обсуждение аддонов » Разработка аддонов WoW » Сетка
  • Страница 1 из 1
  • 1
Поиск: