From ac93b381e0e3fc15cd6868ede81f4aabec4ef91a Mon Sep 17 00:00:00 2001 From: Jackz Date: Mon, 4 Jan 2021 14:21:57 -0600 Subject: [PATCH] L4D2Tools: Add sm_model command to set survivor's model --- plugins/L4D2Tools.smx | Bin 7609 -> 9856 bytes scripting/L4D2Tools.sp | 81 +++++++++++++++++++++++++---------------- 2 files changed, 49 insertions(+), 32 deletions(-) diff --git a/plugins/L4D2Tools.smx b/plugins/L4D2Tools.smx index aee456d54673823e77fa70a0c286bf1eae817a8b..e1bd61619120c964c165a214b201ab1e0b53c7f9 100644 GIT binary patch literal 9856 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%0AC@5xO?jPwC0< z8{jN4;H!get=aU1giIb+CSn?cQhh`xl=dg3IQGF)L-ZY&ypXMzwN^^m-x^RpGS?i+ zazJ@!H73c-YvfPCAM7ri<-=|YELA&M+Ll4c5R9y9ggv>&gFcvx}IZGJKje`K5l7HrsPBb}B4!eR;f=)@gziw`M;o z+@R2%;@~~|UYf|bAC{Eo26{W2I~Xyaz!>bFU)q#Yx{JU6o^#U1vWR0;%~W!9+^1k9 ze{LQFHYV$FbmI1I5IY{GYRMmYXAJIfxs%%RwFfED$V|FXbfmhPUy8V?R zEpDzB-FP2f$(7aGlvpFVUYRqaI3a4yv9Y)$CDFYEtjw%s1`g07b1;!D*=u)&{ncT$ zWv!%A2;hBz#lCH-)sCH{Q9>&`dAyl^L|JX?xcXXHuXB@hd}1QHq-iC0|BGNoC8?jp zcej899(0+}=2LBo7~``2jD~zFnsCUINU1IL$nkep?o4D_^_iuz6F)B#s?oex3;fNB zmfx?w$6giv?Ah4W;F@BcH~h>2lV-CVpKYV=3%PECg2DV@#Og*-SJ{b^h99mvQM7^n zK%k^w#0m*>p%gVV8&8&s!C}_=F>r@!5?>|^K7levmES2ysMdiM<2#{l$(8=$_}A-@ z1qOjbv&X$(WNM#!`D-U-NvA>T6Wn%xD3F%=>Ub0)gX}Pf-|}31l($zK>v`H@I)rvJ zy@7nS_^t70!UsLN>99H}Pd&2j`p|^a zacR`l^y0L`CgsX5oJnGi!TA=9z~NL#J`-AUEi&<($~>`Xa`@W-6%aARKLL-`;x#=f zS5eTj$^|wJEp_~BRBctf(*>oLv>k7}_v^x;qZjd1;0x(W!em@FVj-Hmb0s!v6ipxm zn9rJxnlsZ`=Shhrzz|AjNus_*<4tJR$T;7ZO~ey#9BhWug{$5ADK=(bIY37_c0w(l zLE9Wdsz3)%jBvs1%04aV>wt>h2P?e~Acbr!Y*d|i^YpsSGN~%ij{yIG4XMgY&_eUq zhFes7`)}l*9^BvK1m9`iojNv3L(##!>zydx`Q1nvuab9zz+&0cNU(NhO1wRvj*vU| ze0t;zyatoAdlW)>3seyq`FtR92EO7m=YF=-E>fR^vI3e2t79B7_>1xU>f4=H`wdc= zPPx(Uc_=6uIHU>~=pwvtU-e<+%b+-sK1YCUX>ec;A22Wyzg_t%i-=4NeglKS#-tgP zq(XVHT*Dnnc1jv;bP?`0HcHxgbg)N+a>$Fs1tvcQ`Q#l89 z2BjozUbjs2G)xlH+2Xp^nsLW z1}U5bMMyeZ8Ip4;jsKp$6?SyswhWSU^&xI_F52*Wi{TKIEl08!pR%$kPVWtDgc#jg z)nmz@<#p^IPQ=fQaCiE$Qj^FXZhHI|37%t_?GLc8*ZfgZuk*rXX6r`indh|tPnaE9 z7+qKk1#eQ&E5^mu9~2Uru-tRsoLntn#fIN>omVLyKt7(yz0kDt!H{lW5Aqwud?aDM zOeAo2;r}w9qlk8eV%bX2)qV>z-*y}T)KDInI)qU8f49Fn9p5Vb(UKs2^Nb5&>yT8KWAA8}(qil2d04<+ zH$wJ#wQhve0yt$FqX9g>S?7d2V}Hl}y;c7y7XU@EMS|Ob_mLlPo@$U!9RQig9@y&# zfM=nO5Wg z7;vuZXE6~fLG;tMY+%0Ai%hg%fELuZfK&7idk?&Y!59r`VN(qU+IK_NB|rd83w;5UYCaxia=|zjHx>mkPxp^5YJj|r0Z#b z5~Q|Qr%sT1BrYUvtfsb)IY;P@`3iIQ1Xz*Zn2}NeHiRPAC#(<>K)KWkDx8089q{%0 z1DqXc7NCz-iMDPnNA(TkElMTMIxA!x;6u6oh606%pSTaHTw{;4@(PgD+2O63Ltprp zNTk3DMVA;L15iV@1$a;yldcm%A^{G_w#XhN>++D9w`24kK1lXxn3dSZd>yYLX-HHU z4QT6)Xf<}5o)9t$YJicPCwDfFP9vV?M_b$uAd3-%THzM?0ri@%0|q$g#BU0^Lh`}B zHI!vvBZC;pC|ka^^Oi(Eb+62LTlK&-RQRKgmLJJF0P5JgHg~ExCk(An_}<~0d^#|f ze34Yei$d+Sqf=n$fr(AVHgM2V^@iz9 zeC4DK?YH!M(H|A$fx07+F2vXaV?W!?7FFJ3&ccLnzYqz)({dCGz^m8qrhnm7B8xyy z8nJ*%wTah3l5~47x}yGxY=DdCT%67 zE(SErK5v{^?tW4Qv@`65R&!&E*uT^|v735xto^>k%@&PP&dC$a&O21WH%DOQmfw!i zW8dnI)vk=qUqZub=@Q7MQ%mx7(fPhkNsnc=G_NeLS!-(6yI*Tc*WHTIj^5LP@sXjh z{HNWq7n0zHSN)H=sRMl#NmvH*e83~%)OUVtrUuQ#j#H=D;|mVe+M_O~PP3Mc)$mm_ zVCi$FYhEEGLRBI~g$VQbGQyR^|t*w(%UU~#ft*yjNt-YKHpSimM<1h~ghDRTQb#9;}@&nO(J)Sl$OVOSRnrDDN z(KhDLxs5h;2X;Um_-Q)(cqF*kDO+>ln%7sd-B)|@8dYlFlHQRMfW<0s{^6-wBEb(#MSQQcC_Aw zKI{wZ33`KuVYZCk+k2YTTICLm-XLp4wLyS+k)3%>;Tp?6D(o67mG(a2p)fFigja!A zA_#ShAhNZL#oi)JuPSlU8JJ&`2;z#_=1B6)#6O-~g%kJ%asYE{;7&LloS-%C;bkVf zJvSXe=zjm!_??HCR#YkWu7_CLA*A$zQRf&|P4U2L52rqnBtbhJDDG`=L(Zhd{OqjZvpVq zx>XCjaqsBaVZ17=#sdzz5UYKHeXQ8V415raAxLqO$`6Ct;EWZz?9rQg*84sEuog<{ zwAj6(O7v$On5|Z;F5Hk%956KB72VKY5QL?;G{*2fEo!;xcfcxIIR};wSBh zhVFtEPrG_ThWJR#>AX2;ZR`E!XZ;}s!o?f61-e^!h|i|RAJjbc&tH{hp?V7;jom|I zPjWTefJv?1>MXfHg6Jx?#K+;~cC-b~#VkJNImnmE*!F9hGILEd{hK8Ed}h+Am?<_j zCFOH!R5NX_;q)Jdrd<4=r{K`9lZDCDqeXizFZaJ(qNyo~NqoJPk-|}|PlNZkhu%s8 z+k^{8+D#P;M;yG>H$ST@;h87S>x#gX;(hu>M3ssFW{jn6tp_ZORIvpdQiUsgHOr=q z9;V6FsL=xWVXSAQY#@O#O?+13{?gxn;?bp`b05qGIS*)fwtbUZ$3~&d{;Wrk^kP?y z%^24qd#O~M^QGC$`5_4@D#z%xoVxZ;n)@Pcuv1Tl zKiq?&A5RT9w+>Z}@8mrT!b2l@CH6!VbtpR-GnUlErCs=wh{8&%CY82|ZdpKo0ePT` zc=4Ko(V=z^1tP{8qZ;nUvsSJ#iH!*T>5tZqNmwx}H)g)?e>XMe7eJeFXk?lRWWFb- zu(D_$h)!NnuardJ64&UJEk-aP9{H&|CumfB`(*<3AVS0RV__ ze9a30+z|i(?)`J{763@c868gPIQGFg3ri~mFaSV~4**Eu zn9>#ikipGY#<8Xy03d>6eH?$V2LQ5gZiW-10|3B*a|llIIJU$&Za2VJ9LM223@1L^ zAvewwa5BX481etT{{)KL1J^6YNfgKb%&f<09LK7-yE<_Ez!LyiCdBRb-o+XW;J3E& zumbSAdcJeCe-Hf^ysX@D;B4h#?*;xBoN(su;bH%O*?-9i>|y6({a^ck(SJ|C&Yn*H z^*wxD!BDWrf7N?OD=5?&Z1Z1fV-I%34dAzaXUlJ6@A%J6|DdD2^Z(G^*~aDnn*Y1) z--NBB%R4K_|HWP2|HD3W2WEjDv}n%{1t~^s^p9#Tgz&>2{j!Sw&S9;{Bu=DmnSjk> zdpOS{IaDK^I9=hDws=1xnNyCxU!ropnZhYM?6<3_-&)oeSc7vE4KOLWxG;~;Nlghf zN7b*cres=F#G@Xudo&U#eDWKkJ_bEj9i@l~aybnAdcNqr46he<8KzS-Xz!)+5FwT8 z<4|!8dX?k760`2u=c{&19x7hEDqFeAJdQP=#_B+PwnY%pz$H5JBUqR!!=?{8FsF3& zyS)!Y6d_0MQWCap=R+)tuoXqH1D9~QA>fid`B7Gww_Z0qf7J|)Eh`tfsankdnrDVJ z8Fe#`VZ%fb1i+Gr?}~>{Z9&AzIrf)Wg=|lmm0V@sC2Lu&EFqN;{uG;8IPP_ls`nidE*H*f@v}mnZ@^mXQ3YE=;^? zH4=7=XaSnnhoN!ble>E6;DftXhg_g^m3a)CGmWKy_^65^)`3gvxKoPu~MQ4b8?sPu(WY3g@ey1#HU{rG5PQ8vM^(d@(id5LX5mxwcFpIThqZu*Ul$g z6oK0i7x5)O@+3d{flHOV(X{u;2AWrgH7RxDUf32z&;XY%g%CDWLIGN(#yqWFXjxB% z8Sa83&pJxtjW=c0&bj2Y-cd{z!W^hH)~>U<5$U1;f7^`{2QnXT?m&b+QB$~2#zW+F zp!ciMCfcg`9vVve#sfjU1@jc6KwYXsgD%J+39>~AX)T3fe>!#CGiSo*lBD0~_9P%* z%UAj~elyz$X=g{?6?TYNPB+e`-`z-YI5niH zd`D^5<1_l**jQ%r1T-n0JD$AN5Qa;j9`i7aidm!^4pVA(xTJrSS31TNX~*-r8Jc*w z8CgaHZHe7spnOWQq4d%jH+{vQamLZd&{c9t1~JXcxR7SW>9a3Ws4o+&v2|@_%>4U* zA(g$*E+OAVopZ(#cg9jHn(x09H?2X>YB5K~<9gl|6v98n4 zzxt+H4@Q`vMlsT5XxTdX(yx14gqQ>j(yzz#;i+-TR5ZGT$gP^k4PEif3@w>BT~^`G zS*{5so7n49&tp=%ZDI>|e}7b0N74EWomadk%!5G;)gA7oOL2G>XEA#j(U%B_Qs^!j z))?t^5gTufo`pi1;Tu2d7kqLNhK$~ORULglQSGvqenQv{Or^R>(Xhs#pJ~EbbFyd1 zmGnn8j2q8Wr78tPnx!Bw~)OTZ`-zeI<86v}PZLfXNa-MgpP?8@~HasOnKPZR`LgZpT<_*&3yb+|5(=XdiLg6(KK{VRz#jb$Tw#-{<*dVbYajZ-;27;N zJz1GBh`GEUo8zs5#9W>rfsG5W)rfpn7rxiR6^0W`h7&Rt@Ax&vlFcC%v9#NI?i8l^ z3s1jN4{MGNecwdQO+XA?0v2`repVZx@0G=vevsAo)7H2VG*zjd^2PK}Z?@$Kxh%fg z;ycPo{&HfZ1l|3;ke(|W&*PL=M=3B~ZAI=IZ(9fL&?_>3Xx*T{1b>*){Ca%#iBNTl zd)5TZ->0|oXTg|J2A}-$@p8e;_Qk{_{!LKScI>$O8H5Ma#GA1_O${w{@aNZFp)}=9 zw;=7GKPw83v(Wblc&5K}6pN`1_|CT2WmrMaKq$cA2%1zF( z9~>k!4($CrucUT5IB)b^njfFWBZRoX+XH{zoPQte7rg!>3|0O$o;@=6SuoN%O`PXC z+|f3~NwVM#d>L;eq7k(u3>%nBr1&bva-$pJX@{sx0E@Ps-W-R*1nx-^w#V-)4F7YP> z<5`+lSlM%=1M2HM^OEi>T=CPCl79C@S%F3J+%MCqcX7+d$|3F^9F<_@OcB0VJWw-F z`*5px;KE#ZvD2+Hg^KxsGn)i}pZR{<@s@_(`r#aMd3X#3xJf8C7Zw)^y#gQ33Y(uo9HSDvdnd#+Z9$8%~A(0wOQ zTRapbQ{!ar+XSMqOr#pci-N#4POM*Py?^6#I$_3w1)~{EK}pAUOC9?5b?Uw%x|)VC zM|~C)qa!bBa^W3pzVIWzVd;ug`$%xq=6KW|(>GI=%5NjVq+7Tmt2)u)Z!!pVE%&U% zzqbr#T&zgXCn=|zA9+}qGE`J?KW%*ZO3C>y zHR;9WuEJzu%1jE2u=i}_6qR8(OF+S~JG)*QBOxEmy_~Ocw$?+;S*p8nH+RIQOOP4T zlr5ay@K7_}`W1AZNvp7;kXdkkIORyB$$4hXp%Jw6c(x&{h3>n9sB}a#e@61JMO&S@ zW>cgz()zL5yO2NQijekfR0c`e?=W&3DSAfKmNk!TB$McK{^+@Mq4(XX>_Z)fE^MK& zogmeJh7*R-I+9+~ajNgTy&Szcvt3z5k`QM0T(IwM3ZjK%>gVj0 zhAJ>?TLk+a79V|ugsWz$6>9D?1OX{b_ZdfIgy&_u*bjMzGDm+6^y!fd_glmt+neBf1 zd&%AX?y>S%*)iLv-x*>2kM#{%pxwm6y!wuGEnP;WiVA=EJ zRcEs#EaCkCc!QR)rt`qxI%~1op1Ss=zM+(O6E*JrZW?r%q9tO?5+_V?K$fk{)O z9j(pNy*8f?g`*b4N+NL(tqo^p2$%sbmY}l5!f8T5GnS-nD>kVX(8HYa&ZnCwCzQ(F zb1FNirzR7*?s(`wARIvw_fuCTHa{xiCUVO1?Moxis@<4V>De=XmC8aaf#AlZONl!P zcO##>PGiVz1N&{@d1c%w*lLStVzFlQ`ECA+&||My3W|KOkWe<&Bi=TJimKgL=!$ zYwa3TAN#_fR`ks|+zCTpBVX#4x#9n*tZ*SDU zPdzN=PqP!75E->H^}x&>7SWYBM8fcRI`dnmhW;YCfhDRKH*-cx)5}JS0 zSP!=RGkwpVr|-ATQ@DS$GJ(I@2v`2yim@GLp6cgzfsP#PVq48!j3DRP0Zg8?Us?*& zz}wP=k56T4vsIHE?j932F;xZbjI9h_4tLzfFbz1c?wR7686Lk_RFs~WQQJN@3K)gG&B9u7XsMiwPGw^5eZIlI#I z9ym=)o&ow zThxHEeymhCF--#+Ei_RE!MA_B5z$OJ%(A;PJ9kl0(pQVh&V6%fbHSqi{td0N8Un`$ zYBfsVLp(%2MbE2eLQOuvOT#NSEQJJp=8NjHT|p-^n+X(Lf~nfg?3%9&MqGhL>b&Q6 zV!PU{Pi)Te-@MK4;u790FAqC=Pocds;Po7@S5bLF{Q*b9rZ;e%=9zLbIJPc;r>SdK za{}wBnO__wL2m9XMUpB)b2nW%6*#A0UX5{Ab$7K=RPlEP-ZC2c3w;dxa^LwYJq387 z-7G(PMuofk_0K0=R_rwN4?q76#Y{9k5}22}!u@8@98nB48X-Tid^7k3N#tQ;T;hpUhHKK=X_Fyjg# zh@AQfy`^&30r11Xv`$3-TNDBTP{mHD;==c|dtS5Vf-_EkV4YR-;`h9k zzsb0-wmH=>dZR3j5BrJW&}7OM4;SG6bZFUYn?jd{P<2DY+k;LXLiADPNc-)J&a*w( zHKw1e>MLJ!Q02;1>?cUI{I2I!iNnQ-ygYso=>^l=FW-=LkwFQM&lu$LVWHD^2omd1 ze8=R1emeMSak1*PmNEr-d0X_DmVCn)<@bxclpt=kU!Pd7UNaA6iJxpy6)g@v(fPH8 zI#%)?q!M+0%LloJJIn%Q%!UeX9r@x@=|IiXANc)$({(aZ285~5#yWJeT1thUkYs(O zspza;li|4tQDbloV%e4$5qOpTXt%vEQ@BI8gJs2nnI@;;3AH&)UGTA%YiR17_2`CBv25%5tt9G*bUy@=q=+KqG#T&z1 zl54INf{yBOR0`FH^hmj!^-dXC;1A68)yMc{^})b?*+@^GyGe418|w)Ixn*PlRT4x zcuO4K@}oBde+hg_!@z;e7fP1w4S(c!IiF+O2kOEuyY;#|{?cE&g|OnqB@kMT+f&^oJ>CI^5K zKpdVeJ|)4?og9D|{wSU;UNyj$@ib3x0BDE5jmHXDQl6%kVBG;^ejLST0K^k8Bs$|W zj6b`gzqO-ZoGr+V)$VA*M+4FT#2--|_i6|)?z!?{l~;s-1m4)!&G$_45O@ei2?l~A z78p3VvO{h~1C|nee`T`6Ke&JIvfH#I_`td-m|4Vxz!;BFuu3}Esey;il?LV7VYM>< zkvQ0em?axoKPhM#)<=vD~ z8BtFD?VTVB9|x%q&oOHrjX$7PuiIW6p8?R!|l9;Rebp2f)t-cjt0hgA%GS8i|S`$sxem zK4!;_*ccuBqbKmmfy`5nkxv1o3vXmF)tymmL3NBB-miYlA}&!Gvj~UWO=_pZS+adL zxLCM2s6{H=`2HC*bmoN@*~OO?a%b_x#jGL5<1tQn=Ahij`cGx1=GZ;Tfb>1_co%Am zJ93Jb3U&>6qYqmyxt(OLG_9AnPQpN_6JM_#ytmd|+b4S)V9S^d8H*qT%C2GyAqoI1 zR|}qZQZ`^BbJI4sK}oe6e>xM?A(B%6#YJD7;9MX6v7u$MHuPGdt(?radvZ&8Okj^; zMF4aYOssahGi8x?{PBnZamj+>Lq+=%WNk+K{$An`pU~vrA`kzHcPlmMB)Cjl9WHdu zi6ZNu)RPV#O+b8P<@|G3M(c(MeCg!Cg+2dfx}sVdsJRgisLc-uMiSmWJ|nnmb=R91y?kaUC64XssMjKZxC)?gB(WnZ<{S`ct*2F z^mANv`8F?q_vz<|t4G=|nYP7jqlSfY#7Cd4`$7XAj%GGQQlm17Q%?};j1R{H)XP)9 zCcl1&GO!CXB{Ym&>81g_tXVaPjnS2vllf*;m4!edxexVQ=H5L1aEcXs_QSa9qaF0g z+;wyx(&KXdZl$1I#n@h*N#EBem!}0`cGc^lBrT7f;tk;KF%hDqde0)^@*xr4PkXYD z#i`HPd0EDpR#**sT=5cu% z8ro*muPKlw(bG;6iQapiYOa+Sdl9TiyXdrBWRcJlZ@5-Ad8n)UZk$%sw_ZR+NT8wG zV5dAveCE+6%T=mI4}OAvXcaBhE)+M0H;;4i z*8pJ@+oOHESBWk~r4&6rA&CL-wG@5#rejtE)5&b}P5BBc# zH(*-&pdlem!NT6rFropT?iOrBOgheYgNb6_PrHRFo@)NpQP65S-F=|1x>aL%u4w^y zcgD1|y(o}9{T(70es370VPQ_!ycpD9X%uPR->UQ&7ArK`|AI*=r7w-w_t3!9TYfZI zM|hK=Sop~f zB)>k?u;Q|6M)KI*dEA$ZQZ0Wu|AU^h*acyrE-uxYM^*Yr+*g8jArqSW}C)hoj1^;<>$KbZa?pM`9vn^IQmjr(4P5@m2>^X@Eha- zoBZe#-ti%5i(;XS*_zbmVWPms!J{~Kl@mwh0r()}%frfgNiuH_8NxNmZ(cWwMe8}m jexGKVzwot~6xk-v8z?U2-@Qpy6cHr578qC1{rvv`B?-sw diff --git a/scripting/L4D2Tools.sp b/scripting/L4D2Tools.sp index 3fe780c..9a79fc7 100644 --- a/scripting/L4D2Tools.sp +++ b/scripting/L4D2Tools.sp @@ -8,6 +8,7 @@ #include #include #include +#include "jutils.inc" bool bLasersUsed[2048]; @@ -52,8 +53,54 @@ public void OnPluginStart() { SDKHook(client, SDKHook_WeaponDrop, Event_OnWeaponDrop); } } - - //RegAdminCmd("sm_respawn", Command_SpawnSpecial, ADMFLAG_CHEATS, "Respawn a dead survivor right where they died."); + + RegAdminCmd("sm_model", Command_SetClientModel, ADMFLAG_ROOT); +} + +public Action Command_SetClientModel(int client, int args) { + if(args < 1) { + ReplyToCommand(client, "Usage: sm_model "); + }else{ + char arg1[32], arg2[16]; + GetCmdArg(1, arg1, sizeof(arg1)); + GetCmdArg(2, arg2, sizeof(arg2)); + + char modelPath[64]; + int modelID = GetSurvivorId(arg2); + if(modelID == -1) { + ReplyToCommand(client, "Could not find a valid survivor."); + return Plugin_Handled; + } + GetSurvivorModel(modelID, modelPath, sizeof(modelPath)); + + char target_name[MAX_TARGET_LENGTH]; + int target_list[MAXPLAYERS], target_count; + bool tn_is_ml; + if ((target_count = ProcessTargetString( + arg1, + client, + target_list, + MAXPLAYERS, + COMMAND_FILTER_ALIVE, /* Only allow alive players */ + target_name, + sizeof(target_name), + tn_is_ml)) <= 0) + { + /* This function replies to the admin with a failure message */ + ReplyToTargetError(client, target_count); + return Plugin_Handled; + } + for (int i = 0; i < target_count; i++) { + SetEntProp(target_list[i], Prop_Send, "m_survivorCharacter", modelID); + SetEntityModel(target_list[i], modelPath); + if (IsFakeClient(target_list[i])) { + char name[32]; + GetSurvivorName(target_list[i], name, sizeof(name)); + SetClientInfo(target_list[i], "name", name); + } + } + } + return Plugin_Handled; } public Action Event_BotPlayerSwap(Event event, const char[] name, bool dontBroadcast) { @@ -71,7 +118,6 @@ public Action Event_BotPlayerSwap(Event event, const char[] name, bool dontBroad EquipPlayerWeapon(client, botDropMeleeWeapon[bot]); botDropMeleeWeapon[bot] = -1; }else{ - PrintToChatAll("client %N cannot equip", client); PrintToConsole(client, "Could not give back your melee weapon, %N has it instead.", meleeOwnerEnt); } } @@ -206,35 +252,6 @@ stock void FormatSeconds(int raw_sec, char[] str, int strSize) { } } -stock void ShowDelayedHintToAll(const char[] format, any ...) { - char buffer[254]; - VFormat(buffer, sizeof(buffer), format, 2); - static int hintInt = 0; - if(hintInt >= 10) { - PrintHintTextToAll("%s",buffer); - hintInt = 0; - } - hintInt++; -} -stock void ShowDelayedHint(int client, const char[] format, any ...) { - char buffer[254]; - VFormat(buffer, sizeof(buffer), format, 2); - static int hintInt = 0; - if(hintInt >= 10) { - PrintHintText(client, "%s",buffer); - hintInt = 0; - } - hintInt++; -} -stock void CheatCommand(int client, const char[] command, const char[] argument1, const char[] argument2) { - int userFlags = GetUserFlagBits(client); - SetUserFlagBits(client, ADMFLAG_ROOT); - int flags = GetCommandFlags(command); - SetCommandFlags(command, flags & ~FCVAR_CHEAT); - FakeClientCommand(client, "%s %s %s", command, argument1, argument2); - SetCommandFlags(command, flags); - SetUserFlagBits(client, userFlags); -} stock int GetAnyValidClient() { for (int i = 1; i <= MaxClients; i++) {