You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
10 KiB
240 lines
10 KiB
|
5 years ago
|
|
||
|
|
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 <Include file="Libs\LibRaidStatus\lib.xml"/> to your libs.xml located in the root folder of the addon or
|
||
|
|
<Include file="LibRaidStatus\lib.xml"/> 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")
|
||
|
|
|