diff --git a/zz_Friends/core.lua b/zz_Friends/core.lua index 1434d5c..9ef3d8b 100644 --- a/zz_Friends/core.lua +++ b/zz_Friends/core.lua @@ -2,7 +2,7 @@ local addonName, addon = ... local childName = addon['childName'] local child = addon[childName] local events = child['events'] -local db, crealm +local db local fmt = "|c0000ff00%i|r/|c0000ffff%i|r|c00ff0000%s|r" local roster,friendroster,bnetroster = {}, {}, {} local GuildRoster = GuildRoster @@ -24,13 +24,29 @@ local function count(v) end return c end +local function getBNFI(friendIndex) + if(C_BattleNet and C_BattleNet.GetFriendAccountInfo) then + return C_BattleNet.GetFriendAccountInfo(friendIndex) + else + local _, _, _, _, characterName, _, client, isOnline = BNGetFriendInfo(friendIndex) + if(characterName and isOnline and client == BNET_CLIENT_WOW) then + return { + ['gameAccountInfo'] = { + ['clientProgram'] = client, + ['characterName'] = characterName, + ['isOnline'] = isOnline + } + } + end + end +end local function checkRoster(self, dummy, event, ...) local newroster = {} local rostername, online, _ local dontShow = false if(event == "GUILD_ROSTER_UPDATE") then - for i=1,GetNumGuildMembers() do + for i = 1, GetNumGuildMembers() do rostername, _, _, _, _, _, _, _, online = GetGuildRosterInfo(i) if(online and rostername) then newroster[rostername]=true @@ -51,13 +67,13 @@ local function checkRoster(self, dummy, event, ...) local _, numOnline = BNGetNumFriends() local presenceID, isFriend,client,accid for i = 1, numOnline do - local res = C_BattleNet.GetFriendAccountInfo(i) + local res = getBNFI(i) if(res) then local aci = res['gameAccountInfo'] dontShow = false if(aci) then if(aci['clientProgram'] == BNET_CLIENT_WOW) then - if(aci['realmName'] == crealm and friendroster[aci['characterName']]) then + if(friendroster[aci['characterName']]) then dontShow = true end end @@ -97,11 +113,8 @@ child['specs'] = { } } function events:PLAYER_ENTERING_WORLD(event) - crealm = GetRealmName() - if(crealm) then - child:UnregisterEvent('PLAYER_ENTERING_WORLD') - child:RegisterEvent({"GUILD_ROSTER_UPDATE","FRIENDLIST_UPDATE","CHAT_MSG_CHANNEL_JOIN","CHAT_MSG_CHANNEL_LEAVE","PLAYER_FLAGS_CHANGED","UNIT_FLAGS","BN_FRIEND_INFO_CHANGED"}, checkRoster) - OnUpdate() - end + child:UnregisterEvent('PLAYER_ENTERING_WORLD') + child:RegisterEvent({"GUILD_ROSTER_UPDATE","FRIENDLIST_UPDATE","CHAT_MSG_CHANNEL_JOIN","CHAT_MSG_CHANNEL_LEAVE","PLAYER_FLAGS_CHANGED","UNIT_FLAGS","BN_FRIEND_INFO_CHANGED"}, checkRoster) + OnUpdate() end child:NewAddOn(...) \ No newline at end of file