• Страница 1 из 1
  • 1
Форум » Обсуждение аддонов » Разработка аддонов WoW » Новогодний аддон
Новогодний аддон
Nyll


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

Ну что, начнем. Создаем папку для аддона а в папки создаем toc документ п пишем в нем:

Code
## Interface: 30300
## Title: Wowjp 2012
## Author: Nyll
## Notes: wowjp 2012
## SavedVariables: wowjp
wowjp.lua


Далее создаем wowjp.lua, открываем его и меняем кодировку на UTF-8
После пишем:

Code

-- локальные переменные  создание фрейма
local redLightsOn = "Interface\\AddOns\\wowjp\\media\\red lights on - overlay"
local greenLightsOn = "Interface\\AddOns\\wowjp\\media\\green lights on - overlay"
local lightString = "Interface\\AddOns\\wowjp\\media\\string of lights - off"
local count = 0
local musicplayed = false
local db

local f = CreateFrame("Frame")       -- Фрейм обработчика событий
local snowframe = CreateFrame("PlayerModel", nil, UIParent)
local snowbaseleft = CreateFrame("Frame", nil, UIParent)
local snowbaseright = CreateFrame("Frame", nil, UIParent)
local lightsframeleft = CreateFrame("Frame", nil, UIParent)
           lightsframeleft:Hide()           
local lightsframeright = CreateFrame("Frame", nil, UIParent)
local redLightsLeft = lightsframeleft:CreateTexture()
local redLightsRight = lightsframeright:CreateTexture()
local greenLightsLeft = lightsframeleft:CreateTexture()
local greenLightsRight = lightsframeright:CreateTexture()
-- Значения по умолчанию
local defaults = {
           firstLoad = true,
           lightsOn = true,
           snowOn = true,
           musicOn = true,
           playOnce = false,
}

local function lightsUpdate(self,elapsed) -- Обновление ламп. т.е задает время свечение и т.д
           count = count + elapsed
           if count <= .5 then
            redLightsLeft:SetAlpha(count*2)
            redLightsRight:SetAlpha(count*2)
           elseif count > 1 and count <= 2.5 then
            return
           elseif count > 2.5 and count <= 3 then
            redLightsLeft:SetAlpha((3-count)*2)
            redLightsRight:SetAlpha((3-count)*2)
           elseif count > 3 and count <= 3.5 then
            greenLightsLeft:SetAlpha((count-3)*2)
            greenLightsRight:SetAlpha((count-3)*2)
           elseif count > 3.5  and count <= 5 then
            return
           elseif count > 5 and count <= 5.5 then
            greenLightsLeft:SetAlpha((5.5-count)*2)
            greenLightsRight:SetAlpha((5.5-count)*2)
           elseif count > 5.5 then
            count = 0
           end
end

local function framesSetup() -- Локальная функция со снегом и гирляндами
-- снег
           snowframe:SetScale(1.2)
           snowframe:SetModelScale(.8)
           snowframe:SetAllPoints()
           snowframe:SetAlpha(.35)
           if db.snowOn then
            snowframe:SetModel("SPELLS\\ChristmasSnowRain.m2") -- путь к снегу
           end
                     
                     
                     
           -- ГИРЛЯНДА          
           lightsframeleft:SetPoint("TOPRIGHT", UIParent, "TOP") -- Правая гирлянда
           lightsframeleft:SetFrameStrata("HIGH")
           lightsframeleft:SetBackdrop({bgFile = lightString})
           lightsframeright:SetPoint("TOPLEFT", UIParent, "TOP", -1,0) -- Левая гирлянда
           lightsframeright:SetFrameStrata("HIGH")
           lightsframeright:SetBackdrop({bgFile = lightString})
                     
