A Cyclonian
Join Date: Apr 2007
Posts: 40
|
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
|