Илюминати Posted April 23, 2014 Share Posted April 23, 2014 Всем доброго времени суток. :crab: Многие стремятся сделать свой UI - интерфейс наиболее приятным и комфортным для игры в плане PvP \ PvE. Для начала предлагаю вам посмотреть мою сборку скриптов и аддонов, скажу сразу, не очень большой любитель аддонов, так что пользуюсь ими по минимуму. Вот мои список аддонов: http://i047.radikal.ru/1404/cb/7bfec52518a6.png ExctraCD - Аддон отслеживает баффы, которые скрытые. Скрытые - это все проки от талантов, тринек (аксессуаров), энчантов, нашивок. GladiatorlosSA - Противник юзает скилл - у вас произносится в речь. LoseControl - Позволяет легко отслеживать контролли, которые лежат не Вашем персонаже. SafeQueue - Убирает кнопку ""Leave Queue" при проке арены. sArena - Замена аддона Gladius (т.к. Гладиус для меня не так хорошо смотрится, как данный аддон, можно сказать это вовсе не аддон, а просто доработанная замена скрипту) SaySapped - В то время, когда Вас сапнули в чат будет писаться "Sapped" И мои скрипты - О них чуть попозже. Как всё это у меня смотрится - http://s43.radikal.ru/i101/1404/3d/ca02b5aa0768.jpg Теперь перейдём к скриптам. На данный момент я использую около 20-30 скриптов, но описывать буду не все. Для начала, как же создать скрипт? Я делаю 1 аддон и закидываю в него кучу скриптов, но для новичков советую делать всё отдельно. И так, как создать аддон? Здесь всё прекрасно описано Будь плохим @ Играй на дефолте но там описано создание аддонов на катаклизм. Различие в создании аддонов между Пандарией и Катаклизмом - это пару циферок ^_^ 1. Заходим в WoW\Interface\Addons - создаём папку, например, "Scripts" 2. Далее делаем 2 блокнотика "Scripts.lua \ Scripts.toc" http://i023.radikal.ru/1404/1f/c7f3aa57514b.png 3. В Scripts.toc пишем ## Interface: 50400 ## Title: Scripts ## Author: Ilyminaty100 ## Version: 5.41 scripts.lua 4. А вот Scprits.lua - является местом, куда мы и помещаем скрипт. Скрипты Neilyo и не только здесь можно покопипастить себе море полезных скриптов :) Если понравился мой интерфейс - прошу миловать (ctrl+c ---> ctrl+v) - просто скопируйте всё и вставьте в .lua файл. Когда вставите у вас: 1. Пропадут грифоны по бокам. 2. Будет тёмная, на мой взгляд приятная оковка фреймов. 3. Вместо портретов будут иконки класса. 4. Если спелл не достает до противника, то на панели он будет гореть красным. http://i.imgur.com/mH9ZN.jpg 5. Станет прозрачный бэкграунд фрейма игрока. 6. При нажатии на спелл, он будет приятно помигивать :) Вроде всё, остального не стоит описывать, новички не поймут. :wink: UFP = "UnitFramePortrait_Update"; UICC = "Interface\\TargetingFrame\\UI-Classes-Circles"; CIT = CLASS_ICON_TCOORDS hooksecurefunc(UFP,function(self) if self.portrait then local t = CIT[select(2,UnitClass(self.unit))] if t then self.portrait:SetTexture(UICC) self.portrait:SetTexCoord(unpack(t)) end end end) UIErrorsFrame:SetAlpha(0) MainMenuBarLeftEndCap:Hide();MainMenuBarRightEndCap:Hide() hooksecurefunc("ActionButton_OnEvent",function(self, event, ...) if ( event == "PLAYER_TARGET_CHANGED" ) then self.newTimer = self.rangeTimer end end) hooksecurefunc("ActionButton_UpdateUsable",function(self) local icon = _G[self:GetName().."Icon"] local valid = IsActionInRange(self.action) if ( valid == 0 ) then icon:SetVertexColor(1.0, 0.1, 0.1) end end) hooksecurefunc("ActionButton_OnUpdate",function(self, elapsed) local rangeTimer = self.newTimer if ( rangeTimer ) then rangeTimer = rangeTimer - elapsed if ( rangeTimer ActionButton_UpdateUsable(self) rangeTimer = TOOLTIP_UPDATE_TIME end self.newTimer = rangeTimer end end) MinimapBorderTop:Hide() MiniMapWorldMapButton:Hide() MinimapZoneText:SetPoint("TOPLEFT","MinimapZoneTextButton","TOPLEFT", 8, 0) -- to center the minimap zone text MinimapZoomIn:Hide() MinimapZoomOut:Hide() Minimap:EnableMouseWheel(true) Minimap:EnableMouseWheel(true) Minimap:SetScript('OnMouseWheel', function(self, delta) if delta > 0 then Minimap_ZoomIn() else Minimap_ZoomOut() end end) local ef=CreateFrame("Frame") ef:RegisterEvent("ADDON_LOADED") ef:SetScript("OnEvent", function(self, event, addon) if(addon=="Blizzard_TimeManager") then for i,v in pairs({ PlayerFrameTexture, TargetFrameTextureFrameTexture, PetFrameTexture, PartyMemberFrame1Texture, PartyMemberFrame2Texture, PartyMemberFrame3Texture, PartyMemberFrame4Texture, PartyMemberFrame1PetFrameTexture, PartyMemberFrame2PetFrameTexture, PartyMemberFrame3PetFrameTexture, PartyMemberFrame4PetFrameTexture, FocusFrameTextureFrameTexture, TargetFrameToTTextureFrameTexture, FocusFrameToTTextureFrameTexture, BonusActionBarFrameTexture0, BonusActionBarFrameTexture1, BonusActionBarFrameTexture2, BonusActionBarFrameTexture3, BonusActionBarFrameTexture4, MainMenuBarTexture0, MainMenuBarTexture1, MainMenuBarTexture2, MainMenuBarTexture3, MainMenuMaxLevelBar0, MainMenuMaxLevelBar1, MainMenuMaxLevelBar2, MainMenuMaxLevelBar3, MinimapBorder, CastingBarFrameBorder, FocusFrameSpellBarBorder, TargetFrameSpellBarBorder, MiniMapTrackingButtonBorder, MiniMapLFGFrameBorder, MiniMapBattlefieldBorder, MiniMapMailBorder, select(1, TimeManagerClockButton:GetRegions()), --select(1, GameTimeFrame:GetRegions()), }) do v:SetVertexColor(.4, .4, .4) end for i,v in pairs({ select(2, TimeManagerClockButton:GetRegions()), }) do v:SetVertexColor(1, 1, 1) end self:UnregisterEvent("ADDON_LOADED") ef:SetScript("OnEvent", nil) end end) for i,v in pairs({ MainMenuBarLeftEndCap, MainMenuBarRightEndCap, }) do v:SetVertexColor(.35, .35, .35) end t100p="Interface\\Icons\\ability_rogue_shadowdance";t100=CFrame(Frame); func1(t100,640,560,"cd100",t101p,22,true);t100:SetScript(E,function(self,event,...) func2(t100,cd100,select(1,...),select(5,...),51713,60) end); ---------------------------------------------------------------------------------------------------- --PartyTrinkets-- ---------------------------------------------------------------------------------------------------- local trinkets = {} local events = CreateFrame("Frame") local partyFrame, trinket for i = 1, MAX_PARTY_MEMBERS do partyFrame = "PartyMemberFrame"..i trinket = CreateFrame("Cooldown", partyFrame.."Trinket") trinket:SetPoint("TOPRIGHT", partyFrame, 30, -6) trinket:SetSize(24, 24) trinket.icon = trinket:CreateTexture(nil, "BACKGROUND") trinket.icon:SetAllPoints() trinket.icon:SetTexture("Interface\\Icons\\inv_jewelry_trinketpvp_02") trinket:Hide() trinkets["party"..i] = trinket end function events:UNIT_SPELLCAST_SUCCEEDED(unitID, spell, rank, lineID, spellID) if not trinkets[unitID] then return end if spellID == 59752 or spellID == 42292 then CooldownFrame_SetTimer(trinkets[unitID], GetTime(), 120, 1) elseif spellID == 7744 then CooldownFrame_SetTimer(trinkets[unitID], GetTime(), 45, 1) end end function events:PLAYER_ENTERING_WORLD() local _, instanceType = IsInInstance() if instanceType == "arena" then self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") elseif instanceType == "none" then self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") elseif self:IsEventRegistered("UNIT_SPELLCAST_SUCCEEDED") then self:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED") for _, trinket in pairs(trinkets) do trinket:SetCooldown(0, 0) trinket:Hide() end end end events:SetScript("OnEvent", function(self, event, ...) return self[event](self, ...) end) events:RegisterEvent("PLAYER_ENTERING_WORLD") LARGE_NUMBER_SEPERATOR = "," hooksecurefunc("PlayerFrame_UpdateStatus", function() if IsResting("player") then PlayerStatusTexture:Hide() PlayerRestIcon:Hide() PlayerRestGlow:Hide() PlayerStatusGlow:Hide() elseif PlayerFrame.inCombat then PlayerStatusTexture:Hide() PlayerAttackIcon:Hide() PlayerRestIcon:Hide() PlayerAttackGlow:Hide() PlayerRestGlow:Hide() PlayerStatusGlow:Hide() PlayerAttackBackground:Hide() end end) hooksecurefunc(getmetatable(PlayerFrameHealthBar).__index,"Show",function(s) if s:GetParent().healthbar then if s.st == nil then s:SetStatusBarTexture("Interface\\TokenFrame\\UI-TokenFrame-CategoryButton") s:GetStatusBarTexture():SetDesaturated(1) s:GetStatusBarTexture():SetTexCoord(0, 1, .609375, .796875) s:GetStatusBarTexture():SetHorizTile(true) s.st = true end end end) UnitSelectionColor = function(unit) if not UnitExists(unit) then return 1,1,1,1 end local color = UnitIsPlayer(unit) and RAID_CLASS_COLORS[select(2, UnitClass(unit))] or FACTION_BAR_COLORS[unitReaction(unit, 'player')] if color then if not UnitIsConnected(unit) then return .5, .5, .5, 1 else return 0, 0, 0, 0.5 end else if UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) then return .5, .5, .5, 1 end end end LARGE_NUMBER_SEPERATOR = "," local f = CreateFrame("FRAME"); f:SetScript("OnEvent", function(self,event,...) local arg1 =...; if (arg1=="Blizzard_CombatText") then f:UnregisterEvent("ADDON_LOADED"); hooksecurefunc("CombatText_UpdateDisplayedMessages", function () COMBAT_TEXT_LOCATIONS = {startX = 100, startY = 384 * COMBAT_TEXT_Y_SCALE, endX =200, endY = 609 * COMBAT_TEXT_Y_SCALE}; end); end end); f:RegisterEvent("ADDON_LOADED") hooksecurefunc('TargetFrame_CheckFaction', function(self) if ( not UnitPlayerControlled(self.unit) and UnitIsTapped(self.unit) and not UnitIsTappedByPlayer(self.unit) and not UnitIsTappedByAllThreatList(self.unit) ) then self.nameBackground:SetVertexColor(0.0, 0.0, 0.0, 0.5); if ( self.portrait ) then self.portrait:SetVertexColor(0.5, 0.5, 0.5); end else self.nameBackground:SetVertexColor(0.0, 0.0, 0.0, 0.5); if ( self.portrait ) then self.portrait:SetVertexColor(1.0, 1.0, 1.0); end end end) Спасибо, что убили время из своей жизни на прочтения данной темы. З.Ы. если возникли вопросы - задавайте в теме или пишите в скайп, приятной игры, друзья :bye: 3 Link to comment Share on other sites More sharing options...
Saler Posted April 26, 2014 Share Posted April 26, 2014 а можно сделать что бы отображался спек, а не класс? ищу в апи функцию, но не как найти не могу:( Link to comment Share on other sites More sharing options...
Илюминати Posted April 26, 2014 Author Share Posted April 26, 2014 а можно сделать что бы отображался спек, а не класс? ищу в апи функцию, но не как найти не могу:( Если честно даже не задумывался над этим, я подумаю, что можно сделать. Link to comment Share on other sites More sharing options...
Vasya Professional Posted May 21, 2014 Share Posted May 21, 2014 Если честно даже не задумывался над этим, я подумаю, что можно сделать. Аддон SeeCD показывает спек игрока. Вероятно, способ отображения в твоих скриптах можно использовать аналогичный. Дату тредика не посмотрел -_- Link to comment Share on other sites More sharing options...
permin Posted May 21, 2014 Share Posted May 21, 2014 Вася некропостер. :troll1: Link to comment Share on other sites More sharing options...
petyhorde Posted March 25, 2020 Share Posted March 25, 2020 Кто шарит в этом помогите, аддон с скриптами не работает Link to comment Share on other sites More sharing options...
Wokoko Posted April 1, 2020 Share Posted April 1, 2020 Если честно даже не задумывался над этим, я подумаю, что можно сделать. Кинь шрифт свой пж Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now