More accurate SetLobbyData.

This commit is contained in:
Mr_Goldberg 2022-09-06 13:30:20 -04:00
parent 7e1824290a
commit 802d8bcc8f
No known key found for this signature in database
GPG key ID: 8597D87419DEF278

View file

@ -809,18 +809,21 @@ bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchVal
std::lock_guard<std::recursive_mutex> lock(global_mutex); std::lock_guard<std::recursive_mutex> lock(global_mutex);
Lobby *lobby = get_lobby(steamIDLobby); Lobby *lobby = get_lobby(steamIDLobby);
if (!lobby || lobby->owner() != settings->get_local_steam_id().ConvertToUint64() || lobby->deleted()) { if (!lobby || lobby->deleted()) {
return false; return false;
} }
auto result = caseinsensitive_find(lobby->values(), pchKey);
bool changed = true; bool changed = true;
//callback is always triggered when setlobbydata is called from non owner however no data is actually changed.
if (lobby->owner() == settings->get_local_steam_id().ConvertToUint64()) {
auto result = caseinsensitive_find(lobby->values(), pchKey);
if (result == lobby->values().end()) { if (result == lobby->values().end()) {
(*lobby->mutable_values())[pchKey] = pchValue; (*lobby->mutable_values())[pchKey] = pchValue;
} else { } else {
if (result->second == std::string(pchValue)) changed = false; if (result->second == std::string(pchValue)) changed = false;
(*lobby->mutable_values())[result->first] = pchValue; (*lobby->mutable_values())[result->first] = pchValue;
} }
}
if (changed) if (changed)
trigger_lobby_dataupdate(steamIDLobby, steamIDLobby, true, 0.005, changed); trigger_lobby_dataupdate(steamIDLobby, steamIDLobby, true, 0.005, changed);