· 8 years ago · Apr 06, 2018, 11:20 AM
1#include <amxmodx>
2#include <amxmisc>
3#include <cstrike>
4#include <hamsandwich>
5#include <fakemeta>
6#include <fun>
7#include <engine>
8#include <fakemeta_util>
9#include <csx>
10#include <sqlx>
11
12// Hostname, nustatyk Äia.
13#define HOSTNAME "[MIX Arena] #1 VirtualNET.LT"
14
15// Prefix'as prie tekstų
16#define PREFIX "^4MIX^1"
17
18// Flagas, pagal kurį bus atpažįstamas administratorius, kuris galės valdyti MIX serverį
19#define FLAG ADMIN_BAN
20
21#define MIX_HOST "127.0.0.1"
22#define MIX_USER "root"
23#define MIX_PASSWORD ""
24#define MIX_DATABASE "rush_arena"
25
26#define POINTS_KILL 1
27#define POINTS_DEATH -1
28#define POINTS_ACE 10
29#define POINTS_HS 3
30#define POINTS_MINI_ACE 5
31#define POINTS_MIX_PLAYED 20
32#define POINTS_MIX_LOST -10
33#define POINTS_MIX_WON 20
34#define POINTS_MIX_DRAW 5
35
36#define BOMB_PLANTED_POINTS 3
37#define BOMB_DEFUSED_POINTS 7
38
39enum
40{
41 TASK_MVP = 15
42}
43
44new Handle:g_hTuple;
45
46new const szTables[][] =
47{
48 "CREATE TABLE IF NOT EXISTS `mix_players` (`player_id` varchar(32) NOT NULL, `player_name` varchar(64), `kills` int(16) NOT NULL, `deaths` int(16) NOT NULL, `headshots` int(16), `m_aces` int(16), `aces` int(16), `mix_played` int(16) NOT NULL, `mix_won` int(16) NOT NULL, `mix_lost` int(16) NOT NULL, `mix_draw` int(16) NOT NULL, `points` int(16) NOT NULL, `last_online` varchar(64), PRIMARY KEY (`player_id`))",
49 "CREATE TABLE IF NOT EXISTS `mix_games` (`id` int(32) NOT NULL AUTO_INCREMENT, `map_name` varchar(64) NOT NULL, `date` varchar(64), `rez_ct` int(16), `rez_t` int(16), PRIMARY KEY (`id`))",
50 "CREATE TABLE IF NOT EXISTS `mix_gun` (`gun_id` int(32) NOT NULL, `kills` int(16), PRIMARY KEY (`gun_id`))",
51}
52
53new pKills[33], pDeaths[33], pHeadshots[33], pAces[33], pMiniAces[33], pMixPlayed[33], pMixLost[33], pMixDraw[33], pMixWon[33], pPoints[33], bool:pLoaded[33];
54
55new pTempKills[33], pTempDeaths[33], pTempHeadshots[33], pTempAces[33], pTempMiniAces[33], pTempPoints[33], pTempPlants[33], pTempDefusions[33];
56
57new pTempAK[33], pTempM4A1[33], pTempDeagle[33], pTempAWP[33], pTempUSP[33], pTempHE[33], pTempGlock[33], pTempKnives[33], pTempScout[33], pTempFamas[33];
58
59#define isAdmin(%1) (get_user_flags(%1) & FLAG)
60
61new scoreT, scoreCT, serverPassword[64], tempCT, tempT, tempCount;
62new bool:WarmUp = true, bool:KnifeRound, bool:passwordStatus, bool:canChat = true, bool:PrepareRound, bool:Fire;
63new Kills[33];
64
65new const BlockCmds[][] =
66{
67 "amx_unban",
68 "amx_rcon",
69 "amx_cvar",
70 "amxmodmenu"
71}
72
73new const Commands[][][] =
74{
75 {"menu", "mainMenu"},
76 {"mixmenu", "mainMenu"},
77 {"live", "setLive"},
78 {"rr", "restartRound"},
79 {"restart", "restartRound"},
80 {"wm", "warmUP"},
81 {"warmup", "warmUP"},
82 {"gg", "endGame"},
83 {"stop", "endGame"},
84 {"knife", "setKnife"},
85 {"knf", "setKnife"},
86 {"score", "getScore"},
87 {"rez", "getScore"},
88 {"pw", "infoPassword"},
89 {"renkam", "setPrepare"}
90}
91
92public plugin_init()
93{
94 register_plugin("MIX Panel", "1.5", "InvIs"); // Edit Terror.
95
96 register_dictionary("mix_arena.txt");
97
98 new szFmt[64];
99
100 for(new i = 0; i < sizeof(BlockCmds); i++)
101 {
102 register_concmd(BlockCmds[i], "BlockConsole");
103 }
104
105 for(new i = 0; i < sizeof(Commands); i++)
106 {
107 format(szFmt, 63, "say .%s", Commands[i][0]);
108 register_clcmd(szFmt, Commands[i][1]);
109 format(szFmt, 63, "say /%s", Commands[i][0]);
110 register_clcmd(szFmt, Commands[i][1]);
111 format(szFmt, 63, "say !%s", Commands[i][0]);
112 register_clcmd(szFmt, Commands[i][1]);
113 format(szFmt, 63, "say_team .%s", Commands[i][0]);
114 register_clcmd(szFmt, Commands[i][1]);
115 format(szFmt, 63, "say_team /%s", Commands[i][0]);
116 register_clcmd(szFmt, Commands[i][1]);
117 format(szFmt, 63, "say_team !%s", Commands[i][0]);
118 register_clcmd(szFmt, Commands[i][1]);
119 }
120
121 register_clcmd("jointeam", "cmd_block");
122
123 register_clcmd("say .choose", "choosePlayers");
124 register_clcmd("say /choose", "choosePlayers");
125
126 register_clcmd("say .ban", "BanMenu");
127 register_clcmd("say .kick", "KickMenu");
128 register_clcmd("say .maps", "MapsMenu");
129 register_clcmd("say .leave", "LeaveMenu");
130
131 register_clcmd("say .chaton", "Chat");
132 register_clcmd("say .chatoff", "ChatMenu");
133
134 register_clcmd("say .ff", "FriendlyFire");
135
136 register_clcmd("say .stats", "PlayerRank");
137 register_clcmd("say .top", "showTOP");
138
139 register_clcmd("say .rank", "showPlayerStats");
140 register_clcmd("say .me", "showPlayerRank");
141 register_clcmd("say .ace", "showPlayerAce");
142
143 register_clcmd("SetPassword", "_SetPassword");
144
145 register_clcmd("say /setstats", "Ranking");
146
147 register_clcmd("say", "hookSay");
148
149 server_cmd("sv_password ^"^"");
150
151 register_event("DeathMsg", "DeathEvent", "a");
152
153 RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1);
154
155 register_logevent("RoundEnd", 2, "1=Round_End");
156
157 register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin");
158 register_event("SendAudio", "ct_win", "a", "2&%!MRAD_ctwin");
159
160 register_forward(FM_Voice_SetClientListening, "ClientListen");
161
162 server_cmd("hostname ^"%s^"", HOSTNAME);
163}
164
165public PlayerRank(id)
166{
167 static query[512];
168 formatex(query, charsmax(query), "SELECT COUNT(*) FROM mix_players WHERE points > '%d'", pPoints[id]);
169 log_amx(query)
170 static data[2];
171 data[0] = id;
172
173 SQL_ThreadQuery(g_hTuple, "QueryLoadStats", query, data, sizeof(data));
174 return PLUGIN_HANDLED;
175}
176
177public QueryLoadStats(failstate, Handle:hQuery, error[], errnum, data[], size, Float:queuetime)
178{
179 if(failstate == TQUERY_CONNECT_FAILED || failstate == TQUERY_QUERY_FAILED)
180 {
181 set_fail_state(error);
182 }
183 else
184 {
185 new id = data[0];
186
187 if(SQL_NumResults(hQuery))
188 {
189 client_printcolor(id, "/y[/ctr%s/y] /yTaškai.: ^3%d ^4| /yNužudymai.: ^3%d ^4| /yMirtys.: ^3%d ^4| /yHS.: ^3%d ^4| /yMini-ACE.: ^3%d ^4| /yACE.: ^3%d", PREFIX, pPoints[id], pKills[id], pDeaths[id], pHeadshots[id], pMiniAces[id], pAces[id])
190 client_printcolor(id, "/y[/ctr%s/y] /ySužaisti.: ^3%d ^4| /yLaimėta.: ^3%d ^4| /yPralaimėta.: ^3%d ^4| /yLygiosiomis.: ^3%d", PREFIX, pMixPlayed[id], pMixWon[id], pMixLost[id], pMixDraw[id])
191 }
192 }
193}
194
195public QueryLoadRank(failstate, Handle:hQuery, error[], errnum, data[], size, Float:queuetime)
196{
197 if( failstate == TQUERY_CONNECT_FAILED || failstate == TQUERY_QUERY_FAILED)
198 {
199 set_fail_state(error);
200 }
201 else
202 {
203 new id = data[0];
204
205 if(SQL_NumResults(hQuery))
206 {
207 new colRank = SQL_ReadResult(hQuery, 0) + 1;
208 client_printcolor(id, "/y[/ctr%s/y] Tavo rankas yra /ctr%d", PREFIX, colRank);
209 }
210 }
211}
212
213public showPlayerRank(id)
214{
215 static query[512];
216 formatex(query, charsmax(query), "SELECT COUNT(*) FROM mix_players WHERE points > '%d'", pPoints[id]);
217 log_amx(query)
218 static data[2];
219 data[0] = id;
220
221 SQL_ThreadQuery(g_hTuple, "QueryLoadRank", query, data, sizeof(data));
222 return PLUGIN_HANDLED;
223}
224
225public showPlayerStats(id)
226{
227 new menu = menu_create("\w[\rMIX\w] Statistika\r", "showPlayerStatsHandler");
228
229 new players[32], pnum, tempid;
230
231 new szName[35], szUserId[35];
232
233 get_players(players, pnum);
234
235 for(new i; i<pnum; i++)
236 {
237 tempid = players[i];
238
239 if(!is_user_connected(tempid)) continue;
240
241 get_user_name(tempid, szName, charsmax(szName));
242 get_user_authid(tempid, szUserId, 34);
243
244 menu_additem(menu, szName, szUserId, 0);
245 }
246
247 menu_display(id, menu, 0);
248
249 return PLUGIN_HANDLED;
250}
251
252public showPlayerStatsHandler(id, menu, item)
253{
254 if(item == MENU_EXIT)
255 {
256 menu_destroy(menu)
257 return PLUGIN_HANDLED;
258 }
259 new szData[64], szName[64];
260 new _access, item_callback;
261 menu_item_getinfo(menu, item, _access, szData, charsmax(szData), szName, charsmax(szName), item_callback);
262
263 new link[128];
264
265 format(link, 127, "http://cs.saudyk.lt/stats/player.php?sid=%s", szData);
266 show_motd(id, link, "Player statistika");
267
268 menu_destroy(menu);
269 return PLUGIN_HANDLED;
270}
271
272public BanMenu(id)
273{
274 if(!isAdmin(id))
275 return PLUGIN_HANDLED;
276
277 client_cmd(id, "amx_banmenu");
278
279 return PLUGIN_HANDLED;
280}
281
282public KickMenu(id)
283{
284 if(!isAdmin(id))
285 return PLUGIN_HANDLED;
286
287 client_cmd(id, "amx_kickmenu");
288
289 return PLUGIN_HANDLED;
290}
291
292public MapsMenu(id)
293{
294 if(!isAdmin(id))
295 return PLUGIN_HANDLED;
296
297 client_cmd(id, "amx_mapmenu");
298
299 return PLUGIN_HANDLED;
300}
301
302public LeaveMenu(id)
303{
304 if(!isAdmin(id))
305 return PLUGIN_HANDLED;
306
307 client_cmd(id, "amx_bandisconnectedmenu");
308
309 return PLUGIN_HANDLED;
310}
311
312public ChatMenu(id)
313{
314 if(!isAdmin(id)) return PLUGIN_HANDLED;
315
316 canChat = false;
317
318 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai išjungti!", PREFIX);
319
320 return PLUGIN_HANDLED;
321}
322
323public Chat(id)
324{
325 if(!isAdmin(id))
326 return PLUGIN_HANDLED;
327
328 canChat = true;
329
330 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai ijungti!", PREFIX);
331
332 return PLUGIN_HANDLED;
333}
334
335public showStats(id)
336{
337 new link[128], steamid[64];
338 get_user_authid(id, steamid, 63);
339 format(link, 127, "http://cs.saudyk.lt/stats/player.php?sid=%s", steamid);
340
341 show_motd(id, link, "Player statistika");
342}
343
344public showTOP(id)
345{
346 new link[128];
347 format(link, 127, "http://cs.saudyk.lt/stats/top.php");
348
349 show_motd(id, link, "Player top 15 statistika");
350}
351
352public plugin_cfg()
353{
354 set_task(0.5, "MySQLx_Init");
355}
356
357public MySQLx_Init()
358{
359 g_hTuple = SQL_MakeDbTuple(MIX_HOST, MIX_USER, MIX_PASSWORD, MIX_DATABASE);
360
361 for(new i = 0; i < sizeof szTables; i++)
362 {
363 SQL_ThreadQuery(g_hTuple, "QuerySetData", szTables[i]);
364 }
365}
366
367public QuerySetData(iFailState, Handle:hQuery, szError[], iError, iData[], iDataSize, Float:fQueueTime)
368{
369 if( iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED)
370 {
371 log_amx("%s", szError);
372 return;
373 }
374}
375
376public ClientListen(pid, id)
377{
378 if(pid == id) return 1;
379
380 if(is_user_connected(id))
381 {
382 new szTeam[2];
383 szTeam[0] = get_pdata_int(id, 114);
384 szTeam[1] = get_pdata_int(pid, 114);
385
386 if(szTeam[0] == szTeam[1] || WarmUp || KnifeRound || PrepareRound)
387 {
388 engfunc(EngFunc_SetClientListening, pid, id, 1);
389 return 4;
390 }
391 engfunc(EngFunc_SetClientListening, pid, id, 0);
392 return 4;
393 }
394 return 1;
395}
396
397public client_connect(id)
398{
399 if(WarmUp)
400 {
401 set_task(1.0, "RespawnPlayer")
402 }
403
404 if(!WarmUp && !PrepareRound)
405 {
406 if(get_playersnum() < 10)
407 {
408 set_task(1.0, "set_password")
409 }
410 }
411
412 pTempKills[id] = 0;
413 pTempDeaths[id] = 0;
414 pTempHeadshots[id] = 0;
415 pTempAces[id] = 0;
416 pTempMiniAces[id] = 0;
417 pTempPoints[id] = 0;
418 pTempPlants[id] = 0;
419 pTempDefusions[id] = 0;
420
421 pKills[id] = 0;
422 pDeaths[id] = 0;
423 pHeadshots[id] = 0;
424 pAces[id] = 0;
425 pMiniAces[id] = 0;
426 pMiniAces[id] = 0;
427 pMiniAces[id] = 0;
428 pMixPlayed[id] = 0;
429 pMixLost[id] = 0;
430 pMixDraw[id] = 0;
431 pMixWon[id] = 0;
432 pPoints[id] = 0;
433 pLoaded[id] = false;
434 LoadPlayerData(id);
435}
436
437public InsertGame()
438{
439 new szQuery[3800];
440 new map_name[64];
441
442 get_mapname(map_name, 63)
443
444 formatex(szQuery, 3799, "REPLACE INTO `mix_games` (`map_name`, `date`, `rez_ct`, `rez_t`) VALUES ('%s', NOW(), '%d', '%d');", map_name, scoreCT, scoreT);
445 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
446}
447
448public SavePlayer(id)
449{
450 if(!pLoaded[id])
451 return PLUGIN_HANDLED;
452
453 if(pPoints[id] < 0)
454 pPoints[id] = 0;
455
456 new Name[64], steam[64];
457 get_user_name(id, Name, 63);
458
459 get_user_authid(id, steam, 63);
460
461 static szQuery[3800];
462 formatex(szQuery, 3799, "REPLACE INTO `mix_players` (`player_id`, `player_name`, `kills`, `deaths`, `headshots`, `aces`, `m_aces`, `mix_played`, `mix_lost`, `mix_won`, `mix_draw`, `points`, `last_online`) VALUES ('%s', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', NOW());", steam, GetSecureName(Name), pKills[id], pDeaths[id], pHeadshots[id], pAces[id], pMiniAces[id], pMixPlayed[id], pMixLost[id], pMixWon[id], pMixDraw[id], pPoints[id]);
463
464 #if AMXX_VERSION_NUM >= 183
465 SQL_SetCharset(g_hTuple,"utf8");
466 #endif
467
468 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
469
470 return PLUGIN_CONTINUE;
471}
472
473public LoadPlayerData(id)
474{
475 new steam[64];
476 get_user_authid(id, steam, 63);
477
478 static szQuery[256], iData[1];
479 formatex(szQuery, 255, "SELECT * FROM `mix_players` WHERE (`player_id` = '%s');", steam);
480
481 iData[0] = id;
482 SQL_ThreadQuery(g_hTuple, "QuerySelectData", szQuery, iData, 1);
483
484 return PLUGIN_CONTINUE;
485}
486
487public QuerySelectData(iFailState, Handle:hQuery, szError[], iError, iData[], iDataSize, Float:fQueueTime)
488{
489 if(iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED)
490 {
491 log_amx("%s", szError);
492
493 return;
494 }
495 else
496 {
497 new id = iData[0];
498 new data_kills = SQL_FieldNameToNum(hQuery, "kills");
499 new data_deaths = SQL_FieldNameToNum(hQuery, "deaths");
500 new data_headshots = SQL_FieldNameToNum(hQuery, "headshots");
501 new data_aces = SQL_FieldNameToNum(hQuery, "aces");
502 new data_mini_aces = SQL_FieldNameToNum(hQuery, "m_aces");
503 new data_mix_played = SQL_FieldNameToNum(hQuery, "mix_played");
504 new data_mix_lost = SQL_FieldNameToNum(hQuery, "mix_lost");
505 new data_mix_draw = SQL_FieldNameToNum(hQuery, "mix_draw");
506 new data_mix_won = SQL_FieldNameToNum(hQuery, "mix_won");
507 new data_points = SQL_FieldNameToNum(hQuery, "points");
508
509 while (SQL_MoreResults(hQuery))
510 {
511 pKills[id] = SQL_ReadResult(hQuery, data_kills);
512 pDeaths[id] = SQL_ReadResult(hQuery, data_deaths);
513 pHeadshots[id] = SQL_ReadResult(hQuery, data_headshots);
514 pAces[id] = SQL_ReadResult(hQuery, data_aces);
515 pMiniAces[id] = SQL_ReadResult(hQuery, data_mini_aces);
516 pMixPlayed[id] = SQL_ReadResult(hQuery, data_mix_played);
517 pMixLost[id] = SQL_ReadResult(hQuery, data_mix_lost);
518 pMixDraw[id] = SQL_ReadResult(hQuery, data_mix_draw);
519 pMixWon[id] = SQL_ReadResult(hQuery, data_mix_won);
520 pPoints[id] = SQL_ReadResult(hQuery, data_points);
521
522 SQL_NextRow(hQuery);
523 }
524 pLoaded[id] = true;
525 }
526}
527
528public client_disconnected(id)
529{
530 if(!WarmUp && !PrepareRound)
531 {
532 if(1 <= get_user_team(id) <= 2)
533 {
534 server_cmd("sv_password ^"^"");
535 client_printcolor(0, "/y[/ctr%s/y] Žaidėjas: /g%s /ypaliko žaidimą!", PREFIX, get_admin_name(id))
536 }
537 }
538
539 if(!WarmUp && !PrepareRound)
540 {
541 if(get_playersnum() < 10)
542 {
543 set_task(1.0, "set_password")
544 }
545 }
546}
547
548public bomb_planted(planter)
549{
550 if(!WarmUp && !PrepareRound)
551 {
552 pTempPlants[planter]++;
553 pPoints[planter] += BOMB_PLANTED_POINTS;
554
555 client_printcolor(planter, "/y[/ctr%s/y] Gavai /ctr%d/y taškų", PREFIX, BOMB_PLANTED_POINTS);
556
557 SavePlayer(planter);
558 }
559}
560
561public bomb_defused(defuser)
562{
563 if(!WarmUp && !PrepareRound)
564 {
565 pTempDefusions[defuser]++;
566 pPoints[defuser] += BOMB_DEFUSED_POINTS;
567
568 client_printcolor(defuser, "/y[/ctr%s/y] Gavai /ctr%d/y taškų", PREFIX, BOMB_DEFUSED_POINTS);
569
570 SavePlayer(defuser);
571 }
572}
573
574public t_win(id)
575{
576 if(!WarmUp && !KnifeRound && !PrepareRound) scoreT++;
577
578 if(KnifeRound)
579 {
580 if(tempT)
581 {
582 showTeamMenu(tempT);
583 }
584 }
585}
586
587public ct_win(id)
588{
589 if(!WarmUp && !KnifeRound && !PrepareRound) scoreCT++;
590
591 if(KnifeRound)
592 {
593 if(tempCT)
594 {
595 showTeamMenu(tempCT);
596 }
597 }
598}
599
600public PlayerSpawn(id)
601{
602 if(WarmUp && is_user_connected(id))
603 {
604 cs_set_user_money(id, 16000);
605 }
606
607 Kills[id] = 0;
608
609 return PLUGIN_HANDLED;
610}
611
612public RoundEnd()
613{
614 if(WarmUp) server_cmd("hostname ^"%s [Apsilimas]^"", HOSTNAME);
615 else if(KnifeRound) server_cmd("hostname ^"%s [Knife Round]^"", HOSTNAME);
616 else if(PrepareRound) server_cmd("hostname ^"%s [Renkamos Komandos]^"", HOSTNAME);
617 else
618 {
619 if(scoreT == 16 || scoreCT == 16)
620 {
621 server_cmd("hostname ^"[Zaidimas baigtas - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
622 }
623 else if(scoreT == 15 || scoreCT == 15)
624 {
625 server_cmd("hostname ^"[Live (MB) - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
626 }
627 else
628 {
629 if(scoreCT+scoreT == 15)
630 {
631 server_cmd("hostname ^"[Live - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
632 }
633 else
634 {
635 server_cmd("hostname ^"[Live - T: %i | CT: %i] %s^"", scoreT, scoreCT, HOSTNAME);
636 }
637 }
638 }
639
640 if(!WarmUp && !KnifeRound && !PrepareRound)
641 {
642 for(new i = 1; i <= 32; i++)
643 {
644 if(is_user_connected(i))
645 {
646 if(Kills[i] == 4)
647 {
648 client_printcolor(0, "/y[/ctr%s/y] Žaidėjas: /g%s /yPadare /ctrMINI ACE", PREFIX, get_admin_name(i));
649 client_printcolor(0, "/y[/ctr%s/y] Žaidėjas: /g%s /yuž MINI ACE /ctrgauna /g%i tašku!", PREFIX, get_admin_name(i), POINTS_MINI_ACE);
650
651 if(!WarmUp && !PrepareRound)
652 {
653 // Temp
654 pTempMiniAces[i]++;
655 pTempPoints[i] += POINTS_MINI_ACE;
656
657 pMiniAces[i]++;
658 pPoints[i] += POINTS_MINI_ACE;
659
660 SavePlayer(i);
661 }
662 }
663 else if(Kills[i] == 5)
664 {
665 client_printcolor(0, "/y[/ctr%s/y] Žaidėjas: /g%s /yPadare /ctrACE", PREFIX, get_admin_name(i));
666 client_printcolor(0, "/y[/ctr%s/y] Žaidėjas: /g%s /yuž ACE /ctrgauna /g%i tašku!", PREFIX, get_admin_name(i), POINTS_ACE);
667
668 // Temp
669 pTempAces[i]++;
670 pTempPoints[i] += POINTS_ACE;
671
672 pAces[i]++;
673 pPoints[i] += POINTS_ACE;
674
675 SavePlayer(i);
676 }
677 }
678 }
679
680 if(scoreCT + scoreT == 15)
681 {
682 new temp = scoreCT;
683 scoreCT = scoreT;
684 scoreT = temp;
685 client_printcolor(0, "/y[/ctr%s/y] KeiÄiamos komandos!", PREFIX);
686 changeTeams();
687 server_cmd("sv_restart 5");
688 }
689
690 client_printcolor(0, "/y[/ctr%s/y] CT's: /g%i /y|| T's: /g%i", PREFIX, scoreCT, scoreT);
691
692 if(scoreT == 15 && scoreCT == 15)
693 {
694 client_printcolor(0, "/y[/ctr%s/y] /gŽaidimas baigtas. /yNei viena komanda nelaimėjo!", PREFIX);
695 client_printcolor(0, "/y[/ctr%s/y] /gŽaidėjai gauna po: /g%i tašku!", PREFIX, POINTS_MIX_DRAW);
696 drawGame();
697 setEndGame();
698 }
699 else if(scoreT == 15) client_printcolor(0, "/y[/ctr%s/y] Terrorists MB", PREFIX);
700 else if(scoreCT == 15) client_printcolor(0, "/y[/ctr%s/y] Counter-Terrorists MB", PREFIX);
701
702 else if(scoreT == 16)
703 {
704 TeamWon(1);
705 client_printcolor(0, "/y[/ctr%s/y] /gŽaidimas baigtas. Laimėjo: /yTerrorists komanda!", PREFIX);
706 client_printcolor(0, "/y[/ctr%s/y] /gTerrorists komandoje esantys žaidėjai už pergalę gauna po: /g%i tašku!", PREFIX, POINTS_MIX_WON);
707 setEndGame();
708 }
709 else if(scoreCT == 16)
710 {
711 TeamWon(2);
712 client_printcolor(0, "/y[/ctr%s/y] /gŽaidimas baigtas. Laimėjo: /yCounter-Terrorists komanda!", PREFIX);
713 client_printcolor(0, "/y[/ctr%s/y] /gCounter-Terrorists komandoje esantys žaidėjai už pergalę gauna po: /g%i tašku!", PREFIX, POINTS_MIX_WON);
714 setEndGame();
715 }
716 }
717}
718
719public changeTeams()
720{
721 for(new i = 1; i <= 32; i++)
722 {
723 add_delay(i);
724 }
725}
726
727public changeTeam(id)
728{
729 if(is_user_connected(id))
730 {
731 switch(get_user_team(id))
732 {
733 case 2: cs_set_user_team(id, CS_TEAM_T);
734 case 1: cs_set_user_team(id, CS_TEAM_CT);
735 }
736 }
737}
738
739add_delay(id)
740{
741 switch(id)
742 {
743 case 1..5: set_task(0.1, "changeTeam", id);
744 case 6..10: set_task(0.2, "changeTeam", id);
745 case 11..15: set_task(0.3, "changeTeam", id);
746 case 16..20: set_task(0.4, "changeTeam", id);
747 case 21..25: set_task(0.5, "changeTeam", id);
748 case 26..32: set_task(0.6, "changeTeam", id);
749 }
750}
751
752public DeathEvent(victim, attacker)
753{
754 new attacker = read_data(1);
755 new victim = read_data(2);
756 new hs = read_data(3);
757 new weapon_name[32]; read_data(4, weapon_name, 31);
758
759 if(WarmUp)
760 {
761 set_task(1.0, "RespawnPlayer", victim);
762 }
763 else if(1 <= victim <= 32 && 1 <= attacker <= 32)
764 {
765 if(!WarmUp && !PrepareRound)
766 {
767 Kills[attacker]++;
768 pKills[attacker]++;
769 pPoints[attacker] += POINTS_KILL;
770
771 client_printcolor(attacker, "/y[/ctr%s/y] Gavai /ctr%d/y taškų už nužudymą", PREFIX, POINTS_KILL);
772
773 pTempKills[attacker]++;
774 pTempPoints[attacker] += POINTS_KILL;
775
776 if(hs)
777 {
778 pTempHeadshots[attacker]++;
779 pTempPoints[attacker] += POINTS_HS;
780
781 pHeadshots[attacker]++;
782 pPoints[attacker] += POINTS_HS;
783 }
784
785 pTempDeaths[victim]++;
786 pTempPoints[victim] += POINTS_DEATH;
787
788 client_printcolor(victim, "/y[/ctr%s/y] Praradai /ctr%d/y taškų už mirtį", PREFIX, POINTS_DEATH);
789
790 pDeaths[victim]++;
791 pPoints[victim] += POINTS_DEATH;
792
793 SavePlayer(victim);
794 SavePlayer(attacker);
795
796 if(containi(weapon_name, "ak47") != -1) InsertWeaponKill(CSW_AK47);
797 else if(containi(weapon_name, "m4a1") != -1) InsertWeaponKill(CSW_M4A1);
798 else if(containi(weapon_name, "deagle") != -1) InsertWeaponKill(CSW_DEAGLE);
799 else if(containi(weapon_name, "awp") != -1) InsertWeaponKill(CSW_AWP);
800 else if(containi(weapon_name, "usp") != -1) InsertWeaponKill(CSW_USP);
801 else if(containi(weapon_name, "glock") != -1) InsertWeaponKill(CSW_GLOCK18);
802 else if(containi(weapon_name, "he") != -1) InsertWeaponKill(CSW_HEGRENADE);
803 else if(containi(weapon_name, "knife") != -1) InsertWeaponKill(CSW_KNIFE);
804 else if(containi(weapon_name, "scout") != -1) InsertWeaponKill(CSW_SCOUT);
805 else if(containi(weapon_name, "famas") != -1) InsertWeaponKill(CSW_FAMAS);
806
807 if(containi(weapon_name, "ak47") != -1) { pTempAK[attacker]++; InsertWeaponAK47(attacker); }
808 else if(containi(weapon_name, "m4a1") != -1) { pTempM4A1[attacker]++; InsertWeaponM4A1(attacker); }
809 else if(containi(weapon_name, "deagle") != -1) { pTempDeagle[attacker]++; InsertWeaponDeagle(attacker); }
810 else if(containi(weapon_name, "awp") != -1) { pTempAWP[attacker]++; InsertWeaponAWP(attacker); }
811 else if(containi(weapon_name, "usp") != -1) { pTempUSP[attacker]++; InsertWeaponUSP(attacker); }
812 else if(containi(weapon_name, "glock") != -1) { pTempGlock[attacker]++; InsertWeaponGlock(attacker); }
813 else if(containi(weapon_name, "he") != -1) { pTempHE[attacker]++; InsertWeaponHE(attacker); }
814 else if(containi(weapon_name, "knife") != -1) { pTempKnives[attacker]++; InsertWeaponKnives(attacker); }
815 else if(containi(weapon_name, "scout") != -1) { pTempScout[attacker]++; InsertWeaponScout(attacker); }
816 else if(containi(weapon_name, "famas") != -1) { pTempFamas[attacker]++; InsertWeaponFamas(attacker); }
817 }
818 }
819}
820
821public RespawnPlayer(id)
822{
823 if(!is_user_alive(id) && is_user_connected(id) && 1 <= get_user_team(id) <= 2)
824 {
825 ExecuteHamB(Ham_CS_RoundRespawn, id);
826 }
827}
828
829public event_CurWeapon(id)
830{
831 if(KnifeRound && get_user_weapon(id) != CSW_KNIFE)
832 {
833 engclient_cmd(id, "weapon_knife");
834 }
835}
836
837public infoPassword(id)
838{
839 if(!passwordStatus)
840 {
841 client_printcolor(id, "/y[/ctr%s/y] Serverio slaptažodis: /g%s", PREFIX, serverPassword);
842 }
843 else
844 {
845 client_printcolor(id, "/y[/ctr%s/y] Serverio slaptažodis išjungtas!", PREFIX, serverPassword);
846 }
847 return PLUGIN_HANDLED;
848}
849
850public hookSay(id)
851{
852 if(!canChat)
853 {
854 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai šiuo metu yra išjungti!", PREFIX);
855 client_printcolor(id, "/y[/ctr%s/y] Galimos komandos: /g.rez .stats .top", PREFIX);
856 return PLUGIN_HANDLED;
857 }
858 return PLUGIN_CONTINUE;
859}
860
861public cmd_block(id)
862{
863 if(!WarmUp && !PrepareRound)
864 {
865 if(1 <= get_user_team(id) <= 2)
866 return PLUGIN_HANDLED;
867 }
868 return PLUGIN_CONTINUE;
869}
870
871public BlockConsole(id)
872{
873 return PLUGIN_HANDLED;
874}
875
876public mainMenu(id)
877{
878 if(!isAdmin(id))
879 return PLUGIN_HANDLED;
880
881 new menu = menu_create("\w[\yMIX\w] \rPagrindinis meniu", "onMainMenu");
882
883 new szMsg[64];
884
885 menu_additem(menu, "Valdymas");
886
887 format(szMsg, 63, "\wPokalbiai \d[%s\d]", canChat ? "\yĮjungti" : "\rIšjungti");
888 menu_additem(menu, szMsg);
889
890 if(serverPassword[0]) format(szMsg, 63, "\wSlaptažodis \d[\y%s\d]", serverPassword);
891 else format(szMsg, 63, "\wSlaptažodis \d[\rNėra\d]");
892 menu_additem(menu, szMsg);
893
894 menu_additem(menu, "Išmesti žaidėją");
895 menu_additem(menu, "Išbaninti žaidėją");
896 menu_additem(menu, "Keisti žemėlapį");
897 menu_additem(menu, "Atsijungusių žaidėjų sąrašas");
898
899 menu_display(id, menu, 0)
900
901 return PLUGIN_HANDLED;
902}
903
904public onMainMenu(id, menu, item)
905{
906 switch(item)
907 {
908 case 0: actMix(id);
909 case 1:
910 {
911 canChat = !canChat;
912 mainMenu(id);
913 return PLUGIN_HANDLED;
914 }
915 case 2: optionsPassword(id);
916 case 3: client_cmd(id, "amx_kickmenu");
917 case 4: client_cmd(id, "amx_banmenu");
918 case 5: client_cmd(id, "amx_mapmenu");
919 case 6: client_cmd(id, "amx_bandisconnectedmenu");
920 }
921 menu_destroy(menu);
922 return PLUGIN_HANDLED;
923}
924
925public optionsPassword(id)
926{
927 if(!isAdmin(id))
928 return PLUGIN_HANDLED;
929
930 new szText[64];
931 if(serverPassword[0]) format(szText, 63, "\w[\yMIX\w] \rSlaptažodis \d(\y%s\d)", serverPassword);
932
933 else format(szText, 63, "\w[\yMIX\w] \rSlaptažodis \d(\rNėra\d)");
934 new menu = menu_create(szText, "onOptionsPassword");
935
936 format(szText, 63, "\wSlaptažodis \d[%s\d]", passwordStatus ? "\yĮjungtas" : "\rIšjungtas");
937
938 menu_additem(menu, szText);
939 menu_additem(menu, "Keisti slaptažodį");
940 menu_additem(menu, "Ištrinti slaptažodį");
941
942 menu_display(id, menu, 0);
943
944 return PLUGIN_HANDLED;
945}
946
947public onOptionsPassword(id, menu, item)
948{
949 switch(item)
950 {
951 case MENU_EXIT:
952 {
953 mainMenu(id);
954 return PLUGIN_HANDLED;
955 }
956 case 0:
957 {
958 if(serverPassword[0])
959 {
960 passwordStatus = !passwordStatus;
961
962 if(passwordStatus)
963 {
964 server_cmd("sv_password", serverPassword);
965 }
966 else server_cmd("sv_password ^"^"");
967 }
968 else
969 {
970 if(passwordStatus)
971 passwordStatus = false;
972 client_printcolor(id, "/y[/ctr%s/y] Nenustatytas slaptažodis!", PREFIX);
973 }
974
975 }
976 case 1: client_cmd(id, "messagemode SetPassword");
977 case 2: format(serverPassword, 63, "");
978 }
979 optionsPassword(id);
980 return PLUGIN_HANDLED;
981}
982
983public _SetPassword(id)
984{
985 if(!isAdmin(id))
986 return;
987
988 new szTemp[64];
989 read_args(szTemp, charsmax(szTemp));
990 remove_quotes(szTemp);
991 format(serverPassword, 63, szTemp);
992 optionsPassword(id);
993
994 if(!passwordStatus)
995 {
996 server_cmd("sv_password %s", serverPassword);
997 client_printcolor(0, "/y[/ctr%s/y] /g%s/y] Serverio slaptažodis: /g%s" , PREFIX, get_admin_name(id), szTemp);
998 }
999}
1000
1001public actMix(id)
1002{
1003 if(!isAdmin(id))
1004 return PLUGIN_HANDLED;
1005
1006 new menu = menu_create("\w[\yMIX\w] \rValdymas", "onactMix");
1007
1008 menu_additem(menu, "Pradėti žaidimą");
1009 menu_additem(menu, "Pasiruošti");
1010 menu_additem(menu, "Apšilimas");
1011 menu_additem(menu, "Knife");
1012 menu_additem(menu, "FFA");
1013 menu_additem(menu, "Perkrauti roundÄ…");
1014 menu_additem(menu, "Užbaigti žaidimą");
1015
1016 menu_display(id, menu, 0);
1017
1018 return PLUGIN_HANDLED;
1019}
1020
1021public onactMix(id, menu, item)
1022{
1023 switch(item)
1024 {
1025 case 0: setLive(id);
1026 case 1: setPrepare(id);
1027 case 2: warmUP(id);
1028 case 3: setKnife(id);
1029 case 4: FriendlyFire(id);
1030 case 5: restartRound(id);
1031 case 6: endGame(id);
1032 }
1033 menu_destroy(menu);
1034}
1035
1036public setPrepare(id)
1037{
1038 if(!isAdmin(id))
1039 return PLUGIN_HANDLED;
1040
1041 if(get_playersnum() >= 10)
1042 {
1043 server_cmd("sv_restart 1");
1044
1045 KnifeRound = false;
1046 PrepareRound = true;
1047 WarmUp = false;
1048 scoreCT = 0;
1049 scoreT = 0;
1050 tempCount = 0;
1051 tempCT = 0;
1052 tempT = 0;
1053
1054 for(new i = 1; i <= 32; i++)
1055 {
1056 if(is_user_connected(id) && (1 <= get_user_team(i) <= 2))
1057 {
1058 if(is_user_alive(i))
1059 user_silentkill(i);
1060 cs_set_user_team(i, CS_TEAM_SPECTATOR);
1061 }
1062 }
1063
1064 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Pasiruošimas prasidėjo! Administratorius tuoj išrinks lyderius!", PREFIX, get_admin_name(id));
1065 showPrepareMenu(id);
1066 }
1067 else
1068 {
1069 client_printcolor(id, "/y[/ctr%s/y] Pasiruošimas negali būti pradėtas todel kad trūksta žaidėjų!", PREFIX);
1070 }
1071 return PLUGIN_HANDLED;
1072}
1073
1074public showPrepareMenu(id)
1075{
1076 if(!isAdmin(id))
1077 return PLUGIN_HANDLED;
1078
1079 new menu = menu_create("\w[\yMIX\w] \rPasirinkite kas eis į Counter Terrorist", "onPrepareCT");
1080
1081 new players[32], num;
1082 get_players(players, num, "ch");
1083 new szText[64], ui[32];
1084
1085 for(new i; i < num; i++)
1086 {
1087 format(ui, 31, "%d",get_user_userid(players[i]))
1088
1089 if(pPoints[players[i]] <= 10000)
1090 {
1091 formatex(szText, charsmax(szText), "\d%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1092 }
1093 else if(pPoints[players[i]] <= 20000)
1094 {
1095 formatex(szText, charsmax(szText), "\w%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1096 }
1097 if(pPoints[players[i]] <= 30000)
1098 {
1099 formatex(szText, charsmax(szText), "\y%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1100 }
1101 else
1102 {
1103 formatex(szText, charsmax(szText), "\r%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1104 }
1105 menu_additem(menu, szText, ui);
1106 }
1107
1108 menu_display(id, menu, 0);
1109
1110 return PLUGIN_HANDLED;
1111}
1112
1113public onPrepareCT(id, menu, item)
1114{
1115 new szData[6], szName[64];
1116 new _access, item_callback;
1117
1118 menu_item_getinfo(menu, item, _access, szData, charsmax(szData), szName, charsmax(szName), item_callback);
1119
1120 new userid = str_to_num(szData);
1121 new player = find_player("k", userid);
1122
1123 switch(item)
1124 {
1125 case MENU_EXIT:
1126 {
1127 if(PrepareRound) showPrepareMenu(id);
1128 return PLUGIN_HANDLED;
1129 }
1130 default: if(PrepareRound && is_user_connected(player)) cs_set_user_team(player, CS_TEAM_CT);
1131 }
1132
1133 if(PrepareRound)
1134 {
1135 tempCT = player;
1136 client_printcolor(0, "/y[/ctr%s/y] CT lyderis bus: /g%s", PREFIX, szName);
1137 client_printcolor(0, "/y[/ctr%s/y] Administratorius tuoj išrinks T lyderį!", PREFIX);
1138 showPrepareMenuT(id);
1139 }
1140
1141 return PLUGIN_HANDLED;
1142}
1143
1144public showPrepareMenuT(id)
1145{
1146 if(!isAdmin(id))
1147 return PLUGIN_HANDLED;
1148 new menu = menu_create("\w[\yMIX\w] \rPasirinkite kas eis į Terrorist", "onPrepareT");
1149
1150 new players[32], num;
1151 get_players(players, num, "ceh", "SPECTATOR");
1152 new szText[64], ui[32];
1153
1154 for(new i; i < num; i++)
1155 {
1156 format(ui, 31, "%d",get_user_userid(players[i]))
1157
1158 if(pPoints[players[i]] <= 10000)
1159 {
1160 formatex(szText, charsmax(szText), "\d%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1161 }
1162 else if(pPoints[players[i]] <= 20000)
1163 {
1164 formatex(szText, charsmax(szText), "\w%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1165 }
1166 if(pPoints[players[i]] <= 30000)
1167 {
1168 formatex(szText, charsmax(szText), "\y%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1169 }
1170 else
1171 {
1172 formatex(szText, charsmax(szText), "\r%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1173 }
1174 menu_additem(menu, szText, ui);
1175 }
1176
1177 menu_display(id, menu, 0)
1178
1179 return PLUGIN_HANDLED;
1180}
1181
1182public onPrepareT(id, menu, item)
1183{
1184 new szData[6], szName[64];
1185 new _access, item_callback;
1186
1187 menu_item_getinfo( menu, item, _access, szData,charsmax(szData), szName, charsmax(szName), item_callback);
1188
1189 new userid = str_to_num(szData);
1190 new player = find_player("k", userid);
1191
1192 switch(item)
1193 {
1194 case MENU_EXIT:
1195 {
1196 if(PrepareRound) showPrepareMenuT(id);
1197 return PLUGIN_HANDLED;
1198 }
1199 default: if(PrepareRound && is_user_connected(player)) cs_set_user_team(player, CS_TEAM_T)
1200 }
1201 if(PrepareRound)
1202 {
1203 tempT = player;
1204 client_printcolor(0, "/y[/ctr%s/y] T lyderis bus: /g%s", PREFIX, szName);
1205 client_printcolor(0, "/y[/ctr%s/y] Lyderiai pradeda rinktis žaidėjus!", PREFIX);
1206 client_printcolor(0, "/y[/ctr%s/y] /gDemesio: /yJeigu Lyderiams dings meniu su zaideju pasirinkimu, chate rasykite /ctr.choose", PREFIX);
1207 ShowList(tempCT);
1208 }
1209 return PLUGIN_HANDLED;
1210}
1211
1212public choosePlayers(id)
1213{
1214 switch(tempCount)
1215 {
1216 case 0, 2, 4, 6: if(tempT == id) ShowList(id);
1217 case 1, 3, 5, 7: if(tempCT == id) ShowList(id);
1218 }
1219 return PLUGIN_HANDLED;
1220}
1221
1222public showTeamMenu(id)
1223{
1224 new menu = menu_create("\w[\yMIX\w] \rPasirinkite komandÄ…", "onTeamChange")
1225
1226 menu_additem(menu, "Pasilikti");
1227 menu_additem(menu, "Keistis komandomis");
1228
1229 menu_display(id, menu, 0);
1230
1231 return PLUGIN_HANDLED;
1232}
1233
1234public onTeamChange(id, menu, item)
1235{
1236 switch(item)
1237 {
1238 case 0:
1239 {
1240 client_printcolor(0, "/y[/ctr%s/y] Sprendimas: /gPasilikti", PREFIX);
1241 setServerLive();
1242 }
1243 case 1:
1244 {
1245 client_printcolor(0, "/y[/ctr%s/y] Sprendimas: /gkeistis komandomis", PREFIX);
1246 changeTeams();
1247 set_task(2.0, "setServerLive", 1);
1248 }
1249 }
1250}
1251
1252public ShowList(id)
1253{
1254 new menu = menu_create("\w[\yMIX\w] \rPasirinkite komandos draugÄ…", "onShowList")
1255
1256 new players[32], num;
1257 get_players(players, num, "ceh", "SPECTATOR");
1258 new szText[64], ui[32];
1259
1260 for(new i; i < num; i++)
1261 {
1262 format(ui, 31, "%d",get_user_userid(players[i]));
1263
1264 if(pPoints[players[i]] <= 10000)
1265 {
1266 formatex(szText, charsmax(szText), "\d%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1267 }
1268 else if(pPoints[players[i]] <= 20000)
1269 {
1270 formatex(szText, charsmax(szText), "\w%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1271 }
1272 if(pPoints[players[i]] <= 30000)
1273 {
1274 formatex(szText, charsmax(szText), "\y%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1275 }
1276 else
1277 {
1278 formatex(szText, charsmax(szText), "\r%s - %d", get_admin_name(players[i]), pPoints[players[i]]);
1279 }
1280 menu_additem(menu, szText, ui)
1281 }
1282
1283 menu_display(id, menu, 0);
1284
1285 return PLUGIN_HANDLED;
1286}
1287
1288public onShowList(id, menu, item)
1289{
1290 new szData[6], szName[64];
1291 new _access, item_callback;
1292
1293 new Where;
1294 switch(tempCount)
1295 {
1296 case 0, 2, 4, 6: Where = 0;
1297 case 1, 3, 5, 7: Where = 1;
1298 default: Where = -1;
1299 }
1300
1301 menu_item_getinfo(menu, item, _access, szData,charsmax(szData), szName,charsmax(szName), item_callback);
1302
1303 new userid = str_to_num(szData);
1304 new player = find_player("k", userid);
1305
1306 switch(item)
1307 {
1308 case MENU_EXIT:
1309 {
1310 if(PrepareRound) ShowList(id)
1311 return PLUGIN_HANDLED;
1312 }
1313 default: if(PrepareRound && is_user_connected(player))
1314 {
1315 if(Where == 0)
1316 {
1317 cs_set_user_team(player, CS_TEAM_CT);
1318 }
1319 else
1320 {
1321 cs_set_user_team(player, CS_TEAM_T);
1322 }
1323 }
1324 }
1325 if(PrepareRound)
1326 {
1327 tempCount++;
1328 client_printcolor(0, "/y[/ctr%s/y] [/g%s /yPasirinko /g%s", PREFIX, get_admin_name(id), szName);
1329
1330 if(tempCount < 8)
1331 {
1332 ShowList(Where == 1 ? tempCT : tempT);
1333 }
1334 else
1335 {
1336 /*KnifeRound = true;
1337 PrepareRound = false;
1338 WarmUp = false;
1339 scoreCT = 0;
1340 scoreT = 0;
1341
1342 server_cmd("mp_roundtime 1.8")
1343 server_cmd("mp_buytime 0.30")
1344 server_cmd("mp_startmoney 16000")
1345 server_cmd("mp_freezetime 7")
1346
1347 server_cmd("sv_restart 1")*/
1348
1349 client_printcolor(0, "/y[/ctr%s/y] Komandų rinkimasis baigtas!", PREFIX)
1350
1351 setServerLive()
1352 }
1353 }
1354 return PLUGIN_HANDLED;
1355}
1356
1357public restartRound(id)
1358{
1359 if(!isAdmin(id))
1360 return PLUGIN_HANDLED;
1361
1362 server_cmd("sv_restart 1");
1363
1364 client_printcolor(0, "/y[/ctr%s/y] Perkrautas roundas!", PREFIX);
1365 return PLUGIN_HANDLED;
1366}
1367
1368public setServerLive()
1369{
1370 KnifeRound = false;
1371 PrepareRound = false;
1372 WarmUp = false;
1373 scoreCT = 0;
1374 scoreT = 0;
1375
1376 server_cmd("mp_roundtime 1.8")
1377 server_cmd("mp_buytime 0.30")
1378 server_cmd("mp_startmoney 800")
1379 server_cmd("mp_freezetime 7")
1380
1381 server_cmd("sv_restart 3")
1382
1383 set_task(1.0, "set_password");
1384
1385 client_printcolor(0, "/y[/ctr%s/y] Žaidimas Prasidėjo! Gero žaidimo jums linki - Administracija!", PREFIX)
1386
1387 server_cmd("hostname ^"[Live - Counter-Terrorist [0] - [0] Terrorist] %s^"", HOSTNAME)
1388
1389 return PLUGIN_HANDLED;
1390}
1391
1392public setLive(id)
1393{
1394 if(!isAdmin(id))
1395 return PLUGIN_HANDLED
1396
1397 KnifeRound = false;
1398 PrepareRound = false;
1399 WarmUp = false;
1400 scoreCT = 0;
1401 scoreT = 0;
1402
1403 server_cmd("mp_roundtime 1.8");
1404 server_cmd("mp_buytime 0.30");
1405 server_cmd("mp_startmoney 800");
1406 server_cmd("mp_freezetime 7");
1407
1408 server_cmd("sv_restart 3");
1409
1410 set_task(1.0, "set_password");
1411
1412 client_printcolor(0, "/y[/ctr%s/y] Žaidimas Prasidėjo! Gero žaidimo jums linki - Administracija!", PREFIX);
1413
1414 server_cmd("hostname ^"[Live - Counter-Terrorist [0] - [0] Terrorist] %s^"", HOSTNAME)
1415
1416 return PLUGIN_HANDLED;
1417}
1418
1419public setRestart(id)
1420{
1421 if(!isAdmin(id))
1422 return PLUGIN_HANDLED;
1423
1424 server_cmd("sv_restart 1");
1425
1426 client_printcolor(0, "/y[/ctr%s/y] Perkrautas roundas!", PREFIX);
1427 return PLUGIN_HANDLED;
1428}
1429
1430public warmUP(id)
1431{
1432 if(!isAdmin(id))
1433 return PLUGIN_HANDLED;
1434
1435 passwordStatus = false;
1436 KnifeRound = false;
1437 PrepareRound = false;
1438 WarmUp = true;
1439 scoreCT = 0;
1440 scoreT = 0;
1441
1442 server_cmd("mp_roundtime 600");
1443 server_cmd("mp_buytime 999999");
1444 server_cmd("mp_startmoney 16000");
1445 server_cmd("mp_freezetime 0");
1446 server_cmd("sv_password ^"^"");
1447
1448 server_cmd("sv_restart 1");
1449
1450 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Apšilimas Prasidėjo!", PREFIX, get_admin_name(id));
1451
1452 server_cmd("hostname ^"%s [Apšilimas]^"", HOSTNAME)
1453
1454 return PLUGIN_HANDLED;
1455}
1456
1457public setKnife(id)
1458{
1459 if(!isAdmin(id))
1460 return PLUGIN_HANDLED;
1461
1462 KnifeRound = true;
1463 PrepareRound = false;
1464 WarmUp = false;
1465 scoreCT = 0;
1466 scoreT = 0;
1467
1468 server_cmd("mp_roundtime 1.8");
1469 server_cmd("mp_buytime 0.30");
1470 server_cmd("mp_startmoney 800");
1471 server_cmd("mp_freezetime 7");
1472
1473 server_cmd("sv_restart 1");
1474
1475 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Prasidėjo peilių roundas! Sėkmės!", PREFIX, get_admin_name(id));
1476 return PLUGIN_HANDLED;
1477}
1478
1479public FriendlyFire(id)
1480{
1481 if(!isAdmin(id))
1482 return PLUGIN_HANDLED;
1483
1484 if(Fire == true)
1485 {
1486 server_cmd( "mp_friendlyfire 0" );
1487 client_printcolor(0, "/y[/ctr%s/y] FriendlyFire /yOFF!", PREFIX);
1488 Fire = false;
1489 }
1490 else
1491 {
1492 server_cmd( "mp_friendlyfire 1" );
1493 client_printcolor(0, "/y[/ctr%s/y] FriendlyFire /yON!", PREFIX);
1494 Fire = true;
1495 }
1496 return PLUGIN_HANDLED;
1497}
1498
1499public drawGame()
1500{
1501 for(new i = 1; i <= 32; i++)
1502 {
1503 if(is_user_connected(i) && (1 <= get_user_team(i) <= 2))
1504 {
1505 pMixPlayed[i]++;
1506 pPoints[i] += POINTS_MIX_PLAYED;
1507
1508 pMixDraw[i]++;
1509 pPoints[i] += POINTS_MIX_DRAW;
1510 SavePlayer(i);
1511 }
1512 }
1513}
1514
1515public TeamWon(team)
1516{
1517 for(new i = 1; i <= 32; i++)
1518 {
1519 if(is_user_connected(i) && (1 <= get_user_team(i) <= 2))
1520 {
1521 pMixPlayed[i]++;
1522 pPoints[i] += POINTS_MIX_PLAYED;
1523
1524 if(get_user_team(i) == team)
1525 {
1526 pMixWon[i]++;
1527 pPoints[i] += POINTS_MIX_WON;
1528 }
1529 else
1530 {
1531 pMixLost[i]++;
1532 pPoints[i] += POINTS_MIX_LOST;
1533 }
1534 SavePlayer(i);
1535 }
1536 }
1537}
1538
1539public setEndGame()
1540{
1541 showMVP();
1542 InsertGame();
1543
1544 passwordStatus = false;
1545 KnifeRound = false;
1546 PrepareRound = false;
1547 WarmUp = true;
1548 canChat = true;
1549 scoreCT = 0;
1550 scoreT = 0;
1551
1552 server_cmd("mp_roundtime 600");
1553 server_cmd("mp_startmoney 16000");
1554 server_cmd("mp_buytime 999999");
1555 server_cmd("mp_freezetime 0");
1556 server_cmd("sv_password ^"^"");
1557
1558 client_printcolor(0, "/y[/ctr%s/y] Žaidimas baigtas! Laukite žemėlapio keitimo!", PREFIX);
1559
1560 server_cmd("hostname ^"%s [Apšilimas]^"", HOSTNAME);
1561
1562 return PLUGIN_HANDLED;
1563}
1564
1565public endGame(id)
1566{
1567 if(!isAdmin(id))
1568 return PLUGIN_HANDLED;
1569
1570 showMVP();
1571 InsertGame();
1572
1573 passwordStatus = false;
1574 KnifeRound = false;
1575 PrepareRound = false;
1576 WarmUp = true;
1577 canChat = true;
1578 scoreCT = 0;
1579 scoreT = 0;
1580
1581 server_cmd("mp_roundtime 600");
1582 server_cmd("mp_startmoney 16000");
1583 server_cmd("mp_buytime 999999");
1584 server_cmd("mp_freezetime 0");
1585 server_cmd("sv_password ^"^"");
1586
1587 server_cmd("sv_restart 1");
1588
1589 client_printcolor(0, "/y[/ctr%s/y] Įjungtas apšilimas! Laukite žemėlapio keitimo!", PREFIX);
1590
1591 server_cmd("hostname ^"%s [Apšilimas]^"", HOSTNAME);
1592
1593 return PLUGIN_HANDLED;
1594}
1595
1596public showMVP()
1597{
1598 new KillerName[256], DeathsName[256], BombPName[256], BombDName[256];
1599 new iPlayers[32], pNum, Tempid;
1600 new topKillerid, topDeathsid, topBombPid, topBombDid;
1601 new topKills, topDeaths, topBombP, topBombD;
1602
1603 get_players(iPlayers, pNum, "ch");
1604
1605 for(new i ; i < pNum ; i++)
1606 {
1607 Tempid = iPlayers[i];
1608
1609 if(pTempKills[Tempid] >= topKills && pTempKills[Tempid])
1610 {
1611 topKills = pTempKills[Tempid];
1612 topKillerid = Tempid;
1613 }
1614
1615 if(pTempDeaths[Tempid] >= topDeaths && pTempDeaths[Tempid])
1616 {
1617 topDeaths = pTempDeaths[Tempid];
1618 topDeathsid = Tempid;
1619 }
1620
1621 if(pTempPlants[Tempid] >= topBombP && pTempPlants[Tempid])
1622 {
1623 topBombP = pTempPlants[Tempid];
1624 topBombPid = Tempid;
1625 }
1626
1627 if(pTempDefusions[Tempid] >= topBombD && pTempDefusions[Tempid])
1628 {
1629 topBombD = pTempDefusions[Tempid];
1630 topBombDid = Tempid;
1631 }
1632 }
1633
1634 if(1 <= topKillerid <= get_maxplayers())
1635 {
1636 get_user_name(topKillerid, KillerName, charsmax(KillerName));
1637 }
1638
1639 if(1 <= topDeathsid <= get_maxplayers())
1640 {
1641 get_user_name(topDeathsid, DeathsName, charsmax(DeathsName));
1642 }
1643
1644 if(1 <= topBombPid <= get_maxplayers())
1645 {
1646 get_user_name(topBombPid, BombPName, charsmax(BombPName));
1647 }
1648
1649 if(1 <= topBombDid <= get_maxplayers())
1650 {
1651 get_user_name(topBombDid, BombDName, charsmax(BombDName));
1652 }
1653
1654 for(new i ; i < pNum ; i++)
1655 {
1656 Tempid = iPlayers[i];
1657
1658 if(pTempKills[Tempid] == topKills && Tempid != topKillerid && pTempKills[Tempid])
1659 {
1660 new LineToAdd[65] = ",";
1661 new szName[64]; get_user_name(Tempid, szName, charsmax(szName));
1662
1663 add(LineToAdd, charsmax(LineToAdd), szName);
1664 add(KillerName, charsmax(KillerName) - strlen(BombDName) , LineToAdd);
1665 }
1666
1667 if(pTempDeaths[Tempid] == topDeaths && Tempid != topDeathsid && pTempDeaths[Tempid])
1668 {
1669 new LineToAdd[65] = ",";
1670 new szName[64]; get_user_name(Tempid, szName, charsmax(szName));
1671
1672 add(LineToAdd, charsmax(LineToAdd), szName);
1673 add(DeathsName, charsmax(DeathsName) - strlen(DeathsName) , LineToAdd);
1674 }
1675
1676 if(pTempPlants[Tempid] == topBombP && Tempid != topBombPid && pTempPlants[Tempid])
1677 {
1678 new LineToAdd[65] = ","
1679 new szName[64]; get_user_name(Tempid, szName, charsmax(szName));
1680
1681 add(LineToAdd, charsmax(LineToAdd), szName);
1682 add(BombPName, charsmax(BombPName) - strlen(BombPName) , LineToAdd);
1683 }
1684
1685 if(pTempDefusions[Tempid] == topBombD && Tempid != topBombDid && pTempDefusions[Tempid])
1686 {
1687 new LineToAdd[65] = ",";
1688 new szName[64]; get_user_name(Tempid, szName, charsmax(szName));
1689
1690 add(LineToAdd, charsmax(LineToAdd), szName);
1691 add(BombDName, charsmax(BombDName) - strlen(BombDName), LineToAdd);
1692 }
1693 }
1694
1695 new msgToDisplay[456] = "%L";
1696
1697 format(msgToDisplay, charsmax(msgToDisplay), msgToDisplay, LANG_PLAYER, "RANKING_MVP", scoreCT, scoreT, strlen(KillerName) ? KillerName : "NONE", topKills, strlen(DeathsName) ? DeathsName : "NONE", topDeaths,
1698 strlen(BombPName) ? BombPName : "NONE", topBombP, strlen(BombDName) ? BombDName : "NONE", topBombD);
1699
1700 set_task(1.0, "RankingTable", TASK_MVP, msgToDisplay, strlen(msgToDisplay), "b")
1701}
1702
1703public RankingTable(msgToDisplay[], TASK_MVP)
1704{
1705 new iPlayers[32], pNum, id;
1706
1707 for(new i ; i < pNum ; i++)
1708 {
1709 id = iPlayers[i];
1710 }
1711
1712 set_hudmessage(255, 255, 255, -1.0, 0.10, 0, 6.0, 30.0)
1713 show_hudmessage(0, msgToDisplay);
1714
1715 client_cmd(id, "say /setstats");
1716}
1717
1718public Ranking(id)
1719{
1720 static query[512];
1721 formatex(query, charsmax(query), "SELECT COUNT(*) FROM mix_players WHERE points > '%d'", pTempPoints[id]);
1722 log_amx(query)
1723 static data[2];
1724 data[0] = id;
1725
1726 SQL_ThreadQuery(g_hTuple, "RankTableMVP", query, data, sizeof(data));
1727 return PLUGIN_HANDLED;
1728}
1729
1730public RankTableMVP(failstate, Handle:hQuery, error[], errnum, data[], size, Float:queuetime)
1731{
1732 if(failstate == TQUERY_CONNECT_FAILED || failstate == TQUERY_QUERY_FAILED)
1733 {
1734 set_fail_state(error);
1735 }
1736 else
1737 {
1738 new id = data[0];
1739 new msgToDisplay[456] = "%L";
1740
1741 if(SQL_NumResults(hQuery))
1742 {
1743 format(msgToDisplay, charsmax(msgToDisplay), msgToDisplay, LANG_PLAYER, "RANKTABLE_MVP", pTempPoints[id], pTempKills[id], pTempDeaths[id], pTempHeadshots[id], pTempPlants[id], pTempDefusions[id], pTempMiniAces[id], pTempAces[id]);
1744
1745 set_hudmessage(255, 255, 255, -1.0, 0.35, 0, 6.0, 30.0)
1746 show_hudmessage(id, msgToDisplay, "^n%L", LANG_PLAYER, "RANKTABLE_MVP", pTempPoints[id], pTempKills[id], pTempDeaths[id], pTempHeadshots[id], pTempPlants[id], pTempDefusions[id], pTempMiniAces[id], pTempAces[id]);
1747 }
1748 }
1749}
1750
1751public restart(id)
1752{
1753 server_cmd("restart");
1754}
1755
1756public getScore(id)
1757{
1758 if(WarmUp || KnifeRound || PrepareRound)
1759 client_printcolor(id, "/y[/ctr%s/y] Žaidimas šiuo metu nevyksta!", PREFIX);
1760 else client_printcolor(id, "/y[/ctr%s/y] CT's: /g%i /y|| T's: /g%i", PREFIX, scoreCT, scoreT);
1761 return PLUGIN_HANDLED;
1762}
1763
1764public showPlayerAce(id)
1765{
1766 static query[512];
1767 formatex(query, charsmax(query), "SELECT COUNT(*) FROM mix_players WHERE points > '%d'", pPoints[id]);
1768 log_amx(query)
1769 static data[2];
1770 data[0] = id;
1771
1772 SQL_ThreadQuery(g_hTuple, "QueryLoadAce", query, data, sizeof(data));
1773 return PLUGIN_HANDLED;
1774}
1775
1776public QueryLoadAce(failstate, Handle:hQuery, error[], errnum, data[], size, Float:queuetime)
1777{
1778 if( failstate == TQUERY_CONNECT_FAILED
1779 || failstate == TQUERY_QUERY_FAILED )
1780 {
1781 set_fail_state(error);
1782 }
1783 else
1784 {
1785 new id = data[0];
1786
1787 if(SQL_NumResults(hQuery))
1788 {
1789 if(SQL_NumResults(hQuery))
1790 {
1791 client_printcolor(id, "/y[/ctr%s/y] /yMini-ACE ^3%d ^4| /yACE ^3%d", PREFIX, pMiniAces[id], pAces[id])
1792 }
1793 }
1794 }
1795}
1796
1797public set_password(id)
1798{
1799 new rnd = random_num(99, 9999);
1800 new serverPassword[10];
1801
1802 num_to_str(rnd, serverPassword, 9);
1803
1804 server_cmd("sv_password %s", serverPassword);
1805}
1806
1807public InsertWeaponKill(wpnindex)
1808{
1809 new szQuery[3800];
1810
1811 formatex( szQuery, 3799, "INSERT INTO `mix_gun` (`gun_id`, `kills`) VALUES (%d, 1) ON DUPLICATE KEY UPDATE `kills` = `kills` + 1;", wpnindex);
1812
1813 log_amx(szQuery)
1814 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
1815}
1816
1817stock get_admin_name(id)
1818{
1819 new name[64]
1820 get_user_name(id, name, 63)
1821 return name
1822}
1823
1824stock client_printcolor(const id, const input[], any:...)
1825{
1826 new count = 1, players[32];
1827 static msg[191];
1828 vformat(msg, 190, input, 3);
1829
1830 replace_all(msg,190,"/g","^4"); // green txt
1831 replace_all(msg,190,"/y","^1"); // orange txt
1832 replace_all(msg,190,"/ctr","^3"); // team txt
1833 replace_all(msg,190,"/w","^0"); // team txt
1834
1835 if(id) players[0] = id; else get_players(players,count,"ch");
1836
1837 for(new i = 0; i < count; i++)
1838
1839 if(is_user_connected(players[i]))
1840 {
1841 message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
1842 write_byte(players[i]);
1843 write_string(msg);
1844 message_end();
1845 }
1846}
1847
1848GetSecureName(const name[])
1849{
1850 static secureName[64];
1851 copy(secureName, charsmax(secureName), name);
1852
1853 replace_all(secureName, charsmax(secureName), "\", "\\");
1854 replace_all(secureName, charsmax(secureName), "'", "\'");
1855 replace_all(secureName, charsmax(secureName), "`", "\`");
1856
1857 return secureName;
1858}