View difference between Paste ID: Fua9CS3b and AcagyCwd
SHOW: | | - or go back to the newest paste.
1-
//Admin System by Nexius v1.9
1+
//Admin System by Nexius v2.0
2
3
#if defined _admsys_included
4
	#endinput
5
#endif
6
#define _admsys_included
7
8
#include <a_samp>
9
10-
#define	ADMSYS_VERSION				"1.9"
10+
#define	ADMSYS_VERSION				"2.0"
11
12
//#define SEND_ACTION_MESSAGES_TO_ALL
13
14
#define ADMSYS_DEFAULT_COLOR			-1
15
16
#define ADMSYS_MAX_TAB_INPUT			8
17
#define ADMSYS_MAX_SUSPECTS_IN_TABLE	8
18
#define ADMSYS_MAX_GIVE_PLAYERS_IN_CMD	3
19
#define ADMSYS_MAX_WARNS				2
20
21
#define admsys_isnull(%0) ((!(%0[0])) || (((%0[0]) == '\1') && (!(%0[1]))))
22
#define admsys_fpublic%0(%1) forward %0(%1); public %0(%1)
23
24
#if !defined CMD
25
	#define CMD:%0(%1) forward cmd_%0(%1); public cmd_%0(%1)
26
#endif
27
28
static const AdmSysCmds[][] =
29
{
30
	"Level 1:\n",
31
	"/achat [text] - Admin chat\n",
32
	"/ahelp - Help with admin commands\n",
33
	"/showstats [id] - Show player's statistics\n",
34
	"/answer [id] [text] - Respond on player's report\n",
35
	"/apanel - Admin panel with all available commands\n",
36
	"/admins - View a list of online administrators\n",
37
	"/eject [id] - Remove player from vehicle\n",
38
	"\n",
39
	"Level 2:\n",
40
	"/spec [id] - Begin spectate player\n",
41
	"/spawnveh [vehicle id] - Teleport vehicle to respawn\n",
42
	"/(un)mute [id] [time] [reason] - Mute/unmute player\n",
43
	"/asay [text] - Message: 'Administrator: [text]'\n",
44
	"/warn [id] [reason] - Give warn to player\n",
45
	"/kick [id] [reason] - Kick player from the server\n",
46
	"/(un)freeze [id] - Freeze/unfreeze player\n",
47
	"/slap [id] [reason] - Slap player\n",
48
	"/goto [id] - Teleport to player\n",
49
	"\n",
50
	"Level 3:\n",
51
	"/suspectlist - List of suspects players\n",
52
	"/gethere [id] - Teleport player to yourself\n",
53
	"/gotoveh [vehicle id] - Teleport to vehicle\n",
54
	"/ban [id] [reason] - Ban player's account\n",
55
	"/gmtest [id] - Check for infinite health\n",
56
	"/spawn [id] - Teleport player to respawn\n",
57
	"/unwarn [id] - Remove warn from player\n",
58
	"/banip [IP] - Block an IP address\n",
59
	"/cc - Clear the chat\n",
60
	"\n",
61
	"Level 4:\n",
62
	"/sethealth [id] [health] - Set health to player\n",
63
	"/setarmour [id] [armour] - Set armour to player\n",
64
	"/setmoney [id] [money] - Set money to player\n",
65
	"/setskin [id] [skin id] - Set skin to player\n",
66
	"/setint [id] [interior] - Set interior to player\n",
67
	"/setvw [id] [vw] - Set virtual world to player\n",
68
	"/giveweapon [id] [weapon] [ammo] - Give weapon to player\n",
69
	"/repairveh [vehicle id] - Repair vehicle\n",
70
	"/unbanip [IP] - Unblock IP address\n",
71
	"\n",
72
	"Level 5:\n",
73
	"/getall - Teleport all to yourself\n",
74
	"/setweather [number] - Set weather\n",
75
	"/settime [hour] - Set time of day\n",
76
	"/destroyveh [vehicle id] - Destroy vehicle\n",
77
	"/veh [vehicle id] [color 1] [color 2] - Create vehicle\n",
78
	"/sban [id] - Silent ban\n",
79
	"/skick [id] - Silent kick"
80
};
81
82
enum
83
{
84
	ADMSYS_DIALOG_TAB_PANEL = 8192,
85
	ADMSYS_DIALOG_ANSWER,
86
	ADMSYS_DIALOG_MUTE_TIME,
87
	ADMSYS_DIALOG_MUTE,
88
	ADMSYS_DIALOG_WARN,
89
	ADMSYS_DIALOG_KICK,
90
	ADMSYS_DIALOG_SLAP,
91
	ADMSYS_DIALOG_BAN,
92
	ADMSYS_DIALOG_SET_HEALTH,
93
	ADMSYS_DIALOG_SET_ARMOUR,
94
	ADMSYS_DIALOG_SET_MONEY,
95
	ADMSYS_DIALOG_CHANGE_SKIN,
96
	ADMSYS_DIALOG_SET_INT,
97
	ADMSYS_DIALOG_SET_VW,
98
	ADMSYS_DIALOG_GIVE_WEAPON,
99
	ADMSYS_DIALOG_GIVE_WEAPON_AMMO,
100
	ADMSYS_DIALOG_AHELP,
101
	ADMSYS_DIALOG_STATS,
102
	ADMSYS_DIALOG_APANEL,
103
	ADMSYS_DIALOG_ACHAT,
104
	ADMSYS_DIALOG_SPAWN_VEH,
105
	ADMSYS_DIALOG_ASAY,
106
	ADMSYS_DIALOG_GOTO_VEH,
107
	ADMSYS_DIALOG_BAN_IP,
108
	ADMSYS_DIALOG_REPAIR_VEH,
109
	ADMSYS_DIALOG_UNBAN_IP,
110
	ADMSYS_DIALOG_SET_WEATHER,
111
	ADMSYS_DIALOG_SET_TIME,
112
	ADMSYS_DIALOG_DESTROY_VEH,
113
	ADMSYS_DIALOG_CREATE_VEH,
114
	ADMSYS_DIALOG_CREATE_VEH_COL_1,
115
	ADMSYS_DIALOG_CREATE_VEH_COL_2,
116
	ADMSYS_DIALOG_ADMINS,
117
	ADMSYS_DIALOG_SUSPECT_LIST,
118
	ADMSYS_DIALOG_GMTEST
119
}
120
121
enum asInfo
122
{
123
	Float:asGmTestHP,
124
	Float:asGmTestAR,
125
	Float:asLastAngle,
126
	Float:asLastPos[3],
127
	Float:asLastFloatData,
128
	asInput[ADMSYS_MAX_TAB_INPUT],
129
	asInput2[ADMSYS_MAX_TAB_INPUT],
130
	asLastWeapon[13],
131
	asLastIntData[2],
132
	asLastAmmo[13],
133
	asLastActionID,
134
	asLastAction,
135
	asLastSpecID,
136
	asGmTestID,
137
	asAdminLvl,
138
	asTabPanel,
139
	asMuteTime,
140
	asWarns,
141
	asSpecID,
142
	asLastVW,
143
	asLastInt,
144
	asUpdTimer,
145
	bool:asLastSpec,
146
	bool:asIsSpawned,
147
	bool:asIsDead,
148
	bool:asGmTest
149
}
150
151
static
152
	AdmSysInfo[MAX_PLAYERS][asInfo],
153
	SuspectList[ADMSYS_MAX_SUSPECTS_IN_TABLE] = {INVALID_PLAYER_ID, ...},
154
	AdmSysCmdsStr[1790];
155
156
forward OnPlayerBan(playerid, gaveid, bool:sban);
157
forward OnPlayerKick(playerid, gaveid, bool:skick);
158
forward OnPlayerWarn(playerid, gaveid, count);
159
160
#if defined _inc_y_hooks || defined _INC_y_hooks
161
	hook OnGameModeInit()
162
#else
163
	public OnGameModeInit()
164
#endif
165
{
166
	print(" ");
167
	print(" Admin System by Nexius loaded!");
168
	printf(" Version: %s", ADMSYS_VERSION);
169
	print(" ");
170
	for(new i; i < sizeof AdmSysCmds; i++) strcat(AdmSysCmdsStr, AdmSysCmds[i]);
171
	SetTimer("UpdateMuteTime", 1000, 1);
172
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
173
		&& defined admsys_OnGameModeInit
174
		return admsys_OnGameModeInit();
175
	#else
176
		return 1;
177
	#endif
178
}
179
180
#if !defined _inc_y_hooks && !defined _INC_y_hooks
181
	#if defined _ALS_OnGameModeInit
182
		#undef OnGameModeInit
183
	#else
184
		#define _ALS_OnGameModeInit
185
	#endif
186
	#define OnGameModeInit admsys_OnGameModeInit
187
	#if defined admsys_OnGameModeInit
188
		forward admsys_OnGameModeInit();
189
	#endif
190
#endif
191
192
#if defined _inc_y_hooks || defined _INC_y_hooks
193
	hook OnGameModeExit()
194
#else
195
	public OnGameModeExit()
196
#endif
197
{
198
	print(" ");
199
	print(" Admin System by Nexius unloaded!");
200
	print(" ");
201
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
202
		&& defined admsys_OnGameModeExit
203
		return admsys_OnGameModeExit();
204
	#else
205
		return 1;
206
	#endif
207
}
208
209
#if !defined _inc_y_hooks && !defined _INC_y_hooks
210
	#if defined _ALS_OnGameModeExit
211
		#undef OnGameModeExit
212
	#else
213
		#define _ALS_OnGameModeExit
214
	#endif
215
	#define OnGameModeExit admsys_OnGameModeExit
216
	#if defined admsys_OnGameModeExit
217
		forward admsys_OnGameModeExit();
218
	#endif
219
#endif
220
221
#if defined _inc_y_hooks || defined _INC_y_hooks
222
	hook OnPlayerConnect(playerid)
223
#else
224
	public OnPlayerConnect(playerid)
225
#endif
226
{
227
	AdmSysInfo[playerid][asWarns] = 0;
228
	AdmSysInfo[playerid][asMuteTime] = 0;
229
	AdmSysInfo[playerid][asAdminLvl] = 0;
230
	AdmSysInfo[playerid][asUpdTimer] = -1;
231
	AdmSysInfo[playerid][asSpecID] = INVALID_PLAYER_ID;
232
	AdmSysInfo[playerid][asGmTestID] = INVALID_PLAYER_ID;
233
	AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
234
	AdmSysInfo[playerid][asIsSpawned] = false;
235
	AdmSysInfo[playerid][asIsDead] = false;
236
	AdmSysInfo[playerid][asGmTest] = false;
237
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
238
		&& defined admsys_OnPlayerConnect
239
		return admsys_OnPlayerConnect(playerid);
240
	#else
241
		return 1;
242
	#endif
243
}
244
245
#if !defined _inc_y_hooks && !defined _INC_y_hooks
246
	#if defined _ALS_OnPlayerConnect
247
		#undef OnPlayerConnect
248
	#else
249
		#define _ALS_OnPlayerConnect
250
	#endif
251
	#define OnPlayerConnect admsys_OnPlayerConnect
252
	#if defined admsys_OnPlayerConnect
253
		forward admsys_OnPlayerConnect(playerid);
254
	#endif
255
#endif
256
257
#if defined _inc_y_hooks || defined _INC_y_hooks
258
	hook OnPlayerDisconnect(playerid, reason)
259
#else
260
	public OnPlayerDisconnect(playerid, reason)
261
#endif
262
{
263
	AdmSysInfo[playerid][asLastAction] = 0;
264
	KillTimer(AdmSysInfo[playerid][asUpdTimer]);
265
	#if defined foreach
266
		foreach(new i : Player)
267
	#else
268
		for(new i = GetPlayerPoolSize(); i != -1; --i)
269
		{
270
			if(IsPlayerConnected(i))
271
	#endif
272
	{
273
		if(AdmSysInfo[i][asSpecID] == playerid)
274
		{
275
			SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Player disconnected");
276
			StopSpectating(i);
277
		}
278
	}
279
	#if !defined foreach
280
		}
281
	#endif
282
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
283
		&& defined admsys_OnPlayerDisconnect
284
		return admsys_OnPlayerDisconnect(playerid, reason);
285
	#else
286
		return 1;
287
	#endif
288
}
289
290
#if !defined _inc_y_hooks && !defined _INC_y_hooks
291
	#if defined _ALS_OnPlayerDisconnect
292
		#undef OnPlayerDisconnect
293
	#else
294
		#define _ALS_OnPlayerDisconnect
295
	#endif
296
	#define OnPlayerDisconnect admsys_OnPlayerDisconnect
297
	#if defined admsys_OnPlayerDisconnect
298
		forward admsys_OnPlayerDisconnect(playerid, reason);
299
	#endif
300
#endif
301
302
#if defined _inc_y_hooks || defined _INC_y_hooks
303
	hook OnPlayerSpawn(playerid)
304
#else
305
	public OnPlayerSpawn(playerid)
306
#endif
307
{
308
	if(IsPlayerSpectating(playerid))
309
	{
310
		for(new i = 12; i != -1; --i)
311
			GivePlayerWeapon(playerid, AdmSysInfo[playerid][asLastWeapon][i], AdmSysInfo[playerid][asLastAmmo][i]);
312
		SetPlayerPos(playerid, AdmSysInfo[playerid][asLastPos][0],
313
		AdmSysInfo[playerid][asLastPos][1], AdmSysInfo[playerid][asLastPos][2]);
314
		SetPlayerFacingAngle(playerid, AdmSysInfo[playerid][asLastAngle]);
315
		SetPlayerVirtualWorld(playerid, AdmSysInfo[playerid][asLastVW]);
316
		SetPlayerInterior(playerid, AdmSysInfo[playerid][asLastInt]);
317
	}
318
	AdmSysInfo[playerid][asSpecID] = INVALID_PLAYER_ID;
319
	AdmSysInfo[playerid][asIsSpawned] = true;
320
	AdmSysInfo[playerid][asLastSpec] = false;
321
	AdmSysInfo[playerid][asIsDead] = false;
322
	#if defined foreach
323
		foreach(new i : Player)
324
	#else
325
		for(new i = GetPlayerPoolSize(); i != -1; --i)
326
		{
327
			if(IsPlayerConnected(i))
328
	#endif
329
	{
330
		if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i);
331
	}
332
	#if !defined foreach
333
		}
334
	#endif
335
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
336
		&& defined admsys_OnPlayerSpawn
337
		return admsys_OnPlayerSpawn(playerid);
338
	#else
339
		return 1;
340
	#endif
341
}
342
343
#if !defined _inc_y_hooks && !defined _INC_y_hooks
344
	#if defined _ALS_OnPlayerSpawn
345
		#undef OnPlayerSpawn
346
	#else
347
		#define _ALS_OnPlayerSpawn
348
	#endif
349
	#define OnPlayerSpawn admsys_OnPlayerSpawn
350
	#if defined admsys_OnPlayerSpawn
351
		forward admsys_OnPlayerSpawn(playerid);
352
	#endif
353
#endif
354
355
#if defined _inc_y_hooks || defined _INC_y_hooks
356
	hook OnPlayerDeath(playerid, killerid, reason)
357
#else
358
	public OnPlayerDeath(playerid, killerid, reason)
359
#endif
360
{
361
	new Float:pX, Float:pY, Float:pZ, Float:cX, Float:cY, Float:cZ, interior, vw;
362
	GetPlayerCameraPos(playerid, cX, cY, cZ);
363
	GetPlayerPos(playerid, pX, pY, pZ);
364
	interior = GetPlayerInterior(playerid);
365
	vw = GetPlayerVirtualWorld(playerid);
366
	#if defined foreach
367
		foreach(new i : Player)
368
	#else
369
		for(new i = GetPlayerPoolSize(); i != -1; --i)
370
		{
371
			if(IsPlayerConnected(i))
372
	#endif
373
	{
374
		if(AdmSysInfo[i][asSpecID] == playerid)
375
		{
376
			SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Player died");
377
			SetPlayerCameraPos(i, cX, cY, cZ);
378
			SetPlayerCameraLookAt(i, pX, pY, pZ);
379
			SetPlayerInterior(i, interior);
380
			SetPlayerVirtualWorld(i, vw);
381
		}
382
	}
383
	#if !defined foreach
384
		}
385
	#endif
386
	AdmSysInfo[playerid][asIsSpawned] = false;
387
	AdmSysInfo[playerid][asIsDead] = true;
388
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
389
		&& defined admsys_OnPlayerDeath
390
		return admsys_OnPlayerDeath(playerid, killerid, reason);
391
	#else
392
		return 1;
393
	#endif
394
}
395
396
#if !defined _inc_y_hooks && !defined _INC_y_hooks
397
	#if defined _ALS_OnPlayerDeath
398
		#undef OnPlayerDeath
399
	#else
400
		#define _ALS_OnPlayerDeath