-- лампочки на гирлянде
           redLightsLeft:SetTexture(redLightsOn) -- Красные лампочки правой гирлянды
           redLightsRight:SetTexture(redLightsOn) -- Красные лампочки Левой гирлянды
           greenLightsLeft:SetTexture(greenLightsOn) -- Зеленые лампочки правой гирлянды
           greenLightsRight:SetTexture(greenLightsOn) -- Зеленые лампочки Левой гирлянды
                     
                     
           redLightsLeft:SetAlpha(0)
           redLightsRight:SetAlpha(0)
           greenLightsLeft:SetAlpha(0)
           greenLightsRight:SetAlpha(0)
                     
           if db.lightsOn then           
            lightsframeleft:SetScript("OnUpdate", lightsUpdate)
           end
end

local function finalSetup()
                     
           local screenWidth = GetScreenWidth()
           lightsframeleft:SetWidth(screenWidth/2 + 1)
           lightsframeright:SetWidth(screenWidth/2 + 1)
           lightsframeleft:SetHeight(screenWidth/16)
           lightsframeright:SetHeight(screenWidth/16)
                     
           redLightsLeft:SetAllPoints()
           redLightsRight:SetAllPoints()
           greenLightsLeft:SetAllPoints()
           greenLightsRight:SetAllPoints()
                     
           lightsframeleft:Show()           
                     
           PlaySoundFile("Interface\\AddOns\\wowjp\\media\\hohoho.wav") -- Музыка при входе в мир
           if db.musicOn then
            local count = 0            
            f:SetScript("OnUpdate", function(self,elapsed)
             count = count + elapsed
             if count >= 3 and not musicplayed then           
              PlayMusic("Interface\\AddOns\\wowjp\\media\\happy.mp3") -- Песня
              musicplayed = true
              if not db.playOnce then           
               f:Hide()
              end
             elseif count >= 225 then           
              StopMusic()
              f:Hide()
             end
            end)
           end
end

local function Initialization()
           wowjpDB = wowjpDB or {}
           for k,v in pairs(defaults) do
               if type(wowjpDB[k]) == "nil" then
                   wowjpDB[k] = v
               end
           end
           db = wowjpDB
                     
           if db.firstLoad then
            print("|cff78AB46wowjp!:|r Хаюшки, это новогодний аддон. Его команды /wowjp, /2012. Подкоманды снег, лампы.") -- Сообщение при логине
            db.firstLoad = false
           end
                     
           SLASH_wowjp1 = "/wowjp" -- Слеш команда 1
           SLASH_wowjp2 = "/2012" -- Слеш команда 2
           SlashCmdList["wowjp"] = function(arg) -- Регистрация слеш команды
             arg = string.lower(arg)
             if arg == "снег" then -- Подкоманда снег
              db.snowOn = not db.snowOn
              if db.snowOn then
               print("|cff78AB46wowjp!:|r Снег включен") -- сообщение при включении снега
               snowframe:SetModel("SPELLS\\ChristmasSnowRain.m2") -- Запуск события
              else
               print("|cff78AB46wowjp!:|r Снег выключен") -- Сообщение при выключении снега
               snowframe:ClearModel() -- Остановка события т.е снега
              end
             elseif arg == "лампы" then -- Создание подкоманды лампы
              db.lightsOn = not db.lightsOn
              if db.lightsOn then
               print("|cff78AB46wowjp!:|r Лампы включены.") -- сообщение при включении ламп
               lightsframeleft:SetScript("OnUpdate", lightsUpdate) -- событие включающие лампы
              else
               print("|cff78AB46wowjp!:|r Лампы выключены.") -- Сообщение при выключении ламп
               lightsframeleft:SetScript("OnUpdate", function() end) -- Событие выключающие лампы
               count = 0
               redLightsLeft:SetAlpha(0)
               redLightsRight:SetAlpha(0)
               greenLightsLeft:SetAlpha(0)
               greenLightsRight:SetAlpha(0)
              end

             else
              print("|cff78AB46wowjp!:|r Аюшки :d так сказать error.") -- Сообщение ошибки
             end
            end
end

f:SetScript("OnEvent", function(self, event, addon)
            if event == "ADDON_LOADED" and addon == "wowjp" then
             f:UnregisterEvent("ADDON_LOADED")
             Initialization()
             framesSetup()
            elseif event == "PLAYER_ENTERING_WORLD" then
             finalSetup()
             f:UnregisterEvent("PLAYER_ENTERING_WORLD")
            end
           end)

