From aa830819bdf33b9c29565c1ef9e3a5472243c7c2 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Sun, 22 Mar 2015 01:00:01 -0400 Subject: [PATCH] Removed all Beta 1/2/3 code; removed all eXtendedRCON code; Added Server::Kill(). --- Release/Plugins/RenX.Core.lib | Bin 110490 -> 107378 bytes RenX.Core/RenX.Core.vcxproj | 2 - RenX.Core/RenX.Core.vcxproj.filters | 6 - RenX.Core/RenX_Plugin.cpp | 10 - RenX.Core/RenX_Plugin.h | 4 - RenX.Core/RenX_Server.cpp | 723 ++-------------------------- RenX.Core/RenX_Server.h | 68 +-- RenX.Core/RenX_ServerProfile.cpp | 73 --- RenX.Core/RenX_ServerProfile.h | 51 -- RenX.Core/RenX_Tags.cpp | 4 - RenX.Core/RenX_Tags.h | 2 - RenX.Logging/RenX_Logging.cpp | 47 -- RenX.Logging/RenX_Logging.h | 7 - 13 files changed, 63 insertions(+), 934 deletions(-) delete mode 100644 RenX.Core/RenX_ServerProfile.cpp delete mode 100644 RenX.Core/RenX_ServerProfile.h diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index 4244a6886307fa608bd100214ccb6ace19095250..a5613f0bafa3f41d3a24fa6e75f8949fcd23be40 100644 GIT binary patch delta 13656 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 NqLSI&@(T*+zX6gMfwlku delta 15147 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 sa-3}gF$h&%_Hjs*bU73ZKlY=nIn$>W - @@ -88,7 +87,6 @@ - diff --git a/RenX.Core/RenX.Core.vcxproj.filters b/RenX.Core/RenX.Core.vcxproj.filters index 9834d81..1027a38 100644 --- a/RenX.Core/RenX.Core.vcxproj.filters +++ b/RenX.Core/RenX.Core.vcxproj.filters @@ -44,9 +44,6 @@ Header Files - - Header Files - Header Files @@ -70,9 +67,6 @@ Source Files - - Source Files - Source Files diff --git a/RenX.Core/RenX_Plugin.cpp b/RenX.Core/RenX_Plugin.cpp index 207879a..0431434 100644 --- a/RenX.Core/RenX_Plugin.cpp +++ b/RenX.Core/RenX_Plugin.cpp @@ -430,16 +430,6 @@ void RenX::Plugin::RenX_OnLog(Server *, const Jupiter::ReadableString &) return; } -void RenX::Plugin::RenX_XOnVersion(Server *, unsigned int) -{ - return; -} - -void RenX::Plugin::RenX_XOnOther(Server *, const Jupiter::ReadableString &) -{ - return; -} - void RenX::Plugin::RenX_OnCommand(Server *, const Jupiter::ReadableString &) { return; diff --git a/RenX.Core/RenX_Plugin.h b/RenX.Core/RenX_Plugin.h index 26b3ae7..f9566d8 100644 --- a/RenX.Core/RenX_Plugin.h +++ b/RenX.Core/RenX_Plugin.h @@ -138,10 +138,6 @@ namespace RenX /** Other Logs */ virtual void RenX_OnLog(Server *server, const Jupiter::ReadableString &raw); - - /** eXtended RCON */ - virtual void RenX_XOnVersion(Server *server, unsigned int version); - virtual void RenX_XOnOther(Server *server, const Jupiter::ReadableString &raw); /** Command type */ virtual void RenX_OnCommand(Server *server, const Jupiter::ReadableString &raw); diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index ab61ad2..de14f13 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -174,46 +174,30 @@ int RenX::Server::sendMessage(const Jupiter::ReadableString &message) if (RenX::Server::neverSay) { int r = 0; - if (RenX::Server::profile->privateMessages && RenX::Server::players.size() != 0) + if (RenX::Server::players.size() != 0) for (Jupiter::DLList::Node *node = RenX::Server::players.getNode(0); node != nullptr; node = node->next) if (node->data->isBot == false) - { - if (RenX::Server::rconVersion <= 2) - r += RenX::Server::sock.send(Jupiter::StringS::Format("cevaprivatesay pid%d %.*s\n", node->data->id, message.size(), message.ptr())); - else - r += RenX::Server::sock.send(Jupiter::StringS::Format("chostprivatesay pid%d %.*s\n", node->data->id, message.size(), message.ptr())); - } + r += RenX::Server::sock.send(Jupiter::StringS::Format("chostprivatesay pid%d %.*s\n", node->data->id, message.size(), message.ptr())); return r; } else { Jupiter::StringS cmd = STRING_LITERAL_AS_REFERENCE("chostsay "); - if (RenX::Server::rconVersion <= 2) - cmd = STRING_LITERAL_AS_REFERENCE("csay "); cmd += message; cmd += '\n'; - if (RenX::Server::profile->mustSanitize) - RenX::sanitizeString(cmd); return RenX::Server::sock.send(cmd); } } int RenX::Server::sendMessage(const RenX::PlayerInfo *player, const Jupiter::ReadableString &message) { - if (RenX::Server::profile->privateMessages == false) - return RenX::Server::sendMessage(message); - Jupiter::String cmd(message.size() + 28); - if (RenX::Server::rconVersion <= 2) - cmd = STRING_LITERAL_AS_REFERENCE("cevaprivatesay pid"); - else - cmd = STRING_LITERAL_AS_REFERENCE("chostprivatesay pid"); + cmd = STRING_LITERAL_AS_REFERENCE("chostprivatesay pid"); cmd += Jupiter::StringS::Format("%d ", player->id); cmd += message; cmd += '\n'; RenX::sanitizeString(cmd); return RenX::Server::sock.send(cmd); - //return RenX::Server::sock.send(Jupiter::StringS::Format("cevaprivatesay pid%d %.*s\n", player->id, message.size(), message.ptr())); //return RenX::Server::sock.send(Jupiter::StringS::Format("chostprivatesay pid%d %.*s\n", player->id, message.size(), message.ptr())); } @@ -304,30 +288,18 @@ Jupiter::StringS RenX::Server::formatSteamID(uint64_t id) const void RenX::Server::kickPlayer(int id) { - RenX::Server::sock.send(Jupiter::StringS::Format(this->rconVersion >= 3 ? "ckick pid%d\n" : "cadminkick pid%d\n", id)); + RenX::Server::sock.send(Jupiter::StringS::Format("ckick pid%d\n", id)); } void RenX::Server::kickPlayer(const RenX::PlayerInfo *player) { - if (this->profile->pidbug) - { - if (player->isBot) - RenX::Server::sock.send(Jupiter::StringS::Format("cadminkick %.*s\n", player->name.size(), player->name.ptr())); - else if (player->id < 1000) - RenX::Server::kickPlayer(player->id); - else if (player->name.contains('|') == false) - RenX::Server::sock.send(Jupiter::StringS::Format("cadminkick %.*s\n", player->name.size(), player->name.ptr())); - else - RenX::Server::kickPlayer(player->id); - } - else - RenX::Server::kickPlayer(player->id); + RenX::Server::kickPlayer(player->id); } void RenX::Server::banPlayer(int id) { if (RenX::Server::rconBan) - RenX::Server::sock.send(Jupiter::StringS::Format(this->rconVersion >= 3 ? "ckickban pid%d\n" : "cadminkickban pid%d\n", id)); + RenX::Server::sock.send(Jupiter::StringS::Format("ckickban pid%d\n", id)); else { RenX::PlayerInfo *player = RenX::Server::getPlayer(id); @@ -339,23 +311,10 @@ void RenX::Server::banPlayer(int id) void RenX::Server::banPlayer(const RenX::PlayerInfo *player, time_t length) { if (RenX::Server::rconBan && length == 0) - { - if (this->profile->pidbug) - { - if (player->isBot) - RenX::Server::sock.send(Jupiter::StringS::Format("cadminkickban %.*s\n", player->name.size(), player->name.ptr())); - else if (player->id < 1000) - RenX::Server::banPlayer(player->id); - else if (player->name.contains('|') == false) - RenX::Server::sock.send(Jupiter::StringS::Format("cadminkickban %.*s\n", player->name.size(), player->name.ptr())); - else - RenX::Server::banPlayer(player->id); - } - else - RenX::Server::sock.send(Jupiter::StringS::Format("cadminkickban pid%d\n", player->id)); - } + RenX::Server::sock.send(Jupiter::StringS::Format("cadminkickban pid%d\n", player->id)); else RenX::Server::kickPlayer(player); + if (RenX::Server::localBan) RenX::banDatabase->add(this, player, length); } @@ -385,39 +344,33 @@ bool RenX::Server::removePlayer(RenX::PlayerInfo *player) bool RenX::Server::updateClientList() { - if (RenX::Server::xRconVersion != 0) - return RenX::Server::sock.send(STRING_LITERAL_AS_REFERENCE("_x\x01\n")) > 0; - if (RenX::Server::rconVersion <= 2) - return RenX::Server::sock.send(STRING_LITERAL_AS_REFERENCE("clogclientlist\n")) > 0; return RenX::Server::sock.send(STRING_LITERAL_AS_REFERENCE("cclientvarlist KILLS\xA0""DEATHS\xA0""SCORE\xA0""CREDITS\xA0""CHARACTER\xA0""VEHICLE\xA0""PING\xA0""ADMIN\xA0""STEAM\xA0""IP\xA0""PLAYERLOG\n")) > 0 - && RenX::Server::sock.send(STRING_LITERAL_AS_REFERENCE("cbotvarlist KILLS\xA0""DEATHS\xA0""SCORE\xA0""CREDITS\xA0""CHARACTER\xA0""VEHICLE\xA0""PLAYERLOG\n")); + && RenX::Server::sock.send(STRING_LITERAL_AS_REFERENCE("cbotvarlist KILLS\xA0""DEATHS\xA0""SCORE\xA0""CREDITS\xA0""CHARACTER\xA0""VEHICLE\xA0""PLAYERLOG\n")) > 0; //return RenX::Server::sock.send(STRING_LITERAL_AS_REFERENCE("cclientlist\n")) > 0; } bool RenX::Server::gameover() { - return RenX::Server::rconVersion >= 3 && RenX::Server::send(STRING_LITERAL_AS_REFERENCE("endmap")) > 0; + return RenX::Server::send(STRING_LITERAL_AS_REFERENCE("endmap")) > 0; } bool RenX::Server::setMap(const Jupiter::ReadableString &map) { - return RenX::Server::rconVersion >= 3 && RenX::Server::send(Jupiter::StringS::Format("changemap %.*s", map.size(), map.ptr())) > 0; + return RenX::Server::send(Jupiter::StringS::Format("changemap %.*s", map.size(), map.ptr())) > 0; } bool RenX::Server::loadMutator(const Jupiter::ReadableString &mutator) { - return RenX::Server::rconVersion >= 3 && RenX::Server::send(Jupiter::StringS::Format("loadmutator %.*s", mutator.size(), mutator.ptr())) > 0; + return RenX::Server::send(Jupiter::StringS::Format("loadmutator %.*s", mutator.size(), mutator.ptr())) > 0; } bool RenX::Server::unloadMutator(const Jupiter::ReadableString &mutator) { - return RenX::Server::rconVersion >= 3 && RenX::Server::send(Jupiter::StringS::Format("unloadmutator %.*s", mutator.size(), mutator.ptr())) > 0; + return RenX::Server::send(Jupiter::StringS::Format("unloadmutator %.*s", mutator.size(), mutator.ptr())) > 0; } bool RenX::Server::cancelVote(const RenX::TeamType team) { - if (RenX::Server::rconVersion < 3) - return false; switch (team) { default: @@ -431,28 +384,27 @@ bool RenX::Server::cancelVote(const RenX::TeamType team) bool RenX::Server::swapTeams() { - return RenX::Server::rconVersion >= 3 && RenX::Server::send(STRING_LITERAL_AS_REFERENCE("swapteams")) > 0; + return RenX::Server::send(STRING_LITERAL_AS_REFERENCE("swapteams")) > 0; } bool RenX::Server::recordDemo() { - return RenX::Server::rconVersion >= 3 && RenX::Server::send(STRING_LITERAL_AS_REFERENCE("recorddemo")) > 0; + return RenX::Server::send(STRING_LITERAL_AS_REFERENCE("recorddemo")) > 0; } bool RenX::Server::mute(const RenX::PlayerInfo *player) { - return RenX::Server::rconVersion >= 3 && RenX::Server::send(Jupiter::StringS::Format("textmute pid%u", player->id)) > 0; + return RenX::Server::send(Jupiter::StringS::Format("textmute pid%u", player->id)) > 0; } bool RenX::Server::unmute(const RenX::PlayerInfo *player) { - return RenX::Server::rconVersion >= 3 && RenX::Server::send(Jupiter::StringS::Format("textunmute pid%u", player->id)) > 0; + return RenX::Server::send(Jupiter::StringS::Format("textunmute pid%u", player->id)) > 0; } bool RenX::Server::giveCredits(int id, double credits) { - return (RenX::Server::xRconVersion != 0 && RenX::Server::sock.send(Jupiter::StringS::Format("_x\x04%d%c%.4f\n", id, RenX::DelimC, credits)) > 0) - || (RenX::Server::rconVersion >= 3 && RenX::Server::send(Jupiter::StringS::Format("givecredits pid%d %f", id, credits)) > 0); + return RenX::Server::send(Jupiter::StringS::Format("givecredits pid%d %f", id, credits)) > 0; } bool RenX::Server::giveCredits(RenX::PlayerInfo *player, double credits) @@ -460,29 +412,24 @@ bool RenX::Server::giveCredits(RenX::PlayerInfo *player, double credits) return RenX::Server::giveCredits(player->id, credits); } -bool RenX::Server::changeTeam(int id, bool resetCredits) +bool RenX::Server::kill(int id) { - if (resetCredits) - return (RenX::Server::xRconVersion != 0 && RenX::Server::sock.send(Jupiter::StringS::Format("_x\x07%d%c\x03\n", id, RenX::DelimC)) > 0) - || (RenX::Server::rconVersion >= 3 && RenX::Server::send(Jupiter::StringS::Format("team pid%d", id)) > 0); - else - return (RenX::Server::xRconVersion != 0 && RenX::Server::sock.send(Jupiter::StringS::Format("_x\x07%d%c\x01\n", id, RenX::DelimC)) > 0) - || (RenX::Server::rconVersion >= 3 && RenX::Server::send(Jupiter::StringS::Format("team2 pid%d", id)) > 0); + return RenX::Server::send(Jupiter::StringS::Format("kill pid%d", id)) > 0; } -bool RenX::Server::changeTeam(RenX::PlayerInfo *player, bool resetCredits) +bool RenX::Server::kill(RenX::PlayerInfo *player) { - return RenX::Server::changeTeam(player->id, resetCredits); + return RenX::Server::kill(player->id); } -bool RenX::Server::setTeam(int id, int team, unsigned char options) +bool RenX::Server::changeTeam(int id, bool resetCredits) { - return RenX::Server::xRconVersion != 0 && RenX::Server::sock.send(Jupiter::StringS::Format("_x\x07%d%c%c%c%d\n", id, RenX::DelimC, options, RenX::DelimC, team)) > 0; + return RenX::Server::send(Jupiter::StringS::Format(resetCredits ? "team pid%d" : "team2 pid%d", id)) > 0; } -bool RenX::Server::setTeam(RenX::PlayerInfo *player, int team, unsigned char options) +bool RenX::Server::changeTeam(RenX::PlayerInfo *player, bool resetCredits) { - return RenX::Server::setTeam(player->id, team, options); + return RenX::Server::changeTeam(player->id, resetCredits); } const Jupiter::ReadableString &RenX::Server::getPrefix() const @@ -2021,581 +1968,6 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) buff.shiftLeft(1); } } - else // RCONv2 - { - Jupiter::ReferenceString playerData = buff.getToken(1, RenX::DelimC); - Jupiter::ReferenceString action = buff.getToken(2, RenX::DelimC); - if (header.equals("lGAME:")) - { - if (action.equals("deployed")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - Jupiter::ReferenceString objectType = buff.getToken(3, RenX::DelimC); - if (objectType.match("*Beacon")) - player->beaconPlacements++; - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnDeploy(this, player, objectType); - onAction(); - } - else if (action.equals("suicided by")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - player->deaths++; - player->suicides++; - Jupiter::ReferenceString damageType = buff.getToken(3, RenX::DelimC); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnSuicide(this, player, damageType); - this->firstDeath = true; - onAction(); - } - else if (action.equals("killed")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - Jupiter::ReferenceString victimData = buff.getToken(3, RenX::DelimC); - Jupiter::ReferenceString vidToken = victimData.getToken(1, ','); - if (vidToken.size() != 0) - { - Jupiter::ReferenceString vname = victimData.getToken(2, ','); - int vid; - bool visBot = false; - if (vidToken[0] == 'b') - { - vidToken.shiftRight(1); - visBot = true; - } - vid = vidToken.asInt(10); - TeamType vteam = RenX::getTeam(victimData.getToken(0, ',')); - Jupiter::ReferenceString damageType = buff.getToken(5, RenX::DelimC); - RenX::PlayerInfo *victim = getPlayerOrAdd(vname, vid, vteam, visBot, 0, Jupiter::ReferenceString::empty); - player->kills++; - if (damageType.equals("Rx_DmgType_Headshot")) player->headshots++; - victim->deaths++; - - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnKill(this, player, victim, damageType); - } - - if (this->needsCList) - { - this->updateClientList(); - this->needsCList = false; - } - - this->firstKill = true; - this->firstDeath = true; - onAction(); - } - else if (action.match("died by")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - player->deaths++; - Jupiter::ReferenceString damageType = buff.getToken(3, RenX::DelimC); - if (damageType.equals("DamageType")) - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnTeamChange(this, player, RenX::getEnemy(player->team)); - else - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnDie(this, player, damageType); - this->firstDeath = true; - onAction(); - } - else if (action.match("destroyed*")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - Jupiter::ReferenceString victim = buff.getToken(3, RenX::DelimC); - Jupiter::ReferenceString damageType = buff.getToken(5, RenX::DelimC); - ObjectType type; - if (action.equals("destroyed building")) - { - type = ObjectType::Building; - player->buildingKills++; - } - else if (victim.match("Rx_Defence_*")) - { - type = ObjectType::Defence; - player->defenceKills++; - } - else - { - type = ObjectType::Vehicle; - player->vehicleKills++; - } - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnDestroy(this, player, victim, RenX::getEnemy(player->team), damageType, type); - onAction(); - } - else if (playerData.match("??? wins (*)")) - { - TeamType team = RenX::getTeam(playerData.getToken(0, ' ')); - int gScore = buff.getToken(2, RenX::DelimC).gotoToken(1, '=').asInt(10); - int nScore = buff.getToken(3, RenX::DelimC).gotoToken(1, '=').asInt(10); - Jupiter::ReferenceString winType = Jupiter::ReferenceString::substring(playerData, 10); - winType.truncate(1); - WinType iWinType = WinType::Unknown; - if (gScore == nScore) - iWinType = WinType::Tie; - else if (winType.equals("TimeLimit")) - iWinType = WinType::Score; - else if (winType.equals("Buildings")) - iWinType = WinType::Base; - - this->needsCList = true; - if (!this->seamless) - this->silenceParts = true; - - onPreGameOver(iWinType, team, gScore, nScore); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnGameOver(this, iWinType, team, gScore, nScore); - onPostGameOver(iWinType, team, gScore, nScore); - } - else if (playerData.equals("Tie")) - { - int gScore; - switch (RenX::Server::profile->tieFormat) - { - default: - case 1: - gScore = buff.getToken(2, RenX::DelimC).gotoToken(1, '=').asInt(10); - break; - case 0: - gScore = action.gotoToken(1, '=').asInt(10); - break; - } - int nScore = buff.getToken(3, RenX::DelimC).gotoToken(1, '=').asInt(10); - - this->needsCList = true; - if (!this->seamless) - this->silenceParts = true; - - if (gScore == nScore) - { - onPreGameOver(WinType::Tie, TeamType::Other, gScore, nScore); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnGameOver(this, WinType::Tie, TeamType::Other, gScore, nScore); - onPostGameOver(WinType::Tie, TeamType::Other, gScore, nScore); - } - else - { - TeamType winTeam = gScore > nScore ? RenX::getTeam(0) : RenX::getTeam(1); - onPreGameOver(WinType::Shutdown, winTeam, gScore, nScore); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnGameOver(this, WinType::Shutdown, winTeam, gScore, nScore); - onPostGameOver(WinType::Shutdown, winTeam, gScore, nScore); - } - } - else - { - Jupiter::ReferenceString raw = buff.gotoToken(1, RenX::DelimC); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnGame(this, raw); - } - } - else if (header.equals("lCHAT:")) - { - if (action.equals("teamsay:")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - Jupiter::ReferenceString message = buff.getToken(3, RenX::DelimC); - onChat(player, message); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnTeamChat(this, player, message); - } - else if (action.equals("say:")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - Jupiter::ReferenceString message = buff.getToken(3, RenX::DelimC); - onChat(player, message); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnChat(this, player, message); - } - onAction(); - } - else if (header.equals("lPLAYER:")) - { - if (action.equals("disconnected")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - if (this->silenceParts == false) - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnPart(this, player); - this->removePlayer(player); - } - else if (action.equals("entered from")) - { - PARSE_PLAYER_DATA_P(playerData); - RenX::PlayerInfo *player = getPlayerOrAdd(name, id, team, isBot, buff.getToken(4, RenX::DelimC).equals("steamid") ? buff.getToken(5, RenX::DelimC).asUnsignedLongLong() : 0, buff.getToken(3, RenX::DelimC)); - - if (this->silenceJoins == false) - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnJoin(this, player); - } - else if (action.equals("changed name to:")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - Jupiter::ReferenceString newName = buff.getToken(3, RenX::DelimC); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnNameChange(this, player, newName); - setPlayerName(player, newName); - onAction(); - } - } - else if (header.equals("lRCON:")) - { - if (action.equals("executed:")) - { - Jupiter::ReferenceString command = buff.getToken(3, RenX::DelimC); - Jupiter::ReferenceString cmd = command.getWord(0, " "); - if (cmd.equalsi("say")) - { - Jupiter::ReferenceString message = command.gotoWord(1, " "); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnHostChat(this, message); - } - else if (cmd.equalsi("evaprivatesay")) - { - RenX::PlayerInfo *player = this->getPlayerByName(command.getWord(1, " ")); - if (player != nullptr) - { - Jupiter::ReferenceString message = command.gotoWord(2, " "); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnHostPage(this, player, message); - } - else - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnExecute(this, playerData, command); - } - else - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnExecute(this, playerData, command); - } - else if (action.equals("subscribed")) - { - if (this->rconUser.isEmpty()) - this->rconUser = playerData; - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnSubscribe(this, playerData); - } - else - { - Jupiter::ReferenceString raw = buff.gotoToken(1, RenX::DelimC); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnRCON(this, raw); - } - } - else if (header.equals("lADMIN:")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerData); - if (action.equals("logged in as")) - { - player->adminType = buff.getToken(3, RenX::DelimC); - if (player->adminType.equalsi("moderator") && player->access < 1) - player->access = 1; - else if (player->adminType.equalsi("administrator") && player->access < 2) - player->access = 2; - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnAdminLogin(this, player); - } - else if (action.equals("logged out of")) - { - Jupiter::ReferenceString type = buff.getToken(3, RenX::DelimC); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnAdminLogout(this, player); - player->adminType = ""; - player->access = 0; - } - else if (action.equals("granted")) - { - player->adminType = buff.getToken(3, RenX::DelimC); - if (player->adminType.equalsi("moderator") && player->access < 1) - player->access = 1; - else if (player->adminType.equalsi("administrator") && player->access < 2) - player->access = 2; - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnAdminGrant(this, player); - } - else - { - Jupiter::ReferenceString raw = buff.gotoToken(1, RenX::DelimC); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnAdmin(this, raw); - } - } - else if (header.equals("lC-LIST:")) - { - // ID IP SteamID Team Name - if (playerData.isEmpty()) - break; - - static const Jupiter::ReferenceString CListDelim = STRING_LITERAL_AS_REFERENCE(" "); - int id; - bool isBot = false; - if (playerData.get(0) == 'b') - { - isBot = true; - playerData.shiftRight(1); - id = playerData.asInt(10); - playerData.shiftLeft(1); - } - else id = playerData.asInt(10); - Jupiter::ReferenceString ip = playerData.getToken(1, CListDelim); - Jupiter::ReferenceString steamid = playerData.getToken(2, CListDelim); - RenX::TeamType team; - Jupiter::ReferenceString name; - if (steamid.equals("-----NO")) // RCONv2-2a - { - steamid = ""; - team = getTeam(playerData.getToken(4, CListDelim)); - name = playerData.gotoToken(5, CListDelim); - } - else - { - if (steamid.equals("-----NO-STEAM-----")) // RCONv2-2.5a - steamid = ""; - team = getTeam(playerData.getToken(3, CListDelim)); - name = playerData.gotoToken(4, CListDelim); - } - - RenX::PlayerInfo *player = getPlayerOrAdd(name, id, team, isBot, steamid.asUnsignedLongLong(), ip); - } - else - { - buff.shiftRight(1); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnLog(this, buff); - buff.shiftLeft(1); - } - } - break; - - case 'x': - header.shiftRight(1); - if (header.size() == 0) - { - header.shiftLeft(1); - break; - } - if (header[0] == 'r') // Command response - { - if (header.size() == 1) - { - header.shiftLeft(1); - break; - } - header.shiftRight(1); - switch (header[0]) - { - case 1: // Client list: Normal Player Data | IP | Steam ID | Start Time | Ping | Kills | Deaths | Score | Credits | Class - header.shiftRight(1); - { - PARSE_PLAYER_DATA_P(header); - PlayerInfo *player = getPlayerOrAdd(name, id, team, isBot, buff.getToken(1, RenX::DelimC).asUnsignedLongLong(0), buff.getToken(2, RenX::DelimC)); - player->ping = buff.getToken(4, RenX::DelimC).asUnsignedInt() * 4; - player->kills = buff.getToken(5, RenX::DelimC).asUnsignedInt(); - player->deaths = buff.getToken(6, RenX::DelimC).asUnsignedInt(); - player->score = static_cast(buff.getToken(7, RenX::DelimC).asDouble()); - player->credits = static_cast(buff.getToken(8, RenX::DelimC).asDouble()); - player->character = RenX::getCharacter(buff.getToken(9, RenX::DelimC)); - } - header.shiftLeft(1); - break; - case 2: // Ping, Score, Credits list: Normal Player Data | Ping | Score | Credits - header.shiftRight(1); - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(header); - player->ping = buff.getToken(1, RenX::DelimC).asUnsignedInt(); - player->score = static_cast(buff.getToken(2, RenX::DelimC).asDouble()); - player->credits = static_cast(buff.getToken(3, RenX::DelimC).asDouble()); - } - header.shiftLeft(1); - break; - case 3: // Echo: Data - break; - case 4: // Add Credits: Normal Player Data | Credits - header.shiftRight(1); - parseGetPlayerOrAdd(header)->credits = static_cast(buff.getToken(1, RenX::DelimC).asDouble()); - header.shiftLeft(1); - break; - case 5: // Ping: {Average Ping}/{Normal Player Data | Ping} - break; - case 6: // Command 2 on Timer: Time interval - break; - case 7: // Team change: Normal Player Data | Options (00) - header.shiftRight(1); - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(header); - unsigned char options = 0; - Jupiter::ReferenceString optionsToken = buff.getToken(1, RenX::DelimC); - if (optionsToken.isEmpty() == false) - options = optionsToken.get(0); - if (options & 0x02) - player->credits = 0.0f; - if (options & 0x04) - player->score = 0.0f; - // 0x08 unused. - if (options & 0x10) - player->deaths = 0; - if (options & 0x20) - player->kills = 0; - - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnTeamChange(this, player, RenX::getEnemy(player->team)); - } - header.shiftLeft(1); - break; - default: - break; - } - header.shiftLeft(1); - } - else if (header.equals("version")) - { - Jupiter::ReferenceString xVersionToken = buff.getToken(1, RenX::DelimC); - RenX::Server::xRconVersion = xVersionToken.asUnsignedInt(10); - RenX::Server::xRconRevision = xVersionToken.getToken(1, '.').asUnsignedInt(10); - if (this->rconUser.equals(buff.getToken(2, RenX::DelimC)) == false) - this->rconUser = buff.getToken(2, RenX::DelimC); - RenX::Server::serverName = buff.getToken(3, RenX::DelimC); - RenX::Server::map = buff.getToken(4, RenX::DelimC); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_XOnVersion(this, RenX::Server::xRconVersion); - RenX::Server::updateClientList(); - RenX::Server::sock.send(STRING_LITERAL_AS_REFERENCE("_x\x06\n")); - } - else if (header.equals("grant_character")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(1, RenX::DelimC)); - Jupiter::ReferenceString character = buff.getToken(2, RenX::DelimC); - if (character.match("Rx_InventoryManager_???_Soldier") == false && player->character != RenX::getCharacter(character)) - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnCharacterPurchase(this, player, character); - player->character = RenX::getCharacter(character); - } - else if (header.equals("grant_weapon")) - { - // Support dropped - /*RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(1, RenX::DelimC)); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnWeaponPurchase(this, player, buff.getToken(2, RenX::DelimC));*/ - } - else if (header.equals("spawn_vehicle")) - { - Jupiter::ReferenceString tok1 = buff.getToken(1, RenX::DelimC); - if (tok1.equalsi("buy")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(3, RenX::DelimC)); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnVehiclePurchase(this, player, buff.getToken(2, RenX::DelimC)); - } - else - { - RenX::TeamType team = RenX::getTeam(tok1); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnVehicleSpawn(this, team, buff.getToken(2, RenX::DelimC)); - } - } - else if (header.equals("mine_place")) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(1, RenX::DelimC)); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnDeploy(this, player, buff.getToken(2, RenX::DelimC)); - } - /*else if (header.equals("mlimit_inc")) - { - }*/ - else if (header.equals("kill")) - { - Jupiter::ReferenceString kData = buff.getToken(2, RenX::DelimC); - Jupiter::ReferenceString vData = buff.getToken(3, RenX::DelimC); - if (kData.isEmpty() == false && vData.isEmpty() == false) // Safety check - { - struct - { - uint8_t type; // 1 = Player, 2 = Non-Player, 3 = None - Jupiter::ReferenceString data; - } killerData, victimData; - Jupiter::ReadableString &damageType = buff.getToken(1, RenX::DelimC); - killerData.type = kData[0]; - killerData.data = kData.substring(1); - victimData.type = vData[0]; - victimData.data = vData.substring(1); - if (killerData.type == 1) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(killerData.data.gotoToken(1, ',')); - player->character = RenX::getCharacter(killerData.data.getToken(0, ',')); - if (victimData.type == 1) // This is handled in standard RCON logs; update models and move on. - { - if (this->xRconVersion > 1 || this->xRconRevision >= 1 || victimData.data.findi(STRING_LITERAL_AS_REFERENCE("None")) != 0) - { - RenX::PlayerInfo *victim = parseGetPlayerOrAdd(victimData.data.gotoToken(1, ',')); - victim->character = RenX::getCharacter(victimData.data.getToken(0, ',')); - } - } - else if (victimData.type == 2) - { - TeamType victimTeam = RenX::getTeam(victimData.data.getToken(0, ',')); - victimData.data = victimData.data.gotoToken(1, ','); - ObjectType type; - if (victimData.data.match("Rx_Building_*")) - type = ObjectType::Building; - else if (victimData.data.match("Rx_Defence_*")) - type = ObjectType::Defence; - else - type = ObjectType::Vehicle; - if (this->xRconVersion > 1 || this->xRconRevision != 0) - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnDestroy(this, player, victimData.data, victimTeam, damageType, type); - } - } - else if (killerData.type == 3) // No killer! - { - if (victimData.type == 2) - { - TeamType victimTeam = RenX::getTeam(victimData.data.getToken(0, ',')); - victimData.data = victimData.data.gotoToken(1, ','); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnDie(this, victimData.data, victimTeam, damageType); - } - } - else if (killerData.data.size() != 0) // Non-player killer (log!) - { - TeamType killerTeam = RenX::getTeam(killerData.data.getToken(0, ',')); - killerData.data = killerData.data.gotoToken(1, ','); - if (victimData.type == 1) // Non-player killed player - { - if (this->xRconVersion > 1 || this->xRconRevision >= 1 || victimData.data.findi(STRING_LITERAL_AS_REFERENCE("None")) != 0) - { - RenX::PlayerInfo *player = parseGetPlayerOrAdd(victimData.data.gotoToken(1, ',')); - player->character = RenX::getCharacter(victimData.data.getToken(0, ',')); - player->deaths++; - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnKill(this, killerData.data, killerTeam, player, damageType); - } - } - else if (victimData.data.size() != 0) // Non-player destroyed non-player - { - TeamType victimTeam = RenX::getTeam(victimData.data.getToken(0, ',')); - victimData.data = victimData.data.gotoToken(1, ','); - ObjectType type; - if (victimData.data.match("Rx_Building_*")) - type = ObjectType::Building; - else if (victimData.data.match("Rx_Defence_*")) - type = ObjectType::Defence; - else - type = ObjectType::Vehicle; - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnDestroy(this, killerData.data, killerTeam, victimData.data, victimTeam, damageType, type); - } - } - } - } - else - { - buff.shiftRight(1); - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_XOnOther(this, buff); - buff.shiftLeft(1); - } - header.shiftLeft(1); break; case 'c': @@ -2619,35 +1991,30 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) this->rconVersion = buff.asInt(10); this->gameVersion = buff.substring(3); - if (this->rconVersion == 1) - this->profile = RenX::openBeta1Profile; - else if (gameVersion.equals("Open Beta 2")) - this->profile = RenX::openBeta2Profile; - else if (gameVersion.equals("Open Beta 3")) - this->profile = RenX::openBeta3Profile; - - RenX::Server::updateClientList(); - - if (this->profile->disconnectOnGameOver == false) + if (this->rconVersion >= 3) { + RenX::Server::updateClientList(); + this->firstGame = true; this->seamless = true; - } - else if (this->firstGame == false) - { + + /*else if (this->firstGame == false) + { this->firstAction = false; this->silenceJoins = true; - } + }*/ - for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnVersion(this, buff); - buff.shiftLeft(1); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnVersion(this, buff); + buff.shiftLeft(1); + } + else + this->disconnect(); break; case 'a': buff.shiftRight(1); - if (RenX::Server::rconVersion >= 3) - RenX::Server::rconUser = buff; + RenX::Server::rconUser = buff; for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnAuthorized(this, buff); buff.shiftLeft(1); @@ -2706,16 +2073,6 @@ unsigned int RenX::Server::getVersion() const return RenX::Server::rconVersion; } -unsigned int RenX::Server::getXVersion() const -{ - return RenX::Server::xRconVersion; -} - -unsigned int RenX::Server::getXRevision() const -{ - return RenX::Server::xRconRevision; -} - const Jupiter::ReadableString &RenX::Server::getGameVersion() const { return RenX::Server::gameVersion; diff --git a/RenX.Core/RenX_Server.h b/RenX.Core/RenX_Server.h index 7b70248..54ed895 100644 --- a/RenX.Core/RenX_Server.h +++ b/RenX.Core/RenX_Server.h @@ -33,7 +33,6 @@ #include "Jupiter/Thinker.h" #include "Jupiter/Rehash.h" #include "RenX.h" -#include "RenX_ServerProfile.h" /** DLL Linkage Nagging */ #if defined _MSC_VER @@ -83,7 +82,6 @@ namespace RenX public: // RenX::Server Jupiter::DLList players; /** A list of players in the server */ Jupiter::INIFile varData; /** This may be replaced later with a more dedicated type. */ - const RenX::ServerProfile *profile = RenX::defaultProfile; /** * @brief Checks if the server is connected to RCON. @@ -293,70 +291,70 @@ namespace RenX bool updateClientList(); /** - * @brief Forces the current game to end, if the server supports it. + * @brief Forces the current game to end. * * @return True on success, false otherwise. */ bool gameover(); /** - * @brief Forces the current game to end and changes the map, if the server supports it. + * @brief Forces the current game to end and changes the map. * * @return True on success, false otherwise. */ bool setMap(const Jupiter::ReadableString &map); /** - * @brief Forces the current game to end, if the server supports it. + * @brief Forces the current game to end. * * @return True on success, false otherwise. */ bool loadMutator(const Jupiter::ReadableString &mutator); /** - * @brief Forces the current game to end, if the server supports it. + * @brief Forces the current game to end. * * @return True on success, false otherwise. */ bool unloadMutator(const Jupiter::ReadableString &mutator); /** - * @brief Forcefully ends the current vote, if the server supports it. + * @brief Forcefully ends the current vote. * * @return True on success, false otherwise. */ bool cancelVote(const RenX::TeamType team); /** - * @brief Swaps the teams, if the server supports it. + * @brief Swaps the teams. * * @return True on success, false otherwise. */ bool swapTeams(); /** - * @brief Starts a demo recording, if the server supports it. + * @brief Starts a demo recording. * * @return True on success, false otherwise. */ bool recordDemo(); /** - * @brief Mutes a player from the game chat, if the server supports it. + * @brief Mutes a player from the game chat. * * @return True on success, false otherwise. */ bool mute(const RenX::PlayerInfo *player); /** - * @brief Allows a player to use the game chat, if the server supports it. + * @brief Allows a player to use the game chat. * * @return True on success, false otherwise. */ bool unmute(const RenX::PlayerInfo *player); /** - * @brief Gives a player additional credits, if the server supports it. + * @brief Gives a player additional credits. * * @param id ID of the player to give credits to * @param credits Credits to give to player @@ -365,7 +363,7 @@ namespace RenX bool giveCredits(int id, double credits); /** - * @brief Gives a player additional credits, if the server supports it. + * @brief Gives a player additional credits. * * @param player Player to give credits to * @param credits Credits to give to player @@ -374,42 +372,38 @@ namespace RenX bool giveCredits(RenX::PlayerInfo *player, double credits); /** - * @brief Forces a player to change teams, if the server supports it. + * @brief Kills a player. * - * @param id ID of the player to give credits to - * @param resetCredits True to reset the player's credits, false otherwise. + * @param id ID of the player to kill * @return True on success, false otherwise. */ - bool changeTeam(int id, bool resetCredits = true); + bool kill(int id); /** - * @brief Forces a player to change teams, if the server supports it. + * @brief Kills a player. * - * @param player Player to change teams - * @param resetCredits True to reset the player's credits, false otherwise. + * @param player Player to kill * @return True on success, false otherwise. */ - bool changeTeam(RenX::PlayerInfo *player, bool resetCredits = true); + bool kill(RenX::PlayerInfo *player); /** - * @brief Forces a player to change teams, if the server supports it. + * @brief Forces a player to change teams. * * @param id ID of the player to give credits to - * @param team Team number to switch to - * @param options Options to pass to the command + * @param resetCredits True to reset the player's credits, false otherwise. * @return True on success, false otherwise. */ - bool setTeam(int id, int team, unsigned char options = 0x03); + bool changeTeam(int id, bool resetCredits = true); /** - * @brief Forces a player to change teams, if the server supports it. + * @brief Forces a player to change teams. * * @param player Player to change teams - * @param team Team number to switch to - * @param options Options to pass to the command + * @param resetCredits True to reset the player's credits, false otherwise. * @return True on success, false otherwise. */ - bool setTeam(RenX::PlayerInfo *player, int team, unsigned char options = 0x03); + bool changeTeam(RenX::PlayerInfo *player, bool resetCredits = true); /** * @brief Fetches a server's IRC logging prefix. @@ -627,20 +621,6 @@ namespace RenX */ unsigned int getVersion() const; - /** - * @brief Fetches the eXtended-RCON version number, or 0 if none has been set. - * - * @return XRCON version number - */ - unsigned int getXVersion() const; - - /** - * @brief Fetches the eXtended-RCON revision number, or 0 if none has been set. - * - * @return XRCON revision number - */ - unsigned int getXRevision() const; - /** * @brief Fetches the game version string, or an empty string if none has been set. * @@ -682,8 +662,6 @@ namespace RenX bool firstDeath = false; bool firstAction = false; unsigned int rconVersion = 0; - unsigned int xRconVersion = 0; - unsigned int xRconRevision = 0; time_t lastAttempt = 0; Jupiter::String lastLine; Jupiter::StringS commandListFormat; diff --git a/RenX.Core/RenX_ServerProfile.cpp b/RenX.Core/RenX_ServerProfile.cpp deleted file mode 100644 index 6ab70ec..0000000 --- a/RenX.Core/RenX_ServerProfile.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright (C) 2014 Justin James. - * - * This license must be preserved. - * Any applications, libraries, or code which make any use of any - * component of this program must not be commercial, unless explicit - * permission is granted from the original author. The use of this - * program for non-profit purposes is permitted. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * In the event that this license restricts you from making desired use of this program, contact the original author. - * Written by Justin James - */ - -#include "RenX_ServerProfile.h" - -struct BaseProfile : RenX::ServerProfile -{ - BaseProfile() - { - supported = true; - privateMessages = true; - disconnectOnGameOver = false; - pidbug = false; - mustSanitize = false; - tieFormat = 1; - } -} _baseProfile; -const RenX::ServerProfile *RenX::defaultProfile = &_baseProfile; - -struct OpenBeta1Profile : BaseProfile -{ - OpenBeta1Profile() - { - supported = false; - privateMessages = false; - mustSanitize = true; - } -} _openBeta1Profile; -const RenX::ServerProfile *RenX::openBeta1Profile = &_openBeta1Profile; - -struct OpenBeta2Profile : BaseProfile -{ - OpenBeta2Profile() - { - privateMessages = false; - pidbug = true; - tieFormat = 0; - mustSanitize = true; - } -} _openBeta2Profile; -const RenX::ServerProfile *RenX::openBeta2Profile = &_openBeta2Profile; - -struct OpenBeta3Profile : BaseProfile -{ - OpenBeta3Profile() - { - disconnectOnGameOver = true; - mustSanitize = true; - } -} _openBeta3Profile; -const RenX::ServerProfile *RenX::openBeta3Profile = &_openBeta3Profile; - -struct OpenBeta4Profile : BaseProfile -{ - OpenBeta4Profile() - { - } -} _openBeta4Profile; -const RenX::ServerProfile *RenX::openBeta4Profile = &_openBeta4Profile; \ No newline at end of file diff --git a/RenX.Core/RenX_ServerProfile.h b/RenX.Core/RenX_ServerProfile.h deleted file mode 100644 index f8012c1..0000000 --- a/RenX.Core/RenX_ServerProfile.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright (C) 2014 Justin James. - * - * This license must be preserved. - * Any applications, libraries, or code which make any use of any - * component of this program must not be commercial, unless explicit - * permission is granted from the original author. The use of this - * program for non-profit purposes is permitted. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * In the event that this license restricts you from making desired use of this program, contact the original author. - * Written by Justin James - */ - -#if !defined _RENX_SERVERPROFILE_H_HEADER -#define _RENX_SERVERPROFILE_H_HEADER - -/** - * @file RenX_ServerProfile.h - * @brief Defines the ServerProfile class, and known profiles. - */ - -#include "RenX.h" - -namespace RenX -{ - /** - * @brief Contains information about features supported by a server version. - */ - struct RENX_API ServerProfile - { - bool supported; - bool privateMessages; - bool disconnectOnGameOver; - bool pidbug; - bool mustSanitize; - int tieFormat; - }; - - RENX_API extern const ServerProfile *defaultProfile; /** Default server profile */ - RENX_API extern const ServerProfile *openBeta1Profile; /** Open Beta 1 server profile */ - RENX_API extern const ServerProfile *openBeta2Profile; /** Open Beta 2 server profile */ - RENX_API extern const ServerProfile *openBeta3Profile; /** Open Beta 3 server profile */ - RENX_API extern const ServerProfile *openBeta4Profile; /** Open Beta 4 server profile */ - -} - -#endif // _RENX_SERVERPROFILE_H_HEADER \ No newline at end of file diff --git a/RenX.Core/RenX_Tags.cpp b/RenX.Core/RenX_Tags.cpp index 83b77a7..7d66a45 100644 --- a/RenX.Core/RenX_Tags.cpp +++ b/RenX.Core/RenX_Tags.cpp @@ -67,7 +67,6 @@ TagsImp::TagsImp() /** Server tags */ this->INTERNAL_RCON_VERSION_TAG = this->getUniqueInternalTag(); this->INTERNAL_GAME_VERSION_TAG = this->getUniqueInternalTag(); - this->INTERNAL_XRCON_VERSION_TAG = this->getUniqueInternalTag(); this->INTERNAL_RULES_TAG = this->getUniqueInternalTag(); this->INTERNAL_USER_TAG = this->getUniqueInternalTag(); this->INTERNAL_SERVER_NAME_TAG = this->getUniqueInternalTag(); @@ -160,7 +159,6 @@ TagsImp::TagsImp() /** Server tags */ this->rconVersionTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("RCONVersionTag"), STRING_LITERAL_AS_REFERENCE("{RVER}")); this->gameVersionTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("GameVersionTag"), STRING_LITERAL_AS_REFERENCE("{GVER}")); - this->xRconVersionTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("XRCONVersionTag"), STRING_LITERAL_AS_REFERENCE("{XVER}")); this->rulesTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("RulesTag"), STRING_LITERAL_AS_REFERENCE("{RULES}")); this->userTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("UserTag"), STRING_LITERAL_AS_REFERENCE("{USER}")); this->serverNameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("ServerNameTag"), STRING_LITERAL_AS_REFERENCE("{SERVERNAME}")); @@ -253,7 +251,6 @@ void TagsImp::processTags(Jupiter::StringType &msg, const RenX::Server *server, { msg.replace(this->INTERNAL_RCON_VERSION_TAG, Jupiter::StringS::Format("%u", server->getVersion())); msg.replace(this->INTERNAL_GAME_VERSION_TAG, server->getGameVersion()); - msg.replace(this->INTERNAL_XRCON_VERSION_TAG, Jupiter::StringS::Format("%u.%u", server->getXVersion(), server->getXRevision())); msg.replace(this->INTERNAL_RULES_TAG, server->getRules()); msg.replace(this->INTERNAL_USER_TAG, server->getUser()); msg.replace(this->INTERNAL_SERVER_NAME_TAG, server->getName()); @@ -352,7 +349,6 @@ void TagsImp::sanitizeTags(Jupiter::StringType &fmt) /** Server tags */ fmt.replace(this->rconVersionTag, this->INTERNAL_RCON_VERSION_TAG); fmt.replace(this->gameVersionTag, this->INTERNAL_GAME_VERSION_TAG); - fmt.replace(this->xRconVersionTag, this->INTERNAL_XRCON_VERSION_TAG); fmt.replace(this->rulesTag, this->INTERNAL_RULES_TAG); fmt.replace(this->userTag, this->INTERNAL_USER_TAG); fmt.replace(this->serverNameTag, this->INTERNAL_SERVER_NAME_TAG); diff --git a/RenX.Core/RenX_Tags.h b/RenX.Core/RenX_Tags.h index 05886b3..4eb799b 100644 --- a/RenX.Core/RenX_Tags.h +++ b/RenX.Core/RenX_Tags.h @@ -57,7 +57,6 @@ namespace RenX /** Server tags */ Jupiter::StringS INTERNAL_RCON_VERSION_TAG; Jupiter::StringS INTERNAL_GAME_VERSION_TAG; - Jupiter::StringS INTERNAL_XRCON_VERSION_TAG; Jupiter::StringS INTERNAL_RULES_TAG; Jupiter::StringS INTERNAL_USER_TAG; Jupiter::StringS INTERNAL_SERVER_NAME_TAG; @@ -150,7 +149,6 @@ namespace RenX /** Server tags */ Jupiter::StringS rconVersionTag; Jupiter::StringS gameVersionTag; - Jupiter::StringS xRconVersionTag; Jupiter::StringS rulesTag; Jupiter::StringS userTag; Jupiter::StringS serverNameTag; diff --git a/RenX.Logging/RenX_Logging.cpp b/RenX.Logging/RenX_Logging.cpp index a697054..ad09b7e 100644 --- a/RenX.Logging/RenX_Logging.cpp +++ b/RenX.Logging/RenX_Logging.cpp @@ -83,8 +83,6 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::demoRecordStopPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DemoRecordStopPublic"), true); RenX_LoggingPlugin::demoPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DemoPublic"), false); RenX_LoggingPlugin::logPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("LogPublic"), false); - RenX_LoggingPlugin::xVersionPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("XVersionPublic"), true); - RenX_LoggingPlugin::xOtherPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("XOtherPublic"), false); RenX_LoggingPlugin::commandPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("CommandPublic"), false); RenX_LoggingPlugin::errorPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("ErrorPublic"), false); RenX_LoggingPlugin::versionPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VersionPublic"), true); @@ -320,12 +318,6 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::logFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("LogFormat"), Jupiter::StringS::Format(IRCCOLOR "07[Log]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::xVersionFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("XVersionFormat"), - Jupiter::StringS::Format(IRCCOLOR "03This server is using eXtended RCON version %.*s", RenX::tags->xRconVersionTag.size(), RenX::tags->xRconVersionTag.ptr())); - - RenX_LoggingPlugin::xOtherFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("XOtherFormat"), - Jupiter::StringS::Format(IRCCOLOR "06[XOther]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::commandFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("CommandFormat"), Jupiter::StringS::Format("")); // Disabled by default. @@ -418,8 +410,6 @@ void RenX_LoggingPlugin::init() RenX::sanitizeTags(demoRecordStopFmt); RenX::sanitizeTags(demoFmt); RenX::sanitizeTags(logFmt); - RenX::sanitizeTags(xVersionFmt); - RenX::sanitizeTags(xOtherFmt); RenX::sanitizeTags(commandFmt); RenX::sanitizeTags(errorFmt); RenX::sanitizeTags(versionFmt); @@ -1322,9 +1312,6 @@ void RenX_LoggingPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType win msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, RenX::translateWinType(winType)); (server->*func)(msg); } - - if (server->profile->disconnectOnGameOver) - server->sendLogChan(IRCCOLOR "07[Warning]" IRCCOLOR " Game version \"%.*s\" gets disconnected when a map unloads; to prevent disconnect spam, player disconnects are silenced until the bot reconnects.", server->getGameVersion().size(), server->getGameVersion().ptr()); } void RenX_LoggingPlugin::RenX_OnGame(RenX::Server *server, const Jupiter::ReadableString &raw) @@ -1683,40 +1670,6 @@ void RenX_LoggingPlugin::RenX_OnLog(RenX::Server *server, const Jupiter::Readabl } } -void RenX_LoggingPlugin::RenX_XOnVersion(RenX::Server *server, unsigned int version) -{ - logFuncType func; - if (RenX_LoggingPlugin::xVersionPublic) - func = &RenX::Server::sendLogChan; - else - func = &RenX::Server::sendAdmChan; - - Jupiter::String msg = this->xVersionFmt; - if (msg.isEmpty() == false) - { - RenX::processTags(msg, server); - msg.replace(RenX::tags->INTERNAL_XRCON_VERSION_TAG, Jupiter::StringS::Format("%u", version)); - (server->*func)(msg); - } -} - -void RenX_LoggingPlugin::RenX_XOnOther(RenX::Server *server, const Jupiter::ReadableString &raw) -{ - logFuncType func; - if (RenX_LoggingPlugin::xOtherPublic) - func = &RenX::Server::sendLogChan; - else - func = &RenX::Server::sendAdmChan; - - Jupiter::String msg = this->xOtherFmt; - if (msg.isEmpty() == false) - { - RenX::processTags(msg, server); - msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw); - (server->*func)(msg); - } -} - void RenX_LoggingPlugin::RenX_OnCommand(RenX::Server *server, const Jupiter::ReadableString &raw) { logFuncType func; diff --git a/RenX.Logging/RenX_Logging.h b/RenX.Logging/RenX_Logging.h index 2ef23f1..8343d03 100644 --- a/RenX.Logging/RenX_Logging.h +++ b/RenX.Logging/RenX_Logging.h @@ -96,9 +96,6 @@ public: // RenX::Plugin void RenX_OnLog(RenX::Server *server, const Jupiter::ReadableString &raw) override; - void RenX_XOnVersion(RenX::Server *server, unsigned int version) override; - void RenX_XOnOther(RenX::Server *server, const Jupiter::ReadableString &raw) override; - void RenX_OnCommand(RenX::Server *server, const Jupiter::ReadableString &raw) override; void RenX_OnError(RenX::Server *server, const Jupiter::ReadableString &raw) override; void RenX_OnVersion(RenX::Server *server, const Jupiter::ReadableString &raw) override; @@ -172,8 +169,6 @@ private: unsigned int demoRecordStopPublic : 1; unsigned int demoPublic : 1; unsigned int logPublic : 1; - unsigned int xVersionPublic : 1; - unsigned int xOtherPublic : 1; unsigned int commandPublic : 1; unsigned int errorPublic : 1; unsigned int versionPublic : 1; @@ -253,8 +248,6 @@ private: Jupiter::StringS demoRecordStopFmt; Jupiter::StringS demoFmt; Jupiter::StringS logFmt; - Jupiter::StringS xVersionFmt; - Jupiter::StringS xOtherFmt; Jupiter::StringS commandFmt; Jupiter::StringS errorFmt; Jupiter::StringS versionFmt;