Jump to content

Мой UI (Как создать и использовать скрипт)


Илюминати

Recommended Posts

Всем доброго времени суток. :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:

  • Like 3
Link to comment
Share on other sites

  • 4 weeks later...
Если честно даже не задумывался над этим, я подумаю, что можно сделать.

 

Аддон SeeCD показывает спек игрока. Вероятно, способ отображения в твоих скриптах можно использовать аналогичный.

 

Дату тредика не посмотрел -_-

Link to comment
Share on other sites

  • 5 years later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...