401
	#endif
402
	#define OnPlayerDeath admsys_OnPlayerDeath
403
	#if defined admsys_OnPlayerDeath
404
		forward admsys_OnPlayerDeath(playerid, killerid, reason);
405
	#endif
406
#endif
407
408
#if defined _inc_y_hooks || defined _INC_y_hooks
409
	hook OnPlayerText(playerid, text[])
410
#else
411
	public OnPlayerText(playerid, text[])
412
#endif
413
{
414
	static strtmp[58];
415
	if(AdmSysInfo[playerid][asMuteTime])
416
	{
417
		format(strtmp, sizeof strtmp, "You are muted. Remained mute time: %d minutes %d seconds",
418
		floatround(AdmSysInfo[playerid][asMuteTime] / 60, floatround_tozero), AdmSysInfo[playerid][asMuteTime] % 60);
419
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
420
		return 0;
421
	}
422
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
423
		&& defined admsys_OnPlayerText
424
		return admsys_OnPlayerText(playerid, text);
425
	#else
426
		return 1;
427
	#endif
428
}
429
430
#if !defined _inc_y_hooks && !defined _INC_y_hooks
431
	#if defined _ALS_OnPlayerText
432
		#undef OnPlayerText
433
	#else
434
		#define _ALS_OnPlayerText
435
	#endif
436
	#define OnPlayerText admsys_OnPlayerText
437
	#if defined admsys_OnPlayerText
438
		forward admsys_OnPlayerText(playerid, text[]);
439
	#endif
440
#endif
441
442
#if !defined YCMD && !defined _I_ZCMD_INCLUDED
443
	#if defined _inc_y_hooks || defined _INC_y_hooks
444
		hook OnPlayerCommandText(playerid, cmdtext[])
445
	#else
446
		public OnPlayerCommandText(playerid, cmdtext[])
447
	#endif
448
	{
449
		static params[112];
450
		new cmd[32], pos;
451
		params[0] = EOS;
452
		while(cmdtext[pos] > ' ')
453
		{
454
			cmd[pos] = cmdtext[pos];
455
			pos++;
456
		}
457
		while(cmdtext[pos] == ' ')
458
		{
459
			pos++;
460
			if(!cmdtext[pos])
461
			{
462
				params = "\1";
463
				break;
464
			}
465
		}
466
		strcat(params, cmdtext[pos]);
467
		if(!strcmp(cmd, "/report", true)) return admsys_cmd_report(playerid, params);
468
		if(!strcmp(cmd, "/achat", true) || !strcmp(cmd, "/adminchat", true)) return admsys_cmd_achat(playerid, params);
469
		if(!strcmp(cmd, "/ahelp", true) || !strcmp(cmd, "/adminhelp", true)) return admsys_cmd_ahelp(playerid, params);
470
		if(!strcmp(cmd, "/showstats", true)) return admsys_cmd_showstats(playerid, params);
471
		if(!strcmp(cmd, "/answer", true)) return admsys_cmd_answer(playerid, params);
472
		if(!strcmp(cmd, "/apanel", true) || !strcmp(cmd, "/adminpanel", true)) return admsys_cmd_apanel(playerid, params);
473
		if(!strcmp(cmd, "/admins", true)) return admsys_cmd_admins(playerid, params);
474
		if(!strcmp(cmd, "/eject", true)) return admsys_cmd_eject(playerid, params);
475
476
		if(!strcmp(cmd, "/spec", true)) return admsys_cmd_spec(playerid, params);
477
		if(!strcmp(cmd, "/specupdate", true)) return admsys_cmd_specupdate(playerid, params);
478
		if(!strcmp(cmd, "/specoff", true)) return admsys_cmd_specoff(playerid, params);
479
		if(!strcmp(cmd, "/spawnveh", true)) return admsys_cmd_spawnveh(playerid, params);
480
		if(!strcmp(cmd, "/mute", true)) return admsys_cmd_mute(playerid, params);
481
		if(!strcmp(cmd, "/unmute", true)) return admsys_cmd_unmute(playerid, params);
482
		if(!strcmp(cmd, "/asay", true)) return admsys_cmd_asay(playerid, params);
483
		if(!strcmp(cmd, "/warn", true)) return admsys_cmd_warn(playerid, params);
484
		if(!strcmp(cmd, "/kick", true)) return admsys_cmd_kick(playerid, params);
485
		if(!strcmp(cmd, "/freeze", true)) return admsys_cmd_freeze(playerid, params);
486
		if(!strcmp(cmd, "/unfreeze", true)) return admsys_cmd_unfreeze(playerid, params);
487
		if(!strcmp(cmd, "/slap", true)) return admsys_cmd_slap(playerid, params);
488
		if(!strcmp(cmd, "/goto", true)) return admsys_cmd_goto(playerid, params);
489
490
		if(!strcmp(cmd, "/suspectlist", true)) return admsys_cmd_suspectlist(playerid, params);
491
		if(!strcmp(cmd, "/gethere", true) || !strcmp(cmd, "/get", true)) return admsys_cmd_gethere(playerid, params);
492
		if(!strcmp(cmd, "/gotoveh", true)) return admsys_cmd_gotoveh(playerid, params);
493
		if(!strcmp(cmd, "/ban", true)) return admsys_cmd_ban(playerid, params);
494
		if(!strcmp(cmd, "/gmtest", true)) return admsys_cmd_gmtest(playerid, params);
495
		if(!strcmp(cmd, "/spawn", true)) return admsys_cmd_spawn(playerid, params);
496
		if(!strcmp(cmd, "/unwarn", true)) return admsys_cmd_unwarn(playerid, params);
497
		if(!strcmp(cmd, "/banip", true)) return admsys_cmd_banip(playerid, params);
498
		if(!strcmp(cmd, "/cc", true) || !strcmp(cmd, "/clearchat", true)) return admsys_cmd_cc(playerid, params);
499
500
		if(!strcmp(cmd, "/sethealth", true)) return admsys_cmd_sethealth(playerid, params);
501
		if(!strcmp(cmd, "/setarmour", true)) return admsys_cmd_setarmour(playerid, params);
502
		if(!strcmp(cmd, "/setmoney", true)) return admsys_cmd_setmoney(playerid, params);
503
		if(!strcmp(cmd, "/setskin", true)) return admsys_cmd_setskin(playerid, params);
504
		if(!strcmp(cmd, "/setint", true) || !strcmp(cmd, "/setinterior", true)) return admsys_cmd_setint(playerid, params);
505
		if(!strcmp(cmd, "/setvw", true) || !strcmp(cmd, "/setvirtualworld", true)) return admsys_cmd_setvw(playerid, params);
506
		if(!strcmp(cmd, "/giveweapon", true)) return admsys_cmd_giveweapon(playerid, params);
507
		if(!strcmp(cmd, "/repairveh", true)) return admsys_cmd_repairveh(playerid, params);
508
		if(!strcmp(cmd, "/unbanip", true)) return admsys_cmd_unbanip(playerid, params);
509
510
		if(!strcmp(cmd, "/setweather", true)) return admsys_cmd_setweather(playerid, params);
511
		if(!strcmp(cmd, "/getall", true)) return admsys_cmd_getall(playerid, params);
512
		if(!strcmp(cmd, "/settime", true)) return admsys_cmd_settime(playerid, params);
513
		if(!strcmp(cmd, "/destroyveh", true)) return admsys_cmd_destroyveh(playerid, params);
514
		if(!strcmp(cmd, "/veh", true) || !strcmp(cmd, "/vehicle", true)) return admsys_cmd_veh(playerid, params);
515
		if(!strcmp(cmd, "/sban", true)) return admsys_cmd_sban(playerid, params);
516
		if(!strcmp(cmd, "/skick", true)) return admsys_cmd_skick(playerid, params);
517
		#if !defined _inc_y_hooks && !defined _INC_y_hooks\
518
			&& defined admsys_OnPlayerCommandText
519
			return admsys_OnPlayerCommandText(playerid, cmdtext);
520
		#else
521
			return 0;
522
		#endif
523
	}
524
525
	#if !defined _inc_y_hooks && !defined _INC_y_hooks
526
		#if defined _ALS_OnPlayerCommandText
527
			#undef OnPlayerCommandText
528
		#else
529
			#define _ALS_OnPlayerCommandText
530
		#endif
531
		#define OnPlayerCommandText admsys_OnPlayerCommandText
532
		#if defined admsys_OnPlayerCommandText
533
			forward admsys_OnPlayerCommandText(playerid, cmdtext[]);
534
		#endif
535
	#endif
536
#endif
537
538
#if defined _inc_y_hooks || defined _INC_y_hooks
539
	hook OnPlayerStateChange(playerid, newstate, oldstate)
540
#else
541
	public OnPlayerStateChange(playerid, newstate, oldstate)
542
#endif
543
{
544
	if(newstate == 9)
545
	{
546
		#if defined foreach
547
			foreach(new i : Player)
548
		#else
549
			for(new i = GetPlayerPoolSize(); i != -1; --i)
550
			{
551
				if(IsPlayerConnected(i))
552
		#endif
553
		{
554
			if(AdmSysInfo[i][asSpecID] == playerid)
555
			{
556
				SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Player in spectator mode");
557
				StopSpectating(i);
558
			}
559
		}
560
		#if !defined foreach
561
			}
562
		#endif
563
	}
564
	else if(1 < newstate < 4 || 1 < oldstate < 4)
565
	{
566
		#if defined foreach
567
			foreach(new i : Player)
568
		#else
569
			for(new i = GetPlayerPoolSize(); i != -1; --i)
570
			{
571
				if(IsPlayerConnected(i))
572
		#endif
573
		{
574
			if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i);
575
		}
576
		#if !defined foreach
577
			}
578
		#endif
579
	}
580
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
581
		&& defined admsys_OnPlayerStateChange
582
		return admsys_OnPlayerStateChange(playerid, newstate, oldstate);
583
	#else
584
		return 1;
585
	#endif
586
}
587
588
#if !defined _inc_y_hooks && !defined _INC_y_hooks
589
	#if defined _ALS_OnPlayerStateChange
590
		#undef OnPlayerStateChange
591
	#else
592
		#define _ALS_OnPlayerStateChange
593
	#endif
594
	#define OnPlayerStateChange admsys_OnPlayerStateChange
595
	#if defined admsys_OnPlayerStateChange
596
		forward admsys_OnPlayerStateChange(playerid, newstate, oldstate);
597
	#endif
598
#endif
599
600
#if defined _inc_y_hooks || defined _INC_y_hooks
601
	hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
602
#else
603
	public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
604
#endif
605
{
606
	switch(dialogid)
607
	{
608
		case ADMSYS_DIALOG_TAB_PANEL:
609
		{
610
			if(response)
611
			{
612
				static strtmp[3];
613
				format(strtmp, sizeof strtmp, "%d", AdmSysInfo[playerid][asTabPanel]);
614
				switch(listitem)
615
				{
616
					case 0: admsys_cmd_showstats(playerid, strtmp);
617
					case 1:
618
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_ANSWER, 1, "Respond on report", "Enter the answer to the report:", "Ok", "Close");
619
					case 2: admsys_cmd_eject(playerid, strtmp);
620
					case 3: admsys_cmd_spec(playerid, strtmp);
621
					case 4:
622
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, 1, "Mute", "Enter mute time:", "Ok", "Close");
623
					case 5: admsys_cmd_unmute(playerid, strtmp);
624
					case 6:
625
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_WARN, 1, "Give warn", "Enter the reason of the warn:", "Ok", "Close");
626
					case 7:
627
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_KICK, 1, "Kick", "Enter the reason of kick:", "Ok", "Close");
628
					case 8: admsys_cmd_freeze(playerid, strtmp);
629
					case 9: admsys_cmd_unfreeze(playerid, strtmp);
630
					case 10:
631
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SLAP, 1, "Slap", "Enter the reason of slap:", "Ok", "Close");
632
					case 11: admsys_cmd_goto(playerid, strtmp);
633
					case 12: admsys_cmd_gethere(playerid, strtmp);
634
					case 13:
635
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN, 1, "Ban", "Enter the reason of ban:", "Ok", "Close");
636
					case 14: admsys_cmd_gmtest(playerid, strtmp);
637
					case 15: admsys_cmd_spawn(playerid, strtmp);
638
					case 16: admsys_cmd_unwarn(playerid, strtmp);
639
					case 17:
640
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_HEALTH, 1, "Set health", "Enter the amount of health which you want to set:", "Ok", "Close");
641
					case 18:
642
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_ARMOUR, 1, "Set armour", "Enter the amount of armour which you want to set:", "Ok", "Close");
643
					case 19:
644
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_MONEY, 1, "Set money", "Enter the amount of money which you want to set:", "Ok", "Close");
645
					case 20:
646
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_CHANGE_SKIN, 1, "Set skin", "Enter the ID of the skin which you want to set:", "Ok", "Close");
647
					case 21:
648
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_INT, 1, "Set interior", "Enter the ID of the interior which you want to set:", "Ok", "Close");
649
					case 22:
650
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_VW, 1, "Set virtual world", "Enter the ID of the virtual world which you want to set:", "Ok", "Close");
651
					case 23:
652
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, 1, "Give weapon", "Enter the ID of the weapon which you want to give:", "Ok", "Close");
653
					case 24: admsys_cmd_sban(playerid, strtmp);
654
					case 25: admsys_cmd_skick(playerid, strtmp);
655
				}
656
			}
657
			return 1;
658
		}
659
		case ADMSYS_DIALOG_ANSWER:
660
		{
661
			if(response)
662
			{
663
				if(!inputtext[0])
664
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_ANSWER, 1, "Respond on report", "Enter the answer to the report:", "Ok", "Close");
665
				else
666
				{
667
					static strtmp[145];
668
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
669
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
670
					admsys_cmd_answer(playerid, strtmp);
671
				}
672
			}
673
			return 1;
674
		}
675
		case ADMSYS_DIALOG_MUTE_TIME:
676
		{
677
			if(response)
678
			{
679
				if(!inputtext[0])
680
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, 1, "Mute", "Enter mute time:", "Ok", "Close");
681
				else
682
				{
683
					format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext);
684
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE, 1, "Mute", "Enter the reason of mute:", "Ok", "Back");
685
				}
686
			}
687
			return 1;
688
		}
689
		case ADMSYS_DIALOG_MUTE:
690
		{
691
			if(response)
692
			{
693
				if(!inputtext[0])
694
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE, 1, "Mute", "Enter the reason of mute:", "Ok", "Back");
695
				else
696
				{
697
					static strtmp[145];
698
					format(strtmp, sizeof strtmp, "%d %s %s", AdmSysInfo[playerid][asTabPanel], AdmSysInfo[playerid][asInput], inputtext);
699
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
700
					admsys_cmd_mute(playerid, strtmp);
701
				}
702
			}
703
			else ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, 1, "Mute", "Enter the time of mute:", "Ok", "Close");
704
			return 1;
705
		}
706
		case ADMSYS_DIALOG_WARN:
707
		{
708
			if(response)
709
			{
710
				if(!inputtext[0])
711
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_WARN, 1, "Give warn", "Enter the reason of the warn:", "Ok", "Close");
712
				else
713
				{
714
					static strtmp[145];
715
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
716
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
717
					admsys_cmd_warn(playerid, strtmp);
718
				}
719
			}
720
			return 1;
721
		}
722
		case ADMSYS_DIALOG_KICK:
723
		{
724
			if(response)
725
			{
726
				if(!inputtext[0])
727
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_KICK, 1, "Kick", "Enter the reason of kick:", "Ok", "Close");
728
				else
729
				{
730
					static strtmp[145];
731
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
732
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
733
					admsys_cmd_kick(playerid, strtmp);
734
				}
735
			}
736
			return 1;
737
		}
738
		case ADMSYS_DIALOG_SLAP:
739
		{
740
			if(response)
741
			{
742
				if(!inputtext[0])
743
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_SLAP, 1, "Slap", "Enter the reason of slap:", "Ok", "Close");
744
				else
745
				{
746
					static strtmp[145];
747
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
748
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
749
					admsys_cmd_slap(playerid, strtmp);
750
				}
751
			}
752
			return 1;
753
		}
754
		case ADMSYS_DIALOG_BAN:
755
		{
756
			if(response)
757
			{
758
				if(!inputtext[0])
759
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN, 1, "Ban", "Enter the reason of ban:", "Ok", "Close");
760
				else
761
				{
762
					static strtmp[145];
763
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
764
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
765
					admsys_cmd_ban(playerid, strtmp);
766
				}
767
			}
768
			return 1;
769
		}
770
		case ADMSYS_DIALOG_SET_HEALTH:
771
		{
772
			if(response)
773
			{
774
				if(!inputtext[0])
775
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_HEALTH, 1, "Set health", "Enter the amount of health which you want to set:", "Ok", "Close");
776
				else
777
				{
778
					static strtmp[32];
779
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
780
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
781
					admsys_cmd_sethealth(playerid, strtmp);
782
				}
783
			}