f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:RegisterEvent("ADDON_LOADED")


Code
local function finalSetup()

local screenWidth = GetScreenWidth()
lightsframeleft:SetWidth(screenWidth/2 + 1)
lightsframeright:SetWidth(screenWidth/2 + 1)
lightsframeleft:SetHeight(screenWidth/16)
lightsframeright:SetHeight(screenWidth/16)

redLightsLeft:SetAllPoints()
redLightsRight:SetAllPoints()
greenLightsLeft:SetAllPoints()
greenLightsRight:SetAllPoints()

lightsframeleft:Show()           

PlaySoundFile("Interface\\AddOns\\wowjp\\media\\hohoho.wav")
if db.musicOn then
local count = 0           
f:SetScript("OnUpdate", function(self,elapsed)
count = count + elapsed
if count >= 3 and not musicplayed then           
PlayMusic("Interface\\AddOns\\wowjp\\media\\happy.mp3")
musicplayed = true
if not db.playOnce then           
f:Hide()
end
elseif count >= 225 then           
StopMusic()
f:Hide()
end
end)
end
end


Добовляем музыку и делаем чтобы она включалась при логини.
Code
PlaySoundFile("Interface\\AddOns\\wowjp\\media\\hohoho.wav")

Путь к музыке "хохохо"
Code
PlayMusic("Interface\\AddOns\\wowjp\\media\\happy.mp3")

Путь к новогодней музыки.
Code
local function Initialization()
           wowjpDB = wowjpDB or {}
           for k,v in pairs(defaults) do
               if type(wowjpDB[k]) == "nil" then
                   wowjpDB[k] = v
               end
           end
           db = wowjpDB
                     
           if db.firstLoad then
            print("|cff78AB46wowjp!:|r Хаюшки, это новогодний аддон. Его команды /wowjp, /2012. Подкоманды снег, лампы.")
            db.firstLoad = false
           end
                     
           SLASH_wowjp1 = "/wowjp"
           SLASH_wowjp2 = "/2012"
           SlashCmdList["wowjp"] = function(arg)
             arg = string.lower(arg)
             if arg == "снег" then
              db.snowOn = not db.snowOn
              if db.snowOn then
               print("|cff78AB46wowjp!:|r Снег включен")
               snowframe:SetModel("SPELLS\\ChristmasSnowRain.m2")
              else
               print("|cff78AB46wowjp!:|r Снег выключен")
               snowframe:ClearModel()
              end
             elseif arg == "лампы" then
              db.lightsOn = not db.lightsOn
              if db.lightsOn then
               print("|cff78AB46wowjp!:|r Лампы включены.")
               lightsframeleft:SetScript("OnUpdate", lightsUpdate)
              else
               print("|cff78AB46wowjp!:|r Лампы выключены.")
               lightsframeleft:SetScript("OnUpdate", function() end)
               count = 0
               redLightsLeft:SetAlpha(0)
               redLightsRight:SetAlpha(0)
               greenLightsLeft:SetAlpha(0)
               greenLightsRight:SetAlpha(0)
              end

             else
              print("|cff78AB46wowjp!:|r Аюшки :d так сказать error.")
             end
            end
end

Создаем приветствие и слеш команды.
Code
print("|cff78AB46wowjp!:|r Хаюшки, это новогодний аддон. Его команды /wowjp, /2012. Подкоманды снег, лампы.")

Приветствие.
Code
SLASH_wowjp1 = "/wowjp"
SLASH_wowjp2 = "/2012"

