· 8 years ago · Jan 23, 2018, 02:06 PM
1/*
2 * To 'Michael Palmer':
3 *
4 * codename: vehiclesystem.pwn; author: Lorenc; Complete: 10/16/2011;
5 * email: zeelorenc@hotmail.com; SA-MP Username: Lorenc_
6 *
7 * Thanks for purchasing this script, your greatly appriecated, Lorenc.
8 *
9*/
10
11#include <a_samp>
12#include <foreach>
13#include <sscanf2>
14#include <zcmd>
15#include <YSI/y_va>
16
17/* ** Configuration ** */
18#undef MAX_PLAYERS
19#define MAX_PLAYERS (52) //Change to how big your server slots are!
20
21#define FILE_VERSION "0.3c"
22#define SERVER_NAME "Los Santos Freeroam (0.3c) "
23#define SERVER_SITE "lsservers.co.cc"
24
25#define DB_FILE "admin.db"
26
27/* ** Functions/Macros ** */
28#define IsHigherAdminLevel(%1,%2) (gPlayerData[(%1)][E_ADMIN_LEVEL]>gPlayerData[(%2)][E_ADMIN_LEVEL])
29#define function%1(%2) forward%1(%2); public%1(%2)
30/* ** Dialogs ** */
31#define DIALOG_TITLE "{FFFFFF}"#SERVER_NAME""
32
33#define DIALOG_NULL (0xFF)
34#define DIALOG_REGISTER (1001)
35#define DIALOG_LOGIN (1002)
36#define DIALOG_TELES (1003)
37#define DIALOG_TELES_LV (1004)
38#define DIALOG_TELES_LS (1005)
39#define DIALOG_TELES_SF (1006)
40
41#define REGISTER_MSG "{FFFFFF}Welcome to "#SERVER_NAME", Welcome You Are Currently Not Registered!\nEnter your password and register in the server!"
42#define LOGIN_MSG "{FFFFFF}Welcome to "#SERVER_NAME", Welcome You Are Currently Registered\nEnter your password and log on to the server!"
43
44/* ** Colours ** */
45#define COL_GREEN "{6EF83C}"
46#define COL_RED "{F81414}"
47#define COL_BLUE "{00C0FF}"
48#define COL_LGREEN "{C9FFAB}"
49#define COL_LRED "{FFA1A1}"
50#define COL_GOLD "{FFDC2E}"
51#define COL_GREY "{C0C0C0}"
52#define COL_PINK "{FF0770}"
53
54#define COLOR_GREEN 0x00CC00FF
55#define COLOR_RED 0xFF0000FF
56#define COLOR_YELLOW 0xFFFF00FF
57#define COLOR_ORANGE 0xEE9911FF
58#define COLOR_BLUE 0x60CED4FF
59
60/* ** Player Data ** */
61enum PLAYER_DATA
62{
63 bool: E_LOGGED, E_ADMIN_LEVEL, E_VIP_LEVEL,
64 E_KILLS, E_DEATHS, bool: E_CAGED,
65 E_CAGE[4],
66
67 E_BAN_BY[24], E_BAN_REASON[60],
68}
69
70enum SERVER_DATA
71{
72 bool: E_SERVER_LOCKED, E_COUNTDOWN_TICK, E_COUNTDOWN_TIMER,
73 bool: E_GOTOLOC_BLOCKED,
74}
75
76new
77 gPlayerData [MAX_PLAYERS][PLAYER_DATA],
78 gServerData [SERVER_DATA],
79 DB: Database,
80 szName [MAX_PLAYER_NAME],
81 szIP [16]
82;
83
84static const vNames[212][] =
85{
86 {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perrenial"}, {"Sentinel"}, {"Dumper"},
87 {"Firetruck"}, {"Trashmaster"}, {"Stretch"}, {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"},
88 {"Cheetah"}, {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"}, {"Washington"},
89 {"Bobcat"}, {"Mr Whoopee"}, {"BF Injection"}, {"Hunter"}, {"Premier"}, {"Enforcer"}, {"Securicar"},
90 {"Banshee"}, {"Predator"}, {"Bus"},{"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Trailer 1"}, {"Previon"},
91 {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"}, {"Packer"}, {"Monster"},
92 {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"}, {"Tram"}, {"Trailer 2"}, {"Turismo"},
93 {"Speeder"}, {"Reefer"}, {"Tropic"}, {"Flatbed"}, {"Yankee"}, {"Caddy"}, {"Solair"}, {"Berkley's RC Van"},
94 {"Skimmer"}, {"PCJ-6_0_0"}, {"Faggio"}, {"Freeway"}, {"RC Baron"}, {"RC Raider"}, {"Glendale"}, {"Oceanic"},
95 {"Sanchez"}, {"Sparrow"}, {"Patriot"}, {"Quad"}, {"Coastguard"}, {"Dinghy"}, {"Hermes"}, {"Sabre"},
96 {"Rustler"}, {"ZR-3_5_0"}, {"Walton"}, {"Regina"}, {"Comet"},{"BMX"}, {"Burrito"}, {"Camper"}, {"Marquis"},
97 {"Baggage"}, {"Dozer"}, {"Maverick"}, {"News Chopper"}, {"Rancher"}, {"FBI Rancher"}, {"Virgo"}, {"Greenwood"},
98 {"Jetmax"}, {"Hotring"}, {"Sandking"}, {"Blista Compact"}, {"Police Maverick"},{"Boxville"}, {"Benson"},
99 {"Mesa"}, {"RC Goblin"}, {"Hotring Racer A"}, {"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
100 {"Super GT"}, {"Elegant"}, {"Journey"}, {"Bike"}, {"Mountain Bike"}, {"Beagle"}, {"Cropdust"}, {"Stunt"},
101 {"Tanker"}, {"Roadtrain"}, {"Nebula"}, {"Majestic"}, {"Buccaneer"}, {"Shamal"}, {"Hydra"}, {"FCR-900"},
102 {"NRG-500"}, {"HPV1000"}, {"Cement Truck"}, {"Tow Truck"}, {"Fortune"}, {"Cadrona"}, {"FBI Truck"},
103 {"Willard"}, {"Forklift"}, {"Tractor"}, {"Combine"}, {"Feltzer"}, {"Remington"}, {"Slamvan"},
104 {"Blade"}, {"Freight"}, {"Streak"}, {"Vortex"}, {"Vincent"}, {"Bullet"}, {"Clover"}, {"Sadler"},
105 {"Firetruck LA"}, {"Hustler"}, {"Intruder"}, {"Primo"}, {"Cargobob"}, {"Tampa"}, {"Sunrise"}, {"Merit"},
106 {"Utility"}, {"Nevada"}, {"Yosemite"}, {"Windsor"}, {"Monster A"}, {"Monster B"}, {"Uranus"}, {"Jester"},
107 {"Sultan"}, {"Stratum"}, {"Elegy"}, {"Raindance"}, {"RC Tiger"}, {"Flash"}, {"Tahoma"}, {"Savanna"},
108 {"Bandito"}, {"Freight Flat"}, {"Streak Carriage"}, {"Kart"}, {"Mower"}, {"Duneride"}, {"Sweeper"},
109 {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"}, {"BF-400"}, {"Newsvan"},
110 {"Tug"}, {"Trailer 3"}, {"Emperor"}, {"Wayfarer"}, {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Carriage"},
111 {"Trailer 3"}, {"Andromada"}, {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police Car LSPD"},{"Police Car SFPD"},
112 {"Police _LVPD"}, {"Police Ranger"}, {"Picador"}, {"SWAT. Van"}, {"Alpha"}, {"Phoenix"}, {"Glendale"},
113 {"Sadler"}, {"Luggage Trailer A"}, {"Luggage Trailer B"}, {"Stair Trailer"},{"Boxville"}, {"Farm Plow"},
114 {"Utility Trailer"}
115};
116
117public OnFilterScriptInit()
118{
119 print("\nLorenc's admin filterscript!\n");
120
121 if(GetMaxPlayers() > MAX_PLAYERS)
122 print("ADMIN SCRIPT: Please redefine \"MAX_PLAYERS\" to what your server slots are!"), gServerData[E_SERVER_LOCKED] = true;
123
124 Database = db_open(DB_FILE);
125 db_query(Database, "CREATE TABLE IF NOT EXISTS `USERS` (NAME, PASSWORD, IP, ADMINLEVEL, VIP, LASTLOGIN, KILLS, DEATHS, SCORE)");
126 db_query(Database, "CREATE TABLE IF NOT EXISTS `BANS` (NAME, IP, BANBY, REASON)");
127 db_query(Database, "CREATE TABLE IF NOT EXISTS `IPBANS` (IP)");
128 return 1;
129}
130
131public OnFilterScriptExit()
132{
133 return 1;
134}
135
136public OnPlayerConnect(playerid)
137{
138 new
139 Query[ 150 ],
140 DBResult: Result,
141 name[ MAX_PLAYER_NAME ]
142 ;
143 gPlayerData[playerid][E_ADMIN_LEVEL] = 0;
144 gPlayerData[playerid][E_LOGGED] = false;
145
146 if(gServerData[E_SERVER_LOCKED] == true)
147 {
148 SendClientMessage(playerid, -1, ""COL_GREEN"[NOTE]{FFFFFF} The server has been locked, you cannot visit at this time!");
149 Kick(playerid);
150 }
151
152 if(IsPlayerBanned(playerid))
153 return ShowPlayerBan(playerid);
154
155 if(IsIPBanned(ReturnPlayerIP(playerid)))
156 return SendClientMessage(playerid, COLOR_YELLOW, "You Are Currently Banned From This Server!, Visit "#SERVER_SITE""), Kick(playerid);
157
158 GetPlayerName(playerid, name, sizeof(name));
159
160 format(Query, sizeof(Query), "SELECT NAME FROM USERS WHERE NAME = '%s'", DB_Escape(name));
161 Result = db_query(Database, Query);
162
163 if(db_num_rows(Result))
164 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, DIALOG_TITLE, LOGIN_MSG, "Login", "Quit");
165 else
166 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, DIALOG_TITLE, REGISTER_MSG, "Register", "Quit");
167
168 db_free_result(Result);
169 return 1;
170}
171public OnPlayerDisconnect(playerid, reason)
172{
173 new
174 Query[ 200 ],
175 name[ MAX_PLAYER_NAME ]
176 ;
177 GetPlayerName(playerid, name, sizeof(name));
178
179 DestroyPlayerCage(playerid);
180
181 if(gPlayerData[playerid][E_LOGGED] == true)
182 {
183 format(Query,sizeof(Query),"UPDATE `USERS` SET ADMINLEVEL = %d, VIP = %d, LASTLOGIN = '%s', KILLS = %d, DEATHS = %d, SCORE = %d WHERE `NAME` = '%s'",
184 gPlayerData[playerid][E_ADMIN_LEVEL],
185 gPlayerData[playerid][E_VIP_LEVEL],
186 getDate(),
187 gPlayerData[playerid][E_KILLS],
188 gPlayerData[playerid][E_DEATHS],
189 GetPlayerScore(playerid),
190 DB_Escape(name));
191 db_query(Database, Query);
192 gPlayerData[playerid][E_LOGGED] = false;
193 }
194 return 1;
195}
196
197public OnPlayerSpawn(playerid)
198{
199 return 1;
200}
201
202public OnPlayerDeath(playerid, killerid, reason)
203{
204 return 1;
205}
206
207public OnVehicleSpawn(vehicleid)
208{
209 return 1;
210}
211
212public OnVehicleDeath(vehicleid, killerid)
213{
214 return 1;
215}
216
217public OnPlayerText(playerid, text[])
218{
219 new string[150];
220 if(GetPVarInt(playerid, "admin_Muted") == 1)
221 {
222 SendError(playerid, "You cannot talk, you're muted!");
223 return 0;
224 }
225 if(text[0] == '@')
226 {
227 if(gPlayerData[playerid][E_ADMIN_LEVEL] > 0)
228 {
229 format(string, sizeof(string), "{05FEF8}<Admin Chat> %s(%d):{FFFFFF} %s", ReturnPlayerName(playerid), playerid, text[1]);
230 SendClientMessageToAdmins(-1, string);
231 return 0;
232 }
233 }
234 return 1;
235}
236
237public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
238{
239 return 1;
240}
241
242public OnPlayerExitVehicle(playerid, vehicleid)
243{
244 return 1;
245}
246
247public OnPlayerStateChange(playerid, newstate, oldstate)
248{
249 return 1;
250}
251
252public OnPlayerEnterCheckpoint(playerid)
253{
254 return 1;
255}
256
257public OnPlayerLeaveCheckpoint(playerid)
258{
259 return 1;
260}
261
262public OnPlayerEnterRaceCheckpoint(playerid)
263{
264 return 1;
265}
266
267public OnPlayerLeaveRaceCheckpoint(playerid)
268{
269 return 1;
270}
271
272/*
273 COMMANDS
274 - REGULAR:
275
276 - LEVEL 1:
277 - /carpark
278 - /flame
279 - /adminduty
280
281 - LEVEL 2:
282 - /kick
283 - /spec
284 - /ann
285 - /countdown
286 - /warn
287 - /gotoloc
288 - /goto
289 - /get
290 - /(un)mute
291
292 - LEVEL 3:
293 - /asay
294 - /burn
295 - /ban
296 - /banip
297 - /rban
298 - /explode
299 - /(un)cage
300 - /aweaps
301 - /god
302 - /mammo
303 - /v
304 - /acar
305 - /aplane
306 - /abike
307 - /aboat
308 - /aheli
309
310 - LEVEL 4:
311 - /makevip
312 - /drift
313 - /lockserver
314 - /blockteleports
315 - /muteall
316 - /kickall
317
318 - RCON - CONSOLE:
319 - /makeadmin
320*/
321public OnPlayerCommandPerformed(playerid, cmdtext[], success)
322{
323 if(success == 0) return SendClientMessage(playerid, -1, "[SERVER] Error with command, please use /commands");
324 return 1;
325}
326
327/* Regular Commands */
328CMD:acmds(playerid, params[])
329{
330 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 1) return 0;
331 SendClientMessage(playerid, -1, ""COL_BLUE".: Admin Commands :.");
332 SendClientMessage(playerid, -1, ""COL_PINK"LEVEL 1:{FFFFFF} /acmds, /carpark, /flame, /adminduty");
333 SendClientMessage(playerid, -1, ""COL_PINK"LEVEL 2:{FFFFFF} /kick, /spec, /ann, /countdown, /warn, /gotoloc, /goto, /get, /(un)mute");
334 SendClientMessage(playerid, -1, ""COL_PINK"LEVEL 3:{FFFFFF} /asay, /burn, /ban, /banip, /rban, /explode, /(un)cage, /aweaps, /god, /mammo");
335 SendClientMessage(playerid, -1, ""COL_PINK"LEVEL 3:{FFFFFF} /v, /acar, /aplane, /abike, /aboat, /aheli");
336 SendClientMessage(playerid, -1, ""COL_PINK"LEVEL 4:{FFFFFF} /makevip, /drift, /lockserver, /blockteleports, /muteall, /kickall");
337 SendClientMessage(playerid, -1, ""COL_PINK"RCON CONSOLE:{FFFFFF} /makeadmin");
338 return 1;
339}
340
341CMD:admins(playerid, params[])
342{
343 new
344 string[128],
345 count,
346 iname[MAX_PLAYER_NAME]
347 ;
348 SendClientMessage(playerid, -1, ""COL_BLUE".: Online Admins :.");
349 foreach(Player, i)
350 {
351 if(!IsPlayerConnected(i)) continue;
352 if(gPlayerData[i][E_ADMIN_LEVEL] >= 1 && GetPVarInt(i, "admin_notHidden") == 1)
353 {
354 GetPlayerName(i, iname, sizeof(iname));
355 format(string, sizeof(string), ""COL_PINK"Name:{FFFFFF} %s(%i) Level: %s", iname, i, GetAdminRank(gPlayerData[i][E_ADMIN_LEVEL]));
356 SendClientMessage(playerid, -1, string);
357 count++;
358 }
359 }
360 if(count == 0) return SendClientMessage(playerid, COLOR_BLUE, "No administrators are online");
361 return 1;
362}
363
364CMD:report(playerid, params[])
365{
366 new msg[64], string[128];
367 if(sscanf(params, "s[64]", msg)) SendUsage(playerid, "/report [msg]");
368 else if(gPlayerData[playerid][E_ADMIN_LEVEL] > 0) SendError(playerid, "You cannot use this because you're a admin!");
369 else
370 {
371 format(string, sizeof(string), ""COL_GREEN"[REPORT]{FFFFFF} "COL_GOLD"%s:{FFFFFF} %s", ReturnPlayerName(playerid), msg);
372 SendClientMessageToAdmins(-1, string);
373 }
374 return 1;
375}
376
377/* LEVEL 1 */
378CMD:adminduty(playerid, params[])
379{
380 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 1) return 0;
381 if(GetPVarInt(playerid, "admin_notHidden") == 0)
382 {
383 SetPVarInt(playerid, "admin_notHidden", 1);
384 SetPlayerSkin(playerid, 294);
385 GivePlayerWeapon(playerid, 38, 0xFFFF);
386 GivePlayerWeapon(playerid, 9, 1);
387 GivePlayerWeapon(playerid, 39, 0xFFFF);
388 GivePlayerWeapon(playerid, 40, 1);
389 GivePlayerWeapon(playerid, 31, 0xFFFF);
390 GivePlayerWeapon(playerid, 27, 0xFFFF);
391 GivePlayerWeapon(playerid, 24, 0xFFFF);
392 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have been given Admin Duty equipment!");
393 }
394 else
395 {
396 SetPVarInt(playerid, "admin_notHidden", 0);
397 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You're now not on admin duty.");
398 }
399 return 1;
400}
401
402CMD:flame(playerid, params[])
403{
404 new
405 pID
406 ;
407 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 1) return 0;
408 else if(sscanf(params, "u", pID)) SendUsage(playerid, "/flame [PLAYER_ID]");
409 else if(pID == playerid) SendError(playerid, "You cannot apply this command to yourself.");
410 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
411 else
412 {
413 SendClientMessage(pID, COLOR_RED, ".: Flaming :.");
414 SendClientMessage(pID, COLOR_YELLOW, "Don't Flame Other Players Read /rules");
415 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have notified %s(%d) about flaming!", ReturnPlayerName(pID), pID);
416 }
417 return 1;
418}
419
420CMD:carpark(playerid, params[])
421{
422 new
423 pID
424 ;
425 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 1) return 0;
426 else if(sscanf(params, "u", pID)) SendUsage(playerid, "/carpark [PLAYER_ID]");
427 else if(pID == playerid) SendError(playerid, "You cannot apply this command to yourself.");
428 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
429 else
430 {
431 SendClientMessage(pID, COLOR_RED, ".: Car parking :.");
432 SendClientMessage(pID, COLOR_YELLOW, "Don't Carpark Other Players Read /rules!");
433 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have notified %s(%d) about car parking!", ReturnPlayerName(pID), pID);
434 }
435 return 1;
436}
437
438/* LEVEL 2 */
439CMD:mute(playerid, params[])
440{
441 new
442 pID,
443 reason[70]
444 ;
445 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
446 else if(sscanf(params, "uS(No reason)[70]", pID, reason)) SendUsage(playerid, "/kick [PLAYER_ID] [REASON]");
447 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
448 else if(pID == playerid) SendError(playerid, "You cannot kick yourself.");
449 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
450 else if(GetPVarInt(pID, "admin_Muted") == 1) SendError(playerid, "This person is muted!");
451 else
452 {
453 SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} %s(%d) has been muted by %s(%d) [Reason: %s]", ReturnPlayerName(pID), pID, ReturnPlayerName(playerid), playerid, reason);
454 SetPVarInt(pID, "admin_Muted", 1);
455 }
456 return 1;
457}
458
459CMD:unmute(playerid, params[])
460{
461 new
462 pID,
463 reason[70]
464 ;
465 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
466 else if(sscanf(params, "uS(No reason)[70]", pID, reason)) SendUsage(playerid, "/kick [PLAYER_ID] [REASON]");
467 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
468 else if(pID == playerid) SendError(playerid, "You cannot kick yourself.");
469 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
470 else if(GetPVarInt(pID, "admin_Muted") != 1) SendError(playerid, "This person is not muted!");
471 else
472 {
473 SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} %s(%d) has been un-muted by %s(%d) [Reason: %s]", ReturnPlayerName(pID), pID, ReturnPlayerName(playerid), playerid, reason);
474 SetPVarInt(pID, "admin_Muted", 0);
475 }
476 return 1;
477}
478
479CMD:get(playerid, params[])
480{
481 new
482 pID,
483 Float: X,
484 Float: Y,
485 Float: Z
486 ;
487
488 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
489 else if(sscanf(params, "u", pID)) SendUsage(playerid, "/get [PLAYER_ID]");
490 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
491 else if(pID == playerid) SendError(playerid, "You cannot bring yourself.");
492 else
493 {
494 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have brang %s(%d) to your current location!", ReturnPlayerName(pID), pID);
495 SendClientMessageFormatted(pID, -1, ""COL_PINK"[ADMIN]{FFFFFF} %s(%d) has teleported you to his location!", ReturnPlayerName(playerid), playerid);
496 GetPlayerPos(playerid, X, Y, Z);
497 SetPlayerPos(pID, X, Y + 2, Z);
498 }
499 return 1;
500}
501
502CMD:goto(playerid, params[])
503{
504 new
505 pID,
506 Float: X,
507 Float: Y,
508 Float: Z
509 ;
510
511 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
512 else if(sscanf(params, "u", pID)) SendUsage(playerid, "/goto [PLAYER_ID]");
513 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
514 else if(pID == playerid) SendError(playerid, "You cannot go to yourself.");
515 else
516 {
517 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have went to %s(%d)'s location!", ReturnPlayerName(pID), pID);
518 SendClientMessageFormatted(pID, -1, ""COL_PINK"[ADMIN]{FFFFFF} %s(%d) has teleported to your location!", ReturnPlayerName(playerid), playerid);
519 GetPlayerPos(pID, X, Y, Z);
520 SetPlayerPos(playerid, X, Y + 2, Z);
521 }
522 return 1;
523}
524
525CMD:gotoloc(playerid, params[])
526{
527 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
528 else if(gServerData[E_GOTOLOC_BLOCKED] == true) SendError(playerid, "The server owned has blocked the usage of this!");
529 else ShowPlayerDialog(playerid, DIALOG_TELES, DIALOG_STYLE_LIST, ""#DIALOG_TITLE" - Teles", "Las Venturas\nLos Santos\nSan Fierro", "Select", "Cancel");
530 return 1;
531}
532
533CMD:warn(playerid, params[])
534{
535 new
536 pID,
537 reason[70]
538 ;
539 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
540 else if(sscanf(params, "uS(No reason)[70]", pID, reason)) SendUsage(playerid, "/warn [PLAYER_ID] [REASON]");
541 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
542 else if(pID == playerid) SendError(playerid, "You cannot warn yourself.");
543 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
544 else
545 {
546 SetPVarInt(pID, "admin_Warns", GetPVarInt(pID, "admin_Warns") + 1);
547 if(GetPVarInt(pID, "Warned") == 3)
548 {
549 SendClientMessageFormattedToAll(COLOR_YELLOW, "%s(%d) has been kicked from the server. [Reason: 3/3 Excessive warnings]", ReturnPlayerName(pID), pID);
550 Kick(pID);
551 }
552 else SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} %s(%d) has been warned by %s(%d) [Reason: %s][%d/3]", ReturnPlayerName(pID), pID, ReturnPlayerName(playerid), playerid, reason, GetPVarInt(pID, "admin_Warns"));
553 }
554 return 1;
555}
556
557
558CMD:countdown(playerid, params[])
559{
560 new
561 ticks
562 ;
563 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
564 else if(sscanf(params, "D(5)", ticks)) SendUsage(playerid, "/countdown [SECONDS]");
565 else if(ticks > 20 || ticks < 1) SendError(playerid, "Please specify a time between 1 - 20 seconds.");
566 else
567 {
568 SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} %s(%d) has started a countdown! [%d second countdown] ", ReturnPlayerName(playerid), playerid, ticks);
569
570 KillTimer(gServerData[E_COUNTDOWN_TIMER]);
571 gServerData[E_COUNTDOWN_TICK] = ticks;
572 gServerData[E_COUNTDOWN_TIMER] = SetTimer("admin_CountDown", 960, 1);
573 }
574 return 1;
575}
576
577function admin_CountDown()
578{
579 static
580 string[6]
581 ;
582 gServerData[E_COUNTDOWN_TICK]--;
583 if(gServerData[E_COUNTDOWN_TICK] < 0) return KillTimer(gServerData[E_COUNTDOWN_TIMER]);
584
585 foreach(Player, i)
586 {
587 if(gServerData[E_COUNTDOWN_TICK] != 0) PlayerPlaySound(i, 1137, 0.0, 0.0, 5.0);
588 else PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
589 }
590
591 format(string, sizeof(string), "~w~%d", gServerData[E_COUNTDOWN_TICK]);
592 GameTextForAll(string, 1100, 3);
593 return 1;
594}
595
596CMD:ann(playerid, params[])
597{
598 new
599 string[128],
600 msg[60]
601 ;
602 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
603 else if(sscanf(params, "s[60]", msg)) SendUsage(playerid, "/ann [MESSAGE]");
604 else
605 {
606 strreplacechar(msg, '~', ']');
607 format(string, sizeof(string), "~w~%s", msg);
608 GameTextForAll(string, 6000, 3);
609 }
610 return 1;
611}
612
613CMD:kick(playerid, params[])
614{
615 new
616 pID,
617 reason[70]
618 ;
619 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
620 else if(sscanf(params, "uS(No reason)[70]", pID, reason)) SendUsage(playerid, "/kick [PLAYER_ID] [REASON]");
621 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
622 else if(pID == playerid) SendError(playerid, "You cannot kick yourself.");
623 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
624 else
625 {
626 SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} %s(%d) has been kicked from the server by %s(%d) [Reason: %s]", ReturnPlayerName(pID), pID, ReturnPlayerName(playerid), playerid, reason);
627 Kick(pID);
628 }
629 return 1;
630}
631
632CMD:spec(playerid, params[])
633{
634 new
635 pID
636 ;
637
638 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 2) return 0;
639 else if(sscanf(params, "u", pID))
640 {
641 if(GetPVarInt(playerid, "Spectating") == 1)
642 {
643 SetPVarInt(playerid, "Specing", 0);
644 TogglePlayerSpectating(playerid, 0);
645 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have stopped spectating!");
646 }
647 else SendUsage(playerid, "/spec [PLAYER_ID](No parameter = stop spec)");
648 }
649 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
650 else if(pID == playerid) SendError(playerid, "You cannot spectate yourself.");
651 else
652 {
653 SetPVarInt(playerid, "Spectating", 1);
654 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You are now spectating %s(%d)!", ReturnPlayerName(pID), pID);
655
656 TogglePlayerSpectating(playerid, 1);
657 if(IsPlayerInAnyVehicle(pID)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(pID));
658 else PlayerSpectatePlayer(playerid, pID);
659 }
660 return 1;
661}
662
663/* LEVEL 3 */
664CMD:aboat(playerid, params[])
665{
666 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
667 CreateVehicleForPlayer(playerid, 493, 0, 0);
668 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have created a admin boat.");
669 return 1;
670}
671
672CMD:aheli(playerid, params[])
673{
674 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
675 CreateVehicleForPlayer(playerid, 487, 0, 0);
676 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have created a admin helicopter.");
677 return 1;
678}
679
680CMD:abike(playerid, params[])
681{
682 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
683 CreateVehicleForPlayer(playerid, 522, 0, 0);
684 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have created a admin bike.");
685 return 1;
686}
687
688CMD:aplane(playerid, params[])
689{
690 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
691 CreateVehicleForPlayer(playerid, 513, 0, 0);
692 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have created a admin plane.");
693 return 1;
694}
695
696CMD:acar(playerid, params[])
697{
698 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
699 CreateVehicleForPlayer(playerid, 415, 0, 0);
700 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have created a admin car.");
701 return 1;
702}
703
704CMD:v(playerid, params[])
705{
706 new
707 vName[ 24 ],
708 vCar,
709 Float: X,
710 Float: Y,
711 Float: Z
712 ;
713 GetPlayerPos(playerid, X, Y, Z);
714
715 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
716 else if(sscanf(params, "s[24]", vName)) SendUsage(playerid, "/v [VEHICLE_NAME]");
717 else
718 {
719 vCar = CreateVehicle(GetVehicleModelFromName(vName), X, Y, Z, 0, -1, -1, -1);
720 PutPlayerInVehicle(playerid, vCar, 0);
721 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have created a car!");
722 }
723 return 1;
724}
725
726CMD:god(playerid, params[])
727{
728 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
729 SetPVarInt(playerid, "admin_God", GetPVarInt(playerid, "admin_God") == 1 ? 0 : 1);
730 SetPlayerHealth(playerid, GetPVarInt(playerid, "admin_God") == 0 ? 100 : 0xFFFF);
731 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have %s god mode.", GetPVarInt(playerid, "admin_God") == 1 ? ("toggled") : ("un-toggled"));
732 return 1;
733}
734
735CMD:mammo(playerid, params[]) return cmd_aweaps(playerid, params);
736CMD:aweaps(playerid, params[])
737{
738 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
739 GivePlayerWeapon(playerid, 38, 0xFFFF);
740 GivePlayerWeapon(playerid, 9, 1);
741 GivePlayerWeapon(playerid, 39, 0xFFFF);
742 GivePlayerWeapon(playerid, 40, 1);
743 GivePlayerWeapon(playerid, 31, 0xFFFF);
744 GivePlayerWeapon(playerid, 27, 0xFFFF);
745 GivePlayerWeapon(playerid, 24, 0xFFFF);
746 SendClientMessage(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have been given admin weapons!");
747 return 1;
748}
749
750CMD:cage(playerid, params[])
751{
752 new
753 pID
754 ;
755
756 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
757 else if(sscanf(params, "u", pID)) SendUsage(playerid, "/cage [PLAYER_ID]");
758 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
759 else if(pID == playerid) SendError(playerid, "You cannot cage yourself.");
760 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
761 else if(gPlayerData[playerid][E_CAGED] == true) SendError(playerid, "This player is already caged!");
762 else
763 {
764 CagePlayer(playerid);
765 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have caged %s(%d)!", ReturnPlayerName(pID), pID);
766 SendClientMessageFormatted(pID, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have been caged by %s(%d)!", ReturnPlayerName(playerid), playerid);
767 }
768 return 1;
769}
770
771CMD:uncage(playerid, params[])
772{
773 new
774 pID
775 ;
776
777 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
778 else if(sscanf(params, "u", pID)) SendUsage(playerid, "/uncage [PLAYER_ID]");
779 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
780 else if(pID == playerid) SendError(playerid, "You cannot uncage yourself.");
781 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
782 else if(gPlayerData[playerid][E_CAGED] == false) SendError(playerid, "This player is not caged!");
783 else
784 {
785 DestroyPlayerCage(playerid);
786 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have uncaged %s(%d)!", ReturnPlayerName(pID), pID);
787 SendClientMessageFormatted(pID, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have been uncaged by %s(%d)!", ReturnPlayerName(playerid), playerid);
788 }
789 return 1;
790}
791
792CMD:explode(playerid, params[])
793{
794 new
795 pID
796 ;
797
798 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
799 else if(sscanf(params, "u", pID)) SendUsage(playerid, "/explode [PLAYER_ID]");
800 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
801 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
802 else
803 {
804 new Float: X, Float: Y, Float: Z;
805 GetPlayerPos(pID, X, Y, Z);
806 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have exploded %s(%d)!", ReturnPlayerName(pID), pID);
807 CreateExplosion(X, Y, Z, 12, 10.0);
808 }
809 return 1;
810}
811
812
813CMD:rban(playerid, params[])
814{
815 new
816 reason[40],
817 pID
818 ;
819
820 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
821 else if(sscanf(params, "uS(No Reason)[40]", pID, reason)) SendUsage(playerid, "/rban [PLAYER_ID] [REASON]");
822 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
823 else if(pID == playerid) SendError(playerid, "You cannot ban yourself.");
824 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
825 else
826 {
827 SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} %s(%d) has been range banned from the server by %s(%d) [Reason: %s]", ReturnPlayerName(pID), pID, ReturnPlayerName(playerid), playerid, reason);
828 Ban(pID);
829 }
830 return 1;
831}
832
833CMD:ban(playerid, params[])
834{
835 new
836 reason[40],
837 pID
838 ;
839
840 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
841 else if(sscanf(params, "uS(No Reason)[40]", pID, reason)) SendUsage(playerid, "/ban [PLAYER_ID] [REASON]");
842 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
843 else if(pID == playerid) SendError(playerid, "You cannot ban yourself.");
844 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
845 else
846 {
847 SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} %s(%d) has been banned from the server by %s(%d) [Reason: %s]", ReturnPlayerName(pID), pID, ReturnPlayerName(playerid), playerid, reason);
848 AdvanceBan(playerid, pID, reason);
849 }
850 return 1;
851}
852
853CMD:banip(playerid, params[])
854{
855 new
856 IP[16]
857 ;
858
859 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
860 else if(sscanf(params, "s[16]", IP)) SendUsage(playerid, "/banip [IP]");
861 else
862 {
863 SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} IP %s has been banned from the server by %s(%d)", IP, ReturnPlayerName(playerid), playerid);
864 BanIPAddress(IP);
865 }
866 return 1;
867}
868
869CMD:asay(playerid, params[])
870{
871 new string[100];
872 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
873 else if(sscanf(params, "s[100]", string)) SendUsage(playerid, "/asay [TEXT]");
874 else
875 {
876 SendClientMessageToAll(-1, string);
877 }
878 return 1;
879}
880
881CMD:burn(playerid, params[])
882{
883 new
884 pID
885 ;
886 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 3) return 0;
887 else if(sscanf(params, "u", pID)) SendUsage(playerid, "/burn [PLAYER_ID]");
888 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
889 else if(IsHigherAdminLevel(pID, playerid)) SendError(playerid, "This player has a greater admin level then yours!");
890 else
891 {
892 new Float: X, Float: Y, Float: Z;
893 GetPlayerPos(pID, X, Y, Z);
894 CreateExplosion(X, Y, Z + 3, 1, 10);
895
896 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have burned %s(%d)!", ReturnPlayerName(pID), pID);
897 }
898 return 1;
899}
900
901/* LEVEL 4 */
902CMD:unlockserver(playerid, params[])
903{
904 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 4) return 0;
905 gServerData[E_SERVER_LOCKED] = false;
906 return 1;
907}
908
909CMD:lockserver(playerid, params[])
910{
911 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 4) return 0;
912 gServerData[E_SERVER_LOCKED] = true;
913 return 1;
914}
915
916CMD:blockteleports(playerid, params[])
917{
918 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 4) return 0;
919 gServerData[E_GOTOLOC_BLOCKED] = gServerData[E_GOTOLOC_BLOCKED] == true ? false : true;
920 SendClientMessageFormattedToAll(COLOR_YELLOW, ""COL_GREY"[SERVER]{FFFFFF} %s(%d) %s teleporting for admins.", ReturnPlayerName(playerid), playerid, gServerData[E_GOTOLOC_BLOCKED] == false ? ("enabled") : ("disabled"));
921 return 1;
922}
923
924CMD:unmuteall(playerid, params[])
925{
926 new Message[24];
927 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 4) return 0;
928 else if(sscanf(params, "S(No Reason)[24]", Message)) SendUsage(playerid, "/unmuteall [MESSAGE]");
929 else
930 {
931 SendClientMessage(playerid, COLOR_YELLOW, "You have un-muted all players in the server!");
932 SendClientMessageFormattedToAll(COLOR_YELLOW, "Everyone has been un-muted in the server! [Reason: %s]", Message);
933 for(new i; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i))
934 {
935 if(gPlayerData[i][E_ADMIN_LEVEL] > 0) continue;
936 SetPVarInt(i, "admin_Muted", 0);
937 }
938 }
939 return 1;
940}
941
942CMD:muteall(playerid, params[])
943{
944 new Message[24], string[128];
945 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 4) return 0;
946 else if(sscanf(params, "S(No Reason)[24]", Message)) SendUsage(playerid, "/muteall [MESSAGE]");
947 else
948 {
949 SendClientMessage(playerid, COLOR_YELLOW, "You have muted all players in the server [ex. Admins]");
950 SendClientMessageFormattedToAll(COLOR_YELLOW, string, "Everyone has been muted in the server! [Reason: %s]", Message);
951 for(new i; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i))
952 {
953 if(gPlayerData[i][E_ADMIN_LEVEL] > 0) continue;
954 SetPVarInt(i, "admin_Muted", 1);
955 }
956 }
957 return 1;
958}
959
960CMD:kickall(playerid, params[])
961{
962 new Message[24], string[128];
963 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 4) return 0;
964 else if(sscanf(params, "S(No Reason)[24]", Message)) SendUsage(playerid, "/kickall [MESSAGE]");
965 else
966 {
967 SendClientMessage(playerid, COLOR_YELLOW, "You have kicked all players from the server [ex. Admins]");
968 SendClientMessageFormattedToAll(COLOR_YELLOW, string, "Everyone has been kicked from the server! [Reason: %s]", Message);
969 for(new i; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i))
970 {
971 if(gPlayerData[i][E_ADMIN_LEVEL] > 0) continue;
972 Kick(i);
973 }
974 }
975 return 1;
976}
977
978CMD:drift(playerid, params[])
979{
980 new
981 driftid
982 ;
983 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 4) return 0;
984 else if(sscanf(params, "d", driftid)) SendUsage(playerid, "/drift [0 - 2]");
985 else if(driftid > 2) SendError(playerid, "Specify a drift between 0 and 2");
986 else
987 {
988 switch(driftid)
989 {
990 case 0: SetPlayerPos(playerid, -358.1943, 1531.2909, 75.1698);
991 case 1: SetPlayerPos(playerid, 2265.3010, 1399.5085, 42.8203);
992 case 2: SetPlayerPos(playerid, -2489.8352, -616.3492, 132.5658);
993 }
994 }
995 return 1;
996}
997
998CMD:makevip(playerid, params[])
999{
1000 new
1001 pID,
1002 level
1003 ;
1004 if(gPlayerData[playerid][E_ADMIN_LEVEL] < 4) return 0;
1005 else if(sscanf(params, "ud", pID, level)) SendUsage(playerid, "/makevip [PLAYER_ID] [VIP_LEVEL]");
1006 else if(level > 2) SendError(playerid, "Specify a vip level between 0 and 2!");
1007 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
1008 else if(!gPlayerData[playerid][E_LOGGED]) SendError(playerid, "This player is not logged in!");
1009 else
1010 {
1011 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have set %s(%d)'s VIP level to %d [%s]!", ReturnPlayerName(pID), pID, level, GetVIPRank(level));
1012 SendClientMessageFormatted(pID, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have been set VIP level %d [%s] by %s(%d)!", level, GetVIPRank(level), ReturnPlayerName(playerid), playerid);
1013 gPlayerData[pID][E_VIP_LEVEL] = level;
1014 }
1015 return 1;
1016}
1017
1018/* RCON - CONSOLE */
1019CMD:makeadmin(playerid, params[])
1020{
1021 new
1022 pID,
1023 level
1024 ;
1025 if(!IsPlayerAdmin(playerid)) return 0;
1026 else if(sscanf(params, "ud", pID, level)) SendUsage(playerid, "/makeadmin [PLAYER_ID] [ADMIN_LEVEL]");
1027 else if(level > 4) SendError(playerid, "Specify a admin level between 0 and 4!");
1028 else if(!IsPlayerConnected(pID)) SendError(playerid, "This player is not connected!");
1029 else if(!gPlayerData[playerid][E_LOGGED]) SendError(playerid, "This player is not logged in!");
1030 else
1031 {
1032 SendClientMessageFormatted(playerid, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have set %s(%d)'s admin level to %d [%s]!", ReturnPlayerName(pID), pID, level, GetAdminRank(level));
1033 SendClientMessageFormatted(pID, -1, ""COL_PINK"[ADMIN]{FFFFFF} You have been set admin level %d [%s] by %s(%d)!", level, GetAdminRank(level), ReturnPlayerName(playerid), playerid);
1034 gPlayerData[pID][E_ADMIN_LEVEL] = level;
1035 }
1036 return 1;
1037}
1038
1039/*
1040 END OF COMMANDS
1041
1042*/
1043
1044stock GetVIPRank(level)
1045{
1046 new rank[24];
1047 switch(level)
1048 {
1049 case 0: rank = "Normal Player";
1050 case 1: rank = "Basic VIP";
1051 case 2: rank = "High VIP";
1052 }
1053 return rank;
1054}
1055
1056stock GetAdminRank(level)
1057{
1058 new rank[24];
1059 switch(level)
1060 {
1061 case 0: rank = "Normal Player";
1062 case 1: rank = "VIP Moderator";
1063 case 2: rank = "Moderator";
1064 case 3: rank = "Administrator";
1065 case 4: rank = "Server Owner";
1066 }
1067 return rank;
1068}
1069
1070public OnRconCommand(cmd[])
1071{
1072 return 1;
1073}
1074
1075public OnPlayerRequestSpawn(playerid)
1076{
1077 return 1;
1078}
1079
1080public OnObjectMoved(objectid)
1081{
1082 return 1;
1083}
1084
1085public OnPlayerObjectMoved(playerid, objectid)
1086{
1087 return 1;
1088}
1089
1090public OnPlayerPickUpPickup(playerid, pickupid)
1091{
1092 return 1;
1093}
1094
1095public OnVehicleMod(playerid, vehicleid, componentid)
1096{
1097 return 1;
1098}
1099
1100public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
1101{
1102 return 1;
1103}
1104
1105public OnVehicleRespray(playerid, vehicleid, color1, color2)
1106{
1107 return 1;
1108}
1109
1110public OnPlayerSelectedMenuRow(playerid, row)
1111{
1112 return 1;
1113}
1114
1115public OnPlayerExitedMenu(playerid)
1116{
1117 return 1;
1118}
1119
1120public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
1121{
1122 return 1;
1123}
1124
1125public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
1126{
1127 return 1;
1128}
1129
1130public OnRconLoginAttempt(ip[], password[], success)
1131{
1132 return 1;
1133}
1134
1135public OnPlayerUpdate(playerid)
1136{
1137 return 1;
1138}
1139
1140public OnPlayerStreamIn(playerid, forplayerid)
1141{
1142 return 1;
1143}
1144
1145public OnPlayerStreamOut(playerid, forplayerid)
1146{
1147 return 1;
1148}
1149
1150public OnVehicleStreamIn(vehicleid, forplayerid)
1151{
1152 return 1;
1153}
1154
1155public OnVehicleStreamOut(vehicleid, forplayerid)
1156{
1157 return 1;
1158}
1159
1160public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
1161{
1162 new
1163 Query[ 256 ],
1164 DBResult: Result,
1165 name[ MAX_PLAYER_NAME ],
1166 ip[ 16 ]
1167 ;
1168 GetPlayerName(playerid, name, sizeof(name));
1169 GetPlayerIp(playerid, ip, sizeof(ip));
1170
1171 if(dialogid == DIALOG_LOGIN)
1172 {
1173 if(response)
1174 {
1175 format(Query, sizeof(Query), "SELECT * FROM `USERS` WHERE NAME = '%s' AND PASSWORD = '%s'", DB_Escape(name), DB_Escape(inputtext));
1176 Result = db_query(Database, Query);
1177 if(db_num_rows(Result))
1178 {
1179 new Field[ 20 ];
1180 db_get_field_assoc(Result, "ADMINLEVEL", Field, 30);
1181 gPlayerData[playerid][E_ADMIN_LEVEL] = strval(Field);
1182
1183 db_get_field_assoc(Result, "VIP", Field, 30);
1184 gPlayerData[playerid][E_VIP_LEVEL] = strval(Field);
1185
1186 db_get_field_assoc(Result, "KILLS", Field, 30);
1187 gPlayerData[playerid][E_KILLS] = strval(Field);
1188
1189 db_get_field_assoc(Result, "DEATHS", Field, 30);
1190 gPlayerData[playerid][E_DEATHS] = strval(Field);
1191
1192 db_get_field_assoc(Result, "SCORE", Field, 30);
1193 SetPlayerScore(playerid, strval(Field));
1194
1195 gPlayerData[playerid][E_LOGGED] = true;
1196
1197 SendClientMessage(playerid, -1, ""COL_GREEN"[LOGGED]{FFFFFF} You have successfully logged in!");
1198 }
1199 else
1200 {
1201 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, DIALOG_TITLE, LOGIN_MSG, "Login", "Leave");
1202 SendClientMessage(playerid, -1, ""COL_RED"[ERROR]{FFFFFF} You have entered a wrong password, if this account isn't yours, we'd advise you relog with a new nickname.");
1203 }
1204 db_free_result(Result);
1205 }
1206 else return Kick(playerid);
1207 }
1208 if(dialogid == DIALOG_REGISTER)
1209 {
1210 if(response)
1211 {
1212 if(strlen(inputtext) > 24 || strlen(inputtext) < 3)
1213 {
1214 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, DIALOG_TITLE, REGISTER_MSG, "Register", "Leave");
1215 SendClientMessage(playerid, -1, ""COL_RED"[ERROR]{FFFFFF} Your password must contain at least 3 characters and not exceed 24.");
1216 }
1217 else
1218 {
1219 format(Query, sizeof(Query), "INSERT INTO `USERS` (NAME, PASSWORD, IP, ADMINLEVEL, VIP, LASTLOGIN, KILLS, DEATHS, SCORE) VALUES('%s','%s','%s', 0, 0, '%s', 0, 0, 0)",
1220 DB_Escape(name), DB_Escape(inputtext), DB_Escape(ip), getDate());
1221
1222 db_query(Database, Query);
1223 gPlayerData[playerid][E_LOGGED] = true;
1224 SetPlayerScore(playerid, 0);
1225 SendClientMessage(playerid, -1, ""COL_GREEN"[REGISTERED]{FFFFFF} You have successfully registered into our database!");
1226 }
1227 }
1228 else return Kick(playerid);
1229 }
1230 if((dialogid == DIALOG_TELES) && response)
1231 {
1232 switch(listitem)
1233 {
1234 case 0: ShowPlayerDialog(playerid, DIALOG_TELES_LV, DIALOG_STYLE_LIST, ""#DIALOG_TITLE" - Teles - LV", "Four Dragons Casino\nAutobahn\nBayside\nAirport\nLVPD", "Select", "Back");
1235 case 1: ShowPlayerDialog(playerid, DIALOG_TELES_LS, DIALOG_STYLE_LIST, ""#DIALOG_TITLE" - Teles - LS", "Groove Street\nRichman\nAirport\nMulholland\nPalmonio Creek\nMontgomery\nBlueberry\nLSPD", "Select", "Back");
1236 case 2: ShowPlayerDialog(playerid, DIALOG_TELES_SF, DIALOG_STYLE_LIST, ""#DIALOG_TITLE" - Teles - SF", "Jizzys\nWang cars\nSFPD", "Select", "Back");
1237 }
1238 }
1239 if(dialogid == DIALOG_TELES_SF)
1240 {
1241 if(response)
1242 {
1243 //Jizzys\nWang cars\nSFPD
1244 switch(listitem)
1245 {
1246 case 0: SetPlayerPos(playerid, -2614.1187, 1419.3098, 7.1500);
1247 case 1: SetPlayerPos(playerid, -1986.0498, 302.6044, 35.1719);
1248 case 2: SetPlayerPos(playerid, -1596.0472, 721.7451, 10.2534);
1249 }
1250 }
1251 else ShowPlayerDialog(playerid, DIALOG_TELES, DIALOG_STYLE_LIST, ""#DIALOG_TITLE" - Teles", "Las Venturas\nLos Santos\nSan Fierro", "Select", "Cancel");
1252 }
1253 if(dialogid == DIALOG_TELES_LV)
1254 {
1255 if(response)
1256 {
1257 //Four Dragons Casino\nAutobahn\nBayside\nAirport\nLVPD
1258 switch(listitem)
1259 {
1260 case 0: SetPlayerPos(playerid, 2027.5721, 1008.2877, 10.8203);
1261 case 1: SetPlayerPos(playerid, 2146.1252, 1426.8373, 13.0214);
1262 case 2: SetPlayerPos(playerid, -670.6358, 2306.0559, 135.2990);
1263 case 3: SetPlayerPos(playerid, 1679.3361, 1448.6248, 10.7744);
1264 case 4: SetPlayerPos(playerid, 2287.0313, 2431.0276, 10.8203);
1265 }
1266 }
1267 else ShowPlayerDialog(playerid, DIALOG_TELES, DIALOG_STYLE_LIST, ""#DIALOG_TITLE" - Teles", "Las Venturas\nLos Santos\nSan Fierro", "Select", "Cancel");
1268 }
1269 if(dialogid == DIALOG_TELES_LS)
1270 {
1271 if(response)
1272 {
1273 //Groove Street\nRichman\nAirport\nMulholland\nPalmonio Creek\nMontgomery\nBlueberry\nLSPD
1274 switch(listitem)
1275 {
1276 case 0: SetPlayerPos(playerid, 2474.8001, -1670.0190, 13.5001);
1277 case 1: SetPlayerPos(playerid, 679.0143, -1070.0120, 49.0000);
1278 case 2: SetPlayerPos(playerid, 1979.0213, -2241.0, 13.0002);
1279 case 3: SetPlayerPos(playerid, 1240.0000, -744.0, 95.0101);
1280 case 4: SetPlayerPos(playerid, 2269.6877, -75.0973, 26.7724);
1281 case 5: SetPlayerPos(playerid, 1242.2875, 328.5506, 19.7555);
1282 case 6: SetPlayerPos(playerid, 198.4328, -252.1696, 1.5781);
1283 case 7: SetPlayerPos(playerid, 1539.3021, -1670.0192, 14.0123);
1284 }
1285 }
1286 else ShowPlayerDialog(playerid, DIALOG_TELES, DIALOG_STYLE_LIST, ""#DIALOG_TITLE" - Teles", "Las Venturas\nLos Santos\nSan Fierro", "Select", "Cancel");
1287 }
1288 return 1;
1289}
1290
1291public OnPlayerClickPlayer(playerid, clickedplayerid, source)
1292{
1293 return 1;
1294}
1295
1296//Functions
1297stock getDate()
1298{
1299 static
1300 strDate[12],
1301 Year, Month, Day
1302 ;
1303 getdate(Year, Month, Day);
1304 format(strDate, sizeof(strDate), "%d/%d/%d", Month, Day, Year);
1305 return strDate;
1306}
1307
1308stock DB_Escape(text[])
1309{
1310 new
1311 ret[80 * 2],
1312 ch,
1313 i,
1314 j;
1315 while ((ch = text[i++]) && j < sizeof (ret))
1316 {
1317 if (ch == '\'')
1318 {
1319 if (j < sizeof (ret) - 2)
1320 {
1321 ret[j++] = '\'';
1322 ret[j++] = '\'';
1323 }
1324 }
1325 else if (j < sizeof (ret))
1326 {
1327 ret[j++] = ch;
1328 }
1329 else
1330 {
1331 j++;
1332 }
1333 }
1334 ret[sizeof (ret) - 1] = '\0';
1335 return ret;
1336}
1337
1338stock SendError(playerid, text[])
1339{
1340 new
1341 out[128]
1342 ;
1343 format(out, sizeof(out), ""COL_RED"[ERROR]{FFFFFF} %s", text);
1344 SendClientMessage(playerid, -1, out);
1345}
1346
1347stock SendUsage(playerid, text[])
1348{
1349 new
1350 out[128]
1351 ;
1352 format(out, sizeof(out), "{FF7000}[USAGE]{FFFFFF} %s", text);
1353 SendClientMessage(playerid, -1, out);
1354}
1355
1356stock SendClientMessageFormatted(playerid, colour, format[], va_args<>)
1357{
1358 new
1359 out[128]
1360 ;
1361 va_format(out, sizeof(out), format, va_start<3>);
1362 SendClientMessage(playerid, colour, out);
1363}
1364
1365stock SendClientMessageFormattedToAll(colour, format[], va_args<>)
1366{
1367 new
1368 out[128]
1369 ;
1370 va_format(out, sizeof(out), format, va_start<2>);
1371 SendClientMessageToAll(colour, out);
1372}
1373
1374stock ReturnPlayerName(playerid)
1375{
1376 GetPlayerName(playerid, szName, sizeof(szName));
1377 return szName;
1378}
1379
1380stock strreplacechar(string[], oldchar, newchar)
1381{
1382 new matches;
1383 if(ispacked(string)) {
1384 if(newchar == '\0') {
1385 for(new i; string{i} != '\0'; i++) {
1386 if(string{i} == oldchar) {
1387 strdel(string, i, i + 1);
1388 matches++;
1389 }
1390 }
1391 } else {
1392 for(new i; string{i} != '\0'; i++) {
1393 if(string{i} == oldchar) {
1394 string{i} = newchar;
1395 matches++;
1396 }
1397 }
1398 }
1399 } else {
1400 if(newchar == '\0') {
1401 for(new i; string[i] != '\0'; i++) {
1402 if(string[i] == oldchar) {
1403 strdel(string, i, i + 1);
1404 matches++;
1405 }
1406 }
1407 } else {
1408 for(new i; string[i] != '\0'; i++) {
1409 if(string[i] == oldchar) {
1410 string[i] = newchar;
1411 matches++;
1412 }
1413 }
1414 }
1415 }
1416 return matches;
1417}
1418
1419AdvanceBan(bannerid, playerid, reason[])
1420{
1421 new Query[256], DBResult:Result;
1422 format(Query, sizeof(Query), "SELECT * FROM `BANS` WHERE `NAME` = '%s'", ReturnPlayerName(playerid));
1423 Result = db_query(Database, Query);
1424 if(db_num_rows(Result)) return 0;
1425 else
1426 {
1427 if(playerid != INVALID_PLAYER_ID)
1428 {
1429 format( Query, sizeof(Query), "INSERT INTO `BANS` (NAME, IP, BANBY, REASON) VALUES('%s','%s','%s','%s')",
1430 DB_Escape(ReturnPlayerName(playerid)), DB_Escape(ReturnPlayerIP(playerid)), DB_Escape(ReturnPlayerName(bannerid)), DB_Escape(reason));
1431 db_query(Database, Query);
1432
1433 Kick(playerid);
1434 }
1435 else return 0;
1436 }
1437 db_free_result(Result);
1438 return 1;
1439}
1440
1441BanIPAddress(IP[])
1442{
1443 new Query[256], DBResult:Result;
1444 format(Query, sizeof(Query), "SELECT * FROM `IPBANS` WHERE IP = '%s'", IP);
1445 Result = db_query(Database, Query);
1446 if(db_num_rows(Result)) return 0;
1447 else
1448 {
1449 format( Query, sizeof(Query), "INSERT INTO `IPBANS` (IP) VALUES('%s')", DB_Escape(IP));
1450 db_query(Database, Query);
1451 }
1452 db_free_result(Result);
1453 return 1;
1454}
1455
1456
1457IsPlayerBanned(playerid)
1458{
1459 new Query[128], DBResult:Result;
1460 format(Query, sizeof(Query), "SELECT * FROM BANS WHERE NAME = '%s' OR IP = '%s'", ReturnPlayerName(playerid), ReturnPlayerIP(playerid));
1461 Result = db_query(Database, Query);
1462 if(db_num_rows(Result)) return true;
1463 return false;
1464}
1465
1466IsIPBanned(IP[])
1467{
1468 new Query[128], DBResult:Result;
1469 format(Query, sizeof(Query), "SELECT * FROM IPBANS WHERE IP = '%s'", IP);
1470 Result = db_query(Database, Query);
1471 if(db_num_rows(Result)) return true;
1472 return false;
1473}
1474
1475
1476ShowPlayerBan(playerid)
1477{
1478 new Query[128], DBResult:Result, string[300];
1479 format(Query, sizeof(Query), "SELECT * FROM `BANS` WHERE NAME = '%s' OR IP = '%s'", ReturnPlayerName(playerid), ReturnPlayerIP(playerid));
1480 Result = db_query(Database, Query);
1481 if(db_num_rows(Result))
1482 {
1483 new Field[20];
1484
1485 db_get_field_assoc(Result, "BANBY", Field, sizeof(Field));
1486 format(gPlayerData[playerid][E_BAN_BY], MAX_PLAYER_NAME, "%s", Field);
1487
1488 db_get_field_assoc(Result, "REASON", Field, sizeof(Field));
1489 format(gPlayerData[playerid][E_BAN_REASON], 60, "%s", Field);
1490
1491 format(string, sizeof(string), "{FFFFFF}You have been banned!\n"COL_RED"Reason:{FFFFFF} %s\n"COL_RED"Ban by:{FFFFFF} %s\nIf you feel wrongfully banned, please do create\na ban appeal on our forums.\n"#SERVER_SITE"", gPlayerData[playerid][E_BAN_REASON], gPlayerData[playerid][E_BAN_BY]);
1492 ShowPlayerDialog(playerid, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""#SERVER_NAME" - Banned", string, "OK", "");
1493 Kick(playerid);
1494 }
1495 return 1;
1496}
1497
1498stock ReturnPlayerIP(playerid)
1499{
1500 GetPlayerIp(playerid, szIP, sizeof(szIP));
1501 return szIP;
1502}
1503
1504stock CagePlayer(playerid)
1505{
1506 if(!IsPlayerConnected(playerid)) return 0;
1507 new Float:X, Float:Y, Float:Z;
1508 GetPlayerPos(playerid, X, Y, Z);
1509
1510 gPlayerData[playerid][E_CAGE][0] = CreateObject(985, X, Y+4, Z, 0.0, 0.0, 0.0);
1511 gPlayerData[playerid][E_CAGE][1] = CreateObject(985, X+4, Y, Z, 0.0, 0.0, 90.0);
1512 gPlayerData[playerid][E_CAGE][2] = CreateObject(985, X-4, Y, Z, 0.0, 0.0, 270.0);
1513 gPlayerData[playerid][E_CAGE][3] = CreateObject(985, X, Y-4, Z, 0.0, 0.0, 180.0);
1514 gPlayerData[playerid][E_CAGED] = true;
1515 return 1;
1516}
1517
1518stock DestroyPlayerCage(playerid)
1519{
1520 if(!IsPlayerConnected(playerid)) return 0;
1521
1522 for(new i; i < 4; i++)
1523 {
1524 DestroyObject(gPlayerData[playerid][E_CAGE][i]);
1525 gPlayerData[playerid][E_CAGE][i] = INVALID_OBJECT_ID;
1526 }
1527 gPlayerData[playerid][E_CAGED] = false;
1528 return 1;
1529}
1530
1531stock GetVehicleModelFromName(vName[])
1532{
1533 for (new i = 400; i <= 611; i++)
1534 if(strfind(vNames[i - 400], vName, true) != -1)
1535 return i;
1536 return -1;
1537}
1538
1539
1540stock GVN(modelid,name[],namesize)
1541{
1542 if(modelid < 400 || modelid > 611) return 0;
1543 modelid -= 400;
1544 for(new i = 0, len = strlen(vNames[modelid]); i < len && i < namesize; i++)
1545 {
1546 name[i] = vNames[modelid][i];
1547 }
1548 return 1;
1549}
1550
1551stock GetVehicleName(modelid)
1552{
1553 new name[64];
1554 GVN(modelid, name, sizeof(name));
1555 return name;
1556}
1557
1558stock CreateVehicleForPlayer(playerid, model, color = 0, color2 = 0)
1559{
1560 new
1561 vCar,
1562 Float: X,
1563 Float: Y,
1564 Float: Z
1565 ;
1566 GetPlayerPos(playerid, X, Y, Z);
1567 vCar = CreateVehicle(model, X, Y, Z, 0, color, color2, -1);
1568 PutPlayerInVehicle(playerid, vCar, 0);
1569}
1570
1571stock SendClientMessageToAdmins(color, Text[])
1572{
1573 foreach(Player, i)
1574 {
1575 if(gPlayerData[i][E_ADMIN_LEVEL] > 0) {
1576 SendClientMessage(i, color, Text);
1577 }
1578 }
1579 return 1;
1580}