784
			return 1;
785
		}
786
		case ADMSYS_DIALOG_SET_ARMOUR:
787
		{
788
			if(response)
789
			{
790
				if(!inputtext[0])
791
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_ARMOUR, 1, "Set armour", "Enter the amount of armour which you want to set:", "Ok", "Close");
792
				else
793
				{
794
					static strtmp[32];
795
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
796
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
797
					admsys_cmd_setarmour(playerid, strtmp);
798
				}
799
			}
800
			return 1;
801
		}
802
		case ADMSYS_DIALOG_SET_MONEY:
803
		{
804
			if(response)
805
			{
806
				if(!inputtext[0])
807
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_MONEY, 1, "Set money", "Enter the amount of money which you want to set:", "Ok", "Close");
808
				else
809
				{
810
					static strtmp[32];
811
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
812
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
813
					admsys_cmd_setmoney(playerid, strtmp);
814
				}
815
			}
816
			return 1;
817
		}
818
		case ADMSYS_DIALOG_CHANGE_SKIN:
819
		{
820
			if(response)
821
			{
822
				if(!inputtext[0])
823
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_CHANGE_SKIN, 1, "Set skin", "Enter the ID of the skin which you want to set:", "Ok", "Close");
824
				else
825
				{
826
					static strtmp[32];
827
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
828
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
829
					admsys_cmd_setskin(playerid, strtmp);
830
				}
831
			}
832
			return 1;
833
		}
834
		case ADMSYS_DIALOG_SET_INT:
835
		{
836
			if(response)
837
			{
838
				if(!inputtext[0])
839
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_INT, 1, "Set interior", "Enter the ID of the interior which you want to set:", "Ok", "Close");
840
				else
841
				{
842
					static strtmp[32];
843
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
844
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
845
					admsys_cmd_setint(playerid, strtmp);
846
				}
847
			}
848
			return 1;
849
		}
850
		case ADMSYS_DIALOG_SET_VW:
851
		{
852
			if(response)
853
			{
854
				if(!inputtext[0])
855
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_VW, 1, "Set virtual world", "Enter the ID of the virtual world which you want to set:", "Ok", "Close");
856
				else
857
				{
858
					static strtmp[32];
859
					format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
860
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
861
					admsys_cmd_setvw(playerid, strtmp);
862
				}
863
			}
864
			return 1;
865
		}
866
		case ADMSYS_DIALOG_GIVE_WEAPON:
867
		{
868
			if(response)
869
			{
870
				if(!inputtext[0])
871
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, 1, "Give weapon", "Enter the ID of the weapon which you want to give:", "Ok", "Close");
872
				else
873
				{
874
					format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext);
875
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON_AMMO, 1, "Give weapon", "Enter the number of ammo which you want to give:", "Ok", "Back");
876
				}
877
			}
878
			return 1;
879
		}
880
		case ADMSYS_DIALOG_GIVE_WEAPON_AMMO:
881
		{
882
			if(response)
883
			{
884
				if(!inputtext[0])
885
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON_AMMO, 1, "Give weapon", "Enter the number of ammo which you want to give:", "Ok", "Back");
886
				else
887
				{
888
					static strtmp[32];
889
					format(strtmp, sizeof strtmp, "%d %s %s", AdmSysInfo[playerid][asTabPanel], AdmSysInfo[playerid][asInput], inputtext);
890
					AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
891
					admsys_cmd_giveweapon(playerid, strtmp);
892
				}
893
			}
894
			else ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, 1, "Give weapon", "Enter the ID of the weapon which you want to give:", "Ok", "Close");
895
			return 1;
896
		}
897
		case ADMSYS_DIALOG_APANEL:
898
		{
899
			if(response)
900
			{
901
				switch(listitem)
902
				{
903
					case 0:
904
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_ACHAT, 1, "Admin chat", "Write your message:", "Ok", "Close");
905
					case 1: admsys_cmd_ahelp(playerid, "\1");
906
					case 2: admsys_cmd_admins(playerid, "\1");
907
					case 3:
908
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SPAWN_VEH, 1, "Teleport vehicle to respawn", "Enter the ID of vehicle which you want to spawn:", "Ok", "Close");
909
					case 4:
910
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_ASAY, 1, "Message from admin", "Write your message:", "Ok", "Close");
911
					case 5: admsys_cmd_suspectlist(playerid, "\1");
912
					case 6:
913
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_GOTO_VEH, 1, "Teleport to vehicle", "Enter the ID of vehicle to which you want to teleport:", "Ok", "Close");
914
					case 7:
915
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN_IP, 1, "Block an IP address", "Enter the IP address which you want to block:", "Ok", "Close");
916
					case 8: admsys_cmd_cc(playerid, "\1");
917
					case 9:
918
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_REPAIR_VEH, 1, "Repair vehicle", "Enter the ID of vehicle which you want to repair:", "Ok", "Close");
919
					case 10:
920
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_UNBAN_IP, 1, "Unblock IP address", "Enter the IP address which you want to unblock:", "Ok", "Close");
921
					case 11: admsys_cmd_getall(playerid, "\1");
922
					case 12:
923
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_WEATHER, 1, "Set weather", "Enter the ID of the weather which you want to set:", "Ok", "Close");
924
					case 13:
925
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_TIME, 1, "Set the time of day", "Enter the hour which you want to set:", "Ok", "Close");
926
					case 14:
927
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_DESTROY_VEH, 1, "Destroy vehicle", "Enter the ID of vehicle which you want to destroy:", "Ok", "Close");
928
					case 15:
929
						ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, 1, "Create vehicle", "Enter vehicle model which you want to create:", "Ok", "Close");
930
					case 16:
931
					{
932
						if(AdmSysInfo[playerid][asLastAction])
933
						{
934
							switch(AdmSysInfo[playerid][asLastAction])
935
							{
936
								case 1: SetPlayerHealth(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastFloatData]);
937
								case 2: SetPlayerArmour(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastFloatData]);
938
								case 3:
939
								{
940
									ResetPlayerMoney(AdmSysInfo[playerid][asLastActionID]);
941
									GivePlayerMoney(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]);
942
								}
943
								case 4: SetPlayerSkin(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]);
944
								case 5: SetPlayerInterior(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]);
945
								case 6: SetPlayerVirtualWorld(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]);
946
								case 7:
947
									GivePlayerWeapon(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0], -AdmSysInfo[playerid][asLastIntData][1]);
948
							}
949
							AdmSysInfo[playerid][asLastAction] = 0;
950
							SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "The command canceled");
951
						}
952
					}
953
				}
954
			}
955
			return 1;
956
		}
957
		case ADMSYS_DIALOG_ACHAT:
958
		{
959
			if(response)
960
			{
961
				if(!inputtext[0])
962
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_ACHAT, 1, "Admin chat", "Write your message:", "Ok", "Close");
963
				else admsys_cmd_achat(playerid, inputtext);
964
			}
965
			return 1;
966
		}
967
		case ADMSYS_DIALOG_SPAWN_VEH:
968
		{
969
			if(response)
970
			{
971
				if(!inputtext[0]) admsys_cmd_spawnveh(playerid, "\1");
972
				else admsys_cmd_spawnveh(playerid, inputtext);
973
			}
974
			return 1;
975
		}
976
		case ADMSYS_DIALOG_ASAY:
977
		{
978
			if(response)
979
			{
980
				if(!inputtext[0])
981
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_ASAY, 1, "Message from admin", "Write your message:", "Ok", "Close");
982
				else admsys_cmd_asay(playerid, inputtext);
983
			}
984
			return 1;
985
		}
986
		case ADMSYS_DIALOG_GOTO_VEH:
987
		{
988
			if(response)
989
			{
990
				if(!inputtext[0])
991
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_GOTO_VEH, 1, "Teleport to vehicle", "Enter the ID of vehicle to which you want to teleport:", "Ok", "Close");
992
				else admsys_cmd_gotoveh(playerid, inputtext);
993
			}
994
			return 1;
995
		}
996
		case ADMSYS_DIALOG_BAN_IP:
997
		{
998
			if(response)
999
			{
1000
				if(!inputtext[0])
1001
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN_IP, 1, "Block an IP address", "Enter the IP address which you want to block:", "Ok", "Close");
1002
				else admsys_cmd_banip(playerid, inputtext);
1003
			}
1004
			return 1;
1005
		}
1006
		case ADMSYS_DIALOG_REPAIR_VEH:
1007
		{
1008
			if(response)
1009
			{
1010
				if(!inputtext[0]) admsys_cmd_repairveh(playerid, "\1");
1011
				else admsys_cmd_repairveh(playerid, inputtext);
1012
			}
1013
			return 1;
1014
		}
1015
		case ADMSYS_DIALOG_UNBAN_IP:
1016
		{
1017
			if(response)
1018
			{
1019
				if(!inputtext[0])
1020
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_UNBAN_IP, 1, "Unblock IP address", "Enter the IP address which you want to unblock:", "Ok", "Close");
1021
				else admsys_cmd_unbanip(playerid, inputtext);
1022
			}
1023
			return 1;
1024
		}
1025
		case ADMSYS_DIALOG_SET_WEATHER:
1026
		{
1027
			if(response)
1028
			{
1029
				if(!inputtext[0])
1030
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_WEATHER, 1, "Set weather", "Enter the ID of the weather which you want to set:", "Ok", "Close");
1031
				else admsys_cmd_setweather(playerid, inputtext);
1032
			}
1033
			return 1;
1034
		}
1035
		case ADMSYS_DIALOG_SET_TIME:
1036
		{
1037
			if(response)
1038
			{
1039
				if(!inputtext[0])
1040
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_TIME, 1, "Set the time of day", "Enter the hour which you want to set:", "Ok", "Close");
1041
				else admsys_cmd_settime(playerid, inputtext);
1042
			}
1043
			return 1;
1044
		}
1045
		case ADMSYS_DIALOG_DESTROY_VEH:
1046
		{
1047
			if(response)
1048
			{
1049
				if(!inputtext[0]) admsys_cmd_destroyveh(playerid, "\1");
1050
				else admsys_cmd_destroyveh(playerid, inputtext);
1051
			}
1052
			return 1;
1053
		}
1054
		case ADMSYS_DIALOG_CREATE_VEH:
1055
		{
1056
			if(response)
1057
			{
1058
				if(!inputtext[0])
1059
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, 1, "Create vehicle", "Enter vehicle model which you want to create:", "Ok", "Close");
1060
				else
1061
				{
1062
					format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext);
1063
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_1, 1, "Create vehicle", "Enter the color 1 for vehicle which you want to create:", "Ok", "Back");
1064
				}
1065
			}
1066
			return 1;
1067
		}
1068
		case ADMSYS_DIALOG_CREATE_VEH_COL_1:
1069
		{
1070
			if(response)
1071
			{
1072
				if(!inputtext[0]) admsys_cmd_veh(playerid, AdmSysInfo[playerid][asInput]);
1073
				else
1074
				{
1075
					format(AdmSysInfo[playerid][asInput2], ADMSYS_MAX_TAB_INPUT, "%s", inputtext);
1076
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_2, 1, "Create vehicle", "Enter the color 2 for vehicle which you want to create:", "Ok", "Back");
1077
				}
1078
			}
1079
			else ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, 1, "Create vehicle", "Enter vehicle model which you want to create:", "Ok", "Close");
1080
			return 1;
1081
		}
1082
		case ADMSYS_DIALOG_CREATE_VEH_COL_2:
1083
		{
1084
			if(response)
1085
			{
1086
				if(!inputtext[0])
1087
					ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_2, 1, "Create vehicle", "Enter the color 2 for vehicle which you want to create:", "Ok", "Back");
1088
				else
1089
				{
1090
					static strtmp[32];
1091
					format(strtmp, sizeof strtmp, "%s %s %s", AdmSysInfo[playerid][asInput], AdmSysInfo[playerid][asInput2], inputtext);
1092
					admsys_cmd_veh(playerid, strtmp);
1093
				}
1094
			}
1095
			else ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_1, 1, "Create vehicle", "Enter the color 1 for vehicle which you want to create:", "Ok", "Back");
1096
			return 1;
1097
		}
1098
		case ADMSYS_DIALOG_SUSPECT_LIST:
1099
		{
1100
			if(response && -1 < listitem < sizeof SuspectList)
1101
			{
1102
				if(!StartSpectating(playerid, SuspectList[listitem]))
1103
				{
1104
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player disconnected");
1105
					admsys_cmd_suspectlist(playerid, "\1");
1106
				}
1107
				else if(AdmSysInfo[playerid][asSpecID] == SuspectList[listitem]) RemovePlayerFromSuspectList(SuspectList[listitem]);
1108
			}
1109
			return 1;
1110
		}
1111
	}
1112
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
1113
		&& defined admsys_OnDialogResponse
1114
		return admsys_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
1115
	#else
1116
		return 0;
1117
	#endif
1118
}
1119
1120
#if !defined _inc_y_hooks && !defined _INC_y_hooks
1121
	#if defined _ALS_OnDialogResponse
1122
		#undef OnDialogResponse
1123
	#else
1124
		#define _ALS_OnDialogResponse
1125
	#endif
1126
	#define OnDialogResponse admsys_OnDialogResponse
1127
	#if defined admsys_OnDialogResponse
1128
		forward admsys_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
1129
	#endif
1130
#endif
1131
1132
#if defined _inc_y_hooks || defined _INC_y_hooks
1133
	hook OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
1134
#else
1135
	public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
1136
#endif
1137
{
1138
	#if defined foreach
1139
		foreach(new i : Player)
1140
	#else
1141
		for(new i = GetPlayerPoolSize(); i != -1; --i)
1142
		{
1143
			if(IsPlayerConnected(i))
1144
	#endif
1145
	{
1146
		if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i);
1147
	}
1148
	#if !defined foreach
1149
		}
1150
	#endif
1151
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
1152
		&& defined admsys_OnPlayerInteriorChange
1153
		return admsys_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
1154
	#else
1155
		return 1;
1156
	#endif
1157
}
1158
1159
#if !defined _inc_y_hooks && !defined _INC_y_hooks
1160
	#if defined _ALS_OnPlayerInteriorChange
1161
		#undef OnPlayerInteriorChange
1162
	#else
1163
		#define _ALS_OnPlayerInteriorChange
1164
	#endif
1165
	#define OnPlayerInteriorChange admsys_OnPlayerInteriorChange
1166
	#if defined admsys_OnPlayerInteriorChange
1167
		forward admsys_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
1168
	#endif
1169
#endif
1170
1171
#if defined _inc_y_hooks || defined _INC_y_hooks
1172
	hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
1173
#else
1174
	public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
1175
#endif
1176
{
1177
	if(GetPlayerState(playerid) == 9 && AdmSysInfo[playerid][asSpecID] != INVALID_PLAYER_ID)
1178
	{
1179
		if(newkeys & KEY_ANALOG_LEFT)
1180
		{
1181
			new ud = AdmSysInfo[playerid][asSpecID];
1182
			AdmSysInfo[playerid][asSpecID]--;
1183
			while(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID]) || IsPlayerSpectating(AdmSysInfo[playerid][asSpecID]) || AdmSysInfo[playerid][asSpecID] == playerid)
1184
			{
1185
				AdmSysInfo[playerid][asSpecID]--;
1186
				if(AdmSysInfo[playerid][asSpecID] < 0) AdmSysInfo[playerid][asSpecID] = GetPlayerPoolSize();
1187
				if(AdmSysInfo[playerid][asSpecID] == ud) break;
1188
			}
1189
			if(AdmSysInfo[playerid][asSpecID] != ud) UpdateSpectating(playerid);
1190
		}
1191
		else if(newkeys & KEY_ANALOG_RIGHT)
1192
		{
1193
			new ud = AdmSysInfo[playerid][asSpecID];
1194
			AdmSysInfo[playerid][asSpecID]++;
1195
			while(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID]) || IsPlayerSpectating(AdmSysInfo[playerid][asSpecID]) || AdmSysInfo[playerid][asSpecID] == playerid)
1196
			{
1197
				AdmSysInfo[playerid][asSpecID]++;
1198
				if(AdmSysInfo[playerid][asSpecID] > GetPlayerPoolSize()) AdmSysInfo[playerid][asSpecID] = 0;
1199
				if(AdmSysInfo[playerid][asSpecID] == ud) break;
1200
			}
1201
			if(AdmSysInfo[playerid][asSpecID] != ud) UpdateSpectating(playerid);
1202
		}
1203
	}
1204
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
1205
		&& defined admsys_OnPlayerKeyStateChange
1206
		return admsys_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
1207
	#else
1208
		return 1;
1209
	#endif
1210
}
1211
1212
#if !defined _inc_y_hooks && !defined _INC_y_hooks
1213
	#if defined _ALS_OnPlayerKeyStateChange
