From 3f5959ec7194474960c6aa2f8053fe8b8046c56b Mon Sep 17 00:00:00 2001 From: Jackz Date: Thu, 23 Sep 2021 14:38:14 -0500 Subject: [PATCH] Add some minor checks --- plugins/L4D2Tools.smx | Bin 18716 -> 20769 bytes plugins/l4d2_vocalize_control.smx | Bin 4897 -> 4889 bytes scripting/L4D2Tools.sp | 173 ++++++++++++++----- scripting/include/feedthetrolls.inc | 15 -- scripting/include/feedthetrolls/misc.inc | 1 + scripting/include/feedthetrolls/specials.inc | 2 + scripting/include/ftt.inc | 2 +- scripting/l4d2_vocalize_control.sp | 4 +- 8 files changed, 138 insertions(+), 59 deletions(-) delete mode 100644 scripting/include/feedthetrolls.inc diff --git a/plugins/L4D2Tools.smx b/plugins/L4D2Tools.smx index 98d58cbb89c9b0dc19b61543ee0f08bfdfa9d44c..fc10998f131e2ea7be3ff31d401f1121c34a9eea 100644 GIT binary patch literal 20769 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
  • 3pfVJ=btWI!NB_Z#5rkjZ13G2b3Zx1YZ2 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 IUt1X>O4Su>VgLXD literal 18716 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 diff --git a/plugins/l4d2_vocalize_control.smx b/plugins/l4d2_vocalize_control.smx index 5be16a2ad94ff36ffee6eecc1d176e3a8bef277d..189b96177ac46d6bf4b0f5934f06f97c28ca69f7 100644 GIT binary patch delta 4704 zcmZ9KbyO7J`^R?y7s(ZnE3B8`-E zNl4f79nbmw^_w%V^M2iV?mTnno}12t3cK00d$WrV>cC00e*}fuaSXEeL_U0@Dbj1oYcr+JUrz&H|<<$UNw#V1|MqgdmV` zFk?XmKnK?cNd;K}z2*i4k`H>aCZWFH% z&sDvnm79BW{kwNVDdlV1b85xL|gHP9l$xK{wXtb;Z?v?NT0Ek!Wx6++p? z7M5TQ_AOxJa@eI3p>L00vsFt8+ntT%$N67^{ic>v8d5iz+H120|e*tWy4!aa5 z#0Nv0(JhXQZ!0aFd@7;4Vhj3&O=Es=radY`d2|aI>@p9EuxSAo4=TX@uer&Cg%aky zE!br^)KQIb*|No(;xrA)F1`R(XZ%t{|Ml*JT~ZL@!3hSo-`ilab}hu@r=qY1)0POv ze~Zk3HruzDNG?c{pEiJVtoANo4HN%9s!3=pv9Lydnm~TK6}G_3g=~JKIxc?Uns_Xu zlBx)JWnfF^Ihj9Jp*b;MR+Xl|#hf!+!%M~-Z2idWJigZ<(~Q>$$622=I>2APV>;?& z|GwiiDs%4VCXzN+OI&!NJL-KVw~2@SiQ&3Nob1eMr|kwb`P2K7dr=)yu502_{V4tC zZu}v-Q7bv$UDhyNQzM)D;u24?k>Fbtp!65Wk^KzsQ@{{y46Hs0aTotvvt@_L-FvIN zNoT{F&T4qCvO4*=VY%6$hSDssuNIjv$~(l)VJPI1LnPC>^C+prO$DwBRDZ?hdN~M+ z6+itp&p5@#_)g73HoFoii`x2SaAmFqd>fY-vx$`EeeyhB?Yw#3M;U|pR%(E!FlYvJ zjD;P9d1Byd>|*S1M#$Fo!X-lBb`BCu7H&=*i)9&)nxL!llwQ(C10kwbqb6eVnuH4ZS``*4vT1~0_oQV@$2Tw7x zYIYZ2JKx*Y2>-mUvS=zce>UnHwwwy^nxtP)WDWI}t2iQ6Foq+keFif0S;-D{zOx!B zsm*;uTSZUC>t>Lusc&|jQ-5XoD7ubDyPfOX2rP;+@qTuEzb@aiJ2U%41n?hZ6R3?C z`CF)Zo^!TAcNH-nEwm)^QZUfqiscn{eT}i==u!Hp@aKzUiE^|S-nWi%AWjHy*mT>? zEy>;GIrln8S2l%L35`y4bW%0ee`!kjxlDDw{j|K<;{bZTb;;+c!QAQ8cb^i2aWK+v zY*Hz%E3})K(%KM-9terFW{apeC?DJ1e^#v>r0gEv>0FUK|4Zd!BfNcXZ4D{@Zf&)%iFdzT?cl+S zRY`oMiP_m~NNyaOFuD51!)MlLcBXxJy38S~0TE-RuJj`a4`=iX&GynGcquZ{h%pG%sO zIl(M^aki+VHK!@K*5?AKdU`wMFW4Sk$k|HqvA^YIQ0w)U1v>fizDfjqZy0iO=8(}$ znT+!34qwKy4u%w}$Xh7=?f*C$F&XLH9~_IN*ii0NKl3ssE>Z9x%9ys(9%bI|E6zh*gpSC~B#q(w_TvdqH?|bE`nWCH#=uYc zr|~5Ej>{x1nUP32TbJeVN=@O0%O}=n%j2{HfqLVvGB&)!y9^_)vYldb$j;bxuTM7T z#pZQ`sA}vw2306+q>YvuOn)4NFcR$YwDLbFe367aOzgWdZav^0db}nZtaW^u#g^a= z%Ok&|U?9@T_)!=83o)ivy36 z__DXMwy8Rq;st9Si{d{w(Aux)~hXEGBb`N1rAEzkZA*Dlc%h%sX z!|39}Nz`>;W@StB2a&eVz&iEPjF<|GYIfIiovcrVF0~O@TJbAB za_Jrbq~2c^7Bm|k$c9jj%J>Gl;eNpFI*SKHkA+xa2KZ^&01}j5l0=2{_en*3N>R zW%qNG6gE~fUlcv_oaVD?$PjRJR!3W>h7ij?AQ%qzmF{L0)^6&Pqdvakk!X-)KAlmp zLG3CaSN$ZRIVNvKuZ&B#L)7*Q2HStrTk-q=9&PXR2D>sI@7P5>R6*XcOena%9&Q{L zYd7K7$+_dZ%p-@Od0v1L>>ob+uJd;F6(E=Z=V^FNMHaC9P*g%@<=MC7L7hmahp#L( zBC(d5QY#H8@`pG0X}cv+1QSD#>n>Ewt1Xs~`t^MG&28x?KFz%ojpIx~*4FkfrLzfo z0L5|?{CIoc@dM>Ijh8`v^J2$1tjNFv{_3|2cs9)A_H_JOnwW-^$#&&wVow2Gs($9~ zS697_xLxdB=fPyh1sCUBAMK6zbK68$@f{DycR9ru_AcbJ#8qS>b2ggytfht z^!EnqeEp{ML|x7nvvTXaQhdsYt#Wj}Fzy zAI_89utz7My#>xrg6y9LZr?7kArDT9xJ@dx^5l$D|CUAl2J)78lQ|vG75syT7@*c5 zHH%A-&q7o7)eM~^%>)HnwH?oVpPO5Jk(VPCVJ3q`$$Y$L`m2}bzIatkKBc*7t>TbO zVZd6l)~J>74dH%u1$e3X;o7JLw5~wSbCOk8;o^q)7A?QEDM8M+(2PFjz7{NBE9$m@ zXjCkxd4h^1`HsU-w|^t|SE+55cYqB3x7yr4n%cs5CqhW(TqPiD;&A;>&i ze3BmRqO2-rbnkM0j^h18tVk@!=kK&tj|$uTU+Y>N_1CrrrNVC%C8;syveF9meKZM; zUk$%&S|%QOw$+UTEbP$EuATebea`KGL6649iygjLDZ-$t~;JH1K)R%y*f% z`Lu^W{iE8{P@GnGmad7>tP4^0*13Jfi1`U0I-A#aFsF+!zodzGJ39sVctr|mxx=M< z(I#2E!XXjWSawMUHp6Ua-}4)0Cwv0$opEnyOmnr}Vv%NfvqIl2+yBd#p{4UF5H2*M zQCUJq!;M|j#ktwXdw##9zNb1E$^ys4o~KB0|FDMt_x!^qb(L1BOGaIS^l9dL!D3^N#1A7S(&AG#4zy;O%R>qxNDuqp{U5$5tZ7brVvH z_#|x-d}w7a8g&9R#~M$|nGdTK0gX*WzENS*>qJRK#P=9@aAh-)d~}&!c|5^IA2eXL zVJAk&+!Qf0u{0yOG*i7aW9TI8xuoobo?AU5OgPdEpJRo)cyDHU5iiZ;EnCx#PZo01 zNZ5`3_F`KR;EY3UsD)+;{7No);c?UGy})>I$%iUD)JR;#dWSm;kyQZCLPX#HRifVi zgZ8|F^t_82cEJlAeqcF7awi>$*O5Z5L`l@If`bzAwLwwFaeKJtG+O9+0+)u$ZX$J) zDh3U^5|HNf$5#d!MR&3hVgidR6|RHzh}Wz61U1C4KR8N0xLkRTh|gLeq?Fa_kIUC(tsYCm?p_Z9;x>iu*CtKctusVz$01Zr8LAHyy7+Xl=zB% zk^PVr#N-2jV^?EfDf({tqU~R+W}54?YsJezeCVmk4~~JZ_&qgQ;&T(Q0)UkR>YO9t z{pKK)t#pULTcLGiD1fU6YjPwBoY)kiN(B+WaerfiN<|aozWAyJjvJr@4v_xEFe6*1 zmp>ok6mc-zezrYhxSvEo3e=%Y>Q&y<;@+JaxEqD*jrF2zd&PLgC_^F2C4G`Q#tI78 zn-#3COs=&0&v2AsZDH=@B3HIUO`KT#-jHAM4NP-KI)8+}{76gs zEH@5*>pG3SLMnFoG0={9-vW*z41F#y^}`bIOpB@Eadhmw2>X3nD*ZzzoLf7BRTA8V zR9?JdJ@`9E?bpu6GSv$8AArJnwncVV!hQI(`eh)R3$G}t&qBRV1#X)vE*XZU_JMt*Z*0@cMLE_P!)|uxd|pLygSDdlqe$C_4XR!p9J0>Z`K5e15%5DsOCL z+?pa7v$~a1WYd(<^kwyXLV|*1jBlVk9|we;yAiEqWWZbGBkP?LCpTZJM}oDEi-h8k zFRtQzfPu%TCD&&xH&`={D9+VgKU3626lYDxGR501U)`pJdnx=!>WiKBx5IOR=ZWuY zi97b%y=wg6k6_50t{Q8GCo~&QJ)yVXY*4skdPeU5{O6H9@h;1He)&D)tvIEI)SYZW zp_z2edb-?#atY5jaSh5|-6>IOqtQ4Q9oCI z$K<=^Wc#z$=8@=$B6`($h$ERwI^Fo1s%ep6e?|M#mnK|xLJKvoei|+_Dc{g>sNI9j z0i4ZM;sk$~&F%#&4X(RO6U?u+0?NNGIs$c-LR~qr=e5KEf4B@M%9m+D!w>tM zajo3KMQ^{-O?D7D9Elr0qx|DWzkvFsubtVo()Lj<+X3CRVl^RbZF*jBPrtopXB$mb ziZCJ!rXOq8C)DDKz^D<5D9f~pii`JrpIWnRc`FZ~2;&-$y`)l8OTIAV~}OCugNkB*+SWOlcllC zmYu<98cSpy`|tF>{^vU1>+`*z`#JY=(r>@N4XCL-c}hz|bCVSU373UH*e=jOAd8^> zK7V=44uQ~te(o9sa)$u|0bdB6AOvy`mYqWF^fSUmLMZR zxq?0xWHP7|(1Y_qaGV|IB%;g^?-vDZL;lfLxuWKxT!;vs6-nT25Tf)@<_?-+ob|Sv zrc%lg>BF3-mbd$o2YjT^;pqbRvn5@mgi#KwAFJLoYHJWYixWRe#Eq*h#S{@s+}EA^`P@EV8Nh9%!ce{J6%v8p3HbG`FAhe{Y?(W zV>pbE7{cT3ZGvBbbB^KXr8hUOQNJyR`%d8P z83J$^VBl{xHz-J?)TR;RF(dS>27{B`jPayvbtN`32DD=MBsT@2z#Jav#?Kpvz=hoo z6?GfRObdh@nnO2D!eRjJzLVSi@9#Jh zibLXP0NU&4=AboDntd|2aoRX{>JPG7=LRm>k2210R_Ka-dIa2K7$sbubHJh;bfLA4 zHB;VLhD(XH%1alP1$U4n3U;-i#de zE{L)#9-Df!{xbe}ePQO-x(+tFpn6O9!K>4-)U!GgvMfd0cSUeeV<;(q@sMwH-pU;L zvTzh=Hk8OWLICMn6jHlB{Vt(?bWzFd`{AZ!X&+r^nRuz0snICG_1`)ieYVE49;;!_ zF^-zJl|X%`eYzN!FiIyf+WP_LhUS4S0hi;cwer>L$`8(#lJOydnky^eq~_03I&g&j zLgx6L6E)9S4ae1Y;hi>hYAX{HT>Imws;C~U^09 z*$ZEey3A)Hfl5!4-#O{)x5B-3Hcwlhf=;pbxFNPOrV0nQnU7rL3=yg7RrLqWhmZIF zi8GkgF&^jAFdBSZt!4SK$A!aGbo}~zW|KGJsKD6i@yVfdN*CJMS7an#>bVSRzX>CYHTi!9gLP+u$gkZ8 zJi-WO+5LMBBO_in8->VenITJh*^b`dOjJvFWnYCwTz6wlwre42`C^hA;AiwcS+xHfCF^x}Q||JHXAw~@@H?lyhz@hz zTve9QGdrq^U#pEh)U8b}>ee6S>rs_**O^rld~RSnOxU{lus10P293&V`f*ihi+bBj zRnkcRL9%;}xq+_O-o6}bzHv*evDTQ`4GTenwW0fm=8LhNWhCQcO&w`d6JBq1;JlEz z{?{lk(P@soh;N;h#(0I@b*~sCWj^e=!%>`k z_0WcSe28~h_C6!q9(vz1pSfY_@}Z#6>?*sag(X|7H4w+=>*)9JSNlNhf5D!{jpgcy zTh6LopPrnZ<$8P;E^K`(q5J40QoGJV;g?};JTCvlO44;uVa`E@9M|}omhK$I&JX=! zINP9cT?39PkndH1E4CMZ){?I!7HlW?B)N(o#ioUNF~{4vYW1#C){hs3MtKJ~TQ>4~ z&p*VWD*%cR6lT0*=D(8GoIVr18q-%-?-tRD`EGHr%r@^>AIiA9|0}~LNgoc)os2!{ zRC?3;rRl|=><7n8n*J#+2dDCPk7f@1=7ef{W#76?^t%vi@3w4jia%16Y2{Nkj`)1Z zsv>-YF@SgBO54V*0O*2t7$1M%EotkgJ92FnM-D(a0}ccA--~8q+yJ~RWeLo`S9s=X zkukAtr|O|G7uDO{Fr?_EgI}lziW#E+)fMNiQVJUH^|NhPwu>`wm}f`$qW0DHG}pfa>Q{W%+}nIGFD|RXC~a(oRxg~)5ePk%gG*| zd-4q#6-@7~CWFQmKOA$cTN}U7Ibiz8f#bFA{MBC^_0ZYqs>fSz1KwrwSagO&Zm`>b z+UEs$EQ}BL&@3$_hK0=FZap8P9jxd9;}sB zs|?TYiX@csqvS*d`R!5Ut*R6BsLo)ey(4UrrPEp`0Y8)ebzb@OPR)3~LZS1O?c9x@ zJa@P<=4okW7$v-xERxV>w56~vb!Z*^p7wS8t00+@2Su_QmYsYBIE?0`(6<@!!M!XX zCz-OQBVjBW(?0e^1-lgM!JK*`d_MIj8fLUP_Pr(nnPU=|H^>w5E+?2pdWzc{yZ7cb zOW&QW+^lrHL;ib-qS54D6Z?)h~pVoeZ&O&cF1s zG$hjHEk@R8n!gcUD_Dg~BJYZ%`@DavDvyq)>z*PVjD05{x9 z(fY-gMftYnZ8+Nxm#*4*iR-Zzgc4wVajT4RrPjC<#G%TrhGF>D#sQfzj#z! zg%y4;J~>D?LL@( zb}8m{@s3Q1)XATBJv-aaC~E6ZK1bWPW<<;PG%y2uw7?~5Ng`0{b@}Ke(AIR}P=){0 z()eWByqC|k1c-6ZnPAInQB(YUa1sL^k7=r`B-ah1`j_p55_rN+A!`-aTfQ+g)*YaCwU2 zS+8@*Aw9o;Qfdb?%ABNwA{h=m>71X#LEh*0?SN9!+EoRnkqBx z;}x#Czv&zgGNh@cHG5bd|X054II+M7;s&V+3eDPRu|6L zUMX&dvLjKxv{W-iM%#sx=#?D*>}?l_@gA-sf~E{jo3f4z zJJnUCbK_`ayh)zk&h)zkzYc`}wTF2DKf6wfa zf6J1Xd*_G8W!C@*T;ss#k0dis{)mj*IXT1(!P`dkvdFX%1&Nn+SpjP&;U z+;b9_dKh3(Qu(#J>2VOsA8~t*sm#Tg6#e_-qb)I)WACbJ?wLml(rzG7@=&&#DBIX>*79$!ClH^JgjM`I(lf{|RUjzq?5>$ZGSheDg!)X;D W=)H*jcO3EucO1)UD #include "l4d_survivor_identity_fix.inc" +char ReserveLevels[4][] = { + "Public", "Watch", "Admin-Only", "Private" +}; + static ArrayList LasersUsed; -static ConVar hLaserNotice, hFinaleTimer, hFFNotice, hMPGamemode, hPingDropThres; -static int iFinaleStartTime, botDropMeleeWeapon[MAXPLAYERS+1], iHighPingCount[MAXPLAYERS+1]; +static ConVar hLaserNotice, hFinaleTimer, hFFNotice, hMPGamemode, hPingDropThres, hForceSurvivorSet; +static int iFinaleStartTime, botDropMeleeWeapon[MAXPLAYERS+1], iHighPingCount[MAXPLAYERS+1], reserveMode; static bool isHighPingIdle[MAXPLAYERS+1], isL4D1Survivors; static Handle hTakeOverBot, hGoAwayFromKeyboard; static char lastSound[MAXPLAYERS+1][64]; @@ -30,7 +34,7 @@ public Plugin myinfo = { url = "" }; -//TODO: Fix ladder issue (click to tp to safe area?) +//TODO: On pickup ammo pack, mark dropped kit/defib public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) { @@ -63,6 +67,7 @@ public void OnPluginStart() { hFFNotice = CreateConVar("sm_ff_notice", "0.0", "Notify players if a FF occurs. 0 -> Disabled, 1 -> In chat, 2 -> In Hint text", FCVAR_NONE, true, 0.0, true, 2.0); hPingDropThres = CreateConVar("sm_autoidle_ping_max", "0.0", "The highest ping a player can have until they will automatically go idle.\n0=OFF, Min is 30", FCVAR_NONE, true, 0.0, true, 1000.0); hMPGamemode = FindConVar("mp_gamemode"); + hForceSurvivorSet = FindConVar("l4d_force_survivorset"); hFFNotice.AddChangeHook(CVC_FFNotice); if(hFFNotice.IntValue > 0) { @@ -78,6 +83,8 @@ public void OnPluginStart() { HookEvent("finale_vehicle_leaving", Event_FinaleEnd); HookEvent("player_bot_replace", Event_BotPlayerSwap); HookEvent("bot_player_replace", Event_BotPlayerSwap); + HookEvent("player_first_spawn", Event_PlayerFirstSpawn); + HookEvent("weapon_drop", Event_WeaponDrop); AutoExecConfig(true, "l4d2_tools"); @@ -86,23 +93,70 @@ public void OnPluginStart() { if(IsFakeClient(client)) { SDKHook(client, SDKHook_OnTakeDamage, Event_OnTakeDamage); SDKHook(client, SDKHook_WeaponDrop, Event_OnWeaponDrop); + } else { + SDKHook(client, SDKHook_WeaponEquip, Event_OnWeaponEquip); } } } HookUserMessage(GetUserMessageId("VGUIMenu"), VGUIMenu, true); - RegAdminCmd("sm_model", Command_SetClientModel, ADMFLAG_ROOT); - RegAdminCmd("sm_surv", Cmd_SetSurvivor, ADMFLAG_ROOT); + RegAdminCmd("sm_model", Command_SetClientModel, ADMFLAG_KICK); + RegAdminCmd("sm_surv", Cmd_SetSurvivor, ADMFLAG_KICK); RegAdminCmd("sm_respawn_all", Command_RespawnAll, ADMFLAG_CHEATS, "Makes all dead players respawn in a closet"); RegAdminCmd("sm_playsound", Command_PlaySound, ADMFLAG_CHEATS, "Plays a gamesound for player"); RegAdminCmd("sm_stopsound", Command_StopSound, ADMFLAG_CHEATS, "Stops the last played gamesound for player"); RegAdminCmd("sm_swap", Command_SwapPlayer, ADMFLAG_CHEATS, "Swarms two player's locations"); + RegAdminCmd("sm_perm", Command_SetServerPermissions, ADMFLAG_KICK, "Sets the server's permissions."); + RegAdminCmd("sm_perms", Command_SetServerPermissions, ADMFLAG_KICK, "Sets the server's permissions."); + RegAdminCmd("sm_permissions", Command_SetServerPermissions, ADMFLAG_KICK, "Sets the server's permissions."); RegConsoleCmd("sm_pmodels", Command_ListClientModels, "Lists all player's models"); CreateTimer(8.0, Timer_CheckPlayerPings, _, TIMER_REPEAT); } +public void OnClientConnected(int client) { + if(!IsFakeClient(client) && reserveMode == 1) { + PrintToChatAll("%N is connecting", client); + } +} + +public void OnClientPostAdminCheck(int client) { + if(!IsFakeClient(client)) { + if(reserveMode == 2) { + if(GetUserAdmin(client) == INVALID_ADMIN_ID) { + KickClient(client, "Sorry, server is reserved"); + } + }else if(reserveMode == 3) { + KickClient(client, "Sorry, server is reserved"); + } + } +} + +public Action Command_SetServerPermissions(int client, int args) { + if(args > 0) { + char arg1[32]; + GetCmdArg(1, arg1, sizeof(arg1)); + if(StrEqual(arg1, "public", false)) { + reserveMode = 0; + }else if(StrContains(arg1, "notice", false) > -1) { + reserveMode = 1; + }else if(StrContains(arg1, "admin", false) > -1) { + reserveMode = 2; + }else if(StrEqual(arg1, "private", false)) { + reserveMode = 3; + }else { + ReplyToCommand(client, "Usage: sm_reserve [public/notify/admin/private] or no arguments to view current reservation."); + return Plugin_Handled; + } + PrintToChatAll("Server is now %s.", ReserveLevels[reserveMode]); + } else { + ReplyToCommand(client, "Server is currently %s", ReserveLevels[reserveMode]); + } + return Plugin_Handled; +} + + public Action Timer_CheckPlayerPings(Handle timer) { if(hPingDropThres.IntValue != 0) { for (int i = 1; i <= MaxClients; i++ ) { @@ -144,11 +198,12 @@ public Action Command_RespawnAll(int client, int args) { } public Action Command_SwapPlayer(int client, int args) { if(args < 1) { - ReplyToCommand(client, "Usage: sm_swap [player or yourself]"); + ReplyToCommand(client, "Usage: sm_swap [player or yourself] [silent]"); }else{ - char arg1[64], arg2[64]; + char arg1[64], arg2[64], arg3[8]; GetCmdArg(1, arg1, sizeof(arg1)); GetCmdArg(2, arg2, sizeof(arg2)); + GetCmdArg(3, arg3, sizeof(arg3)); char target_name[MAX_TARGET_LENGTH]; int target_list[MAXPLAYERS], target_count; @@ -193,6 +248,10 @@ public Action Command_SwapPlayer(int client, int args) { GetClientAbsAngles(target2, ang2); TeleportEntity(target, pos2, ang2, NULL_VECTOR); TeleportEntity(target2, pos1, ang1, NULL_VECTOR); + if(args < 3 || !StrEqual(arg3, "silent") && !StrEqual(arg2, "silent")) { + EmitSoundToClient(target, "custom/xen_teleport.mp3", target, 0); + EmitSoundToClient(target2, "custom/xen_teleport.mp3", target2); + } } return Plugin_Handled; } @@ -308,7 +367,7 @@ public Action Command_SetClientModel(int client, int args) { } GetSurvivorModel(modelID, modelPath, sizeof(modelPath)); //Convert the l4d1 survivors to proper l4d1 ID if game is l4d1 - if(isL4D1Survivors) modelID = GetSurvivorId(arg2, true); + if(isL4D1Survivors && hForceSurvivorSet != null && hForceSurvivorSet.IntValue < 2) modelID = GetSurvivorId(arg2, true); char target_name[MAX_TARGET_LENGTH]; int target_list[MAXPLAYERS], target_count; @@ -417,31 +476,15 @@ public Action Timer_RequipWeapon(Handle hdl, DataPack pack) { } } -public Action Event_BotPlayerSwap(Event event, const char[] name, bool dontBroadcast) { - int bot = GetClientOfUserId(event.GetInt("bot")); - if(StrEqual(name, "player_bot_replace")) { - //Bot replaced player - SDKHook(bot, SDKHook_WeaponDrop, Event_OnWeaponDrop); - }else{ - //Player replaced a bot - int client = GetClientOfUserId(event.GetInt("player")); - if(botDropMeleeWeapon[bot] > 0) { - int meleeOwnerEnt = GetEntPropEnt(botDropMeleeWeapon[bot], Prop_Send, "m_hOwnerEntity"); - if(meleeOwnerEnt == -1) { - EquipPlayerWeapon(client, botDropMeleeWeapon[bot]); - botDropMeleeWeapon[bot] = -1; - }else{ - PrintToChat(client, "Could not give back your melee weapon, %N has it instead.", meleeOwnerEnt); - } - } - SDKUnhook(bot, SDKHook_WeaponDrop, Event_OnWeaponDrop); - } -} public Action VGUIMenu(UserMsg msg_id, Handle bf, const int[] players, int playersNum, bool reliable, bool init) { char buffer[5]; BfReadString(bf, buffer, sizeof(buffer)); return StrEqual(buffer, "info") ? Plugin_Handled : Plugin_Continue; } +public void OnClientPutInServer(int client) { + if(!IsFakeClient(client)) + SDKHook(client, SDKHook_WeaponEquip, Event_OnWeaponEquip); +} public void OnClientDisconnect(int client) { if(IsClientConnected(client) && IsClientInGame(client) && botDropMeleeWeapon[client] > -1) { float pos[3]; @@ -450,7 +493,32 @@ public void OnClientDisconnect(int client) { botDropMeleeWeapon[client] = -1; } } +int disabledItem[2048]; +//Can also probably prevent kit drop to pick them up +public Action Event_WeaponDrop(Event event, const char[] name, bool dontBroadcast) { + int client = GetClientOfUserId(event.GetInt("userid")); + int weapon = event.GetInt("propid"); + char newWpn[32]; + GetEntityClassname(client, newWpn, sizeof(newWpn)); + if(StrEqual(newWpn, "weapon_ammo_pack")) { + // prevent weapon from being picked up? + disabledItem[weapon] = client; + CreateTimer(10.0, Timer_AllowKitPickup, weapon); + } +} +public Action Event_OnWeaponEquip(int client, int weapon) { + if(disabledItem[weapon] > 0 && disabledItem[weapon] != client) return Plugin_Handled; + return Plugin_Continue; +} +public Action Timer_AllowKitPickup(Handle h, int entity) { + disabledItem[entity] = 0; +} public void OnMapStart() { + AddFileToDownloadsTable("sound/custom/meow1.mp3"); + PrecacheSound("sound/custom/meow1.mp3"); + AddFileToDownloadsTable("sound/custom/xen_teleport.mp3"); + PrecacheSound("sound/custom/xen_teleport.mp3"); + AddFileToDownloadsTable("sound/custom/mariokartmusic.mp3"); PrecacheSound("sound/custom/mariokartmusic.mp3"); HookEntityOutput("info_changelevel", "OnStartTouch", EntityOutput_OnStartTouchSaferoom); @@ -472,7 +540,27 @@ public void OnSceneStageChanged(int scene, SceneStages stage) { } } } - +///AFK BOT WEAPON FIX +public Action Event_BotPlayerSwap(Event event, const char[] name, bool dontBroadcast) { + int bot = GetClientOfUserId(event.GetInt("bot")); + if(StrEqual(name, "player_bot_replace")) { + //Bot replaced player + SDKHook(bot, SDKHook_WeaponDrop, Event_OnWeaponDrop); + }else{ + //Player replaced a bot + int client = GetClientOfUserId(event.GetInt("player")); + if(botDropMeleeWeapon[bot] > 0) { + int meleeOwnerEnt = GetEntPropEnt(botDropMeleeWeapon[bot], Prop_Send, "m_hOwnerEntity"); + if(meleeOwnerEnt == -1) { + EquipPlayerWeapon(client, botDropMeleeWeapon[bot]); + botDropMeleeWeapon[bot] = -1; + }else{ + PrintToChat(client, "Could not give back your melee weapon, %N has it instead.", meleeOwnerEnt); + } + } + SDKUnhook(bot, SDKHook_WeaponDrop, Event_OnWeaponDrop); + } +} public Action Event_OnWeaponDrop(int client, int weapon) { if(!IsValidEntity(weapon)) return Plugin_Continue; char wpn[32]; @@ -486,6 +574,10 @@ public Action Event_OnWeaponDrop(int client, int weapon) { } return Plugin_Continue; } +public void Frame_HideEntity(int entity) { + TeleportEntity(entity, OUT_OF_BOUNDS, NULL_VECTOR, NULL_VECTOR); +} +//STUCK BOTS WITH ZOMBIES FIX public Action Event_OnTakeDamage(int victim, int& attacker, int& inflictor, float& damage, int& damagetype) { if(attacker > MaxClients) { char name[16]; @@ -504,10 +596,7 @@ public Action Event_OnTakeDamage(int victim, int& attacker, int& inflictor, floa } return Plugin_Continue; } -public void Frame_HideEntity(int entity) { - TeleportEntity(entity, OUT_OF_BOUNDS, NULL_VECTOR, NULL_VECTOR); -} - +//MINOR FIXES public void EntityOutput_OnStartTouchSaferoom(const char[] output, int caller, int client, float time) { if(client > 0 && client <= MaxClients && IsValidClient(client) && GetClientTeam(client) == 2) { if(botDropMeleeWeapon[client] > 0) { @@ -539,8 +628,7 @@ public Action Timer_TPBots(Handle timer, int user) { } } } - -//laserNotice +//FRIENDLY FIRE NOTICE public void Event_PlayerHurt(Event event, const char[] name, bool dontBroadcast) { if(hFFNotice.IntValue > 0) { int victim = GetClientOfUserId(event.GetInt("userid")); @@ -559,6 +647,7 @@ public void Event_PlayerHurt(Event event, const char[] name, bool dontBroadcast) } } } +//LASER SIGHT NOTICE public void Event_PlayerUse(Event event, const char[] name, bool dontBroadcast) { if(hLaserNotice.BoolValue) { char entity_name[32]; @@ -575,9 +664,7 @@ public void Event_PlayerUse(Event event, const char[] name, bool dontBroadcast) } } } - - -//finaletimer +//FINALE TIME INFO public void Event_GauntletStart(Event event, const char[] name, bool dontBroadcast) { if(hFinaleTimer.IntValue > 0) { iFinaleStartTime = GetTime(); @@ -600,9 +687,13 @@ public void Event_FinaleEnd(Event event, const char[] name, bool dontBroadcast) } } } -public void Event_CarAlarmTriggered(Event event, const char[] name, bool dontBroadcast) { - int userID = GetClientOfUserId(event.GetInt("userid")); - PrintToChatAll("%N activated a car alarm!", userID); +//Give kits to bots that replace kicked player +public void Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) { + int client = GetClientOfUserId(event.GetInt("userid")); + if(client > 0 && IsFakeClient(client) && HasEntProp(client, Prop_Send, "m_humanSpectatorUserID") && GetEntProp(client, Prop_Send, "m_humanSpectatorUserID") < 0) { + int ent = GivePlayerItem(client, "weapon_first_aid_kit"); + EquipPlayerWeapon(client, ent); + } } /** * Prints human readable duration from milliseconds diff --git a/scripting/include/feedthetrolls.inc b/scripting/include/feedthetrolls.inc deleted file mode 100644 index 1167d43..0000000 --- a/scripting/include/feedthetrolls.inc +++ /dev/null @@ -1,15 +0,0 @@ -public void MarkPlayer(int client, int marker) { - -} - -public void UnmarkPlayer(int client) { - -} - -public void IsPlayerMarked(int client) { - -} - -public void ToggleMarkPlayer(int client, marker) { - -} \ No newline at end of file diff --git a/scripting/include/feedthetrolls/misc.inc b/scripting/include/feedthetrolls/misc.inc index a390be0..7d2304b 100644 --- a/scripting/include/feedthetrolls/misc.inc +++ b/scripting/include/feedthetrolls/misc.inc @@ -40,6 +40,7 @@ bool ToggleMarkPlayer(int client, int target) { Call_PushCell(target); Call_Finish(); g_PendingBanTroll[target] = true; + EnableTroll(target, "NoProfanity"); ShowActivity(client, "marked %N as troll", target); return true; }else{ diff --git a/scripting/include/feedthetrolls/specials.inc b/scripting/include/feedthetrolls/specials.inc index 0e70aa7..e346f01 100644 --- a/scripting/include/feedthetrolls/specials.inc +++ b/scripting/include/feedthetrolls/specials.inc @@ -37,6 +37,7 @@ float GetIdealMinDistance(int specialType) { } bool SpawnSpecialInFace(int target, int specialType) { + if(specialType >= sizeof(SPECIAL_NAMES)) return false; static float pos[3], ang[3]; static float testPos[3]; testPos = pos; @@ -68,6 +69,7 @@ bool SpawnSpecialInFace(int target, int specialType) { } bool SpawnSpecialNear(int target, int specialType) { + if(specialType >= sizeof(SPECIAL_NAMES)) return false; static float pos[3]; if(L4D_GetRandomPZSpawnPosition(target, specialType, 10, pos)) { int special = (specialType == 7) ? L4D2_SpawnWitch(pos, ZERO_VECTOR) : L4D2_SpawnSpecial(specialType, pos, ZERO_VECTOR); diff --git a/scripting/include/ftt.inc b/scripting/include/ftt.inc index 4b43992..0686720 100644 --- a/scripting/include/ftt.inc +++ b/scripting/include/ftt.inc @@ -36,4 +36,4 @@ float ZERO_VECTOR[3] = {0.0, 0.0, 0.0}; #include #include #include -#include \ No newline at end of file +#include diff --git a/scripting/l4d2_vocalize_control.sp b/scripting/l4d2_vocalize_control.sp index dcd8b73..1b7e2f5 100644 --- a/scripting/l4d2_vocalize_control.sp +++ b/scripting/l4d2_vocalize_control.sp @@ -81,10 +81,10 @@ public Action Cmd_VGag(int client, int args) { int playerIndex = gaggedPlayers[client].FindValue(target_list[i]); if(playerIndex > -1) { gaggedPlayers[client].Erase(playerIndex); - ReplyToCommand(client, "Locally vocalize ungagged %s", target_name[i]); + ReplyToCommand(client, "Locally vocalize ungagged %s", target_name); }else{ gaggedPlayers[client].Push(target_list[i]); - ReplyToCommand(client, "Locally vocalize gagged %s", target_name[i]); + ReplyToCommand(client, "Locally vocalize gagged %s", target_name); } } }