View difference between Paste ID: xSQVsnBk and 2y0aJ952
SHOW: | | - or go back to the newest paste.
1
rtv_required = 0.5
2
rtv_timeout = -1
3
votekick_required = 0.7
4
spam_max = 5
5
spam_timeout = 60
6
7
script_check = 0
8
cur_players = 0
9
rtv_initiated = 0
10
votekick_allowed = true
11
admin_table = {}
12
users_table = {}
13
mute_table = {}
14
suspend_table = {}
15
players = {}
16
players2 = {}
17
bos_table = {}
18
boslog_table = {}
19
access_table = {}
20
rtv_table = {}
21
votekick_table = {}
22
votekicktimeout_table = {}
23
spam_table = {}
24
spamtimeout_table = {}
25
ghost_table = {}
26
time_passed = 0 -- Initialize time_passed to 0 seconds
27
mode = {}
28
objspawntype = {}
29
objspawntag = {}
30
31
vehicle_drone_table = {}
32
-- create subtables
33
for i=0,15 do
34
	vehicle_drone_table[i] = {}
35
end
36
37
Object_table = {}
38
id = 0
39
message_table = {}
40
Chat = 0
41
timer_started = 0
42
message_delay = 3
43
objects = {}
44
45
	-- Bipeds
46
objects[1] = {"cyborg", "bipd", "characters\\cyborg_mp\\cyborg_mp"}
47
48
	-- Equipment
49
objects[2] = {"camo", "eqip", "powerups\\active camouflage"}
50
objects[3] = {"health", "eqip", "powerups\\health pack"}
51
objects[4] = {"overshield", "eqip", "powerups\\over shield"}
52
objects[5] = {"fnade", "eqip", "weapons\\frag grenade\\frag grenade"}
53
objects[6] = {"pnade", "eqip", "weapons\\plasma grenade\\plasma grenade"}
54
55
	-- Vehicles
56
objects[7] = {"shee", "vehi", "vehicles\\banshee\\banshee_mp"}
57
objects[8] = {"turret", "vehi", "vehicles\\c gun turret\\c gun turret_mp"}
58
objects[9] = {"ghost", "vehi", "vehicles\\ghost\\ghost_mp"}
59
objects[10] = {"rhog", "vehi", "vehicles\\rwarthog\\rwarthog"}
60
objects[11] = {"tank", "vehi", "vehicles\\scorpion\\scorpion_mp"}
61
objects[12] = {"hog", "vehi", "vehicles\\warthog\\mp_warthog"}
62
63
	-- Weapons
64
objects[13] = {"rifle", "weap", "weapons\\assault rifle\\assault rifle"}
65
objects[14] = {"ball", "weap", "weapons\\ball\\ball"}
66
objects[15] = {"flag", "weap", "weapons\\flag\\flag"}
67
objects[16] = {"flamethrower", "weap", "weapons\\flamethrower\\flamethrower"}
68
objects[17] = {"needler", "weap", "weapons\\needler\\mp_needler"}
69
objects[18] = {"pistol", "weap", "weapons\\pistol\\pistol"}
70
objects[19] = {"ppistol", "weap", "weapons\\plasma pistol\\plasma pistol"}
71
objects[20] = {"prifle", "weap", "weapons\\plasma rifle\\plasma rifle"}
72
objects[21] = {"frg", "weap", "weapons\\plasma_cannon\\plasma_cannon"}
73
objects[22] = {"rocket", "weap", "weapons\\rocket launcher\\rocket launcher"}
74
objects[23] = {"shotgun", "weap", "weapons\\shotgun\\shotgun"}
75
objects[24] = {"sniper", "weap", "weapons\\sniper rifle\\sniper rifle"}
76
77
	-- Projectiles
78
objects[25] = {"sheebolt", "proj", "vehicles\\banshee\\banshee bolt"}
79
objects[26] = {"sheerod", "proj", "vehicles\\banshee\\mp_banshee fuel rod"}
80
objects[27] = {"turretbolt", "proj", "vehicles\\c gun turret\\mp gun turret"}
81
objects[28] = {"ghostbolt", "proj", "vehicles\\ghost\\ghost bolt"}
82
objects[29] = {"tankshot", "proj", "vehicles\\scorpion\\bullet"}
83
objects[30] = {"tankshell", "proj", "vehicles\\scorpion\\tank shell"}
84
objects[31] = {"hogshot", "proj", "vehicles\\warthog\\bullet"}
85
objects[32] = {"rifleshot", "proj", "weapons\\assault rifle\\bullet"}
86
objects[33] = {"flame", "proj", "weapons\\flamethrower\\flame"}
87
objects[34] = {"fnadeproj", "proj", "weapons\\frag grenade\\frag grenade"}
88
objects[35] = {"needlershot", "proj", "weapons\\needler\\mp_needle"}
89
objects[36] = {"pistolshot", "proj", "weapons\\pistol\\bullet"}
90
objects[37] = {"pnadeproj", "proj", "weapons\\plasma grenade\\plasma grenade"}
91
objects[38] = {"ppistolbolt", "proj", "weapons\\plasma pistol\\bolt"}
92
objects[39] = {"priflebolt", "proj", "weapons\\plasma rifle\\bolt"}
93
objects[40] = {"priflecbolt", "proj", "weapons\\plasma rifle\\charged bolt"}
94
objects[41] = {"rocketproj", "proj", "weapons\\rocket launcher\\rocket"}
95
objects[42] = {"shottyshot", "proj", "weapons\\shotgun\\pellet"}
96
objects[43] = {"snipershot", "proj", "weapons\\sniper rifle\\sniper bullet"}
97
98
commands_table = {
99
	"/a",
100
	"/afk",
101
	"/ammo",
102
	"/b",
103
	"/deathless",
104
	"/e",
105
	"/eject",
106
	"/enter",
107
	"/getloc",
108
	"/godmode",
109
	"/hax",
110
	"/heal",
111
	"/help",
112
	"/hitler",
113
	"/infammo",
114
	"/give",
115
	"/gethash",
116
	"/ghost",
117
	"/invis",
118
	"/info",
119
	"/j",
120
	"/k",
121
	"/kill",
122
	"/lo3",
123
	"/m",
124
	"/mc",
125
	"/mnext",
126
	"/mute",
127
	"/noweapons",
128
	"/pass",
129
	"/pl",
130
	"/reset",
131
	"/resp",
132
	"/revoke",
133
	"/say",
134
	"/setassists",
135
	"/setdeaths",
136
	"/setfrags",
137
	"/setkills",
138
	"/setmode",
139
	"/setname",
140
	"/setresp",
141
	"/setplasmas",
142
	"/spd",
143
	"/spawn",
144
	"/st",
145
	"/suspend",
146
	"/td",
147
	"/test",
148
	"/timelimit",
149
	"/tp",
150
	"/ts",
151
	"/unghost",
152
	"/ungod",
153
	"/unhax",
154
	"/uninvis",
155
	"/unmute",
156
	"/unsuspend",
157
}
158
159
function GetRequiredVersion()
160
	return 10057
161
end
162
163
function OnScriptLoad(process)
164
165
	if script_check == 0 then
166
167
		spamtimer = registertimer(970, "SpamTimer")
168
		maintimer = registertimer(10, "MainTimer")
169
170
		for i = 0,15 do
171
			cleanupdrones(i)
172
		end
173
174
		profilepath = getprofilepath()
175
176
		for i=0,15 do
177
			if gethash(i) ~= nil then
178
				cur_players = cur_players + 1
179
			end
180
		end
181
182
		local file = io.open(string.format("%s\\admin.txt", profilepath), "r")
183
		if (file ~= nil) then
184
			for line in file:lines() do
185
				local words = {}
186
				for word in line:gmatch("[^%,]+") do
187
					table.insert(words, word)
188
				end
189
				admin_table[words[2]] = words[3]
190
			end
191
			file:close()
192
		end
193
194
		local file = io.open(string.format("%s\\access.ini", profilepath), "r")
195
196
		if (file ~= nil) then
197
198
			local i = 0
199
200
			for line in file:lines() do
201
				for word in line:gmatch("[^%[%-%d%]]+") do
202
203
					word = word:gsub("data=", "")
204
205
					if word == "" then
206
						access_table[i] = -1
207
					else
208
						access_table[i] = word
209
					end
210
211
					i = i + 1
212
213
				end
214
			end
215
216
			file:close()
217
218
		end
219
220
		local file = io.open(string.format("%s\\files\\rtv.txt", profilepath), "r")
221
222
		if (file ~= nil) then
223
			rtv_initiated = tonumber(file:read("*line"))
224
			file:close()
225
		end
226
		if rtv_initiated < 0 then
227
228
			local file = io.open(string.format("%s\\files\\rtv.txt", profilepath), "w+")
229
230
			if (file ~= nil) then
231
				file:write(rtv_initiated + 1)
232
				file:close()
233
			end
234
235
		end
236
237
		local file = io.open("defaults.txt")
238
		if (file ~= nil) then
239
			dofile("defaults.txt")
240
		else
241
			hprintf("Defaults.txt not found.")
242
		end
243
244
		local file = io.open(string.format("%s\\bos.txt", profilepath), "r")
245
246
		if (file ~= nil) then
247
248
			for line in file:lines() do
249
250
				local words = {}
251
252
				for word in line:gmatch("[^%,]+") do
253
					table.insert(words, word)
254
				end
255
256
				local size = table.getn(words)
257
				local name = ""
258
				local hash = words[size]
259
260
				for i=1,(size - 1) do
261
					name = name .. " " .. words[i]
262
				end
263
264
				name = name:gsub(" ", "", 1)
265
266
				table.insert(boslog_table, name .. "," .. hash)
267
268
			end
269
270
			file:close()
271
272
		end
273
274
		table.sort(boslog_table)
275
276
	end
277
278
	script_check = 1
279
280
end
281
282
function OnScriptUnload()
283
284
	local file = io.open(profilepath .. "//files//bos.txt", "w+")
285
286
	if (file ~= nil) then
287
288
		for k,v in pairs(boslog_table) do
289
			if v ~= nil then
290
				file:write(v .. "\n")
291
			end
292
		end
293
294
		file:close()
295
296
	end
297
	for i = 0,15 do
298
		cleanupdrones(i)
299
	end
300
301
end
302
303
function OnNewGame(map)
304
	registertimer(1000, "TimelimitTimer")
305
end
306
307
function OnGameEnd(mode)
308
309
	if mode == 1 then
310
		if maintimer ~= nil then
311
			removetimer(maintimer)
312
		end
313
		if spamtimer ~= nil then
314
			removetimer(spamtimer)
315
		end
316
		if rtvtimer ~= nil then
317
			removetimer(rtvtimer)
318
		end
319
		if votekicktimer ~= nil then
320
			removetimer(votekicktimer)
321
		end
322
		rtv_initiated = -1
323
		votekick_allowed = false
324
	elseif mode == 3 then
325
326
		local file = io.open(profilepath .. "//files//bos.txt", "w+")
327
328
		if (file ~= nil) then
329
330
			for k,v in pairs(boslog_table) do
331
				if v ~= nil then
332
					file:write(v .. "\n")
333
				end
334
			end
335
336
			file:close()
337
338
		end
339
340
	end
341
342
end
343
344
function OnServerChat(player, chattype, message)
345
	local AllowChat = 1
346
	local count = gettokencount(message, " ")
347
	--local word = string.lower(gettoken(message, " ", 0))
348
	--local word2 = string.lower(gettoken(message, " ", 1))
349
	local t = {}
350
	local name = getname(player)
351
	local hash = gethash(player)
352
	local access = nil
353
354
	if string.lower(string.sub(message, 1, 3)) == "bot" and count == 1 then
355
		registertimer(0, "delayMsg", "PROOF OR GTFO")
356
	end
357
	if string.lower(string.sub(message, 1, 3)) == "rtv" then
358
		if count == 1 then
359
			if rtv_initiated >= 0 then
360
361
				local rtv_count = 0
362
				local rtv_number = round(cur_players * rtv_required)
363
				for i=0,15 do
364
365
					local hash2 = gethash(i)
366
367
					if hash2 ~= nil then
368
						if rtv_table[hash2] == 1 then
369
							rtv_count = rtv_count + 1
370
						end
371
					end
372
373
				end
374
				if rtv_count == 0 then
375
					rtv_initiated = 1
376
					rtv_table[hash] = 1
377
					rtv_count = rtv_count + 1
378
					say(name .. " has initiated rtv!")
379
					say("Type \"rtv\" to join the vote!")
380
					rtvtimer = registertimer(60000, "rtvTimer")
381
				else
382
					if rtv_table[hash] == 1 then
383
						privatesay(player, "You have already voted for rtv!")
384
					elseif rtv_table[hash] == nil then
385
						rtv_table[hash] = 1
386
						rtv_count = rtv_count + 1
387
						say(name .. " has voted for rtv!")
388
						say(rtv_count .. " of " .. rtv_number .. " votes required for rtv!")
389
					end
390
				end
391
				local file = io.open(profilepath .. "//files//rtv.txt", "w+")
392
393
				if (file ~= nil) then
394
					file:write(rtv_timeout)
395
					file:close()
396
				end
397
				if rtv_count >= rtv_number then
398
					removetimer(rtvtimer)
399
					rtv_initiated = rtv_timeout
400
					say("Initiating mapvote!")
401
					svcmd("sv_map_next")
402
				end
403
404
			else
405
				privatesay(player, "You cannot initiate rtv at this time!")
406
			end
407
408
			AllowChat = 0
409
410
		end
411
	elseif string.lower(string.sub(message, 1, 8)) == "votekick" then
412
		if count == 2 then
413
414
			if votekick_allowed == true and votekicktimeout_table[hash] == nil then
415
				if word2 == "1" or word2 == "2" or word2 == "3" or word2 == "4" or word2 == "5" or word2 == "6" or word2 == "7" or word2 == "8" or word2 == "9" or word2 == "10" or word2 == "11" or word2 == "12" or word2 == "13" or word2 == "14" or word2 == "15" or word2 == "16" then
416
417
					local votekick_count = 0
418
					local votekick_number = round(cur_players * votekick_required)
419
					local player2 = rresolveplayer(word2)
420
					local name2 = getname(player2)
421
					local hash2 = gethash(player2)
422
					local admin = nil
423
424
					for i=0,15 do
425
426
						local hash2 = gethash(i)
427
428
						if hash2 ~= nil then
429
							if votekick_table[hash2] == 1 then
430
								votekick_count = votekick_count + 1
431
							end
432
						end
433
434
					end
435
436
					if hash2 ~= nil then
437
438
						for k,v in pairs(admin_table) do
439
							if k == hash2 then
440
								admin = 1
441
								break
442
							end
443
						end
444
445
						if admin == nil then
446
							if player ~= player2 then
447
								votekick_allowed = player2
448
								votekick_table[hash] = 1
449
								votekick_count = votekick_count + 1
450
								say(name .. " has initiated a votekick on " .. name2 .. "!")
451
								say("Type \"kick\" to join the vote!")
452
								votekicktimer = registertimer(60000, 0, "votekickTimer")
453
								votekicktimeout_table[hash] = 1
454
							else
455
								privatesay(player, "Invalid player!")
456
							end
457
						else
458
							privatesay(player, "Admins cannot be votekicked!")
459
						end
460
461
					else
462
						privatesay(player, "Invalid player!")
463
					end
464
465
					if votekick_count >= votekick_number then
466
467
						for k,v in pairs(votekick_table) do
468
							votekick_table[k] = nil
469
						end
470
471
						removetimer(votekicktimer)
472
						votekick_allowed = true
473
						say("Kicking " .. name2 .. "!")
474
						svcmd("sv_ban " .. word2 .. " 5m")
475
476
					end
477
478
				else
479
					privatesay(player, "Invalid player!")
480
				end
481
			else
482
				privatesay(player, "You cannot initiate a votekick at this time!")
483
			end
484
485
			AllowChat = 0
486
487
		end
488
	elseif string.sub(message, 1, 4) == "kick" then
489
		if count == 1 then
490
491
			if votekick_allowed ~= true and votekick_allowed ~= false then
492
493
				local votekick_count = 0
494
				local votekick_number = round(cur_players * votekick_required)
495
				local name2 = getname(votekick_allowed)
496
				local sv_player = resolveplayer(votekick_allowed)
497
498
				for i=0,15 do
499
500
					local hash2 = gethash(i)
501
502
					if hash2 ~= nil then
503
						if votekick_table[hash2] == 1 then
504
							votekick_count = votekick_count + 1
505
						end
506
					end
507
508
				end
509
510
				if player ~= votekick_allowed then
511
					if votekick_table[hash] == 1 then
512
						privatesay(player, "You have already voted!")
513
					elseif votekick_table[hash] == nil then
514
						votekick_table[hash] = 1
515
						votekick_count = votekick_count + 1
516
						say(name .. " has voted to kick " .. name2 .. "!")
517
						say(votekick_count .. " of " .. votekick_number .. " votes required to kick!")
518
					end
519
				else
520
					privatesay(player, "You are not allowed to vote!")
521
				end
522
523
				if votekick_count >= votekick_number then
524
525
					for k,v in pairs(votekick_table) do
526
						votekick_table[k] = nil
527
					end
528
529
					removetimer(votekicktimer)
530
					votekick_allowed = true
531
					say("Kicking " .. name2 .. "!")
532
					svcmd("sv_ban " .. sv_player .. " 5m")
533
534
				end
535
536
			else
537
				privatesay(player, "A votekick has not been initiated!")
538
			end
539
540
			AllowChat = 0
541
542
		end
543
	end
544
545
	for k,v in pairs(admin_table) do
546
		if k == hash then
547
			access = tonumber(v)
548
			break
549
		end
550
	end
551
552
	for i=1,count do
553
		local word = gettoken(message, " ", i - 1)
554
		word = string.lower(word)
555
		table.insert(t, word)
556
	end
557
558
	--[[local backslash = false
559
	local forwardslash = false
560
	if string.find(t[1], "\\") ~= nil then
561
		backslash = true
562
		t[1] = t[1]:gsub("\\", "", 1)
563
	elseif string.find(t[1], "/") ~= nil then
564
		forwardslash = true
565
		t[1] = t[1]:gsub("/", "", 1)
566
	end
567
568
	local cmd_found = false
569
	local cmd_type = false
570
	for i = 1,#access_table[access] do
571
		local access_cmd = access_table[access][i]
572
		if string.find(access_cmd, "sv_") ~= nil then
573
			access_cmd = access_cmd:gsub("sv_", "", 1)
574
		end
575
		if t[1] == access_cmd then
576
			cmd_found = true
577
		end
578
		if backslash == true then
579
			if access_table[access][i] == "bkslash" then
580
				cmd_type = true
581
			end
582
		elseif forwardslash == true then
583
			if access_table[access][i] == "fwslash" then
584
				cmd_type = true
585
			end
586
		end
587
		if cmd_found == true and cmd_type == true then
588
			break
589
		end
590
	end
591
592
	if cmd_found == false then
593
		privatesay(player, "You are not authorized to use this command.")
594
	elseif cmd_type == false then
595
		if backslash == true then
596
			privatesay(player, "You are not authorized to use \\ commands.")
597
			return 0
598
		elseif forwardslash == true then
599
			privatesay(player, "You are not authorized to use / commands.")
600
			return 1
601
		end
602
	end--]]
603
604
	if access ~= nil then
605
606
		if string.sub(t[1], 1, 1) == "/" then
607
			AllowChat = 1
608
		elseif string.sub(t[1], 1, 1) == "\\" then
609
			AllowChat = 0
610
		end
611
612
		t[1] = t[1]:gsub("\\", "/")
613
614
		local found1 = string.find(t[1], "/")
615
		local found2 = string.find(t[1], "/", 2)
616
		local found3 = string.find(t[1], "/info", -5)
617
		local valid_command = nil
618
		local permission = nil
619
620
		if found1 ~= nil and found2 == nil and found3 == nil then
621
622
			for k,v in pairs(commands_table) do
623
				if t[1] == v then
624
					valid_command = 1
625
					break
626
				end
627
			end
628
629
			if valid_command == nil then
630
				registertimer(0, "delayMsg", "Invalid Command", message, player)
631
			else
632
633
				local command_list = access_table[access]
634
				local command = t[1]:gsub("/", "sv_")
635
636
				if command_list == -1 then
637
					permission = 1
638
				else
639
640
					local found = string.find(command_list, command)
641
642
					if found ~= nil then
643
						permission = 1
644
					end
645
646
				end
647
648
				if t[1] == "/a" then
649
					if permission == 1 then
650
						if count == 4 then
651
							if validplayer(t[2]) ~= false then
652
								for i = 1,#players do
653
									svcmd("sv_admin_add " .. resolveplayer(players[i]) .. " " .. t[3] .. " " .. t[4])
654
									registertimer(0, "delayMsg", getname(players[i]) .. " is now an admin at level " .. t[4], "/", player)
655
									registertimer(0, "delayMsg", "You are now an admin!", "\\", players[i])
656
								end
657
658
							else
659
								registertimer(0, "delayMsg", "Invalid Player", message, player)
660
							end
661
						else
662
							registertimer(0, "delayMsg", "Invalid Syntax: /a [player] [nickname] [level]")
663
						end
664
					else
665
						if string.sub(t[1], 1, 1) == "/" then
666
							registertimer(0, "delayMsg", "Only admins can execute this command.", message, player)
667
						end
668
					end
669
				elseif t[1] == "/afk" then
670
					if count == 1 then
671
						registertimer(0, "delayMsg", svcmd("sv_afk " .. resolveplayer(player)), message, player)
672
					elseif count == 2 then
673
						registertimer(0, "delayMsg", svcmd("sv_afk " .. t[2]), message, player)
674
					else
675
						registertimer(0, "delayMsg", "Invalid Syntax: /afk {person}", message, player)
676
					end
677
				elseif t[1] == "/gethash" then
678
					if count == 2 then
679
						registertimer(0, "delayMsg", svcmd("sv_gethash " .. t[2]), message, player)
680
					else
681
						registertimer(0, "delayMsg", "Invalid Syntax: /gethash [player]", message, player)
682
					end
683
				elseif t[1] == "/help" then
684
					if t[2] == "a" then
685
						registertimer(0, "delayMsg", "Syntax: /a [player] [nickname] [level]", message, player)
686
						registertimer(0, "delayMsg", "Adds a player to the admin list.", message, player)
687
					elseif t[2] == "ammo" then
688
						registertimer(0, "delayMsg", "Syntax: /ammo [player] [ammo]", message, player)
689
						registertimer(0, "delayMsg", "Sets the player's primary weapon's ammo. Use * for all players.", message, player)
690
					elseif t[2] == "b" then
691
						registertimer(0, "delayMsg", "Syntax: /b [player] {time}", message, player)
692
						registertimer(0, "delayMsg", "Bans a player indefinitely, or for the time specified.", message, player)
693
					elseif t[2] == "c" then
694
						registertimer(0, "delayMsg", "Syntax: /c [victim] [controller]", message, player)
695
						registertimer(0, "delayMsg", "Forces the victim to move in any direction the controller is moving.", message, player)
696
					elseif t[2] == "deathless" then
697
						registertimer(0, "delayMsg", "Syntax: /deathless [boolean]", message, player)
698
						registertimer(0, "delayMsg", "Will set the game so no one can die. 0 for off, 1 for on.", message, player)
699
						registertimer(0, "delayMsg", "Using 'heal' will override this, however", message, player)
700
					elseif t[2] == "e" then
701
						registertimer(0, "delayMsg", "Syntax: /e [Command]", message, player)
702
						registertimer(0, "delayMsg", "This will execute any command that you would normally put in the console.", message, player)
703
						registertimer(0, "delayMsg", "This is also used more commonly to tell if the script is working.", message, player)
704
						registertimer(0, "delayMsg", "Or if a player has admin.", message, player)
705
					elseif t[2] == "eject" then
706
						registertimer(0, "delayMsg", "Syntax: /eject [player]", message, player)
707
						registertimer(0, "delayMsg", "Ejects a player. Use * for all players.", message, player)
708
					elseif t[2] == "enter" then
709
						registertimer(0, "delayMsg", "Syntax: /enter [player] [seat]", message, player)
710
						registertimer(0, "delayMsg", "Will cause you to enter the player's vehicle, and the seat specified.", message, player)
711
					elseif t[2] == "getloc" then
712
						registertimer(0, "delayMsg", "Syntax: /getloc [player]", message, player)
713
						registertimer(0, "delayMsg", "Will display the location of the player specified.", message, player)
714
					elseif t[2] == "godmode" then
715
						registertimer(0, "delayMsg", "Syntax: /godmode [player]")
716
						registertimer(0, "delayMsg", "Will make this person unkillable. Backtaps, however, will still kill them.", message, player)
717
					elseif t[2] == "hax" then
718
						registertimer(0, "delayMsg", "Syntax: /hax", message, player)
719
						registertimer(0, "delayMsg", "I made this command because I was bored.", message, player)
720
					elseif t[2] == "heal" then
721
						registertimer(0, "delayMsg", "Syntax: /heal [player]", message, player)
722
						registertimer(0, "delayMsg", "Will heal the specified player.", message, player)