1214
		#undef OnPlayerKeyStateChange
1215
	#else
1216
		#define _ALS_OnPlayerKeyStateChange
1217
	#endif
1218
	#define OnPlayerKeyStateChange admsys_OnPlayerKeyStateChange
1219
	#if defined admsys_OnPlayerKeyStateChange
1220
		forward admsys_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
1221
	#endif
1222
#endif
1223
1224
#if defined _inc_y_hooks || defined _INC_y_hooks
1225
	hook OnPlayerClickPlayer(playerid, clickedplayerid, source)
1226
#else
1227
	public OnPlayerClickPlayer(playerid, clickedplayerid, source)
1228
#endif
1229
{
1230
	if(IsPlayerAdminEx(playerid))
1231
	{
1232
		static strtmp[351], strtmp2[43], strname[24];
1233
		strtmp[0] = EOS;
1234
		AdmSysInfo[playerid][asTabPanel] = clickedplayerid;
1235
		GetPlayerName(clickedplayerid, strname, sizeof strname);
1236
		format(strtmp2, sizeof strtmp2, "Admin panel for %s", strname);
1237
		strcat(strtmp, "Show statistics\nRespond on report\nRemove from vehicle");
1238
		if(IsPlayerAdminEx(playerid, 2)) strcat(strtmp, "\nBegin spectate\n\
1239
		Mute\nUnmute\nGive warn\nKick\nFreeze\nUnfreeze\nSlap\nTeleport to player");
1240
		if(IsPlayerAdminEx(playerid, 3)) strcat(strtmp, "\nTeleport to yourself\nBan\n\
1241
		Check for infinite health\nTeleport to respawn\nRemove warn");
1242
		if(IsPlayerAdminEx(playerid, 4)) strcat(strtmp, "\nSet health\nSet armour\nSet money\n\
1243
		Set skin\nSet interior\nSet virtual world\nGive weapon");
1244
		if(IsPlayerAdminEx(playerid, 5)) strcat(strtmp, "\nSilent ban\nSilent kick");
1245
		ShowPlayerDialog(playerid, ADMSYS_DIALOG_TAB_PANEL, 2, strtmp2, strtmp, "Ok", "Close");
1246
	}
1247
	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
1248
		&& defined admsys_OnPlayerClickPlayer
1249
		return admsys_OnPlayerClickPlayer(playerid, clickedplayerid, source);
1250
	#else
1251
		return 1;
1252
	#endif
1253
}
1254
1255
#if !defined _inc_y_hooks && !defined _INC_y_hooks
1256
	#if defined _ALS_OnPlayerClickPlayer
1257
		#undef OnPlayerClickPlayer
1258
	#else
1259
		#define _ALS_OnPlayerClickPlayer
1260
	#endif
1261
	#define OnPlayerClickPlayer admsys_OnPlayerClickPlayer
1262
	#if defined admsys_OnPlayerClickPlayer
1263
		forward admsys_OnPlayerClickPlayer(playerid, clickedplayerid, source);
1264
	#endif
1265
#endif
1266
1267
admsys_fpublic BanWithDelay(playerid) return Ban(playerid);
1268
1269
admsys_fpublic KickWithDelay(playerid) return Kick(playerid);
1270
1271
admsys_fpublic UpdateMuteTime()
1272
{
1273
	#if defined foreach
1274
		foreach(new i : Player)
1275
	#else
1276
	for(new i = GetPlayerPoolSize(); i != -1; --i)
1277
	{
1278
		if(IsPlayerConnected(i))
1279
	#endif
1280
	{
1281
		if(AdmSysInfo[i][asMuteTime] > 0)
1282
		{
1283
			AdmSysInfo[i][asMuteTime]--;
1284
			if(AdmSysInfo[i][asMuteTime] < 1)
1285
				SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Time of mute has expired");
1286
		}
1287
	}
1288
	#if !defined foreach
1289
		}
1290
	#endif
1291
	return 1;
1292
}
1293
1294
admsys_fpublic UpdateSpecInfo(playerid)
1295
{
1296
	if(AdmSysInfo[playerid][asSpecID] != INVALID_PLAYER_ID)
1297
	{
1298
		static strtmp[101], sname[24], sip[16];
1299
		GetPlayerIp(AdmSysInfo[playerid][asSpecID], sip, sizeof sip);
1300
		GetPlayerName(AdmSysInfo[playerid][asSpecID], sname, sizeof sname);
1301
		format(strtmp, sizeof strtmp, "~w~~n~~n~~n~~n~~n~~n~Nick: %s~n~ID: %d~n~IP: %s~n~Ping: %d",
1302
		sname, AdmSysInfo[playerid][asSpecID], sip, GetPlayerPing(AdmSysInfo[playerid][asSpecID]));
1303
		SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(AdmSysInfo[playerid][asSpecID]));
1304
		AdmSysInfo[playerid][asUpdTimer] = SetTimerEx("UpdateSpecInfo", 1000, false, "d", playerid);
1305
		GameTextForPlayer(playerid, strtmp, 1500, 3);
1306
		return 1;
1307
	}
1308
	return 0;
1309
}
1310
1311
admsys_fpublic GmTest(playerid)
1312
{
1313
	if(AdmSysInfo[playerid][asGmTestID] != INVALID_PLAYER_ID)
1314
	{
1315
		if(AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTest])
1316
		{
1317
			static strtmp[179];
1318
			new vehid, Float:nowhp, Float:nowar, Float:hpdiff, Float:ardiff;
1319
			vehid = GetPlayerVehicleID(AdmSysInfo[playerid][asGmTestID]);
1320
			if(vehid) GetVehicleHealth(vehid, nowhp);
1321
			else
1322
			{
1323
				GetPlayerHealth(AdmSysInfo[playerid][asGmTestID], nowhp);
1324
				GetPlayerArmour(AdmSysInfo[playerid][asGmTestID], nowar);
1325
			}
1326
			hpdiff = AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP] - nowhp;
1327
			ardiff = AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR] - nowar;
1328
			if(!hpdiff && !ardiff)
1329
			{
1330
				format(strtmp, sizeof strtmp, "Before:\t%.1f health, %.1f armour\nAfter:\t%.1f health, %.1f armour\nHealth and armour hasn't decreased\n\nPerhaps the player uses GodMode.",
1331
				AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR], nowhp, nowar);
1332
				ShowPlayerDialog(playerid, ADMSYS_DIALOG_GMTEST, 0, "Check for GodMode", strtmp, "Close", "");
1333
			}
1334
			else
1335
			{
1336
				format(strtmp, sizeof strtmp, "Before:\t%.1f health, %.1f armour\nAfter:\t%.1f health, %.1f armour\nHealth decreased by:\t%.1f\nArmour decreased by:\t%.1f\n\nGodMode isn't detected.\nHealth and armor restored.",
1337
				AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR], nowhp, nowar, hpdiff, ardiff);
1338
				ShowPlayerDialog(playerid, ADMSYS_DIALOG_GMTEST, 0, "Check for GodMode", strtmp, "Close", "");
1339
				if(vehid) SetVehicleHealth(vehid, AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP]);
1340
				else
1341
				{
1342
					SetPlayerHealth(AdmSysInfo[playerid][asGmTestID], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP]);
1343
					SetPlayerArmour(AdmSysInfo[playerid][asGmTestID], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR]);
1344
				}
1345
			}
1346
		}
1347
		AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTest] = false;
1348
		AdmSysInfo[playerid][asGmTestID] = INVALID_PLAYER_ID;
1349
	}
1350
	return 1;
