· 8 years ago · Apr 25, 2018, 10:52 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
13// Hostname, nustatyk cia.
14#define HOSTNAME "[MIX ARENA] PlayMix.LT"
15
16// Prefix'as prie tekstu
17#define PREFIX "^4PlayMix.LT^1"
18
19// Flagas, pagal kuri bus atpazistamas administratorius, kuris gales valdyti MIX serveri
20#define FLAG ADMIN_KICK
21
22#define MIX_HOST "MSQL HOST"
23#define MIX_USER "MYSQL USERIS"
24#define MIX_PASSWORD "MYSQL SLAPYVARDYS"
25#define MIX_DATABASE "MSQL PAVADINIMAS"
26
27
28#define POINTS_KILL 1
29#define POINTS_DEATH -1
30#define POINTS_ACE 5
31#define POINTS_HS 1
32#define POINTS_MINI_ACE 2
33#define POINTS_MIX_PLAYED 1
34#define POINTS_MIX_LOST -10
35#define POINTS_MIX_WON 5
36#define POINTS_MIX_DRAW 1
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
54new pTempKills[33], pTempDeaths[33], pTempHeadshots[33], pTempAces[33], pTempMiniAces[33], pTempPoints[33];
55
56#define isAdmin(%1) (get_user_flags(%1) & FLAG)
57
58new scoreT, scoreCT, serverPassword[64], tempCT, tempT, tempCount
59new bool:WarmUp = true, bool:KnifeRound, bool:passwordStatus, bool:canChat = true,bool:PrepareRound
60new Kills[33]
61
62new const BlockCmds[][] = {
63"amx_unban",
64"amx_rcon",
65"amx_cvar",
66"amxmodmenu"
67}
68
69new const Commands[][][] = {
70{"menu", "mainMenu"},
71{"mixmenu", "mainMenu"},
72{"live", "setLive"},
73{"rr", "restartRound"},
74{"restart", "restartRound"},
75{"wu", "warmUP"},
76{"warmup", "warmUP"},
77{"stop", "endGame"},
78{"knife", "setKnife"},
79{"knf", "setKnife"},
80{"score", "getScore"},
81{"rez", "getScore"},
82{"pw", "infoPassword"},
83{"renkam", "setPrepare"}
84}
85
86public plugin_init()
87{
88 register_plugin("MIX Panel", "1.3", "InvIs")
89 new szFmt[64]
90 for(new i = 0; i < sizeof(BlockCmds); i++) {
91 register_concmd(BlockCmds[i], "BlockConsole")
92 }
93 for(new i = 0; i < sizeof(Commands); i++) {
94 format(szFmt, 63, "say .%s", Commands[i][0])
95 register_clcmd(szFmt, Commands[i][1])
96 format(szFmt, 63, "say /%s", Commands[i][0])
97 register_clcmd(szFmt, Commands[i][1])
98 format(szFmt, 63, "say !%s", Commands[i][0])
99 register_clcmd(szFmt, Commands[i][1])
100 format(szFmt, 63, "say_team .%s", Commands[i][0])
101 register_clcmd(szFmt, Commands[i][1])
102 format(szFmt, 63, "say_team /%s", Commands[i][0])
103 register_clcmd(szFmt, Commands[i][1])
104 format(szFmt, 63, "say_team !%s", Commands[i][0])
105 register_clcmd(szFmt, Commands[i][1])
106 }
107 register_clcmd("say .choose", "choosePlayers")
108 register_clcmd("say /choose", "choosePlayers")
109
110 register_clcmd("say .ban", "BanMenu")
111 register_clcmd("say .kick", "KickMenu")
112 register_clcmd("say .maps", "MapsMenu")
113 register_clcmd("say .leave", "LeaveMenu")
114 register_clcmd("say .chat", "ChatMenu")
115 register_clcmd("say .chaton", "ChatMenuNew")
116
117 register_clcmd("say .stats", "showStats");
118 register_clcmd("say .rank", "showStats");
119 register_clcmd("say .top", "showTOP");
120
121 register_clcmd("SetPassword", "_SetPassword")
122 register_clcmd("say", "hookSay")
123
124 server_cmd("sv_password ^"^"")
125
126 //register_event( "CurWeapon", "event_CurWeapon", "be","1=1" );
127 register_event("DeathMsg", "DeathEvent", "a");
128 RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1 );
129 register_logevent("RoundEnd", 2, "1=Round_End");
130 register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin");
131 register_event("SendAudio", "ct_win", "a", "2&%!MRAD_ctwin");
132 register_forward(FM_Voice_SetClientListening, "ClientListen");
133
134
135 server_cmd("hostname ^"%s^"", HOSTNAME);
136}
137
138
139
140public showPlayerRank(id)
141{
142 static query[512];
143 formatex(query, charsmax(query), "SELECT COUNT(*) FROM mix_players WHERE points > '%d'", pPoints[id]);
144 log_amx(query)
145 static data[2];
146 data[0] = id;
147
148 SQL_ThreadQuery(g_hTuple, "QueryLoadRank", query, data, sizeof(data));
149 return PLUGIN_HANDLED;
150}
151
152public QueryLoadRank(failstate, Handle:hQuery, error[], errnum, data[], size, Float:queuetime)
153{
154 if( failstate == TQUERY_CONNECT_FAILED
155 || failstate == TQUERY_QUERY_FAILED )
156 {
157 set_fail_state(error);
158 }
159 else
160 {
161 new id = data[ 0 ];
162
163 if(SQL_NumResults(hQuery))
164 {
165 new colRank = SQL_ReadResult(hQuery, 0) + 1;
166 client_printcolor(id, "/y[/ctr%s/y] Tavo rankas yra /ctr%d", PREFIX, colRank);
167 }
168 }
169}
170
171public showPlayerStats(id)
172{
173 new menu = menu_create("meniu stats", "showPlayerStatsHandler")
174
175 //We will need to create some variables so we can loop through all the players
176 new players[32], pnum, tempid;
177
178 //Some variables to hold information about the players
179 new szName[35], szUserId[35];
180
181 //Fill players with available players
182 get_players( players, pnum); // flag "a" because we are going to add health to players, but this is just for this specific case
183
184 //Start looping through all players
185 for ( new i; i<pnum; i++ )
186 {
187 //Save a tempid so we do not re-index
188 tempid = players[i];
189 if(!is_user_connected(tempid)) continue;
190 //Get the players name and userid as strings
191 get_user_name( tempid, szName, charsmax( szName ) );
192 //We will use the data parameter to send the userid, so we can identify which player was selected in the handler
193 get_user_authid(tempid, szUserId, 34);
194
195 //Add the item for this player
196 menu_additem( menu, szName, szUserId, 0 );
197 }
198
199 menu_display(id, menu, 0);
200
201 return PLUGIN_HANDLED;
202}
203
204public showPlayerStatsHandler(id, menu, item)
205{
206 if(item == MENU_EXIT)
207 {
208 menu_destroy(menu)
209 return PLUGIN_HANDLED;
210 }
211 //now lets create some variables that will give us information about the menu and the item that was pressed/chosen
212 new szData[64], szName[64];
213 new _access, item_callback;
214 //heres the function that will give us that information ( since it doesnt magicaly appear )
215 menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
216
217
218
219 new link[128]
220 format(link, 127, "http://csmix.se/extra/player.php?sid=%s", szData);
221 show_motd(id, link, "Player statistika");
222
223 menu_destroy( menu );
224 return PLUGIN_HANDLED;
225}
226
227
228
229public BanMenu(id)
230{
231 if(!isAdmin(id))
232 return PLUGIN_HANDLED;
233
234 client_cmd(id, "amx_banmenu");
235
236 return PLUGIN_HANDLED;
237}
238public KickMenu(id)
239{
240 if(!isAdmin(id))
241 return PLUGIN_HANDLED;
242
243 client_cmd(id, "amx_kickmenu");
244
245 return PLUGIN_HANDLED;
246}
247public MapsMenu(id)
248{
249 if(!isAdmin(id))
250 return PLUGIN_HANDLED;
251
252 client_cmd(id, "amx_mapmenu");
253
254 return PLUGIN_HANDLED;
255}
256public LeaveMenu(id)
257{
258 if(!isAdmin(id))
259 return PLUGIN_HANDLED;
260
261 client_cmd(id, "amx_bandisconnectedmenu");
262
263 return PLUGIN_HANDLED;
264}
265public ChatMenu(id)
266{
267 if(!isAdmin(id)) return PLUGIN_HANDLED
268
269 canChat = false;
270
271 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai isjungti!", PREFIX)
272
273 return PLUGIN_HANDLED
274}
275public ChatMenuNew(id)
276{
277 if(!isAdmin(id)) return PLUGIN_HANDLED
278
279 canChat = true;
280
281 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai ijungti!", PREFIX)
282
283 return PLUGIN_HANDLED
284}
285public showStats(id)
286{
287 new link[128], steamid[64];
288 get_user_authid(id, steamid, 63);
289 format(link, 127, "http://csmix.se/extra/player.php?sid=%s", steamid);
290
291 show_motd(id, link, "Player statistika");
292}
293public showTOP(id)
294{
295 new link[128];
296 format(link, 127, "http://csmix.se/extra/stats.php");
297
298 show_motd(id, link, "Top statistika");
299}
300public plugin_cfg()
301{
302 set_task(0.5, "MySQLx_Init");
303}
304
305public MySQLx_Init()
306{
307
308 g_hTuple = SQL_MakeDbTuple( MIX_HOST, MIX_USER, MIX_PASSWORD, MIX_DATABASE );
309
310 for ( new i = 0; i < sizeof szTables; i++ )
311 {
312 SQL_ThreadQuery( g_hTuple, "QuerySetData", szTables[i]);
313 }
314}
315
316public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
317{
318 if( iFailState == TQUERY_CONNECT_FAILED
319 || iFailState == TQUERY_QUERY_FAILED )
320 {
321 log_amx( "%s", szError );
322
323 return;
324 }
325}
326public ClientListen(pid /*receiver*/, id /*sender*/) {
327 if(pid == id) return 1;
328
329 if(is_user_connected(id)) {
330 new szTeam[2];
331 szTeam[0] = get_pdata_int(id, 114);
332 szTeam[1] = get_pdata_int(pid, 114);
333
334 if(szTeam[0] == szTeam[1] || WarmUp || KnifeRound || PrepareRound) {
335 engfunc(EngFunc_SetClientListening, pid, id, 1);
336 return 4;
337 }
338 engfunc(EngFunc_SetClientListening, pid, id, 0);
339 return 4;
340 }
341 return 1;
342}
343public client_connect(id)
344{
345
346 pTempKills[id] = 0;
347 pTempDeaths[id] = 0;
348 pTempHeadshots[id] = 0;
349 pTempAces[id] = 0;
350 pTempMiniAces[id] = 0;
351 pTempPoints[id] = 0;
352
353 pKills[id] = 0;
354 pDeaths[id] = 0;
355 pHeadshots[id] = 0;
356 pAces[id] = 0;
357 pMiniAces[id] = 0;
358 pMixPlayed[id] = 0;
359 pMixLost[id] = 0;
360 pMixDraw[id] = 0;
361 pMixWon[id] = 0;
362 pPoints[id] = 0;
363 pLoaded[id] = false;
364 LoadPlayerData(id);
365}
366public InsertGame()
367{
368 new szQuery[3800];
369
370 //new year, month, day, hour, minute, second, current_date[128]
371 new map_name[64];
372
373 get_mapname(map_name, 63)
374
375 //date(year, month, day);
376 //time(hour, minute, second);
377
378 //format(current_date, 127, "%i-%i-%i %i:%i:%i", year, month, day, hour, minute, second);
379
380 formatex( szQuery, 3799, "REPLACE INTO `mix_games` (`map_name`, `date`, `rez_ct`, `rez_t`) VALUES ('%s', NOW(), '%d', '%d');", map_name, scoreCT, scoreT);
381 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
382}
383public InsertWeaponKill(wpnindex)
384{
385 new szQuery[3800];
386
387 formatex( szQuery, 3799, "INSERT INTO `mix_guns` (`gun_id`, `kills`) VALUES (%d, 1) ON DUPLICATE KEY UPDATE `kills` = `kills` + 1;", wpnindex);
388
389 log_amx(szQuery)
390 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
391}
392public SavePlayer(id)
393{
394 if(!pLoaded[id]) return PLUGIN_HANDLED;
395
396 if (pPoints[id] < 0)
397 pPoints[id] = 0;
398
399 new Name[64], steam[64];
400 get_user_name(id, Name, 63);
401
402 get_user_authid(id, steam, 63);
403
404 static szQuery[3800];
405 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]);
406
407 #if AMXX_VERSION_NUM >= 183
408 SQL_SetCharset(g_hTuple,"utf8");
409 #endif
410
411 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
412
413 return PLUGIN_CONTINUE;
414}
415public LoadPlayerData(id)
416{
417 new steam[64];
418 get_user_authid(id, steam, 63);
419
420 static szQuery[ 256 ], iData[ 1 ];
421 formatex( szQuery, 255, "SELECT * FROM `mix_players` WHERE ( `player_id` = '%s' );", steam );
422
423 iData[ 0 ] = id;
424 SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
425
426 return PLUGIN_CONTINUE;
427}
428public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
429{
430 if( iFailState == TQUERY_CONNECT_FAILED
431 || iFailState == TQUERY_QUERY_FAILED )
432 {
433 log_amx( "%s", szError );
434
435 return;
436 }
437 else
438 {
439 new id = iData[ 0 ];
440 new data_kills = SQL_FieldNameToNum(hQuery, "kills");
441 new data_deaths = SQL_FieldNameToNum(hQuery, "deaths");
442 new data_headshots = SQL_FieldNameToNum(hQuery, "headshots");
443 new data_aces = SQL_FieldNameToNum(hQuery, "aces");
444 new data_mini_aces = SQL_FieldNameToNum(hQuery, "m_aces");
445 new data_mix_played = SQL_FieldNameToNum(hQuery, "mix_played");
446 new data_mix_lost = SQL_FieldNameToNum(hQuery, "mix_lost");
447 new data_mix_draw = SQL_FieldNameToNum(hQuery, "mix_draw");
448 new data_mix_won = SQL_FieldNameToNum(hQuery, "mix_won");
449 new data_points = SQL_FieldNameToNum(hQuery, "points");
450 while (SQL_MoreResults(hQuery))
451 {
452 pKills[id] = SQL_ReadResult(hQuery, data_kills);
453 pDeaths[id] = SQL_ReadResult(hQuery, data_deaths);
454 pHeadshots[id] = SQL_ReadResult(hQuery, data_headshots);
455 pAces[id] = SQL_ReadResult(hQuery, data_aces);
456 pMiniAces[id] = SQL_ReadResult(hQuery, data_mini_aces);
457 pMixPlayed[id] = SQL_ReadResult(hQuery, data_mix_played);
458 pMixLost[id] = SQL_ReadResult(hQuery, data_mix_lost);
459 pMixDraw[id] = SQL_ReadResult(hQuery, data_mix_draw);
460 pMixWon[id] = SQL_ReadResult(hQuery, data_mix_won);
461 pPoints[id] = SQL_ReadResult(hQuery, data_points);
462
463 SQL_NextRow(hQuery);
464 }
465
466 pLoaded[id] = true;
467 }
468}
469public client_disconnected(id)
470{
471 if(!WarmUp && !PrepareRound)
472 {
473 if(1 <= get_user_team(id) <= 2)
474 client_printcolor(0, "/y[/ctr%s/y] Zaidejas: /g%s /yPaliko zaidima!", PREFIX, get_admin_name(id))
475 }
476}
477public t_win(id)
478{
479 if(!WarmUp && !KnifeRound && !PrepareRound) scoreT++
480 if(KnifeRound)
481 {
482 if(tempT)
483 {
484 showTeamMenu(tempT)
485 }
486 }
487}
488public ct_win(id)
489{
490 if(!WarmUp && !KnifeRound && !PrepareRound) scoreCT++
491 if(KnifeRound)
492 {
493 if(tempCT)
494 {
495 showTeamMenu(tempCT)
496 }
497 }
498}
499public PlayerSpawn(id)
500{
501 if(WarmUp && is_user_connected(id))
502 cs_set_user_money(id, 16000)
503 Kills[id] = 0
504
505 return PLUGIN_HANDLED;
506}
507public RoundEnd()
508{
509 if(WarmUp) server_cmd("hostname ^"%s [WARMUP]^"", HOSTNAME);
510 else if(KnifeRound) server_cmd("hostname ^"%s [Knife Round]^"", HOSTNAME);
511 else if(PrepareRound) server_cmd("hostname ^"%s [Renkamos Komandos]^"", HOSTNAME);
512 else
513 {
514 if(scoreT == 16 || scoreCT == 16)
515 {
516 server_cmd("hostname ^"[Zaidimas baigtas - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
517 }
518 else if(scoreT == 15 || scoreCT == 15)
519 {
520 server_cmd("hostname ^"[Live (MB) - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
521 }
522 else
523 {
524 if(scoreCT+scoreT == 15)
525 {
526 server_cmd("hostname ^"[Live - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
527 }
528 else
529 {
530 server_cmd("hostname ^"[Live - CT: %i | T: %i] %s^"", scoreCT, scoreT, HOSTNAME);
531 }
532 }
533 }
534 if(!WarmUp && !KnifeRound && !PrepareRound) {
535 for(new i = 1; i <= 32; i++)
536 {
537 if(is_user_connected(i))
538 {
539 if(Kills[i] == 4)
540 {
541 client_printcolor(0, "/y[/ctr%s/y] Zaidejas: /g%s /yPadare /ctrMINI ACE", PREFIX, get_admin_name(i))
542 client_printcolor(0, "/y[/ctr%s/y] Zaidejas: /g%s /yuz MINI ACE /ctrgauna /g%i tašku!", PREFIX, get_admin_name(i), POINTS_MINI_ACE)
543
544 if(!WarmUp && !PrepareRound)
545 {
546 // Temp
547 pTempMiniAces[i]++;
548 pTempPoints[i] += POINTS_MINI_ACE
549
550 pMiniAces[i]++;
551 pPoints[i] += POINTS_MINI_ACE
552 SavePlayer(i);
553 }
554 }
555 else if(Kills[i] == 5)
556 {
557 client_printcolor(0, "/y[/ctr%s/y] Zaidejas: /g%s /yPadare /ctrACE", PREFIX, get_admin_name(i))
558 client_printcolor(0, "/y[/ctr%s/y] Zaidejas: /g%s /yuz ACE /ctrgauna /g%i tasku!", PREFIX, get_admin_name(i), POINTS_ACE)
559
560 // Temp
561 pTempAces[i]++;
562 pTempPoints[i] += POINTS_ACE
563
564 pAces[i]++;
565 pPoints[i] += POINTS_ACE
566 SavePlayer(i);
567 }
568 }
569 }
570 if(scoreCT + scoreT == 15)
571 {
572 new temp = scoreCT
573 scoreCT = scoreT
574 scoreT = temp
575 client_printcolor(0, "/y[/ctr%s/y] Keiciamos komandos!", PREFIX)
576 changeTeams()
577 server_cmd("sv_restart 5")
578 }
579 client_printcolor(0, "/y[/ctr%s/y] [CT] /g%i /y- - - /g%i [T]", PREFIX, scoreCT, scoreT)
580 if(scoreT == 15 && scoreCT == 15) {
581 client_printcolor(0, "/y[/ctr%s/y] /gZaidimas baigtas. /yNei viena komanda nelaimejo!", PREFIX)
582 client_printcolor(0, "/y[/ctr%s/y] /gKiekvienoje komandoje esantys zaidejai uz lygiasias /ctrgauna: /g%i tasku!", PREFIX, POINTS_MIX_DRAW)
583 client_printcolor(0, "/y[/ctr%s/y] /gKiekvienoje komandoje esantys zaidejai uz tai, kad zaide „MIX“ /ctrgauna: /g%i tasku!", PREFIX, POINTS_MIX_PLAYED)
584 drawGame();
585 setEndGame()
586 }
587 else if(scoreT == 15) client_printcolor(0, "/y[/ctr%s/y] Counter-Terrorists MB", PREFIX)
588 else if(scoreCT == 15) client_printcolor(0, "/y[/ctr%s/y] Terrorists MB", PREFIX)
589 else if(scoreT == 16)
590 {
591 TeamWon(1);
592 client_printcolor(0, "/y[/ctr%s/y] /gZaidimas baigtas. Laimejo: /yTerrorists komanda!", PREFIX)
593 client_printcolor(0, "/y[/ctr%s/y] /gTerrorists komandoje esantys zaidejai uz pergale /ctrgauna: /g%i tasku!", PREFIX, POINTS_MIX_WON)
594 client_printcolor(0, "/y[/ctr%s/y] /gKiekvienoje komandoje esantys zaidejai uz tai, kad zaide „MIX“ /ctrgauna: /g%i tasku!", PREFIX, POINTS_MIX_PLAYED)
595 setEndGame()
596
597 }
598 else if(scoreCT == 16)
599 {
600 TeamWon(2);
601 client_printcolor(0, "/y[/ctr%s/y] /gzaidimas baigtas. Laimejo: /yCounter-Terrorists komanda!", PREFIX)
602 client_printcolor(0, "/y[/ctr%s/y] /gCounter-Terrorists komandoje esantys zaidejai uz pergale /ctrgauna: /g%i tasku!", PREFIX, POINTS_MIX_WON)
603 client_printcolor(0, "/y[/ctr%s/y] /gKiekvienoje komandoje esantys zaidejai uz tai, kad zaide „MIX“ /ctrgauna: /g%i tasku!", PREFIX, POINTS_MIX_PLAYED)
604 setEndGame()
605 }
606 }
607}
608public changeTeams()
609{
610 for(new i = 1; i <= 32; i++)
611 {
612 add_delay(i)
613 }
614}
615public changeTeam( id )
616{
617 if(is_user_connected(id))
618 {
619 switch( get_user_team( id ) )
620 {
621 case 2: cs_set_user_team( id, CS_TEAM_T );
622 case 1: cs_set_user_team( id, CS_TEAM_CT );
623 }
624 }
625}
626add_delay( id )
627{
628 switch( id )
629 {
630 case 1..5: set_task( 0.1, "changeTeam", id );
631 case 6..10: set_task( 0.2, "changeTeam", id );
632 case 11..15: set_task( 0.3, "changeTeam", id );
633 case 16..20: set_task( 0.4, "changeTeam", id );
634 case 21..25: set_task( 0.5, "changeTeam", id );
635 case 26..32: set_task( 0.6, "changeTeam", id );
636 }
637}
638public DeathEvent(victim, attacker, id)
639{
640 new attacker = read_data(1);
641 new victim = read_data(2);
642 new hs = read_data(3)
643
644 if(WarmUp) {
645 set_task(1.0, "RespawnPlayer", victim)
646 }
647 else if(1 <= victim <= 32 && 1 <= attacker <= 32)
648 {
649 Kills[attacker]++
650
651 if(!WarmUp && !PrepareRound)
652 {
653 pKills[attacker]++;
654 pPoints[attacker] += POINTS_KILL
655
656 client_printcolor(attacker, "/y[/ctr%s/y] Gavai /ctr%d/y tasku uz nuzudyma", PREFIX, POINTS_KILL)
657
658 // Temp
659 pTempKills[attacker]++;
660 pTempPoints[attacker] += POINTS_KILL
661
662 if(hs)
663 {
664
665 // Temp
666 pTempHeadshots[attacker]++;
667 pTempPoints[attacker] += POINTS_HS
668
669 pHeadshots[attacker]++;
670 pPoints[attacker] += POINTS_HS
671
672 }
673 // Temp
674 pTempDeaths[victim]++;
675 pTempPoints[victim] += POINTS_DEATH
676
677 client_printcolor(victim, "/y[/ctr%s/y] Praradai /ctr%d/y tasku uz mirti", PREFIX, POINTS_DEATH)
678
679 pDeaths[victim]++;
680 pPoints[victim] += POINTS_DEATH
681
682 SavePlayer(victim);
683 SavePlayer(attacker);
684
685
686
687 new weapon_name[32]
688 read_data(4, weapon_name, 31)
689
690
691 if(containi(weapon_name, "ak47") != -1) InsertWeaponKill(CSW_AK47);
692 else if(containi(weapon_name, "m4a1") != -1) InsertWeaponKill(CSW_M4A1);
693 else if(containi(weapon_name, "deagle") != -1) InsertWeaponKill(CSW_DEAGLE);
694 else if(containi(weapon_name, "awp") != -1) InsertWeaponKill(CSW_AWP);
695 else if(containi(weapon_name, "usp") != -1) InsertWeaponKill(CSW_USP);
696 else if(containi(weapon_name, "glock") != -1) InsertWeaponKill(CSW_GLOCK18);
697 else if(containi(weapon_name, "he") != -1) InsertWeaponKill(CSW_HEGRENADE);
698 else if(containi(weapon_name, "knife") != -1) InsertWeaponKill(CSW_KNIFE);
699 else if(containi(weapon_name, "scout") != -1) InsertWeaponKill(CSW_SCOUT);
700 else if(containi(weapon_name, "famas") != -1) InsertWeaponKill(CSW_FAMAS);
701
702 }
703
704 }
705}
706public RespawnPlayer(id)
707{
708 if(!is_user_alive(id) && is_user_connected(id) && 1 <= get_user_team(id) <= 2)
709 ExecuteHamB(Ham_CS_RoundRespawn, id)
710}
711public event_CurWeapon(id)
712{
713 if(KnifeRound && get_user_weapon(id) != CSW_KNIFE)
714 engclient_cmd(id, "weapon_knife")
715}
716public infoPassword(id)
717{
718 if(passwordStatus)
719 client_printcolor(id, "/y[/ctr%s/y] Serverio slaptazodis: /g%s", PREFIX, serverPassword)
720 else
721 client_printcolor(id, "/y[/ctr%s/y] Serverio slaptazodis isjungtas!", PREFIX, serverPassword)
722 return PLUGIN_HANDLED
723}
724public hookSay(id)
725{
726 if(!canChat) {
727 client_printcolor(id, "/y[/ctr%s/y] Pokalbiai siuo metu yra isjungti!", PREFIX)
728 client_printcolor(id, "/y[/ctr%s/y] Galimos komandos: /g.rez .stats .top", PREFIX)
729 return PLUGIN_HANDLED;
730 }
731 return PLUGIN_CONTINUE;
732}
733public BlockConsole(id) return PLUGIN_HANDLED
734public mainMenu(id)
735{
736 if(!isAdmin(id)) return PLUGIN_HANDLED
737 new menu = menu_create("\w[\yMIX\w] \rPagrindinis meniu", "onMainMenu")
738
739 new szMsg[64]
740
741 menu_additem(menu, "Valdymas")
742
743 format(szMsg, 63, "\wPokalbiai \d[%s\d]", canChat ? "\yijungti" : "\rIsjungti")
744 menu_additem(menu, szMsg)
745
746 if(serverPassword[0]) format(szMsg, 63, "\wSlaptazodis \d[\y%s\d]", serverPassword)
747 else format(szMsg, 63, "\wSlaptazodis \d[\rNera\d]")
748 menu_additem(menu, szMsg)
749
750 menu_additem(menu, "Ismesti zaideja")
751 menu_additem(menu, "Isbaninti zaideja")
752 menu_additem(menu, "Keisti zemelapi")
753 menu_additem(menu, "Atsijungusiu zaideju sarasas")
754
755 menu_display(id, menu, 0)
756
757 return PLUGIN_HANDLED;
758}
759public onMainMenu(id, menu, item)
760{
761 switch(item)
762 {
763 case 0: actMix(id)
764 case 1:
765 {
766 canChat = !canChat
767 mainMenu(id)
768 return PLUGIN_HANDLED
769 }
770 case 2: optionsPassword(id)
771 case 3: client_cmd(id, "amx_kickmenu")
772 case 4: client_cmd(id, "amx_banmenu")
773 case 5: client_cmd(id, "amx_mapmenu")
774 case 6: client_cmd(id, "amx_bandisconnectedmenu")
775 }
776 menu_destroy(menu)
777 return PLUGIN_HANDLED
778}
779public optionsPassword(id)
780{
781 if(!isAdmin(id)) return PLUGIN_HANDLED
782 new szText[64]
783 if(strlen(serverPassword) > 0) format(szText, 63, "\w[\y%s\w] \rSlaptazodis \d(\y%s\d)", PREFIX, serverPassword)
784 else format(szText, 63, "\w[\y%s\w] \rSlaptazodis \d(\rNera\d)", PREFIX)
785 new menu = menu_create(szText, "onOptionsPassword")
786
787 format(szText, 63, "\wSlaptazodis \d[%s\d]", passwordStatus ? "\yijungtas" : "\rIsjungtas")
788
789 menu_additem(menu, szText)
790 menu_additem(menu, "Keisti slaptazodi")
791 menu_additem(menu, "Istrinti slaptazodi")
792
793 menu_display(id, menu, 0)
794
795 return PLUGIN_HANDLED;
796}
797public onOptionsPassword(id, menu, item)
798{
799 switch(item)
800 {
801 case MENU_EXIT:
802 {
803 mainMenu(id)
804 return PLUGIN_HANDLED
805 }
806 case 0:
807 {
808 if(strlen(serverPassword) > 0) {
809 passwordStatus = !passwordStatus
810 if(passwordStatus) {
811 server_cmd("sv_password", serverPassword)
812 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Serverio slaptazodis: /g%s",PREFIX, get_admin_name(id), serverPassword)
813 }
814 else server_cmd("sv_password ^"^"")
815 }
816 else {
817 if(passwordStatus)
818 passwordStatus = false
819 client_printcolor(id, "/y[/ctr%s/y] Nenustatytas slaptazodis!", PREFIX)
820 //format(serverPassword, 63, "")
821 }
822
823 }
824 case 1: client_cmd(id, "messagemode SetPassword")
825 case 2: format(serverPassword, 63, "")
826 }
827 optionsPassword(id)
828 return PLUGIN_HANDLED
829}
830public _SetPassword(id) {
831 if(!isAdmin(id)) return
832 new szTemp[64]
833 read_args(szTemp, charsmax(szTemp))
834 remove_quotes(szTemp)
835 format(serverPassword, 63, szTemp)
836 optionsPassword(id)
837 if(passwordStatus)
838 {
839 server_cmd("sv_password %s", serverPassword)
840 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Serverio slaptazodis: /g%s",PREFIX, get_admin_name(id), szTemp)
841 }
842}
843public actMix(id)
844{
845 if(!isAdmin(id)) return PLUGIN_HANDLED
846 new menu = menu_create("\w[\yMIX\w] \rValdymas", "onactMix")
847
848 menu_additem(menu, "Pradeti zaidima")
849 menu_additem(menu, "Pasiruosti")
850 menu_additem(menu, "Apsilimas")
851 /*menu_additem(menu, "Knife")*/
852 menu_additem(menu, "Perkrauti rounda")
853 menu_additem(menu, "Uzbaigti zaidima")
854
855 menu_display(id, menu, 0)
856
857 return PLUGIN_HANDLED;
858}
859public onactMix(id, menu, item)
860{
861 switch(item)
862 {
863 case 0: setLive(id)
864 case 1: setPrepare(id)
865 case 2: warmUP(id)
866 /*case 3: setKnife(id)*/
867 case 3: restartRound(id)
868 case 4: endGame(id)
869 case 5: restartRound(id)
870 case 6: endGame(id)
871 }
872 menu_destroy(menu)
873}
874public setPrepare(id)
875{
876 if(!isAdmin(id)) return PLUGIN_HANDLED
877 if(get_playersnum() >= 1) {
878 server_cmd("sv_restart 1")
879
880 KnifeRound = false;
881 PrepareRound = true;
882 WarmUp = false;
883 scoreCT = 0;
884 scoreT = 0;
885 tempCount = 0;
886 tempCT = 0;
887 tempT = 0;
888
889 for(new i = 1; i <= 32; i++)
890 {
891 if(is_user_connected(id) && (1 <= get_user_team(i) <= 2)) {
892 if(is_user_alive(i))
893 user_silentkill(i)
894 cs_set_user_team(i, CS_TEAM_SPECTATOR)
895 }
896 }
897
898 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Pasiruosimas prasidejo! Administratorius tuoj isrinks lyderius!", PREFIX, get_admin_name(id))
899 showPrepareMenu(id)
900 }
901 else
902 client_printcolor(id, "/y[/ctr%s/y] Pasiruosimas negali buti pradetas todel kad truksta zaideju!", PREFIX)
903 return PLUGIN_HANDLED
904}
905public showPrepareMenu(id)
906{
907 if(!isAdmin(id)) return PLUGIN_HANDLED
908 new menu = menu_create("\w[\yMIX\w] \rPasirinkite kas eis i CT", "onPrepareCT")
909
910 new players[32], num
911 get_players(players, num, "ch")
912 new ui[32]
913
914 for(new i; i < num; i++)
915 {
916 format(ui, 31, "%d",get_user_userid(players[i]))
917
918
919
920 menu_additem(menu, get_admin_name(players[i]), ui)
921 }
922
923 menu_display(id, menu, 0)
924
925 return PLUGIN_HANDLED;
926}
927public onPrepareCT(id, menu, item)
928{
929 new szData[6], szName[64];
930 new _access, item_callback;
931
932 menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
933
934 new userid = str_to_num( szData );
935 new player = find_player( "k", userid );
936
937 switch(item)
938 {
939 case MENU_EXIT: {
940 if(PrepareRound) showPrepareMenu(id)
941 return PLUGIN_HANDLED;
942 }
943 default: if(PrepareRound && is_user_connected(player)) cs_set_user_team(player, CS_TEAM_CT)
944 }
945 if(PrepareRound) {
946 tempCT = player;
947 client_printcolor(0, "/y[/ctr%s/y] CT lyderis bus: /g%s", PREFIX, szName)
948 client_printcolor(0, "/y[/ctr%s/y] Administratorius tuoj isrinks T lyderi!", PREFIX)
949 showPrepareMenuT(id)
950 }
951 return PLUGIN_HANDLED;
952}
953public showPrepareMenuT(id)
954{
955 if(!isAdmin(id)) return PLUGIN_HANDLED;
956 new menu = menu_create("\w[\yMIX\w] \rPasirinkite kas eis i T", "onPrepareT");
957
958 new players[32], num;
959 get_players(players, num, "ceh", "SPECTATOR");
960 new szText[64], ui[32];
961
962 for(new i; i < num; i++)
963 {
964 format(ui, 31, "%d",get_user_userid(players[i]))
965 menu_additem(menu, get_admin_name(players[i]), ui)
966 }
967
968 menu_display(id, menu, 0)
969
970 return PLUGIN_HANDLED;
971}
972public onPrepareT(id, menu, item)
973{
974 new szData[6], szName[64];
975 new _access, item_callback;
976
977 menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
978
979 new userid = str_to_num( szData );
980 new player = find_player( "k", userid );
981
982 switch(item)
983 {
984 case MENU_EXIT: {
985 if(PrepareRound) showPrepareMenuT(id);
986 return PLUGIN_HANDLED;
987 }
988 default: if(PrepareRound && is_user_connected(player)) cs_set_user_team(player, CS_TEAM_T)
989 }
990 if(PrepareRound) {
991 tempT = player;
992 client_printcolor(0, "/y[/ctr%s/y] T lyderis bus: /g%s", PREFIX, szName)
993 client_printcolor(0, "/y[/ctr%s/y] Lyderiai pradeda rinktis zaidejus!", PREFIX)
994 client_printcolor(0, "/y[/ctr%s/y] /gDemesio: /yJeigu Lyderiams dings meniu su zaideju pasirinkimu, chate rasykite /ctr.choose", PREFIX)
995 ShowList(tempCT)
996 }
997 return PLUGIN_HANDLED;
998}
999public choosePlayers(id)
1000{
1001 /*new Where;*/
1002 switch(tempCount)
1003 {
1004 // Ter
1005 case 0,2,4,6: if(tempT == id) ShowList(id);
1006 // CT
1007 case 1,3,5,7: if(tempCT == id) ShowList(id);
1008 }
1009 return PLUGIN_HANDLED;
1010}
1011public showTeamMenu(id)
1012{
1013 new menu = menu_create("\w[\yMIX\w] \rPasirinkite komanda", "onTeamChange")
1014
1015 menu_additem(menu, "Pasilikti")
1016 menu_additem(menu, "Keistis komandomis")
1017
1018 menu_display(id, menu, 0)
1019
1020 return PLUGIN_HANDLED;
1021}
1022public onTeamChange(id, menu, item)
1023{
1024 switch(item)
1025 {
1026 case 0:
1027 {
1028 client_printcolor(0, "/y[/ctr%s/y] Sprendimas: /gPasilikti", PREFIX)
1029 setServerLive()
1030 }
1031 case 1:
1032 {
1033 client_printcolor(0, "/y[/ctr%s/y] Sprendimas: /gKeistis komandomis", PREFIX)
1034 changeTeams()
1035 set_task(2.0, "setServerLive", 1)
1036 }
1037 }
1038}
1039public ShowList(id)
1040{
1041 new menu = menu_create("\w[\yMIX\w] \rPasirinkite komandos drauga", "onShowList")
1042
1043 new players[32], num
1044 get_players(players, num, "ceh", "SPECTATOR")
1045 new ui[32]
1046
1047 for(new i; i < num; i++)
1048 {
1049 format(ui, 31, "%d",get_user_userid(players[i]))
1050 menu_additem(menu, get_admin_name(players[i]), ui)
1051 }
1052 menu_display(id, menu, 0)
1053
1054 return PLUGIN_HANDLED;
1055}
1056public onShowList(id, menu, item)
1057{
1058 new szData[6], szName[64];
1059 new _access, item_callback;
1060
1061 new Where;
1062 switch(tempCount)
1063 {
1064 case 0,2,4,6: Where = 0
1065 case 1,3,5,7: Where = 1
1066 default: Where = -1
1067 }
1068
1069 menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
1070
1071 new userid = str_to_num( szData );
1072 new player = find_player( "k", userid );
1073
1074 switch(item)
1075 {
1076 case MENU_EXIT: {
1077 if(PrepareRound) ShowList(id)
1078 return PLUGIN_HANDLED;
1079 }
1080 default: if(PrepareRound && is_user_connected(player))
1081 {
1082 if(Where == 0) cs_set_user_team(player, CS_TEAM_CT)
1083 else cs_set_user_team(player, CS_TEAM_T)
1084
1085 }
1086 }
1087 if(PrepareRound) {
1088 tempCount++;
1089 client_printcolor(0, "/y[/ctr%s/y] [/g%s /yPasirinko /g%s", PREFIX, get_admin_name(id), szName)
1090 if(tempCount < 8)
1091 ShowList(Where == 1 ? tempCT : tempT)
1092 else
1093 {
1094 /*KnifeRound = true;
1095 PrepareRound = false;
1096 WarmUp = false;
1097 scoreCT = 0;
1098 scoreT = 0;
1099
1100 server_cmd("mp_roundtime 1.8")
1101 server_cmd("mp_buytime 999")
1102 server_cmd("mp_startmoney 16000")
1103 server_cmd("mp_freezetime 7")
1104 server_cmd("sv_restart 1")
1105
1106 server_cmd("rcon amx_cvar binr_enabled 0")
1107 server_cmd("amx_cvar binr_enabled 0")
1108 server_cmd("rcon amx_cvar binr_reconnectmin 5")
1109 server_cmd("amx_cvar binr_reconnectmin 5")
1110 server_cmd("rcon amx_cvar binr_banmins 1000")
1111 server_cmd("amx_cvar binr_banmins 1000")
1112 server_cmd("rcon amx_cvar binr_immunityflags a")
1113 server_cmd("amx_cvar binr_immunityflags a")
1114
1115 client_printcolor(0, "/y[/ctr%s/y] Komandu rinkimasis baigtas! Knife round!", PREFIX)*/
1116
1117 setServerLive()
1118 }
1119 }
1120 return PLUGIN_HANDLED;
1121}
1122public restartRound(id)
1123{
1124 if(!isAdmin(id)) return PLUGIN_HANDLED
1125 server_cmd("sv_restart 1")
1126 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Perkrautas roundas!", PREFIX, get_admin_name(id))
1127 return PLUGIN_HANDLED
1128}
1129public setServerLive()
1130{
1131 KnifeRound = false;
1132 PrepareRound = false;
1133 WarmUp = false;
1134 scoreCT = 0;
1135 scoreT = 0;
1136
1137 server_cmd("mp_roundtime 1.8")
1138 server_cmd("mp_buytime 0.30")
1139 server_cmd("mp_startmoney 800")
1140 server_cmd("mp_freezetime 7")
1141 server_cmd("mp_forcecamera 1")
1142 server_cmd("mp_forcechasecam 2")
1143 server_cmd("sv_restart 1")
1144
1145 server_cmd("rcon amx_cvar binr_enabled 1")
1146 server_cmd("amx_cvar binr_enabled 1")
1147 server_cmd("rcon amx_cvar binr_reconnectmin 5")
1148 server_cmd("amx_cvar binr_reconnectmin 5")
1149 server_cmd("rcon amx_cvar binr_banmins 1000")
1150 server_cmd("amx_cvar binr_banmins 1000")
1151 server_cmd("rcon amx_cvar binr_immunityflags a")
1152 server_cmd("amx_cvar binr_immunityflags a")
1153
1154 client_printcolor(0, "/y[/ctr%s/y] Zaidimas Prasidejo! Gero zaidimo jums linki - Administracija!", PREFIX)
1155 return PLUGIN_HANDLED
1156}
1157public setLive(id)
1158{
1159 if(!isAdmin(id)) return PLUGIN_HANDLED
1160
1161 KnifeRound = false;
1162 PrepareRound = false;
1163 WarmUp = false;
1164 scoreCT = 0;
1165 scoreT = 0;
1166
1167 server_cmd("mp_roundtime 1.8")
1168 server_cmd("mp_buytime 0.30")
1169 server_cmd("mp_startmoney 800")
1170 server_cmd("mp_freezetime 7")
1171 server_cmd("mp_forcecamera 1")
1172 server_cmd("mp_forcechasecam 2")
1173 server_cmd("sv_restart 1")
1174
1175 server_cmd("rcon amx_cvar binr_enabled 1")
1176 server_cmd("amx_cvar binr_enabled 1")
1177 server_cmd("rcon amx_cvar binr_reconnectmin 5")
1178 server_cmd("amx_cvar binr_reconnectmin 5")
1179 server_cmd("rcon amx_cvar binr_banmins 1000")
1180 server_cmd("amx_cvar binr_banmins 1000")
1181 server_cmd("rcon amx_cvar binr_immunityflags a")
1182 server_cmd("amx_cvar binr_immunityflags a")
1183
1184 client_printcolor(0, "/y[/ctr%s/y] Zaidimas Prasidejo. Gero zaidimo jums linki - Administracija!", PREFIX, get_admin_name(id))
1185 return PLUGIN_HANDLED
1186}
1187public warmUP(id)
1188{
1189 if(!isAdmin(id)) return PLUGIN_HANDLED
1190
1191 passwordStatus = false;
1192 KnifeRound = false;
1193 PrepareRound = false;
1194 WarmUp = true;
1195 scoreCT = 0;
1196 scoreT = 0;
1197
1198 server_cmd("mp_roundtime 3")
1199 server_cmd("mp_buytime 999")
1200 server_cmd("mp_startmoney 16000")
1201 server_cmd("mp_freezetime 0")
1202 server_cmd("sv_password ^"^"")
1203 server_cmd("sv_restart 1")
1204
1205 server_cmd("rcon amx_cvar binr_enabled 0")
1206 server_cmd("amx_cvar binr_enabled 0")
1207 server_cmd("rcon amx_cvar binr_reconnectmin 5")
1208 server_cmd("amx_cvar binr_reconnectmin 5")
1209 server_cmd("rcon amx_cvar binr_banmins 1000")
1210 server_cmd("amx_cvar binr_banmins 1000")
1211 server_cmd("rcon amx_cvar binr_immunityflags a")
1212 server_cmd("amx_cvar binr_immunityflags a")
1213
1214 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Apsilimas Prasidejo!", PREFIX, get_admin_name(id))
1215 return PLUGIN_HANDLED
1216}
1217public setKnife(id)
1218{
1219 if(!isAdmin(id)) return PLUGIN_HANDLED
1220
1221 KnifeRound = true;
1222 PrepareRound = false;
1223 WarmUp = false;
1224 scoreCT = 0;
1225 scoreT = 0;
1226
1227 server_cmd("mp_roundtime 1.8")
1228 server_cmd("mp_buytime 0.30")
1229 server_cmd("mp_startmoney 800")
1230 server_cmd("mp_freezetime 7")
1231 server_cmd("mp_forcecamera 1")
1232 server_cmd("mp_forcechasecam 2")
1233 server_cmd("sv_restart 1")
1234
1235 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Prasidejo peiliu roundas! Sekmes!", PREFIX, get_admin_name(id))
1236 return PLUGIN_HANDLED
1237}
1238public drawGame()
1239{
1240 for(new i = 1; i <= 32; i++)
1241 {
1242 if(is_user_connected(i) && (1 <= get_user_team(i) <= 2))
1243 {
1244 pMixPlayed[i]++;
1245 pPoints[i] += POINTS_MIX_PLAYED
1246 pMixDraw[i]++;
1247 pPoints[i] += POINTS_MIX_DRAW
1248 SavePlayer(i);
1249 }
1250 }
1251}
1252public TeamWon(team)
1253{
1254 for(new i = 1; i <= 32; i++)
1255 {
1256 if(is_user_connected(i) && (1 <= get_user_team(i) <= 2))
1257 {
1258 pMixPlayed[i]++;
1259 pPoints[i] += POINTS_MIX_PLAYED
1260
1261 if(get_user_team(i) == team)
1262 {
1263 pMixWon[i]++;
1264 pPoints[i] += POINTS_MIX_WON
1265 }
1266 else
1267 {
1268 pMixLost[i]++;
1269 pPoints[i] += POINTS_MIX_LOST
1270 }
1271 SavePlayer(i);
1272 }
1273 }
1274}
1275public setEndGame()
1276{
1277 InsertGame();
1278
1279 showMVP();
1280
1281 passwordStatus = false;
1282 KnifeRound = false;
1283 PrepareRound = false;
1284 WarmUp = true;
1285 canChat = true;
1286 scoreCT = 0;
1287 scoreT = 0;
1288
1289 server_cmd("mp_roundtime 3")
1290 server_cmd("mp_startmoney 16000")
1291 server_cmd("mp_buytime 999")
1292 server_cmd("mp_freezetime 0")
1293 server_cmd("sv_password ^"^"")
1294 server_cmd("sv_restart 1")
1295
1296 server_cmd("rcon amx_cvar binr_enabled 0")
1297 server_cmd("amx_cvar binr_enabled 0")
1298 server_cmd("rcon amx_cvar binr_reconnectmin 5")
1299 server_cmd("amx_cvar binr_reconnectmin 5")
1300 server_cmd("rcon amx_cvar binr_banmins 1000")
1301 server_cmd("amx_cvar binr_banmins 1000")
1302 server_cmd("rcon amx_cvar binr_immunityflags a")
1303 server_cmd("amx_cvar binr_immunityflags a")
1304
1305 client_printcolor(0, "/y[/ctr%s/y] Ijungtas apsilimas! Laukite zemelapio keitimo!", PREFIX)
1306 return PLUGIN_HANDLED
1307}
1308
1309
1310
1311
1312public showMVP()
1313{
1314 new motdWindow[2000];
1315
1316 formatex(motdWindow, 2000, "<body style='background-color:black;color:white'><table width='100%%'><tr><td>#</td><td>Name</td><td>Points</td></tr>");
1317 new numPlayers, players[33];
1318
1319 for(new i = 1; i <= 32; i++)
1320 {
1321 if(!is_user_connected(i)) continue;
1322 players[numPlayers] = i;
1323 numPlayers++;
1324 }
1325
1326 for(new i = 0; i < numPlayers; i++)
1327 {
1328 for(new j = 0; j <= numPlayers; j++)
1329 {
1330 if(i == j) continue;
1331 if(pTempPoints[players[i]] > pTempPoints[players[j]])
1332 {
1333 new temp = players[i]
1334 players[i] = players[j];
1335 players[j] = temp;
1336 }
1337 }
1338 }
1339
1340 new name[35];
1341 for(new i = 0; i < numPlayers; i++)
1342 {
1343 get_user_name(players[i], name, 34)
1344 formatex(motdWindow, 2000, "%s<tr><td>%d</td><td>%s</td><td>%d</td></tr>", motdWindow, i+1, name, pTempPoints[players[i]]);
1345 }
1346 formatex(motdWindow, 2000, "%s</table></body>", motdWindow);
1347
1348 show_motd(0, motdWindow, "MVP Lentele");
1349}
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361public endGame(id)
1362{
1363 if(!isAdmin(id)) return PLUGIN_HANDLED
1364
1365 passwordStatus = false;
1366 KnifeRound = false;
1367 PrepareRound = false;
1368 WarmUp = true;
1369 canChat = true;
1370 scoreCT = 0;
1371 scoreT = 0;
1372
1373 server_cmd("mp_roundtime 600")
1374 server_cmd("mp_startmoney 16000")
1375 server_cmd("mp_buytime 999")
1376 server_cmd("mp_freezetime 0")
1377 server_cmd("sv_password ^"^"")
1378 server_cmd("sv_restart 1")
1379
1380 server_cmd("rcon amx_cvar binr_enabled 0")
1381 server_cmd("amx_cvar binr_enabled 0")
1382 server_cmd("rcon amx_cvar binr_reconnectmin 5")
1383 server_cmd("amx_cvar binr_reconnectmin 5")
1384 server_cmd("rcon amx_cvar binr_banmins 1000")
1385 server_cmd("amx_cvar binr_banmins 1000")
1386 server_cmd("rcon amx_cvar binr_immunityflags a")
1387 server_cmd("amx_cvar binr_immunityflags a")
1388
1389 client_printcolor(0, "/y[/ctr%s/y] [/g%s/y] Zaidimas baigtas! Ijungtas apsilimas!", PREFIX, get_admin_name(id))
1390 return PLUGIN_HANDLED
1391}
1392public getScore(id) {
1393 if(WarmUp || KnifeRound || PrepareRound)
1394 client_printcolor(id, "/y[/ctr%s/y] Zaidimas siuo metu nevyksta!", PREFIX)
1395 else client_printcolor(id, "/y[/ctr%s/y] [CT] /g%i /y- - - /g%i /y[T] ", PREFIX, scoreCT, scoreT)
1396 return PLUGIN_HANDLED
1397}
1398stock get_admin_name(id)
1399{
1400 new name[64]
1401 get_user_name(id, name, 63)
1402 return name
1403}
1404stock client_printcolor(const id, const input[], any:...)
1405{
1406 new count = 1, players[32];
1407 static msg[191];
1408 vformat(msg,190,input,3);
1409 replace_all(msg,190,"/g","^4");// green txt
1410 replace_all(msg,190,"/y","^1");// orange txt
1411 replace_all(msg,190,"/ctr","^3");// team txt
1412 replace_all(msg,190,"/w","^0");// team txt
1413 if (id) players[0] = id; else get_players(players,count,"ch");
1414 for (new i=0;i<count;i++)
1415 if (is_user_connected(players[i]))
1416 {
1417 message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
1418 write_byte(players[i]);
1419 write_string(msg);
1420 message_end();
1421 }
1422}
1423GetSecureName(const name[])
1424{
1425 static secureName[64];
1426 copy(secureName, charsmax(secureName), name);
1427
1428 replace_all(secureName, charsmax(secureName), "\", "\\");
1429 replace_all(secureName, charsmax(secureName), "'", "\'");
1430 replace_all(secureName, charsmax(secureName), "`", "\`");
1431
1432 return secureName;
1433}