WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   Lua/XML Help (https://www.wowinterface.com/forums/forumdisplay.php?f=16)
-   -   a combattext lua (no error, but smthng not working) (https://www.wowinterface.com/forums/showthread.php?t=37381)

strickland 12-05-10 05:27 PM

a combattext lua (no error, but smthng not working)
 
hi guys, I'm not very good in lua, but what I did to this code is, I've added from another combattext to this combattext, something that I really like. its just a simple on certain buff I get, it puts a MSG in my screen and plays a sound, here's the full code , all credit goes to 1) wild for his code, and 2) evl for the thing that I copied into wild's.


Code:

local addonName, ns = ...

local module = {}
module.name = "CombatText"
module.Init = function()
        if not SCDB.modules[module.name] then return end
        if SCDB[module.name] == nil then SCDB[module.name] = {} end
        if SCDB[module.name]["StartX"] == nil then SCDB[module.name]["StartX"] = 305 end
        if SCDB[module.name]["EndX"] == nil then SCDB[module.name]["EndX"] = 305 end
        if SCDB[module.name]["StartY"] == nil then SCDB[module.name]["StartY"] = 550 end
        if SCDB[module.name]["EndY"] == nil then SCDB[module.name]["EndY"] = 300 end
        if SCDB[module.name]["Raid announce"] == nil then SCDB[module.name]["Raid announce"] = false end
        if SCDB[module.name]["Party announce"] == nil then SCDB[module.name]["Party announce"] = false end
        if SCDB[module.name]["Yell announce"] == nil then SCDB[module.name]["Yell announce"] = true end
        if SCDB[module.name]["Say announce"] == nil then SCDB[module.name]["Say announce"] = false end
        if SCDB[module.name]["Play sounds"] == nil then SCDB[module.name]["Play sounds"] = true end
        local opts = SCDB[module.name]

        local lastKillTime = 0
        local killingStreak = 0
        local multiKill = 0
        local MULTI_KILL_HOLD_TIME = 11.5
        local bit_band = bit.band
        local bit_bor = bit.bor
    local pendingSound

    local spreeSounds = {
        [3] = "Killing_Spree",
        [4] = "Dominating",
        [5] = "Mega_Kill",
        [6] = "Unstoppable",
        [7] = "Wicked_Sick",
        [8] = "Monster_Kill",
        [9] = "Ludicrous_Kill",
        [10] = "God_Like",
        [11] = "Holy_****"
    }

    local multiSounds = {
        [2] = "Double_Kill",
        [3] = "Triple_Kill",
    }
   
    local path = "Interface\\AddOns\\SuperClassic\\media\\sounds\\%s.mp3"
   
        local function hasFlag(flags, flag)
                return bit_band(flags, flag) == flag
        end

    -- by Evl
    local playSounds = function()
        local multiFileName = multiSounds[math.min(3, multiKill)]
        local spreeFileName = spreeSounds[math.min(11, killingStreak)]

        if multiFileName then
            PlaySoundFile(string.format(path, multiFileName))
        end

        if spreeFileName then
            local spreeFilePath = string.format(path, spreeFileName)

            if not multiFileName then
                PlaySoundFile(spreeFilePath)
            else
                pendingSound = spreeFilePath
            end
        end
    end

        local extraCombatText = CreateFrame("Frame")
        extraCombatText:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
        extraCombatText:RegisterEvent("PLAYER_DEAD")
        extraCombatText:RegisterEvent("ADDON_LOADED")
        extraCombatText:SetScript("OnEvent", function(self, event, ...)
                if event == "COMBAT_LOG_EVENT_UNFILTERED" then
                        timestamp, eventType, sourceGUID, sourceName, sourceFlags, destGUID, destName, destFlags = ...
                        -- Killing blows
                        if eventType == "PARTY_KILL" and hasFlag(sourceFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) and hasFlag(destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) then
                                if COMBAT_TEXT_TYPE_INFO then
                                        if SCDB[module.name]["Raid announce"] then
                                                SendChatMessage("Killing Blow! (" .. destName .. ")", "RAID")
                                        end
                                        if SCDB[module.name]["Party announce"] then
                                                CombatText_AddMessage("Killing Blow! (" .. destName .. ")", COMBAT_TEXT_SCROLL_FUNCTION, .9, .2, .2, "crit", nil)
                                        end
                                        if SCDB[module.name]["Yell announce"] then
                                                SendChatMessage("Killing Blow! (" .. destName .. ")", "YELL")
                                        end
                                        if SCDB[module.name]["Say announce"] then
                                                SendChatMessage("Killing Blow! (" .. destName .. ")", "SAY")
                                        end
                                end

                                local now = GetTime()
               
                                if lastKillTime + MULTI_KILL_HOLD_TIME > now then
                                        multiKill = multiKill + 1
                                else
                                        multiKill = 1
                                end
               
                                lastKillTime = now
                                killingStreak = killingStreak + 1
                if opts["Play sounds"] then
                    playSounds()
                end
               
                        -- Interrupts
                        elseif eventType == "SPELL_INTERRUPT" and hasFlag(sourceFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) then
                                local extraSpellID, extraSpellName, extraSpellSchool = select(12, ...)
                                if SCDB[module.name]["Raid announce"] then
                                        SendChatMessage(format("%s Interrupted!", GetSpellLink(extraSpellID)), "RAID")
                                end
                                if SCDB[module.name]["Party announce"] then
                                        CombatText_AddMessage(format("%s Interrupted!", extraSpellName), COMBAT_TEXT_SCROLL_FUNCTION, .1, .1, 1, nil, nil)
                                end
                                if SCDB[module.name]["Yell announce"] then
                                        SendChatMessage(format("%s Interrupted!", GetSpellLink(extraSpellID)), "YELL")
                                end
                                if SCDB[module.name]["Say announce"] then
                                        SendChatMessage(format("%s Interrupted!", GetSpellLink(extraSpellID)), "SAY")
                                end
                        end
                        if eventType == "SPELL_AURA_APPLIED" and hasFlag(destFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) then
                                local extraSpellID, extraSpellName = ...
               
                                -- Clearcasting
                                if extraSpellName == "Shield Wall" then
                                        CombatText_AddMessage("WALL UP!", COMBAT_TEXT_SCROLL_FUNCTION, .7, .7, 1, "crit", nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\sohelp02.mp3")
                                elseif extraSpellName == "Barkskin" then
                                        CombatText_AddMessage("Barkskinned!", COMBAT_TEXT_SCROLL_FUNCTION, .7, .7, 1, "crit", nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\sohelp02.mp3")
                                elseif extraSpellName == "Wrath of Elune" then
                                        --CombatText_AddMessage("Wrath of Elune!", COMBAT_TEXT_SCROLL_FUNCTION, 255, 204, 0, nil, nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\groovy02.mp3")
                                elseif extraSpellName =="Shooting Stars" then
                                        --CombatText_AddMessage("Shooting Stars!", COMBAT_TEXT_SCROLL_FUNCTION, 255, 0, 255, nil, nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\groovy02.mp3")
                                elseif extraSpellName == "Taste for Blood" then
                                        CombatText_AddMessage("Overpower!", COMBAT_TEXT_SCROLL_FUNCTION, 255, 204, 0, nil, nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\groovy02.mp3")
                                elseif extraSpellName == "Nature's Grace" then
                                        --CombatText_AddMessage("NG!", COMBAT_TEXT_SCROLL_FUNCTION, .7, 0.7, 1, "crit", nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\RockBiterImpact.mp3")
                                -- Slam!
                                elseif extraSpellName == "Slam!" then
                                        CombatText_AddMessage("Slam!", COMBAT_TEXT_SCROLL_FUNCTION, .7, .7, 1, "crit", nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\groovy02.mp3")
                                elseif extraSpellName == "Sword and Board!" then
                                        CombatText_AddMessage("Sword and Board!", COMBAT_TEXT_SCROLL_FUNCTION, .7, .7, 1, "crit", nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\groovy02.mp3")
                                elseif extraSpellName == "Shield Block" then
                                        CombatText_AddMessage("BLOCK THAT ****!", COMBAT_TEXT_SCROLL_FUNCTION, .7, .7, 1, "crit", nil)
                                        PlaySoundFile("Interface\\AddOns\\SuperClassic\\media\\sounds\\sohelp02.mp3")
                                end

                elseif event == "PLAYER_DEAD" then
                        killingStreak = 0
                end
        end
end)

    extraCombatText:SetScript("OnUpdate", function(self, elapsed)
        if self.lastUpdate == nil then self.lastUpdate = 0 end
        self.lastUpdate = self.lastUpdate + elapsed
        if self.lastUpdate > 2 then
            self.lastUpdate = 0
            if pendingSound then
                PlaySoundFile(pendingSound)
                pendingSound = nil
            end
        end
    end)
       
        --COMBAT_TEXT_TYPE_INFO["ENTERING_COMBAT"] = { r = 0.1, g = 0.1, b = 1 }
        --COMBAT_TEXT_TYPE_INFO["LEAVING_COMBAT"] = { r = 0.1, g = 0.1, b = 1 }
        --COMBAT_TEXT_TYPE_INFO["COMBO_POINTS"] = { r = 0.7, g = 0.7, b = 1 }

        COMBAT_TEXT_TYPE_INFO["ENTERING_COMBAT"].r = 0.1
        COMBAT_TEXT_TYPE_INFO["ENTERING_COMBAT"].g = 0.1
        COMBAT_TEXT_TYPE_INFO["ENTERING_COMBAT"].b = 1
        COMBAT_TEXT_TYPE_INFO["LEAVING_COMBAT"].r = 0.1
        COMBAT_TEXT_TYPE_INFO["LEAVING_COMBAT"].g = 0.1
        COMBAT_TEXT_TYPE_INFO["LEAVING_COMBAT"].b = 1
        COMBAT_TEXT_TYPE_INFO["COMBO_POINTS"].r = 0.7
        COMBAT_TEXT_TYPE_INFO["COMBO_POINTS"].g = 0.7
        COMBAT_TEXT_TYPE_INFO["COMBO_POINTS"].b = 1

       
        COMBAT_TEXT_DEFLECT = "Deflect"
        COMBAT_TEXT_REFLECT = "Reflect"
        COMBAT_TEXT_IMMUNE = "Immune"
        COMBAT_TEXT_RESIST = "Resist"
        COMBAT_TEXT_ABSORB = "Absorb"
        COMBAT_TEXT_BLOCK = "Block"
        COMBAT_TEXT_DODGE = "Dodge"
        COMBAT_TEXT_PARRY = "Parry"
        COMBAT_TEXT_EVADE = "Evade"
        COMBAT_TEXT_MISS = "Miss"

        DEFLECT = "Deflect"
        REFLECT = "Reflect"
        IMMUNE = "Immune"
        RESIST = "Resist"
        ABSORB = "Absorb"
        BLOCK = "Block"
        DODGE = "Dodge"
        PARRY = "Parry"
        EVADE = "Evade"
        MISS = "Miss"

        BLOCK_TRAILER = "(Block %d)"
        ABSORB_TRAILER = "(Absorb %d)"
        RESIST_TRAILER = "(Resist %d)"

        ENTERING_COMBAT = "+COMBAT+"
        LEAVING_COMBAT = "-COMBAT-"
        COMBAT_TEXT_SCROLLSPEED = 2
       
        HEALTH_LOW = "Oh ****!"
        MANA_LOW = "MANA LOW!"
       
        hooksecurefunc("CombatText_UpdateDisplayedMessages", function ()
                COMBAT_TEXT_LOCATIONS = {
                        startX  = opts.StartX,
                        startY = opts.StartY * COMBAT_TEXT_Y_SCALE,
                        endX = opts.EndX,
                        endY = opts.EndY * COMBAT_TEXT_Y_SCALE
                }
        end)

end
tinsert(SuperClassic.modules, module) -- finish him!


bear in mind that I get no lua error at all, and everything else working fine, except this COLORED thing which I hilighted for you, its not working at all, and no error at all.

no sound, no msg, and the sound is there in the path.

help would be nice, I really couldn't figure out why its not working for me

p3lim 12-05-10 07:19 PM

I see no function named "hasFlag", which is used in your piece of code.

strickland 12-05-10 07:26 PM

Quote:

Originally Posted by p3lim (Post 221697)
I see no function named "hasFlag", which is used in your piece of code.


thanks alot, I am not good in coding in all honesty I just put together two codes from two authers, is there an easy way to add this function, like one line or something :D , I know coders don't like these questions, hope i'm not troubling you, just want this to work and i'm all done

p3lim 12-05-10 08:07 PM

Quote:

Originally Posted by strickland (Post 221699)
thanks alot, I am not good in coding in all honesty I just put together two codes from two authers, is there an easy way to add this function, like one line or something :D , I know coders don't like these questions, hope i'm not troubling you, just want this to work and i'm all done

Grab the function and stick it to the top of the file.

strickland 12-05-10 11:19 PM

Quote:

Originally Posted by p3lim (Post 221716)
Grab the function and stick it to the top of the file.

ok, ive tried my best , and put in the effort to try and make it work, went into evl's code to find the function you meant to put in the top of the file, found this.


Code:


function addon:COMBAT_LOG_EVENT_UNFILTERED(event, timestamp, eventType, sourceGUID, sourceName, sourceFlags, destGUID, destName, destFlags, ...)

I put that in the top of file, "No error" but also didn't work. and I looked over the other lines that has NoFlags word in it, all the things that has NoFlags in it, was in the current combattext i'm using. so I didn't add them because theyre already there.... sorry But you tell me to grab the function, and i'm not sure what is the function actually. :( :confused:

Wildbreath 12-06-10 03:56 AM

Hi, strick

local extraSpellID, extraSpellName = select(12, ...)

and please, use a spell ID's because a localization issues (if you want to send this code to others)
You can get it from wowhead (numbers in url, when you seeing a spell)

strickland 12-06-10 04:33 AM

Quote:

Originally Posted by Wildbreath (Post 221759)
Hi, strick

local extraSpellID, extraSpellName = select(12, ...)

and please, use a spell ID's because a localization issues (if you want to send this code to others)
You can get it from wowhead (numbers in url, when you seeing a spell)

Hi wild i love u :D ... thanks but i already guessed this and tried it yesterday and i also try it now to double sure, it didnt work also :confused:


EDIT: I'm still stuck into this, could someone nice help me too <3 hehe :) what am I missing


All times are GMT -6. The time now is 04:11 PM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI