diff --git a/Jupiter b/Jupiter
index 6f02205..2cd14a3 160000
--- a/Jupiter
+++ b/Jupiter
@@ -1 +1 @@
-Subproject commit 6f022059334b893a77cefcafa7713033e1580f7a
+Subproject commit 2cd14a3b5bd0b0cf1efe6bec6cbff60af512af02
diff --git a/Release/Bot.lib b/Release/Bot.lib
index 0497b62..743efba 100644
Binary files a/Release/Bot.lib and b/Release/Bot.lib differ
diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib
index a371f72..86278a9 100644
Binary files a/Release/Plugins/RenX.Core.lib and b/Release/Plugins/RenX.Core.lib differ
diff --git a/RenX.Announcements/RenX_Announcements.cpp b/RenX.Announcements/RenX_Announcements.cpp
index 6b5da04..9577cd6 100644
--- a/RenX.Announcements/RenX_Announcements.cpp
+++ b/RenX.Announcements/RenX_Announcements.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -20,6 +20,7 @@
#include "RenX_Announcements.h"
#include "RenX_Core.h"
#include "RenX_Server.h"
+#include "RenX_Tags.h"
RenX_AnnouncementsPlugin pluginInstance;
@@ -43,8 +44,7 @@ void RenX_AnnouncementsPlugin::announce(unsigned int)
RenX_AnnouncementsPlugin::lastLine = trand;
}
Jupiter::StringS announcement = RenX_AnnouncementsPlugin::announcementsFile.getLine(RenX_AnnouncementsPlugin::lastLine);
- announcement.replace(RenX_AnnouncementsPlugin::dateTag, Jupiter::ReferenceString(getTimeFormat(RenX_AnnouncementsPlugin::dateFmt.c_str())));
- announcement.replace(RenX_AnnouncementsPlugin::timeTag, Jupiter::ReferenceString(getTimeFormat(RenX_AnnouncementsPlugin::timeFmt.c_str())));
+ RenX::sanitizeTags(announcement);
Jupiter::String msg;
RenX::Core *core = RenX::getCore();
@@ -55,7 +55,7 @@ void RenX_AnnouncementsPlugin::announce(unsigned int)
if (server->players.size() != 0)
{
msg = announcement;
- msg.replace(RenX_AnnouncementsPlugin::rulesTag, server->getRules());
+ RenX::processTags(msg, server);
server->sendMessage(msg);
}
}
@@ -69,11 +69,6 @@ int RenX_AnnouncementsPlugin::OnRehash()
int RenX_AnnouncementsPlugin::init()
{
- RenX_AnnouncementsPlugin::dateTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DateTag"), STRING_LITERAL_AS_REFERENCE("{DATE}"));
- RenX_AnnouncementsPlugin::timeTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TimeTag"), STRING_LITERAL_AS_REFERENCE("{TIME}"));
- RenX_AnnouncementsPlugin::rulesTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RulesTag"), STRING_LITERAL_AS_REFERENCE("{RULES}"));;
- RenX_AnnouncementsPlugin::dateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DateFormat"), STRING_LITERAL_AS_REFERENCE("%A, %B %d, %Y"));
- RenX_AnnouncementsPlugin::timeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TimeFormat"), STRING_LITERAL_AS_REFERENCE("%H:%M:%S"));
RenX_AnnouncementsPlugin::random = Jupiter::IRC::Client::Config->getBool(STRING_LITERAL_AS_REFERENCE("RenX.Announcements"), STRING_LITERAL_AS_REFERENCE("Random"));
RenX_AnnouncementsPlugin::announcementsFile.load(Jupiter::IRC::Client::Config->get(STRING_LITERAL_AS_REFERENCE("RenX.Announcements"), STRING_LITERAL_AS_REFERENCE("File"), STRING_LITERAL_AS_REFERENCE("Announcements.txt")));
diff --git a/RenX.Announcements/RenX_Announcements.h b/RenX.Announcements/RenX_Announcements.h
index bccee5a..65553b4 100644
--- a/RenX.Announcements/RenX_Announcements.h
+++ b/RenX.Announcements/RenX_Announcements.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -43,12 +43,7 @@ private:
bool random;
unsigned int lastLine;
Jupiter::Timer *timer;
- Jupiter::StringS dateTag;
- Jupiter::StringS timeTag;
- Jupiter::StringS rulesTag;
//Jupiter::StringS modsTag;
- Jupiter::CStringS dateFmt;
- Jupiter::CStringS timeFmt;
Jupiter::File announcementsFile;
};
diff --git a/RenX.Core/RenX.Core.vcxproj b/RenX.Core/RenX.Core.vcxproj
index 21d663f..fbbfaa7 100644
--- a/RenX.Core/RenX.Core.vcxproj
+++ b/RenX.Core/RenX.Core.vcxproj
@@ -79,6 +79,7 @@
+
@@ -88,6 +89,7 @@
+
diff --git a/RenX.Core/RenX.Core.vcxproj.filters b/RenX.Core/RenX.Core.vcxproj.filters
index 24b4e41..9834d81 100644
--- a/RenX.Core/RenX.Core.vcxproj.filters
+++ b/RenX.Core/RenX.Core.vcxproj.filters
@@ -50,6 +50,9 @@
Header Files
+
+ Header Files
+
@@ -73,5 +76,8 @@
Source Files
+
+ Source Files
+
\ No newline at end of file
diff --git a/RenX.Core/RenX_PlayerInfo.h b/RenX.Core/RenX_PlayerInfo.h
index 49423be..cf28d49 100644
--- a/RenX.Core/RenX_PlayerInfo.h
+++ b/RenX.Core/RenX_PlayerInfo.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -41,16 +41,23 @@ namespace RenX
*/
struct RENX_API PlayerInfo
{
+ // TODO: Add backpack
Jupiter::StringS name;
Jupiter::StringS ip;
Jupiter::StringS adminType;
Jupiter::StringS uuid;
+ Jupiter::StringS character;
+ Jupiter::StringS vehicle;
uint64_t steamid = 0;
uint32_t ip32 = 0;
TeamType team = Other;
int id = 0;
bool isBot = false;
time_t joinTime = 0;
+
+ float ping = -1.0f;
+ float score = 0.0f;
+ float credits = 0.0f;
unsigned int kills = 0;
unsigned int deaths = 0;
unsigned int suicides = 0;
diff --git a/RenX.Core/RenX_Plugin.cpp b/RenX.Core/RenX_Plugin.cpp
index 797a89e..af42782 100644
--- a/RenX.Core/RenX_Plugin.cpp
+++ b/RenX.Core/RenX_Plugin.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -35,6 +35,16 @@ RenX::Plugin::~Plugin()
}
}
+void RenX::Plugin::RenX_SanitizeTags(Jupiter::StringType &)
+{
+ return;
+}
+
+void RenX::Plugin::RenX_ProcessTags(Jupiter::StringType &, const RenX::Server *, const RenX::PlayerInfo *, const RenX::PlayerInfo *)
+{
+ return;
+}
+
void RenX::Plugin::RenX_OnPlayerCreate(Server *, const RenX::PlayerInfo *)
{
return;
@@ -95,16 +105,31 @@ void RenX::Plugin::RenX_OnKill(Server *, const RenX::PlayerInfo *, const RenX::P
return;
}
+void RenX::Plugin::RenX_OnKill(Server *, const Jupiter::ReadableString &, TeamType, const RenX::PlayerInfo *, const Jupiter::ReadableString &)
+{
+ return;
+}
+
void RenX::Plugin::RenX_OnDie(Server *, const RenX::PlayerInfo *, const Jupiter::ReadableString &)
{
return;
}
+void RenX::Plugin::RenX_OnDie(Server *, const Jupiter::ReadableString &, TeamType, const Jupiter::ReadableString &)
+{
+ return;
+}
+
void RenX::Plugin::RenX_OnDestroy(Server *, const RenX::PlayerInfo *, const Jupiter::ReadableString &, const Jupiter::ReadableString &, ObjectType)
{
return;
}
+void RenX::Plugin::RenX_OnDestroy(Server *, const Jupiter::ReadableString &, TeamType, const Jupiter::ReadableString &, TeamType, const Jupiter::ReadableString &, ObjectType)
+{
+ return;
+}
+
void RenX::Plugin::RenX_OnGameOver(Server *, RenX::WinType, TeamType, int, int)
{
return;
@@ -155,6 +180,41 @@ void RenX::Plugin::RenX_OnLog(Server *, const Jupiter::ReadableString &)
return;
}
+void RenX::Plugin::RenX_XOnVersion(Server *, unsigned int)
+{
+ return;
+}
+
+void RenX::Plugin::RenX_OnGrantCharacter(Server *, const PlayerInfo *, const Jupiter::ReadableString &)
+{
+ return;
+}
+
+void RenX::Plugin::RenX_OnGrantWeapon(Server *, const PlayerInfo *, const Jupiter::ReadableString &)
+{
+ return;
+}
+
+void RenX::Plugin::RenX_OnSpawnVehicle(Server *, const PlayerInfo *, const Jupiter::ReadableString &)
+{
+ return;
+}
+
+void RenX::Plugin::RenX_OnSpawnVehicleNoOwner(Server *, const TeamType, const Jupiter::ReadableString &)
+{
+ return;
+}
+
+void RenX::Plugin::RenX_OnMinePlace(Server *, const PlayerInfo *, const Jupiter::ReadableString &)
+{
+ 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 ded8d74..7c3fdc8 100644
--- a/RenX.Core/RenX_Plugin.h
+++ b/RenX.Core/RenX_Plugin.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -38,6 +38,10 @@ namespace RenX
class RENX_API Plugin : public Jupiter::Plugin
{
public:
+ /** Tag-related events */
+ virtual void RenX_SanitizeTags(Jupiter::StringType &fmt);
+ virtual void RenX_ProcessTags(Jupiter::StringType &msg, const Server *server, const PlayerInfo *player, const PlayerInfo *victim);
+
/** Non-RCON RenX logs */
virtual void RenX_OnPlayerCreate(Server *server, const PlayerInfo *player);
virtual void RenX_OnPlayerDelete(Server *server, const PlayerInfo *player);
@@ -57,8 +61,11 @@ namespace RenX
virtual void RenX_OnDeploy(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &object);
virtual void RenX_OnSuicide(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &damageType);
virtual void RenX_OnKill(Server *server, const PlayerInfo *player, const PlayerInfo *victim, const Jupiter::ReadableString &damageType);
+ virtual void RenX_OnKill(Server *server, const Jupiter::ReadableString &killer, TeamType killerTeam, const PlayerInfo *victim, const Jupiter::ReadableString &damageType);
virtual void RenX_OnDie(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &damageType);
+ virtual void RenX_OnDie(Server *server, const Jupiter::ReadableString &object, TeamType objectTeam, const Jupiter::ReadableString &damageType);
virtual void RenX_OnDestroy(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &objectName, const Jupiter::ReadableString &damageType, ObjectType type);
+ virtual void RenX_OnDestroy(Server *server, const Jupiter::ReadableString &killer, TeamType killerTeam, const Jupiter::ReadableString &objectName, TeamType objectTeam, const Jupiter::ReadableString &damageType, ObjectType type);
virtual void RenX_OnGameOver(Server *server, WinType winType, TeamType team, int gScore, int nScore);
virtual void RenX_OnGame(Server *server, const Jupiter::ReadableString &raw);
@@ -76,6 +83,15 @@ 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_OnGrantCharacter(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &character);
+ virtual void RenX_OnGrantWeapon(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &weapon);
+ virtual void RenX_OnSpawnVehicle(Server *server, const PlayerInfo *owner, const Jupiter::ReadableString &vehicle);
+ virtual void RenX_OnSpawnVehicleNoOwner(Server *server, const TeamType team, const Jupiter::ReadableString &vehicle);
+ virtual void RenX_OnMinePlace(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &mine);
+ 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 0967791..24964e7 100644
--- a/RenX.Core/RenX_Server.cpp
+++ b/RenX.Core/RenX_Server.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -572,12 +572,12 @@ void RenX::Server::sendLogChan(const Jupiter::ReadableString &msg) const
}
}
-#define PARSE_PLAYER_DATA_P(playerData) \
+#define PARSE_PLAYER_DATA_P(DATA) \
Jupiter::ReferenceString name; \
TeamType team; \
int id; \
bool isBot; \
- parsePlayerData(playerData, name, team, id, isBot);
+ parsePlayerData(DATA, name, team, id, isBot);
#define PARSE_PLAYER_DATA() PARSE_PLAYER_DATA_P(playerData)
@@ -665,12 +665,12 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
};
auto parsePlayerData = [&](const Jupiter::ReadableString &data, Jupiter::ReferenceString &name, TeamType &team, int &id, bool &isBot)
{
- Jupiter::ReferenceString idToken = playerData.getToken(1, ',');
+ Jupiter::ReferenceString idToken = Jupiter::ReferenceString::getToken(data, 1, ',');
name = Jupiter::ReferenceString::gotoToken(data, 2, ',');
- if (playerData[0] == ',')
+ if (data[0] == ',')
team = Other;
else
- team = RenX::getTeam(playerData[0]);
+ team = RenX::getTeam(data[0]);
if (idToken.get(0) == 'b')
{
idToken.shiftRight(1);
@@ -682,34 +682,51 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
};
auto getPlayerOrAdd = [&](RenX::Server *server, const Jupiter::ReadableString &name, int id, RenX::TeamType team, bool isBot, uint64_t steamid, const Jupiter::ReadableString &ip)
{
+ bool checkBans = false;
RenX::PlayerInfo *r = server->getPlayer(id);
+ auto checkMissing = [&]()
+ {
+ if (r->ip32 == 0 && ip.isEmpty() == false)
+ {
+ r->ip = ip;
+ r->ip32 = Jupiter::Socket::pton4(Jupiter::CStringS(r->ip).c_str());
+ checkBans = true;
+ }
+ if (r->steamid == 0U && steamid != 0U)
+ {
+ r->steamid = steamid;
+ if (this->uuidMode == 0)
+ r->uuid = this->formatSteamID(r);
+ checkBans = true;
+ }
+ };
if (r == nullptr)
{
+ checkBans = true;
r = new RenX::PlayerInfo();
r->id = id;
r->name = name;
+ checkMissing();
if (r->isBot = isBot)
r->formatNamePrefix = IRCCOLOR "05[B]";
r->joinTime = time(nullptr);
- r->steamid = steamid;
- r->ip = ip;
- r->ip32 = Jupiter::Socket::pton4(Jupiter::CStringS(r->ip).c_str());
if (id != 0)
server->players.add(r);
- switch (this->uuidMode)
- {
- default:
- case 0:
- if (r->steamid != 0)
- r->uuid = this->formatSteamID(r);
- break;
- case 1:
+ if (this->uuidMode == 1)
r->uuid = r->name;
- break;
- }
+
for (size_t i = 0; i < xPlugins.size(); i++)
xPlugins.get(i)->RenX_OnPlayerCreate(server, r);
-
+ }
+ else
+ {
+ checkMissing();
+ if (r->name.size() == 0)
+ r->name = name;
+ }
+ r->team = team;
+ if (checkBans)
+ {
const Jupiter::ArrayList &entries = RenX::banDatabase->getEntries();
RenX::BanDatabase::Entry *entry;
for (size_t i = 0; i != entries.size(); i++)
@@ -728,8 +745,6 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
}
}
}
- else if (r->name.size() == 0) r->name = name;
- r->team = team;
return r;
};
@@ -767,22 +782,29 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
PARSE_PLAYER_DATA();
RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty);
Jupiter::ReferenceString victimData = buff.getToken(3, RenX::DelimC);
- Jupiter::ReferenceString vname = victimData.getToken(2, ',');
+ Jupiter::ReferenceString vTeamToken = victimData.getToken(0, ',');
Jupiter::ReferenceString vidToken = victimData.getToken(1, ',');
- int vid;
- bool visBot = false;
- if (vidToken[0] == 'b')
+ if (vTeamToken.size() != 0 && vidToken.size() != 0)
{
- vidToken.shiftRight(1);
- visBot = true;
+ 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(vTeamToken.get(0));
+ Jupiter::ReferenceString damageType = buff.getToken(5, RenX::DelimC);
+ RenX::PlayerInfo *victim = getPlayerOrAdd(this, 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);
}
- vid = vidToken.asInt(10);
- TeamType vteam = RenX::getTeam(victimData.getToken(0, ',')[0]);
- Jupiter::ReferenceString damageType = buff.getToken(5, RenX::DelimC);
- RenX::PlayerInfo *victim = getPlayerOrAdd(this, vname, vid, vteam, visBot, 0, Jupiter::ReferenceString::empty);
- player->kills++;
- if (damageType.equals("Rx_DmgType_Headshot")) player->headshots++;
- victim->deaths++;
if (this->needsCList)
{
@@ -790,9 +812,6 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
this->needsCList = false;
}
- for (size_t i = 0; i < xPlugins.size(); i++)
- xPlugins.get(i)->RenX_OnKill(this, player, victim, damageType);
-
this->firstKill = true;
this->firstDeath = true;
onAction();
@@ -962,11 +981,12 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
for (size_t i = 0; i < xPlugins.size(); i++)
xPlugins.get(i)->RenX_OnExecute(this, playerData, command);
}
- else if (action.equals("subscribed")) for (size_t i = 0; i < xPlugins.size(); i++)
+ else if (action.equals("subscribed"))
{
if (this->rconUser.isEmpty())
this->rconUser = playerData;
- xPlugins.get(i)->RenX_OnSubscribe(this, playerData);
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_OnSubscribe(this, playerData);
}
else for (size_t i = 0; i < xPlugins.size(); i++)
xPlugins.get(i)->RenX_OnRCON(this, buff.gotoToken(1, RenX::DelimC));
@@ -1058,6 +1078,200 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
}
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(this, name, id, team, isBot, playerData.asUnsignedLongLong(0), action);
+ player->ping = static_cast(buff.getToken(4, RenX::DelimC).asDouble());
+ 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);
+ {
+ PARSE_PLAYER_DATA_P(header);
+ PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0U, Jupiter::ReferenceString::empty);
+ player->ping = static_cast(playerData.asDouble());
+ player->score = static_cast(action.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);
+ {
+ PARSE_PLAYER_DATA_P(header);
+ PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0U, Jupiter::ReferenceString::empty);
+ player->credits = static_cast(playerData.asDouble());
+ }
+ header.shiftLeft(1);
+ break;
+ case 5: // Ping: {Average Ping}/{Normal Player Data | Ping}
+ break;
+ case 6: // Command 2 on Timer: Time interval
+ break;
+ default:
+ break;
+ }
+ header.shiftLeft(1);
+ }
+ else if (header.equals("version"))
+ {
+ RenX::Server::xRconVersion = playerData.asUnsignedInt(10);
+ if (this->rconUser.equals(action) == false)
+ this->rconUser = action;
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_XOnVersion(this, RenX::Server::xRconVersion);
+ RenX::Server::sock.send(STRING_LITERAL_AS_REFERENCE("_x\x01\n"));
+ }
+ else if (header.equals("grant_character"))
+ {
+ PARSE_PLAYER_DATA();
+ RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty);
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_OnGrantCharacter(this, player, action);
+ player->character = RenX::getCharacter(action);
+ }
+ else if (header.equals("grant_weapon"))
+ {
+ PARSE_PLAYER_DATA();
+ RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty);
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_OnGrantWeapon(this, player, action);
+ }
+ else if (header.equals("spawn_vehicle"))
+ {
+ if (playerData.equalsi("buy"))
+ {
+ PARSE_PLAYER_DATA_P(buff.getToken(3, RenX::DelimC));
+ RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty);
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_OnSpawnVehicle(this, player, action);
+ }
+ else
+ {
+ RenX::TeamType team;
+ if (playerData.isEmpty())
+ team = Other;
+ else
+ team = RenX::getTeam(playerData.get(0));
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_OnSpawnVehicleNoOwner(this, team, action);
+ }
+ }
+ else if (header.equals("mine_place"))
+ {
+ PARSE_PLAYER_DATA();
+ RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty);
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_OnMinePlace(this, player, action);
+ }
+ /*else if (header.equals("mlimit_inc"))
+ {
+ }*/
+ else if (header.equals("kill"))
+ {
+ Jupiter::ReferenceString vData = buff.getToken(3, RenX::DelimC);
+ if (action.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 = playerData;
+ killerData.type = action[0];
+ killerData.data = action.substring(1);
+ victimData.type = vData[0];
+ victimData.data = vData.substring(1);
+ if (killerData.type == 1) // These are already handled in standard RCON logs; update models and move on.
+ {
+ {
+ PARSE_PLAYER_DATA_P(killerData.data.gotoToken(1, ','));
+ RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty);
+ player->character = RenX::getCharacter(killerData.data.getToken(0, ','));
+ }
+ if (victimData.type == 1)
+ {
+ PARSE_PLAYER_DATA_P(victimData.data.gotoToken(1, ','));
+ RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty);
+ player->character = RenX::getCharacter(victimData.data.getToken(0, ','));
+ }
+ }
+ else if (killerData.type == 3) // No killer!
+ {
+ if (victimData.type == 2 && victimData.data.size() != 0)
+ {
+ TeamType victimTeam = RenX::getTeam(victimData.data.getToken(0, ',').get(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, ',').get(0));
+ killerData.data = killerData.data.gotoToken(1, ',');
+ if (victimData.type == 1) // Non-player killed player
+ {
+ PARSE_PLAYER_DATA_P(victimData.data.gotoToken(1, ','));
+ RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty);
+ player->character = RenX::getCharacter(victimData.data.getToken(0, ','));
+ 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, ',').get(0));
+ victimData.data = victimData.data.gotoToken(1, ',');
+ ObjectType type;
+ if (victimData.data.match("Rx_Building_*"))
+ type = Building;
+ else if (victimData.data.match("Rx_Defence_*"))
+ type = Defence;
+ else
+ type = 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':
buff.shiftRight(1);
for (size_t i = 0; i < xPlugins.size(); i++)
@@ -1158,6 +1372,11 @@ unsigned int RenX::Server::getVersion() const
return RenX::Server::rconVersion;
}
+unsigned int RenX::Server::getXVersion() const
+{
+ return RenX::Server::xRconVersion;
+}
+
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 9d76fcb..376ea25 100644
--- a/RenX.Core/RenX_Server.h
+++ b/RenX.Core/RenX_Server.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -473,6 +473,13 @@ namespace RenX
*/
unsigned int getVersion() const;
+ /**
+ * @brief Fetches the eXtended-RCON version number, or 0 or none has been set.
+ *
+ * @return XRCON version number
+ */
+ unsigned int getXVersion() const;
+
/**
* @brief Fetches the game version string, or an empty string if none has been set.
*
@@ -513,6 +520,7 @@ namespace RenX
bool firstDeath = false;
bool firstAction = false;
unsigned int rconVersion = 0;
+ unsigned int xRconVersion = 0;
time_t lastAttempt = 0;
Jupiter::String lastLine;
Jupiter::StringS gameVersion;
diff --git a/RenX.Core/RenX_Tags.cpp b/RenX.Core/RenX_Tags.cpp
new file mode 100644
index 0000000..04cdff4
--- /dev/null
+++ b/RenX.Core/RenX_Tags.cpp
@@ -0,0 +1,273 @@
+/**
+ * Copyright (C) 2015 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 "Jupiter/Reference_String.h"
+#include "Jupiter/INIFile.h"
+#include "Jupiter/IRC_Client.h"
+#include "RenX_Core.h"
+#include "RenX_Functions.h"
+#include "RenX_Server.h"
+#include "RenX_PlayerInfo.h"
+#include "RenX_Plugin.h"
+#include "RenX_Tags.h"
+
+struct TagsImp : RenX::Tags
+{
+ TagsImp();
+ void processTags(Jupiter::StringType &msg, const RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *victim);
+ void sanitizeTags(Jupiter::StringType &fmt);
+} _tags;
+RenX::Tags *RenX::tags = &_tags;
+
+TagsImp::TagsImp()
+{
+ const Jupiter::ReadableString &configSection = Jupiter::IRC::Client::Config->get(RenX::getCore()->getName(), STRING_LITERAL_AS_REFERENCE("TagDefinitions"), RenX::getCore()->getName());
+
+ /** Global formats */
+ this->dateFmt = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("DateFormat"), STRING_LITERAL_AS_REFERENCE("%A, %B %d, %Y"));
+ this->timeFmt = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("TimeFormat"), STRING_LITERAL_AS_REFERENCE("%H:%M:%S"));;
+
+ /** Internal message tags */
+
+ /** Global tags */
+ this->INTERNAL_DATE_TAG = STRING_LITERAL_AS_REFERENCE("\0DAT\0");
+ this->INTERNAL_TIME_TAG = STRING_LITERAL_AS_REFERENCE("\0TIM\0");
+
+ /** Server tags */
+ this->INTERNAL_RCON_VERSION_TAG = STRING_LITERAL_AS_REFERENCE("\0RVER\0");
+ this->INTERNAL_GAME_VERSION_TAG = STRING_LITERAL_AS_REFERENCE("\0GVER\0");
+ this->INTERNAL_XRCON_VERSION_TAG = STRING_LITERAL_AS_REFERENCE("\0XVER\0");
+ this->INTERNAL_RULES_TAG = STRING_LITERAL_AS_REFERENCE("\0RUL\0");
+
+ /** Player tags*/
+ this->INTERNAL_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0NAME\0");
+ this->INTERNAL_RAW_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0RNAME\0");
+ this->INTERNAL_IP_TAG = STRING_LITERAL_AS_REFERENCE("\0IP\0");
+ this->INTERNAL_STEAM_TAG = STRING_LITERAL_AS_REFERENCE("\0STEAM\0");
+ this->INTERNAL_UUID_TAG = STRING_LITERAL_AS_REFERENCE("\0UUID\0");
+ this->INTERNAL_ID_TAG = STRING_LITERAL_AS_REFERENCE("\0ID\0");
+ this->INTERNAL_CHARACTER_TAG = STRING_LITERAL_AS_REFERENCE("\0CHR\0");
+ this->INTERNAL_VEHICLE_TAG = STRING_LITERAL_AS_REFERENCE("\0VEH\0");
+ this->INTERNAL_ADMIN_TAG = STRING_LITERAL_AS_REFERENCE("\0ADM\0");
+ this->INTERNAL_PREFIX_TAG = STRING_LITERAL_AS_REFERENCE("\0PFX\0");
+ this->INTERNAL_GAME_PREFIX_TAG = STRING_LITERAL_AS_REFERENCE("\0GPF\0");
+ this->INTERNAL_TEAM_COLOR_TAG = STRING_LITERAL_AS_REFERENCE("\0TC\0");
+ this->INTERNAL_TEAM_SHORT_TAG = STRING_LITERAL_AS_REFERENCE("\0TS\0");
+ this->INTERNAL_TEAM_LONG_TAG = STRING_LITERAL_AS_REFERENCE("\0TL\0");
+
+ /** Victim tags */
+ this->INTERNAL_VICTIM_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0VNAME\0");
+ this->INTERNAL_VICTIM_RAW_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0VRNAME\0");
+ this->INTERNAL_VICTIM_IP_TAG = STRING_LITERAL_AS_REFERENCE("\0VIP\0");
+ this->INTERNAL_VICTIM_STEAM_TAG = STRING_LITERAL_AS_REFERENCE("\0VSTEAM\0");
+ this->INTERNAL_VICTIM_UUID_TAG = STRING_LITERAL_AS_REFERENCE("\0VUUID\0");
+ this->INTERNAL_VICTIM_ID_TAG = STRING_LITERAL_AS_REFERENCE("\0VID\0");
+ this->INTERNAL_VICTIM_CHARACTER_TAG = STRING_LITERAL_AS_REFERENCE("\0VCHR\0");
+ this->INTERNAL_VICTIM_VEHICLE_TAG = STRING_LITERAL_AS_REFERENCE("\0VVEH\0");
+ this->INTERNAL_VICTIM_ADMIN_TAG = STRING_LITERAL_AS_REFERENCE("\0VADM\0");
+ this->INTERNAL_VICTIM_PREFIX_TAG = STRING_LITERAL_AS_REFERENCE("\0VPFX\0");
+ this->INTERNAL_VICTIM_GAME_PREFIX_TAG = STRING_LITERAL_AS_REFERENCE("\0VGPF\0");
+ this->INTERNAL_VICTIM_TEAM_COLOR_TAG = STRING_LITERAL_AS_REFERENCE("\0VTC\0");
+ this->INTERNAL_VICTIM_TEAM_SHORT_TAG = STRING_LITERAL_AS_REFERENCE("\0VTS\0");
+ this->INTERNAL_VICTIM_TEAM_LONG_TAG = STRING_LITERAL_AS_REFERENCE("\0VTL\0");
+
+ /** Other tags */
+ this->INTERNAL_WEAPON_TAG = STRING_LITERAL_AS_REFERENCE("\0WEP\0");
+ this->INTERNAL_OBJECT_TAG = STRING_LITERAL_AS_REFERENCE("\0OBJ\0");
+ this->INTERNAL_MESSAGE_TAG = STRING_LITERAL_AS_REFERENCE("\0MSG\0");
+ this->INTERNAL_NEW_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0NNAME\0");
+ this->INTERNAL_WIN_SCORE_TAG = STRING_LITERAL_AS_REFERENCE("\0WSC\0");
+ this->INTERNAL_LOSE_SCORE_TAG = STRING_LITERAL_AS_REFERENCE("\0LSC\0");
+
+ /** External (config) tags */
+
+ /** Global tags */
+ this->dateTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("DateTag"), STRING_LITERAL_AS_REFERENCE("{DATE}"));
+ this->timeTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("TimeTag"), STRING_LITERAL_AS_REFERENCE("{TIME}"));
+
+ /** 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}"));
+
+ /** Player tags */
+ this->nameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("NameTag"), STRING_LITERAL_AS_REFERENCE("{NAME}"));
+ this->rawNameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("RawNameTag"), STRING_LITERAL_AS_REFERENCE("{RNAME}"));
+ this->ipTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("IPTag"), STRING_LITERAL_AS_REFERENCE("{IP}"));
+ this->steamTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("SteamTag"), STRING_LITERAL_AS_REFERENCE("{STEAM}"));
+ this->uuidTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("UUIDTag"), STRING_LITERAL_AS_REFERENCE("{UUID}"));
+ this->idTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("IDTag"), STRING_LITERAL_AS_REFERENCE("{ID}"));
+ this->characterTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("CharacterTag"), STRING_LITERAL_AS_REFERENCE("{CHAR}"));
+ this->vehicleTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VehicleTag"), STRING_LITERAL_AS_REFERENCE("{VEH}"));
+ this->adminTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("AdminTag"), STRING_LITERAL_AS_REFERENCE("{ADMIN}"));
+ this->prefixTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("PrefixTag"), STRING_LITERAL_AS_REFERENCE("{PREFIX}"));
+ this->gamePrefixTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("GamePrefixTag"), STRING_LITERAL_AS_REFERENCE("{GPREFIX}"));
+ this->teamColorTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("TeamColorTag"), STRING_LITERAL_AS_REFERENCE("{TCOLOR}"));
+ this->teamShortTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("ShortTeamTag"), STRING_LITERAL_AS_REFERENCE("{TEAMS}"));
+ this->teamLongTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("LongTeamTag"), STRING_LITERAL_AS_REFERENCE("{TEAML}"));
+
+ /** Victim player tags */
+ this->victimNameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimNameTag"), STRING_LITERAL_AS_REFERENCE("{VNAME}"));
+ this->victimRawNameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimRawNameTag"), STRING_LITERAL_AS_REFERENCE("{VRNAME}"));
+ this->victimIPTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimIPTag"), STRING_LITERAL_AS_REFERENCE("{VIP}"));
+ this->victimSteamTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimSteamTag"), STRING_LITERAL_AS_REFERENCE("{VSTEAM}"));
+ this->victimUUIDTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimUUIDTag"), STRING_LITERAL_AS_REFERENCE("{VUUID}"));
+ this->victimIDTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimIDTag"), STRING_LITERAL_AS_REFERENCE("{VID}"));
+ this->victimCharacterTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimCharacterTag"), STRING_LITERAL_AS_REFERENCE("{VCHAR}"));
+ this->victimVehicleTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimVehicleTag"), STRING_LITERAL_AS_REFERENCE("{VVEH}"));
+ this->victimAdminTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimAdminTag"), STRING_LITERAL_AS_REFERENCE("{VADMIN}"));
+ this->victimPrefixTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimPrefixTag"), STRING_LITERAL_AS_REFERENCE("{VPREFIX}"));
+ this->victimGamePrefixTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimGamePrefixTag"), STRING_LITERAL_AS_REFERENCE("{VGPREFIX}"));
+ this->victimTeamColorTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimTeamColorTag"), STRING_LITERAL_AS_REFERENCE("{VTCOLOR}"));
+ this->victimTeamShortTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimShortTeamTag"), STRING_LITERAL_AS_REFERENCE("{VTEAMS}"));
+ this->victimTeamLongTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimLongTeamTag"), STRING_LITERAL_AS_REFERENCE("{VTEAML}"));
+
+ /** Other tags */
+ this->weaponTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("WeaponTag"), STRING_LITERAL_AS_REFERENCE("{WEAPON}"));
+ this->objectTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("ObjectTag"), STRING_LITERAL_AS_REFERENCE("{OBJECT}"));
+ this->messageTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("MessageTag"), STRING_LITERAL_AS_REFERENCE("{MESSAGE}"));
+ this->newNameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("NewNameTag"), STRING_LITERAL_AS_REFERENCE("{NNAME}"));
+ this->winScoreTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("WinScoreTag"), STRING_LITERAL_AS_REFERENCE("{WINSCORE}"));
+ this->loseScoreTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("LoseScoreTag"), STRING_LITERAL_AS_REFERENCE("{LOSESCORE}"));
+}
+
+void TagsImp::processTags(Jupiter::StringType &msg, const RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *victim)
+{
+ msg.replace(this->INTERNAL_DATE_TAG, Jupiter::ReferenceString(getTimeFormat(this->dateFmt.c_str())));
+ msg.replace(this->INTERNAL_TIME_TAG, Jupiter::ReferenceString(getTimeFormat(this->timeFmt.c_str())));
+ if (server != nullptr)
+ {
+ 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", server->getXVersion()));
+ msg.replace(this->INTERNAL_RULES_TAG, server->getRules());
+ if (player != nullptr)
+ {
+ msg.replace(this->INTERNAL_STEAM_TAG, server->formatSteamID(player));
+ }
+ if (victim != nullptr)
+ {
+ msg.replace(this->INTERNAL_VICTIM_STEAM_TAG, server->formatSteamID(victim));
+ }
+ }
+ if (player != nullptr)
+ {
+ msg.replace(this->INTERNAL_NAME_TAG, RenX::getFormattedPlayerName(player));
+ msg.replace(this->INTERNAL_RAW_NAME_TAG, player->name);
+ msg.replace(this->INTERNAL_IP_TAG, player->ip);
+ msg.replace(this->INTERNAL_UUID_TAG, player->uuid);
+ msg.replace(this->INTERNAL_ID_TAG, Jupiter::StringS::Format("%d", player->id));
+ msg.replace(this->INTERNAL_CHARACTER_TAG, RenX::translateName(player->character));
+ msg.replace(this->INTERNAL_VEHICLE_TAG, RenX::translateName(player->vehicle));
+ msg.replace(this->INTERNAL_ADMIN_TAG, player->adminType);
+ msg.replace(this->INTERNAL_PREFIX_TAG, player->formatNamePrefix);
+ msg.replace(this->INTERNAL_GAME_PREFIX_TAG, player->gamePrefix);
+ msg.replace(this->INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(player->team));
+ msg.replace(this->INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(player->team));
+ msg.replace(this->INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(player->team));
+ }
+ if (victim != nullptr)
+ {
+ msg.replace(this->INTERNAL_VICTIM_NAME_TAG, RenX::getFormattedPlayerName(victim));
+ msg.replace(this->INTERNAL_VICTIM_RAW_NAME_TAG, victim->name);
+ msg.replace(this->INTERNAL_VICTIM_IP_TAG, victim->ip);
+ msg.replace(this->INTERNAL_VICTIM_UUID_TAG, victim->uuid);
+ msg.replace(this->INTERNAL_VICTIM_ID_TAG, Jupiter::StringS::Format("%d", victim->id));
+ msg.replace(this->INTERNAL_VICTIM_CHARACTER_TAG, RenX::translateName(victim->character));
+ msg.replace(this->INTERNAL_VICTIM_VEHICLE_TAG, RenX::translateName(victim->vehicle));
+ msg.replace(this->INTERNAL_VICTIM_ADMIN_TAG, victim->adminType);
+ msg.replace(this->INTERNAL_VICTIM_PREFIX_TAG, victim->formatNamePrefix);
+ msg.replace(this->INTERNAL_VICTIM_GAME_PREFIX_TAG, victim->gamePrefix);
+ msg.replace(this->INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(victim->team));
+ msg.replace(this->INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(victim->team));
+ msg.replace(this->INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(victim->team));
+ }
+
+ Jupiter::ArrayList &xPlugins = *RenX::getCore()->getPlugins();
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_ProcessTags(msg, server, player, victim);
+}
+
+void TagsImp::sanitizeTags(Jupiter::StringType &fmt)
+{
+ /** Global tags */
+ fmt.replace(this->dateTag, this->INTERNAL_DATE_TAG);
+ fmt.replace(this->timeTag, this->INTERNAL_TIME_TAG);
+
+ /** 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);
+
+ /** Player tags */
+ fmt.replace(this->nameTag, this->INTERNAL_NAME_TAG);
+ fmt.replace(this->rawNameTag, this->INTERNAL_RAW_NAME_TAG);
+ fmt.replace(this->ipTag, this->INTERNAL_IP_TAG);
+ fmt.replace(this->steamTag, this->INTERNAL_STEAM_TAG);
+ fmt.replace(this->uuidTag, this->INTERNAL_UUID_TAG);
+ fmt.replace(this->idTag, this->INTERNAL_ID_TAG);
+ fmt.replace(this->characterTag, this->INTERNAL_CHARACTER_TAG);
+ fmt.replace(this->vehicleTag, this->INTERNAL_VEHICLE_TAG);
+ fmt.replace(this->adminTag, this->INTERNAL_ADMIN_TAG);
+ fmt.replace(this->prefixTag, this->INTERNAL_PREFIX_TAG);
+ fmt.replace(this->gamePrefixTag, this->INTERNAL_GAME_PREFIX_TAG);
+ fmt.replace(this->teamColorTag, this->INTERNAL_TEAM_COLOR_TAG);
+ fmt.replace(this->teamShortTag, this->INTERNAL_TEAM_SHORT_TAG);
+ fmt.replace(this->teamLongTag, this->INTERNAL_TEAM_LONG_TAG);
+
+ /** Victim tags */
+ fmt.replace(this->victimNameTag, this->INTERNAL_VICTIM_NAME_TAG);
+ fmt.replace(this->victimRawNameTag, this->INTERNAL_VICTIM_RAW_NAME_TAG);
+ fmt.replace(this->victimIPTag, this->INTERNAL_VICTIM_IP_TAG);
+ fmt.replace(this->victimSteamTag, this->INTERNAL_VICTIM_STEAM_TAG);
+ fmt.replace(this->victimUUIDTag, this->INTERNAL_VICTIM_UUID_TAG);
+ fmt.replace(this->victimIDTag, this->INTERNAL_VICTIM_ID_TAG);
+ fmt.replace(this->victimCharacterTag, this->INTERNAL_VICTIM_CHARACTER_TAG);
+ fmt.replace(this->victimVehicleTag, this->INTERNAL_VICTIM_VEHICLE_TAG);
+ fmt.replace(this->victimAdminTag, this->INTERNAL_VICTIM_ADMIN_TAG);
+ fmt.replace(this->victimPrefixTag, this->INTERNAL_VICTIM_PREFIX_TAG);
+ fmt.replace(this->victimGamePrefixTag, this->INTERNAL_VICTIM_GAME_PREFIX_TAG);
+ fmt.replace(this->victimTeamColorTag, this->INTERNAL_VICTIM_TEAM_COLOR_TAG);
+ fmt.replace(this->victimTeamShortTag, this->INTERNAL_VICTIM_TEAM_SHORT_TAG);
+ fmt.replace(this->victimTeamLongTag, this->INTERNAL_VICTIM_TEAM_LONG_TAG);
+
+ /** Other tags */
+ fmt.replace(this->weaponTag, this->INTERNAL_WEAPON_TAG);
+ fmt.replace(this->objectTag, this->INTERNAL_OBJECT_TAG);
+ fmt.replace(this->messageTag, this->INTERNAL_MESSAGE_TAG);
+ fmt.replace(this->newNameTag, this->INTERNAL_NEW_NAME_TAG);
+ fmt.replace(this->winScoreTag, this->INTERNAL_WIN_SCORE_TAG);
+ fmt.replace(this->loseScoreTag, this->INTERNAL_LOSE_SCORE_TAG);
+
+ Jupiter::ArrayList &xPlugins = *RenX::getCore()->getPlugins();
+ for (size_t i = 0; i < xPlugins.size(); i++)
+ xPlugins.get(i)->RenX_SanitizeTags(fmt);
+}
+
+/** Foward functions */
+
+void RenX::processTags(Jupiter::StringType &msg, const RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *victim)
+{
+ _tags.processTags(msg, server, player, victim);
+}
+
+void RenX::sanitizeTags(Jupiter::StringType &fmt)
+{
+ _tags.sanitizeTags(fmt);
+}
\ No newline at end of file
diff --git a/RenX.Core/RenX_Tags.h b/RenX.Core/RenX_Tags.h
new file mode 100644
index 0000000..e9e1730
--- /dev/null
+++ b/RenX.Core/RenX_Tags.h
@@ -0,0 +1,164 @@
+/**
+ * Copyright (C) 2015 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_TAGS_H_HEADER
+#define _RENX_TAGS_H_HEADER
+
+/**
+ * @file RenX_Tags.h
+ * @brief Provides tag processing functions
+ */
+
+#include "Jupiter/String.h"
+#include "Jupiter/CString.h"
+#include "RenX.h"
+
+/** DLL Linkage Nagging */
+#if defined _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4251)
+#endif
+
+namespace RenX
+{
+ /** Forward declarations */
+ struct PlayerInfo;
+ class Server;
+
+ RENX_API void processTags(Jupiter::StringType &msg, const RenX::Server *server = nullptr, const RenX::PlayerInfo *player = nullptr, const RenX::PlayerInfo *victim = nullptr);
+ RENX_API void sanitizeTags(Jupiter::StringType &fmt);
+
+ struct RENX_API Tags
+ {
+ /** Global formats */
+ Jupiter::CStringS dateFmt;
+ Jupiter::CStringS timeFmt;
+
+ /** Internal message tags */
+
+ /** Global tags */
+ Jupiter::ReferenceString INTERNAL_DATE_TAG;
+ Jupiter::ReferenceString INTERNAL_TIME_TAG;
+
+ /** Server tags */
+ Jupiter::ReferenceString INTERNAL_RCON_VERSION_TAG;
+ Jupiter::ReferenceString INTERNAL_GAME_VERSION_TAG;
+ Jupiter::ReferenceString INTERNAL_XRCON_VERSION_TAG;
+ Jupiter::ReferenceString INTERNAL_RULES_TAG;
+
+ /** Player tags */
+ Jupiter::ReferenceString INTERNAL_NAME_TAG;
+ Jupiter::ReferenceString INTERNAL_RAW_NAME_TAG;
+ Jupiter::ReferenceString INTERNAL_IP_TAG;
+ Jupiter::ReferenceString INTERNAL_STEAM_TAG;
+ Jupiter::ReferenceString INTERNAL_UUID_TAG;
+ Jupiter::ReferenceString INTERNAL_ID_TAG;
+ Jupiter::ReferenceString INTERNAL_CHARACTER_TAG;
+ Jupiter::ReferenceString INTERNAL_VEHICLE_TAG;
+ Jupiter::ReferenceString INTERNAL_ADMIN_TAG;
+ Jupiter::ReferenceString INTERNAL_PREFIX_TAG;
+ Jupiter::ReferenceString INTERNAL_GAME_PREFIX_TAG;
+ Jupiter::ReferenceString INTERNAL_TEAM_COLOR_TAG;
+ Jupiter::ReferenceString INTERNAL_TEAM_SHORT_TAG;
+ Jupiter::ReferenceString INTERNAL_TEAM_LONG_TAG;
+
+ /** Victim tags */
+ Jupiter::ReferenceString INTERNAL_VICTIM_NAME_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_RAW_NAME_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_IP_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_STEAM_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_UUID_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_ID_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_CHARACTER_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_VEHICLE_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_ADMIN_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_PREFIX_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_GAME_PREFIX_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_COLOR_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_SHORT_TAG;
+ Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_LONG_TAG;
+
+ /** Other tags */
+ Jupiter::ReferenceString INTERNAL_WEAPON_TAG;
+ Jupiter::ReferenceString INTERNAL_OBJECT_TAG;
+ Jupiter::ReferenceString INTERNAL_MESSAGE_TAG;
+ Jupiter::ReferenceString INTERNAL_NEW_NAME_TAG;
+ Jupiter::ReferenceString INTERNAL_WIN_SCORE_TAG;
+ Jupiter::ReferenceString INTERNAL_LOSE_SCORE_TAG;
+
+ /** External message tags */
+
+ /** Global tags */
+ Jupiter::StringS dateTag;
+ Jupiter::StringS timeTag;
+
+ /** Server tags */
+ Jupiter::StringS rconVersionTag;
+ Jupiter::StringS gameVersionTag;
+ Jupiter::StringS xRconVersionTag;
+ Jupiter::StringS rulesTag;
+
+ /** Player tags */
+ Jupiter::StringS nameTag;
+ Jupiter::StringS rawNameTag;
+ Jupiter::StringS ipTag;
+ Jupiter::StringS steamTag;
+ Jupiter::StringS uuidTag;
+ Jupiter::StringS idTag;
+ Jupiter::StringS characterTag;
+ Jupiter::StringS vehicleTag;
+ Jupiter::StringS adminTag;
+ Jupiter::StringS prefixTag;
+ Jupiter::StringS gamePrefixTag;
+ Jupiter::StringS teamColorTag;
+ Jupiter::StringS teamShortTag;
+ Jupiter::StringS teamLongTag;
+
+ /** Victim tags */
+ Jupiter::StringS victimNameTag;
+ Jupiter::StringS victimRawNameTag;
+ Jupiter::StringS victimIPTag;
+ Jupiter::StringS victimSteamTag;
+ Jupiter::StringS victimUUIDTag;
+ Jupiter::StringS victimIDTag;
+ Jupiter::StringS victimCharacterTag;
+ Jupiter::StringS victimVehicleTag;
+ Jupiter::StringS victimAdminTag;
+ Jupiter::StringS victimPrefixTag;
+ Jupiter::StringS victimGamePrefixTag;
+ Jupiter::StringS victimTeamColorTag;
+ Jupiter::StringS victimTeamShortTag;
+ Jupiter::StringS victimTeamLongTag;
+
+ /** Other tags */
+ Jupiter::StringS weaponTag;
+ Jupiter::StringS objectTag;
+ Jupiter::StringS messageTag;
+ Jupiter::StringS newNameTag;
+ Jupiter::StringS winScoreTag;
+ Jupiter::StringS loseScoreTag;
+ };
+
+ RENX_API extern Tags *tags;
+}
+
+/** Re-enable warnings */
+#if defined _MSC_VER
+#pragma warning(pop)
+#endif
+
+#endif // _RENX_TAGS_H_HEADER
\ No newline at end of file
diff --git a/RenX.Greetings/RenX_Greetings.cpp b/RenX.Greetings/RenX_Greetings.cpp
index baf9697..d9652ab 100644
--- a/RenX.Greetings/RenX_Greetings.cpp
+++ b/RenX.Greetings/RenX_Greetings.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -15,21 +15,21 @@
* Written by Justin James
*/
+#include "Jupiter/IRC_Client.h"
+#include "Jupiter/INIFile.h"
#include "RenX_Greetings.h"
#include "RenX_PlayerInfo.h"
#include "RenX_Server.h"
-#include "Jupiter/IRC_Client.h"
-#include "Jupiter/INIFile.h"
+#include "RenX_Tags.h"
void RenX_GreetingsPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player)
{
auto sendMessage = [&](const Jupiter::ReadableString &m)
{
Jupiter::String msg = m;
- msg.replace(this->steamTag, server->formatSteamID(player));
- msg.replace(this->ipTag, player->ip);
- msg.replace(this->uuidTag, player->uuid);
- msg.replace(this->nameTag, player->name);
+
+ RenX::sanitizeTags(msg);
+ RenX::processTags(msg, server, player);
if (this->sendPrivate)
server->sendMessage(player, msg);
@@ -79,11 +79,6 @@ void RenX_GreetingsPlugin::init()
if (RenX_GreetingsPlugin::greetingsFile.getLineCount() == 0)
RenX_GreetingsPlugin::greetingsFile.addData(STRING_LITERAL_AS_REFERENCE("Please notify the server administrator to properly configure or disable server greetings.\r\n"));
RenX_GreetingsPlugin::lastLine = RenX_GreetingsPlugin::greetingsFile.getLineCount() - 1;
-
- RenX_GreetingsPlugin::nameTag = Jupiter::IRC::Client::Config->get(RenX_GreetingsPlugin::name, STRING_LITERAL_AS_REFERENCE("NameTag"), STRING_LITERAL_AS_REFERENCE("{NAME}"));
- RenX_GreetingsPlugin::ipTag = Jupiter::IRC::Client::Config->get(RenX_GreetingsPlugin::name, STRING_LITERAL_AS_REFERENCE("IPTag"), STRING_LITERAL_AS_REFERENCE("{IP}"));
- RenX_GreetingsPlugin::steamTag = Jupiter::IRC::Client::Config->get(RenX_GreetingsPlugin::name, STRING_LITERAL_AS_REFERENCE("SteamTag"), STRING_LITERAL_AS_REFERENCE("{STEAM}"));
- RenX_GreetingsPlugin::uuidTag = Jupiter::IRC::Client::Config->get(RenX_GreetingsPlugin::name, STRING_LITERAL_AS_REFERENCE("UUIDTag"), STRING_LITERAL_AS_REFERENCE("{UUID}"));
}
// Plugin instantiation and entry point.
diff --git a/RenX.Greetings/RenX_Greetings.h b/RenX.Greetings/RenX_Greetings.h
index 3012b96..92a1ca7 100644
--- a/RenX.Greetings/RenX_Greetings.h
+++ b/RenX.Greetings/RenX_Greetings.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -40,10 +40,6 @@ private:
unsigned int lastLine;
unsigned int sendMode = 0; /** 0 = Send greetings randomly, 1 = Send greetings sequentially, 2 = Send all greetings */
Jupiter::File greetingsFile;
- Jupiter::StringS nameTag;
- Jupiter::StringS ipTag;
- Jupiter::StringS steamTag;
- Jupiter::StringS uuidTag;
STRING_LITERAL_AS_NAMED_REFERENCE(name, "RenX.Greetings");
};
diff --git a/RenX.Logging/RenX_Logging.cpp b/RenX.Logging/RenX_Logging.cpp
index 28a6168..c9e7ce5 100644
--- a/RenX.Logging/RenX_Logging.cpp
+++ b/RenX.Logging/RenX_Logging.cpp
@@ -22,40 +22,7 @@
#include "RenX_PlayerInfo.h"
#include "RenX_Functions.h"
#include "RenX_Server.h"
-
-
-Jupiter::ReferenceString INTERNAL_RCON_VERSION_TAG = STRING_LITERAL_AS_REFERENCE("\0RVER\0");
-Jupiter::ReferenceString INTERNAL_GAME_VERSION_TAG = STRING_LITERAL_AS_REFERENCE("\0GVER\0");
-Jupiter::ReferenceString INTERNAL_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0NVER\0");
-Jupiter::ReferenceString INTERNAL_RAW_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0RNAME\0");
-Jupiter::ReferenceString INTERNAL_IP_TAG = STRING_LITERAL_AS_REFERENCE("\0IP\0");
-Jupiter::ReferenceString INTERNAL_STEAM_TAG = STRING_LITERAL_AS_REFERENCE("\0STEAM\0");
-Jupiter::ReferenceString INTERNAL_UUID_TAG = STRING_LITERAL_AS_REFERENCE("\0UUID\0");
-Jupiter::ReferenceString INTERNAL_ID_TAG = STRING_LITERAL_AS_REFERENCE("\0ID\0");
-Jupiter::ReferenceString INTERNAL_ADMIN_TAG = STRING_LITERAL_AS_REFERENCE("\0ADM\0");
-Jupiter::ReferenceString INTERNAL_PREFIX_TAG = STRING_LITERAL_AS_REFERENCE("\0PFX\0");
-Jupiter::ReferenceString INTERNAL_GAME_PREFIX_TAG = STRING_LITERAL_AS_REFERENCE("\0GPF\0");
-Jupiter::ReferenceString INTERNAL_TEAM_COLOR_TAG = STRING_LITERAL_AS_REFERENCE("\0TC\0");
-Jupiter::ReferenceString INTERNAL_TEAM_SHORT_TAG = STRING_LITERAL_AS_REFERENCE("\0TS\0");
-Jupiter::ReferenceString INTERNAL_TEAM_LONG_TAG = STRING_LITERAL_AS_REFERENCE("\0TL\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0VNAME\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_RAW_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0VRNAME\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_IP_TAG = STRING_LITERAL_AS_REFERENCE("\0VIP\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_STEAM_TAG = STRING_LITERAL_AS_REFERENCE("\0VSTEAM\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_UUID_TAG = STRING_LITERAL_AS_REFERENCE("\0VUUID\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_ID_TAG = STRING_LITERAL_AS_REFERENCE("\0VID\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_ADMIN_TAG = STRING_LITERAL_AS_REFERENCE("\0VADM\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_PREFIX_TAG = STRING_LITERAL_AS_REFERENCE("\0VPFX\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_GAME_PREFIX_TAG = STRING_LITERAL_AS_REFERENCE("\0VGPF\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_COLOR_TAG = STRING_LITERAL_AS_REFERENCE("\0VTC\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_SHORT_TAG = STRING_LITERAL_AS_REFERENCE("\0VTS\0");
-Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_LONG_TAG = STRING_LITERAL_AS_REFERENCE("\0VTL\0");
-Jupiter::ReferenceString INTERNAL_WEAPON_TAG = STRING_LITERAL_AS_REFERENCE("\0WEP\0");
-Jupiter::ReferenceString INTERNAL_OBJECT_TAG = STRING_LITERAL_AS_REFERENCE("\0OBJ\0");
-Jupiter::ReferenceString INTERNAL_MESSAGE_TAG = STRING_LITERAL_AS_REFERENCE("\0MSG\0");
-Jupiter::ReferenceString INTERNAL_NEW_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0NNAME\0");
-Jupiter::ReferenceString INTERNAL_WIN_SCORE_TAG = STRING_LITERAL_AS_REFERENCE("\0WSC\0");
-Jupiter::ReferenceString INTERNAL_LOSE_SCORE_TAG = STRING_LITERAL_AS_REFERENCE("\0LSC\0");
+#include "RenX_Tags.h"
void RenX_LoggingPlugin::init()
{
@@ -80,273 +47,204 @@ void RenX_LoggingPlugin::init()
RenX_LoggingPlugin::adminLogoutPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AdminLogoutPublic"), true);
RenX_LoggingPlugin::adminPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AdminPublic"), 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::grantCharacterPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("GrantCharacterPublic"), false);
+ RenX_LoggingPlugin::spawnVehiclePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SpawnVehiclePublic"), false);
+ RenX_LoggingPlugin::spawnVehicleNoOwnerPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SpawnVehicleNoOwnerPublic"), true);
+ RenX_LoggingPlugin::minePlacePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MinePlacePublic"), false);
+ 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);
RenX_LoggingPlugin::authorizedPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AuthorizedPublic"), true);
RenX_LoggingPlugin::otherPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("OtherPublic"), false);
- /** Server tags */
- RenX_LoggingPlugin::rconVersionTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RCONVersionTag"), STRING_LITERAL_AS_REFERENCE("{RVER}"));
- RenX_LoggingPlugin::gameVersionTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameVersionTag"), STRING_LITERAL_AS_REFERENCE("{GVER}"));
-
- /** Player tags */
- RenX_LoggingPlugin::nameTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("NameTag"), STRING_LITERAL_AS_REFERENCE("{NAME}"));
- RenX_LoggingPlugin::rawNameTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RawNameTag"), STRING_LITERAL_AS_REFERENCE("{RNAME}"));
- RenX_LoggingPlugin::ipTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("IPTag"), STRING_LITERAL_AS_REFERENCE("{IP}"));
- RenX_LoggingPlugin::steamTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SteamTag"), STRING_LITERAL_AS_REFERENCE("{STEAM}"));
- RenX_LoggingPlugin::uuidTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("UUIDTag"), STRING_LITERAL_AS_REFERENCE("{UUID}"));
- RenX_LoggingPlugin::idTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("IDTag"), STRING_LITERAL_AS_REFERENCE("{ID}"));
- RenX_LoggingPlugin::adminTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminTag"), STRING_LITERAL_AS_REFERENCE("{ADMIN}"));
- RenX_LoggingPlugin::prefixTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("PrefixTag"), STRING_LITERAL_AS_REFERENCE("{PREFIX}"));
- RenX_LoggingPlugin::gamePrefixTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GamePrefixTag"), STRING_LITERAL_AS_REFERENCE("{GPREFIX}"));
- RenX_LoggingPlugin::teamColorTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TeamColorTag"), STRING_LITERAL_AS_REFERENCE("{TCOLOR}"));
- RenX_LoggingPlugin::teamShortTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ShortTeamTag"), STRING_LITERAL_AS_REFERENCE("{TEAMS}"));
- RenX_LoggingPlugin::teamLongTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("LongTeamTag"), STRING_LITERAL_AS_REFERENCE("{TEAML}"));
-
- /** Victim player tags */
- RenX_LoggingPlugin::victimNameTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimNameTag"), STRING_LITERAL_AS_REFERENCE("{VNAME}"));
- RenX_LoggingPlugin::victimRawNameTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimRawNameTag"), STRING_LITERAL_AS_REFERENCE("{VRNAME}"));
- RenX_LoggingPlugin::victimIPTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimIPTag"), STRING_LITERAL_AS_REFERENCE("{VIP}"));
- RenX_LoggingPlugin::victimSteamTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimSteamTag"), STRING_LITERAL_AS_REFERENCE("{VSTEAM}"));
- RenX_LoggingPlugin::victimUUIDTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimUUIDTag"), STRING_LITERAL_AS_REFERENCE("{VUUID}"));
- RenX_LoggingPlugin::victimIDTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimIDTag"), STRING_LITERAL_AS_REFERENCE("{VID}"));
- RenX_LoggingPlugin::victimAdminTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimAdminTag"), STRING_LITERAL_AS_REFERENCE("{VADMIN}"));
- RenX_LoggingPlugin::victimPrefixTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimPrefixTag"), STRING_LITERAL_AS_REFERENCE("{VPREFIX}"));
- RenX_LoggingPlugin::victimGamePrefixTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimGamePrefixTag"), STRING_LITERAL_AS_REFERENCE("{VGPREFIX}"));
- RenX_LoggingPlugin::victimTeamColorTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimTeamColorTag"), STRING_LITERAL_AS_REFERENCE("{VTCOLOR}"));
- RenX_LoggingPlugin::victimTeamShortTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimShortTeamTag"), STRING_LITERAL_AS_REFERENCE("{VTEAMS}"));
- RenX_LoggingPlugin::victimTeamLongTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VictimLongTeamTag"), STRING_LITERAL_AS_REFERENCE("{VTEAML}"));
-
- /** Other tags */
- RenX_LoggingPlugin::weaponTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("WeaponTag"), STRING_LITERAL_AS_REFERENCE("{WEAPON}"));
- RenX_LoggingPlugin::objectTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ObjectTag"), STRING_LITERAL_AS_REFERENCE("{OBJECT}"));
- RenX_LoggingPlugin::messageTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MessageTag"), STRING_LITERAL_AS_REFERENCE("{MESSAGE}"));
- RenX_LoggingPlugin::newNameTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("NewNameTag"), STRING_LITERAL_AS_REFERENCE("{NNAME}"));
- RenX_LoggingPlugin::winScoreTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("WinScoreTag"), STRING_LITERAL_AS_REFERENCE("{WINSCORE}"));
- RenX_LoggingPlugin::loseScoreTag = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("LoseScoreTag"), STRING_LITERAL_AS_REFERENCE("{LOSESCORE}"));
-
/** Event formats */
RenX_LoggingPlugin::joinPublicFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("JoinPublicFormat"),
- Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s!", this->nameTag.size(), this->nameTag.ptr(), this->teamLongTag.size(), this->teamLongTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr()));
RenX_LoggingPlugin::joinAdminFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("JoinAdminFormat"),
- Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD " using Steam ID " IRCBOLD "%.*s" IRCBOLD ".", this->nameTag.size(), this->nameTag.ptr(), this->teamLongTag.size(), this->teamLongTag.ptr(), this->ipTag.size(), this->ipTag.ptr(), this->steamTag.size(), this->steamTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD " using Steam ID " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr(), RenX::tags->ipTag.size(), RenX::tags->ipTag.ptr(), RenX::tags->steamTag.size(), RenX::tags->steamTag.ptr()));
RenX_LoggingPlugin::joinNoSteamAdminFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("JoinNoSteamAdminFormat"),
- Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD ", but is not using Steam.", this->nameTag.size(), this->nameTag.ptr(), this->teamLongTag.size(), this->teamLongTag.ptr(), this->ipTag.size(), this->ipTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD ", but is not using Steam.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr(), RenX::tags->ipTag.size(), RenX::tags->ipTag.ptr()));
RenX_LoggingPlugin::partFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("PartFormat"),
- Jupiter::StringS::Format(IRCCOLOR "12[Part] " IRCBOLD "%.*s" IRCBOLD " has left the %.*s.", this->nameTag.size(), this->nameTag.ptr(), this->teamLongTag.size(), this->teamLongTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "12[Part] " IRCBOLD "%.*s" IRCBOLD " left the %.*s.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr()));
RenX_LoggingPlugin::nameChangeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("NameChangeFormat"),
- Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " has changed their name to " IRCBOLD "%.*s" IRCBOLD ".", this->nameTag.size(), this->nameTag.ptr(), this->newNameTag.size(), this->newNameTag.ptr()));
+ Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " changed their name to " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->newNameTag.size(), RenX::tags->newNameTag.ptr()));
RenX_LoggingPlugin::teamChangeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TeamChangeFormat"),
- Jupiter::StringS::Format("%.*s" IRCCOLOR " switched teams!", this->nameTag.size(), this->nameTag.ptr()));
+ Jupiter::StringS::Format("%.*s" IRCCOLOR " switched teams!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr()));
RenX_LoggingPlugin::chatFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ChatFormat"),
- Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD ": %.*s", this->nameTag.size(), this->nameTag.ptr(), this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD ": %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::teamChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TeamChatFormat"),
- Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD ": %.*s", this->nameTag.size(), this->nameTag.ptr(), this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD ": %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::deployFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DeployFormat"),
- Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " deployed a " IRCBOLD "%.*s" IRCBOLD, this->nameTag.size(), this->nameTag.ptr(), this->objectTag.size(), this->objectTag.ptr()));
+ Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " deployed a " IRCBOLD "%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr()));
RenX_LoggingPlugin::suicideFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SuicideFormat"),
- Jupiter::StringS::Format("%.*s" IRCCOLOR " suicided (death by " IRCCOLOR "12%.*s" IRCCOLOR ").", this->nameTag.size(), this->nameTag.ptr(), this->weaponTag.size(), this->weaponTag.ptr()));
+ Jupiter::StringS::Format("%.*s" IRCCOLOR " suicided (death by " IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
RenX_LoggingPlugin::killFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("KillFormat"),
- Jupiter::StringS::Format("%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", this->nameTag.size(), this->nameTag.ptr(), this->victimNameTag.size(), this->victimNameTag.ptr(), this->weaponTag.size(), this->weaponTag.ptr()));
+ Jupiter::StringS::Format("%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
+
+ RenX_LoggingPlugin::killFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("KillFormat2"),
+ Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
RenX_LoggingPlugin::dieFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DieFormat"),
- Jupiter::StringS::Format("%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", this->nameTag.size(), this->nameTag.ptr(), this->weaponTag.size(), this->weaponTag.ptr()));
+ Jupiter::StringS::Format("%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
+
+ RenX_LoggingPlugin::dieFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DieFormat2"),
+ Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
RenX_LoggingPlugin::destroyBuildingFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyBuildingFormat"),
- Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", this->nameTag.size(), this->nameTag.ptr(), this->victimTeamColorTag.size(), this->victimTeamColorTag.ptr(), this->objectTag.size(), this->objectTag.ptr(), this->weaponTag.size(), this->weaponTag.ptr()));
+ Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
+ RenX_LoggingPlugin::destroyBuildingFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyBuildingFormat2"),
+ Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
+
RenX_LoggingPlugin::destroyDefenceFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyDefenceFormat"),
- Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", this->nameTag.size(), this->nameTag.ptr(), this->victimTeamColorTag.size(), this->victimTeamColorTag.ptr(), this->objectTag.size(), this->objectTag.ptr(), this->weaponTag.size(), this->weaponTag.ptr()));
+ Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
+ RenX_LoggingPlugin::destroyDefenceFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyDefenceFormat2"),
+ Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
+
RenX_LoggingPlugin::destroyVehicleFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyVehicleFormat"),
- Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", this->nameTag.size(), this->nameTag.ptr(), this->victimTeamColorTag.size(), this->victimTeamColorTag.ptr(), this->objectTag.size(), this->objectTag.ptr(), this->weaponTag.size(), this->weaponTag.ptr()));
+ Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
+
+ RenX_LoggingPlugin::destroyVehicleFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyVehicleFormat2"),
+ Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr()));
RenX_LoggingPlugin::gameOverFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameOverFormat"),
- Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "%.*s The " IRCBOLD "%.*s" IRCBOLD " won by " IRCBOLD "%.*s" IRCBOLD, this->teamColorTag.size(), this->teamColorTag.ptr(), this->teamLongTag.size(), this->teamLongTag.ptr(), this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "%.*s The " IRCBOLD "%.*s" IRCBOLD " won by " IRCBOLD "%.*s" IRCBOLD, RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::gameOverTieFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameOverTieNoWinFormat"),
- Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD " - Victory handed to " IRCBOLD IRCCOLOR "%.*s%.*s" IRCBOLD, this->messageTag.size(), this->messageTag.ptr(), this->teamColorTag.size(), this->teamColorTag.ptr(), this->teamLongTag.size(), this->teamLongTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD " - Victory handed to " IRCBOLD IRCCOLOR "%.*s%.*s" IRCBOLD, RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr()));
RenX_LoggingPlugin::gameOverTieNoWinFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameOverTieFormat"),
- Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD, this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD, RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::gameOverScoreFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameOverScoreFormat"),
- Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "%.*s %.*s" IRCCOLOR ": %.*s | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %.*s", this->teamColorTag.size(), this->teamColorTag.ptr(), this->teamLongTag.size(), this->teamLongTag.ptr(), this->winScoreTag.size(), this->winScoreTag.ptr(), this->victimTeamColorTag.size(), this->victimTeamColorTag.ptr(), this->victimTeamLongTag.size(), this->victimTeamLongTag.ptr(), this->loseScoreTag.size(), this->loseScoreTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "%.*s %.*s" IRCCOLOR ": %.*s | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %.*s", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr(), RenX::tags->winScoreTag.size(), RenX::tags->winScoreTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->victimTeamLongTag.size(), RenX::tags->victimTeamLongTag.ptr(), RenX::tags->loseScoreTag.size(), RenX::tags->loseScoreTag.ptr()));
RenX_LoggingPlugin::gameFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameFormat"),
- Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR " %.*s", this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::executeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ExecuteFormat"),
- Jupiter::StringS::Format(IRCCOLOR "07%.*s executed: %.*s", this->nameTag.size(), this->nameTag.ptr(), this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "07%.*s executed: %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::evaFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("EVAFormat"),
- Jupiter::StringS::Format(IRCCOLOR "09EVA: %.*s", this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "09EVA: %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::evaPrivateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("EVAPrivateFormat"),
- Jupiter::StringS::Format(IRCCOLOR "12(EVA -> %.*s): %.*s", this->rawNameTag.size(), this->rawNameTag.ptr(), this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "12(EVA -> %.*s): %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::subscribeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SubscribeFormat"),
- Jupiter::StringS::Format(IRCCOLOR "03%.*s has subscribed to the RCON data stream.", this->nameTag.size(), this->nameTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "03%.*s subscribed to the RCON data stream.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr()));
RenX_LoggingPlugin::rconFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RCONFormat"),
- Jupiter::StringS::Format(IRCCOLOR "05[RCON]" IRCCOLOR " %.*s", this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "05[RCON]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::adminLoginFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminLoginFormat"),
- Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " has logged in with " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", this->nameTag.size(), this->nameTag.ptr(), this->adminTag.size(), this->adminTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " logged in with " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->adminTag.size(), RenX::tags->adminTag.ptr()));
RenX_LoggingPlugin::adminGrantFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminGrantFormat"),
- Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " has been granted " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", this->nameTag.size(), this->nameTag.ptr(), this->adminTag.size(), this->adminTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " was granted " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->adminTag.size(), RenX::tags->adminTag.ptr()));
RenX_LoggingPlugin::adminLogoutFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminLogoutFormat"),
- Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " has logged out of their " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", this->nameTag.size(), this->nameTag.ptr(), this->adminTag.size(), this->adminTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " logged out of their " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->adminTag.size(), RenX::tags->adminTag.ptr()));
RenX_LoggingPlugin::adminFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminFormat"),
- Jupiter::StringS::Format(IRCCOLOR "07[Admin]" IRCCOLOR " %.*s", this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "07[Admin]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::logFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("LogFormat"),
- Jupiter::StringS::Format(IRCCOLOR "07[Log]" IRCCOLOR " %.*s", this->messageTag.size(), this->messageTag.ptr()));
+ 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::grantCharacterFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GrantCharacterFormat"),
+ Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " is now a " IRCBOLD IRCCOLOR "%.*s%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.ptr()));
+
+ RenX_LoggingPlugin::spawnVehicleFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SpawnVehicleFormat"),
+ Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->victimVehicleTag.size(), RenX::tags->victimVehicleTag.ptr()));
+
+ RenX_LoggingPlugin::spawnVehicleNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SpawnVehicleNoOwnerFormat"),
+ Jupiter::StringS::Format("A " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD " has spawned.", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->vehicleTag.size(), RenX::tags->vehicleTag.ptr()));
+
+ RenX_LoggingPlugin::minePlaceFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MinePlaceFormat"),
+ Jupiter::StringS::Format(IRCCOLOR "07[C4] " IRCCOLOR IRCBOLD "%.*s" IRCCOLOR IRCBOLD " placed a " IRCBOLD IRCCOLOR "12%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.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.
RenX_LoggingPlugin::errorFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ErrorFormat"),
- Jupiter::StringS::Format(IRCCOLOR "04[Error]" IRCCOLOR " %.*s", this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "04[Error]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
RenX_LoggingPlugin::versionFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VersionFormat"),
- Jupiter::StringS::Format(IRCCOLOR "03Renegade X RCON connection established; using RCON verison " IRCBOLD "%.*s" IRCBOLD " for game version " IRCBOLD "%.*s" IRCBOLD, this->rconVersionTag.size(), this->rconVersionTag.ptr(), this->gameVersionTag.size(), this->gameVersionTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "03Renegade X RCON connection established; using RCON verison " IRCBOLD "%.*s" IRCBOLD " for game version " IRCBOLD "%.*s" IRCBOLD, RenX::tags->rconVersionTag.size(), RenX::tags->rconVersionTag.ptr(), RenX::tags->gameVersionTag.size(), RenX::tags->gameVersionTag.ptr()));
RenX_LoggingPlugin::authorizedFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AuthorizedFormat"),
Jupiter::StringS::Format(IRCCOLOR "03RCON authorization completed."));
RenX_LoggingPlugin::otherFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("OtherFormat"),
- Jupiter::StringS::Format(IRCCOLOR "06[Other]" IRCCOLOR " %.*s", this->messageTag.size(), this->messageTag.ptr()));
+ Jupiter::StringS::Format(IRCCOLOR "06[Other]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
/** Sanitize tags in formats to prevent explotation */
- this->sanitizeTags(joinPublicFmt);
- this->sanitizeTags(joinAdminFmt);
- this->sanitizeTags(joinNoSteamAdminFmt);
- this->sanitizeTags(partFmt);
- this->sanitizeTags(nameChangeFmt);
- this->sanitizeTags(teamChangeFmt);
- this->sanitizeTags(chatFmt);
- this->sanitizeTags(teamChatFmt);
- this->sanitizeTags(deployFmt);
- this->sanitizeTags(suicideFmt);
- this->sanitizeTags(dieFmt);
- this->sanitizeTags(killFmt);
- this->sanitizeTags(destroyBuildingFmt);
- this->sanitizeTags(destroyDefenceFmt);
- this->sanitizeTags(destroyVehicleFmt);
- this->sanitizeTags(gameOverFmt);
- this->sanitizeTags(gameOverTieFmt);
- this->sanitizeTags(gameOverTieNoWinFmt);
- this->sanitizeTags(gameOverScoreFmt);
- this->sanitizeTags(gameFmt);
- this->sanitizeTags(executeFmt);
- this->sanitizeTags(evaFmt);
- this->sanitizeTags(evaPrivateFmt);
- this->sanitizeTags(subscribeFmt);
- this->sanitizeTags(rconFmt);
- this->sanitizeTags(adminLoginFmt);
- this->sanitizeTags(adminGrantFmt);
- this->sanitizeTags(adminLogoutFmt);
- this->sanitizeTags(adminFmt);
- this->sanitizeTags(logFmt);
- this->sanitizeTags(commandFmt);
- this->sanitizeTags(errorFmt);
- this->sanitizeTags(versionFmt);
- this->sanitizeTags(authorizedFmt);
- this->sanitizeTags(otherFmt);
-}
-
-void RenX_LoggingPlugin::sanitizeTags(Jupiter::StringType &fmt) const
-{
- /** Server tags */
- fmt.replace(this->rconVersionTag, INTERNAL_RCON_VERSION_TAG);
- fmt.replace(this->gameVersionTag, INTERNAL_GAME_VERSION_TAG);
-
- /** Player tags */
- fmt.replace(this->nameTag, INTERNAL_NAME_TAG);
- fmt.replace(this->rawNameTag, INTERNAL_RAW_NAME_TAG);
- fmt.replace(this->ipTag, INTERNAL_IP_TAG);
- fmt.replace(this->steamTag, INTERNAL_STEAM_TAG);
- fmt.replace(this->uuidTag, INTERNAL_UUID_TAG);
- fmt.replace(this->idTag, INTERNAL_ID_TAG);
- fmt.replace(this->adminTag, INTERNAL_ADMIN_TAG);
- fmt.replace(this->prefixTag, INTERNAL_PREFIX_TAG);
- fmt.replace(this->gamePrefixTag, INTERNAL_GAME_PREFIX_TAG);
- fmt.replace(this->teamColorTag, INTERNAL_TEAM_COLOR_TAG);
- fmt.replace(this->teamShortTag, INTERNAL_TEAM_SHORT_TAG);
- fmt.replace(this->teamLongTag, INTERNAL_TEAM_LONG_TAG);
-
- /** Victim tags */
- fmt.replace(this->victimNameTag, INTERNAL_VICTIM_NAME_TAG);
- fmt.replace(this->victimRawNameTag, INTERNAL_VICTIM_RAW_NAME_TAG);
- fmt.replace(this->victimIPTag, INTERNAL_VICTIM_IP_TAG);
- fmt.replace(this->victimSteamTag, INTERNAL_VICTIM_STEAM_TAG);
- fmt.replace(this->victimUUIDTag, INTERNAL_VICTIM_UUID_TAG);
- fmt.replace(this->victimIDTag, INTERNAL_VICTIM_ID_TAG);
- fmt.replace(this->victimAdminTag, INTERNAL_VICTIM_ADMIN_TAG);
- fmt.replace(this->victimPrefixTag, INTERNAL_VICTIM_PREFIX_TAG);
- fmt.replace(this->victimGamePrefixTag, INTERNAL_VICTIM_GAME_PREFIX_TAG);
- fmt.replace(this->victimTeamColorTag, INTERNAL_VICTIM_TEAM_COLOR_TAG);
- fmt.replace(this->victimTeamShortTag, INTERNAL_VICTIM_TEAM_SHORT_TAG);
- fmt.replace(this->victimTeamLongTag, INTERNAL_VICTIM_TEAM_LONG_TAG);
-
- /** Other tags */
- fmt.replace(this->weaponTag, INTERNAL_WEAPON_TAG);
- fmt.replace(this->objectTag, INTERNAL_OBJECT_TAG);
- fmt.replace(this->messageTag, INTERNAL_MESSAGE_TAG);
- fmt.replace(this->newNameTag, INTERNAL_NEW_NAME_TAG);
- fmt.replace(this->winScoreTag, INTERNAL_WIN_SCORE_TAG);
- fmt.replace(this->loseScoreTag, INTERNAL_LOSE_SCORE_TAG);
-}
-
-void RenX_LoggingPlugin::processTags(Jupiter::StringType &msg, const RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *victim) const
-{
- msg.replace(INTERNAL_RCON_VERSION_TAG, Jupiter::StringS::Format("%u", server->getVersion()));
- msg.replace(INTERNAL_GAME_VERSION_TAG, server->getGameVersion());
- if (player != nullptr)
- {
- msg.replace(INTERNAL_NAME_TAG, RenX::getFormattedPlayerName(player));
- msg.replace(INTERNAL_RAW_NAME_TAG, player->name);
- msg.replace(INTERNAL_IP_TAG, player->ip);
- msg.replace(INTERNAL_STEAM_TAG, server->formatSteamID(player));
- msg.replace(INTERNAL_UUID_TAG, player->uuid);
- msg.replace(INTERNAL_ID_TAG, Jupiter::StringS::Format("%d", player->id));
- msg.replace(INTERNAL_ADMIN_TAG, player->adminType);
- msg.replace(INTERNAL_PREFIX_TAG, player->formatNamePrefix);
- msg.replace(INTERNAL_GAME_PREFIX_TAG, player->gamePrefix);
- msg.replace(INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(player->team));
- msg.replace(INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(player->team));
- msg.replace(INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(player->team));
- }
- if (victim != nullptr)
- {
- msg.replace(INTERNAL_VICTIM_NAME_TAG, RenX::getFormattedPlayerName(victim));
- msg.replace(INTERNAL_VICTIM_RAW_NAME_TAG, victim->name);
- msg.replace(INTERNAL_VICTIM_IP_TAG, victim->ip);
- msg.replace(INTERNAL_VICTIM_STEAM_TAG, server->formatSteamID(victim));
- msg.replace(INTERNAL_VICTIM_UUID_TAG, victim->uuid);
- msg.replace(INTERNAL_VICTIM_ID_TAG, Jupiter::StringS::Format("%d", victim->id));
- msg.replace(INTERNAL_VICTIM_ADMIN_TAG, victim->adminType);
- msg.replace(INTERNAL_VICTIM_PREFIX_TAG, victim->formatNamePrefix);
- msg.replace(INTERNAL_VICTIM_GAME_PREFIX_TAG, victim->gamePrefix);
- msg.replace(INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(victim->team));
- msg.replace(INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(victim->team));
- msg.replace(INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(victim->team));
- }
+ RenX::sanitizeTags(joinPublicFmt);
+ RenX::sanitizeTags(joinAdminFmt);
+ RenX::sanitizeTags(joinNoSteamAdminFmt);
+ RenX::sanitizeTags(partFmt);
+ RenX::sanitizeTags(nameChangeFmt);
+ RenX::sanitizeTags(teamChangeFmt);
+ RenX::sanitizeTags(chatFmt);
+ RenX::sanitizeTags(teamChatFmt);
+ RenX::sanitizeTags(deployFmt);
+ RenX::sanitizeTags(suicideFmt);
+ RenX::sanitizeTags(dieFmt);
+ RenX::sanitizeTags(dieFmt2);
+ RenX::sanitizeTags(killFmt);
+ RenX::sanitizeTags(killFmt2);
+ RenX::sanitizeTags(destroyBuildingFmt);
+ RenX::sanitizeTags(destroyBuildingFmt2);
+ RenX::sanitizeTags(destroyDefenceFmt);
+ RenX::sanitizeTags(destroyDefenceFmt2);
+ RenX::sanitizeTags(destroyVehicleFmt);
+ RenX::sanitizeTags(destroyVehicleFmt2);
+ RenX::sanitizeTags(gameOverFmt);
+ RenX::sanitizeTags(gameOverTieFmt);
+ RenX::sanitizeTags(gameOverTieNoWinFmt);
+ RenX::sanitizeTags(gameOverScoreFmt);
+ RenX::sanitizeTags(gameFmt);
+ RenX::sanitizeTags(executeFmt);
+ RenX::sanitizeTags(evaFmt);
+ RenX::sanitizeTags(evaPrivateFmt);
+ RenX::sanitizeTags(subscribeFmt);
+ RenX::sanitizeTags(rconFmt);
+ RenX::sanitizeTags(adminLoginFmt);
+ RenX::sanitizeTags(adminGrantFmt);
+ RenX::sanitizeTags(adminLogoutFmt);
+ RenX::sanitizeTags(adminFmt);
+ RenX::sanitizeTags(logFmt);
+ RenX::sanitizeTags(xVersionFmt);
+ RenX::sanitizeTags(grantCharacterFmt);
+ RenX::sanitizeTags(spawnVehicleFmt);
+ RenX::sanitizeTags(spawnVehicleNoOwnerFmt);
+ RenX::sanitizeTags(minePlaceFmt);
+ RenX::sanitizeTags(xOtherFmt);
+ RenX::sanitizeTags(commandFmt);
+ RenX::sanitizeTags(errorFmt);
+ RenX::sanitizeTags(versionFmt);
+ RenX::sanitizeTags(authorizedFmt);
+ RenX::sanitizeTags(otherFmt);
}
typedef void(RenX::Server::*logFuncType)(const Jupiter::ReadableString &msg) const;
@@ -359,7 +257,7 @@ void RenX_LoggingPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInf
msg = this->joinPublicFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
+ RenX::processTags(msg, server, player);
server->sendPubChan(msg);
}
}
@@ -369,7 +267,7 @@ void RenX_LoggingPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInf
msg = this->joinAdminFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
+ RenX::processTags(msg, server, player);
server->sendAdmChan(msg);
}
}
@@ -385,7 +283,7 @@ void RenX_LoggingPlugin::RenX_OnPart(RenX::Server *server, const RenX::PlayerInf
Jupiter::String msg = this->partFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
+ RenX::processTags(msg, server, player);
(server->*func)(msg);
}
}
@@ -401,8 +299,8 @@ void RenX_LoggingPlugin::RenX_OnNameChange(RenX::Server *server, const RenX::Pla
Jupiter::String msg = this->nameChangeFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
- msg.replace(INTERNAL_NEW_NAME_TAG, newPlayerName);
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_NEW_NAME_TAG, newPlayerName);
(server->*func)(msg);
}
}
@@ -418,7 +316,7 @@ void RenX_LoggingPlugin::RenX_OnTeamChange(RenX::Server *server, const RenX::Pla
Jupiter::String msg = this->teamChangeFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
+ RenX::processTags(msg, server, player);
(server->*func)(msg);
}
}
@@ -434,8 +332,8 @@ void RenX_LoggingPlugin::RenX_OnChat(RenX::Server *server, const RenX::PlayerInf
Jupiter::String msg = this->chatFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
- msg.replace(INTERNAL_MESSAGE_TAG, message);
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, message);
(server->*func)(msg);
}
}
@@ -451,16 +349,14 @@ void RenX_LoggingPlugin::RenX_OnTeamChat(RenX::Server *server, const RenX::Playe
Jupiter::String msg = this->teamChatFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
- msg.replace(INTERNAL_MESSAGE_TAG, message);
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, message);
(server->*func)(msg);
}
}
void RenX_LoggingPlugin::RenX_OnDeploy(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &object)
{
- const Jupiter::ReadableString &translated = RenX::translateName(object);
-
logFuncType func;
if (RenX_LoggingPlugin::deployPublic)
func = &RenX::Server::sendLogChan;
@@ -470,16 +366,14 @@ void RenX_LoggingPlugin::RenX_OnDeploy(RenX::Server *server, const RenX::PlayerI
Jupiter::String msg = this->deployFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
- msg.replace(INTERNAL_OBJECT_TAG, translated);
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_OBJECT_TAG, RenX::translateName(object));
(server->*func)(msg);
}
}
void RenX_LoggingPlugin::RenX_OnSuicide(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &damageType)
{
- const Jupiter::ReadableString &translated = RenX::translateName(damageType);
-
logFuncType func;
if (RenX_LoggingPlugin::suicidePublic)
func = &RenX::Server::sendLogChan;
@@ -489,16 +383,14 @@ void RenX_LoggingPlugin::RenX_OnSuicide(RenX::Server *server, const RenX::Player
Jupiter::String msg = this->suicideFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
- msg.replace(INTERNAL_WEAPON_TAG, translated);
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_WEAPON_TAG, RenX::translateName(damageType));
(server->*func)(msg);
}
}
void RenX_LoggingPlugin::RenX_OnKill(RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *victim, const Jupiter::ReadableString &damageType)
{
- const Jupiter::ReadableString &translated = RenX::translateName(damageType);
-
logFuncType func;
if (RenX_LoggingPlugin::killPublic)
func = &RenX::Server::sendLogChan;
@@ -508,16 +400,35 @@ void RenX_LoggingPlugin::RenX_OnKill(RenX::Server *server, const RenX::PlayerInf
Jupiter::String msg = this->killFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player, victim);
- msg.replace(INTERNAL_WEAPON_TAG, translated);
+ RenX::processTags(msg, server, player, victim);
+ msg.replace(RenX::tags->INTERNAL_WEAPON_TAG, RenX::translateName(damageType));
(server->*func)(msg);
}
}
-void RenX_LoggingPlugin::RenX_OnDie(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &damageType)
+void RenX_LoggingPlugin::RenX_OnKill(RenX::Server *server, const Jupiter::ReadableString &killer, RenX::TeamType killerTeam, const RenX::PlayerInfo *victim, const Jupiter::ReadableString &damageType)
{
- const Jupiter::ReadableString &translated = RenX::translateName(damageType);
+ logFuncType func;
+ if (RenX_LoggingPlugin::killPublic)
+ func = &RenX::Server::sendLogChan;
+ else
+ func = &RenX::Server::sendAdmChan;
+
+ Jupiter::String msg = this->killFmt2;
+ if (msg.isEmpty() == false)
+ {
+ RenX::processTags(msg, server, nullptr, victim);
+ msg.replace(RenX::tags->INTERNAL_NAME_TAG, RenX::translateName(killer));
+ msg.replace(RenX::tags->INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(killerTeam));
+ msg.replace(RenX::tags->INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(killerTeam));
+ msg.replace(RenX::tags->INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(killerTeam));
+ msg.replace(RenX::tags->INTERNAL_WEAPON_TAG, RenX::translateName(damageType));
+ (server->*func)(msg);
+ }
+}
+void RenX_LoggingPlugin::RenX_OnDie(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &damageType)
+{
logFuncType func;
if (RenX_LoggingPlugin::diePublic)
func = &RenX::Server::sendLogChan;
@@ -527,8 +438,29 @@ void RenX_LoggingPlugin::RenX_OnDie(RenX::Server *server, const RenX::PlayerInfo
Jupiter::String msg = this->dieFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
- msg.replace(INTERNAL_WEAPON_TAG, translated);
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_WEAPON_TAG, RenX::translateName(damageType));
+ (server->*func)(msg);
+ }
+}
+
+void RenX_LoggingPlugin::RenX_OnDie(RenX::Server *server, const Jupiter::ReadableString &object, RenX::TeamType objectTeam, const Jupiter::ReadableString &damageType)
+{
+ logFuncType func;
+ if (RenX_LoggingPlugin::diePublic)
+ func = &RenX::Server::sendLogChan;
+ else
+ func = &RenX::Server::sendAdmChan;
+
+ Jupiter::String msg = this->dieFmt2;
+ if (msg.isEmpty() == false)
+ {
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_NAME_TAG, RenX::translateName(object));
+ msg.replace(RenX::tags->INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(objectTeam));
+ msg.replace(RenX::tags->INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(objectTeam));
+ msg.replace(RenX::tags->INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(objectTeam));
+ msg.replace(RenX::tags->INTERNAL_WEAPON_TAG, RenX::translateName(damageType));
(server->*func)(msg);
}
}
@@ -557,24 +489,55 @@ void RenX_LoggingPlugin::RenX_OnDestroy(RenX::Server *server, const RenX::Player
if (msg.isEmpty() == false)
{
RenX::TeamType victimTeam = RenX::getEnemy(player->team);
- this->processTags(msg, server, player);
- msg.replace(INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(victimTeam));
- msg.replace(INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(victimTeam));
- msg.replace(INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(victimTeam));
- msg.replace(INTERNAL_OBJECT_TAG, RenX::translateName(objectName));
- msg.replace(INTERNAL_WEAPON_TAG, RenX::translateName(damageType));
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(victimTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(victimTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(victimTeam));
+ msg.replace(RenX::tags->INTERNAL_OBJECT_TAG, RenX::translateName(objectName));
+ msg.replace(RenX::tags->INTERNAL_WEAPON_TAG, RenX::translateName(damageType));
(server->*func)(msg);
}
}
-void RenX_LoggingPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType winType, RenX::TeamType team, int gScore, int nScore)
+void RenX_LoggingPlugin::RenX_OnDestroy(RenX::Server *server, const Jupiter::ReadableString &killer, RenX::TeamType killerTeam, const Jupiter::ReadableString &objectName, RenX::TeamType objectTeam, const Jupiter::ReadableString &damageType, RenX::ObjectType type)
{
- const Jupiter::ReadableString &gTeamColor = RenX::getTeamColor(RenX::TeamType::GDI);
- const Jupiter::ReadableString &gTeamName = RenX::getFullTeamName(RenX::TeamType::GDI);
+ logFuncType func;
+ if (RenX_LoggingPlugin::destroyPublic)
+ func = &RenX::Server::sendLogChan;
+ else
+ func = &RenX::Server::sendAdmChan;
- const Jupiter::ReadableString &nTeamColor = RenX::getTeamColor(RenX::TeamType::Nod);
- const Jupiter::ReadableString &nTeamName = RenX::getFullTeamName(RenX::TeamType::Nod);
+ Jupiter::String msg;
+ switch (type)
+ {
+ case RenX::ObjectType::Building:
+ msg = this->destroyBuildingFmt2;
+ break;
+ case RenX::ObjectType::Defence:
+ msg = this->destroyDefenceFmt2;
+ break;
+ default:
+ msg = this->destroyVehicleFmt2;
+ break;
+ }
+ if (msg.isEmpty() == false)
+ {
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_NAME_TAG, RenX::translateName(killer));
+ msg.replace(RenX::tags->INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(killerTeam));
+ msg.replace(RenX::tags->INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(killerTeam));
+ msg.replace(RenX::tags->INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(killerTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(objectTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(objectTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(objectTeam));
+ msg.replace(RenX::tags->INTERNAL_OBJECT_TAG, RenX::translateName(objectName));
+ msg.replace(RenX::tags->INTERNAL_WEAPON_TAG, RenX::translateName(damageType));
+ (server->*func)(msg);
+ }
+}
+void RenX_LoggingPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType winType, RenX::TeamType team, int gScore, int nScore)
+{
RenX::TeamType loserTeam = RenX::getEnemy(team);
int winScore;
int loseScore;
@@ -610,15 +573,15 @@ void RenX_LoggingPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType win
if (msg.isEmpty() == false)
{
- msg.replace(INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(team));
- msg.replace(INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(team));
- msg.replace(INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(team));
- msg.replace(INTERNAL_WIN_SCORE_TAG, Jupiter::StringS::Format("%d", winScore));
- msg.replace(INTERNAL_LOSE_SCORE_TAG, Jupiter::StringS::Format("%d", loseScore));
- msg.replace(INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(loserTeam));
- msg.replace(INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(loserTeam));
- msg.replace(INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(loserTeam));
- msg.replace(INTERNAL_MESSAGE_TAG, RenX::translateWinType(winType));
+ msg.replace(RenX::tags->INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(team));
+ msg.replace(RenX::tags->INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(team));
+ msg.replace(RenX::tags->INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(team));
+ msg.replace(RenX::tags->INTERNAL_WIN_SCORE_TAG, Jupiter::StringS::Format("%d", winScore));
+ msg.replace(RenX::tags->INTERNAL_LOSE_SCORE_TAG, Jupiter::StringS::Format("%d", loseScore));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(loserTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(loserTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(loserTeam));
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, RenX::translateWinType(winType));
(server->*func)(msg);
}
@@ -631,15 +594,15 @@ void RenX_LoggingPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType win
if (msg.isEmpty() == false)
{
- msg.replace(INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(team));
- msg.replace(INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(team));
- msg.replace(INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(team));
- msg.replace(INTERNAL_WIN_SCORE_TAG, Jupiter::StringS::Format("%d", winScore));
- msg.replace(INTERNAL_LOSE_SCORE_TAG, Jupiter::StringS::Format("%d", loseScore));
- msg.replace(INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(loserTeam));
- msg.replace(INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(loserTeam));
- msg.replace(INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(loserTeam));
- msg.replace(INTERNAL_MESSAGE_TAG, RenX::translateWinType(winType));
+ msg.replace(RenX::tags->INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(team));
+ msg.replace(RenX::tags->INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(team));
+ msg.replace(RenX::tags->INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(team));
+ msg.replace(RenX::tags->INTERNAL_WIN_SCORE_TAG, Jupiter::StringS::Format("%d", winScore));
+ msg.replace(RenX::tags->INTERNAL_LOSE_SCORE_TAG, Jupiter::StringS::Format("%d", loseScore));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(loserTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(loserTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(loserTeam));
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, RenX::translateWinType(winType));
(server->*func)(msg);
}
@@ -658,8 +621,8 @@ void RenX_LoggingPlugin::RenX_OnGame(RenX::Server *server, const Jupiter::Readab
Jupiter::String msg = this->gameFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
(server->*func)(msg);
}
}
@@ -679,7 +642,7 @@ void RenX_LoggingPlugin::RenX_OnExecute(RenX::Server *server, const Jupiter::Rea
if (msg.isEmpty() == false)
{
processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, Jupiter::ReferenceString::gotoToken(command, 1, ' '));
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, Jupiter::ReferenceString::gotoToken(command, 1, ' '));
server->sendLogChan(msg);
return;
}
@@ -694,7 +657,7 @@ void RenX_LoggingPlugin::RenX_OnExecute(RenX::Server *server, const Jupiter::Rea
{
Jupiter::ReferenceString message = Jupiter::ReferenceString::gotoToken(command, 2, ' ');
processTags(msg, server, player);
- msg.replace(INTERNAL_MESSAGE_TAG, message);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, message);
(server->*func)(msg);
return;
}
@@ -704,8 +667,8 @@ void RenX_LoggingPlugin::RenX_OnExecute(RenX::Server *server, const Jupiter::Rea
if (msg.isEmpty() == false)
{
processTags(msg, server);
- msg.replace(INTERNAL_NAME_TAG, user);
- msg.replace(INTERNAL_MESSAGE_TAG, command);
+ msg.replace(RenX::tags->INTERNAL_NAME_TAG, user);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, command);
(server->*func)(msg);
}
// Add a format check later for if user == us.
@@ -722,8 +685,8 @@ void RenX_LoggingPlugin::RenX_OnSubscribe(RenX::Server *server, const Jupiter::R
Jupiter::String msg = this->subscribeFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_NAME_TAG, user);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_NAME_TAG, user);
(server->*func)(msg);
}
}
@@ -739,16 +702,14 @@ void RenX_LoggingPlugin::RenX_OnRCON(RenX::Server *server, const Jupiter::Readab
Jupiter::String msg = this->rconFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
(server->*func)(msg);
}
}
void RenX_LoggingPlugin::RenX_OnAdminLogin(RenX::Server *server, const RenX::PlayerInfo *player)
{
- const Jupiter::ReadableString &playerName = RenX::getFormattedPlayerName(player);
-
logFuncType func;
if (RenX_LoggingPlugin::adminLoginPublic)
func = &RenX::Server::sendLogChan;
@@ -758,15 +719,13 @@ void RenX_LoggingPlugin::RenX_OnAdminLogin(RenX::Server *server, const RenX::Pla
Jupiter::String msg = this->adminLoginFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
+ RenX::processTags(msg, server, player);
(server->*func)(msg);
}
}
void RenX_LoggingPlugin::RenX_OnAdminGrant(RenX::Server *server, const RenX::PlayerInfo *player)
{
- const Jupiter::ReadableString &playerName = RenX::getFormattedPlayerName(player);
-
logFuncType func;
if (RenX_LoggingPlugin::adminGrantPublic)
func = &RenX::Server::sendLogChan;
@@ -776,15 +735,13 @@ void RenX_LoggingPlugin::RenX_OnAdminGrant(RenX::Server *server, const RenX::Pla
Jupiter::String msg = this->adminGrantFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
+ RenX::processTags(msg, server, player);
(server->*func)(msg);
}
}
void RenX_LoggingPlugin::RenX_OnAdminLogout(RenX::Server *server, const RenX::PlayerInfo *player)
{
- const Jupiter::ReadableString &playerName = RenX::getFormattedPlayerName(player);
-
logFuncType func;
if (RenX_LoggingPlugin::adminLogoutPublic)
func = &RenX::Server::sendLogChan;
@@ -794,7 +751,7 @@ void RenX_LoggingPlugin::RenX_OnAdminLogout(RenX::Server *server, const RenX::Pl
Jupiter::String msg = this->adminLogoutFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server, player);
+ RenX::processTags(msg, server, player);
(server->*func)(msg);
}
}
@@ -810,8 +767,8 @@ void RenX_LoggingPlugin::RenX_OnAdmin(RenX::Server *server, const Jupiter::Reada
Jupiter::String msg = this->adminFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
(server->*func)(msg);
}
}
@@ -827,8 +784,120 @@ void RenX_LoggingPlugin::RenX_OnLog(RenX::Server *server, const Jupiter::Readabl
Jupiter::String msg = this->logFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
+ (server->*func)(msg);
+ }
+}
+
+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_OnGrantCharacter(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &character)
+{
+ if (player->character.equals(RenX::getCharacter(character)) == false)
+ {
+ logFuncType func;
+ if (RenX_LoggingPlugin::grantCharacterPublic)
+ func = &RenX::Server::sendLogChan;
+ else
+ func = &RenX::Server::sendAdmChan;
+
+ Jupiter::String msg = this->grantCharacterFmt;
+ if (msg.isEmpty() == false)
+ {
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_VICTIM_CHARACTER_TAG, RenX::translateName(character));
+ (server->*func)(msg);
+ }
+ }
+}
+
+void RenX_LoggingPlugin::RenX_OnSpawnVehicle(RenX::Server *server, const RenX::PlayerInfo *owner, const Jupiter::ReadableString &vehicle)
+{
+ logFuncType func;
+ if (RenX_LoggingPlugin::spawnVehiclePublic)
+ func = &RenX::Server::sendLogChan;
+ else
+ func = &RenX::Server::sendAdmChan;
+
+ Jupiter::String msg = this->spawnVehicleFmt;
+ if (msg.isEmpty() == false)
+ {
+ RenX::processTags(msg, server, owner);
+ msg.replace(RenX::tags->INTERNAL_VICTIM_VEHICLE_TAG, RenX::translateName(vehicle));
+ (server->*func)(msg);
+ }
+}
+
+void RenX_LoggingPlugin::RenX_OnSpawnVehicleNoOwner(RenX::Server *server, const RenX::TeamType team, const Jupiter::ReadableString &vehicle)
+{
+ logFuncType func;
+ if (RenX_LoggingPlugin::spawnVehicleNoOwnerPublic)
+ func = &RenX::Server::sendLogChan;
+ else
+ func = &RenX::Server::sendAdmChan;
+
+ Jupiter::String msg = this->spawnVehicleNoOwnerFmt;
+ if (msg.isEmpty() == false)
+ {
+ RenX::TeamType otherTeam = RenX::getEnemy(team);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(team));
+ msg.replace(RenX::tags->INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(team));
+ msg.replace(RenX::tags->INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(team));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(otherTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(otherTeam));
+ msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(otherTeam));
+ msg.replace(RenX::tags->INTERNAL_VEHICLE_TAG, RenX::translateName(vehicle));
+ (server->*func)(msg);
+ }
+}
+
+void RenX_LoggingPlugin::RenX_OnMinePlace(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &mine)
+{
+ logFuncType func;
+ if (RenX_LoggingPlugin::minePlacePublic)
+ func = &RenX::Server::sendLogChan;
+ else
+ func = &RenX::Server::sendAdmChan;
+
+ Jupiter::String msg = this->minePlaceFmt;
+ if (msg.isEmpty() == false)
+ {
+ RenX::processTags(msg, server, player);
+ msg.replace(RenX::tags->INTERNAL_OBJECT_TAG, RenX::translateName(mine));
+ (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);
}
}
@@ -844,8 +913,8 @@ void RenX_LoggingPlugin::RenX_OnCommand(RenX::Server *server, const Jupiter::Rea
Jupiter::String msg = this->commandFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
(server->*func)(msg);
}
}
@@ -861,8 +930,8 @@ void RenX_LoggingPlugin::RenX_OnError(RenX::Server *server, const Jupiter::Reada
Jupiter::String msg = this->errorFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
(server->*func)(msg);
}
}
@@ -878,8 +947,8 @@ void RenX_LoggingPlugin::RenX_OnVersion(RenX::Server *server, const Jupiter::Rea
Jupiter::String msg = this->versionFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
(server->*func)(msg);
}
}
@@ -895,8 +964,8 @@ void RenX_LoggingPlugin::RenX_OnAuthorized(RenX::Server *server, const Jupiter::
Jupiter::String msg = this->authorizedFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
(server->*func)(msg);
}
}
@@ -912,8 +981,8 @@ void RenX_LoggingPlugin::RenX_OnOther(RenX::Server *server, char token, const Ju
Jupiter::String msg = this->otherFmt;
if (msg.isEmpty() == false)
{
- this->processTags(msg, server);
- msg.replace(INTERNAL_MESSAGE_TAG, raw);
+ RenX::processTags(msg, server);
+ msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, raw);
(server->*func)(msg);
}
}
diff --git a/RenX.Logging/RenX_Logging.h b/RenX.Logging/RenX_Logging.h
index 37c49c6..b964aa6 100644
--- a/RenX.Logging/RenX_Logging.h
+++ b/RenX.Logging/RenX_Logging.h
@@ -35,8 +35,11 @@ public: // RenX::Plugin
void RenX_OnDeploy(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &object) override;
void RenX_OnSuicide(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &damageType) override;
void RenX_OnKill(RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *victim, const Jupiter::ReadableString &damageType) override;
+ void RenX_OnKill(RenX::Server *server, const Jupiter::ReadableString &killer, RenX::TeamType killerTeam, const RenX::PlayerInfo *victim, const Jupiter::ReadableString &damageType) override;
void RenX_OnDie(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &damageType) override;
+ void RenX_OnDie(RenX::Server *server, const Jupiter::ReadableString &object, RenX::TeamType objectTeam, const Jupiter::ReadableString &damageType) override;
void RenX_OnDestroy(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &objectName, const Jupiter::ReadableString &damageType, RenX::ObjectType type) override;
+ void RenX_OnDestroy(RenX::Server *server, const Jupiter::ReadableString &killer, RenX::TeamType killerTeam, const Jupiter::ReadableString &objectName, RenX::TeamType objectTeam, const Jupiter::ReadableString &damageType, RenX::ObjectType type) override;
void RenX_OnGameOver(RenX::Server *server, RenX::WinType winType, RenX::TeamType team, int gScore, int nScore) override;
void RenX_OnGame(RenX::Server *server, const Jupiter::ReadableString &raw) override;
@@ -50,6 +53,14 @@ public: // RenX::Plugin
void RenX_OnAdmin(RenX::Server *server, const Jupiter::ReadableString &raw) override;
void RenX_OnLog(RenX::Server *server, const Jupiter::ReadableString &raw) override;
+
+ void RenX_XOnVersion(RenX::Server *server, unsigned int version) override;
+ void RenX_OnGrantCharacter(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &character) override;
+ void RenX_OnSpawnVehicle(RenX::Server *server, const RenX::PlayerInfo *owner, const Jupiter::ReadableString &vehicle) override;
+ void RenX_OnSpawnVehicleNoOwner(RenX::Server *server, const RenX::TeamType team, const Jupiter::ReadableString &vehicle) override;
+ void RenX_OnMinePlace(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &mine) 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;
@@ -64,8 +75,6 @@ public: // Jupiter::Plugin
private:
void init();
- void sanitizeTags(Jupiter::StringType &fmt) const;
- void processTags(Jupiter::StringType &msg, const RenX::Server *server, const RenX::PlayerInfo *player = nullptr, const RenX::PlayerInfo *victim = nullptr) const;
STRING_LITERAL_AS_NAMED_REFERENCE(name, "RenX.Logging");
unsigned int joinPublic : 1;
@@ -89,52 +98,18 @@ private:
unsigned int adminLogoutPublic : 1;
unsigned int adminPublic : 1;
unsigned int logPublic : 1;
+ unsigned int xVersionPublic : 1;
+ unsigned int grantCharacterPublic : 1;
+ unsigned int spawnVehiclePublic : 1;
+ unsigned int spawnVehicleNoOwnerPublic : 1;
+ unsigned int minePlacePublic : 1;
+ unsigned int xOtherPublic : 1;
unsigned int commandPublic : 1;
unsigned int errorPublic : 1;
unsigned int versionPublic : 1;
unsigned int authorizedPublic : 1;
unsigned int otherPublic : 1;
- /** Server tags */
- Jupiter::StringS rconVersionTag;
- Jupiter::StringS gameVersionTag;
-
- /** Player tags */
- Jupiter::StringS nameTag;
- Jupiter::StringS rawNameTag;
- Jupiter::StringS ipTag;
- Jupiter::StringS steamTag;
- Jupiter::StringS uuidTag;
- Jupiter::StringS idTag;
- Jupiter::StringS adminTag;
- Jupiter::StringS prefixTag;
- Jupiter::StringS gamePrefixTag;
- Jupiter::StringS teamColorTag;
- Jupiter::StringS teamShortTag;
- Jupiter::StringS teamLongTag;
-
- /** Victim tags */
- Jupiter::StringS victimNameTag;
- Jupiter::StringS victimRawNameTag;
- Jupiter::StringS victimIPTag;
- Jupiter::StringS victimSteamTag;
- Jupiter::StringS victimUUIDTag;
- Jupiter::StringS victimIDTag;
- Jupiter::StringS victimAdminTag;
- Jupiter::StringS victimPrefixTag;
- Jupiter::StringS victimGamePrefixTag;
- Jupiter::StringS victimTeamColorTag;
- Jupiter::StringS victimTeamShortTag;
- Jupiter::StringS victimTeamLongTag;
-
- /** Other tags */
- Jupiter::StringS weaponTag;
- Jupiter::StringS objectTag;
- Jupiter::StringS messageTag;
- Jupiter::StringS newNameTag;
- Jupiter::StringS winScoreTag;
- Jupiter::StringS loseScoreTag;
-
/** Event formats */
Jupiter::StringS joinPublicFmt, joinAdminFmt, joinNoSteamAdminFmt;
Jupiter::StringS partFmt;
@@ -145,10 +120,15 @@ private:
Jupiter::StringS deployFmt;
Jupiter::StringS suicideFmt;
Jupiter::StringS dieFmt;
+ Jupiter::StringS dieFmt2;
Jupiter::StringS killFmt;
+ Jupiter::StringS killFmt2;
Jupiter::StringS destroyBuildingFmt;
+ Jupiter::StringS destroyBuildingFmt2;
Jupiter::StringS destroyDefenceFmt;
+ Jupiter::StringS destroyDefenceFmt2;
Jupiter::StringS destroyVehicleFmt;
+ Jupiter::StringS destroyVehicleFmt2;
Jupiter::StringS gameOverFmt;
Jupiter::StringS gameOverTieFmt;
Jupiter::StringS gameOverTieNoWinFmt;
@@ -162,6 +142,12 @@ private:
Jupiter::StringS adminLogoutFmt;
Jupiter::StringS adminFmt;
Jupiter::StringS logFmt;
+ Jupiter::StringS xVersionFmt;
+ Jupiter::StringS grantCharacterFmt;
+ Jupiter::StringS spawnVehicleFmt;
+ Jupiter::StringS spawnVehicleNoOwnerFmt;
+ Jupiter::StringS minePlaceFmt;
+ Jupiter::StringS xOtherFmt;
Jupiter::StringS commandFmt;
Jupiter::StringS errorFmt;
Jupiter::StringS versionFmt;
diff --git a/RenX.Medals/RenX_Medals.cpp b/RenX.Medals/RenX_Medals.cpp
index 6eedd45..c26b4dc 100644
--- a/RenX.Medals/RenX_Medals.cpp
+++ b/RenX.Medals/RenX_Medals.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -24,6 +24,11 @@
#include "RenX_PlayerInfo.h"
#include "RenX_Functions.h"
#include "RenX_Core.h"
+#include "RenX_Tags.h"
+
+Jupiter::ReferenceString INTERNAL_RECS_TAG = STRING_LITERAL_AS_REFERENCE("\0RX.MEDALS.RECS\0");
+Jupiter::ReferenceString INTERNAL_NOOB_TAG = STRING_LITERAL_AS_REFERENCE("\0RX.MEDALS.NOOB\0");
+Jupiter::ReferenceString INTERNAL_WORTH_TAG = STRING_LITERAL_AS_REFERENCE("\0RX.MEDALS.WORTH\0");
RenX_MedalsPlugin::RenX_MedalsPlugin()
{
@@ -83,6 +88,26 @@ void congratPlayer(unsigned int, void *params)
delete congratPlayerData;
}
+void RenX_MedalsPlugin::RenX_SanitizeTags(Jupiter::StringType &fmt)
+{
+ fmt.replace(RenX_MedalsPlugin::recsTag, INTERNAL_RECS_TAG);
+ fmt.replace(RenX_MedalsPlugin::noobTag, INTERNAL_NOOB_TAG);
+ fmt.replace(RenX_MedalsPlugin::worthTag, INTERNAL_WORTH_TAG);
+}
+
+void RenX_MedalsPlugin::RenX_ProcessTags(Jupiter::StringType &msg, const RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *victim)
+{
+ if (player != nullptr)
+ {
+ const Jupiter::ReadableString &recs = RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Recs"));
+ const Jupiter::ReadableString &noobs = RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Noobs"));
+
+ msg.replace(INTERNAL_RECS_TAG, recs);
+ msg.replace(INTERNAL_NOOB_TAG, noobs);
+ msg.replace(INTERNAL_WORTH_TAG, Jupiter::StringS::Format("%d", recs.asInt() - noobs.asInt()));
+ }
+}
+
void RenX_MedalsPlugin::RenX_OnPlayerCreate(RenX::Server *server, const RenX::PlayerInfo *player)
{
if (player->uuid.isEmpty() == false && player->isBot == false)
@@ -123,14 +148,9 @@ void RenX_MedalsPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo
pair = section->getPair(r);
} while (pair->getKey().asInt() == 0);
- const Jupiter::ReadableString &recs = RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Recs"));
- const Jupiter::ReadableString &noobs = RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Noobs"));
-
Jupiter::StringS msg = pair->getValue();
- msg.replace(RenX_MedalsPlugin::nameTag, player->name);
- msg.replace(RenX_MedalsPlugin::recsTag, recs);
- msg.replace(RenX_MedalsPlugin::noobTag, noobs);
- msg.replace(RenX_MedalsPlugin::worthTag, Jupiter::StringS::Format("%d", recs.asInt() - noobs.asInt()));
+ RenX::sanitizeTags(msg);
+ RenX::processTags(msg, server, player);
server->sendMessage(msg);
}
@@ -237,7 +257,6 @@ void RenX_MedalsPlugin::init()
RenX_MedalsPlugin::medalsFile.readFile(RenX_MedalsPlugin::medalsFileName);
RenX_MedalsPlugin::joinMessageFile.readFile(RenX_MedalsPlugin::joinMessageFileName);
RenX_MedalsPlugin::firstSection = RenX_MedalsPlugin::joinMessageFile.get(Jupiter::StringS::empty, STRING_LITERAL_AS_REFERENCE("FirstSection"));
- RenX_MedalsPlugin::nameTag = RenX_MedalsPlugin::joinMessageFile.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("NameTag"), STRING_LITERAL_AS_REFERENCE("{NAME}"));
RenX_MedalsPlugin::recsTag = RenX_MedalsPlugin::joinMessageFile.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("RecsTag"), STRING_LITERAL_AS_REFERENCE("{RECS}"));
RenX_MedalsPlugin::noobTag = RenX_MedalsPlugin::joinMessageFile.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("NoobsTag"), STRING_LITERAL_AS_REFERENCE("{NOOBS}"));
RenX_MedalsPlugin::worthTag = RenX_MedalsPlugin::joinMessageFile.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("WorthTag"), STRING_LITERAL_AS_REFERENCE("{WORTH}"));
diff --git a/RenX.Medals/RenX_Medals.h b/RenX.Medals/RenX_Medals.h
index 4a7dc9f..0690eee 100644
--- a/RenX.Medals/RenX_Medals.h
+++ b/RenX.Medals/RenX_Medals.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2014 Justin James.
+ * Copyright (C) 2014-2015 Justin James.
*
* This license must be preserved.
* Any applications, libraries, or code which make any use of any
@@ -42,6 +42,8 @@ int getWorth(const RenX::PlayerInfo *player);
class RenX_MedalsPlugin : public RenX::Plugin
{
public: // RenX::Plugin
+ void RenX_SanitizeTags(Jupiter::StringType &fmt) override;
+ void RenX_ProcessTags(Jupiter::StringType &msg, const RenX::Server *server, const RenX::PlayerInfo *player, const RenX::PlayerInfo *victim) override;
void RenX_OnPlayerCreate(RenX::Server *server, const RenX::PlayerInfo *player) override;
void RenX_OnPlayerDelete(RenX::Server *server, const RenX::PlayerInfo *player) override;
void RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player) override;
@@ -58,7 +60,6 @@ public:
time_t killCongratDelay;
time_t vehicleKillCongratDelay;
time_t kdrCongratDelay;
- Jupiter::StringS nameTag;
Jupiter::StringS recsTag;
Jupiter::StringS noobTag;
Jupiter::StringS worthTag;