From ad5a35e55e4c9a334c4ee205eb1c2bf6b3e09cb7 Mon Sep 17 00:00:00 2001 From: IL0co Date: Wed, 26 Feb 2020 21:08:45 +0200 Subject: [PATCH] Update 1.0 --- addons/sourcemod/plugins/shower_health.smx | Bin 0 -> 9858 bytes addons/sourcemod/scripting/shower_health.sp | 235 ++++++++++++++++++ .../translations/shower_base.phrases.txt | 35 +++ cfg/sourcemod/shower_health.cfg | 70 ++++++ 4 files changed, 340 insertions(+) create mode 100644 addons/sourcemod/plugins/shower_health.smx create mode 100644 addons/sourcemod/scripting/shower_health.sp create mode 100644 addons/sourcemod/translations/shower_base.phrases.txt create mode 100644 cfg/sourcemod/shower_health.cfg diff --git a/addons/sourcemod/plugins/shower_health.smx b/addons/sourcemod/plugins/shower_health.smx new file mode 100644 index 0000000000000000000000000000000000000000..8f955b21294f723e5cb4cfffb0fedbddfcf0be6e GIT binary patch literal 9858 zcmai&cQjmY+wVt@IuQ}wNJNQVqqhVR5rQB((V~~ZXrn}AB0ABcB?Li?pKkQ%y_aB= z(MBCcXOwsHJnwVfbIv+zoxRp~eLwrUuYFzjeeeCp-dkP$l|CT>!Fz51U?UO$xO35iDxxDUwQ)oukoyh=U2V}Ks4UX@j~L674Ob?o#FW|-u>~S zf&c(kc>jc#3!Y=~{spfKJpZkogO`{e0I+`x04T=ugD?Q#Hr}iL#_{|&_cvZ$c>YZY z01V+7_5lE}Cc)3s#@*HqAY^OpZ4D6e@OkUvXaoKi_*#46!Ohy+(bw)@;EFddZ*Rwc z=l+Xa?Y!T)+x~a>KdJv3v2*ir{qMN9zlWWzo&EoI2DbD5?=u@0YcTkK2JIc~T=3uk?& zk=qK0Jf`6F6Cv#9_@P25Am=R@|4(ORG=01)mw^$p1kipeFTHmlNszflS48Ncz4_yQ zw|6gwQ4=oxGWo__QTmfzG#T+JZW_LS5>wn}%oG1H{W?NDH!6 z?41D{0u|?R&5)Z*%uV28<6@Jfb248B-K)lXd)LX>5V*G+M!u3%Vl70#PRJMLIy=v4lA^~3-#(4)F5Axb z*L%ayE@_&dqCKZ{ zUVNbP;~bx@w(;5#@^P#Ayu`e3oB5o?ygJIw>Z{vn`}~4qy#fv7S>fgh6*4QkZC4R4 zRdof@b&$2bzGW{s0BUdaFPoSLi-Zs!@(w_(yY`ZO$9>C=z?6G}7O*#D!) zU^|&_b29?FDOXfDxF=iOoc)ZHd3H`&%Zf>}_S0rP!KmJhb8qE1g2uFbEGf!z9J*t0 zE8d(Fv%a;zAv9}Ml_0sCGpuBFL~WqHxc`qEMBrwWq>alv7;$xXrQzd1$otI(;YA1J zsJ~a7D7(4ot238u^o$v2^ETzf#q(c%ba4J@6L@7xRA6A(7rXS7t3~M|7U%=3=s``i zuAo?Dfv(tb=uifQE4w+Tzo=2_u~U{5zxVa)ZTagensJ{HnR9+LH*guyQhItYju)E;W!opG*8zQ{?lAuX#St%$L z3p(itsd3!$>Upq0+4?5oEDmWW!-{X7Z~Lfh~N{XpTy1~DHXrL>pVq>Xkw&CW*AP#}x(+4N1PH1cszaNPD1%L~d77O2{^D;Q%| zJXd8dEH))C4OOD%UxeitK=#nHTa7tT+0v@RVsk!6j0K;~_H}-MV70_z4U>g(oDL?C zrKU9F({RzLNlNs(X7zbIrsa(i^ZRpI`7AH5#cq*I1@$X|bM z59(#PZn`ls`~x&n_!3g9Yad-{-{SId@1!zWHXBiYIViKGr|`@Nr&mio z;lEy?(#~eL`Nl%pP;Vg#cpis!iPCN`Q7kw2w-cHo#c1iCnj@T}vAchsMjS6@xCifj z$E1OYuGsrB^-~eYhYCeGqaWKK4*gW8r|%%(Xh4ANV^_3I zzHV*$6trH;5$#i_ojnatYjkU{$;06&+M|9A#6{ZANp^Q=Ty@l#N)Fb@Wnud-UAM>D zmFDV@q8m%B)-f_XFO##eM-SdYSB)0YZT6=mfqKgqru$$w*Xq2;;6U=@PebKX0 zledtZbP9CKvHYbtKXtsR1x3AyA07T2Ltb675Mr!Tt0;KM)QKIR$eV*0yO9fasP%7G%x-(1~TAm&{I<>b{6)W0q^`%AxDU#v}yoLwIro!~aQ=NCDG z4Lz^q`>`8$*WOH@9qx9=>5RrrOK4e?o$VBePB#^y>nAT}3|5Q{l_$Lpj-WC1pkR*mt1Xu+2qS}(JB@674A{^c2{Npg>j5fxW1r&@SD^_ ze27BuhF?|yJ%@eN*J|D}y(u|lr(krn{<6u9XgzZZr`<}`zE(hI7`~1SVuKA7EhbmN zUCmgWs3hIq)Lx6yJGnV6j7+dPeau_0j)Sp78||8|BIRerpMNuxVAr)x$gB7bE%)RF0_f9KgS7@ z%h~VsF1l;(#F~D@ojfEOT2ykNrbupCOwj^Htn|^TcOe$tA~?0Z%;b{tcD22#%o90% zc^=JT9;(f8J(_LGpn~SS_}H9kyWv;WScUEwUUbG%hcJzh7ib(nx8iEjs4 zr=15Zrj^LXGzdN$!ep)1a_?lCCvx}}y?Q%5?T&EQ=}K~RWf<+G(cQ6?-P6Wo$oa)x zG|X#$2UR@K>G~zz#;7d(o{()$$G;9e+-9|gUgq^893^F>2D#A%^Q%btw4Ub{bwSt%!%EX?dkBX_ z3h7$w^h|9%0`!z#()e?}C1jVqm)l@gkIeJF!+Jh{45i(WQ8}U8`+;*lqt=)4GL|Hi zb>w0UhR-X5E{pB0nJy-qA`PlJw8ITs>Q*)_Dd7K1*4TRRx&YM^>XxkJ?aPt#4hkrV zfNx799$hq;s`n_r9ku?WZGZMK;su9tEs=x|3AZpbK;w^#4s@t2PyTm2;WaB>Ug=^8 zhg}pg(OsS2SPlm~htA zzwccc)Jzw?!)RquG4^{EZdFJhJEyxgK>L)mg-0fnMqPiYq6I zi&YfH=~@{*XzK3V&eC3{c@@_AX9`v`yc` zx%Rkk+@{}jt~bp{w2bow$_4!A{s#EW15FKk@isJ z2$-7okps`YQ5d1{CT!x$t&}HZC5|QJd7(OdChx&iM}riionK=9#{N!_o^A2p7l-Aw z_Uet+=DP_VzbhlE4WkffbM8|;t)|}~4(L~f`4CIrVkOZ|i41<^^IVu{I&4n4Q(*M) z7ughnt1`m~rE2Jez-Zo&p@+wuMU>B*o^46%-&h-4*=CE%%c>o#8c+r6N>OHP@j z>t_UOVJPW0`VByRm?8(opH^Ov|Eo6vlC*FA!IiS$E8s7p*-)Wx44(jxtb{#oOB1q^ zX%nop%5YGc5x|LR*ZW?4E#@2bFCltjkh?NPegq&=W@RKeA%cb3v_4;w@VHk8Fe8N% zNQKEMcPeNo-6m!ZHT*`jL3$C&YekgTdVh)6gOHJE2+3LRoElovO1<>>)nni$nNwJR z7261@H$js!u?9h4Sa>V#lC%c}BiRsv@e+jxGZWvLM|)e^N9r@PX`_<$xxzuo)!Kll6YKMeRsf*_WtFw}F2HJ$_xm<}^NTzk6sfAkHN79rdr zqao@JO=@*q67V3XYg9gZ=|%_%{ftwEaNUvslq!>rP#+QKwvwucJ#E!pA{HUdBp4$4 z&w6Wa|G(Co5aG1`6=4rgcmDs|_Duu-N>JfA$VX`*{UG>fOXyZ@CNMeE{ZFkD&QAn4 zvy(AXE7a_ZRX&N?nftwCI)k-3=@;p$xKWhLhTO<|4=DQjFV-9-)Rd)C3OE?;`NI9+?q>5sEg zgG!bYcf0P}DRgb748YOVU8ats&7D7;PzE5$?-;w5FA7lXT2vWHrMoy^wrx z8+VJK^GGY`NtA{VQ_m4;5)_;KjP<*0k}wJEBU#?%4}Q9s-HLESMhN+KzLk8+KTDD+ zx9s&$D*T5U<(J-T;WZ}qNU#hVfx%D!V z`&)_$9+%5ypFikG5I_AbsiH|!rtzm_M(IZ_b_XOuJiWzpB)YDMdvM+4>3OuwPyKuS z?Qr#CO62$TAX)!|pb1UW-x_0m#JfM~qhXx1U*<5j9!9bl8T=ZE_-J50S#R(Xm^ zEB!J%>RzkbJNcSv%B7SiZ7Tfs{rCk13s4Y6rE;<#kVDE-U!o}b^Z z-(WauO}{?40x7u{jrn3; zJY{3SupE|s*&zX|^|BiRNo|FT(L}j0?@x=uL;73hX*laC>>N+pJlBDFn}eq9@K+_+ zjBehyy|^;(?6Ilh8%=??chap9L1f5Rh^`h^C!8pM|UDQOeo8s88I_ z!eJ=QPZ4#f&=xOLqqkPf^h=QVvBU_l5nvmtLs&-G0&mF(pgW^nB2%6em_c8YTgi<8 zcZd|pF4^}%M^d_r1i`lkgkY?#df&+X2+wZqH$E2Rpxz;}AhHlng^mmZEXm*i9oVzk zV+X`s_U_i!;%FswyQZ+?8kusE?NC#49qinJf!zI8HF@4~PfFNilgb%0lKtkbk)9-+ zy874R$e%228k!UR&F?Lo=Xy{4_hwAKX0`Cq;p|?_+yWo&!_6;n=A?%kHf|zwGdy2W zj2#mMrLJy|;?Xl-_!=|RZ0FX8^=->ZHVhYj?`SrM zL^f*UwtY?O(Dz2~1vmxol&^OQau)fCEpHv(U6^?;$7)pG^GVYbyK1H68s0mRy*u?v zI;A!A$Hz9#<(huY9re6{`3Bwl-;4YPeD#W%O&`nGf5-N|K{~m_@rb7!yh&z@v0K_2 zt!81awa=#PwxNAqk=G!e!1Q5mDrLQE*O0HdkmnI7*8O>5f`Qu4D*7P~7UVCB>1e$W z3LxDH4L_}lN`CfCM1bK3&E+^dep`YH8nqO=jufqF%WLuj0y_AaBvTi*hO^q~9pJ|F24>N<;C8wyK1_6t-By%P>S`BC@& z8CPyQQ0+d@dSa4&Hc$o2a-S1#5pW`uc{V>(R}*f-%Et^__kQNrGwXURM^rO58p)c- zyPK*IGW)Li>SxGYKz1Ov8c-wp&`kYRouxIBws(t72X2pHTO_e}lR1!cFWY@3($(+MvXx_)Iy~-bWnN4~0u124 zrRlZgzUO|{KZq?zIZuNwU*+Q|L6ady+l)X0w#`_+j##OJO^6?9n$;Z`e5MdvqS(Z>mX`g+=j(s^Q1g z!Gi&7w-7ddg(fXnhN(OX#hK%Qg6wO!;MJACaQ&?xzDEy>P~m6UpLrl3S7KYojNTd7 zL`$#fFVVHFzUUduDfH5O?$(pbFmde%QX4pm;Cx!HY6(mB|E*ncAr`*LxaIy9VkscX z2#S3Jb>WMtOK*;grW>6-nF3zRhjAYA9?APv zTbSSX`jGMvZDGoFomLgc*k;gx%d6Mh#VkgOny~XJkS(MHJqH3d(jeaMPK&uej10+r z329$Au*o+5GfvA3v6skeJ%Vss*NN1p4c5e;rjmBe{IcK{O}B<(?=Bc z+8)etn^*XGa%!q<9AUnPkhXn(pH%8=x%*#AUiYq#4cbi-TvPwpf1R9)P#Fxjy!^g5 zv0gD2SNN_}h&nzqpDkZ%SToh;aTGeE|HG`=LS|I1#3a1`(%`{cggbnJ*U142CHUY@bw$*P;17$w_$_ zt*A6HFKd2cc4;XzQZu8)UWaT?(i*8Zy3>5h;(v&d5c^^DLehEdy3Rtz+ERL3l)o+gSt1E`6metfz5*wM_yzVV_ zR_^WFCgCa(hCfCS+RR!^avQxx>V}t;>+l&TcurHo`(k;G)1lhETRUG8>6xz-zQ2S| z`0;TYIU95F*C-iPIIR>X^Vhob8#i6)aPij}6Bu{uTEJH^0v)ls$cJ zuF8gxpk|_V7-2v`;&|epdtnta9!wVlaA)` zYrK5v)cJ)DVT8LCLtxc;P0GE6kWTOoPd2VBm42ZGjR=7lqMA&bqkSJ`3+8cC48*-& z%h6SJBEM2@favs~CQUYP9-rqJtV3@0Eka&Dl8f^z<1^lolS}5PMg6E>E3?|}nW+cY zpusiQnSy)mLo+9@HG}gyydGb$dAKb0AaIqLyTa8mMfksARW#Y+T`5{wTs2Fn4lnxI zas&lWrd%8y7fZgpz6=vuQ+llzwK%aSwLlmUCJwNaZq8ec{v%vj%_oEQ$*eYh?t1h2 zj`>6x-=oi9P49)~f>o_aCB59!lWxr+_55ajpT%p{UZ%nu-N@^?>EulOFN3#5M5okg zQr5xxk?hD2J+FJbD?fygYFvAM*OhmmbxH=gkbvir+Q`~38#&kMcbcSYG_p&3!45?% zrwm$3#l0cAxuEWpS<=H6zR?7nyOz?x4O~?RQ;aG7lUT%m%2ohcha_+G>++;#OkD!G zWWg?*_tOM~w+2PyNUg4`@603iM6X0z$^zN9_Om0-r8K=au2U1m>5WT@o;|x-SQ6O8 znp$5Ajt`$IYuyNpUa>`-L-0*n94@S{iN=A4HHqRk!5v5Km!jjALKkhvA|Y)@?Ln!V zu=DK1%F{OmWY(ls>@ede=4xsAB9&{o&OuFP0TMK#YZLw-WaKy;kh)|QboN|jlcgb(c{~xUyOfC|(?O?^WuZb?AgS{Pz4h?*Oi- zh3YUYG!xY&+ao@w*eYvuUt!T8?Zr=1qy?urrv*1F*`_B;ZVPldn#!mTMx#-6kd%B}#uiIGDcmmyYQ)Bw} zCTto=LSRW7FB;i1gh(g6KaY4ear!T{a>)wgI3Kw31+ALOta= z>^vx8;G>XWqVZU%T1Blgo4qc`I(V{Y=O^Vlcn4I~dnjL5JC*j>Ux*BMF*mz<&OD@8 zHoGdr1hPRmC85nPAK(;R50IY~3*5`oqnGd!q{J4HN3sXbIf@Z<}xT*EE%V=}wwtqJbaLkETBY+UB1XO7<#4~Fh0 zHxarlGrppTl?P_wdPCly6M=;tN>uWLBd{cP+;7UYw#-2TmUc~VxNT4yVluEbngOHa zo!%?qG#!zUm@Dalb}DzoPVEr1;zlw=_>B-w@u=;RI+mz^O{*=bf35KtJiEFu(xL|O z5nDg`z1l_h$kj_}eL8vP7}szFJp7TU5F+z*cZB;?`Wng=$Z#VUt1r^hdhucAER}ar zld1m{{snt;p~-ZE*u%_yDYNK0Z#ouhwj8tH<_rk3jjja#j&C*hE%DQGW@vjEU-|wYtiTB+id4V&(ol!=-TT0 zOzv_|#1>*d+BPcCC1O+fbMnI?EBns724dqJHq+Nxla<6{=q7MS;@LUv_pvH$1-J(K z(+l`S3(4SU3GKCZmHOK7>(%H4B`Up`Q(ZRSk`&a_+4(D30ZhX#Zw$DtE1!kO38`Tj zL6s;jiuqQ^E~Qa@`3p=H?{r$Xn$Eh#1niBuJ=v|bw@Wni{7!5@{fi26FitahKVCoy z&0&zVih8_7N6I9Slmup#ge0wE#kauhi4Lex-;S5vz3-o!d{GQr)m7R`gsu9k z4#oL#_qNAQ0OcP-HjI>ndWP$1*cHBM@=>RNWkQIqHYk!XnRI5qxxEsWwn!Rl|fzdUHo@+{|`))iL%g_MIrxN4;e^k5T>ML z#{u~h7SmkM9v=ILzux`cvMf@#AkmvrIkcC#WZ$`5I5ss{rY-K;=2#BsX&=bux zcb54T$NU3aHCe{!E<<`$|KrFm{MR*HF>OD-JD-j=mCuy}{_F9B<@z6!99f^P|M)=@ zqc+~FtUtI&`8$s8s8#vpEb(Buiixwa5z-+=&@M#7L6& z#%K`fghjVb`XwDLBa_8jNrDTx4K{1J26nqlIi{R2MNEJCBl$jURg0xV8o}K;lwSw@ zm8=>iav|(MmNR+tEvaV+DjBx;7-qAv-rE>kuP%<67b(G=e%RN$LSvPr&r^{hl}E)e z?}I~J!6~kp|NQ)EQis$9tQ8yDD;PguyH}Y_l ztcCmP9WudFS2H2CN-8mpGPnL8RIAI#bi0`6R(Rk0sCwd7X1Iw`u4S9Ss-D&GjmGCi`G(^`C(iI nxjb>j%cP$9l30zBbJ1G|6@lrx+h6++_GFoGHw5!igOmRS$zGvU literal 0 HcmV?d00001 diff --git a/addons/sourcemod/scripting/shower_health.sp b/addons/sourcemod/scripting/shower_health.sp new file mode 100644 index 0000000..4f0d9ee --- /dev/null +++ b/addons/sourcemod/scripting/shower_health.sp @@ -0,0 +1,235 @@ +#pragma semicolon 1 +#include + +public Plugin myinfo = +{ + name = "Shower of Health", + version = "1.0", + description = "Shower of your hp", + author = "ღ λŌK0ЌЭŦ ღ ™", + url = "https://github.com/IL0co" +} + +static const char SPACE[][][] = {{"", "", "", "", "", "", ""}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}}; + +char oldValue[MAXPLAYERS+1][5][16]; +int iHealthNow[MAXPLAYERS+1]; +float iTime[MAXPLAYERS+1]; + +bool g_bHUD[MAXPLAYERS+1]; + +Handle g_hCookie, iHud, iTimer[MAXPLAYERS+1]; + +ConVar cvar_cCount, + cvar_cType, + cvar_cTimeClean, + cvar_cTimeUpdate, + cvar_cTypePoss, + cvar_cHudColor, + cvar_cHudPoss, + cvar_cTimeHide, + cvar_cEnable; + +int cCount, cType, cTypePoss, cHudColor[4]; +float cTimeClean, cTimeUpdate, cHudPoss[2], cTimeHide; +bool cEnable; + +public void OnPluginStart() +{ + iHud = CreateHudSynchronizer(); + g_hCookie = RegClientCookie("shower_health", "shower_health", CookieAccess_Private); + SetCookieMenuItem(CreditsCookieHandler, 0, "shower_health"); + for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && IsClientAuthorized(i)) + OnClientCookiesCached(i); + + (cvar_cEnable = CreateConVar("sm_shower_health_enable", "1", "RU: Включен ли плагин?\nEN: Enabled plugin?", _, true, 0.0, true, 1.0)).AddChangeHook(CVarChanged); + cEnable = cvar_cEnable.BoolValue; + + (cvar_cCount = CreateConVar("sm_shower_health_count", "5", "RU: Количество столбиков\nEN: Number of posts", _, true, 1.0, true, 5.0)).AddChangeHook(CVarChanged); + cCount = cvar_cCount.IntValue; + + (cvar_cType = CreateConVar("sm_shower_health_type", "2", "RU: На сколько смещать каждую новую строчку? (в пробелах)\nEN: How much to shift each new line? (in spaces)", _, true, 0.0, true, 7.0)).AddChangeHook(CVarChanged); + cType = cvar_cType.IntValue; + + (cvar_cTypePoss = CreateConVar("sm_shower_health_type_poss", "0", "RU: Куда уходит лесенка начиная от прицела?, 0 - в левый низ, 1 - в правый вверх, 2 - в правый низ, 3 - в левый вверх\nEN: Where does the ladder go from the sight ?, 0 - to the left bottom, 1 - to the right up, 2 - to the right bottom, 3 - to the left up", _, true, 0.0, true, 3.0)).AddChangeHook(CVarChanged); + cTypePoss = cvar_cTypePoss.IntValue; + + (cvar_cTimeClean = CreateConVar("sm_shower_health_clean_time", "2.0", "RU: Время очищения истории\nEN: History Cleansing Time", _, true, 0.1)).AddChangeHook(CVarChanged); + cTimeClean = cvar_cTimeClean.FloatValue; + + (cvar_cTimeUpdate = CreateConVar("sm_shower_health_update_time", "0.5", "Время проверки изменения хп. Требуется рестарт плагина!\nEN: Check time changes hp. Restart plugin required!", _, true, 0.1)).AddChangeHook(CVarChanged); + cTimeUpdate = cvar_cTimeUpdate.FloatValue; + + (cvar_cHudColor = CreateConVar("sm_shower_health_rgba", "255 0 255 255", "RU: RGBA цвет худа\nEN: RGBA color hud")).AddChangeHook(CVarChanged); + SetHUDColor(cvar_cHudColor); + + (cvar_cHudPoss = CreateConVar("sm_shower_health_poss", "0.38 0.5", "RU: XY позиция худа\nEN: XY hud position")).AddChangeHook(CVarChanged); + SetHUDPosition(cvar_cHudPoss); + + (cvar_cTimeHide = CreateConVar("sm_shower_health_hide_time", "2.0", "RU: Время скрытия худа\nEN: Hud hiding time", _, true, 0.1)).AddChangeHook(CVarChanged); + cTimeHide = cvar_cTimeHide.FloatValue; + + AutoExecConfig(true, "shower_health"); + + CreateTimer(cTimeUpdate, timerhealthOut, _, TIMER_REPEAT); + LoadTranslations("shower_base.phrases"); +} + +public void CVarChanged(ConVar cvar, const char[] oldVal, const char[] newVal) +{ + if(cvar == cvar_cCount) cCount = cvar.IntValue; + else if(cvar == cvar_cType) cType = cvar.IntValue; + else if(cvar == cvar_cTypePoss) cTypePoss = cvar.IntValue; + else if(cvar == cvar_cTimeClean) cTimeClean = cvar.FloatValue; + else if(cvar == cvar_cTimeHide) cTimeHide = cvar.FloatValue; + else if(cvar == cvar_cEnable) cEnable = cvar.BoolValue; + else if(cvar == cvar_cHudColor) SetHUDColor(cvar); + else if(cvar == cvar_cHudPoss) SetHUDPosition(cvar); +} + +public Action timerhealthOut(Handle timer) +{ + if(!cEnable) return; + for(int client = 1; client <= MaxClients; client++) if(IsClientInGame(client) && g_bHUD[client]) + { + char textBuff[256]; + int currHealth, health; + + health = GetEntProp(client, Prop_Send, "m_iHealth"); + currHealth = health-iHealthNow[client]; + + if(iHealthNow[client] != health || health != 100 && currHealth != 0) + { + iTime[client] = cTimeClean; + iTimer[client] = CreateTimer(0.1, TimerDamege_Clean, GetClientUserId(client), TIMER_REPEAT); + + if(health > iHealthNow[client]) Format(oldValue[client][0], sizeof(oldValue[][]), "+%i", currHealth); + else Format(oldValue[client][0], sizeof(oldValue[][]), "%i", currHealth); + + switch(cTypePoss) + { + case 0: Procc_Left_Down(client, textBuff, sizeof(textBuff)); + case 1: Procc_Right_Up(client, textBuff, sizeof(textBuff)); + case 2: Procc_Right_Down(client, textBuff, sizeof(textBuff)); + case 3: Procc_Left_Up(client, textBuff, sizeof(textBuff)); + } + + for(int poss = cCount-1; poss > 0; poss--) + oldValue[client][poss] = oldValue[client][poss-1]; + + SetHudTextParams(cHudPoss[0], cHudPoss[1], cTimeHide, cHudColor[0], cHudColor[1], cHudColor[2], cHudColor[3], 0, 0.0, 0.1, 0.1); + ShowSyncHudText(client, iHud, textBuff); + + iHealthNow[client] = health; + } + } +} + +public Action TimerDamege_Clean(Handle timer, any client) +{ + client = GetClientOfUserId(client); + + if(!client || !IsClientInGame(client) || iTimer[client] != timer) + return Plugin_Stop; + + if((iTime[client] -= 0.1) <= 0.0) + { + for(int poss = 0; poss < cCount; poss++) + oldValue[client][poss][0] = '\0'; + + return Plugin_Stop; + } + + return Plugin_Continue; +} + +public void OnClientCookiesCached(int client) +{ + char szValue[4]; + GetClientCookie(client, g_hCookie, szValue, sizeof(szValue)); + if(!szValue[0]) g_bHUD[client] = true; + else g_bHUD[client] = view_as(StringToInt(szValue)); +} + +public void CreditsCookieHandler(int client, CookieMenuAction action, any info, char[] buffer, int maxlen) +{ + if(!cEnable) return; + switch (action) + { + case CookieMenuAction_DisplayOption: + { + SetGlobalTransTarget(client); + FormatEx(buffer, maxlen, "%t%t", g_bHUD[client] ? "Plus" : "Minus", "Health"); + } + case CookieMenuAction_SelectOption: + { + if(g_bHUD[client]) SetClientCookie(client, g_hCookie, "0"); + else SetClientCookie(client, g_hCookie, "1"); + + g_bHUD[client] = !g_bHUD[client]; + + ShowCookieMenu(client); + } + } +} + +stock void Procc_Right_Up(int client, char[] textBuff, int size = 256) +{ + for(int poss = cCount; poss > 0; poss--) + { + if(oldValue[client][poss-1][0]) + Format(textBuff, size, "%s\n%s%s", textBuff, SPACE[cType][poss], oldValue[client][poss-1]); + else + Format(textBuff, size, "%s\n%s", textBuff, SPACE[cType][poss]); + } +} + +stock void Procc_Left_Down(int client, char[] textBuff, int size = 256) +{ + for(int poss = 0, poss2 = cCount; poss < cCount; poss++, poss2--) if(oldValue[client][poss][0]) + { + Format(textBuff, size, "%s\n%s%s", textBuff, SPACE[cType][poss2], oldValue[client][poss]); + } +} +stock void Procc_Right_Down(int client, char[] textBuff, int size = 256) +{ + for(int poss = 0, poss2 = cCount; poss < cCount; poss++, poss2--) if(oldValue[client][poss][0]) + { + Format(textBuff, size, "%s\n%s%s", textBuff, SPACE[cType][poss], oldValue[client][poss]); + } +} + +stock void Procc_Left_Up(int client, char[] textBuff, int size = 256) +{ + for(int poss = 0, poss2 = cCount; poss < cCount; poss++, poss2--) + { + if(oldValue[client][poss2-1][0]) + Format(textBuff, size, "%s\n%s%s", textBuff, SPACE[cType][poss], oldValue[client][poss2-1]); + else + Format(textBuff, size, "%s\n%s", textBuff, SPACE[cType][poss]); + } +} + +stock void SetHUDColor(ConVar cvar) +{ + char buffer[16], clr[4][4]; + cvar.GetString(buffer, sizeof(buffer)); + ExplodeString(buffer, " ", clr, 4, 4); + for(int i; i <= 3; i++) cHudColor[i] = StringToInt(clr[i]); +} + +stock void SetHUDPosition(ConVar cvar) +{ + char buffer[16], pos[2][8]; + cvar.GetString(buffer, sizeof(buffer)); + ExplodeString(buffer, " ", pos, 2, 8); + cHudPoss[0] = StringToFloat(pos[0]); + cHudPoss[1] = StringToFloat(pos[1]); +} diff --git a/addons/sourcemod/translations/shower_base.phrases.txt b/addons/sourcemod/translations/shower_base.phrases.txt new file mode 100644 index 0000000..68aba1a --- /dev/null +++ b/addons/sourcemod/translations/shower_base.phrases.txt @@ -0,0 +1,35 @@ +"Phrases" +{ + "Plus" + { + "en" "[ + ] " + } + "Minus" + { + "en" "[ - ] " + } + "Health" + { + "en" "Ladder of health" + "ru" "Лестница здоровья" + "ua" "Сходи здоров’я" + } + "Armor" + { + "en" "Ladder of armor" + "ru" "Лестница брони" + "ua" "Сходи броні" + } + "Damage" + { + "en" "Ladder of damage" + "ru" "Лестница ущерба" + "ua" "Драбина пошкодження" + } + "Killed" + { + "en" "KILLED" + "ru" "УБИЛ" + "ua" "УБИЛ" + } +} diff --git a/cfg/sourcemod/shower_health.cfg b/cfg/sourcemod/shower_health.cfg new file mode 100644 index 0000000..d01189f --- /dev/null +++ b/cfg/sourcemod/shower_health.cfg @@ -0,0 +1,70 @@ +// This file was auto-generated by SourceMod (v1.10.0.6422) +// ConVars for plugin "shower_health.smx" + + +// RU: Время очищения истории +// EN: History Cleansing Time +// - +// Default: "2.0" +// Minimum: "0.100000" +sm_shower_health_clean_time "2.0" + +// RU: Количество столбиков +// EN: Number of posts +// - +// Default: "5" +// Minimum: "1.000000" +// Maximum: "5.000000" +sm_shower_health_count "5" + +// RU: Включен ли плагин? +// EN: Enabled plugin? +// - +// Default: "1" +// Minimum: "0.000000" +// Maximum: "1.000000" +sm_shower_health_enable "1" + +// RU: Время скрытия худа +// EN: Hud hiding time +// - +// Default: "2.0" +// Minimum: "0.100000" +sm_shower_health_hide_time "2.0" + +// RU: XY позиция худа +// EN: XY hud position +// - +// Default: "0.38 0.5" +sm_shower_health_poss "0.38 0.5" + +// RU: RGBA цвет худа +// EN: RGBA color hud +// - +// Default: "255 0 255 255" +sm_shower_health_rgba "255 0 255 255" + +// RU: На сколько смещать каждую новую строчку? (в пробелах) +// EN: How much to shift each new line? (in spaces) +// - +// Default: "2" +// Minimum: "0.000000" +// Maximum: "7.000000" +sm_shower_health_type "2" + +// RU: Куда уходит лесенка начиная от прицела?, 0 - в левый низ, 1 - в правый вверх, 2 - в правый низ, 3 - в левый вверх +// EN: Where does the ladder go from the sight ?, 0 - to the lef +// - +// Default: "0" +// Minimum: "0.000000" +// Maximum: "3.000000" +sm_shower_health_type_poss "0" + +// Время проверки изменения хп. Требуется рестарт плагина! +// EN: Check time changes hp. Restart plugin required! +// - +// Default: "0.5" +// Minimum: "0.100000" +sm_shower_health_update_time "0.5" + +