Raid Status is a library to share the player information while playing in a group or raid.
Install:
Place the library at your addon folder/libs/LibRaidStatus/
Inside LibRaidStatus there's 5 files.
Add to your libs.xml located in the root folder of the addon or
if it is located inside the Libs folder.
Close and open the game client.
Inside your lua file, get the library object, you need to do this in order to grab a reference of the library:
local raidStatusLib = LibStub:GetLibrary("LibRaidStatus-1.0")
With this object, you can start querying the library for information.
Functions:
local allPlayersGear = raidStatusLib.gearManager.GetAllPlayersGear()
allPlayersGear = {
["playerName1"] = playerGear,
["playerName2"] = playerGear,
["playerName3"] = playerGear,
}
local playerGear = raidStatusLib.gearManager.GetPlayerGear(playerName)
playerGear = {
.durability = number
.ilevel = number
.noGems = {socketId}
.noEnchants = {socketId}
.weaponEnchant = number (oils)
}
local allPlayersCooldowns = raidStatusLib.cooldownManager.GetAllPlayersCooldown()
allPlayersCooldowns = {
["playerName1"] = playerCooldows,
["playerName2"] = playerCooldows,
["playerName3"] = playerCooldows,
}
local playerCooldows = raidStatusLib.cooldownManager.GetPlayerCooldowns(playerName)
playerCooldows = {
[cooldownSpellId] = {
[1] = time left (number),
[2] = charges (number),
[3] = start time (number),
[4] = duration (number)
}
}
local allPlayersInfo = raidStatusLib.playerInfoManager.GetAllPlayersInfo()
allPlayersInfo = {
["playerName1"] = playerInfo,
["playerName2"] = playerInfo,
["playerName3"] = playerInfo,
}
local playerInfo = raidStatusLib.playerInfoManager.GetPlayerInfo(playerName)
playerInfo = {
.specId = number
.renown = number,
.covenantId = number,
.talents = {talentId},
.conduits = {spellId},
}
Callbacks:
===================================================================================================================================
"CooldownListUpdate": triggers when the lib received a list of cooldowns from another player in the group.
===================================================================================================================================
function MyAddonObject.OnReceiveCooldownListUpdate(unitName, playerCooldows, allPlayersCooldowns)
--foreach player in the cooldown table
for unitName, playerCooldows in pairs(allPlayersCooldowns) do
for spellId, cooldownInfoTable in pairs(playerCooldows) do
--time left for the cooldown be ready to use, if time left is zero, the spell is ready
local timeLeft = cooldownInfoTable[1]
--in some cases the spell is on cooldown but there's a charge to use
local charges = cooldownInfoTable[2]
--cooldown start time
local startTime = cooldownInfoTable[3]
--cooldown duration, e.g. 180 for 3 minutes cooldown
local totalDuration = cooldownInfoTable[4]
end
end
--get the cooldowns for the unit which got the cooldown update
local playerCooldows = allPlayersCooldowns[unitName]
for spellId, cooldownInfoTable in pairs(playerCooldows) do
--time left for the cooldown be ready to use, if time left is zero, the spell is ready
local timeLeft = cooldownInfoTable[1]
--in some cases the spell is on cooldown but there's a charge to use
local charges = cooldownInfoTable[2]
--cooldown start time
local startTime = cooldownInfoTable[3]
--cooldown duration, e.g. 180 for 3 minutes cooldown
local totalDuration = cooldownInfoTable[4]
end
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "CooldownListUpdate", "OnReceiveCooldownListUpdate")
===================================================================================================================================
"CooldownUpdate": triggered when any unit in the group used a cooldown or the timeleft got an update
===================================================================================================================================
function MyAddonObject.OnReceiveCooldownUpdate(unitName, spellId, cooldownTimeLeft, charges, startTime, totalDuration, playerCooldows, allPlayersCooldowns)
local unitCooldowns = allPlayersCooldowns[unitName] --is the same as using just 'playerCooldows' variable
--get the cooldowns for the unit which got the cooldown update
for spellId, cooldownInfoTable in pairs(playerCooldows) do
--time left for the cooldown be ready to use, if time left is zero, the spell is ready
local timeLeft = cooldownInfoTable[1]
--in some cases the spell is on cooldown but there's a charge to use
local charges = cooldownInfoTable[2]
--cooldown start time
local startTime = cooldownInfoTable[3]
--cooldown duration, e.g. 180 for 3 minutes cooldown
local totalDuration = cooldownInfoTable[4]
end
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "CooldownUpdate", "OnReceiveCooldownUpdate")
===================================================================================================================================
"CooldownListWiped": when the list of cooldowns get a wipe, usually when the player leave the group
===================================================================================================================================
function MyAddonObject.OnCooldownListWipe(allPlayersCooldowns)
--print ("is nil:", next(allPlayersCooldowns))
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "CooldownListWiped", "OnCooldownListWipe")
===================================================================================================================================
"GearUpdate": when received an update from a player with all information about the gear
===================================================================================================================================
function MyAddonObject.OnGearUpdate(playerName, playerGear, allPlayersGear)
local itemLevelNumber = playerGear.ilevel
local durabilityNumber = playerGear.durability
--hasWeaponEnchant is 1 have enchant or 0 is don't
local hasWeaponEnchantNumber = playerGear.weaponEnchant
local noEnchantTable = playerGear.noEnchants
local noGemsTable = playerGear.noGems
for index, slotIdWithoutEnchant in ipairs (noEnchantTable) do
end
for index, slotIdWithEmptyGemSocket in ipairs (noGemsTable) do
end
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "GearUpdate", "OnGearUpdate")
===================================================================================================================================
"GearDurabilityUpdate": when the gear durability of a player in the group changes
===================================================================================================================================
function MyAddonObject.OnGearDurabilityUpdate(playerName, durability, playerGear, allPlayersGear)
--print(playerName .. " durability is now " .. durability)
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "GearDurabilityUpdate", "OnGearDurabilityUpdate")
===================================================================================================================================
"GearListWiped": when the list of gear get a wipe, usually when the player leave the group
===================================================================================================================================
function MyAddonObject.OnGearListWiped(allPlayersGear)
--print ("is nil:", next(allPlayersGear))
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "GearListWiped", "OnGearListWiped")
===================================================================================================================================
"PlayerUpdate": received a player information about its spec, talents, etc...
===================================================================================================================================
function MyAddonObject.OnPlayerUpdate(playerName, playerInfo, allPlayersInfo)
for unitName, playerInfo in pairs(allPlayersInfo) do
local specId = playerInfo.specId
local renown = playerInfo.renown
local covenantId = playerInfo.covenantId
local talents = playerInfo.talents
local conduits = playerInfo.conduits
end
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "PlayerUpdate", "OnPlayerUpdate")
===================================================================================================================================
"TalentsUpdate": when a unit changed a talent
===================================================================================================================================
function MyAddonObject.OnTalentUpdate(playerName, talents, playerInfo, allPlayersInfo)
for i = 1, 7 do
local talentId = talents[i]
local talentID, name, texture, selected, available = GetTalentInfoByID(talentId)
print(name)
end
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "TalentUpdate", "OnTalentUpdate")
===================================================================================================================================
"OnPlayerDeath": when a player dies
===================================================================================================================================
function MyAddonObject.OnPlayerDeath(playerName)
print(playerName .. " died.")
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "OnPlayerDeath", "OnPlayerDeath")
===================================================================================================================================
"OnPlayerRess": when a player revives
===================================================================================================================================
function MyAddonObject.OnPlayerRess(playerName)
print(playerName .. " is alive.")
end
--registering the callback:
raidStatusLib.RegisterCallback(MyAddonObject, "OnPlayerRess", "OnPlayerRess")