723
					elseif t[2] == "help" then
724
						registertimer(0, "delayMsg", "Syntax: /help [Command]", message, player)
725
						registertimer(0, "delayMsg", "Will provide details on any specified command.", message, player)
726
						registertimer(0, "delayMsg", "Do not include / or \ for the [Command]", message, player)
727
					elseif t[2] == "hitler" then
728
						registertimer(0, "delayMsg", "Syntax: /hitler", message, player)
729
						registertimer(0, "delayMsg", "Will lethaly inject everyone.", message, player)
730
					elseif t[2] == "infammo" then
731
						registertimer(0, "delayMsg", "Syntax: /infammo [boolean]", message, player)
732
						registertimer(0, "delayMsg", "Will set the game so everyone has infinite ammo. 0 for off, 1 for on", message, player)
733
					elseif t[2] == "give" then
734
						registertimer(0, "delayMsg", "Syntax: /give [weapon] {player}", message, player)
735
						registertimer(0, "delayMsg", "Will give yourself, or the person specified, a weapon.", message, player)
736
						registertimer(0, "delayMsg", "You can hold up to 4 weapons. If you are holding 4 weapons,", message, player)
737
						registertimer(0, "delayMsg", "you cannot pickup the flag, or the oddball.", message, player)
738
					elseif t[2] == "gethash" then
739
						registertimer(0, "delayMsg", "Syntax: /gethash [player]", message, player)
740
						registertimer(0, "delayMsg", "This will get the hash of the player specified.", message, player)
741
					elseif t[2] == "invis" then
742
						registertimer(0, "delayMsg", "Syntax: /invis [player] {time}", message, player)
743
						registertimer(0, "delayMsg", "This will camouflage the person specified for the amount of time specified.", message, player)
744
					elseif t[2] == "j" then
745
						registertimer(0, "delayMsg", "Syntax: /j [player] [x] [y] [z]", message, player)
746
						registertimer(0, "delayMsg", "Moves the specified player by coords specified.", message, player)
747
					elseif t[2] == "k" then
748
						registertimer(0, "delayMsg", "Syntax: /k [player]", message, player)
749
						registertimer(0, "delayMsg", "Will kick the player specified.", message, player)
750
					elseif t[2] == "kill" then
751
						registertimer(0, "delayMsg", "Syntax: /kill [player]", message, player)
752
						registertimer(0, "delayMsg", "Will kill the player specified.", message, player)
753
					elseif t[2] == "lo3" then
754
						registertimer(0, "delayMsg", "Syntax: /lo3", message, player)
755
						registertimer(0, "delayMsg", "Will lo3 the game.", message, player)
756
					elseif t[2] == "m" then
757
						registertimer(0, "delayMsg", "Syntax: /m [map] [gametype] {script} {script2} . . .", message, player)
758
						registertimer(0, "delayMsg", "Will load the map specified. No need to specify chatcommands script.", message, player)
759
					elseif t[2] == "mc" then
760
						registertimer(0, "delayMsg", "Syntax: /mc", message, player)
761
						registertimer(0, "delayMsg", "Starts the mapcycle.", message, player)
762
					elseif t[2] == "mnext" then
763
						registertimer(0, "delayMsg", "Syntax: /mnext", message, player)
764
						registertimer(0, "delayMsg", "Loads the next map in the mapcycle.", message, player)
765
					elseif t[2] == "mute" then
766
						registertimer(0, "delayMsg", "Syntax: /mute [player] {time}", message, player)
767
						registertimer(0, "delayMsg", "Mutes the player. Admins cannot be muted.", message, player)
768
					elseif t[2] == "pass" then
769
						registertimer(0, "delayMsg", "Syntax: /pass [password]", message, player)
770
						registertimer(0, "delayMsg", "Sets the server password.", message, player)
771
					elseif t[2] == "reset" then
772
						registertimer(0, "delayMsg", "Syntax: /reset", message, player)
773
						registertimer(0, "delayMsg", "Resets the map.", message, player)
774
					elseif t[2] == "resp" then
775
						registertimer(0, "delayMsg", "Syntax: /resp [player] [time]", message, player)
776
						registertimer(0, "delayMsg", "Sets respawn time of player. Only works if player is dead.", message, player)
777
					elseif t[2] == "say" then
778
						registertimer(0, "delayMsg", "Syntax: /say [message]", message, player)
779
						registertimer(0, "delayMsg", "Will say something as the server. No quotes needed.", message, player)
780
					elseif t[2] == "sc" then
781
						registertimer(0, "delayMsg", "Syntax: /sc [player] [nickname]", message, player)
782
						registertimer(0, "delayMsg", "Will set the player's nickname. Used instead of player IDs", message, player)
783
					elseif t[2] == "setassists" then
784
						registertimer(0, "delayMsg", "Syntax: /setassists [player] [# of assists]", message, player)
785
						registertimer(0, "delayMsg", "Will set the assists of the player specified.", message, player)
786
					elseif t[2] == "setdeaths" then
787
						registertimer(0, "delayMsg", "Syntax: /setdeaths [player] [# of deaths]", message, player)
788
						registertimer(0, "delayMsg", "Will set the deaths of the player specified.", message, player)
789
					elseif t[2] == "setfrags" then
790
						registertimer(0, "delayMsg", "Syntax: /setfrags [player] [# of frags]", message, player)
791
						registertimer(0, "delayMsg", "Will set the # of frag grenades of the player specified.", message, player)
792
					elseif t[2] == "setkills" then
793
						registertimer(0, "delayMsg", "Syntax: /setkills [player] [# of kills]", message, player)
794
						registertimer(0, "delayMsg", "Will set the kills of the player specified.", message, player)
795
					elseif t[2] == "setname" then
796
						registertimer(0, "delayMsg", "Syntax: /setname [player] [name]", message, player)
797
						registertimer(0, "delayMsg", "Sets the name of the player specified.", message, player)
798
						registertimer(0, "delayMsg", "You will only notice a difference on rejoin.", message, player)
799
					elseif t[2] == "setresp" then
800
						registertimer(0, "delayMsg", "Syntax: /setresp [time]", message, player)
801
						registertimer(0, "delayMsg", "Sets the universal respawn time of all maps/gametypes.", message, player)
802
					elseif t[2] == "setplasmas" then
803
						registertimer(0, "delayMsg", "Syntax: /setplasmas [player] [# of plasma grenades]", message, player)
804
						registertimer(0, "delayMsg", "Will set the plasma grenades of the player specified.", message, player)
805
					elseif t[2] == "spd" then
806
						registertimer(0, "delayMsg", "Syntax: /spd [player] [speed]", message, player)
807
						registertimer(0, "delayMsg", "Will set the speed of the player specified.", message, player)
808
					elseif t[2] == "spawn" then
809
						registertimer(0, "delayMsg", "Syntax: /spawn [object] {player} {ammount} {resptime} {recycle}", message, player)
810
						registertimer(0, "delayMsg", "Will spawn a object over a player if specified.", message, player)
811
					elseif t[2] == "st" then
812
						registertimer(0, "delayMsg", "Syntax: /st [location]", message, player)
813
						registertimer(0, "delayMsg", "Will set a teleport location to wherever you're standing.", message, player)
814
					elseif t[2] == "suspend" then
815
						registertimer(0, "delayMsg", "Syntax: /suspend [player] {time}", message, player)
816
						registertimer(0, "delayMsg", "Will suspend the player for the time specified.", message, player)
817
					elseif t[2] == "t" then
818
						registertimer(0, "delayMsg", "Syntax: /t [player] [location]", message, player)
819
						registertimer(0, "delayMsg", "Will teleport the player specified to the location specified.", message, player)
820
					elseif t[2] == "td" then
821
						registertimer(0, "delayMsg", "Syntax: /td [location]", message, player)
822
						registertimer(0, "delayMsg", "Will delete the teleport location specified.", message, player)
823
					elseif t[2] == "test" then
824
						registertimer(0, "delayMsg", "Syntax: /test [player]", message, player)
825
						registertimer(0, "delayMsg", "I used this to randomly see the returns of some addresses and offsets.", message, player)
826
					elseif t[2] == "tp" then
827
						registertimer(0, "delayMsg", "Syntax: /tp [player] [t_player]", message, player)
828
						registertimer(0, "delayMsg", "Will teleport player to t_player", message, player)
829
					elseif t[2] == "ts" then
830
						registertimer(0, "delayMsg", "Syntax: /ts [player] {team}", message, player)
831
						registertimer(0, "delayMsg", "Will switch the players team. Teams are 0 and 1", message, player)
832
					elseif t[2] == "unhax" then
833
						registertimer(0, "delayMsg", "Syntax: /unhax", message, player)
834
						registertimer(0, "delayMsg", "Unhax's you. I was bored, what can i say?", message, player)
835
					elseif t[2] == "unmute" then
836
						registertimer(0, "delayMsg", "Syntax: /unmute [player]", message, player)
837
						registertimer(0, "delayMsg", "Unmutes the player specified.", message, player)
838
					elseif t[2] == "unsuspend" then
839
						registertimer(0, "delayMsg", "Syntax: /unsuspend [player]", message, player)
840
						registertimer(0, "delayMsg", "Unsuspends the player specified.", message, player)
841
					elseif t[2] == "credits" then
842
						registertimer(0, "delayMsg", "Created by [DWM]Wizard or =RDA=Wizard", message, player)
843
						registertimer(0, "delayMsg", "Base script created by Smiley", message, player)
844
					else
845
						registertimer(0, "delayMsg", "Invalid Command! Use /list for list of commands!", message, player)
846
					end
847
				elseif t[1] == "/ammo" then
848
					if permission == 1 then
849
						if count == 3 then
850
							if validplayer(t[2]) ~= false then
851
								for i = 1,#players do
852
									local m_player = getplayer(players[i])
853
									local m_ObjId = readdword(m_player, 0x34)
854
									local m_Object = getobject(m_ObjId)
855
									if m_player ~= nil and m_Object ~= nil then
856
										for i = 0, 3 do
857
											local m_weaponId = readdword(m_Object, 0x2F8 + (i*4))
858
											if m_weaponId ~= -1 then
859
												local m_weapon = getobject(m_weaponId)
860
												writeword(m_weapon, 0x2B8, t[3]) -- loaded clip to specified ammount
861
												updateammo(m_weaponId) -- force it to sync
862
												registertimer(0, "delayMsg", getname(players[i]) "'s ammo was set to " .. t[3], message, player)
863
											end
864
										end
865
									end
866
								end
867
868
							else
869
								registertimer(0, "delayMsg", "Invalid Player", message, player)
870
							end
871
						else
872
							registertimer(0, "delayMsg", "Invalid Syntax: /ammo [player] [ammo]", message, player)
873
						end
874
					else
875
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
876
					end
877
				elseif t[1] == "/b" then
878
					if permission == 1 then
879
						if count == 2 then
880
							if validplayer(t[2]) ~= false then
881
								for i = 1,#players do
882
									svcmd("sv_ban " .. resolveplayer(players[i]))
883
									registertimer(0, "delayMsg", getname(players[i]) .. " has been banned from the server!", message, player)
884
								end
885
							else
886
								registertimer(0, "delayMsg", "Invalid Player", message, player)
887
							end
888
						elseif count == 3 then
889
							if validplayer(t[2]) ~= false then
890
								for i = 1,#players do
891
									svcmd("sv_ban " .. resolveplayer(players[i]) .. " " .. t[3])
892
									registertimer(0, "delayMsg", getname(players[i]) .. " has been banned for " .. t[3] .. " time!", message, player)
893
								end
894
							else
895
								registertimer(0, "delayMsg", "Invalid Player", message, player)
896
							end
897
						else
898
							registertimer(0, "delayMsg", "Invalid Syntax: /b [player] {time}", message, player)
899
						end
900
					else
901
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
902
					end
903
				elseif t[1] == "/deathless" then
904
					if permission == 1 then
905
						if count == 1 then
906
							registertimer(0, "delayMsg", svcmd("sv_deathless"), message, player)
907
						elseif count == 2 then
908
							registertimer(0, "delayMsg", svcmd("sv_deathless " .. t[2]), message, player)
909
						else
910
							registertimer(0, "delayMsg", "Invalid Syntax: /deathless {boolean}", message, player)
911
						end
912
					else
913
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
914
					end
915
				elseif t[1] == "/setmode" then
916
					if permission == 1 then
917
						if count == 3 then
918
							registertimer(0, "delayMsg", svcmd("sv_setmode " .. t[2] .. " " .. t[3]), message, player)
919
						elseif count == 4 then
920
							registertimer(0, "delayMsg", svcmd("sv_setmode " .. t[2] .. " " .. t[3] .. " " .. t[4]), message, player)
921
						else
922
							registertimer(0, "delayMsg", "Invalid Syntax: /setmode [player] [mode] {object}", message, player)
923
						end
924
					else
925
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
926
					end
927
				elseif t[1] == "/e" then
928
					if permission == 1 then
929
						registertimer(0, "delayMsg", "Executed " .. string.sub(message, 4), message, player)
930
						svcmd(string.sub(message, 4))
931
					else
932
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
933
					end
934
				elseif t[1] == "/eject" then
935
					if permission == 1 then
936
						if count == 2 then
937
							registertimer(0, "delayMsg", svcmd("sv_eject " .. t[2]), message, player)
938
						else
939
							registertimer(0, "delayMsg", "Invalid Syntax: /eject [player]", message, player)
940
						end
941
					else
942
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
943
					end
944
				elseif t[1] == "/getloc" then
945
					if permission == 1 then
946
						if count == 2 then
947
							registertimer(0, "delayMsg", svcmd("sv_getloc " .. t[2]), message, player)
948
						else
949
							registertimer(0, "delayMsg", "Invalid Syntax: /getloc [player]", message, player)
950
						end
951
					else
952
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
953
					end
954
				elseif t[1] == "/ghost" then
955
					if permission == 1 then
956
						if count == 1 then
957
							registertimer(0, "delayMsg", svcmd("sv_ghost " .. resolveplayer(player)), message, player)
958
						elseif count == 2 then
959
							registertimer(0, "delayMsg", svcmd("sv_ghost " .. t[2]), message, player)
960
						else
961
							registertimer(0, "delayMsg", "Invalid Syntax: /ghost {player}", message, player)
962
						end
963
					else
964
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
965
					end
966
				elseif t[1] == "/unghost" then
967
					if permission == 1 then
968
						if count == 1 then
969
							registertimer(0, "delayMsg", svcmd("sv_unghost " .. resolveplayer(player)), message, player)
970
						elseif count == 2 then
971
							registertimer(0, "delayMsg", svcmd("sv_unghost " .. t[2]), message, player)
972
						else
973
							registertimer(0, "delayMsg", "Invalid Syntax: /unghost {player}", message, player)
974
						end
975
					else
976
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
977
					end
978
				elseif t[1] == "/godmode" then
979
					if permission == 1 then
980
						if count == 2 then
981
							registertimer(0, "delayMsg", svcmd("sv_setgod " .. t[2]), message, player)
982
						else
983
							registertimer(0, "delayMsg", "Invalid Syntax: /godmode [player]", message, player)
984
						end
985
					else
986
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
987
					end
988
				elseif t[1] == "/hax" then
989
					if permission == 1 then
990
						if count == 1 then
991
							registertimer(0, "delayMsg", svcmd("cheat_hax " .. resolveplayer(player)), message, player)
992
						else
993
							registertimer(0, "delayMsg", "Invalid Syntax: /hax", message, player)
994
						end
995
					else
996
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
997
					end
998
				elseif t[1] == "/heal" then
999
					if permission == 1 then
1000
						if count == 2 then
1001
							registertimer(0, "delayMsg", svcmd("sv_heal " .. t[2]), message, player)
1002
						else
1003
							registertimer(0, "delayMsg", "Invalid Syntax: /heal [player]", message, player)
1004
						end
1005
					else
1006
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1007
					end
1008
				elseif t[1] == "/ungod" then
1009
					if permission == 1 then
1010
						if count == 2 then
1011
							registertimer(0, "delayMsg", svcmd("sv_ungod " .. t[2]), message, player)
1012
						else
1013
							registertimer(0, "delayMsg", "Invalid Syntax: /ungod [player]", message, player)
1014
						end
1015
					else
1016
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1017
					end
1018
				elseif t[1] == "/hitler" then
1019
					if permission == 1 then
1020
						if count == 1 then
1021
							registertimer(0, "delayMsg", svcmd("sv_hitler"), message, player)
1022
						else
1023
							registertimer(0, "delayMsg", "Invalid Syntax: /hitler", message, player)
1024
						end
1025
					else
1026
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1027
					end
1028
				elseif t[1] == "/infammo" then
1029
					if permission == 1 then
1030
						if count == 1 then
1031
							registertimer(0, "delayMsg", svcmd("sv_infinite_ammo"), message, player)
1032
						elseif count == 2 then
1033
							registertimer(0, "delayMsg", svcmd("sv_infinite_ammo " .. t[2]), message, player)
1034
						else
1035
							registertimer(0, "delayMsg", "Invalid Syntax: /infammo {boolean}", message, player)
1036
						end
1037
					else
1038
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1039
					end
1040
				elseif t[1] == "/invis" then
1041
					if permission == 1 then
1042
						if count == 2 then
1043
							registertimer(0, "delayMsg", svcmd("sv_invis " .. t[2]), message, player)
1044
						elseif count == 3 then
1045
							registertimer(0, "delayMsg", svcmd("sv_invis " .. t[2] .. " " .. t[3]), message, player)
1046
						else
1047
							registertimer(0, "delayMsg", "Invalid Syntax: /invis [player] {time}", message, player)
1048
						end
1049
					else
1050
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1051
					end
1052
				elseif t[1] == "/j" then
1053
					if permission == 1 then
1054
						if count == 5 then
1055
							registertimer(0, "delayMsg", svcmd("sv_move " .. t[2] .. " " .. t[3] .. " " .. t[4] .. " " .. t[5]), message, player)
1056
						else
1057
							registertimer(0, "delayMsg", "Invalid Syntax: /j [player] [x] [y] [z]", message, player)
1058
						end
1059
					else
1060
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1061
					end
1062
				elseif t[1] == "/k" then
1063
					if permission == 1 then
1064
						if count == 2 then
1065
							if validplayer(t[2]) ~= false then
1066
								for i = 1, #players do
1067
									svcmd("sv_kick " .. resolveplayer(players[i]))
1068
									registertimer(0, "delayMsg", getname(players[i]) .. " has been kicked from the server!", message, player)
1069
								end
1070
1071
							else
1072
								registertimer(0, "delayMsg", "Invalid Player", message, player)
1073
							end
1074
						else
1075
							registertimer(0, "delayMsg", "Invalid Syntax: /k [player] {time}", message, player)
1076
						end
1077
					else
1078
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1079
					end
1080
				elseif t[1] == "/kill" then
1081
					if permission == 1 then
1082
						if count == 2 then
1083
							if validplayer(t[2]) ~= false then
1084
								for i = 1, #players do
1085
									if getobject(getplayerobjectid(players[i])) ~= nil then
1086
										kill(players[i])
1087
										registertimer(0, "delayMsg", getname(players[i]) .. " has been killed!", message, player)
1088
									else
1089
										registertimer(0, "delayMsg", "Error! " .. getname(players[i]) .. " is dead!", message, player)
1090
									end
1091
								end
1092
1093
							else
1094
								registertimer(0, "delayMsg", "Invalid Player", message, player)
1095
							end
1096
						else
1097
							registertimer(0, "delayMsg", "Invalid Syntax: /kill [player]", message, player)
1098
						end
1099
					else
1100
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1101
					end
1102
				elseif t[1] == "/lo3" then
1103
					if permission == 1 then
1104
						if count == 1 then
1105
							registertimer(0, "delayMsg", svcmd("sv_scrim"), message, player)
1106
						else
1107
							registertimer(0, "delayMsg", "Invalid Syntax: /lo3", message, player)
1108
						end
1109
					else
1110
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1111
					end
1112
				elseif t[1] == "/m" then
1113
					if permission == 1 then
1114
						if string.find(string.lower(message), "chatcommands") == nil then
1115
							registertimer(0, "delayMsg", svcmd("sv_map " .. string.sub(message, 4) .. " ChatCommands"), message, player)
1116
						else
1117
							registertimer(0, "delayMsg", svcmd("sv_map " .. string.sub(message, 4)), message, player)
1118
						end
1119
					else
1120
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1121
					end
1122
				elseif t[1] == "/mc" then
1123
					if permission == 1 then
1124
						if count == 1 then
1125
							registertimer(0, "delayMsg", svcmd("sv_mapcycle_begin"), message, player)
1126
						else
1127
							registertimer(0, "delayMsg", "Invalid Syntax: /mc", message, player)
1128
						end
1129
					else
1130
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1131
					end
1132
				elseif t[1] == "/mnext" then
1133
					if permission == 1 then
1134
						if count == 1 then
1135
							registertimer(0, "delayMsg", svcmd("sv_map_next"), message, player)
1136
						else
1137
							registertimer(0, "delayMsg", "Invalid Syntax: /mnext", message, player)
1138
						end
1139
					else
1140
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1141
					end
1142
				elseif t[1] == "/mute" then
1143
					if permission == 1 then
1144
						if count == 2 then
1145
							registertimer(0, "delayMsg", svcmd("sv_mute " .. t[2]), message, player)
1146
						else
1147
							registertimer(0, "delayMsg", "Invalid Syntax: /mute [player]", message, player)
1148
						end
1149
					else
1150
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1151
					end
1152
				elseif t[1] == "/noweapons" then
1153
					if permission == 1 then
1154
						if count == 2 then
1155
							registertimer(0, "delayMsg", svcmd("sv_noweapons " .. t[2]), message, player)
1156
						else
1157
							registertimer(0, "delayMsg", "Invalid Syntax: /noweapons [boolean]", message, player)
1158
						end
1159
					else
1160
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1161
					end
1162
				elseif t[1] == "/pass" then
1163
					if permission == 1 then
1164
						if count == 2 then
1165
							if t[2] == "off" or t[2] == '""' then
1166
								registertimer(0, "delayMsg", "Password has been taken off.", message, player)
1167
								svcmd('sv_password ""')
1168
							else
1169
								svcmd("sv_password " .. t[2])
1170
								registertimer(0, "delayMsg", "Password set to '" .. t[2] .. "'", message, player)
1171
							end
1172
						else
1173
							registertimer(0, "delayMsg", "Invalid Syntax: /pass [password]", message, player)
1174
						end
1175
					else
1176
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1177
					end
1178
				elseif t[1] == "/pl" then
1179
					if permission == 1 then
1180
						if count == 1 then
1181
							for c = 0,15 do
1182
								if getplayer(c) ~= nil then
1183
									privatesay(player, "(" .. c + 1 .. ")   " .. getname(c))
1184
								end
1185
							end
1186
						else
1187
							privatesay(player, "Invalid Syntax: \pl", message, player)
1188
						end
1189
					else
1190
						privatesay(player, "You cannot execute this command.")
1191
					end
1192
				elseif t[1] == "/reset" then
1193
					if permission == 1 then
1194
						if count == 1 then
1195
							registertimer(0, "delayMsg", svcmd("sv_map_reset"), message, player)
1196
						else
1197
							registertimer(0, "delayMsg", "Invalid Syntax: /reset", message, player)
1198
						end
1199
					else
1200
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1201
					end
1202
				elseif t[1] == "/revoke" then
1203
					if permission == 1 then
1204
						if count == 2 then
1205
							registertimer(0, "delayMsg", svcmd("sv_admin_del " .. t[2]), message, player)
1206
						else
1207
							registertimer(0, "delayMsg", "Invalid Syntax: /revoke [player]", message, player)
1208
						end
1209
					else
1210
						registertimer(0, "delayMsg", "Only swath can revoke admins.", message, player)
1211
					end
1212
				elseif t[1] == "/banlist" then
1213
					if permission == 1 then
1214
						if count == 1 then
1215
							registertimer(0, "delayMsg", svcmd("sv_banlist"), message, player)
1216
						else
1217
							registertimer(0, "delayMsg", "Invalid Syntax: /banlist", message, player)
1218
						end
1219
					else
1220
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1221
					end
1222
				elseif t[1] == "/resp" then
1223
					if permission == 1 then
1224
						if count == 3 then
1225
							registertimer(0, "delayMsg", svcmd("sv_resp " .. t[2] .. " " .. t[3]), message, player)
1226
						else
1227
							registertimer(0, "delayMsg", "Invalid Syntax /resp [player] [respawn time]", message, player)
1228
						end
1229
					else
1230
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1231
					end
1232
				elseif t[1] == "/say" then
1233
					if permission == 1 then
1234
						if count == 1 then
1235
						else
1236
							registertimer(0, "delayMsg", string.sub(message, 6), message, player)
1237
						end
1238
					else
1239
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1240
					end
1241
				elseif t[1] == "/enter" then
1242
					if permission == 1 then
1243
						if count == 2 then
1244
							local vehid = nil
1245
							if t[2] == "wraith" then
1246
								vehid = Spawn(message, "Wraith", "vehi", "vehicles\\wraith\\wraith", player)
1247
							elseif t[2] == "lifepod" then
