From 6c2caafa92f7f8d80bca74d29dcdef29ac0e5131 Mon Sep 17 00:00:00 2001 From: JAJames Date: Fri, 1 Jul 2016 17:46:32 -0400 Subject: [PATCH] General bug fixes/improvements --- Jupiter | 2 +- Release/Bot.lib | Bin 19292 -> 19292 bytes Release/Plugins/RenX.Core.lib | Bin 206992 -> 206992 bytes RenX.Core/RenX_Server.cpp | 31 ++++++++----- RenX.Core/RenX_Tags.cpp | 19 ++------ RenX.ModSystem/RenX_ModSystem.cpp | 70 ++++++++++++++++-------------- 6 files changed, 61 insertions(+), 61 deletions(-) diff --git a/Jupiter b/Jupiter index f52413a..5a34f89 160000 --- a/Jupiter +++ b/Jupiter @@ -1 +1 @@ -Subproject commit f52413a0f821f4bec3e1903ba1629023e3231a09 +Subproject commit 5a34f8989d4f9bdd3fb44efeb8b8bc90a5dd02b2 diff --git a/Release/Bot.lib b/Release/Bot.lib index 1e11571bd07181df79b02d3326b77034b1dc179d..92554546783fe0f12ea056cdd2b4ceba71ef7476 100644 GIT binary patch delta 1717 zcmZuwTS${(7@j%v(8}fJHV>(D9#A*;|I?k^=G;l$Jg|!>iXwtY=^_%Mn=DJHn=Uqd z!AmK+>P8Xiq9FCA3quH@t1=|;swnCv0t(F{eJX6K*45xobMg1uL~Tv22HbO6V7A*>dVBxYTCV$ZNzspvG6c^)hmWpic;oz3 z^v4QYu4*Rv;HnoA3{w_cTi++>mY3ilhpie!N7K+1|(JCCW_4r4?J=sI1n4u-Y?oz{8m_r@fmthYe4M(g*rChFtMG-H+#`-C~W70P@fj7*n(-1N2YiY8Y4yyc62aYcx` z?&pig(a?m$=c__s3y213!M6cE{8S)Q^uMEA{~|K2;j~+H&{Ro}z=`^1 z*oZiw<)mJ!ic($AVa4yk7A)8&X zm7!5deb_-yOmt8hX`F0= zU&1?y8=CMCvnK^c%Pl9lnHSBv$t>6Df`g>kjhgYMcr#&kys) z!f5J(lHqp9h3fw~#S`l;hP-!>yXd8SV{eM6-EdugsUf`?rxVD!u!?8$aNW+THeKn(<`@$Hfy2jjp E0inO{#{d8T delta 1717 zcmZuwO-R#W7~gW{G;`)Y{m41z2hPp?H}~n(xy`BDRCb7>C?bfI4wcZ+vV^*HnD~H4 zDLQpgL^>3tUOE^;2%Soipi@!QB?1e2p7)*qcQ1AP|Ng&^=lQ+wySJp>ThcBxR)nHT zK=DUm%V%AS{xp?-uTPlk%qnotZGl-=ZP~u(=6b>PSzGd>qa49=&tczVhd1tzC4a22 z?J+RP2Ty~LU>F#^M*0C=-eFZh_@N)PK`~B^MsrM~gS@o~!b+3GnNc{W z898N)V}hqjv&1 zX+%;LZlc&s@W3xOf&;NZ9Rbm%61Ku>g3r*6+G^BZw6(!zK-OYYOlt`CtMgOtbkM}` zxnM-X-xcvM!H|m6GVu^!#*SIF*eA?6tWX{jVPv`z;-;@dS5>hR<}F_eiz`ChjWAz4 ziH1fTexWJ`wuoqu7JM7w!%s!BC4LNN&Gw+yOwI18Yo1? z)I{8l@|1(w} z-|px9NByEX@~Ix+StFQr8nX-yakxCBhr0=*r2ie~`WFM!Do(q_2aT2V2;8W*!{&e! zT2AStswm~A5Lloe8O-pu*^DC(b20C}y)OwmLK> zsgFA7PKXYQ2gY3Kz}lJXw}g0f`IHUZ$vWnkNZybfcar?6XHeNmN4;?}A&rwy@k@9o zbxRc_*K5)4Z8ndR8?g@uxIz@-Tf}!skbLWBq9A z0qsaT6k-kkoMO!=j}9QKhaTBuof|HU%8#Ne!=s;#ibp}wwPXCMjH6h=tD-cgrGqXW z340TC9elK#?|2)0ANzkmJR<@YGQ7Z7nQ?Wm+APNgvO_9XdhTmk_1qV8oa)JW{{rT% B+A9D6 diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index d5fb12c7e1e837d0e2d829431f758c2ec80a8d03..62c92a583898635610be0c5d1ecda4cd8d5e2daf 100644 GIT binary patch delta 14139 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 YuJ*XMe|J}Z3NxH~u)8%?(%lvF|2b~r+W-In delta 14139 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 YS0~)NZ7autoBalanceTeams = tokens.getToken(17).asBool(); this->spawnCrates = tokens.getToken(19).asBool(); this->crateRespawnAfterPickup = tokens.getToken(21).asDouble(); - this->competitive = tokens.getToken(23).asBool(); - const Jupiter::ReadableString &match_state_token = tokens.getToken(25); - if (match_state_token.equalsi("PendingMatch"_jrs)) - this->match_state = 0; - else if (match_state_token.equalsi("MatchInProgress"_jrs)) - this->match_state = 1; - else if (match_state_token.equalsi("RoundOver"_jrs) || match_state_token.equalsi("MatchOver"_jrs)) - this->match_state = 2; - else if (match_state_token.equalsi("TravelTheWorld"_jrs)) - this->match_state = 3; - else // Unknown state -- assume it's in progress - this->match_state = 1; + if (this->rconVersion >= 4) + { + this->competitive = tokens.getToken(23).asBool(); + + const Jupiter::ReadableString &match_state_token = tokens.getToken(25); + if (match_state_token.equalsi("PendingMatch"_jrs)) + this->match_state = 0; + else if (match_state_token.equalsi("MatchInProgress"_jrs)) + this->match_state = 1; + else if (match_state_token.equalsi("RoundOver"_jrs) || match_state_token.equalsi("MatchOver"_jrs)) + this->match_state = 2; + else if (match_state_token.equalsi("TravelTheWorld"_jrs)) + this->match_state = 3; + else // Unknown state -- assume it's in progress + this->match_state = 1; + } } } else if (this->lastCommand.equalsi("mutatorlist"_jrs)) @@ -2870,8 +2874,11 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { // Player | "as" | Type="moderator" / "administrator" RenX::PlayerInfo *player = parseGetPlayerOrAdd(tokens.getToken(2)); + player->adminType.erase(); + for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnAdminLogout(this, player); + player->adminType = Jupiter::ReferenceString::empty; } else if (subHeader.equals("Granted;")) diff --git a/RenX.Core/RenX_Tags.cpp b/RenX.Core/RenX_Tags.cpp index e93eb02..76e2d93 100644 --- a/RenX.Core/RenX_Tags.cpp +++ b/RenX.Core/RenX_Tags.cpp @@ -38,17 +38,7 @@ struct TagsImp : RenX::Tags const Jupiter::ReadableString &getUniqueInternalTag(); private: Jupiter::StringS uniqueTag; - union - { - uint32_t tagItr; - struct - { - uint8_t tagItrP1; - uint8_t tagItrP2; - uint8_t tagItrP3; - uint8_t tagItrP4; - }; - }; + uint32_t tagItr; size_t bar_width; } _tags; RenX::Tags *RenX::tags = &_tags; @@ -885,11 +875,8 @@ void TagsImp::sanitizeTags(Jupiter::StringType &fmt) const Jupiter::ReadableString &TagsImp::getUniqueInternalTag() { - this->uniqueTag.set(1, this->tagItrP1); - this->uniqueTag.set(2, this->tagItrP2); - this->uniqueTag.set(3, this->tagItrP3); - this->uniqueTag.set(4, this->tagItrP4); - this->tagItr++; + this->uniqueTag.set(1, reinterpret_cast(&this->tagItr), sizeof(TagsImp::tagItr)); + ++TagsImp::tagItr; return this->uniqueTag; } diff --git a/RenX.ModSystem/RenX_ModSystem.cpp b/RenX.ModSystem/RenX_ModSystem.cpp index 838d45e..824a73c 100644 --- a/RenX.ModSystem/RenX_ModSystem.cpp +++ b/RenX.ModSystem/RenX_ModSystem.cpp @@ -28,15 +28,15 @@ using namespace Jupiter::literals; bool RenX_ModSystemPlugin::initialize() { - RenX_ModSystemPlugin::lockSteam = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockSteam"), true); - RenX_ModSystemPlugin::lockIP = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockIP"), false); - RenX_ModSystemPlugin::lockName = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockName"), false); - RenX_ModSystemPlugin::kickLockMismatch = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("KickLockMismatch"), true); - RenX_ModSystemPlugin::autoAuthSteam = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AutoAuthSteam"), true); - RenX_ModSystemPlugin::autoAuthIP = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AutoAuthIP"), false); - RenX_ModSystemPlugin::atmDefault = RenX_ModSystemPlugin::modsFile.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ATMDefault")); - RenX_ModSystemPlugin::moderatorGroup = RenX_ModSystemPlugin::modsFile.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Moderator"), STRING_LITERAL_AS_REFERENCE("Moderator")); - RenX_ModSystemPlugin::administratorGroup = RenX_ModSystemPlugin::modsFile.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Administrator"), STRING_LITERAL_AS_REFERENCE("Administrator")); + RenX_ModSystemPlugin::lockSteam = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockSteam"), true); + RenX_ModSystemPlugin::lockIP = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockIP"), false); + RenX_ModSystemPlugin::lockName = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockName"), false); + RenX_ModSystemPlugin::kickLockMismatch = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("KickLockMismatch"), true); + RenX_ModSystemPlugin::autoAuthSteam = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AutoAuthSteam"), true); + RenX_ModSystemPlugin::autoAuthIP = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AutoAuthIP"), false); + RenX_ModSystemPlugin::atmDefault = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ATMDefault")); + RenX_ModSystemPlugin::moderatorGroup = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Moderator"), STRING_LITERAL_AS_REFERENCE("Moderator")); + RenX_ModSystemPlugin::administratorGroup = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Administrator"), STRING_LITERAL_AS_REFERENCE("Administrator")); ModGroup *group; Jupiter::ReferenceString dotLockSteam = ".LockSteam"; @@ -50,52 +50,53 @@ bool RenX_ModSystemPlugin::initialize() Jupiter::ReferenceString dotPrefix = ".Prefix"; Jupiter::ReferenceString dotGamePrefix = ".GamePrefix"; - Jupiter::String groupName = RenX_ModSystemPlugin::modsFile.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Default")); + Jupiter::String groupName = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Default")); + while (groupName.isNotEmpty()) { group = new ModGroup(); group->name = groupName; groupName += dotLockSteam; - group->lockSteam = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockSteam); + group->lockSteam = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockSteam); groupName.truncate(dotLockSteam.size()); groupName += dotLockIP; - group->lockIP = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockIP); + group->lockIP = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockIP); groupName.truncate(dotLockIP.size()); groupName += dotLockName; - group->lockName = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockName); + group->lockName = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockName); groupName.truncate(dotLockName.size()); groupName += dotKickLockMismatch; - group->kickLockMismatch = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::kickLockMismatch); + group->kickLockMismatch = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::kickLockMismatch); groupName.truncate(dotKickLockMismatch.size()); groupName += dotAutoAuthSteam; - group->autoAuthSteam = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::autoAuthSteam); + group->autoAuthSteam = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::autoAuthSteam); groupName.truncate(dotAutoAuthSteam.size()); groupName += dotAutoAuthIP; - group->autoAuthIP = RenX_ModSystemPlugin::modsFile.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::autoAuthIP); + group->autoAuthIP = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::autoAuthIP); groupName.truncate(dotAutoAuthIP.size()); groupName += dotAccess; - group->access = RenX_ModSystemPlugin::modsFile.getInt(Jupiter::ReferenceString::empty, groupName); + group->access = this->config.getInt(Jupiter::ReferenceString::empty, groupName); groupName.truncate(dotAccess.size()); groupName += dotPrefix; - group->prefix = RenX_ModSystemPlugin::modsFile.get(Jupiter::ReferenceString::empty, groupName); + group->prefix = this->config.get(Jupiter::ReferenceString::empty, groupName); groupName.truncate(dotPrefix.size()); groupName += dotGamePrefix; - group->gamePrefix = RenX_ModSystemPlugin::modsFile.get(Jupiter::ReferenceString::empty, groupName); + group->gamePrefix = this->config.get(Jupiter::ReferenceString::empty, groupName); groupName.truncate(dotGamePrefix.size()); RenX_ModSystemPlugin::groups.add(group); groupName += dotNext; - groupName = RenX_ModSystemPlugin::modsFile.get(Jupiter::ReferenceString::empty, groupName); + groupName = this->config.get(Jupiter::ReferenceString::empty, groupName); } RenX::Core *core = RenX::getCore(); @@ -154,17 +155,22 @@ int RenX_ModSystemPlugin::auth(RenX::Server *server, const RenX::PlayerInfo *pla { if (player->isBot) return 0; + ModGroup *group; if (player->uuid.isNotEmpty()) { - Jupiter::INIFile::Section *section = RenX_ModSystemPlugin::modsFile.getSection(player->uuid); + Jupiter::INIFile::Section *section = this->config.getSection(player->uuid); if (section != nullptr) { const Jupiter::ReadableString &groupName = section->get(STRING_LITERAL_AS_REFERENCE("Group")); if (groupName.isEmpty()) group = RenX_ModSystemPlugin::groups.get(0); - else if ((group = RenX_ModSystemPlugin::getGroupByName(groupName)) == nullptr) - group = RenX_ModSystemPlugin::groups.get(0); + else + { + group = RenX_ModSystemPlugin::getGroupByName(groupName); + if (group == nullptr) + group = RenX_ModSystemPlugin::groups.get(0); + } auto sectionAuth = [&] { @@ -236,11 +242,11 @@ void RenX_ModSystemPlugin::tempAuth(RenX::Server *server, const RenX::PlayerInfo bool RenX_ModSystemPlugin::set(RenX::PlayerInfo *player, RenX_ModSystemPlugin::ModGroup *group) { - bool r = RenX_ModSystemPlugin::modsFile.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Group"), group->name); - RenX_ModSystemPlugin::modsFile.set(player->uuid, STRING_LITERAL_AS_REFERENCE("SteamID"), Jupiter::StringS::Format("%llu", player->steamid)); - RenX_ModSystemPlugin::modsFile.set(player->uuid, STRING_LITERAL_AS_REFERENCE("LastIP"), player->ip); - RenX_ModSystemPlugin::modsFile.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Name"), player->name); - RenX_ModSystemPlugin::modsFile.sync(); + bool r = this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Group"), group->name); + this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("SteamID"), Jupiter::StringS::Format("%llu", player->steamid)); + this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("LastIP"), player->ip); + this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Name"), player->name); + this->config.sync(); return r; } @@ -273,7 +279,7 @@ RenX_ModSystemPlugin::ModGroup *RenX_ModSystemPlugin::getGroupByIndex(size_t ind int RenX_ModSystemPlugin::getConfigAccess(const Jupiter::ReadableString &uuid) const { - Jupiter::INIFile::Section *section = RenX_ModSystemPlugin::modsFile.getSection(uuid); + Jupiter::INIFile::Section *section = this->config.getSection(uuid); if (section == nullptr) return RenX_ModSystemPlugin::groups.get(0)->access; RenX_ModSystemPlugin::ModGroup *group = RenX_ModSystemPlugin::getGroupByName(section->get(STRING_LITERAL_AS_REFERENCE("Group")), groups.get(0)); @@ -344,9 +350,9 @@ void RenX_ModSystemPlugin::RenX_OnPlayerCreate(RenX::Server *server, const RenX: void RenX_ModSystemPlugin::RenX_OnPlayerDelete(RenX::Server *server, const RenX::PlayerInfo *player) { - if (RenX_ModSystemPlugin::groups.size() != 0 && player->isBot == false) + if (RenX_ModSystemPlugin::groups.size() != 0 && player->isBot == false && player->uuid.isNotEmpty()) { - Jupiter::INIFile::Section *section = RenX_ModSystemPlugin::modsFile.getSection(player->uuid); + Jupiter::INIFile::Section *section = this->config.getSection(player->uuid); if (section != nullptr) { section->set(STRING_LITERAL_AS_REFERENCE("SteamID"), Jupiter::StringS::Format("%llu", player->steamid)); @@ -409,9 +415,9 @@ int RenX_ModSystemPlugin::OnRehash() { RenX::Plugin::OnRehash(); - RenX_ModSystemPlugin::modsFile.flushData(); while (RenX_ModSystemPlugin::groups.size() != 0) delete RenX_ModSystemPlugin::groups.remove(0U); + return this->initialize() ? 0 : -1; }