From f2c45afbbe5c46a3b484a23c583fec01803bd7e7 Mon Sep 17 00:00:00 2001 From: JAJames Date: Mon, 1 Aug 2016 18:28:43 -0400 Subject: [PATCH] RenX.Core: * Players list is now erased when changing maps using non-seamless travel * PLAYER "Exit;" event no longer has potential to create a PlayerInfo object * Added translations for Communications Center RenX.ServerList: Added levels list to browser.jsp --- Release/Plugins/RenX.Core.lib | Bin 208484 -> 208484 bytes RenX.Core/RenX_Functions.cpp | 4 +++ RenX.Core/RenX_Server.cpp | 53 +++++++++++++++++----------- RenX.ServerList/RenX_ServerList.cpp | 30 +++++++++++++--- 4 files changed, 63 insertions(+), 24 deletions(-) diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index 0a23cdf089b398061af702ed147c85b9fb3bc3c1..c9f7dec6514c3700f8853c13cb9523fe67e28049 100644 GIT binary patch delta 14876 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 OduqrKdurSeGv+@%n#5KB diff --git a/RenX.Core/RenX_Functions.cpp b/RenX.Core/RenX_Functions.cpp index b389463..8f4b4b6 100644 --- a/RenX.Core/RenX_Functions.cpp +++ b/RenX.Core/RenX_Functions.cpp @@ -303,7 +303,9 @@ Jupiter::ReferenceString translated_Building_Obelisk_Internals = STRING_LITERAL_ /** Other structures */ Jupiter::ReferenceString translated_Building_Silo = STRING_LITERAL_AS_REFERENCE("Tiberium Silo"); +Jupiter::ReferenceString translated_Building_CommCentre = STRING_LITERAL_AS_REFERENCE("Communications Center"); Jupiter::ReferenceString translated_Building_Silo_Internals = STRING_LITERAL_AS_REFERENCE("Tiberium Silo"); +Jupiter::ReferenceString translated_Building_CommCentre_Internals = STRING_LITERAL_AS_REFERENCE("Communications Center"); /** Defences */ Jupiter::ReferenceString translated_Defence_GuardTower = STRING_LITERAL_AS_REFERENCE("Guard Tower"); @@ -751,7 +753,9 @@ const Jupiter::ReferenceString RenX::translateName(const Jupiter::ReadableString /** Other structures */ if (object.equals(STRING_LITERAL_AS_REFERENCE("Silo"))) return translated_Building_Silo; + if (object.equals(STRING_LITERAL_AS_REFERENCE("CommCentre"))) return translated_Building_CommCentre; if (object.equals(STRING_LITERAL_AS_REFERENCE("Silo_Internals"))) return translated_Building_Silo_Internals; + if (object.equals(STRING_LITERAL_AS_REFERENCE("CommCentre_Internals"))) return translated_Building_CommCentre_Internals; } else if (object.find(STRING_LITERAL_AS_REFERENCE("Defence_")) == 0) { diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 019a14c..72c0ef8 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -1380,22 +1380,27 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) player = n->data; if (player != nullptr) { - player->score = 0.0f; - player->credits = 0.0f; - player->kills = 0; - player->deaths = 0; - player->suicides = 0; - player->headshots = 0; - player->vehicleKills = 0; - player->buildingKills = 0; - player->defenceKills = 0; - player->beaconPlacements = 0; - player->beaconDisarms = 0; - player->proxy_placements = 0; - player->proxy_disarms = 0; - player->captures = 0; - player->steals = 0; - player->stolen = 0; + if (this->isSeamless()) + { + player->score = 0.0f; + player->credits = 0.0f; + player->kills = 0; + player->deaths = 0; + player->suicides = 0; + player->headshots = 0; + player->vehicleKills = 0; + player->buildingKills = 0; + player->defenceKills = 0; + player->beaconPlacements = 0; + player->beaconDisarms = 0; + player->proxy_placements = 0; + player->proxy_disarms = 0; + player->captures = 0; + player->steals = 0; + player->stolen = 0; + } + else + this->removePlayer(player); } } } @@ -2655,10 +2660,18 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) else if (subHeader.equals("Exit;")) { // Player - RenX::PlayerInfo *player = parseGetPlayerOrAdd(tokens.getToken(2)); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnPart(this, player); - this->removePlayer(player); + Jupiter::ReferenceString playerToken = tokens.getToken(2); + PARSE_PLAYER_DATA_P(playerToken); + + RenX::PlayerInfo *player = getPlayer(id); + //RenX::PlayerInfo *player = parseGetPlayerOrAdd(tokens.getToken(2)); + + if (player != nullptr) + { + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnPart(this, player); + this->removePlayer(player); + } if (this->gameover_when_empty && this->players.size() == this->bot_count) this->gameover(); diff --git a/RenX.ServerList/RenX_ServerList.cpp b/RenX.ServerList/RenX_ServerList.cpp index d7169ab..dc8b201 100644 --- a/RenX.ServerList/RenX_ServerList.cpp +++ b/RenX.ServerList/RenX_ServerList.cpp @@ -254,13 +254,34 @@ Jupiter::StringS server_as_json(const RenX::Server *server) Jupiter::StringS server_as_game(const RenX::Server *server) { - Jupiter::String server_game_block(128); + Jupiter::String server_game_block(256); Jupiter::String server_name = sanitize_game(server->getName()); Jupiter::String server_map = sanitize_game(server->getMap().name); Jupiter::String server_version = sanitize_game(server->getGameVersion()); + Jupiter::String server_levels; - server_game_block.format("\n<@>%.*s~%.*s~%u~%s~%.*s~" "%d;%d;%d;%s;%d;%d;%d;%s;%s;%s;%.*s;%s" "~%u~%d~%s~%s", + RenX::Map *map; + + if (server->maps.size() != 0) + { + map = server->maps.get(0); + server_levels = sanitize_game(RenX::formatGUID(*map)); + server_levels += '='; + server_levels += sanitize_game(map->name); + + for (size_t index = 1; index != server->maps.size(); ++index) + { + map = server->maps.get(index); + + server_levels += ';'; + server_levels += sanitize_game(RenX::formatGUID(*map)); + server_levels += '='; + server_levels += sanitize_game(map->name); + } + } + + server_game_block.format("\n<@>%.*s~%.*s~%u~%s~%.*s~" "%d;%d;%d;%s;%d;%d;%d;%s;%s;%s;%.*s;%s" "~%u~%d~%s~%s~%.*s", server_name.size(), server_name.ptr(), server->getSocketHostname().size(), server->getSocketHostname().ptr(), server->getPort(), @@ -282,8 +303,9 @@ Jupiter::StringS server_as_game(const RenX::Server *server) //END OPTIONS server->players.size() - server->getBotCount(), server->getPlayerLimit(), - json_bool_as_cstring(server->isRanked()), // json_bool_as_cstring(plugin != nullptr && (reinterpret_cast(plugin)->isOnlyPure() == false || server->isPure())), - json_bool_as_cstring(server->isMatchInProgress())); + json_bool_as_cstring(server->isRanked()), + json_bool_as_cstring(server->isMatchInProgress()), + server_levels.size(), server_levels.ptr()); return server_game_block; }