1248
								vehid = Spawn(message, "Lifepod", "vehi", "vehicles\\lifepod\\lifepod", player)
1249
							elseif t[2] == "longsword" then
1250
								vehid = Spawn(message, "Longsword", "vehi", "vehicles\\fighterbomber\\fighterbomber", player)
1251
							elseif t[2] == "dropship" then
1252
								vehid = Spawn(message, "Covenant Dropship", "vehi", "vehicles\\c_dropship\\c_dropship", player)
1253
							elseif t[2] == "cryotube" then
1254
								vehid = Spawn(message, "Cryotube", "vehi", "levels\\a10\\devices\\cryotube\\cryotube", player)
1255
							elseif t[2] == "peli" or t[2] == "pelican" then
1256
								vehid = Spawn(message, "Pelican", "vehi", "vehicles\\pelican\\pelican", player)
1257
							elseif t[2] == "ghost" then
1258
								vehid = Spawn(message, "Ghost", "vehi", "vehicles\\ghost\\ghost_mp", player)
1259
							elseif t[2] == "hog" then
1260
								vehid = Spawn(message, "Warthog", "vehi", "vehicles\\warthog\\mp_warthog", player)
1261
							elseif t[2] == "rhog" then
1262
								vehid = Spawn(message, "Rocket Warthog", "vehi", "vehicles\\rwarthog\\rwarthog", player)
1263
							elseif t[2] == "shee" or t[2] == "banshee" then
1264
								vehid = Spawn(message, "Banshee", "vehi", "vehicles\\banshee\\banshee_mp", player)
1265
							elseif t[2] == "tank" or t[2] == "scorpion" then
1266
								vehid = Spawn(message, "Tank", "vehi", "vehicles\\scorpion\\scorpion_mp", player)
1267
							elseif t[2] == "turret" or t[2] == "shade" then
1268
								vehid = Spawn(message, "Gun Turret", "vehi", "vehicles\\c gun turret\\c gun turret_mp", player)
1269
							else
1270
								registertimer(0, "delayMsg", "Invalid Vehicle!", message, player)
1271
							end
1272
							if vehid ~= nil then
1273
								local m_player = getplayer(player)
1274
								local m_playerObjId = getplayerobjectid(player)
1275
								if m_playerObjId ~= 0xffffffff then
1276
									entervehicle(player, vehid, 0)
1277
									table.insert(vehicle_drone_table[player], vehid)
1278
								else
1279
									registertimer(0, "delayMsg", "You cannot enter a vehicle while dead!", message, player)
1280
								end
1281
							end
1282
						else
1283
							registertimer(0, "delayMsg", "Invalid Syntax: /enter [vehicle]", message, player)
1284
						end
1285
					else
1286
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1287
					end
1288
				elseif t[1] == "/setassists" then
1289
					if permission == 1 then
1290
						if count == 3 then
1291
							registertimer(0, "delayMsg", svcmd("sv_setassists " .. t[2] .. " " .. t[3]), message, player)
1292
						else
1293
							registertimer(0, "delayMsg", "Invalid Syntax: /setassists [player] [assists]", message, player)
1294
						end
1295
					else
1296
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1297
					end
1298
				elseif t[1] == "/setdeaths" then
1299
					if permission == 1 then
1300
						if count == 3 then
1301
							registertimer(0, "delayMsg", svcmd("sv_setdeaths " .. t[2] .. " " .. t[3]), message, player)
1302
						else
1303
							registertimer(0, "delayMsg", "Invalid Syntax: /setdeaths [player] [deaths]", message, player)
1304
						end
1305
					else
1306
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1307
					end
1308
				elseif t[1] == "/setfrags" then
1309
					if permission == 1 then
1310
						if count == 3 then
1311
							registertimer(0, "delayMsg", svcmd("sv_setfrags " .. t[2] .. " " .. t[3]), message, player)
1312
						else
1313
							registertimer(0, "delayMsg", "Invalid Syntax: /setfrags [player] [amount]", message, player)
1314
						end
1315
					else
1316
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1317
					end
1318
				elseif t[1] == "/setkills" then
1319
					if permission == 1 then
1320
						if count == 3 then
1321
							registertimer(0, "delayMsg", svcmd("sv_setkills " .. t[2] .. " " .. t[3]), message, player)
1322
						else
1323
							registertimer(0, "delayMsg", "Invalid Syntax: /setkills [player] [kills]", message, player)
1324
						end
1325
					else
1326
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1327
					end
1328
				elseif t[1] == "/setresp" then
1329
					if permission == 1 then
1330
						if count == 2 then
1331
							registertimer(0, "delayMsg", svcmd("sv_respawn_time " .. t[2]), message, player)
1332
						else
1333
							registertimer(0, "delayMsg", "Invalid Syntax: /setresp [seconds]", message, player)
1334
						end
1335
					else
1336
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1337
					end
1338
				elseif t[1] == "/setplasmas" then
1339
					if permission == 1 then
1340
						if count == 3 then
1341
							registertimer(0, "delayMsg", svcmd("sv_setplasmas " .. t[2]), message, player)
1342
						else
1343
							registertimer(0, "delayMsg", "Invalid Syntax: /setplasmas [player] [amount]", message, player)
1344
						end
1345
					else
1346
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1347
					end
1348
				elseif t[1] == "/spd" then
1349
					if permission == 1 then
1350
						if count == 3 then
1351
							if validplayer(t[2]) ~= false then
1352
								if tonumber(t[3]) ~= nil then
1353
									for i = 1,#players do
1354
										if getobject(getplayerobjectid(players[i])) ~= nil then
1355
											setspeed(players[i], t[3])
1356
											registertimer(0, "delayMsg", getname(players[i]) .. "'s speed was set to " .. t[3], message, player)
1357
										else
1358
											registertimer(0, "delayMsg", "Error! " .. getname(players[i]) .. " is dead!", message, player)
1359
										end
1360
									end
1361
								else
1362
									registertimer(0, "delayMsg", t[3] .. " is not a valid number.", message, player)
1363
								end
1364
							else
1365
								registertimer(0, "delayMsg", "Invalid Player", message, player)
1366
							end
1367
						else
1368
							registertimer(0, "delayMsg", "Invalid Syntax: /spd [player] [speed]", message, player)
1369
						end
1370
					else
1371
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1372
					end
1373
				elseif t[1] == "/spawn" then
1374
					if permission == 1 then
1375
						--Objects with 'bipd' tag
1376
						if t[2] == "cyborg" or t[2] == "bot" or t[2] == "mastercheif" or t[2] == "biped" or t[2] == "bipd" then
1377
							Spawn(message, "Cyborg", "bipd", "characters\\cyborg_mp\\cyborg_mp", player, false)
1378
						elseif t[2] == "captain" or t[2] == "keyes" then
1379
							Spawn(message, "Captain Keyes", "bipd", "characters\\captain\\captain", false)
1380
						elseif t[2] == "cortana" then
1381
							Spawn(message, "Cortana", "bipd", "characters\\cortana\\cortana", false)
1382
						elseif t[2] == "cortana2" then
1383
							Spawn(message, "Cortana2", "bipd", "characters\\cortana\\halo_enhanced\\halo_enhanced", false)
1384
						elseif t[2] == "crewman" then
1385
							Spawn(message, "Crewman", "bipd", "characters\\crewman\\crewman", false)
1386
						elseif t[2] == "elite" then
1387
							Spawn(message, "elite", "bipd", "characters\\elite\\elite", false)
1388
						elseif t[2] == "elite2" then
1389
							Spawn(message, "Elite Special", "bipd", "characters\\elite\\elite special", false)
1390
						elseif t[2] == "engineer" then
1391
							Spawn(message, "Engineer", "bipd", "characters\\engineer\\engineer", false)
1392
						elseif t[2] == "flood" then
1393
							Spawn(message, "Flood Captain", "bipd", "characters\\flood_captain\\flood_captain", false)
1394
						elseif t[2] == "flood2" then
1395
							Spawn(message, "Flood Infection", "bipd", "characters\\flood_infection\\flood_infection", false)
1396
						elseif t[2] == "flood3" then
1397
							Spawn(message, "Flood Carrier", "bipd", "characters\\floodcarrier\\floodcarrier", false)
1398
						elseif t[2] == "floodelite" then
1399
							Spawn(message, "FloodCombat Elite", "bipd", "characters\\floodcombat elite\\floodcombat elite", false)
1400
						elseif t[2] == "floodhuman" then
1401
							Spawn(message, "FloodCombat Human", "bipd", "characters\\floodcombat_human\\floodcombat_human", false)
1402
						elseif t[2] == "pedobear" or t[2] == "grunt" then
1403
							Spawn(message, "Pedobear", "bipd", "characters\\grunt\\grunt", false)
1404
						elseif t[2] == "hunter" then
1405
							Spawn(message, "Hunter", "bipd", "characters\\hunter\\hunter", false)
1406
						elseif t[2] == "marine" then
1407
							Spawn(message, "Marine", "bipd", "characters\\marine\\marine", false)
1408
						elseif t[2] == "marinesuicide" or t[2] == "marine2" then
1409
							Spawn(message, "Marine Suicidal", "bipd", "characters\\marine_suicidal\\marine_suicidal", false)
1410
						elseif t[2] == "monitor" then
1411
							Spawn(message, "Monitor", "bipd", "characters\\monitor\\monitor", false)
1412
						elseif t[2] == "sentinel" then
1413
							Spawn(message, "Sentinel", "bipd", "characters\\sentinel\\sentinel", false)
1414
						elseif t[2] == "johnson" then
1415
							Spawn(message, "Sgt. Johnson", "bipd", "characters\\johnson\\johnson", false)
1416
						--Objects with 'eqip' tags
1417
						elseif t[2] == "camo" or t[2] == "camouflage" then
1418
							Spawn(message, "Camouflage", "eqip", "powerups\\active camouflage", player, false)
1419
						elseif t[2] == "dblspd" then
1420
							Spawn(message, "Double Speed", "eqip", "powerups\\double speed", player, false)
1421
						elseif t[2] == "fullspec" then
1422
							Spawn(message, "Full-Spectrum Vision", "eqip", "powerups\\full-spectrum vision", player, false)
1423
						elseif t[2] == "fnade" or t[2] == "nades" then
1424
							Spawn(message, "Frag Grenade", "eqip", "weapons\\frag grenade\\frag grenade", player, false)
1425
						elseif t[2] == "pnade" then
1426
							Spawn(message, "Plasma Grenade", "eqip", "weapons\\plasma grenade\\plasma grenade", player, false)
1427
						elseif t[2] == "overshield" or t[2] == "os" then
1428
							Spawn(message, "Overshield", "eqip", "powerups\\over shield", player, false)
1429
						elseif t[2] == "rifleammo" then
1430
							Spawn(message, "Assault Rifle Ammo", "eqip", "powerups\\assault rifle ammo\\assault rifle ammo", player, false)
1431
						elseif t[2] == "healthpack" then
1432
							Spawn(message, "Health Pack", "eqip", "powerups\\health pack", player, false)
1433
						elseif t[2] == "needlerammo" then
1434
							Spawn(message, "Needler Ammo", "eqip", "powerups\\needler ammo\\needler ammo", player, false)
1435
						elseif t[2] == "pistolammo" then
1436
							Spawn(message, "Pistol Ammo", "eqip", "powerups\\pistol ammo\\pistol ammo", player, false)
1437
						elseif t[2] == "rocketammo" then
1438
							Spawn(message, "Rocket Ammo", "eqip", "powerups\\rocket launcher ammo\\rocket launcher ammo", player, false)
1439
						elseif t[2] == "shottyammo" then
1440
							Spawn(message, "Shotgun Ammo", "eqip", "powerups\\shotgun ammo\\shotgun ammo", player, false)
1441
						elseif t[2] == "sniperammo" then
1442
							Spawn(message, "Sniper Ammo", "eqip", "powerups\\sniper rifle ammo\\sniper rifle ammo", player, false)
1443
						elseif t[2] == "flameammo" then
1444
							Spawn(message, "Flamethrower Ammo", "eqip", "powerups\\flamethrower ammo\\flamethrower ammo", player, false)
1445
						--Objects with 'weap' tag
1446
						elseif t[2] == "energysword" or t[2] == "esword" then
1447
							Spawn(message, "Energy Sword", "weap", "weapons\\energy sword\\energy sword", false)
1448
						elseif t[2] == "ball" or t[2] == "oddball" then
1449
							Spawn(message, "Oddball", "weap", "weapons\\ball\\ball", player, false)
1450
						elseif t[2] == "flag" then
1451
							Spawn(message, "Flag", "weap", "weapons\\flag\\flag", player, false)
1452
						elseif t[2] == "frg" or t[2] == "fuelrod" or t[2] == "rod" or t[2] == "plasmacannon" then
1453
							Spawn(message, "Fuel Rod", "weap", "weapons\\plasma_cannon\\plasma_cannon", player, false)
1454
						elseif t[2] == "ggun" or t[2] == "gravitygun" then
1455
							Spawn(message, "Gravity Gun", "weap", "weapons\\gravity rifle\\gravity rifle", player, false)
1456
						elseif t[2] == "needler" then
1457
							Spawn(message, "Needler", "weap", "weapons\\needler\\mp_needler", player, false)
1458
						elseif t[2] == "pistol" then
1459
							Spawn(message, "Pistol", "weap", "weapons\\pistol\\pistol", player, false)
1460
						elseif t[2] == "ppistol" or t[2] == "plasmapistol" then
1461
							Spawn(message, "Plasma Pistol", "weap", "weapons\\plasma pistol\\plasma pistol", player, false)
1462
						elseif t[2] == "prifle" or t[2] == "plasmarifle" then
1463
							Spawn(message, "Plasma Rifle", "weap", "weapons\\plasma rifle\\plasma rifle", player, false)
1464
						elseif t[2] == "rifle" or t[2] == "arifle" or t[2] == "assaultrifle" then
1465
							Spawn(message, "Assault Rifle", "weap", "weapons\\assault rifle\\assault rifle", player, false)
1466
						elseif t[2] == "rocket" or t[2] == "rocketlauncher" or t[2] == "rox" then
1467
							Spawn(message, "Rocket Launcher", "weap", "weapons\\rocket launcher\\rocket launcher", player, false)
1468
						elseif t[2] == "shotty" or t[2] == "shotgun" then
1469
							Spawn(message, "Shotgun", "weap", "weapons\\shotgun\\shotgun", player, false)
1470
						elseif t[2] == "sniper" then
1471
							Spawn(message, "Sniper Rifle", "weap", "weapons\\sniper rifle\\sniper rifle", player, false)
1472
						--Objects with 'vehi' tag
1473
						elseif t[2] == "wraith" then
1474
							Spawn(message, "Wraith", "vehi", "vehicles\\wraith\\wraith", player, false)
1475
						elseif t[2] == "peli" or t[2] == "pelican" then
1476
							Spawn(message, "Pelican", "vehi", "vehicles\\pelican\\pelican", player, false)
1477
						elseif t[2] == "ghost" then
1478
							Spawn(message, "Ghost", "vehi", "vehicles\\ghost\\ghost_mp", player, false)
1479
						elseif t[2] == "hog" or t[2] == "warthog" then
1480
							Spawn(message, "Warthog", "vehi", "vehicles\\warthog\\mp_warthog", player, false)
1481
						elseif t[2] == "rhog" or t[2] == "rocketwarthog" then
1482
							Spawn(message, "Rocket Warthog", "vehi", "vehicles\\rwarthog\\rwarthog", player, false)
1483
						elseif t[2] == "shee" or t[2] == "banshee" then
1484
							Spawn(message, "Banshee", "vehi", "vehicles\\banshee\\banshee_mp", player, false)
1485
						elseif t[2] == "tank" or t[2] == "scorpion" then
1486
							Spawn(message, "Tank", "vehi", "vehicles\\scorpion\\scorpion_mp", player, false)
1487
						elseif t[2] == "turret" or t[2] == "shade" then
1488
							Spawn(message, "Gun Turret", "vehi", "vehicles\\c gun turret\\c gun turret_mp", player, false)
1489
						else
1490
							registertimer(0, "delayMsg", "Invalid Object!", message, player)
1491
						end
1492
					else
1493
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1494
					end
1495
				elseif t[1] == "/give" then
1496
					if permission == 1 then
1497
						if t[2] == "energysword" or t[2] == "esword" or t[2] == "sword" then
1498
							Spawn(message, "Energy Sword", "weap", "weapons\\energy sword\\energy sword", player, true)
1499
						elseif t[2] == "ball" or t[2] == "oddball" then
1500
							Spawn(message, "Oddball", "weap", "weapons\\ball\\ball", player, true)
1501
						elseif t[2] == "flag" then
1502
							Spawn(message, "Flag", "weap", "weapons\\flag\\flag", player, true)
1503
						elseif t[2] == "frg" or t[2] == "fuelrod" or t[2] == "rod" or t[2] == "plasmacannon" then
1504
							Spawn(message, "Fuel Rod", "weap", "weapons\\plasma_cannon\\plasma_cannon", player, true)
1505
						elseif t[2] == "ggun" or t[2] == "gravitygun" then
1506
							Spawn(message, "Gravity Gun", "weap", "weapons\\gravity rifle\\gravity rifle", player, true)
1507
						elseif t[2] == "needler" then
1508
							Spawn(message, "Needler", "weap", "weapons\\needler\\mp_needler", player, true)
1509
						elseif t[2] == "pistol" then
1510
							Spawn(message, "Pistol", "weap", "weapons\\pistol\\pistol", player, true)
1511
						elseif t[2] == "ppistol" or t[2] == "plasmapistol" then
1512
							Spawn(message, "Plasma Pistol", "weap", "weapons\\plasma pistol\\plasma pistol", player, true)
1513
						elseif t[2] == "flamethrower" or t[2] == "flame" then
1514
							Spawn(message, "Flamethrower", "weap", "weapons\\flamethrower\\flamethrower", player, true)
1515
						elseif t[2] == "prifle" or t[2] == "plasmarifle" then
1516
							Spawn(message, "Plasma Rifle", "weap", "weapons\\plasma rifle\\plasma rifle", player, true)
1517
						elseif t[2] == "rifle" or t[2] == "arifle" or t[2] == "assaultrifle" then
1518
							Spawn(message, "Assault Rifle", "weap", "weapons\\assault rifle\\assault rifle", player, true)
1519
						elseif t[2] == "rocket" or t[2] == "rocketlauncher" or t[2] == "rox" then
1520
							Spawn(message, "Rocket Launcher", "weap", "weapons\\rocket launcher\\rocket launcher", player, true)
1521
						elseif t[2] == "shotty" or t[2] == "shotgun" then
1522
							Spawn(message, "Shotgun", "weap", "weapons\\shotgun\\shotgun", player, true)
1523
						elseif t[2] == "sniper" then
1524
							Spawn(message, "Sniper Rifle", "weap", "weapons\\sniper rifle\\sniper rifle", player, true)
1525
						else
1526
							registertimer(0, "delayMsg", "Invalid Object!", message, player)
1527
						end
1528
					else
1529
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1530
					end
1531
				elseif t[1] == "/st" then
1532
					if permission == 1 then
1533
						if count == 2 then
1534
							registertimer(0, "delayMsg", svcmd("sv_teleport_add " .. resolveplayer(player) .. " " .. t[2]), message, player)
1535
						elseif count == 3 then
1536
							registertimer(0, "delayMsg", svcmd("sv_teleport_add " .. t[2] .. " " .. t[3]), message, player)
1537
						else
1538
							registertimer(0, "delayMsg", "Invalid Syntax: /st [place]", message, player)
1539
						end
1540
					else
1541
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1542
					end
1543
				elseif t[1] == "/suspend" then
1544
					if permission == 1 then
1545
						if count == 2 then
1546
							registertimer(0, "delayMsg", svcmd("sv_suspend " .. t[2]), message, player)
1547
						elseif count == 3 then
1548
							registertimer(0, "delayMsg", svcmd("sv_suspend " .. t[2] .. " " .. t[3]), message, player)
1549
						else
1550
							registertimer(0, "delayMsg", "Invalid Syntax: /suspend [player] {time}", message, player)
1551
						end
1552
					else
1553
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1554
					end
1555
				elseif t[1] == "/t" then
1556
					if permission == 1 then
1557
						if count == 3 then
1558
							registertimer(0, "delayMsg", svcmd("sv_teleport " .. t[2] .. " " .. t[3]), message, player)
1559
						elseif count == 5 then
1560
							registertimer(0, "delayMsg", svcmd("sv_teleport " .. t[2] .. " " .. t[3] .. " " .. t[4] .. " " .. t[5]), message, player)
1561
						else
1562
							registertimer(0, "delayMsg", "Invalid Syntax: /t [player] [place]", message, player)
1563
						end
1564
					else
1565
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1566
					end
1567
				elseif t[1] == "/td" then
1568
					if permission == 1 then
1569
						if count == 2 then
1570
							registertimer(0, "delayMsg", svcmd("sv_teleport_del " .. t[2]), message, player)
1571
						else
1572
							registertimer(0, "delayMsg", "Invalid Syntax: /td [location]", message, player)
1573
						end
1574
					else
1575
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1576
					end
1577
				elseif t[1] == "/tp" then
1578
					if permission == 1 then
1579
						if count == 3 then
1580
							registertimer(0, "delayMsg", svcmd("sv_teleport_pl " .. t[2] .. " " .. t[3]), message, player)
1581
						else
1582
							registertimer(0, "delayMsg", "Invalid Syntax: /tp [player] [player]", message, player)
1583
							registertimer(0, "delayMsg", "If you are unsure of a command, do /help on it", message, player)
1584
						end
1585
					else
1586
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1587
					end
1588
				elseif t[1] == "/ts" then
1589
					if permission == 1 then
1590
						if count == 2 then
1591
							registertimer(0, "delayMsg", svcmd("sv_changeteam " .. t[2]), message, player)
1592
						else
1593
							registertimer(0, "delayMsg", "Invalid Syntax: /ts [player]", message, player)
1594
						end
1595
					else
1596
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1597
					end
1598
				elseif t[1] == "/test" then
1599
					if permission == 1 then
1600
						if count == 2 then
1601
							registertimer(0, "delayMsg", svcmd("sv_test " .. t[2]), message, player)
1602
						end
1603
					end
1604
				elseif t[1] == "/timelimit" then
1605
					if permission == 1 then
1606
						if count == 2 then
1607
							settimelimit(t[2])
1608
							registertimer(0, "delayMsg", "Timelimit set to " .. t[2] .. " minutes!", message, player)
1609
						else
1610
							registertimer(0, "delayMsg", "Invalid Syntax: /timelimit [time]", message, player)
1611
						end
1612
					else
1613
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1614
					end
1615
				elseif t[1] == "/unhax" then
1616
					if permission == 1 then
1617
						if count == 1 then
1618
							registertimer(0, "delayMsg", svcmd("cheat_unhax " .. resolveplayer(player)), message, player)
1619
						elseif count == 2 then
1620
							registertimer(0, "delayMsg", svcmd("cheat_unhax " .. t[2]), message, player)
1621
						else
1622
							registertimer(0, "delayMsg", "Invalid Syntax: /unhax {player}", message, player)
1623
						end
1624
					else
1625
						registertimer(0, "delayMsg", "You cannot execute this command", message, player)
1626
					end
1627
				elseif t[1] == "/unmute" then
1628
					if permission == 1 then
1629
						if count == 2 then
1630
							registertimer(0, "delayMsg", svcmd("sv_unmute " .. t[2]), message, player)
1631
						else
1632
							registertimer(0, "delayMsg", "Invalid Syntax: /unmute [player]", message, player)
1633
						end
1634
					else
1635
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1636
					end
1637
				elseif t[1] == "/uninvis" then
1638
					if permission == 1 then
1639
						if count == 2 then
1640
							registertimer(0, "delayMsg", svcmd("sv_uninvis " .. t[2]), message, player)
1641
						else
1642
							registertimer(0, "delayMsg", "Invalid Syntax: /uninvis [player]", message, player)
1643
						end
1644
					else
1645
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1646
					end
1647
				elseif t[1] == "/unsuspend" then
1648
					if permission == 1 then
1649
						if count == 2 then
1650
							registertimer(0, "delayMsg", svcmd("sv_unsuspend " .. t[2]), message, player)
1651
						else
1652
							registertimer(0, "delayMsg", "Invalid Syntax: /unsuspend [player]", message, player)
1653
						end
1654
					else
1655
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1656
					end
1657
				elseif t[1] == "/banlist" then
1658
					if permission == 1 then
1659
						if count == 1 then
1660
							registertimer(0, "delayMsg", svcmd("sv_banlist"), message, player)
1661
						else
1662
							registertimer(0, "delayMsg", "Invalid Syntax: /banlist", message, player)
1663
						end
1664
					else
1665
						registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1666
					end
1667
				end
1668
1669
			end
1670
1671
		end
1672
	elseif string.sub(message, 1, 1) == "/" or string.sub(message, 1, 1) == "\\" then
1673
		registertimer(0, "delayMsg", "You cannot execute this command.", message, player)
1674
	end
1675
1676
	if t[1] == "/info" or t[1] == "\\info" then
1677
1678
		local player_number = resolveplayer(player)
1679
		local m_player = getplayer(player)
1680
		local hash = gethash(player)
1681
		local display = 1
1682
1683
		if access ~= nil then
1684
			if count == 2 then
1685
1686
				player_number = t[2]
1687
				m_player = getplayer(rresolveplayer(player_number))
1688
				hash = gethash(rresolveplayer(player_number))
1689
1690
				if hash == 0 then
1691
					registertimer(0, "delayMsg", "Invalid Player", message, player)
1692
					display = 0
1693
				end
1694
1695
			elseif count > 2 then
1696
				registertimer(0, "delayMsg", "Invalid Syntax: /info", message, player)
1697
				registertimer(0, "delayMsg", "Invalid Syntax: /info [player]", message, player)
1698
				display = 0
1699
			end
1700
		end
1701
1702
		if display == 1 then
1703
1704
			local m_playerObjId = readdword(m_player, 0x34)
1705
			local m_object = getobject(m_playerObjId)
1706
1707
			local player_name = readstring(m_player, 0x4, 0x14)
1708
			local player_team = readdword(m_player, 0x20)
1709
			local player_respawn_time = readdword(m_player, 0x2C)
1710
			local player_invis_time = readword(m_player, 0x68)
1711
			local player_speed = readfloat(m_player, 0x6C)
1712
			local player_objective_mode = readbyte(m_player, 0x74)
1713
			local player_objective_mode2 = readbyte(m_player, 0x7A)
1714
			local player_killstreak = readword(m_player, 0x96)
1715
			local player_kills = readword(m_player, 0x9C)
1716
			local player_assists = readword(m_player, 0xA4)
1717
			local player_betrays = readword(m_player, 0xAC)
1718
			local player_deaths = readword(m_player, 0xAE)
1719
			local player_suicides = readword(m_player, 0xB0)
1720
			local player_ping = readword(m_player, 0xDC)
1721
			local player_x_coord = readfloat(m_player, 0xF8)
1722
			local player_y_coord = readfloat(m_player, 0xFC)
1723
			local player_z_coord = readfloat(m_player, 0x100)
1724
1725
			local obj_max_health = readfloat(m_object, 0xD8)
1726
			local obj_max_shields = readfloat(m_object, 0xDC)
1727
			local obj_health = readfloat(m_object, 0xE0)
1728
			local obj_shields = readfloat(m_object, 0xE4)
1729
			local obj_flashlight_mode = readbyte(m_object, 0x206)
1730
			local obj_crouch = readbyte(m_object, 0x2A0)
1731
			local obj_weap_type = readbyte(m_object, 0x2F2)
1732
			local obj_nade_type = readbyte(m_object, 0x31C)
1733
			local obj_primary_nades = readbyte(m_object, 0x31E)
1734
			local obj_secondary_nades = readbyte(m_object, 0x31F)
1735
			local obj_flashlight_level = readfloat(m_object, 0x344)
1736
			local obj_invis_scale = readfloat(m_object, 0x37C)
1737
			local obj_airborne = readbyte(m_object, 0x4CC)
1738
1739
			local obj_primary_weap_id = readdword(m_object, 0x2F8)
1740
			local obj_secondary_weap_id = readdword(m_object, 0x2FC)
1741
			local primary_weap = getobject(obj_primary_weap_id)
1742
			local secondary_weap = getobject(obj_secondary_weap_id)
1743
1744
			local m_vehicle = getobject(readdword(m_object, 0x11C))
1745
1746
			if obj_crouch == 1 or obj_crouch == 5 or obj_crouch == 6 or obj_crouch == 13 or obj_crouch == 17 then
1747
				primary_weap = getobject(readdword(m_vehicle, 0x2F8))
1748
			end
1749
1750
			local primary_weap_heat = readfloat(primary_weap, 0x23C)
1751
			local primary_weap_age = readfloat(primary_weap, 0x240)
1752
			local primary_weap_ammo = readword(primary_weap, 0x2B6)
1753
			local primary_weap_clip = readword(primary_weap, 0x2B8)
1754
			local secondary_weap_heat = readfloat(secondary_weap, 0x23C)
1755
			local secondary_weap_age = readfloat(secondary_weap, 0x240)
1756
			local secondary_weap_ammo = readword(secondary_weap, 0x2B6)
1757
			local secondary_weap_clip = readword(secondary_weap, 0x2B8)
1758
1759
			local teamsize = getteamsize(player_team)
1760
1761
			if player_team == 0 then
1762
				player_team = "Red"
1763
			elseif player_team == 1 then
1764
				player_team = "Blue"
1765
			end
1766
1767
			if player_objective_mode == 0x22 and player_objective_mode2 == 0x71 then
1768
				player_objective_mode = "Hill"
1769
			elseif player_objective_mode == 0x23 and player_objective_mode2 == 0x71 then
1770
				player_objective_mode = "Juggernaut"
1771
			elseif player_objective_mode == 0x23 and player_objective_mode2 == 0x72 then
1772
				player_objective_mode = "It"
1773
			elseif player_objectivemode == 0x29 and player_objective_mode2 == 0x70 then
1774
				player_objective_mode = "Ball"
1775
			else
1776
				player_objective_mode = "None"
1777
			end
1778
1779
			if obj_weap_type == 2 and player_objective_mode == "None" then
1780
				player_objective_mode = "Flag"
1781
			end
1782
1783
			player_respawn_time = round(player_respawn_time / 30)
1784
			player_invis_time = round(player_invis_time / 30)
1785
1786
			player_betrays = player_betrays - player_suicides
1787
1788
			player_x_coord = round(player_x_coord)
1789
			player_y_coord = round(player_y_coord)
1790
			player_z_coord = round(player_z_coord)
1791
1792
			obj_invis_scale = round(obj_invis_scale * 100)
1793
1794
			if obj_invis_scale == 0 then
1795
				obj_invis_scale = "No"
1796
			else
1797
				obj_invis_scale = obj_invis_scale .. "%"
1798
			end
1799
1800
			local invis_info = "Invis: " .. obj_invis_scale
1801
1802
			if obj_invis_scale ~= "No" then
1803
				invis_info = "Invis: " .. obj_invis_scale .. " (" .. player_invis_time .. " secs)"
1804
			end
1805
1806
			if obj_flashlight_mode == 8 then
1807
				obj_flashlight_mode = "On"
1808
			else
1809
				obj_flashlight_mode = "Off"
1810
			end
1811
1812
			obj_flashlight_level = round(obj_flashlight_level * 100)
1813
1814
			if primary_weap_age == 0 then
1815
				if primary_weap_ammo ~= 0 or primary_weap_clip ~= 0 then
1816
					writefloat(primary_weap, 0x240, 1)
1817
					primary_weap_age = 1
1818
				end
1819
			end
1820
1821
			if secondary_weap_age == 0 then
1822
				if secondary_weap_ammo ~= 0 or secondary_weap_clip ~= 0 then
1823
					writefloat(secondary_weap, 0x240, 1)
1824
					secondary_weap_age = 1
1825
				end
1826
			end
1827
1828
			if obj_weap_type == 1 then
1829
				primary_weap_heat = readfloat(secondary_weap, 0x23C)
1830
				primary_weap_age = readfloat(secondary_weap, 0x240)
1831
				primary_weap_ammo = readword(secondary_weap, 0x2B6)
1832
				primary_weap_clip = readword(secondary_weap, 0x2B8)
1833
				secondary_weap_heat = readfloat(primary_weap, 0x23C)
1834
				secondary_weap_age = readfloat(primary_weap, 0x240)
1835
				secondary_weap_ammo = readword(primary_weap, 0x2B6)
1836
				secondary_weap_clip = readword(primary_weap, 0x2B8)
1837
			end
1838
1839
			primary_weap_heat = round(primary_weap_heat * 100)
1840
			primary_weap_age = round((1 - primary_weap_age) * 100)
1841
			secondary_weap_heat = round(secondary_weap_heat * 100)
1842
			secondary_weap_age = round((1 - secondary_weap_age) * 100)
1843
1844
			local primary_weap_info = "Primary: Empty"
1845
			local secondary_weap_info = "Secondary: Empty"
1846
1847
			if obj_health ~= 0 then
1848
				if obj_crouch == 1 or obj_crouch == 5 or obj_crouch == 6 or obj_crouch == 13 or obj_crouch == 17 then
1849
					if primary_weap_age == 100 and primary_weap_ammo == 0 and primary_weap_clip == 0 then
1850
						primary_weap_info = "Primary: Infinite"
1851
					else
1852
						primary_weap_info = "Primary Ammo: " .. primary_weap_clip .. " / " .. primary_weap_ammo
1853
					end
1854
				else
1855
1856
					if primary_weap ~= nil then
1857
						if primary_weap_age == 0 then
1858
							if primary_weap_ammo ~= 0 or primary_weap_clip ~= 0 then
1859
								primary_weap_info = "Primary Ammo: " .. primary_weap_clip .. " / " .. primary_weap_ammo
1860
							end
1861
						else
1862
							primary_weap_info = "Primary Battery: " .. primary_weap_heat .. "% / " .. primary_weap_age .. "%"
1863
						end
1864
					end
1865
1866
					if secondary_weap ~= nil then
1867
						if secondary_weap_age == 0 then
1868
							if secondary_weap_ammo ~= 0 or secondary_weap_clip ~= 0 then
1869
								secondary_weap_info = "Secondary Ammo: " .. secondary_weap_clip .. " / " .. secondary_weap_ammo
1870
							end
1871
						else
1872
							secondary_weap_info = "Secondary Battery: " .. secondary_weap_heat .. "% / " .. secondary_weap_age .. "%"
1873
						end
1874
					end
1875
1876
				end
1877
			end
1878
1879
			local nade_info = "Frag Grenades: " .. obj_primary_nades .. " | " .. "Plasma Grenades: " .. obj_secondary_nades
1880
1881
			if obj_nade_type == 1 then
1882
				nade_info = "Plasma Grenades: " .. obj_secondary_nades .. " | " .. "Frag Grenades: " .. obj_primary_nades
1883
			end
1884
1885
			if obj_crouch == 0 then
1886
				obj_crouch = "Warthog: Driver"
1887
			elseif obj_crouch == 1 then
1888
				obj_crouch = "Warthog: Gunner"
1889
			elseif obj_crouch == 2 then
1890
				obj_crouch = "Warthog: Passenger"
1891
			elseif obj_crouch == 3 then
1892
				obj_crouch = "Stance: Crouching"
1893
			elseif obj_crouch == 4 then
1894
				obj_crouch = "Stance: Standing"
1895
			elseif obj_crouch == 5 then
1896
				obj_crouch = "Ghost: Driver"
1897
			elseif obj_crouch == 6 then
1898
				obj_crouch = "Banshee: Pilot"
1899
			elseif obj_crouch == 13 then
1900
				obj_crouch = "Scorpion: Driver"
1901
			elseif obj_crouch == 17 then
1902
				obj_crouch = "Shade: Gunner"
1903
			elseif obj_crouch == 20 or obj_crouch == 21 or obj_crouch == 22 or obj_crouch == 23 then
1904
				obj_crouch = "Scorpion: Passenger"
1905
			end
1906
1907
			if obj_crouch == "Stance: Crouching" or obj_crouch == "Stance: Standing" then
1908
				if obj_airborne == 1 then
1909
					obj_crouch = "Stance: Airborne"
1910
				end
1911
			end
1912
1913
			if obj_health == 0 and obj_shields == 0 then
1914
				obj_crouch = "Stance: Dead"
1915
			end
1916
1917
			obj_max_health = round(obj_health * obj_max_health)
1918
			obj_max_shields = round(obj_shields * obj_max_shields)
1919
			obj_health = round(obj_health * 100)
1920
			obj_shields = round(obj_shields * 100)
1921
1922
			local health_info = "Health: " .. obj_health .. "% (" .. obj_max_health .. ") | " .. "Shields: " .. obj_shields .. "% (" .. obj_max_shields .. ")"
1923
1924
			if obj_health == 0 and obj_shields == 0 and player_respawn_time ~= 0 then
1925
				if player_respawn_time == 1 then
1926
					health_info = "Respawn: " .. player_respawn_time .. " sec"
1927
				else
1928
					health_info = "Respawn: " .. player_respawn_time .. " secs"
1929
				end
1930
			end
1931
1932
			if suspend_table[hash] == 2 then
1933
				health_info = "Respawn: Never"
1934
			end
1935
1936
			privatesay(player, "----------")
1937
			privatesay(player, "Name: " .. player_name .. " (" .. player_number .. ") | " .. "Team: " .. player_team .. " (" .. teamsize .. ") | " .. "Speed: " .. player_speed .. " | " .. "Location: " .. player_x_coord .. ", " .. player_y_coord .. ", " .. player_z_coord)
1938
			privatesay(player, "Hash: " .. hash .. " | " .. "Ping: " .. player_ping .. " | " .. obj_crouch)
1939
			privatesay(player, "Kills: " .. player_kills .. " (" .. player_killstreak .. ") | " .. "Assists: " .. player_assists .. " | " .. "Betrays: " .. player_betrays .. " | " .. "Suicides: " .. player_suicides .. " | " .. "Deaths: " .. player_deaths)
1940
			privatesay(player, health_info .. " | " .. invis_info .. " | " .. "Light: " .. obj_flashlight_mode .. " (" .. obj_flashlight_level .. "%)")
1941
			privatesay(player, primary_weap_info .. " | " .. secondary_weap_info .. " | " .. "Objective: " .. player_objective_mode)
1942
			privatesay(player, nade_info)
1943
			privatesay(player, "----------")
1944
1945
		end
1946
1947
	end
1948
1949
	if mute_table[hash] ~= nil then
1950
		AllowChat = 0
1951
	end
1952
1953
	if spamtimeout_table[hash] ~= nil then
1954
		AllowChat = 0
1955
	end
1956
1957
	if AllowChat == 1 and access == nil then
1958
		if spam_table[hash] == nil then
1959
			spam_table[hash] = 1
1960
		else
1961
			spam_table[hash] = spam_table[hash] + 1
1962
		end
1963
	end
1964
1965
	return AllowChat
1966
1967
end
1968
1969
function Spawn(message, objname, objtype, objloc, player, give)
1970
	message = message:gsub('"', "")
1971
	m = {}
1972
	vehid = 0
1973
	local count = gettokencount(message, " ")
1974
1975
	for i=1,count do
1976
		local word = gettoken(message, " ", i - 1)
1977
		word = string.lower(word)
1978
		table.insert(m, word)
1979
	end
1980
	if count == 2 then -- only spawn one next to person spawning
1981
		local m_player = getplayer(player)
1982
		local m_playerObjId = readdword(m_player, 0x34)
1983
		local m_object = getobject(m_playerObjId)
1984
		local m_vehicleId = readdword(m_object, 0x11C)
1985
		if m_object ~= nil then
1986
			if m_vehicleId ~= 0xFFFFFFFF then
1987
				x,y,z = getobjectcoords(m_vehicleId)
1988
			else
1989
				x,y,z = getobjectcoords(m_playerObjId)
1990
				local camera_x = readfloat(m_object, 0x230)
1991
				local camera_y = readfloat(m_object, 0x234)
1992
				x = x + camera_x * 2
1993
				y = y + camera_y * 2
1994
				z = z + 2
1995
			end
1996
			vehid = createobject(objtype, objloc, 0, 60, false, x+1.0, y, z + 1.3)
1997
			if give == true then
1998
				assignweapon(player, vehid)
1999
				registertimer(0, "delayMsg", objname .. " given to " .. getname(player), message, player)
2000
			else
2001
				registertimer(0, "delayMsg", objname .. " spawned at " .. getname(player) .. "'s location", message, player)
2002
			end
2003
		else
2004
			registertimer(0, "delayMsg", "You cannot spawn stuff while dead!", message, player)
2005
		end
2006
	elseif count >= 3 and count <= 6 then
2007
		if validplayer(m[3]) ~= false then
2008
			for i = 1,#players do
2009
				local m_player = getplayer(players[i])
2010
				local m_playerObjId = readdword(m_player, 0x34)
2011
				local m_object = getobject(m_playerObjId)
2012
				local m_vehicleId = readdword(m_object, 0x11C)
2013
				if m_object ~= nil then
2014
					if m_vehicleId ~= 0xFFFFFFFF and m_vehicleId ~= nil then
2015
						x,y,z = getobjectcoords(m_vehicleId)
2016
					else
2017
						x,y,z = getobjectcoords(m_playerObjId)
2018
						local camera_x = readfloat(m_object, 0x230)
2019
						local camera_y = readfloat(m_object, 0x234)
2020
						x = x + camera_x * 2
2021
						y = y + camera_y * 2
2022
						z = z + 2
2023
					end
2024
					if count == 3 then
2025
						vehid = createobject(objtype, objloc, 0, 60, false, x, y, z)
2026
						if objtype == "weap" and give == true then
2027
							assignweapon(players[i], vehid)
2028
							registertimer(0, "delayMsg", objname .. " given to " .. getname(players[i]), message, player)
2029
							if string.sub(message, 1, 1) ~= "/" then
2030
								registertimer(0, "delayMsg", "You have been given a " .. objname .. ".", "\\", player)
2031
							end
2032
						else
2033
							registertimer(0, "delayMsg", objname .. " spawned at " .. getname(players[i]) .. "'s location.", message, player)
2034
						end
2035
					elseif count == 4 then -- specify amount
2036
						if m[4] ~= 0 then
2037
							for i = 1,m[4] do
2038
								createobject(objtype, objloc, 0, 0, false, x, y, z)
2039
							end
2040
							registertimer(0, "delayMsg", m[4] .. " " .. objname .. "s spawned at " .. getname(players[i]) .. "'s location.", message, player)
2041
							privatesay(players[i], objname .. " spawned above you.")
2042
						else
2043
							registertimer(0, "delayMsg", "You didn't spawn anything!")
2044
						end
2045
					elseif count == 5 then -- specify resptime
2046
						if m[4] ~= 0 then
2047
							for i = 1,m[4] do
2048
								createobject(objtype, objloc, 0, m[5], false, x, y, z)
2049
							end
2050
							registertimer(0, "delayMsg", m[4] .. " " .. objname .. "s spawned at " .. getname(players[i]) .. "'s location.", message, player)
2051
							privatesay(players[i], objname .. " spawned above you.")
2052
						else
2053
							registertimer(0, "delayMsg", "You didn't spawn anything!")
2054
						end
2055
					elseif count == 6 then -- specify recycle boolean
2056
						if m[4] ~= 0 then
2057
							for i = 1,m[4] do
2058
								createobject(objtype, objloc, 0, m[5], m[6], x, y, z)
2059
							end
2060
							registertimer(0, "delayMsg", m[4] .. " " .. objname .. "s spawned at " .. getname(players[i]) .. "'s location.", message, player)
2061
							privatesay(players[i], objname .. " spawned above you.")
2062
						else
2063
							registertimer(0, "delayMsg", "You didn't spawn anything!", message, player)
2064
						end
2065
					else
2066
						registertimer(0, "delayMsg", "Invalid Syntax: /spawn [object] {person} {amount} {resptime} {recycle}", message, player)
2067
					end
2068
				else
2069
					say("Could not spawn next to " .. getname(players[i]) ". Player is dead.")
2070
				end
2071
			end
2072
2073
		else
2074
			registertimer(5, "delayMsg", "Invalid Player!")
2075
		end
2076
	else
2077
		registertimer(5, "delayMsg", "Invalid Syntax: /spawn [object]")
2078
		registertimer(5, "delayMsg", "Invalid Syntax: /spawn [object] [person]")
2079
		registertimer(5, "delayMsg", "Invalid Syntax: /spawn [object] [person] [amount]")
2080
		registertimer(5, "delayMsg", "Invalid Syntax: /spawn [object] [person] [amount] [resptime]")
2081
		registertimer(5, "delayMsg", "Invalid Syntax: /spawn [object] [person] [amount] [resptime] [recycle]")
2082
	end
2083
	return vehid
2084
end
2085
2086
function OnServerCommand(player, command)
2087
2088
	local response = 1
2089
	local toksize = getcmdtokencount(command)
2090
	local cmd = getcmdtoken(command, 0)
2091
	local count = gettokencount(command, " ")
2092
	t = {}
2093
2094
	for i=1,count do
2095
		local word = gettoken(command, " ", i - 1)
2096
		word = string.lower(word)
2097
		word = word:gsub('"', "")
2098
		table.insert(t, word)
2099
	end
2100
	if t[1] == "sv_afk" then
2101
		response = 0
2102
		if count == 2 then
2103
			if validplayer(t[2]) ~= false then
2104
				for i = 1,#players do
2105
					local m_player = getplayer(players[i])
2106
					local player_respawn_time = readdword(m_player, 0x2c)
2107
					if player_respawn_time >= 20 then
2108
						writedword(m_player, 0x2c, 1 * 33)
2109
						hprintf(getname(players[i]) .. " is no longer afk!")
2110
					else
2111
						kill(players[i])
2112
						writedword(m_player, 0x2c, 9999 * 33)
2113
						hprintf(getname(players[i]) .. " is now afk!")
2114
					end
2115
				end
2116
			else
2117
				hprintf("Invalid Player!")
2118
			end
2119
		else
2120
			hprintf("Invalid Syntax: sv_afk {player}")
2121
		end
2122
	elseif t[1] == "sv_gethash" then
2123
		response = 0
2124
		if count == 2 then
2125
			if validplayer(t[2]) ~= false then
2126
				for i = 1,#players do
2127
					hprintf(gethash(players[i]))
2128
				end
2129
			else
2130
				hprintf("Invalid Player!")
2131
			end
2132
		else
2133
			hprintf("Invalid Syntax: sv_gethash [player]")
2134
		end
2135
	elseif t[1] == "sv_help" then
2136
		response = 0
2137
		if t[2] == "a" then
2138
			hprintf("Syntax: sv_a [player] [nickname] [level]")
2139
			hprintf("Adds a player to the admin list.")
2140
		elseif t[2] == "ammo" then
2141
			hprintf("Syntax: sv_ammo [player] [ammo]")
2142
			hprintf("Sets the player's primary weapon's ammo. Use * for all players.")
2143
		elseif t[2] == "b" then
2144
			hprintf("Syntax: sv_b [player] {time}")
2145
			hprintf("Bans a player indefinitely, or for the time specified.")
2146
		elseif t[2] == "c" then
2147
			hprintf("Syntax: sv_c [victim] [controller]")
2148
			hprintf("Forces the victim to move in any direction the controller is moving.")
2149
		elseif t[2] == "deathless" then
2150
			hprintf("Syntax: sv_deathless [boolean]")
2151
			hprintf("Will set the game so no one can die. 0 for off, 1 for on.")
2152
			hprintf("Using 'heal' will override this, however")
2153
		elseif t[2] == "e" then
2154
			hprintf("Syntax: sv_e [Command]")
2155
			hprintf("This will execute any command that you would normally put in the console.")
2156
			hprintf("This is also used more commonly to tell if the script is working.")
2157
			hprintf("Or if a player has admin.")
2158
		elseif t[2] == "eject" then
2159
			hprintf("Syntax: sv_eject [player]")
2160
			hprintf("Ejects a player. Use * for all players.")
2161
		elseif t[2] == "enter" then
2162
			hprintf("Syntax: sv_enter [player] [seat]")
2163
			hprintf("Will cause you to enter the player's vehicle, and the seat specified.")
2164
		elseif t[2] == "getloc" then
2165
			hprintf("Syntax: sv_getloc [player]")
2166
			hprintf("Will display the location of the player specified.")
2167
		elseif t[2] == "godmode" then
2168
			hprintf("Syntax: sv_godmode [player]")
2169
			hprintf("Will make this person unkillable. Backtaps, however, will still kill them.")
2170
		elseif t[2] == "hax" then
2171
			hprintf("Syntax: sv_hax")
2172
			hprintf("I made this command because I was bored.")
2173
		elseif t[2] == "heal" then
2174
			hprintf("Syntax: sv_heal [player]")
2175
			hprintf("Will heal the specified player.")
2176
		elseif t[2] == "help" then
2177
			hprintf("Syntax: sv_help [Command]")
2178
			hprintf("Will provide details on any specified command.")
2179
			hprintf("Do not include sv_ or \ for the [Command]")
2180
		elseif t[2] == "hitler" then
2181
			hprintf("Syntax: sv_hitler")
2182
			hprintf("Will lethaly inject everyone.")
2183
		elseif t[2] == "infammo" then
2184
			hprintf("Syntax: sv_infammo [boolean]")
2185
			hprintf("Will set the game so everyone has infinite ammo. 0 for off, 1 for on")
2186
		elseif t[2] == "give" then
2187
			hprintf("Syntax: sv_give [weapon] {player}")
2188
			hprintf("Will give yourself, or the person specified, a weapon.")
2189
			hprintf("You can hold up to 4 weapons. If you are holding 4 weapons,")
2190
			hprintf("you cannot pickup the flag, or the oddball.")
2191
		elseif t[2] == "gethash" then
2192
			hprintf("Syntax: sv_gethash [player]")
2193
			hprintf("This will get the hash of the player specified.")
2194
		elseif t[2] == "invis" then
2195
			hprintf("Syntax: sv_invis [player] {time}")
2196
			hprintf("This will camouflage the person specified for the amount of time specified.")
2197
		elseif t[2] == "j" then
2198
			hprintf("Syntax: sv_j [player] [x] [y] [z]")
2199
			hprintf("Moves the specified player by coords specified.")
2200
		elseif t[2] == "k" then
2201
			hprintf("Syntax: sv_k [player]")
2202
			hprintf("Will kick the player specified.")
2203
		elseif t[2] == "kill" then
2204
			hprintf("Syntax: sv_kill [player]")
2205
			hprintf("Will kill the player specified.")
2206
		elseif t[2] == "lo3" then
2207
			hprintf("Syntax: sv_lo3")
2208
			hprintf("Will lo3 the game.")
2209
		elseif t[2] == "m" then
2210
			hprintf("Syntax: sv_m [map] [gametype] {script} {script2} . . .")
2211
			hprintf("Will load the map specified. No need to specify chatcommands script.")
2212
		elseif t[2] == "mc" then
2213
			hprintf("Syntax: sv_mc")
2214
			hprintf("Starts the mapcycle.")
2215
		elseif t[2] == "mnext" then
2216
			hprintf("Syntax: sv_mnext")
2217
			hprintf("Loads the next map in the mapcycle.")
2218
		elseif t[2] == "mute" then
2219
			hprintf("Syntax: sv_mute [player] {time}")
2220
			hprintf("Mutes the player. Admins cannot be muted.")
2221
		elseif t[2] == "pass" then
2222
			hprintf("Syntax: sv_pass [password]")
2223
			hprintf("Sets the server password.")
2224
		elseif t[2] == "reset" then
2225
			hprintf("Syntax: sv_reset")
2226
			hprintf("Resets the map.")
2227
		elseif t[2] == "resp" then
2228
			hprintf("Syntax: sv_resp [player] [time]")
2229
			hprintf("Sets respawn time of player. Only works if player is dead.")
2230
		elseif t[2] == "say" then
2231
			hprintf("Syntax: sv_say [message]")
2232
			hprintf("Will say something as the server. No quotes needed.")
2233
		elseif t[2] == "sc" then
2234
			hprintf("Syntax: sv_sc [player] [nickname]")
2235
			hprintf("Will set the player's nickname. Used instead of player IDs")
2236
		elseif t[2] == "setassists" then
2237
			hprintf("Syntax: sv_setassists [player] [# of assists]")
2238
			hprintf("Will set the assists of the player specified.")
2239
		elseif t[2] == "setdeaths" then
2240
			hprintf("Syntax: sv_setdeaths [player] [# of deaths]")
2241
			hprintf("Will set the deaths of the player specified.")
2242
		elseif t[2] == "setfrags" then
2243
			hprintf("Syntax: sv_setfrags [player] [# of frags]")
2244
			hprintf("Will set the # of frag grenades of the player specified.")
2245
		elseif t[2] == "setkills" then
2246
			hprintf("Syntax: sv_setkills [player] [# of kills]")
2247
			hprintf("Will set the kills of the player specified.")
2248
		elseif t[2] == "setname" then
2249
			hprintf("Syntax: sv_setname [player] [name]")
2250
			hprintf("Sets the name of the player specified.")
2251
			hprintf("You will only notice a difference on rejoin.")
2252
		elseif t[2] == "setresp" then
2253
			hprintf("Syntax: sv_setresp [time]")
2254
			hprintf("Sets the universal respawn time of all mapssv_gametypes.")
2255
		elseif t[2] == "setplasmas" then
2256
			hprintf("Syntax: sv_setplasmas [player] [# of plasma grenades]")
2257
			hprintf("Will set the plasma grenades of the player specified.")
2258
		elseif t[2] == "spd" then
2259
			hprintf("Syntax: sv_spd [player] [speed]")
2260
			hprintf("Will set the speed of the player specified.")
2261
		elseif t[2] == "spawn" then
2262
			hprintf("Syntax: sv_spawn [object] {player} {ammount} {resptime} {recycle}")
2263
			hprintf("Will spawn a object over a player if specified.")
2264
		elseif t[2] == "st" then
2265
			hprintf("Syntax: sv_st [location]")
2266
			hprintf("Will set a teleport location to wherever you're standing.")
2267
		elseif t[2] == "suspend" then
2268
			hprintf("Syntax: sv_suspend [player] {time}")
2269
			hprintf("Will suspend the player for the time specified.")
2270
		elseif t[2] == "t" then
2271
			hprintf("Syntax: sv_t [player] [location]")
2272
			hprintf("Will teleport the player specified to the location specified.")
2273
		elseif t[2] == "td" then
2274
			hprintf("Syntax: sv_td [location]")
2275
			hprintf("Will delete the teleport location specified.")
2276
		elseif t[2] == "test" then
2277
			hprintf("Syntax: sv_test [player]")
2278
			hprintf("I used this to randomly see the returns of some addresses and offsets.")
2279
		elseif t[2] == "tp" then
2280
			hprintf("Syntax: sv_tp [player] [t_player]")
2281
			hprintf("Will teleport player to t_player")
2282
		elseif t[2] == "ts" then
2283
			hprintf("Syntax: sv_changeteam [player] {team}")
2284
			hprintf("Will switch the players team. Teams are 0 and 1")
2285
		elseif t[2] == "unhax" then
2286
			hprintf("Syntax: sv_unhax")
2287
			hprintf("Unhax's you. I was bored, what can i say?")
2288
		elseif t[2] == "unmute" then
2289
			hprintf("Syntax: sv_unmute [player]")
2290
			hprintf("Unmutes the player specified.")
2291
		elseif t[2] == "unsuspend" then
2292
			hprintf("Syntax: sv_unsuspend [player]")
2293
			hprintf("Unsuspends the player specified.")
2294
		elseif t[2] == "credits" then
2295
			hprintf("Created by [DWM]Wizard")
2296
			hprintf("Base script created by Smiley")
2297
		else
2298
			hprintf("Invalid Command! Use sv_list for list of commands!")
2299
		end
2300
	elseif t[1] == "sv_deathless" then
2301
		response = 0
2302
		if count == 1 then
2303
			if deathless == 1 then
2304
				hprintf("Deathless is currently enabled.")
2305
			else
2306
				hprintf("Deathless is currently disabled")
2307
			end
2308
		elseif count == 2 then
2309
			if (t[2] == "1" or t[2] == "true") and deathless ~= 1 then
2310
				for c = 0,15 do
2311
					if getplayer(c) ~= nil then
2312
						local m_player = getplayer(c)
2313
						local m_playerObjId = readdword(m_player, 0x34)
2314
						local m_object = getobject(m_playerObjId)
2315
						local obj_health = readfloat(m_object, 0xE0)
2316
						local obj_shields = readfloat(m_object, 0xE4)
2317
						writefloat(m_object, 0xE0, 99999999)
2318
						writefloat(m_object, 0xE4, 99999999)
2319
					end
2320
				end
2321
				hprintf("Deathless player is now on. You cannot die.")
2322
				deathless = 1
2323
			elseif t[2] == "1" or t[2] == "true" then
2324
				hprintf("Deathless is already enabled!")
2325
			elseif (t[2] == "0" or t[2] == "false") and deathless ~= 0 then
2326
				local c = 0
2327
				for c = 0,15 do
2328
					if getplayer(c) ~= nil then
2329
						local m_player = getplayer(c)
2330
						local m_playerObjId = readdword(m_player, 0x34)
2331
						local m_object = getobject(m_playerObjId)
2332
						local obj_health = readfloat(m_object, 0xE0)
2333
						local obj_shields = readfloat(m_object, 0xE4)
2334
						writefloat(m_object, 0xE0, 1)
2335
						writefloat(m_object, 0xE4, 1)
2336
					end
2337
				end
2338
				hprintf("Deathless player is now off.")
2339
				deathless = 0
2340
			elseif t[2] == "0" or t[2] == "false" then
2341
				hprintf("Deathless is already disabled!")
2342
			else
2343
				hprintf("Invalid Boolean: 0 for false, 1 for true")
2344
			end
2345
		else
2346
			hprintf("Invalid Syntax: sv_deathless {boolean}")
2347
		end
2348
	elseif t[1] == "sv_setmode" then
2349
		response = 0
2350
		if validplayer(t[2]) ~= false then
2351
			if count == 3 then
2352
				for i = 1,#players do
2353
					if t[3] == "destroy" then
2354
						mode[gethash(players[i])] = "destroy"
2355
						hprintf(getname(players[i]) .. " is now in destroy mode!")
2356
					elseif t[3] == "portalgun" then
2357
						mode[gethash(players[i])] = "portalgun"
2358
						hprintf(getname(players[i]) .. " is now in portalgun mode!")
2359
					elseif t[3] == "entergun" then
2360
						mode[gethash(players[i])] = "entergun"
2361
						hprintf(getname(players[i]) .. " is now in entergun mode!")
2362
					elseif t[3] == "controlgun" then
2363
						mode[gethash(players[i])] = "controlgun"
2364
						hprintf(getname(players[i]) .. " is now in controlgun mode!")
2365
					elseif t[3] == "normal" or t[3] == "none" or t[3] == "regular" then
2366
						objspawntype[gethash(players[i])] = nil
2367
						objspawntag[gethash(players[i])] = nil
2368
						mode[gethash(players[i])] = nil
2369
						hprintf(getname(players[i]) .. " is now in normal mode!")
2370
					end
2371
				end
2372
			elseif count == 4 then
2373
				for i = 1,#players do
2374
					if t[3] == "spawngun" then
2375
						local objexists = false
2376
						objspawntype[gethash(players[i])] = nil
2377
						objspawntag[gethash(players[i])] = nil
2378
						mode[gethash(players[i])] = nil
2379
						for j = 1,#objects do
2380
							if t[4] == objects[j][1] then
2381
								mode[gethash(players[i])] = "spawngun"
2382
								objspawntype[gethash(players[i])] = objects[j][2]
2383
								objspawntag[gethash(players[i])] = objects[j][3]
2384
								hprintf(getname(players[i]) .. " is now spawning " .. objects[j][3] .. "!")
2385
								objexists = true
2386
								break
2387
							end
2388
						end
2389
						if objexists == false then
2390
							hprintf("Object does not exist. Make sure you are spelling it right.")
2391
						end
2392
					end
2393
				end
2394
			else
2395
				hprintf("Invalid Syntax: sv_setmode [player] [mode] {object}")
2396
			end
2397
		else
2398
			say("Invalid Player!")
2399
		end
2400
	elseif t[1] == "sv_eject" then
2401
		response = 0
2402
		if count == 2 then
2403
			if validplayer(t[2]) ~= false then
2404
				for i = 1,#players do
2405
					local player_struct = getplayer(players[i])
2406
					local player_respawn_time = readdword(player_struct, 0x2c)
2407
					local player_obj_struct = getobject(getplayerobjectid(players[i]))
2408
					local player_vehicle_id = readdword(player_obj_struct, 0x11C)
2409
					if player_obj_struct ~= nil and player_respawn_time == 0 then
2410
						if player_vehicle_id ~= 0xffffffff then
2411
							exitvehicle(players[i])
2412
							hprintf("Ejecting " .. getname(players[i]) .. " from his/her vehicle!")
2413
						else
2414
							hprintf("Error! " .. getname(players[i]) .. " is not in a vehicle!")
2415
						end
2416
					else
2417
						hprintf("Error! " .. getname(players[i]) .. " is dead!")
2418
					end
2419
				end
2420
			else
2421
				hprintf("Invalid Player")
2422
			end
2423
		else
2424
			hprintf("Invalid Syntax: sv_eject [player]")
2425
		end
2426
	elseif t[1] == "sv_getloc" then
2427
		response = 0
2428
		if count == 2 then
2429
			if validplayer(t[2]) ~= false then
2430
				for i = 1,#players do
2431
					local m_playerObjId = getplayerobjectid(players[i])
2432
					if getobject(m_playerObjId) ~= nil then
2433
						local x,y,z = getobjectcoords(m_playerObjId)
2434
						hprintf(getname(players[i]) .. "'s coords are: X: " .. x .. "  Y: " .. y .. "  Z: " .. z)
2435
					else
2436
						hprintf("Error! " .. getname(players[i]) .. " is dead!")
2437
					end
2438
				end
2439
			else
2440
				hprintf("Invalid Player!")
2441
			end
2442
		else
2443
			hprintf("Invalid Syntax: sv_getloc [player]")
2444
		end
2445
	elseif t[1] == "sv_ghost" then
2446
		response = 0
2447
		if count == 1 then
2448
			local m_object = getobject(getplayerobjectid(player))
2449
			if m_object ~= nil then
2450
				writebit(m_object, 0x10, 7, 1)
2451
				hprintf("You are now a ghost!")
2452
			else
2453
				hprintf("You cannot become a ghost while dead!")
2454
			end
2455
		elseif count == 2 then
2456
			if validplayer(t[2]) ~= false then
2457
				for i = 1,#players do
2458
					local m_object = getobject(getplayerobjectid(players[i]))
2459
					if m_object ~= nil then
2460
						writebit(m_object, 0x10, 7, 1)
2461
						hprintf(getname(players[i]) .. " is now a ghost!")
2462
						privatesay(players[i], "You are now a ghost.")
2463
					else
2464
						hprintf("You cannot ghost " .. getname(players[i]) .. " because " .. getname(players[i]) .. " is dead!")
2465
					end
2466
				end
2467
			else
2468
				hprintf("Invalid Player!")
2469
			end
2470
		else
2471
			hprintf("Invalid Syntax: sv_ghost {player}")
2472
		end
2473
	elseif t[1] == "sv_unghost" then
2474
		response = 0
2475
		if count == 1 then
2476
			local m_object = getobject(getplayerobjectid(player))
2477
			if m_object ~= nil then
2478
				writebit(m_object, 0x10, 7, 0)
2479
				hprintf("You are no longer a ghost.")
2480
			else
2481
				hprintf("You cannot unghost while dead!")
2482
			end
2483
		elseif count == 2 then
2484
			if validplayer(t[2]) ~= false then
2485
				for i = 1,#players do
2486
					local m_object = getobject(getplayerobjectid(players[i]))
2487
					if m_object ~= nil then
2488
						writebit(m_object, 0x10, 7, 0)
2489
						hprintf(getname(players[i]) .. " is no longer a ghost!")
2490
						privatesay(players[i], "You are no longer a ghost.")
2491
					else
2492
						hprintf("You cannot unghost " .. getname(players[i]) .. " because " .. getname(players[i]) .. " is dead!")
2493
					end
2494
				end
2495
			else
2496
				hprintf("Invalid Player!")
2497
			end
2498
		else
2499
			hprintf("Invalid Syntax: sv_unghost {player}")
2500
		end
2501
	elseif t[1] == "sv_setgod" then
2502
		response = 0
2503
		if count == 2 then
2504
			if deathless ~= 1 then
2505
				if validplayer(t[2]) ~= false then
2506
					for i = 1,#players do
2507
						local m_player = getplayer(players[i])
2508
						local m_playerObjId = readdword(m_player, 0x34)
2509
						local m_object = getobject(m_playerObjId)
2510
						if m_object ~= nil then
2511
							local obj_health = readfloat(m_object, 0xE0)
2512
							local obj_shields = readfloat(m_object, 0xE4)
2513
							writefloat(m_object, 0xE0, 99999999)
2514
							writefloat(m_object, 0xE4, 99999999)
2515
							hprintf(getname(players[i]) .. " has been given godmode!")
2516
							privatesay(players[i], "You have been given godmode.")
2517
						else
2518
							hprintf("Error! " .. getname(players[i]) .. " is dead!")
2519
						end
2520
					end
2521
				else
2522
					hprintf("Invalid Player")
2523
				end
2524
			else
2525
				hprintf("Deathless is enabled! You cannot give out godmode!")
2526
			end
2527
		else
2528
			hprintf("Invalid Syntax: sv_setgod [player]")
2529
		end
2530
	elseif t[1] == "cheat_hax" then
2531
		response = 0
2532
		if count == 2 then
2533
			if validplayer(t[2]) ~= false then
2534
				for i = 1,#players do
2535
					local m_player = getplayer(players[i])
2536
					writeword(m_player, 0x9C, 9999)
2537
					writeword(m_player, 0xA4, 9999)
2538
					writeword(m_player, 0xAC, 9999)
2539
					writeword(m_player, 0xAE, 9999)
2540
					writeword(m_player, 0xB0, 9999)
2541
					privatesay(players[i], "You have been haxed!")
2542
				end
2543
			end
2544
		else
2545
			hprintf("Invalid Syntax: cheat_hax [player]")
2546
		end
2547
	elseif t[1] == "sv_heal" then
2548
		response = 0
2549
		if count == 2 then
2550
			if validplayer(t[2]) ~= false then
2551
				for i = 1,#players do
2552
					local m_player = getplayer(players[i])
2553
					local m_playerObjId = readdword(m_player, 0x34)
2554
					local m_object = getobject(m_playerObjId)
2555
					if m_object ~= nil then
2556
						local obj_health = readfloat(m_object, 0xE0)
2557
						local obj_shields = readfloat(m_object, 0xE4)
2558
						writefloat(m_object, 0xE0, 1)
2559
						writefloat(m_object, 0xE4, 1)
2560
						hprintf(getname(players[i]) .. " has been healed!")
2561
						privatesay(players[i], "You have been healed!")
2562
					else
2563
						hprintf("Error! " .. getname(players[i]) .. " is dead!")
2564
					end
2565
				end
2566
			else
2567
				hprintf("Invalid Player")
2568
			end
2569
		else
2570
			hprintf("Invalid Syntax: sv_heal [player]")
2571
		end
2572
	elseif t[1] == "sv_ungod" then
2573
		response = 0
2574
		if count == 2 then
2575
			if validplayer(t[2]) ~= false then
2576
				for i = 1,#players do
2577
					local m_player = getplayer(players[i])
2578
					local m_playerObjId = readdword(m_player, 0x34)
2579
					local m_object = getobject(m_playerObjId)
2580
					local obj_health = readfloat(m_object, 0xE0)
2581
					local obj_shields = readfloat(m_object, 0xE4)
2582
					writefloat(m_object, 0xE0, 1)
2583
					writefloat(m_object, 0xE4, 1)
2584
					hprintf(getname(players[i]) .. " is no longer in godmode")
2585
					privatesay(players[i], "You are no longer in godmode.")
2586
				end
2587
			else
2588
				hprintf("Invalid Player")
2589
			end
2590
		else
2591
			hprintf("Invalid Syntax: sv_ungod [player]")
2592
		end
2593
	elseif t[1] == "sv_hitler" then
2594
		response = 0
2595
		if count == 1 then
2596
			local c = 0
2597
			for c = 0,15 do
2598
				if getplayer(c) ~= nil then
2599
					kill(c)
2600
					hprintf(getname(c) .. " was given a lethal injection!")
2601
				end
2602
			end
2603
		else
2604
			hprintf("Invalid Syntax: sv_hitler")
2605
		end
2606
	elseif t[1] == "sv_infinite_ammo" then
2607
		response = 0
2608
		if count == 1 then
2609
			if infammo == 1 then
2610
				hprintf("Infinite ammo is currently enabled")
2611
			elseif infammo == 0 then
2612
				hprintf("Infinite ammo is currently disabled")
2613
			end
2614
		elseif count == 2 then
2615
			if t[2] == "1" and infammo ~= 1 then
2616
				for c = 0,15 do
2617
					if getplayer(c) ~= nil then
2618
						local m_player = getplayer(c)
2619
						local m_ObjId = readdword(m_player, 0x34)
2620
						local m_Object = getobject(m_ObjId)
2621
						if m_player ~= nil and m_Object ~= nil then
2622
							for i = 0, 3 do
2623
								local m_weaponId = readdword(m_Object, 0x2F8 + (i*4))
2624
								if m_weaponId ~= -1 then
2625
									local m_weapon = getobject(m_weaponId)
2626
									writeword(m_weapon, 0x2B6, 9999) -- unloaded clip to 9999
2627
									--writeword(m_weapon, 0x2B8, 9999) -- loaded clip to 9999
2628
									--updateammo(m_weaponId)
2629
								end
2630
							end
2631
						end
2632
					end
2633
				end
2634
				infammo = 1
2635
				hprintf("Infinite Ammo is now enabled!")
2636
			elseif t[2] == "1" then
2637
				hprintf("Infammo is already enabled!")
2638
			elseif t[2] ~= "0" then
2639
				hprintf("Invalid Boolean: 0 for false, 1 for true")
2640
			elseif t[2] == "0" and infammo ~= 0 then
2641
				if nadetimer ~= nil then
2642
					removetimer(nadetimer)
2643
				end
2644
				for c = 0,15 do
2645
					if getplayer(c) ~= nil then
2646
						local m_player = getplayer(c)
2647
						local m_ObjId = readdword(m_player, 0x34)
2648
						local m_Object = getobject(m_ObjId)
2649
						if m_player ~= nil and m_Object ~= nil then
2650
							for i = 0, 3 do
2651
								local m_weaponId = readdword(m_Object, 0x2F8 + (i*4))
2652
								if m_weaponId ~= -1 then
2653
									local m_weapon = getobject(m_weaponId)
2654
									writeword(m_weapon, 0x2B6, 20) -- unloaded clip to 20
2655
									writeword(m_weapon, 0x2B8, 3)
2656
								end
2657
							end
2658
							writebyte(m_Object, 0x31E, 4) -- set frags to 4
2659
							writebyte(m_Object, 0x31F, 4) -- set plasmas to 4
2660
						end
2661
					end
2662
				end
2663
				infammo = 0
2664
				hprintf("Infinite Ammo is now disabled!")
2665
			elseif t[2] == "0" then
2666
				hprintf("Infammo is already disabled!")
2667
			else
2668
				hprintf("Invalid Boolean: 0 for false, 1 for true")
2669
			end
2670
		else
2671
			hprintf("Invalid Syntax: sv_infinite_ammo [boolean]")
2672
		end
2673
	elseif t[1] == "sv_invis" then
2674
		response = 0
2675
		if count == 2 then
2676
			if validplayer(t[2]) ~= false then
2677
				for i = 1,#players do
2678
					if getobject(getplayerobjectid(players[i])) ~= nil then
2679
						applycamo(players[i], 0)
2680
						hprintf(getname(players[i]) .. " is now invisible!")
2681
						privatesay(players[i], "You are now invisible until you die.")
2682
					else
2683
						hprintf("Error! " .. getname(players[i]) .. " is dead!")
2684
					end
2685
				end
2686
			else
2687
				hprintf("Invalid Player")
2688
			end
2689
		elseif count == 3 then
2690
			if validplayer(t[2]) ~= false then
2691
				for i = 1,#players do
2692
					applycamo(players[i], t[3])
2693
					hprintf(getname(players[i]) .. " is now invisible for " .. t[3] .. " seconds!")
2694
					privatesay(players[i], "You are now invisible for " .. t[3] .. " seconds.")
2695
				end
2696
			else
2697
				hprintf("Invalid Player")
2698
			end
2699
		else
2700
			hprintf("Invalid Syntax: sv_invis [player]")
2701
			hprintf("Invalid Syntax: sv_invis [player] [time]")
2702
		end
2703
	elseif t[1] == "sv_move" then
2704
		response = 0
2705
		if count == 5 then
2706
			if validplayer(t[2]) ~= false then
2707
				for i = 1,#players do
2708
					local m_playerObjId = getplayerobjectid(players[i])
2709
					if m_playerObjId ~= 0xFFFFFFFF then
2710
						local m_objectId = 0xFFFFFFFF
2711
						local m_vehicleId = readdword(getobject(m_playerObjId), 0x11C)
2712
						if m_vehicleId ~= 0xFFFFFFFF then
2713
							m_objectId = m_vehicleId
2714
						elseif m_playerObjId ~= 0xFFFFFFFF then
2715
							m_objectId = m_playerObjId
2716
						end
2717
						if m_objectId ~= 0xFFFFFFFF then
2718
							local x,y,z = getobjectcoords(m_objectId)
2719
							movobjcoords(m_objectId, x+t[3], y+t[4], z+t[5])
2720
							hprintf(getname(players[i]) .. " has been moved!")
2721
						end
2722
					else
2723
						hprintf("Error! " .. getname(players[i]) .. " is dead!")
2724
					end
2725
				end
2726
			else
2727
				hprintf("Invalid Player")
2728
			end
2729
		else
2730
			hprintf("Invalid Syntax: sv_move [player] [x] [y] [z]")
2731
		end
2732
	elseif t[1] == "sv_scrim" then
2733
		response = 0
2734
		if count == 1 then
2735
			lo3timer = registertimer(2000, "lo3Timer")
2736
			hprintf("Live on three.")
2737
		else
2738
			hprintf("Invalid Syntax: SV_scrim")
2739
		end
2740
	elseif t[1] == "sv_mute" then
2741
		response = 0
2742
		if count == 2 then
2743
			local mute = nil
2744
			for k,v in pairs(admin_table) do
2745
				if k == hash2 then
2746
					mute = 1
2747
					break
2748
				end
2749
			end
2750
			if validplayer(t[2]) ~= false then
2751
				for i = 1,#players do
2752
					if mute == nil then
2753
						if mute_table[gethash(players[i])] == nil and spamtimeout_table[gethash(players[i])] == nil then
2754
							mute_table[gethash(players[i])] = 1
2755
							hprintf(getname(players[i]) .. " was muted by an admin!")
2756
						else
2757
							hprintf(getname(players[i]) .. " has already been muted.")
2758
						end
2759
					else
2760
						hprintf("Admins cannot be muted.")
2761
					end
2762
				end
2763
			else
2764
				hprintf("Invalid Player")
2765
			end
2766
		else
2767
			hprintf("Invalid Syntax: sv_mute [player]")
2768
		end
2769
	elseif t[1] == "sv_noweapons" then
2770
		response = 0
2771
		if count == 2 then
2772
			if t[2] == "1" and noweapons ~= 1 then
2773
				for c = 0,15 do
2774
					if getplayer(c) ~= nil and getobject(getplayerobjectid(player)) ~= nil then
2775
						local m_player = getplayer(c)
2776
						local m_playerObjId = readdword(m_player, 0x34)
2777
						local m_object = getobject(m_playerObjId)
2778
						local obj_primary_weap_id = readdword(m_object, 0x2F8)
2779
						local obj_secondary_weap_id = readdword(m_object, 0x2FC)
2780
						local obj_ternary_weap_id = readdword(m_object, 0x300)
2781
						local obj_quartary_weap_id = readdword(m_object, 0x304)
2782
						if obj_primary_weap_id ~= 4294967295 then
2783
							destroyobject(obj_primary_weap_id)
2784
						end
2785
						if obj_secondary_weap_id ~= 4294967295 then
2786
							destroyobject(obj_secondary_weap_id)
2787
						end
2788
						if obj_ternary_weap_id ~= 4294967295 then
2789
							destroyobject(obj_ternary_weap_id)
2790
						end
2791
						if obj_quartary_weap_id ~= 4294967295 then
2792
							destroyobject(obj_quartary_weap_id)
2793
						end
2794
					end
2795
				end
2796
				hprintf("Noweapons is now on. You cannot pick up weapons.")
2797
				noweapons = 1
2798
			elseif t[2] == "1" then
2799
				hprintf("Noweapons is already enabled!")
2800
			elseif t[2] ~= "0" then
2801
				hprintf("Invalid Boolean: 0 for false, 1 for true")
2802
			elseif t[2] == "0" and noweapons ~= 0 then
2803
				local c = 0
2804
				for c = 0,15 do
2805
					if getplayer(c) ~= nil and getobject(getplayerobjectid(c)) ~= nil then
2806
						resetweapons(c)
2807
					end
2808
				end
2809
				hprintf("Noweapons is now off.")
2810
				noweapons = 0
2811
			elseif t[2] == "0" then
2812
				hprintf("Noweapons is already disabled!")
2813
			else
2814
				hprintf("Invalid Boolean: 0 for false, 1 for true")
2815
			end
2816
		else
2817
			hprintf("Invalid Syntax: sv_noweapons [boolean]")
2818
		end
2819
	elseif t[1] == "sv_resp" then
2820
		response = 0
2821
		if count == 3 then
2822
			if validplayer(t[2]) ~= false then
2823
				for i = 1,#players do
2824
					local m_player = getplayer(players[i])
2825
					local player_respawn_time = readdword(m_player, 0x2C)
2826
					writedword(m_player, 0x2c, t[3] * 33)
2827
					hprintf("Setting " .. getname(players[i]) .. "'s respawn time to " .. t[3] .. " seconds!")
2828
				end
2829
			else
2830
				hprintf("Invalid Player")
2831
			end
2832
		else
2833
			hprintf("Invalid Syntax sv_resp [player] [respawn time]")
2834
		end
2835
	elseif t[1] == "sv_enter" then
2836
		response = 0
2837
		if count == 3 then
2838
			if validplayer(t[3]) ~= false then
2839
				for i = 1,#players do
2840
					local vehid = nil
2841
					if t[2] == "wraith" then
2842
						vehid = Spawn(command, "Wraith", "vehi", "vehicles\\wraith\\wraith", players[i])
2843
					elseif t[2] == "lifepod" then
2844
						vehid = Spawn(command, "Lifepod", "vehi", "vehicles\\lifepod\\lifepod", players[i])
2845
					elseif t[2] == "longsword" then
2846
						vehid = Spawn(command, "Longsword", "vehi", "vehicles\\fighterbomber\\fighterbomber", players[i])
2847
					elseif t[2] == "dropship" then
2848
						vehid = Spawn(command, "Covenant Dropship", "vehi", "vehicles\\c_dropship\\c_dropship", players[i])
2849
					elseif t[2] == "cryotube" then
2850
						vehid = Spawn(command, "Cryotube", "vehi", "levels\\a10\\devices\\cryotube\\cryotube", players[i])
2851
					elseif t[2] == "peli" or t[2] == "pelican" then
2852
						vehid = Spawn(command, "Pelican", "vehi", "vehicles\\pelican\\pelican", players[i])
2853
					elseif t[2] == "ghost" then
2854
						vehid = Spawn(command, "Ghost", "vehi", "vehicles\\ghost\\ghost_mp", players[i])
2855
					elseif t[2] == "hog" then
2856
						vehid = Spawn(command, "Warthog", "vehi", "vehicles\\warthog\\mp_warthog", players[i])
2857
					elseif t[2] == "rhog" then
2858
						vehid = Spawn(command, "Rocket Warthog", "vehi", "vehicles\\rwarthog\\rwarthog", players[i])
2859
					elseif t[2] == "shee" or t[2] == "banshee" then
2860
						vehid = Spawn(command, "Banshee", "vehi", "vehicles\\banshee\\banshee_mp", players[i])
2861
					elseif t[2] == "tank" or t[2] == "scorpion" then
2862
						vehid = Spawn(command, "Tank", "vehi", "vehicles\\scorpion\\scorpion_mp", players[i])
2863
					elseif t[2] == "turret" or t[2] == "shade" then
2864
						vehid = Spawn(command, "Gun Turret", "vehi", "vehicles\\c gun turret\\c gun turret_mp", players[i])
2865
					else
2866
						hprintf("Invalid Vehicle!")
2867
					end
2868
					if vehid ~= nil then
2869
						local m_player = getplayer(players[i])
2870
						local m_playerObjId = getplayerobjectid(players[i])
2871
						if m_playerObjId ~= 0xffffffff then
2872
							entervehicle(players[i], vehid, 0)
2873
							table.insert(vehicle_drone_table[players[i]], vehid)
2874
							hprintf(getname(players[i]) .. " has been forced to enter a vehicle!")
2875
						else
2876
							hprintf(getname(players[i]) .. " cannot enter a vehicle while dead!")
2877
						end
2878
					end
2879
				end
2880
			else
2881
				hprintf("Invalid Player!")
2882
			end
2883
		else
2884
			hprintf("Invalid Syntax: sv_enter [vehicle] [player]")
2885
		end
2886
	elseif t[1] == "sv_setassists" then
2887
		response = 0
2888
		if count == 3 then
2889
			if validplayer(t[2]) ~= false then
2890
				for i = 1,#players do
2891
					writeword(getplayer(players[i]), 0xA4, t[3])
2892
					hprintf(getname(players[i]) .. " had their assists set to " .. t[3])
2893
				end
2894
			else
2895
				hprintf("Invalid Player")
2896
			end
2897
		else
2898
			hprintf("Invalid Syntax: sv_setassists [player] [assists]")
2899
		end
2900
	elseif t[1] == "sv_setdeaths" then
2901
		response = 0
2902
		if count == 3 then
2903
			if validplayer(t[2]) ~= false then
2904
				for i = 1,#players do
2905
					writeword(getplayer(players[i]), 0xAE, t[3])
2906
					hprintf(getname(players[i]) .. " had their deaths set to " .. t[3])
2907
				end
2908
			else
2909
				hprintf("Invalid Player")
2910
			end
2911
		else
2912
			hprintf("Invalid Syntax: sv_setdeaths [player] [deaths]")
2913
		end
2914
	elseif t[1] == "sv_setfrags" then
2915
		response = 0
2916
		if count == 3 then
2917
			if validplayer(t[2]) ~= false then
2918
				for i = 1,#players do
2919
					local m_object = getobject(getplayerobjectid(players[i]))
2920
					if m_object ~= nil then
2921
						if tonumber(t[3]) ~= nil then
2922
							writebyte(m_object, 0x31E, t[3])
2923
							hprintf("Setting " .. getname(players[i]) .. "'s frag grenades to " .. t[3])
2924
							privatesay(players[i], "Your frag grenades were set to " .. t[3])
2925
						else
2926
							hprintf(t[3] .. " is not a valid number.")
2927
						end
2928
					else
2929
						hprintf("Error! " .. getname(players[i]) .. " is dead!")
2930
					end
2931
				end
2932
			else
2933
				hprintf("Invalid Player")
2934
			end
2935
		else
2936
			hprintf("Invalid Syntax: sv_setfrags [player] [amount]")
2937
		end
2938
	elseif t[1] == "sv_setkills" then
2939
		response = 0
2940
		if count == 3 then
2941
			if validplayer(t[2]) ~= false then
2942
				for i = 1,#players do
2943
					writeword(getplayer(players[i]), 0x9C, t[3])
2944
					hprintf(getname(players[i]) .. " had their kills set to " .. t[3])
2945
				end
2946
			else
2947
				hprintf("Invalid Player")
2948
			end
2949
		else
2950
			hprintf("Invalid Syntax: sv_setkills [player] [kills]")
2951
		end
2952
	elseif t[1] == "sv_respawn_time" then
2953
		response = 0
2954
		if count == 2 then
2955
			if t[2] == "default" then
2956
				respset = 0
2957
				hprintf("Respawn time set to the gametype's default setting!")
2958
			elseif tonumber(t[2]) ~= nil then
2959
				resptime = t[2]
2960
				respset = 1
2961
				hprintf("Respawn time set to " .. t[2] .. " seconds!")
2962
			else
2963
				hprintf("That is not a valid number.")
2964
			end
2965
		else
2966
			hprintf("Invalid Syntax: sv_respawn_time [seconds]")
2967
		end
2968
	elseif t[1] == "sv_setplasmas" then
2969
		response = 0
2970
		if count == 3 then
2971
			if validplayer(t[2]) ~= false then
2972
				for i = 1,#players do
2973
					local m_object = getobject(getplayerobjectid(players[i]))
2974
					if m_object ~= nil then
2975
						if tonumber(t[3]) ~= nil then
2976
							writebyte(m_object, 0x31F, t[3])
2977
							hprintf("Setting " .. getname(players[i]) .. "'s plasma grenades to " .. t[3])
2978
						else
2979
							hprintf(t[3] .. " is not a valid number.")
2980
						end
2981
					else
2982
						hprintf("Error! " .. getname(players[i]) .. " is dead!")
2983
					end
2984
				end
2985
			else
2986
				hprintf("Invalid Player")
2987
			end
2988
		else
2989
			hprintf("Invalid Syntax: sv_setplasmas [player] [amount]")
2990
		end
2991
	elseif t[1] == "sv_spawn" then
2992
		response = 0
2993
		--Objects with 'bipd' tag
2994
		if t[2] == "cyborg" or t[2] == "bot" or t[2] == "mastercheif" or t[2] == "biped" or t[2] == "bipd" then
2995
			Spawn(command, "Cyborg", "bipd", "characters\\cyborg_mp\\cyborg_mp", player, false)
2996
		elseif t[2] == "captain" or t[2] == "keyes" then
2997
			Spawn(command, "Captain Keyes", "bipd", "characters\\captain\\captain", false)
2998
		elseif t[2] == "cortana" then
2999
			Spawn(command, "Cortana", "bipd", "characters\\cortana\\cortana", false)
3000
		elseif t[2] == "cortana2" then
3001
			Spawn(command, "Cortana2", "bipd", "characters\\cortana\\halo_enhanced\\halo_enhanced", false)
3002
		elseif t[2] == "crewman" then
3003
			Spawn(command, "Crewman", "bipd", "characters\\crewman\\crewman", false)
3004
		elseif t[2] == "elite" then
3005
			Spawn(command, "elite", "bipd", "characters\\elite\\elite", false)
3006
		elseif t[2] == "elite2" then
3007
			Spawn(command, "Elite Special", "bipd", "characters\\elite\\elite special", false)
3008
		elseif t[2] == "engineer" then
3009
			Spawn(command, "Engineer", "bipd", "characters\\engineer\\engineer", false)
3010
		elseif t[2] == "flood" then
3011
			Spawn(command, "Flood Captain", "bipd", "characters\\flood_captain\\flood_captain", false)
3012
		elseif t[2] == "flood2" then
3013
			Spawn(command, "Flood Infection", "bipd", "characters\\flood_infection\\flood_infection", false)
3014
		elseif t[2] == "flood3" then
3015
			Spawn(command, "Flood Carrier", "bipd", "characters\\floodcarrier\\floodcarrier", false)
3016
		elseif t[2] == "floodelite" then
3017
			Spawn(command, "FloodCombat Elite", "bipd", "characters\\floodcombat elite\\floodcombat elite", false)
3018
		elseif t[2] == "floodhuman" then
3019
			Spawn(command, "FloodCombat Human", "bipd", "characters\\floodcombat_human\\floodcombat_human", false)
3020
		elseif t[2] == "pedobear" or t[2] == "grunt" then
3021
			Spawn(command, "Pedobear", "bipd", "characters\\grunt\\grunt", false)
3022
		elseif t[2] == "hunter" then
3023
			Spawn(command, "Hunter", "bipd", "characters\\hunter\\hunter", false)
3024
		elseif t[2] == "marine" then
3025
			Spawn(command, "Marine", "bipd", "characters\\marine\\marine", false)
3026
		elseif t[2] == "marinesuicide" or t[2] == "marine2" then
3027
			Spawn(command, "Marine Suicidal", "bipd", "characters\\marine_suicidal\\marine_suicidal", false)
3028
		elseif t[2] == "monitor" then
3029
			Spawn(command, "Monitor", "bipd", "characters\\monitor\\monitor", false)
3030
		elseif t[2] == "sentinel" then
3031
			Spawn(command, "Sentinel", "bipd", "characters\\sentinel\\sentinel", false)
3032
		elseif t[2] == "johnson" then
3033
			Spawn(command, "Sgt. Johnson", "bipd", "characters\\johnson\\johnson", false)
3034
		--Objects with 'eqip' tags
3035
		elseif t[2] == "camo" or t[2] == "camouflage" then
3036
			Spawn(command, "Camouflage", "eqip", "powerups\\active camouflage", player, false)
3037
		elseif t[2] == "dblspd" then
3038
			Spawn(command, "Double Speed", "eqip", "powerups\\double speed", player, false)
3039
		elseif t[2] == "fullspec" then
3040
			Spawn(command, "Full-Spectrum Vision", "eqip", "powerups\\full-spectrum vision", player, false)
3041
		elseif t[2] == "fnade" or t[2] == "nades" then
3042
			Spawn(command, "Frag Grenade", "eqip", "weapons\\frag grenade\\frag grenade", player, false)
3043
		elseif t[2] == "pnade" then
3044
			Spawn(command, "Plasma Grenade", "eqip", "weapons\\plasma grenade\\plasma grenade", player, false)
3045
		elseif t[2] == "overshield" or t[2] == "os" then
3046
			Spawn(command, "Overshield", "eqip", "powerups\\over shield", player, false)
3047
		elseif t[2] == "rifleammo" then
3048
			Spawn(command, "Assault Rifle Ammo", "eqip", "powerups\\assault rifle ammo\\assault rifle ammo", player, false)
3049
		elseif t[2] == "healthpack" then
3050
			Spawn(command, "Health Pack", "eqip", "powerups\\health pack", player, false)
3051
		elseif t[2] == "needlerammo" then
3052
			Spawn(command, "Needler Ammo", "eqip", "powerups\\needler ammo\\needler ammo", player, false)
3053
		elseif t[2] == "pistolammo" then
3054
			Spawn(command, "Pistol Ammo", "eqip", "powerups\\pistol ammo\\pistol ammo", player, false)
3055
		elseif t[2] == "rocketammo" then
3056
			Spawn(command, "Rocket Ammo", "eqip", "powerups\\rocket launcher ammo\\rocket launcher ammo", player, false)
3057
		elseif t[2] == "shottyammo" then
3058
			Spawn(command, "Shotgun Ammo", "eqip", "powerups\\shotgun ammo\\shotgun ammo", player, false)
3059
		elseif t[2] == "sniperammo" then
3060
			Spawn(command, "Sniper Ammo", "eqip", "powerups\\sniper rifle ammo\\sniper rifle ammo", player, false)
3061
		elseif t[2] == "flameammo" then
3062
			Spawn(command, "Flamethrower Ammo", "eqip", "powerups\\flamethrower ammo\\flamethrower ammo", player, false)
3063
		--Objects with 'weap' tag
3064
		elseif t[2] == "energysword" or t[2] == "esword" then
3065
			Spawn(command, "Energy Sword", "weap", "weapons\\energy sword\\energy sword", false)
3066
		elseif t[2] == "ball" or t[2] == "oddball" then
3067
			Spawn(command, "Oddball", "weap", "weapons\\ball\\ball", player, false)
3068
		elseif t[2] == "flag" then
3069
			Spawn(command, "Flag", "weap", "weapons\\flag\\flag", player, false)
3070
		elseif t[2] == "frg" or t[2] == "fuelrod" or t[2] == "rod" or t[2] == "plasmacannon" then
3071
			Spawn(command, "Fuel Rod", "weap", "weapons\\plasma_cannon\\plasma_cannon", player, false)
3072
		elseif t[2] == "ggun" or t[2] == "gravitygun" then
3073
			Spawn(command, "Gravity Gun", "weap", "weapons\\gravity rifle\\gravity rifle", player, false)
3074
		elseif t[2] == "needler" then
3075
			Spawn(command, "Needler", "weap", "weapons\\needler\\mp_needler", player, false)
3076
		elseif t[2] == "pistol" then
3077
			Spawn(command, "Pistol", "weap", "weapons\\pistol\\pistol", player, false)
3078
		elseif t[2] == "ppistol" or t[2] == "plasmapistol" then
3079
			Spawn(command, "Plasma Pistol", "weap", "weapons\\plasma pistol\\plasma pistol", player, false)
3080
		elseif t[2] == "prifle" or t[2] == "plasmarifle" then
3081
			Spawn(command, "Plasma Rifle", "weap", "weapons\\plasma rifle\\plasma rifle", player, false)
3082
		elseif t[2] == "rifle" or t[2] == "arifle" or t[2] == "assaultrifle" then
3083
			Spawn(command, "Assault Rifle", "weap", "weapons\\assault rifle\\assault rifle", player, false)
3084
		elseif t[2] == "rocket" or t[2] == "rocketlauncher" or t[2] == "rox" then
3085
			Spawn(command, "Rocket Launcher", "weap", "weapons\\rocket launcher\\rocket launcher", player, false)
3086
		elseif t[2] == "shotty" or t[2] == "shotgun" then
3087
			Spawn(command, "Shotgun", "weap", "weapons\\shotgun\\shotgun", player, false)
3088
		elseif t[2] == "sniper" then
3089
			Spawn(command, "Sniper Rifle", "weap", "weapons\\sniper rifle\\sniper rifle", player, false)
3090
		--Objects with 'vehi' tag
3091
		elseif t[2] == "wraith" then
3092
			Spawn(command, "Wraith", "vehi", "vehicles\\wraith\\wraith", player, false)
3093
		elseif t[2] == "peli" or t[2] == "pelican" then
3094
			Spawn(command, "Pelican", "vehi", "vehicles\\pelican\\pelican", player, false)
3095
		elseif t[2] == "ghost" then
3096
			Spawn(command, "Ghost", "vehi", "vehicles\\ghost\\ghost_mp", player, false)
3097
		elseif t[2] == "hog" or t[2] == "warthog" then
3098
			Spawn(command, "Warthog", "vehi", "vehicles\\warthog\\mp_warthog", player, false)
3099
		elseif t[2] == "rhog" or t[2] == "rocketwarthog" then
3100
			Spawn(command, "Rocket Warthog", "vehi", "vehicles\\rwarthog\\rwarthog", player, false)
3101
		elseif t[2] == "shee" or t[2] == "banshee" then
3102
			Spawn(command, "Banshee", "vehi", "vehicles\\banshee\\banshee_mp", player, false)
3103
		elseif t[2] == "tank" or t[2] == "scorpion" then
3104
			Spawn(command, "Tank", "vehi", "vehicles\\scorpion\\scorpion_mp", player, false)
3105
		elseif t[2] == "turret" or t[2] == "shade" then
3106
			Spawn(command, "Gun Turret", "vehi", "vehicles\\c gun turret\\c gun turret_mp", player, false)
3107
		else
3108
			hprintf("Invalid Object!")
3109
		end
3110
	elseif t[1] == "sv_give" then
3111
		response = 0
3112
		if t[2] == "energysword" or t[2] == "esword" or t[2] == "sword" then
3113
			Spawn(command, "Energy Sword", "weap", "weapons\\energy sword\\energy sword", player, true)
3114
		elseif t[2] == "ball" or t[2] == "oddball" then
3115
			Spawn(command, "Oddball", "weap", "weapons\\ball\\ball", player, true)
3116
		elseif t[2] == "flag" then
3117
			Spawn(command, "Flag", "weap", "weapons\\flag\\flag", player, true)
3118
		elseif t[2] == "frg" or t[2] == "fuelrod" or t[2] == "rod" or t[2] == "plasmacannon" then
3119
			Spawn(command, "Fuel Rod", "weap", "weapons\\plasma_cannon\\plasma_cannon", player, true)
3120
		elseif t[2] == "ggun" or t[2] == "gravitygun" then
3121
			Spawn(command, "Gravity Gun", "weap", "weapons\\gravity rifle\\gravity rifle", player, true)
3122
		elseif t[2] == "needler" then
3123
			Spawn(command, "Needler", "weap", "weapons\\needler\\mp_needler", player, true)
3124
		elseif t[2] == "pistol" then
3125
			Spawn(command, "Pistol", "weap", "weapons\\pistol\\pistol", player, true)
3126
		elseif t[2] == "ppistol" or t[2] == "plasmapistol" then
3127
			Spawn(command, "Plasma Pistol", "weap", "weapons\\plasma pistol\\plasma pistol", player, true)
3128
		elseif t[2] == "flamethrower" or t[2] == "flame" then
3129
			Spawn(command, "Flamethrower", "weap", "weapons\\flamethrower\\flamethrower", player, true)
3130
		elseif t[2] == "prifle" or t[2] == "plasmarifle" then
3131
			Spawn(command, "Plasma Rifle", "weap", "weapons\\plasma rifle\\plasma rifle", player, true)
3132
		elseif t[2] == "rifle" or t[2] == "arifle" or t[2] == "assaultrifle" then
3133
			Spawn(command, "Assault Rifle", "weap", "weapons\\assault rifle\\assault rifle", player, true)
3134
		elseif t[2] == "rocket" or t[2] == "rocketlauncher" or t[2] == "rox" then
3135
			Spawn(command, "Rocket Launcher", "weap", "weapons\\rocket launcher\\rocket launcher", player, true)
3136
		elseif t[2] == "shotty" or t[2] == "shotgun" then
3137
			Spawn(command, "Shotgun", "weap", "weapons\\shotgun\\shotgun", player, true)
3138
		elseif t[2] == "sniper" then
3139
			Spawn(command, "Sniper Rifle", "weap", "weapons\\sniper rifle\\sniper rifle", player, true)
3140
		else
3141
			hprintf("Invalid Object!")
3142
		end
3143
	elseif t[1] == "sv_suspend" then
3144
		response = 0
3145
		if validplayer(t[2]) ~= false then
3146
			for i = 1,#players do
3147
				if suspend_table[gethash(players[i])] == nil then
3148
					local m_player = getplayer(players[i])
3149
					local player_respawn_time = readdword(m_player, 0x2c)
3150
					if count == 2 then
3151
						kill(players[i])
3152
						writedword(m_player, 0x2C, 2592000)
3153
						suspend_table[gethash(players[i])] = 2
3154
						hprintf(getname(players[i]) .. " was suspended by an admin!")
3155
					elseif count == 3 then
3156
						kill(players[i])
3157
						writedword(m_player, 0x2C, t[3] * 30)
3158
						suspend_table[gethash(players[i])] = 1
3159
						if tonumber(t[3]) == 1 then
3160
							hprintf(getname(players[i]) .. " was suspended by an admin for " .. t[3] .. " second!")
3161
						else
3162
							hprintf(getname(players[i]) .. " was suspended by an admin for " .. t[3] .. " seconds!")
3163
						end
3164
					else
3165
						hprintf("Invalid Syntax: sv_suspend [player] {time}")
3166
					end
3167
				else
3168
					hprintf(getname(players[i]) .. " has already been suspended.")
3169
				end
3170
			end
3171
		else
3172
			hprintf("Invalid Player!")
3173
		end
3174
	elseif t[1] == "sv_teleport_pl" then
3175
		response = 0
3176
		if count == 3 then
3177
			if validplayer(t[2]) ~= false then
3178
				for i = 1,#players do
3179
					local name = getname(players[i])
3180
					local m_player = getplayer(players[i])
3181
					local player_respawn_time = readdword(m_player, 0x2C)
3182
					local m_playerObjId = readdword(m_player, 0x34)
3183
					local m_object = getobject(m_playerObjId)
3184
					local m_vehicle = getobject(readdword(m_object, 0x11C))
3185
					local validplayer = validplayer2(t[3])
3186
					if validplayer == true then
3187
						local t_player = getplayer(players2[1])
3188
						local t_name = getname(players2[1])
3189
						local player2_respawn_time = readdword(t_player, 0x2C)
3190
						local player_x_coord,player_y_coord,player_z_coord = getobjectcoords(readdword(t_player, 0x34))
3191
						if m_vehicle ~= nil then
3192
							writefloat(m_vehicle, 0x5C, player_x_coord)
3193
							writefloat(m_vehicle, 0x60, player_y_coord)
3194
							writefloat(m_vehicle, 0x64, player_z_coord + 1.5)
3195
							hprintf(name .. " was teleported to " .. t_name)
3196
						else
3197
							movobjcoords(m_playerObjId, player_x_coord, player_y_coord, player_z_coord+1)
3198
							hprintf(name .. " was teleported to " .. t_name)
3199
						end
3200
					elseif validplayer == nil then
3201
						hprintf("Invalid Player!")
3202
					end
3203
				end
3204
			else
3205
				hprintf("Invalid Player!")
3206
			end
3207
		else
3208
			hprintf("Invalid Syntax: sv_teleport_pl [player] [player]")
3209
			hprintf("If you are unsure of a command, do /help on it")
3210
		end
3211
	elseif t[1] == "sv_changeteam" then
3212
		response = 0
3213
		if count == 2 then
3214
			if validplayer(t[2]) ~= false then
3215
				for i = 1,#players do
3216
					changeteam(players[i], 1)
3217
					hprintf(getname(players[i]) .. " had their team changed!")
3218
				end
3219
			else
3220
				hprintf("Invalid Player")
3221
			end
3222
		else
3223
			hprintf("Invalid Syntax: sv_changeteam [player]")
3224
		end
3225
	elseif t[1] == "sv_test" then
3226
		response = 0
3227
		if count == 2 then
3228
			if getplayer(rresolveplayer(t[2])) ~= nil then
3229
				player_struct = getplayer(rresolveplayer(t[2]))
3230
				m_playerObjId = readdword(player_struct, 0x34)
3231
				if m_playerObjId ~= 0xffffffff then
3232
					entervehicle(player, m_playerObjId, 0)
3233
				end
3234
			end
3235
		end
3236
	elseif t[1] == "sv_timelimit" then
3237
		response = 0
3238
		if count == 2 then
3239
			settimelimit(t[2])
3240
			hprintf("Timelimit set to " .. t[2] .. " minutes!")
3241
		else
3242
			hprintf("Invalid Syntax: sv_timelimit [time]")
3243
		end
3244
	elseif t[1] == "cheat_unhax" then
3245
		response = 0
3246
		if count == 2 then
3247
			if validplayer(t[2]) ~= nil then
3248
				for i = 1,#players do
3249
					local m_player = getplayer(players[i])
3250
					writeword(m_player, 0x9C, 0)
3251
					writeword(m_player, 0xA4, 0)
3252
					writeword(m_player, 0xAC, 0)
3253
					writeword(m_player, 0xAE, 0)
3254
					writeword(m_player, 0xB0, 0)
3255
					hprintf("Happy Hacking.")
3256
				end
3257
			else
3258
				hprintf("Invalid Player!")
3259
			end
3260
		else
3261
			hprintf("Invalid Syntax: cheat_unhax [player]")
3262
		end
3263
	elseif t[1] == "sv_unmute" then
3264
		response = 0
3265
		if count == 2 then
3266
			if validplayer(t[2]) ~= false then
3267
				for i = 1,#players do
3268
					if gethash(players[i]) ~= nil then
3269
						if mute_table[gethash(players[i])] ~= nil or spamtimeout_table[gethash(players[i])] ~= nil then
3270
							mute_table[gethash(players[i])] = nil
3271
							spamtimeout_table[gethash(players[i])] = nil
3272
							hprintf(getname(players[i]) .. " was unmuted by an admin!")
3273
						else
3274
							hprintf(getname(players[i]) .. " has not been muted.")
3275
						end
3276
					else
3277
						hprintf("Invalid Player")
3278
					end
3279
				end
3280
			else
3281
				hprintf("Invalid Player!")
3282
			end
3283
		else
3284
			hprintf("Invalid Syntax: sv_unmute [player]")
3285
		end
3286
	elseif t[1] == "sv_uninvis" then
3287
		response = 0
3288
		if count == 2 then
3289
			if validplayer(t[2]) ~= false then
3290
				for i = 1,#players do
3291
					local m_playerObjId = getplayerobjectid(players[i])
3292
					if getobject(m_playerObjId) ~= nil then
3293
						local x,y,z = getobjectcoords(m_playerObjId)
3294
						local m_vehicleId = readdword(getobject(m_playerObjId), 0x11C)
3295
						if m_vehicleId ~= 0xFFFFFFFF then
3296
							exitvehicle(players[i])
3297
							destroyobject(m_playerObjId)
3298
							registertimer(1000, "uninvisTimer", players[i], m_vehicleId, x, y, z)
3299
						elseif m_playerObjId ~= 0xFFFFFFFF then
3300
							destroyobject(m_playerObjId)
3301
							registertimer(1000, "uninvisTimer", players[i], m_vehicleId, x, y, z)
3302
						end
3303
						hprintf(getname(players[i]) .. " is no longer invisible!")
3304
					else
3305
						hprintf("Error! " .. getname(players[i]) .. " is dead!")
3306
					end
3307
				end
3308
			else
3309
				hprintf("Invalid Player!")
3310
			end
3311
		else
3312
			hprintf("Invalid Syntax: sv_uninvis [player]")
3313
		end
3314
	elseif t[1] == "sv_unsuspend" then
3315
		response = 0
3316
		if count == 2 then
3317
			if validplayer(t[2]) ~= false then
3318
				for i = 1,#players do
3319
					local m_player = getplayer(players[i])
3320
					if suspend_table[gethash(players[i])] ~= nil then
3321
						writedword(m_player, 0x2C, 0)
3322
						hprintf(getname(players[i]) .. " was unsuspended by an admin!")
3323
					else
3324
						hprintf(getname(players[i]) .. " has not been suspended.")
3325
					end
3326
				end
3327
			else
3328
				hprintf("Invalid Player!")
3329
			end
3330
		else
3331
			hprintf("Invalid Syntax: sv_unsuspend [player]")
3332
		end
3333
	elseif cmd == "sv_bos" then
3334
		response = 1
3335
		if count == 2 then
3336
			if validplayer(t[2]) ~= false then
3337
				for i = 1,#players do
3338
					local bos_entry = bos_table[players[i]]
3339
					local words = {}
3340
					for word in bos_entry:gmatch("%w+") do
3341
						table.insert(words, word)
3342
					end
3343
					local size = table.getn(words)
3344
					local name = ""
3345
					local hash = words[size]
3346
					for i=1,(size - 1) do
3347
						name = name .. words[i] .. " "
3348
					end
3349
					hprintf("Adding " .. name .. "to BoS.")
3350
					hprintf("Entry: " .. name .. "- " .. hash)
3351
					table.insert(boslog_table, bos_entry)
3352
				end
3353
			else
3354
				hprintf("Invalid Player!")
3355
			end
3356
		else
3357
			hprintf("Invalid Syntax: sv_bos [player]")
3358
		end
3359
	elseif cmd == "sv_boslist" then
3360
		response = 0
3361
		if count == 1 then
3362
			hprintf("[Num Name - Hash]")
3363
			for k,v in pairs(boslog_table) do
3364
				if v ~= nil then
3365
					local words = {}
3366
					for word in v:gmatch("%w+") do
3367
						table.insert(words, word)
3368
					end
3369
					local size = table.getn(words)
3370
					local name = ""
3371
					local hash = words[size]
3372
					for i=1,(size - 1) do
3373
						name = name .. " " .. words[i]
3374
					end
3375
					hprintf("[" .. k - 1 .. name .. " - " .. hash .. "]")
3376
				end
3377
			end
3378
		end
3379
	elseif cmd == "sv_stickman_animation" then
3380
		response = 0
3381
		if toksize == 1 then
3382
			registertimer(750, "stickman")
3383
		else
3384
			hprintf("Invalid Syntax: sv_stickman_animation")
3385
		end
3386
	elseif cmd == "sv_randomkill" then
3387
		response = 0
3388
		if count == 1 then
3389
			local random = getrandomnumber(0, 15)
3390
			local player_number = resolveplayer(random)
3391
			while player_number == -1 do
3392
				random = getrandomnumber(0, 15)
3393
				player_number = resolveplayer(random)
3394
			end
3395
			kill(rresolveplayer(player_number))
3396
		else
3397
			hprintf("Invalid Syntax: sv_randomkill")
3398
		end
3399
	elseif cmd == "sv_unbos" then
3400
		response = 0
3401
		if count == 2 then
3402
			local number = tonumber(getcmdtoken(command, 1) + 1)
3403
			local entry = boslog_table[number]
3404
			local words = {}
3405
			if entry == nil then
3406
				hprintf("Invalid Entry")
3407
			else
3408
				for word in entry:gmatch("%w+") do
3409
					table.insert(words, word)
3410
				end
3411
				local size = table.getn(words)
3412
				local name = ""
3413
				local hash = words[size]
3414
				for i=1,(size - 1) do
3415
					name = name .. " " .. words[i]
3416
				end
3417
				hprintf("Removing" .. name .. " - " .. hash .. " from BoS.")
3418
				table.remove(boslog_table, number)
3419
			end
3420
		else
3421
			hprintf("Invalid Syntax: sv_unbos [entry]")
3422
		end
3423
	elseif cmd == "sv_info" then
3424
		response = 0
3425
		local player_number = player + 1
3426
		local m_player = getplayer(player)
3427
		local hash = gethash(player)
3428
		local display = 1
3429
		if count == 2 then
3430
			player_number = tonumber(getcmdtoken(command, 1))
3431
			m_player = getplayer(rresolveplayer(player_number))
3432
			hash = gethash(rresolveplayer(player_number))
3433
			if hash == 0 then
3434
				hprintf("Invalid Player")
3435
				display = 0
3436
			end
3437
		elseif toksize > 2 then
3438
			hprintf("Invalid Syntax: sv_info {player}")
3439
			display = 0
3440
		end
3441
		if display == 1 then
3442
			local m_playerObjId = readdword(m_player, 0x34)
3443
			local m_object = getobject(m_playerObjId)
3444
			local player_name = readstring(m_player, 0x4, 0x14)
3445
			local player_team = readdword(m_player, 0x20)
3446
			local player_respawn_time = readdword(m_player, 0x2C)
3447
			local player_invis_time = readword(m_player, 0x68)
3448
			local player_speed = readfloat(m_player, 0x6C)
3449
			local player_objective_mode = readbyte(m_player, 0x74)
3450
			local player_objective_mode2 = readbyte(m_player, 0x7A)
3451
			local player_killstreak = readword(m_player, 0x96)
3452
			local player_kills = readword(m_player, 0x9C)
3453
			local player_assists = readword(m_player, 0xA4)
3454
			local player_betrays = readword(m_player, 0xAC)
3455
			local player_deaths = readword(m_player, 0xAE)
3456
			local player_suicides = readword(m_player, 0xB0)
3457
			local player_ping = readword(m_player, 0xDC)
3458
			local player_x_coord = readfloat(m_player, 0xF8)
3459
			local player_y_coord = readfloat(m_player, 0xFC)
3460
			local player_z_coord = readfloat(m_player, 0x100)
3461
			local obj_max_health = readfloat(m_object, 0xD8)
3462
			local obj_max_shields = readfloat(m_object, 0xDC)
3463
			local obj_health = readfloat(m_object, 0xE0)
3464
			local obj_shields = readfloat(m_object, 0xE4)
3465
			local obj_flashlight_mode = readbyte(m_object, 0x206)
3466
			local obj_crouch = readbyte(m_object, 0x2A0)
3467
			local obj_weap_type = readbyte(m_object, 0x2F2)
3468
			local obj_nade_type = readbyte(m_object, 0x31C)
3469
			local obj_primary_nades = readbyte(m_object, 0x31E)
3470
			local obj_secondary_nades = readbyte(m_object, 0x31F)
3471
			local obj_flashlight_level = readfloat(m_object, 0x344)
3472
			local obj_invis_scale = readfloat(m_object, 0x37C)
3473
			local obj_airborne = readbyte(m_object, 0x4CC)
3474
			local obj_primary_weap_id = readdword(m_object, 0x2F8)
3475
			local obj_secondary_weap_id = readdword(m_object, 0x2FC)
3476
			local primary_weap = getobject(obj_primary_weap_id)
3477
			local secondary_weap = getobject(obj_secondary_weap_id)
3478
			local m_vehicle = getobject(readdword(m_object, 0x11C))
3479
			if obj_crouch == 1 or obj_crouch == 5 or obj_crouch == 6 or obj_crouch == 13 or obj_crouch == 17 then
3480
				primary_weap = getobject(readdword(m_vehicle, 0x2F8))
3481
			end
3482
			local primary_weap_heat = readfloat(primary_weap, 0x23C)
3483
			local primary_weap_age = readfloat(primary_weap, 0x240)
3484
			local primary_weap_ammo = readword(primary_weap, 0x2B6)
3485
			local primary_weap_clip = readword(primary_weap, 0x2B8)
3486
			local secondary_weap_heat = readfloat(secondary_weap, 0x23C)
3487
			local secondary_weap_age = readfloat(secondary_weap, 0x240)
3488
			local secondary_weap_ammo = readword(secondary_weap, 0x2B6)
3489
			local secondary_weap_clip = readword(secondary_weap, 0x2B8)
3490
			local teamsize = getteamsize(player_team)
3491
			if player_team == 0 then
3492
				player_team = "Red"
3493
			elseif player_team == 1 then
3494
				player_team = "Blue"
3495
			end
3496
			if player_objective_mode == 0x22 and player_objective_mode2 == 0x71 then
3497
				player_objective_mode = "Hill"
3498
			elseif player_objective_mode == 0x23 and player_objective_mode2 == 0x71 then
3499
				player_objective_mode = "Juggernaut"
3500
			elseif player_objective_mode == 0x23 and player_objective_mode2 == 0x72 then
3501
				player_objective_mode = "It"
3502
			elseif player_objectivemode == 0x29 and player_objective_mode2 == 0x70 then
3503
				player_objective_mode = "Ball"
3504
			else
3505
				player_objective_mode = "None"
3506
			end
3507
			if obj_weap_type == 2 and player_objective_mode == "None" then
3508
				player_objective_mode = "Flag"
3509
			end
3510
			player_respawn_time = round(player_respawn_time / 30)
3511
			player_invis_time = round(player_invis_time / 30)
3512
			player_betrays = player_betrays - player_suicides
3513
3514
			player_x_coord = round(player_x_coord)
3515
			player_y_coord = round(player_y_coord)
3516
			player_z_coord = round(player_z_coord)
3517
3518
			obj_invis_scale = round(obj_invis_scale * 100)
3519
3520
			if obj_invis_scale == 0 then
3521
				obj_invis_scale = "No"
3522
			else
3523
				obj_invis_scale = obj_invis_scale
3524
			end
3525
3526
			local invis_info = "Invis: " .. obj_invis_scale
3527
3528
			if obj_invis_scale ~= "No" then
3529
				invis_info = "Invis: " .. obj_invis_scale .. " (" .. player_invis_time .. " secs)"
3530
			end
3531
3532
			if obj_flashlight_mode == 8 then
3533
				obj_flashlight_mode = "On"
3534
			else
3535
				obj_flashlight_mode = "Off"
3536
			end
3537
3538
			obj_flashlight_level = round(obj_flashlight_level * 100)
3539
3540
			if primary_weap_age == 0 then
3541
				if primary_weap_ammo ~= 0 or primary_weap_clip ~= 0 then
3542
					writefloat(primary_weap, 0x240, 1)
3543
					primary_weap_age = 1
3544
				end
3545
			end
3546
3547
			if secondary_weap_age == 0 then
3548
				if secondary_weap_ammo ~= 0 or secondary_weap_clip ~= 0 then
3549
					writefloat(secondary_weap, 0x240, 1)
3550
					secondary_weap_age = 1
3551
				end
3552
			end
3553
3554
			if obj_weap_type == 1 then
3555
				primary_weap_heat = readfloat(secondary_weap, 0x23C)
3556
				primary_weap_age = readfloat(secondary_weap, 0x240)
3557
				primary_weap_ammo = readword(secondary_weap, 0x2B6)
3558
				primary_weap_clip = readword(secondary_weap, 0x2B8)
3559
				secondary_weap_heat = readfloat(primary_weap, 0x23C)
3560
				secondary_weap_age = readfloat(primary_weap, 0x240)
3561
				secondary_weap_ammo = readword(primary_weap, 0x2B6)
3562
				secondary_weap_clip = readword(primary_weap, 0x2B8)
3563
			end
3564
3565
			primary_weap_heat = round(primary_weap_heat * 100)
3566
			primary_weap_age = round((1 - primary_weap_age) * 100)
3567
			secondary_weap_heat = round(secondary_weap_heat * 100)
3568
			secondary_weap_age = round((1 - secondary_weap_age) * 100)
3569
3570
			local primary_weap_info = "Primary: Empty"
3571
			local secondary_weap_info = "Secondary: Empty"
3572
3573
			if obj_health ~= 0 then
3574
				if obj_crouch == 1 or obj_crouch == 5 or obj_crouch == 6 or obj_crouch == 13 or obj_crouch == 17 then
3575
					if primary_weap_age == 100 and primary_weap_ammo == 0 and primary_weap_clip == 0 then
3576
						primary_weap_info = "Primary: Infinite"
3577
					else
3578
						primary_weap_info = "Primary Ammo: " .. primary_weap_clip .. " / " .. primary_weap_ammo
3579
					end
3580
				else
3581
3582
					if primary_weap ~= 0 then
3583
						if primary_weap_age == 0 then
3584
							if primary_weap_ammo ~= 0 or primary_weap_clip ~= 0 then
3585
								primary_weap_info = "Primary Ammo: " .. primary_weap_clip .. " / " .. primary_weap_ammo
3586
							end
3587
						else
3588
							primary_weap_info = "Primary Battery: " .. primary_weap_heat .. " / " .. primary_weap_age
3589
						end
3590
					end
3591
3592
					if secondary_weap ~= 0 then
3593
						if secondary_weap_age == 0 then
3594
							if secondary_weap_ammo ~= 0 or secondary_weap_clip ~= 0 then
3595
								secondary_weap_info = "Secondary Ammo: " .. secondary_weap_clip .. " / " .. secondary_weap_ammo
3596
							end
3597
						else
3598
							secondary_weap_info = "Secondary Battery: " .. secondary_weap_heat .. " / " .. secondary_weap_age
3599
						end
3600
					end
3601
3602
				end
3603
			end
3604
3605
			local nade_info = "Frag Grenades: " .. obj_primary_nades .. " | " .. "Plasma Grenades: " .. obj_secondary_nades
3606
3607
			if obj_nade_type == 1 then
3608
				nade_info = "Plasma Grenades: " .. obj_secondary_nades .. " | " .. "Frag Grenades: " .. obj_primary_nades
3609
			end
3610
3611
			if obj_crouch == 0 then
3612
				obj_crouch = "Warthog: Driver"
3613
			elseif obj_crouch == 1 then
3614
				obj_crouch = "Warthog: Gunner"
3615
			elseif obj_crouch == 2 then
3616
				obj_crouch = "Warthog: Passenger"
3617
			elseif obj_crouch == 3 then
3618
				obj_crouch = "Stance: Crouching"
3619
			elseif obj_crouch == 4 then
3620
				obj_crouch = "Stance: Standing"
3621
			elseif obj_crouch == 5 then
3622
				obj_crouch = "Ghost: Driver"
3623
			elseif obj_crouch == 6 then
3624
				obj_crouch = "Banshee: Pilot"
3625
			elseif obj_crouch == 13 then
3626
				obj_crouch = "Scorpion: Driver"
3627
			elseif obj_crouch == 17 then
3628
				obj_crouch = "Shade: Gunner"
3629
			elseif obj_crouch == 20 or obj_crouch == 21 or obj_crouch == 22 or obj_crouch == 23 then
3630
				obj_crouch = "Scorpion: Passenger"
3631
			end
3632
3633
			if obj_crouch == "Stance: Crouching" or obj_crouch == "Stance: Standing" then
3634
				if obj_airborne == 1 then
3635
					obj_crouch = "Stance: Airborne"
3636
				end
3637
			end
3638
3639
			if obj_health == 0 and obj_shields == 0 then
3640
				obj_crouch = "Stance: Dead"
3641
			end
3642
3643
			obj_max_health = round(obj_health * obj_max_health)
3644
			obj_max_shields = round(obj_shields * obj_max_shields)
3645
			obj_health = round(obj_health * 100)
3646
			obj_shields = round(obj_shields * 100)
3647
3648
			local health_info = "Health: " .. obj_health .. " (" .. obj_max_health .. ") | " .. "Shields: " .. obj_shields .. " (" .. obj_max_shields .. ")"
3649
3650
			if obj_health == 0 and obj_shields == 0 and player_respawn_time ~= 0 then
3651
				if player_respawn_time == 1 then
3652
					health_info = "Respawn: " .. player_respawn_time .. " sec"
3653
				else
3654
					health_info = "Respawn: " .. player_respawn_time .. " secs"
3655
				end
3656
			end
3657
3658
			if suspend_table[hash] == 2 then
3659
				health_info = "Respawn: Never"
3660
			end
3661
3662
			hprintf("----------")
3663
			hprintf("Name: " .. player_name .. " (" .. player_number .. ") | " .. "Team: " .. player_team .. " (" .. teamsize .. ") | " .. "Speed: " .. player_speed .. " | " .. "Location: " .. player_x_coord .. ", " .. player_y_coord .. ", " .. player_z_coord)
3664
			hprintf("Hash: " .. hash .. " | " .. "Ping: " .. player_ping .. " | " .. obj_crouch)
3665
			hprintf("Kills: " .. player_kills .. " (" .. player_killstreak .. ") | " .. "Assists: " .. player_assists .. " | " .. "Betrays: " .. player_betrays .. " | " .. "Suicides: " .. player_suicides .. " | " .. "Deaths: " .. player_deaths)
3666
			hprintf(health_info .. " | " .. invis_info .. " | " .. "Light: " .. obj_flashlight_mode .. " (" .. obj_flashlight_level .. ")")
3667
			hprintf(primary_weap_info .. " | " .. secondary_weap_info .. " | " .. "Objective: " .. player_objective_mode)
3668
			hprintf(nade_info)
3669
			hprintf("----------")
3670
3671
		end
3672
3673
	end
3674
3675
	return response
3676
3677
end
3678
3679
function getstatus(m_player)
3680
	local status = ""
3681
	local player_struct = getplayer(m_player)
3682
	local m_playerObjId = readdword(player_struct, 0x34)
3683
	local m_object = getobject(m_playerObjId)
3684
	local obj_crouch = readbyte(m_object, 0x2A0)
3685
	if obj_crouch == 0 then
3686
		status = "wpassenger"
3687
	elseif obj_crouch == 1 then
3688
		status = "wpassenger"
3689
	elseif obj_crouch == 2 then
3690
		status = "wpassenger"
3691
	elseif obj_crouch == 3 then
3692
		status = "crouching"
3693
	elseif obj_crouch == 4 then
3694
		status = "standing"
3695
	elseif obj_crouch == 5 then
3696
		status = "gdriver"
3697
	elseif obj_crouch == 6 then
3698
		status = "bpilot"
3699
	elseif obj_crouch == 13 then
3700
		status = "sdriver"
3701
	elseif obj_crouch == 17 then
3702
		status = "turret"
3703
	elseif obj_crouch == 20 or obj_crouch == 21 or obj_crouch == 22 or obj_crouch == 23 then
3704
		status = "spassenger"
3705
	end
3706
	return status
3707
end
3708
3709
function OnTeamDecision(cur_team)
3710
	return cur_team
3711
end
3712
3713
function OnPlayerJoin(player, team)
3714
3715
	cur_players = cur_players + 1
3716
	local sv_player = resolveplayer(player)
3717
	local name = getname(player)
3718
	local hash = gethash(player)
3719
	local words = {}
3720
3721
	for k,v in pairs(boslog_table) do
3722
3723
		for word in v:gmatch("%w+") do
3724
			table.insert(words, word)
3725
		end
3726
3727
		local size = table.getn(words)
3728
		local entry_name = ""
3729
		local entry_hash = words[size]
3730
3731
		for i=1,(size - 1) do