Делаем слеш команды
Code
SlashCmdList["wowjp"] = function(arg)
arg = string.lower(arg)
if arg == "снег" then
db.snowOn = not db.snowOn
if db.snowOn then
print("|cff78AB46wowjp!:|r Снег включен")
snowframe:SetModel("SPELLS\\ChristmasSnowRain.m2")
else
print("|cff78AB46wowjp!:|r Снег выключен")
snowframe:ClearModel()
end
elseif arg == "лампы" then
db.lightsOn = not db.lightsOn
if db.lightsOn then
print("|cff78AB46wowjp!:|r Лампы включены.")
lightsframeleft:SetScript("OnUpdate", lightsUpdate)
else
print("|cff78AB46wowjp!:|r Лампы выключены.")
lightsframeleft:SetScript("OnUpdate", function() end)
count = 0
redLightsLeft:SetAlpha(0)
redLightsRight:SetAlpha(0)
greenLightsLeft:SetAlpha(0)
greenLightsRight:SetAlpha(0)
end

Создаем поддкоманды для нашей слеш команды. Они у нас будут русскими.
Code
print("|cff78AB46wowjp!:|r Аюшки :d так сказать error.")

Создаем сообшение ошибки
Code
snowframe:SetModel("SPELLS\\ChristmasSnowRain.m2")

Вызываем снег при прописи /2012 снег

Ну вот собственно и все. Хочу пожелать вам в новом году удачи, побольше БАБЛА, и хорошее настроение smile Удачи.


[download]Новый год - 3.3
[/download]
Маме беркута привет!
Сообщение # 1 отредактировано Nyll - Пятница, 24.02.2012, 12:12
Chehultе
Beautiful Сat
Nyll, вот в твоих видео, мне не нравиться только 1.то что плохо слышно что ты говоришь.говори погромче и удет вообще отлично
Сообщение # 2 написано 31.12.2011 в 05:19
st3n007
Капрал
состряпал аддон,добавил коечто свое и пораздавал друзьям в виде подарка:D
Сообщение # 3 написано 31.12.2011 в 07:31
MgnWorld
Скаут
Quote (Сырок)
Nyll, вот в твоих видео, мне не нравиться только 1.то что плохо слышно что ты говоришь.говори погромче и удет вообще отлично

Я ему говорил, что лучше писать, дабы его слышимость не окай совсем >_<
Сервер х100, с повышенами статами http://mgn-world.ru/
Сообщение # 4 написано 31.12.2011 в 11:06
Benodler
Скаут
Nyll, извините за оффтоп но зачем закрыли тему? я же не гений я так и не понял где там код нужный... у меня уже событие кнопки ОнКлик выводит сообщение в чат а надо что бы при этом же событии добавляло к сообщению текст из Editt(редактируемое текстовое поле)... ответе плз
Сообщение # 5 написано 31.12.2011 в 11:51
Tobex
Капрал
Адон классный.
-
Подскажите сайт серва, там где он показывал своё видео.
Сообщение # 6 написано 31.12.2011 в 13:36
Benodler
Скаут
фак еаах) сделал)
function wowjp()
texts = name:GetText();
outSAY("СЮДА ВСТАВЛЯЕМ ТЕКСТ КОТОРІЙ НЕ ДОЛЖЕН МЕНЯТСЯ"..texts..(А тут текст из поля Editt"");
end
Все спс разобрался)
Сообщение # 7 написано 31.12.2011 в 14:17
Kickker
Рыцарь
Все отлично, смастерил
Nyll, спасибо с наступающим biggrin
Сообщение # 8 написано 31.12.2011 в 15:51
Horoko
Скаут
А для 4.3?
Сообщение # 9 написано 31.12.2011 в 18:24
Nyll
Tobex, увов
Quote (Сырок)
Nyll, вот в твоих видео, мне не нравиться только 1.то что плохо слышно что ты говоришь.говори погромче и удет вообще отлично

я записывал в 3 утра
Quote (Horoko)
А для 4.3?

попробуй
Quote (Kickker)
Все отлично, смастерил Nyll, спасибо с наступающим

и тя
Маме беркута привет!
Сообщение # 10 написано 31.12.2011 в 18:42
Goolden
Скаут
Сообщение # 11 написано 04.01.2012 в 09:46
Форум » Обсуждение аддонов » Разработка аддонов WoW » Новогодний аддон
  • Страница 1 из 1
  • 1
Поиск: