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