· 6 years ago · Jan 21, 2020, 09:50 AM
1//color constants
2const error = "[#ae230b]";
3const a_priv = "[#f1b508]";
4const a_msg = "[#01c01c]";
5
6const irc_main = "10";
7const irc_minor = "2";
8const irc_admin = "4";
9
10//Replay & Votebase
11replayBase <- false;
12base2 <- 13;
13voting <- true;
14autostart <- true;
15started <- false;
16game_started <- false;
17markers_created <- false;
18rbases <- [0, 0, 0, 0]; // 4 RANDOM BASES
19votes <- [0, 0, 0, 0]; // VOTES
20
21
22
23//VoteCheckTimer <- NewTimer("VotingBegin", 5000, 0);
24
25// TOTAL BASES
26TotalBases <- 0;
27
28Blue_SpawnLocations <- [
29Vector(-1186.15, 106.956, 11.1279),
30Vector(-1181.76, 83.6181, 11.1281),
31Vector(-1177.69, 65.2908, 11.1277),
32Vector(-1140.56, 63.8885, 11.1277)
33];
34
35
36Yellow_SpawnLocations <- [
37Vector(-1168.43, -630.107, 11.8277),
38Vector(-1166.78, -614.027, 11.8292),
39Vector(-1164.99, -604.497, 11.6415),
40Vector(-1189.23, -583.395, 11.4914)
41];
42
43Lobby_SpawnLocations <- [
44Vector(-128.801, 1563.09, 47.6813)
45];
46
47class BaseClass
48{
49 Name = null;
50 BlueSpawn = null;
51 BlueBarrel = null;
52 Briefcase = null;
53 YellowSpawn = null;
54 YellowBarrel = null;
55}
56class BluSpawn
57{
58 x = null;
59 y = null;
60 z = null;
61 bx = null;
62 by = null;
63 bz = null;
64}
65
66class YelSpawn
67{
68 x = null;
69 y = null;
70 z = null;
71 bx = null;
72 by = null;
73 bz = null;
74}
75
76class BriefcasePosition
77{
78 x = null;
79 y = null;
80 z = null;
81}
82
83class PlayerStats
84{
85isRegistered = false;
86isLogged = false;
87IP = 0;
88UID = 0;
89UID2 = 0;
90Kills = 0;
91Deaths = 0;
92Joins = 0
93Spree = 0;
94TopSpree = 0;
95Level = 0;
96Lastplay = 0;
97Playtime = 0;
98Team = null;
99Jointime = 0;
100inGame = false;
101TopScore = 0;
102inPack = false;
103Pack = 0;
104lastPack = 0;
105Packs = 0;
106Briefstatus = 0;
107PlayerCPos = null;
108BriefCaptured = false;
109BriefDropped = 0;
110BriefCTime = 0;
111RPGBanTime = 0;
112RPGBanExpire = 0;
113isMuted = false;
114ChatTime = 0;
115ChatSpam = 0;
116MuteTime = 0;
117PreviousWep = null;
118inTeam = false;
119Current = null;
120
121//VOTING
122hasVoted = false;
123Vote = false;
124}
125
126function onScriptLoad()
127{
128print( "Loading script - Grab the Briefcase by [VU]Mashreq (Initiliazed 1-06-2019)" );
129SetServerName( "[0.4] Grab The Briefcase (gtb.pl-community.com) (BETA)" );
130SetGameModeName( "GTB v1.0" );
131SetWeaponDataValue( 32, 1, 3);
132SetWeaponDataValue( 26, 1, 3);
133SetWeaponDataValue( 27, 1, 3);
134SetWeaponDataValue( 21, 1, 3);
135SetWeaponDataValue( 20, 1, 3);
136SetWeaponDataValue( 19, 1, 3);
137SetWeaponDataValue( 22, 1, 3);
138SetWeaponDataValue( 23, 1, 3);
139SetWeaponDataValue( 24, 1, 3);
140SetWeaponDataValue( 25, 1, 3);
141print("Disabled Weapon Punch | By Mursaleen");
142SetPassword("hellofriendschaipelo");
143Yellow_score <- 0;
144Yellow_total <- 0;
145Blue_score <- 0;
146Blue_total <- 0;
147GameActive <- false;
148Startwar <- false;
149Game_time <- (6* 60);
150Game_min <- 7;
151cd_tick <- 0;
152Top_Score <- null;
153Pinfo <- array(GetMaxPlayers(), null);
154briefcount <- 0;
155brief_respawn <- false;
156brief_capturing <- null;
157BlSpawn <- BluSpawn();
158YeSpawn <- YelSpawn();
159BriefPos <- BriefcasePosition();
160
161sq_DB <- ConnectSQL( "Database.db" );
162if (sq_DB) print( "Successfully connected to the SQL database." );
163QuerySQL( sq_DB, "CREATE TABLE IF NOT EXISTS Accounts( Name VARCHAR(32), IP TEXT, Password VARCHAR(64), UID VARCHAR(40), UID2 VARCHAR(40), Kills INT, Deaths INT, Spree INT, Joins INT, Lastplay INT, Playtime INT, BriefCaptured INT, TopSpree INT )" );
164QuerySQL( sq_DB, "CREATE TABLE IF NOT EXISTS Vehicles( ID INTEGER, Model INT, PosX FLOAT, PosY FLOAT, PosZ FLOAT, Angle FLOAT, Col1 INT, Col2 INT )" );
165QuerySQL( sq_DB, "CREATE TABLE IF NOT EXISTS Commandranks( Command TEXT, Rank TEXT )" );
166QuerySQL( sq_DB, "CREATE TABLE IF NOT EXISTS Aliases( Name TEXT, IP TEXT, UID VARCHAR(40), RPG INT )" );
167QuerySQL( sq_DB, "CREATE TABLE IF NOT EXISTS Bans( Name TEXT, UID VARCHAR(40), Time INT, Expires INT, Admin VARCHAR(32), Reason TEXT )" );
168// Load skins
169
170//Yellow skins
171AddClass( 1, RGB( 255, 255, 0 ), 201, Vector( -873.788, 692.777, 12.606 ), 7.5261, 0, 0, 0, 0, 0, 0 );
172//Blue skins
173AddClass( 2, RGB( 0, 123, 255 ), 200, Vector( -873.788, 692.777, 12.606 ), 7.5261, 0, 0, 0, 0, 0, 0 );
174
175AddClass( 3, RGB( 255, 255, 255 ), 130, Vector( 0, 0, 0 ), 0, 0, 0 ,0, 0, 0, 0 );
176
177Game_timer <- NewTimer( "GameUpdate", 1000, 0 );
178GetTotalBases();
179//Loadbarriers();
180//LoadLobbyObjects();
181
182
183Vehicles_ <- array(1000, null);
184LoadVehicles();
185Bases <- array(30, null);
186LoadBases();
187g_admincmd <-
188{
189};
190
191LoadAdminCommands();
192SetShowOnlyTeamMarkers( true );
193dofile( "IRC.nut");
194StartIRC();
195dofile( "bot.nut",true);
196
197SetSpawnPlayerPos(Vector(-877.264, 706.175, 11.3961));
198SetSpawnCameraPos(Vector(-877.029, 697.552, 12.6054));
199SetSpawnCameraLook(Vector(-877.264, 706.175, 11.3961));
200seterrorhandler( errorHandling );
201Uptime_time <- time();
202SetJoinMessages(false);
203SetDeathMessages( false );
204TeamBalancer <- true;
205SetDrivebyEnabled( false );
206}
207
208function GetLevelFromArray( cmd )
209{
210local output;
211foreach( data in g_admincmd[cmd] )
212{
213if ( data && data.Rank ) output = data.Rank;
214}
215return output;
216}
217
218function onScriptUnload()
219{
220::myDiscord.sendMessage("659726989623558183","**Server is Offline now !**" ) ;
221DisconnectSQL( sq_DB );
222StopIRC();
223}
224
225function onPlayerJoin( player )
226{
227player.PlaySound( 50006 );
228local country = geoip_country_name_by_addr(player.IP), code = geoip_country_code_by_addr(player.IP);
229if ( country == null )
230{
231Message( "[#b0b0b0]** " + player.Name + " has connected from [#FFFFFF]Unknown." );
232::myDiscord.sendMessage("659726989623558183","**" + player + "** has connected to the server from **Unknown**!" );
233}
234else
235{
236Message( "[#b0b0b0]** " + player.Name + " has connected from [#FFFFFF]" + country + ", " + code + "." );
237::myDiscord.sendMessage("659726989623558183","**"+player+"** has connected to the server from **" + country + ", " + code + "**!" );
238}
239
240
241Pinfo[player.ID] = PlayerStats();
242local p = Pinfo[ player.ID ];
243MessagePlayer( "[#ffffff]** Welcome to [#ffff00]Grab the Briefcase server.", player );
244MessagePlayer( "[#ffffff]** Visit us at gtb.pl-community.com", player );
245local query = QuerySQL( sq_DB, "SELECT * FROM Accounts WHERE Lower(Name)='" + escapeSQLString( player.Name.tolower() ) + "'" );
246if ( GetSQLColumnData( query, 0 ) )
247{
248Pinfo[ player.ID ].isRegistered = true;
249if ( GetSQLColumnData( query, 3 ) == player.UID )
250{
251p.isLogged = true;
252p.IP = GetSQLColumnData( query, 1 );
253p.UID = GetSQLColumnData( query, 3 );
254p.UID2 = GetSQLColumnData( query, 4 );
255p.Kills = GetSQLColumnData( query, 5 ).tointeger();
256p.Deaths = GetSQLColumnData( query, 6 ).tointeger();
257p.Joins = GetSQLColumnData( query, 8 ).tointeger();
258p.Lastplay = GetSQLColumnData( query, 9 ).tointeger();
259p.Playtime = GetSQLColumnData( query, 10 ).tointeger();
260p.Level = GetSQLColumnData( query, 11 ).tointeger();
261p.BriefDropped = GetSQLColumnData( query, 12 ).tointeger();
262p.TopSpree = GetSQLColumnData( query, 7 ).tointeger();
263p.Joins++;
264p.Jointime = time();
265MessagePlayer("[#ffffff]** Welcome back, you have been successfully [#ffff00]logged-in [#ffffff]to the server as [#ffff00]" + GetLevelTags( p.Level ) + "!", player );
266}
267else
268{
269Pinfo[ player.ID ].Jointime = time();
270MessagePlayer("[#ffffff]** Welcome back, please use [#ff0000]/login [#ffffff]to log-in to your exisiting account!", player );
271}
272}
273else
274{
275p.Jointime = time();
276p.isRegistered = false;
277p.Joins++;
278MessagePlayer("[#ffffff]** Your account seems not to be registered, please use[#ff0000]/register <password>", player );
279}
280FreeSQLQuery( query );
281
282if ( GameActive && Startwar )
283{
284MessagePlayer("[#ffffff]** You can change your pack by using [#ff0000]/changepack [#ffffff]command", player );
285p.inGame = true;
286}
287
288PlayerAlias( player );
289CheckBan( player );
290//MessagePlayer( "[#ff0000]** Welcome to the first beta session, if any bugs/error found please report them as soon as possible!", player );
291}
292
293function onPlayerCommand( player, cmd, text )
294{
295cmd = cmd.tolower();
296local cmd_found = false;
297local p = Pinfo[ player.ID ];
298if ( cmd == "register" )
299{
300cmd_found = true;
301if ( p.isRegistered == true ) MessagePlayer( error + "** Error - You are already registered!", player );
302else if ( !text ) MessagePlayer( error + "** Syntax - /register <password>", player );
303else if ( text.len() <= 5 ) MessagePlayer( error + "** Error - The password length should be more than 5 character", player );
304else
305{
306p.isRegistered = true;
307p.isLogged = true;
308p.UID = player.UID;
309p.UID2 = player.UID2;
310p.IP = player.IP;
311p.Level = 1;
312QuerySQL( sq_DB, "INSERT INTO Accounts ( Name, IP, Password, UID, UID2, Kills, Deaths, Spree, Joins, Lastplay, Playtime, Level, BriefDropped ) VALUES ( '" + player.Name + "', '" + player.IP + "', '" + SHA256( text ) + "', '" + player.UID + "', '" + player.UID2 + "', 0, 0, 0, 0, 0, 0, 1, 0 )" );
313MessagePlayer("[#ffffff]** You have successfully registered, [#ffff00]Password: " + text, player );
314MessagePlayer("[#ffffff]** Please use [#ffff00]/help [#ffffff]for the help and [#ffff00]/cmds [#ffffff]to view the list of available commands", player );
315}
316}
317
318else if ( cmd == "ohreact" )
319{
320cmd_found = true;
321
322for( local i = 0; i <= GetMaxPlayers(); i++ )
323{
324local plr = FindPlayer( i );
325if ( plr && plr.IsSpawned ) plr.PlaySound( 50007 );
326}
327Message("[#22c842]"+player.Name+": Oooooooooooooooooooohhhhhhhhhhhhhhhhhh");
328}
329
330else if ( cmd == "suprise" )
331{
332cmd_found = true;
333for( local i = 0; i <= GetMaxPlayers(); i++ )
334{
335local plr = FindPlayer( i );
336if ( plr && plr.IsSpawned ) plr.PlaySound( 50008 );
337}
338Message("[#22c842]"+player.Name+": Suprise MotherFucker!");
339}
340
341else if ( cmd == "ezpz" )
342{
343cmd_found = true;
344for( local i = 0; i <= GetMaxPlayers(); i++ )
345{
346local plr = FindPlayer( i );
347if ( plr && plr.IsSpawned ) plr.PlaySound( 50015 );
348}
349Message("[#22c842]"+player.Name+": Easy peacy Lemon Squezy!");
350}
351
352else if ( cmd == "login" )
353{
354cmd_found = true;
355if ( p.isRegistered == false ) MessagePlayer( error + "** Error - You are not registered!", player );
356else if ( p.isLogged == true ) MessagePlayer( error + "** Error - You are already logged-in!", player );
357else if ( !text ) MessagePlayer( error + "** Syntax - /login <password>", player );
358else
359{
360local query = QuerySQL( sq_DB, "SELECT * FROM Accounts WHERE Lower(Name)='" + escapeSQLString( player.Name.tolower() ) + "'" );
361if ( GetSQLColumnData( query, 0 ) )
362{
363if ( SHA256(text) == GetSQLColumnData( query, 2 ) )
364{
365p.isLogged = true;
366p.IP = player.IP;
367p.UID = player.UID;
368p.UID2 = player.UID2;
369p.Kills = GetSQLColumnData( query, 5 ).tointeger();
370p.Deaths = GetSQLColumnData( query, 6 ).tointeger();
371p.Joins = GetSQLColumnData( query, 8 ).tointeger();
372p.Lastplay = GetSQLColumnData( query, 9 ).tointeger();
373p.Playtime = GetSQLColumnData( query, 10 ).tointeger();
374p.Level = GetSQLColumnData( query, 11 ).tointeger();
375p.BriefDropped = GetSQLColumnData( query, 12 ).tointeger();
376p.TopSpree = GetSQLColumnData( query, 7 ).tointeger();
377p.Joins++;
378MessagePlayer("[#ffffff]** You have successfully [#ffff00]logged-in [#ffffff]to your account as [#ffff00]" + GetLevelTags( p.Level ) + "!", player );
379}
380else MessagePlayer( error + "** Error - Wrong password!", player );
381}
382else MessagePlayer( error + "** Error - You are not registered!", player );
383FreeSQLQuery( query );
384}
385}
386
387else if ( cmd == "logout" )
388{
389cmd_found = true;
390if ( p.isRegistered == false ) MessagePlayer( error + "** Error - You are not registered!", player );
391else if ( p.isLogged == false ) MessagePlayer( error + "** Error - You are already logged-out!", player );
392else if ( !text ) MessagePlayer( error + "** Syntax - /logout <password>", player );
393else
394{
395local query = QuerySQL( sq_DB, "SELECT Password FROM Accounts WHERE Lower(Name)='" + escapeSQLString( player.Name.tolower() ) + "'" );
396if ( GetSQLColumnData( query, 0 ) )
397{
398if ( SHA256(text) == GetSQLColumnData( query, 0 ) )
399{
400p.isLogged = false;
401p.Kills = 0;
402p.Deaths = 0;
403p.Spree = 0;
404p.Joins = 0;
405p.Lastplay = 0;
406p.Playtime = 0;
407p.UID = 0;
408player.Pos = player.Pos;
409player.Health = 0;
410p.TopSpree = 0;
411MessagePlayer("[#ffffff]** You have successfully [#ffff00]logged-out [#ffffff]from your account", player );
412QuerySQL( sq_DB, "UPDATE Accounts SET UID='0' WHERE Lower(Name)='" + escapeSQLString( player.Name.tolower() ) + "'" );
413}
414else MessagePlayer( error + "** Error - Wrong password!", player );
415}
416else MessagePlayer( error + "** Error - You are not registered!", player );
417FreeSQLQuery( query );
418}
419}
420
421else if ( cmd == "forum" || cmd == "forums" )
422{
423cmd_found = true;
424MessagePlayer( "[#ffffff]** Visit us at gtb.pl-community.com", player );
425}
426
427else if ( cmd == "myspree" || cmd == "mytopspree" )
428{
429cmd_found = true;
430MessagePlayer( "[#ffffff]** Your Current Spree: [#ffff00]" + p.Spree + ", [#ffffff]Top Spree: [#ffff00]" + p.TopSpree, player );
431}
432
433else if ( cmd == "stats" )
434{
435cmd_found = true;
436if ( p.isRegistered == false ) MessagePlayer( error + "** Error - You are not registered!", player );
437else if ( p.isRegistered == true && p.isLogged == false ) MessagePlayer( error + "** Error - You are not logged-in!", player );
438else if ( !text )
439{
440local ratio = format( "%.2f", p.Kills.tofloat() / p.Deaths.tofloat() );
441if ( p.Kills == 0 || p.Deaths == 0 ) ratio = 0;
442p.Playtime = p.Playtime + ( time() - p.Jointime );
443MessagePlayer( "[#ffffff]** Your stats - [#ffff00]Kills: [#ffffff]" + p.Kills + ", [#ffff00]Deaths: [#ffffff]" + p.Deaths + ", [#ffff00]K/D Ratio: [#ffffff]" + ratio + ", [#ffff00]Joins: [#ffffff]" + p.Joins + ", [#ffff00]Top Spree: [#ffffff]" + p.TopSpree + ", [#ffff00]Briefcase Dropped: [#ffffff]" + p.BriefDropped + ", [#ffff00]Playtime: [#ffffff]" + GetTimeFormat( p.Playtime ), player );
444}
445else
446{
447if ( GetPlayer( text ) )
448{
449local plr = GetPlayer( text );
450local pplr = Pinfo[ plr.ID ];
451local ratio = format( "%.2f", pplr.Kills.tofloat() / pplr.Deaths.tofloat() );
452if ( p.Kills == 0 || p.Deaths == 0 ) ratio = 0;
453p.Playtime = p.Playtime + ( time() - p.Jointime );
454MessagePlayer( "[#ffffff]** " + GetTeamColor( plr ) + plr + " [#ffffff]stats - [#ffff00]Kills: [#ffffff]" + pplr.Kills + ", [#ffff00]Deaths: [#ffffff]" + pplr.Deaths + ", [#ffff00]K/D Ratio: [#ffffff]" + ratio + ", [#ffff00]Joins: [#ffffff]" + pplr.Joins + ", [#ffff00]Top Spree: [#ffffff]" + pplr.TopSpree + ", [#ffff00]Briefcase Dropped: [#ffffff]" + pplr.BriefDropped + ", [#ffff00]Playtime: [#ffffff]" + GetTimeFormat( pplr.Playtime ), player );
455}
456else MessagePlayer( error + "** Error - Invalid player!", player );
457}
458}
459
460else if ( cmd == "changepass" )
461{
462cmd_found = true;
463if ( p.isRegistered == false ) MessagePlayer( error + "** Error - You are not registered!", player );
464else if ( p.isLogged == false ) MessagePlayer( error + "** Error - You need to be logged-in!", player );
465else if ( !text ) MessagePlayer( error + "** Syntax - /changepass <old password> <new password>", player );
466else
467{
468local args = split( text, " " );
469if ( args.len() <= 1 ) MessagePlayer( error + "** Syntax - /changepass <old password> <new password>", player );
470else
471{
472local query = QuerySQL( sq_DB, "SELECT Password FROM Accounts WHERE Lower(Name)='" + escapeSQLString( player.Name.tolower() ) + "'" );
473if ( GetSQLColumnData( query, 0 ) )
474{
475if ( SHA256(args[0]) != GetSQLColumnData( query, 0 ) ) MessagePlayer( error + "** Error - Wrong password!", player );
476else if ( args[1].len() <= 5 ) MessagePlayer( error + "** Error - The length of new password should be more than 5 characters!", player );
477else
478{
479QuerySQL( sq_DB,"UPDATE Accounts SET Password='" + escapeSQLString( SHA256(args[1]) ) + "' WHERE Lower (Name)='" + escapeSQLString( player.Name.tolower() ) + "'");
480MessagePlayer("[#ffffff]** You have successfully changed your password to [#ffff00]" + args[1], player );
481}
482}
483else MessagePlayer( error + "** Error - You are not registered!", player );
484FreeSQLQuery( query );
485}
486}
487}
488else if ( cmd == "players" || cmd == "teamcount" )
489{
490cmd_found = true;
491MessagePlayer( "[#ffff00]** Yellow (" + Yellow_total + ") - " + Teamlist( "Yellow" ), player );
492MessagePlayer( "[#007bff]** Blue (" + Blue_total + ") - " + Teamlist( "Blue" ), player );
493}
494
495else if ( cmd == "timeleft" || cmd == "time" )
496{
497cmd_found = true;
498if ( Startwar == false ) MessagePlayer( error + "** Error - The game has not started yet", player );
499else MessagePlayer("[#b0b0b0]** Time left: [#ffffff]" + ConvertSecondsToMS( Game_time ), player );
500}
501
502else if ( cmd == "uptime" || cmd == "host" )
503{
504cmd_found = true;
505MessagePlayer("[#b0b0b0]** The server has been online for [#ffffff]" + GetTimeFormat( time() - Uptime_time ), player );
506}
507
508else if ( cmd == "whobrief" || cmd == "brief" )
509{
510cmd_found = true;
511if ( Startwar == false ) MessagePlayer( error + "** Error - The game has not started yet", player );
512else
513{
514local brief = brief_capturing;
515if ( brief == null ) MessagePlayer(error +"** Error - The briefcase is not captured!", player );
516else
517{
518local p = Pinfo[ FindPlayer(brief_capturing).ID ];
519if ( p.BriefCaptured ) MessagePlayer("[#b0b0b0]** The briefcase is currently with " + GetTeamColor( FindPlayer(brief_capturing) ) + brief_capturing, player );
520else MessagePlayer(error +"** Error - The briefcase is not captured!", player );
521}
522}
523}
524
525else if ( cmd == "teamscore" || cmd == "score" )
526{
527cmd_found = true;
528if ( Startwar == false ) MessagePlayer( error + "** Error - The game has not started yet", player );
529else MessagePlayer("[#b0b0b0]** Teamscore: [#ffff00]Yellow - " + Yellow_score + "[#ffffff] [#007bff]Blue - " + Blue_score, player );
530}
531
532else if ( cmd == "ping" )
533{
534cmd_found = true;
535if ( !text ) MessagePlayer("[#b0b0b0]** Your ping: [#ffffff]" + player.Ping + "ms", player );
536else
537{
538if ( GetPlayer( text ) )
539{
540local plr = GetPlayer( text );
541MessagePlayer("[#b0b0b0]** " + GetTeamColor( plr ) + plr.Name + "'s [#b0b0b0]ping: [#ffffff]" + plr.Ping + "ms", player );
542}
543else MessagePlayer( error + "** Error - Invalid player!", player );
544}
545}
546
547else if ( cmd == "fps" )
548{
549cmd_found = true;
550if ( !text ) MessagePlayer("[#b0b0b0]** Your FPS: [#ffffff]" + player.FPS, player );
551else
552{
553if ( GetPlayer( text ) )
554{
555local plr = GetPlayer( text );
556MessagePlayer("[#b0b0b0]** " + GetTeamColor( plr ) + plr.Name + "'s [#b0b0b0]FPS: [#ffffff]" + plr.FPS, player );
557}
558else MessagePlayer( error + "** Error - Invalid player!", player );
559}
560}
561
562else if ( cmd == "health" || cmd == "hp" )
563{
564cmd_found = true;
565if ( !text ) MessagePlayer("[#b0b0b0]** Your Health: [#ffffff]" + player.Health + "%", player );
566else
567{
568if ( GetPlayer( text ) )
569{
570local plr = GetPlayer( text );
571MessagePlayer("[#b0b0b0]** " + GetTeamColor( plr ) + plr.Name + "'s [#b0b0b0]Health: [#ffffff]" + plr.Health + "%", player );
572}
573else MessagePlayer( error + "** Error - Invalid player!", player );
574}
575}
576
577else if ( cmd == "commands" || cmd == "cmds" || cmd == "command" || cmd == "cmd" )
578{
579cmd_found = true;
580MessagePlayer("[#b0b0b0]** /register, /login, /logout, /changepass, /stats, /report, /forum, /uptime, /rules, /myspree, /mytopspree, /spree, /admins, /credits, /hp, /ping, /fps, /score, /timeleft, /players, /pack, /changepack, /packlist, /wep, /brief, /topkillers, /topspree, /topratio, /topbriefdroppers", player );
581}
582
583else if ( cmd == "rules" )
584{
585cmd_found = true;
586MessagePlayer("[#FF0000]** No spamming/flooding, cheating, hacking, illegeal use of hacks, mods, game modification!", player );
587MessagePlayer("[#FF0000]** No camping/spawn killing, advertising, pausing at the briefcase, grenade glithces!", player );
588MessagePlayer("[#FF0000]** No advertising, teaming up with other teams, parking of vehicles at the briefcase!", player );
589MessagePlayer("[#FF0000]** No team killing/griefing, stats padding, RPG glitching (range allowed is 20m)!", player );
590}
591
592else if ( cmd == "help" )
593{
594cmd_found = true;
595MessagePlayer("[#b0b0b0]** Grab the [#ffffff]Briefcase, [#b0b0b0]in this gamemode the main element is the [#ffffff]briefcase [#b0b0b0]which is created at the center of the both the teams (you can see in the blip - the icon), your task is to capture the [#ffffff]briefcase [#b0b0b0]and drop it to your team barrel (you have only 50secs to drop!), this would give your team extra point, there is point for special kills, spree and so on", player );
596MessagePlayer("[#b0b0b0]** For a list of commands, please checkout [#ffffff]/commands!", player );
597}
598
599else if ( cmd == "pack" )
600{
601cmd_found = true;
602if ( GameActive == false ) MessagePlayer( error + "** Error - The game has not started yet", player );
603else if ( p.inPack == false ) MessagePlayer( error + "** Error - This is not the time to choose the pack", player );
604else if ( p.inPack == false && Startwar == true ) MessagePlayer( error + "** Error - You can use /changepack to change your pack", player );
605else if ( !text ) MessagePlayer( error + "** Syntax - /pack <pack id> view /packlist to see the list of packs", player );
606else if ( !IsNum( text ) ) MessagePlayer( error + "** Error - Pack should be between 0-7", player );
607else if ( text.tointeger() < 0 || text.tointeger() > 7 ) MessagePlayer( error + "** Error - Pack should be between 0-7", player );
608else if ( text.tointeger() == p.lastPack ) MessagePlayer( error + "** Error - You are already having this pack", player );
609else
610{
611if ( text.tointeger() == 6 && p.RPGBanExpire != 0 && p.RPGBanExpire != 0 )
612{
613if( ( time() - p.RPGBanTime.tointeger() ) <= p.RPGBanExpire.tointeger() )
614{
615local expire = ( time() - p.RPGBanTime.tointeger() ); MessagePlayer( error + "** Error - You are banned from using Rocket Launcher for " + GetTimeFormat( ( p.RPGBanExpire.tointeger() - expire.tointeger() ) ) + "!", player );
616}
617else { p.RPGBanTime = 0; p.RPGBanExpire = 0; QuerySQL( sq_DB,"UPDATE Aliases SET RPG='0' WHERE UID='" + escapeSQLString( player.UID ) + "'"); Pack( player, text.tointeger() ); return; }
618}
619else if ((base2 == 2) || (base2 == 15))
620{
621 MessagePlayer(error + "** Error - Pack disallowed in this base.")
622}
623else Pack( player, text.tointeger() );
624}
625}
626
627else if ( cmd == "changepack" )
628{
629cmd_found = true;
630if ( Startwar == false ) MessagePlayer( error + "** Error - The game has not started yet", player);
631else if ( p.inPack == true ) MessagePlayer( error + "** Error - You cannot use this command when you are in pack, please use /pack", player );
632else if ( p.BriefCaptured == true ) MessagePlayer( error + "** Error - You cannot use this command when you are having a briefcase!", player );
633else if ( p.Packs == 2 ) MessagePlayer( error + "** Error - You cannot change your pack twice", player );
634else if ( !text ) MessagePlayer( error + "** Syntax - /changepack <pack id> [view /packlist to see the list of packs]", player );
635else if ( !IsNum( text ) ) MessagePlayer( error + "** Error - Pack should be between 0-7", player );
636else if ( text.tointeger() < 0 || text.tointeger() > 7 ) MessagePlayer( error + "** Error - Pack should be between 0-7", player );
637else if ( text.tointeger() == p.lastPack ) MessagePlayer( error + "** Error - You are already having this pack", player );
638else
639{
640if ( text.tointeger() == 6 && p.RPGBanExpire != 0 && p.RPGBanExpire != 0 )
641{
642if( ( time() - p.RPGBanTime.tointeger() ) <= p.RPGBanExpire.tointeger() )
643{
644local expire = ( time() - p.RPGBanTime.tointeger() ); MessagePlayer( error + "** Error - You are banned from using Rocket Launcher for " + GetTimeFormat( ( p.RPGBanExpire.tointeger() - expire.tointeger() ) ) + "!", player );
645}
646else { p.RPGBanTime = 0; p.RPGBanExpire = 0; QuerySQL( sq_DB,"UPDATE Aliases SET RPG='0' WHERE UID='" + escapeSQLString( player.UID ) + "'"); ChangePack( player, text.tointeger() ); return; }
647}
648else if ((base2 == 2) || (base2 == 15))
649{
650 MessagePlayer(error + "** Error - Pack disallowed in this base.")
651}
652else ChangePack( player, text.tointeger() );
653}
654}
655
656else if ( cmd == "packlist" )
657{
658cmd_found = true;
659MessagePlayer("[#b0b0b0]** Pack #0 - Shotgun, MP5, M60", player );
660MessagePlayer("[#b0b0b0]** Pack #1 - Shotgun, MP5, Ruger, Grenades", player );
661MessagePlayer("[#b0b0b0]** Pack #2 - Spas, MP5, Colt, Chainsaw", player );
662MessagePlayer("[#b0b0b0]** Pack #3 - Shotgun, MP5, Laser Sniper", player );
663MessagePlayer("[#b0b0b0]** Pack #4 - Stubby, MP5, M4", player );
664MessagePlayer("[#b0b0b0]** Pack #5 - Shotgun, MP5, Sniper Rifle", player );
665MessagePlayer("[#b0b0b0]** Pack #6 - Shotgun, RPG", player );
666MessagePlayer("[#b0b0b0]** Pack #7 - Shotgun, MP5, Remote Grenades", player );
667}
668
669else if ( cmd == "script" || cmd == "credits" )
670{
671cmd_found = true;
672MessagePlayer( "[#b0b0b0]** " + GetServerName() + " ", player );
673MessagePlayer( "[#b0b0b0]** Scripter: [#ffffff][VU]Mashreq [#b0b0b0]| [#b0b0b0]| Mapper: [#ffffff][VU_T]Kyle", player );
674}
675
676else if ( cmd == "admin" || cmd == "admins" )
677{
678cmd_found = true;
679local a = 0, b = 0;
680while ( a < GetMaxPlayers() )
681{
682local plr = FindPlayer( a );
683if ( plr )
684{
685local p = Pinfo[ plr.ID ];
686if ( p.Level > 2 )
687{
688if ( b ) b = b + ", " + plr.Name + " ";
689else b = plr.Name + " ";
690}
691}
692a++;
693}
694if ( b == 0 ) MessagePlayer( "[#b0b0b0]** No admins online", player );
695else MessagePlayer( "[#b0b0b0]** Admins online: " + b, player );
696}
697
698else if ( cmd == "spree" || cmd == "sprees" )
699{
700cmd_found = true;
701local a = 0, b = 0;
702while ( a < GetMaxPlayers() )
703{
704local plr = FindPlayer( a );
705if ( plr )
706{
707local p = Pinfo[ plr.ID ];
708if ( p.Spree >= 5 )
709{
710if ( b ) b = b + GetTeamColor( plr ) + ", " + plr.Name + " (" + p.Spree + ")";
711else b = GetTeamColor( plr ) + plr.Name + " (" + p.Spree + ")";
712}
713}
714a++;
715}
716if ( b == 0 ) MessagePlayer( "[#b0b0b0]** No players on killing spree", player );
717else MessagePlayer( "[#b0b0b0]** Killing Spree: " + b, player );
718}
719
720
721else if ( cmd == "topkillers" || cmd == "topkiller" )
722{
723cmd_found = true;
724MessagePlayer( "[#ffffff]** Top 5 Killers - " + GetTop( "killer"), player );
725}
726
727else if ( cmd == "topspree" )
728{
729cmd_found = true;
730MessagePlayer( "[#ffffff]** Top 5 Sprees - " + GetTop( "spree"), player );
731}
732
733else if ( cmd == "topbriefdroppers" )
734{
735cmd_found = true;
736MessagePlayer( "[#ffffff]** Top 5 Brief Droppers - " + GetTop( "dropper"), player );
737}
738
739else if ( cmd == "topratio" )
740{
741cmd_found = true;
742MessagePlayer( "[#ffffff]** Top 5 K/D Ratios - " + GetTop( "ratio"), player );
743}
744
745else if ( cmd == "wep" || cmd == "we" )
746{
747cmd_found = true;
748if ( !player.IsSpawned ) MessagePlayer( error + "** Error - You need to be spawned!", player );
749else if ( Startwar == false ) MessagePlayer( error + "** Error - The game has not started yet", player);
750else if ( p.inPack == true ) MessagePlayer( error + "** Error - You cannot use this command when you are in pack!", player );
751else if ( p.BriefCaptured == true ) MessagePlayer( error + "** Error - You cannot use this command when you are having a briefcase!", player );
752else if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <weps>", player );
753else
754{
755local args = split( text, " " );
756if ( args.len() > 4 ) MessagePlayer( error + "** Error - You cannot get more than 4 weapons!", player );
757else
758{
759local wep, i, wep_ID;
760for( i = 0; i < args.len(); i++ )
761{
762if ( IsNum( args[ i ] ) ) wep_ID = args[ i ].tointeger();
763else wep_ID = GetWeaponID( args[ i ] );
764if ( Submachines( wep_ID ) == true )
765{
766player.GiveWeapon( wep_ID, 9999 );
767if( wep == null ) wep = GetWeaponName( wep_ID );
768else wep = wep + ", " + GetWeaponName( wep_ID );
769}
770else MessagePlayer( error + "** Error - Invalid/blocked or it not a submachine.", player );
771}
772if ( wep != null ) MessagePlayer( "[#b0b0b0]** Giving you [#ffffff]" + wep + "!", player );
773}
774}
775}
776
777else if ( cmd == "report" )
778{
779cmd_found = true;
780if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
781else
782{
783local args_ = split( text, " " );
784local plr = GetPlayer( args_[0] );
785if ( plr )
786{
787if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
788else
789{
790AdminMessage( "** Report: " + player.Name + " cased a reported against " + plr + " Reason: " + Getreason(text, 1) );
791MessagePlayer( "[#b0b0b0]** You have cased a report against [#ffffff]" + plr + " [#b0b0b0]admins would check it shortly!", player );
792StaffMessage( irc_main + "** Report: " + player.Name + " cased a reported against " + plr + " Reason: " + Getreason(text, 1) );
793}
794}
795else MessagePlayer( error + "** Error - Invalid player", player );
796}
797}
798
799else if ( cmd == "spec" || cmd == "spectate" )
800{
801cmd_found = true;
802if ( !player.IsSpawned )
803{
804if ( player.Team == 3 )
805{
806if ( text )
807{
808local plr = GetPlayer( text );
809if ( plr )
810{
811if ( plr.ID != player.ID )
812{
813if ( plr.IsSpawned )
814{
815if ( player.SpectateTarget != plr.Name )
816{
817player.Pos = Vector( -1632.12, -496.578, 50.1828 );
818player.World = plr.World;
819player.SpectateTarget = plr;
820MessagePlayer( "[#b0b0b0]** Spectating [#ffffff]" + plr.Name + "[#b0b0b0], type [#ffffff]/exitspec [#b0b0b0]to stop spectating!", player );
821}
822else MessagePlayer( error + "** Error - You are already spectating " + plr.Name, player );
823}
824else MessagePlayer( error + "** Error - " + plr.Name + " is not spawned!", player );
825}
826else MessagePlayer( error + "** Error - You cannot spectate yourself!", player );
827}
828else MessagePlayer( error + "** Error - Invalid player", player );
829}
830else MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
831}
832else MessagePlayer( error + "** Error - You should choose the referee skin first!", player );
833}
834else MessagePlayer( error + "** Error - You should not be spawned!", player );
835}
836
837else if ( cmd == "exitspec" || cmd == "stopspec" )
838{
839cmd_found = true;
840if ( !player.IsSpawned )
841{
842if ( player.SpectateTarget != null )
843{
844player.Pos = Vector(-877.264, 706.175, 11.3961);
845player.World = 4;
846MessagePlayer( "[#b0b0b0]** You have stopped spectating [#ffffff]" + player.SpectateTarget + "!", player );
847player.SpectateTarget = null;
848}
849else MessagePlayer( error + "** Error: - You are not specating any player!", player );
850}
851else MessagePlayer( error + "** Error - You should not be spawned!", player );
852}
853
854else if (cmd == "votebase" || cmd == "vote")
855{
856 cmd_found = true;
857 if(player.IsSpawned)
858 {
859 if(!GameActive)
860 {
861 if(voting == true)
862 {
863 if(p.hasVoted == false)
864 {
865 if(text)
866 {
867 local vote = text.tointeger();
868 if(vote == 1 || vote == 2 || vote == 3 || vote == 4)
869 {
870 PlayerVotedForBase(player.ID, vote);
871 }
872 else MessagePlayer( error + "** Syntax - /" + cmd + " <1/2/3/4>", player );
873 }
874 else MessagePlayer( error + "** Syntax - /" + cmd + " <1/2/3/4>", player );
875 }
876 else MessagePlayer( error + "** Error: - You have already voted!", player);
877 }
878 else MessagePlayer( error + "** Error: - You can not vote now", player);
879 }
880 else MessagePlayer( error + "** Error: - Game is already active!", player);
881 }
882 else MessagePlayer( error + "** Error: - You are not spawned!", player);
883}
884
885
886local found_ = false, get_alevel = 0, get_prank = null;
887if ( g_admincmd.rawin( cmd ) ) { get_prank = GetLevelFromArray( cmd ); get_alevel = GetLevel( get_prank ); found_ = true; cmd_found = true; }
888if ( ( p.Level ) < get_alevel ) MessagePlayer( error + "** Error - You dont have access to this!", player );
889else
890{
891// ----------------------------------------------------- ADMIN COMMANDS ----------------------------------------------------------------- //
892
893if ( cmd == "addcar" || cmd == "createveh" || cmd == "createcar" || cmd == "addveh" )
894{
895if ( player.IsSpawned == false ) MessagePlayer( error + "** Error - You need to be spawned.", player );
896else if ( player.Vehicle ) MessagePlayer( error + "** Error - You should not be in a vehicle.", player );
897else if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <model id/model name> <col1> <col2>", player );
898else
899{
900local args = split( text, " " );
901if ( args.len() <= 2 ) MessagePlayer( error + "** Syntax - /" + cmd + " <model id/model name> <col1> <col2>", player );
902else if ( !IsNum(args[1]) ) MessagePlayer( error + "** Error - Col1 should be in number", player );
903else if ( !IsNum(args[2]) ) MessagePlayer( error + "** Error - Col2 should be in number", player );
904else if ( args[1].tointeger() < 0 || args[1].tointeger() > 94 ) MessagePlayer( error + "** Error - Vehicle color should be between 0-94", player );
905else if ( args[2].tointeger() < 0 || args[2].tointeger() > 94 ) MessagePlayer( error + "** Error - Vehicle color should be between 0-94", player );
906else if ( IsNum(args[0]) && GetVehicleNameFromModel(args[0].tointeger()) == null ) MessagePlayer( error + "** Error - Invalid vehicle ID", player );
907else if ( !IsNum(args[0]) && GetVehicleModelFromName(args[0]) == -1 ) MessagePlayer( error + "** Error - Invalid vehicle ID", player );
908else
909{
910local model_id = args[0], gen_model, col1 = args[1].tointeger(), col2 = args[2].tointeger(), pos = player.Pos;
911if( IsNum(model_id) ) gen_model = model_id;
912else gen_model = GetVehicleModelFromName(args[0]);
913if ( player.Vehicle ) player.Eject();
914player.Vehicle = CreateVehicle( gen_model.tointeger(), 1, player.Pos, player.Angle, col1, col2 );
915local id_ = player.Vehicle.ID;
916if ( Vehicles_.find( id_ ) == null ) { Vehicles_[id_] = id_; QuerySQL( sq_DB, "INSERT INTO Vehicles ( ID, Model, PosX, PosY, PosZ, Angle, Col1, Col2 ) VALUES ( '" + player.Vehicle.ID + "', '" + gen_model.tointeger() + "', '" + pos.x + "', '" + pos.y + "', '" + pos.z + "', '" + player.Angle + "', '" + col1 + "', '" + col2 + "' )" ); }
917else { local veh_id; Vehicles_[id_] = id_+1; veh_id = id_+1; QuerySQL( sq_DB, "INSERT INTO Vehicles ( ID, Model, PosX, PosY, PosZ, Angle, Col1, Col2 ) VALUES ( '" + veh_id + "', '" + gen_model.tointeger() + "', '" + pos.x + "', '" + pos.y + "', '" + pos.z + "', '" + player.Angle + "', '" + col1 + "', '" + col2 + "' )" ); }
918MessagePlayer( a_priv + "** Created vehicle: " + GetVehicleNameFromModel( gen_model.tointeger() ), player );
919}
920}
921}
922else if (cmd == "autostart")
923{
924cmd_found=true;
925 if(text == "enable")
926 {
927 autostart = true;
928 voting = true;
929 BeginVoting();
930 ClientMessageToAll(a_msg + "** Admin " + player.Name + " has enabled autostart function.",0,0,0);
931 }
932 else if (text == "disable")
933 {
934 autostart = false;
935 ClientMessageToAll(a_msg + "** Admin " + player.Name + " has disabled autostart function.",0,0,0);
936 }
937 else ClientMessage(a_priv + "** Syntax : /autostart <enable/disable>.", player, 0,0,0);
938}
939else if (cmd == "startbase")
940{
941cmd_found=true;
942 if (autostart == false)
943 {
944 if (!GameActive)
945 {
946 if(text)
947 {
948 local baseID = text.tointeger();
949 if((baseID > TotalBases) || (baseID < 1))
950 {
951 ClientMessage(a_priv + "** Base ID can be from 1 to " + TotalBases, player, 0,0,0);
952 }
953 else
954 {
955 base2 = baseID;
956 ClientMessageToAll(a_msg + "** Admin " + player.Name + " has started base " + Bases[baseID].Name, 0,0,0);
957 StartGame();
958 }
959
960 }
961 else ClientMessage(a_priv + "** Syntax : /startbase <baseID>.", player,0,0,0)
962 }
963 else ClientMessage(a_priv + "** Game is already active.", player,0,0,0)
964 }
965 else ClientMessage(a_priv + "** Please disable autostart before using this command.", player,0,0,0);
966}
967else if(cmd == "searchbase")
968 {
969 cmd_found=true;
970 if(text)
971 {
972 local id = sbase(text, 0);
973 local id1 = sbase(text, 1);
974 local id2 = sbase(text, 3);
975 if (id == -1)
976 {
977 ClientMessage("[#FF0000][ERROR] [#FFFFFF]No base found with that name.", player, 255, 255, 255);
978 }
979 else
980 {
981 ClientMessage("[#00FFFF][BASE] [#FFFFFF]Found at ID : [#00FFFF][ " + id + " ][#FFFFFF], NAME : [#00FFFF][ " + Bases[id].Name + " ]", player, 255, 255, 255);
982 if(id1 != -1)
983 {
984 ClientMessage("[#00FFFF][BASE] [#FFFFFF]Found at ID : [#00FFFF][ " + id1 + " ][#FFFFFF], NAME : [#00FFFF][ " + Bases[id1].Name + " ]", player, 255, 255, 255);
985 }
986 if(id2 != -1)
987 {
988 ClientMessage("[#00FFFF][BASE] [#FFFFFF]Found at ID : [#00FFFF][ " + id2 + " ][#FFFFFF], NAME : [#00FFFF][ " + Bases[id2].Name + " ]", player, 255, 255, 255);
989 }
990 }
991 }
992 else ClientMessage("[#FF0000][ERROR] [#FFFFFF]syntax : /searchbase <keyword>", player, 255, 255, 255);
993 }
994else if ( cmd == "delcar" || cmd == "removeveh" || cmd == "removecar" || cmd == "delveh" )
995{
996if ( player.IsSpawned == false ) MessagePlayer( error + "** Error - You need to be spawned.", player );
997else if ( !player.Vehicle ) MessagePlayer( error + "** Error - You should be in the vehicle.", player );
998else
999{
1000if ( player.Vehicle )
1001{
1002local veh = player.Vehicle;
1003local id = veh.ID, model = veh.Model;
1004MessagePlayer( a_priv + "** Removed vehicle: " + GetVehicleNameFromModel( model.tointeger() ), player );
1005QuerySQL( sq_DB, "DELETE FROM Vehicles WHERE ID = " + escapeSQLString( Vehicles_[id.tointeger()] ) + " AND Model = " + escapeSQLString( model ) );
1006veh.Remove();
1007}
1008else MessagePlayer( error + "** Error - You should be in the vehicle.", player )
1009}
1010}
1011
1012else if ( cmd == "bring" || cmd == "get" )
1013{
1014if ( player.IsSpawned == false ) MessagePlayer( error + "** Error - You need to be spawned.", player );
1015else if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1016else
1017{
1018if ( GetPlayer( text ) )
1019{
1020local plr = GetPlayer( text );
1021if ( plr.IsSpawned )
1022{
1023plr.Pos = player.Pos;
1024MessagePlayer( a_priv + "** Bringing " + plr, player );
1025}
1026else MessagePlayer( error + "** Error - This player is not spawned!", player );
1027}
1028else MessagePlayer( error + "** Error - Invalid player!", player );
1029}
1030}
1031
1032else if ( cmd == "agoto" || cmd == "goto" )
1033{
1034if ( player.IsSpawned == false ) MessagePlayer( error + "** Error - You need to be spawned.", player );
1035else if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1036else
1037{
1038if ( GetPlayer( text ) )
1039{
1040local plr = GetPlayer( text );
1041if ( plr.IsSpawned )
1042{
1043player.Pos = plr.Pos;
1044MessagePlayer( a_priv + "** Teleporting to " + plr, player );
1045}
1046else MessagePlayer( error + "** Error - This player is not spawned!", player );
1047}
1048else MessagePlayer( error + "** Error - Invalid player!", player );
1049}
1050}
1051
1052else if ( cmd == "setlevel" || cmd == "setrank" || cmd == "changelevel" || cmd == "changerank" )
1053{
1054if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <dev/manager/admin/mod/player>", player );
1055else
1056{
1057local args = split( text, " " );
1058if ( args.len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <dev/manager/admin/mod/player>", player );
1059else if ( !GetPlayer(args[0]) ) MessagePlayer( error + "** Error - Invalid player", player );
1060else
1061{
1062local plr = GetPlayer( args[0] ), pplr = Pinfo[ plr.ID ], rank = args[1], lvl = GetLevel( rank );
1063if ( lvl == 0 ) MessagePlayer( error + "** Error - Invalid rank, rank should be dev/manager/admin/mod/player", player );
1064else if( pplr.isRegistered == false ) MessagePlayer( error + "** Error - The player is not registered!", player );
1065else if( pplr.isRegistered == true && pplr.isLogged == false ) MessagePlayer( error + "** Error - The player is not logged-in!", player );
1066else if( plr.ID == player.ID ) MessagePlayer( error + "** Error - You cannot change your rank!", player );
1067else if( pplr.Level == lvl ) MessagePlayer( error + "** Error - The player is already having that rank!", player );
1068else
1069{
1070pplr.Level = lvl.tointeger();
1071MessagePlayer( a_priv + "** You have changed " + plr + "'s rank to " + GetLevelTags( lvl ), player );
1072MessagePlayer( a_priv + "** Your rank changed have been changed to " + GetLevelTags( lvl ) + " by " + player, plr );
1073}
1074}
1075}
1076}
1077
1078else if ( cmd == "end" || cmd == "endround" || cmd == "endgame" )
1079{
1080if ( Startwar == false ) MessagePlayer( error + "** Error - The game has not started yet!", player );
1081else
1082{
1083Game_time = 2;
1084Message( a_msg + "** Admin " + player + " has ended the game!" );
1085 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + " has ended the game!**" );
1086}
1087}
1088
1089else if ( cmd == "packchoice" )
1090{
1091if ( Startwar == false ) MessagePlayer( error + "** Error - The game has not started yet!", player );
1092else if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1093else
1094{
1095local plr = GetPlayer( text );
1096if ( plr )
1097{
1098local pplr = Pinfo[ plr.ID ];
1099if ( pplr.inGame == false ) MessagePlayer( error + "** Error - The player is not in game!", player );
1100else if ( pplr.inPack == true ) MessagePlayer( error + "** Error - The player is already in pack choice!", player );
1101else if ( pplr.Packs < 2 ) MessagePlayer( error + "** Error - The player is already having access to changepack!", player );
1102else
1103{
1104if ( pplr.Packs == 2 )
1105{
1106pplr.Packs--;
1107Message( a_msg + "** Admin " + player + " has added " + plr + " into pack choice" );
1108 ::myDiscord.sendMessage("659726989623558183","** Admin" + player + "** has added **" + plr + "** into pack choice" );
1109}
1110}
1111}
1112else MessagePlayer( error + "** Error - Invalid player", player );
1113}
1114}
1115
1116else if ( cmd == "drown" )
1117{
1118if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1119else
1120{
1121local args_ = split( text, " " );
1122local plr = GetPlayer( args_[0] );
1123if ( plr )
1124{
1125if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1126else if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1127else
1128{
1129plr.Pos = plr.Pos;
1130plr.Pos = Vector( -597.7496,-1858.9531,28.1291 );
1131Message( a_msg + "** Admin " + player + " has drowned " + plr + " Reason: " + Getreason(text, 1) );
1132 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has drowned **" + plr + "** Reason: " + Getreason(text, 1) );
1133}
1134}
1135else MessagePlayer( error + "** Error - Invalid player", player );
1136}
1137}
1138
1139else if ( cmd == "pkill" )
1140{
1141if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1142else
1143{
1144local args_ = split( text, " " );
1145local plr = GetPlayer( args_[0] );
1146if ( plr )
1147{
1148if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1149else if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1150else
1151{
1152plr.Pos = plr.Pos;
1153plr.Health = 0;
1154plr.Armour = 0;
1155Message( a_msg + "** Admin " + player + " has killed " + plr + " Reason: " + Getreason(text, 1) );
1156 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has killed " + plr + " Reason: " + Getreason(text, 1) );
1157}
1158}
1159else MessagePlayer( error + "** Error - Invalid player", player );
1160}
1161}
1162
1163else if ( cmd == "kick" )
1164{
1165if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1166else
1167{
1168local args_ = split( text, " " );
1169local plr = GetPlayer( args_[0] );
1170if ( plr )
1171{
1172if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1173else if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1174else
1175{
1176Message( a_msg + "** Admin " + player + " has kicked " + plr + " Reason: " + Getreason(text, 1) );
1177 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has kicked **" + plr + "** Reason: " + Getreason(text, 1) );
1178plr.Kick();
1179}
1180}
1181else MessagePlayer( error + "** Error - Invalid player", player );
1182}
1183}
1184
1185else if ( cmd == "sethp" )
1186{
1187if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/all> <health>", player );
1188else
1189{
1190local args_ = split( text, " " );
1191if ( args_.len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/all> <health>", player );
1192else if ( !IsNum( args_[1] ) ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <health>", player );
1193else if ( args_[1].tointeger() < 0 || args_[1].tointeger() > 100 ) MessagePlayer( error + "** Error - Health should be in between 0-100", player );
1194else
1195{
1196if ( args_[0] != "all" )
1197{
1198local plr = GetPlayer( args_[0] );
1199if ( plr )
1200{
1201if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1202else
1203{
1204plr.Health = args_[1].tointeger();
1205Message( a_msg + "** Admin " + player + " has set " + plr + "'s health to " + args_[1] );
1206 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set **" + plr + "**'s health to " + args_[1] );
1207}
1208}
1209else MessagePlayer( error + "** Error - Invalid player", player );
1210}
1211else
1212{
1213for( local i = 0; i <= GetMaxPlayers(); i++ )
1214{
1215local plr = FindPlayer( i );
1216if ( plr && plr.IsSpawned ) plr.Health = args_[1].tointeger();
1217}
1218Message( a_msg + "** Admin " + player + " has set everyone's health to " + args_[1] );
1219 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set everyone's health to " + args_[1] );
1220}
1221}
1222}
1223}
1224
1225else if ( cmd == "setarm" )
1226{
1227if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/all> <armour>", player );
1228else
1229{
1230local args_ = split( text, " " );
1231if ( args_.len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/all> <armour>", player );
1232else if ( !IsNum( args_[1] ) ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <armour>", player );
1233else if ( args_[1].tointeger() < 0 || args_[1].tointeger() > 100 ) MessagePlayer( error + "** Error - Armour should be in between 0-100", player );
1234else
1235{
1236if ( args_[0] != "all" )
1237{
1238local plr = GetPlayer( args_[0] );
1239if ( plr )
1240{
1241if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1242else
1243{
1244plr.Armour = args_[1].tointeger();
1245Message( a_msg + "** Admin " + player + " has set " + plr + "'s armour to " + args_[1] );
1246 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set **" + plr + "**'s armour to " + args_[1] );
1247}
1248}
1249else MessagePlayer( error + "** Error - Invalid player", player );
1250}
1251else
1252{
1253for( local i = 0; i <= GetMaxPlayers(); i++ )
1254{
1255local plr = FindPlayer( i );
1256if ( plr && plr.IsSpawned ) plr.Armour = args_[1].tointeger();
1257}
1258Message( a_msg + "** Admin " + player + " has set everyone's armour to " + args_[1] );
1259 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set everyone's armour to " + args_[1] );
1260}
1261}
1262}
1263}
1264
1265else if ( cmd == "setskin" )
1266{
1267if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/all> <skin ID>", player );
1268else
1269{
1270local args_ = split( text, " " );
1271if ( args_.len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/all> <skin ID>", player );
1272else if ( !IsNum( args_[1] ) ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <skin ID>", player );
1273else if ( args_[1].tointeger() < 0 || args_[1].tointeger() > 194 ) MessagePlayer( error + "** Error - Skin ID should be in between 0-194", player );
1274else
1275{
1276if ( args_[0] != "all" )
1277{
1278local plr = GetPlayer( args_[0] );
1279if ( plr )
1280{
1281if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1282else
1283{
1284plr.Skin = args_[1].tointeger();
1285Message( a_msg + "** Admin " + player + " has set " + plr + "'s skin to ID " + args_[1] );
1286 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set **" + plr + "**'s skin to ID " + args_[1] );
1287}
1288}
1289else MessagePlayer( error + "** Error - Invalid player", player );
1290}
1291else
1292{
1293for( local i = 0; i <= GetMaxPlayers(); i++ )
1294{
1295local plr = FindPlayer( i );
1296if ( plr && plr.IsSpawned ) plr.Skin = args_[1].tointeger();
1297}
1298Message( a_msg + "** Admin " + player + " has set everyone's skin to ID " + args_[1] );
1299 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set everyone's skin to ID " + args_[1] );
1300}
1301}
1302}
1303}
1304
1305else if ( cmd == "ac" )
1306{
1307if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <message>", player );
1308else
1309{
1310AdminMessage( "** (Admin Chat) " + player + ": " + text );
1311 ::myDiscord.sendMessage("658354852262445077","`(Admin Chat)` **" + player + "**: " + text );
1312}
1313}
1314
1315else if ( cmd == "freeze" )
1316{
1317cmd_found = true;
1318if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1319else
1320{
1321local args_ = split( text, " " );
1322local plr = GetPlayer( args_[0] );
1323if ( plr )
1324{
1325if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1326else if ( plr.IsFrozen == true ) MessagePlayer( error + "** Error - The player is already freezed!", player );
1327else if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1328else
1329{
1330plr.IsFrozen = true;
1331Message( a_msg + "** Admin " + player + " has freezed " + plr + " Reason: " + Getreason(text, 1) );
1332 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has frozen **" + plr + "** Reason: " + Getreason(text, 1) );
1333}
1334}
1335else MessagePlayer( error + "** Error - Invalid player", player );
1336}
1337}
1338
1339else if ( cmd == "unfreeze" )
1340{
1341if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1342else
1343{
1344local args_ = split( text, " " );
1345local plr = GetPlayer( args_[0] );
1346if ( plr )
1347{
1348if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1349else if ( plr.IsFrozen == false ) MessagePlayer( error + "** Error - The player is not freezed!", player );
1350else
1351{
1352plr.IsFrozen = false;
1353Message( a_msg + "** Admin " + player + " has unfreezed " + plr + "" );
1354 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has unfreezed " + plr + "" );
1355}
1356}
1357else MessagePlayer( error + "** Error - Invalid player", player );
1358}
1359}
1360
1361
1362else if ( cmd == "unmute" )
1363{
1364
1365if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1366else
1367{
1368local args_ = split( text, " " );
1369local plr = GetPlayer( args_[0] );
1370if ( plr )
1371{
1372local pplr = Pinfo[ plr.ID ];
1373if ( pplr.isMuted == false ) MessagePlayer( error + "** Error - The player is not muted!", player );
1374else
1375{
1376pplr.isMuted = false;
1377pplr.MuteTime = 0;
1378pplr.ChatTime = 0;
1379Message( a_msg + "** Admin " + player + " has unmuted " + plr + "" );
1380 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has unmuted **" + plr + "**" );
1381}
1382}
1383else MessagePlayer( error + "** Error - Invalid player", player );
1384}
1385}
1386
1387else if ( cmd == "slap" )
1388{
1389if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1390else
1391{
1392local args_ = split( text, " " );
1393local plr = GetPlayer( args_[0] );
1394if ( plr )
1395{
1396if ( !plr.IsSpawned ) MessagePlayer( error + "** Error - The player is not in spawned!", player );
1397else if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <reason>", player );
1398else
1399{
1400plr.Pos.z = plr.Pos.z+20;
1401Message( a_msg + "** Admin " + player + " has slapped " + plr + " Reason: " + Getreason(text, 1) );
1402 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has slapped **" + plr + "** Reason: " + Getreason(text, 1) );
1403}
1404}
1405else MessagePlayer( error + "** Error - Invalid player", player );
1406}
1407}
1408
1409else if ( cmd == "sw" || cmd == "setweather" )
1410{
1411if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <id>", player );
1412else
1413{
1414if (!IsNum( text ) ) MessagePlayer( error + "** Syntax - /" + cmd + " <id>", player );
1415else if ( text.tointeger() < 0 ) MessagePlayer( error + "** Error - Invalid weather ID", player );
1416else
1417{
1418SetWeather( text.tointeger() )
1419Message( a_msg + "** Admin " + player + " has changed the weather to ID " + text );
1420 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has changed the weather to ID " + text );
1421}
1422}
1423}
1424
1425else if ( cmd == "settime" )
1426{
1427if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <min> <sec>", player );
1428else
1429{
1430local args_ = split( text, " " );
1431if ( args_.len() > 1 )
1432{
1433if ( !IsNum( args_[0] ) ) MessagePlayer( error + "** Syntax - /" + cmd + " <min> <sec>", player );
1434else if ( args_[1] && !IsNum( args_[1] ) ) MessagePlayer( error + "** Syntax - /" + cmd + " <min> <sec>", player );
1435else
1436{
1437SetHour( args_[0].tointeger() );
1438SetMinute( args_[1].tointeger() );
1439Message( a_msg + "** Admin " + player + " has set the time to " + args_[0] + ":" + args_[1] );
1440 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set the time to " + args_[0] + ":" + args_[1] );
1441}
1442}
1443else
1444{
1445if ( !IsNum( text ) ) MessagePlayer( error + "** Syntax - /" + cmd + " <min> <sec>", player );
1446else
1447{
1448SetHour( text.tointeger() );
1449Message( a_msg + "** Admin " + player + " has set the time to " + text + ":00" );
1450 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set the time to " + text + ":00" );
1451}
1452}
1453}
1454}
1455
1456else if ( cmd == "cc" || cmd == "clearchat" )
1457{
1458Message( a_msg + "\n \n \n \n \n \n \n \n \n \n \n \n \n \n ** Admin " + player + " has cleared the chat!" );
1459 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has cleared the chat!" );
1460}
1461
1462else if ( cmd == "setservername" )
1463{
1464if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <name>", player );
1465else
1466{
1467SetServerName( text );
1468Message( a_msg + "** Admin " + player + " has changed the server name to " + text );
1469 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has changed the server name to " + text );
1470}
1471}
1472
1473else if ( cmd == "lockserver" )
1474{
1475if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <password>", player );
1476else
1477{
1478SetPassword( text );
1479MessagePlayer( a_priv + "** Locked server, Password: " + text, player );
1480}
1481}
1482
1483else if ( cmd == "unlockserver" )
1484{
1485if ( GetPassword() == "" ) MessagePlayer( error + "** Error - The server is not locked!", player );
1486else
1487{
1488SetPassword( "" );
1489MessagePlayer( a_priv + "** Unlocked server!", player );
1490}
1491}
1492
1493else if ( cmd == "acmds" )
1494{
1495if ( GetLevelTags( p.Level ) == "Moderator" ) MessagePlayer( a_priv + "** bring, agoto, end, packchoice, kick, setskin, ac, getip, getuid, slap, sw, settime, cc, ann, uidalias, rpgban, rpgunban", player );
1496if ( GetLevelTags( p.Level ) == "Admin" ) MessagePlayer( a_priv + "** bring, agoto, end, packchoice, kick, setskin, ac, getip, getuid, slap, sw, settime, cc, ann, uidalias, rpgban, rpgunban, drown, pkill, sethp, setarm, setskin, freeze, unfreeze, ipalias", player );
1497if ( GetLevelTags( p.Level ) == "Manager" ) MessagePlayer( a_priv + "** bring, agoto, end, packchoice, kick, setskin, ac, getip, getuid, slap, sw, settime, cc, ann, uidalias, rpgban, rpgunban, drown, pkill, sethp, setarm, setskin, freeze, unfreeze, ipalias, respawnveh, spawnveh, getcmdrank, setwg, setdriveby, setstuntmode, setgamemode", player );
1498if ( GetLevelTags( p.Level ) == "Developer" ) MessagePlayer( a_priv + "** bring, agoto, end, packchoice, kick, setskin, ac, getip, getuid, slap, sw, settime, cc, ann, uidalias, rpgban, rpgunban, drown, pkill, sethp, setarm, setskin, freeze, unfreeze, ipalias, respawnveh, spawnveh, getcmdrank, setwg, setdriveby, setstuntmode, setgamemode, setcmdrank, setservername, lockserver, unlockserver, exec, addcar, delcar, setrank", player );
1499}
1500
1501else if ( cmd == "ann" )
1502{
1503if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/all> <message>", player );
1504else
1505{
1506local args_ = split( text, " " );
1507if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <message>", player );
1508else
1509{
1510if ( args_[0] != "all" )
1511{
1512local plr = GetPlayer( args_[0] );
1513if ( plr )
1514{
1515Announce( Getreason(text, 1), plr, 3 );
1516MessagePlayer( a_priv + "** Sent announcement to " + plr + " Message: " + Getreason(text, 1), player );
1517}
1518else MessagePlayer( error + "** Error - Invalid player", player );
1519}
1520else
1521{
1522AnnounceAll( Getreason(text, 1), 3 );
1523MessagePlayer( a_priv + "** Sent announcement to all Message: " + Getreason(text, 1), player );
1524}
1525}
1526}
1527}
1528
1529else if ( cmd == "respawnveh" )
1530{
1531Respawnvehicles();
1532Message( a_msg + "** Admin " + player + " has respawned all vehicles!" );
1533 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has respawned all vehicles!" );
1534}
1535
1536else if ( cmd == "spawnveh" || cmd == "spawncar" )
1537{
1538if ( player.Vehicle ) MessagePlayer( error + "** Error - You cant spawn a car while you are in a vehicle!", player );
1539else
1540{
1541local find_veh;
1542for( local i = 0; i <= GetVehicleCount(); i++ )
1543{
1544local veh = FindVehicle( i );
1545if ( veh && !veh.Driver ) find_veh = veh;
1546}
1547if ( find_veh ) find_veh.Pos = player.Pos;
1548}
1549}
1550
1551else if ( cmd == "setcmdrank" || cmd == "setcmdlevel" || cmd == "setcmdlvl" )
1552{
1553if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <command> <rank>", player );
1554else
1555{
1556local args_ = split( text, " " );
1557if ( args_.len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <command> <rank>", player );
1558else
1559{
1560local rank = args_[1], lvl = GetLevel( rank );
1561if ( lvl == 0 ) MessagePlayer( error + "** Error - Invalid rank, rank should be dev/manager/admin/mod/player", player );
1562else if ( args_[0] == "setcmdlevel" || args_[0] == "setcmdrank" || args_[0] == "setcmdlvl") MessagePlayer( error + "** Error - You can't change the rank of this command!", player );
1563else
1564{
1565local cmd_ = args_[0];
1566if ( g_admincmd.rawin( cmd_ ) )
1567{
1568if ( GetLevelFromArray( cmd_ ) != rank )
1569{
1570g_admincmd.rawdelete( cmd_ );
1571g_admincmd.rawset( cmd_, [{ "Cmd": cmd_ "Rank": rank }] );
1572MessagePlayer( a_priv + "** You have changed the rank of command - " + cmd_ + " to new rank - " + rank, player );
1573QuerySQL( sq_DB, "UPDATE Commandranks SET Rank='" + escapeSQLString( rank ) + "' WHERE Command='" + escapeSQLString( cmd_ ) + "'" );
1574}
1575else MessagePlayer( error + "** Error - The command is already having that rank!", player );
1576}
1577else MessagePlayer( error + "** Error - The command doesn't exist in database!", player );
1578}
1579}
1580}
1581}
1582
1583else if ( cmd == "getcmdrank" || cmd == "getcmdlevel" || cmd == "getcmdlvl" )
1584{
1585if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <command>", player );
1586else
1587{
1588if ( g_admincmd.rawin( text ) )
1589{
1590local rank = GetLevelFromArray( text );
1591if ( rank )
1592{
1593local level_ = GetLevel( rank ), getrank = GetLevelTags( level_ );
1594MessagePlayer( a_priv + "** Command: /" + text + " - Rank: " + getrank, player );
1595}
1596else MessagePlayer( error + "** Error - Couldn't find the rank of this command!", player );
1597}
1598else MessagePlayer( error + "** Error - The command doesn't exist in database!", player );
1599}
1600}
1601
1602else if ( cmd == "uidalias" )
1603{
1604if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1605else
1606{
1607local plr = GetPlayer( text );
1608if ( plr )
1609{
1610MessagePlayer( FindAlias( "uid", plr ), player );
1611}
1612else MessagePlayer( error + "** Error - Invalid player", player );
1613}
1614}
1615
1616else if ( cmd == "ipalias" )
1617{
1618if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1619else
1620{
1621local plr = GetPlayer( text );
1622if ( plr )
1623{
1624MessagePlayer( FindAlias( "ip", plr ), player );
1625}
1626else MessagePlayer( error + "** Error - Invalid player", player );
1627}
1628}
1629
1630else if ( cmd == "getip" || cmd == "ip" )
1631{
1632if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1633else
1634{
1635local plr = GetPlayer( text );
1636if ( plr )
1637{
1638MessagePlayer( a_priv + "** " + plr + "'s IP: " + plr.IP, player );
1639}
1640else MessagePlayer( error + "** Error - Invalid player", player );
1641}
1642}
1643
1644else if ( cmd == "getuid" || cmd == "uid" )
1645{
1646if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1647else
1648{
1649local plr = GetPlayer( text );
1650if ( plr )
1651{
1652MessagePlayer( a_priv + "** " + plr + "'s UID: " + plr.UID.toupper(), player );
1653}
1654else MessagePlayer( error + "** Error - Invalid player", player );
1655}
1656}
1657
1658else if ( cmd == "setdriveby" )
1659{
1660if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <on/off>", player );
1661else
1662{
1663local get = text;
1664switch( text )
1665{
1666case "on":
1667if ( GetDrivebyEnabled() == true ) MessagePlayer( error + "** Error - Drive-by is already enabled!", player );
1668else
1669{
1670SetDrivebyEnabled( true );
1671Message( a_msg + "** Admin " + player + " has enabled drive-by!" );
1672 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has enabled drive-by!" );
1673}
1674break;
1675
1676case "off":
1677if ( GetDrivebyEnabled() == false ) MessagePlayer( error + "** Error - Drive-by is already disabled!", player );
1678else
1679{
1680SetDrivebyEnabled( false );
1681Message( a_msg + "** Admin " + player + " has disabled drive-by!" );
1682 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has disabled drive-by!" );
1683}
1684break;
1685default:
1686MessagePlayer( error + "** Syntax - /" + cmd + " <on/off>", player );
1687}
1688}
1689}
1690
1691else if ( cmd == "setstuntmode" )
1692{
1693if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <on/off>", player );
1694else
1695{
1696local get = text;
1697switch( text )
1698{
1699case "on":
1700if ( GetStuntBike() == true ) MessagePlayer( error + "** Error - Stunt mode is already enabled!", player );
1701else
1702{
1703SetStuntBike( true );
1704Message( a_msg + "** Admin " + player + " has enabled stunt mode!" );
1705 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has enabled stunt mode!" );
1706}
1707break;
1708
1709case "off":
1710if ( GetStuntBike() == false ) MessagePlayer( error + "** Error - Stunt mode is already disabled!", player );
1711else
1712{
1713SetStuntBike( false );
1714Message( a_msg + "** Admin " + player + " has disabled stunt mode!" );
1715 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has disabled stunt mode!" );
1716}
1717break;
1718default:
1719MessagePlayer( error + "** Syntax - /" + cmd + " <on/off>", player );
1720}
1721}
1722}
1723
1724else if ( cmd == "setwallglitch" || cmd == "setwg" )
1725{
1726if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <on/off>", player );
1727else
1728{
1729local get = text;
1730switch( text )
1731{
1732case "on":
1733if ( GetWallglitch() == true ) MessagePlayer( error + "** Error - Wall glitch is already enabled!", player );
1734else
1735{
1736SetWallglitch( true );
1737Message( a_msg + "** Admin " + player + " has enabled Wall glitch!" );
1738 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has enabled Wall glitch!" );
1739}
1740break;
1741
1742case "off":
1743if ( GetWallglitch() == false ) MessagePlayer( error + "** Error - Wall glitch is already disabled!", player );
1744else
1745{
1746SetWallglitch( false );
1747Message( a_msg + "** Admin " + player + " has disabled Wall glitch!" );
1748 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has disabled Wall glitch!" );
1749}
1750break;
1751default:
1752MessagePlayer( error + "** Syntax - /" + cmd + " <on/off>", player );
1753}
1754}
1755}
1756else if ( cmd == "setgametime" )
1757{
1758if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <min/default>", player );
1759else
1760{
1761if ( text == "default" && !IsNum( text ) )
1762{
1763if ( Game_min.tointeger() != 7 )
1764{
1765Game_time = ( 7 * 60 );
1766Game_min = 7;
1767Message( a_msg + "** Admin " + player + " has set the game play time to deafult - 7:00" );
1768 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set game play time to deafault - 7:00" );
1769}
1770else MessagePlayer( error + "** Error - Game play time is already set to default: 7 min", player );
1771}
1772else
1773{
1774if ( !IsNum( text ) ) MessagePlayer( error + "** Syntax - /" + cmd + " <min/default>", player );
1775else if ( text.tointeger() < 7 || text.tointeger() > 15 ) MessagePlayer( error + "** Error - Game time should be between 7-15", player );
1776else
1777{
1778if ( Game_min.tointeger() != text.tointeger() )
1779{
1780Game_time = ( text.tointeger() * 60 );
1781Game_min = text.tointeger();
1782Message( a_msg + "** Admin " + player + " has set the game play time to " + text.tointeger() + ":00" );
1783 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has set game play time to " + text.tointeger() + ":00" );
1784}
1785else MessagePlayer( error + "** Error - Game play time is already set to " + Game_min.tointeger() + " min", player );
1786}
1787}
1788}
1789}
1790
1791else if ( cmd == "rpgban" )
1792{
1793if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <m/w/d/h/min> <reason>", player );
1794else
1795{
1796local args_ = split( text, " " );
1797if ( Getreason(text, 2).len() <= 2 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <m/w/d/h/min> <reason>", player );
1798else
1799{
1800local plr = GetPlayer( args_[0] );
1801if ( plr )
1802{
1803local pplr = Pinfo[ plr.ID ];
1804if ( pplr.RPGBanExpire == 0 && pplr.RPGBanTime == 0 )
1805{
1806local getoreason = Getotherreason(text, 1, args_[1] );
1807RPGBan( plr, player, args_[1], getoreason );
1808}
1809else
1810{
1811if( ( time() - pplr.RPGBanTime.tointeger() ) <= pplr.RPGBanExpire.tointeger() )
1812{
1813local expire = ( time() - pplr.RPGBanTime.tointeger() ); MessagePlayer( error + "** Error - This player is already banned from using Rocket Launcher for " + GetTimeFormat( ( pplr.RPGBanExpire.tointeger() - expire.tointeger() ) ) + "!", player );
1814}
1815else { pplr.RPGBanTime = 0; pplr.RPGBanExpire = 0; QuerySQL( sq_DB,"UPDATE Aliases SET RPG='0' WHERE UID='" + escapeSQLString( plr.UID ) + "'"); local getoreason = Getotherreason(text, 1, args_[1] ); RPGBan( plr, player, args_[1], getoreason ); return; }
1816}
1817}
1818else MessagePlayer( error + "** Error - Invalid player", player );
1819}
1820}
1821}
1822
1823else if ( cmd == "rpgunban" )
1824{
1825if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID>", player );
1826else
1827{
1828local plr = GetPlayer( text );
1829if ( plr )
1830{
1831local pplr = Pinfo[ plr.ID ];
1832if ( pplr.RPGBanExpire != 0 && pplr.RPGBanTime != 0 )
1833{
1834RPGUnban( plr, player );
1835}
1836else MessagePlayer( error + "** Error - This player is not banned from using Rocket Launcher!", player );
1837}
1838else MessagePlayer( error + "** Error - Invalid player", player );
1839}
1840}
1841
1842else if ( cmd == "setteambalancer" )
1843{
1844if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <on/off>", player );
1845else
1846{
1847local get = text;
1848switch( text )
1849{
1850case "on":
1851if ( TeamBalancer == true ) MessagePlayer( error + "** Error - Team balancer is already enabled!", player );
1852else
1853{
1854TeamBalancer = true;
1855Message( a_msg + "** Admin " + player + " has enabled team balancer!" );
1856 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has enabled team balancer!" );
1857}
1858break;
1859
1860case "off":
1861if ( TeamBalancer == false ) MessagePlayer( error + "** Error - Team balancer is already disabled!", player );
1862else
1863{
1864TeamBalancer = false;
1865Message( a_msg + "** Admin " + player + " has disabled team balancer!" );
1866 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has disabled team balancer!" );
1867}
1868break;
1869default:
1870MessagePlayer( error + "** Syntax - /" + cmd + " <on/off>", player );
1871}
1872}
1873}
1874
1875else if ( cmd == "mute" )
1876{
1877if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <h/m/s> <reason>", player );
1878else
1879{
1880local args_ = split( text, " " );
1881if ( Getreason(text, 2).len() <= 2 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID> <h/m/s> <reason>", player );
1882else
1883{
1884local plr = GetPlayer( args_[0] );
1885if ( plr )
1886{
1887local getoreason = Getotherreason(text, 1, args_[1] );
1888MutePlayer( plr, player, args_[1], getoreason );
1889}
1890else MessagePlayer( error + "** Error - Invalid player", player );
1891}
1892}
1893}
1894
1895else if ( cmd == "gotoloc" )
1896{
1897if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <c/h/b>", player );
1898else
1899{
1900switch( text )
1901{
1902case "c":
1903player.Pos = player.Pos;
1904player.Pos = Vector(-1178.15, -601.88, 11.4718);
1905break;
1906
1907case "h":
1908player.Pos = player.Pos;
1909player.Pos = Vector(-1116.63, 73.1161, 11.1266);
1910break;
1911
1912case "b":
1913player.Pos = player.Pos;
1914player.Pos = Vector(-1176.31, -199.927, 11.4464);
1915break;
1916
1917default:
1918MessagePlayer( error + "** Syntax - /" + cmd + " <c/h/b>", player );
1919}
1920}
1921}
1922
1923else if ( cmd == "transfer" )
1924{
1925if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/name> <new name>", player );
1926else
1927{
1928local args_ = split( text, " " );
1929if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /" + cmd + " <player/ID/name> <new name>", player );
1930else
1931{
1932Transfer( args_[0], args_[1], player );
1933}
1934}
1935}
1936
1937else if ( cmd == "tempban" )
1938{
1939if ( !text ) MessagePlayer( error + "** Syntax - /tempban <player/ID/name> <m/w/d/h> <reason>", player );
1940else
1941{
1942local args_ = split( text, " " );
1943if ( Getreason(text, 2).len() <= 2 ) MessagePlayer( error + "** Syntax - /tempban <player/ID/name> <m/w/d/h> <reason>", player );
1944else
1945{
1946local getoreason = Getotherreason(text, 1, args_[1] );
1947Ban( args_[0], args_[1], getoreason, player );
1948}
1949}
1950}
1951
1952else if ( cmd == "permban" )
1953{
1954if ( !text ) MessagePlayer( error + "** Syntax - /permban <player/ID/name> <reason>", player );
1955else
1956{
1957local args_ = split( text, " " );
1958if ( Getreason(text, 2).len() <= 1 ) MessagePlayer( error + "** Syntax - /permban <player/ID/name> <reason>", player );
1959else
1960{
1961Ban( args_[0], "perma", Getreason(text, 1), player );
1962}
1963}
1964}
1965
1966
1967else if ( cmd == "unban" )
1968{
1969if ( !text ) MessagePlayer( error + "** Syntax - /unban <name>", player );
1970else
1971{
1972local q = QuerySQL( sq_DB, "SELECT Name, UID, Time, Expires FROM Bans WHERE lower (Name) = '" + escapeSQLString( text.tolower() ) + "'" );
1973if ( GetSQLColumnData( q, 0 ) != null )
1974{
1975if ( ( time() - GetSQLColumnData( q, 2 ).tointeger() ) >= GetSQLColumnData( q, 3 ).tointeger() )
1976{
1977MessagePlayer( error + "** Error - This player is not banned!", player );
1978QuerySQL( sq_DB, "DELETE FROM Bans WHERE UID='" + escapeSQLString( GetSQLColumnData( q, 1 ) ) + "'" );
1979}
1980else
1981{
1982Message( a_msg + "** Admin " + player + " has unbanned the player -" + text + "" );
1983 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has unbanned the player -" + text + "" );
1984QuerySQL( sq_DB, "DELETE FROM Bans WHERE UID='" + escapeSQLString( GetSQLColumnData( q, 1 ) ) + "'" );
1985}
1986}
1987else MessagePlayer( error + "** Error - This player is not banned!", player );
1988FreeSQLQuery( q );
1989}
1990}
1991
1992else if ( cmd == "exec" )
1993{
1994if ( !text ) MessagePlayer( error + "** Syntax - /" + cmd + " <code>", player );
1995else
1996{
1997try
1998 {
1999 local script = compilestring( text );
2000 script();
2001 }
2002 catch(e) MessagePlayer( error + "** Error - " + e, player);
2003}
2004}
2005}
2006if ( cmd_found == false ) MessagePlayer( error + "** Error - Invalid command, please check /cmds to view the command list.", player );
2007}
2008
2009function onPlayerPart( player, reason )
2010{
2011local p = Pinfo[ player.ID ];
2012if ( Pinfo[ player.ID ].isRegistered == true && Pinfo[ player.ID ].isLogged == true )
2013{
2014p.Lastplay = time();
2015p.Playtime = p.Playtime + ( time() - p.Jointime );
2016QuerySQL(sq_DB,"UPDATE Accounts SET UID='" + p.UID + "', Kills='" + p.Kills + "', Deaths='" + p.Deaths + "', Spree='" + p.TopSpree + "', Joins='" + p.Joins + "', Lastplay='" + p.Lastplay + "', Playtime='" + p.Playtime + "', Level='" + p.Level + "', BriefDropped='" + p.BriefDropped + "' WHERE Lower(Name)='" + player.Name.tolower() + "'");
2017}
2018
2019if ( player.Team == 1 && player.IsSpawned )
2020{
2021p.Team = 0;
2022Yellow_total--;
2023}
2024
2025if ( player.Team == 2 && player.IsSpawned )
2026{
2027p.Team = 0;
2028Blue_total--;
2029}
2030
2031if ( GameActive && Startwar && p.inGame )
2032{
2033
2034if ( p.BriefCaptured == true )
2035{
2036Message("[#b0b0b0]** " + GetTeamColor( player ) + player.Name + " [#b0b0b0]has lost the briefcase, respawning the briefcase in 10 seconds!" );
2037AnnounceAll( "~w~\n \n \n \n \n \n \n Respawning briefcase in ~p~10 seconds!", 7 );
2038p.BriefCaptured = false;
2039brief_respawn = true;
2040brief_capturing = null;
2041p.BriefCTime = 0;
2042player.IsDrunk = false;
2043::myDiscord.sendMessage("659726989623558183","**" + player.Name + "** has lost the briefcase, respawning the briefcase in **10** seconds!" );
2044player.RemoveWeapon(100);
2045GivePreviousWeapons( player );
2046Announce( "", player, 7 );
2047}
2048
2049if ( Blue_total < 1 ) EndGame();
2050if ( Yellow_total < 1 ) EndGame();
2051
2052if ( p.Spree >= 5 )
2053{
2054Message( "[#b0b0b0]** " + GetTeamColor( player ) + player + " [#b0b0b0]has ended his own killing spree of " + p.Spree + " kills!" );
2055::myDiscord.sendMessage("659726989623558183","**" + player + "** has ended his own killing spree of **" + p.Spree + "** kills!" );
2056p.Spree = 0;
2057}
2058p.Spree = 0;
2059p.Current = "spawnpos";
2060}
2061local res = GetPartReason( reason );
2062::myDiscord.sendMessage("659726989623558183","**"+player+"** **" + res + "**." );
2063Message( "[#b0b0b0]** " + player.Name + " " + res + "." );
2064p.inTeam = false;
2065}
2066
2067function onPlayerDeath( player, reason )
2068{
2069local p = Pinfo[ player.ID ];
2070local death_ = GetDeathReason( reason );
2071if ( GameActive == true && Startwar == true )
2072{
2073if ( p.inGame )
2074{
2075switch( p.Team )
2076{
2077case 1:
2078Message("[#b0b0b0]** [#ffff00]" + player.Name + " [#b0b0b0]" + death_ + ", [#007bff]Blue [#b0b0b0]have gained +1 point!" );
2079Blue_score++;
2080::myDiscord.sendMessage("659726989623558183","**" + player.Name + " " + death_ + "**, Blue have gained **+1** point!" );
2081break;
2082
2083case 2:
2084Message("[#b0b0b0]** [#007bff]" + player.Name + " [#b0b0b0]" + death_ + ", [#ffff00]Yellow [#b0b0b0]have gained +1 point!" );
2085Yellow_score++;
2086::myDiscord.sendMessage("659726989623558183","**" + player.Name + " " + death_ + "**, Yellow have gained **+1** point!" );
2087break;
2088}
2089if ( p.BriefCaptured == true )
2090{
2091Message("[#b0b0b0]** " + GetTeamColor( player ) + player.Name + " [#b0b0b0]has lost the briefcase, respawning the briefcase in 10 seconds!" );
2092AnnounceAll( "~w~\n \n \n \n \n \n \n Respawning briefcase in ~p~10 seconds!", 7 );
2093p.BriefCaptured = false;
2094brief_respawn = true;
2095brief_capturing = null;
2096p.BriefCTime = 0;
2097player.IsDrunk = false;
2098::myDiscord.sendMessage("659726989623558183","**" + player.Name + "** has lost the briefcase, respawning the briefcase in 10 seconds!" );
2099player.RemoveWeapon(100);
2100GivePreviousWeapons( player );
2101Announce( "", player, 6 );
2102}
2103p.Current = "spawnpos";
2104}
2105
2106if ( p.Spree >= 5 )
2107{
2108Message( "[#b0b0b0]** " + GetTeamColor( player ) + player + " [#b0b0b0]has ended his own killing spree of " + p.Spree + " kills!" );
2109::myDiscord.sendMessage("659726989623558183","**"+ player + " has ended his own killing spree of **" + p.Spree + "** kills!" );
2110p.Spree = 0;
2111}
2112p.Spree = 0;
2113}
2114
2115if ( player.Team == 1 )
2116{
2117p.Team = 0;
2118Yellow_total--;
2119}
2120if ( player.Team == 2 )
2121{
2122p.Team = 0;
2123Blue_total--;
2124}
2125p.Deaths++;
2126if ( p.inGame == false ) Message("[#b0b0b0]** " + GetTeamColor( player ) + player.Name + " [#b0b0b0]" + death_ + "" );
2127p.inTeam = false;
2128}
2129
2130
2131function onPlayerKill( killer, player, reason, bodypart )
2132{
2133local dist = "" + DistanceFromPoint( killer.Pos.x, killer.Pos.y, player.Pos.x, player.Pos.y ) + "";
2134local health = Increasehealth( killer, 5 );
2135killer.Health += health;
2136local findwep;
2137if ( reason == 100 ) findwep = "briefcase";
2138else if ( reason == 60 ) findwep = "heli blade";
2139else findwep = GetWeaponName( reason ).tolower();
2140Message( "[#b0b0b0]** " + GetTeamColor( killer ) + killer + " [#b0b0b0]killed " + GetTeamColor( player ) + player + " [#b0b0b0]with a " + findwep + " to " + GetBodyPart( bodypart ) + " (" + dist.slice( 0, 4 ) + "m)" );
2141if ( killer.Health != 100 ) MessagePlayer( "[#b0b0b0]** HP Addon: [#ffffff]" + health + "%", killer );
2142::myDiscord.sendMessage("659726989623558183","**" + killer + "** killed **" + player + "** with **" + findwep + "** to **" + GetBodyPart( bodypart ) + "** **(" + dist.slice( 0, 4 ) + "m)**" );
2143local p = Pinfo[ killer.ID ], plr = Pinfo[ player.ID ];
2144if ( GameActive == true && Startwar == true )
2145{
2146if ( plr.inGame )
2147{
2148p.Kills++;
2149plr.Deaths++;
2150p.TopScore++;
2151plr.Current = "spawnpos";
2152switch( plr.Team )
2153{
2154case 1:
2155Message("[#b0b0b0]** [#007bff]Blue [#b0b0b0]have gained +1 point!" );
2156Blue_score++;
2157::myDiscord.sendMessage("659726989623558183","Blue have gained **+1** point!" );
2158break;
2159
2160case 2:
2161Message("[#b0b0b0]** [#ffff00]Yellow [#b0b0b0]have gained +1 point!" );
2162Yellow_score++;
2163::myDiscord.sendMessage("659726989623558183","Yellow have gained **+1** point!" );
2164break;
2165}
2166if ( plr.BriefCaptured == true )
2167{
2168Message("[#b0b0b0]** " + GetTeamColor( player ) + player.Name + " [#b0b0b0]has lost the briefcase, respawning the briefcase in 10 seconds!" );
2169AnnounceAll( "~w~\n \n \n \n \n \n \n Respawning briefcase in ~p~10 seconds!", 7 );
2170plr.BriefCaptured = false;
2171brief_respawn = true;
2172brief_capturing = null;
2173plr.BriefCTime = 0;
2174player.IsDrunk = false;
2175::myDiscord.sendMessage("659726989623558183","**" + player.Name + "** has lost the briefcase, respawning the briefcase in 10 seconds!" );
2176player.RemoveWeapon(100);
2177GivePreviousWeapons( player );
2178Announce( "", player, 7 );
2179}
2180
2181 p.Spree++;
2182
2183 if ( p.Spree > p.TopSpree ) p.TopSpree = p.Spree;
2184
2185 if ( p.Spree > 0 && ( p.Spree % 5 ) == 0 )
2186 {
2187 local player_team;
2188 local c_spree = p.Spree;
2189 if ( killer.Team == 1 ) { player_team = "Yellow"; Yellow_score = Yellow_score+c_spree; }
2190 else { player_team = "Blue"; Blue_score = Blue_score+c_spree; }
2191 Message( "[#b0b0b0]** " + GetTeamColor( killer ) + killer + " [#b0b0b0]is on a killing spree of " + c_spree + " kills, " + GetTeamColor( killer ) + player_team + " [#b0b0b0]have gained +" + c_spree + " points!" );
2192 ::myDiscord.sendMessage("659726989623558183","**" + killer +"** is on a killing spree of **" + c_spree + "** kills, **" + player_team + "** have gained **+" + c_spree + "** points!" );
2193 killer.PlaySound( 50002 );
2194 if ( c_spree == 10 ) killer.PlaySound( 50004 );
2195 }
2196
2197 if ( plr.Spree >= 5 )
2198 {
2199 local c_spree = ( plr.Spree / 2 );
2200 local player_team;
2201 if ( player.Team == 1 ) { player_team = "Blue"; Blue_score = Blue_score+c_spree; }
2202 else { player_team = "Yellow"; Yellow_score = Yellow_score+c_spree; }
2203 Message( "[#b0b0b0]** " + GetTeamColor( killer ) + killer + " [#b0b0b0]has ended " + GetTeamColor( player ) + player + "[#b0b0b0]'s killing spree of " + plr.Spree + " kills, " + GetTeamColor( killer ) + player_team + " [#b0b0b0]have gained +" + c_spree + " points" );
2204 ::myDiscord.sendMessage("659726989623558183","**" + killer +"** has ended **" + player + "**'s killing spree of **" + plr.Spree + "** kills, **" + player_team + "** have gained **+" + c_spree + "** points!" );
2205 plr.Spree = 0;
2206 killer.PlaySound( 50005 );
2207 }
2208 plr.Spree = 0;
2209
2210if ( bodypart == 6 ) killer.PlaySound( 50003 );
2211}
2212}
2213
2214if ( player.Team == 1 )
2215{
2216plr.Team = 0;
2217Yellow_total--;
2218}
2219if ( player.Team == 2 )
2220{
2221plr.Team = 0;
2222Blue_total--;
2223}
2224plr.inTeam = false;
2225}
2226
2227function GetPlayer( plr )
2228{
2229if ( plr ) {
2230if ( IsNum( plr ) ) {
2231plr = FindPlayer( plr.tointeger() );
2232if ( plr ) return plr;
2233else return false;
2234}
2235else {
2236plr = FindPlayer( plr );
2237if ( plr ) return plr;
2238else return false;
2239}
2240}
2241else return false;
2242}
2243
2244function onPlayerRequestClass( player, classID, team, skin )
2245{
2246player.Angle = -3.13177;
2247switch( team )
2248{
2249case 1:
2250Announce( "~w~Team ~y~Yellow", player, 6 );
2251player.World = 4;
2252break;
2253case 2:
2254Announce( "~w~Team ~x~Blue", player, 6 );
2255player.World = 4;
2256break;
2257case 3:
2258Announce( "~w~Referee", player, 6 );
2259player.World = 6;
2260break;
2261}
2262}
2263
2264function onPlayerRequestSpawn( player )
2265{
2266local p = Pinfo[ player.ID ];
2267if ( p.isRegistered == true && p.isLogged == false )
2268{
2269MessagePlayer( error + "** You need to login in your account to spawn, please use /login!", player );
2270}
2271else if ( p.isRegistered == false )
2272{
2273MessagePlayer( error + "** You need to register your account to spawn, please use /register!", player );
2274}
2275else if ( player.Team == 3 )
2276 {
2277 MessagePlayer( error + "** Error - You can't spawn as a referee, please use /spec to spectate", player );
2278 return 0;
2279 }
2280else if ( TeamBalancer == true )
2281 {
2282 local Yellow = Yellow_total, Blue = Blue_total, total = Yellow.tofloat() + Blue.tofloat();
2283 if ( ( Yellow != 0 || Blue != 0 ) )
2284 {
2285 if ( player.Team == 1 && ( Yellow.tofloat() > total.tofloat() / 2 ) )
2286 {
2287 MessagePlayer( error + "** Error - Please spawn as Blue, the team is having more players!", player );
2288 return 0;
2289 }
2290 else return 1;
2291
2292 if ( player.Team == 2 && ( Blue.tofloat() > total.tofloat() / 2 ) )
2293 {
2294 MessagePlayer( error + "** Error - Please spawn as Yellow, the team is having more players!", player );
2295 return 0;
2296 }
2297 else return 1;
2298 }
2299 else return 1;
2300 }
2301else return 1;
2302}
2303
2304function onPlayerSpawn(player)
2305{
2306local num1 = Random(1, 3);
2307player.World = 1;
2308PlaySound( player.UniqueWorld ,368, player.Pos );
2309local p = Pinfo[ player.ID ];
2310if ( player.Team == 1 )
2311{
2312MessagePlayer( "[#ffffff]** You have spawned as Team [#ffff00]Yellow.", player );
2313p.Team = 1;
2314Yellow_total++;
2315}
2316if ( player.Team == 2 )
2317{
2318MessagePlayer( "[#ffffff]** You have spawned as Team [#007bff]Blue.", player );
2319p.Team = 2;
2320Blue_total++;
2321}
2322
2323if ( GameActive == false && Startwar == false )
2324{
2325player.CanAttack = false;
2326player.Pos = player.Pos;
2327player.Pos = GetLocation( "lobby" );
2328player.Health = 100;
2329p.Current = "lobby";
2330SetTime( 0, 0);
2331}
2332if ( GameActive == false ) BeginVoting();
2333
2334player.Disarm();
2335if( Startwar && p.inGame == true )
2336{
2337GivePacks( p.Pack, player );
2338
2339if ( player.Team == 1 ){ player.Pos = Vector(YeSpawn.x + num1, YeSpawn.y + num1, YeSpawn.z); p.Current = "Yellow"; }
2340if ( player.Team == 2 ){ player.Pos = Vector(BlSpawn.x + num1, BlSpawn.y + num1, BlSpawn.z); p.Current = "Blue"; }
2341}
2342
2343if ( Startwar == false && cd_tick >= 10 )
2344{
2345local p = Pinfo[ player.ID ];
2346player.IsFrozen = true;
2347player.Pos = player.Pos;
2348if ( player.Team == 1 ) { player.Pos = Vector(YeSpawn.x + num1, YeSpawn.y + num1, YeSpawn.z); p.Current = "Yellow"; }
2349if ( player.Team == 2 ) { player.Pos = Vector(BlSpawn.x + num1, BlSpawn.y + num1, BlSpawn.z); p.Current = "Blue"; }
2350p.inPack = true;
2351MessagePlayer( "[#ffffff]** You can choose your pack by using the [#ff0000]/pack [#ffffff]command", player );
2352}
2353p.inTeam = true;
2354}
2355
2356function GetTimeFormat( secs )
2357{
2358 local nDays, nHours, nMinutes, nMonths, nYears, nTime = "";
2359 nYears = secs/31536000;
2360 secs = secs%31536000;
2361 nMonths = secs/2678400;
2362 secs = secs%2678400;
2363 nDays = secs/86400;
2364 secs = secs%86400;
2365 nHours = secs/3600;
2366 secs = secs%3600;
2367 nMinutes = secs/60;
2368 secs = secs%60;
2369 if( nYears != 0 ) nTime = nTime + nYears + " year" + (nYears > 1 ? "s":"");
2370 if( nMonths != 0 ) nTime = nTime + (nTime != "" ? ", ":"") + nMonths + " month" + (nMonths > 1 ? "s":"");
2371 if( nDays != 0 ) nTime = nTime + (nTime != "" ? ", ":"") + nDays + " day" + (nDays > 1 ? "s":"");
2372 if( nHours != 0 ) nTime = nTime + (nTime != "" ? ", ":"") + nHours + " hour" + (nHours > 1 ? "s":"");
2373 if( nMinutes != 0 ) nTime = nTime + (nTime != "" ? ", ":"") + nMinutes + " min" + (nMinutes > 1 ? "s":"");
2374 if( secs != 0 ) nTime = nTime + (nTime != "" ? ", ":"") + secs + " sec" + (secs > 1 ? "s":"");
2375 return nTime;
2376}
2377
2378function Teamlist( team )
2379{
2380local a = 0, b = 0, c = 0;
2381while ( a < GetMaxPlayers() )
2382{
2383local plr = FindPlayer( a );
2384if ( plr )
2385{
2386local p = Pinfo[ plr.ID ];
2387if ( p.inTeam )
2388{
2389local team = Pinfo[ plr.ID ].Team;
2390if ( team == 1 )
2391{
2392if ( b ) b = b + ", " + plr.Name + " ";
2393else b = plr.Name + " ";
2394}
2395if ( team == 2 )
2396{
2397if ( c ) c = c + ", " + plr.Name + " ";
2398else c = plr.Name + " ";
2399}
2400}
2401}
2402a++;
2403}
2404switch( team )
2405{
2406case "Yellow":
2407if ( b == 0 ) return "";
2408else return b;
2409case "Blue":
2410if ( c == 0 ) return "";
2411else return c;
2412}
2413}
2414
2415function GameUpdate()
2416{
2417if (GameActive == false) Game_timer.Stop();
2418else
2419{
2420if ( Startwar == false )
2421{
2422cd_tick++;
2423Stream.WriteInt(57);
2424Stream.WriteString( (30 - cd_tick ) + " seconds left to start the game!" );
2425Stream.SendStream(null);
2426//AnnounceAll("~o~ \n \n \n \n \n \n \n \n " + (30 - cd_tick ) + " ~w~secs left to start!", 6 );
2427if ( cd_tick == 30 )
2428{
2429cd_tick = 0;
2430Startwar = true;
2431for( local i = 0; i <= GetMaxPlayers(); i++ )
2432{
2433local plr = FindPlayer( i );
2434if ( plr )
2435{
2436local p = Pinfo[ plr.ID ];
2437plr.CanAttack = true;
2438p.inGame = true;
2439//AnnounceAll("~w~ \n \n \n \n \n \n \n \n", 6 );
2440Stream.WriteInt(59);
2441Stream.WriteString( "");
2442Stream.SendStream(null);
2443if ( plr.IsFrozen == true ) plr.IsFrozen = false;
2444p.inPack = false;
2445GivePacks( p.Pack, plr );
2446}
2447}
2448}
2449
2450if ( cd_tick == 10 )
2451{
2452 if (markers_created == false)
2453 {
2454 CreateMarkers();
2455 CreatePickups();
2456 GetLocations();
2457 }
2458 for( local i=0; i <= GetMaxPlayers(); i++ )
2459 {
2460 local plr = FindPlayer( i );
2461 if (plr)
2462 {
2463 local p = Pinfo[ plr.ID ];
2464 plr.IsFrozen = true;
2465 plr.Pos = plr.Pos;
2466 if ( plr.Team == 1 ) { plr.Pos = Vector(YeSpawn.x, YeSpawn.y, YeSpawn.z); p.Current = "Yellow"; }
2467 if ( plr.Team == 2 ) { plr.Pos = Vector(BlSpawn.x, BlSpawn.y, BlSpawn.z); p.Current = "Blue"; }
2468 p.inPack = true;
2469 MessagePlayer( "[#ffffff]** You can choose your pack by using the [#ff0000]/pack [#ffffff]command", plr );
2470 }
2471 }
2472}
2473if ( Blue_total < 1 ) EndGame2();
2474if ( Yellow_total < 1 ) EndGame2();
2475}
2476
2477if ( Startwar == true )
2478{
2479Game_time--;
2480local t_left = ConvertSecondsToMS( Game_time );
2481//AnnounceAll("~o~ \n \n \n \n \n \n \n \n ~y~(C) " + Yellow_score + "~x~ (H)" + Blue_score, 7 );
2482//AnnounceAll( t_left, 5 );
2483
2484Stream.WriteInt(56);
2485Stream.WriteString( Yellow_score + "," + Blue_score + "," + t_left );
2486Stream.SendStream(null);
2487
2488for( local i=0; i <= GetMaxPlayers(); i++ )
2489{
2490local plr = FindPlayer( i );
2491if (plr)
2492{
2493local p = Pinfo[ plr.ID ];
2494if ( p.Briefstatus > 0 && p.PlayerCPos != null )
2495{
2496local args = split( p.PlayerCPos, " " );
2497if ( IsInRadius( BriefPos.x, BriefPos.y, BriefPos.z, plr.Pos.x.tofloat(), plr.Pos.y.tofloat(), plr.Pos.z.tofloat(), 1 ) == false )
2498{
2499if ( p.Briefstatus >= 1 )
2500{
2501if ( plr.Team == 1 ) TeamMessage("[#b0b0b0]** (ALERT) " + GetTeamColor( plr ) + plr + " [#b0b0b0]is trying to capture the briefcase and has failed!", "Blue" );
2502if ( plr.Team == 2 ) TeamMessage("[#b0b0b0]** (ALERT) " + GetTeamColor( plr ) + plr + " [#b0b0b0]is trying to capture the briefcase and has failed!", "Yellow" );
2503}
2504MessagePlayer( error + "** Failed to capture briefcase since you have moved!", plr );
2505p.Briefstatus = 0;
2506p.PlayerCPos = null;
2507Announce( "", plr, 7 );
2508brief_capturing = null;
2509}
2510}
2511
2512if ( p.inGame && p.BriefCaptured && p.BriefCTime > 0 )
2513{
2514if ( ( time() - p.BriefCTime ) >= 50 )
2515{
2516MessagePlayer("[#b0b0b0]** You failed to drop the briefcase at your team barrel, since you've exceeded 50 secs!", plr );
2517Message("[#b0b0b0]** " + GetTeamColor( plr ) + plr.Name + " [#b0b0b0]has failed to drop the briefcase in 50secs, respawning in 10 seconds!" );
2518AnnounceAll( "~w~\n \n \n \n \n \n \n Respawning briefcase in ~p~10 seconds!", 7 );
2519p.BriefCaptured = false;
2520brief_respawn = true;
2521brief_capturing = null;
2522p.BriefCTime = 0;
2523plr.IsDrunk = false;
2524Announce( "", plr, 6 );
2525::myDiscord.sendMessage("659726989623558183","**" + plr.Name + "** has failed to drop the briefcase in 50secs, respawning in 10 seconds!" );
2526plr.RemoveWeapon(100);
2527GivePreviousWeapons( plr );
2528//Announce( "", plr, 7 );
2529}
2530else Announce( "~w~\n \n \n \n \n \n \n Time left to drop - ~x~" + ( 50 - ( time() - p.BriefCTime ) ) + " secs", plr, 7 );
2531}
2532
2533}
2534}
2535
2536if ( briefcase.World == 2 && brief_respawn == true )
2537{
2538briefcount++;
2539if ( briefcount == 10 ) { briefcount = 0; briefcase.World = 1; brief_respawn = false; }
2540}
2541}
2542
2543if ( GameActive && Game_time == 1 )
2544{
2545Respawnvehicles2();
2546}
2547
2548if ( GameActive && Game_time == 0 )
2549{
2550EndGame();
2551}
2552}
2553}
2554
2555function StartGame()
2556{
2557if ( ( Yellow_total < 1 ) || ( Blue_total < 1 ) )
2558{
2559for( local i=0; i <= GetMaxPlayers(); i++ )
2560{
2561local plr = FindPlayer( i );
2562if (plr && plr.IsSpawned)
2563{
2564 MessagePlayer( error + "** Error - Not enough players to start the round.", plr );
2565 if(autostart == true)
2566 {
2567 NewTimer("StartVoted", 20000, 1);
2568 }
2569}
2570}
2571}
2572else
2573{
2574if (game_started == false)
2575{
2576game_started = true;
2577Message( "[#00FFFF]** Starting Base : [#ffffff]" + Bases[base2].Name);
2578Message( "[#ffffff]** The next game will be starting in 30 seconds!" );
2579Message( "[#ffffff]** [#b0b0b0]Game time: [#ffffff]" + Game_min.tointeger() + " minutes" );
2580GameActive = true;
2581Game_timer.Start();
2582::myDiscord.sendMessage("659726989623558183","** Starting Base : " + Bases[base2].Name);
2583::myDiscord.sendMessage("659726989623558183","** The next game will be starting in 30 seconds!" );
2584::myDiscord.sendMessage("659726989623558183","** Game time: " + Game_min.tointeger() + " minutes" );
2585}
2586}
2587}
2588
2589function Loadbarriers()
2590{
2591CreateObject( 314, 1, Vector( -1068.07, -630.729, 12.9276), 255 ).RotateByEuler( Vector( 0, 0, 0.09), 0);
2592CreateObject( 1019, 1, Vector( -1081.86, -572.678, 14.7752), 255 ).RotateByEuler( Vector( 0.029697, 0.0366803, -0.992918), 0);
2593CreateObject( 1019, 1, Vector( -1070.28, -584.071, 14.7581), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, -0.668407), 0);
2594CreateObject( 1019, 1, Vector( -1135.34, -668.994, 14.3928), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, -0.698407), 0);
2595CreateObject( 314, 1, Vector( -1107.67, -631.287, 12.92), 255 ).RotateByEuler( Vector( -3.14159, 3.14159, 1.44159), 0);
2596CreateObject( 509, 1, Vector( -1057.09, -579.834, 15.913), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2597CreateObject( 306, 1, Vector( -1102.85, -346.111, 9.55578), 255 ).RotateByEuler( Vector( -0.0291307, -0.00364984, 0.180052), 0);
2598CreateObject( 306, 1, Vector( -1157.67, -301.557, 9.93742), 255 ).RotateByEuler( Vector( -8.9407e-008, 0, 0), 0);
2599CreateObject( 1019, 1, Vector( -1243.4, -5.16356, 15.4652), 255 ).RotateByEuler( Vector( 0, 2.98023e-008, 0), 0);
2600CreateObject( 314, 1, Vector( -1167.9, -245.058, 11.4465), 255 ).RotateByEuler( Vector( 0.000712572, -0.000705025, 1.43), 0);
2601CreateObject( 314, 1, Vector( -1172.62, -194.115, 13.2465), 255 ).RotateByEuler( Vector( 2.89812, -2.89604, 1.53039), 0);
2602CreateObject( 1151, 1, Vector( -1198.76, -192.009, 13.3327), 255 ).RotateByEuler( Vector( -3.14044, -3.11157, -0.0383899), 0);
2603CreateObject( 314, 1, Vector( -1103.68, -103.548, 12.648), 255 ).RotateByEuler( Vector( -2.09974, 2.14901, 1.5129), 0);
2604CreateObject( 314, 1, Vector( -1135.9, -151.892, 11.4464), 255 ).RotateByEuler( Vector( 0.0143693, 0.0509652, 0.354772), 0);
2605CreateObject( 896, 1, Vector( -1244.89, -59.8435, 9.17208), 255 ).RotateByEuler( Vector( -1.19209e-007, 0, 0), 0);
2606CreateObject( 583, 1, Vector( -1167.14, -55.8827, 10.5359), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 0.0215926), 0);
2607CreateObject( 583, 1, Vector( -1168.19, -62.6797, 10.6264), 255 ).RotateByEuler( Vector( 0, 0, -0.07), 0);
2608CreateObject( 1019, 1, Vector( -1066.31, -78.503, 15.6814), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 1.10159), 0);
2609CreateObject( 1019, 1, Vector( -1059.15, -56.7943, 15.9403), 255 ).RotateByEuler( Vector( -3.14159, 3.14159, -0.428407), 0);
2610CreateObject( 1019, 1, Vector( -1016.95, 160.148, 13.5131), 255 ).RotateByEuler( Vector( -3.13035, -3.1208, -0.358785), 0);
2611CreateObject( 1019, 1, Vector( -1049.08, 13.811, 11.4059), 255 ).RotateByEuler( Vector( 0, 0, 0.4), 0);
2612CreateObject( 817, 1, Vector( -1132.52, 36.5255, 20.0163), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, -0.158408), 0);
2613CreateObject( 2264, 1, Vector( -1141.52, 35.5361, 25.6363), 255 ).RotateByEuler( Vector( -3.09159, -3.14159, 1.53159), 0);
2614CreateObject( 344, 1, Vector( -1140.54, 35.4491, 22.1562), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2615CreateObject( 306, 1, Vector( -1102.85, -346.111, 9.55578), 255 ).RotateByEuler( Vector( -0.0291307, -0.00364984, 0.180052), 0);
2616CreateObject( 306, 1, Vector( -1157.67, -301.557, 9.93742), 255 ).RotateByEuler( Vector( -8.9407e-008, 0, 0), 0);
2617CreateObject( 314, 1, Vector( -1194.46, 34.926, 31.5974), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 1.56159), 0);
2618CreateObject( 314, 1, Vector( -1167.9, -245.058, 11.4465), 255 ).RotateByEuler( Vector( 0.000712572, -0.000705025, 1.43), 0);
2619CreateObject( 314, 1, Vector( -1172.62, -194.115, 13.2465), 255 ).RotateByEuler( Vector( 2.89812, -2.89604, 1.53039), 0);
2620CreateObject( 1151, 1, Vector( -1214.36, -243.651, 16.9849), 255 ).RotateByEuler( Vector( -2.14032, -2.14003, -1.53518), 0);
2621CreateObject( 314, 1, Vector( -1103.68, -103.548, 12.648), 255 ).RotateByEuler( Vector( -2.09974, 2.14901, 1.5129), 0);
2622CreateObject( 314, 1, Vector( -1135.9, -151.892, 11.4464), 255 ).RotateByEuler( Vector( 0.0143693, 0.0509652, 0.354772), 0);
2623CreateObject( 314, 1, Vector( -1194.29, 44.7413, 31.4974), 255 ).RotateByEuler( Vector( -0.000388457, 8.86219e-005, 1.52), 0);
2624CreateObject( 314, 1, Vector( -1194.09, 54.8464, 31.6774), 255 ).RotateByEuler( Vector( 0, 0, 1.47), 0);
2625CreateObject( 1019, 1, Vector( -1166.88, 60.2435, 21.0266), 255 ).RotateByEuler( Vector( -1.99007, 1.55796, -0.00446491), 0);
2626CreateObject( 314, 1, Vector( -1149.38, 74.4751, 18.4054), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2627CreateObject( 1019, 1, Vector( -1059.15, -56.7943, 15.9403), 255 ).RotateByEuler( Vector( -3.14159, 3.14159, -0.428407), 0);
2628CreateObject( 310, 1, Vector( -1139.68, 74.6657, 16.5576), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2629CreateObject( 1019, 1, Vector( -1049.08, 13.811, 11.4059), 255 ).RotateByEuler( Vector( 0, 0, 0.4), 0);
2630CreateObject( 1019, 1, Vector( -1022.44, 97.6821, 14.0863), 255 ).RotateByEuler( Vector( 3.14159, -3.14159, -0.358407), 0);
2631CreateObject( 1019, 1, Vector( -1197.83, 73.6669, 28.3166), 255 ).RotateByEuler( Vector( 0, 0, 0.41), 0);
2632CreateObject( 1019, 1, Vector( -1060.83, 159.789, 15.2921), 255 ).RotateByEuler( Vector( -2.17469, -2.20969, -1.51314), 0);
2633CreateObject( 1019, 1, Vector( -1121.72, -727.13, 13.6445), 255 ).RotateByEuler( Vector( 3.14159, -3.14159, 0.591593), 0);
2634CreateObject( 500, 1, Vector( -1903.7, -17.8781, 34.7495), 255 ).RotateByEuler( Vector( 0, 0, -0.216815), 0);
2635CreateObject( 314, 1, Vector( -1234.26, -561.046, 16.683), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2636CreateObject( 314, 1, Vector( -1245.71, -560.988, 16.6489), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2637CreateObject( 1019, 1, Vector( -1263.37, -399.97, 15.568), 255 ).RotateByEuler( Vector( -0.0115419, -0.0216956, 0.400915), 0);
2638CreateObject( 1019, 1, Vector( -1261.74, -337.562, 14.8454), 255 ).RotateByEuler( Vector( 0, 0, 0.45), 0);
2639CreateObject( 1109, 1, Vector( -1206.32, -443.147, 20.6391), 255 ).RotateByEuler( Vector( 2.81801, -2.81667, 1.4767), 0);
2640CreateObject( 314, 1, Vector( -1168.45, -461.132, 13.3497), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 1.5416), 0);
2641CreateObject( 314, 1, Vector( -1173.54, -435.982, 11.7655), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 1.5416), 0);
2642CreateObject( 314, 1, Vector( -1176.41, -408.413, 12.2273), 255 ).RotateByEuler( Vector( 0, 0, 1.56001), 0);
2643CreateObject( 314, 1, Vector( -1179.89, -381.612, 13.1477), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 1.5616), 0);
2644CreateObject( 314, 1, Vector( -1173.99, -377.476, 13.5418), 255 ).RotateByEuler( Vector( 0, 0, 0.31), 0);
2645CreateObject( 1019, 1, Vector( -1163.56, -355.675, 14.6167), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, -0.481593), 0);
2646CreateObject( 645, 1, Vector( -1266.97, -115.061, 21.6564), 255 ).RotateByEuler( Vector( -2.74952, -1.9589, 1.51845), 0);
2647CreateObject( 1019, 1, Vector( -1262.03, -275.068, 14.8664), 255 ).RotateByEuler( Vector( -1.77276e-014, 1.19209e-007, 0.446815), 0);
2648CreateObject( 1019, 1, Vector( -1168.75, -292.903, 14.766), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, -0.548408), 0);
2649CreateObject( 1151, 1, Vector( -1188.54, -293.342, 14.4356), 255 ).RotateByEuler( Vector( 3.14159, -3.14159, 0.00159231), 0);
2650CreateObject( 314, 1, Vector( -1048.95, 46.3083, 12.6322), 255 ).RotateByEuler( Vector( 0, 0, 1.56001), 0);
2651CreateObject( 314, 1, Vector( -1048.08, 11.0325, 12.729), 255 ).RotateByEuler( Vector( 0, 0, 1.55999), 0);
2652}
2653
2654function ConvertSecondsToMS(secs)
2655{
2656 local t_mins = floor(secs / 60);
2657 local t_secs = secs % 60;
2658 if(t_secs < 10)
2659 {
2660 t_secs = "0"+ t_secs;
2661 }
2662 return t_mins +":"+ t_secs;
2663}
2664
2665
2666function Resetstuffs()
2667{
2668local top_name, top_score = 0;
2669for( local i=0; i <= GetMaxPlayers(); i++ )
2670{
2671local plr = FindPlayer( i );
2672if (plr && Pinfo[plr.ID].inGame)
2673{
2674local p = Pinfo[ plr.ID ];
2675plr.CanAttack = false;
2676p.inGame = false;
2677if ( plr.Vehicle ) { plr.Pos = plr.Pos; }
2678plr.Pos = Vector( plr.Pos.x, plr.Pos.y, plr.Pos.z + 6 );
2679plr.Pos = GetLocation( "lobby" );
2680p.Current = "lobby";
2681plr.Health = 100;
2682if ( p.TopScore > top_score ) { top_score = p.TopScore; top_name = plr.Name; Top_Score = plr.Name + " (" + top_score + ")"; }
2683p.TopScore = 0;
2684p.Packs = 0;
2685p.Spree = 0;
2686plr.Disarm();
2687p.Briefstatus = 0;
2688p.PlayerCPos = null;
2689p.BriefCaptured = false;
2690plr.IsDrunk = false;
2691p.BriefCTime = 0;
2692p.hasVoted = false;
2693
2694}
2695}
2696GameActive = false;
2697started = false;
2698markers_created = false;
2699game_started = false;
2700Game_timer.Stop();
2701Startwar = false;
2702Game_time = ( Game_min.tointeger() * 60 );
2703Blue_score = 0;
2704Yellow_score = 0;
2705BeginVoting();
2706ResetVotes();
2707Stream.WriteInt(58);
2708Stream.WriteString( "");
2709Stream.SendStream(null);
2710briefcase.World = 1;
2711briefcount = 0;
2712brief_respawn = false;
2713brief_capturing = null;
2714}
2715
2716function EndGame()
2717{
2718Respawnvehicles2();
2719if ( Yellow_score > Blue_score ) { Message( "[#ffffff]** [#ffff00]Team Yellow [#ffffff]have won the match!" ); ::myDiscord.sendMessage("659726989623558183","** Yellow have won the match!" ); }
2720if ( Blue_score > Yellow_score ) { Message( "[#ffffff]** [#007bff]Team Blue [#ffffff]have won the match!" ); ::myDiscord.sendMessage("659726989623558183","** Blue have won the match!" ); }
2721if ( Blue_score == Yellow_score ) Message( "[#ffffff]** [#ffffff]Both the team is in draw resulting in Tie match!" );
2722Message( "[#ffffff]** Score: [#ffff00](Yellow) " + Yellow_score + "[#ffffff] :[#007bff](Blue) " + Blue_score );
2723::myDiscord.sendMessage("659726989623558183","Score: **(Yellow): " + Yellow_score + "** | **(Blue): " + Blue_score +"**" );
2724Resetstuffs();
2725if ( Top_Score ) { Message( "[#b0b0b0]** Man of the match: [#ffffff] " + Top_Score ); ::myDiscord.sendMessage("659726989623558183","** Man of the match: " + Top_Score ); }
2726Top_Score = null;
2727
2728if(YMarker)
2729{
2730 DestroyMarker(YMarker);
2731 DestroyMarker(BMarker);
2732 DestroyMarker(BrMarker);
2733 briefcase.Remove();
2734 Yellow_barrel.Remove();
2735 Blue_barrel.Remove();
2736}
2737
2738}
2739
2740function EndGame2()
2741{
2742cd_tick = 0;
2743GameActive = false;
2744started = false;
2745Game_timer.Stop();
2746
2747if(YMarker)
2748{
2749 DestroyMarker(YMarker);
2750 DestroyMarker(BMarker);
2751 DestroyMarker(BrMarker);
2752}
2753
2754for( local i = 0; i <= GetMaxPlayers(); i++ )
2755{
2756local plr = FindPlayer( i );
2757if ( plr )
2758{
2759local p = Pinfo[ plr.ID ];
2760if ( plr.CanAttack == true ) plr.CanAttack = false;
2761Stream.WriteInt(59);
2762Stream.WriteString( "");
2763Stream.SendStream(null);
2764if ( plr.IsFrozen == true ) plr.IsFrozen = false;
2765if ( plr.Vehicle ) plr.Pos = plr.Pos;
2766plr.Pos = GetLocation( "lobby" );
2767p.Current = "lobby";
2768if ( plr.IsSpawned ) MessagePlayer( error + "** Error - Not enough players to start the round.", plr );
2769}
2770}
2771}
2772
2773function GivePacks( id, player )
2774{
2775player.Disarm();
2776switch( id.tointeger() )
2777{
2778case 0:
2779player.GiveWeapon( 19, 9999 );
2780player.GiveWeapon( 25, 9999 );
2781player.GiveWeapon( 32, 9999 );
2782break;
2783
2784case 1:
2785player.GiveWeapon( 19, 9999 );
2786player.GiveWeapon( 25, 9999 );
2787player.GiveWeapon( 27, 9999 );
2788player.GiveWeapon( 12, 10 );
2789break;
2790
2791case 2:
2792player.GiveWeapon( 20, 9999 );
2793player.GiveWeapon( 25, 9999 );
2794player.GiveWeapon( 11, 9999 );
2795player.GiveWeapon( 17, 9999 );
2796break;
2797
2798case 3:
2799player.GiveWeapon( 19, 9999 );
2800player.GiveWeapon( 25, 9999 );
2801player.GiveWeapon( 29, 9999 );
2802break;
2803
2804case 4:
2805player.GiveWeapon( 21, 9999 );
2806player.GiveWeapon( 25, 9999 );
2807player.GiveWeapon( 26, 9999 );
2808break;
2809
2810case 5:
2811player.GiveWeapon( 19, 9999 );
2812player.GiveWeapon( 25, 9999 );
2813player.GiveWeapon( 28, 9999 );
2814break;
2815
2816case 6:
2817player.GiveWeapon( 19, 9999 );
2818player.GiveWeapon( 25, 9999 );
2819player.GiveWeapon( 30, 12 );
2820break;
2821
2822case 7:
2823player.GiveWeapon( 19, 9999 );
2824player.GiveWeapon( 25, 9999 );
2825player.GiveWeapon( 13, 10 );
2826break;
2827}
2828}
2829
2830function onPickupPickedUp( player, pickup )
2831{
2832local p = Pinfo[ player.ID ];
2833if( GameActive && Startwar && p.inGame )
2834{
2835switch( pickup.Model )
2836{
2837case 6010:
2838if ( !player.Vehicle )
2839{
2840if ( brief_capturing == null || brief_capturing == player.Name )
2841{
2842p.PlayerCPos = player.Pos.x + " " + player.Pos.y + " " + player.Pos.z;
2843p.Briefstatus++;
2844Announce( "~w~\n \n \n \n \n \n \n Capturing briefcase in ~t~" + ( 3 - p.Briefstatus ) + " secs", player, 7 );
2845player.PlaySound( 335 );
2846if( p.Briefstatus == 1 )
2847{
2848MessagePlayer("[#b0b0b0]** You are now capturing the briefcase, please stand still for [#ffffff]3 seconds", player );
2849}
2850if( p.Briefstatus == 3 )
2851{
2852MessagePlayer("[#b0b0b0]** You have captured the briefcase, now drop it in your base barrel! (You got only 50secs to drop)", player );
2853Message("[#b0b0b0]** " + GetTeamColor( player ) + player.Name + " [#b0b0b0]has captured the briefcase!" );
2854Announce( "", player, 6 );
2855pickup.World = 2;
2856p.Briefstatus = 0;
2857p.PlayerCPos = null;
2858p.BriefCaptured = true;
2859player.PlaySound( 50001 );
2860p.BriefCTime = time();
2861player.IsDrunk = true;
2862::myDiscord.sendMessage("659726989623558183","**" + player.Name + "** has captured the briefcase!" );
2863p.PreviousWep = GetWeaponsAtSlot( player );
2864player.Disarm();
2865player.GiveWeapon(100,999);
2866}
2867brief_capturing = player.Name;
2868}
2869else MessagePlayer( error + "** Error - The briefcase is already being captured by " + brief_capturing + "!", player );
2870}
2871else MessagePlayer( error + "** Error - You cannot capture the briefcase while you are in a vehicle!!", player );
2872break;
2873case 342:
2874if ( p.BriefCaptured == true )
2875{
2876switch( pickup.ID )
2877{
2878case 1:
2879if ( player.Team == 1 )
2880{
2881Message("[#b0b0b0]** " + GetTeamColor( player ) + player.Name + " [#b0b0b0]has dropped the briefcase in their barrel, [#ffff00]Yellow [#b0b0b0]gained +15 points!" );
2882AnnounceAll( "~w~\n \n \n \n \n \n \n Respawning briefcase in ~p~10 seconds!", 7 );
2883p.BriefCaptured = false;
2884Yellow_score = Yellow_score+15;
2885brief_respawn = true;
2886p.BriefDropped++;
2887brief_capturing = null;
2888p.BriefCTime = 0;
2889player.IsDrunk = false;
2890player.PlaySound( 359 );
2891::myDiscord.sendMessage("659726989623558183","**" + player.Name + "** has dropped the briefcase in their barrel, **Yellow** gained **+15** points!" );
2892player.RemoveWeapon(100);
2893GivePreviousWeapons( player );
2894Announce( "", player, 6 );
2895}
2896else MessagePlayer( error + "** This is not your team barrel!", player );
2897break;
2898case 2:
2899if ( player.Team == 2 )
2900{
2901Message("[#b0b0b0]** " + GetTeamColor( player ) + player.Name + " [#b0b0b0]has dropped the briefcase in their barrel, [#007bff]Blue [#b0b0b0]gained +15 points!" );
2902AnnounceAll( "~w~\n \n \n \n \n \n \n Respawning briefcase in ~p~10 seconds!", 7 );
2903p.BriefCaptured = false;
2904Blue_score = Blue_score+15;
2905brief_respawn = true;
2906p.BriefDropped++;
2907brief_capturing = null;
2908p.BriefCTime = 0;
2909player.IsDrunk = false;
2910player.PlaySound( 359 );
2911::myDiscord.sendMessage("659726989623558183","**" + player.Name + "** has dropped the briefcase in their barrel, **Blue** gained **+15** points!" );
2912player.RemoveWeapon(100);
2913GivePreviousWeapons( player );
2914Announce( "", player, 6 );
2915}
2916else MessagePlayer( error + "** This is not your team barrel!", player );
2917break;
2918}
2919
2920}
2921else MessagePlayer( error + "** You have not captured any briefcase yet!", player );
2922break;
2923}
2924}
2925}
2926
2927function GetTeamColor( player )
2928{
2929switch( player.Team )
2930{
2931case 1: return "[#ffff00]";
2932case 2: return "[#007bff]";
2933default: return "[#ffffff]";
2934}
2935}
2936
2937function onScriptUnload()
2938{
2939Message("[#ff0000]SERVER is Restarting!" );
2940AnnounceAll( "~p~Server is Restarting", 3 );
2941::myDiscord.sendMessage("659726989623558183","**Server is Offline now !**" ) ;
2942DisconnectSQL( sq_DB );
2943StopIRC();
2944for( local i=0; i <= GetMaxPlayers(); i++ )
2945{
2946local plr = FindPlayer( i );
2947if (plr ) onPlayerPart( plr, 2 );
2948}
2949}
2950
2951function LoadLobbyObjects()
2952{
2953CreateObject( 896, 1, Vector( -78.0338, 1568.29, 45.7781), 255 ).RotateByEuler( Vector( 0, -3.72529e-09, 0), 0);
2954
2955CreateObject( 1019, 1, Vector( -156.044, 1567.63, 49.9624), 255 ).RotateByEuler( Vector( 0, 0, 0.45), 0);
2956
2957CreateObject( 1019, 1, Vector( -125.033, 1535.99, 49.7624), 255 ).RotateByEuler( Vector( -3.1316, 3.14159, 1.12159), 0);
2958
2959CreateObject( 1019, 1, Vector( -156.044, 1567.63, 58.1924), 255 ).RotateByEuler( Vector( 0, 0, 0.45), 0);
2960
2961CreateObject( 1019, 1, Vector( -95.5115, 1567.72, 49.7024), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, -0.388408), 0);
2962
2963CreateObject( 1019, 1, Vector( -156.044, 1567.63, 66.4323), 255 ).RotateByEuler( Vector( 0, 0, 0.45), 0);
2964
2965CreateObject( 896, 1, Vector( -81.9338, 1568.29, 63.0281), 255 ).RotateByEuler( Vector( -3.13318, -3.72529e-09, 0), 0);
2966
2967CreateObject( 1019, 1, Vector( -125.033, 1535.99, 58.0023), 255 ).RotateByEuler( Vector( -3.1316, 3.14159, 1.12159), 0);
2968
2969CreateObject( 1019, 1, Vector( -125.033, 1535.99, 66.2423), 255 ).RotateByEuler( Vector( -3.1316, 3.14159, 1.12159), 0);
2970
2971CreateObject( 1019, 1, Vector( -123.544, 1597.28, 49.8124), 255 ).RotateByEuler( Vector( 0, 0, -1.12), 0);
2972
2973CreateObject( 1019, 1, Vector( -123.544, 1597.28, 58.0623), 255 ).RotateByEuler( Vector( 0, 0, -1.12), 0);
2974
2975CreateObject( 1019, 1, Vector( -123.544, 1597.28, 66.3124), 255 ).RotateByEuler( Vector( 0, 0, -1.12), 0);
2976
2977CreateObject( 1019, 1, Vector( -95.5115, 1567.72, 57.9224), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, -0.388408), 0);
2978
2979CreateObject( 1019, 1, Vector( -95.5115, 1567.72, 66.1823), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, -0.388408), 0);
2980
2981CreateObject( 1687, 1, Vector( -133.336, 1596.31, 48.9024), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2982
2983CreateObject( 3011, 1, Vector( -155.868, 1533.17, 61.9524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2984
2985CreateObject( 3011, 1, Vector( -155.868, 1533.17, 57.1524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2986
2987CreateObject( 3011, 1, Vector( -155.868, 1533.17, 52.3525), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2988
2989CreateObject( 3011, 1, Vector( -138.168, 1533.17, 52.3525), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2990
2991CreateObject( 3011, 1, Vector( -138.168, 1533.17, 61.9524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2992
2993CreateObject( 3011, 1, Vector( -138.168, 1533.17, 57.1524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2994
2995CreateObject( 3011, 1, Vector( -120.387, 1533.17, 57.1524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2996
2997CreateObject( 3011, 1, Vector( -120.387, 1533.17, 61.9524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
2998
2999CreateObject( 3011, 1, Vector( -120.387, 1533.17, 52.3525), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
3000
3001CreateObject( 3011, 1, Vector( -102.607, 1533.77, 52.3525), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
3002
3003CreateObject( 3011, 1, Vector( -102.607, 1533.77, 57.0524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
3004
3005CreateObject( 3011, 1, Vector( -102.607, 1533.77, 61.8524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
3006
3007CreateObject( 3011, 1, Vector( -94.4263, 1535.6, 52.3889), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3008
3009CreateObject( 3011, 1, Vector( -94.4263, 1535.6, 57.2388), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3010
3011CreateObject( 3011, 1, Vector( -94.4263, 1535.6, 61.9888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3012
3013CreateObject( 3011, 1, Vector( -93.5263, 1553.3, 61.9888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3014
3015CreateObject( 3011, 1, Vector( -93.5263, 1553.3, 57.1888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3016
3017CreateObject( 3011, 1, Vector( -93.5263, 1553.3, 52.3888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3018
3019CreateObject( 3011, 1, Vector( -92.6263, 1571.01, 52.3888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3020
3021CreateObject( 3011, 1, Vector( -92.6263, 1571.01, 57.1888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3022
3023CreateObject( 3011, 1, Vector( -92.6263, 1571.01, 61.9888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3024
3025CreateObject( 3011, 1, Vector( -91.7262, 1588.71, 61.9888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3026
3027CreateObject( 3011, 1, Vector( -91.7262, 1588.71, 57.1888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3028
3029CreateObject( 3011, 1, Vector( -91.7262, 1588.71, 52.3888), 255 ).RotateByEuler( Vector( 0, 0, 1.52), 0);
3030
3031CreateObject( 3011, 1, Vector( -179.07, 1537.26, 52.3525), 255 ).RotateByEuler( Vector( 0, 0, 1.54), 0);
3032
3033CreateObject( 3011, 1, Vector( -179.07, 1537.26, 57.2524), 255 ).RotateByEuler( Vector( 0, 0, 1.54001), 0);
3034
3035CreateObject( 3011, 1, Vector( -179.07, 1537.26, 62.0324), 255 ).RotateByEuler( Vector( 0, 0, 1.54001), 0);
3036
3037CreateObject( 3011, 1, Vector( -178.506, 1553.76, 52.3224), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 1.5516), 0);
3038
3039CreateObject( 3011, 1, Vector( -178.506, 1553.76, 57.3023), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.5516), 0);
3040
3041CreateObject( 3011, 1, Vector( -178.506, 1553.76, 62.0023), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.5516), 0);
3042
3043CreateObject( 3011, 1, Vector( -178.816, 1571.34, 62.0023), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.5516), 0);
3044
3045CreateObject( 3011, 1, Vector( -178.816, 1571.34, 57.3523), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.5516), 0);
3046
3047CreateObject( 3011, 1, Vector( -178.816, 1571.34, 52.3123), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.5516), 0);
3048
3049CreateObject( 3011, 1, Vector( -178.836, 1589.11, 52.3123), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.5516), 0);
3050
3051CreateObject( 3011, 1, Vector( -178.836, 1589.11, 57.4123), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.5516), 0);
3052
3053CreateObject( 3011, 1, Vector( -178.836, 1589.11, 61.9123), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.5516), 0);
3054
3055CreateObject( 3011, 1, Vector( -102.607, 1533.77, 61.8524), 255 ).RotateByEuler( Vector( 0, 0, 0), 0);
3056
3057}
3058
3059function GetLocation( team )
3060{
3061switch( team )
3062{
3063case "Yellow":
3064local spawn = Bases[base2].YellowSpawn;
3065return spawn;
3066break;
3067
3068case "Blue":
3069local spawn = Bases[base2].BlueSpawn;
3070return spawn;
3071break;
3072
3073case "lobby":
3074local spawn = Lobby_SpawnLocations[ rand() % Lobby_SpawnLocations.len() ];
3075return spawn;
3076break;
3077}
3078}
3079
3080function LoadVehicles()
3081{
3082local query = QuerySQL( sq_DB, "SELECT * FROM Vehicles WHERE ID" ), i = 0, c = 1;
3083while( GetSQLColumnData( query, 0 ) )
3084{
3085local id = GetSQLColumnData( query, 0 ), model = GetSQLColumnData( query, 1 ), posx = GetSQLColumnData( query, 2 ), posy = GetSQLColumnData( query, 3 ), posz = GetSQLColumnData( query, 4 ), angle = GetSQLColumnData( query, 5 ), col1 = GetSQLColumnData( query, 6 ), col2 = GetSQLColumnData( query, 7 );
3086CreateVehicle( model, 1, Vector(posx, posy, posz), angle, col1, col2 );
3087Vehicles_[c.tointeger()] = id.tointeger();
3088GetSQLNextRow( query );
3089i++;
3090c++;
3091}
3092print("Successfully loaded vehicles, total - "+i+" vehicles");
3093FreeSQLQuery( query );
3094}
3095
3096function GetLevelTags( level )
3097{
3098switch( level )
3099{
3100case 10: return "Developer";
3101case 7: return "Manager";
3102case 5: return "Admin";
3103case 3: return "Moderator";
3104default: return "Player";
3105}
3106}
3107
3108function GetLevel( rank )
3109{
3110switch( rank )
3111{
3112case "dev": return 10;
3113case "manager": return 7;
3114case "admin": return 5;
3115case "mod": return 3;
3116case "player": return 1;
3117default: return 0;
3118}
3119}
3120
3121function Getotherreason( msg, type, bt )
3122{
3123local reason_args = null;
3124if ( msg )
3125{
3126local reason_text = msg, reason_args = split( reason_text, " " ), get_reason;
3127if ( type == 2 ) return reason_args;
3128if ( reason_args.len() > 1 )
3129{
3130get_reason = reason_text.slice(((reason_args[0].len()+bt.len())+2),reason_text.len());
3131if ( type == 1 ) return get_reason;
3132}
3133}
3134}
3135
3136function Getreason( msg, type )
3137{
3138local reason_args = null;
3139if ( msg )
3140{
3141local reason_text = msg, reason_args = split( reason_text, " " ), get_reason;
3142if ( type == 2 ) return reason_args;
3143if ( reason_args.len() > 1 )
3144{
3145get_reason = reason_text.slice(reason_args[0].len()+1,reason_text.len());
3146if ( type == 1 ) return get_reason;
3147}
3148}
3149}
3150
3151function AdminMessage(msg)
3152{
3153for( local i = 0; i <= GetMaxPlayers(); i++ )
3154{
3155local plr = FindPlayer( i );
3156if ( plr )
3157{
3158local p = Pinfo[ plr.ID ];
3159if ( p.Level > 2 ) MessagePlayer( "[#08f1b1]" + msg, plr );
3160}
3161}
3162}
3163
3164function TeamMessage(msg, team)
3165{
3166for( local i = 0; i <= GetMaxPlayers(); i++ )
3167{
3168local plr = FindPlayer( i );
3169if ( plr )
3170{
3171if ( plr.Team == 1 && team == "Yellow" ) MessagePlayer( msg, plr );
3172if ( plr.Team == 2 && team == "Blue" ) MessagePlayer( msg, plr );
3173}
3174}
3175}
3176
3177function LoadAdminCommands()
3178{
3179local q = QuerySQL( sq_DB, "SELECT Command, Rank FROM Commandranks" ), c =0;
3180 local cmd = GetSQLColumnData( q, 0 ), rank = GetSQLColumnData( q, 1 );
3181
3182 while ( cmd != null )
3183 {
3184 ++ c;
3185
3186 local data = {
3187 "Cmd": cmd,
3188 "Rank": rank
3189 };
3190
3191 g_admincmd.rawset( cmd, [data] );
3192 if ( g_admincmd.rawin( cmd ) ) { local get_rank = GetLevelFromArray( cmd ); }
3193
3194 GetSQLNextRow( q );
3195 cmd = GetSQLColumnData( q, 0 );
3196 rank = GetSQLColumnData( q, 1 );
3197 }
3198 FreeSQLQuery( q );
3199}
3200
3201function PlayerAlias( player )
3202{
3203local p = Pinfo[ player.ID ];
3204local query = QuerySQL( sq_DB, "SELECT * FROM Aliases WHERE Lower(Name)='" + escapeSQLString( player.Name.tolower() ) + "'" );
3205if ( GetSQLColumnData( query, 0 ) )
3206{
3207local ip = GetSQLColumnData( query, 1 ), uid = GetSQLColumnData( query, 2 ), rpg = GetSQLColumnData( query, 3 );
3208if ( player.IP != ip ) QuerySQL( sq_DB,"UPDATE Aliases SET IP='" + escapeSQLString( player.IP ) + "' WHERE Lower (Name)='" + escapeSQLString( player.Name.tolower() ) + "'");
3209if ( player.UID != uid ) QuerySQL( sq_DB,"UPDATE Aliases SET UID='" + escapeSQLString( player.UID ) + "' WHERE Lower (Name)='" + escapeSQLString( player.Name.tolower() ) + "'");
3210if ( rpg != 0 )
3211{
3212local args = split( rpg, ";" );
3213p.RPGBanTime = args[0];
3214p.RPGBanExpire = args[1];
3215}
3216}
3217else QuerySQL( sq_DB, "INSERT INTO Aliases ( Name, IP, UID, RPG ) VALUES ( '" + player + "', '" + player.IP + "', '" + player.UID + "', 0 )" );
3218FreeSQLQuery( query );
3219}
3220
3221function FindAlias( type, player )
3222{
3223local type_, type2;
3224switch( type )
3225{
3226case "uid":
3227type_ = player.UID;
3228type2 = "UID";
3229break;
3230
3231case "ip":
3232type_ = player.IP;
3233type2 = "IP";
3234break;
3235}
3236
3237local query = QuerySQL( sq_DB, "SELECT * FROM Aliases WHERE " + escapeSQLString( type2 ) + "='" + escapeSQLString( type_) + "'" );
3238if ( GetSQLColumnData( query, 0 ) )
3239{
3240local name = GetSQLColumnData( query, 0 ), uid = GetSQLColumnData( query, 2 ), c;
3241while( name )
3242{
3243if ( c ) c = c + ", " + name;
3244else c = name;
3245GetSQLNextRow( query );
3246name = GetSQLColumnData( query, 0 );
3247}
3248if ( c != null ) return a_priv + "** " + type2 + " aliases of " + player + " - " + c;
3249else return error + "** Error - No alias found for this player " + type2;
3250}
3251}
3252
3253function onPlayerChat( player, text )
3254{
3255local p = Pinfo[ player.ID ];
3256if ( p.isMuted == false )
3257{
3258if ( text.slice(0,1) == "\\" )
3259{
3260local msg = text.slice(1);
3261if ( player.Team == 1 ) TeamMessage("[#b0b0b0]** (TEAM) " + GetTeamColor( player ) + player + ": [#FFFFFF]" + msg, "Yellow" );
3262if ( player.Team == 2 ) TeamMessage("[#b0b0b0]** (TEAM) " + GetTeamColor( player ) + player + ": [#FFFFFF]" + msg, "Blue" );
3263return 0;
3264}
3265::myDiscord.sendMessage("659726989623558183","**" + player + ":** " + text );
3266
3267if ( p.ChatTime != 0 )
3268{
3269if ( ( time() - p.ChatTime ) <= 3 ) p.ChatSpam++;
3270else p.ChatSpam = 0;
3271if ( p.ChatSpam == 4 )
3272{
3273Message( a_msg + "** Admin Server has muted " + player.Name + " Reason: Spamming/Flooding chat Duration: 30 seconds.." );
3274::myDiscord.sendMessage("659726989623558183","Admin Server has muted **" + player.Name + "** Reason: **Spamming/Flooding chat** Duration: **30 seconds..**" );
3275p.MuteTime = time() + 30;
3276p.ChatSpam = 0;
3277p.isMuted = true;
3278}
3279}
3280p.ChatTime = time();
3281return 1;
3282}
3283
3284}
3285
3286function errorHandling( er )
3287{
3288 local stack = getstackinfos( 2 ),
3289 msg = "Error occured in "+ stack.src +", Line: "+ stack.line +", Func: "+ stack.func,
3290 msg2 = "Reason caused: "+ er;
3291
3292 StaffMessage( msg );
3293 StaffMessage( msg2 );
3294 print( msg );
3295 print( msg2 );
3296 AdminMessage( msg );
3297 AdminMessage( msg2 );
3298}
3299
3300function onPlayerEnterVehicle( player, vehicle, door )
3301{
3302 local p = Pinfo[ player.ID ];
3303 if ( ( p.inGame ) && player.Team == 1 && ( vehicle.Colour1 == 2 || vehicle.Colour1 == 50 ) )
3304 {
3305 player.Pos = player.Pos;
3306 MessagePlayer( error + "** Error - You can't enter the vehicle of other team!", player );
3307 }
3308
3309 if ( ( p.inGame ) && player.Team == 2 && vehicle.Colour1 == 6 )
3310 {
3311 player.Pos = player.Pos;
3312 MessagePlayer( error + "** Error - You can't enter the vehicle of other team!", player );
3313 }
3314}
3315
3316function Respawnvehicles()
3317{
3318for( local i = 0; i <= GetVehicleCount(); i++ )
3319{
3320local veh = FindVehicle( i );
3321if ( veh && !veh.Driver ) veh.Respawn();
3322}
3323}
3324
3325function Respawnvehicles2()
3326{
3327for( local i = 0; i <= GetVehicleCount(); i++ )
3328{
3329local veh = FindVehicle( i );
3330if ( veh ) veh.Respawn();
3331}
3332}
3333
3334function GetPartReason( id )
3335{
3336switch ( id )
3337 {
3338 case 0: return "timedout";
3339 case 1: return "disconnected";
3340 case 2: return "disconnected";
3341 case 3: return "crashed";
3342 case 4: return "kicked";
3343 case 5: return "disconnected";
3344 default: return "disconnected";
3345 }
3346}
3347
3348function GetBodyPart( bodypart )
3349{
3350 switch( bodypart )
3351 {
3352 case 0: return "body";
3353 case 1: return "torso";
3354 case 2: return "left arm";
3355 case 3: return "right arm";
3356 case 4: return "left leg";
3357 case 5: return "right leg";
3358 case 6: return "head";
3359 default: return "body";
3360 }
3361}
3362
3363function GetDeathReason( reason )
3364{
3365switch( reason )
3366{
3367 case 26: return "burned to death";
3368 case 31: return "burned to death";
3369 case 39: return "died in an accident";
3370 case 41: return "exploded";
3371 case 43: return "drowned";
3372 case 44: return "fell to death";
3373 case 70: return "committed suicide";
3374 default: return "died";
3375}
3376}
3377
3378function Increasehealth( player, amount )
3379{
3380 if ( amount > 100 ) return;
3381 if ( ( player.Health + amount ) >= 100 ) return ( 100 - player.Health );
3382 else return amount;
3383}
3384
3385function Decreasehealth( player, amount )
3386{
3387 local amount_;
3388 if ( ( player.Health - amount ) <= 0 ) { amount_ = 0; return amount_; }
3389 else { amount_ = amount; return amount; }
3390}
3391
3392function GetTop( type )
3393{
3394local type_, type2, type_2;
3395switch( type )
3396{
3397case "killer":
3398type_ = "Kills";
3399type_2 = "Kills";
3400break;
3401
3402case "dropper":
3403type_ = "BriefDropped";
3404type_2 = "BriefDropped";
3405break;
3406
3407case "spree":
3408type_ = "Spree";
3409type_2 = "Spree";
3410break;
3411
3412case "ratio":
3413type_ = "ROUND( (CAST( Kills AS FLOAT )/CAST( Deaths AS FLOAT )), 1 ) Ratio";
3414type_2 = "Ratio";
3415break;
3416}
3417
3418local query = QuerySQL( sq_DB, "SELECT Name, " + escapeSQLString( type_ ) + " FROM Accounts ORDER BY " + escapeSQLString( type_2 ) + " DESC LIMIT 5" ), name = GetSQLColumnData( query, 0 ), value = GetSQLColumnData( query, 1 ), c;
3419while( name )
3420{
3421if ( c ) c = c + "[#b0b0b0], " + name + " [#ffffff](" + value + ")";
3422else c = "[#b0b0b0]" + name + " [#ffffff](" + value + ")";
3423GetSQLNextRow( query );
3424name = GetSQLColumnData( query, 0 );
3425value = GetSQLColumnData( query, 1 );
3426}
3427if ( c != null ) return c;
3428else return error + "** Error - Not found!";
3429}
3430
3431function ChangePack( player, pack )
3432{
3433local p = Pinfo[ player.ID ];
3434MessagePlayer("[#b0b0b0]** You have changed your pack to #" + pack.tointeger(), player );
3435p.Pack = pack.tointeger();
3436p.lastPack = pack.tointeger();
3437GivePacks( p.Pack, player );
3438p.Packs++;
3439}
3440
3441function Pack( player, pack )
3442{
3443local p = Pinfo[ player.ID ];
3444MessagePlayer("[#b0b0b0]** You have chosen pack #" + pack.tointeger(), player );
3445p.Pack = pack.tointeger();
3446p.lastPack = pack.tointeger();
3447}
3448
3449function RPGBan( plr, player, bantime, reason )
3450{
3451local perma = 0, btime = bantime, pplr = Pinfo[ plr.ID ];
3452if ( btime == "perma" ) perma = 1;
3453if ( perma == 1 || btime.len() >= 2 && btime.len() <= 5 )
3454{
3455local btime_, format;
3456switch( btime.len() ) { case 2: btime_ = btime.slice( 0, 1 ); format = btime.slice( 1, 2 ); break; case 3: btime_ = btime.slice( 0, 2 ); format = btime.slice( 2,3 ); break; case 4: btime_ = btime.slice( 0, 3 ); format = btime.slice( 1,4 ); break; case 5: btime_ = btime.slice( 0, 2 ); format = btime.slice( 2,5 ); break; }
3457if ( perma == 1 || IsNum( btime_ ) && !IsNum( format ) )
3458{
3459local bant, type;
3460switch( format ) { case "m": bant = btime_.tointeger() * 2678400; type = "months"; break; case "w": bant = btime_.tointeger() * 60 * 60 * 24 * 7; type = "weeks"; break; case "d": bant = btime_.tointeger() * 24 * 60 * 60; type = "days"; break; case "h": bant = btime_.tointeger() * 60 * 60; type = "hours"; break; case "min": bant = btime_.tointeger() * 60; type = "minutes"; break; default: type ="none"; }
3461if ( perma == 1 || type != "none" )
3462{
3463if ( perma == 1 || btime_.tointeger() == 1 ) type = type.slice( 0, type.len() - 1 );
3464if ( perma == 1 ) bant = 1893459661;
3465local val = time() + ";" + bant.tointeger();
3466QuerySQL( sq_DB,"UPDATE Aliases SET RPG='" + escapeSQLString( val ) + "' WHERE UID='" + escapeSQLString( plr.UID ) + "'");
3467pplr.RPGBanTime = time();
3468pplr.RPGBanExpire = bant.tointeger();
3469
3470if ( perma != 1 )
3471{
3472Message( a_msg + "** Admin " + player + " has banned " + plr + " from using Rocket Laucher(RPG) Reason: " + reason + " Duration: " + btime_.tointeger() + " " + type + "" );
3473 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has banned " + plr + " from using Rocket Laucher(RPG) Reason: " + reason + " Duration: " + btime_.tointeger() + " " + type + "" );
3474}
3475else
3476{
3477Message( a_msg + "** Admin " + player + " has banned " + plr + " from using Rocket Laucher(RPG) Reason: " + reason + " Duration: Permanent" );
3478 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has banned " + plr + " from using Rocket Laucher(RPG) Reason: " + reason + " Duration: Permanent" );
3479}
3480if ( pplr.Pack == 6 || pplr.lastPack == 6 )
3481{
3482if ( GameActive )
3483{
3484pplr.Pack = 0;
3485pplr.lastPack = 0;
3486if ( Startwar )
3487{
3488MessagePlayer("[#b0b0b0]** You are currently using pack 6, your pack has been changed to default and you have recieved one more change to change your pack (/changepack)!", plr );
3489GivePacks( pplr.Pack, plr );
3490pplr.Packs--;
3491}
3492else MessagePlayer("[#b0b0b0]** You are currently using pack 6, your pack has been changed to default!", plr );
3493}
3494}
3495}
3496else MessagePlayer( error + "** Syntax - /rpgban <player/ID> <m/w/d/h/min> <reason>", player );
3497}
3498else MessagePlayer( error + "** Syntax - /rpgban <player/ID> <m/w/d/h/min> <reason>", player );
3499}
3500else MessagePlayer( error + "** Syntax - /rpgban <player/ID> <m/w/d/h/min> <reason>", player );
3501}
3502
3503function RPGUnban( plr, player )
3504{
3505local pplr = Pinfo[ plr.ID ];
3506QuerySQL( sq_DB,"UPDATE Aliases SET RPG='0' WHERE UID='" + escapeSQLString( plr.UID ) + "'");
3507pplr.RPGBanTime = 0;
3508pplr.RPGBanExpire = 0;
3509Message( a_msg + "** Admin " + player + " has unbanned " + plr + " from using Rocket Laucher(RPG)" );
3510 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has unbanned " + plr + " from using Rocket Laucher(RPG)" );
3511}
3512
3513function GivePreviousWeapons( player )
3514{
3515local p = Pinfo[ player.ID ];
3516local weps = p.PreviousWep, wep_ = split( weps, "," ), i;
3517for( i = 0 ; i < wep_.len(); i++ )
3518{
3519local args = split( wep_[ i ], " " ), wep = args[0], ammo = args[1];
3520player.GiveWeapon( wep.tointeger(), ammo.tointeger() );
3521}
3522p.PreviousWep = null;
3523}
3524function GetWeaponsAtSlot( player )
3525{
3526local i_ = 0, result;
3527while ( i_ <= 7 )
3528{
3529if ( result == null ) result = player.GetWeaponAtSlot( i_ ) + " " + player.GetAmmoAtSlot( i_ );
3530else result = result + "," + player.GetWeaponAtSlot( i_ ) + " " + player.GetAmmoAtSlot( i_ );
3531i_++;
3532}
3533return result;
3534}
3535
3536function IsInRadius(x1, y1, z1, x2, y2, z2, rad)
3537{
3538 if (sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1)) + ((z2 - z1)*(z2 - z1))) < rad) return true;
3539 else return false;
3540}
3541
3542function Submachines( wep )
3543{
3544switch( wep )
3545{
3546case 5:
3547case 17:
3548case 10:
3549case 19:
3550case 21:
3551case 22:
3552case 23:
3553case 24:
3554case 25:
3555return true;
3556default: false;
3557}
3558}
3559
3560function MutePlayer( plr, player, mutetime, reason )
3561{
3562local mtime = mutetime, pplr = Pinfo[ plr.ID ];
3563if ( pplr.isMuted == false )
3564{
3565if ( mtime.len() >= 2 && mtime.len() <= 3 )
3566{
3567local mtime_, format;
3568switch( mtime.len() ) { case 2: mtime_ = mtime.slice( 0, 1 ); format = mtime.slice( 1, 2 ); break; case 3: mtime_ = mtime.slice( 0, 2 ); format = mtime.slice( 2,3 ); break; }
3569if ( IsNum( mtime_ ) && !IsNum( format ) )
3570{
3571local mutet, type;
3572switch( format ) { case "h": mutet = mtime_.tointeger() * 60 * 60; type = "hours"; break; case "m": mutet = mtime_.tointeger() * 60; type = "minutes"; break; case "s": mutet = mtime_.tointeger(); type = "seconds"; break; default: type ="none"; }
3573if ( type != "none" )
3574{
3575if ( mtime_.tointeger() == 1 ) type = type.slice( 0, type.len() - 1 );
3576pplr.MuteTime = time() + mutet;
3577pplr.ChatSpam = 0;
3578pplr.isMuted = true;
3579Message( a_msg + "** Admin " + player + " has muted " + plr + " Reason: " + reason + " Duration: " + mtime_.tointeger() + " " + type + "" );
3580 ::myDiscord.sendMessage("659726989623558183","**Admin " + player + "** has muted " + plr + " Reason: " + reason + " Duration: " + mtime_.tointeger() + " " + type + "" );
3581}
3582else MessagePlayer( error + "** Syntax - /mute <player/ID> <h/m/s> <reason>", player );
3583}
3584else MessagePlayer( error + "** Syntax - /mute <player/ID> <h/m/s> <reason>", player );
3585}
3586else MessagePlayer( error + "** Syntax - /mute <player/ID> <h/m/s> <reason>", player );
3587}
3588else MessagePlayer( error + "** Error - The player is already muted!", player );
3589}
3590
3591function Transfer( old, new, admin )
3592{
3593local done = false;
3594if ( old != null && new != null )
3595{
3596if ( FindPlayer( old ) )
3597{
3598local get_player = FindPlayer( old );
3599if ( Pinfo[ get_player.ID ].isRegistered && Pinfo[ get_player.ID ].isLogged )
3600{
3601done = true;
3602old = get_player.Name;
3603get_player.Name = new;
3604}
3605else MessagePlayer( error + "** Error - The player is not registered/logged!", admin );
3606}
3607else
3608{
3609local query = QuerySQL( sq_DB, "SELECT Name FROM Accounts WHERE Lower(Name)='" + escapeSQLString( old.tolower() ) + "'" );
3610if ( GetSQLColumnData( query, 0 ) )
3611{
3612local query1 = QuerySQL( sq_DB, "SELECT Name FROM Accounts WHERE Lower(Name)='" + escapeSQLString( new.tolower() ) + "'" );
3613if ( GetSQLColumnData( query1, 0 ) == null ) done = true;
3614else MessagePlayer( error + "** Error - This new name is already registered!", admin );
3615FreeSQLQuery( query1 );
3616}
3617else MessagePlayer( error + "** Error - This player is not registered!", admin );
3618FreeSQLQuery( query );
3619}
3620if ( done == true )
3621{
3622QuerySQL( sq_DB, "UPDATE Accounts SET Name='" + escapeSQLString( new ) + "' WHERE Lower(Name)='" + escapeSQLString( old.tolower() ) + "'" );
3623Message( a_msg + "** Admin " + admin + " has transferred the account of " + old + " to " + new );
3624::myDiscord.sendMessage("659726989623558183","** Admin " + admin + " has transferred the account of " + old + " to " + new );
3625}
3626}
3627}
3628
3629function onPlayerWeaponChange( player, oldwep, newwep )
3630{
3631local p = Pinfo[ player.ID ];
3632 if ( oldwep == 100 && player.IsSpawned && p.BriefCaptured == true )
3633 {
3634 player.GiveWeapon( 100, 99 );
3635 }
3636}
3637
3638function Ban( plr, btime, reason, admin )
3639{
3640local done = false, guid;
3641if ( plr != null && btime != null && reason != null )
3642{
3643if ( FindPlayer( plr ) )
3644{
3645local get_player = FindPlayer( plr );
3646if ( get_player.ID != admin.ID ) PlayerBan( get_player.Name, get_player.UID, admin, reason, btime );
3647else MessagePlayer( error + "** Error - You cannot ban yourself!", admin );
3648}
3649else
3650{
3651local query = QuerySQL( sq_DB, "SELECT UID FROM Aliases WHERE Lower(Name)='" + escapeSQLString( plr.tolower() ) + "'" );
3652if ( GetSQLColumnData( query, 0 ) )
3653{
3654local get_uid = GetSQLColumnData( query, 0 );
3655local query1 = QuerySQL( sq_DB, "SELECT UID FROM Bans WHERE Lower(UID)='" + escapeSQLString( get_uid.tolower() ) + "'" );
3656if ( GetSQLColumnData( query1, 0 ) == null ) { PlayerBan( plr, get_uid, admin, reason, btime ); }
3657else MessagePlayer( error + "** Error - This player is already banned!", admin );
3658FreeSQLQuery( query1 );
3659}
3660else MessagePlayer( error + "** Error - The player does not exists!", admin );
3661FreeSQLQuery( query );
3662}
3663}
3664}
3665
3666function PlayerBan( plr, uid, admin, reason, btime )
3667{
3668local perma = 0;
3669if ( btime == "perma" ) perma = 1;
3670if ( perma == 1 || btime.len() >= 2 && btime.len() <= 3 )
3671{
3672local btime_, format;
3673switch( btime.len() ) { case 2: btime_ = btime.slice( 0, 1 ); format = btime.slice( 1, 2 ); break; case 3: btime_ = btime.slice( 0, 2 ); format = btime.slice( 2,3 ); break; }
3674if ( perma == 1 || IsNum( btime_ ) && !IsNum( format ) )
3675{
3676local bant, type;
3677switch( format ) { case "m": bant = btime_.tointeger() * 2678400; type = "months"; break; case "w": bant = btime_.tointeger() * 60 * 60 * 24 * 7; type = "weeks"; break; case "d": bant = btime_.tointeger() * 24 * 60 * 60; type = "days"; break; case "h": bant = btime_.tointeger() * 60 * 60; type = "hours"; break; default: type ="none"; }
3678if ( perma == 1 || type != "none" )
3679{
3680if ( perma == 1 || btime_.tointeger() == 1 ) type = type.slice( 0, type.len() - 1 );
3681if ( perma == 1 ) bant = 1893459661;
3682QuerySQL( sq_DB, "INSERT INTO Bans ( Name, UID, Time, Expires, Admin, Reason ) VALUES ( '" + plr + "', '" + uid + "', '" + time() + "', '" + bant.tointeger() + "', '" + admin + "', '" + reason + "' )");
3683if ( perma != 1 )
3684{
3685Message( a_msg + "** Admin " + admin + " has banned " + plr + " Reason: " + reason + " Duration: " + btime_.tointeger() + " " + type + "" );
3686::myDiscord.sendMessage("659726989623558183","** Admin " + admin + " has banned " + plr + " Reason: " + reason + " Duration: " + btime_.tointeger() + " " + type + "" );
3687}
3688else
3689{
3690Message( a_msg + "** Admin " + admin + " has banned " + plr + " Reason: " + reason + " Duration: Permanent" );
3691::myDiscord.sendMessage("659726989623558183","** Admin " + admin + " has banned " + plr + " Reason: " + reason + " Duration: Permanent" );
3692}
3693if ( FindPlayer( plr ) ) FindPlayer( plr ).Kick();
3694}
3695else MessagePlayer( error + "** Syntax - /ban <player/ID/name> <m/w/d/h> <reason>", admin );
3696}
3697else MessagePlayer( error + "** Syntax - /ban <player/ID/name> <m/w/d/h> <reason>", admin );
3698}
3699else MessagePlayer( error + "** Syntax - /ban <player/ID/name> <m/w/d/h> <reason>", admin );
3700}
3701
3702function CheckBan( player )
3703{
3704local query = QuerySQL( sq_DB, "SELECT * FROM Bans WHERE UID='" + escapeSQLString( escapeSQLString( player.UniqueID ) ) + "'" );
3705if ( GetSQLColumnData( query, 0 ) )
3706{
3707if ( GetSQLColumnData( query, 3 ).tointeger() != 0 )
3708{
3709if( ( time() - GetSQLColumnData( query, 2 ).tointeger() ) >= GetSQLColumnData( query, 3 ).tointeger() ) QuerySQL( sq_DB, "DELETE FROM Bans WHERE UID='" + escapeSQLString( player.UniqueID ) + "'" );
3710else
3711{
3712local timen = GetSQLColumnData( query, 3 ).tointeger() - time();
3713local timeleft = time() - GetSQLColumnData( query, 2 );
3714local timeleft_ = GetSQLColumnData( query, 3 ) - timeleft;
3715Message( a_msg + "** Admin Server has kicked " + player.Name + " Reason: Temporarily banned" );
3716::myDiscord.sendMessage("659726989623558183","Admin Server has kicked **" + player.Name + "** Reason: **Temporarily banned**" );
3717MessagePlayer( "[#ff0000]** You are currently temporarily banned, time left for your ban to expire is " + GetTimeFormat( timeleft_ ) + "! kindly make an unban appeal at gtb.pl-community.com.", player );
3718player.Kick();
3719}
3720}
3721else
3722{
3723Message( a_msg + "** Admin Server has kicked " + player.Name + " Reason: Permanently banned" );
3724::myDiscord.sendMessage("659726989623558183","** Admin Server has kicked " + player.Name + " Reason: Permanently banned" );
3725MessagePlayer( "[#ff0000]** You are currently permanently banned, kindly make an unban appeal at gtb.pl-community.com", player );
3726player.Kick();
3727}
3728}
3729FreeSQLQuery( query );
3730}
3731
3732// --------------------------------------------- SPILLER ------------------------------------------- //
3733function BeginVoting()
3734{
3735 if ((voting == true) && (autostart == true))
3736 {
3737 GetRandomBases();
3738 started = true;
3739 ClientMessageToAll("[#ff0000]Vote for bases using [#ffffff]/votebase [#ff0000]<[#ffffff]1/2/3/4[#ff0000]>",0, 0, 0);
3740 ClientMessageToAll("[#ff0000]1. [#ffffff]" + Bases[rbases[0]].Name, 255, 255, 255);
3741 ClientMessageToAll("[#ff0000]2. [#ffffff]" + Bases[rbases[1]].Name, 255, 255, 255);
3742 ClientMessageToAll("[#ff0000]3. [#ffffff]" + Bases[rbases[2]].Name, 255, 255, 255);
3743 ClientMessageToAll("[#ff0000]4. [#ffffff]" + Bases[rbases[3]].Name, 255, 255, 255);
3744 NewTimer("StartVoted", 20000, 1);
3745 }
3746 else return;
3747}
3748
3749function StartVoted()
3750{
3751local max = 0, i = 0, pos;
3752 while (i < 4)
3753 {
3754 if (votes[i] > max)
3755 {
3756 max = votes[i];
3757 pos = i;
3758 }
3759 i++;
3760 }
3761 if (max == 0)
3762 {
3763 pos = Random(0, 3);
3764 }
3765 base2 = rbases[pos];
3766 if (autostart == true)
3767 {
3768 StartGame();
3769 }
3770}
3771
3772function BaseVoting()
3773{
3774 if(GameActive || (replayBase == false) || (voting == true))
3775 {
3776 VoteCheckTimer.Stop();
3777 }
3778 else
3779 {
3780 SendPacketToSpawnedPlayersBool( OP_TOGGLEVOTE, true );
3781
3782 ClientMessageToAll( "[#00FFFF]Click or type /vote <ID> to vote for your favourite base in 20 seconds!", 255, 255 ,255);
3783 reptimer = NewTimer( "GetBaseFromVote", 20000, 1 );
3784
3785 local data = Stream();
3786 for( local i = 1; i <= 3; i++ )
3787 {
3788 local bid = Rbs[ i - 1 ];
3789 data.WriteInt( OP_UPDATEVOTE );
3790 data.WriteInt( i );
3791 data.WriteInt( 0 );
3792 data.WriteString( Bases[ bid ].Name );
3793 data.SendStream( null );
3794 }
3795 }
3796
3797}
3798
3799function ResetVotes()
3800{
3801 votes[0] = 0;
3802 votes[1] = 0;
3803 votes[2] = 0;
3804 votes[3] = 0;
3805}
3806
3807function PlayerVotedForBase(id, vote)
3808{
3809 local plr = FindPlayer(id);
3810 vote = vote - 1;
3811 Pinfo[plr.ID].Vote = vote;
3812 votes[vote] += 1;
3813 ClientMessageToAll(plr.Name + "[#00FFFF] voted for base [#FFFFFF]" + Bases[rbases[vote]].Name, 255, 255, 255);
3814}
3815
3816function GetRandomBases()
3817{
3818 if (started == false)
3819 {
3820 rbases[0] = Random(1, (TotalBases-1));
3821 rbases[1] = Random(1, (TotalBases-1));
3822 if (rbases[1] == rbases[0])
3823 {
3824 rbases[1] = Random(1, (TotalBases-1));
3825 }
3826
3827 rbases[2] = Random(1, (TotalBases-1));
3828 if (rbases[1] == rbases[2])
3829 {
3830 rbases[2] = Random(1, 13);
3831 }
3832
3833 rbases[3] = Random(1, (TotalBases-1));
3834 if (rbases[3] == rbases[2])
3835 {
3836 rbases[3] = Random(1, (TotalBases-1));
3837 }
3838 }
3839}
3840function Random( min, max )
3841{
3842 local r = rand();
3843 srand(GetTickCount() * r);
3844 return (r % ((max + 1) - min)) + min;
3845}
3846
3847function GetTok(string, separator, n, ...)
3848{
3849 local m = vargv.len() > 0 ? vargv[0] : n,
3850 tokenized = split(string, separator),
3851 text = "";
3852
3853 if (n > tokenized.len() || n < 1) return null;
3854 for (; n <= m; n++)
3855 {
3856 text += text == "" ? tokenized[n-1] : separator + tokenized[n-1];
3857 }
3858 return text;
3859}
3860
3861function SendPacketToSpawnedPlayersBool( opcode, bool )
3862{
3863 local data = Stream();
3864 for ( local i = 0; i < GetMaxPlayers(); i++ )
3865 {
3866 local plr = FindPlayer(i);
3867 if ( plr && plr.IsSpawned && plr.Team != 7 )
3868 {
3869 data.WriteInt( opcode );
3870 data.WriteByte( bool ? 1 : 0 );
3871 data.SendStream( plr );
3872 }
3873 }
3874}
3875function CreateMarkers()
3876{
3877 local a = base2;
3878 markers_created = true;
3879 // BRIEFCASE //
3880 local x = (GetTok(Bases[a].Briefcase, ",", 1)).tofloat(),
3881 y = (GetTok(Bases[a].Briefcase, ",", 2)).tofloat(),
3882 z = (GetTok(Bases[a].Briefcase, ",", 3)).tofloat();
3883 BrMarker <- CreateMarker(1, Vector( x, y, z ), 1, RGB(0, 0, 0), 103 );
3884
3885 // BLUE SPAWN //
3886 x = (GetTok(Bases[a].BlueSpawn, ",", 1)).tofloat(),
3887 y = (GetTok(Bases[a].BlueSpawn, ",", 2)).tofloat(),
3888 z = (GetTok(Bases[a].BlueSpawn, ",", 3)).tofloat();
3889 BMarker <- CreateMarker(1, Vector( x, y, z ), 1, RGB(0, 0, 0), 102 );
3890
3891 // YELLOW SPAWN //
3892 x = (GetTok(Bases[a].YellowSpawn, ",", 1)).tofloat(),
3893 y = (GetTok(Bases[a].YellowSpawn, ",", 2)).tofloat(),
3894 z = (GetTok(Bases[a].YellowSpawn, ",", 3)).tofloat();
3895 YMarker <- CreateMarker(1, Vector( x, y, z ), 1, RGB(0, 0, 0), 101 );
3896}
3897
3898function CreatePickups()
3899{
3900 local a = base2;
3901 local x = (GetTok(Bases[a].Briefcase, ",", 1)).tofloat(),
3902 y = (GetTok(Bases[a].Briefcase, ",", 2)).tofloat(),
3903 z = (GetTok(Bases[a].Briefcase, ",", 3)).tofloat();
3904 briefcase <- CreatePickup( 6010, Vector( x, y, z ) );
3905
3906 x = (GetTok(Bases[a].YellowBarrel, ",", 1)).tofloat(),
3907 y = (GetTok(Bases[a].YellowBarrel, ",", 2)).tofloat(),
3908 z = (GetTok(Bases[a].YellowBarrel, ",", 3)).tofloat();
3909 Yellow_barrel <- CreatePickup( 342, Vector( x, y, z ) );
3910
3911 x = (GetTok(Bases[a].BlueBarrel, ",", 1)).tofloat(),
3912 y = (GetTok(Bases[a].BlueBarrel, ",", 2)).tofloat(),
3913 z = (GetTok(Bases[a].BlueBarrel, ",", 3)).tofloat();
3914 Blue_barrel <- CreatePickup( 342, Vector( x, y, z ) );
3915}
3916
3917
3918function GetTotalBases()
3919{
3920 local count = 0;
3921 local q = QuerySQL(sq_DB, "SELECT ID FROM Maps");
3922 while(GetSQLColumnData(q, 0))
3923 {
3924 count++;
3925 GetSQLNextRow(q);
3926 }
3927 TotalBases = count;
3928}
3929
3930function GetLocations()
3931{
3932 BlSpawn.x = (GetTok(Bases[base2].BlueSpawn, ",", 1)).tofloat();
3933 BlSpawn.y = (GetTok(Bases[base2].BlueSpawn, ",", 2)).tofloat();
3934 BlSpawn.z = (GetTok(Bases[base2].BlueSpawn, ",", 3)).tofloat();
3935 YeSpawn.x = (GetTok(Bases[base2].YellowSpawn, ",", 1)).tofloat();
3936 YeSpawn.y = (GetTok(Bases[base2].YellowSpawn, ",", 2)).tofloat();
3937 YeSpawn.z = (GetTok(Bases[base2].YellowSpawn, ",", 3)).tofloat();
3938 BriefPos.x = (GetTok(Bases[base2].Briefcase, ",", 1)).tofloat();
3939 BriefPos.y = (GetTok(Bases[base2].Briefcase, ",", 2)).tofloat();
3940 BriefPos.z = (GetTok(Bases[base2].Briefcase, ",", 3)).tofloat();
3941}
3942
3943function LoadBases()
3944{
3945 local i = 0;
3946 while (i < TotalBases)
3947 {
3948 local q = QuerySQL( sq_DB, "SELECT Name,YSpawn,YBarrel,BPos,BSpawn,BBarrel FROM Maps WHERE ID=" + i );
3949 Bases[i] = BaseClass();
3950 local p = i.tostring();
3951 Bases[i].Name = GetSQLColumnData(q,0);
3952 Bases[i].YellowSpawn = GetSQLColumnData(q,1);
3953 Bases[i].YellowBarrel = GetSQLColumnData(q,2);
3954 Bases[i].Briefcase = GetSQLColumnData(q,3);
3955 Bases[i].BlueSpawn = GetSQLColumnData(q,4);
3956 Bases[i].BlueBarrel = GetSQLColumnData(q,5);
3957 i++;
3958 }
3959
3960}
3961
3962function sbase(str, lop)
3963{
3964 local q = QuerySQL(sq_DB, "SELECT ID FROM Maps WHERE name LIKE '%" + str + "%'");
3965 local i = 0;
3966 while (i < lop)
3967 {
3968 GetSQLNextRow(q);
3969 i++;
3970 }
3971 if(GetSQLColumnData(q, 0))
3972 {
3973 local id = GetSQLColumnData(q, 0);
3974 return id;
3975 }
3976 else return -1;
3977}