1351
}
1352
1353
CMD:report(playerid, params[]) return admsys_cmd_report(playerid, params);
1354
admsys_cmd_report(playerid, params[])
1355
{
1356
	static strtmp[145];
1357
	if(AdmSysInfo[playerid][asMuteTime])
1358
	{
1359
		format(strtmp, sizeof strtmp, "You are muted. Remained mute time: %d minutes %d seconds",
1360
		floatround(AdmSysInfo[playerid][asMuteTime] / 60, floatround_tozero), AdmSysInfo[playerid][asMuteTime] % 60);
1361
		return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1362
	}
1363
	if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /report [text]");
1364
	static strname[24];
1365
	GetPlayerName(playerid, strname, sizeof strname);
1366
	format(strtmp, sizeof strtmp, "[Report] %s[%d]: %s", strname, playerid, params);
1367
	SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
1368
	SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1369
	return 1;
1370
}
1371
1372
CMD:achat(playerid, params[]) return admsys_cmd_achat(playerid, params);
1373
CMD:adminchat(playerid, params[]) return admsys_cmd_achat(playerid, params);
1374
admsys_cmd_achat(playerid, params[])
1375
{
1376
	if(IsPlayerAdminEx(playerid))
1377
	{
1378
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /achat [text]");
1379
		static strtmp[145], strname[24];
1380
		strtmp = "[Admin chat] ";
1381
		GetPlayerName(playerid, strname, sizeof strname);
1382
		strcat(strtmp, strname);
1383
		strcat(strtmp, ": ");
1384
		strcat(strtmp, params);
1385
		SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
1386
	}
1387
	return 1;
1388
}
1389
1390
CMD:ahelp(playerid, params[]) return admsys_cmd_ahelp(playerid, params);
1391
CMD:adminhelp(playerid, params[]) return admsys_cmd_ahelp(playerid, params);
1392
admsys_cmd_ahelp(playerid, params[])
1393
{
1394
	#pragma unused params
1395
	if(IsPlayerAdminEx(playerid))
1396
		ShowPlayerDialog(playerid, ADMSYS_DIALOG_AHELP, 0, "Help with admin commands", AdmSysCmdsStr, "Ok", "");
1397
	return 1;
1398
}
1399
1400
CMD:showstats(playerid, params[]) return admsys_cmd_showstats(playerid, params);
1401
admsys_cmd_showstats(playerid, params[])
1402
{
1403
	if(IsPlayerAdminEx(playerid))
1404
	{
1405
		if(admsys_isnull(params)) params[0] = playerid;
1406
		else
1407
		{
1408
			if(!admsys_IsNumeric(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /showstats [id]");
1409
			params[0] = strval(params);
1410
			if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
1411
		}
1412
		new Float:ghealth, Float:garmour;
1413
		static strtmp[45], strtmp2[192], strname[24], gip[16];
1414
		GetPlayerName(params[0], strname, sizeof strname);
1415
		GetPlayerHealth(params[0], ghealth);
1416
		GetPlayerArmour(params[0], garmour);
1417
		GetPlayerIp(params[0], gip, sizeof gip);
1418
		format(strtmp, sizeof strtmp, "Information about %s", strname);
1419
		format(strtmp2, sizeof strtmp2, "Health: %.1f\nArmour: %.1f\nMoney: %d\nInterior: %d\nVirtual world: %d\nWanted level: %d\nIP address: %s\nPing: %d\nWeapon: %d\nAmmo: %d\nScore: %d\nSkin: %d",
1420
		ghealth, garmour, GetPlayerMoney(params[0]), GetPlayerInterior(params[0]), GetPlayerVirtualWorld(params[0]), GetPlayerWantedLevel(params[0]), gip, GetPlayerPing(params[0]),
1421
		GetPlayerWeapon(params[0]), GetPlayerAmmo(params[0]), GetPlayerScore(params[0]), GetPlayerSkin(params[0]));
1422
		ShowPlayerDialog(playerid, ADMSYS_DIALOG_STATS, 0, strtmp, strtmp2, "Ok", "");
1423
	}
1424
	return 1;
1425
}
1426
1427
CMD:answer(playerid, params[]) return admsys_cmd_answer(playerid, params);
1428
admsys_cmd_answer(playerid, params[])
1429
{
1430
	if(IsPlayerAdminEx(playerid))
1431
	{
1432
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /answer [id] [text]");
1433
		new pos;
1434
		static strtmp[145];
1435
		while(params[pos] > ' ') pos++;
1436
		strmid(strtmp, params, 0, pos);
1437
		if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /answer [id] [text]");
1438
		new giveid = strval(strtmp);
1439
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
1440
		while(params[pos] == ' ') pos++;
1441
		if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /answer [id] [text]");
1442
		static strname[24], strname2[24];
1443
		GetPlayerName(playerid, strname, sizeof strname);
1444
		GetPlayerName(giveid, strname2, sizeof strname2);
1445
		format(strtmp, sizeof strtmp, "[Response to report %s] %s: %s", strname2, strname, params[pos]);
1446
		SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
1447
		strtmp = "[Response to report]: ";
1448
		strcat(strtmp, params[pos]);
1449
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1450
	}
1451
	return 1;
1452
}
1453
1454
CMD:apanel(playerid, params[]) return admsys_cmd_apanel(playerid, params);
1455
CMD:adminpanel(playerid, params[]) return admsys_cmd_apanel(playerid, params);
1456
admsys_cmd_apanel(playerid, params[])
1457
{
1458
	#pragma unused params
1459
	if(IsPlayerAdminEx(playerid))
1460
	{
1461
		static strtmp[374];
1462
		strtmp[0] = EOS;
1463
		strcat(strtmp, "Admin chat\nHelp with admin commands\nView a list of online administrators");
1464
		if(IsPlayerAdminEx(playerid, 2)) strcat(strtmp, "\nTeleport vehicle to respawn\n\
1465
		Message: 'Administrator: [text]'");
1466
		if(IsPlayerAdminEx(playerid, 3)) strcat(strtmp, "\nList of suspects players\n\
1467
		Teleport to vehicle\nBlock an IP address\nClear the chat");
1468
		if(IsPlayerAdminEx(playerid, 4)) strcat(strtmp, "\nRepair vehicle\nUnblock IP address");
1469
		if(IsPlayerAdminEx(playerid, 5)) strcat(strtmp, "\nTeleport all to yourself\nSet weather\n\
1470
		Set the time of day\nDestroy vehicle\nCreate vehicle");
1471
		strcat(strtmp, "\nUndo the last command");
1472
		ShowPlayerDialog(playerid, ADMSYS_DIALOG_APANEL, 2, "Admin panel", strtmp, "Ok", "Close");
1473
	}
1474
	return 1;
1475
}
1476
1477
CMD:admins(playerid, params[]) return admsys_cmd_admins(playerid, params);
1478
admsys_cmd_admins(playerid, params[])
1479
{
1480
	#pragma unused params
1481
	if(IsPlayerAdminEx(playerid))
1482
	{
1483
		static strtmp[296];
1484
		strtmp[0] = EOS;
1485
		static strtmp2[59], strtmp3[24];
1486
		#if defined foreach
1487
		foreach(new i : Player)
1488
		#else
1489
		for(new i = GetPlayerPoolSize(); i != -1; --i)
1490
		#endif
1491
		{
1492
			if(IsPlayerAdminEx(i))
1493
			{
1494
				GetPlayerName(i, strtmp3, sizeof strtmp3);
1495
				format(strtmp2, sizeof strtmp2, "Administrator %s[%d] [Level %d]\n", strtmp3, i, GetPlayerAdminLevel(i));
1496
				strcat(strtmp, strtmp2);
1497
			}
1498
		}
1499
		if(!strtmp[0]) strtmp = "Right now no administrators online";
1500
		ShowPlayerDialog(playerid, ADMSYS_DIALOG_ADMINS, 0, "Administrators online", strtmp, "Ok", "");
1501
	}
1502
	return 1;
1503
}
1504
1505
CMD:eject(playerid, params[]) return admsys_cmd_eject(playerid, params);
1506
admsys_cmd_eject(playerid, params[])
1507
{
1508
	if(IsPlayerAdminEx(playerid))
1509
	{
1510
		new strtmp[66];
1511
		if(admsys_isnull(params))
1512
		{
1513
			format(strtmp, sizeof strtmp, "%d", playerid);
1514
			return admsys_cmd_eject(playerid, strtmp);
1515
		}
1516
		static strname[24], strname2[24];
1517
		GetPlayerName(playerid, strname, sizeof strname);
1518
		for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
1519
		{
1520
			while(params[pos] == ' ') pos++;
1521
			if(params[pos])
1522
			{
1523
				oldpos = pos;
1524
				while(params[pos] > ' ') pos++;
1525
				strmid(strtmp, params, oldpos, pos);
1526
				if(!admsys_IsNumeric(strtmp))
1527
				{
1528
					strtmp = "Use: /eject [id]";
1529
					if(i > 1)
1530
					{
1531
						for(j = 2; j <= i; j++)
1532
						{
1533
							format(strname2, sizeof strname2, " [id %d]", j);
1534
							strcat(strtmp, strname2);
1535
						}
1536
					}
1537
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1538
				}
1539
				giveid = strval(strtmp);
1540
				if(!IsPlayerConnected(giveid))
1541
				{
1542
					if(i == 1) strtmp = "Player not found";
1543
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
1544
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1545
				}
1546
				else if(!IsPlayerInAnyVehicle(giveid))
1547
				{
1548
					if(i == 1)
1549
					{
1550
						if(giveid == playerid) strtmp = "You are not in vehicle";
1551
						else strtmp = "Player is not in vehicle";
1552
					}
1553
					else format(strtmp, sizeof strtmp, "Player %d is not in vehicle", i);
1554
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1555
				}
1556
				else
1557
				{
1558
					RemovePlayerFromVehicle(giveid);
1559
					GetPlayerName(giveid, strname2, sizeof strname2);
1560
					format(strtmp, sizeof strtmp, "You removed %s[%d] from vehicle", strname2, giveid);
1561
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1562
					format(strtmp, sizeof strtmp, "Administrator %s removed you from vehicle", strname);
1563
					SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1564
				}
1565
			}
1566
		}
1567
	}
1568
	return 1;
1569
}
1570
1571
CMD:spec(playerid, params[]) return admsys_cmd_spec(playerid, params);
1572
admsys_cmd_spec(playerid, params[])
1573
{
1574
	if(IsPlayerAdminEx(playerid, 2))
1575
	{
1576
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /spec [id]");
1577
		if(!strcmp(params, "off", true)) return admsys_cmd_specoff(playerid, "\1");
1578
		if(!strcmp(params, "update", true)) return admsys_cmd_specupdate(playerid, "\1");
1579
		if(!admsys_IsNumeric(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /spec [id]");
1580
		params[0] = strval(params);
1581
		if(!StartSpectating(playerid, params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
1582
	}
1583
	return 1;
1584
}
1585
1586
CMD:specupdate(playerid, params[]) return admsys_cmd_specupdate(playerid, params);
1587
admsys_cmd_specupdate(playerid, params[])
1588
{
1589
	#pragma unused params
1590
	if(IsPlayerAdminEx(playerid, 2)) UpdateSpectating(playerid);
1591
	return 1;
1592
}
1593
1594
CMD:specoff(playerid, params[]) return admsys_cmd_specoff(playerid, params);
1595
admsys_cmd_specoff(playerid, params[])
1596
{
1597
	#pragma unused params
1598
	if(IsPlayerAdminEx(playerid, 2)) StopSpectating(playerid);
1599
	return 1;
1600
}
1601
1602
CMD:spawnveh(playerid, params[]) return admsys_cmd_spawnveh(playerid, params);
1603
admsys_cmd_spawnveh(playerid, params[])
1604
{
1605
	if(IsPlayerAdminEx(playerid, 2))
1606
	{
1607
		if(admsys_isnull(params))
1608
		{
1609
			if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in vehicle");
1610
			params[0] = GetPlayerVehicleID(playerid);
1611
		}
1612
		else
1613
		{
1614
			if(!admsys_IsNumeric(params))
1615
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /spawnveh [vehicle id]");
1616
			params[0] = strval(params);
1617
			if(!GetVehicleModel(params[0]))
1618
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Vehicle is not found");
1619
		}
1620
		static strtmp[24];
1621
		SetVehicleToRespawn(params[0]);
1622
		format(strtmp, sizeof strtmp, "Vehicle id %d spawned", params[0]);
1623
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1624
	}
1625
	return 1;
1626
}
1627
1628
CMD:mute(playerid, params[]) return admsys_cmd_mute(playerid, params);
1629
admsys_cmd_mute(playerid, params[])
1630
{
1631
	if(IsPlayerAdminEx(playerid, 2))
1632
	{
1633
		if(admsys_isnull(params))
1634
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /mute [id] [time] [reason]");
1635
		static strtmp[145];
1636
		new pos, oldpos;
1637
		while(params[pos] > ' ') pos++;
1638
		strmid(strtmp, params, 0, pos);
1639
		if(!admsys_IsNumeric(strtmp))
1640
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /mute [id] [time] [reason]");
1641
		new giveid = strval(strtmp);
1642
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
1643
		if(AdmSysInfo[giveid][asMuteTime]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is already muted");
1644
		if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
1645
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
1646
		while(params[pos] == ' ') pos++;
1647
		oldpos = pos;
1648
		while(params[pos] > ' ') pos++;
1649
		strmid(strtmp, params, oldpos, pos);
1650
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
1651
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /mute [id] [time] [reason]");
1652
		new gtime = strval(strtmp);
1653
		if(!(0 < gtime < 61)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use time for 1 to 60 minutes");
1654
		while(params[pos] == ' ') pos++;
1655
		if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /mute [id] [time] [reason]");
1656
		static strname[24], strname2[24];
1657
		AdmSysInfo[giveid][asMuteTime] = gtime * 60;
1658
		GetPlayerName(playerid, strname, sizeof strname);
1659
		GetPlayerName(giveid, strname2, sizeof strname2);
1660
		format(strtmp, sizeof strtmp, "Administrator %s muted %s[%d] on %d minutes. Reason: %s", strname, strname2, giveid, gtime, params[pos]);
1661
		#if defined SEND_ACTION_MESSAGES_TO_ALL
1662
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
1663
		#else
1664
			SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
1665
		#endif
1666
		format(strtmp, sizeof strtmp, "Administrator %s muted you on %d minutes. Reason: %s", strname, gtime, params[pos]);
1667
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1668
	}
1669
	return 1;
1670
}
1671
1672
CMD:unmute(playerid, params[]) return admsys_cmd_unmute(playerid, params);
1673
admsys_cmd_unmute(playerid, params[])
1674
{
1675
	if(IsPlayerAdminEx(playerid, 2))
1676
	{
1677
		new strtmp[92];
1678
		if(admsys_isnull(params))
1679
		{
1680
			format(strtmp, sizeof strtmp, "%d", playerid);
1681
			return admsys_cmd_unmute(playerid, strtmp);
1682
		}
1683
		static strname[24], strname2[24];
1684
		GetPlayerName(playerid, strname, sizeof strname);
1685
		for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
1686
		{
1687
			while(params[pos] == ' ') pos++;
1688
			if(params[pos])
1689
			{
1690
				oldpos = pos;
1691
				while(params[pos] > ' ') pos++;
1692
				strmid(strtmp, params, oldpos, pos);
1693
				if(!admsys_IsNumeric(strtmp))
1694
				{
1695
					strtmp = "Use: /unmute [id]";
1696
					if(i > 1)
1697
					{
1698
						for(j = 2; j <= i; j++)
1699
						{
1700
							format(strname2, sizeof strname2, " [id %d]", j);
1701
							strcat(strtmp, strname2);
1702
						}
1703
					}
1704
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1705
				}
1706
				giveid = strval(strtmp);
1707
				if(!IsPlayerConnected(giveid))
1708
				{
1709
					if(i == 1) strtmp = "Player not found";
1710
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
1711
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1712
				}
1713
				else if(!AdmSysInfo[giveid][asMuteTime])
1714
				{
1715
					if(i == 1) strtmp = "Player isn't muted";
1716
					else format(strtmp, sizeof strtmp, "Player %d isn't muted", i);
1717
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1718
				}
1719
				else
1720
				{
1721
					AdmSysInfo[giveid][asMuteTime] = 0;
1722
					GetPlayerName(giveid, strname2, sizeof strname2);
1723
					format(strtmp, sizeof strtmp, "Administrator %s unmuted %s[%d]", strname, strname2, giveid);
1724
					#if defined SEND_ACTION_MESSAGES_TO_ALL
1725
						SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
1726
					#else
1727
						SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
1728
					#endif
1729
					format(strtmp, sizeof strtmp, "Administrator %s unmuted you", strname);
1730
					SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1731
				}
1732
			}
1733
		}
1734
	}
1735
	return 1;
1736
}
1737
1738
CMD:asay(playerid, params[]) return admsys_cmd_asay(playerid, params);
1739
admsys_cmd_asay(playerid, params[])
1740
{
1741
	if(IsPlayerAdminEx(playerid, 2))
1742
	{
1743
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /asay [text]");
1744
		static strtmp[145], strname[24];
1745
		strtmp = "Administrator ";
1746
		GetPlayerName(playerid, strname, sizeof strname);
1747
		strcat(strtmp, strname);
1748
		strcat(strtmp, ": ");
1749
		strcat(strtmp, params);
1750
		SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
1751
	}
1752
	return 1;
1753
}
1754
1755
CMD:warn(playerid, params[]) return admsys_cmd_warn(playerid, params);
1756
admsys_cmd_warn(playerid, params[])
1757
{
1758
	if(IsPlayerAdminEx(playerid, 2))
1759
	{
1760
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /warn [id] [reason]");
1761
		static strtmp[145];
1762
		new pos;
1763
		while(params[pos] > ' ') pos++;
1764
		strmid(strtmp, params, 0, pos);
1765
		if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /warn [id] [reason]");
1766
		new giveid = strval(strtmp);
1767
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
1768
		if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
1769
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
1770
		while(params[pos] == ' ') pos++;
1771
		if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /warn [id] [reason]");
1772
		static strname[24], strname2[24];
1773
		AdmSysInfo[giveid][asWarns]++;
1774
		CallLocalFunction("OnPlayerWarn", "iii", giveid, playerid, AdmSysInfo[giveid][asWarns]);
1775
		GetPlayerName(playerid, strname, sizeof strname);
1776
		GetPlayerName(giveid, strname2, sizeof strname2);
1777
		format(strtmp, sizeof strtmp, "Administrator %s has given %s[%d] a warn. Reason: %s", strname, strname2, giveid, params[pos]);
1778
		#if defined SEND_ACTION_MESSAGES_TO_ALL
1779
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
1780
		#else
1781
			SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
1782
		#endif
1783
		format(strtmp, sizeof strtmp, "Administrator %s has given you a warn. Reason: %s", strname, params[pos]);
1784
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1785
		if(AdmSysInfo[giveid][asWarns] > ADMSYS_MAX_WARNS) return admsys_cmd_ban(playerid, params);
1786
	}
1787
	return 1;
1788
}
1789
1790
CMD:kick(playerid, params[]) return admsys_cmd_kick(playerid, params);
1791
admsys_cmd_kick(playerid, params[])
1792
{
1793
	if(IsPlayerAdminEx(playerid, 2))
1794
	{
1795
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /kick [id] [reason]");
1796
		static strtmp[145];
1797
		new pos;
1798
		while(params[pos] > ' ') pos++;
1799
		strmid(strtmp, params, 0, pos);
1800
		if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /kick [id] [reason]");
1801
		new giveid = strval(strtmp);
1802
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
1803
		if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
1804
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
1805
		while(params[pos] == ' ') pos++;
1806
		if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /kick [id] [reason]");
1807
		static strname[24], strname2[24];
1808
		CallLocalFunction("OnPlayerKick", "iii", giveid, playerid, false);
1809
		GetPlayerName(playerid, strname, sizeof strname);
1810
		GetPlayerName(giveid, strname2, sizeof strname2);
1811
		format(strtmp, sizeof strtmp, "Administrator %s has kicked %s[%d]. Reason: %s", strname, strname2, giveid, params[pos]);
1812
		#if defined SEND_ACTION_MESSAGES_TO_ALL
1813
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
1814
		#else
1815
			SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
1816
		#endif
1817
		format(strtmp, sizeof strtmp, "Administrator %s has kicked you. Reason: %s", strname, params[pos]);
1818
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1819
		SetTimerEx("KickWithDelay", 500, 0, "i", giveid);
1820
	}
1821
	return 1;
1822
}
1823
1824
CMD:freeze(playerid, params[]) return admsys_cmd_freeze(playerid, params);
1825
admsys_cmd_freeze(playerid, params[])
1826
{
1827
	if(IsPlayerAdminEx(playerid, 2))
1828
	{
1829
		new strtmp[95];
1830
		if(admsys_isnull(params))
1831
		{
1832
			format(strtmp, sizeof strtmp, "%d", playerid);
1833
			return admsys_cmd_freeze(playerid, strtmp);
1834
		}
1835
		static strname[24], strname2[24];
1836
		GetPlayerName(playerid, strname, sizeof strname);
1837
		for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
1838
		{
1839
			while(params[pos] == ' ') pos++;
1840
			if(params[pos])
1841
			{
1842
				oldpos = pos;
1843
				while(params[pos] > ' ') pos++;
1844
				strmid(strtmp, params, oldpos, pos);
1845
				if(!admsys_IsNumeric(strtmp))
1846
				{
1847
					strtmp = "Use: /freeze [id]";
1848
					if(i > 1)
1849
					{
1850
						for(j = 2; j <= i; j++)
1851
						{
1852
							format(strname2, sizeof strname2, " [id %d]", j);
1853
							strcat(strtmp, strname2);
1854
						}
1855
					}
1856
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1857
				}
1858
				giveid = strval(strtmp);
1859
				if(!IsPlayerConnected(giveid))
1860
				{
1861
					if(i == 1) strtmp = "Player not found";
1862
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
1863
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1864
				}
1865
				else
1866
				{
1867
					TogglePlayerControllable(giveid, 0);
1868
					GetPlayerName(giveid, strname2, sizeof strname2);
1869
					format(strtmp, sizeof strtmp, "Administrator %s has frozen %s[%d]", strname, strname2, giveid);
1870
					#if defined SEND_ACTION_MESSAGES_TO_ALL
1871
						SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
1872
					#else
1873
						SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
1874
					#endif
1875
					format(strtmp, sizeof strtmp, "Administrator %s has frozen you", strname);
1876
					SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1877
				}
1878
			}
1879
		}
1880
	}
1881
	return 1;
1882
}
1883
1884
CMD:unfreeze(playerid, params[]) return admsys_cmd_unfreeze(playerid, params);
1885
admsys_cmd_unfreeze(playerid, params[])
1886
{
1887
	if(IsPlayerAdminEx(playerid, 2))
1888
	{
1889
		new strtmp[97];
1890
		if(admsys_isnull(params))
1891
		{
1892
			format(strtmp, sizeof strtmp, "%d", playerid);
1893
			return admsys_cmd_unfreeze(playerid, strtmp);
1894
		}
1895
		static strname[24], strname2[24];
1896
		GetPlayerName(playerid, strname, sizeof strname);
1897
		for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
1898
		{
1899
			while(params[pos] == ' ') pos++;
1900
			if(params[pos])
1901
			{
1902
				oldpos = pos;
1903
				while(params[pos] > ' ') pos++;
1904
				strmid(strtmp, params, oldpos, pos);
1905
				if(!admsys_IsNumeric(strtmp))
1906
				{
1907
					strtmp = "Use: /unfreeze [id]";
1908
					if(i > 1)
1909
					{
1910
						for(j = 2; j <= i; j++)
1911
						{
1912
							format(strname2, sizeof strname2, " [id %d]", j);
1913
							strcat(strtmp, strname2);
1914
						}
1915
					}
1916
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1917
				}
1918
				giveid = strval(strtmp);
1919
				if(!IsPlayerConnected(giveid))
1920
				{
1921
					if(i == 1) strtmp = "Player not found";
1922
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
1923
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
1924
				}
1925
				else
1926
				{
1927
					TogglePlayerControllable(giveid, 1);
1928
					GetPlayerName(giveid, strname2, sizeof strname2);
1929
					format(strtmp, sizeof strtmp, "Administrator %s has unfreeze %s[%d]", strname, strname2, giveid);
1930
					#if defined SEND_ACTION_MESSAGES_TO_ALL
1931
						SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
1932
					#else
1933
						SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
1934
					#endif
1935
					format(strtmp, sizeof strtmp, "Administrator %s has unfreeze you", strname);
1936
					SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1937
				}
1938
			}
1939
		}
1940
	}
1941
	return 1;
1942
}
1943
1944
CMD:slap(playerid, params[]) return admsys_cmd_slap(playerid, params);
1945
admsys_cmd_slap(playerid, params[])
1946
{
1947
	if(IsPlayerAdminEx(playerid, 2))
1948
	{
1949
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /slap [id] [reason]");
1950
		static strtmp[145];
1951
		new pos;
1952
		while(params[pos] > ' ') pos++;
1953
		strmid(strtmp, params, 0, pos);
1954
		if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /slap [id] [reason]");
1955
		new giveid = strval(strtmp);
1956
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
1957
		if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
1958
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
1959
		if(IsPlayerSpectating(giveid))
1960
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player in spectator mode");
1961
		while(params[pos] == ' ') pos++;
1962
		if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /slap [id] [reason]");
1963
		static strname[24], strname2[24];
1964
		new Float:pX, Float:pY, Float:pZ;
1965
		GetPlayerPos(giveid, pX, pY, pZ);
1966
		SetPlayerPos(giveid, pX, pY, pZ + 8.0);
1967
		PlayerPlaySound(giveid, 1130, 0.0, 0.0, 0.0);
1968
		GetPlayerName(playerid, strname, sizeof strname);
1969
		GetPlayerName(giveid, strname2, sizeof strname2);
1970
		format(strtmp, sizeof strtmp, "Administrator %s slapped %s[%d]. Reason: %s", strname, strname2, giveid, params[pos]);
1971
		#if defined SEND_ACTION_MESSAGES_TO_ALL
1972
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
1973
		#else
1974
			SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
1975
		#endif
1976
		format(strtmp, sizeof strtmp, "Administrator %s slapped you. Reason: %s", strname, params[pos]);
1977
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
1978
	}
1979
	return 1;
1980
}
1981
1982
CMD:goto(playerid, params[]) return admsys_cmd_goto(playerid, params);
1983
admsys_cmd_goto(playerid, params[])
1984
{
1985
	if(IsPlayerAdminEx(playerid, 2))
1986
	{
1987
		if(IsPlayerSpectating(playerid))
1988
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are in spectator mode");
1989
		if(admsys_isnull(params) || !admsys_IsNumeric(params))
1990
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /goto [id]");
1991
		params[0] = strval(params);
1992
		if(params[0] == playerid) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't specify your id");
1993
		if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
1994
		static strtmp[54], strname[24];
1995
		new Float:pX, Float:pY, Float:pZ;
1996
		GetPlayerPos(params[0], pX, pY, pZ);
1997
		SetPlayerPos(playerid, pX + 1.0, pY + 1.0, pZ);
1998
		SetPlayerInterior(playerid, GetPlayerInterior(params[0]));
1999
		SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(params[0]));
2000
		GetPlayerName(params[0], strname, sizeof strname);
2001
		format(strtmp, sizeof strtmp, "You are teleported to %s[%d]", strname, params[0]);
2002
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2003
	}
2004
	return 1;
2005
}
2006
2007
CMD:suspectlist(playerid, params[]) return admsys_cmd_suspectlist(playerid, params);
2008
admsys_cmd_suspectlist(playerid, params[])
2009
{
2010
	#pragma unused params
2011
	if(IsPlayerAdminEx(playerid, 3))
2012
	{
2013
		UpdateSuspectList();
2014
		new c;
2015
		static strtmp[353], strtmp2[44], iname[24];
2016
		strtmp[0] = EOS;
2017
		for(new i; i < sizeof SuspectList; ++i)
2018
		{
2019
			if(SuspectList[i] != INVALID_PLAYER_ID)
2020
			{
2021
				GetPlayerName(SuspectList[i], iname, sizeof iname);
2022
				format(strtmp2, sizeof strtmp2, "%d. %s [ID: %d]\n", i + 1, iname, SuspectList[i]);
2023
				strcat(strtmp, strtmp2);
2024
				c++;
2025
			}
2026
		}
2027
		if(c) ShowPlayerDialog(playerid, ADMSYS_DIALOG_SUSPECT_LIST, 2, "Waiting for checking", strtmp, "Ok", "Close");
2028
		else SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "List is empty");
2029
	}
2030
	return 1;
2031
}
2032
2033
CMD:gethere(playerid, params[]) return admsys_cmd_gethere(playerid, params);
2034
CMD:get(playerid, params[]) return admsys_cmd_gethere(playerid, params);
2035
admsys_cmd_gethere(playerid, params[])
2036
{
2037
	if(IsPlayerAdminEx(playerid, 3))
2038
	{
2039
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /gethere [id]");
2040
		if(!strcmp(params, "all", true)) return admsys_cmd_getall(playerid, "\1");
2041
		static strname[24], strname2[24];
2042
		new strtmp[67], interior, vw, Float:pX, Float:pY, Float:pZ;
2043
		GetPlayerName(playerid, strname, sizeof strname);
2044
		interior = GetPlayerInterior(playerid);
2045
		vw = GetPlayerVirtualWorld(playerid);
2046
		GetPlayerPos(playerid, pX, pY, pZ);
2047
		pX += 1.0;
2048
		pY += 1.0;
2049
		for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
2050
		{
2051
			while(params[pos] == ' ') pos++;
2052
			if(params[pos])
2053
			{
2054
				oldpos = pos;
2055
				while(params[pos] > ' ') pos++;
2056
				strmid(strtmp, params, oldpos, pos);
2057
				if(!admsys_IsNumeric(strtmp))
2058
				{
2059
					strtmp = "Use: /gethere [id]";
2060
					if(i > 1)
2061
					{
2062
						for(j = 2; j <= i; j++)
2063
						{
2064
							format(strname2, sizeof strname2, " [id %d]", j);
2065
							strcat(strtmp, strname2);
2066
						}
2067
					}
2068
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2069
				}
2070
				giveid = strval(strtmp);
2071
				if(giveid == playerid) SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't specify your id");
2072
				else if(!IsPlayerConnected(giveid))
2073
				{
2074
					if(i == 1) strtmp = "Player not found";
2075
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
2076
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2077
				}
2078
				else
2079
				{
2080
					SetPlayerPos(giveid, pX, pY, pZ);
2081
					SetPlayerVirtualWorld(giveid, vw);
2082
					SetPlayerInterior(giveid, interior);
2083
					GetPlayerName(giveid, strname2, sizeof strname2);
2084
					format(strtmp, sizeof strtmp, "You teleported %s[%d] to himself", strname2, giveid);
2085
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2086
					format(strtmp, sizeof strtmp, "Administrator %s teleported you to himself", strname);
2087
					SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2088
				}
2089
			}
2090
		}
2091
	}
2092
	return 1;
2093
}
2094
2095
CMD:gotoveh(playerid, params[]) return admsys_cmd_gotoveh(playerid, params);
2096
admsys_cmd_gotoveh(playerid, params[])
2097
{
2098
	if(IsPlayerAdminEx(playerid, 3))
2099
	{
2100
		if(IsPlayerSpectating(playerid))
2101
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are in spectator mode");
2102
		if(admsys_isnull(params) || !admsys_IsNumeric(params))
2103
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /gotoveh [vehicle id]");
2104
		params[0] = strval(params);
2105
		if(!GetVehicleModel(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Vehicle not found");
2106
		static strtmp[50];
2107
		new Float:vX, Float:vY, Float:vZ;
2108
		GetVehiclePos(params[0], vX, vY, vZ);
2109
		SetPlayerPos(playerid, vX, vY, vZ + 2.5);
2110
		SetPlayerVirtualWorld(playerid, GetVehicleVirtualWorld(params[0]));
2111
		format(strtmp, sizeof strtmp, "You are teleported to vehicle id %d", params[0]);
2112
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2113
	}
2114
	return 1;
2115
}
2116
2117
CMD:ban(playerid, params[]) return admsys_cmd_ban(playerid, params);
2118
admsys_cmd_ban(playerid, params[])
2119
{
2120
	if(IsPlayerAdminEx(playerid, 3))
2121
	{
2122
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /ban [id] [reason]");
2123
		static strtmp[145];
2124
		new pos;
2125
		while(params[pos] > ' ') pos++;
2126
		strmid(strtmp, params, 0, pos);
2127
		if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /ban [id] [reason]");
2128
		new giveid = strval(strtmp);
2129
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2130
		if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
2131
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
2132
		while(params[pos] == ' ') pos++;
2133
		if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /ban [id] [reason]");
2134
		static strname[24], strname2[24];
2135
		CallLocalFunction("OnPlayerBan", "iii", giveid, playerid, false);
2136
		GetPlayerName(playerid, strname, sizeof strname);
2137
		GetPlayerName(giveid, strname2, sizeof strname2);
2138
		format(strtmp, sizeof strtmp, "Administrator %s has banned %s[%d]. Reason: %s", strname, strname2, giveid, params[pos]);
2139
		#if defined SEND_ACTION_MESSAGES_TO_ALL
2140
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2141
		#else
2142
			SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
2143
		#endif
2144
		format(strtmp, sizeof strtmp, "Administrator %s has banned you. Reason: %s", strname, params[pos]);
2145
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2146
		SetTimerEx("BanWithDelay", 500, 0, "i", giveid);
2147
	}
2148
	return 1;
2149
}
2150
2151
CMD:gmtest(playerid, params[]) return admsys_cmd_gmtest(playerid, params);
2152
admsys_cmd_gmtest(playerid, params[])
2153
{
2154
	if(IsPlayerAdminEx(playerid, 3))
2155
	{
2156
		if(admsys_isnull(params) || !admsys_IsNumeric(params))
2157
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /gmtest [id]");
2158
		params[0] = strval(params);
2159
		if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2160
		if(AdmSysInfo[playerid][asGmTestID] != INVALID_PLAYER_ID)
2161
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You already checks someone on GodMode");
2162
		if(AdmSysInfo[params[0]][asGmTest])
2163
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player are already checked for GodMode");
2164
		if(!AdmSysInfo[params[0]][asIsSpawned])
2165
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player isn't spawned");
2166
		if(IsPlayerSpectating(params[0]))
2167
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player in spectator mode");
2168
		new Float:bx, Float:by, Float:bz;
2169
		GetPlayerPos(params[0], bx, by, bz);
2170
		if(!IsPlayerInAnyVehicle(params[0]))
2171
		{
2172
			GetPlayerHealth(params[0], AdmSysInfo[params[0]][asGmTestHP]);
2173
			GetPlayerArmour(params[0], AdmSysInfo[params[0]][asGmTestAR]);
2174
		}
2175
		else GetVehicleHealth(GetPlayerVehicleID(params[0]), AdmSysInfo[params[0]][asGmTestHP]);
2176
		AdmSysInfo[params[0]][asGmTest] = true;
2177
		AdmSysInfo[playerid][asGmTestID] = params[0];
2178
		CreateExplosionForPlayer(params[0], bx, by, bz + 7.5, 5, 0.5);
2179
		SetTimerEx("GmTest", 1000, 0, "d", playerid);
2180
	}
2181
	return 1;
2182
}
2183
2184
CMD:spawn(playerid, params[]) return admsys_cmd_spawn(playerid, params);
2185
admsys_cmd_spawn(playerid, params[])
2186
{
2187
	if(IsPlayerAdminEx(playerid, 3))
2188
	{
2189
		new strtmp[102];
2190
		if(admsys_isnull(params))
2191
		{
2192
			format(strtmp, sizeof strtmp, "%d", playerid);
2193
			return admsys_cmd_spawn(playerid, strtmp);
2194
		}
2195
		static strname[24], strname2[24];
2196
		GetPlayerName(playerid, strname, sizeof strname);
2197
		for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
2198
		{
2199
			while(params[pos] == ' ') pos++;
2200
			if(params[pos])
2201
			{
2202
				oldpos = pos;
2203
				while(params[pos] > ' ') pos++;
2204
				strmid(strtmp, params, oldpos, pos);
2205
				if(!admsys_IsNumeric(strtmp))
2206
				{
2207
					strtmp = "Use: /spawn [id]";
2208
					if(i > 1)
2209
					{
2210
						for(j = 2; j <= i; j++)
2211
						{
2212
							format(strname2, sizeof strname2, " [id %d]", j);
2213
							strcat(strtmp, strname2);
2214
						}
2215
					}
2216
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2217
				}
2218
				giveid = strval(strtmp);
2219
				if(!IsPlayerConnected(giveid))
2220
				{
2221
					if(i == 1) strtmp = "Player not found";
2222
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
2223
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2224
				}
2225
				else
2226
				{
2227
					if(IsPlayerSpectating(giveid)) TogglePlayerSpectating(giveid, 0);
2228
					else SpawnPlayer(giveid);
2229
					GetPlayerName(giveid, strname2, sizeof strname2);
2230
					format(strtmp, sizeof strtmp, "Administrator %s has spawned %s[%d]", strname, strname2, giveid);
2231
					#if defined SEND_ACTION_MESSAGES_TO_ALL
2232
						SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2233
					#else
2234
						SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
2235
					#endif
2236
					format(strtmp, sizeof strtmp, "Administrator %s has spawned you", strname);
2237
					SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2238
				}
2239
			}
2240
		}
2241
	}
2242
	return 1;
2243
}
2244
2245
CMD:unwarn(playerid, params[]) return admsys_cmd_unwarn(playerid, params);
2246
admsys_cmd_unwarn(playerid, params[])
2247
{
2248
	if(IsPlayerAdminEx(playerid, 3))
2249
	{
2250
		new strtmp[109];
2251
		if(admsys_isnull(params))
2252
		{
2253
			format(strtmp, sizeof strtmp, "%d", playerid);
2254
			return admsys_cmd_unwarn(playerid, strtmp);
2255
		}
2256
		static strname[24], strname2[24];
2257
		GetPlayerName(playerid, strname, sizeof strname);
2258
		for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
2259
		{
2260
			while(params[pos] == ' ') pos++;
2261
			if(params[pos])
2262
			{
2263
				oldpos = pos;
2264
				while(params[pos] > ' ') pos++;
2265
				strmid(strtmp, params, oldpos, pos);
2266
				if(!admsys_IsNumeric(strtmp))
2267
				{
2268
					strtmp = "Use: /unwarn [id]";
2269
					if(i > 1)
2270
					{
2271
						for(j = 2; j <= i; j++)
2272
						{
2273
							format(strname2, sizeof strname2, " [id %d]", j);
2274
							strcat(strtmp, strname2);
2275
						}
2276
					}
2277
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2278
				}
2279
				giveid = strval(strtmp);
2280
				if(!IsPlayerConnected(giveid))
2281
				{
2282
					if(i == 1) strtmp = "Player not found";
2283
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
2284
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2285
				}
2286
				else if(!AdmSysInfo[giveid][asWarns])
2287
				{
2288
					if(i == 1) strtmp = "Player has no warns";
2289
					else format(strtmp, sizeof strtmp, "Player %d has no warns", i);
2290
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2291
				}
2292
				else
2293
				{
2294
					AdmSysInfo[giveid][asWarns]--;
2295
					GetPlayerName(giveid, strname2, sizeof strname2);
2296
					format(strtmp, sizeof strtmp, "Administrator %s has removed warning from %s[%d]", strname, strname2, giveid);
2297
					#if defined SEND_ACTION_MESSAGES_TO_ALL
2298
						SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2299
					#else
2300
						SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
2301
					#endif
2302
					format(strtmp, sizeof strtmp, "Administrator %s has removed warning from you", strname);
2303
					SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2304
				}
2305
			}
2306
		}
2307
	}
2308
	return 1;
2309
}
2310
2311
CMD:banip(playerid, params[]) return admsys_cmd_banip(playerid, params);
2312
admsys_cmd_banip(playerid, params[])
2313
{
2314
	if(IsPlayerAdminEx(playerid, 3))
2315
	{
2316
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /banip [IP]");
2317
		for(new i, c, j = strlen(params); i < j; i++)
2318
		{
2319
			switch(params[i])
2320
			{
2321
				case '*':
2322
				{
2323
					if(c < 2) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP address entered incorrectly");
2324
				}
2325
				case '.': c++;
2326
				case '0'..'9':{}
2327
				default: return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP address entered incorrectly");
2328
			}
2329
		}
2330
		static strtmp[75], strname[24];
2331
		format(strtmp, sizeof strtmp, "banip %s", params);
2332
		SendRconCommand(strtmp);
2333
		SendRconCommand("reloadbans");
2334
		GetPlayerName(playerid, strname, sizeof strname);
2335
		format(strtmp, sizeof strtmp, "Administrator %s has blocked IP %s", strname, params);
2336
		#if defined SEND_ACTION_MESSAGES_TO_ALL
2337
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2338
		#else
2339
			SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
2340
		#endif
2341
	}
2342
	return 1;
2343
}
2344
2345
CMD:cc(playerid, params[]) return admsys_cmd_cc(playerid, params);
2346
CMD:clearchat(playerid, params[]) return admsys_cmd_cc(playerid, params);
2347
admsys_cmd_cc(playerid, params[])
2348
{
2349
	#pragma unused params
2350
	if(IsPlayerAdminEx(playerid, 3))
2351
	{
2352
		static strtmp[62], strname[24];
2353
		for(new i = 20; i != -1; --i) SendClientMessageToAll(-1, " ");
2354
		GetPlayerName(playerid, strname, sizeof strname);
2355
		format(strtmp, sizeof strtmp, "Administrator %s has cleared the chat", strname);
2356
		#if defined SEND_ACTION_MESSAGES_TO_ALL
2357
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2358
		#else
2359
			SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
2360
		#endif
2361
	}
2362
	return 1;
2363
}
2364
2365
CMD:sethealth(playerid, params[]) return admsys_cmd_sethealth(playerid, params);
2366
admsys_cmd_sethealth(playerid, params[])
2367
{
2368
	if(IsPlayerAdminEx(playerid, 4))
2369
	{
2370
		if(admsys_isnull(params))
2371
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /sethealth [id] [health]");
2372
		static strtmp[68];
2373
		new pos, oldpos;
2374
		while(params[pos] > ' ') pos++;
2375
		strmid(strtmp, params, 0, pos);
2376
		if(!admsys_IsNumeric(strtmp))
2377
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /sethealth [id] [health]");
2378
		new giveid = strval(strtmp);
2379
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2380
		while(params[pos] == ' ') pos++;
2381
		oldpos = pos;
2382
		while(params[pos] > ' ') pos++;
2383
		strmid(strtmp, params, oldpos, pos);
2384
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2385
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /sethealth [id] [health]");
2386
		static strname[24];
2387
		new Float:ghealth = strval(strtmp);
2388
		AdmSysInfo[playerid][asLastAction] = 1;
2389
		GetPlayerHealth(giveid, AdmSysInfo[playerid][asLastFloatData]);
2390
		AdmSysInfo[playerid][asLastActionID] = giveid;
2391
		SetPlayerHealth(giveid, ghealth);
2392
		GetPlayerName(giveid, strname, sizeof strname);
2393
		format(strtmp, sizeof strtmp, "You have set %.1f health to %s[%d]", ghealth, strname, giveid);
2394
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2395
		GetPlayerName(playerid, strname, sizeof strname);
2396
		format(strtmp, sizeof strtmp, "Administrator %s has set you %.1f health", strname, ghealth);
2397
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2398
	}
2399
	return 1;
2400
}
2401
2402
CMD:setarmour(playerid, params[]) return admsys_cmd_setarmour(playerid, params);
2403
admsys_cmd_setarmour(playerid, params[])
2404
{
2405
	if(IsPlayerAdminEx(playerid, 4))
2406
	{
2407
		if(admsys_isnull(params))
2408
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setarmour [id] [armour]");
2409
		static strtmp[68];
2410
		new pos, oldpos;
2411
		while(params[pos] > ' ') pos++;
2412
		strmid(strtmp, params, 0, pos);
2413
		if(!admsys_IsNumeric(strtmp))
2414
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setarmour [id] [armour]");
2415
		new giveid = strval(strtmp);
2416
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2417
		while(params[pos] == ' ') pos++;
2418
		oldpos = pos;
2419
		while(params[pos] > ' ') pos++;
2420
		strmid(strtmp, params, oldpos, pos);
2421
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2422
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setarmour [id] [armour]");
2423
		static strname[24];
2424
		new Float:garmour = strval(strtmp);
2425
		AdmSysInfo[playerid][asLastAction] = 2;
2426
		GetPlayerArmour(giveid, AdmSysInfo[playerid][asLastFloatData]);
2427
		AdmSysInfo[playerid][asLastActionID] = giveid;
2428
		SetPlayerArmour(giveid, garmour);
2429
		GetPlayerName(giveid, strname, sizeof strname);
2430
		format(strtmp, sizeof strtmp, "You have set %.1f armour to %s[%d]", garmour, strname, giveid);
2431
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2432
		GetPlayerName(playerid, strname, sizeof strname);
2433
		format(strtmp, sizeof strtmp, "Administrator %s has set you %.1f armour", strname, garmour);
2434
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2435
	}
2436
	return 1;
2437
}
2438
2439
CMD:setmoney(playerid, params[]) return admsys_cmd_setmoney(playerid, params);
2440
admsys_cmd_setmoney(playerid, params[])
2441
{
2442
	if(IsPlayerAdminEx(playerid, 4))
2443
	{
2444
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setmoney [id] [money]");
2445
		static strtmp[64];
2446
		new pos, oldpos;
2447
		while(params[pos] > ' ') pos++;
2448
		strmid(strtmp, params, 0, pos);
2449
		if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setmoney [id] [money]");
2450
		new giveid = strval(strtmp);
2451
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2452
		while(params[pos] == ' ') pos++;
2453
		oldpos = pos;
2454
		while(params[pos] > ' ') pos++;
2455
		strmid(strtmp, params, oldpos, pos);
2456
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2457
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setmoney [id] [money]");
2458
		static strname[24];
2459
		new gmoney = strval(strtmp);
2460
		AdmSysInfo[playerid][asLastAction] = 3;
2461
		AdmSysInfo[playerid][asLastIntData][0] = GetPlayerMoney(giveid);
2462
		AdmSysInfo[playerid][asLastActionID] = giveid;
2463
		ResetPlayerMoney(giveid);
2464
		GivePlayerMoney(giveid, gmoney);
2465
		GetPlayerName(giveid, strname, sizeof strname);
2466
		format(strtmp, sizeof strtmp, "You have set $%d to %s[%d]", gmoney, strname, giveid);
2467
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2468
		GetPlayerName(playerid, strname, sizeof strname);
2469
		format(strtmp, sizeof strtmp, "Administrator %s has set you $%d", strname, gmoney);
2470
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2471
	}
2472
	return 1;
2473
}
2474
2475
CMD:setskin(playerid, params[]) return admsys_cmd_setskin(playerid, params);
2476
admsys_cmd_setskin(playerid, params[])
2477
{
2478
	if(IsPlayerAdminEx(playerid, 4))
2479
	{
2480
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setskin [id] [skin]");
2481
		static strtmp[60];
2482
		new pos, oldpos;
2483
		while(params[pos] > ' ') pos++;
2484
		strmid(strtmp, params, 0, pos);
2485
		if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setskin [id] [skin]");
2486
		new giveid = strval(strtmp);
2487
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2488
		while(params[pos] == ' ') pos++;
2489
		oldpos = pos;
2490
		while(params[pos] > ' ') pos++;
2491
		strmid(strtmp, params, oldpos, pos);
2492
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2493
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setskin [id] [skin]");
2494
		new skinid = strval(strtmp);
2495
		if(!(-1 < skinid < 312)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use ID of skin from 0 to 311");
2496
		static strname[24];
2497
		AdmSysInfo[playerid][asLastAction] = 4;
2498
		AdmSysInfo[playerid][asLastIntData][0] = GetPlayerSkin(giveid);
2499
		AdmSysInfo[playerid][asLastActionID] = giveid;
2500
		SetPlayerSkin(giveid, skinid);
2501
		GetPlayerName(giveid, strname, sizeof strname);
2502
		format(strtmp, sizeof strtmp, "You have changed the skin to %d to %s[%d]", skinid, strname, giveid);
2503
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2504
		GetPlayerName(playerid, strname, sizeof strname);
2505
		format(strtmp, sizeof strtmp, "Administrator %s has changed your skin to %d", strname, skinid);
2506
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2507
	}
2508
	return 1;
2509
}
2510
2511
CMD:setint(playerid, params[]) return admsys_cmd_setint(playerid, params);
2512
CMD:setinterior(playerid, params[]) return admsys_cmd_setint(playerid, params);
2513
admsys_cmd_setint(playerid, params[])
2514
{
2515
	if(IsPlayerAdminEx(playerid, 4))
2516
	{
2517
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setint [id] [interior]");
2518
		static strtmp[70];
2519
		new pos, oldpos;
2520
		while(params[pos] > ' ') pos++;
2521
		strmid(strtmp, params, 0, pos);
2522
		if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setint [id] [interior]");
2523
		new giveid = strval(strtmp);
2524
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2525
		while(params[pos] == ' ') pos++;
2526
		oldpos = pos;
2527
		while(params[pos] > ' ') pos++;
2528
		strmid(strtmp, params, oldpos, pos);
2529
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2530
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setint [id] [interior]");
2531
		static strname[24];
2532
		new gint = strval(strtmp);
2533
		AdmSysInfo[playerid][asLastAction] = 5;
2534
		AdmSysInfo[playerid][asLastIntData][0] = GetPlayerInterior(giveid);
2535
		AdmSysInfo[playerid][asLastActionID] = giveid;
2536
		SetPlayerInterior(giveid, gint);
2537
		GetPlayerName(giveid, strname, sizeof strname);
2538
		format(strtmp, sizeof strtmp, "You have set the interior to %d to %s[%d]", gint, strname, giveid);
2539
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2540
		GetPlayerName(playerid, strname, sizeof strname);
2541
		format(strtmp, sizeof strtmp, "Administrator %s has set your interior to %d", strname, gint);
2542
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2543
	}
2544
	return 1;
2545
}
2546
2547
CMD:setvw(playerid, params[]) return admsys_cmd_setvw(playerid, params);
2548
CMD:setvirtualworld(playerid, params[]) return admsys_cmd_setvw(playerid, params);
2549
admsys_cmd_setvw(playerid, params[])
2550
{
2551
	if(IsPlayerAdminEx(playerid, 4))
2552
	{
2553
		if(admsys_isnull(params))
2554
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setvw [id] [vw]");
2555
		static strtmp[82];
2556
		new pos, oldpos;
2557
		while(params[pos] > ' ') pos++;
2558
		strmid(strtmp, params, 0, pos);
2559
		if(!admsys_IsNumeric(strtmp))
2560
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setvw [id] [vw]");
2561
		new giveid = strval(strtmp);
2562
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2563
		while(params[pos] == ' ') pos++;
2564
		oldpos = pos;
2565
		while(params[pos] > ' ') pos++;
2566
		strmid(strtmp, params, oldpos, pos);
2567
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2568
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setvw [id] [vw]");
2569
		static strname[24];
2570
		new gvw = strval(strtmp);
2571
		AdmSysInfo[playerid][asLastAction] = 6;
2572
		AdmSysInfo[playerid][asLastIntData][0] = GetPlayerVirtualWorld(giveid);
2573
		AdmSysInfo[playerid][asLastActionID] = giveid;
2574
		SetPlayerVirtualWorld(giveid, gvw);
2575
		GetPlayerName(giveid, strname, sizeof strname);
2576
		format(strtmp, sizeof strtmp, "You have set the virtual world to %d to %s[%d]", gvw, strname, giveid);
2577
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2578
		GetPlayerName(playerid, strname, sizeof strname);
2579
		format(strtmp, sizeof strtmp, "Administrator %s has set your virtual world to %d", strname, gvw);
2580
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2581
	}
2582
	return 1;
2583
}
2584
2585
CMD:giveweapon(playerid, params[]) return admsys_cmd_giveweapon(playerid, params);
2586
admsys_cmd_giveweapon(playerid, params[])
2587
{
2588
	if(IsPlayerAdminEx(playerid, 4))
2589
	{
2590
		if(admsys_isnull(params))
2591
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /giveweapon [id] [weapon] [ammo]");
2592
		static strtmp[79];
2593
		new pos, oldpos;
2594
		while(params[pos] > ' ') pos++;
2595
		strmid(strtmp, params, 0, pos);
2596
		if(!admsys_IsNumeric(strtmp))
2597
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /giveweapon [id] [weapon] [ammo]");
2598
		new giveid = strval(strtmp);
2599
		if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player not found");
2600
		while(params[pos] == ' ') pos++;
2601
		oldpos = pos;
2602
		while(params[pos] > ' ') pos++;
2603
		strmid(strtmp, params, oldpos, pos);
2604
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2605
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /giveweapon [id] [weapon] [ammo]");
2606
		new gweapon = strval(strtmp);
2607
		if(!(-1 < gweapon < 47)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use the ID of weapon from 0 to 46");
2608
		while(params[pos] == ' ') pos++;
2609
		oldpos = pos;
2610
		while(params[pos] > ' ') pos++;
2611
		strmid(strtmp, params, oldpos, pos);
2612
		if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2613
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /giveweapon [id] [weapon] [ammo]");
2614
		static strname[24];
2615
		new gammo = strval(strtmp);
2616
		AdmSysInfo[playerid][asLastAction] = 7;
2617
		AdmSysInfo[playerid][asLastIntData][0] = gweapon;
2618
		AdmSysInfo[playerid][asLastIntData][1] = gammo;
2619
		AdmSysInfo[playerid][asLastActionID] = giveid;
2620
		GivePlayerWeapon(giveid, gweapon, gammo);
2621
		GetPlayerName(giveid, strname, sizeof strname);
2622
		format(strtmp, sizeof strtmp, "You have gave the weapon %d with %d ammo to %s[%d]", gweapon, gammo, strname, giveid);
2623
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2624
		GetPlayerName(playerid, strname, sizeof strname);
2625
		format(strtmp, sizeof strtmp, "Administrator %s gave you weapon %d with %d ammo", strname, gweapon, gammo);
2626
		SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
2627
	}
2628
	return 1;
2629
}
2630
2631
CMD:repairveh(playerid, params[]) return admsys_cmd_repairveh(playerid, params);
2632
admsys_cmd_repairveh(playerid, params[])
2633
{
2634
	if(IsPlayerAdminEx(playerid, 4))
2635
	{
2636
		if(admsys_isnull(params))
2637
		{
2638
			if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in vehicle");
2639
			params[0] = GetPlayerVehicleID(playerid);
2640
		}
2641
		else
2642
		{
2643
			if(!admsys_IsNumeric(params))
2644
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /repairveh [vehicle id]");
2645
			params[0] = strval(params);
2646
			if(!GetVehicleModel(params[0]))
2647
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Vehicle is not found");
2648
		}
2649
		static strtmp[25];
2650
		RepairVehicle(params[0]);
2651
		format(strtmp, sizeof strtmp, "Vehicle id %d repaired", params[0]);
2652
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2653
	}
2654
	return 1;
2655
}
2656
2657
CMD:unbanip(playerid, params[]) return admsys_cmd_unbanip(playerid, params);
2658
admsys_cmd_unbanip(playerid, params[])
2659
{
2660
	if(IsPlayerAdminEx(playerid, 4))
2661
	{
2662
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /unbanip [IP]");
2663
		for(new i, j = strlen(params); i < j; i++)
2664
		{
2665
			switch(params[i])
2666
			{
2667
				case '*', '.', '0'..'9':{}
2668
				default: return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP address entered incorrectly");
2669
			}
2670
		}
2671
		static strtmp[77], strname[24];
2672
		format(strtmp, sizeof strtmp, "unbanip %s", params);
2673
		SendRconCommand(strtmp);
2674
		SendRconCommand("reloadbans");
2675
		GetPlayerName(playerid, strname, sizeof strname);
2676
		format(strtmp, sizeof strtmp, "Administrator %s unblocked the IP %s", strname, params);
2677
		#if defined SEND_ACTION_MESSAGES_TO_ALL
2678
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2679
		#else
2680
			SendMessageToAdmins(4, ADMSYS_DEFAULT_COLOR, strtmp);
2681
		#endif
2682
	}
2683
	return 1;
2684
}
2685
2686
CMD:setweather(playerid, params[]) return admsys_cmd_setweather(playerid, params);
2687
admsys_cmd_setweather(playerid, params[])
2688
{
2689
	if(IsPlayerAdminEx(playerid, 5))
2690
	{
2691
		if(admsys_isnull(params) || !admsys_IsNumeric(params))
2692
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setweather [weather]");
2693
		params[0] = strval(params);
2694
		if(!(-1 < params[0] < 21)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Weather ID should be from 0 to 20");
2695
		SetWeather(params[0]);
2696
		#if defined foreach
2697
		foreach(new i : Player)
2698
		#else
2699
		for(new i = GetPlayerPoolSize(); i != -1; --i)
2700
		#endif
2701
		{
2702
			SetPlayerWeather(i, params[0]);
2703
		}
2704
		static strtmp[66], strname[24];
2705
		GetPlayerName(playerid, strname, sizeof strname);
2706
		format(strtmp, sizeof strtmp, "Administrator %s changed the weather to %d", strname, params[0]);
2707
		#if defined SEND_ACTION_MESSAGES_TO_ALL
2708
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2709
		#else
2710
			SendMessageToAdmins(5, ADMSYS_DEFAULT_COLOR, strtmp);
2711
		#endif
2712
	}
2713
	return 1;
2714
}
2715
2716
CMD:getall(playerid, params[]) return admsys_cmd_getall(playerid, params);
2717
admsys_cmd_getall(playerid, params[])
2718
{
2719
	#pragma unused params
2720
	if(IsPlayerAdminEx(playerid, 5))
2721
	{
2722
		new Float:pX, Float:pY, Float:pZ;
2723
		GetPlayerPos(playerid, pX, pY, pZ);
2724
		pX += 1.0;
2725
		pY += 1.0;
2726
		new interior = GetPlayerInterior(playerid), vw = GetPlayerVirtualWorld(playerid);
2727
		#if defined foreach
2728
			foreach(new i : Player)
2729
		#else
2730
			for(new i = GetPlayerPoolSize(); i != -1; --i)
2731
			{
2732
				if(IsPlayerConnected(i))
2733
		#endif
2734
		{
2735
			if(!IsPlayerNPC(i) && i != playerid)
2736
			{
2737
				SetPlayerVirtualWorld(i, vw);
2738
				SetPlayerInterior(i, interior);
2739
				SetPlayerPos(i, pX, pY, pZ);
2740
			}
2741
		}
2742
		#if !defined foreach
2743
			}
2744
		#endif
2745
		static strtmp[67], strname[24];
2746
		GetPlayerName(playerid, strname, sizeof strname);
2747
		format(strtmp, sizeof strtmp, "Administrator %s teleported all to himself", strname);
2748
		SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2749
	}
2750
	return 1;
2751
}
2752
2753
CMD:settime(playerid, params[]) return admsys_cmd_settime(playerid, params);
2754
admsys_cmd_settime(playerid, params[])
2755
{
2756
	if(IsPlayerAdminEx(playerid, 5))
2757
	{
2758
		if(admsys_isnull(params) || !admsys_IsNumeric(params))
2759
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /settime [hour]");
2760
		params[0] = strval(params);
2761
		if(!(-1 < params[0] < 24)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "The hour must be between 0 and 23");
2762
		SetWorldTime(params[0]);
2763
		#if defined foreach
2764
		foreach(new i : Player)
2765
		#else
2766
		for(new i = GetPlayerPoolSize(); i != -1; --i)
2767
		#endif
2768
		{
2769
			SetPlayerTime(i, params[0], 0);
2770
		}
2771
		static strtmp[70], strname[24];
2772
		GetPlayerName(playerid, strname, sizeof strname);
2773
		format(strtmp, sizeof strtmp, "Administrator %s changed the time to %d hours", strname, params[0]);
2774
		#if defined SEND_ACTION_MESSAGES_TO_ALL
2775
			SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
2776
			#undef SEND_ACTION_MESSAGES_TO_ALL
2777
		#else
2778
			SendMessageToAdmins(5, ADMSYS_DEFAULT_COLOR, strtmp);
2779
		#endif
2780
	}
2781
	return 1;
2782
}
2783
2784
CMD:destroyveh(playerid, params[]) return admsys_cmd_destroyveh(playerid, params);
2785
admsys_cmd_destroyveh(playerid, params[])
2786
{
2787
	if(IsPlayerAdminEx(playerid, 5))
2788
	{
2789
		if(admsys_isnull(params))
2790
		{
2791
			if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in vehicle");
2792
			params[0] = GetPlayerVehicleID(playerid);
2793
		}
2794
		else
2795
		{
2796
			if(!admsys_IsNumeric(params))
2797
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /destroyveh [vehicle id]");
2798
			params[0] = strval(params);
2799
			if(!GetVehicleModel(params[0]))
2800
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Vehicle is not found");
2801
		}
2802
		static strtmp[26];
2803
		DestroyVehicle(params[0]);
2804
		format(strtmp, sizeof strtmp, "Vehicle id %d destroyed", params[0]);
2805
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2806
	}
2807
	return 1;
2808
}
2809
2810
CMD:veh(playerid, params[]) return admsys_cmd_veh(playerid, params);
2811
CMD:vehicle(playerid, params[]) return admsys_cmd_veh(playerid, params);
2812
admsys_cmd_veh(playerid, params[])
2813
{
2814
	if(IsPlayerAdminEx(playerid, 5))
2815
	{
2816
		if(IsPlayerSpectating(playerid))
2817
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are in spectator mode");
2818
		if(admsys_isnull(params))
2819
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /veh [vehicle id] [color 1] [color 2]");
2820
		static strtmp[48];
2821
		new pos, oldpos;
2822
		while(params[pos] > ' ') pos++;
2823
		strmid(strtmp, params, 0, pos);
2824
		if(!admsys_IsNumeric(strtmp))
2825
			return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /veh [vehicle id] [color 1] [color 2]");
2826
		new gveh = strval(strtmp);
2827
		if(!(399 < gveh < 612)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use the vehicle ID from 400 to 611");
2828
		while(params[pos] == ' ') pos++;
2829
		oldpos = pos;
2830
		new gcolor1, gcolor2;
2831
		if(!params[oldpos])
2832
		{
2833
			gcolor1 = random(256);
2834
			gcolor2 = random(256);
2835
		}
2836
		else
2837
		{
2838
			while(params[pos] > ' ') pos++;
2839
			strmid(strtmp, params, oldpos, pos);
2840
			if(!admsys_IsNumeric(strtmp))
2841
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /veh [vehicle id] [color 1] [color 2]");
2842
			gcolor1 = strval(strtmp);
2843
			if(!(-1 < gcolor1 < 256))
2844
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use the color 1 from 0 to 255");
2845
			while(params[pos] == ' ') pos++;
2846
			oldpos = pos;
2847
			while(params[pos] > ' ') pos++;
2848
			strmid(strtmp, params, oldpos, pos);
2849
			if(!params[oldpos] || !admsys_IsNumeric(strtmp))
2850
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /veh [vehicle id] [color 1] [color 2]");
2851
			gcolor2 = strval(strtmp);
2852
			if(!(-1 < gcolor2 < 256))
2853
				return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use the color 2 from 0 to 255");
2854
		}
2855
		new vid, Float:pX, Float:pY, Float:pZ, Float:pAngle;
2856
		GetPlayerPos(playerid, pX, pY, pZ);
2857
		GetPlayerFacingAngle(playerid, pAngle);
2858
		vid = CreateVehicle(gveh, pX, pY, pZ, pAngle, gcolor1, gcolor2, -1);
2859
		SetVehicleVirtualWorld(vid, GetPlayerVirtualWorld(playerid));
2860
		LinkVehicleToInterior(vid, GetPlayerInterior(playerid));
2861
		PutPlayerInVehicle(playerid, vid, 0);
2862
		format(strtmp, sizeof strtmp, "Vehicle id %d with colors %d and %d spawned", vid, gcolor1, gcolor2);
2863
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2864
	}
2865
	return 1;
2866
}
2867
2868
CMD:skick(playerid, params[]) return admsys_cmd_skick(playerid, params);
2869
admsys_cmd_skick(playerid, params[])
2870
{
2871
	if(IsPlayerAdminEx(playerid, 5))
2872
	{
2873
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /skick [id]");
2874
		static strtmp2[10];
2875
		for(new i = 1, strtmp[32], pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
2876
		{
2877
			while(params[pos] == ' ') pos++;
2878
			if(params[pos])
2879
			{
2880
				oldpos = pos;
2881
				while(params[pos] > ' ') pos++;
2882
				strmid(strtmp, params, oldpos, pos);
2883
				if(!admsys_IsNumeric(strtmp))
2884
				{
2885
					strtmp = "Use: /skick [id]";
2886
					if(i > 1)
2887
					{
2888
						for(j = 2; j <= i; j++)
2889
						{
2890
							format(strtmp2, sizeof strtmp2, " [id %d]", j);
2891
							strcat(strtmp, strtmp2);
2892
						}
2893
					}
2894
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2895
				}
2896
				giveid = strval(strtmp);
2897
				if(!IsPlayerConnected(giveid))
2898
				{
2899
					if(i == 1) strtmp = "Player not found";
2900
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
2901
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2902
				}
2903
				else
2904
				{
2905
					CallLocalFunction("OnPlayerKick", "iii", giveid, playerid, true);
2906
					Kick(giveid);
2907
				}
2908
			}
2909
		}
2910
	}
2911
	return 1;
2912
}
2913
2914
CMD:sban(playerid, params[]) return admsys_cmd_sban(playerid, params);
2915
admsys_cmd_sban(playerid, params[])
2916
{
2917
	if(IsPlayerAdminEx(playerid, 5))
2918
	{
2919
		if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /sban [id]");
2920
		static strtmp2[10];
2921
		for(new i = 1, strtmp[32], pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
2922
		{
2923
			while(params[pos] == ' ') pos++;
2924
			if(params[pos])
2925
			{
2926
				oldpos = pos;
2927
				while(params[pos] > ' ') pos++;
2928
				strmid(strtmp, params, oldpos, pos);
2929
				if(!admsys_IsNumeric(strtmp))
2930
				{
2931
					strtmp = "Use: /sban [id]";
2932
					if(i > 1)
2933
					{
2934
						for(j = 2; j <= i; j++)
2935
						{
2936
							format(strtmp2, sizeof strtmp2, " [id %d]", j);
2937
							strcat(strtmp, strtmp2);
2938
						}
2939
					}
2940
					return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2941
				}
2942
				giveid = strval(strtmp);
2943
				if(!IsPlayerConnected(giveid))
2944
				{
2945
					if(i == 1) strtmp = "Player not found";
2946
					else format(strtmp, sizeof strtmp, "Player %d not found", i);
2947
					SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
2948
				}
2949
				else
2950
				{
2951
					CallLocalFunction("OnPlayerBan", "iii", giveid, playerid, true);
2952
					Ban(giveid);
2953
				}
2954
			}
2955
		}
2956
	}
2957
	return 1;
2958
}
2959
2960
stock SetPlayerAdminLevel(playerid, lvl)
2961
{
2962
	if(!IsPlayerConnected(playerid) || !(0 <= lvl <= 5)) return 0;
2963
	AdmSysInfo[playerid][asAdminLvl] = lvl;
2964
	return 1;
2965
}
2966
2967
stock GetPlayerAdminLevel(playerid)
2968
{
2969
	if(!IsPlayerConnected(playerid)) return 0;
2970
	if(IsPlayerAdmin(playerid)) return 5;
2971
	return AdmSysInfo[playerid][asAdminLvl];
2972
}
2973
2974
stock IsPlayerAdminEx(playerid, lvl = 1) return (GetPlayerAdminLevel(playerid) >= lvl);
2975
2976
stock SetPlayerMuteTime(playerid, time)
2977
{
2978
	if(!IsPlayerConnected(playerid) || time < 0) return 0;
2979
	AdmSysInfo[playerid][asMuteTime] = time;
2980
	return 1;
2981
}
2982
2983
stock GetPlayerMuteTime(playerid) return (IsPlayerConnected(playerid) ? AdmSysInfo[playerid][asMuteTime] : 0);
2984
2985
stock UpdateSuspectList()
2986
{
2987
	new c;
2988
	for(new i, j; i < sizeof SuspectList; ++i)
2989
	{
2990
		if(!IsPlayerConnected(SuspectList[i]))
2991
		{
2992
			c++;
2993
			for(j = i; j < sizeof(SuspectList) - 1; ++j) SuspectList[j] = SuspectList[j + 1];
2994
			SuspectList[j] = INVALID_PLAYER_ID;
2995
		}
2996
	}
2997
	return c;
2998
}
2999
3000
stock AddPlayerInSuspectList(playerid)
3001
{
3002
	UpdateSuspectList();
3003
	if(IsPlayerConnected(playerid))
3004
	{
3005
		new i;
3006
		for(i = sizeof(SuspectList) - 1; i != -1; --i)
3007
		{
3008
			if(SuspectList[i] == playerid) return 0;
3009
		}
3010
		new tmp1 = SuspectList[0], tmp2;
3011
		for(i = 0; i < sizeof(SuspectList) - 1; ++i)
3012
		{
3013
			tmp2 = SuspectList[i + 1];
3014
			SuspectList[i + 1] = tmp1;
3015
			tmp1 = tmp2;
3016
		}
3017
		SuspectList[0] = playerid;
3018
		return 1;
3019
	}
3020
	return 0;
3021
}
3022
3023
stock RemovePlayerFromSuspectList(playerid)
3024
{
3025
	for(new i = sizeof(SuspectList) - 1; i != -1; --i)
3026
	{
3027
		if(SuspectList[i] == playerid)
3028
		{
3029
			SuspectList[i] = INVALID_PLAYER_ID;
3030
			break;
3031
		}
3032
	}
3033
	UpdateSuspectList();
3034
	return 1;
3035
}
3036
3037
stock SendMessageToAdmins(lvl, color, const msg[])
3038
{
3039
	#if defined foreach
3040
	foreach(new i : Player)
3041
	#else
3042
	for(new i = GetPlayerPoolSize(); i != -1; --i)
3043
	#endif
3044
	{
3045
		if(GetPlayerAdminLevel(i) >= lvl) SendClientMessage(i, color, msg);
3046
	}
3047
	return 1;
3048
}
3049
3050
static stock admsys_IsNumeric(const string[])
3051
{
3052
	new length = strlen(string);
3053
	if(!length) return 0;
3054
	for(new i; i < length; i++)
3055
	{
3056
		if(!('0' <= string[i] <= '9' || !i && (string[i] == '-' || string[i] == '+'))) return 0;
3057
	}
3058
	return 1;
3059
}
3060
3061
stock IsPlayerSpectating(playerid) return IsPlayerConnected(AdmSysInfo[playerid][asSpecID]);
3062
3063
stock StartSpectating(playerid, specid)
3064
{
3065
	if(!IsPlayerConnected(playerid) || !IsPlayerConnected(specid)) return 0;
3066
	if(playerid == specid) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't spectate yourself");
3067
	if(IsPlayerSpectating(specid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player in spectator mode");
3068
	if(AdmSysInfo[playerid][asSpecID] == specid) return UpdateSpectating(playerid);
3069
	if(!AdmSysInfo[specid][asIsSpawned] && !AdmSysInfo[specid][asIsDead])
3070
		return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player isn't spawned yet");
3071
	if(!IsPlayerSpectating(playerid))
3072
	{
3073
		for(new i = 12; i != -1; --i)
3074
			GetPlayerWeaponData(playerid, i, AdmSysInfo[playerid][asLastWeapon][i], AdmSysInfo[playerid][asLastAmmo][i]);
3075
		GetPlayerPos(playerid, AdmSysInfo[playerid][asLastPos][0],
3076
		AdmSysInfo[playerid][asLastPos][1], AdmSysInfo[playerid][asLastPos][2]);
3077
		AdmSysInfo[playerid][asLastSpec] = (GetPlayerState(playerid) == 9);
3078
		GetPlayerFacingAngle(playerid, AdmSysInfo[playerid][asLastAngle]);
3079
		AdmSysInfo[playerid][asLastVW] = GetPlayerVirtualWorld(playerid);
3080
		AdmSysInfo[playerid][asLastInt] = GetPlayerInterior(playerid);
3081
	}
3082
	AdmSysInfo[playerid][asLastSpecID] = AdmSysInfo[playerid][asSpecID];
3083
	TogglePlayerSpectating(playerid, 1);
3084
	if(AdmSysInfo[specid][asIsDead])
3085
	{
3086
		new Float:pX, Float:pY, Float:pZ, Float:cX, Float:cY, Float:cZ;
3087
		GetPlayerCameraPos(specid, cX, cY, cZ);
3088
		GetPlayerPos(specid, pX, pY, pZ);
3089
		SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player died");
3090
		SetPlayerCameraPos(playerid, cX, cY, cZ);
3091
		SetPlayerCameraLookAt(playerid, pX, pY, pZ);
3092
	}
3093
	SetPlayerInterior(playerid, GetPlayerInterior(specid));
3094
	SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specid));
3095
	if(IsPlayerInAnyVehicle(specid)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specid));
3096
	else PlayerSpectatePlayer(playerid, specid);
3097
	AdmSysInfo[playerid][asSpecID] = specid;
3098
	UpdateSpecInfo(playerid);
3099
	return 1;
3100
}
3101
3102
stock UpdateSpectating(playerid)
3103
{
3104
	if(!IsPlayerConnected(playerid)) return 0;
3105
	if(AdmSysInfo[playerid][asSpecID] == INVALID_PLAYER_ID)
3106
		return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in spectator mode");
3107
	if(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID])) return StopSpectating(playerid);
3108
	TogglePlayerSpectating(playerid, 1);
3109
	SetPlayerInterior(playerid, GetPlayerInterior(AdmSysInfo[playerid][asSpecID]));
3110
	SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(AdmSysInfo[playerid][asSpecID]));
3111
	if(IsPlayerInAnyVehicle(AdmSysInfo[playerid][asSpecID]))
3112
		PlayerSpectateVehicle(playerid, GetPlayerVehicleID(AdmSysInfo[playerid][asSpecID]));
3113
	else PlayerSpectatePlayer(playerid, AdmSysInfo[playerid][asSpecID]);
3114
	return 1;
3115
}
3116
3117
stock StopSpectating(playerid)
3118
{
3119
	if(!IsPlayerConnected(playerid)) return 0;
3120
	if(!IsPlayerSpectating(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in spectator mode");
3121
	if(AdmSysInfo[playerid][asLastSpecID] == INVALID_PLAYER_ID)
3122
	{
3123
		TogglePlayerSpectating(playerid, AdmSysInfo[playerid][asLastSpec]);
3124
		KillTimer(AdmSysInfo[playerid][asUpdTimer]);
3125
	}
3126
	else
3127
	{
3128
		AdmSysInfo[playerid][asSpecID] = AdmSysInfo[playerid][asLastSpecID];
3129
		AdmSysInfo[playerid][asLastSpecID] = INVALID_PLAYER_ID;
3130
		UpdateSpectating(playerid);
3131
	}
3132
	return 1;
3133
}
3134
3135
#undef ADMSYS_DEFAULT_COLOR
3136
3137
#undef ADMSYS_MAX_TAB_INPUT
3138
#undef ADMSYS_MAX_SUSPECTS_IN_TABLE
3139
#undef ADMSYS_MAX_GIVE_PLAYERS_IN_CMD
3140
#undef ADMSYS_MAX_WARNS
3141
3142
#undef admsys_isnull
3143
#undef admsys_fpublic