Advertisement
Guest User

mix + mirror damage

a guest
Apr 15th, 2020
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.58 KB | None | 0 0
  1. /*==========================================================================
  2. * Start Customization. *
  3. ===========================================================================*/
  4.  
  5. //====================[*Configurations*]===========================//
  6.  
  7. new const MixMaker_CFG[] = "Mix_Maker.cfg"
  8. new const MixMaker_Maps_File[] = "MixMaker_Maps.ini"
  9. new const MixMaker_CFG_Public[] = "publico.cfg"
  10. new const MixMaker_CFG_WarmUP[] = "practica.cfg"
  11. new const MixMaker_CFG_Closed[] = "cerrado.cfg"
  12. new const MixMaker_CFG_Rates[] = "rates.cfg"
  13. new const MixMaker_CFG_Live[] = "vale.cfg"
  14.  
  15. //====================[*Access to all admins commands*]===========================//
  16.  
  17. #define ADMIN_ACCESS ADMIN_CFG
  18.  
  19. /*==========================================================================
  20. * Customization ends here! Editing anything beyond *
  21. * here is not officially supported.Proceed at your own risk... *
  22. ===========================================================================*/
  23.  
  24. //====================[*Includes*]===========================//
  25.  
  26. #include <amxmodx>
  27. #include <amxmisc>
  28. #include <fun>
  29. #include <cstrike>
  30. #include <fakemeta>
  31. #include <hamsandwich>
  32. #include <engine>
  33.  
  34. // =================== [*Mirror Damage Plugin*] =============//
  35.  
  36.  
  37.  
  38. //====================[*Define Plugin Version*]===========================//
  39.  
  40. new const MixMaker_Version[] = "10.0"
  41.  
  42. //====================[*Definitions*]===========================//
  43.  
  44. #define valids_teams(%1) (CS_TEAM_T <= cs_get_user_team(%1) <= CS_TEAM_CT)
  45. #define TEAM_SELECT_VGUI_MENU_ID 2
  46. #define MAXMAPS 20
  47. #define MAPLEN 64
  48.  
  49. //====================[*Global Registrations*]===========================//
  50.  
  51. /* pCvars */
  52. new Enable
  53. new ShowExtras
  54. new TVTEnable
  55. new SetToPublic
  56. new MinPlayers
  57. new LiveType
  58. new Sounds
  59. new SoundsType
  60. new Swaper
  61. new RoundsHalf
  62. new RoundsEnd
  63. new defPassword
  64. new PasswordMode
  65. new ShowBestsFraggers
  66. new NoNick
  67. new NoSay
  68. new NoSayType
  69. new TLPrefix
  70.  
  71. /* pCvars Strings */
  72. new GameName
  73. new ChtPrefix
  74.  
  75. /* Strings */
  76. new szGameName[33]
  77. new szPrefix[33]
  78.  
  79. /* Cvars Pointer */
  80. new pRestart
  81. new pAlltalk
  82. new pPassword
  83.  
  84. /* Messages */
  85. new SayText
  86. new TeamScore
  87.  
  88. /* Players */
  89. new MaxPlayers
  90.  
  91. /* Models */
  92. new const CsInternalModel:CTsModels[] =
  93. {
  94. CS_CT_URBAN,
  95. CS_CT_GSG9,
  96. CS_CT_SAS,
  97. CS_CT_GIGN
  98. }
  99.  
  100. new const CsInternalModel:TsModels[] =
  101. {
  102. CS_T_TERROR,
  103. CS_T_LEET,
  104. CS_T_ARCTIC,
  105. CS_T_GUERILLA
  106. }
  107.  
  108. /* Score */
  109. new ScoreCT
  110. new TotalCT
  111. new ScoreT
  112. new TotalT
  113. new FragsHalf
  114. new FragsEnd
  115. new BestFragger1
  116. new BestFragger2
  117.  
  118. /* Sync Hud */
  119. new shCountdown
  120. new Countdown
  121.  
  122. /* Ban Type */
  123. new BanType[33]
  124.  
  125. /* Maps File */
  126. new Maps[MAXMAPS+1][MAPLEN+1]
  127.  
  128. /* Booleans */
  129. new bool:Half
  130. new bool:End
  131. new bool:bChangeteam
  132. new bool:FirstSpawn[33]
  133. new bool:TLCounterTerrorist[33]
  134. new bool:TLTerrorist[33]
  135. new bool:BlockClCorpse[33]
  136. new bool:SetPublic
  137.  
  138. //====================[*Plugin Start*]===========================//
  139.  
  140. new last_armor[33]
  141. public plugin_init()
  142. {
  143.  
  144. /* Plugin mirror damage */
  145.  
  146.  
  147.  
  148.  
  149. set_task( 2.0, "refresh_armor",_,_,_, "b" );
  150.  
  151.  
  152.  
  153. /* Plugin Registration */
  154. register_plugin("Mix Maker",MixMaker_Version,"#8 SickneSS")
  155.  
  156. /* Dictionary */
  157. register_dictionary("common.txt")
  158.  
  159. /* Cvars */
  160. register_cvar("mixm_version","10.0",FCVAR_SPONLY|FCVAR_SERVER)
  161. register_cvar("mixm_author","#8 SickneSS",FCVAR_SPONLY|FCVAR_SERVER)
  162. register_cvar("amx_mirror_damage", "1");
  163.  
  164. /* pCvars */
  165. Enable = register_cvar("mixm_enable","0")
  166. ShowExtras = register_cvar("mixm_smextras","1")
  167. TVTEnable = register_cvar("mixm_tvtenable","1")
  168. SetToPublic = register_cvar("mixm_set2public","1")
  169. MinPlayers = register_cvar("mixm_minplayers","3")
  170. LiveType = register_cvar("mixm_livetype","0")
  171. Sounds = register_cvar("mixm_sounds","1")
  172. SoundsType = register_cvar("mixm_soundstype","0")
  173. Swaper = register_cvar("mixm_swapteams","1")
  174. RoundsHalf = register_cvar("mixm_rounds2half","15")
  175. RoundsEnd = register_cvar("mixm_rounds2end","16")
  176. defPassword = register_cvar("mixm_defpassword","1337")
  177. PasswordMode = register_cvar("mixm_pshowmode","2")
  178. ShowBestsFraggers = register_cvar("mixm_showbestsfraggers","1")
  179. NoNick = register_cvar("mixm_nonick","0")
  180. NoSay = register_cvar("mixm_nosay","0")
  181. NoSayType = register_cvar("mixm_nosaytype","1")
  182. TLPrefix = register_cvar("mixm_tlprefix","[TL]")
  183.  
  184. /* pCvars Strings */
  185. GameName = register_cvar("mixm_gamename","Mix Maker v10.0")
  186. ChtPrefix = register_cvar("mixm_prefix","!y[!gMix Maker!y]")
  187.  
  188. /* Console Commands */
  189. register_concmd("amx_password","cmdSetPassword",ADMIN_ACCESS,"^"password^"")
  190. register_concmd("amx_alltalk","cmdSetAlltalk",ADMIN_ACCESS,"^n* 1 : Activado^n* 0 : Desactivado")
  191. register_concmd("amx_vale","cmdLive",ADMIN_ACCESS)
  192. register_concmd("amx_live","cmdLive",ADMIN_ACCESS)
  193. register_concmd("amx_nuevo","cmdNew",ADMIN_ACCESS)
  194. register_concmd("amx_new","cmdNew",ADMIN_ACCESS)
  195.  
  196. /* Say Commands */
  197. register_saycmd("on","cmdOn",ADMIN_ACCESS)
  198. register_saycmd("off","cmdOff",ADMIN_ACCESS)
  199. register_saycmd("spec","cmdSpec",ADMIN_ACCESS)
  200. register_saycmd("spect","cmdSpec",ADMIN_ACCESS)
  201. register_saycmd("vale","cmdLive",ADMIN_ACCESS)
  202. register_saycmd("live","cmdLive",ADMIN_ACCESS)
  203. register_saycmd("cfg","MixMenu",ADMIN_ACCESS)
  204. register_saycmd("mix","MixMenu",ADMIN_ACCESS)
  205. register_saycmd("menu","MixMenu",ADMIN_ACCESS)
  206. register_saycmd("map","MapsMenu",ADMIN_ACCESS)
  207. register_saycmd("maps","MapsMenu",ADMIN_ACCESS)
  208. register_saycmd("nonick","cmdNoNick",ADMIN_ACCESS)
  209. register_saycmd("noname","cmdNoNick",ADMIN_ACCESS)
  210. register_saycmd("nosay","cmdNoSay",ADMIN_ACCESS)
  211. register_saycmd("nochat","cmdNoSay",ADMIN_ACCESS)
  212. register_saycmd("block","cmdTeams",ADMIN_ACCESS)
  213.  
  214. /* Hooks & Commands */
  215. register_concmd("chooseteam","HookChangeteam")
  216. register_concmd("jointeam","HookChangeteam")
  217. register_clcmd("say","cmdSayPassOrSayAlltalk")
  218. register_clcmd("say_team","cmdSayPassOrSayAlltalk")
  219. register_clcmd("say","cmdBlock")
  220. register_clcmd("say","cmdSayRestart",ADMIN_ACCESS)
  221.  
  222. /* Forwards */
  223. register_forward(FM_GetGameDescription,"fwdGamename")
  224. register_forward(FM_ClientUserInfoChanged,"fwdClientInfoChanged")
  225. register_forward(FM_TraceLine,"traceline",1);
  226.  
  227. /* Ham Registration */
  228. RegisterHam(Ham_Spawn,"player","HamSpawnPlayer",1)
  229.  
  230. /* Messages */
  231. register_message(get_user_msgid("TeamScore"),"MessageTeamScore")
  232. register_message(get_user_msgid("SayText"),"MessageNameChange")
  233. register_message(get_user_msgid("ShowMenu"),"MessageShowMenu")
  234. register_message(get_user_msgid("VGUIMenu"),"MessageVGUIMenu")
  235. register_message(get_user_msgid("ClCorpse"),"MessageClCorpse")
  236.  
  237. /* Events */
  238. register_event("TeamScore","EventTeamScore","a")
  239. register_logevent("LogEventRoundEnd",2,"1=Round_End")
  240. register_event("HLTV","EventHLTV","a","1=0","2=0")
  241. register_event("Damage", "Event_Damage", "b", "2!0", "3=0", "4!0" );
  242.  
  243. return PLUGIN_CONTINUE
  244. }
  245. //----------------------------------------------------------//
  246.  
  247. //-----------mirror damage ------------------//
  248. public traceline(Float:v1[3],Float:v2[3],noMonsters,attacker)
  249. {
  250. new victim = get_tr(TR_pHit);
  251. if(is_user_connected(attacker) && is_user_alive(attacker) && get_user_team(victim) == get_user_team(attacker) && victim != attacker && get_cvar_num("amx_mirror_damage") == 1 && get_cvar_num("mp_friendlyfire") == 1 && (entity_get_int(attacker, EV_INT_button) & IN_ATTACK || entity_get_int(attacker, EV_INT_button) & IN_ATTACK2))
  252. {
  253. set_tr(TR_pHit,attacker); // make users shoot themselves
  254. }
  255. }
  256.  
  257. public Event_Damage()
  258. {
  259. new damage = read_data(2);
  260. new victim = read_data(0);
  261. new weapon, hitplace;
  262. if (victim)//check if victim is not "WORLD"
  263. {
  264. new attacker = get_user_attacker(victim,weapon,hitplace);
  265. if(attacker)//check if attacker is not "WORLD"
  266. {
  267. new weaponname[32] = "null";
  268. if(weapon) {
  269. get_weaponname(weapon,weaponname,31);
  270. }
  271. if(get_user_team(victim) == get_user_team(attacker) && victim != attacker && get_cvar_num("amx_mirror_damage") == 1 && get_cvar_num("mp_friendlyfire") == 1)
  272. {
  273. new HP;
  274. if(is_user_connected(attacker) && is_user_alive(attacker) && get_user_godmode(attacker) == 0)
  275. {
  276. HP = get_user_health(attacker) - damage;
  277. if(HP > 0)
  278. set_user_health(attacker,(HP));
  279. else
  280. //user_kill(attacker);
  281. fakedamage(attacker, weaponname, float(damage), DMG_GENERIC);
  282. }
  283.  
  284. HP = get_user_health(victim);
  285. if(HP > 0)
  286. {
  287. set_user_health(victim,(HP+damage));
  288. set_user_armor(victim,last_armor[victim]);
  289. }
  290.  
  291. }
  292. last_armor[victim] = get_user_armor(victim)
  293. }
  294. }
  295. }
  296.  
  297. public refresh_armor()
  298. {
  299. new aTemp[32], iTempNum
  300. get_players(aTemp, iTempNum, "")
  301.  
  302. for (new i=0; i<iTempNum; i++) {
  303. last_armor[aTemp[i]] = get_user_armor(aTemp[i]);
  304. }
  305. return PLUGIN_HANDLED
  306. }
  307.  
  308.  
  309. //----------------------------------------------------------//
  310. public plugin_cfg()
  311. {
  312. /* Mix Maker Configuration File */
  313. new Path[256]
  314. get_configsdir(Path,255)
  315. format(Path,255,"%s/%s",Path,MixMaker_CFG)
  316.  
  317. if(!file_exists(Path))
  318. log_amx("[AMXX] Configuration file can't be located")
  319. else
  320. server_cmd("exec %s",Path)
  321.  
  322. /* Cvars Pointer */
  323. pRestart = get_cvar_pointer("sv_restart")
  324. pAlltalk = get_cvar_pointer("sv_alltalk")
  325. pPassword = get_cvar_pointer("sv_password")
  326.  
  327. /* Players */
  328. MaxPlayers = get_maxplayers()
  329.  
  330. /* Messages */
  331. SayText = get_user_msgid("SayText")
  332. TeamScore = get_user_msgid("TeamScore")
  333.  
  334. /* Strings */
  335. get_pcvar_string(GameName,szGameName,32)
  336. get_pcvar_string(ChtPrefix,szPrefix,32)
  337.  
  338. /* Continue working with amx_off */
  339. if(is_plugin_loaded("Pause Plugins") != -1)
  340. server_cmd("amx_pausecfg add ^"Mix Maker^"")
  341. }
  342.  
  343. //====================[*Set to Public*]===========================//
  344.  
  345. public EventHLTV()
  346. {
  347. new GetPlayers = get_playersnum(1)
  348. new Players = get_pcvar_num(MinPlayers)
  349.  
  350. if(GetPlayers <= Players && get_pcvar_num(SetToPublic))
  351. {
  352. if(SetPublic)
  353. {
  354. ScoreCT = 0
  355. TotalCT = 0
  356. ScoreT = 0
  357. TotalT = 0
  358. Half = false
  359. End = false
  360. bChangeteam = false
  361. server_cmd("exec %s",MixMaker_CFG_Public)
  362. server_exec()
  363. }
  364. else
  365. {
  366. SetPublic = true
  367. ChatColor(0,"%s !ySe seteara el servidor en modo publico por la cantidad de personas en el servidor",szPrefix)
  368. }
  369.  
  370. }
  371. }
  372.  
  373. //====================[*Game Name*]===========================//
  374.  
  375. public fwdGamename()
  376. {
  377. forward_return(FMV_STRING,szGameName)
  378. return FMRES_SUPERCEDE
  379. }
  380.  
  381. //====================[*Welcome Message*]===========================//
  382.  
  383. public client_putinserver(id)
  384. FirstSpawn[id] = true
  385. //----------------------------------------------------------//
  386. public HamSpawnPlayer(id)
  387. {
  388. if(get_pcvar_num(Enable) && FirstSpawn[id])
  389. {
  390. ChatColor(id,"!yEste servidor usa !tMix Maker v%s !yby !g#8 SickneSS",MixMaker_Version)
  391. FirstSpawn[id] = false
  392. }
  393.  
  394. }
  395. //----------------------------------------------------------//
  396. public client_disconnect(id)
  397. {
  398. if(FirstSpawn[id] || TLCounterTerrorist[id] || TLTerrorist[id] || BlockClCorpse[id])
  399. {
  400. FirstSpawn[id] = false
  401. TLCounterTerrorist[id] = false
  402. TLTerrorist[id] = false
  403. BlockClCorpse[id] = false
  404. }
  405.  
  406. if(BanType[id] > 0)
  407. BanType[id] = 0
  408. }
  409.  
  410. //====================[*AMXX*]===========================//
  411.  
  412. public cmdOn(id,level,cid)
  413. {
  414. if(!cmd_access(id,level,cid,1))
  415. return PLUGIN_HANDLED
  416.  
  417. server_cmd("amx_on")
  418. return PLUGIN_HANDLED
  419. }
  420. //----------------------------------------------------------//
  421. public cmdOff(id,level,cid)
  422. {
  423. if(!cmd_access(id,level,cid,1))
  424. return PLUGIN_HANDLED
  425.  
  426. server_cmd("amx_off")
  427. return PLUGIN_HANDLED
  428. }
  429.  
  430. //====================[*Goto Spectator*]===========================//
  431.  
  432. public cmdSpec(id)
  433. {
  434. if(!valids_teams(id))
  435. ChatColor(id,"%s Ya eres espectador",szPrefix)
  436.  
  437. if(is_user_alive(id))
  438. {
  439. set_pev(id,pev_deadflag,DEAD_DEAD)
  440. cs_set_user_team(id,CS_TEAM_SPECTATOR)
  441.  
  442. BlockClCorpse[id] = true
  443. }
  444. else
  445. ChatColor(id,"%s Debes estar vivo para usar este comando",szPrefix)
  446.  
  447. return PLUGIN_HANDLED
  448. }
  449. //----------------------------------------------------------//
  450. public MessageClCorpse()
  451. {
  452. static id
  453.  
  454. id = get_msg_arg_int(12)
  455.  
  456. if(BlockClCorpse[id])
  457. {
  458. BlockClCorpse[id] = false
  459.  
  460. return PLUGIN_HANDLED
  461. }
  462.  
  463. return PLUGIN_CONTINUE
  464. }
  465.  
  466. //====================[*Live*]===========================//
  467.  
  468. public cmdLive(id,level,cid)
  469. {
  470. if(!cmd_access(id,level,cid,1))
  471. return PLUGIN_HANDLED
  472.  
  473. if(get_pcvar_num(Enable))
  474. {
  475. new name[32]
  476. get_user_name(id,name,31)
  477.  
  478. ChatColor(0,"%s ADMIN %s : Ejecuto el vale",szPrefix,name)
  479.  
  480. if(get_pcvar_num(Swaper))
  481. bChangeteam = true
  482.  
  483. server_cmd("amx_off")
  484.  
  485. new szPassword[64]
  486. get_pcvar_string(pPassword,szPassword,63)
  487.  
  488. new szDefPassword[64]
  489. get_pcvar_string(defPassword,szDefPassword,63)
  490.  
  491. if(!szPassword[0])
  492. set_pcvar_string(pPassword,szDefPassword)
  493.  
  494. if(Half)
  495. {
  496. ScoreCT = 0
  497. ScoreT = 0
  498. }
  499. else
  500. {
  501. ScoreCT = 0
  502. TotalCT = 0
  503. ScoreT = 0
  504. TotalT = 0
  505. End = false
  506. }
  507.  
  508. switch(get_pcvar_num(LiveType))
  509. {
  510. case 0 :
  511. {
  512. Countdown = 5
  513. shCountdown = CreateHudSyncObj()
  514. cmdCountdown()
  515. }
  516.  
  517. case 1 : cmdVale()
  518.  
  519. case 2 :
  520. {
  521. server_cmd("exec %s",MixMaker_CFG_Live)
  522. server_exec()
  523. }
  524. }
  525. }
  526. else
  527. ChatColor(id,"%s Mix Maker desactivado",szPrefix)
  528. return PLUGIN_HANDLED
  529. }
  530. //----------------------------------------------------------//
  531. public cmdCountdown()
  532. {
  533. if(Countdown <= 0)
  534. cmdVale()
  535. else
  536. {
  537. if(get_pcvar_num(Sounds))
  538. {
  539. new szNum[6]
  540. num_to_word(Countdown,szNum,5)
  541.  
  542. client_cmd(0,"spk ^"%s/%s^"",get_pcvar_num(SoundsType) ? "vox" : "fvox",szNum)
  543. }
  544.  
  545. set_hudmessage(255,0,0,-1.0,-1.0,1,6.0,1.0)
  546. ShowSyncHudMsg(0,shCountdown,"[%d]",Countdown)
  547.  
  548. set_task(1.0,"cmdCountdown")
  549.  
  550. if(Countdown == 3)
  551. {
  552. ChatColor(0,"%s Alltalk : %s",szPrefix,get_pcvar_num(pAlltalk) ? "Activado" : "Desactivado")
  553.  
  554. new szPassword[64]
  555. get_pcvar_string(pPassword,szPassword,63)
  556.  
  557. if(szPassword[0])
  558. ChatColor(0,"%s Password : %s",szPrefix,szPassword)
  559.  
  560. }
  561. }
  562. Countdown --
  563. }
  564. //----------------------------------------------------------//
  565. public cmdVale()
  566. {
  567. set_hudmessage(64, 64, 64, -1.0, 0.17, 2, 0.1, 3.0, 0.05, 1.0, 1)
  568. show_hudmessage(0,"Vale al Restart de 3")
  569. set_task(2.0,"cmdRestart")
  570. set_task(5.0,"cmdRestart")
  571. set_task(8.0,"cmdRestart3")
  572. set_task(12.0,"cmdStart")
  573. }
  574. //----------------------------------------------------------//
  575. public cmdRestart()
  576. set_pcvar_num(pRestart,1)
  577. //----------------------------------------------------------//
  578. public cmdRestart3()
  579. set_pcvar_num(pRestart,3)
  580. //----------------------------------------------------------//
  581. public cmdStart()
  582. {
  583. set_hudmessage(44, 156, 122, -1.0, 0.17, 1, 0.1, 3.0, 0.05, 1.0, 1)
  584. show_hudmessage(0,"Comienza el Match^n%s Parte^nGood Luck & Have Fun",Half ? "Segunda" : "Primera")
  585. }
  586.  
  587. //====================[*Score And Swaper]===========================//
  588.  
  589. public EventTeamScore()
  590. {
  591. if(get_pcvar_num(Enable))
  592. {
  593. new szTeam[2]
  594. read_data(1,szTeam,1)
  595.  
  596. switch(szTeam[0])
  597. {
  598. case 'C' : ScoreCT = read_data(2)
  599.  
  600. case 'T' :
  601. {
  602. ScoreT = read_data(2)
  603. LogEventRoundEnd()
  604. }
  605. }
  606. }
  607. }
  608. //----------------------------------------------------------//
  609. public MessageTeamScore(id)
  610. {
  611. if(get_pcvar_num(Enable) && Half)
  612. UpdateTeamScore()
  613. }
  614. //----------------------------------------------------------//
  615. public LogEventRoundEnd()
  616. {
  617. if(get_pcvar_num(Enable))
  618. {
  619. new RoundsH = get_pcvar_num(RoundsHalf)
  620. new RoundsE = get_pcvar_num(RoundsEnd)
  621.  
  622. if(ScoreCT + ScoreT >= RoundsH && (!Half))
  623. {
  624. Half = true
  625.  
  626. FragsHalf = Best_Fraggers()
  627. BestFragger1 = get_user_frags(FragsHalf)
  628.  
  629. if(get_pcvar_num(Swaper))
  630. cmdSwap()
  631.  
  632. TotalCT = ScoreT
  633. TotalT = ScoreCT
  634.  
  635. ScoreCT = 0
  636. ScoreT = 0
  637.  
  638. set_pcvar_num(pRestart,1)
  639. }
  640.  
  641. if(Half)
  642. {
  643. UpdateTeamScore()
  644.  
  645. if(ScoreCT + TotalCT >= RoundsE)
  646. {
  647. set_hudmessage(64, 64, 255, -1.0, -1.0, 1)
  648. show_hudmessage(0,"Game Over^nCounter-Terrrorists Ganan El Mapa")
  649.  
  650. End = true
  651. }
  652.  
  653. if(ScoreT + TotalT >= RoundsE)
  654. {
  655. set_hudmessage(255, 64, 64, -1.0, -1.0, 1)
  656. show_hudmessage(0,"Game Over^nTerrorist Team Ganan El Mapa")
  657.  
  658. End = true
  659. }
  660.  
  661. if(ScoreCT + TotalCT >= RoundsH && ScoreT + TotalT >= RoundsH)
  662. {
  663. set_hudmessage(64, 255, 64, -1.0, -1.0, 1)
  664. show_hudmessage(0,"Game Over^nMapa Empatado")
  665.  
  666. End = true
  667. }
  668. }
  669.  
  670. if(End)
  671. {
  672. FragsEnd = Best_Fraggers()
  673. BestFragger2 = get_user_frags(FragsEnd)
  674.  
  675. End = false
  676. Half = false
  677. bChangeteam = false
  678. set_pcvar_num(Enable,0)
  679.  
  680. server_cmd("exec %s",MixMaker_CFG_WarmUP)
  681.  
  682. if(get_pcvar_num(ShowBestsFraggers))
  683. set_task(5.0,"BestFrgrs")
  684. }
  685. }
  686. }
  687. //----------------------------------------------------------//
  688. public cmdSwap()
  689. {
  690. new Players[32]
  691. new Num
  692. get_players(Players,Num,"ch")
  693.  
  694. new Index
  695. for(new i = 0;i < Num;i++)
  696. {
  697. Index = Players[i]
  698.  
  699. switch(cs_get_user_team(Index))
  700. {
  701. case CS_TEAM_CT : cs_set_user_team(Index,CS_TEAM_T,TsModels[random(sizeof (TsModels))])
  702.  
  703. case CS_TEAM_T : cs_set_user_team(Index,CS_TEAM_CT,CTsModels[random(sizeof (CTsModels))])
  704. }
  705. }
  706. }
  707. //----------------------------------------------------------//
  708. public Best_Fraggers()
  709. {
  710. new Players[32]
  711. new Num
  712. get_players(Players,Num,"ch")
  713.  
  714. new Index
  715. new GetFrags
  716. for(new i = 0;i < Num;i++)
  717. {
  718. Index = Players[i]
  719.  
  720. if(!GetFrags)
  721. GetFrags = Players[0]
  722.  
  723. if(get_user_frags(Index) > get_user_frags(GetFrags))
  724.  
  725. GetFrags = Index
  726. }
  727. return GetFrags
  728. }
  729. //----------------------------------------------------------//
  730. public BestFrgrs()
  731. {
  732. new BestF1[32]
  733. get_user_name(FragsHalf,BestF1,31)
  734.  
  735. new BestF2[32]
  736. get_user_name(FragsEnd,BestF2,31)
  737.  
  738. set_hudmessage(64, 64, 64, -1.0, 0.29, 2, 0.1, 10.0, 0.05, 1.0, 1)
  739. show_hudmessage(0,"Mas Fragger Primera Mitad %s Con %i Frags^nMas Fragger Segunda Mitad %s Con %i Frags",BestF1,BestFragger1,BestF2,BestFragger2)
  740. }
  741.  
  742. //====================[*Data Clear*]===========================//
  743.  
  744. public cmdNew(id,level,cid)
  745. {
  746. if(!cmd_access(id,level,cid,1))
  747. return PLUGIN_HANDLED
  748.  
  749. ScoreCT = 0
  750. TotalCT = 0
  751. ScoreT = 0
  752. TotalT = 0
  753. Half = false
  754. End = false
  755. bChangeteam = false
  756.  
  757. return PLUGIN_HANDLED
  758. }
  759.  
  760. //====================[*Block Change Team*]===========================//
  761.  
  762. public cmdTeams(id,level,cid)
  763. {
  764. if(!cmd_access(id,level,cid,1))
  765. return PLUGIN_HANDLED
  766.  
  767. if(!get_pcvar_num(Enable))
  768. return PLUGIN_HANDLED
  769.  
  770. new name[32]
  771. get_user_name(id,name,31)
  772.  
  773. bChangeteam = !bChangeteam
  774. ChatColor(0,"%s ADMIN %s : %sabilito el cambio de team",szPrefix,name,bChangeteam ? "Desh" : "H")
  775.  
  776. return PLUGIN_HANDLED
  777. }
  778. //----------------------------------------------------------//
  779. public MessageShowMenu(msgid, dest, id)
  780. {
  781. static team_select[] = "#Team_Select"
  782. static menu_text_code[sizeof team_select]
  783.  
  784. get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
  785.  
  786. if(equal(menu_text_code, team_select))
  787. {
  788. if(get_pcvar_num(Enable) && bChangeteam)
  789. {
  790. ShowMenuTeams(id)
  791. return PLUGIN_HANDLED
  792. }
  793. }
  794.  
  795. return PLUGIN_CONTINUE
  796. }
  797. //----------------------------------------------------------//
  798. public MessageVGUIMenu(msgid, dest, id)
  799. {
  800. if (!(get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID))
  801. {
  802. if(get_pcvar_num(Enable) && bChangeteam)
  803. {
  804. ShowMenuTeams(id)
  805. return PLUGIN_HANDLED
  806. }
  807. }
  808.  
  809. return PLUGIN_CONTINUE
  810. }
  811. //----------------------------------------------------------//
  812. public HookChangeteam(id)
  813. {
  814. if(get_pcvar_num(Enable) && bChangeteam)
  815. {
  816. if(!valids_teams(id))
  817. ShowMenuTeams(id)
  818. else
  819. ChatColor(id,"%s No puedes cambiarte de team en este momento",szPrefix)
  820.  
  821. return PLUGIN_HANDLED
  822. }
  823.  
  824. return PLUGIN_CONTINUE
  825. }
  826. //----------------------------------------------------------//
  827. public ShowMenuTeams(id)
  828. {
  829. new Menu = menu_create("\r[Mix Maker] \yTeams Menu :","ChangeTeam_Handler")
  830.  
  831. new Players[32]
  832. new Num
  833. get_players(Players,Num,"ceh","TERRORIST")
  834.  
  835. if(Num >= 5)
  836. menu_additem(Menu,"\dTerrorist","1")
  837. else
  838. menu_additem(Menu,"Terrorist","1")
  839.  
  840. new Playersz[32]
  841. new Numz
  842. get_players(Playersz,Numz,"ceh","CT")
  843.  
  844. if(Numz >= 5)
  845. menu_additem(Menu,"\dCounter-Terrorist","2")
  846. else
  847. menu_additem(Menu,"Counter-Terrorist","2")
  848.  
  849. menu_additem(Menu,"Spectator","3")
  850.  
  851. menu_setprop(Menu,MPROP_EXITNAME,"Cerrar")
  852. menu_display(id,Menu)
  853. return PLUGIN_HANDLED
  854. }
  855. //----------------------------------------------------------//
  856. public ChangeTeam_Handler(id,Menu,item)
  857. {
  858. if(item == MENU_EXIT)
  859. {
  860. menu_destroy(Menu)
  861. return PLUGIN_HANDLED
  862. }
  863.  
  864. new iData[6]
  865. new iName[64]
  866. new Access
  867. new Callback
  868. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  869.  
  870. new Item = str_to_num(iData)
  871.  
  872. switch(Item)
  873. {
  874. case 1 :
  875. {
  876. new Players[32]
  877. new Num
  878. get_players(Players,Num,"ceh","TERRORIST")
  879.  
  880. if(Num >= 5)
  881. ChatColor(id,"%s Terrorist Team Full!",szPrefix)
  882. else
  883. engclient_cmd(id,"jointeam","1")
  884. }
  885.  
  886. case 2 :
  887. {
  888. new Players[32]
  889. new Num
  890. get_players(Players,Num,"ceh","CT")
  891.  
  892. if(Num >= 5)
  893. ChatColor(id,"%s Counter-Terrorist Team Full!",szPrefix)
  894. else
  895. engclient_cmd(id,"jointeam","2")
  896. }
  897.  
  898. case 3 : engclient_cmd(id,"jointeam","6")
  899. }
  900. menu_destroy(Menu)
  901. return PLUGIN_HANDLED
  902. }
  903.  
  904. //====================[*Set Password*]===========================//
  905.  
  906. public cmdSetPassword(id,level,cid)
  907. {
  908. if(!cmd_access(id,level,cid,2))
  909. return PLUGIN_HANDLED
  910.  
  911. new szPassword[64]
  912. read_argv(1,szPassword,63)
  913. set_pcvar_string(pPassword,szPassword)
  914. remove_quotes(szPassword)
  915.  
  916. static name[32]
  917. get_user_name(id,name,31)
  918.  
  919. if(szPassword[0])
  920. {
  921. switch(get_pcvar_num(PasswordMode))
  922. {
  923. case 0 : ChatColor(0,"%s ADMIN %s : Cambio el password a ***PROTECTED***",szPrefix,name)
  924.  
  925. case 1 :
  926. {
  927. ChatColor(0,"%s ADMIN %s : Cambio el password a %s",szPrefix,name,szPassword)
  928. client_cmd(0,"password ^"%s^"",szPassword)
  929. }
  930.  
  931. case 2 :
  932. {
  933. for(new i = 1;i <= MaxPlayers;i++)
  934. {
  935. if(get_user_flags(i) & ADMIN_ACCESS)
  936. {
  937. ChatColor(i,"%s ADMIN %s : Cambio el password a %s",szPrefix,name,szPassword)
  938. client_cmd(i,"password ^"%s^"",szPassword)
  939. }
  940. else
  941. ChatColor(i,"%s ADMIN %s : Cambio el password a ***PROTECTED***",szPrefix,name)
  942. }
  943. }
  944. }
  945. }
  946.  
  947. return PLUGIN_HANDLED
  948. }
  949.  
  950. //====================[*Set Alltalk*]===========================//
  951.  
  952. public cmdSetAlltalk(id,level,cid)
  953. {
  954. if(!cmd_access(id,level,cid,2))
  955. return PLUGIN_HANDLED
  956.  
  957. new nAlltalk[2]
  958. read_argv(1,nAlltalk,1)
  959. set_pcvar_num(pAlltalk,str_to_num(nAlltalk))
  960. remove_quotes(nAlltalk)
  961.  
  962. new name[32]
  963. get_user_name(id,name,31)
  964.  
  965. ChatColor(0,"%s ADMIN %s : %sctivo el alltalk",szPrefix,name,get_pcvar_num(pAlltalk) ? "A" : "Desa")
  966.  
  967. return PLUGIN_HANDLED
  968. }
  969.  
  970. //====================[*Say Pass Or Say Alltalk*]===========================//
  971.  
  972. public cmdSayPassOrSayAlltalk(id)
  973. {
  974. new said[192]
  975. read_args(said,191)
  976.  
  977. new ServerIp[25]
  978. get_user_ip(0,ServerIp,24,0)
  979.  
  980. new szPassword[64]
  981. get_pcvar_string(pPassword,szPassword,63)
  982.  
  983. if(containi(said,"alltalk") != -1)
  984. ChatColor(id,"%s Alltalk : %s",szPrefix,get_pcvar_num(pAlltalk) ? "Activado" : "Desactivado")
  985.  
  986. if(containi(said,"pass") != -1
  987. || containi(said,"pw") != -1)
  988. {
  989. if(szPassword[0])
  990. {
  991. ChatColor(id,"%s Password : %s",szPrefix,szPassword)
  992. client_cmd(id,"password ^"%s^"",szPassword)
  993. }
  994. else
  995. ChatColor(id,"%s El servidor no tiene password",szPrefix)
  996. }
  997.  
  998. if(containi(said,"data") != -1
  999. || containi(said,"datos") != -1)
  1000. {
  1001. if(szPassword[0])
  1002. ChatColor(id,"%s connect %s; password %s",szPrefix,ServerIp,szPassword)
  1003. else
  1004. ChatColor(id,"%s connect %s",szPrefix,ServerIp)
  1005. }
  1006.  
  1007. return PLUGIN_CONTINUE
  1008. }
  1009.  
  1010. //====================[*Name Change Blocker*]===========================//
  1011.  
  1012. public cmdNoNick(id,level,cid)
  1013. {
  1014. if(!cmd_access(id,level,cid,1))
  1015. return PLUGIN_HANDLED
  1016.  
  1017. new name[32]
  1018. get_user_name(id,name,31)
  1019.  
  1020. set_pcvar_num(NoNick,get_pcvar_num(NoNick) == 0 ? 1 : 0)
  1021. ChatColor(0,"%s ADMIN %s : %sabilito el cambio de nick",szPrefix,name,get_pcvar_num(NoNick) ? "Desh" : "H")
  1022.  
  1023. return PLUGIN_HANDLED
  1024. }
  1025. //----------------------------------------------------------//
  1026. public fwdClientInfoChanged(id,buffer)
  1027. {
  1028. if(!get_pcvar_num(NoNick) || is_user_admin(id) || !is_user_connected(id))
  1029. return FMRES_IGNORED
  1030.  
  1031. new name[32]
  1032. new newname[32]
  1033.  
  1034. get_user_name(id,name,31)
  1035. engfunc(EngFunc_InfoKeyValue,buffer,"name",newname,31)
  1036.  
  1037. if(!equal(name,newname))
  1038. {
  1039. engfunc(EngFunc_SetClientKeyValue,id,buffer,"name",name)
  1040. client_cmd(id,"name ^"%s^"",name)
  1041.  
  1042. ChatColor(id,"%s No puedes cambiarte el nombre en este momento",szPrefix)
  1043. }
  1044.  
  1045. return FMRES_IGNORED
  1046. }
  1047. //----------------------------------------------------------//
  1048. public MessageNameChange(id)
  1049. {
  1050. if(!get_pcvar_num(NoNick) || !is_user_connected(id))
  1051. return PLUGIN_CONTINUE
  1052.  
  1053. if(is_user_admin(id))
  1054. return PLUGIN_CONTINUE
  1055.  
  1056. new szInfo[64]
  1057. get_msg_arg_string(2,szInfo,63)
  1058.  
  1059. if(equali(szInfo,"#Cstrike_Name_Change"))
  1060. return PLUGIN_HANDLED
  1061.  
  1062. return PLUGIN_CONTINUE
  1063. }
  1064.  
  1065. //====================[*Chat Blocker*]===========================//
  1066.  
  1067. public cmdNoSay(id,level,cid)
  1068. {
  1069. if(!cmd_access(id,level,cid,1))
  1070. return PLUGIN_HANDLED
  1071.  
  1072. new name[32]
  1073. get_user_name(id,name,31)
  1074.  
  1075. set_pcvar_num(NoSay,get_pcvar_num(NoSay) == 0 ? 1 : 0)
  1076. ChatColor(0,"%s ADMIN %s : %sabilito el say",szPrefix,name,get_pcvar_num(NoSay) ? "Desh" : "H")
  1077.  
  1078. return PLUGIN_HANDLED
  1079. }
  1080. //----------------------------------------------------------//
  1081. public cmdBlock(id)
  1082. {
  1083. if(!get_pcvar_num(NoSay))
  1084. return PLUGIN_CONTINUE
  1085.  
  1086. if(get_user_flags(id) & ADMIN_ACCESS)
  1087. return PLUGIN_CONTINUE
  1088.  
  1089. if(!valids_teams(id))
  1090. return PLUGIN_HANDLED
  1091.  
  1092. new said[192]
  1093. read_args(said,191)
  1094. remove_quotes(said)
  1095.  
  1096. if(!strlen(said) || said[0] == ' ')
  1097. return PLUGIN_HANDLED
  1098.  
  1099. static name[32]
  1100. get_user_name(id,name,31)
  1101.  
  1102. if(TLCounterTerrorist[id] || TLTerrorist[id] && get_pcvar_num(TVTEnable))
  1103. {
  1104. new szTLPrefix[13]
  1105. get_pcvar_string(TLPrefix,szTLPrefix,12)
  1106.  
  1107. new Msg[192]
  1108. formatex(Msg,191,"%s^x04%s^x03 %s^x01 : %s",is_user_alive(id) ? "" : "^x01*DEAD* ",szTLPrefix,name,said)
  1109.  
  1110. for(new i = 1;i <= MaxPlayers;i++)
  1111. {
  1112. if(is_user_connected(i))
  1113. {
  1114. if(is_user_alive(id) && is_user_alive(i)
  1115. || !is_user_alive(id) && !is_user_alive(i))
  1116. {
  1117. message_begin(MSG_ONE_UNRELIABLE,SayText,_,i)
  1118. write_byte(id)
  1119. write_string(Msg)
  1120. message_end()
  1121. }
  1122. }
  1123. }
  1124. return PLUGIN_HANDLED
  1125. }
  1126.  
  1127. switch(get_pcvar_num(NoSayType))
  1128. {
  1129. case 0 :
  1130. {
  1131. ChatColor(id,"%s Chat bloqueado",szPrefix)
  1132. return PLUGIN_HANDLED
  1133. }
  1134.  
  1135. case 1 :
  1136. {
  1137. new const Chat[][] =
  1138. {
  1139. "/chat","!chat",".chat"
  1140. }
  1141.  
  1142. for(new i = 0;i < sizeof Chat;i++)
  1143. {
  1144. if(containi(said,Chat[i]) != -1)
  1145. {
  1146. ChatColor(0,"%s El jugador %s esta pidiendo que desbloqueen el chat",szPrefix,name)
  1147. return PLUGIN_HANDLED
  1148. }
  1149. else
  1150. {
  1151. ChatColor(id,"%s Chat bloqueado",szPrefix)
  1152. ChatColor(id,"%s Solo puedes escribir /chat para pedir que desbloqueen el chat",szPrefix)
  1153. return PLUGIN_HANDLED
  1154. }
  1155. }
  1156. }
  1157. }
  1158. return PLUGIN_HANDLED
  1159. }
  1160.  
  1161. //====================[*Restart Command*]===========================//
  1162.  
  1163. public cmdSayRestart(id,level,cid)
  1164. {
  1165. new said[192]
  1166. read_args(said,191)
  1167. remove_quotes(said)
  1168.  
  1169. if(!strlen(said) || said[0] == ' ')
  1170. return PLUGIN_HANDLED
  1171.  
  1172. if(!is_user_admin(id))
  1173. return PLUGIN_CONTINUE
  1174.  
  1175. if(cmd_access(id,level,cid,1))
  1176. {
  1177. new name[32]
  1178. get_user_name(id,name,31)
  1179.  
  1180. new Restart[11]
  1181. new Tmp[11]
  1182. strbreak(said,Restart,10,Tmp,10)
  1183.  
  1184. new Value = str_to_num(Tmp)
  1185.  
  1186. new const Restrts[][] =
  1187. {
  1188. "/restart","!restart",".restart",
  1189. "/rr","!rr",".rr",
  1190. "/r","!r",".r"
  1191. }
  1192.  
  1193. for(new i = 0;i < sizeof Restrts;i++)
  1194. {
  1195. if(equali(Restart,Restrts[i]))
  1196. {
  1197. if(!is_str_num(Tmp) || Value > 60)
  1198. Value = 1
  1199.  
  1200. if(Tmp[0])
  1201. set_pcvar_num(pRestart,Value)
  1202. else
  1203. set_pcvar_num(pRestart,1)
  1204.  
  1205. ChatColor(0,"%s ADMIN %s : Restarteo la ronda [%d]",szPrefix,name,Value)
  1206. return PLUGIN_HANDLED
  1207. }
  1208. }
  1209. }
  1210.  
  1211. return PLUGIN_CONTINUE
  1212. }
  1213.  
  1214. //====================[*Mix Menu*]===========================//
  1215.  
  1216. public MixMenu(id,level,cid)
  1217. {
  1218. if(!cmd_access(id,level,cid,1))
  1219. return PLUGIN_HANDLED
  1220.  
  1221. OpenMixMenu(id)
  1222. return PLUGIN_HANDLED
  1223. }
  1224. //----------------------------------------------------------//
  1225. public OpenMixMenu(id)
  1226. {
  1227. new Menu = menu_create("\r[Mix Maker]\y Mix Menu :","MixMenu_Handler")
  1228.  
  1229. menu_additem(Menu,"Publico","1")
  1230. menu_additem(Menu,"Practica","2")
  1231. menu_additem(Menu,"Cerrado","3")
  1232. menu_additem(Menu,"Rates","4")
  1233. menu_additem(Menu,"Vale","5")
  1234. if(get_pcvar_num(ShowExtras))
  1235. menu_additem(Menu,"Extras","6")
  1236.  
  1237. menu_setprop(Menu,MPROP_EXITNAME,"Cerrar")
  1238.  
  1239. menu_display(id,Menu)
  1240. return PLUGIN_HANDLED
  1241. }
  1242. //----------------------------------------------------------//
  1243. public MixMenu_Handler(id,Menu,item)
  1244. {
  1245. if(item == MENU_EXIT)
  1246. {
  1247. menu_destroy(Menu)
  1248. return PLUGIN_HANDLED
  1249. }
  1250.  
  1251. new iData[6]
  1252. new iName[64]
  1253. new Access
  1254. new Callback
  1255.  
  1256. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  1257.  
  1258. new Key = str_to_num(iData)
  1259.  
  1260. static name[32]
  1261. get_user_name(id,name,31)
  1262.  
  1263. switch(Key)
  1264. {
  1265. case 1 :
  1266. {
  1267. set_hudmessage(0, 255, 0, -1.0, 0.31, 2, 0.1, 3.0, 0.05, 1.0, 1)
  1268. show_hudmessage(0,"Server en modo^nPublico")
  1269. server_cmd("exec %s",MixMaker_CFG_Public)
  1270. server_exec()
  1271. set_task(1.5,"cmdRestart")
  1272. ChatColor(0,"%s ADMIN %s : Ejecuto publico.cfg",szPrefix,name)
  1273.  
  1274. if(is_user_connected(id))
  1275. OpenMixMenu(id)
  1276. }
  1277.  
  1278. case 2 :
  1279. {
  1280. set_hudmessage(0, 0, 255, -1.0, 0.31, 2, 0.1, 3.0, 0.05, 1.0, 1)
  1281. show_hudmessage(0,"Server en modo^nPractica")
  1282. server_cmd("exec %s",MixMaker_CFG_WarmUP)
  1283. server_exec()
  1284. set_task(1.5,"cmdRestart")
  1285. ChatColor(0,"%s ADMIN %s : Ejecuto practica.cfg",szPrefix,name)
  1286.  
  1287. if(is_user_connected(id))
  1288. OpenMixMenu(id)
  1289. }
  1290.  
  1291. case 3 :
  1292. {
  1293. set_hudmessage(255, 0, 0, -1.0, 0.31, 2, 0.1, 3.0, 0.05, 1.0, 1)
  1294. show_hudmessage(0,"Server en modo^nCerrado")
  1295. server_cmd("exec %s",MixMaker_CFG_Closed)
  1296. server_exec()
  1297. set_task(1.5,"cmdRestart")
  1298. ChatColor(0,"%s ADMIN %s : Ejecuto cerrado.cfg",szPrefix,name)
  1299.  
  1300. if(is_user_connected(id))
  1301. OpenMixMenu(id)
  1302. }
  1303.  
  1304. case 4 :
  1305. {
  1306. set_hudmessage(128, 128, 128, -1.0, 0.31, 1, 0.1, 3.0, 0.5, 1.0, 1)
  1307. show_hudmessage(0,"Servidor Rateado")
  1308. server_cmd("exec %s",MixMaker_CFG_Rates)
  1309. ChatColor(0,"%s ADMIN %s : Ejecuto rates.cfg",szPrefix,name)
  1310. server_exec()
  1311. client_cmd(id,"say /maps")
  1312. }
  1313.  
  1314. case 5 : client_cmd(id,"amx_vale")
  1315.  
  1316. case 6 :
  1317. {
  1318. if(get_pcvar_num(ShowExtras) && is_user_connected(id))
  1319. Extras(id)
  1320. else
  1321. {
  1322. ChatColor(id,"%s Submenu Extras Desactivado",szPrefix)
  1323.  
  1324. if(is_user_connected(id))
  1325. OpenMixMenu(id)
  1326. }
  1327. }
  1328. }
  1329. menu_destroy(Menu)
  1330. return PLUGIN_HANDLED
  1331. }
  1332.  
  1333. //====================[*Submenu Extras*]===========================//
  1334.  
  1335. Extras(id)
  1336. {
  1337. new Menu = menu_create("\r[Mix Maker]\y Extras :","ExtraStuff_Handler")
  1338.  
  1339. menu_additem(Menu,"Todos a Spec","1")
  1340. menu_additem(Menu,"Kickear Team","2")
  1341. menu_additem(Menu,"Banear Team","3")
  1342. if(get_pcvar_num(ShowExtras) && get_pcvar_num(TVTEnable))
  1343. menu_additem(Menu,"TVT Menu","4")
  1344.  
  1345. menu_setprop(Menu,MPROP_BACKNAME,"Atras")
  1346. menu_setprop(Menu,MPROP_NEXTNAME,"Siguiente")
  1347. menu_setprop(Menu,MPROP_EXITNAME,"\yMix Menu")
  1348.  
  1349. menu_display(id,Menu)
  1350. return PLUGIN_HANDLED
  1351. }
  1352. //----------------------------------------------------------//
  1353. public ExtraStuff_Handler(id,Menu,item)
  1354. {
  1355. if(item == MENU_EXIT)
  1356. {
  1357. if(is_user_connected(id))
  1358. OpenMixMenu(id)
  1359.  
  1360. return PLUGIN_HANDLED
  1361. }
  1362.  
  1363. new iData[6]
  1364. new iName[64]
  1365. new Access
  1366. new Callback
  1367.  
  1368. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  1369.  
  1370. new Key = str_to_num(iData)
  1371.  
  1372. switch(Key)
  1373. {
  1374. case 1 :
  1375. {
  1376. set_hudmessage(64,64,64,-1.0,0.21,1,0.2,5.0,0.01,0.1)
  1377. show_hudmessage(0,"Todos para Spec")
  1378.  
  1379. for(new i = 1;i <= MaxPlayers;i++)
  1380. {
  1381. if(is_user_connected(i))
  1382. {
  1383. set_pev(i,pev_deadflag,DEAD_DEAD)
  1384. cs_set_user_team(i,CS_TEAM_SPECTATOR)
  1385.  
  1386. BlockClCorpse[i] = true
  1387. }
  1388. }
  1389.  
  1390. if(is_user_connected(id))
  1391. Extras(id)
  1392. }
  1393.  
  1394. case 2 :
  1395. {
  1396. if(is_user_connected(id))
  1397. KickMenu(id)
  1398. }
  1399.  
  1400. case 3 :
  1401. {
  1402. if(is_user_connected(id))
  1403. BanMenu(id)
  1404. }
  1405.  
  1406. case 4 :
  1407. {
  1408. if(get_pcvar_num(ShowExtras) && get_pcvar_num(TVTEnable) && is_user_connected(id))
  1409. TVTMenu(id)
  1410. else
  1411. {
  1412. ChatColor(id,"%s TVT Menu Desactivado",szPrefix)
  1413.  
  1414. if(is_user_connected(id))
  1415. Extras(id)
  1416. }
  1417. }
  1418. }
  1419. menu_destroy(Menu)
  1420. return PLUGIN_HANDLED
  1421. }
  1422.  
  1423. //====================[*Kick Menu*]===========================//
  1424.  
  1425. KickMenu(id)
  1426. {
  1427. new Menu = menu_create("\r[Mix Maker]\y Kick Menu :","KickTeamMenu")
  1428. menu_additem(Menu,"Terrorists","1")
  1429. menu_additem(Menu,"Counter-Terrorists","2")
  1430. menu_additem(Menu,"Spectators","3")
  1431.  
  1432. menu_setprop(Menu,MPROP_EXITNAME,"\yExtras")
  1433.  
  1434. menu_display(id,Menu)
  1435. return PLUGIN_HANDLED
  1436. }
  1437. //----------------------------------------------------------//
  1438. public KickTeamMenu(id,Menu,item)
  1439. {
  1440. if(item == MENU_EXIT)
  1441. {
  1442. if(is_user_connected(id))
  1443. Extras(id)
  1444. }
  1445.  
  1446. new iData[6]
  1447. new iName[64]
  1448. new Access
  1449. new Callback
  1450. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  1451.  
  1452. new Key = str_to_num(iData)
  1453.  
  1454. switch(Key)
  1455. {
  1456. case 1 :
  1457. {
  1458. new name[32]
  1459. get_user_name(id,name,31)
  1460.  
  1461. ChatColor(0,"%s ADMIN %s : Kickeo a los del team Terrorist",szPrefix,name)
  1462.  
  1463. for(new i = 1;i <= MaxPlayers;i++)
  1464. {
  1465. new userid = get_user_userid(i)
  1466.  
  1467. if(!is_user_admin(i))
  1468. {
  1469. if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_T)
  1470. server_cmd("kick #%d [Mix Maker] Kickeado",userid)
  1471. }
  1472. }
  1473. }
  1474.  
  1475. case 2 :
  1476. {
  1477. new name[32]
  1478. get_user_name(id,name,31)
  1479.  
  1480. ChatColor(0,"%s ADMIN %s : Kickeo a los del team Counter-Terrorist",szPrefix,name)
  1481.  
  1482. for(new i = 1;i <= MaxPlayers;i++)
  1483. {
  1484. new userid = get_user_userid(i)
  1485.  
  1486. if(!is_user_admin(i))
  1487. {
  1488. if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_CT)
  1489. server_cmd("kick #%d [Mix Maker] Kickeado",userid)
  1490. }
  1491. }
  1492. }
  1493.  
  1494. case 3 :
  1495. {
  1496. new name[32]
  1497. get_user_name(id,name,31)
  1498.  
  1499. ChatColor(0,"%s ADMIN %s : Kickeo a los del team Spectator",szPrefix,name)
  1500.  
  1501. for(new i = 1;i <= MaxPlayers;i++)
  1502. {
  1503. new userid = get_user_userid(i)
  1504.  
  1505. if(!is_user_admin(i))
  1506. {
  1507. if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_SPECTATOR)
  1508. server_cmd("kick #%d [Mix Maker] Kickeado",userid)
  1509. }
  1510. }
  1511. }
  1512. }
  1513. if(is_user_connected(id))
  1514. Extras(id)
  1515.  
  1516. menu_destroy(Menu)
  1517. return PLUGIN_HANDLED
  1518. }
  1519.  
  1520. //====================[*Ban Menu*]===========================//
  1521.  
  1522. BanMenu(id)
  1523. {
  1524. new Menu = menu_create("\r[Mix Maker]\y Ban Menu :","BanTeamMenu")
  1525. menu_additem(Menu,"Terrorists","1")
  1526. menu_additem(Menu,"Counter-Terrorists","2")
  1527. menu_additem(Menu,"Spectators^n","3")
  1528.  
  1529. static temp[256]
  1530. switch(BanType[id])
  1531. {
  1532. case 0 : formatex(temp,255,"Banear : \rPor 30 minutos")
  1533. case 1 : formatex(temp,255,"Banear : \rPor 60 minutos")
  1534. case 2 : formatex(temp,255,"Banear : \rPermanentemente")
  1535. case 3 : formatex(temp,255,"Banear : \rLocalmente")
  1536. }
  1537. menu_additem(Menu,temp,"4")
  1538.  
  1539. menu_setprop(Menu,MPROP_EXITNAME,"\yExtras")
  1540.  
  1541. menu_display(id,Menu)
  1542. return PLUGIN_HANDLED
  1543. }
  1544. //----------------------------------------------------------//
  1545. public BanTeamMenu(id,Menu,item)
  1546. {
  1547. if(item == MENU_EXIT)
  1548. {
  1549. if(is_user_connected(id))
  1550. Extras(id)
  1551.  
  1552. BanType[id] = 0
  1553. }
  1554.  
  1555. new iData[6]
  1556. new iName[64]
  1557. new Access
  1558. new Callback
  1559. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  1560.  
  1561. new Key = str_to_num(iData)
  1562.  
  1563. switch(Key)
  1564. {
  1565. case 1 :
  1566. {
  1567. static name[32]
  1568. get_user_name(id,name,31)
  1569.  
  1570. switch(BanType[id])
  1571. {
  1572. case 0 : ChatColor(id,"%s ADMIN %s : Baneo por 30 minutos a los del team Terrorist",szPrefix,name)
  1573. case 1 : ChatColor(id,"%s ADMIN %s : Baneo por 60 minutos a los del team Terrorist",szPrefix,name)
  1574. case 2 : ChatColor(id,"%s ADMIN %s : Baneo permanentemente a los del team Terrorist",szPrefix,name)
  1575. case 3 : ChatColor(id,"%s ADMIN %s : Baneo localmente a los del team Terrorist",szPrefix,name)
  1576. }
  1577.  
  1578. for(new i = 1;i <= MaxPlayers;i++)
  1579. {
  1580. new userid = get_user_userid(i)
  1581.  
  1582. if(!is_user_admin(i))
  1583. {
  1584. if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_T)
  1585. {
  1586. switch(BanType[id])
  1587. {
  1588. case 0 : server_cmd("kick #%d [Mix Maker] Baneado por 30 minutos;wait;banid 30;wait;writeid",userid)
  1589. case 1 : server_cmd("kick #%d [Mix Maker] Baneado por 60 minutos;wait;banid 30;wait;writeid",userid)
  1590. case 2 : server_cmd("kick #%d [Mix Maker] Baneado permanentemente;wait;banid 30;wait;writeid",userid)
  1591. case 3 : server_cmd("sxe_ban #%d",userid)
  1592. }
  1593. }
  1594. }
  1595. }
  1596.  
  1597. if(is_user_connected(id))
  1598. Extras(id)
  1599. }
  1600.  
  1601. case 2 :
  1602. {
  1603. static name[32]
  1604. get_user_name(id,name,31)
  1605.  
  1606. switch(BanType[id])
  1607. {
  1608. case 0 : ChatColor(id,"%s ADMIN %s : Baneo por 30 minutos a los del team Counter-Terrorist",szPrefix,name)
  1609. case 1 : ChatColor(id,"%s ADMIN %s : Baneo por 60 minutos a los del team Counter-Terrorist",szPrefix,name)
  1610. case 2 : ChatColor(id,"%s ADMIN %s : Baneo permanentemente a los del team Counter-Terrorist",szPrefix,name)
  1611. case 3 : ChatColor(id,"%s ADMIN %s : Baneo localmente a los del team Counter-Terrorist",szPrefix,name)
  1612. }
  1613.  
  1614. for(new i = 1;i <= MaxPlayers;i++)
  1615. {
  1616. new userid = get_user_userid(i)
  1617.  
  1618. if(!is_user_admin(i))
  1619. {
  1620. if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_CT)
  1621. {
  1622. switch(BanType[id])
  1623. {
  1624. case 0 : server_cmd("kick #%d [Mix Maker] Baneado por 30 minutos;wait;banid 30;wait;writeid",userid)
  1625. case 1 : server_cmd("kick #%d [Mix Maker] Baneado por 60 minutos;wait;banid 30;wait;writeid",userid)
  1626. case 2 : server_cmd("kick #%d [Mix Maker] Baneado permanentemente;wait;banid 30;wait;writeid",userid)
  1627. case 3 : server_cmd("sxe_ban #%d",userid)
  1628. }
  1629. }
  1630. }
  1631. }
  1632.  
  1633. if(is_user_connected(id))
  1634. Extras(id)
  1635. }
  1636.  
  1637. case 3 :
  1638. {
  1639. static name[32]
  1640. get_user_name(id,name,31)
  1641.  
  1642. switch(BanType[id])
  1643. {
  1644. case 0 : ChatColor(id,"%s ADMIN %s : Baneo por 30 minutos a los del team Spectator",szPrefix,name)
  1645. case 1 : ChatColor(id,"%s ADMIN %s : Baneo por 60 minutos a los del team Spectator",szPrefix,name)
  1646. case 2 : ChatColor(id,"%s ADMIN %s : Baneo permanentemente a los del team Spectator",szPrefix,name)
  1647. case 3 : ChatColor(id,"%s ADMIN %s : Baneo localmente a los del team Spectator",szPrefix,name)
  1648. }
  1649.  
  1650. for(new i = 1;i <= MaxPlayers;i++)
  1651. {
  1652. new userid = get_user_userid(i)
  1653.  
  1654. if(!is_user_admin(i))
  1655. {
  1656. if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_SPECTATOR)
  1657. {
  1658. switch(BanType[id])
  1659. {
  1660. case 0 : server_cmd("kick #%d [Mix Maker] Baneado por 30 minutos;wait;banid 30;wait;writeid",userid)
  1661. case 1 : server_cmd("kick #%d [Mix Maker] Baneado por 60 minutos;wait;banid 30;wait;writeid",userid)
  1662. case 2 : server_cmd("kick #%d [Mix Maker] Baneado permanentemente;wait;banid 30;wait;writeid",userid)
  1663. case 3 : server_cmd("sxe_ban #%d",userid)
  1664. }
  1665. }
  1666. }
  1667. }
  1668.  
  1669. if(is_user_connected(id))
  1670. Extras(id)
  1671. }
  1672.  
  1673. case 4 :
  1674. {
  1675. switch(BanType[id])
  1676. {
  1677. case 0 : BanType[id] = 1
  1678. case 1 : BanType[id] = 2
  1679. case 2 : BanType[id] = 3
  1680. case 3 : BanType[id] = 0
  1681. }
  1682.  
  1683. if(is_user_connected(id))
  1684. BanMenu(id)
  1685. }
  1686. }
  1687.  
  1688. menu_destroy(Menu)
  1689. return PLUGIN_HANDLED
  1690. }
  1691.  
  1692. //====================[*Team vs Team Menu*]===========================//
  1693.  
  1694. public TVTMenu(id)
  1695. {
  1696. new Menu = menu_create("\r[Mix Maker]\y TVT Menu :","TVTMenu_Handler")
  1697.  
  1698. menu_additem(Menu,"Setear TL Counter-Terrorist","1")
  1699. menu_additem(Menu,"Setear TL Terrorist","2")
  1700.  
  1701. menu_setprop(Menu,MPROP_EXITNAME,"\yExtras")
  1702.  
  1703. menu_display(id,Menu)
  1704. return PLUGIN_HANDLED
  1705. }
  1706.  
  1707. public TVTMenu_Handler(id,Menu,item)
  1708. {
  1709. if(item == MENU_EXIT)
  1710. {
  1711. if(is_user_connected(id))
  1712. Extras(id)
  1713. }
  1714.  
  1715. new iData[6]
  1716. new iName[64]
  1717. new Access
  1718. new Callback
  1719. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  1720.  
  1721. new TvTChoosed = str_to_num(iData)
  1722.  
  1723. switch(TvTChoosed)
  1724. {
  1725. case 1 :
  1726. {
  1727. for(new i = 1;i <= MaxPlayers;i++)
  1728. TLCounterTerrorist[i] = false
  1729.  
  1730. new Players[32]
  1731. new Num
  1732. get_players(Players,Num,"ceh","CT")
  1733.  
  1734. if(Num >= 5)
  1735. {
  1736. if(is_user_connected(id))
  1737. MenuCounterTerrorist(id)
  1738. }
  1739. else
  1740. {
  1741. ChatColor(id,"%s Debe haber por lo menos 5 jugadores en el team Counter-Terrorist",szPrefix)
  1742.  
  1743. if(is_user_connected(id))
  1744. TVTMenu(id)
  1745. }
  1746.  
  1747. }
  1748.  
  1749. case 2 :
  1750. {
  1751. for(new i = 1;i <= MaxPlayers;i++)
  1752. TLTerrorist[i] = false
  1753.  
  1754. new Players[32]
  1755. new Num
  1756. get_players(Players,Num,"ceh","TERRORIST")
  1757.  
  1758. if(Num >= 5)
  1759. {
  1760. if(is_user_connected(id))
  1761. MenuTerrorist(id)
  1762. }
  1763. else
  1764. {
  1765. ChatColor(id,"%s Debe haber por lo menos 5 jugadores en el team Terrorist",szPrefix)
  1766.  
  1767. if(is_user_connected(id))
  1768. TVTMenu(id)
  1769. }
  1770. }
  1771. }
  1772.  
  1773. menu_destroy(Menu)
  1774. return PLUGIN_HANDLED
  1775. }
  1776.  
  1777. //====================[*Team Leaders*]===========================//
  1778.  
  1779. //-------------------------/* Counter-Terrorists */---------------------------------//
  1780. MenuCounterTerrorist(id)
  1781. {
  1782. new Menu = menu_create("\r[Mix Maker]\y Counter-Terrorists :","CTMenu_Handler")
  1783.  
  1784. static name[32]
  1785. static item[32]
  1786.  
  1787. new Players[32]
  1788. new Num
  1789. get_players(Players,Num,"ceh","CT")
  1790.  
  1791. for(new i = 0;i < Num;i++)
  1792. {
  1793. if(is_user_connected(i) && !is_user_admin(i))
  1794. {
  1795. get_user_name(i,name,31)
  1796. num_to_str(i,item,31)
  1797.  
  1798. menu_additem(Menu,name,item)
  1799. }
  1800. }
  1801.  
  1802. menu_setprop(Menu,MPROP_EXITNAME,"\yTVT Menu")
  1803.  
  1804. menu_display(id,Menu)
  1805. return PLUGIN_HANDLED
  1806. }
  1807. //----------------------------------------------------------//
  1808. public CTMenu_Handler(id,Menu,item)
  1809. {
  1810. if(item == MENU_EXIT)
  1811. {
  1812. if(is_user_connected(id))
  1813. Extras(id)
  1814. }
  1815.  
  1816. new iData[6]
  1817. new iName[64]
  1818. new Access
  1819. new Callback
  1820. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  1821.  
  1822. new Target = str_to_num(iData)
  1823.  
  1824. if(Target)
  1825. {
  1826. TLCounterTerrorist[Target] = true
  1827.  
  1828. new name[32]
  1829. get_user_name(id,name,31)
  1830.  
  1831. ChatColor(id,"%s ADMIN %s : Seteo a %s como TL de los Counter-Terrorists",szPrefix,name,iName)
  1832. }
  1833.  
  1834. if(is_user_connected(id))
  1835. Extras(id)
  1836. return PLUGIN_HANDLED
  1837. }
  1838. //-------------------------/* Terrorists */---------------------------------//
  1839. MenuTerrorist(id)
  1840. {
  1841. new Menu = menu_create("\r[Mix Maker]\y Terrorists :","TMenu_Handler")
  1842.  
  1843. static name[32]
  1844. static item[32]
  1845.  
  1846. new Players[32]
  1847. new Num
  1848. get_players(Players,Num,"ceh","TERRORIST")
  1849.  
  1850. for(new i = 0;i < Num;i++)
  1851. {
  1852. if(is_user_connected(i) && !is_user_admin(i))
  1853. {
  1854. get_user_name(i,name,31)
  1855. num_to_str(i,item,31)
  1856.  
  1857. menu_additem(Menu,name,item)
  1858. }
  1859. }
  1860.  
  1861. menu_setprop(Menu,MPROP_EXITNAME,"\yTVT Menu")
  1862.  
  1863. menu_display(id,Menu)
  1864. return PLUGIN_HANDLED
  1865. }
  1866. //----------------------------------------------------------//
  1867. public TMenu_Handler(id,Menu,item)
  1868. {
  1869. if(item == MENU_EXIT)
  1870. {
  1871. if(is_user_connected(id))
  1872. Extras(id)
  1873. }
  1874.  
  1875. new iData[6]
  1876. new iName[64]
  1877. new Access
  1878. new Callback
  1879. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  1880.  
  1881. new Target = str_to_num(iData)
  1882.  
  1883. if(Target)
  1884. {
  1885. TLTerrorist[Target] = true
  1886.  
  1887. new name[32]
  1888. get_user_name(id,name,31)
  1889.  
  1890. ChatColor(id,"%s ADMIN %s : Seteo a %s como TL de los Terrorists",szPrefix,name,iName)
  1891. }
  1892.  
  1893. if(is_user_connected(id))
  1894. Extras(id)
  1895. return PLUGIN_HANDLED
  1896. }
  1897.  
  1898. //====================[*Maps Menu*]===========================//
  1899.  
  1900. public MapsMenu(id,level,cid)
  1901. {
  1902. if(!cmd_access(id,level,cid,1))
  1903. return PLUGIN_HANDLED
  1904.  
  1905. new Menu = menu_create("\r[Mix Maker]\y Maps Menu :","MapsMenu_Handler")
  1906.  
  1907. /* Mix Maker Maps File */
  1908. new Path[256]
  1909. get_configsdir(Path,255)
  1910. format(Path,255,"%s/%s",Path,MixMaker_Maps_File)
  1911.  
  1912. if(!file_exists(Path))
  1913. {
  1914. log_amx("[AMXX] Maps file can't be located")
  1915. ChatColor(id,"%s No se ha encontrado el archivo de mapas",szPrefix)
  1916. client_cmd(id,"amx_mapmenu")
  1917. }
  1918.  
  1919. new f = fopen(Path,"rt")
  1920.  
  1921. new Mapname[MAPLEN+1]
  1922. new Item
  1923.  
  1924. while(!feof(f))
  1925. {
  1926. fgets(f,Mapname,64)
  1927.  
  1928. trim(Mapname)
  1929. strtolower(Mapname)
  1930.  
  1931. if(!Mapname[0] || Mapname[0] == ';'
  1932. || Mapname[0] == '/' && Mapname[1] == '/' ) continue;
  1933.  
  1934. copy(Maps[Item],64,Mapname)
  1935. Item++
  1936.  
  1937. if(Item >= MAXMAPS+1) break;
  1938.  
  1939. menu_additem(Menu,Mapname,Maps[Item])
  1940. }
  1941. fclose(f)
  1942.  
  1943. menu_setprop(Menu,MPROP_BACKNAME,"Atras")
  1944. menu_setprop(Menu,MPROP_NEXTNAME,"Siguiente")
  1945. menu_setprop(Menu,MPROP_EXITNAME,"Cerrar")
  1946.  
  1947. menu_display(id,Menu)
  1948. return PLUGIN_HANDLED
  1949. }
  1950. //----------------------------------------------------------//
  1951. public MapsMenu_Handler(id,Menu,item)
  1952. {
  1953. if(item == MENU_EXIT)
  1954. {
  1955. menu_destroy(Menu)
  1956. return PLUGIN_HANDLED
  1957. }
  1958.  
  1959. new iData[6]
  1960. new iName[64]
  1961. new Access
  1962. new Callback
  1963. menu_item_getinfo(Menu,item,Access,iData,5,iName,63,Callback)
  1964.  
  1965. if(!is_map_valid(iName))
  1966. ChatColor(id,"%s Mapa no encontrado",szPrefix)
  1967. else
  1968. client_cmd(id,"amx_on;amx_map %s",iName)
  1969.  
  1970. menu_destroy(Menu)
  1971. return PLUGIN_HANDLED
  1972. }
  1973.  
  1974. //====================[*Custom Stocks*]===========================//
  1975.  
  1976. stock register_saycmd(const command[],const function[],flag)
  1977. { /* Made by me to register the say commands with the / - ! and . */
  1978. new temp[64]
  1979. formatex(temp,63,"say /%s",command)
  1980. register_clcmd(temp,function,flag)
  1981. formatex(temp,63,"say !%s",command)
  1982. register_clcmd(temp,function,flag)
  1983. formatex(temp,63,"say .%s",command)
  1984. register_clcmd(temp,function,flag)
  1985.  
  1986. }
  1987. //----------------------------------------------------------//
  1988. stock UpdateTeamScore()
  1989. { /* Made by me to update the score in scoreboard */
  1990. /* Counter-Terrorist */
  1991. message_begin(MSG_ALL,TeamScore)
  1992. write_string("CT")
  1993. write_short(ScoreCT+TotalCT)
  1994. message_end()
  1995.  
  1996. /* Terrorist */
  1997. message_begin(MSG_ALL,TeamScore)
  1998. write_string("TERRORIST")
  1999. write_short(ScoreT+TotalT)
  2000. message_end()
  2001. }
  2002.  
  2003. //===================[*Other Stocks*]===========================//
  2004.  
  2005. stock ChatColor(const id, const input[], any:...)
  2006. { /* Used in all chats */
  2007. new count = 1, players[32]
  2008. static msg[191]
  2009. vformat(msg, 190, input, 3)
  2010.  
  2011. replace_all(msg, 190, "!g", "^x04")
  2012. replace_all(msg, 190, "!y", "^x01")
  2013. replace_all(msg, 190, "!t", "^x03")
  2014.  
  2015. if(id)
  2016. players[0] = id
  2017. else
  2018. get_players(players, count, "ch")
  2019. {
  2020. for (new i = 0; i < count; i++)
  2021. {
  2022. if (is_user_connected(players[i]))
  2023. {
  2024. message_begin(MSG_ONE_UNRELIABLE, SayText, _, players[i])
  2025. write_byte(players[i]);
  2026. write_string(msg);
  2027. message_end();
  2028. }
  2029. }
  2030. }
  2031. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement