Advertisement
Guest User

Untitled

a guest
Dec 14th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 123.71 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <cstrike>
  6. #include <engine>
  7. #include <fun>
  8. #include <fakemeta>
  9. #include <Hnsdvic>
  10. #include <csx>
  11. #include <fvault>
  12.  
  13. #define PLUGIN "Auto-Mix"
  14. #define VERSION "1.1.6"
  15. #define AUTHOR "p1Mp"
  16.  
  17. #pragma dynamic 20480
  18. #define PREFIX "[Auto-Mix]"
  19. #define TIME_MAX 150
  20. #define SPAWN_TASKID 3000
  21.  
  22. #define ADMIN_NONE (1 << 26)
  23.  
  24. #define PLAYER 5
  25. #define MenuCode 205
  26. #define PDActiveItem 373
  27.  
  28. #define cs_get_user_menu(%0) get_pdata_int(%0, MenuCode, PLAYER)
  29.  
  30. static menubody[512]
  31. new SET_CONST_TASKID
  32. new gPlayersLeft
  33. new gMaxPlayers
  34. new gPug_ini_file [64]
  35. new gCptT
  36. new gCptCT
  37. new g_iScore [2]
  38. new g_iLastTeamScore[2]
  39. static gNotRdy[400]
  40. static gRdy[400]
  41. new bool:g_bIsReady[33]
  42. new Float:gTypedCommand[33]
  43. new g_LeftKills[33]
  44. new g_LeftVotes[33]
  45. new g_iTimeLeft[33]
  46. new g_KillsAce[33]
  47. new g_TotalKills[33]
  48. New g_TotalDeaths [33]
  49. New g_BombPlants [33]
  50. new g_BombDefusions[33]
  51. new gPoints[33]
  52. new g_PugLeaves
  53. new bool: g_IsStarted
  54. new bool:g_AfterRdy
  55. new bool:g_KnifeRound
  56. new bool:g_MapChanged
  57. new bool:g_Twon
  58. new bool:g_VoteProg
  59. new bool:g_bStop
  60. new bool:g_bStop2
  61. new bool:g_Restart
  62. new bool:g_givenChance[33]
  63. new g_givenChanceSteamIDs[33][64]
  64. new g_givenTimes
  65. new g_MsgSync
  66. new g_MsgSync3
  67. new g_MsgSync2
  68. new g_MsgSync4
  69. new g_MsgSync5
  70. new g_MsgSync6
  71. new g_MsgSync7
  72. new g_MsgSync8
  73. new g_szTeamName[2]
  74. new g_iTeam
  75. new g_iAltScore
  76. new g_iScoreOffset
  77. new bool:g_CustomGame
  78. new g_bVotes[2]
  79. new g_Menu
  80. new g_PlayersMenu
  81. new g_abMenu
  82. new g_switchmenu
  83. new g_switchVotes[2]
  84. new bool:g_bDidScore
  85. new bool:g_bFFoff
  86. new bool:g_bFFTKStop
  87. new bool:g_bDidVoteFF
  88. new bool:g_bSecondHalf
  89. new bool:g_bCpt
  90. new bool:gDidPlayUntilEnd[33]
  91. new g_NotBalanced
  92. new g_DidWaitEnough
  93. new gPointsVault[] = "Points"
  94. new gChanging, gChangerID
  95. new gChanging2, gChangerID2
  96. new gLeftSteamIDs[300][128], gLastTime[33]
  97. new gLeftTimes
  98. new gEntShowLeft
  99.  
  100. /* Cvars */
  101.  
  102. new cvar_FFvote
  103. new cvar_KnifeRound
  104. new cvar_pLeft
  105. new cvar_pLeftMethod
  106. new cvar_DetectTK
  107. New c r_Mu Temeni
  108. new cvar_AllowShield
  109. new cvar_MapVote
  110. new cvar_Rankings
  111. new cvar_TimeLeft
  112. new cvar_TeamTag
  113. new cvar_AceHud
  114. new cvar_AFKKick
  115. new cvar_ReadyXPos, cvar_ReadyYPos
  116. new cvar_NotReadyXPos, cvar_NotReadyYPos
  117. new cvar_KillPoints, cvar_KnifePoints, cvar_WinsMatchPoints
  118. new cvar_LeavesMatchPoints, cvar_LeavesMatchTime, cvar_PlaysUntilEndPoints
  119. new cvar_TeamKillPoints, cvar_BombPlantPoints, cvar_BombDefusePoints
  120. new cvar_KillLosePoints, cvar_KnifeLosePoints, cvar_LosesMatchPoints
  121. new cvar_RanksSystem, cvar_RanksSystemMessages
  122. new cvar_BeginnerPoints, cvar_RegularPoints, cvar_VeteranPoints
  123. new cvar_ProPoints, cvar_HardCorePoints
  124. new cvar_mp_friendlyfire
  125. new cvar_mp_freezetime
  126. new cvar_mp_roundtime
  127. new cvar_mp_buytime
  128. new cvar_sv_restart
  129. new cvar_sv_password
  130. new cvar_humans_join_team
  131. new cvar_mp_afktime
  132.  
  133. /* Cvars */
  134.  
  135. /* Mute menu */
  136.  
  137. #define MAX_PLAYERS 32
  138.  
  139. new bool:g_mute[MAX_PLAYERS+1][MAX_PLAYERS+1]
  140. new g_menuposition[MAX_PLAYERS+1]
  141. new g_menuplayers[MAX_PLAYERS+1][32]
  142. new g_playersnum[MAX_PLAYERS+1]
  143. new cvar_alltalk
  144.  
  145. /* Mute menu */
  146.  
  147. /* AFK Kicker */
  148.  
  149. #define MIN_AFK_TIME 30 // I use this incase stupid admins accidentally set mp_afktime to something silly.
  150. #define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
  151. #define CHECK_FREQ 5.0 // This is also the warning message frequency.
  152.  
  153. new g_oldangles[33][3]
  154. new Float:g_afktime[33]
  155. new bool:g_spawned[33] = {true, ...}
  156.  
  157. /* AFK Kicker */
  158.  
  159. /* Map & Votes variables */
  160. new g_gVoteMenu
  161. new g_gVotes[5]
  162. new g_rVoteMenu
  163. new g_rVotes[3]
  164. new g_fVoteMenu
  165. new g_fVotes[2]
  166. new g_Maps_Ini_File[64]
  167. new g_MapsCounter
  168. new g_MapsAvailable[30][20]
  169. new g_MapsChosen[4][20]
  170. new g_DoneMaps
  171. new g_ChangeMapTo
  172. new g_LeftBans[24][124]
  173. new g_LeftBansIPs[24][64]
  174. new g_RoundsLeft[24] = {-1, ...}
  175. /* Map & Votes variables */
  176.  
  177. enum {
  178. T_WIN = 0,
  179. CT_WIN = 1
  180. }
  181.  
  182. public plugin_init() {
  183. register_plugin(PLUGIN, VERSION, AUTHOR)
  184.  
  185. cvar_FFvote = register_cvar("pug_ffvote", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  186. cvar_KnifeRound = register_cvar("pug_kniferound", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  187. cvar_pLeft = register_cvar("pug_players", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
  188. cvar_pLeftMethod = register_cvar("pug_playersmethod", "0", FCVAR_ARCHIVE|FCVAR_SERVER)
  189. cvar_DetectTK = register_cvar("pug_detecttk", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  190. d = r_Mu Temeni register_cvar (the "Temeni", "1", FCVAR_SPONLY | FCVAR_SERVER)
  191. cvar_AllowShield = register_cvar("pug_allowshield", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  192. cvar_MapVote = register_cvar("pug_mapvote", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  193. cvar_Rankings = register_cvar("pug_ranking", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  194. cvar_TimeLeft = register_cvar("pug_timeleft", "120", FCVAR_ARCHIVE|FCVAR_SERVER)
  195. cvar_TeamTag = register_cvar("pug_teamtag", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  196. cvar_AceHud = register_cvar("pug_acehud", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  197. cvar_AFKKick = register_cvar("pug_afkkick", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  198. cvar_ReadyXPos = register_cvar("pug_readyxpos", "0.72", FCVAR_ARCHIVE|FCVAR_SERVER)
  199. cvar_ReadyYPos = register_cvar ( "pug_readyypos", "0.19", FCVAR_ARCHIVE | FCVAR_SERVER)
  200. cvar_NotReadyXPos = register_cvar("pug_notreadyxpos", "0.02", FCVAR_ARCHIVE|FCVAR_SERVER)
  201. cvar_NotReadyYPos = register_cvar("pug_notreadyypos", "0.19", FCVAR_ARCHIVE|FCVAR_SERVER)
  202. cvar_RanksSystem = register_cvar("pug_rankssystem", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  203. cvar_RanksSystemMessages = register_cvar("pug_rankssystemmessages", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  204. cvar_KillPoints = register_cvar("pug_killpoints", "4", FCVAR_ARCHIVE|FCVAR_SERVER)
  205. cvar_KillLosePoints = register_cvar("pug_killosepoints", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
  206. cvar_KnifePoints = register_cvar("pug_knifepoints", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
  207. cvar_KnifeLosePoints = register_cvar("pug_knifelosespoints", "4", FCVAR_ARCHIVE|FCVAR_SERVER)
  208. cvar_WinsMatchPoints = register_cvar ( "pug_winsmatchpoints", "15", FCVAR_ARCHIVE | FCVAR_SERVER)
  209. cvar_LosesMatchPoints = register_cvar("pug_losesmatchpoints", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
  210. cvar_LeavesMatchPoints = register_cvar("pug_leavesmatchpoints", "20", FCVAR_ARCHIVE|FCVAR_SERVER)
  211. cvar_LeavesMatchTime = register_cvar("pug_leavesmatchtime", "360", FCVAR_ARCHIVE|FCVAR_SERVER)
  212. cvar_PlaysUntilEndPoints = register_cvar("pug_playsuntilendpoints", "30", FCVAR_ARCHIVE|FCVAR_SERVER)
  213. cvar_TeamKillPoints = register_cvar("pug_teamkillpoints", "8", FCVAR_ARCHIVE|FCVAR_SERVER)
  214. cvar_BombPlantPoints = register_cvar("pug_bombplantpoints", "3", FCVAR_ARCHIVE|FCVAR_SERVER)
  215. cvar_BombDefusePoints = register_cvar("pug_bombdefusepoints", "5", FCVAR_ARCHIVE|FCVAR_SERVER)
  216. cvar_BeginnerPoints = register_cvar("pug_beginner", "200", FCVAR_ARCHIVE|FCVAR_SERVER)
  217. cvar_RegularPoints = register_cvar("pug_regular", "500", FCVAR_ARCHIVE|FCVAR_SERVER)
  218. cvar_VeteranPoints = register_cvar("pug_veteran", "900", FCVAR_ARCHIVE|FCVAR_SERVER)
  219. cvar_ProPoints = register_cvar("pug_pro", "1400", FCVAR_ARCHIVE|FCVAR_SERVER)
  220. cvar_HardCorePoints = register_cvar("pug_hardcore", "1900", FCVAR_ARCHIVE|FCVAR_SERVER)
  221. cvar_mp_afktime = register_cvar("mp_afktime", "40") // Kick people AFK longer than this time
  222.  
  223. register_forward(FM_Voice_SetClientListening, "fwd_voice_setclientlistening")
  224. register_menucmd(register_menuid("mute menu"), 1023, "action_mutemenu")
  225. register_menucmd(register_menuid("ranks info"), 1023, "ranks_showInfo")
  226. register_menucmd(register_menuid("setprices menu"), 1023, "menuHandler")
  227.  
  228. cvar_alltalk = get_cvar_pointer("sv_alltalk")
  229.  
  230. new Ent = create_entity("info_target")
  231. entity_set_string(Ent, EV_SZ_classname, "checking_players_ent")
  232. entity_set_float(Ent, EV_FL_nextthink, halflife_time() + CHECK_FREQ)
  233.  
  234. register_think("checking_players_ent", "afkCheck_entThink")
  235.  
  236. register_dictionary("auto-mix.txt")
  237.  
  238. g_MsgSync = CreateHudSyncObj()
  239. g_MsgSync3 = CreateHudSyncObj()
  240. g_MsgSync4 = CreateHudSyncObj()
  241. g_MsgSync5 = CreateHudSyncObj()
  242. g_MsgSync6 = CreateHudSyncObj()
  243. g_MsgSync7 = CreateHudSyncObj()
  244. g_MsgSync8 = CreateHudSyncObj()
  245. g_MsgSync2 = CreateHudSyncObj()
  246.  
  247. cvar_mp_friendlyfire = get_cvar_pointer("mp_friendlyfire")
  248. cvar_mp_freezetime = get_cvar_pointer("mp_freezetime")
  249. cvar_mp_roundtime = get_cvar_pointer("mp_roundtime")
  250. cvar_mp_buytime = get_cvar_pointer("mp_buytime")
  251. cvar_sv_restart = get_cvar_pointer("sv_restart")
  252. cvar_sv_password = get_cvar_pointer("sv_password")
  253. cvar_humans_join_team = get_cvar_pointer("humans_join_team")
  254.  
  255. gPlayersLeft = get_pcvar_num(cvar_pLeft)
  256.  
  257. get_configsdir(gPug_ini_file, 63);
  258. formatex (gPug_ini_file, 63, "% s / pug.ini", gPug_ini_file);
  259. get_configsdir(g_Maps_Ini_File, 63);
  260. formatex(g_Maps_Ini_File, 63, "%s/maps.ini", g_Maps_Ini_File);
  261. gMaxPlayers = get_maxplayers()
  262. SET_CONST_TASKID = scanForTaskID()
  263. formatex(gNotRdy, charsmax(gNotRdy), "%L:^n", LANG_PLAYER, "HUD_NOT_READY")
  264. formatex(gRdy, charsmax(gRdy), "%L:^n", LANG_PLAYER, "HUD_READY")
  265.  
  266. register_cmd("rr", "Restart")
  267. register_cmd("restart", "RestartS")
  268. register_cmd("add", "Prepare")
  269. register_cmd("unadd", "unPrepare")
  270. register_cmd("credit", "credits")
  271. register_cmd("credits", "credits")
  272. register_cmd("ranks", "showRanks")
  273. register_cmd("rank", "showRanks")
  274. register_cmd("startmatch", "forcedStart_AdminCmd")
  275. register_cmd("stopmatch", "forcedStop_AdminCmd")
  276. register_cmd("showranks", "showRanks")
  277. register_cmd("xp", "showRanks")
  278. register_cmd("shop", "showRanks")
  279. register_cmd("level", "showRanks")
  280. register_cmd("cmd", "cmds")
  281. register_cmd("cmds", "cmds")
  282. register_cmd("commands", "cmds")
  283. register_cmd("menu", "player")
  284. register_clcmd("chooseteam", "handled")
  285. register_clcmd("jointeam", "handled")
  286. Rjistr_kand ( "Votban" "Votban")
  287. register_cmd("score", "showscore")
  288. register_clcmd("say", "clcmd_say")
  289. register_clcmd("say_team", "clcmd_say")
  290. register_clcmd("amx_automix_settings", "openSettingsMenu")
  291. register_clcmd("menuselect 8", "blockShield")
  292. register_clcmd("shield", "blockShield_ConsoleCommand")
  293. register_logevent("round_end", 2, "1=Round_End")
  294. register_event("TeamScore", "Event_TeamScore", "a")
  295. register_event("DeathMsg", "Event_DeathMsg_Knife", "a", "1>0")
  296. register_event("CurWeapon", "Event_CurWeapon_NotKnife", "be", "1=1", "2!29")
  297. register_forward(FM_ClientUserInfoChanged, "infochanged")
  298. register_forward(FM_GetGameDescription, "Change" );
  299. register_forward(FM_PrecacheModel, "blockShieldPrecache")
  300. RegisterHam(Ham_Touch, "weapon_shield", "fwNoShield", 1)
  301. RegisterHam(Ham_Spawn, "player", "fwPlayerSpawn")
  302. }
  303.  
  304. public Change() {
  305. forward_return(FMV_STRING, "Auto-Mix By p1Mp");
  306. return FMRES_SUPERCEDE;
  307. }
  308.  
  309. public Event_CurWeapon_NotKnife(id) {
  310. if ( g_Restart || !g_KnifeRound )
  311. return
  312.  
  313. if( !user_has_weapon(id, CSW_KNIFE ) )
  314. give_item(id, "weapon_knife")
  315. engclient_cmd(id, "weapon_knife")
  316. }
  317.  
  318. public Restart(id) {
  319.  
  320. if (is_user_admin(id))
  321. server_cmd("sv_restart 1")
  322. else
  323. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "NOT_ADMIN")
  324. }
  325.  
  326. public RestartS(id) {
  327.  
  328. if (is_user_admin(id))
  329. server_cmd("restart")
  330.  
  331. else
  332. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "NOT_ADMIN")
  333. }
  334.  
  335. public showscore(id) {
  336. if ( !get_pcvar_num(cvar_TeamTag) && g_IsStarted)
  337. {
  338. CrashAttempt (id)
  339. client_print(0, print_chat, "%L", LANG_PLAYER, "SHOW_SCORE", g_iScore[0], g_iScore[1])
  340. return PLUGIN_CONTINUE;
  341. }
  342.  
  343. if (g_IsStarted)
  344. {
  345. if (g_Twon)
  346. {
  347. if (g_bSecondHalf)
  348. client_print(0, print_chat, "%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[0], g_iScore[1])
  349.  
  350. else
  351. client_print(0, print_chat, "%L", LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[1], g_iScore[0])
  352. }
  353.  
  354. else
  355. {
  356. if (g_bSecondHalf)
  357. client_print(0, print_chat, "%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[1], g_iScore[0])
  358. else
  359. client_print(0, print_chat, "%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[0], g_iScore[1])
  360. }
  361. }
  362.  
  363. else
  364. {
  365. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_NOT_STARTED")
  366. }
  367. return PLUGIN_CONTINUE
  368. }
  369.  
  370. public Event_DeathMsg_Knife()
  371. {
  372. if (g_Restart ||! g_IsStarted)
  373. return
  374.  
  375. new attacker = read_data(1)
  376. new victim = read_data(2)
  377.  
  378. if ( !( 1 <= attacker <= gMaxPlayers ) || !( 1 <= victim <= gMaxPlayers) )
  379. return;
  380.  
  381. if ( cs_get_user_team(attacker) == cs_get_user_team(victim) && attacker != victim )
  382. {
  383. client_print(attacker, print_chat, "%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_TK", get_pcvar_num(cvar_TeamKillPoints))
  384. gPoints[attacker] -= get_pcvar_num(cvar_TeamKillPoints)
  385. SaveStats (attacker)
  386. }
  387.  
  388. if( victim != attacker && cs_get_user_team(attacker) != cs_get_user_team(victim))
  389. {
  390. new weap[7]
  391.  
  392. if( read_data(4, weap, charsmax(weap)) == 5 && equal(weap, "knife") )
  393. {
  394. new prince [32]
  395. new nameV[32]
  396.  
  397. get_user_name (Attacker, black, 31)
  398. get_user_name(victim, nameV, 31)
  399.  
  400. set_hudmessage(255, 255, 255, 0.04, 0.63, 0, 6.0, 12.0)
  401. ShowSyncHudMsg(0, g_MsgSync5, "%L", LANG_PLAYER, "JUST_KNIFED", nameA, nameV)
  402. gPoints[attacker] += get_pcvar_num(cvar_KnifePoints)
  403. gPoints[victim] -= get_pcvar_num(cvar_KnifeLosePoints)
  404. SaveStats (attacker)
  405. SaveStats(victim)
  406.  
  407. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KnifePoints))
  408. client_print(attacker, print_chat, "%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_KNIFE", get_pcvar_num(cvar_KnifePoints))
  409. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KnifeLosePoints) )
  410. client_print(victim, print_chat, "%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_KNIFE", get_pcvar_num(cvar_KnifeLosePoints))
  411. }
  412.  
  413. else
  414. {
  415. gPoints[attacker] += get_pcvar_num(cvar_KillPoints)
  416. gPoints[victim] -= get_pcvar_num(cvar_KillLosePoints)
  417. SaveStats (attacker)
  418. SaveStats(victim)
  419.  
  420. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KillPoints) )
  421. client_print(attacker, print_chat, "%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_KILL", get_pcvar_num(cvar_KillPoints))
  422. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KillLosePoints) )
  423. client_print(victim, print_chat, "%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_KILL", get_pcvar_num(cvar_KillLosePoints))
  424. }
  425.  
  426. g_KillsAce[attacker]++
  427. g_TotalKills[attacker]++
  428. g_TotalDeaths [victim] ++
  429. }
  430. }
  431.  
  432. public bomb_planted( planter )
  433. {
  434. if (g_IsStarted)
  435. {
  436. g_BombPlants [planter] ++
  437. client_print(planter, print_chat, "%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_PLANT", get_pcvar_num(cvar_BombPlantPoints))
  438. gPoints[planter] += get_pcvar_num(cvar_BombPlantPoints)
  439. Save Stats (plants)
  440. }
  441. }
  442.  
  443. public bomb_defused( defuser )
  444. {
  445. if (g_IsStarted)
  446. {
  447. g_KillsAce[defuser] -= 3
  448. g_BombDefusions[defuser]++
  449. client_print(defuser, print_chat, "%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_DEFUSE", get_pcvar_num(cvar_BombPlantPoints))
  450. gPoints[defuser] += get_pcvar_num(cvar_BombDefusePoints)
  451. SaveStats(defuser)
  452. }
  453. }
  454.  
  455. public fwNoShield(ent)
  456. {
  457. New id = PEV (ENT pev_owner)
  458.  
  459. if( is_user_alive(id) )
  460. {
  461. No_Shield_Message(id)
  462. remove_shield(id)
  463. return HAM_SUPERCEDE
  464. }
  465.  
  466. return HAM_IGNORED
  467. }
  468.  
  469. public blockShield(id)
  470. {
  471. if( !get_pcvar_num(cvar_AllowShield) && is_user_alive(id) && cs_get_user_menu(id) == 10 && cs_get_user_team(id) == CS_TEAM_CT )
  472. {
  473. No_Shield_Message(id)
  474. return PLUGIN_HANDLED_MAIN
  475. }
  476.  
  477. return PLUGIN_CONTINUE
  478. }
  479.  
  480. public blockShield_ConsoleCommand(id)
  481. {
  482. if( !get_pcvar_num(cvar_AllowShield) && is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT )
  483. {
  484. No_Shield_Message(id)
  485. return PLUGIN_HANDLED
  486. }
  487.  
  488. return PLUGIN_CONTINUE
  489. }
  490.  
  491. public client_command(id)
  492. {
  493. static szCommand[8]
  494.  
  495. if( read_argv(0, szCommand, charsmax(szCommand)) == 6 && equali(szCommand, "shield") && ( !get_pcvar_num(cvar_AllowShield) || g_KnifeRound ) )
  496. {
  497. No_Shield_Message(id)
  498. return PLUGIN_HANDLED
  499. }
  500. return PLUGIN_CONTINUE
  501. }
  502.  
  503. public CS_InternalCommand(id, const szCommand[])
  504. {
  505. if( equali(szCommand, "shield") && ( !get_pcvar_num(cvar_AllowShield) || g_KnifeRound ) )
  506. {
  507. No_Shield_Message(id)
  508. return PLUGIN_HANDLED
  509. }
  510. return PLUGIN_CONTINUE
  511. }
  512.  
  513. No_Shield_Message(id)
  514. {
  515. if ( !get_pcvar_num(cvar_AllowShield) || g_KnifeRound )
  516. {
  517. if ( g_KnifeRound )
  518. client_print(id, print_center, "%L", LANG_PLAYER, "NO_SHIELD_KNIFEROUND")
  519. else
  520. client_print(id, print_center, "%L", LANG_PLAYER, "NO_SHIELD")
  521.  
  522. }
  523. }
  524.  
  525. public client_damage(attacker, victim, damage, wpnindex, hitplace, TA) {
  526. if (!get_pcvar_num(cvar_DetectTK))
  527. return PLUGIN_CONTINUE
  528.  
  529. if (attacker == victim)
  530. {
  531. damage = 0
  532. }
  533.  
  534. if (g_IsStarted)
  535. {
  536. if (TA == 1)
  537. {
  538. g_LeftKills[attacker] += damage
  539.  
  540.  
  541. if (g_LeftKills[attacker] >= 100)
  542. {
  543. new nameofp[50]
  544.  
  545. get_user_name(attacker, nameofp, 49)
  546.  
  547. server_cmd("amx_banip #%d 10 ^"%L^"", get_user_userid(attacker), LANG_PLAYER, "YOU_HAVE_BEEN_WARNED", PREFIX)
  548. set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
  549. show_hudmessage(0, "%L", LANG_PLAYER, "TK_BANNED", nameofp)
  550. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_DISABLED")
  551. set_pcvar_num(cvar_mp_friendlyfire, 0)
  552.  
  553. new players[32], pnum, tempid;
  554.  
  555. get_players(players, pnum, "ch")
  556.  
  557. for (new i ; i<pnum ; i++)
  558. {
  559. tempid = players[i]
  560. g_LeftKills[tempid] = 0
  561. }
  562.  
  563. new taskId = scanForTaskID()
  564.  
  565. set_task(100.0, "TurnItBackOn", taskId)
  566. return PLUGIN_HANDLED
  567. }
  568.  
  569.  
  570. if (g_LeftKills[attacker] - damage > 40)
  571. return PLUGIN_HANDLED
  572.  
  573. else
  574. {
  575.  
  576. if (g_LeftKills[attacker] < 40)
  577. {
  578. client_print(attacker, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_WARNING")
  579. }
  580.  
  581. if ( g_LeftKills[attacker] >= 40 && !g_givenChance[attacker] )
  582. {
  583. g_givenChance[attacker] = true
  584. client_print(attacker, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_WARNING_FINAL")
  585. g_LeftKills[attacker] = 0
  586. set_hudmessage(255, 0, 0, 0.19, 0.35, 0, 6.0, 12.0)
  587. show_hudmessage(attacker, "%L", LANG_PLAYER, "TK_WARNING")
  588. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_OFF")
  589. set_pcvar_num(cvar_mp_friendlyfire, 0)
  590. g_bFFTKStop = true
  591.  
  592. }
  593.  
  594. else if (g_LeftKills[attacker] >= 40)
  595. {
  596. new nameofp[50]
  597.  
  598. get_user_name(attacker, nameofp, 49)
  599.  
  600. new pplayers[32], ppnum, ptempid;
  601.  
  602. get_players(pplayers, ppnum, "ch");
  603.  
  604. for( new i; i<ppnum; i++ )
  605. {
  606. ptempid = pplayers[i]
  607.  
  608. if (ptempid != attacker)
  609. {
  610. client_print(ptempid, print_chat ,"%s %L", PREFIX, LANG_PLAYER, "FF_ANNOYING", nameofp)
  611. set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
  612. show_hudmessage(ptempid, "%L", LANG_PLAYER, "TK_QUERY", nameofp)
  613. client_print(ptempid, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_OFF")
  614.  
  615. }
  616. }
  617.  
  618. set_pcvar_num(cvar_mp_friendlyfire, 0)
  619. g_bFFTKStop = true
  620. }
  621. }
  622. }
  623. }
  624.  
  625. return PLUGIN_CONTINUE
  626. }
  627.  
  628. Public infochanged (id, buffer) {
  629. if ( ( g_IsStarted || g_KnifeRound ) && get_pcvar_num(cvar_TeamTag) )
  630. {
  631. if( is_user_connected(id) )
  632. {
  633. new name[32]
  634. new val[32]
  635.  
  636. get_user_name(id, name, 31)
  637. engfunc(EngFunc_InfoKeyValue, buffer, "name", val, 31)
  638.  
  639. new posA = contain(name, "(Team-A)")
  640. new posB = contain(name, "(Team-B)")
  641.  
  642. if (g_bSecondHalf)
  643. {
  644. if (cs_get_user_team(id) == CS_TEAM_T)
  645. {
  646. if (posB == 0)
  647. {
  648. engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
  649. return FMRES_SUPERCEDE
  650. }
  651. }
  652.  
  653. else if (cs_get_user_team(id) == CS_TEAM_CT)
  654. {
  655. if (posA == 0)
  656. {
  657. engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
  658. return FMRES_SUPERCEDE
  659. }
  660. }
  661. }
  662.  
  663. else
  664. {
  665. if (cs_get_user_team(id) == CS_TEAM_T)
  666. {
  667. if (posA == 0)
  668. {
  669. engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
  670. return FMRES_SUPERCEDE
  671. }
  672.  
  673. }
  674.  
  675. else if (cs_get_user_team(id) == CS_TEAM_CT)
  676. {
  677. if (posB == 0)
  678. {
  679. engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
  680. return FMRES_SUPERCEDE
  681. }
  682.  
  683. }
  684. }
  685.  
  686. Team static [65] teamB [65] teamA2 [65] teamB2 [65]
  687. formatex(teamA, charsmax(teamA), "(%L)", LANG_PLAYER, "TEAM_A")
  688. formatex(teamB, charsmax(teamB), "(%L)", LANG_PLAYER, "TEAM_B")
  689. formatex(teamA2, charsmax(teamA2), "(%L", LANG_PLAYER, "TEAM_A")
  690. formatex(teamB2, charsmax(teamB2), "(%L", LANG_PLAYER, "TEAM_B")
  691.  
  692. if (((contain(val, teamA) == 0) && (contain(name, teamA2) == -1)) || ((contain(val, teamB) == 0) && (contain(name, teamB2) == -1)))
  693. {
  694. return FMRES_IGNORED
  695. }
  696.  
  697. if (((contain(val, teamB) == 0) && (contain(name, teamA2) == 0)) || ((contain(val, teamA) == 0) && (contain(name, teamB2) == 0)))
  698. {
  699. return FMRES_IGNORED
  700. }
  701.  
  702. if (equal(val, name))
  703. {
  704. return FMRES_IGNORED
  705. }
  706.  
  707. engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
  708. return FMRES_SUPERCEDE
  709. }
  710. }
  711.  
  712. return FMRES_IGNORED
  713. }
  714.  
  715.  
  716. public TurnItBackOn() {
  717. set_pcvar_num(cvar_mp_friendlyfire, 1)
  718. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_ON")
  719. return PLUGIN_HANDLED
  720. }
  721.  
  722. Public Votban (Eid) {
  723.  
  724. if (g_LeftVotes[id] >= 1)
  725. {
  726. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_EXCEED")
  727. return PLUGIN_HANDLED
  728. }
  729.  
  730. else if (g_VoteProg)
  731. {
  732. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "VOTE_IN_PROGRESS")
  733. return PLUGIN_HANDLED
  734. }
  735.  
  736. New menuTitle [64]
  737. formatex(menuTitle, charsmax(menuTitle), "%L", LANG_PLAYER, "CHOOSE_PLAYER_VOTEBAN")
  738.  
  739. g_Menu = menu_create(menuTitle, "voteban_menu");
  740. new players[32], pnum, tempid;
  741. new szName[32], szTempid[10];
  742. new added
  743.  
  744. get_players(players, pnum, "ch");
  745.  
  746. for( new i; i<pnum; i++ )
  747. {
  748. tempid = players[i];
  749.  
  750. if (g_LeftKills[tempid] >= 40)
  751. {
  752. get_user_name(tempid, szName, 31);
  753. num_to_str(tempid, szTempid, 9);
  754. menu_additem(g_Menu, szName, szTempid, 0);
  755. added++
  756. }
  757. }
  758.  
  759. for ( new i ; i < sizeof(g_LeftBans) ; i++ )
  760. {
  761. if ( g_LeftBans[i][0] && g_RoundsLeft[i] != -1 )
  762. {
  763. num_to_str(i+32, szTempid, 9)
  764. menu_additem(g_Menu, g_LeftBans[i], szTempid, 0)
  765. added++
  766. }
  767. }
  768.  
  769. if ( !added )
  770. {
  771. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_NO_ABUSERS")
  772. return PLUGIN_HANDLED
  773. }
  774.  
  775. menu_display(id, g_Menu);
  776. return PLUGIN_HANDLED;
  777. }
  778.  
  779. Public Votban_menu (Eid, the menu, item) {
  780. if( item == MENU_EXIT )
  781. {
  782. menu_destroy(menu);
  783. return PLUGIN_HANDLED;
  784. }
  785.  
  786. else if (g_VoteProg)
  787. {
  788. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "VOTE_IN_PROGRESS")
  789. return PLUGIN_HANDLED
  790. }
  791.  
  792. g_LeftVotes [id] ++
  793. new data[6], iName[64];
  794. new access, callback;
  795. menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
  796.  
  797. new tempid = str_to_num(data);
  798. new name[50]
  799.  
  800. if ( tempid < 32 && !is_user_connected(tempid) )
  801. return PLUGIN_HANDLED
  802.  
  803. get_user_name(tempid, name, 49)
  804.  
  805. Votbnonplayr (Tempid)
  806.  
  807. menu_destroy(menu);
  808. return PLUGIN_HANDLED
  809. }
  810.  
  811. Public Votbnonplayr (Eid) {
  812. g_VoteProg = true
  813. new nameofplayer[52]
  814. new banline [128]
  815.  
  816. formatex (banline, charsmax (banline), "% L", LANG_PLAYER, "BAN")
  817.  
  818. if ( id >= 32 )
  819. {
  820. id -= 32
  821. add(banline, 127, g_LeftBans[id])
  822. id += 32
  823. }
  824.  
  825. else
  826. {
  827. get_user_name(id, nameofplayer, 51)
  828. add (banline, 127, nameofplayer)
  829. }
  830. add (banline, 127, "?")
  831.  
  832. new yesItem [10], Ithmah [10]
  833. formatex(yesItem, charsmax(yesItem), "%L", LANG_PLAYER, "MENU_ITEM_YES")
  834. formatex(noItem, charsmax(noItem), "%L", LANG_PLAYER, "MENU_ITEM_NO")
  835.  
  836. g_abMenu = menu_create(banline, "votebanonplayer_menu");
  837. menu_additem (g_abMenu, yesItem)
  838. menu_additem(g_abMenu, noItem)
  839.  
  840. new pplayers[32], ppnum, ptempid;
  841.  
  842. if ( 1 <= id <= gMaxPlayers )
  843. {
  844. switch( cs_get_user_team(id) )
  845. {
  846. case CS_TEAM_CT: get_players(pplayers, ppnum, "che", "CT");
  847. case CS_TEAM_T: get_players(pplayers, ppnum, "che", "TERRORIST");
  848. }
  849. }
  850.  
  851. else
  852. get_players(pplayers, ppnum, "ch");
  853.  
  854.  
  855. for( new i; i<ppnum; i++ )
  856. {
  857. ptempid = pplayers[i]
  858.  
  859. if (ptempid != id)
  860. {
  861.  
  862. menu_display(ptempid, g_abMenu, 0)
  863. }
  864. }
  865.  
  866.  
  867. set_task(7.0, "EndBanVote", id)
  868.  
  869. return PLUGIN_HANDLED
  870. }
  871.  
  872. public EndBanVote(id) {
  873. g_VoteProg = false
  874. show_menu(0, 0, "^n", 1);
  875. if(g_bVotes[0] >= g_bVotes[1])
  876. {
  877. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "BAN_VOTE_SUCCESS")
  878. set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
  879.  
  880. if ( id < 32 )
  881. {
  882. server_cmd("amx_banip #%d 5 ^"%L^"", get_user_userid(id), LANG_PLAYER, "VOTED_TO_BAN", PREFIX)
  883.  
  884. new nameofp[50]
  885.  
  886. get_user_name(id, nameofp, 49)
  887. ShowSyncHudMsg(0, g_MsgSync6, "%s %L", nameofp, LANG_PLAYER, "VOTED_TO_BE_BANNED")
  888. }
  889.  
  890. else
  891. {
  892. server_cmd("amx_banip ^"%s^" 15", g_LeftBansIPs[id-32])
  893. ShowSyncHudMsg(0, g_MsgSync6, "%s %L", g_LeftBans[id-32], LANG_PLAYER, "VOTED_TO_BE_BANNED")
  894. copy(g_LeftBans[id-32], charsmax(g_LeftBans[]), "")
  895. copy(g_LeftBansIPs[id-32], charsmax(g_LeftBansIPs[]), "")
  896. g_RoundsLeft[id-32] = -1
  897. }
  898.  
  899.  
  900.  
  901. g_bVotes[0] = 0
  902. g_bVotes[1] = 0
  903. return PLUGIN_HANDLED
  904. }
  905.  
  906. else
  907. {
  908. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "BAN_VOTE_FAIL")
  909.  
  910. if ( id >= 32 )
  911. {
  912. copy(g_LeftBans[id-32], charsmax(g_LeftBans[]), "")
  913. copy(g_LeftBansIPs[id-32], charsmax(g_LeftBansIPs[]), "")
  914. g_RoundsLeft[id-32] = -1
  915. }
  916.  
  917. else
  918. {
  919. g_bVotes[0] = 0
  920. g_bVotes[1] = 0
  921. g_LeftKills [id] = 0
  922. }
  923. return PLUGIN_HANDLED
  924. }
  925.  
  926. return PLUGIN_HANDLED
  927. }
  928.  
  929. Public Votbnonplayr_menu (Eid, the menu, item) {
  930. if( item == MENU_EXIT )
  931. return PLUGIN_HANDLED;
  932.  
  933. g_bVotes[item]++;
  934. return PLUGIN_HANDLED;
  935. }
  936.  
  937. public handled(id) {
  938. if ( cs_get_user_team(id) == CS_TEAM_UNASSIGNED )
  939. return PLUGIN_CONTINUE
  940.  
  941. player (id)
  942. return PLUGIN_HANDLED
  943. }
  944.  
  945. public openSettingsMenu(id)
  946. settingsMenu(id, 0)
  947.  
  948. public settingsMenu(id, page)
  949. {
  950. if ( !is_user_admin(id) )
  951. {
  952. console_print(id, "Only admins can access the settings menu.")
  953. return PLUGIN_HANDLED
  954. }
  955.  
  956. static enabled[35], disabled[35], title[79]
  957. formatex(enabled, charsmax(enabled), "\y%L\w", LANG_PLAYER, "ENABLED")
  958. formatex(disabled, charsmax(disabled), "\r%L\w", LANG_PLAYER, "DISABLED")
  959. formatex(title, charsmax(title), "\r[Auto-Mix]\w %L:", LANG_PLAYER, "SETTINGS_MENU_TITLE")
  960.  
  961. new menu = menu_create(title, "settingsHandler")
  962.  
  963. new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
  964. new item8[79], item9[79], item10[79], item11[79], item12[79], item13[79], item14[79]
  965. new item15[79], item16[79], item17[79], item18[79], item19[79]
  966.  
  967. switch ( get_pcvar_num(cvar_pLeftMethod) )
  968. {
  969. case 0: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "HUD_NOT_READY")
  970. case 1: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "HUD_READY")
  971. case 2: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "BOTH")
  972. }
  973.  
  974. formatex(item1, charsmax(item1), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM1", get_pcvar_num(cvar_pLeft) )
  975. formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM2", get_pcvar_num(cvar_TimeLeft) )
  976. formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM4", get_pcvar_num(cvar_FFvote) ? enabled : disabled )
  977. formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM5", get_pcvar_num(cvar_KnifeRound) ? enabled : disabled )
  978. formatex(item6, charsmax(item6), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM6", get_pcvar_num(cvar_DetectTK) ? enabled : disabled )
  979. formatex(item7, charsmax(item7), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM7", get_pcvar_num(cvar_MuteMenu) ? enabled : disabled )
  980. formatex(item8, charsmax(item8), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM8", get_pcvar_num(cvar_AllowShield) ? enabled : disabled )
  981. formatex(item9, charsmax(item9), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM9", get_pcvar_num(cvar_MapVote) ? enabled : disabled )
  982. formatex(item10, charsmax(item10), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM10", get_pcvar_num(cvar_Rankings) ? enabled : disabled )
  983. formatex(item11, charsmax(item11), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM11", get_pcvar_num(cvar_TeamTag) ? enabled : disabled )
  984. formatex(item12, charsmax(item12), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM12", get_pcvar_num(cvar_AceHud) ? enabled : disabled )
  985. formatex(item13, charsmax(item13), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM13", get_pcvar_num(cvar_AFKKick) ? enabled : disabled )
  986. formatex(item14, charsmax(item14), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM14")
  987. formatex(item15, charsmax(item15), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM15")
  988. formatex(item16, charsmax(item16), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM16", get_pcvar_num(cvar_RanksSystem) ? enabled : disabled )
  989. formatex(item17, charsmax(item17), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM17", ( get_pcvar_num(cvar_RanksSystem) && get_pcvar_num(cvar_RanksSystemMessages) ) ? enabled : disabled )
  990. formatex(item18, charsmax(item18), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM18")
  991. formatex(item19, charsmax(item19), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM19")
  992.  
  993. menu_additem(menu, item1, .paccess = g_IsStarted ? ADMIN_NONE : 0 )
  994. menu_additem(menu, item2)
  995. menu_additem(menu, item3)
  996. menu_additem(menu, item4)
  997. menu_additem(menu, item5)
  998. menu_additem(menu, item6)
  999. menu_additem(menu, item7)
  1000. menu_additem(menu, item8)
  1001. menu_additem(menu, item9)
  1002. menu_additem(menu, item10)
  1003. menu_additem(menu, item11, .paccess = g_IsStarted ? ADMIN_NONE : 0 )
  1004. menu_additem(menu, item12)
  1005. menu_additem(menu, item13)
  1006. menu_additem(menu, item14)
  1007. menu_additem(menu, item15)
  1008. menu_additem(menu, item16)
  1009. menu_additem(menu, item17)
  1010. menu_additem(menu, item18, .paccess = gChanging ? ADMIN_NONE : 0)
  1011. menu_additem(menu, item19, .paccess = gChanging2 ? ADMIN_NONE : 0)
  1012.  
  1013. menu_display(id, menu, page)
  1014. return PLUGIN_HANDLED
  1015. }
  1016.  
  1017. public settingsHandler(id, menu, item) {
  1018. if( item == MENU_EXIT )
  1019. {
  1020. menu_destroy(menu);
  1021. return PLUGIN_HANDLED;
  1022. }
  1023.  
  1024. new currentCvarNum
  1025.  
  1026. switch ( item )
  1027. {
  1028. case 0:
  1029. {
  1030. new playersReady = -1
  1031.  
  1032. if (! (g_AfterRdy || g_IsStarted || g_MapChanged))
  1033. {
  1034. playersReady = 0
  1035.  
  1036. for ( new i = 1 ; i <= gMaxPlayers ; i++ )
  1037. {
  1038. if ( !is_user_connected(i) )
  1039. continue;
  1040.  
  1041. if ( g_bIsReady[i] )
  1042. playersReady++
  1043. }
  1044. }
  1045. currentCvarNum = get_pcvar_num(cvar_pLeft)
  1046.  
  1047. if ( playersReady == -1 )
  1048. {
  1049. if ( currentCvarNum + 2 <= gMaxPlayers )
  1050. currentCvarNum += 2
  1051. else
  1052. currentCvarNum = 2
  1053. }
  1054.  
  1055. else
  1056. {
  1057. if ( currentCvarNum + 2 <= gMaxPlayers )
  1058. currentCvarNum += 2
  1059. else
  1060. {
  1061. new setToNum = 2
  1062.  
  1063. while ( setToNum - playersReady <= 0)
  1064. setToNum += 2
  1065. currentCvarNum = setToNum
  1066. }
  1067. }
  1068.  
  1069. set_pcvar_num(cvar_pLeft, currentCvarNum)
  1070. gPlayersLeft = currentCvarNum
  1071.  
  1072. if (! (g_AfterRdy || g_IsStarted || g_MapChanged))
  1073. {
  1074. for ( new i = 1 ; i <= gMaxPlayers ; i++ )
  1075. {
  1076. if ( !is_user_connected(i) )
  1077. continue;
  1078.  
  1079. if ( g_bIsReady[i] )
  1080. gplayersleft--
  1081. }
  1082. }
  1083. }
  1084.  
  1085. case 1:
  1086. {
  1087. currentCvarNum = get_pcvar_num(cvar_TimeLeft)
  1088.  
  1089. if ( currentCvarNum + 5 <= TIME_MAX )
  1090. currentCvarNum += 5
  1091. else
  1092. currentCvarNum = 30
  1093.  
  1094. set_pcvar_num(cvar_TimeLeft, currentCvarNum)
  1095. }
  1096.  
  1097. case 2:
  1098. {
  1099. currentCvarNum = get_pcvar_num(cvar_pLeftMethod)
  1100.  
  1101. if ( currentCvarNum != 2 )
  1102. currentCvarNum++
  1103. else
  1104. currentCvarNum = 0
  1105.  
  1106. set_pcvar_num(cvar_pLeftMethod, currentCvarNum)
  1107. }
  1108.  
  1109. case 3:
  1110. {
  1111. currentCvarNum = get_pcvar_num(cvar_FFvote)
  1112.  
  1113. if ( currentCvarNum )
  1114. currentCvarNum = 0
  1115. else
  1116. currentCvarNum = 1
  1117.  
  1118. set_pcvar_num(cvar_FFvote, currentCvarNum)
  1119. }
  1120.  
  1121. case 4:
  1122. {
  1123. currentCvarNum = get_pcvar_num(cvar_KnifeRound)
  1124.  
  1125. if ( currentCvarNum )
  1126. currentCvarNum = 0
  1127. else
  1128. currentCvarNum = 1
  1129.  
  1130. set_pcvar_num(cvar_KnifeRound, currentCvarNum)
  1131. }
  1132.  
  1133. case 5:
  1134. {
  1135. currentCvarNum = get_pcvar_num(cvar_DetectTK)
  1136.  
  1137. if ( currentCvarNum )
  1138. currentCvarNum = 0
  1139. else
  1140. currentCvarNum = 1
  1141.  
  1142. set_pcvar_num(cvar_DetectTK, currentCvarNum)
  1143. }
  1144.  
  1145. case 6:
  1146. {
  1147. currentCvarNum = get_pcvar_num (c r_Mu Temeni)
  1148.  
  1149. if ( currentCvarNum )
  1150. currentCvarNum = 0
  1151. else
  1152. currentCvarNum = 1
  1153.  
  1154. set_pcvar_num (c r_Mu Temeni, currentCvarNum)
  1155. }
  1156.  
  1157. case 7:
  1158. {
  1159. currentCvarNum = get_pcvar_num(cvar_AllowShield)
  1160.  
  1161. if ( currentCvarNum )
  1162. currentCvarNum = 0
  1163. else
  1164. currentCvarNum = 1
  1165.  
  1166. if ( !currentCvarNum )
  1167. {
  1168. new players[32], pnum, tempid
  1169. get_players(players, pnum, "ch")
  1170.  
  1171. for ( new i ; i < pnum ; i++ )
  1172. {
  1173. tempid = players[i]
  1174. remove_shield( tempid )
  1175. }
  1176. }
  1177.  
  1178. set_pcvar_num(cvar_AllowShield, currentCvarNum)
  1179. }
  1180.  
  1181. case 8:
  1182. {
  1183. currentCvarNum = get_pcvar_num(cvar_MapVote)
  1184.  
  1185. if ( currentCvarNum )
  1186. currentCvarNum = 0
  1187. else
  1188. currentCvarNum = 1
  1189.  
  1190. set_pcvar_num(cvar_MapVote, currentCvarNum)
  1191. }
  1192.  
  1193. case 9:
  1194. {
  1195. currentCvarNum = get_pcvar_num(cvar_Rankings)
  1196.  
  1197. if ( currentCvarNum )
  1198. currentCvarNum = 0
  1199. else
  1200. currentCvarNum = 1
  1201.  
  1202. set_pcvar_num(cvar_Rankings, currentCvarNum)
  1203. }
  1204.  
  1205. case 10:
  1206. {
  1207. currentCvarNum = get_pcvar_num(cvar_TeamTag)
  1208.  
  1209. if ( currentCvarNum )
  1210. currentCvarNum = 0
  1211. else
  1212. currentCvarNum = 1
  1213.  
  1214. set_pcvar_num(cvar_TeamTag, currentCvarNum)
  1215. }
  1216.  
  1217. case 11:
  1218. {
  1219. currentCvarNum = get_pcvar_num(cvar_AceHud)
  1220.  
  1221. if ( currentCvarNum )
  1222. currentCvarNum = 0
  1223. else
  1224. currentCvarNum = 1
  1225.  
  1226. set_pcvar_num(cvar_AceHud, currentCvarNum)
  1227. }
  1228.  
  1229. case 12:
  1230. {
  1231. currentCvarNum = get_pcvar_num(cvar_AFKKick)
  1232.  
  1233. if ( currentCvarNum )
  1234. currentCvarNum = 0
  1235. else
  1236. currentCvarNum = 1
  1237.  
  1238. set_pcvar_num(cvar_AFKKick, currentCvarNum)
  1239. }
  1240.  
  1241. case 13: ReadyPosMenu(id)
  1242. case 14: NotReadyPosMenu(id)
  1243.  
  1244. case 15:
  1245. {
  1246. currentCvarNum = get_pcvar_num(cvar_RanksSystem)
  1247.  
  1248. if ( currentCvarNum )
  1249. currentCvarNum = 0
  1250. else
  1251. currentCvarNum = 1
  1252.  
  1253. if ( !currentCvarNum )
  1254. set_pcvar_num(cvar_RanksSystemMessages, 0)
  1255. else
  1256. set_pcvar_num(cvar_RanksSystemMessages, 1)
  1257. set_pcvar_num(cvar_RanksSystem, currentCvarNum)
  1258. }
  1259.  
  1260. case 16:
  1261. {
  1262. currentCvarNum = get_pcvar_num(cvar_RanksSystemMessages)
  1263.  
  1264. if ( currentCvarNum )
  1265. currentCvarNum = 0
  1266. else
  1267. currentCvarNum = 1
  1268.  
  1269. set_pcvar_num(cvar_RanksSystemMessages, currentCvarNum)
  1270.  
  1271. if ( !get_pcvar_num(cvar_RanksSystem) )
  1272. set_pcvar_num(cvar_RanksSystemMessages, 0)
  1273. }
  1274.  
  1275. case 17: PointsPricesMenu(id)
  1276. case 18: RanksPricesMenu(id)
  1277.  
  1278.  
  1279. }
  1280.  
  1281. if ( item == 13 || item == 14 || item == 17 || item == 18 )
  1282. return PLUGIN_HANDLED
  1283.  
  1284. if ( item >= 7 && item <= 13 )
  1285. settingsMenu(id, 1)
  1286. else if ( item >= 14 && item <= 20 )
  1287. settingsMenu(id, 2)
  1288. else
  1289. settingsMenu(id, 0)
  1290. return PLUGIN_HANDLED
  1291. }
  1292.  
  1293. public ReadyPosMenu(id)
  1294. {
  1295. if ( !is_user_connected(id) )
  1296. return;
  1297.  
  1298. new Title[125]
  1299. formatex(Title, charsmax(Title), "%L", LANG_PLAYER, "READY_POS_TITLE", get_pcvar_float(cvar_ReadyXPos), get_pcvar_float(cvar_ReadyYPos))
  1300. new rPosMenu = menu_create(Title, "ReadyPosHandler")
  1301.  
  1302. new item[16]
  1303.  
  1304. formatex(item, charsmax(item), "%L", LANG_PLAYER, "UP")
  1305. menu_additem(rPosMenu, item)
  1306. formatex(item, charsmax(item), "%L", LANG_PLAYER, "DOWN")
  1307. menu_additem(rPosMenu, item)
  1308. formatex(item, charsmax(item), "%L", LANG_PLAYER, "RIGHT")
  1309. menu_additem(rPosMenu, item)
  1310. formatex(item, charsmax(item), "%L", LANG_PLAYER, "LEFT")
  1311. menu_additem(rPosMenu, item)
  1312.  
  1313. formatex(item, charsmax(item), "%L", LANG_PLAYER, "BACK")
  1314. menu_setprop(rPosMenu, MPROP_EXITNAME, item)
  1315. menu_display(id, rPosMenu)
  1316. }
  1317.  
  1318. public ReadyPosHandler(id, menu, item) {
  1319. if( item == MENU_EXIT )
  1320. {
  1321. settingsMenu(id, 1)
  1322. return PLUGIN_HANDLED;
  1323. }
  1324.  
  1325. new Float:setCvarNum
  1326.  
  1327. switch ( item )
  1328. {
  1329. case 0: setCvarNum = get_pcvar_float(cvar_ReadyYPos) - 0.01
  1330. case 1: setCvarNum = get_pcvar_float(cvar_ReadyYPos) + 0.01
  1331. case 2: setCvarNum = get_pcvar_float(cvar_ReadyXPos) + 0.01
  1332. case 3: setCvarNum = get_pcvar_float(cvar_ReadyXPos) - 0.01
  1333. }
  1334.  
  1335. set_pcvar_float (cvar_ReadyYPos, setCvarNum)
  1336.  
  1337. ReadyPosMenu(id)
  1338. return PLUGIN_HANDLED
  1339. }
  1340.  
  1341. public NotReadyPosMenu(id)
  1342. {
  1343. if ( !is_user_connected(id) )
  1344. return;
  1345.  
  1346. new Title[125]
  1347.  
  1348. formatex(Title, charsmax(Title), "%L", LANG_PLAYER, "NOTREADY_POS_TITLE", get_pcvar_float(cvar_NotReadyXPos), get_pcvar_float(cvar_NotReadyYPos))
  1349. new rPosMenu = menu_create(Title, "NotReadyPosHandler")
  1350.  
  1351. new item[16]
  1352.  
  1353. formatex(item, charsmax(item), "%L", LANG_PLAYER, "UP")
  1354. menu_additem(rPosMenu, item)
  1355. formatex(item, charsmax(item), "%L", LANG_PLAYER, "DOWN")
  1356. menu_additem(rPosMenu, item)
  1357. formatex(item, charsmax(item), "%L", LANG_PLAYER, "RIGHT")
  1358. menu_additem(rPosMenu, item)
  1359. formatex(item, charsmax(item), "%L", LANG_PLAYER, "LEFT")
  1360. menu_additem(rPosMenu, item)
  1361.  
  1362. formatex(item, charsmax(item), "%L", LANG_PLAYER, "BACK")
  1363. menu_setprop(rPosMenu, MPROP_EXITNAME, item)
  1364.  
  1365. menu_display(id, rPosMenu)
  1366. }
  1367.  
  1368. public NotReadyPosHandler(id, menu, item) {
  1369. if( item == MENU_EXIT )
  1370. {
  1371. settingsMenu(id, 2)
  1372. return PLUGIN_HANDLED;
  1373. }
  1374.  
  1375. new Float:setCvarNum
  1376.  
  1377. switch ( item )
  1378. {
  1379. case 0: setCvarNum = get_pcvar_float(cvar_NotReadyYPos) - 0.01
  1380. case 1: setCvarNum = get_pcvar_float(cvar_NotReadyYPos) + 0.01
  1381. case 2: setCvarNum = get_pcvar_float(cvar_NotReadyXPos) + 0.01
  1382. case 3: setCvarNum = get_pcvar_float(cvar_NotReadyXPos) - 0.01
  1383. }
  1384.  
  1385. set_pcvar_float(cvar_NotReadyYPos, setCvarNum)
  1386.  
  1387. NotReadyPosMenu(id)
  1388. return PLUGIN_HANDLED
  1389. }
  1390.  
  1391. public PointsPricesMenu(id)
  1392. {
  1393. if ( !is_user_connected(id) )
  1394. return;
  1395.  
  1396. New menuTitle [65]
  1397. formatex(menuTitle, charsmax(menuTitle), "\y[Auto-Mix]\w %L", LANG_PLAYER, "POINTS_PRICES_MENU_TITLE")
  1398. new pointsMenu = menu_create(menuTitle, "pointsHandler")
  1399.  
  1400. new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
  1401. new item8[79], item9[79], item10[79], item11[79], item12[79]
  1402.  
  1403. formatex(item1, charsmax(item1), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM1", get_pcvar_num(cvar_KillPoints))
  1404. formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM2", get_pcvar_num(cvar_KnifePoints))
  1405. formatex(item3, charsmax(item3), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM3", get_pcvar_num(cvar_WinsMatchPoints))
  1406. formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM4", get_pcvar_num(cvar_PlaysUntilEndPoints))
  1407. formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM5", get_pcvar_num(cvar_LeavesMatchPoints))
  1408. formatex(item6, charsmax(item6), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM6", get_pcvar_num(cvar_LeavesMatchTime))
  1409. formatex(item7, charsmax(item7), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM7", get_pcvar_num(cvar_TeamKillPoints))
  1410. formatex(item8, charsmax(item8), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM8", get_pcvar_num(cvar_BombPlantPoints))
  1411. formatex(item9, charsmax(item9), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM9", get_pcvar_num(cvar_BombDefusePoints))
  1412. formatex(item10, charsmax(item10), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM10", get_pcvar_num(cvar_KillLosePoints))
  1413. formatex(item11, charsmax(item11), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM11", get_pcvar_num(cvar_KnifeLosePoints))
  1414. formatex(item12, charsmax(item12), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM12", get_pcvar_num(cvar_LosesMatchPoints))
  1415.  
  1416. menu_additem(pointsMenu, item1)
  1417. menu_additem(pointsMenu, item2)
  1418. menu_additem(pointsMenu, item3)
  1419. menu_additem(pointsMenu, item4)
  1420. menu_additem(pointsMenu, item5)
  1421. menu_additem(pointsMenu, item6)
  1422. menu_additem(pointsMenu, item7)
  1423. menu_additem(pointsMenu, item8)
  1424. menu_additem(pointsMenu, item9)
  1425. menu_additem(pointsMenu, item10)
  1426. menu_additem(pointsMenu, item11)
  1427. menu_additem(pointsMenu, item12)
  1428.  
  1429. new ExitButton[16]
  1430. formatex(ExitButton, charsmax(ExitButton), "%L", LANG_PLAYER, "MENU_ITEM_BACK")
  1431. menu_setprop(pointsMenu, MPROP_EXITNAME, ExitButton)
  1432. menu_display(id, pointsMenu)
  1433. }
  1434.  
  1435. public pointsHandler(id, menu, item) {
  1436. if( item == MENU_EXIT )
  1437. {
  1438. settingsMenu(id, 2)
  1439. return PLUGIN_HANDLED;
  1440. }
  1441.  
  1442. gChanging = item
  1443. gChangerID = id
  1444.  
  1445. New menuTitle [128], menuTitle2 [128]
  1446. formatex(menuTitle, charsmax(menuTitle), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS")
  1447. formatex(menuTitle2, charsmax(menuTitle2), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS2")
  1448. show_menu(id, MENU_KEY_0, ( item == 6 ) ? menuTitle : menuTitle2, -1, "setprices menu")
  1449. return PLUGIN_HANDLED
  1450. }
  1451.  
  1452. public RanksPricesMenu(id)
  1453. {
  1454. if ( !is_user_connected(id) )
  1455. return;
  1456.  
  1457. New menuTitle [65]
  1458. formatex(menuTitle, charsmax(menuTitle), "\y[Auto-Mix]\w %L", LANG_PLAYER, "RANKS_PRICES_MENU_TITLE")
  1459. new pointsMenu = menu_create(menuTitle, "ranksHandler")
  1460.  
  1461. new item1[79], item2[79], item3[79], item4[79], item5[79]
  1462.  
  1463. formatex(item1, charsmax(item1), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1", get_pcvar_num(cvar_BeginnerPoints))
  1464. formatex(item2, charsmax(item2), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2", get_pcvar_num(cvar_RegularPoints))
  1465. formatex(item3, charsmax(item3), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3", get_pcvar_num(cvar_VeteranPoints))
  1466. formatex(item4, charsmax(item4), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4", get_pcvar_num(cvar_ProPoints))
  1467. formatex(item5, charsmax(item5), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5", get_pcvar_num(cvar_HardCorePoints))
  1468.  
  1469. menu_additem(pointsMenu, item1)
  1470. menu_additem(pointsMenu, item2)
  1471. menu_additem(pointsMenu, item3)
  1472. menu_additem(pointsMenu, item4)
  1473. menu_additem(pointsMenu, item5)
  1474.  
  1475. new ExitButton[16]
  1476. formatex(ExitButton, charsmax(ExitButton), "%L", LANG_PLAYER, "MENU_ITEM_BACK")
  1477. menu_setprop(pointsMenu, MPROP_EXITNAME, ExitButton)
  1478. menu_display(id, pointsMenu)
  1479. }
  1480.  
  1481. Public Rnkshndler (Eid, the menu, item) {
  1482. if( item == MENU_EXIT )
  1483. {
  1484. settingsMenu(id, 2)
  1485. return PLUGIN_HANDLED;
  1486. }
  1487.  
  1488. new data[6], iName[64];
  1489. new access, callback;
  1490. menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
  1491.  
  1492. new helpText[78]
  1493. formatex(helpText, charsmax(helpText), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS2")
  1494. new menuOption = str_to_num(data)
  1495. gChanging2 = menu option
  1496. gChangerID2 = id
  1497. show_menu(id, MENU_KEY_0, helpText, -1, "setprices menu")
  1498. return PLUGIN_HANDLED
  1499. }
  1500.  
  1501.  
  1502. public menuHandler (id, key)
  1503. {
  1504. gChanging = 0
  1505. gChanging2 = 0
  1506. gChangerID = 0
  1507. gChangerID2 = 0
  1508. return PLUGIN_HANDLED
  1509. }
  1510.  
  1511. public plugin_cfg() {
  1512. SetCheckFilled()
  1513. server_cmd("exec practice.cfg")
  1514. DisplayCommands()
  1515. set_pcvar_string(cvar_humans_join_team, "")
  1516.  
  1517. if (!file_exists(gPug_ini_file))
  1518. {
  1519. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "PUG_INI_ERROR")
  1520. return PLUGIN_HANDLED
  1521. }
  1522.  
  1523. switch ( get_pug_state() )
  1524. {
  1525. case 0:
  1526. {
  1527. gEntShowLeft = create_entity("info_target")
  1528. entity_set_string(gEntShowLeft, EV_SZ_classname, "show_left_ent")
  1529. register_think("show_left_ent", "ShowLeft")
  1530. entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
  1531. return PLUGIN_HANDLED
  1532. }
  1533.  
  1534. case 1:
  1535. {
  1536. g_MapChanged = true
  1537. new taskId = scanForTaskID()
  1538. set_task(20.0, "TeamsVote", taskId)
  1539. }
  1540.  
  1541. case 2:
  1542. {
  1543. g_MapChanged = true
  1544. g_CustomGame = true
  1545. set_pug_state(1)
  1546. new taskId = scanForTaskID()
  1547. set_task(20.0, "TeamsVote", taskId)
  1548. }
  1549. }
  1550.  
  1551. return PLUGIN_CONTINUE
  1552. }
  1553.  
  1554. public SetCheckFilled() {
  1555. new taskId = scanForTaskID()
  1556. set_task(5.0, "CheckFilled", taskId)
  1557. }
  1558.  
  1559. public CheckFilled() {
  1560.  
  1561. new players = get_playersnum()
  1562.  
  1563. for ( new i = 1 ; i <= gMaxPlayers ; i++ )
  1564. {
  1565. if ( !is_user_connected(i) )
  1566. continue;
  1567.  
  1568. if ( is_user_hltv(i) || is_user_bot(i) )
  1569. players--
  1570. }
  1571.  
  1572. if (players >= get_pcvar_num(cvar_pLeft))
  1573. {
  1574. new rnd = random_num(99, 9999)
  1575. new pass[10]
  1576.  
  1577. num_to_str(rnd, pass, 9)
  1578.  
  1579. set_pcvar_string(cvar_sv_password, pass)
  1580. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "SERVER_PASSWORD_PROTECTED")
  1581.  
  1582. new tokick = players - get_pcvar_num(cvar_pLeft)
  1583.  
  1584. for (new kick; kick<tokick ; kick++)
  1585. {
  1586. new playeract = random(get_pcvar_num(cvar_pLeft))
  1587.  
  1588. while ( !is_user_connected(playeract) || !is_user_bot(playeract) || !is_user_hltv(playeract) )
  1589. {
  1590. playeract = random(get_pcvar_num(cvar_pLeft))
  1591. }
  1592.  
  1593. server_cmd("kick # %d %s %L", get_user_userid(playeract), PREFIX, LANG_PLAYER, "SERVER_FULL")
  1594. }
  1595.  
  1596. }
  1597.  
  1598. return PLUGIN_CONTINUE
  1599. }
  1600.  
  1601.  
  1602. public DisplayCommands() {
  1603. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "SHOW_INFO")
  1604. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "SHOW_INFO_2")
  1605. new taskId = scanForTaskID()
  1606. set_task(g_IsStarted ? 50.0 : 300.0, "DisplayCommands", taskId)
  1607. }
  1608.  
  1609. public round_end() {
  1610. if ( g_Restart )
  1611. return PLUGIN_HANDLED
  1612.  
  1613. TKRoundsLeft()
  1614.  
  1615. if ( g_bFFTKStop )
  1616. {
  1617. g_bFFTKStop = false
  1618. set_pcvar_num(cvar_mp_friendlyfire, 1)
  1619. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_ON")
  1620. }
  1621.  
  1622. if (g_KnifeRound)
  1623. {
  1624. new Players[32], pNum, ptn, pctn;
  1625. get_players(Players, pNum, "ch")
  1626. for ( new i ; i < pNum ; i++ ) {
  1627. new tempid = Players[i]
  1628. if ( !is_user_alive(tempid) )
  1629. continue;
  1630. else if ( cs_get_user_team(tempid) == CS_TEAM_T )
  1631. ptn ++;
  1632. else if ( cs_get_user_team(tempid) == CS_TEAM_CT )
  1633. pctn ++;
  1634. }
  1635.  
  1636. new WinningTeam
  1637.  
  1638. if (ptn > pctn)
  1639. {
  1640. client_print(0, print_chat, "%s %L %L", PREFIX, LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_A" : "TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WON")
  1641. set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
  1642. ShowSyncHudMsg(0, g_MsgSync6, "%L - %L", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_A" : "TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WINNERS")
  1643.  
  1644. g_Twon = true
  1645. WinningTeam = T_WIN
  1646. }
  1647.  
  1648. else if (pctn > ptn)
  1649. {
  1650. client_print(0, print_chat, "%s %L %L", PREFIX, LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_B" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WON")
  1651. set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
  1652. ShowSyncHudMsg(0, g_MsgSync6, "%L - %L", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_B" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WINNERS")
  1653. WinningTeam = CT_WIN
  1654. }
  1655.  
  1656. else
  1657. {
  1658. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_WITHDRAW")
  1659. set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
  1660. ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "KNIFE_ROUND_WITHDRAWN_HUD")
  1661. new taskId = scanForTaskID()
  1662. set_task(3.0, "SettingsAfter", taskId)
  1663. return PLUGIN_CONTINUE
  1664. }
  1665. KnifeSwitch(WinningTeam)
  1666. return PLUGIN_CONTINUE
  1667. }
  1668.  
  1669. if (g_IsStarted)
  1670. {
  1671. new players[32], pnum, tempid;
  1672.  
  1673. new numTt, numCtt;
  1674.  
  1675. get_players(players, pnum, "ch")
  1676.  
  1677. if ( !( (get_playersnum() != get_pcvar_num(cvar_pLeft)) || (get_pcvar_num(cvar_pLeft) != 10) ) )
  1678. {
  1679. for ( new i ; i < pnum ; i++ )
  1680. {
  1681. tempid = players[i]
  1682.  
  1683. switch ( cs_get_user_team(tempid) )
  1684. {
  1685. case CS_TEAM_T: numTt++
  1686. case CS_TEAM_CT: numCtt++
  1687. }
  1688. }
  1689.  
  1690. for (new i ; i < pnum ; i++)
  1691. {
  1692. tempid = players[i]
  1693. g_LeftKills [tempid] = (g_LeftKills [tempid] / 3) * 2
  1694.  
  1695. if ( g_KillsAce[tempid] < 4 || get_playersnum() != 10 || !get_pcvar_num(cvar_AceHud) )
  1696. {
  1697. g_KillsAce[tempid] = 0
  1698. continue;
  1699. }
  1700.  
  1701. if ( cs_get_user_team(tempid) == CS_TEAM_T || cs_get_user_team(tempid) == CS_TEAM_CT )
  1702. {
  1703. if (g_KillsAce[tempid] == 4)
  1704. {
  1705. new name[32]
  1706. get_user_name(tempid, name, 31)
  1707.  
  1708. set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
  1709. show_hudmessage(0, "%L", LANG_PLAYER, "DID_A_MINIACE", name)
  1710. }
  1711.  
  1712. else if (g_KillsAce[tempid] == 5)
  1713. {
  1714. new name[32]
  1715. get_user_name(tempid, name, 31)
  1716.  
  1717. set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
  1718. show_hudmessage(0, "%L", LANG_PLAYER, "DID_AN_ACE", name)
  1719. }
  1720. }
  1721.  
  1722. g_KillsAce[tempid] = 0
  1723. }
  1724. }
  1725. }
  1726.  
  1727. if ( !g_CustomGame || true )
  1728. {
  1729. if (g_IsStarted)
  1730. {
  1731. new numT, numCt;
  1732.  
  1733. for ( new i = 1 ; i <= gMaxPlayers ; i++ )
  1734. {
  1735. if ( is_user_connected(i) )
  1736. {
  1737. if ( cs_get_user_team(i) == CS_TEAM_T )
  1738. numT ++
  1739. else if ( cs_get_user_team(i) == CS_TEAM_CT )
  1740. numCt ++
  1741. }
  1742. }
  1743.  
  1744. if ( numT <= (get_pcvar_num(cvar_pLeft)/2) - 2 || numCt <= (get_pcvar_num(cvar_pLeft)/2) - 2 )
  1745. {
  1746. if ( g_NotBalanced == 2 )
  1747. {
  1748. if (numT > numCt)
  1749. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "T_AUTO_WON")
  1750. else if (numCt > numT)
  1751. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CT_AUTO_WON")
  1752. else if (numCt == numT)
  1753. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "NO_TEAM_WON")
  1754. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "ENDING_MATCH")
  1755. new taskId = scanForTaskID()
  1756. set_task(5.0, "EndMatch", taskId)
  1757. g_NotBalanced = 0
  1758. }
  1759.  
  1760. else
  1761. {
  1762. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "NOT_ENOUGH_TEAMMATES", (get_pcvar_num(cvar_pLeft)/2) - 2)
  1763. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "NOT_ENOUGH_TEAMMATES2", 2 - g_NotBalanced )
  1764. g_NotBalanced++
  1765. }
  1766. }
  1767.  
  1768. else
  1769. g_NotBalanced = 0;
  1770. }
  1771. }
  1772.  
  1773. return PLUGIN_HANDLED
  1774.  
  1775. }
  1776.  
  1777. public TKRoundsLeft()
  1778. {
  1779. for ( new i ; i < sizeof(g_RoundsLeft) ; i++ )
  1780. {
  1781. if ( g_RoundsLeft[i] != -1 )
  1782. g_RoundsLeft[i]--
  1783. }
  1784. }
  1785.  
  1786. public LR() {
  1787. set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
  1788. ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "LAST_ROUND")
  1789. }
  1790.  
  1791. public scndhalf() {
  1792. server_cmd("sv_restart 1")
  1793. new taskId = scanForTaskID()
  1794. set_task(3.0, "showscnd", taskId)
  1795. }
  1796.  
  1797. public showscnd() {
  1798. set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 18.0)
  1799. ShowSyncHudMsg(0, g_MsgSync3, "%L", LANG_PLAYER, "SECOND_HALF_STARTED")
  1800. return PLUGIN_HANDLED
  1801. }
  1802.  
  1803.  
  1804.  
  1805. public Event_TeamScore() {
  1806. if ( g_Restart )
  1807. return PLUGIN_HANDLED
  1808.  
  1809. if (g_IsStarted)
  1810. {
  1811. read_data(1, g_szTeamName, 1)
  1812.  
  1813. g_iTeam = (g_szTeamName[0] == 'T') ? 0 : 1
  1814. g_iAltScore = read_data(2)
  1815. g_iScoreOffset = g_iAltScore - g_iLastTeamScore [g_iTeam]
  1816.  
  1817. ow (g_iScoreOffset> 0)
  1818. {
  1819. g_iScore [g_iTeam] + = g_iScoreOffset
  1820. }
  1821.  
  1822. g_iLastTeamScore[g_iTeam] = g_iAltScore
  1823.  
  1824. ow (g_iScore [0] + g_iScore [1] == 14)
  1825. {
  1826. new taskId = scanForTaskID()
  1827. set_task(10.0, "LR", taskId)
  1828. }
  1829.  
  1830. ow else (g_iScore [0] + g_iScore [1] == 15)
  1831. {
  1832. if (g_bStop2)
  1833. {
  1834. return PLUGIN_HANDLED;
  1835. }
  1836.  
  1837. g_bStop2 = true
  1838. SwitchTeams()
  1839. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "SWITCH_TEAMS")
  1840. new taskId = scanForTaskID()
  1841. set_task(10.0, "scndhalf", taskId)
  1842. }
  1843.  
  1844. ow else ((g_iScore [0] == 16) || (g_iScore [1] == 16))
  1845. {
  1846. if (g_bStop)
  1847. {
  1848. return PLUGIN_HANDLED
  1849. }
  1850.  
  1851. g_bStop = true
  1852. Final match ()
  1853. return PLUGIN_HANDLED
  1854. }
  1855.  
  1856. ow else ((g_iScore [0] == 15) || (g_iScore [1] == 15))
  1857. {
  1858. new taskId = scanForTaskID()
  1859. set_task(10.0, "LRFif", taskId)
  1860. return PLUGIN_HANDLED
  1861. }
  1862.  
  1863.  
  1864. ClientCommand_SayScore()
  1865. }
  1866.  
  1867. return PLUGIN_HANDLED
  1868. }
  1869.  
  1870. public LRFif() {
  1871. ow ((g_iScore [1] == 16) || (g_iScore [0] == 16))
  1872. return PLUGIN_HANDLED
  1873.  
  1874. set_hudmessage(255, 255, 255, 0.06, 0.62, 0, 6.0, 12.0)
  1875.  
  1876. ShowSyncHudMsg(0, g_MsgSync6, "%L (%L) %d - %d (%L)", LANG_PLAYER, "LAST_ROUND", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_A" : "COUNTER_TERRORISTS" ), g_iScore[g_Twon ? 0 : 1], g_iScore[g_Twon ? 1 : 0], LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_B" : "TERRORISTS" ) )
  1877. return PLUGIN_HANDLED
  1878. }
  1879.  
  1880. public ClientCommand_SayScore() {
  1881. if (g_Twon)
  1882. {
  1883. if (g_bSecondHalf)
  1884. {
  1885. if (g_bDidScore)
  1886. {
  1887. showscore(0)
  1888. g_bDidScore = false
  1889. }
  1890. else
  1891. g_bDidScore = true
  1892. }
  1893.  
  1894. else
  1895. {
  1896. if (g_bDidScore)
  1897. {
  1898. showscore(0)
  1899. g_bDidScore = false
  1900. }
  1901. else
  1902. g_bDidScore = true
  1903. }
  1904. }
  1905.  
  1906. else
  1907. {
  1908.  
  1909. if (g_bSecondHalf)
  1910. {
  1911. if (g_bDidScore)
  1912. {
  1913. showscore(0)
  1914. g_bDidScore = false
  1915. }
  1916. else
  1917. g_bDidScore = true
  1918. }
  1919.  
  1920. else
  1921. {
  1922. if (g_bDidScore)
  1923. {
  1924. showscore(0)
  1925. g_bDidScore = false
  1926. }
  1927. else
  1928. g_bDidScore = true
  1929. }
  1930. }
  1931.  
  1932. return PLUGIN_HANDLED
  1933.  
  1934. }
  1935.  
  1936. public client_disconnect(id) {
  1937. if ( is_user_bot(id) || is_user_hltv(id) || !( 1 <= id <= gMaxPlayers ) )
  1938. return PLUGIN_HANDLED
  1939.  
  1940. if ( id == gChangerID )
  1941. {
  1942. gChangerID = 0
  1943. gChanging = 0
  1944. }
  1945.  
  1946. else if ( id == gChangerID2 )
  1947. {
  1948. gChangerID2 = 0
  1949. gChanging2 = 0
  1950. }
  1951.  
  1952. if (g_IsStarted)
  1953. {
  1954. g_PugLeaves++
  1955. DidTK(id)
  1956.  
  1957. if ( get_pcvar_num(cvar_RanksSystem) )
  1958. {
  1959. gPoints[id] -= get_pcvar_num(cvar_LeavesMatchPoints)
  1960. enterLeaveRecord(id)
  1961. }
  1962. }
  1963.  
  1964. CheckEmpty()
  1965. clear_list(id)
  1966. gDidPlayUntilEnd[id] = false
  1967. g_LeftVotes [id] = 0
  1968. g_TotalKills[id] = 0
  1969. g_TotalDeaths [id] = 0
  1970. g_BombPlants [id] = 0
  1971. g_BombDefusions [id] = 0
  1972.  
  1973. if ( g_givenChance[id] )
  1974. get_user_authid(id, g_givenChanceSteamIDs[g_givenTimes++], charsmax(g_givenChanceSteamIDs[]))
  1975. g_givenChance[id] = false
  1976.  
  1977. if (g_bIsReady[id])
  1978. {
  1979. gplayersleft ++
  1980. }
  1981.  
  1982. g_bIsReady[id] = false
  1983. remove_task(id)
  1984. remove_task(id+SET_CONST_TASKID)
  1985.  
  1986. return PLUGIN_HANDLED
  1987. }
  1988.  
  1989. public client_connect(id) {
  1990. if ( is_user_bot(id) || is_user_hltv(id) || (!is_user_connected(id) && !is_user_connecting(id)) || !( 1 <= id <= gMaxPlayers ) )
  1991. return PLUGIN_HANDLED;
  1992.  
  1993. g_afktime [id] = 0.0
  1994. g_LeftVotes [id] = 0
  1995. gTypedCommand[id] = 0.0
  1996. g_KillsAce [id] = 0
  1997.  
  1998. if (!file_exists(gPug_ini_file))
  1999. {
  2000. client_print(0, print_chat, "%s %L", PREFIX, "PUG_INI_ERROR")
  2001. return PLUGIN_HANDLED
  2002. }
  2003.  
  2004. if (get_pug_state() == 1)
  2005. {
  2006. g_LeftKills [id] = 0
  2007. return PLUGIN_HANDLED
  2008. }
  2009.  
  2010. if (g_bCpt && is_user_connected(id))
  2011. {
  2012. if (cs_get_user_team(id) != CS_TEAM_UNASSIGNED)
  2013. {
  2014. cs_set_user_team(id, CS_TEAM_SPECTATOR)
  2015. return PLUGIN_HANDLED
  2016. }
  2017.  
  2018. else
  2019. set_task(1.0, "client_connect", id)
  2020. return PLUGIN_HANDLED
  2021. }
  2022.  
  2023. if (! (g_AfterRdy || g_IsStarted))
  2024. {
  2025. g_bIsReady[id] = false
  2026. remove_task(id)
  2027. g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
  2028. g_LeftKills [id] = 0
  2029. ToSetTaskToInfo (id)
  2030. }
  2031.  
  2032. return PLUGIN_HANDLED
  2033. }
  2034.  
  2035. public client_authorized(id)
  2036. {
  2037. if ( is_user_hltv(id) || is_user_bot(id) )
  2038. return;
  2039.  
  2040. LoadStats(id)
  2041.  
  2042. new authID[64]
  2043. get_user_authid(id, authID, charsmax(authID))
  2044.  
  2045. for (new i; i <g_givenTimes; i ++)
  2046. {
  2047. if ( equal(authID, g_givenChanceSteamIDs[i]) )
  2048. {
  2049. for ( new z ; z < sizeof(g_givenChanceSteamIDs[]) ; z++ )
  2050. g_givenChanceSteamIDs[i][z] = 0
  2051.  
  2052. for ( new z = i ; z < g_givenTimes ; z++ )
  2053. copy(g_givenChanceSteamIDs[z], charsmax(g_givenChanceSteamIDs[]), g_givenChanceSteamIDs[z+1])
  2054.  
  2055. for ( new z ; z < sizeof(g_givenChanceSteamIDs[]) ; z++ )
  2056. g_givenChanceSteamIDs [g_givenTimes] [z] = 0
  2057.  
  2058. g_givenTimes--
  2059. g_givenChance[id] = true
  2060. }
  2061. }
  2062.  
  2063. if (g_IsStarted)
  2064. set_task(0.1, "returnPointsIfDeserves", id)
  2065. }
  2066.  
  2067. public DidTK(id)
  2068. {
  2069. if ( g_LeftKills[id] >= 40 )
  2070. {
  2071. new ip[64], name[64], szAdd[128]
  2072. get_user_ip(id, ip, charsmax(ip), 1)
  2073. get_user_name(id, name, charsmax(name))
  2074.  
  2075. for ( new i ; i < sizeof(g_LeftBans) ; i++ )
  2076. {
  2077. if ( equali(g_LeftBansIPs[i], ip) )
  2078. break;
  2079.  
  2080. else if ( !g_LeftBans[i][0] && !g_LeftBansIPs[i][0] )
  2081. {
  2082. formatex(szAdd, charsmax(szAdd), "%s - [\r%L\w]", name, LANG_PLAYER, "TK_BAN_MENU_ITEM")
  2083. copy(g_LeftBans[i], charsmax(g_LeftBans[]), szAdd)
  2084. copy(g_LeftBansIPs[i], charsmax(g_LeftBansIPs[]), ip)
  2085. g_RoundsLeft[id] = 3
  2086. }
  2087. }
  2088. }
  2089. }
  2090.  
  2091. public enterLeaveRecord(id)
  2092. {
  2093. get_user_authid(id, gLeftSteamIDs[gLeftTimes], charsmax(gLeftSteamIDs[]))
  2094. gLastTime [gLeftTimes ++] = get_systime ()
  2095. }
  2096.  
  2097. public returnPointsIfDeserves(id)
  2098. {
  2099. if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) )
  2100. return;
  2101.  
  2102. new authid[64]
  2103. get_user_authid(id, authid, charsmax(authid))
  2104. for ( new i ; i < gLeftTimes ; i++ )
  2105. {
  2106. if ( equali(authid, gLeftSteamIDs[i]) )
  2107. {
  2108. if ( get_systime() - gLastTime[i] <= get_pcvar_num(cvar_LeavesMatchTime) )
  2109. {
  2110. gPoints[id] += get_pcvar_num(cvar_LeavesMatchPoints)
  2111. SaveStats (id)
  2112. }
  2113.  
  2114. for ( new z ; z < sizeof(gLeftSteamIDs[]) ; z++ )
  2115. gLeftSteamIDs[i][z] = 0
  2116.  
  2117. for ( new z = i ; z < gLeftTimes ; z++ )
  2118. copy(gLeftSteamIDs[z], charsmax(gLeftSteamIDs[]), gLeftSteamIDs[z+1])
  2119.  
  2120. for ( new z ; z < sizeof(gLeftSteamIDs[]) ; z++ )
  2121. gLeftSteamIDs [gLeftTimes] [z] = 0
  2122.  
  2123. for ( new z = i ; z < sizeof(gLastTime) ; z++ )
  2124. gLastTime [z] = gLastTime [z + 1]
  2125.  
  2126. gLastTime [gLeftTimes--] = 0
  2127. }
  2128. }
  2129. }
  2130.  
  2131. public CheckEmpty() {
  2132. if (get_maxplayers() == get_pcvar_num(cvar_pLeft))
  2133. return PLUGIN_HANDLED
  2134.  
  2135. new players[32], pnum
  2136. get_players(players, pnum, "ch")
  2137.  
  2138. if (pnum == get_pcvar_num(cvar_pLeft))
  2139. {
  2140. set_pcvar_string(cvar_sv_password, "")
  2141. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "SERVER_PASSWORD_REMOVED")
  2142. }
  2143.  
  2144. return PLUGIN_CONTINUE
  2145. }
  2146.  
  2147. public CheckFull(id) {
  2148. if (get_maxplayers() == get_pcvar_num(cvar_pLeft))
  2149. return PLUGIN_HANDLED
  2150.  
  2151. new players[32], pnum
  2152. get_players(players, pnum, "ch")
  2153.  
  2154. if ( pnum == get_pcvar_num(cvar_pLeft) && get_playersnum() != get_maxplayers() )
  2155. {
  2156. new rnd = random_num(99, 9999)
  2157. new pass[10]
  2158.  
  2159. num_to_str(rnd, pass, 9)
  2160.  
  2161. set_pcvar_string(cvar_sv_password, pass)
  2162. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "SERVER_PASSWORD_PROTECTED")
  2163.  
  2164. new players[32], pnum, tempid;
  2165.  
  2166. get_players(players, pnum, "ch")
  2167.  
  2168. for (new full; full<pnum ; full++)
  2169. {
  2170. players[full] = tempid
  2171.  
  2172. if (is_user_connecting(tempid))
  2173. server_cmd("kick # %d %s %L", get_user_userid(tempid), PREFIX, LANG_PLAYER, "SERVER_FULL")
  2174.  
  2175. }
  2176.  
  2177. }
  2178.  
  2179. else if (pnum > get_pcvar_num(cvar_pLeft))
  2180. {
  2181. server_cmd("kick # %d %s %L", get_user_userid(id), PREFIX, LANG_PLAYER, "SERVER_FULL")
  2182. }
  2183.  
  2184. return PLUGIN_HANDLED
  2185. }
  2186.  
  2187. Public checkNow () {
  2188. client_print(0, print_console, "get_playersnum() == %d", get_playersnum())
  2189. if (get_playersnum() < get_pcvar_num(cvar_pLeft))
  2190. {
  2191. set_pcvar_string(cvar_sv_password, "")
  2192. return PLUGIN_HANDLED
  2193. }
  2194.  
  2195. else if (get_playersnum() > get_pcvar_num(cvar_pLeft))
  2196. {
  2197. new tokick = get_playersnum() - get_pcvar_num(cvar_pLeft)
  2198.  
  2199. for (new kick; kick<tokick ; kick++)
  2200. {
  2201. new playeract = random(get_pcvar_num(cvar_pLeft))
  2202.  
  2203. while (!is_user_connected(playeract))
  2204. {
  2205. playeract = random(get_pcvar_num(cvar_pLeft))
  2206. }
  2207.  
  2208. server_cmd("kick %d %s %L", get_user_userid(playeract), PREFIX, LANG_PLAYER, "SERVER_FULL")
  2209. }
  2210. }
  2211.  
  2212. new rnd = random_num(99, 9999)
  2213. new pass[10]
  2214.  
  2215. num_to_str(rnd, pass, 9)
  2216.  
  2217. set_pcvar_string(cvar_sv_password, pass)
  2218. return PLUGIN_CONTINUE
  2219. }
  2220.  
  2221. public DoAgain(id) {
  2222.  
  2223. if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) )
  2224. return PLUGIN_HANDLED
  2225. if (!file_exists(gPug_ini_file))
  2226. {
  2227. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "PUG_INI_ERROR")
  2228. return PLUGIN_HANDLED
  2229. }
  2230.  
  2231. if (get_pug_state() == 1)
  2232. {
  2233. g_LeftKills [id] = 0
  2234. return PLUGIN_HANDLED
  2235. }
  2236.  
  2237. if (! g_AfterRdy &&! g_IsStarted)
  2238. {
  2239. g_KillsAce [id] = 0
  2240. g_bIsReady[id] = false
  2241. remove_task(id)
  2242. g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
  2243. g_LeftKills [id] = 0
  2244. ToSetTaskToInfo (id)
  2245. }
  2246.  
  2247. return PLUGIN_HANDLED
  2248. }
  2249.  
  2250. public client_putinserver(id) {
  2251. g_afktime [id] = 0.0
  2252.  
  2253. if (is_user_bot(id) || is_user_hltv(id))
  2254. return PLUGIN_HANDLED;
  2255.  
  2256. if ( get_playersnum() == 1 && ( g_IsStarted || g_AfterRdy || g_KnifeRound ) )
  2257. {
  2258. server_cmd("restart")
  2259. return PLUGIN_HANDLED
  2260. }
  2261.  
  2262. if ( get_playersnum() == 1 && !g_AfterRdy && !g_IsStarted )
  2263. entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
  2264.  
  2265. CheckFull(id)
  2266. clear_list(id)
  2267.  
  2268. if (g_IsStarted || g_AfterRdy || g_KnifeRound)
  2269. {
  2270. g_LeftKills [id] = 0
  2271. MoveFromSpec (id)
  2272. return PLUGIN_HANDLED
  2273. }
  2274.  
  2275. set_task(30.0, "CheckUnAssigned", id)
  2276. return PLUGIN_HANDLED
  2277. }
  2278.  
  2279. public CheckUnAssigned(id) {
  2280. if ( !is_user_connected(id) )
  2281. return PLUGIN_HANDLED
  2282.  
  2283. if (cs_get_user_team(id) == CS_TEAM_UNASSIGNED)
  2284. {
  2285. new name[50]
  2286.  
  2287. get_user_name(id, name, 49)
  2288.  
  2289. server_cmd("kick # %d %s %L", get_user_userid(id), PREFIX, LANG_PLAYER, "AFK_LOGIN")
  2290. client_print(0, print_chat, "%s %s %L", PREFIX, name, LANG_PLAYER, "CLIENT_AFK_KICKED")
  2291. }
  2292.  
  2293. return PLUGIN_HANDLED
  2294. }
  2295.  
  2296. public ShowInfo(id) {
  2297. id -= SET_CONST_TASKID
  2298.  
  2299. if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) )
  2300. return PLUGIN_HANDLED
  2301.  
  2302. static hostname[64]
  2303.  
  2304. get_cvar_string("hostname", hostname, 63)
  2305.  
  2306. if (g_bIsReady[id] || g_IsStarted || g_AfterRdy || g_iTimeLeft[id] < 0 )
  2307. {
  2308. remove_task(id+SET_CONST_TASKID)
  2309. remove_task(id)
  2310. return PLUGIN_HANDLED
  2311. }
  2312.  
  2313. set_hudmessage(255, 255, 255, 0.23, 0.265, 0, 6.0, 1.0)
  2314. ShowSyncHudMsg(id, g_MsgSync4, "%L", LANG_PLAYER, "PLAYER_PERSONAL_INFO", hostname, g_iTimeLeft[id])
  2315. return PLUGIN_CONTINUE
  2316. }
  2317.  
  2318. public Continue(id) {
  2319. if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) || is_user_bot(id) || is_user_hltv(id) )
  2320. return PLUGIN_HANDLED
  2321.  
  2322. if (g_IsStarted || g_AfterRdy)
  2323. {
  2324. return PLUGIN_HANDLED
  2325. }
  2326.  
  2327. if (g_bIsReady[id])
  2328. {
  2329. return PLUGIN_HANDLED
  2330. }
  2331. g_iTimeLeft [id] - = 1
  2332.  
  2333.  
  2334. switch(g_iTimeLeft[id]) {
  2335. case 120: client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
  2336. case 90: client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
  2337. case 60: client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
  2338. case 30: {
  2339. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
  2340. set_hudmessage(42, 127, 255, 0.07, 0.70, 0, 6.0, 12.0)
  2341. ShowSyncHudMsg(id, g_MsgSync, "30 %L", LANG_PLAYER, "TYPE_READY_HUD")
  2342. }
  2343. case 10: {
  2344. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
  2345. set_hudmessage(42, 127, 255, 0.07, 0.70, 0, 6.0, 12.0)
  2346. ShowSyncHudMsg(id, g_MsgSync, "10 %L", LANG_PLAYER, "TYPE_READY_HUD")
  2347. }
  2348. case 0: {
  2349. if ( is_user_connecting(id) )
  2350. DoAgain(id)
  2351. else {
  2352. new playername[32]
  2353. get_user_name(id, playername, 31)
  2354. server_cmd("amx_banip #%d 1 ^"%s %L^"", get_user_userid(id), PREFIX, LANG_PLAYER, "ADD_TIME_OVER", get_pcvar_num(cvar_TimeLeft))
  2355. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CLIENT_ADD_KICKED", playername, get_pcvar_num(cvar_TimeLeft))
  2356. }
  2357. }
  2358. }
  2359.  
  2360. return PLUGIN_HANDLED
  2361. }
  2362.  
  2363. public CrashAttempt (id) {
  2364. if ( !( 1 <= id <= gMaxPlayers ) || !is_user_connected(id) )
  2365. return
  2366.  
  2367. if ( get_gametime() - gTypedCommand[id] <= 1.0 ) {
  2368. gTypedCommand[id] = get_gametime()
  2369. return
  2370. }
  2371.  
  2372. gTypedCommand[id] = get_gametime()
  2373. }
  2374.  
  2375. public Prepare(id) {
  2376. if (g_AfterRdy || g_IsStarted || g_MapChanged) {
  2377. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_ALREADY_STARTED")
  2378. return PLUGIN_HANDLED
  2379. }
  2380. if( g_bIsReady[id] ) {
  2381. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "ALREADY_TYPED_ADD")
  2382. return PLUGIN_HANDLED
  2383. }
  2384. else {
  2385. CrashAttempt (id)
  2386.  
  2387. new playername[32]
  2388. get_user_name(id, playername, 31)
  2389. g_bIsReady[id] = true
  2390. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "YOU_ARE_READY")
  2391. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "HE_IS_READY", playername)
  2392. gplayersleft--
  2393. remove_task(id)
  2394. }
  2395. if (gPlayersLeft != 0)
  2396. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "PLAYERS_LEFT", gPlayersLeft)
  2397. else {
  2398. g_AfterRdy = true
  2399. removeAllTasks()
  2400. new taskId = scanForTaskID()
  2401.  
  2402. if ( get_pcvar_num(cvar_MapVote) )
  2403. {
  2404. for ( new i ; i < 3 ; i++ )
  2405. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MAP_VOTE_BEGINS")
  2406. set_task(10.0, "StartVote", taskId)
  2407. }
  2408.  
  2409. else
  2410. {
  2411. for ( new i ; i < 3 ; i++ )
  2412. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_BEGINS")
  2413. set_task(10.0, "TeamsVote", taskId)
  2414. }
  2415. }
  2416.  
  2417.  
  2418. return PLUGIN_HANDLED
  2419. }
  2420.  
  2421. public forcedStart_AdminCmd(id)
  2422. {
  2423. if ( !is_user_admin(id) )
  2424. {
  2425. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "ADMINS_ONLY")
  2426. return PLUGIN_HANDLED
  2427. }
  2428.  
  2429. new taskId = scanForTaskID()
  2430. g_AfterRdy = true
  2431. g_CustomGame = true
  2432.  
  2433. if ( get_pcvar_num(cvar_MapVote) )
  2434. {
  2435. for ( new i ; i < 3 ; i++ )
  2436. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MAP_VOTE_BEGINS")
  2437. set_task(10.0, "StartVote", taskId)
  2438. }
  2439.  
  2440. else
  2441. {
  2442. for ( new i ; i < 3 ; i++ )
  2443. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_BEGINS")
  2444. set_task(10.0, "TeamsVote", taskId)
  2445. }
  2446.  
  2447. return PLUGIN_CONTINUE
  2448. }
  2449.  
  2450. public forcedStop_AdminCmd(id)
  2451. {
  2452. if ( !is_user_admin(id) )
  2453. {
  2454. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "ADMINS_ONLY")
  2455. return PLUGIN_HANDLED
  2456. }
  2457.  
  2458. new pName[64]
  2459. get_user_name(id, pName, charsmax(pName))
  2460. set_hudmessage(255, 0, 0, 0.28, 0.64, 1, 6.0, 12.0)
  2461. show_hudmessage(id, "%L", LANG_PLAYER, "MATCH_STOPPED", pName)
  2462.  
  2463. set_pug_state(0)
  2464. Final match ()
  2465. return PLUGIN_CONTINUE
  2466. }
  2467.  
  2468. public ToSetTaskToInfo (id)
  2469. {
  2470. set_task(1.0, "ShowInfo", id+SET_CONST_TASKID, .flags="a", .repeat=130)
  2471. set_task(1.0, "Continue", id, .flags="a", .repeat=130)
  2472. }
  2473.  
  2474. public unPrepare(id) {
  2475. if (g_AfterRdy || g_IsStarted || g_MapChanged) {
  2476. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_ALREADY_STARTED")
  2477. return PLUGIN_HANDLED
  2478. }
  2479.  
  2480. if (g_bIsReady[id]) {
  2481. CrashAttempt (id)
  2482.  
  2483. gplayersleft ++
  2484. g_bIsReady[id] = false
  2485. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "YOU_ARE_NOT_READY")
  2486. g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
  2487. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "PLAYERS_LEFT", gPlayersLeft)
  2488. ToSetTaskToInfo (id)
  2489. }
  2490.  
  2491. else
  2492. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "ADD_NOT_TYPED")
  2493.  
  2494. return PLUGIN_HANDLED
  2495. }
  2496.  
  2497. public ShowLeft(ent) {
  2498. if (g_IsStarted || g_AfterRdy)
  2499. {
  2500. entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 99999999.0)
  2501. return PLUGIN_HANDLED
  2502. }
  2503.  
  2504. if ( !get_playersnum() )
  2505. {
  2506. entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 99999999.0)
  2507. return PLUGIN_HANDLED
  2508. }
  2509.  
  2510. if ( !get_pcvar_num(cvar_pLeftMethod) || get_pcvar_num(cvar_pLeftMethod) == 2 )
  2511. showNotReady()
  2512. if ( get_pcvar_num(cvar_pLeftMethod) )
  2513. showReady()
  2514.  
  2515. entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
  2516. return PLUGIN_HANDLED
  2517. }
  2518.  
  2519. public showNotReady()
  2520. {
  2521. if (gPlayersLeft != 0)
  2522. {
  2523. new players[32], pnum, tempid;
  2524. get_players(players, pnum, "ch");
  2525.  
  2526. for( new i; i<pnum; i++ ) {
  2527. tempid = players[i];
  2528. if (g_bIsReady[tempid] == false) {
  2529. new playername[32]
  2530. get_user_name(tempid, playername, 31)
  2531. add( gNotRdy, charsmax( gNotRdy ), "^n" );
  2532. add( gNotRdy, charsmax( gNotRdy ), playername );
  2533. }
  2534. }
  2535.  
  2536. }
  2537.  
  2538. else
  2539. return;
  2540.  
  2541. new playersl[2]
  2542. new toadd[64]
  2543. formatex(toadd, charsmax(toadd), " %L", LANG_PLAYER, "PLAYERS_LEFT_HUD")
  2544. num_to_str(gPlayersLeft, playersl, 2)
  2545. trim(playersl)
  2546. add(gNotRdy, charsmax(gNotRdy), "^n^n")
  2547. add(gNotRdy, charsmax(gNotRdy), playersl)
  2548. add(gNotRdy, charsmax(gNotRdy), toadd)
  2549. set_hudmessage(255, 255, 255, get_pcvar_float(cvar_NotReadyXPos), get_pcvar_float(cvar_NotReadyYPos), 0, 6.0, 1.0, _, _, 1)
  2550. show_hudmessage(0, gNotRdy)
  2551. formatex(gNotRdy, charsmax(gNotRdy), "%L:^n", LANG_PLAYER, "HUD_NOT_READY")
  2552. }
  2553.  
  2554. public showReady()
  2555. {
  2556. new readyPlayers
  2557.  
  2558. if (gPlayersLeft != 0)
  2559. {
  2560. new players[32], pnum, tempid;
  2561. get_players(players, pnum, "ch");
  2562.  
  2563. for( new i; i<pnum; i++ ) {
  2564. tempid = players[i];
  2565. if ( g_bIsReady[tempid] ) {
  2566. new playername[32]
  2567. readyPlayers++
  2568. get_user_name(tempid, playername, 31)
  2569. add( gRdy, charsmax( gRdy ), "^n" );
  2570. add( gRdy, charsmax( gRdy ), playername );
  2571. }
  2572. }
  2573.  
  2574. }
  2575.  
  2576. else
  2577. return;
  2578.  
  2579. new playersl[2], toAdd[65]
  2580. formatex(toAdd, charsmax(toAdd), " %L", LANG_PLAYER, "HUD_PLAYERS_READY")
  2581. num_to_str(readyPlayers, playersl, 2)
  2582. add(gRdy, charsmax(gNotRdy), "^n^n")
  2583. add(gRdy, charsmax(gNotRdy), playersl)
  2584. add(gRdy, charsmax(gNotRdy), toAdd)
  2585. set_hudmessage(255, 255, 255, get_pcvar_float(cvar_ReadyXPos), get_pcvar_float(cvar_ReadyYPos), 0, 6.0, 1.0, _, _, 2)
  2586. show_hudmessage(0, gRdy)
  2587. formatex(gRdy, charsmax(gRdy), "%L:^n", LANG_PLAYER, "HUD_READY")
  2588. }
  2589.  
  2590. public credits(id) {
  2591. client_print(id, print_chat, "%L", LANG_PLAYER, "CREDITS_1")
  2592. client_print(id, print_chat, "%L", LANG_PLAYER, "CREDITS_2")
  2593. return PLUGIN_CONTINUE
  2594. }
  2595.  
  2596. public cmds(id) {
  2597. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CMDS_1")
  2598. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CMDS_2")
  2599. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CMDS_3")
  2600. client_print(id, print_chat, "%L", LANG_PLAYER, "AUTO_MIX_BY", VERSION)
  2601. return PLUGIN_HANDLED
  2602. }
  2603.  
  2604. public StartVote () {
  2605. getmaps()
  2606. new rnd
  2607. while (g_DoneMaps != 4 && g_MapsCounter > 0) {
  2608. rnd = random(g_MapsCounter)
  2609. copy(g_MapsChosen[g_DoneMaps++], 19, g_MapsAvailable[rnd])
  2610. g_MapsAvailable[rnd] = g_MapsAvailable[--g_MapsCounter]
  2611. }
  2612.  
  2613. new title[64], extend[64]
  2614. formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "CHANGE_MAP")
  2615. formatex(extend, charsmax(extend), "\n%L", LANG_PLAYER, "EXTEND_MAP")
  2616. g_gVoteMenu = menu_create(title, "votemap");
  2617.  
  2618. new num[11]
  2619. for(new i = 0; i < g_DoneMaps; i++) {
  2620. num_to_str(i, num, 10)
  2621. menu_additem(g_gVoteMenu, g_MapsChosen[i], num, 0)
  2622. }
  2623. menu_additem(g_gVoteMenu, extend, "4", 0)
  2624. menu_setprop(g_gVoteMenu, MPROP_EXIT, MEXIT_NEVER)
  2625.  
  2626. new players[32], pnum, tempid;
  2627. get_players(players, pnum, "ch");
  2628. for( new i; i<pnum; i++ ) {
  2629. tempid = players[i];
  2630. client_print(tempid, print_chat, "%s %L", PREFIX, LANG_PLAYER, "PLEASE_VOTE_MAP")
  2631. menu_display(tempid, g_gVoteMenu);
  2632. }
  2633. client_cmd(0, "spk ^"get red(e80) ninety(s45) to check(e20) use bay(s18) mass(e42) cap(s50)^"")
  2634. new taskId = scanForTaskID()
  2635. set_task(10.0, "EndVote", taskId);
  2636. return PLUGIN_HANDLED;
  2637. }
  2638.  
  2639.  
  2640. public votemap(id, menu, item) {
  2641. if( item == MENU_EXIT ) {
  2642. menu_display(id, g_gVoteMenu)
  2643. return PLUGIN_HANDLED;
  2644. }
  2645.  
  2646. new data[6], szName[64];
  2647. new access, callback;
  2648. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  2649. new voteid = str_to_num(data);
  2650. new playerna[32]
  2651. get_user_name(id, playerna, 31)
  2652.  
  2653. if (voteid != 4)
  2654. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "VOTED_MAP", playerna, g_MapsChosen[voteid])
  2655. else
  2656. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "VOTED_EXTEND", playerna)
  2657.  
  2658. g_gVotes[voteid]++;
  2659. return PLUGIN_HANDLED;
  2660. }
  2661.  
  2662. public getmaps() {
  2663. new mapsfile = fopen(g_Maps_Ini_File, "r")
  2664. new linefortest[50]
  2665.  
  2666. while (g_MapsCounter < sizeof(g_MapsAvailable) && !feof(mapsfile)) {
  2667. fgets(mapsfile, linefortest, 49)
  2668. trim(linefortest)
  2669.  
  2670. new getcurrentmap[32]
  2671. get_mapname(getcurrentmap, 31)
  2672.  
  2673. if ((is_map_valid(linefortest)) && (!equali(linefortest, getcurrentmap)))
  2674. copy(g_MapsAvailable[g_MapsCounter++], 24, linefortest)
  2675. }
  2676.  
  2677. fclose(mapsfile)
  2678. }
  2679.  
  2680. public EndVote() {
  2681. show_menu(0, 0, "^n", 1);
  2682. new best = 0;
  2683. for(new i = 1; i < sizeof(g_gVotes); i++) {
  2684. if(g_gVotes[i] > g_gVotes[best])
  2685. best = i;
  2686. }
  2687.  
  2688. g_gVotes[0] = 0
  2689. g_gVotes[1] = 0
  2690. g_gVotes[2] = 0
  2691. g_gVotes[3] = 0
  2692. g_gVotes[4] = 0
  2693.  
  2694. if(best == 4) {
  2695. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "EXTEND_FINAL");
  2696. TeamsVote ()
  2697. }
  2698. else {
  2699. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MAP_FINAL", g_MapsChosen[best]);
  2700. g_ChangeMapTo = best;
  2701.  
  2702. if ( g_CustomGame )
  2703. set_pug_state(2)
  2704. else
  2705. set_pug_state(1)
  2706.  
  2707. set_pcvar_string(cvar_sv_password, "")
  2708. new taskId = scanForTaskID()
  2709. set_task(10.0, "ChangeMap", taskId);
  2710. }
  2711.  
  2712. return PLUGIN_HANDLED
  2713. }
  2714.  
  2715. public ChangeMap() {
  2716. new maptochangeto[25]
  2717.  
  2718. copy(maptochangeto, 24, g_MapsChosen[g_ChangeMapTo])
  2719. server_cmd("changelevel %s", maptochangeto)
  2720. return PLUGIN_CONTINUE
  2721. }
  2722.  
  2723. public FriendlyFire() {
  2724. new title[64]
  2725. formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "FF_MENU_TITLE")
  2726. g_fVoteMenu = menu_create(title, "voteFF");
  2727.  
  2728. new itemOn[10], itemOff[10]
  2729. formatex(itemOn, charsmax(itemOn), "%L", LANG_PLAYER, "MENU_ITEM_ON")
  2730. formatex(itemOff, charsmax(itemOff), "%L", LANG_PLAYER, "MENU_ITEM_OFF")
  2731.  
  2732. menu_additem(g_fVoteMenu, itemOn)
  2733. menu_additem(g_fVoteMenu, itemOff)
  2734.  
  2735. new pplayers[32], ppnum, ptempid;
  2736.  
  2737. get_players(pplayers, ppnum, "ch");
  2738.  
  2739. for( new i; i<ppnum; i++ ){
  2740. ptempid = pplayers[i]
  2741. client_print(ptempid, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_PICK")
  2742. menu_display(ptempid, g_fVoteMenu, 0)
  2743. }
  2744. new taskId = scanForTaskID()
  2745. set_task(10.0, "EndFFVote", taskId)
  2746. return PLUGIN_HANDLED
  2747. }
  2748.  
  2749. public voteFF(id, menu, item) {
  2750. if( item == MENU_EXIT ) {
  2751. menu_display(id, g_fVoteMenu)
  2752. return PLUGIN_HANDLED;
  2753. }
  2754.  
  2755. new playername[32]
  2756. get_user_name(id, playername, 31)
  2757.  
  2758. switch(item) {
  2759. case 0: client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_VOTED_ON",playername)
  2760. case 1: client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_VOTED_OFF", playername)
  2761. }
  2762.  
  2763. g_fVotes[item]++;
  2764. return PLUGIN_HANDLED;
  2765. }
  2766.  
  2767. public EndFFVote() {
  2768. show_menu(0, 0, "^n", 1);
  2769. new best = 0;
  2770. for(new i = 1; i < sizeof(g_fVotes); i++) {
  2771. if(g_fVotes[i] > g_fVotes[best])
  2772. best = i;
  2773. }
  2774. g_fVotes[0] = 0
  2775. g_fVotes[1] = 0
  2776.  
  2777. switch(best){
  2778. case 0: client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_BE_ON")
  2779. case 1: {
  2780. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_BE_OFF")
  2781. g_bFFoff = true
  2782. }
  2783. }
  2784. new taskId = scanForTaskID()
  2785. set_task(5.0, "StartMatch", taskId)
  2786. return PLUGIN_HANDLED
  2787. }
  2788.  
  2789.  
  2790. public TeamsVote() {
  2791. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_START")
  2792. new taskId = scanForTaskID()
  2793. set_task(10.0, "TeamsVote2", taskId)
  2794. }
  2795.  
  2796. public TeamsVote2() {
  2797. if ( !g_CustomGame ) {
  2798. if (get_playersnum() < get_pcvar_num(cvar_pLeft) - 2) {
  2799. if (g_DidWaitEnough == 16) {
  2800. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "PLAYERS_NOT_JOINING")
  2801. set_pug_state(0)
  2802. g_IsStarted = false
  2803. g_AfterRdy = false
  2804. new taskId = scanForTaskID()
  2805. set_task(3.0, "MatchIsOver", taskId)
  2806. return PLUGIN_HANDLED
  2807. }
  2808.  
  2809. new sum
  2810. sum = g_DidWaitEnough * 15
  2811. sum = 300 - sum
  2812. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_DELAY")
  2813. set_hudmessage(255, 0, 0, 0.35, 0.66, 0, 6.0, 12.0)
  2814. ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "TEAMS_VOTE_DELAY_HUD", sum)
  2815. g_DidWaitEnough++
  2816. new taskId = scanForTaskID()
  2817. set_task(15.0, "TeamsVote2", taskId)
  2818. return PLUGIN_HANDLED
  2819. }
  2820.  
  2821. }
  2822.  
  2823. set_pug_state(0)
  2824. g_MapChanged = false
  2825. g_AfterRdy = true
  2826. g_DidWaitEnough = 0
  2827.  
  2828. new title[86]
  2829. new option1[32], option2[35], option3[35]
  2830. formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "TEAMS_TITLE")
  2831. formatex(option1, charsmax(option1), "%L", LANG_PLAYER, "SAME_TEAMS")
  2832. formatex(option2, charsmax(option2), "%L", LANG_PLAYER, "RANDOM_CAPTAINS")
  2833. formatex(option3, charsmax(option3), "%L", LANG_PLAYER, "RANDOM_TEAMS")
  2834. g_rVoteMenu = menu_create(title, "voteteams");
  2835. menu_additem(g_rVoteMenu, option1)
  2836. menu_additem(g_rVoteMenu, option2)
  2837. menu_additem(g_rVoteMenu, option3)
  2838.  
  2839. new pplayers[32], ppnum, ptempid;
  2840. get_players(pplayers, ppnum, "ch");
  2841.  
  2842. for( new i; i<ppnum; i++ ) {
  2843. ptempid = pplayers[i]
  2844. client_print(ptempid, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_PLEASE_VOTE")
  2845. menu_display(ptempid, g_rVoteMenu)
  2846. }
  2847.  
  2848. client_cmd(0, "spk Gman/Gman_Choose1")
  2849. new taskId = scanForTaskID()
  2850. set_task(10.0, "EndTeamsVote", taskId)
  2851. return PLUGIN_HANDLED
  2852. }
  2853.  
  2854. public voteteams(id, menu, item) {
  2855. if( item == MENU_EXIT ) {
  2856. menu_display(id, menu)
  2857. return PLUGIN_HANDLED;
  2858. }
  2859.  
  2860. new players[32], pnum, tempid
  2861. new bool:IsThereBot
  2862. get_players(players, pnum, "h")
  2863.  
  2864. for ( new i ; i < pnum ; i++ )
  2865. {
  2866. tempid = players[i]
  2867.  
  2868. if ( is_user_bot(tempid) )
  2869. IsThereBot = true
  2870. }
  2871.  
  2872. new playername[32]
  2873. get_user_name(id, playername, 31)
  2874.  
  2875. if ( IsThereBot && item == 1 )
  2876. {
  2877. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "NOT_AVAILABLE_WITH_BOTS")
  2878. menu_display(id, menu)
  2879. return PLUGIN_HANDLED
  2880. }
  2881.  
  2882. switch(item) {
  2883. case 0: client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "VOTED_SAME", playername)
  2884. case 1: client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "VOTED_CAPTAINS", playername)
  2885. case 2: client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "VOTED_RANDOM", playername)
  2886. }
  2887. g_rVotes[item]++;
  2888. return PLUGIN_HANDLED;
  2889. }
  2890.  
  2891. public EndTeamsVote() {
  2892. show_menu(0, 0, "^n", 1);
  2893. new best = 0;
  2894. for(new i = 1; i < sizeof(g_rVotes); i++) {
  2895. if(g_rVotes[i] > g_rVotes[best])
  2896. best = i;
  2897. }
  2898.  
  2899. switch(best) {
  2900. case 0:
  2901. {
  2902. new playersT[32] , numT , playersCt[32] , numCt
  2903. get_players( playersT , numT , "che" , "TERRORIST" )
  2904. get_players( playersCt , numCt , "che" , "CT" )
  2905. g_rVotes[0] = 0
  2906. g_rVotes[1] = 0
  2907. g_rVotes[2] = 0
  2908.  
  2909. if (numT != numCt)
  2910. {
  2911. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_NOT_BALANCED")
  2912. new taskId = scanForTaskID()
  2913. set_task(10.0, "RandomTeams", taskId)
  2914. return PLUGIN_HANDLED
  2915. }
  2916.  
  2917. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_REMAIN_SAME")
  2918. new taskId = scanForTaskID()
  2919. set_task(10.0, "CurrentTeams", taskId)
  2920. }
  2921. case 1:
  2922. {
  2923. g_rVotes[0] = 0
  2924. g_rVotes[1] = 0
  2925. g_rVotes[2] = 0
  2926. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_BE_CAPTAINS")
  2927. new taskId = scanForTaskID()
  2928. set_task(10.0, "RandomCpt", taskId)
  2929. }
  2930. case 2:
  2931. {
  2932. g_rVotes[0] = 0
  2933. g_rVotes[1] = 0
  2934. g_rVotes[2] = 0
  2935. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_BE_RANDOM")
  2936. new taskId = scanForTaskID()
  2937. set_task(10.0, "RandomTeams", taskId)
  2938. }
  2939. }
  2940.  
  2941. return PLUGIN_HANDLED
  2942. }
  2943.  
  2944. public CurrentTeams() {
  2945. new players[32], pnum, tempid;
  2946. get_players(players, pnum, "ch");
  2947.  
  2948. for( new i; i<pnum; i++ ) {
  2949. tempid = players[i]
  2950. if (cs_get_user_team(tempid) == CS_TEAM_SPECTATOR)
  2951. set_task(1.0, "MoveFromSpec", tempid)
  2952. }
  2953. Start Match ()
  2954. }
  2955.  
  2956.  
  2957. public MoveFromSpec (id) {
  2958. new playersT[ 32 ] , numT , playersCt[ 32 ] , numCt
  2959. get_players( playersT , numT , "che" , "TERRORIST" )
  2960. get_players( playersCt , numCt , "che" , "CT" )
  2961.  
  2962. if (g_Twon) {
  2963. if (g_bSecondHalf) {
  2964. if( numT > numCt )
  2965. {
  2966. set_pcvar_string(cvar_humans_join_team, "CT")
  2967. client_cmd(id, "slot1")
  2968. ChangeTagB(id)
  2969. }
  2970.  
  2971. else
  2972. {
  2973. set_pcvar_string(cvar_humans_join_team, "T")
  2974. client_cmd(id, "slot1")
  2975. ChangeTagA(id)
  2976. }
  2977. }
  2978.  
  2979. else
  2980. {
  2981. if( numT > numCt )
  2982. {
  2983. set_pcvar_string(cvar_humans_join_team, "CT")
  2984. client_cmd(id, "slot1")
  2985. ChangeTagA(id)
  2986. }
  2987.  
  2988. else
  2989. {
  2990. set_pcvar_string(cvar_humans_join_team, "T")
  2991. client_cmd(id, "slot1")
  2992. ChangeTagB(id)
  2993. }
  2994. }
  2995. }
  2996.  
  2997. else
  2998. {
  2999. if (g_bSecondHalf)
  3000. {
  3001. if( numT > numCt )
  3002. {
  3003. set_pcvar_string(cvar_humans_join_team, "CT")
  3004. client_cmd(id, "slot1")
  3005. ChangeTagA(id)
  3006. }
  3007.  
  3008. else
  3009. {
  3010. set_pcvar_string(cvar_humans_join_team, "T")
  3011. client_cmd(id, "slot1")
  3012. ChangeTagB(id)
  3013. }
  3014. }
  3015.  
  3016. else
  3017. {
  3018. if( numT > numCt )
  3019. {
  3020. set_pcvar_string(cvar_humans_join_team, "CT")
  3021. client_cmd(id, "slot1")
  3022. ChangeTagB(id)
  3023. }
  3024.  
  3025. else
  3026. {
  3027. set_pcvar_string(cvar_humans_join_team, "T")
  3028. client_cmd(id, "slot1")
  3029. ChangeTagA(id)
  3030. }
  3031. }
  3032. }
  3033.  
  3034. if (g_bCpt) {
  3035. client_cmd(id, "kill")
  3036. cs_set_user_team(id, CS_TEAM_SPECTATOR)
  3037. }
  3038.  
  3039. return PLUGIN_CONTINUE
  3040. }
  3041.  
  3042. public RandomCpt() {
  3043. set_pcvar_num(cvar_mp_freezetime, 9999)
  3044. new players[32], pnum, tempid;
  3045. get_players(players, pnum, "ch");
  3046. new specialCount
  3047.  
  3048. for( new i; i<pnum; i++ ) {
  3049. tempid = players[i];
  3050. client_cmd(tempid, "kill")
  3051.  
  3052. if ( cs_get_user_team(tempid) != CS_TEAM_UNASSIGNED )
  3053. {
  3054. specialCount++
  3055. cs_set_user_team(tempid, CS_TEAM_SPECTATOR)
  3056. }
  3057.  
  3058. }
  3059. log_amx("RandomCpt stage 1")
  3060.  
  3061. if (specialCount < 2) {
  3062. if (g_CustomGame) {
  3063. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "LESS_PLAYERS_CUSTOM")
  3064. new taskId = scanForTaskID()
  3065. set_task(3.0, "RandomTeams", taskId)
  3066. }
  3067.  
  3068. else {
  3069. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "LESS_PLAYERS")
  3070. new taskId = scanForTaskID()
  3071. set_task(5.0, "EndMatch", taskId)
  3072. }
  3073. return;
  3074. }
  3075. log_amx("RandomCpt stage 2")
  3076.  
  3077. new z = random(pnum)
  3078. while (cs_get_user_team(players[z]) == CS_TEAM_UNASSIGNED)
  3079. z = random(pnum)
  3080. cs_set_user_team(players[z], CS_TEAM_T)
  3081. gCptT = players[z]
  3082.  
  3083. new q = random(pnum)
  3084. while ( (q == z) || cs_get_user_team(players[q]) == CS_TEAM_UNASSIGNED )
  3085. q = random(pnum)
  3086.  
  3087. log_amx("RandomCpt stage 3")
  3088. cs_set_user_team(players[q], CS_TEAM_CT)
  3089. gCptCT = players[q]
  3090. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "RANDOM_CAPTAINS_CHOSEN")
  3091. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TERROR_CAPTAIN_FIRST")
  3092. g_bCpt = true
  3093. log_amx("RandomCpt stage 4")
  3094. Move ()
  3095. return;
  3096. }
  3097.  
  3098. public kickhimout(id) {
  3099. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_AFK")
  3100. set_hudmessage(255, 0, 0, 0.40, 0.32, 0, 6.0, 12.0)
  3101. ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "CAPTAINS_AFK")
  3102. show_menu(0, 0, "^n", 1);
  3103. g_bCpt = false
  3104. new taskId = scanForTaskID()
  3105. set_task(5.0, "RandomTeams", taskId)
  3106. return PLUGIN_HANDLED
  3107. }
  3108.  
  3109.  
  3110. public move () {
  3111. log_amx("moveT stage 1")
  3112. Team Info ()
  3113. log_amx("moveT stage 2")
  3114. new title[64]
  3115. formatex(title, charsmax(title), "%L", LANG_PLAYER, "CHOOSE_PLAYER")
  3116. g_PlayersMenu = menu_create(title, "moveT_menu");
  3117. new players[32], pnum, tempid;
  3118. new Tplayers[32], Tpnum;
  3119. new szName[32], szTempid[10];
  3120. new pickisdone, check
  3121. get_players(players, pnum, "ch");
  3122.  
  3123. if ( !pnum )
  3124. return PLUGIN_HANDLED
  3125.  
  3126. get_players(Tplayers, Tpnum, "che", "TERRORIST");
  3127. log_amx("moveT stage 3")
  3128.  
  3129. for( new i; i<pnum; i++ )
  3130. {
  3131. tempid = players[i];
  3132.  
  3133. if ((tempid == gCptT) || (tempid == gCptCT))
  3134. check++
  3135.  
  3136. if (cs_get_user_team(tempid) == CS_TEAM_UNASSIGNED)
  3137. continue;
  3138.  
  3139. else if (cs_get_user_team(tempid) == CS_TEAM_SPECTATOR) {
  3140. get_user_name(tempid, szName, 31);
  3141. num_to_str(tempid, szTempid, 9);
  3142. menu_additem(g_PlayersMenu, szName, szTempid);
  3143. pickisdone ++
  3144. }
  3145. }
  3146.  
  3147. log_amx("moveT stage 4")
  3148. if (check != 2) {
  3149. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_DISCONNECTED")
  3150. g_bCpt = false
  3151. removeAllTasks()
  3152. new taskId = scanForTaskID()
  3153. set_task(3.0, "RandomTeams", taskId)
  3154. return PLUGIN_HANDLED
  3155. }
  3156.  
  3157. if (pickisdone == 0) {
  3158. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_ARE_SET")
  3159. g_bCpt = false
  3160. removeAllTasks()
  3161. new taskId = scanForTaskID()
  3162. set_task(10.0, "StartMatch", taskId)
  3163. return PLUGIN_HANDLED
  3164. }
  3165.  
  3166. if (Tpnum >= get_pcvar_num(cvar_pLeft)/2 ) {
  3167. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TERROR_TEAM_FULL")
  3168. moveCT()
  3169. return PLUGIN_HANDLED
  3170. }
  3171.  
  3172. log_amx("moveT stage 5")
  3173.  
  3174. menu_display(gCptT, g_PlayersMenu)
  3175. set_task(25.0, "kickhimout", gCptT)
  3176. log_amx("moveT stage 6")
  3177. return PLUGIN_HANDLED;
  3178. }
  3179.  
  3180. public moveT_menu(id, g_PlayersMenu, item) {
  3181. if( item == MENU_EXIT )
  3182. {
  3183. menu_display(id, g_PlayersMenu)
  3184. return PLUGIN_HANDLED;
  3185. }
  3186.  
  3187. remove_task(gCptT)
  3188. new data[6], iName[64];
  3189. new access, callback;
  3190. menu_item_getinfo(g_PlayersMenu, item, access, data,5, iName, 63, callback);
  3191. new tempid = str_to_num(data);
  3192. new name[32]
  3193. new g_bCptNm[64]
  3194. get_user_name(gCptT, g_bCptNm, 63)
  3195. get_user_name(tempid, name, 31)
  3196. cs_set_user_team(tempid, CS_TEAM_T)
  3197. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CHOSEN_IN_TEAM_TERROR", name, g_bCptNm)
  3198. menu_destroy(g_PlayersMenu);
  3199. remove_task(gCptT);
  3200. moveCT()
  3201. return PLUGIN_HANDLED
  3202. }
  3203.  
  3204.  
  3205. public moveCT() {
  3206. new title[64]
  3207. formatex(title, charsmax(title), "%L", LANG_PLAYER, "CHOOSE_PLAYER")
  3208. g_PlayersMenu = menu_create(title, "moveCT_menu");
  3209. new players[32], pnum, tempid;
  3210. new CTplayers[32], CTpnum;
  3211. new szName[32], szTempid[10];
  3212. new pickisdone, check
  3213. get_players(players, pnum, "ch");
  3214. get_players(CTplayers, CTpnum, "che", "CT");
  3215.  
  3216. for( new i; i<pnum; i++ )
  3217. {
  3218. tempid = players[i];
  3219.  
  3220. if ((tempid == gCptT) || (tempid == gCptCT))
  3221. check++
  3222.  
  3223. if (cs_get_user_team(tempid) == CS_TEAM_UNASSIGNED)
  3224. continue;
  3225.  
  3226. else if (cs_get_user_team(tempid) == CS_TEAM_SPECTATOR) {
  3227. get_user_name(tempid, szName, 31);
  3228. num_to_str(tempid, szTempid, 9);
  3229. menu_additem(g_PlayersMenu, szName, szTempid);
  3230. pickisdone ++
  3231. }
  3232. }
  3233.  
  3234. if (check != 2) {
  3235. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_DISCONNECTED")
  3236. g_bCpt = false
  3237. new taskId = scanForTaskID()
  3238. set_task(3.0, "RandomTeams", taskId)
  3239. return PLUGIN_HANDLED
  3240. }
  3241.  
  3242. if (pickisdone == 0) {
  3243. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_ARE_SET")
  3244. g_bCpt = false
  3245. new taskId = scanForTaskID()
  3246. set_task(10.0, "StartMatch", taskId)
  3247. return PLUGIN_HANDLED
  3248. }
  3249.  
  3250. if (CTpnum >= get_pcvar_num(cvar_pLeft)/2 ) {
  3251. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CT_TEAM_FULL")
  3252. Move ()
  3253. return PLUGIN_HANDLED
  3254. }
  3255.  
  3256. menu_display(gCptCT, g_PlayersMenu)
  3257. set_task(20.0, "kickhimout", gCptCT)
  3258. return PLUGIN_HANDLED;
  3259. }
  3260.  
  3261. public moveCT_menu(id, g_PlayersMenu, item) {
  3262. if( item == MENU_EXIT ) {
  3263. menu_display(id, g_PlayersMenu)
  3264. return PLUGIN_HANDLED;
  3265. }
  3266.  
  3267. remove_task(gCptCT)
  3268. new data[6], iName[64];
  3269. new access, callback;
  3270. menu_item_getinfo(g_PlayersMenu, item, access, data,5, iName, 63, callback);
  3271. new tempid = str_to_num(data);
  3272. new name[32]
  3273. new g_bCptNm[64]
  3274. get_user_name(gCptCT, g_bCptNm, 63)
  3275. get_user_name(tempid, name, 31)
  3276. cs_set_user_team(tempid, CS_TEAM_CT)
  3277. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "CHOSEN_IN_TEAM_CT", name, g_bCptNm)
  3278. menu_destroy(g_PlayersMenu);
  3279. remove_task(gCptCT);
  3280. Move ()
  3281. return PLUGIN_HANDLED
  3282. }
  3283.  
  3284. Public Team Info () {
  3285. log_amx ( "Team Info stage 1")
  3286. if (g_bCpt) {
  3287. log_amx ( "Team Info Stage 2")
  3288. New nameCT [70], levies [70]
  3289. New information about the [500]
  3290. new infoCT[500]
  3291. new players[32], pnum, tempid;
  3292. new toapprove
  3293.  
  3294. get_players(players, pnum, "ch")
  3295. get_user_name(gCptT, nameT, 69)
  3296. get_user_name(gCptCT, nameCT, 69)
  3297. formatex(infoT, 499, "%L^n-------------^n%L^n^n", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_A" : "TERRORISTS" ), LANG_PLAYER, "TEAM_INFO_CAPTAINS", nameT)
  3298. formatex(infoCT, 499, "%L^n-------------^n%L^n^n", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_B" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "TEAM_INFO_CAPTAINS", nameCT)
  3299. log_amx ( "Team Info stage 3")
  3300.  
  3301. for (new i ; i < pnum ; i++)
  3302. {
  3303. tempid = players[i]
  3304.  
  3305. if ((cs_get_user_team(tempid) == CS_TEAM_T) && (tempid != gCptT))
  3306. {
  3307. new nameofp[70]
  3308.  
  3309. get_user_name(tempid, nameofp, 69)
  3310. add (info, 499, nameofp)
  3311. add(infoT, 499, "^n")
  3312. }
  3313.  
  3314. else if ((cs_get_user_team(tempid) == CS_TEAM_CT) && (tempid != gCptCT))
  3315. {
  3316. new nameofCTp[70]
  3317.  
  3318. get_user_name(tempid, nameofCTp, 69)
  3319. add(infoCT, 499, nameofCTp)
  3320. add(infoCT, 499, "^n")
  3321. }
  3322.  
  3323. if ((cs_get_user_team(tempid) == CS_TEAM_T) && (tempid == gCptT))
  3324. toapprove++
  3325.  
  3326. else if ((cs_get_user_team(tempid) == CS_TEAM_CT) && (tempid == gCptCT))
  3327. {
  3328. toapprove++
  3329. }
  3330. }
  3331.  
  3332. if (toapprove != 2) {
  3333. set_hudmessage(255, 0, 0, 0.40, 0.32, 0, 6.0, 12.0)
  3334. ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "CAPTAINS_DISCONNECTED_HUD")
  3335. new taskId = scanForTaskID()
  3336. set_task(5.0, "RandomTeams", taskId)
  3337. return PLUGIN_HANDLED
  3338. }
  3339.  
  3340. set_hudmessage(27, 162, 229, 0.28, 0.32, 0, 6.0, 1.0)
  3341. ShowSyncHudMsg (0 g_MsgSync8, info)
  3342. log_amx ( "Team Info stage 4")
  3343.  
  3344. set_hudmessage(27, 162, 229, 0.58, 0.32, 0, 6.0, 1.0)
  3345. ShowSyncHudMsg(0, g_MsgSync2, infoCT)
  3346. new taskId = scanForTaskID()
  3347. set_task (1.0, "Team Info" TaskID)
  3348. }
  3349.  
  3350. else
  3351. {
  3352. set_hudmessage(0, 255, 0, 0.40, 0.32, 0, 6.0, 12.0)
  3353. ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "TEAMS_ARE_SET_HUD")
  3354. return PLUGIN_CONTINUE
  3355. }
  3356.  
  3357. return PLUGIN_CONTINUE
  3358. }
  3359.  
  3360.  
  3361. public RandomTeams()
  3362. {
  3363. new players[32], pnum, tempid;
  3364.  
  3365. get_players(players, pnum, "h");
  3366.  
  3367. for( new i; i<pnum; i++ ) {
  3368. tempid = players[i];
  3369. client_cmd(tempid, "kill")
  3370.  
  3371. if (cs_get_user_team(tempid) == CS_TEAM_UNASSIGNED)
  3372. continue;
  3373. cs_set_user_team(tempid, CS_TEAM_SPECTATOR)
  3374. }
  3375.  
  3376. new ringtones, DOP
  3377.  
  3378. while (AnyoneInSpec()) {
  3379. if (cs_get_user_team(players[idop]) == CS_TEAM_UNASSIGNED)
  3380. {
  3381. DOP ++
  3382. continue;
  3383. }
  3384.  
  3385. topick = random(2)
  3386.  
  3387. if (topick == 1)
  3388. {
  3389. cs_set_user_team(players[idop], CS_TEAM_T)
  3390. }
  3391.  
  3392. else
  3393. {
  3394. cs_set_user_team(players[idop], CS_TEAM_CT)
  3395. }
  3396.  
  3397. new pplayers[32], ppnum, tempid;
  3398. new ppplayers[32], pppnum;
  3399. new temppnum
  3400.  
  3401. get_players(players, pnum, "h");
  3402. get_players(pplayers, ppnum, "he", "CT")
  3403. get_players(ppplayers, pppnum, "he", "TERRORIST")
  3404.  
  3405. if (ppnum == pnum/2)
  3406. {
  3407. get_players(players, temppnum, "h");
  3408.  
  3409. for( new i; i<temppnum; i++ )
  3410. {
  3411. tempid = players[i];
  3412.  
  3413. if (cs_get_user_team(tempid) == CS_TEAM_SPECTATOR)
  3414. {
  3415. cs_set_user_team(tempid, CS_TEAM_T)
  3416. }
  3417. }
  3418. }
  3419.  
  3420. else if (pppnum == pnum/2)
  3421. {
  3422. get_players(players, temppnum, "h");
  3423.  
  3424. for( new i; i<temppnum; i++ )
  3425. {
  3426. tempid = players[i];
  3427.  
  3428. if (cs_get_user_team(tempid) == CS_TEAM_SPECTATOR)
  3429. {
  3430. cs_set_user_team(tempid, CS_TEAM_CT)
  3431. }
  3432. }
  3433. }
  3434.  
  3435. DOP ++
  3436. }
  3437. new taskId = scanForTaskID()
  3438. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "TEAMS_RANDOMIZED")
  3439. set_task(5.0, "StartMatch", taskId)
  3440. }
  3441.  
  3442. public AnyoneInSpec() {
  3443. new players[32], pnum, tempid;
  3444. get_players(players, pnum, "ch");
  3445.  
  3446. for( new i; i<pnum; i++ )
  3447. {
  3448. tempid = players[i];
  3449.  
  3450. if (cs_get_user_team(tempid) == CS_TEAM_SPECTATOR)
  3451. return true
  3452. }
  3453.  
  3454. return false
  3455. }
  3456.  
  3457.  
  3458. public StartMatch() {
  3459. if(get_pcvar_num(cvar_FFvote) && (g_bDidVoteFF == false))
  3460. {
  3461. g_bDidVoteFF = true
  3462. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "FF_VOTE_START")
  3463. new taskId = scanForTaskID()
  3464. set_task(5.0, "FriendlyFire", taskId)
  3465. return PLUGIN_HANDLED
  3466. }
  3467.  
  3468. new players[32], pnum, tempid;
  3469.  
  3470. get_players(players, pnum, "ch")
  3471.  
  3472. if (pnum < get_pcvar_num(cvar_pLeft) - 2)
  3473. {
  3474. if ( !g_CustomGame )
  3475. {
  3476. if (g_DidWaitEnough < 8)
  3477. {
  3478. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_DELAYED")
  3479. g_DidWaitEnough++
  3480. new taskId = scanForTaskID()
  3481. set_task(15.0, "StartMatch", taskId)
  3482. return PLUGIN_HANDLED
  3483. }
  3484.  
  3485. set_pcvar_string(cvar_humans_join_team, "")
  3486. g_iScore [0] = 0
  3487. g_iScore [1] = 0
  3488. g_AfterRdy = false
  3489. g_IsStarted = false
  3490. g_bDidVoteFF = false
  3491. g_DidWaitEnough = 0
  3492. gPlayersLeft = get_maxplayers()
  3493.  
  3494. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "NO_MINIMUM", get_pcvar_num(cvar_pLeft) - 2)
  3495. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "NO_MINIMUM_CONTINUE")
  3496. entity_set_float(gEntShowLeft, EV_FL_nextthink, 1.0)
  3497. server_cmd("exec practice.cfg")
  3498. server_exec()
  3499.  
  3500. for( new i; i<pnum; i++ ) {
  3501. tempid = players[i];
  3502. g_bIsReady[tempid] = false
  3503. remove_task(tempid)
  3504. g_iTimeLeft[tempid] = get_pcvar_num(cvar_TimeLeft)
  3505. g_LeftKills[tempid] = 0
  3506. g_bSecondHalf = false
  3507. ToSetTaskToInfo (tempid)
  3508. }
  3509. return PLUGIN_HANDLED
  3510. }
  3511. }
  3512.  
  3513. for (new x ; x<pnum ; x++)
  3514. {
  3515. tempid = players[x]
  3516.  
  3517. switch( cs_get_user_team(tempid) ) {
  3518. case CS_TEAM_UNASSIGNED: continue;
  3519. case CS_TEAM_SPECTATOR: server_cmd("kick # %d", get_user_userid(tempid))
  3520. case CS_TEAM_T: ChangeTagA(tempid)
  3521. case CS_TEAM_CT: ChangeTagB(tempid)
  3522. }
  3523. }
  3524.  
  3525. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
  3526. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
  3527. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
  3528. new taskId = scanForTaskID()
  3529. set_task(4.0, "Settings", taskId)
  3530.  
  3531. return PLUGIN_HANDLED
  3532. }
  3533.  
  3534. public ChangeTagA(id) {
  3535. if ( !( 1 <= id <= gMaxPlayers ) || !get_pcvar_num(cvar_TeamTag) )
  3536. return;
  3537.  
  3538. new pname[65]
  3539. new newname[70]
  3540. get_user_name(id, pname, 64)
  3541. pname = RemoveOldTag(pname, strlen(pname))
  3542. formatex(newname, 69, "%L %s", LANG_PLAYER, "TEAM_A", pname)
  3543. set_user_info(id, "name", newname)
  3544. }
  3545.  
  3546. public ChangeTagB(id) {
  3547. if ( !( 1 <= id <= gMaxPlayers ) || !get_pcvar_num(cvar_TeamTag) )
  3548. return;
  3549.  
  3550. new pname[65]
  3551. new newname[70]
  3552. get_user_name(id, pname, 64)
  3553. pname = RemoveOldTag(pname, strlen(pname))
  3554. formatex(newname, 69, "%L %s", LANG_PLAYER, "TEAM_B", pname)
  3555. set_user_info(id, "name", newname)
  3556. }
  3557.  
  3558. public RemoveOldTag(pname[65], p_len) { // SUPPORTS ONLY DEFAULT GIVEN NAMES (TEAM A AND TEAM B)
  3559.  
  3560. if ( containi(pname, "team") != -1 && ( containi(pname, "a)") != -1 || containi(pname, "b)") != -1 ) )
  3561. {
  3562. new newName[64], indicator
  3563. new pos = containi(pname, "a)")
  3564.  
  3565. if ( pos == -1 )
  3566. pos = containi(pname, "b)")
  3567.  
  3568. for ( new i = pos+3 ; i < p_len ; i++ )
  3569. newName[indicator++] = pname[i]
  3570.  
  3571. trim(newName)
  3572. formatex(pname, charsmax(pname), "%s", newName)
  3573. return pname
  3574. }
  3575.  
  3576. return pname
  3577. }
  3578.  
  3579. public SwitchTeams() {
  3580. new supportvariable
  3581.  
  3582. supportvariable g_iScore = [0]
  3583. g_iScore [0] = g_iScore [1]
  3584. g_iScore [1] = supportvariable
  3585.  
  3586. new players[32], pnum, tempid;
  3587. get_players(players, pnum, "ch");
  3588.  
  3589. for( new i; i<pnum; i++ ) {
  3590. tempid = players[i];
  3591. switch( cs_get_user_team(tempid) ) {
  3592. case CS_TEAM_T: cs_set_user_team(tempid, CS_TEAM_CT)
  3593. case CS_TEAM_CT: cs_set_user_team(tempid, CS_TEAM_T)
  3594. }
  3595. }
  3596.  
  3597. g_bSecondHalf = true
  3598. return PLUGIN_HANDLED
  3599. }
  3600.  
  3601. public KnifeSwitch(WinningTeam) {
  3602. new players[32], pnum;
  3603.  
  3604. switch ( WinningTeam ) {
  3605. case T_WIN: get_players(players, pnum, "che", "TERRORIST")
  3606. case CT_WIN: get_players(players, pnum, "che", "CT")
  3607. }
  3608.  
  3609. New menuTitle [78], options [78]
  3610. formatex(menuTitle, charsmax(menuTitle), "[Auto-Mix]\w %L", LANG_PLAYER, "KNIFE_MENU_TITLE")
  3611. g_switchmenu = menu_create(menuTitle, "handleSwitch")
  3612. formatex(options, charsmax(options), "%L", LANG_PLAYER, "KNIFE_MENU_STAY")
  3613. menu_additem(g_switchmenu, options)
  3614. formatex(options, charsmax(options), "%L", LANG_PLAYER, "KNIFE_MENU_SWAP")
  3615. menu_additem(g_switchmenu, options)
  3616.  
  3617. for ( new i ; i < pnum ; i++ )
  3618. menu_display(players[i], g_switchmenu)
  3619.  
  3620. new intParam[1]
  3621. new taskId = scanForTaskID()
  3622. intParam[0] = WinningTeam
  3623. set_task(8.0, "declareSwitch", taskId, intParam, 1)
  3624. }
  3625.  
  3626. public handleSwitch(id, menu, item) {
  3627. if( item == MENU_EXIT ) {
  3628. menu_display(id, g_switchmenu)
  3629. return PLUGIN_HANDLED;
  3630. }
  3631.  
  3632. g_switchVotes[item]++
  3633. switch ( item ) {
  3634. case 0: client_print(id, 3, "%s You have voted to: Stay.", PREFIX)
  3635. case 1: client_print(id, 3, "%s You have voted to: Swap.", PREFIX)
  3636. }
  3637. return PLUGIN_CONTINUE
  3638. }
  3639.  
  3640. public declareSwitch(recvParam[], prevTaskId) {
  3641. new taskId = scanForTaskID()
  3642.  
  3643. if ( g_switchVotes[0] > g_switchVotes[1] ) {
  3644. client_print(0, 3, "%s %L ---> %L.", PREFIX, LANG_PLAYER, "KNIFE_MENU_RESULT", LANG_PLAYER, "KNIFE_MENU_STAY")
  3645. g_Twon = false
  3646. set_task(3.0, "SettingsAfter", taskId)
  3647. return PLUGIN_HANDLED
  3648. }
  3649. else
  3650. client_print(0, 3, "%s %L ---> %L.", PREFIX, LANG_PLAYER, "KNIFE_MENU_RESULT", LANG_PLAYER, "KNIFE_MENU_SWAP")
  3651.  
  3652. g_Twon = true
  3653.  
  3654. for ( new i = 1 ; i <= gMaxPlayers ; i++ )
  3655. {
  3656. if ( is_user_connected(i) )
  3657. {
  3658. if ( cs_get_user_team(i) == CS_TEAM_CT )
  3659. cs_set_user_team(i, CS_TEAM_T)
  3660. else if ( cs_get_user_team(i) == CS_TEAM_T )
  3661. cs_set_user_team(i, CS_TEAM_CT)
  3662. }
  3663. }
  3664.  
  3665. set_task(3.0, "SettingsAfter", taskId)
  3666. return PLUGIN_CONTINUE
  3667. }
  3668.  
  3669.  
  3670. public Settings() {
  3671. if (get_pcvar_num(cvar_KnifeRound)) {
  3672. g_KnifeRound = true
  3673. set_pcvar_float(cvar_mp_roundtime, 1.75)
  3674. set_pcvar_num(cvar_mp_freezetime, 7)
  3675. set_pcvar_float(cvar_mp_buytime, 0.1)
  3676. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
  3677. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
  3678. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
  3679. set_pcvar_num(cvar_sv_restart, 3)
  3680. new taskId = scanForTaskID()
  3681. set_task(4.0, "TSAYKnife", taskId)
  3682. }
  3683.  
  3684. else
  3685. {
  3686. g_KnifeRound = false
  3687. server_cmd("exec pug.cfg")
  3688. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
  3689. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
  3690. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
  3691. server_cmd("sv_restart 1")
  3692. new taskId = scanForTaskID()
  3693. set_task(2.0, "Started", taskId)
  3694. }
  3695.  
  3696. }
  3697.  
  3698. public TSAYKnife() {
  3699.  
  3700. for ( new i = 1 ; i <= gMaxPlayers ; i++ )
  3701. {
  3702. if ( is_user_alive(i) )
  3703. engclient_cmd(i, "weapon_knife")
  3704. }
  3705.  
  3706. set_hudmessage(255, 255, 255, 0.10, 0.68, 0, 6.0, 15.0)
  3707. ShowSyncHudMsg(0, g_MsgSync7, "%L", LANG_PLAYER, "KNIFE_ROUND_ATTENTION")
  3708. }
  3709.  
  3710. public SettingsAfter() {
  3711. g_KnifeRound = false
  3712. g_bCpt = false
  3713. server_cmd("exec pug.cfg")
  3714. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
  3715. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
  3716. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
  3717. set_pcvar_num(cvar_sv_restart, 1)
  3718. new taskId = scanForTaskID()
  3719. set_task(5.0, "Started", taskId)
  3720. }
  3721.  
  3722. public Started() {
  3723. if (g_bFFoff)
  3724. set_pcvar_num(cvar_mp_friendlyfire, 0)
  3725. else
  3726. set_pcvar_num(cvar_mp_friendlyfire, 1)
  3727. set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 20.0)
  3728. ShowSyncHudMsg(0, g_MsgSync3, "%L", LANG_PLAYER, "FIRST_HALF_STARTED")
  3729.  
  3730. for ( new i = 1 ; i <= gMaxPlayers ; i++ )
  3731. {
  3732. if ( is_user_connected(i) && cs_get_user_team(i) != CS_TEAM_SPECTATOR && !is_user_hltv(i) && !is_user_bot(i) )
  3733. gDidPlayUntilEnd[i] = true
  3734. }
  3735.  
  3736. g_IsStarted = true
  3737. g_AfterRdy = false
  3738. }
  3739.  
  3740.  
  3741. public final match () {
  3742. set_hudmessage(255, 255, 255, 0.07, 0.59, 0, 6.0, 15.0)
  3743. ShowSyncHudMsg (0, g_MsgSync3, "% L", LANG_PLAYER, "MATCH_OVER", g_iScore [0], g_iScore [1])
  3744. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_OVER2")
  3745. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MATCH_OVER3")
  3746. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "PLUGIN_RESTART")
  3747. g_Restart = true
  3748.  
  3749. sortPoints ()
  3750.  
  3751. if ( get_pcvar_num(cvar_Rankings) )
  3752. doRankings ()
  3753.  
  3754. new taskId = scanForTaskID()
  3755. set_task(15.0, "MatchIsOver", taskId)
  3756. }
  3757.  
  3758. public sortPoints()
  3759. {
  3760. for ( new i = 1 ; i <= gMaxPlayers ; i++ )
  3761. {
  3762. ow (! is_user_connected (i) || (g_iScore [0]! = 16 && g_iScore [1]! = 16))
  3763. continue;
  3764.  
  3765. if ( gDidPlayUntilEnd[i] )
  3766. {
  3767. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_PlaysUntilEndPoints) )
  3768. client_print(i, print_chat, "%s You have GAINED %d points for playing a full match.", PREFIX, get_pcvar_num(cvar_PlaysUntilEndPoints))
  3769. gPoints[i] += get_pcvar_num(cvar_PlaysUntilEndPoints)
  3770. }
  3771.  
  3772. switch ( get_pcvar_num(cvar_TeamTag) )
  3773. {
  3774. case 0:
  3775. {
  3776. if ( g_iScore[0] > g_iScore[1] && cs_get_user_team(i) == CS_TEAM_T )
  3777. {
  3778. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
  3779. client_print(i, print_chat, "%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
  3780. gPoints [i] + = get_pcvar_num (cvar_WinsMatchPoints)
  3781.  
  3782. }
  3783.  
  3784. else if ( g_iScore[1] > g_iScore[0] && cs_get_user_team(i) == CS_TEAM_CT )
  3785. {
  3786. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
  3787. client_print(i, print_chat, "%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
  3788. gPoints [i] + = get_pcvar_num (cvar_WinsMatchPoints)
  3789. }
  3790.  
  3791. else
  3792. {
  3793. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_LosesMatchPoints) )
  3794. client_print(i, print_chat, "%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_LOSE", get_pcvar_num(cvar_LosesMatchPoints))
  3795. gPoints[i] -= get_pcvar_num(cvar_LosesMatchPoints)
  3796. }
  3797. }
  3798.  
  3799. case 1:
  3800. {
  3801. new CsTeams:team
  3802.  
  3803. switch ( g_Twon )
  3804. {
  3805. case 1:
  3806. {
  3807. ow (g_iScore [0]> g_iScore [1])
  3808. team = CS_TEAM_T
  3809. else
  3810. team = CS_TEAM_CT
  3811. }
  3812.  
  3813. case 0:
  3814. {
  3815. ow (g_iScore [1]> g_iScore [0])
  3816. team = CS_TEAM_CT
  3817. else
  3818. team = CS_TEAM_T
  3819. }
  3820. }
  3821.  
  3822. if ( cs_get_user_team(i) == team )
  3823. {
  3824. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
  3825. client_print(i, print_chat, "%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
  3826. gPoints [i] + = get_pcvar_num (cvar_WinsMatchPoints)
  3827. }
  3828.  
  3829. else
  3830. {
  3831. if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_LosesMatchPoints) )
  3832. client_print(i, print_chat, "%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_LOSE", get_pcvar_num(cvar_WinsMatchPoints))
  3833. gPoints[i] -= get_pcvar_num(cvar_LosesMatchPoints)
  3834. }
  3835. }
  3836. }
  3837.  
  3838. SaveStats (i)
  3839. }
  3840. }
  3841.  
  3842. public doRankings ()
  3843. {
  3844. new KillerName[256], DeathsName[256], BombPName[256], BombDName[256]
  3845. new players[32], pnum, tempid
  3846. New topKillerID, topDeathsID, topBombPID, topBombDID
  3847. New topKills, topDeaths, topBombP, topBombD
  3848. new winningTeam[65]
  3849. get_players(players, pnum, "ch")
  3850.  
  3851. switch ( get_pcvar_num(cvar_TeamTag) )
  3852. {
  3853. case 0:
  3854. {
  3855. ow (g_iScore [0]> g_iScore [1])
  3856. formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "T_FULL")
  3857. else
  3858. formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "CT_FULL")
  3859. }
  3860.  
  3861. case 1:
  3862. {
  3863. switch ( g_Twon )
  3864. {
  3865. case 1:
  3866. {
  3867. ow (g_iScore [g_bSecondHalf? 0: 1]> g_iScore [g_bSecondHalf? 1: 0])
  3868. formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_A")
  3869. else
  3870. formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_B")
  3871. }
  3872.  
  3873. case 0:
  3874. {
  3875. ow (g_iScore [g_bSecondHalf? 1: 0]> g_iScore [g_bSecondHalf? 0: 1])
  3876. formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_A")
  3877. else
  3878. formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_B")
  3879. }
  3880. }
  3881. }
  3882. }
  3883.  
  3884.  
  3885. for ( new i ; i < pnum ; i++ )
  3886. {
  3887. tempid = players[i]
  3888.  
  3889. if ( g_TotalKills[tempid] >= topKills && g_TotalKills[tempid] )
  3890. {
  3891. topKills = g_TotalKills[tempid]
  3892. topKillerID = tempid
  3893. }
  3894.  
  3895. if (g_TotalDeaths [tempid]> = topDeaths && g_TotalDeaths [tempid])
  3896. {
  3897. topDeaths = g_TotalDeaths [tempid]
  3898. topDeathsID = tempid
  3899. }
  3900.  
  3901. if (g_BombPlants [tempid]> = topBombP && g_BombPlants [tempid])
  3902. {
  3903. topBombP = g_BombPlants [tempid]
  3904. topBombPID = tempid
  3905. }
  3906.  
  3907. if ( g_BombDefusions[tempid] >= topBombD && g_BombDefusions[tempid] )
  3908. {
  3909. topBombD = g_BombDefusions[tempid]
  3910. topBombDID = tempid
  3911. }
  3912. }
  3913.  
  3914. if ( 1 <= topKillerID <= gMaxPlayers )
  3915. get_user_name(topKillerID, KillerName, charsmax(KillerName))
  3916. if (1 <= topDeathsID <= gMaxPlayers)
  3917. get_user_name(topDeathsID, DeathsName, charsmax(DeathsName))
  3918. if ( 1 <= topBombPID <= gMaxPlayers )
  3919. get_user_name(topBombPID, BombPName, charsmax(BombPName))
  3920. if ( 1 <= topBombDID <= gMaxPlayers )
  3921. get_user_name(topBombDID, BombDName, charsmax(BombDName))
  3922.  
  3923. for ( new i ; i < pnum ; i++ )
  3924. {
  3925. tempid = players[i]
  3926.  
  3927. if ( g_TotalKills[tempid] == topKills && tempid != topKillerID && g_TotalKills[tempid] )
  3928. {
  3929. new lineToAdd[65] = ", "
  3930. new pName[64]
  3931. get_user_name(tempid, pName, charsmax(pName))
  3932. add(lineToAdd, charsmax(lineToAdd), pName)
  3933. add(KillerName, charsmax(KillerName) - strlen(BombDName) , lineToAdd)
  3934. }
  3935.  
  3936. if ( g_TotalDeaths[tempid] == topDeaths && tempid != topDeathsID && g_TotalDeaths[tempid] )
  3937. {
  3938. new lineToAdd[65] = ", "
  3939. new pName[64]
  3940. get_user_name(tempid, pName, charsmax(pName))
  3941. add(lineToAdd, charsmax(lineToAdd), pName)
  3942. add(DeathsName, charsmax(DeathsName) - strlen(DeathsName) , lineToAdd)
  3943. }
  3944.  
  3945. if (g_BombPlants [tempid] == topBombP tempid &&! = topBombPID && g_BombPlants [tempid])
  3946. {
  3947. new lineToAdd[65] = ", "
  3948. new pName[64]
  3949. get_user_name(tempid, pName, charsmax(pName))
  3950. add(lineToAdd, charsmax(lineToAdd), pName)
  3951. add(BombPName, charsmax(BombPName) - strlen(BombPName) , lineToAdd)
  3952. }
  3953.  
  3954. if ( g_BombDefusions[tempid] == topBombD && tempid != topBombDID && g_BombDefusions[tempid] )
  3955. {
  3956. new lineToAdd[65] = ", "
  3957. new pName[64]
  3958. get_user_name(tempid, pName, charsmax(pName))
  3959. add(lineToAdd, charsmax(lineToAdd), pName)
  3960. add(BombDName, charsmax(BombDName) - strlen(BombDName) , lineToAdd)
  3961. }
  3962. }
  3963.  
  3964.  
  3965. new msgToDisplay[456] = "%L"
  3966. format(msgToDisplay, charsmax(msgToDisplay), msgToDisplay, LANG_PLAYER, "RANKING_TABLE", winningTeam, strlen(KillerName) ? KillerName : "NONE", topKills, strlen(DeathsName) ? DeathsName : "NONE", topDeaths,
  3967. strlen(BombPName) ? BombPName : "NONE", topBombP, strlen(BombDName) ? BombDName : "NONE", topBombD, g_PugLeaves)
  3968.  
  3969. new taskId = scanForTaskID()
  3970. set_task(1.0, "displayRankingTable", taskId, msgToDisplay, strlen(msgToDisplay), "b")
  3971. }
  3972.  
  3973. public displayRankingTable(msgToDisplay[], taskId)
  3974. {
  3975. set_hudmessage(135, 135, 135, 0.35, 0.21, 1, 6.0, 1.0)
  3976. show_hudmessage(0, msgToDisplay)
  3977. }
  3978.  
  3979. public MatchIsOver()
  3980. {
  3981. set_pcvar_string(cvar_sv_password, "")
  3982. set_task(1.0, "restartServer", scanForTaskID())
  3983. }
  3984.  
  3985. public restartServer()
  3986. {
  3987. server_cmd("restart")
  3988. }
  3989.  
  3990. public player(id) {
  3991. if (g_bCpt) {
  3992. client_print(id, print_chat, "%L", LANG_PLAYER, "MENU_BLOCK", PREFIX)
  3993. return PLUGIN_HANDLED
  3994. }
  3995.  
  3996. new title[79]
  3997. new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
  3998.  
  3999. formatex(title, charsmax(title), "%L", LANG_PLAYER, "PLAYERS_MENU_TITLE")
  4000. formatex(item1, charsmax(item1), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM1")
  4001. formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM4")
  4002. formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM5")
  4003. formatex(item6, charsmax(item6), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM6")
  4004. formatex(item7, charsmax(item7), "\y%L", LANG_PLAYER, "PLAYERS_MENU_ITEM7")
  4005. new pVote = menu_create(title, "pmenu")
  4006.  
  4007. menu_additem(pVote, item1)
  4008.  
  4009. if (g_IsStarted) {
  4010. formatex(item2, charsmax(item2), "\d%L", LANG_PLAYER, "PLAYERS_MENU_ITEM2")
  4011. formatex(item3, charsmax(item3), "\d%L", LANG_PLAYER, "PLAYERS_MENU_ITEM3")
  4012. menu_additem(pVote, item2)
  4013. menu_additem(pVote, item3)
  4014. }
  4015.  
  4016. else if (g_bIsReady[id]) {
  4017. formatex(item2, charsmax(item2), "\d%L", LANG_PLAYER, "PLAYERS_MENU_ITEM2")
  4018. formatex(item3, charsmax(item3), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM3")
  4019. menu_additem(pVote, item2)
  4020. menu_additem(pVote, item3)
  4021. }
  4022.  
  4023. else {
  4024. formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM2")
  4025. formatex(item3, charsmax(item3), "\d%L", LANG_PLAYER, "PLAYERS_MENU_ITEM3")
  4026. menu_additem(pVote, item2)
  4027. menu_additem(pVote, item3)
  4028. }
  4029.  
  4030. menu_additem(pVote, item4)
  4031. menu_additem(pVote, item5)
  4032. menu_additem(pVote, item6)
  4033. menu_additem(pVote, item7)
  4034. menu_display(id, pVote)
  4035. return PLUGIN_CONTINUE
  4036. }
  4037.  
  4038. public pmenu(id, menu, item) {
  4039. if( item == MENU_EXIT )
  4040. return PLUGIN_HANDLED;
  4041.  
  4042. new playername[32]
  4043. get_user_name(id, playername, 31)
  4044.  
  4045. switch(item) {
  4046. case 0: cmds(id)
  4047. case 1: {
  4048. if (g_IsStarted || g_bIsReady [id]) {
  4049. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "OPTION_NOT_AVAILABLE")
  4050. player (id)
  4051. return PLUGIN_HANDLED
  4052. }
  4053.  
  4054. else {
  4055. Prepare(id)
  4056. return PLUGIN_HANDLED
  4057. }
  4058.  
  4059. }
  4060.  
  4061. case 2: {
  4062. if (g_bIsReady[id])
  4063. {
  4064. if (g_IsStarted)
  4065. {
  4066. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "OPTION_NOT_AVAILABLE")
  4067. player (id)
  4068. return PLUGIN_HANDLED
  4069. }
  4070.  
  4071. unPrepare(id)
  4072. return PLUGIN_HANDLED
  4073. }
  4074.  
  4075. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "OPTION_NOT_AVAILABLE")
  4076. player (id)
  4077. return PLUGIN_HANDLED
  4078. }
  4079.  
  4080. case 3: {
  4081. di spla y_mu Temeni (id, g_menuposition [id] = 0)
  4082. return PLUGIN_HANDLED
  4083. }
  4084.  
  4085. case 4:
  4086. {
  4087. if ( !get_pcvar_num(cvar_RanksSystem) )
  4088. {
  4089. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "RANK_SYSTEM_DISABLED")
  4090. player (id)
  4091. return PLUGIN_HANDLED
  4092. }
  4093. showRanks(id)
  4094. return PLUGIN_HANDLED
  4095. }
  4096.  
  4097. case 5:
  4098. {
  4099. client_cmd(id, "amx_langmenu")
  4100. return PLUGIN_HANDLED
  4101. }
  4102. case 6: credits(id)
  4103. }
  4104.  
  4105. player (id)
  4106. return PLUGIN_HANDLED
  4107. }
  4108.  
  4109. public get_pug_state() {
  4110. new file = fopen(gPug_ini_file, "r")
  4111. fseek(file, -1, SEEK_END)
  4112. new getchar = fgetc(file)
  4113. fclose(file)
  4114. return getchar - '0'
  4115. }
  4116.  
  4117. public set_pug_state (summer) {
  4118. new file = fopen(gPug_ini_file, "w")
  4119. fseek(file, -1, SEEK_END)
  4120. fputc (file iState + '0')
  4121. fclose(file)
  4122. }
  4123.  
  4124.  
  4125. stock replace_it(string[], len, const what[], const with[]) {
  4126. new pos = 0;
  4127.  
  4128. if ((pos = contain(string, what)) == -1)
  4129. {
  4130. return 0;
  4131. }
  4132.  
  4133. new total = 0;
  4134. new with_len = strlen(with);
  4135. new diff = strlen(what) - with_len;
  4136. new total_len = strlen(string);
  4137. new temp_pos = 0;
  4138.  
  4139. while (replace(string[pos], len - pos, what, with) != 0)
  4140. {
  4141. total++;
  4142. pos += with_len;
  4143. total_len -= diff;
  4144.  
  4145. if (pos >= total_len)
  4146. break;
  4147. temp_pos = contain(string[pos], what);
  4148.  
  4149. if (temp_pos == -1)
  4150. break;
  4151. pos += temp_pos;
  4152. }
  4153. return total;
  4154. }
  4155.  
  4156. clear_list(id) {
  4157. for(new i = 0; i <= gMaxPlayers; ++i)
  4158. g_mute[id][i] = false
  4159. }
  4160.  
  4161. public clcmd_say(id) {
  4162. static say_args[10]
  4163. read_args(say_args, 9)
  4164. remove_quotes(say_args)
  4165.  
  4166. if ( 1 <= gChangerID <= gMaxPlayers && id == gChangerID )
  4167. {
  4168. new enteredValue = str_to_num(say_args)
  4169.  
  4170. if ( enteredValue < 0 )
  4171. {
  4172. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "ENTER_POSITIVE_VALUE")
  4173. return PLUGIN_HANDLED
  4174. }
  4175.  
  4176. switch ( gChanging )
  4177. {
  4178. case 0: set_pcvar_num(cvar_KillPoints, enteredValue)
  4179. case 1: set_pcvar_num(cvar_KnifePoints, enteredValue)
  4180. case 2: set_pcvar_num(cvar_WinsMatchPoints, enteredValue)
  4181. case 3: set_pcvar_num(cvar_PlaysUntilEndPoints, enteredValue)
  4182. case 4: set_pcvar_num(cvar_LeavesMatchPoints, enteredValue)
  4183. case 5: set_pcvar_num(cvar_LeavesMatchTime, enteredValue)
  4184. case 6: set_pcvar_num(cvar_TeamKillPoints, enteredValue)
  4185. Case 7: set_pcvar_num (cvar_BombPlantPoints, enteredValue)
  4186. case 8: set_pcvar_num(cvar_BombDefusePoints, enteredValue)
  4187. case 9: set_pcvar_num(cvar_KillLosePoints, enteredValue)
  4188. case 10: set_pcvar_num(cvar_KnifeLosePoints, enteredValue)
  4189. case 11: set_pcvar_num(cvar_LosesMatchPoints, enteredValue)
  4190. }
  4191.  
  4192. show_menu(id, 0, "^n", 0)
  4193. gChanging = 0
  4194. gChangerID = 0
  4195. PointsPricesMenu(id)
  4196. return PLUGIN_HANDLED
  4197. }
  4198.  
  4199. else if ( 1 <= gChangerID2 <= gMaxPlayers && id == gChangerID2 )
  4200. {
  4201. new enteredValue = str_to_num(say_args)
  4202.  
  4203. if ( enteredValue < 0 )
  4204. {
  4205. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "ENTER_POSITIVE_VALUE")
  4206. return PLUGIN_HANDLED
  4207. }
  4208.  
  4209. switch ( gChanging )
  4210. {
  4211. case 0: set_pcvar_num(cvar_BeginnerPoints, enteredValue)
  4212. case 1: set_pcvar_num(cvar_RegularPoints, enteredValue)
  4213. case 2: set_pcvar_num(cvar_VeteranPoints, enteredValue)
  4214. case 3: set_pcvar_num(cvar_ProPoints, enteredValue)
  4215. case 4: set_pcvar_num(cvar_HardCorePoints, enteredValue)
  4216. }
  4217.  
  4218. show_menu(id, 0, "^n", 0)
  4219. gChanging2 = 0
  4220. gChangerID2 = 0
  4221. RanksPricesMenu(id)
  4222. return PLUGIN_HANDLED
  4223. }
  4224.  
  4225. if(say_args[0] == '!' && containi(say_args, "mute") != -1)
  4226. {
  4227. IF (! get_pcvar_num (c r_Mu Temeni))
  4228. {
  4229. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "MUTE_MENU_DISABLED")
  4230. return PLUGIN_HANDLED
  4231. }
  4232.  
  4233. di spla y_mu Temeni (id, g_menuposition [id] = 0)
  4234. return PLUGIN_HANDLED_MAIN
  4235. }
  4236. return PLUGIN_CONTINUE
  4237. }
  4238.  
  4239. public fwd_voice_setclientlistening(receiver, sender, listen)
  4240. {
  4241. if(receiver == sender)
  4242. return FMRES_IGNORED
  4243.  
  4244. if(g_mute[receiver][sender]) {
  4245. engfunc(EngFunc_SetClientListening, receiver, sender, 0)
  4246. return FMRES_SUPERCEDE
  4247. }
  4248. return FMRES_IGNORED
  4249. }
  4250.  
  4251. di spla y_mu Temeni (id, pos) {
  4252. if(pos < 0)
  4253. return
  4254.  
  4255. static team[11]
  4256. get_user_team(id, team, 10)
  4257.  
  4258. new at = get_pcvar_num(cvar_alltalk)
  4259. get_players(g_menuplayers[id], g_playersnum[id],
  4260. at ? "c" : "ce", at ? "" : team)
  4261.  
  4262. new start = pos * 8
  4263. if(start >= g_playersnum[id])
  4264. start = pos = g_menuposition[id]
  4265.  
  4266. new end = start + 8
  4267. if(end > g_playersnum[id])
  4268. end = g_playersnum[id]
  4269.  
  4270. new len = formatex(menubody, 511, "\r%s \w%L^n^n", PREFIX, LANG_PLAYER, "MUTE_MENU_TITLE")
  4271.  
  4272. static name[32]
  4273.  
  4274. new b = 0, i
  4275. new keys = MENU_KEY_0
  4276.  
  4277. for(new a = start; a < end; ++a)
  4278. {
  4279. i = g_menuplayers[id][a]
  4280. get_user_name(i, name, 31)
  4281.  
  4282. if(i == id)
  4283. {
  4284. ++b
  4285. len += formatex(menubody[len], 511 - len, "\d# Auto-Mix By p1Mp\w^n")
  4286. }
  4287. else
  4288. {
  4289. keys |= (1<<b)
  4290. len += formatex(menubody[len], 511 - len, "\w%d. %s %s\w^n", ++b, name, g_mute[id][i] ? "\r(Muted)" : "")
  4291. }
  4292. }
  4293.  
  4294. if(end != g_playersnum[id])
  4295. {
  4296. formatex(menubody[len], 511 - len, "^n9. %L...^n0. %L", LANG_PLAYER, "MENU_ITEM_MORE", LANG_PLAYER, pos ? "MENU_ITEM_BACK" : "MENU_ITEM_EXIT")
  4297. keys |= MENU_KEY_9
  4298. }
  4299. else
  4300. formatex(menubody[len], 511-len, "^n0. %L", LANG_PLAYER, pos ? "MENU_ITEM_BACK" : "MENU_ITEM_EXIT")
  4301.  
  4302. show_menu(id, keys, menubody, -1, "mute menu")
  4303. }
  4304.  
  4305. The public cti o n_mu Temeni (id, Key)
  4306. {
  4307. switch(key)
  4308. {
  4309. Case 8: di spla y_mu Temeni (id, g_menuposition ++ [id])
  4310. Case 9: di spla y_mu Temeni (id, --g_menuposition [id])
  4311. default:
  4312. {
  4313. new player = g_menuplayers[id][g_menuposition[id] * 8 + key]
  4314.  
  4315. g_mute[id][player] = g_mute[id][player] ? false : true
  4316. di spla y_mu Temeni (id, g_menuposition [id])
  4317.  
  4318. static name[32]
  4319. get_user_name(player, name, 31)
  4320. client_print(id, print_chat, "You have %smuted %s", g_mute[id][player] ? "" : "un", name)
  4321. }
  4322. }
  4323. return PLUGIN_HANDLED
  4324. }
  4325.  
  4326. public showRanks(id)
  4327. {
  4328. if ( !is_user_connected(id) || is_user_bot(id) || is_user_hltv(id) )
  4329. return PLUGIN_HANDLED
  4330.  
  4331. if ( !get_pcvar_num(cvar_RanksSystem) )
  4332. {
  4333. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "RANK_SYSTEM_DISABLED")
  4334. return PLUGIN_HANDLED
  4335. }
  4336.  
  4337. new title[64]
  4338. formatex(title, charsmax(title), "\y[Auto-Mix]\w %L:", LANG_PLAYER, "RANKS_LIST_MENU_TITLE")
  4339.  
  4340. new menu = menu_create(title, "ranksMenuHandler")
  4341.  
  4342. new players[32], pnum, tempid
  4343. get_players(players, pnum, "ch")
  4344.  
  4345. for ( new i ; i < pnum ; i++ )
  4346. {
  4347. tempid = players[i]
  4348.  
  4349. new szId[5]
  4350. new pName[64], lineToDisplay[128] = "%s -\r "
  4351. num_to_str(tempid, szId, charsmax(szId))
  4352. get_user_name(tempid, pName, charsmax(pName))
  4353. format(lineToDisplay, charsmax(lineToDisplay), lineToDisplay, pName)
  4354. new toadd_rank[32]
  4355. formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1")
  4356.  
  4357. if ( gPoints[tempid] < get_pcvar_num(cvar_BeginnerPoints) )
  4358. formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1")
  4359. else if ( gPoints[tempid] < get_pcvar_num(cvar_RegularPoints) )
  4360. formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2")
  4361. else if ( gPoints[tempid] < get_pcvar_num(cvar_VeteranPoints) )
  4362. formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3")
  4363. else if ( gPoints[tempid] < get_pcvar_num(cvar_ProPoints) )
  4364. formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4")
  4365. else if ( gPoints[tempid] < get_pcvar_num(cvar_HardCorePoints) )
  4366. formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5")
  4367. else
  4368. formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM6")
  4369.  
  4370. add(lineToDisplay, charsmax(lineToDisplay), toadd_rank)
  4371.  
  4372. menu_additem(menu, lineToDisplay, szId, 0)
  4373. }
  4374.  
  4375. menu_display(id, menu)
  4376. return PLUGIN_HANDLED
  4377. }
  4378.  
  4379. public ranksMenuHandler(id, menu, item) {
  4380. if( item == MENU_EXIT )
  4381. return PLUGIN_HANDLED
  4382.  
  4383. new data[6], iName[64]
  4384. new access, callback
  4385. menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
  4386. new pickedId = str_to_num(data)
  4387.  
  4388. if ( !is_user_connected(pickedId) )
  4389. return PLUGIN_HANDLED
  4390.  
  4391. new pName[64]
  4392. get_user_name(pickedId, pName, charsmax(pName))
  4393. new menuToDisplay[248]
  4394. new lineToAdd[32]
  4395. new keys = MENU_KEY_0
  4396.  
  4397. if ( gPoints[pickedId] < get_pcvar_num(cvar_BeginnerPoints) )
  4398. formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_BeginnerPoints))
  4399. else if ( gPoints[pickedId] < get_pcvar_num(cvar_RegularPoints) )
  4400. formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_RegularPoints))
  4401. else if ( gPoints[pickedId] < get_pcvar_num(cvar_VeteranPoints) )
  4402. formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_VeteranPoints))
  4403. else if ( gPoints[pickedId] < get_pcvar_num(cvar_ProPoints) )
  4404. formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_ProPoints))
  4405. else if ( gPoints[pickedId] < get_pcvar_num(cvar_HardCorePoints) )
  4406. formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_HardCorePoints))
  4407. else
  4408. formatex(lineToAdd, charsmax(lineToAdd), "%d", gPoints[pickedId])
  4409.  
  4410. if ( gPoints[pickedId] < get_pcvar_num(cvar_BeginnerPoints) )
  4411. formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1", "1")
  4412. else if ( gPoints[pickedId] < get_pcvar_num(cvar_RegularPoints) )
  4413. formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2", "2")
  4414. else if ( gPoints[pickedId] < get_pcvar_num(cvar_VeteranPoints) )
  4415. formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3", "3")
  4416. else if ( gPoints[pickedId] < get_pcvar_num(cvar_ProPoints) )
  4417. formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4", "4")
  4418. else if ( gPoints[pickedId] < get_pcvar_num(cvar_HardCorePoints) )
  4419. formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5", "5")
  4420. else
  4421. formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM6", "MAX")
  4422.  
  4423. show_menu(id, keys, menuToDisplay, -1, "ranks info")
  4424. return PLUGIN_HANDLED
  4425. }
  4426.  
  4427. public ranks_showInfo(id, key)
  4428. {
  4429. showRanks(id)
  4430. return PLUGIN_HANDLED
  4431. }
  4432.  
  4433. public afkCheck_entThink(ent)
  4434. {
  4435. if ( get_playersnum() && g_IsStarted && get_pcvar_num(cvar_AFKKick) )
  4436. checkPlayers()
  4437. entity_set_float(ent, EV_FL_nextthink, halflife_time() + CHECK_FREQ)
  4438. }
  4439.  
  4440. public checkPlayers() {
  4441. for (new i = 1; i <= gMaxPlayers; i++)
  4442. {
  4443. if (is_user_alive(i) && is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i])
  4444. {
  4445. New newangle [3]
  4446. get_user_origin (i, newangle)
  4447.  
  4448. IF (newangle [0] == g_oldangles [a] [0] && newangle [1] == g_oldangles [a] [1] && newangle [2] == g_oldangles [a] [2])
  4449. {
  4450. g_afktime[i] += CHECK_FREQ
  4451. check_afktime(i)
  4452. }
  4453.  
  4454. else
  4455. {
  4456. g_oldangles [a] [0] = newangle [0]
  4457. g_oldangles [a] [1] = newangle [1]
  4458. g_oldangles [a] [2] = newangle [2]
  4459. g_afktime[i] = 0.0
  4460. }
  4461. }
  4462.  
  4463. }
  4464. return PLUGIN_HANDLED
  4465. }
  4466.  
  4467. check_afktime(id) {
  4468. new maxafktime = get_pcvar_num(cvar_mp_afktime)
  4469.  
  4470. if (maxafktime < MIN_AFK_TIME) {
  4471. log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
  4472. maxafktime = MIN_AFK_TIME
  4473. set_pcvar_num(cvar_mp_afktime, MIN_AFK_TIME)
  4474. }
  4475.  
  4476. if ( maxafktime-WARNING_TIME <= floatround(g_afktime[id]) < maxafktime) {
  4477. new timeleft = maxafktime - floatround(g_afktime[id])
  4478. client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "AFK_TIME_WARN", timeleft)
  4479. }
  4480.  
  4481. else if (floatround(g_afktime[id]) > maxafktime) {
  4482. new name[32]
  4483. get_user_name(id, name, 31)
  4484. client_print(0, print_chat, "%s %L", PREFIX, LANG_PLAYER, "AFK_KICKED", name, maxafktime)
  4485. log_amx("%s was kicked for being AFK longer than %i seconds", name, maxafktime)
  4486. server_cmd("kick #%d ^"%s %L^"", get_user_userid(id), PREFIX, LANG_PLAYER, "AFK_KICK", maxafktime)
  4487. }
  4488. }
  4489.  
  4490. public reCallSpawn(id)
  4491. fwPlayerSpawn(id-SPAWN_TASKID)
  4492.  
  4493. public fwPlayerSpawn(id) {
  4494. if ( !( 1 <= id <= gMaxPlayers ) )
  4495. return HAM_IGNORED
  4496.  
  4497. g_spawned[id] = false
  4498. if ( task_exists(id+SPAWN_TASKID) )
  4499. remove_task(id+SPAWN_TASKID)
  4500.  
  4501. if ( !is_user_alive(id) )
  4502. {
  4503. set_task(0.1, "reCallSpawn", id+SPAWN_TASKID)
  4504. return HAM_IGNORED
  4505. }
  4506.  
  4507. g_spawned[id] = true
  4508. get_user_origin(id, g_oldangles[id])
  4509. return HAM_IGNORED
  4510. }
  4511.  
  4512. register_cmd(const clcmd[], const function[], flags = -1, const info[] = "", FlagManager = -1)
  4513. {
  4514. new cmdToRegister[6][64];
  4515.  
  4516. formatex(cmdToRegister[0], charsmax(cmdToRegister[]), "say !%s", clcmd)
  4517. formatex(cmdToRegister[1], charsmax(cmdToRegister[]), "say .%s", clcmd)
  4518. formatex(cmdToRegister[2], charsmax(cmdToRegister[]), "say /%s", clcmd)
  4519. formatex(cmdToRegister[3], charsmax(cmdToRegister[]), "say_team !%s", clcmd)
  4520. formatex(cmdToRegister[4], charsmax(cmdToRegister[]), "say_team .%s", clcmd)
  4521. formatex(cmdToRegister[5], charsmax(cmdToRegister[]), "say_team /%s", clcmd)
  4522.  
  4523. for ( new i ; i < sizeof(cmdToRegister) ; i++ )
  4524. register_clcmd(cmdToRegister[i], function, flags, info, FlagManager)
  4525. }
  4526.  
  4527. scanForTaskID ()
  4528. {
  4529. for ( new i = 1337 ; i < 1337*2 ; i++ )
  4530. {
  4531. if ( !task_exists(i) )
  4532. return i
  4533. }
  4534.  
  4535. log_amx("Auto-Mix Task ID Error! Couldn't find a TASK ID!")
  4536. return 0
  4537. }
  4538.  
  4539. removeAllTasks()
  4540. {
  4541. for ( new i = 1337 ; i < 1337*2 ; i++ )
  4542. {
  4543. if ( task_exists(i) )
  4544. remove_task(i)
  4545. }
  4546. }
  4547.  
  4548. stock remove_shield(id)
  4549. {
  4550. if ( !is_user_alive(id) || !( 1 <= id <= gMaxPlayers) )
  4551. return 0;
  4552.  
  4553. m_iUserPrefs const = 510;
  4554. const USING_SHIELD = (1<<16);
  4555. const HAS_SHIELD = (1<<24);
  4556.  
  4557. new prefs = get_pdata_int(id, m_iUserPrefs) & ~USING_SHIELD;
  4558. new model[64];
  4559.  
  4560. if(prefs & HAS_SHIELD)
  4561. PEV (id, pev_viewmodel2 pattern charsmax (model));
  4562.  
  4563. if(equal(model, "models/shield/v_shield_", 23))
  4564. {
  4565. replace(model, charsmax(model), "shield/v_shield", "v");
  4566.  
  4567. set_pev (id, pev_viewmodel2 model);
  4568. }
  4569.  
  4570. PEV (id, pev_weaponmodel2 pattern charsmax (model));
  4571.  
  4572. if(equal(model, "models/shield/p_shield_", 23))
  4573. {
  4574. replace(model, charsmax(model), "shield/p_shield", "p");
  4575.  
  4576. set_pev (id, pev_weaponmodel2 model);
  4577. }
  4578. set_pdata_int(id, m_iUserPrefs, (prefs & ~HAS_SHIELD));
  4579.  
  4580. return 1;
  4581. }
  4582.  
  4583. LoadStats(id)
  4584. {
  4585. if ( is_user_hltv(id) || is_user_bot(id) )
  4586. return;
  4587.  
  4588. new authid[35]
  4589. get_user_authid(id, authid, sizeof(authid) - 1)
  4590.  
  4591. if (containi(authid, "_ID_") != -1)
  4592. return
  4593.  
  4594. new data[16]
  4595. if( fvault_get_data(gPointsVault, authid, data, sizeof(data) - 1) )
  4596. gPoints[id] = str_to_num(data)
  4597. else
  4598. gPoints[id] = 0
  4599.  
  4600. return;
  4601. }
  4602.  
  4603. SaveStats (id)
  4604. {
  4605. if ( is_user_hltv(id) || is_user_bot(id) || !get_pcvar_num(cvar_RanksSystem) )
  4606. return;
  4607.  
  4608. new authid[35]
  4609. get_user_authid(id, authid, sizeof(authid) - 1)
  4610.  
  4611. if (gPoints[id] < 0)
  4612. gPoints[id] = 0
  4613.  
  4614. if (containi(authid, "_ID_") != -1)
  4615. return
  4616.  
  4617. new data[16]
  4618. num_to_str(gPoints[id], data, sizeof(data) - 1)
  4619. fvault_set_data(gPointsVault, authid, data)
  4620.  
  4621. return;
  4622. }
  4623. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  4624. *{\\ rtf1\\ fbidis\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ ltrpar\\ lang1037\\ f0\\ fs16 \n\\ par }
  4625. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement