From d7f0f5137bfbc26eea7ed20fff7516550ad80bd7 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Thu, 21 May 2015 22:05:56 -0400 Subject: [PATCH] Updated to Visual Studio 2015 RC * Updated Jupiter * Fixed some bugs/warnings --- Bot/Bot.vcxproj | 6 +- CoreCommands/CoreCommands.vcxproj | 6 +- ExtraCommands/ExtraCommands.vcxproj | 6 +- FunCommands/FunCommands.vcxproj | 6 +- Jupiter | 2 +- Plugin.Example/Plugin.Example.vcxproj | 6 +- Plugin.Template/Plugin.Template.vcxproj | 6 +- PluginManager/PluginManager.vcxproj | 6 +- Release/Bot.lib | Bin 19858 -> 19858 bytes Release/Plugins/RenX.Core.lib | Bin 114264 -> 119512 bytes RenX.Announcements/RenX.Announcements.vcxproj | 6 +- RenX.Commands/RenX.Commands.vcxproj | 6 +- RenX.Core/RenX.Core.vcxproj | 6 +- RenX.Core/RenX_Functions.cpp | 4 +- RenX.Core/RenX_Functions.h | 2 +- RenX.Core/RenX_Plugin.cpp | 35 ++++ RenX.Core/RenX_Plugin.h | 7 + RenX.Core/RenX_Server.cpp | 76 +++++++- RenX.DNS/RenX.DNS.vcxproj | 6 +- .../RenX.ExcessiveHeadshots.vcxproj | 6 +- RenX.ExtraLogging/RenX.ExtraLogging.vcxproj | 6 +- RenX.Greetings/RenX.Greetings.vcxproj | 6 +- RenX.HybridUUID/RenX.HybridUUID.vcxproj | 6 +- RenX.IRCJoin/RenX.IRCJoin.vcxproj | 6 +- RenX.Logging/RenX.Logging.vcxproj | 6 +- RenX.Logging/RenX_Logging.cpp | 183 ++++++++++++++++-- RenX.Logging/RenX_Logging.h | 22 +++ RenX.Medals/RenX.Medals.vcxproj | 6 +- RenX.Medals/RenX_Medals.cpp | 6 +- RenX.ModSystem/RenX.ModSystem.vcxproj | 6 +- RenX.NicknameUUID/RenX.NicknameUUID.vcxproj | 6 +- .../RenX.Plugin.Template.vcxproj | 6 +- RenX.SetJoin/RenX.SetJoin.vcxproj | 6 +- RenX.SetJoin/RenX_SetJoin.cpp | 8 +- RenX.Warn/RenX.Warn.vcxproj | 6 +- SetJoin/SetJoin.vcxproj | 6 +- 36 files changed, 389 insertions(+), 100 deletions(-) diff --git a/Bot/Bot.vcxproj b/Bot/Bot.vcxproj index e5b5f64..5d7b0e5 100644 --- a/Bot/Bot.vcxproj +++ b/Bot/Bot.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -20,13 +20,13 @@ Application true - v120 + v140 Unicode Application false - v120 + v140 true Unicode diff --git a/CoreCommands/CoreCommands.vcxproj b/CoreCommands/CoreCommands.vcxproj index 773e88f..c3ffabd 100644 --- a/CoreCommands/CoreCommands.vcxproj +++ b/CoreCommands/CoreCommands.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -19,13 +19,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/ExtraCommands/ExtraCommands.vcxproj b/ExtraCommands/ExtraCommands.vcxproj index 16619e9..c789d45 100644 --- a/ExtraCommands/ExtraCommands.vcxproj +++ b/ExtraCommands/ExtraCommands.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/FunCommands/FunCommands.vcxproj b/FunCommands/FunCommands.vcxproj index 94ac5ae..a2f1bca 100644 --- a/FunCommands/FunCommands.vcxproj +++ b/FunCommands/FunCommands.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/Jupiter b/Jupiter index 884357b..95bc71a 160000 --- a/Jupiter +++ b/Jupiter @@ -1 +1 @@ -Subproject commit 884357b443381ac8034c7ec6ce30bc46a20c08e7 +Subproject commit 95bc71a5f6701aa8442ae77bcdcaa51699413189 diff --git a/Plugin.Example/Plugin.Example.vcxproj b/Plugin.Example/Plugin.Example.vcxproj index 2b14ef8..5ef3426 100644 --- a/Plugin.Example/Plugin.Example.vcxproj +++ b/Plugin.Example/Plugin.Example.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/Plugin.Template/Plugin.Template.vcxproj b/Plugin.Template/Plugin.Template.vcxproj index 14331ec..02a6afe 100644 --- a/Plugin.Template/Plugin.Template.vcxproj +++ b/Plugin.Template/Plugin.Template.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/PluginManager/PluginManager.vcxproj b/PluginManager/PluginManager.vcxproj index 65afd4e..3abf96b 100644 --- a/PluginManager/PluginManager.vcxproj +++ b/PluginManager/PluginManager.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -19,13 +19,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/Release/Bot.lib b/Release/Bot.lib index 8509c81c6460f5721f74161d91eb93c9b84b5ca7..61414548c7d2a4cd00a2a3c35a6edf467bd5fbac 100644 GIT binary patch delta 1724 zcmZuxOH30{6m0`oz5=!|UEZn#yvH=qlJsXBS`@2)8bvm782p&6{V57y6YZ=n(Vck&$ zCoS8GgaAKUOY^Yg+9ueYbx`F3ANWYQN-vpAfiUzj^IZmQ}8e}q=AXkUEr~t=7CQ}+3*T_5%G5l>vGf#e) z$<&31Wjaxpx3M1P+n{DjA}l=zrdLhUn=Pz>P<=U!yZGy)M2wkE^E$$x1RO+IPBm?p zAEVOQH<7MXz&wF3L3CM{lbz0i<@u?QK`aCUJbq;`{Am8vaNJJLY~I z#EQqfYPN#dV1vPK%_Y!Tes?hK@|ZG9I>vk~#;$VR-M9dMV@!7vb?Z_0&^!iDI+YV7 zp0GE~W~cKGuO+7`_nGQa`ry0;zwIU(p&3c++fcP=gQcg3M0ROsa{q;-+P5~$<&8g+>m(0andi7VEoO*T^T3W73pLD zg9r{Kk}FzmJ`X#lGqBXBy(0Nd?Dz582QkU~-c0^Kz2l^k14$J%=s%$qn|W{}m-8CI z=2bRAID1)+h#W6+^u^6^BylgqGd_GOQ;!rMS!`Vmyhw41=1_j7xCK(08epXjSQ@}m R$x>U;IsL#f@o+*{_z(T}@_hgR delta 1724 zcmZuxOH30{6fFTPpAx_p3Ra-CK*d5kL+SrVOM$k4L8Goz3W5=d0*MPTL18Bg671b* zh&0B9abW@>EZn#?vH=qlbE%+`X*iXt?7F+j>&P}!zi@NCAE+d z4CSPU4J~OjMex~ZhMaI#NvY~GP~~4jL`o@eUJ}9>-H&OY(y=RM&+8KZ2cMd>f-5v*=vLy zx1M^jBSlBNd@r=ZA5RG^iw30>Zh|%*^(2(=^+5)I^YEBa_5!62dHa-9%$33)y{e4N zJ_dVz+&VQjGN7mQ*S@r*qQWhHj+3aL`k745&(&ceVuWKqlc@}ht7M)982%=pnx`bl zWSW9EB|1@;wy_c9+n{DDLM%N8rdLnWn=Pw>Kyx*Wck_oucQ@0nj>)rRV$8>K>Bowlw$vb z5Dq1fD_Uzi2Rnw-u#!?=k@P0^Q~dTpNHf1T(*IBII4$QuQbi5=Pw2pAUAU1;#jRj< z%Nrq_y*x)ijvF}zx;8ixxfkLYA3l|7Mv8|lwy6Q04|0m?P<{?_3#4>#h?TZrsSis< Qb7N_I`hjEO;e@8_A1jj2q5uE@ diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index 04f4cb05b2f433850a7cb1d7b464f40e7b0ca98d..8886d02b77dcc615b41df35400c3f2517ab69e68 100644 GIT binary patch literal 119512 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 hgp`)tHr>lkgzjUWn`4yLS delta 14984 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 a)R5~OV@E;$d#T#>D - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.Commands/RenX.Commands.vcxproj b/RenX.Commands/RenX.Commands.vcxproj index 72baa28..ac81f7c 100644 --- a/RenX.Commands/RenX.Commands.vcxproj +++ b/RenX.Commands/RenX.Commands.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.Core/RenX.Core.vcxproj b/RenX.Core/RenX.Core.vcxproj index 5811436..18d2c1f 100644 --- a/RenX.Core/RenX.Core.vcxproj +++ b/RenX.Core/RenX.Core.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -19,13 +19,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.Core/RenX_Functions.cpp b/RenX.Core/RenX_Functions.cpp index 6cf0cc6..720e548 100644 --- a/RenX.Core/RenX_Functions.cpp +++ b/RenX.Core/RenX_Functions.cpp @@ -123,6 +123,7 @@ Jupiter::ReferenceString translated_Weapon_DeployedProxyC4 = STRING_LITERAL_AS_R Jupiter::ReferenceString translated_Weapon_DeployedATMine = STRING_LITERAL_AS_REFERENCE("Anti-Tank Mine"); Jupiter::ReferenceString translated_Weapon_DeployedIonCannonBeacon = STRING_LITERAL_AS_REFERENCE("Ion Cannon Beacon"); Jupiter::ReferenceString translated_Weapon_DeployedNukeBeacon = STRING_LITERAL_AS_REFERENCE("Nuclear Missile Beacon"); +Jupiter::ReferenceString translated_Weapon_CrateNuke = STRING_LITERAL_AS_REFERENCE("Nuclear Crate Explosion"); /** Projectiles */ Jupiter::ReferenceString translated_Projectile_EMPGrenade = STRING_LITERAL_AS_REFERENCE("EMP Grenade"); @@ -438,7 +439,7 @@ const Jupiter::ReferenceString &translateCharacter(Jupiter::ReferenceString &obj return object; } -const Jupiter::ReadableString &RenX::translateName(const Jupiter::ReadableString &obj) +const Jupiter::ReferenceString RenX::translateName(const Jupiter::ReadableString &obj) { if (obj.isEmpty()) return Jupiter::ReferenceString::empty; @@ -508,6 +509,7 @@ const Jupiter::ReadableString &RenX::translateName(const Jupiter::ReadableString if (object.equals(STRING_LITERAL_AS_REFERENCE("DeployedATMine"))) return translated_Weapon_DeployedATMine; if (object.equals(STRING_LITERAL_AS_REFERENCE("DeployedIonCannonBeacon"))) return translated_Weapon_DeployedIonCannonBeacon; if (object.equals(STRING_LITERAL_AS_REFERENCE("DeployedNukeBeacon"))) return translated_Weapon_DeployedNukeBeacon; + if (object.equals(STRING_LITERAL_AS_REFERENCE("CrateNuke"))) return translated_Weapon_CrateNuke; } else if (object.find(STRING_LITERAL_AS_REFERENCE("Projectile_")) == 0) { diff --git a/RenX.Core/RenX_Functions.h b/RenX.Core/RenX_Functions.h index 9deb647..8d38bac 100644 --- a/RenX.Core/RenX_Functions.h +++ b/RenX.Core/RenX_Functions.h @@ -98,7 +98,7 @@ namespace RenX * @param object Preset to translate. * @return Translated name of the preset. */ - RENX_API const Jupiter::ReadableString &translateName(const Jupiter::ReadableString &object); + RENX_API const Jupiter::ReferenceString translateName(const Jupiter::ReadableString &object); /** * @brief Translates a WinType into a human-readable string. diff --git a/RenX.Core/RenX_Plugin.cpp b/RenX.Core/RenX_Plugin.cpp index edf3e7d..7f50a47 100644 --- a/RenX.Core/RenX_Plugin.cpp +++ b/RenX.Core/RenX_Plugin.cpp @@ -80,6 +80,11 @@ void RenX::Plugin::RenX_OnPart(Server *, const RenX::PlayerInfo *) return; } +void RenX::Plugin::RenX_OnKick(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &reason) +{ + return; +} + void RenX::Plugin::RenX_OnNameChange(Server *, const PlayerInfo *, const Jupiter::ReadableString &) { return; @@ -270,6 +275,36 @@ void RenX::Plugin::RenX_OnRefillCrate(Server *, const PlayerInfo *) return; } +void RenX::Plugin::RenX_OnTimeBombCrate(Server *server, const PlayerInfo *player) +{ + return; +} + +void RenX::Plugin::RenX_OnSpeedCrate(Server *server, const PlayerInfo *player) +{ + return; +} + +void RenX::Plugin::RenX_OnNukeCrate(Server *server, const PlayerInfo *player) +{ + return; +} + +void RenX::Plugin::RenX_OnAbductionCrate(Server *server, const PlayerInfo *player) +{ + return; +} + +void RenX::Plugin::RenX_OnUnspecifiedCrate(Server *server, const PlayerInfo *player) +{ + return; +} + +void RenX::Plugin::RenX_OnOtherCrate(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &) +{ + return; +} + void RenX::Plugin::RenX_OnSteal(Server *, const PlayerInfo *, const Jupiter::ReadableString &) { return; diff --git a/RenX.Core/RenX_Plugin.h b/RenX.Core/RenX_Plugin.h index 5f2a175..4bb0be6 100644 --- a/RenX.Core/RenX_Plugin.h +++ b/RenX.Core/RenX_Plugin.h @@ -52,6 +52,7 @@ namespace RenX /** Player type logs */ virtual void RenX_OnJoin(Server *server, const PlayerInfo *player); virtual void RenX_OnPart(Server *server, const PlayerInfo *player); + virtual void RenX_OnKick(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &reason); virtual void RenX_OnNameChange(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &newPlayerName); virtual void RenX_OnTeamChange(Server *server, const PlayerInfo *player, const TeamType &oldTeam); virtual void RenX_OnIDChange(Server *server, const PlayerInfo *player, int oldID); @@ -94,6 +95,12 @@ namespace RenX virtual void RenX_OnCharacterCrate(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &character); virtual void RenX_OnSpyCrate(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &character); virtual void RenX_OnRefillCrate(Server *server, const PlayerInfo *player); + virtual void RenX_OnTimeBombCrate(Server *server, const PlayerInfo *player); + virtual void RenX_OnSpeedCrate(Server *server, const PlayerInfo *player); + virtual void RenX_OnNukeCrate(Server *server, const PlayerInfo *player); + virtual void RenX_OnAbductionCrate(Server *server, const PlayerInfo *player); + virtual void RenX_OnUnspecifiedCrate(Server *server, const PlayerInfo *player); + virtual void RenX_OnOtherCrate(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &type); virtual void RenX_OnSteal(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &vehicle); virtual void RenX_OnSteal(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &vehicle, const PlayerInfo *victim); virtual void RenX_OnDonate(Server *server, const PlayerInfo *donor, const PlayerInfo *player, double amount); diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index c695c4e..55b3e50 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -906,6 +906,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) r = new RenX::PlayerInfo(); r->id = id; r->name = name; + r->name.processEscapeSequences(); r->team = team; r->ip = ip; r->ip32 = Jupiter::Socket::pton4(Jupiter::CStringS(r->ip).c_str()); @@ -1066,7 +1067,10 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (player != nullptr) { if (player->name.isEmpty()) + { player->name = table.get(STRING_LITERAL_AS_REFERENCE("Name")); + player->name.processEscapeSequences(); + } if (player->ip.isEmpty()) player->ip = table.get(STRING_LITERAL_AS_REFERENCE("IP")); if (player->steamid == 0) @@ -1203,7 +1207,10 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (player != nullptr) { if (player->name.isEmpty()) + { player->name = table.get(STRING_LITERAL_AS_REFERENCE("Name")); + player->name.processEscapeSequences(); + } pair = table.getPair(STRING_LITERAL_AS_REFERENCE("TeamNum")); if (pair != nullptr) @@ -1242,8 +1249,16 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) buff.shiftLeft(1); } else if (this->lastCommand.equalsi("map")) - { this->map = buff.substring(1); + else if (this->lastCommand.equalsi("changename")) + { + buff.shiftRight(1); + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(0, RenX::DelimC)); + Jupiter::StringS newName = buff.getToken(2, RenX::DelimC); + newName.processEscapeSequences(); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnNameChange(this, player, newName); + player->name = newName; } break; case 'l': @@ -1398,10 +1413,16 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { // "vehicle" | Vehicle | "by" | Player // "death" | "by" | Player + // "suicide" | "by" | Player // "money" | Amount | "by" | Player // "character" | Character | "by" | Player // "spy" | Character | "by" | Player // "refill" | "by" | Player + // "timebomb" | "by" | Player + // "speed" | "by" | Player + // "nuke" | "by" | Player + // "abduction" | "by" | Player + // "by" | Player Jupiter::ReferenceString type = buff.getToken(2, RenX::DelimC); if (type.equals("vehicle")) { @@ -1410,7 +1431,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnVehicleCrate(this, player, vehicle); } - else if (type.equals("death")) + else if (type.equals("death") || type.equals("suicide")) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); for (size_t i = 0; i < xPlugins.size(); i++) @@ -1445,6 +1466,46 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnRefillCrate(this, player); } + else if (type.equals("timebomb")) + { + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnTimeBombCrate(this, player); + } + else if (type.equals("speed")) + { + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnSpeedCrate(this, player); + } + else if (type.equals("nuke")) + { + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnNukeCrate(this, player); + } + else if (type.equals("abduction")) + { + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnAbductionCrate(this, player); + } + else if (type.equals("by")) + { + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(3, RenX::DelimC)); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnUnspecifiedCrate(this, player); + } + else + { + RenX::PlayerInfo *player = nullptr; + if (buff.getToken(3, RenX::DelimC).equals("by")) + player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); + + if (player != nullptr) + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnOtherCrate(this, player, type); + } } else if (subHeader.equals("Death;")) { @@ -1725,11 +1786,20 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) xPlugins.get(i)->RenX_OnPart(this, player); this->removePlayer(player); } + else if (subHeader.equals("Kick;")) + { + // Player | "for" | Reason + const Jupiter::ReadableString &reason = buff.getToken(4, RenX::DelimC); + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(2, RenX::DelimC)); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnKick(this, player, reason); + } else if (subHeader.equals("NameChange;")) { // Player | "to:" | New Name RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(2, RenX::DelimC)); - Jupiter::ReferenceString newName = buff.getToken(4, RenX::DelimC); + Jupiter::StringS newName = buff.getToken(4, RenX::DelimC); + newName.processEscapeSequences(); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnNameChange(this, player, newName); player->name = newName; diff --git a/RenX.DNS/RenX.DNS.vcxproj b/RenX.DNS/RenX.DNS.vcxproj index 62dd4ea..1c7be39 100644 --- a/RenX.DNS/RenX.DNS.vcxproj +++ b/RenX.DNS/RenX.DNS.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.ExcessiveHeadshots/RenX.ExcessiveHeadshots.vcxproj b/RenX.ExcessiveHeadshots/RenX.ExcessiveHeadshots.vcxproj index 7318eef..a5ea79d 100644 --- a/RenX.ExcessiveHeadshots/RenX.ExcessiveHeadshots.vcxproj +++ b/RenX.ExcessiveHeadshots/RenX.ExcessiveHeadshots.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.ExtraLogging/RenX.ExtraLogging.vcxproj b/RenX.ExtraLogging/RenX.ExtraLogging.vcxproj index cbc85d5..47e4882 100644 --- a/RenX.ExtraLogging/RenX.ExtraLogging.vcxproj +++ b/RenX.ExtraLogging/RenX.ExtraLogging.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.Greetings/RenX.Greetings.vcxproj b/RenX.Greetings/RenX.Greetings.vcxproj index 2ad44a3..3aa47a4 100644 --- a/RenX.Greetings/RenX.Greetings.vcxproj +++ b/RenX.Greetings/RenX.Greetings.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -19,13 +19,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.HybridUUID/RenX.HybridUUID.vcxproj b/RenX.HybridUUID/RenX.HybridUUID.vcxproj index d1d9d02..c3f9f47 100644 --- a/RenX.HybridUUID/RenX.HybridUUID.vcxproj +++ b/RenX.HybridUUID/RenX.HybridUUID.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.IRCJoin/RenX.IRCJoin.vcxproj b/RenX.IRCJoin/RenX.IRCJoin.vcxproj index 7fba758..0488448 100644 --- a/RenX.IRCJoin/RenX.IRCJoin.vcxproj +++ b/RenX.IRCJoin/RenX.IRCJoin.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.Logging/RenX.Logging.vcxproj b/RenX.Logging/RenX.Logging.vcxproj index 0b76907..9dfdcd7 100644 --- a/RenX.Logging/RenX.Logging.vcxproj +++ b/RenX.Logging/RenX.Logging.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.Logging/RenX_Logging.cpp b/RenX.Logging/RenX_Logging.cpp index 7868681..646287d 100644 --- a/RenX.Logging/RenX_Logging.cpp +++ b/RenX.Logging/RenX_Logging.cpp @@ -26,8 +26,10 @@ void RenX_LoggingPlugin::init() { + RenX_LoggingPlugin::muteOwnExecute = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MuteOwnExecute"), true); RenX_LoggingPlugin::joinPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("JoinPublic"), true); RenX_LoggingPlugin::partPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("PartPublic"), true); + RenX_LoggingPlugin::kickPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("KickPublic"), true); RenX_LoggingPlugin::nameChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("NameChangePublic"), true); RenX_LoggingPlugin::teamChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("TeamChangePublic"), true); RenX_LoggingPlugin::playerPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("PlayerPublic"), false); @@ -56,11 +58,17 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::spawnPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SpawnPublic"), true); RenX_LoggingPlugin::botJoinPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("BotJoinPublic"), true); RenX_LoggingPlugin::vehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VehicleCratePublic"), false); - RenX_LoggingPlugin::deathCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DeathCratePublic"), false); + RenX_LoggingPlugin::deathCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DeathCratePublic"), true); RenX_LoggingPlugin::moneyCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MoneyCratePublic"), false); RenX_LoggingPlugin::characterCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("CharacterCratePublic"), false); RenX_LoggingPlugin::spyCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SpyCratePublic"), false); RenX_LoggingPlugin::refillCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("RefillCratePublic"), false); + RenX_LoggingPlugin::timeBombCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("TimeBombCratePublic"), false); + RenX_LoggingPlugin::speedCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SpeedCratePublic"), false); + RenX_LoggingPlugin::nukeCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("NukeCratePublic"), true); + RenX_LoggingPlugin::abductionCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AbductionCratePublic"), true); + RenX_LoggingPlugin::unspecifiedCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("UnspecifiedCratePublic"), false); + RenX_LoggingPlugin::otherCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("OtherCratePublic"), false); RenX_LoggingPlugin::stealPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("StealPublic"), true); RenX_LoggingPlugin::donatePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DonatePublic"), true); RenX_LoggingPlugin::gamePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("GamePublic"), true); @@ -102,6 +110,9 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::partFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("PartFormat"), 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::kickFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("KickFormat"), + Jupiter::StringS::Format(IRCCOLOR "04[Kick] " IRCBOLD "%.*s" IRCCOLOR IRCBOLD " was " IRCBOLD IRCCOLOR "04kicked" IRCCOLOR IRCBOLD " from the server for \"" IRCCOLOR "04%.*s" IRCCOLOR "\".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + RenX_LoggingPlugin::playerExecuteFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("PlayerExecuteFormat"), Jupiter::StringS::Format("%.*s" IRCCOLOR "07 executed: %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); @@ -136,7 +147,7 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::deployFmt); RenX_LoggingPlugin::disarmFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DisarmFormat"), - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " disarmed %.*s's " IRCBOLD "%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " disarmed %.*s" IRCBOLD IRCCOLOR "'s " IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); RenX_LoggingPlugin::mineDisarmFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MineDisarmFormat"), RenX_LoggingPlugin::disarmFmt); @@ -234,6 +245,24 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::refillCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RefillCrateFormat"), Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*srefill" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr())); + RenX_LoggingPlugin::timeBombCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TimeBombCrateFormat"), + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11time-bomb" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + + RenX_LoggingPlugin::speedCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SpeedCrateFormat"), + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11speed" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + + RenX_LoggingPlugin::nukeCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("NukeCrateFormat"), + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "04nuke" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + + RenX_LoggingPlugin::abductionCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AbductionCrateFormat"), + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " has been " IRCBOLD IRCCOLOR "06abducted" IRCCOLOR IRCBOLD " by the " IRCBOLD IRCCOLOR "06Scrin" IRCCOLOR IRCBOLD "!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + + RenX_LoggingPlugin::unspecifiedCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("UnspecifiedCrateFormat"), + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up an " IRCCOLOR "13unspecified" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + + RenX_LoggingPlugin::otherCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("OtherCrateFormat"), + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "13%.*s" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + RenX_LoggingPlugin::stealFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("StealFormat"), Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " stole " IRCBOLD "%.*s" IRCBOLD "'s " IRCBOLD "%.*s" IRCBOLD "!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); @@ -338,6 +367,7 @@ void RenX_LoggingPlugin::init() RenX::sanitizeTags(joinAdminFmt); RenX::sanitizeTags(joinNoSteamAdminFmt); RenX::sanitizeTags(partFmt); + RenX::sanitizeTags(kickFmt); RenX::sanitizeTags(nameChangeFmt); RenX::sanitizeTags(teamChangeFmt); RenX::sanitizeTags(playerFmt); @@ -379,6 +409,12 @@ void RenX_LoggingPlugin::init() RenX::sanitizeTags(characterCrateFmt); RenX::sanitizeTags(spyCrateFmt); RenX::sanitizeTags(refillCrateFmt); + RenX::sanitizeTags(timeBombCrateFmt); + RenX::sanitizeTags(speedCrateFmt); + RenX::sanitizeTags(nukeCrateFmt); + RenX::sanitizeTags(abductionCrateFmt); + RenX::sanitizeTags(unspecifiedCrateFmt); + RenX::sanitizeTags(otherCrateFmt); RenX::sanitizeTags(stealFmt); RenX::sanitizeTags(stealNoOwnerFmt); RenX::sanitizeTags(donateFmt); @@ -458,6 +494,23 @@ void RenX_LoggingPlugin::RenX_OnPart(RenX::Server *server, const RenX::PlayerInf } } +void RenX_LoggingPlugin::RenX_OnKick(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &reason) +{ + logFuncType func; + if (RenX_LoggingPlugin::kickPublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->kickFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, reason); + (server->*func)(msg); + } +} + void RenX_LoggingPlugin::RenX_OnNameChange(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &newPlayerName) { logFuncType func; @@ -1124,6 +1177,7 @@ void RenX_LoggingPlugin::RenX_OnSpyCrate(RenX::Server *server, const RenX::Playe if (msg.isEmpty() == false) { RenX::processTags(msg, server, player); + msg.replace(RenX::tags->INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(RenX::getEnemy(player->team))); msg.replace(RenX::tags->INTERNAL_VICTIM_CHARACTER_TAG, RenX::translateName(character)); (server->*func)(msg); } @@ -1145,6 +1199,103 @@ void RenX_LoggingPlugin::RenX_OnRefillCrate(RenX::Server *server, const RenX::Pl } } +void RenX_LoggingPlugin::RenX_OnTimeBombCrate(RenX::Server *server, const RenX::PlayerInfo *player) +{ + logFuncType func; + if (RenX_LoggingPlugin::timeBombCratePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->timeBombCrateFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + (server->*func)(msg); + } +} + +void RenX_LoggingPlugin::RenX_OnSpeedCrate(RenX::Server *server, const RenX::PlayerInfo *player) +{ + logFuncType func; + if (RenX_LoggingPlugin::speedCratePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->speedCrateFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + (server->*func)(msg); + } +} + +void RenX_LoggingPlugin::RenX_OnNukeCrate(RenX::Server *server, const RenX::PlayerInfo *player) +{ + logFuncType func; + if (RenX_LoggingPlugin::nukeCratePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->nukeCrateFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + (server->*func)(msg); + } +} + +void RenX_LoggingPlugin::RenX_OnAbductionCrate(RenX::Server *server, const RenX::PlayerInfo *player) +{ + logFuncType func; + if (RenX_LoggingPlugin::abductionCratePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->abductionCrateFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + (server->*func)(msg); + } +} + +void RenX_LoggingPlugin::RenX_OnUnspecifiedCrate(RenX::Server *server, const RenX::PlayerInfo *player) +{ + logFuncType func; + if (RenX_LoggingPlugin::unspecifiedCratePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->unspecifiedCrateFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + (server->*func)(msg); + } +} + +void RenX_LoggingPlugin::RenX_OnOtherCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &type) +{ + logFuncType func; + if (RenX_LoggingPlugin::otherCratePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->otherCrateFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + msg.replace(RenX::tags->INTERNAL_OBJECT_TAG, type); + (server->*func)(msg); + } +} + void RenX_LoggingPlugin::RenX_OnSteal(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &vehicle) { logFuncType func; @@ -1333,21 +1484,23 @@ void RenX_LoggingPlugin::RenX_OnGame(RenX::Server *server, const Jupiter::Readab void RenX_LoggingPlugin::RenX_OnExecute(RenX::Server *server, const Jupiter::ReadableString &user, const Jupiter::ReadableString &command) { - logFuncType func; - if (RenX_LoggingPlugin::executePublic) - func = &RenX::Server::sendLogChan; - else - func = &RenX::Server::sendAdmChan; - - Jupiter::String msg = this->executeFmt; - if (msg.isEmpty() == false) + if (RenX_LoggingPlugin::muteOwnExecute == false || server->getUser().equals(user) == false) { - processTags(msg, server); - msg.replace(RenX::tags->INTERNAL_NAME_TAG, user); - msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, command); - (server->*func)(msg); + logFuncType func; + if (RenX_LoggingPlugin::executePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->executeFmt; + if (msg.isEmpty() == false) + { + processTags(msg, server); + 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. } void RenX_LoggingPlugin::RenX_OnSubscribe(RenX::Server *server, const Jupiter::ReadableString &user) diff --git a/RenX.Logging/RenX_Logging.h b/RenX.Logging/RenX_Logging.h index 8343d03..6355cef 100644 --- a/RenX.Logging/RenX_Logging.h +++ b/RenX.Logging/RenX_Logging.h @@ -26,6 +26,7 @@ class RenX_LoggingPlugin : public RenX::Plugin public: // RenX::Plugin void RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player) override; void RenX_OnPart(RenX::Server *server, const RenX::PlayerInfo *player) override; + void RenX_OnKick(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &reason) override; void RenX_OnNameChange(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &newPlayerName) override; void RenX_OnTeamChange(RenX::Server *server, const RenX::PlayerInfo *player, const RenX::TeamType &oldTeam) override; void RenX_OnExecute(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &command) override; @@ -65,6 +66,12 @@ public: // RenX::Plugin void RenX_OnCharacterCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &character) override; void RenX_OnSpyCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &character) override; void RenX_OnRefillCrate(RenX::Server *server, const RenX::PlayerInfo *player) override; + void RenX_OnTimeBombCrate(RenX::Server *server, const RenX::PlayerInfo *player) override; + void RenX_OnSpeedCrate(RenX::Server *server, const RenX::PlayerInfo *player) override; + void RenX_OnNukeCrate(RenX::Server *server, const RenX::PlayerInfo *player) override; + void RenX_OnAbductionCrate(RenX::Server *server, const RenX::PlayerInfo *player) override; + void RenX_OnUnspecifiedCrate(RenX::Server *server, const RenX::PlayerInfo *player) override; + void RenX_OnOtherCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &type) override; void RenX_OnSteal(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &vehicle) override; void RenX_OnSteal(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &vehicle, const RenX::PlayerInfo *victim) override; void RenX_OnDonate(RenX::Server *server, const RenX::PlayerInfo *donor, const RenX::PlayerInfo *player, double amount) override; @@ -112,8 +119,10 @@ private: void init(); STRING_LITERAL_AS_NAMED_REFERENCE(name, "RenX.Logging"); + unsigned int muteOwnExecute : 1; unsigned int joinPublic : 1; unsigned int partPublic : 1; + unsigned int kickPublic : 1; unsigned int nameChangePublic : 1; unsigned int teamChangePublic : 1; unsigned int playerPublic : 1; @@ -147,6 +156,12 @@ private: unsigned int characterCratePublic : 1; unsigned int spyCratePublic : 1; unsigned int refillCratePublic : 1; + unsigned int timeBombCratePublic : 1; + unsigned int speedCratePublic : 1; + unsigned int nukeCratePublic : 1; + unsigned int abductionCratePublic : 1; + unsigned int unspecifiedCratePublic : 1; + unsigned int otherCratePublic : 1; unsigned int stealPublic : 1; unsigned int donatePublic : 1; unsigned int gameOverPublic : 1; @@ -178,6 +193,7 @@ private: /** Event formats */ Jupiter::StringS joinPublicFmt, joinAdminFmt, joinNoSteamAdminFmt; Jupiter::StringS partFmt; + Jupiter::StringS kickFmt; Jupiter::StringS nameChangeFmt; Jupiter::StringS teamChangeFmt; Jupiter::StringS playerFmt; @@ -221,6 +237,12 @@ private: Jupiter::StringS characterCrateFmt; Jupiter::StringS spyCrateFmt; Jupiter::StringS refillCrateFmt; + Jupiter::StringS timeBombCrateFmt; + Jupiter::StringS speedCrateFmt; + Jupiter::StringS nukeCrateFmt; + Jupiter::StringS abductionCrateFmt; + Jupiter::StringS unspecifiedCrateFmt; + Jupiter::StringS otherCrateFmt; Jupiter::StringS stealFmt; Jupiter::StringS stealNoOwnerFmt; Jupiter::StringS donateFmt; diff --git a/RenX.Medals/RenX.Medals.vcxproj b/RenX.Medals/RenX.Medals.vcxproj index 8dd4a76..3420b1a 100644 --- a/RenX.Medals/RenX.Medals.vcxproj +++ b/RenX.Medals/RenX.Medals.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -19,13 +19,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.Medals/RenX_Medals.cpp b/RenX.Medals/RenX_Medals.cpp index ec14719..4b14905 100644 --- a/RenX.Medals/RenX_Medals.cpp +++ b/RenX.Medals/RenX_Medals.cpp @@ -326,7 +326,7 @@ void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co const Jupiter::ReadableString &RecsGameCommand::getHelp(const Jupiter::ReadableString &) { - STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Gets a count of a player's recommendations and noobs. Syntax: recs [player]"); + static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Gets a count of a player's recommendations and noobs. Syntax: recs [player]"); return defaultHelp; } @@ -372,7 +372,7 @@ void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, con const Jupiter::ReadableString &RecGameCommand::getHelp(const Jupiter::ReadableString &) { - STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Recommends a player for their gameplay. Syntax: rec [player]"); + static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Recommends a player for their gameplay. Syntax: rec [player]"); return defaultHelp; } @@ -413,7 +413,7 @@ void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co const Jupiter::ReadableString &NoobGameCommand::getHelp(const Jupiter::ReadableString &) { - STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Tells people that a player is bad. Syntax: noob [player]"); + static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Tells people that a player is bad. Syntax: noob [player]"); return defaultHelp; } diff --git a/RenX.ModSystem/RenX.ModSystem.vcxproj b/RenX.ModSystem/RenX.ModSystem.vcxproj index 74cbfc8..787ee50 100644 --- a/RenX.ModSystem/RenX.ModSystem.vcxproj +++ b/RenX.ModSystem/RenX.ModSystem.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.NicknameUUID/RenX.NicknameUUID.vcxproj b/RenX.NicknameUUID/RenX.NicknameUUID.vcxproj index 44e9394..4bc6055 100644 --- a/RenX.NicknameUUID/RenX.NicknameUUID.vcxproj +++ b/RenX.NicknameUUID/RenX.NicknameUUID.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.Plugin.Template/RenX.Plugin.Template.vcxproj b/RenX.Plugin.Template/RenX.Plugin.Template.vcxproj index 4bd0d9c..696ab3e 100644 --- a/RenX.Plugin.Template/RenX.Plugin.Template.vcxproj +++ b/RenX.Plugin.Template/RenX.Plugin.Template.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.SetJoin/RenX.SetJoin.vcxproj b/RenX.SetJoin/RenX.SetJoin.vcxproj index 45c5570..079d664 100644 --- a/RenX.SetJoin/RenX.SetJoin.vcxproj +++ b/RenX.SetJoin/RenX.SetJoin.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/RenX.SetJoin/RenX_SetJoin.cpp b/RenX.SetJoin/RenX_SetJoin.cpp index 3829b00..035037f 100644 --- a/RenX.SetJoin/RenX_SetJoin.cpp +++ b/RenX.SetJoin/RenX_SetJoin.cpp @@ -55,7 +55,7 @@ void ViewJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player const Jupiter::ReadableString &ViewJoinGameCommand::getHelp(const Jupiter::ReadableString &) { - STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays your join message. Syntax: viewjoin"); + static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays your join message. Syntax: viewjoin"); return defaultHelp; } @@ -83,7 +83,7 @@ void ShowJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player const Jupiter::ReadableString &ShowJoinGameCommand::getHelp(const Jupiter::ReadableString &) { - STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays your join message. Syntax: showjoin"); + static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Displays your join message. Syntax: showjoin"); return defaultHelp; } @@ -112,7 +112,7 @@ void DelJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString &DelJoinGameCommand::getHelp(const Jupiter::ReadableString &) { - STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Removes your automatic join message. Syntax: deljoin"); + static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Removes your automatic join message. Syntax: deljoin"); return defaultHelp; } @@ -143,7 +143,7 @@ void SetJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString &SetJoinGameCommand::getHelp(const Jupiter::ReadableString &) { - STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sets an automatic join message. Syntax: setjoin [message]"); + static STRING_LITERAL_AS_NAMED_REFERENCE(defaultHelp, "Sets an automatic join message. Syntax: setjoin [message]"); return defaultHelp; } diff --git a/RenX.Warn/RenX.Warn.vcxproj b/RenX.Warn/RenX.Warn.vcxproj index 5676bc8..0dac73d 100644 --- a/RenX.Warn/RenX.Warn.vcxproj +++ b/RenX.Warn/RenX.Warn.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode diff --git a/SetJoin/SetJoin.vcxproj b/SetJoin/SetJoin.vcxproj index 02e318d..2c74eed 100644 --- a/SetJoin/SetJoin.vcxproj +++ b/SetJoin/SetJoin.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -18,13 +18,13 @@ Application true - v120 + v140 MultiByte DynamicLibrary false - v120 + v140 true Unicode