[Friends] Fix bugs
This commit is contained in:
parent
deb2508b8d
commit
33c799b66e
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Components
|
namespace Components
|
||||||
{
|
{
|
||||||
|
int Friends::InitialState;
|
||||||
unsigned int Friends::CurrentFriend;
|
unsigned int Friends::CurrentFriend;
|
||||||
std::recursive_mutex Friends::Mutex;
|
std::recursive_mutex Friends::Mutex;
|
||||||
std::vector<Friends::Friend> Friends::FriendsList;
|
std::vector<Friends::Friend> Friends::FriendsList;
|
||||||
@ -65,17 +66,10 @@ namespace Components
|
|||||||
entry->name = Steam::Proxy::SteamFriends->GetFriendPersonaName(user);
|
entry->name = Steam::Proxy::SteamFriends->GetFriendPersonaName(user);
|
||||||
entry->playerName = Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_name");
|
entry->playerName = Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_name");
|
||||||
entry->online = Steam::Proxy::SteamFriends->GetFriendPersonaState(user) != 0;
|
entry->online = Steam::Proxy::SteamFriends->GetFriendPersonaState(user) != 0;
|
||||||
entry->playing = atoi(std::string(Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_playing")).data()) == 1;
|
entry->playing = atoi(Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_playing")) == 1;
|
||||||
entry->guid.Bits = strtoull(std::string(Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_guid")).data(), nullptr, 16);
|
entry->guid.Bits = strtoull(Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_guid"), nullptr, 16);
|
||||||
|
entry->experience = atoi(Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_experience"));
|
||||||
std::string rank = Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_rank");
|
entry->prestige = atoi(Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_prestige"));
|
||||||
if (rank.size() == 4)
|
|
||||||
{
|
|
||||||
int data = *reinterpret_cast<int*>(const_cast<char*>(rank.data()));
|
|
||||||
|
|
||||||
entry->experience = data & 0xFFFFFF;
|
|
||||||
entry->prestige = (data >> 24) & 0xFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string server = Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_server");
|
std::string server = Steam::Proxy::SteamFriends->GetFriendRichPresence(user, "iw4x_server");
|
||||||
Network::Address oldAddress = entry->server;
|
Network::Address oldAddress = entry->server;
|
||||||
@ -182,7 +176,8 @@ namespace Components
|
|||||||
{
|
{
|
||||||
levelVal.set(level);
|
levelVal.set(level);
|
||||||
|
|
||||||
Friends::SetPresence("iw4x_rank", std::string(reinterpret_cast<char*>(&level), 4));
|
Friends::SetPresence("iw4x_experience", Utils::String::VA("%d", experience));
|
||||||
|
Friends::SetPresence("iw4x_prestige", Utils::String::VA("%d", prestige));
|
||||||
Friends::UpdateState();
|
Friends::UpdateState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -220,10 +215,7 @@ namespace Components
|
|||||||
|
|
||||||
Friends::UpdateUserInfo(id);
|
Friends::UpdateUserInfo(id);
|
||||||
|
|
||||||
if (Steam::Proxy::SteamFriends)
|
Steam::Proxy::SteamFriends->RequestFriendRichPresence(id);
|
||||||
{
|
|
||||||
Steam::Proxy::SteamFriends->RequestFriendRichPresence(id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,8 +315,6 @@ namespace Components
|
|||||||
if (Steam::Proxy::SteamFriends) Steam::Proxy::SteamFriends->RequestFriendRichPresence(state->m_ulSteamID);
|
if (Steam::Proxy::SteamFriends) Steam::Proxy::SteamFriends->RequestFriendRichPresence(state->m_ulSteamID);
|
||||||
});
|
});
|
||||||
|
|
||||||
QuickPatch::Once(Friends::UpdateFriends);
|
|
||||||
|
|
||||||
// Update state when connecting/disconnecting
|
// Update state when connecting/disconnecting
|
||||||
Utils::Hook(0x403582, Friends::DisconnectStub, HOOK_CALL).install()->quick();
|
Utils::Hook(0x403582, Friends::DisconnectStub, HOOK_CALL).install()->quick();
|
||||||
Utils::Hook(0x4CD023, Friends::SetServer, HOOK_JUMP).install()->quick();
|
Utils::Hook(0x4CD023, Friends::SetServer, HOOK_JUMP).install()->quick();
|
||||||
@ -364,8 +354,32 @@ namespace Components
|
|||||||
|
|
||||||
UIFeeder::Add(6.0f, Friends::GetFriendCount, Friends::GetFriendText, Friends::SelectFriend);
|
UIFeeder::Add(6.0f, Friends::GetFriendCount, Friends::GetFriendText, Friends::SelectFriend);
|
||||||
|
|
||||||
Friends::SetPresence("iw4x_playing", "1");
|
QuickPatch::OnShutdown([]()
|
||||||
Friends::SetPresence("iw4x_guid", Utils::String::VA("%llX", Steam::SteamUser()->GetSteamID().Bits));
|
{
|
||||||
|
Friends::ClearPresence("iw4x_server");
|
||||||
|
Friends::ClearPresence("iw4x_playing");
|
||||||
|
|
||||||
|
Steam::Proxy::SteamFriends->ClearRichPresence();
|
||||||
|
|
||||||
|
if(Steam::Proxy::SteamLegacyFriends)
|
||||||
|
{
|
||||||
|
Steam::Proxy::SteamLegacyFriends->SetPersonaState(Friends::InitialState);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
QuickPatch::Once([]()
|
||||||
|
{
|
||||||
|
if (Steam::Proxy::SteamLegacyFriends)
|
||||||
|
{
|
||||||
|
Friends::InitialState = Steam::Proxy::SteamLegacyFriends->GetPersonaState();
|
||||||
|
}
|
||||||
|
|
||||||
|
Friends::SetPresence("iw4x_playing", "1");
|
||||||
|
Friends::SetPresence("iw4x_guid", Utils::String::VA("%llX", Steam::SteamUser()->GetSteamID().Bits));
|
||||||
|
Friends::UpdateState();
|
||||||
|
|
||||||
|
Friends::UpdateFriends();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Friends::~Friends()
|
Friends::~Friends()
|
||||||
|
@ -49,6 +49,7 @@ namespace Components
|
|||||||
int prestige;
|
int prestige;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int InitialState;
|
||||||
static unsigned int CurrentFriend;
|
static unsigned int CurrentFriend;
|
||||||
static std::recursive_mutex Mutex;
|
static std::recursive_mutex Mutex;
|
||||||
static std::vector<Friend> FriendsList;
|
static std::vector<Friend> FriendsList;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user