· 6 years ago · Jan 08, 2020, 05:56 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
13// Hostname, nustatyk ÄŤia.
14#define HOSTNAME "MIX Arena [www.efear.eu]"
15
16// Prefix'as prie tekstĹł
17#define PREFIX "^4www.efear.eu^1"
18
19// Flagas, pagal kurį bus atpažįstamas administratorius, kuris galės valdyti MIX serverį
20#define FLAG ADMIN_KICK
21
22#define MIX_HOST "77.241.193.206"
23#define MIX_USER "dh00402_mix"
24#define MIX_PASSWORD "gYXA1hoG"
25#define MIX_DATABASE "dh00402_mix"
26
27
28#define POINTS_KILL 1
29#define POINTS_DEATH -1
30#define POINTS_ACE 10
31#define POINTS_HS 1
32#define POINTS_MINI_ACE 5
33#define POINTS_MIX_PLAYED 20
34#define POINTS_MIX_LOST -10
35#define POINTS_MIX_WON 20
36#define POINTS_MIX_DRAW 5
37
38
39
40
41new Handle:g_hTuple;
42
43new const szTables[][] =
44{
45 "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`) )",
46
47 "CREATE TABLE IF NOT EXISTS `mix_guns` ( `gun_id` int(32) NOT NULL, `kills` int(16), PRIMARY KEY (`gun_id`) )",
48
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}
51
52new pKills[33], pDeaths[33], pHeadshots[33], pAces[33], pMiniAces[33], pMixPlayed[33], pMixLost[33], pMixDraw[33], pMixWon[33], pPoints[33], bool:pLoaded[33]
53
54#define isAdmin(%1) (get_user_flags(%1) & FLAG)
55
56new scoreT, scoreCT, serverPassword[64], tempCT, tempT, tempCount
57new bool:WarmUp = true, bool:KnifeRound, bool:passwordStatus, bool:canChat = true,bool:PrepareRound
58new Kills[33]
59
60new const BlockCmds[][] = {
61"amx_unban",
62"amx_rcon",
63"amx_cvar",
64"amxmodmenu"
65}
66
67new const Commands[][][] = {
68{"menu", "mainMenu"},
69{"mixmenu", "mainMenu"},
70{"live", "setLive"},
71{"rr", "restartRound"},
72{"restart", "restartRound"},
73{"wu", "warmUP"},
74{"warmup", "warmUP"},
75{"gg", "endGame"},
76{"stop", "endGame"},
77{"knife", "setKnife"},
78{"knf", "setKnife"},
79{"score", "getScore"},
80{"rez", "getScore"},
81{"pw", "infoPassword"},
82{"renkam", "setPrepare"}
83}
84
85public plugin_init()
86{
87 register_plugin("MIX Panel", "1.3", "InvIs")
88 new szFmt[64]
89 for(new i = 0; i < sizeof(BlockCmds); i++) {
90 register_concmd(BlockCmds[i], "BlockConsole")
91 }
92 for(new i = 0; i < sizeof(Commands); i++) {
93 format(szFmt, 63, "say .%s", Commands[i][0])
94 register_clcmd(szFmt, Commands[i][1])
95 format(szFmt, 63, "say /%s", Commands[i][0])
96 register_clcmd(szFmt, Commands[i][1])
97 format(szFmt, 63, "say !%s", Commands[i][0])
98 register_clcmd(szFmt, Commands[i][1])
99 format(szFmt, 63, "say_team .%s", Commands[i][0])
100 register_clcmd(szFmt, Commands[i][1])
101 format(szFmt, 63, "say_team /%s", Commands[i][0])
102 register_clcmd(szFmt, Commands[i][1])
103 format(szFmt, 63, "say_team !%s", Commands[i][0])
104 register_clcmd(szFmt, Commands[i][1])
105 }
106 register_clcmd("say .choose", "choosePlayers")
107 register_clcmd("say /choose", "choosePlayers")
108
109 register_clcmd("say .ban", "BanMenu")
110 register_clcmd("say .kick", "KickMenu")
111 register_clcmd("say .maps", "MapsMenu")
112 register_clcmd("say .leave", "LeaveMenu")
113 register_clcmd("say .chat", "ChatMenu")
114 register_clcmd("say .chaton", "ChatMenuNew")
115
116 register_clcmd("say .stats", "showStats");
117 register_clcmd("say .top", "showTOP");
118
119 register_clcmd("SetPassword", "_SetPassword")
120 register_clcmd("say", "hookSay")
121
122 server_cmd("sv_password ^"^"")
123
124 //register_event( "CurWeapon", "event_CurWeapon", "be","1=1" );
125 register_event("DeathMsg", "DeathEvent", "a");
126 RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1 );
127 register_logevent("RoundEnd", 2, "1=Round_End")
128 register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")
129 register_event("SendAudio", "ct_win", "a", "2&%!MRAD_ctwin")
130 register_forward(FM_Voice_SetClientListening, "ClientListen");
131
132
133 server_cmd("hostname ^"%s^"", HOSTNAME);
134}
135public BanMenu(id)
136{
137 client_cmd(id, "amx_banmenu");
138}
139public KickMenu(id)
140{
141 client_cmd(id, "amx_kickmenu");
142}
143public MapsMenu(id)
144{
145 client_cmd(id, "amx_mapmenu");
146}
147public LeaveMenu(id)
148{
149 client_cmd(id, "amx_bandisconnectedmenu");
150}
151public ChatMenu(id)
152{
153 if(!isAdmin(id)) return PLUGIN_HANDLED
154
155 canChat = false;
156
157 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai išjungti!", PREFIX)
158
159 return PLUGIN_HANDLED
160}
161public ChatMenuNew(id)
162{
163 if(!isAdmin(id)) return PLUGIN_HANDLED
164
165 canChat = true;
166
167 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai ÄŻjungti!", PREFIX)
168
169 return PLUGIN_HANDLED
170}
171public showStats(id)
172{
173 new link[128], steamid[64];
174 get_user_authid(id, steamid, 63);
175 format(link, 127, "http://94.176.236.15/stats/serveryje/player.php?sid=%s", steamid);
176
177 show_motd(id, link, "Player statistika");
178}
179public showTOP(id)
180{
181 new link[128];
182 format(link, 127, "http://94.176.236.15/stats/serveryje/stats.php");
183
184 show_motd(id, link, "Player top 15 statistika");
185}
186public plugin_cfg()
187{
188 set_task(0.5, "MySQLx_Init");
189}
190
191public MySQLx_Init()
192{
193
194 g_hTuple = SQL_MakeDbTuple( MIX_HOST, MIX_USER, MIX_PASSWORD, MIX_DATABASE );
195
196 for ( new i = 0; i < sizeof szTables; i++ )
197 {
198 SQL_ThreadQuery( g_hTuple, "QuerySetData", szTables[i]);
199 }
200}
201
202public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
203{
204 if( iFailState == TQUERY_CONNECT_FAILED
205 || iFailState == TQUERY_QUERY_FAILED )
206 {
207 log_amx( "%s", szError );
208
209 return;
210 }
211}
212public ClientListen(pid /*receiver*/, id /*sender*/) {
213 if(pid == id) return 1;
214
215 if(is_user_connected(id)) {
216 new szTeam[2];
217 szTeam[0] = get_pdata_int(id, 114);
218 szTeam[1] = get_pdata_int(pid, 114);
219
220 if(szTeam[0] == szTeam[1] || WarmUp || KnifeRound || PrepareRound) {
221 engfunc(EngFunc_SetClientListening, pid, id, 1);
222 return 4;
223 }
224 engfunc(EngFunc_SetClientListening, pid, id, 0);
225 return 4;
226 }
227 return 1;
228}
229public client_connect(id)
230{
231 pKills[id] = 0;
232 pDeaths[id] = 0;
233 pHeadshots[id] = 0;
234 pAces[id] = 0;
235 pMiniAces[id] = 0;
236 pMixPlayed[id] = 0;
237 pMixLost[id] = 0;
238 pMixDraw[id] = 0;
239 pMixWon[id] = 0;
240 pPoints[id] = 0;
241 pLoaded[id] = false;
242 LoadPlayerData(id);
243}
244public InsertGame()
245{
246 new szQuery[3800];
247
248 //new year, month, day, hour, minute, second, current_date[128]
249 new map_name[64];
250
251 get_mapname(map_name, 63)
252
253 //date(year, month, day);
254 //time(hour, minute, second);
255
256 //format(current_date, 127, "%i-%i-%i %i:%i:%i", year, month, day, hour, minute, second);
257
258 formatex( szQuery, 3799, "REPLACE INTO `mix_games` (`map_name`, `date`, `rez_ct`, `rez_t`) VALUES ('%s', NOW(), '%d', '%d');", map_name, scoreCT, scoreT);
259 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
260}
261public InsertWeaponKill(wpnindex)
262{
263 new szQuery[3800];
264
265 formatex( szQuery, 3799, "INSERT INTO `mix_guns` (`gun_id`, `kills`) VALUES (%d, 1) ON DUPLICATE KEY UPDATE `kills` = `kills` + 1;", wpnindex);
266
267 log_amx(szQuery)
268 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
269}
270public SavePlayer(id)
271{
272 if(!pLoaded[id]) return PLUGIN_HANDLED;
273
274 if (pPoints[id] < 0)
275 pPoints[id] = 0;
276
277 new Name[64], steam[64];
278 get_user_name(id, Name, 63);
279
280 get_user_authid(id, steam, 63);
281
282 static szQuery[3800];
283 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]);
284
285 #if AMXX_VERSION_NUM >= 183
286 SQL_SetCharset(g_hTuple,"utf8");
287 #endif
288
289 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
290
291 return PLUGIN_CONTINUE;
292}
293public LoadPlayerData(id)
294{
295 new steam[64];
296 get_user_authid(id, steam, 63);
297
298 static szQuery[ 256 ], iData[ 1 ];
299 formatex( szQuery, 255, "SELECT * FROM `mix_players` WHERE ( `player_id` = '%s' );", steam );
300
301 iData[ 0 ] = id;
302 SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
303
304 return PLUGIN_CONTINUE;
305}
306public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
307{
308 if( iFailState == TQUERY_CONNECT_FAILED
309 || iFailState == TQUERY_QUERY_FAILED )
310 {
311 log_amx( "%s", szError );
312
313 return;
314 }
315 else
316 {
317 new id = iData[ 0 ];
318 new data_kills = SQL_FieldNameToNum(hQuery, "kills");
319 new data_deaths = SQL_FieldNameToNum(hQuery, "deaths");
320 new data_headshots = SQL_FieldNameToNum(hQuery, "headshots");
321 new data_aces = SQL_FieldNameToNum(hQuery, "aces");
322 new data_mini_aces = SQL_FieldNameToNum(hQuery, "m_aces");
323 new data_mix_played = SQL_FieldNameToNum(hQuery, "mix_played");
324 new data_mix_lost = SQL_FieldNameToNum(hQuery, "mix_lost");
325 new data_mix_draw = SQL_FieldNameToNum(hQuery, "mix_draw");
326 new data_mix_won = SQL_FieldNameToNum(hQuery, "mix_won");
327 new data_points = SQL_FieldNameToNum(hQuery, "points");
328 while (SQL_MoreResults(hQuery))
329 {
330 pKills[id] = SQL_ReadResult(hQuery, data_kills);
331 pDeaths[id] = SQL_ReadResult(hQuery, data_deaths);
332 pHeadshots[id] = SQL_ReadResult(hQuery, data_headshots);
333 pAces[id] = SQL_ReadResult(hQuery, data_aces);
334 pMiniAces[id] = SQL_ReadResult(hQuery, data_mini_aces);
335 pMixPlayed[id] = SQL_ReadResult(hQuery, data_mix_played);
336 pMixLost[id] = SQL_ReadResult(hQuery, data_mix_lost);
337 pMixDraw[id] = SQL_ReadResult(hQuery, data_mix_draw);
338 pMixWon[id] = SQL_ReadResult(hQuery, data_mix_won);
339 pPoints[id] = SQL_ReadResult(hQuery, data_points);
340
341 SQL_NextRow(hQuery);
342 }
343
344 pLoaded[id] = true;
345 }
346}
347public client_disconnected(id)
348{
349 if(!WarmUp && !PrepareRound)
350 {
351 if(1 <= get_user_team(id) <= 2)
352 client_printcolor(0, "/y[/ctr%s/y] Žaidėjas: /g%s /ypaliko žaidimą!", PREFIX, get_admin_name(id))
353 }
354}
355public t_win(id)
356{
357 if(!WarmUp && !KnifeRound && !PrepareRound) scoreT++
358 if(KnifeRound)
359 {
360 if(tempT)
361 {
362 showTeamMenu(tempT)
363 }
364 }
365}
366public ct_win(id)
367{
368 if(!WarmUp && !KnifeRound && !PrepareRound) scoreCT++
369 if(KnifeRound)
370 {
371 if(tempCT)
372 {
373 showTeamMenu(tempCT)
374 }
375 }
376}
377public PlayerSpawn(id)
378{
379 if(WarmUp && is_user_connected(id))
380 cs_set_user_money(id, 16000)
381 Kills[id] = 0
382
383 return PLUGIN_HANDLED;
384}
385public RoundEnd()
386{
387 if(WarmUp) server_cmd("hostname ^"%s [Apsilimas]^"", HOSTNAME);
388 else if(KnifeRound) server_cmd("hostname ^"%s [Knife Round]^"", HOSTNAME);
389 else if(PrepareRound) server_cmd("hostname ^"%s [Renkamos Komandos]^"", HOSTNAME);
390 else
391 {
392 if(scoreT == 16 || scoreCT == 16)
393 {
394 server_cmd("hostname ^"[Zaidimas baigtas - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
395 }
396 else if(scoreT == 15 || scoreCT == 15)
397 {
398 server_cmd("hostname ^"[Live (MB) - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
399 }
400 else
401 {
402 if(scoreCT+scoreT == 15)
403 {
404 server_cmd("hostname ^"[Live - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
405 }
406 else
407 {
408 server_cmd("hostname ^"[Live - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
409 }
410 }
411 }
412 if(!WarmUp && !KnifeRound && !PrepareRound) {
413 for(new i = 1; i <= 32; i++)
414 {
415 if(is_user_connected(i))
416 {
417 if(Kills[i] == 4)
418 {
419 client_printcolor(0, "/y[/ctr%s/y] Žaidėjas: /g%s /yPadare /ctrMINI ACE", PREFIX, get_admin_name(i))
420 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)
421 if(!WarmUp && !PrepareRound)
422
423 pMiniAces[i]++;
424 pPoints[i] += POINTS_MINI_ACE
425 SavePlayer(i);
426 }
427 else if(Kills[i] == 5)
428 {
429 client_printcolor(0, "/y[/ctr%s/y] Žaidėjas: /g%s /yPadare /ctrACE", PREFIX, get_admin_name(i))
430 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)
431
432 pAces[i]++;
433 pPoints[i] += POINTS_ACE
434 SavePlayer(i);
435 }
436 }
437 }
438 if(scoreCT + scoreT == 15)
439 {
440 new temp = scoreCT
441 scoreCT = scoreT
442 scoreT = temp
443 client_printcolor(0, "/y[/ctr%s/y] KeiÄŤiamos komandos!", PREFIX)
444 changeTeams()
445 server_cmd("sv_restart 5")
446 }
447 client_printcolor(0, "/y[/ctr%s/y] CT's: /g%i /y|| T's: /g%i", PREFIX, scoreCT, scoreT)
448 if(scoreT == 15 && scoreCT == 15) {
449 client_printcolor(0, "/y[/ctr%s/y] /gŽaidimas baigtas. /yNei viena komanda nelaimėjo!", PREFIX)
450 client_printcolor(0, "/y[/ctr%s/y] /gKiekvienoje komandoje esantys žaidėjai už lygiasias /ctrgauna: /g%i tašku!", PREFIX, POINTS_MIX_DRAW)
451 client_printcolor(0, "/y[/ctr%s/y] /gKiekvienoje komandoje esantys žaidėjai už tai, kad žaidė „MIX“ /ctrgauna: /g%i tašku!", PREFIX, POINTS_MIX_PLAYED)
452 drawGame();
453 setEndGame()
454 }
455 else if(scoreT == 15) client_printcolor(0, "/y[/ctr%s/y] Counter-Terrorists MB", PREFIX)
456 else if(scoreCT == 15) client_printcolor(0, "/y[/ctr%s/y] Terrorists MB", PREFIX)
457 else if(scoreT == 16)
458 {
459 TeamWon(1);
460 client_printcolor(0, "/y[/ctr%s/y] /gŽaidimas baigtas. Laimėjo: /yTerrorists komanda!", PREFIX)
461 client_printcolor(0, "/y[/ctr%s/y] /gTerrorists komandoje esantys žaidėjai už pergalę /ctrgauna: /g%i tašku!", PREFIX, POINTS_MIX_WON)
462 client_printcolor(0, "/y[/ctr%s/y] /gKiekvienoje komandoje esantys žaidėjai už tai, kad žaidė „MIX“ /ctrgauna: /g%i tašku!", PREFIX, POINTS_MIX_PLAYED)
463 setEndGame()
464
465 }
466 else if(scoreCT == 16)
467 {
468 TeamWon(2);
469 client_printcolor(0, "/y[/ctr%s/y] /gŽaidimas baigtas. Laimėjo: /yCounter-Terrorists komanda!", PREFIX)
470 client_printcolor(0, "/y[/ctr%s/y] /gCounter-Terrorists komandoje esantys žaidėjai už pergalę /ctrgauna: /g%i tašku!", PREFIX, POINTS_MIX_WON)
471 client_printcolor(0, "/y[/ctr%s/y] /gKiekvienoje komandoje esantys žaidėjai už tai, kad žaidė „MIX“ /ctrgauna: /g%i tašku!", PREFIX, POINTS_MIX_PLAYED)
472 setEndGame()
473 }
474 }
475}
476public changeTeams()
477{
478 for(new i = 1; i <= 32; i++)
479 {
480 add_delay(i)
481 }
482}
483public changeTeam( id )
484{
485 if(is_user_connected(id))
486 {
487 switch( get_user_team( id ) )
488 {
489 case 2: cs_set_user_team( id, CS_TEAM_T );
490 case 1: cs_set_user_team( id, CS_TEAM_CT );
491 }
492 }
493}
494add_delay( id )
495{
496 switch( id )
497 {
498 case 1..5: set_task( 0.1, "changeTeam", id );
499 case 6..10: set_task( 0.2, "changeTeam", id );
500 case 11..15: set_task( 0.3, "changeTeam", id );
501 case 16..20: set_task( 0.4, "changeTeam", id );
502 case 21..25: set_task( 0.5, "changeTeam", id );
503 case 26..32: set_task( 0.6, "changeTeam", id );
504 }
505}
506public DeathEvent(victim, attacker, id)
507{
508 new attacker = read_data(1);
509 new victim = read_data(2);
510 new hs = read_data(3)
511
512 if(WarmUp) {
513 set_task(1.0, "RespawnPlayer", victim)
514 }
515 else if(1 <= victim <= 32 && 1 <= attacker <= 32)
516 {
517 Kills[attacker]++
518
519 if(!WarmUp && !PrepareRound)
520 {
521 pKills[attacker]++;
522 pPoints[attacker] += POINTS_KILL
523
524 if(hs)
525 {
526 pHeadshots[attacker]++;
527 pPoints[attacker] += POINTS_HS
528
529 }
530 pDeaths[victim]++;
531 pPoints[victim] += POINTS_DEATH
532
533 SavePlayer(victim);
534 SavePlayer(attacker);
535
536
537
538 new weapon_name[32]
539 read_data(4, weapon_name, 31)
540
541
542 if(containi(weapon_name, "ak47") != -1) InsertWeaponKill(CSW_AK47);
543 else if(containi(weapon_name, "m4a1") != -1) InsertWeaponKill(CSW_M4A1);
544 else if(containi(weapon_name, "deagle") != -1) InsertWeaponKill(CSW_DEAGLE);
545 else if(containi(weapon_name, "awp") != -1) InsertWeaponKill(CSW_AWP);
546 else if(containi(weapon_name, "usp") != -1) InsertWeaponKill(CSW_USP);
547 else if(containi(weapon_name, "glock") != -1) InsertWeaponKill(CSW_GLOCK18);
548 else if(containi(weapon_name, "he") != -1) InsertWeaponKill(CSW_HEGRENADE);
549 else if(containi(weapon_name, "knife") != -1) InsertWeaponKill(CSW_KNIFE);
550 else if(containi(weapon_name, "scout") != -1) InsertWeaponKill(CSW_SCOUT);
551 }
552
553 }
554}
555public RespawnPlayer(id)
556{
557 if(!is_user_alive(id) && is_user_connected(id) && 1 <= get_user_team(id) <= 2)
558 ExecuteHamB(Ham_CS_RoundRespawn, id)
559}
560public event_CurWeapon(id)
561{
562 if(KnifeRound && get_user_weapon(id) != CSW_KNIFE)
563 engclient_cmd(id, "weapon_knife")
564}
565public infoPassword(id)
566{
567 if(passwordStatus)
568 client_printcolor(id, "/y[/ctr%s/y] Serverio slaptaĹľodis: /g%s", PREFIX, serverPassword)
569 else
570 client_printcolor(id, "/y[/ctr%s/y] Serverio slaptažodis išjungtas!", PREFIX, serverPassword)
571 return PLUGIN_HANDLED
572}
573public hookSay(id)
574{
575 if(!canChat) {
576 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai šiuo metu yra išjungti!", PREFIX)
577 client_printcolor(id, "/y[/ctr%s/y] Galimos komandos: /g.rez .stats .top", PREFIX)
578 return PLUGIN_HANDLED;
579 }
580 return PLUGIN_CONTINUE;
581}
582public BlockConsole(id) return PLUGIN_HANDLED
583public mainMenu(id)
584{
585 if(!isAdmin(id)) return PLUGIN_HANDLED
586 new menu = menu_create("\w[\yMIX\w] \rPagrindinis meniu", "onMainMenu")
587
588 new szMsg[64]
589
590 menu_additem(menu, "Valdymas")
591
592 format(szMsg, 63, "\wPokalbiai \d[%s\d]", canChat ? "\yĮjungti" : "\rIšjungti")
593 menu_additem(menu, szMsg)
594
595 if(serverPassword[0]) format(szMsg, 63, "\wSlaptaĹľodis \d[\y%s\d]", serverPassword)
596 else format(szMsg, 63, "\wSlaptaĹľodis \d[\rNÄ—ra\d]")
597 menu_additem(menu, szMsg)
598
599 menu_additem(menu, "Išmesti žaidėją")
600 menu_additem(menu, "Išbaninti žaidėją")
601 menu_additem(menu, "Keisti ĹľemÄ—lapÄŻ")
602 menu_additem(menu, "Atsijungusių žaidėjų sąrašas")
603
604 menu_display(id, menu, 0)
605
606 return PLUGIN_HANDLED;
607}
608public onMainMenu(id, menu, item)
609{
610 switch(item)
611 {
612 case 0: actMix(id)
613 case 1:
614 {
615 canChat = !canChat
616 mainMenu(id)
617 return PLUGIN_HANDLED
618 }
619 case 2: optionsPassword(id)
620 case 3: client_cmd(id, "amx_kickmenu")
621 case 4: client_cmd(id, "amx_banmenu")
622 case 5: client_cmd(id, "amx_mapmenu")
623 case 6: client_cmd(id, "amx_bandisconnectedmenu")
624 }
625 menu_destroy(menu)
626 return PLUGIN_HANDLED
627}
628public optionsPassword(id)
629{
630 if(!isAdmin(id)) return PLUGIN_HANDLED
631 new szText[64]
632 if(strlen(serverPassword) > 0) format(szText, 63, "\w[\y%s\w] \rSlaptaĹľodis \d(\y%s\d)", PREFIX, serverPassword)
633 else format(szText, 63, "\w[\y%s\w] \rSlaptaĹľodis \d(\rNÄ—ra\d)", PREFIX)
634 new menu = menu_create(szText, "onOptionsPassword")
635
636 format(szText, 63, "\wSlaptažodis \d[%s\d]", passwordStatus ? "\yĮjungtas" : "\rIšjungtas")
637
638 menu_additem(menu, szText)
639 menu_additem(menu, "Keisti slaptaĹľodÄŻ")
640 menu_additem(menu, "Ištrinti slaptažodį")
641
642 menu_display(id, menu, 0)
643
644 return PLUGIN_HANDLED;
645}
646public onOptionsPassword(id, menu, item)
647{
648 switch(item)
649 {
650 case MENU_EXIT:
651 {
652 mainMenu(id)
653 return PLUGIN_HANDLED
654 }
655 case 0:
656 {
657 if(strlen(serverPassword) > 0) {
658 passwordStatus = !passwordStatus
659 if(passwordStatus) {
660 server_cmd("sv_password", serverPassword)
661 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Serverio slaptaĹľodis: /g%s",PREFIX, get_admin_name(id), serverPassword)
662 }
663 else server_cmd("sv_password ^"^"")
664 }
665 else {
666 if(passwordStatus)
667 passwordStatus = false
668 client_printcolor(id, "/y[/ctr%s/y] Nenustatytas slaptaĹľodis!", PREFIX)
669 //format(serverPassword, 63, "")
670 }
671
672 }
673 case 1: client_cmd(id, "messagemode SetPassword")
674 case 2: format(serverPassword, 63, "")
675 }
676 optionsPassword(id)
677 return PLUGIN_HANDLED
678}
679public _SetPassword(id) {
680 if(!isAdmin(id)) return
681 new szTemp[64]
682 read_args(szTemp, charsmax(szTemp))
683 remove_quotes(szTemp)
684 format(serverPassword, 63, szTemp)
685 optionsPassword(id)
686 if(passwordStatus)
687 {
688 server_cmd("sv_password %s", serverPassword)
689 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Serverio slaptaĹľodis: /g%s",PREFIX, get_admin_name(id), szTemp)
690 }
691}
692public actMix(id)
693{
694 if(!isAdmin(id)) return PLUGIN_HANDLED
695 new menu = menu_create("\w[\yMIX\w] \rValdymas", "onactMix")
696
697 menu_additem(menu, "PradÄ—ti ĹľaidimÄ…")
698 menu_additem(menu, "Pasiruošti")
699 menu_additem(menu, "Apšilimas")
700 menu_additem(menu, "Knife roundas")
701 menu_additem(menu, "Perkrauti roundÄ…")
702 menu_additem(menu, "UĹľbaigti ĹľaidimÄ…")
703
704 menu_display(id, menu, 0)
705
706 return PLUGIN_HANDLED;
707}
708public onactMix(id, menu, item)
709{
710 switch(item)
711 {
712 case 0: setLive(id)
713 case 1: setPrepare(id)
714 case 2: warmUP(id)
715 case 3: setKnife(id)
716 case 4: restartRound(id)
717 case 5: endGame(id)
718 }
719 menu_destroy(menu)
720}
721public setPrepare(id)
722{
723 if(!isAdmin(id)) return PLUGIN_HANDLED
724 if(get_playersnum() >= 10) {
725 server_cmd("sv_restart 1")
726
727 KnifeRound = false;
728 PrepareRound = true;
729 WarmUp = false;
730 scoreCT = 0;
731 scoreT = 0;
732 tempCount = 0;
733 tempCT = 0;
734 tempT = 0;
735
736 for(new i = 1; i <= 32; i++)
737 {
738 if(is_user_connected(id) && (1 <= get_user_team(i) <= 2)) {
739 if(is_user_alive(i))
740 user_silentkill(i)
741 cs_set_user_team(i, CS_TEAM_SPECTATOR)
742 }
743 }
744
745 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Pasiruošimas prasidėjo! Administratorius tuoj išrinks lyderius!", PREFIX, get_admin_name(id))
746 showPrepareMenu(id)
747 }
748 else
749 client_printcolor(id, "/y[/ctr%s/y] Pasiruošimas negali būti pradėtas todel kad trūksta žaidėjų!", PREFIX)
750 return PLUGIN_HANDLED
751}
752public showPrepareMenu(id)
753{
754 if(!isAdmin(id)) return PLUGIN_HANDLED
755 new menu = menu_create("\w[\yMIX\w] \rPasirinkite kas eis ÄŻ CT", "onPrepareCT")
756
757 new players[32], num
758 get_players(players, num, "ch")
759 new ui[32]
760
761 for(new i; i < num; i++)
762 {
763 format(ui, 31, "%d",get_user_userid(players[i]))
764 menu_additem(menu, get_admin_name(players[i]), ui)
765 }
766
767 menu_display(id, menu, 0)
768
769 return PLUGIN_HANDLED;
770}
771public onPrepareCT(id, menu, item)
772{
773 new szData[6], szName[64];
774 new _access, item_callback;
775
776 menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
777
778 new userid = str_to_num( szData );
779 new player = find_player( "k", userid );
780
781 switch(item)
782 {
783 case MENU_EXIT: {
784 if(PrepareRound) showPrepareMenu(id)
785 return PLUGIN_HANDLED;
786 }
787 default: if(PrepareRound && is_user_connected(player)) cs_set_user_team(player, CS_TEAM_CT)
788 }
789 if(PrepareRound) {
790 tempCT = player;
791 client_printcolor(0, "/y[/ctr%s/y] CT lyderis bus: /g%s", PREFIX, szName)
792 client_printcolor(0, "/y[/ctr%s/y] Administratorius tuoj išrinks T lyderį!", PREFIX)
793 showPrepareMenuT(id)
794 }
795 return PLUGIN_HANDLED;
796}
797public showPrepareMenuT(id)
798{
799 if(!isAdmin(id)) return PLUGIN_HANDLED
800 new menu = menu_create("\w[\yMIX\w] \rPasirinkite kas eis ÄŻ T", "onPrepareT")
801
802 new players[32], num
803 get_players(players, num, "ceh", "SPECTATOR")
804 new ui[32]
805
806 for(new i; i < num; i++)
807 {
808 format(ui, 31, "%d",get_user_userid(players[i]))
809 menu_additem(menu, get_admin_name(players[i]), ui)
810 }
811
812 menu_display(id, menu, 0)
813
814 return PLUGIN_HANDLED;
815}
816public onPrepareT(id, menu, item)
817{
818 new szData[6], szName[64];
819 new _access, item_callback;
820
821 menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
822
823 new userid = str_to_num( szData );
824 new player = find_player( "k", userid );
825
826 switch(item)
827 {
828 case MENU_EXIT: {
829 if(PrepareRound) showPrepareMenuT(id)
830 return PLUGIN_HANDLED;
831 }
832 default: if(PrepareRound && is_user_connected(player)) cs_set_user_team(player, CS_TEAM_T)
833 }
834 if(PrepareRound) {
835 tempT = player;
836 client_printcolor(0, "/y[/ctr%s/y] T lyderis bus: /g%s", PREFIX, szName)
837 client_printcolor(0, "/y[/ctr%s/y] Lyderiai pradeda rinktis ĹľaidÄ—jus!", PREFIX)
838 client_printcolor(0, "/y[/ctr%s/y] /gDemesio: /yJeigu Lyderiams dings meniu su zaideju pasirinkimu, chate rasykite /ctr/choose", PREFIX)
839 ShowList(tempCT)
840 }
841 return PLUGIN_HANDLED;
842}
843public choosePlayers(id)
844{
845 /*new Where;*/
846 switch(tempCount)
847 {
848 // Ter
849 case 0,2,4,6: if(tempT == id) ShowList(id);
850 // CT
851 case 1,3,5,7: if(tempCT == id) ShowList(id);
852 }
853 return PLUGIN_HANDLED;
854}
855public showTeamMenu(id)
856{
857 new menu = menu_create("\w[\yMIX\w] \rPasirinkite komandÄ…", "onTeamChange")
858
859 menu_additem(menu, "Pasilikti")
860 menu_additem(menu, "Keistis komandomis")
861
862 menu_display(id, menu, 0)
863
864 return PLUGIN_HANDLED;
865}
866public onTeamChange(id, menu, item)
867{
868 switch(item)
869 {
870 case 0:
871 {
872 client_printcolor(0, "/y[/ctr%s/y] Sprendimas: /gpasilikti", PREFIX)
873 setServerLive()
874 }
875 case 1:
876 {
877 client_printcolor(0, "/y[/ctr%s/y] Sprendimas: /gkeistis komandomis", PREFIX)
878 changeTeams()
879 set_task(2.0, "setServerLive", 1)
880 }
881 }
882}
883public ShowList(id)
884{
885 new menu = menu_create("\w[\yMIX\w] \rPasirinkite komandos draugÄ…", "onShowList")
886
887 new players[32], num
888 get_players(players, num, "ceh", "SPECTATOR")
889 new ui[32]
890
891 for(new i; i < num; i++)
892 {
893 format(ui, 31, "%d",get_user_userid(players[i]))
894 menu_additem(menu, get_admin_name(players[i]), ui)
895 }
896 menu_display(id, menu, 0)
897
898 return PLUGIN_HANDLED;
899}
900public onShowList(id, menu, item)
901{
902 new szData[6], szName[64];
903 new _access, item_callback;
904
905 new Where;
906 switch(tempCount)
907 {
908 case 0,2,4,6: Where = 0
909 case 1,3,5,7: Where = 1
910 default: Where = -1
911 }
912
913 menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
914
915 new userid = str_to_num( szData );
916 new player = find_player( "k", userid );
917
918 switch(item)
919 {
920 case MENU_EXIT: {
921 if(PrepareRound) ShowList(id)
922 return PLUGIN_HANDLED;
923 }
924 default: if(PrepareRound && is_user_connected(player))
925 {
926 if(Where == 0) cs_set_user_team(player, CS_TEAM_CT)
927 else cs_set_user_team(player, CS_TEAM_T)
928
929 }
930 }
931 if(PrepareRound) {
932 tempCount++;
933 client_printcolor(0, "/y[/ctr%s/y] [/g%s /ypasirinko /g%s", PREFIX, get_admin_name(id), szName)
934 if(tempCount < 8)
935 ShowList(Where == 1 ? tempCT : tempT)
936 else
937 {
938 KnifeRound = true;
939 PrepareRound = false;
940 WarmUp = false;
941 scoreCT = 0;
942 scoreT = 0;
943
944 server_cmd("mp_roundtime 1.8")
945 server_cmd("mp_buytime 0.30")
946 server_cmd("mp_startmoney 16000")
947 server_cmd("mp_freezetime 7")
948
949 server_cmd("sv_restart 1")
950
951 client_printcolor(0, "/y[/ctr%s/y] KomandĹł rinkimasis baigtas! Knife round!", PREFIX)
952
953 setServerLive()
954 }
955 }
956 return PLUGIN_HANDLED;
957}
958public restartRound(id)
959{
960 if(!isAdmin(id)) return PLUGIN_HANDLED
961 server_cmd("sv_restart 1")
962 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Perkrautas roundas!", PREFIX, get_admin_name(id))
963 return PLUGIN_HANDLED
964}
965public setServerLive()
966{
967 KnifeRound = false;
968 PrepareRound = false;
969 WarmUp = false;
970 scoreCT = 0;
971 scoreT = 0;
972
973 server_cmd("mp_roundtime 1.8")
974 server_cmd("mp_buytime 0.30")
975 server_cmd("mp_startmoney 800")
976 server_cmd("mp_freezetime 7")
977
978 server_cmd("sv_restart 1")
979
980 client_printcolor(0, "/y[/ctr%s/y] Žaidimas Prasidėjo! Gero žaidimo jums linki - Administracija!", PREFIX)
981 return PLUGIN_HANDLED
982}
983public setLive(id)
984{
985 if(!isAdmin(id)) return PLUGIN_HANDLED
986
987 KnifeRound = false;
988 PrepareRound = false;
989 WarmUp = false;
990 scoreCT = 0;
991 scoreT = 0;
992
993 server_cmd("mp_roundtime 1.8")
994 server_cmd("mp_buytime 0.30")
995 server_cmd("mp_startmoney 800")
996 server_cmd("mp_freezetime 7")
997
998 server_cmd("sv_restart 1")
999
1000 client_printcolor(0, "/y[/ctr%s/y] Žaidimas Prasidėjo. Gero žaidimo jums linki - Administracija!", PREFIX, get_admin_name(id))
1001 return PLUGIN_HANDLED
1002}
1003public warmUP(id)
1004{
1005 if(!isAdmin(id)) return PLUGIN_HANDLED
1006
1007 passwordStatus = false;
1008 KnifeRound = false;
1009 PrepareRound = false;
1010 WarmUp = true;
1011 scoreCT = 0;
1012 scoreT = 0;
1013
1014 server_cmd("mp_roundtime 600")
1015 server_cmd("mp_buytime -1")
1016 server_cmd("mp_startmoney 16000")
1017 server_cmd("mp_freezetime 0")
1018 server_cmd("sv_password ^"^"")
1019
1020 server_cmd("sv_restart 1")
1021
1022 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Apšilimas Prasidėjo!", PREFIX, get_admin_name(id))
1023 return PLUGIN_HANDLED
1024}
1025public setKnife(id)
1026{
1027 if(!isAdmin(id)) return PLUGIN_HANDLED
1028
1029 KnifeRound = true;
1030 PrepareRound = false;
1031 WarmUp = false;
1032 scoreCT = 0;
1033 scoreT = 0;
1034
1035 server_cmd("mp_roundtime 1.8")
1036 server_cmd("mp_buytime 0.30")
1037 server_cmd("mp_startmoney 800")
1038 server_cmd("mp_freezetime 7")
1039
1040 server_cmd("sv_restart 1")
1041
1042 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] PrasidÄ—jo peiliĹł roundas! SÄ—kmÄ—s!", PREFIX, get_admin_name(id))
1043 return PLUGIN_HANDLED
1044}
1045public drawGame()
1046{
1047 for(new i = 1; i <= 32; i++)
1048 {
1049 if(is_user_connected(i) && (1 <= get_user_team(i) <= 2))
1050 {
1051 pMixPlayed[i]++;
1052 pPoints[i] += POINTS_MIX_PLAYED
1053 pMixDraw[i]++;
1054 pPoints[i] += POINTS_MIX_DRAW
1055 SavePlayer(i);
1056 }
1057 }
1058}
1059public TeamWon(team)
1060{
1061 for(new i = 1; i <= 32; i++)
1062 {
1063 if(is_user_connected(i) && (1 <= get_user_team(i) <= 2))
1064 {
1065 pMixPlayed[i]++;
1066 pPoints[i] += POINTS_MIX_PLAYED
1067
1068 if(get_user_team(i) == team)
1069 {
1070 pMixWon[i]++;
1071 pPoints[i] += POINTS_MIX_WON
1072 }
1073 else
1074 {
1075 pMixLost[i]++;
1076 pPoints[i] += POINTS_MIX_LOST
1077 }
1078 SavePlayer(i);
1079 }
1080 }
1081}
1082public setEndGame()
1083{
1084 InsertGame();
1085
1086 passwordStatus = false;
1087 KnifeRound = false;
1088 PrepareRound = false;
1089 WarmUp = true;
1090 canChat = true;
1091 scoreCT = 0;
1092 scoreT = 0;
1093
1094 server_cmd("mp_roundtime 600")
1095 server_cmd("mp_startmoney 16000")
1096 server_cmd("mp_buytime -1")
1097 server_cmd("mp_freezetime 0")
1098 server_cmd("sv_password ^"^"")
1099
1100 server_cmd("sv_restart 1")
1101
1102 client_printcolor(0, "/y[/ctr%s/y] Įjungtas apšilimas! Laukite žemėlapio keitimo!", PREFIX)
1103 return PLUGIN_HANDLED
1104}
1105public endGame(id)
1106{
1107 if(!isAdmin(id)) return PLUGIN_HANDLED
1108
1109 passwordStatus = false;
1110 KnifeRound = false;
1111 PrepareRound = false;
1112 WarmUp = true;
1113 canChat = true;
1114 scoreCT = 0;
1115 scoreT = 0;
1116
1117 server_cmd("mp_roundtime 600")
1118 server_cmd("mp_startmoney 16000")
1119 server_cmd("mp_buytime -1")
1120 server_cmd("mp_freezetime 0")
1121 server_cmd("sv_password ^"^"")
1122
1123 server_cmd("sv_restart 1")
1124
1125 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Žaidimas baigtas! Įjungtas apšilimas!", PREFIX, get_admin_name(id))
1126 return PLUGIN_HANDLED
1127}
1128public getScore(id) {
1129 if(WarmUp || KnifeRound || PrepareRound)
1130 client_printcolor(id, "/y[/ctr%s/y] Žaidimas šiuo metu nevyksta!", PREFIX)
1131 else client_printcolor(id, "/y[/ctr%s/y] CT's: /g%i /y|| T's: /g%i", PREFIX, scoreCT, scoreT)
1132 return PLUGIN_HANDLED
1133}
1134stock get_admin_name(id)
1135{
1136 new name[64]
1137 get_user_name(id, name, 63)
1138 return name
1139}
1140stock client_printcolor(const id, const input[], any:...)
1141{
1142 new count = 1, players[32];
1143 static msg[191];
1144 vformat(msg,190,input,3);
1145 replace_all(msg,190,"/g","^4");// green txt
1146 replace_all(msg,190,"/y","^1");// orange txt
1147 replace_all(msg,190,"/ctr","^3");// team txt
1148 replace_all(msg,190,"/w","^0");// team txt
1149 if (id) players[0] = id; else get_players(players,count,"ch");
1150 for (new i=0;i<count;i++)
1151 if (is_user_connected(players[i]))
1152 {
1153 message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
1154 write_byte(players[i]);
1155 write_string(msg);
1156 message_end();
1157 }
1158}
1159GetSecureName(const name[])
1160{
1161 static secureName[64];
1162 copy(secureName, charsmax(secureName), name);
1163
1164 replace_all(secureName, charsmax(secureName), "\", "\\");
1165 replace_all(secureName, charsmax(secureName), "'", "\'");
1166 replace_all(secureName, charsmax(secureName), "`", "\`");
1167
1168 return secureName;
1169}