3732
			entry_name = entry_name .. words[i] .. " "
3733
		end
3734
3735
		if entry_hash == hash then
3736
3737
			for i=0,15 do
3738
3739
				local player_hash = gethash(i)
3740
3741
				if admin_table[player_hash] ~= nil then
3742
					privatesay(i, name .. " banned from BoS.")
3743
					privatesay(i, "Entry: " .. entry_name .. "- " .. entry_hash)
3744
				end
3745
3746
			end
3747
3748
			hprintf(name .. " banned from BoS.")
3749
			hprintf("Entry: " .. entry_name .. "- " .. entry_hash)
3750
			svcmd("sv_ban " .. sv_player)
3751
			table.remove(boslog_table, k)
3752
			break
3753
3754
		end
3755
3756
	end
3757
3758
	for k,v in pairs(admin_table) do
3759
		if k == gethash(player) then
3760
			say("Server Admin: " .. getname(player))
3761
			break
3762
		end
3763
	end
3764
3765
end
3766
3767
function OnPlayerLeave(player, team)
3768
3769
	cur_players = cur_players - 1
3770
	local sv_player = resolveplayer(player)
3771
	local name = getname(player)
3772
	local hash = gethash(player)
3773
	bos_table[sv_player] = name .. "," .. hash
3774
	cleanupdrones(player)
3775
3776
end
3777
3778
function OnPlayerKill(killer, victim, mode)
3779
	if respset == 1 then
3780
		local m_player = getplayer(victim)
3781
		local player_respawn_time = readdword(m_player, 0x2C)
3782
		writedword(m_player, 0x2c, resptime * 33)
3783
	end
3784
	cleanupdrones(victim)
3785
end
3786
3787
function OnKillMultiplier(player, multiplier)
3788
end
3789
3790
function OnPlayerSpawn(player, m_objectId)
3791
3792
	local hash = gethash(player)
3793
3794
	if deathless == 1 then
3795
		local m_player = getplayer(player)
3796
		local m_playerObjId = readdword(m_player, 0x34)
3797
		local m_object = getobject(m_playerObjId)
3798
		local obj_health = readfloat(m_object, 0xE0)
3799
		local obj_shields = readfloat(m_object, 0xE4)
3800
		writefloat(m_object, 0xE0, 9999999999)
3801
		writefloat(m_object, 0xE4, 9999999999)
3802
	end
3803
3804
	if suspend_table[hash] ~= nil then
3805
		suspend_table[hash] = nil
3806
	end
3807
3808
end
3809
3810
function OnPlayerSpawnEnd(player, m_objectId)
3811
end
3812
3813
function OnTeamChange(relevant, player, team, dest_team)
3814
	return 1
3815
end
3816
3817
function OnObjectInteraction(player, m_ObjectId, tagType, tagName)
3818
	local Pass = 1
3819
	if noweapons == 1 then
3820
		Pass = 0
3821
	end
3822
	return Pass
3823
end
3824
3825
function OnObjectCreation(m_objectId, player_owner, tag)
3826
	if getplayer(player_owner) ~= nil then
3827
		for i = 25,43 do
3828
			if mode[gethash(player_owner)] == "portalgun" then
3829
				if tag == objects[i][3] then
3830
					local m_object = getobject(m_objectId)
3831
					registertimer(20, "portalgunTimer", player_owner, m_object)
3832
				end
3833
			elseif mode[gethash(player_owner)] == "spawngun" then
3834
				if tag == objects[i][3] then
3835
					local m_object = getobject(m_objectId)
3836
					registertimer(0, "spawngunTimer", player_owner, m_object)
3837
				end
3838
			end
3839
		end
3840
	end
3841
end
3842
3843
function OnWeaponReload(player, weapon)
3844
	if infammo == 1 then
3845
		writeword(getobject(weapon), 0x2B6, 9999)
3846
		writeword(getobject(weapon), 0x2B8, 9999)
3847
		updateammo(weapon)
3848
		return 0
3849
	else
3850
		return 1
3851
	end
3852
end
3853
3854
function OnVehicleEntry(relevant, player, vehicleId, vehicle_tag, seat)
3855
	return 1
3856
end
3857
function OnVehicleEject(player, forceEject)
3858
	local m_object = getobject(getplayerobjectid(player))
3859
	if m_object ~= nil then
3860
		local vehicleId = readdword(m_object, 0x11c)
3861
		cleanupdrone(player, vehicleId)
3862
	end
3863
	return 1
3864
end
3865
3866
function OnDamageLookup(receiving_obj, causing_obj, tagdata, tagname)
3867
	if deathless == 1 then
3868
		writebyte(tagdata, 0x1C4, 0)
3869
	end
3870
	if causing_obj ~= -1 and causing_obj ~= nil then
3871
		for i = 25,43 do
3872
			local player = objecttoplayer(causing_obj)
3873
			if mode[gethash(player)] == "destroy" then
3874
				if tagname == objects[i][3] then
3875
					destroyobject(receiving_obj)
3876
				end
3877
			elseif mode[gethash(player)] == "entergun" then
3878
				if tagname == objects[i][3] and string.sub(getobjecttag(receiving_obj), 1, 8) == "vehicles" then
3879
					entervehicle(player, receiving_obj, 0)
3880
				end
3881
			end
3882
		end
3883
	end
3884
end
3885
3886
function getobjecttag(object)
3887
	local m_object = getobject(object)
3888
	local object_map_id = readdword(m_object, 0x0)
3889
3890
	local map_pointer = 0x460678
3891
	local map_base = readdword(map_pointer, 0x0)
3892
	local map_tag_count = todec(endian(map_base, 0xC, 0x3))
3893
	local tag_table_base = map_base + 0x28
3894
	local tag_table_size = 0x20
3895
3896
	for i=0,(map_tag_count - 1) do
3897
		local tag_id = todec(endian(tag_table_base, 0xC + (tag_table_size * i), 0x3))
3898
3899
		if tag_id == object_map_id then
3900
			tag_name_address = endian(tag_table_base, 0x10 + (tag_table_size * i), 0x3)
3901
			tag_name = readtagname("0x" .. tag_name_address)
3902
3903
			return tag_name
3904
		end
3905
	end
3906
end
3907
3908
function endian(address, offset, length)
3909
3910
        local data_table = {}
3911
        local data = ""
3912
3913
        for i=0,length do
3914
3915
                local hex = string.format("%X", readbyte(address, offset + i))
3916
3917
                if tonumber(hex, 16) < 16 then
3918
                        hex = 0 .. hex
3919
                end
3920
3921
                table.insert(data_table, hex)
3922
3923
        end
3924
3925
        for k,v in pairs(data_table) do
3926
                data = v .. data
3927
        end
3928
3929
        return data
3930
3931
end
3932
3933
function todec(number)
3934
        return tonumber(number, 16)
3935
end
3936
3937
function readtagname(address)
3938
3939
        local char_table = {}
3940
        local i = 0
3941
        local string = ""
3942
3943
        while readbyte(address, i) ~= 0 do
3944
                table.insert(char_table, string.char(readbyte(address, i)))
3945
                i = i + 1
3946
        end
3947
3948
        for k,v in pairs(char_table) do
3949
                string = string .. v
3950
        end
3951
3952
        return string
3953
3954
end
3955
3956
function getweapon(player, weapon)
3957
3958
	local tag_name_address = nil
3959
	local tag_name = ""
3960
	local m_player = getplayer(player)
3961
	local m_object = getobject(readdword(m_player, 0x34))
3962
	local weap_id = getobject(readdword(m_object, 0x2F8 + ((weapon - 1) * 4)))
3963
	local weap_meta_id = readdword(weap_id, 0x0)
3964
	local map_pointer = 0x460678
3965
	local map_base = readdword(map_pointer, 0x0)
3966
	local map_tag_count = todec(endian(map_base, 0xC, 0x3))
3967
	local tags_base = map_base + 0x28
3968
	local tags_size = 0x20
3969
	local tag_address = 0
3970
3971
	for i=0,(map_tag_count - 1) do
3972
3973
		local tag_id = todec(endian(tags_base, 0xC + (tags_size * i), 0x3))
3974
3975
		if tag_id == weap_meta_id then
3976
3977
			tag_name_address = endian(tags_base, 0x10 + (tags_size * i), 0x3)
3978
			tag_name = readtagname("0x" .. tag_name_address)
3979
		end
3980
	end
3981
3982
	return tag_name
3983
end
3984
3985
function OnWeaponAssignment(player, object, count, tag)
3986
end
3987
3988
function cleanupdrones(player)
3989
	-- pretty hacky way to remove the vehicles, but only way i could get working
3990
	for k,v in pairs(vehicle_drone_table[player]) do
3991
		local seats = getseats(v)
3992
		if seats ~= nil then
3993
			for i = 0,seats - 1 do
3994
				entervehicle(player, v, i)
3995
				exitvehicle(player)
3996
			end
3997
			destroyobject(v)
3998
		end
3999
		vehicle_drone_table[player][k] = nil
4000
	end
4001
end
4002
4003
function getseats(m_objectId)
4004
	local seats = nil
4005
	local m_object = getobject(m_objectId)
4006
	local tagname = getobjecttag(m_object)
4007
	if tagname == "vehicles\\rwarthog\\rwarthog" or tagname == "vehicles\\warthog\\mp_warthog" then
4008
		seats = 3
4009
	elseif tagname == "vehicles\\scorpion\\scorpion_mp" then
4010
		seats = 5
4011
	else
4012
		seats = 1
4013
	end
4014
	return seats
4015
end
4016
4017
function cleanupdrone(player, objid)
4018
	for k,v in pairs(vehicle_drone_table[player]) do
4019
		if v == objid then
4020
			entervehicle(player, v, 0)
4021
			exitvehicle(player)
4022
			local seats = getseats(v)
4023
			if seats ~= nil then
4024
				for i = 0,seats - 1 do
4025
					entervehicle(player, v, i)
4026
					exitvehicle(player)
4027
				end
4028
			end
4029
			--destroyobject(v) dont destroy, will destroy itself soon
4030
			vehicle_drone_table[player][k] = nil
4031
			break
4032
		end
4033
	end
4034
end
4035
4036
function MainTimer(id, count)
4037
4038
	for i=0,15 do
4039
4040
		local hash = gethash(i)
4041
4042
		if hash ~= nil then
4043
			if ghost_table[hash] == 1 then
4044
				local m_player = getplayer(i)
4045
				writefloat(m_player, 0x100, readfloat(m_player, 0x100) - 1000)
4046
			end
4047
		end
4048
4049
	end
4050
4051
	return 1
4052
4053
end
4054
4055
function SpamTimer(id, count)
4056
4057
	for i=0,15 do
4058
4059
		local hash = gethash(i)
4060
4061
		if hash ~= nil then
4062
4063
			local name = getname(i)
4064
4065
			if spam_table[hash] == nil then
4066
				spam_table[hash] = 0
4067
			end
4068
4069
			if spam_table[hash] < spam_max then
4070
				if spam_table[hash] > 0 then
4071
					spam_table[hash] = spam_table[hash] - 0.25
4072
				end
4073
			else
4074
				say(name .. " has been muted for " .. spam_timeout .. " seconds for spamming!")
4075
				spam_table[hash] = -1
4076
			end
4077
4078
			if spam_table[hash] == -1 then
4079
4080
				if spamtimeout_table[hash] == nil then
4081
					spamtimeout_table[hash] = spam_timeout
4082
				else
4083
					spamtimeout_table[hash] = spamtimeout_table[hash] - 1
4084
				end
4085
4086
				if spamtimeout_table[hash] == 0 then
4087
					say(name .. " has been unmuted!")
4088
					spamtimeout_table[hash] = nil
4089
					spam_table[hash] = 0
4090
				end
4091
4092
			end
4093
4094
		end
4095
4096
	end
4097
4098
	return 1
4099
4100
end
4101
4102
function rtvTimer(id, count)
4103
4104
	if count == 1 then
4105
		rtv_initiated = rtv_timeout
4106
		say("The current rtv has expired!")
4107
		return 0
4108
	else
4109
		return 1
4110
	end
4111
4112
end
4113
4114
function votekickTimer(id, count, userdata)
4115
4116
	if count == 1 then
4117
4118
		local name = getname(userdata)
4119
		votekick_allowed = true
4120
		say("The votekick on " .. name .. " has expired!")
4121
4122
		for k,v in pairs(votekick_table) do
4123
			votekick_table[k] = nil
4124
		end
4125
4126
		return 0
4127
	else
4128
		return 1
4129
	end
4130
4131
end
4132
4133
function lo3Timer(id, count)
4134
	if count >= 3 then
4135
		say("Start your match!")
4136
		svcmd("sv_map_reset")
4137
		return 0
4138
	else
4139
		svcmd("sv_map_reset")
4140
		return 1
4141
	end
4142
end
4143
function round(num)
4144
4145
    under = math.floor(num)
4146
    upper = math.floor(num) + 1
4147
    underV = -(under - num)
4148
    upperV = upper - num
4149
4150
    if (upperV > underV) then
4151
        return under
4152
    else
4153
        return upper
4154
    end
4155
4156
end
4157
function readstring(address, offset, length)
4158
4159
	local char_table = {}
4160
	local string = ""
4161
4162
	for i=0,length do
4163
		if readbyte(address, (offset + i)) ~= 0 then
4164
			table.insert(char_table, string.char(readbyte(address, (offset + i))))
4165
		end
4166
	end
4167
4168
	for k,v in pairs(char_table) do
4169
		string = string .. v
4170
	end
4171
4172
	return string
4173
4174
end
4175
4176
function nadeTimer(id, count)
4177
	for c = 0,15 do
4178
		if getplayer(c) ~= nil then
4179
			local m_player = getplayer(c)
4180
			local m_ObjId = readdword(m_player, 0x34)
4181
			local m_Object = getobject(m_ObjId)
4182
			if m_player ~= -1 and m_Object ~= -1 then
4183
				writebyte(m_Object, 0x31E, 3) -- set frags to 3
4184
				writebyte(m_Object, 0x31F, 3) -- set plasmas to 3
4185
				if m_player ~= -1 and m_Object ~= -1 then
4186
					for i = 0, 3 do
4187
						local m_weaponId = readdword(m_Object, 0x2F8 + (i*4))
4188
						if m_weaponId ~= -1 then
4189
							local m_weapon = getobject(m_weaponId)
4190
							--writeword(m_weapon, 0x2B8, 2) --loaded ammo
4191
							writeword(m_weapon, 0x2B6, 9999) -- unloaded clip to 9999
4192
						end
4193
					end
4194
				end
4195
			end
4196
		end
4197
	end
4198
	if infammo == 1 then
4199
		return 1
4200
	elseif infammo == 0 then
4201
		return 0
4202
	end
4203
end
4204
4205
function TimelimitTimer(id, count)
4206
4207
    time_passed = time_passed + 1 -- Increase time_passed by one every time this function is called (every second)
4208
4209
    return 1
4210
4211
end
4212
4213
function settimelimit(value)
4214
4215
	local gametype_base = 0x671340
4216
    writedword(gametype_base, 0x78, (30*60*value) + ((time_passed + 1) * 30)) -- set game timer to the specified value (in minutes) + the amount of time passed (+ one second for testing purposes)
4217
4218
end
4219
4220
function Stickman(id, count)
4221
	if count == 1 then
4222
		hprintf("    _._    ")
4223
		hprintf("   / O \   ")
4224
		hprintf("   \| |/   ")
4225
		hprintf("O--+=-=+--O")
4226
	elseif count == 2 then
4227
		svcmd("cls")
4228
		hprintf("   ,-O-,   ")
4229
		hprintf("O--=---=--O")
4230
		hprintf("    2-2    ")
4231
		hprintf("    - -    ")
4232
	elseif count == 3 then
4233
		svcmd("cls")
4234
		hprintf("   ,_O_,   ")
4235
		hprintf("O--(---)--O")
4236
		hprintf("    >'>    ")
4237
		hprintf("    - -    ")
4238
	elseif count == 4 then
4239
		svcmd("cls")
4240
		hprintf("   ._O_.   ")
4241
		hprintf("O--<-+->--O")
4242
		hprintf("     X     ")
4243
		hprintf("    / \    ")
4244
		hprintf("   -   -   ")
4245
	elseif count == 5 then
4246
		svcmd("cls")
4247
		hprintf("O--=-O-=--O")
4248
		hprintf("    '-'    ")
4249
		hprintf("     v     ")
4250
		hprintf("    / )    ")
4251
		hprintf("   ~  z    ")
4252
	elseif count == 6 then
4253
		svcmd("cls")
4254
		hprintf("O--,---,--O")
4255
		hprintf("   \ O /   ")
4256
		hprintf("    - -    ")
4257
		hprintf("     -     ")
4258
		hprintf("    / \    ")
4259
		hprintf("   =   =   ")
4260
	elseif count == 7 then
4261
		svcmd("cls")
4262
		hprintf("O--=-O-=--O")
4263
		hprintf("    '-'    ")
4264
		hprintf("     v     ")
4265
		hprintf("    / )    ")
4266
		hprintf("   ~  z    ")
4267
	elseif count == 8 then
4268
		svcmd("cls")
4269
		hprintf("   ._O_.   ")
4270
		hprintf("O--<-+->--O")
4271
		hprintf("     X     ")
4272
		hprintf("    / \    ")
4273
		hprintf("   -   -   ")
4274
	elseif count == 9 then
4275
		svcmd("cls")
4276
		hprintf("   ,_O_,   ")
4277
		hprintf("O--(---)--O")
4278
		hprintf("    >'>    ")
4279
		hprintf("    - -    ")
4280
	elseif count == 10 then
4281
		svcmd("cls")
4282
		hprintf("   ,-O-,   ")
4283
		hprintf("O--=---=--O")
4284
		hprintf("    2-2    ")
4285
		hprintf("    - -    ")
4286
	elseif count == 11 then
4287
		svcmd("cls")
4288
		hprintf("    _._    ")
4289
		hprintf("   / O \   ")
4290
		hprintf("   \| |/   ")
4291
		hprintf("O--+=-=+--O")
4292
	elseif count == 12 then
4293
		svcmd("cls")
4294
		return 0
4295
	end
4296
	return 1
4297
end
4298
function resetweapons(player)
4299
	local m_player = getplayer(player)
4300
	local m_object = getobject(readdword(m_player, 0x34))
4301
	local x = readfloat(m_object, 0x5C)
4302
	local y = readfloat(m_object, 0x60)
4303
	local z = readfloat(m_object, 0x64)
4304
	local m_playerObjId = readdword(m_player, 0x34)
4305
	objId = createobject("weap", "weapons\\pistol\\pistol", 0, 60, false, x+1.0, y, z + 2.0)
4306
	assignweapon(player, objId)
4307
	objId = createobject("weap", "weapons\\assault rifle\\assault rifle", 0, 60, false, x+1.0, y, z + 2.0)
4308
	assignweapon(player, objId)
4309
end
4310
function portalgunTimer(id, count, player_owner, m_object)
4311
	if count == 500 then
4312
		return 0
4313
	end
4314
	local m_player = getplayer(player_owner)
4315
	if m_player ~= nil and m_object ~= nil then
4316
		local obj_x_velocity = readfloat(m_object, 0x68)
4317
		local m_playerObjId = readdword(m_player, 0x34)
4318
		if obj_x_velocity == 0 then
4319
			local x = readfloat(m_object, 0x5C)
4320
			local y = readfloat(m_object, 0x60)
4321
			local z = readfloat(m_object, 0x64)
4322
			movobjcoords(m_playerObjId, x, y, z)
4323
			return 0
4324
		else
4325
			return 1
4326
		end
4327
	end
4328
	return 1
4329
end
4330
function spawngunTimer(id, count, player_owner, m_object)
4331
	local m_player = getplayer(player_owner)
4332
	if m_player ~= nil and m_object ~= nil then
4333
		local m_playerObjId = readdword(player_owner, 0x34)
4334
		local x = readfloat(m_object, 0x5C)
4335
		local y = readfloat(m_object, 0x60)
4336
		local z = readfloat(m_object, 0x64)
4337
		createobject(objspawntype[gethash(player_owner)], objspawntag[gethash(player_owner)], 0, 60, false, x, y, z)
4338
	end
4339
	return 0
4340
end
4341
4342
function validplayer2(message)
4343
	local valid = false
4344
	for i = 1,#players2 do
4345
		if players2[i] ~= nil then
4346
			players2[i] = nil
4347
		end
4348
	end
4349
	if string.len(message) == "1" and message == "*" then
4350
		for i = 0,15 do
4351
			if getplayer(i) ~= nil then
4352
				table.insert(players2, i)
4353
				valid = true
4354
			end
4355
		end
4356
	elseif string.sub(message, 1, 1) == "*" then
4357
		for c = 0,15 do
4358
			if getplayer(c) ~= nil then
4359
				local name = getname(c)
4360
				local lowerfix = string.gsub(message, "*", "")
4361
				if string.find(string.lower(name), string.lower(lowerfix)) ~= nil then
4362
					table.insert(players2, c)
4363
					valid = true
4364
				end
4365
			end
4366
		end
4367
	elseif string.sub(message, 1, 3) == "red" then
4368
		for i = 0,15 do
4369
			if getplayer(i) ~= nil then
4370
				local player_team = readdword(getplayer(i), 0x20)
4371
				if player_team == 0 then
4372
					table.insert(players2, i)
4373
					valid = true
4374
				end
4375
			end
4376
		end
4377
	elseif string.sub(message, 1, 4) == "blue" then
4378
		for i = 0,15 do
4379
			if getplayer(i) ~= nil then
4380
				local player_team = readdword(getplayer(i), 0x20)
4381
				if player_team == 1 then
4382
					table.insert(players2, i)
4383
					valid = true
4384
				end
4385
			end
4386
		end
4387
	elseif message == "1" or message == "2" or message == "3" or message == "4" or message == "5" or message == "6" or message == "7" or message == "8" or message == "9" or message == "10" or message == "11" or message == "12" or message == "13" or message == "14" or message == "15" or message == "16" then
4388
		if getplayer(rresolveplayer(message)) ~= nil then
4389
			table.insert(players2, rresolveplayer(message))
4390
			valid = true
4391
		end
4392
	end
4393
	return valid
4394
end
4395
4396
function validplayer(message)
4397
	local valid = false
4398
	for i = 1,#players do
4399
		if players[i] ~= nil then
4400
			players[i] = nil
4401
		end
4402
	end
4403
	if string.len(message) == "1" and message == "*" then
4404
		for i = 0,15 do
4405
			if getplayer(i) ~= nil then
4406
				table.insert(players, i)
4407
				valid = true
4408
			end
4409
		end
4410
	elseif string.sub(message, 1, 1) == "*" then
4411
		for i = 0,15 do
4412
			if getplayer(i) ~= nil then
4413
				local name = getname(i)
4414
				local lowerfix = string.gsub(message, "*", "")
4415
				if string.find(string.lower(name), string.lower(lowerfix)) ~= nil then
4416
					table.insert(players, i)
4417
					valid = true
4418
				end
4419
			end
4420
		end
4421
	elseif string.sub(message, 1, 3) == "red" then
4422
		for i = 0,15 do
4423
			if getplayer(i) ~= nil then
4424
				local player_team = readdword(getplayer(i), 0x20)
4425
				if player_team == 0 then
4426
					table.insert(players, i)
4427
					valid = true
4428
				end
4429
			end
4430
		end
4431
	elseif string.sub(message, 1, 4) == "blue" then
4432
		for i = 0,15 do
4433
			if getplayer(i) ~= nil then
4434
				local player_team = readdword(getplayer(i), 0x20)
4435
				if player_team == 1 then
4436
					table.insert(players, i)
4437
					valid = true
4438
				end
4439
			end
4440
		end
4441
	elseif tonumber(message) ~= nil then
4442
		if message == "1" or message == "2" or message == "3" or message == "4" or message == "5" or message == "6" or message == "7" or message == "8" or message == "9" or message == "10" or message == "11" or message == "12" or message == "13" or message == "14" or message == "15" or message == "16" then
4443
			if getplayer(rresolveplayer(message)) ~= nil then
4444
				table.insert(players, rresolveplayer(message))
4445
				valid = true
4446
			end
4447
		end
4448
	end
4449
	return valid
4450
end
4451
4452
function uninvisTimer(id, count, player, m_vehicleId, x, y, z)
4453
	m_playerObjId = getplayerobjectid(player)
4454
	if getobject(m_playerObjId) ~= nil then
4455
		if getobject(m_vehicleId) ~= nil then
4456
			movobjcoords(m_playerObjId, x, y, z+1)
4457
			entervehicle(player, m_vehicleId, 0)
4458
		else
4459
			movobjcoords(m_playerObjId, x, y, z)
4460
		end
4461
	end
4462
	return 0
4463
end
4464
4465
function delayMsg(id, count, msg, message, player)
4466
	message = message:gsub('"', "")
4467
	if string.sub(message, 1, 1) == "\\" then
4468
		privatesay(player, msg)
4469
	elseif string.sub(message, 1, 1) == "/" then
4470
		say(msg)
4471
	else
4472
		hprintf(msg)
4473
		say(msg)
4474
	end
4475
	return 0
4476
end