From b3f9e42a11d1ce16c8836450df8cc2386fc19b2f Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Sat, 25 Oct 2014 23:16:13 -0400 Subject: [PATCH] Removed RenX::DelimS; Usage for RenX::DelimC adjusted accordingly; updated Jupiter version (bug fix). --- Jupiter | 2 +- Release/Bot.lib | Bin 19858 -> 19858 bytes Release/Plugins/RenX.Core.lib | Bin 61562 -> 61386 bytes RenX.Core/RenX_Functions.cpp | 3 +- RenX.Core/RenX_Functions.h | 3 +- RenX.Core/RenX_Server.cpp | 83 ++++++++++++++++------------------ 6 files changed, 43 insertions(+), 48 deletions(-) diff --git a/Jupiter b/Jupiter index 911d3fc..94bda33 160000 --- a/Jupiter +++ b/Jupiter @@ -1 +1 @@ -Subproject commit 911d3fc122e33f58e96ba2325eabd41e633105f0 +Subproject commit 94bda33c248ef6fd9c0e09ecda6b27184865df6c diff --git a/Release/Bot.lib b/Release/Bot.lib index d1c439fb109f1498b2ce95f5aa93b6e848393d75..0c94a68aaaccebf0b8a53f9c523bc10b56c84298 100644 GIT binary patch delta 1584 zcmZuwOH30{6r}+y-vBanM1;1MkJtb+{ZGFXT1rca5;bl#1r-fpK}cMfxDa--Ai>^^ zhDbFoT$w-!8y9Ygx+o?l#s$Hc7#A*tgbgu%?t5?E^pV)zoSu8`x#!-OUp3`dO)F((%0r;%WL5i-Z>k~-`~z|?mB;%43-Sv`Wh+`zPts_0V|y9|7!f# zP3gS@Z6&$|CKaic(0j_ruL3^EHYh0VMv(;?JrXH|pGr(XGb%%;)VP4YQJGo?YLyc; zvjhjKRbZ_98N)`p5k^fb_N#&gzofHZGA_eYS2ML0LRuxINl1OE7`U|AJch~d+wQ@*4ie=W<<&psY4YM!UWaeqo6VwM!$ z_KU&T0u1#BxMyl9H`YwaF9Kt_#4*^eaTpH|9%@XZpmAkbh{|xJF^z`cw5ahY$l#Yj zag3@E)3Anef@hxoMu?|RZPbTZVEq_aD+z4ArUinXO>oP_9|YxLuyl&&;WT%!A7hNCdrpV3>vV$GN z0ql6NYi)K=x*TvZDK4GP@N19>H^q$^CgaS)a{LMx-ATysH_k+7P_z?8587_PgCXP6 zh#l-p11S#8@Je!kyvOXY(F4bwylNNAGi(v?`1;_SWdE4wL%~r`a

O8VHj@T1>L^XmpB!;D_f{5PSu delta 1584 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 DXzUD= delta 7548 zcmbtY2~?KVx_&J5swtqNI1A#46O%(&0)|+QXdX>PK}9nq9FKYIDAXa3kw-afK|~yI z$ee)0F$bK-5;Vmj2h_Bjsdd&}r*5t8^X~n9^!cA!>)dm5J$(Pa-}!mpz4!Nb`sVXL zmOY==q;g1Lm(GEzWP^87w~&C&KJs5&b)Zr(kTxAiUk9jbz^eH`ZdG7)GCu<-_cD08 z2@pKYG}!YKAUK?8aA7+j_~J8zbD@BsEXClKJ0Lh8l_YoIGrB!VM6dq@Li|RfAiLSSfLol?zIH8azG=2$CMR;s@f< z0)r!@QE*J05EncRzDxiF=N}lXox`>;iTeQtMQo8EoBD#x)fRmCB(|S6_;ev4*sxtA z3A-a%DY2!V!N%r*pnyh#_53W@P}^WVvle_j)nI#5Iwp3^G}v;Oeu%Bp4e}@xY+7Wn zIR+5q#|zm1oh=MDmM}1}E5+cG34mbdZG!?I?GveFFJ zcyWkX@p9@2F4Bi!SrsCQe~Ov8;P_aBi~XoTJnd+3eIFp$muIklJ0Q5;*x(+k6Wq-) z_&N>{+__=!Efdjj=aaY*YT+9De}jKMOEq}H>;#9R3=Xot8aw$UPA3=~na3F+PDLA> zjR6EFmKZ$v5fGHHrGopr4Gytt!2{|F&R#~6{K3udEllN;*vGyL_O3Cw`T)?F#3yl} z%mN4W0PzJ3KJNnv&TwaFROgepOS#~i(FXSpkTK#;RJ{BFt}q)x>3M@I3?R64)!_0q zK!ZA$iAy64*0lgMKIW5nM0y3+*#EC)vrYc|oL1;r`REHZUk@KVKJkt4@Zjj4kv$7f zc#i1$%rO`eY#oEF8PnOab?LNKzF0zHQdWty$#eLa+Yy}WB|_{0cNkDKa!P{m;?NSXt)$e&E^*7 za~7TdlM1s}0^jfE$-5i~qTz*8OlU2Ko0%Tw25>vUbv~~i0~RrG%2A+aDck!PXhke| z#6%e^h;mORn(!st&*bLNM^zRTaGzt4Ttp!Qug(N~h|?VKg`cvr4L~G=*V_U#-$+>j zpX-6zTtCa_RI=Wbx-)k$8R|^m%I|qhWD^jx8HmpZTI}Q;(l%umFyRxPPeE!#kZ-e4Pv)X(Ve3EOgrRUhP$LL{69=8>7`BvKl47Fa?me|*4d z*|**I8Jx;7{C=6T?{BhN!iPcEu%8dE0+Wcc1EiLaUC`%qw&e^^osfwi{S7w=6N_R( zF;{qUmr|e4tCyJ6Wv&q;_&KS?I-aJ4JA37JjXnPg@MmRd{2W{fXpII4M;MyH7mX2% zc+^J^_+T`~q7|B;DH_2KEs%p1colun7q8(J3_}$DfI%3HUKoIZh{i~~j@}rKo*02q zh(SL@pg)Er;SCH$BwC_5Ucetw7Yp!LOu}R=#7B4;v+*aqgZEJb4e>5IBLH2{5fjiJ z^Uwk9@MpBa9He0}7U6Gj$6TafJd#ld9`HhKyohe-ikf&6;}D2UEJqfyu?!hlid1}v zqy)T$8JLOr_yC@$g--BBJuJagOu^rgh_|7Tj_H_&m+&6`!hx-hl?XvFf-nmcQ3=oe z+Z_ED+|V6WP#I$o2Y<9hXwrX5-0$#~`+sCE=|87#HP56q_IkqZqmB;X$K6v&MP$@fB^j+PxmaDlWUSg|4sfih zOtZQ%)Apq!l-2Q&WINH98~=rc1*lr?b=8!FYO4Rz77lynqBYx6vvP%IeRVd|T@|gb zSE1>zGj5XA$66`NHY>}rBCQplgWl?gER&7LviJ%;Z^g=LNH$VgHO5dLHR`G!+0O>> zR(2^3vY#pCp)r;OUl8L??u}fsvvaAr+|Gq7I$}#2)fA(&4&J{J@rw&4-5-|sv(w#e z%6cbfh_zCZV^)678EmaMoAKTXXEW>;Ra$AUmgIP=q+Ao_y_G{_~z1eU91 zL6kLBht}GY<+;xP1&Pw0>&@V%4n#Fm10TApfSkIPb@FC^Z5cxiA62w&rnMfvt-gw0 zUt4#65M{p7`9sZKQL%+~QkIG~7nSC!=Esv9=8JBbga=dRr}8UgQcRZ(MmC1B7HZIj zId(A{%&<-7dP@oEGkuiuT<;ujF;6Wr=A)_BN)>%FtHQj#8obeD{WfK-#l@i3u`Vw7 zdsTUCs-vlyN3}MjrpRxaTDi&3;poOD6J!!K+NvKmy>H1#nYI+l{AoF+@j&{wEhW9O zd&V-B8tqis$Nll0s_HO!8p zT9BTHhEn-6&2i)y%p4c{J97-*X7+!rLT}ZveOE{Jl<3M|r|ZsQ*DlH-)!Y=;)*8ZF z7t!z;;2N7La+Bzh6$ZQN`DxhCr8)n--H;SVm2Rrm4!b!r6zg}GeUwPqi|Wvh`4)k$ zqaLb~cG{yZc9nM-yD7Bmu6%bba1igD)tA(*UG}UN9Q3a&dox&h>}jAphSyQWW%kx8 z+imFROn*ICtnctP4yoJ@bN86>eVH0z)RWiWRM?pKcvV)duF9|OsiMoAJ(V+>r@P+g9jV?^h3&P^PuEmlVX*Ip2RM4iBS?2d zj-W{C$e4hpDq){J)RN2QeP;YZsnUyQp*r_&do}u+t>PL#N)6g?$Ct@)65LxA@3#q- zrj0#dnjKBouTmDS_8(|tHOHbsPnFQ{8gnln;jdmRvT3xu>o$#60}qC%-Cg_~<3yS@ zi9&NFg#GLIvi<*7T$h2Z2H!LvS`)lh|QZ-yG~7NA0(;G zo7YyA9(ShZO7CFhd(@^k?U4yPjOMSa;-ga?w2nMx!gixF)QcVS+tC_K_djW?7|Np7e(qZZ>( z5w>{=>j9Tbcns4S5ZB8wI^|2vbhe{(tT;&S)onzh%$yu66uZf*} zc_P?xMT76DI<+>`m?Ei_f6!3Hud`KLcgj?C^P)ZVQkir2O;b}!T`1MAh0^KbdSFy@ z)%3FMTB47uBGwb=MFukdfyK0f`GDxIdjG zN*TOdHBT}S^F*ylfRE#fblt{Dtl?~MFULlg97o+SRlY(e$y%einit~ba_w{I^=%fU zKDyaj1>CfM6pM!$Hx1Jf^zgn~d~<{~%hCm2(R$A1ivEl8EpzFDmPr>Sjf$6AmD>80+bT?hdZ3t#7gL!yP|WHnFOTyK4`w)i+&{^et8Wd}pHL8sK@TWpW;V zq*i<#?_i1S>d11WEM(;JH=F#ncdaGf|E9Hix>R80P@%PmT7eV)MT>U{e`#nf`K7T~ zYc*4izZv#BIi*n}Ik@G&R$CG2?^>gYDhPCC)%9RWS6_ThY_)^oQoyZB1dO3Vs-F z6|4`1ho%YgKRK4dExmVR{^YeMP14|tgsxXE@+{W-vsZ+g_{i=*Uu(2fUTc<7`r)KL z%Hwf`z2oO{wwnCd`Rnbc$EFwKXt|u0K9h&4DNk%m=UZBiI`bsbo~iVD%KxdCo~Z`3 WT%meD4RXkqSh9MQtyG^rZScQ=WDmpu diff --git a/RenX.Core/RenX_Functions.cpp b/RenX.Core/RenX_Functions.cpp index 647815b..629dc83 100644 --- a/RenX.Core/RenX_Functions.cpp +++ b/RenX.Core/RenX_Functions.cpp @@ -41,8 +41,7 @@ Jupiter::ReferenceString GDILongName = "Global Defense Initiative"; Jupiter::ReferenceString OtherLongName = "Unknown"; /** RenegadeX RCON protocol message deliminator */ -const char *RenX::DelimS = "\xA0"; -const char RenX::DelimC = *RenX::DelimS; +const char RenX::DelimC = '\xA0'; /** WinType translations */ diff --git a/RenX.Core/RenX_Functions.h b/RenX.Core/RenX_Functions.h index 69b7238..2d258fd 100644 --- a/RenX.Core/RenX_Functions.h +++ b/RenX.Core/RenX_Functions.h @@ -162,8 +162,7 @@ namespace RenX RENX_API double getKillsPerSecond(const RenX::PlayerInfo *player); /** Constant variables */ - RENX_API extern const char *DelimS; /** RCON message deliminator in a C-Style string */ - RENX_API extern const char DelimC; /** RCON message deliminator as a character */ + RENX_API extern const char DelimC; /** RCON message deliminator */ } #endif // _RENX_FUNCTIONS_H_HEADER \ No newline at end of file diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 026748a..11a2990 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -563,15 +563,10 @@ void RenX::Server::sendLogChan(const Jupiter::ReadableString &msg) const int id; \ bool isBot = false; { \ Jupiter::ReferenceString idToken; \ - if (playerData[0] == ',') { \ - name = playerData.gotoWord(1, ","); \ - idToken = playerData.getWord(0, ","); \ - team = Other; \ - } else { \ - name = playerData.gotoWord(2, ","); \ - idToken = playerData.getWord(1, ","); \ - team = RenX::getTeam(playerData[0]); \ - } \ + name = playerData.gotoToken(2, ','); \ + idToken = playerData.getToken(1, ','); \ + if (playerData[0] == ',') team = Other; \ + else team = RenX::getTeam(playerData[0]); \ if (idToken[0] == 'b') { idToken.shiftRight(1); isBot = true; } \ id = idToken.asInt(10); } @@ -579,9 +574,9 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { Jupiter::ReferenceString buff = line; Jupiter::ArrayList &xPlugins = *RenX::getCore()->getPlugins(); - Jupiter::ReferenceString header = buff.getWord(0, RenX::DelimS); - Jupiter::ReferenceString playerData = buff.getWord(1, RenX::DelimS); - Jupiter::ReferenceString action = buff.getWord(2, RenX::DelimS); + Jupiter::ReferenceString header = buff.getToken(0, RenX::DelimC); + Jupiter::ReferenceString playerData = buff.getToken(1, RenX::DelimC); + Jupiter::ReferenceString action = buff.getToken(2, RenX::DelimC); /** Local functions */ auto onPreGameOver = [&](RenX::Server *server, RenX::WinType winType, RenX::TeamType team, int gScore, int nScore) @@ -702,7 +697,7 @@ 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 objectType = buff.getWord(3, RenX::DelimS); + Jupiter::ReferenceString objectType = buff.getToken(3, RenX::DelimC); if (objectType.match("*Beacon")) player->beaconPlacements++; for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnDeploy(this, player, objectType); @@ -714,7 +709,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty); player->deaths++; player->suicides++; - Jupiter::ReferenceString damageType = buff.getWord(3, RenX::DelimS); + Jupiter::ReferenceString damageType = buff.getToken(3, RenX::DelimC); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnSuicide(this, player, damageType); this->firstDeath = true; @@ -724,9 +719,9 @@ 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.getWord(3, RenX::DelimS); - Jupiter::ReferenceString vname = victimData.getWord(2, ","); - Jupiter::ReferenceString vidToken = victimData.getWord(1, ","); + Jupiter::ReferenceString victimData = buff.getToken(3, RenX::DelimC); + Jupiter::ReferenceString vname = victimData.getToken(2, ','); + Jupiter::ReferenceString vidToken = victimData.getToken(1, ','); int vid; bool visBot = false; if (vidToken[0] == 'b') @@ -735,8 +730,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) visBot = true; } vid = vidToken.asInt(10); - TeamType vteam = RenX::getTeam(victimData.getWord(0, ",")[0]); - Jupiter::ReferenceString damageType = buff.getWord(5, RenX::DelimS); + 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++; @@ -760,7 +755,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) PARSE_PLAYER_DATA(); RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty); player->deaths++; - Jupiter::ReferenceString damageType = buff.getWord(3, RenX::DelimS); + Jupiter::ReferenceString damageType = buff.getToken(3, RenX::DelimC); if (damageType.equals("DamageType")) for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnTeamChange(this, player); @@ -774,8 +769,8 @@ 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 victim = buff.getWord(3, RenX::DelimS); - Jupiter::ReferenceString damageType = buff.getWord(5, RenX::DelimS); + Jupiter::ReferenceString victim = buff.getToken(3, RenX::DelimC); + Jupiter::ReferenceString damageType = buff.getToken(5, RenX::DelimC); ObjectType type; if (action.equals("destroyed building")) { @@ -799,8 +794,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) else if (playerData.match("??? wins (*)")) { TeamType team = RenX::getTeam(playerData[0]); - int gScore = buff.getWord(2, RenX::DelimS).gotoWord(1, "=").asInt(10); - int nScore = buff.getWord(3, RenX::DelimS).gotoWord(1, "=").asInt(10); + int gScore = buff.getToken(2, RenX::DelimC).gotoToken(1, '=').asInt(10); + int nScore = buff.getToken(3, RenX::DelimC).gotoToken(1, '=').asInt(10); Jupiter::ReferenceString winType = Jupiter::ReferenceString::substring(playerData, 10); winType.truncate(1); WinType iWinType = Unknown; @@ -822,8 +817,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } else if (playerData.equals("Tie")) { - int gScore = action.gotoWord(1, "=").asInt(10); - int nScore = buff.getWord(3, RenX::DelimS).gotoWord(1, "=").asInt(10); + int gScore = action.gotoToken(1, '=').asInt(10); + int nScore = buff.getToken(3, RenX::DelimC).gotoToken(1, '=').asInt(10); this->needsCList = true; if (this->profile->disconnectOnGameOver) @@ -846,7 +841,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } } else for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnGame(this, buff.gotoWord(1, RenX::DelimS)); + xPlugins.get(i)->RenX_OnGame(this, buff.gotoToken(1, RenX::DelimC)); } else if (header.equals("lCHAT:")) { @@ -854,7 +849,7 @@ 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 message = buff.getWord(3, RenX::DelimS); + Jupiter::ReferenceString message = buff.getToken(3, RenX::DelimC); onChat(this, player, message, false); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnTeamChat(this, player, message); @@ -863,7 +858,7 @@ 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 message = buff.getWord(3, RenX::DelimS); + Jupiter::ReferenceString message = buff.getToken(3, RenX::DelimC); onChat(this, player, message, true); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnChat(this, player, message); @@ -884,7 +879,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } else if (action.equals("entered from")) { - RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, buff.getWord(4, RenX::DelimS).equals("steamid") ? buff.getWord(5, RenX::DelimS).asUnsignedLongLong() : 0, buff.getWord(3, RenX::DelimS)); + RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, buff.getToken(4, RenX::DelimC).equals("steamid") ? buff.getToken(5, RenX::DelimC).asUnsignedLongLong() : 0, buff.getToken(3, RenX::DelimC)); if (this->silenceJoins == false) for (size_t i = 0; i < xPlugins.size(); i++) @@ -893,7 +888,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) else if (action.equals("changed name to:")) { RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty); - Jupiter::ReferenceString newName = buff.getWord(3, RenX::DelimS); + Jupiter::ReferenceString newName = buff.getToken(3, RenX::DelimC); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnNameChange(this, player, newName); player->name = newName; @@ -906,7 +901,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { if (action.equals("executed:")) { - Jupiter::ReferenceString command = buff.getWord(3, RenX::DelimS); + Jupiter::ReferenceString command = buff.getToken(3, RenX::DelimC); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnExecute(this, playerData, command); } @@ -917,7 +912,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) xPlugins.get(i)->RenX_OnSubscribe(this, playerData); } else for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnRCON(this, buff.gotoWord(1, RenX::DelimS)); + xPlugins.get(i)->RenX_OnRCON(this, buff.gotoToken(1, RenX::DelimC)); } else if (header.equals("lADMIN:")) { @@ -925,7 +920,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, 0, Jupiter::ReferenceString::empty); if (action.equals("logged in as")) { - player->adminType = buff.getWord(3, RenX::DelimS); + player->adminType = buff.getToken(3, RenX::DelimC); if (player->adminType.equalsi("moderator") && player->access < 1) player->access = 1; else if (player->adminType.equalsi("administrator") && player->access < 2) @@ -935,7 +930,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } else if (action.equals("logged out of")) { - Jupiter::ReferenceString type = buff.getWord(3, RenX::DelimS); + Jupiter::ReferenceString type = buff.getToken(3, RenX::DelimC); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnAdminLogout(this, player); player->adminType = ""; @@ -943,7 +938,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } else if (action.equals("granted")) { - player->adminType = buff.getWord(3, RenX::DelimS); + player->adminType = buff.getToken(3, RenX::DelimC); if (player->adminType.equalsi("moderator") && player->access < 1) player->access = 1; else if (player->adminType.equalsi("administrator") && player->access < 2) @@ -952,7 +947,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) xPlugins.get(i)->RenX_OnAdminGrant(this, player); } else for (size_t i = 0; i < xPlugins.size(); i++) - xPlugins.get(i)->RenX_OnAdmin(this, buff.gotoWord(1, RenX::DelimS)); + xPlugins.get(i)->RenX_OnAdmin(this, buff.gotoToken(1, RenX::DelimC)); } else if (header.equals("lC-LIST:")) { @@ -960,6 +955,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (playerData.isEmpty()) break; + static const Jupiter::ReferenceString CListDelim = STRING_LITERAL_AS_REFERENCE(" "); int id; bool isBot = false; if (playerData.get(0) == 'b') @@ -970,30 +966,31 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) playerData.shiftLeft(1); } else id = playerData.asInt(10); - Jupiter::ReferenceString ip = playerData.getWord(1, WHITESPACE); - Jupiter::ReferenceString steamid = playerData.getWord(2, WHITESPACE); + Jupiter::ReferenceString ip = playerData.getToken(1, CListDelim); + Jupiter::ReferenceString steamid = playerData.getToken(2, CListDelim); RenX::TeamType team; Jupiter::ReferenceString name; if (steamid.equals("-----NO")) // RCONv2-2a { steamid = ""; - Jupiter::ReferenceString &teamToken = playerData.getWord(4, WHITESPACE); + Jupiter::ReferenceString &teamToken = playerData.getToken(4, CListDelim); if (teamToken.isEmpty()) break; team = getTeam(teamToken.get(0)); - name = playerData.gotoWord(5, WHITESPACE); + name = playerData.gotoToken(5, CListDelim); } else { if (steamid.equals("-----NO-STEAM-----")) // RCONv2-2.5a steamid = ""; - Jupiter::ReferenceString &teamToken = playerData.getWord(3, WHITESPACE); + Jupiter::ReferenceString &teamToken = playerData.getToken(3, CListDelim); if (teamToken.isEmpty()) break; team = getTeam(teamToken.get(0)); - name = playerData.gotoWord(4, WHITESPACE); + name = playerData.gotoToken(4, CListDelim); } + printf("Name: %.*s - ID: %d - isBot: %u - steamid: %llu - ip: %.*s" ENDL, name.size(), name.ptr(), id, isBot, steamid.asUnsignedLongLong(), ip.size(), ip.ptr()); RenX::PlayerInfo *player = getPlayerOrAdd(this, name, id, team, isBot, steamid.asUnsignedLongLong(), ip); } else