From 831d49cc201cc5ca78c638c1b670eda545de3a75 Mon Sep 17 00:00:00 2001 From: Calvin Balke Date: Sat, 28 Mar 2015 21:04:07 -0700 Subject: [PATCH] Added a working setMaskBits and a cloaking test command --- Mod Sources/TSExtension/TSExtension.suo | Bin 32768 -> 47616 bytes .../TSExtension/include/DXAPI/ShapeBase.h | 4 +++- .../TSExtension/include/DXConCmds.h | 1 + .../TSExtension/source/DXAPI/ShapeBase.cpp | 16 ++++++++++++++-- .../TSExtension/source/DXConCmds.cpp | 11 +++++++++++ .../TSExtension/source/dllmain.cpp | 2 +- 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Mod Sources/TSExtension/TSExtension.suo b/Mod Sources/TSExtension/TSExtension.suo index 20ab5cb740ba5a0f001650337da719b1db64391b..5b52ddb8a779b602364cd5ee085753f445e7c150 100644 GIT binary patch literal 47616 zcmeHQ349bqy6-5+je;D40^v|WNXW?zlF1~IBN9yjk6G5qq>~Jp%*2@q1_Yn_aNjB- zuC9m|>wSQ$3+u7EsE8Nf0S|qyqU*7%t1P&>y1MK>mG}R5cQIFAGlV$dS@Zj*s=BKC ztFNlQufF=Kx_al1ULV}CVc>^SoSP;cEq#BWi*!uX^$dgwiaSn{jzZvQ!1o6Z98fPx z5`sUvc2oo3p{yOzcmn|)0BrA0fG&W}fbM{ufSv#}y>u*~7oay_5a4(~A3$F~ zKR|!L34j5B69IXElK_JOLjak85rCn9VSwR)lL4m!P63ProCX*L7!Ak*i~(c=asXoi zxqt#dK7f6&5dL_;IKTwJB)~+#WWY4Q6u?x#=>X;@6d~*Y6a$=q5Ufan*|uhG=Y;dVzR$ZegEC_?D-Ny#7z5Hm)U#izMW{q-Q4?(b_k$FQu2Y-0 zDSeoEt0cD+k{ZyqUie|OUr3TsCUHGv@xT$%Q5oa|Q3i|bN^%DN$y;<)z}tjcAkL6h z1{rnX!4*4hFz}P#$d4?8oqH&^JMs@s@B!O|{7+dRWB|)ZIY9mw`6vTKm~w!$Qw9kB zXBx{R@{s>2TPOp_|CANcGC=S@d4%$S_mTf82Pgx`|C9ri0px$Clb6W<0tbD{0LlW& z0LCc?C<_!c z-hjWt?P+k=$zw9-$-xlfQ*(2&mEV}m;$~mCIVex{%gy1S+cze&qPg1V^~{nNR|Ohm z|J3T7{My3W@wK_RHHA6ue0L`WnZVegx!mgs210?_aP~ZJsM+nS3^&(!1KCOu>g3?T zKvf{%oA3441TG3?JKbS-mA5IBUE%fn-PJx>iIlX2Wq-(9?e%%Xi?b_O(h#nAS0GjnPOOnK zG5!anX2@{LZQfmlD;&$hi2D`E9)M42Ko_}AncEtUy=gT-r9&N6>rfuI)QHlRVr20t zCCh|VZGmJQ2g%CPJ8`udC9lJeW6*ru5e60YN^a|tWn%nc|E2t=Z+(Z_-hH%;@%SAm zgN!mXK)MA`YU(7EZANZn3gdrwJd84uE*?MIjBVHiyk3-mZD;0A0e;ew39w5)b!ajE z$Kz*9`O%}I`xCMoI^b98pU<<4pSpsB9UsmMYN>&R0JWew6WS{^p=Pv!53x#IYesok z7n#twbD)8f3yKkM#E&&J9`PBd$rAXB@I1!Zi+o70MO>1u1ti-u4_C=ZFGtGObL72v zcPQ85pJf);n$awaX_|5WTa4DLM*C9hFm~+!?03Q$=ZvIK=Mk}Z{N><1_A1Up=4-qV zfFw5J!Z9h}=Nz?4D?mJcefbkz5>ay1F982hx8xYcI*3ixkM+l8!T(~62!fBuaS=%^ zW=1kND6H@sWg$nCXo)yU zMgPm72F!VpUHVTz-j6f^F$X-h5aTe%Y87{+jpr#d7!8quHw^fxLvRje7yoeNb!gAy z{H+|6`V=}T?cIueY*uEa>fD@G6IEB6tjw`4h6YrG&_tBafv^+$&;-O8&Qg2_`f(Q0 z3t^k#wG!md#kf#{D-MJU5p&?T45LX6xH}f_9A)&4#>x>ZHcu>fFmGqYZq%A(o2*!h zTJwq7uocOuYic;OGc46)9BU~Xz0RTZH)>xF>4O0klCBDU#3&9Ye;w zwcr`{iV@wuD;mA>*)ulmUbo};d*&ZITk5%Opzqr*!{=Ok;J^0o*m5_g^sw)I(&yw| z4-X$+_SnZCE<3flkz^?D(E8t5nUZurO4By82cubq{`G7{8*2eK2|lLKZ$G7F^9+O) zmfTW<|DY5-lVK`t#YX8a^ucq`XDSpMF7pmVZ;8y(^qysup7<<2j}A53HEYF;(>5-D zX4VaPf9?PAlV|;2O_8Jz!{6Uo{P@mZ4-J%V-*)VQ=fw4BpDjY*9JDpLd#Z_~;cTTG zb?SkYyBKnYvM8kJ{W4^6{3sM%+QcyIpNegdI*r}&Cwlx9a-4cl6Usu(k1efAdya+X zj`r6P$U-}#UHm5_@3*XUxVaeZiB;`kHRvrWuc%s=k=Ci+%YTf&3SQ!-i=-HbqUk>a z+C`1hyZxZqhtiayG?e|SMcDW$YRaMF9|5_|6@Uh4fE@W7&=WWZq`b~m=6bmbBI@9g znxch+nrNML&JIduNsDprDkF_rVYuC!+8$;jM1C;SyFt9-g#AI(fw*qwXCaZg4P7k1RiPBk zsIBn9^`M~AFO79@%s*mUL4B(Ee>DHiLm$kHD~0*pv8h;p%AhErPR}}sP1TQOli%l#p`>by1Sfi7T}2n>orqQTKN7SKxtz*?r;Sx!LHb~Ztl?3MalPvv|Xkz|tR{tE6@&usg#7!B`#?D2j7{_oYk)g5uSz$$#@kxBh6NfiHQqd?V40cei2BT^~EIGs|B@h)`g*mw;p zm&Qo9LYyF|_VYU)zir9q_3z*1?KE@Kt?M`=7la5uDOys=OxZ!0T0F@$H-z;f*V%z; zIT+3?cYDf$a$O+ka>}8GaG=TMaEIjbK#l8c*(W0?;@LGm#YA_^6o0eNH!aCRoP%od zLH?`DZ7>e%OvUUADsSJ`KvFgZoc}aYwtN~Oy_T$fnWM-hTkB#O;AohmDR{9 z>5(*}KQd=`VI-_at2Lolh!z#1`-AJAx}nb1_tm-ypSf=>`DFt~v*@~DI9AxJyUw;K zZ63YOyYUC7U$6hGBd>l9)Jx}7p8Q(A=fAh!{K|Ph+cWy@-qGW~s0BO2CRef-C9;3( zkH4b%)bW`txNyPVEB5qSGv=wM>poe!^@@_+phtE&&nc>yk?m<} zTDtUNXHH3OQDO18EG&ZvjuC!jZ-y98j7Ba>?(~))XQGDV?JxDxl!;RtHtyK4^~TKe zALy}cc~Q?n z!!P@$6DSnDK=@Xp>Xx*ozYKg!JDqCXjJ36>JA&A@*NlF=Ci|urN{6q1QQdK*DJmI ze<|emVr9}>2b->pwx(5q>yK>rJAU4{@Wv@$e);IL(=wL-YEOSX>aBG2b!pxH5p9z6 z&R*@?+p_Tco^MUb?)&AVU-#9U@ax%Y^U!~ccKa>2q~B@;6qa;#JanObSmzvD*iP~B z8A#)*h}bVejo2f(x;BkE{hRlyt~{3+txW&- z^#6nZvg!Z3YRZ$>1pajE;IqZTkr24_LA9zXTJNj8q_xYhSN)Bcgs9@O1`FDYAWnVC zvVcdLwD{_G*KWD({7$dbuDq~!$1dY^Dju^=bx%iR&Ks*xs&igpZKG_Zb@E9GHXlvP z3Djg(Dq2j)RaL3&F%I}+!d}0}*IYw2r#Rp*ZmbDq*T*P2`Gpg+3Q7ucvnD#miTKIbSztqC3;oqo*Z-Rfb7QPk!ZCaT2 zkK48Io$&7h+^xlp%8|AckD_8X& zwer!%^X;y#9IE}p%Kpq9-)4^MznnKs1W>M-8|pJet*~8bLAfYc}LDF zy?Kxk6>VF7{k4%H&tIND|Lap)TBe_JdtJ+0zGRH4R{f8BZRXJbVjA5nuSi>ifarf# z`1wAknM(yf*Z%I%9%_Yuycu$&rGkGg?xVg-XN5o4Vh2Jh?_ZGij}+{Z)VBRsZ~Uv5 zwvO9Wuxsy^JMZ{pS@X+VOG~+)8ZAT^){2|pElr&N9X|CVej%~4ZsDWvemA7+U-x}+ z;@+-nYm#9+jS`*t>)|VZv^hjoo3_k;XIORFqgCtwcJDKtKVG>{&jgxK=g}9QZYB9` zW@9mbqtZxsj9*t%-)!LihA^h^VnyTSy@Nj+{OJ{rhWySomv}zAE`=tHu8yR``nv+{ z4#C1w&^k=e`fU)qww>7h)LG`w6IK;mSPx2e6Od6qh#m9w_ZO(lpzexV-lnC|mx$`Q z3!7W1B(2}B@w}z4m#A+gsrxLV*W6QS-S}2Cj|8x@Q&RZNcVMN0e>3p^ z#Wwxs8ZhgB44yR#V5TQ&=oIgH{J*DN&|AMtMfSG7jENmPV*9(`?>7cr{q`zpV~0JL zc3HD;zvB`TC3>RpH9`%%_Cmk@zOdOdSA4o=aPWdxC%swt&Ae|G+qHT{Dr0ln>Tj{_ zuQ$S|Qgvv!@S(1sKa=~^oE@R7-XDJz-^LYfFZ>9-@uAZ=VGUC=WrxeyKVSgoFT50X#pN_n&1G@IY|HfKXpW$;$ zC;z=+WN>@^f=f5PQE1n4uF~Ir=C67ZuwJU3J0O4CuPaKg8oSAJ&4SvbO%RWzt^CuQ zV+aXYFC8=Y=l$0<7yfJa6E|IZ%b#xhAQ_vH+VblE^X-s+7j~n>?#o<1Cadn@U71~H zoOky%@9e2M!@dRETK-tBf5eQo(RFJSz7PpJwM1+D*5eN~WNPVl<)0UM?an{)lqYM2 z)$us~5HCw<7rz^MKhU0KO~0l7pLG4p!2PL)UvK|ndg%Yg{2#wx=B1(G+#8F!55DH? zRYk{7n6t)y@5eaYF8RMw;=6&|&lvk|b-m<#c-iJ&r_DRD_J4M6+VIZxx_kPxrdPb} z?UH_VUvE6^!F`|Z-%|PXrR5JzZa#PZfsJ{4KzL1Awl*_W#5;!|J6$%XbX=GJg{BTZ}cX^h?N(w zSaaRy)0&sg>e6q)H#Q{Ti|v$taW-l`&WmB|zxeQj_ZN&=RI+35s_9FXe6_j*cw5Ls z;VTRu_h%)4c`})q6Z&r{GTD_s98v7rKk{wtzZ!<;iOol5Wff^o1h#7tEBf=4oo(XI zM4$AZj>{Y+?9zV*^6u6iWraUqd9s#S$0PnJxIPtN7k>vVa(}5kYgfDM|A+owi>S)< zmH&zMZ}C*QY?bNmPPxKe5G_6w{xHCBEq*fm zQvj!G@lo(k1B}+pM-pq0aLX6)8L;Dn6AYg@QVRXKnb7}K-&L5 zxb`~#_62X0-F@Akonx)W!SvOCjQQXAT!bO{gATm= z?9HDpS~;a#zh{rPv6Iz${IRq@WpIV2IEnG6Gx+NZO#oZrFHpYdA*6Mp&+)GamuCRT zuZcMluXG3gziF4P@pEOx*a5$SSI7$EoRO5{fd3mUYK1?~;tb$a@XrJ8T^j!Mo&Op4 z|HRpkIs)E!uc)|smw7#;@A{81{fYZ1hdUqN zu;icJZmB(g{rADoetMxf%@Ijtz5dJ-oy{EOFJ&L+H1y5#inJ3T|MqDSEBRMoJ^zFi z1iBo+F8-5}kiP{s=AWET5;q-!mM#)%w<-Udk$)YL!&&3E9Dfhuwp;%f1Mgi5cGw})R{t|w|8Ko>jowXL z`i=SD4)v-u*m-N_9ov@g*gCD#@{Y$`IckHIG|)Ol65bo_u>Q=f$7;Q8zItEdzeE4( zzUIkI7wrH0OV1hCTl(rxX8aRBgRGY>F8l5`^0A)Iv%Xq4;=4;{lo?YT+d0~!{-C#e zLT&e^h914I8R+bJu_`NzzCmexbm1;-HzUTr*SZ{IJq8h;9`_rE1Q{!Bz&iTO_z zY`8|>KjxPc7GeICqkR20w%>`^X&A}5ANpettl=iU$9iaok?9@g6**gNhVEHvhr3LCx7Y03 zDDn7{ZPDcNca=sA!KZko+r`07MR}zq;|of1vmE0K^0RVtojF-WI4m_QC#NW<<%6LlCU2R!HrKB_bVL9kes*u}6AzS%;EUjwm#^>bVOt>uN=vy0y z!f9t>Mb3naKmOL_RIKzQWwzJfAP4nM@--o4YkIXxibwU430_JsO0@o!!kJ?`(vlG6 zjA&P7y}L=~IdaJyqIQ!Y=8bF!7t29=hi{UYv~HX;5B4_Ojk7DA8wd2@bW}gs#~bk5Z=*NUnI?QC$nUO^ zD{!7B>GH|;={j7ed8VkX#0rKoccYw2W2JQmEcGq+`s?P&^<@=rW!~@^&DAL>_#8^fG0Cbej>F6@k;&i; z*NhY>OG)2%tPw4C_>{3mceviwSndu7y)8-TVvbu5f6=HXhCH%gPFhoRwu?!2yoEzO zullQ_#PxxjKS%gPM4jm`UqqpWuM#5*bFwsWa~R>?B<2X3kqc^tuTss8G^*>j*@XaK z>Tn)0Q(lderjKEj>Jy?a z^E7!nXByiL)DlMi6RF_IZ>(w)|pi---+ z_Qb@RbdE=T)1LGcj5gM!Q$lm7avrI+5bG)sIh==i%9QLPPpsJ_MH81GPWXxPPNW>R zZ=n33RwF^3@J;AX>*i0m9S5){m1~LwxG=? z-K4)+oo5=U@-dDf%mP69lb*8L#Tqt$P2&|GwX zT9!Co(`Ehk0km!J6erlJ-+LBk8R5Jkl%&0k)_NQ!H1?jLX2wH&gMCw4^N`sah3t|2 z06(*&z==A$2zCn}e795s`$hcQHMDBf!Ky+1&LyStb_-5hOZ(bX`Px{MwBdTr`hIMtiOy>si-gbyBxxv0@#DARRK1n& L|NiKX{2KT_L^Fz+ delta 1866 zcmY+EZBSHI7{~9~y?435g1ewAnAXZT(~bkOtO84dEU<{MO~Q;JrRWOEtD@=pvJmWs zqK!4p#54NA>5DanDcQo!oasxJesY>26MMx<(=sC?Ta&e5`=7g)$#&+q&;NPOb6)N_ z&pE-cE*R8>!a8X>8jVg5)x@!Waci=xJ?`1Q4@a0@5Cqq1rBi%{i6S&v%WV{#CDNo+ zC_cvnPJ@j-Pn!%+ihKZi)nK!qKs+1pKn|<}ECtIzF31Dg{4J0_2Lb z2Hw_M*1@g^^bGMQzFJo`dCA<)<9uXwLAw-;!MD2UQK1DV$!9Q z%F7W<&>9SB5EF^inNlgScr{pTCA(;(aLQ`BAm&Kv2zHP^)g$wBOi@$HZT)YG=2B?> zOAzj09)ob1?9Tk**$y3@w4_lmbCG$udR$#Nyb`Da!AT!k`l$5mG1@U;p|QD^M|29k zk+z7&)2w_Nx?;&9SNeP!%apMinJ#9|R)XpK7#me0^WvD4iliX+Xd8vfjdXsyfd=2Y zgwamL`Eam1g=UH_@Uy2C|KnZEU`MheksdzL$(*#?8ej!<-#Q}B;uBe8pDPu?5h?Om zHra~O^mQW%IE^ADm=V;Qx8Qj9pgeX8OVq+J(#BP-ijQQnt7th+xAy01Ds&*1re3K-R(H%6bhA<993#`=1j;^|lgtFh_^9}`y7-|S z|8F?aAh`b@Dz%iwa`B&ao)&FmG2Szr_RaPJ(y9DR3GLf_K3g@E!<(AutRS z@IE*TJ^<&yG+oPU3|xl#99-cMjC>XL3-G1pe+~N$_*V0;!F~t6*Zk|SH^7gYe+%{} z@U!Os0(%Gis`*uTI7&5yu71b=J(6t^JCtumGG5ycEh z^|AC7j*9u3qxgzOQYDt9x?1sm24{@?HC6E_Q9pgNdlw&454sn+v z>tmx&z`IBOdXLOsZ2nNGeZvsrN~E5z2#?Do+)45`cx3*rRm^1l1A(C$_)rcJ^%y39 zBR;MWaeh(xP)fMbs7vCNt^;~7O-W5 void serverProcessReplacement(unsigned int timeDelta) ; +bool conShapeBaseSetCloakValue(Linker::SimObject *obj, S32 argc, const char* argv[]); const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[]); // Returns the address of an object in memory const char* conGetAddress(Linker::SimObject *obj, S32 argc, const char *argv[]); diff --git a/Mod Sources/TSExtension/TSExtension/source/DXAPI/ShapeBase.cpp b/Mod Sources/TSExtension/TSExtension/source/DXAPI/ShapeBase.cpp index 6b17d7e..05bfc33 100644 --- a/Mod Sources/TSExtension/TSExtension/source/DXAPI/ShapeBase.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/DXAPI/ShapeBase.cpp @@ -1,9 +1,21 @@ #include - +#define CloakMask 0x40 namespace DX { ShapeBase::ShapeBase(unsigned int obj) : GameBase(obj), - heat_level(*(float*)(obj + 1972)) + heat_level(*(float*)(obj + 1972)), cloak_level(*(float*)(obj+0x810)), cloaked(*(bool*)(obj+0x80D)) { } + void ShapeBase::setMaskBits(int value){ + unsigned int addr=this->base_pointer_value; + unsigned int bits=value; + unsigned int funcaddr=0x585BE0; + __asm { + mov eax,bits + push eax + mov ecx,addr + mov eax,funcaddr + call eax + }; + } } \ No newline at end of file diff --git a/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp b/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp index 06fb5a7..18e29f1 100644 --- a/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/DXConCmds.cpp @@ -42,7 +42,18 @@ const char *conGetAddress(Linker::SimObject *obj, S32 argc, const char *argv[]) sprintf(result, "%x", obj); return result; } +bool conShapeBaseSetCloakValue(Linker::SimObject *obj, S32 argc, const char* argv[]) +{ + DX::ShapeBase operand = DX::ShapeBase((unsigned int)obj); + operand.cloaked=dAtob(argv[2]); + if (operand.cloaked==true) { + operand.cloak_level=atof(argv[3]); + } else { + operand.cloak_level=atof(argv[3]); + } + operand.setMaskBits(0x40); +} bool conPlayerGetJumpingState(Linker::SimObject *obj, S32 argc, const char* argv[]) { DX::Player operand = DX::Player((unsigned int)obj); diff --git a/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp b/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp index 1348061..45a4b51 100644 --- a/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp +++ b/Mod Sources/TSExtension/TSExtension/source/dllmain.cpp @@ -34,7 +34,7 @@ extern "C" Con::addMethodB("Player", "isjumping", &conPlayerGetJumpingState,"Returns whether or not the player is jumping", 2, 2); Con::addMethodB("Player", "isjetting", &conPlayerGetJettingState,"Returns whether or not the player is jetting", 2, 2); Con::addMethodB("GameConnection", "setheat", &conGameConnectionSetHeatLevel,"Sets the heat level", 3, 3); - + Con::addMethodB("ShapeBase","setcloakvalue",&conShapeBaseSetCloakValue,"Sets the cloak value ex: setcloakvalue(1,0.5)",3,4); Con::addMethodB("GrenadeProjectile", "explode", &conProjectileExplode,"Explodes the given projectile", 5, 5); Con::addMethodB("GameBase","setProcessTicks",&conSetProcessTicks,"Sets the flag for processing ticks or not", 3, 3); Con::addMethodB("Projectile", "explode", &conProjectileExplode,"Explodes the given projectile", 5, 5);