From 07231aafc41adf601265e72fec3a68ca7c3ae265 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Wed, 27 May 2015 23:49:54 -0400 Subject: [PATCH] Added events: * RenX_OnTSVehicleCrate * RenX_OnRAVehicleCrate * RenX_OnMapStart Adjusted RenX.Logging accordingly. --- Release/Plugins/RenX.Core.lib | Bin 120750 -> 122554 bytes RenX.Core/RenX_Plugin.cpp | 15 ++++++++ RenX.Core/RenX_Plugin.h | 3 ++ RenX.Core/RenX_Server.cpp | 22 +++++++++++ RenX.Logging/RenX_Logging.cpp | 68 +++++++++++++++++++++++++++++++++- RenX.Logging/RenX_Logging.h | 9 +++++ 6 files changed, 116 insertions(+), 1 deletion(-) diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index 27bdda845ccae1c3bf63524214c953535b5c5425..e59c6e7001a6c0de6fd212d4595f8bb19292b177 100644 GIT binary patch delta 14176 zcmcgyXLwar)?N$gQbG?>1BggMNJ0oLkOG7nLSjHV3B808dJ!%N0@A|;Ha!Ft1%*(h zLqJ4IfCLc`kT#BE9dyRg8As)N*FNX&+{1N#e9!lMs@8ahfWNDGSVW83@?T0xqCzc*1Gf-2$|G)EoVeXR;@BI+YhsBrO5uA? z;QwRn3@LcfO*A{M-Ar`C{W+C$zV!`{XE$o6V!QLbb7eGh@WG(>vKw7Zpq6ODp zQ3h7dw{U3&v7jZC1fh@#wl232bsmud%VAg$H;S<>OlZC8B#DX_rSa9%r8(r}U9B5zzQ5^u{?x9bB z{9i3>0!cxuBn#mvg`mkT)W69s;;D#4Fdjq%T_;#raF|#y;I@UNZ;1t?>R3qrnpn`& zMvt|`f}R~MjLL-`kaoich^7Ifr&w6%8b-VjSoFxk>)VJ0i^^N*6htiOf{qq+0$D-l z85X8&AQmhhVqto7V!>>G3;pgA3kC#R7)# z9a#{J!5~3$M+=iND+F^8rC@%Vg@g!V!HhW;Ui*nyBLttov{e?CfQ(?+Yys+@IKskM z)KHKBAfj-+UjMzXd7&**>YX-3(>{7M89h7DUEbh(P@X?U9}KgYfLQg=1mFf@YuFh{h+7z0|^6 z7%w=o)xu{ev*1IJ7OalO{Kp?&4+X(lL@u}jM;ah^1-Kk!A$KRSARi4T$h&RfMhdau zI*bYqL0|9*bOq;rweZmvV!;ZONN}ep>VKyw@s?{AHm@cYY(eS-@1Pul9ba2G{3@|v z=X?uUC9yC8?}S^}znxg45I%w3lPqkXMl85K$ikjrEWf}t7YtnkGJ9J1_$;wt_xBdu z$c6@@aRcjMRG{WqSdUH?tOIGm+8=Ge*;?QXvLrbD$ih)%S)(RC0oPp!1!wD7IQI%t z1>E$vunGeNcaB>40AvLpH?Xh~L3unPnP?+vo>?jB-|I`{-G=UT{Xh#mm0F1CNvRVQ&*WNezowzZ;#0>L zJje+T+`pnx$a95~V%(=XjJ7`dyPq5_!7u3t$@05DT=y<(WUMKGON#uU^B-$R*_b}%)^_wB8j24L(?JZ~Ar zuO0M3AWFm?}_`86Mgp_c^Gy%4}H z1Qa(FcE&SJ=*o0>0n_aPOy4Fk)ft6=l3n=IlWA=arjGc`#lstEFbqr?jYtd1h#uJ92gF98{=-Hh z5@g}W6gWr)v%X9<5yhOB(S#s0VhD(V>F&8OjOu=ZEn86ZFA3Wc4EiwSuYW9W>t- zH0x#%#OL96U}p!@tB28`I}v$FG*vhrZr{&T2$-~+Y1(!$gu&oFP`ZYxmx)L|MkyfM z?S>KiDAnA+bl^Nw7~lt`RT-FeFmyc!vjRHXAot$|V(&5Sc^4fFYPb&5NjgC_xF*-;k`zI;D2bk@Lv)O4aaF2B)u=kPpa7~v<*6E1 zXMe8Bb7=&PqR}*xCeh0@k@nCOT1IPWA+4sjsSi!2*Qp;3pn=q%wvnQBw4OH5R?4FB z^a`a@Z<Pc^qi+0mH zbb$8LK3Ys^)Pr853>r&&X*tcK1vHCh(>R(&n`sHXOWSEa&7rBZlvdIT>P16nI1Qy? zG=^5uL3*G3sUo!`mmf8xk13oAG4ns^EBcboQdx?k$MjeFhQ6ln=v(@bey5^bgny+( z>OeQ>CVfJGra)>=cc~+lqS6#gohX`es5L#LHWW#p(JiV%pVA#F$tAcr7vo0sfc`?K z=uZ?z!PJC8=|0_~t}cqFF4UQV=qlCY+f;^5)8FZDbe!6fA6MZDT#+ktB`(Y5xI7o; zXZQ#Dp32cL^ba~mb@>DOiSp?h5kH~E6hbjnhnrFvzDO77Sw2r6QE4v4xpaxT)93VW z`hp(O70RQ_^fSFk&vDr}YESLxI{k}&q~GX_J7z$j87{lSNBKcjb6{r5jPnjGmEj?J0-aa`p7= zGG6DvXT^Ur*e^nb-L*G2RMUgGuE#w1S>}T|{^@54jSHTEr={1}Lqp}i&w(Yxb|`F@ zQ28NT&Aq$AvuZ|bE~B0_;!3u?)FbxTOCbgJJYjVSHTLGdZR>p)%AKsS5^DA4cBnC7 z+}1Y9<80S2!F3sx+JvjPYm5w4>#jLn^Xu%dx+HN0&Ao3E9&8&hzJ6%p@ujjnoW_KE zIC)a7OIR1a%1epnW>iw+LJM-}$xYv;Pmj~7mvI%5`hd*J>aP(_g3=#W9U}^I}x%&@-z)kn3~Cs=BA^{wX)gO zXu&VpnagTzcWf{WRu_Z!%hXomS|P5Kc&_Lv5c*DA3uwvx3!eF_jV}|w;&9 zM>Dg?HO8YXCA<=2&y+vMaBJImekZP~qGP$drqu_u z8VRkadR^7dSVLZd)3lz%a)Kv;642%qc4p_cHS;8(JxtD?z~%Lb-`es-Z(l2W+rIk2 zSE%$yLRdGoHP!gSaLZRhdmd+xG|zr;Jgcf6T<7w-?~`CH9Fr(}TYL2&&KT3-)$U+( zY1)D3dUL_y#v=Ju2X=W2x^}k(8$0rJTTm_)VJ*1I<#opmhri}3t0UIE6!y%HOVZy=~HYPKPT~$g2=0?tuNVK<3a!(B!Ha6M(#P?+o{IM zW}$^Ee>E=Io?^?O+0oK;d28vcb?af<8wIUSqLr1@Po3{!8pmkqtkmeq3q5qCLhJh4 zNgs>hU6AzjovAANWiwjh&}}&e@~)8Q?@aM2ib|<)i1MO`8)`w?39iCR+)z_54bjav_rbG66 za-pY$N9BWKBdpp;=~kg2Ek)XHhrA z8xQm*ZgueefxOHPCOyRtFf+xZ428AyqEdODchC<~?OFGaRL-ykI`Q$jcH)l=;*qw% zOg){Z9)tOHk13hizhX{mLAfEk-g`vaBwO&=5HmtYEGw`cv3@8|wMQ6%PK7MZsYu1i zz46`?S1Ubu#UB0LFf;E=y)uWJdP&}@$&PFwj1588M&4 zchc`j&w3*7D6NnPh3TTOrLFEeM-h=zt3>0VH3NI>_Je#<=veq?f{$NxKlNQle&Oj= zK$8|euV|%#V#z~C2QKeY9k{$0W~o}!%(5*Ft|cju%vSl+%!=W=9=p`s>HM1Q+_x#_ zAXd*BVEqc=6OqH)TopCL+ndEh^6{#AJj1*rGcMT-lOdU>vS*r&k1l`YX1g9QLp&c8 zR19;cKd!$lZ8}$jp!*tf6@9#icdm3yvUKZ=OoY+`wQH7nYiV)M*|vBJ#0ypWZ1aN9 z;_5Ej#RP~K!A0tcq24ZJCDjyU^Yprut3jf-+)NwYLNaX@OA7@z)(f?>h2-tv*vl*t z)y1LdYUXREX*H|jui8l(4}(i3N%4hQH=L(U40-KW$S)IP*&#zz=Xs`?guPY}_RGai zts?B$`)NC}R_GvQtyqB|zdAL-rxzUEy%I{@b5gvC%RJIXWFBQeo}HuDUPlh}iLCzu zdzaP{nyZA>%Ay>k0v9@ui7{EW!6s01!(h$R^+lt(#` z8}=!&GnCe-(u+9N9rn99H&z~FbtB->hV$zP|KHc13M9?Puq55 zAl@S4-nImn9@Z&Oj}C%3Q_WrGxj}G-vsL}J%!FeI>D&sTEF3J=$Pyf^rY?4tSrRAXgl^>!ea|qwDf#)lhAYnHuZRrLDA*wADLWDa411Skhd?(hl`-6}KlO&f2pd!-S? zyHw~J<64?o50qx!t+LmcBY%Fbo#S{&vXNtVnSdxYeXW@(j-_%Bf_^;Fu~bU`>ZC~j z?$z>OK5Bbt_aVl?{b6cisP;0$igLZIt0Gj#d znyL6r&gL`SrDK-vI;gI$Hyy6Uk}TbPlC1Y7@PMhc)R+y1ljKYXCOJCkor{1oKT7h=Scr&AqWkpuah3t?)>Rzp=gam=UFP}+MTM4UJ>>}Z`cP5kAkE2J-KB@b!yYSAT=SIdWzrOa|1=^dNI zt~Dg~bE5IE97lU=nCP^ctQH>$r`C%b%OT4Vo?a(qN2FU-c0}jZ4{w@{p&V^>6Apvq z0x0KSs^ngN$#MMAJt(&yT2XF4E^0-68t}xXTgY*>b_q(2a@+e%9=RvimI7fZ7fR{5 zHC5?drgS<>3oqMU))h*ZRp>kBzQ;Jy0m+%+in{!cIc4k7a{Sg}IfY$S<93+Qj!BmX z=h6NRy%!R>JlEvp$CZ4@b1K(Whj)7SoxhTIrp~;)qOM8iFZ&0}5yE+2jk&2w$lUx` zWxi{6w6fRLPGqlp9Zv2{?ciNr`4vRVLm~eJ^296kyfY*dP0MA^bOZ7Mb$$0ta{sE8 zf?s|$weo-&ZWcS; zFVRr?lk`h=%`jE_pwaSOSU*=Y51NJ5@r&P|Wqjm{I_kYcX1oNV9Y`Qwh=SkpdJYA2 zlva?A`im&^UtU)f9BYN6`M*RkkMp&XCl?O+SCE&x=8#Jb%F32jYVb9@M2(#2{(fm4 zm3`P0UVc&332OnJZ(t*4S&+9}e%aIV#*lvt`Q~LhR0mN}(&32GcW|U0JjXT6*4L?f z)YfeS-M`wpdRt|}YHYh~2#v=Q*2h)7_ht^t-)ni0&$i65X#XG?&MY16edLq9RcT3% z?5+ML$x-}?S(h9>{th4cbNhXz!J(~9+{~v0_NptLWOo5+N)G0Fs zB$L{jWb$Wq;*|M$(5$n%8nVv*6SVk~I_~cC>UsyJTU;(xv>mxr`Iow%V}6NqtV6%R zMCSYe@9fGBTDy>Q#J{yX+$X!{0H}S)0q|E#{KH)V>+@AN>@8 ze8A1;|ImjvBAr!KE7fqj#ysy6l`o@W>e6|`NUn@ESGh7Su0~%ledq|c1U&pO=0AsP zsFc)-zPGl%tLC$+^(C`v$_uWHOgMSVmO_c5Cc0OgtLd(tR^K}{IvCk7=%UMp0cQ(R zPXf5LPvCNx(I(|EQ^qoxkz2)M(y{KCx>OPlQkSxNz|cualhcMybeBtO>P^Gk2UUTEZgPZwP7_xusx;yayH)W=R6j$f^+Lg_)x1W|HqyRLT`{rkGvL^3W0^l-TtsE*<3bAtb9O|sftu4QVd7jKw*4Bz8nO_hDa z91l}(;zUvQrahsnVstGPc#}izd_o*pM|!3*B(=FX4V*kSZCvUQk{@1z+m4$sGgD*!{QLIj zUr{M1F^J7UnJH?g2L6a-sa z8_cT>IS_TrAZ!`2pb3l#qK6sOnLsS43$lX9JO*`POVAX)1kFHLP~QWE`hqzIkw2jW z5DuZ>lePx8?h*@fpetC=%V6C@V!?hG7i_<1unWWmXQLgQ$0xA6i^0xQ!~)MQbPz0@ zWN>~Yv7pg1gF0{~SU<}k`UgY`%!gq?+-BnR4F;R<5DU@^87w=Cp#wG@G&mPeEZErF z;GNCnVf^8b5)E!_Cl=&)Qj||rI zhaDhtmO(vaN}~YAzg_|2G>nyC*lmM0TZsjpJqEqtRFDWqfz{LFHvVB8a8!Rr_fz{6>XMlgPzK?krG3`J)_=Sc?B zQi%oa2OEroLBaH|9XyXuU<|S)n1jB8eh5a;5%vYI4m0Qw1V2F-|E?nqy0st{bg$&# z7CwOimkb83B^FF>XwVzZG(fgD&;uC~yp(9rB@;CP3`emEQs7+B_bY=bsIMs={ON?K z1h2uk;1xtDNbPAb`8zlShVC#JP!xoK5kDIAA44o?M+RfJ6AMNyF&GJl8u9o9=3F+I zy9mWCe;Q9P2!}yITm>w>tI+nq;GG)8f{0*)2BV1uJ7yScj>fzP4z4!1g|QW!0%^fg zWK6IMa=}RiEqL!P#vgz9Jyg5kVpW3+n~4RNk_Sp@gQVc*9Rn|n3eN0sfciKCEDkbQG!I)gaJ;R-vG<7utK$v4Yter##(z7U3*JJy z1lzVbD1%SnVz$8tRZs)K`_m0Bkb^e%|}_I|<%LbxL?Q|Cr#Nak${2Cv_K= z_ZI1t|4`lbJ39Cun4%gx2c}Rax>^H&USNuPk*R1bQ@$2Vk;~Awh-qF7(-M3SZUk9v zrl2>NvVh_TnKG9$WzT22eS&F0Gp6a`Oh@K1^=^Xi&~3eysW!gfieg$820gS7i)Qjn zr~~75nes$J5uekW!Y~Zvsn0YA_zCSnFxK`Hrn|S$p2O5@0n@{E(BIE=aXXCfVv0V? zbROuko9Wa}w4-g(LZ*@D;ShxLz|XApOh3SBG>C4FW7?3;9=fxcsZcu8Swwko6I1*- zu-*uTcbF1CV%mO#>3cZ+dJWUm4bX+om;0Dvfl7Pf3@F+XKz1HoV(JgQSrSY=rUC$^ zA=+U~TiY=0@t}V%^h*TMK};2r&`_ZZ*d~E(GNMIe&mnL+7*WnZx@I!1orPh*XYY8X zj;&!dfoT`eZ8UUeGkrIP>BdB+!abS#zKjS{A!~~aLH80IWwm44Hx=2Ogdu_R6@8eR z^#yV0_w-C)Dud2ZBj5x|M_M60VEbeoB6%H-z<%9$IOqWRP>}4*lsb)RaC_)M=j-WA z&jTGnBHtW1>IeOf7~5AdZ0IwxD^rVZh`2j~0WJ+dKm(Z?PDa1p82=miv!Vx5{St}@ znOHC!22z;50>iCS;H(omyatD_fGr~X4jp%ZNKqL25v0fTM~V^Q_OU3=QRp`kLkL_3 znMHG%CNzd#II@iKUKPvq0N-n1XoDk|MmNCt&)9)THZ!e0h=@^O-<<-xrTD%I1Wuyp z-b3nvsuxic7nqVT##cW;imyTU3feQ#eidVX8V<5SU;!MWZZ0YWvlg=lpL;T3XDi4Y zKnCAr`UQnp3vC;uAfBLNhrZ1;Vhd9b7<_Igls;r?j|$JajADaq>k>Euo~&RR2jl~} z1uNlfIr;%fn0B|0gY+S$l0ec;rg9)Z8l(zeNBd$7&Bw6&E`~yEu4cLeosu3e(s>3c z0fL}3ZxN;%484C0X@t^R$O~@=vA3AEZ9}a9*~ml{WMKOHAcBlUXED`1jDo^vTl9-O z0^-2&qmThdAj`rGiAHTr$w2`(2YFyu1XDX8}*`bw19e3UrM1qw1rmF8d^(=HqmApMX%FndYLBCc6x(0 z(qs=!p{Otu=op#e(bbvBxKMkkuG>4Ya zYqXCR(=3`xQ)wEFq=~eFcF>zNn>;ju7Sd8$LOp2!4W@xKh(^$II!K4890gM}6{i>J zI(Zt>uk;K3o&H3Bq%%~EV(0<=mA;}s)7SJDI!phgXE+c42PIP*`iMTJ8}xe$qbT~6 z+EQUELM^Es#nMS?PIsvVHKW^flgiR9`W@xxe4LkqxDI_zU(&nu1vQ|$6hYy1hd!f@ z)QLJ!dk@v7%M{9=P*FNXkLX)EMy;p_2Xk>Q!KJt)7v`c|jG2ia(l=Cs{z2c-IjYLp z^f$Un*XU>ZiRw{(ilY#2M9=bjbdd`11v*cKxFCN(?^6=pryuAKbdNryD|Cszrx&O! zx26P&r-C{3gdWq6blQ7jW61xy8uC&>>P!VFh>p?`YD$Upf2t2pV1fKw>%$XRAPp)1 zQx%f$|F1?ozg;B%wi*fbFOn*F+wql&t&&4OZ*E%V(89xapE-2(*qES0Z=dSW%$wP! zsdvkg{NAL00`_|JI{W&gB4k2j@J z{NbuRE9hvky!>Vj-+`&Dx*EpCpZTI&|D*TA_?bMWU4_=;a>0!nR5kxn3w7i?1fA|D zRHu3zq8irauW~hO>h2xtaZPp_(;_μ|w(`4>dq$A!v!vx^s0*X#3hKBb0^(u+{R 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 diff --git a/RenX.Core/RenX_Plugin.cpp b/RenX.Core/RenX_Plugin.cpp index 7f50a47..c9fcb44 100644 --- a/RenX.Core/RenX_Plugin.cpp +++ b/RenX.Core/RenX_Plugin.cpp @@ -250,6 +250,16 @@ void RenX::Plugin::RenX_OnVehicleCrate(Server *, const PlayerInfo *, const Jupit return; } +void RenX::Plugin::RenX_OnTSVehicleCrate(Server *, const PlayerInfo *, const Jupiter::ReadableString &) +{ + return; +} + +void RenX::Plugin::RenX_OnRAVehicleCrate(Server *, const PlayerInfo *, const Jupiter::ReadableString &) +{ + return; +} + void RenX::Plugin::RenX_OnDeathCrate(Server *, const PlayerInfo *) { return; @@ -450,6 +460,11 @@ void RenX::Plugin::RenX_OnMapLoad(Server *, const Jupiter::ReadableString &) return; } +void RenX::Plugin::RenX_OnMapStart(Server *, const Jupiter::ReadableString &) +{ + return; +} + void RenX::Plugin::RenX_OnMap(Server *, const Jupiter::ReadableString &) { return; diff --git a/RenX.Core/RenX_Plugin.h b/RenX.Core/RenX_Plugin.h index 4bb0be6..c36c62a 100644 --- a/RenX.Core/RenX_Plugin.h +++ b/RenX.Core/RenX_Plugin.h @@ -90,6 +90,8 @@ namespace RenX virtual void RenX_OnSpawn(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &character); virtual void RenX_OnBotJoin(Server *server, const PlayerInfo *player); virtual void RenX_OnVehicleCrate(Server *server, const PlayerInfo *owner, const Jupiter::ReadableString &vehicle); + virtual void RenX_OnTSVehicleCrate(Server *server, const PlayerInfo *owner, const Jupiter::ReadableString &vehicle); + virtual void RenX_OnRAVehicleCrate(Server *server, const PlayerInfo *owner, const Jupiter::ReadableString &vehicle); virtual void RenX_OnDeathCrate(Server *server, const PlayerInfo *player); virtual void RenX_OnMoneyCrate(Server *server, const PlayerInfo *player, int amount); virtual void RenX_OnCharacterCrate(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &character); @@ -138,6 +140,7 @@ namespace RenX /** Map Type Logs */ virtual void RenX_OnMapChange(Server *server, const Jupiter::ReadableString &map, bool seamless); virtual void RenX_OnMapLoad(Server *server, const Jupiter::ReadableString &map); + virtual void RenX_OnMapStart(Server *server, const Jupiter::ReadableString &map); virtual void RenX_OnMap(Server *server, const Jupiter::ReadableString &raw); /** Demo Type Logs */ diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 72da48b..b45e07d 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -1466,6 +1466,20 @@ 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("tsvehicle")) + { + Jupiter::ReferenceString vehicle = buff.getToken(3, RenX::DelimC); + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(5, RenX::DelimC)); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnVehicleCrate(this, player, vehicle); + } + else if (type.equals("ravehicle")) + { + Jupiter::ReferenceString vehicle = buff.getToken(3, RenX::DelimC); + RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(5, RenX::DelimC)); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnVehicleCrate(this, player, vehicle); + } else if (type.equals("death") || type.equals("suicide")) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); @@ -2156,6 +2170,14 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnMapLoad(this, map); } + else if (subHeader.equals("Start;")) + { + // Map + Jupiter::ReferenceString map = buff.getToken(2, RenX::DelimC); + this->map = map; + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnMapStart(this, map); + } else { Jupiter::ReferenceString raw = buff.gotoToken(1, RenX::DelimC); diff --git a/RenX.Logging/RenX_Logging.cpp b/RenX.Logging/RenX_Logging.cpp index 646287d..5d1d405 100644 --- a/RenX.Logging/RenX_Logging.cpp +++ b/RenX.Logging/RenX_Logging.cpp @@ -57,7 +57,9 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::vehicleSpawnPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VehicleSpawnPublic"), true); 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::vehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VehicleCratePublic"), RenX_LoggingPlugin::vehicleCratePublic); + RenX_LoggingPlugin::TSVehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("TSVehicleCratePublic"), RenX_LoggingPlugin::vehicleCratePublic); + RenX_LoggingPlugin::RAVehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("RAVehicleCratePublic"), RenX_LoggingPlugin::vehicleCratePublic); 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); @@ -86,6 +88,7 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::votePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VotePublic"), false); RenX_LoggingPlugin::mapChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MapChangePublic"), true); RenX_LoggingPlugin::mapLoadPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MapLoadPublic"), true); + RenX_LoggingPlugin::mapStartPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MapStartPublic"), true); RenX_LoggingPlugin::mapPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MapPublic"), false); RenX_LoggingPlugin::demoRecordPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DemoRecordPublic"), true); RenX_LoggingPlugin::demoRecordStopPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DemoRecordStopPublic"), true); @@ -230,6 +233,12 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::vehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VehicleCrateFormat"), Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a %.*s vehicle crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + RenX_LoggingPlugin::TSVehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TSVehicleCrateFormat"), + RenX_LoggingPlugin::vehicleCrateFmt); + + RenX_LoggingPlugin::RAVehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RAVehicleCrateFormat"), + RenX_LoggingPlugin::vehicleCrateFmt); + RenX_LoggingPlugin::deathCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DeathCrateFormat"), Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "12death" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); @@ -329,6 +338,9 @@ void RenX_LoggingPlugin::init() RenX_LoggingPlugin::mapLoadFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MapLoadFormat"), Jupiter::StringS::Format(IRCCOLOR "03%.*s loaded.", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + RenX_LoggingPlugin::mapStartFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MapStartFormat"), + Jupiter::StringS::Format(IRCCOLOR "03%.*s started.", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + RenX_LoggingPlugin::mapFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MapFormat"), Jupiter::StringS::Format(IRCCOLOR "06[Map]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); @@ -404,6 +416,8 @@ void RenX_LoggingPlugin::init() RenX::sanitizeTags(spawnFmt); RenX::sanitizeTags(botJoinFmt); RenX::sanitizeTags(vehicleCrateFmt); + RenX::sanitizeTags(TSVehicleCrateFmt); + RenX::sanitizeTags(RAVehicleCrateFmt); RenX::sanitizeTags(deathCrateFmt); RenX::sanitizeTags(moneyCrateFmt); RenX::sanitizeTags(characterCrateFmt); @@ -440,6 +454,7 @@ void RenX_LoggingPlugin::init() RenX::sanitizeTags(voteFmt); RenX::sanitizeTags(mapChangeFmt); RenX::sanitizeTags(mapLoadFmt); + RenX::sanitizeTags(mapStartFmt); RenX::sanitizeTags(mapFmt); RenX::sanitizeTags(demoRecordFmt); RenX::sanitizeTags(rconDemoRecordFmt); @@ -1115,6 +1130,40 @@ void RenX_LoggingPlugin::RenX_OnVehicleCrate(RenX::Server *server, const RenX::P } } +void RenX_LoggingPlugin::RenX_OnTSVehicleCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &vehicle) +{ + logFuncType func; + if (RenX_LoggingPlugin::TSVehicleCratePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->TSVehicleCrateFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + msg.replace(RenX::tags->INTERNAL_OBJECT_TAG, RenX::translateName(vehicle)); + (server->*func)(msg); + } +} + +void RenX_LoggingPlugin::RenX_OnRAVehicleCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &vehicle) +{ + logFuncType func; + if (RenX_LoggingPlugin::RAVehicleCratePublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->RAVehicleCrateFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server, player); + msg.replace(RenX::tags->INTERNAL_OBJECT_TAG, RenX::translateName(vehicle)); + (server->*func)(msg); + } +} + void RenX_LoggingPlugin::RenX_OnDeathCrate(RenX::Server *server, const RenX::PlayerInfo *player) { logFuncType func; @@ -1723,6 +1772,23 @@ void RenX_LoggingPlugin::RenX_OnMapLoad(RenX::Server *server, const Jupiter::Rea } } +void RenX_LoggingPlugin::RenX_OnMapStart(RenX::Server *server, const Jupiter::ReadableString &map) +{ + logFuncType func; + if (RenX_LoggingPlugin::mapStartPublic) + func = &RenX::Server::sendLogChan; + else + func = &RenX::Server::sendAdmChan; + + Jupiter::String msg = this->mapStartFmt; + if (msg.isEmpty() == false) + { + RenX::processTags(msg, server); + msg.replace(RenX::tags->INTERNAL_MESSAGE_TAG, map); + (server->*func)(msg); + } +} + void RenX_LoggingPlugin::RenX_OnMap(RenX::Server *server, const Jupiter::ReadableString &raw) { logFuncType func; diff --git a/RenX.Logging/RenX_Logging.h b/RenX.Logging/RenX_Logging.h index 6355cef..b1935f9 100644 --- a/RenX.Logging/RenX_Logging.h +++ b/RenX.Logging/RenX_Logging.h @@ -61,6 +61,8 @@ public: // RenX::Plugin void RenX_OnSpawn(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &character) override; void RenX_OnBotJoin(RenX::Server *server, const RenX::PlayerInfo *player) override; void RenX_OnVehicleCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &vehicle) override; + void RenX_OnTSVehicleCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &vehicle) override; + void RenX_OnRAVehicleCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &vehicle) override; void RenX_OnDeathCrate(RenX::Server *server, const RenX::PlayerInfo *player) override; void RenX_OnMoneyCrate(RenX::Server *server, const RenX::PlayerInfo *player, int amount) override; void RenX_OnCharacterCrate(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &character) override; @@ -94,6 +96,7 @@ public: // RenX::Plugin void RenX_OnMapChange(RenX::Server *server, const Jupiter::ReadableString &map, bool seamless) override; void RenX_OnMapLoad(RenX::Server *server, const Jupiter::ReadableString &map) override; + void RenX_OnMapStart(RenX::Server *server, const Jupiter::ReadableString &map) override; void RenX_OnMap(RenX::Server *server, const Jupiter::ReadableString &raw) override; void RenX_OnDemoRecord(RenX::Server *server, const RenX::PlayerInfo *player) override; @@ -151,6 +154,8 @@ private: unsigned int spawnPublic : 1; unsigned int botJoinPublic : 1; unsigned int vehicleCratePublic : 1; + unsigned int TSVehicleCratePublic : 1; + unsigned int RAVehicleCratePublic : 1; unsigned int deathCratePublic : 1; unsigned int moneyCratePublic : 1; unsigned int characterCratePublic : 1; @@ -179,6 +184,7 @@ private: unsigned int votePublic : 1; unsigned int mapChangePublic : 1; unsigned int mapLoadPublic : 1; + unsigned int mapStartPublic : 1; unsigned int mapPublic : 1; unsigned int demoRecordPublic : 1; unsigned int demoRecordStopPublic : 1; @@ -232,6 +238,8 @@ private: Jupiter::StringS spawnFmt; Jupiter::StringS botJoinFmt; Jupiter::StringS vehicleCrateFmt; + Jupiter::StringS TSVehicleCrateFmt; + Jupiter::StringS RAVehicleCrateFmt; Jupiter::StringS deathCrateFmt; Jupiter::StringS moneyCrateFmt; Jupiter::StringS characterCrateFmt; @@ -265,6 +273,7 @@ private: Jupiter::StringS voteFmt; Jupiter::StringS mapChangeFmt; Jupiter::StringS mapLoadFmt; + Jupiter::StringS mapStartFmt; Jupiter::StringS mapFmt; Jupiter::StringS demoRecordFmt, rconDemoRecordFmt; Jupiter::StringS demoRecordStopFmt;