|
Форум Обсуждение аддонов Разработка аддонов WoW Новогодний аддон |
Новогодний аддон |
Инструкция по созданию 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 снег Ну вот собственно и все. Хочу пожелать вам в новом году удачи, побольше БАБЛА, и хорошее настроение Удачи.
Маме беркута привет!
|
Nyll, вот в твоих видео, мне не нравиться только 1.то что плохо слышно что ты говоришь.говори погромче и удет вообще отлично
Сообщение # 2 написано 31.12.2011 в 05:19
|
Quote (Сырок) Nyll, вот в твоих видео, мне не нравиться только 1.то что плохо слышно что ты говоришь.говори погромче и удет вообще отлично Я ему говорил, что лучше писать, дабы его слышимость не окай совсем >_<
Сервер х100, с повышенами статами http://mgn-world.ru/
Сообщение # 4 написано 31.12.2011 в 11:06
|
Nyll, извините за оффтоп но зачем закрыли тему? я же не гений я так и не понял где там код нужный... у меня уже событие кнопки ОнКлик выводит сообщение в чат а надо что бы при этом же событии добавляло к сообщению текст из Editt(редактируемое текстовое поле)... ответе плз
Сообщение # 5 написано 31.12.2011 в 11:51
|
Все отлично, смастерил
Nyll, спасибо с наступающим
Сообщение # 8 написано 31.12.2011 в 15:51
|
Tobex, увов
Quote (Сырок) Nyll, вот в твоих видео, мне не нравиться только 1.то что плохо слышно что ты говоришь.говори погромче и удет вообще отлично я записывал в 3 утра Quote (Horoko) А для 4.3? попробуй Quote (Kickker) Все отлично, смастерил Nyll, спасибо с наступающим и тя
Маме беркута привет!
Сообщение # 10 написано 31.12.2011 в 18:42
|
Nyll, вау,ты мего
Сообщение # 11 написано 04.01.2012 в 09:46
|
| |||
| |||