From 0eaa226dce9038c31ef9977b000c39238ad7c761 Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sun, 15 Oct 2023 10:47:19 +0200 Subject: [PATCH] Change JSON field types send to master server They were all strings; changed them to what made most sense for each field type. Changes: "hidden": string -> bool "port": string -> int "checksum": string -> uint "playerCount": string -> int "maxPlayers": string -> int --- r5dev/engine/host_state.cpp | 8 +++--- r5dev/game/client/vscript_client.cpp | 12 ++++----- r5dev/gameui/IBrowser.cpp | 18 +++++++------ r5dev/networksystem/listmanager.cpp | 10 ++++---- r5dev/networksystem/listmanager.h | 2 +- r5dev/networksystem/pylon.cpp | 38 ++++++++++++++-------------- r5dev/networksystem/serverlisting.h | 8 +++--- 7 files changed, 49 insertions(+), 47 deletions(-) diff --git a/r5dev/engine/host_state.cpp b/r5dev/engine/host_state.cpp index 68fc614e..cf013480 100644 --- a/r5dev/engine/host_state.cpp +++ b/r5dev/engine/host_state.cpp @@ -339,12 +339,12 @@ void CHostState::Think(void) const g_pHostState->m_levelName, KeyValues_GetCurrentPlaylist(), hostip->GetString(), - hostport->GetString(), + hostport->GetInt(), g_pNetKey->GetBase64NetKey(), - std::to_string(*g_nServerRemoteChecksum), + *g_nServerRemoteChecksum, SDK_VERSION, - std::to_string(g_pServer->GetNumClients()), - std::to_string(g_ServerGlobalVariables->m_nMaxClients), + g_pServer->GetNumClients(), + g_ServerGlobalVariables->m_nMaxClients, std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::system_clock::now().time_since_epoch() ).count() diff --git a/r5dev/game/client/vscript_client.cpp b/r5dev/game/client/vscript_client.cpp index ad503877..e514e717 100644 --- a/r5dev/game/client/vscript_client.cpp +++ b/r5dev/game/client/vscript_client.cpp @@ -204,8 +204,8 @@ namespace VScriptCode return SQ_ERROR; } - const string& playerCount = g_pServerListManager->m_vServerList[iServer].m_svPlayerCount.c_str(); - sq_pushinteger(v, strtol(playerCount.c_str(), NULL, NULL)); + const SQInteger playerCount = g_pServerListManager->m_vServerList[iServer].m_nPlayerCount; + sq_pushinteger(v, playerCount); return SQ_OK; } @@ -223,8 +223,8 @@ namespace VScriptCode return SQ_ERROR; } - const string& maxPlayers = g_pServerListManager->m_vServerList[iServer].m_svMaxPlayers; - sq_pushinteger(v, strtol(maxPlayers.c_str(), NULL, NULL)); + const SQInteger maxPlayers = g_pServerListManager->m_vServerList[iServer].m_nMaxPlayers; + sq_pushinteger(v, maxPlayers); return SQ_OK; } @@ -322,7 +322,7 @@ namespace VScriptCode const NetGameServer_t& gameServer = g_pServerListManager->m_vServerList[iServer]; - g_pServerListManager->ConnectToServer(gameServer.m_svIpAddress, gameServer.m_svGamePort, + g_pServerListManager->ConnectToServer(gameServer.m_svIpAddress, gameServer.m_nGamePort, gameServer.m_svEncryptionKey); return SQ_OK; @@ -344,7 +344,7 @@ namespace VScriptCode bool result = g_pMasterServer->GetServerByToken(netListing, hiddenServerRequestMessage, privateToken); // Send token connect request. if (result) { - g_pServerListManager->ConnectToServer(netListing.m_svIpAddress, netListing.m_svGamePort, netListing.m_svEncryptionKey); + g_pServerListManager->ConnectToServer(netListing.m_svIpAddress, netListing.m_nGamePort, netListing.m_svEncryptionKey); } else { diff --git a/r5dev/gameui/IBrowser.cpp b/r5dev/gameui/IBrowser.cpp index 5544f549..6b6ffe2b 100644 --- a/r5dev/gameui/IBrowser.cpp +++ b/r5dev/gameui/IBrowser.cpp @@ -295,7 +295,9 @@ void CBrowser::BrowserPanel(void) const char* pszHostName = server.m_svHostName.c_str(); const char* pszHostMap = server.m_svHostMap.c_str(); const char* pszPlaylist = server.m_svPlaylist.c_str(); - const char* pszHostPort = server.m_svGamePort.c_str(); + + char pszHostPort[32]; + sprintf(pszHostPort, "%d", server.m_nGamePort); if (m_imServerBrowserFilter.PassFilter(pszHostName) || m_imServerBrowserFilter.PassFilter(pszHostMap) @@ -311,7 +313,7 @@ void CBrowser::BrowserPanel(void) ImGui::Text("%s", pszPlaylist); ImGui::TableNextColumn(); - ImGui::Text("%s", Format("%3d/%3d", strtol(server.m_svPlayerCount.c_str(), NULL, NULL), strtol(server.m_svMaxPlayers.c_str(), NULL, NULL)).c_str()); + ImGui::Text("%s", Format("%3d/%3d", server.m_nPlayerCount, server.m_nMaxPlayers).c_str()); ImGui::TableNextColumn(); ImGui::Text("%s", pszHostPort); @@ -322,7 +324,7 @@ void CBrowser::BrowserPanel(void) if (ImGui::Button(svConnectBtn.c_str())) { - g_pServerListManager->ConnectToServer(server.m_svIpAddress, pszHostPort, server.m_svEncryptionKey); + g_pServerListManager->ConnectToServer(server.m_svIpAddress, server.m_nGamePort, server.m_svEncryptionKey); } } } @@ -441,7 +443,7 @@ void CBrowser::HiddenServersModal(void) if (result && !server.m_svHostName.empty()) { - g_pServerListManager->ConnectToServer(server.m_svIpAddress, server.m_svGamePort, server.m_svEncryptionKey); // Connect to the server + g_pServerListManager->ConnectToServer(server.m_svIpAddress, server.m_nGamePort, server.m_svEncryptionKey); // Connect to the server m_svHiddenServerRequestMessage = Format("Found server: %s", server.m_svHostName.c_str()); m_ivHiddenServerMessageColor = ImVec4(0.00f, 1.00f, 0.00f, 1.00f); ImGui::CloseCurrentPopup(); @@ -745,12 +747,12 @@ void CBrowser::UpdateHostingStatus(void) g_pHostState->m_levelName, KeyValues_GetCurrentPlaylist(), hostip->GetString(), - hostport->GetString(), + hostport->GetInt(), g_pNetKey->GetBase64NetKey(), - std::to_string(*g_nServerRemoteChecksum), + *g_nServerRemoteChecksum, SDK_VERSION, - std::to_string(g_pServer->GetNumClients()), - std::to_string(g_ServerGlobalVariables->m_nMaxClients), + g_pServer->GetNumClients(), + g_ServerGlobalVariables->m_nMaxClients, std::chrono::duration_cast<std::chrono::milliseconds>( std::chrono::system_clock::now().time_since_epoch() ).count() diff --git a/r5dev/networksystem/listmanager.cpp b/r5dev/networksystem/listmanager.cpp index a4779dac..f87e2ba5 100644 --- a/r5dev/networksystem/listmanager.cpp +++ b/r5dev/networksystem/listmanager.cpp @@ -83,16 +83,16 @@ void CServerListManager::LaunchServer(const bool bChangeLevel) const //----------------------------------------------------------------------------- // Purpose: connects to specified server // Input : &svIp - -// &svPort - +// nPort - // &svNetKey - //----------------------------------------------------------------------------- -void CServerListManager::ConnectToServer(const string& svIp, const string& svPort, const string& svNetKey) const +void CServerListManager::ConnectToServer(const string& svIp, const int nPort, const string& svNetKey) const { if (!ThreadInMainThread()) { - g_TaskScheduler->Dispatch([this, svIp, svPort, svNetKey]() + g_TaskScheduler->Dispatch([this, svIp, nPort, svNetKey]() { - this->ConnectToServer(svIp, svPort, svNetKey); + this->ConnectToServer(svIp, nPort, svNetKey); }, 0); return; } @@ -101,7 +101,7 @@ void CServerListManager::ConnectToServer(const string& svIp, const string& svPor { NET_SetKey(svNetKey); } - ProcessCommand(Format("%s \"[%s]:%s\"", "connect", svIp.c_str(), svPort.c_str()).c_str()); + ProcessCommand(Format("%s \"[%s]:%i\"", "connect", svIp.c_str(), nPort).c_str()); } //----------------------------------------------------------------------------- diff --git a/r5dev/networksystem/listmanager.h b/r5dev/networksystem/listmanager.h index 73fc78bc..b6377682 100644 --- a/r5dev/networksystem/listmanager.h +++ b/r5dev/networksystem/listmanager.h @@ -24,7 +24,7 @@ public: void ClearServerList(void); void LaunchServer(const bool bChangeLevel) const; - void ConnectToServer(const string& svIp, const string& svPort, const string& svNetKey) const; + void ConnectToServer(const string& svIp, const int nPort, const string& svNetKey) const; void ConnectToServer(const string& svServer, const string& svNetKey) const; void ProcessCommand(const char* pszCommand) const; diff --git a/r5dev/networksystem/pylon.cpp b/r5dev/networksystem/pylon.cpp index f9bb0e18..41ee01db 100644 --- a/r5dev/networksystem/pylon.cpp +++ b/r5dev/networksystem/pylon.cpp @@ -20,15 +20,15 @@ static bool IsServerListingValid(const rapidjson::Value& value) { if (value.HasMember("name") && value["name"].IsString() && value.HasMember("description") && value["description"].IsString() && - value.HasMember("hidden") && value["hidden"].IsString() && // TODO: Bool??? + value.HasMember("hidden") && value["hidden"].IsBool() && value.HasMember("map") && value["map"].IsString() && value.HasMember("playlist") && value["playlist"].IsString() && value.HasMember("ip") && value["ip"].IsString() && - value.HasMember("port") && value["port"].IsString() && // TODO: Int32??? + value.HasMember("port") && value["port"].IsInt() && value.HasMember("key") && value["key"].IsString() && - value.HasMember("checksum") && value["checksum"].IsString() && // TODO: Uint32??? - value.HasMember("playerCount") && value["playerCount"].IsString() && // TODO: Int32??? - value.HasMember("maxPlayers") && value["maxPlayers"].IsString())// && // TODO: Int32??? + value.HasMember("checksum") && value["checksum"].IsUint() && + value.HasMember("playerCount") && value["playerCount"].IsInt() && + value.HasMember("maxPlayers") && value["maxPlayers"].IsInt()) { return true; } @@ -85,16 +85,16 @@ vector<NetGameServer_t> CPylon::GetServerList(string& outMessage) const { obj["name"].GetString(), obj["description"].GetString(), - V_strcmp(obj["hidden"].GetString(), "true") == NULL, // TODO: Bool??? + obj["hidden"].GetBool(), obj["map"].GetString(), obj["playlist"].GetString(), obj["ip"].GetString(), - obj["port"].GetString(), // TODO: Int32??? + obj["port"].GetInt(), obj["key"].GetString(), - obj["checksum"].GetString(), // TODO: Uint32??? + obj["checksum"].GetUint(), SDK_VERSION, - obj["playerCount"].GetString(), // TODO: Int32??? - obj["maxPlayers"].GetString(), // TODO: Int32??? + obj["playerCount"].GetInt(), + obj["maxPlayers"].GetInt(), -1, } ); @@ -146,16 +146,16 @@ bool CPylon::GetServerByToken(NetGameServer_t& outGameServer, { serverJson["name"].GetString(), serverJson["description"].GetString(), - V_strcmp(serverJson["hidden"].GetString(), "true") == NULL, // TODO: Bool??? + serverJson["hidden"].GetBool(), serverJson["map"].GetString(), serverJson["playlist"].GetString(), serverJson["ip"].GetString(), - serverJson["port"].GetString(), // TODO: Int32??? + serverJson["port"].GetInt(), serverJson["key"].GetString(), - serverJson["checksum"].GetString(), // TODO: Uint32??? + serverJson["checksum"].GetUint(), SDK_VERSION, - serverJson["playerCount"].GetString(), // TODO: Int32??? - serverJson["maxPlayers"].GetString(), // TODO: Int32??? + serverJson["playerCount"].GetInt(), + serverJson["maxPlayers"].GetInt(), -1, }; @@ -182,12 +182,12 @@ bool CPylon::PostServerHost(string& outMessage, string& outToken, string& outHos requestJson.AddMember("map", rapidjson::Value(netGameServer.m_svHostMap.c_str(), allocator), allocator); requestJson.AddMember("playlist", rapidjson::Value(netGameServer.m_svPlaylist.c_str(), allocator), allocator); requestJson.AddMember("ip", rapidjson::Value(netGameServer.m_svIpAddress.c_str(), allocator), allocator); - requestJson.AddMember("port", rapidjson::Value(netGameServer.m_svGamePort.c_str(), allocator), allocator); // TODO: Int32??? + requestJson.AddMember("port", netGameServer.m_nGamePort, allocator); requestJson.AddMember("key", rapidjson::Value(netGameServer.m_svEncryptionKey.c_str(), allocator), allocator); - requestJson.AddMember("checksum", rapidjson::Value(netGameServer.m_svRemoteChecksum.c_str(), allocator), allocator); // TODO: Uint32??? + requestJson.AddMember("checksum", netGameServer.m_nRemoteChecksum, allocator); requestJson.AddMember("version", rapidjson::Value(netGameServer.m_svSDKVersion.c_str(), allocator), allocator); - requestJson.AddMember("playerCount", rapidjson::Value(netGameServer.m_svPlayerCount.c_str(), allocator), allocator); // TODO: Int32??? - requestJson.AddMember("maxPlayers", rapidjson::Value(netGameServer.m_svMaxPlayers.c_str(), allocator), allocator); // TODO: Int32??? + requestJson.AddMember("playerCount", netGameServer.m_nPlayerCount, allocator); + requestJson.AddMember("maxPlayers", netGameServer.m_nMaxPlayers, allocator); requestJson.AddMember("timeStamp", netGameServer.m_nTimeStamp, allocator); rapidjson::Document responseJson; diff --git a/r5dev/networksystem/serverlisting.h b/r5dev/networksystem/serverlisting.h index f8f2fbdd..906fc840 100644 --- a/r5dev/networksystem/serverlisting.h +++ b/r5dev/networksystem/serverlisting.h @@ -21,14 +21,14 @@ struct NetGameServer_t string m_svPlaylist = "dev_default"; string m_svIpAddress; - string m_svGamePort; // TODO: should be 'int'. + int m_nGamePort; string m_svEncryptionKey; - string m_svRemoteChecksum; // TODO: should be 'unsigned int'. + unsigned int m_nRemoteChecksum; string m_svSDKVersion; - string m_svPlayerCount; // TODO: should be 'int'. - string m_svMaxPlayers; // TODO: should be 'int'. + int m_nPlayerCount; + int m_nMaxPlayers; int64_t m_nTimeStamp = -1; //vector<NetGameMod_t> m_vMods;