Guest User

Untitled

a guest
Nov 16th, 2018
545
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 279.70 KB | None | 0 0
  1. //------------------------------------------------
  2. /*
  3.                                       ___
  4.         ______  ___      _           /   \
  5.        / ____/ / _ \    | |          \___/
  6.       / /     | | | |   | | __ _  __   _  _  __             ____
  7.      | |  ___ | |_| |  _| || |/ \/  \ | || |/_ \   __    __|___ \
  8.      | | |__ || | | | / _ ||  /\__/\ || ||  / \ |  \ \  / /  / /
  9.      \ \___| || | | || |_||| |     | || || |  | |   \ \/ / / /_
  10.       \______||_| |_|\____||_|     |_||_||_|  |_|    \__/ \____|
  11.  
  12.     GAdmin System (gadmin.pwn) - Version 2.3.2
  13.     * Using easydb include, fast, easy and efficient SQLITE database for the admin system.
  14.     * Support timeban/tempban, permanent ban and now range bans as well.
  15.     * Over 100+ admin and player commands, watch the list in one dialog by typing /acmds in chat.
  16.  
  17.     Author: (creator)
  18.     * Gammix
  19.  
  20.     Contributors:
  21.     * Y_Less - sscanf2
  22.     * Zeex & Yashas - izcmd include
  23.     * Jochemd - timestamptodate include
  24.     * Incognito - streamer plugin
  25.     * Phento - HighestTopList function
  26.     * R@f - ipmatch function
  27.     * SAMP team
  28.  
  29.     (c) Copyright 2015
  30.     * This file is provided as is (no warranties).
  31. */
  32. //------------------------------------------------
  33.  
  34. #define FILTERSCRIPT//must be defined
  35.  
  36. //------------------------------------------------
  37.  
  38. #include <a_samp> //SA-MP team
  39.  
  40. #include <sscanf2> //Y_Less
  41.  
  42. #include <easydb> //Gammix
  43. //#include <serversided> //Gammix
  44.  
  45. #include <izcmd> //Zeex & Yashas
  46.  
  47. #include <timestamptodate> //Jochemd
  48.  
  49. #include <streamer> //Incognito
  50.  
  51. //------------------------------------------------------------------------------
  52.  
  53. //System configuration
  54.  
  55. #define LOCATION_DATABASE               "GAdmin.db" //the ADMIN_DATABASE name
  56.  
  57. #define TABLE_USERS                     "users" //the user data table name (all player stats will be saved in it)
  58. #define TABLE_BANS                      "bans" //the ban data table name (all the ban data will be saved in it)
  59. #define TABLE_RANGE_BANS                "rangebans" //the rangeban data table name (all the ban data will be saved in it)
  60. #define TABLE_FORBIDDEN_WORDS           "forbidden_words" //the bad words data table name
  61. #define TABLE_FORBIDDEN_NAMES           "forbidden_names" //the bad names data table name
  62. #define TABLE_FORBIDDEN_TAGS            "forbidden_tags" //the bad tag names data table name
  63.  
  64. #define MAX_FORBIDDEN_ITEMS             100 //maximum forbidden items(names, words, tags) your database tables can have
  65.  
  66. #define FORCE_REGISTER                  //comment this if you don't want registeration compulsory
  67. #define FORCE_LOGIN                     //comment this if you don't want login compulsory
  68.  
  69. #define READ_COMMANDS                   //comment this if you don't want admin notification whenever a player types a cmd
  70. #define READ_AKA                        //comment this if you don't want admin notification about player AKA info. whenever a player connects
  71.  
  72. #define REPORT_TEXTDRAW                 //comment this if you don't want a report textdraw for admin's notifications
  73. #define MAX_REPORTLOG_LINES             5 //maximum latest reports the dialog can store (/reports)
  74.  
  75. #define SPECTATE_TEXTDRAW               //comment this if you don't want a spectate textdraw for admin's target player stats on screen
  76.  
  77. #define MAX_LOGIN_ATTEMPTS              3 //maximum times a player may try loggin in a account
  78. #define MAX_WARNINGS                    5 //maximum number of warnings a player may get after which he/she get kicked!
  79.  
  80. #define MAX_VIP_LEVELS                  3 //maximum VIP/Donor ranks
  81. #define MAX_ADMIN_LEVELS                6 //maximum Admin ranks, make sure its greater than 5
  82.  
  83. #define ANTI_FLOOD                      //commaent this if you don't want anti flood protection
  84. #define ANTI_SPAM                       //commaent this if you don't want anti spam protection
  85.  
  86. new const Float:gAdminSpawn[][4] =      //random admin spawns (spawns admin when on duty only)
  87. {
  88.     //Los santos
  89.  
  90.     {1751.1097,-2106.4529,13.5469,183.1979}, // El-Corona - Outside random house
  91.     {2652.6418,-1989.9175,13.9988,182.7107}, // Random house in willowfield - near pla
  92.     {2232.1309,-1159.5679,25.8906,103.2939}, // Jefferson motel
  93.     {2388.1003,-1279.8933,25.1291,94.3321}, // House south of pig pen
  94.     {1240.3170,-2036.6886,59.9575,276.4659}, // Verdant Bluffs
  95.     {2215.5181,-2627.8174,13.5469,273.7786}, // Ocean docks 1
  96.     {2509.4346,-2637.6543,13.6453,358.3565}, // Ocean Docks spawn 2
  97.  
  98.     //Las venturas
  99.  
  100.     {1435.8024,2662.3647,11.3926,1.1650}, //  Northern train station
  101.     {1457.4762,2773.4868,10.8203,272.2754}, //  Northern golf club
  102.     {2101.4192,2678.7874,10.8130,92.0607}, //  Northern near railway line
  103.     {1951.1090,2660.3877,10.8203,180.8461}, //  Northern house 2
  104.     {1666.6949,2604.9861,10.8203,179.8495}, //  Northern house 3
  105.     {1860.9672,1030.2910,10.8203,271.6988}, //  Behind 4 Dragons
  106.     {1673.2345,1316.1067,10.8203,177.7294}, //  Airport carpark
  107.     {1412.6187,2000.0596,14.7396,271.3568}, //  South baseball stadium houses
  108.  
  109.     //San fierro
  110.  
  111.     {-2723.4639,-314.8138,7.1839,43.5562}, // golf course spawn
  112.     {-2694.5344,64.5550,4.3359,95.0190}, // in front of a house
  113.     {-2458.2000,134.5419,35.1719,303.9446}, // hotel
  114.     {-2866.7683,691.9363,23.4989,286.3060}, // house
  115.     {-2108.0171,902.8030,76.5792,5.7139}, // house
  116.     {-2173.0654,-392.7444,35.3359,237.0159}, // stadium
  117.     {-2320.5286,-180.3870,35.3135,179.6980}, // burger shot
  118.     {-2930.0049,487.2518,4.9141,3.8258} // harbor
  119. };
  120.  
  121. //------------------------------------------------------------------------------
  122.  
  123. //colors list
  124. #define COLOR_DODGER_BLUE \
  125.             0x1E90FFFF
  126. #define COLOR_FIREBRICK \
  127.             0xB22222FF
  128. #define COLOR_STEEL_BLUE \
  129.             0x4682B4FF
  130. #define COLOR_RED \
  131.             0xFF0000FF
  132. #define COLOR_GREY \
  133.             0x808080FF
  134. #define COLOR_GREEN \
  135.             0x00CC00FF
  136. #define COLOR_LIME \
  137.             0xCCFF99FF
  138. #define COLOR_BLACK \
  139.             0x000000FF
  140. #define COLOR_WHITE \
  141.             0xFFFFFFFF
  142. #define COLOR_ORANGE \
  143.             0xFF9933FF
  144. #define COLOR_YELLOW \
  145.             0xFFFF66FF
  146. #define COLOR_BLUE \
  147.             0x0099CCFF
  148. #define COLOR_PURPLE \
  149.             0x6600FFFF
  150. #define COLOR_BROWN \
  151.             0x663300FF
  152. #define COLOR_PINK \
  153.             0xCC99FFFF
  154. #define COLOR_HOT_PINK \
  155.             0xFF99FFFF
  156. #define COLOR_THISTLE \
  157.             0xD8BFD8FF
  158. #define COLOR_KHAKI \
  159.             0x999966FF
  160. #define COLOR_ORANGE_RED \
  161.             0xFF4500FF
  162. //embeded
  163. #define SAMP_BLUE \
  164.             "{A9C4E4}"
  165. #define WHITE \
  166.             "{FFFFFF}"
  167. #define MARONE \
  168.             "{800000}"
  169. #define RED \
  170.             "{FF0000}"
  171. #define HOT_PINK \
  172.             "{FF99FF}"
  173. #define LIME \
  174.             "{CCFF99}"
  175. #define TOMATO \
  176.             "{FF6347}"
  177. #define PINK \
  178.             "{CC99FF}"
  179. #define BLACK \
  180.             "{000000}"
  181. #define ORANGE \
  182.             "{FF9933}"
  183. #define YELLOW \
  184.             "{FFFF66}"
  185. #define GREEN \
  186.             "{00CC00}"
  187. #define VIOLET \
  188.             "{EE82EE}"
  189. #define BROWN \
  190.             "{663300}"
  191. #define CORAL \
  192.             "{993333}"
  193.  
  194. //------------------------------------------------------------------------------
  195.  
  196. //latest player looping method
  197. #define LOOP_PLAYERS(%0) \
  198.             for(new %0 = 0, _%0 = GetPlayerPoolSize(); %0 <= _%0, IsPlayerConnected(%0); %0++)
  199.  
  200. //------------------------------------------------
  201.  
  202. //define isnull
  203. #if ! defined isnull
  204.     #define isnull(%1) \
  205.                 ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  206. #endif
  207.  
  208. //------------------------------------------------
  209.  
  210. //defining IsValidVehicle if not done
  211. #if ! defined IsValidVehicle
  212.     native IsValidVehicle(vehicleid);
  213. #endif
  214.  
  215. //------------------------------------------------
  216.  
  217. //adjust the dialog ids yourself
  218. #define DIALOG_COMMON           0
  219. #define DIALOG_REGISTER         900
  220. #define DIALOG_LOGIN            901
  221. #define DIALOG_PLAYER_COLORS    902
  222. //tune dialogs
  223. #define DIALOG_MAIN             903
  224. #define DIALOG_PAINTJOBS        904
  225. #define DIALOG_COLORS           905
  226. #define DIALOG_EXHAUSTS         906
  227. #define DIALOG_FBUMPS           907
  228. #define DIALOG_RBUMPS           908
  229. #define DIALOG_ROOFS            909
  230. #define DIALOG_SPOILERS         910
  231. #define DIALOG_SIDESKIRTS       911
  232. #define DIALOG_BULLBARS         912
  233. #define DIALOG_WHEELS           913
  234. #define DIALOG_CSTEREO          914
  235. #define DIALOG_HYDRAULICS       915
  236. #define DIALOG_NITRO            916
  237. #define DIALOG_LIGHTS           917
  238. #define DIALOG_HOODS            918
  239. #define DIALOG_VENTS            919
  240. //others
  241. #define DIALOG_TELEPORTS        920
  242.  
  243. //------------------------------------------------
  244.  
  245. stock e_STRING[144];
  246.  
  247. #define LevelCheck(%0,%1); \
  248.     if(GetPlayerGAdminLevel(%0) < %1 && ! IsPlayerAdmin(%0)) \
  249.         return (format(e_STRING, sizeof(e_STRING), "AVISO:você não tem level %i de admin para usar este comando.", %1), \
  250.             SendClientMessage(%0, COLOR_FIREBRICK, e_STRING));
  251.  
  252. #if !defined FLOAT_INFINITY
  253.     #define FLOAT_INFINITY (Float:0x7F800000)
  254. #endif
  255.  
  256. #if ! defined IsValidWeapon
  257.     #define IsValidWeapon(%0) (%0 < 47)
  258. #endif
  259.  
  260. //------------------------------------------------
  261.  
  262. enum UserEnum
  263. {
  264.     //saved data
  265.     u_admin,
  266.     u_vip,
  267.     u_kills,
  268.     u_deaths,
  269.     u_score,
  270.     u_money,
  271.     u_hours,
  272.     u_minutes,
  273.     u_seconds,
  274.  
  275.     //not saved data
  276.     u_attempts,
  277.     u_sessionkills,
  278.     u_sessiondeaths,
  279.     u_spree,
  280.     #if defined ANTI_FLOOD
  281.         u_chattime,
  282.     #endif
  283.     #if defined ANTI_SPAM
  284.         u_chattext[144],
  285.     #endif
  286.     Text3D:u_duty3dtext,
  287.     u_lastreported,
  288.     u_lastreportedtime,
  289.     u_updatetimer,
  290.  
  291.     //conditions data
  292.     u_jailtime,
  293.     u_mutetime,
  294.     u_cmutetime,
  295.     u_specdata[2],
  296.     Float:u_specpos[4],
  297.     u_vehicle,
  298.     u_warnings,
  299.  
  300.     //pm data
  301.     u_lastuser,
  302.  
  303.     //spectate data
  304.     u_specid,
  305.     bool:u_spec,
  306.     Float:u_pos[3],
  307.     u_int,
  308.     #if defined SPECTATE_TEXTDRAW
  309.         PlayerText:u_spectxt,
  310.     #endif
  311.     u_vw
  312. };
  313. new gUser[MAX_PLAYERS][UserEnum];
  314.  
  315. //------------------------------------------------
  316.  
  317. enum GlobalEnum
  318. {
  319.     s_usertable,
  320.     s_bantable,
  321.     s_rangebantable,
  322.     s_fwordstable,
  323.     s_fnamestable,
  324.     s_ftagstable,
  325.     s_fwordscount,
  326.     s_fnamescount,
  327.     s_ftagscount,
  328.     bool:s_locked,
  329.     Text:s_locktd[3],
  330.     #if defined REPORT_TEXTDRAW
  331.         Text:s_reporttd
  332.     #endif
  333. }
  334. new gGlobal[GlobalEnum];
  335.  
  336. //------------------------------------------------
  337.  
  338. #if MAX_REPORTLOG_LINES > 0
  339.     new gReportlog[MAX_REPORTLOG_LINES][145];
  340. #endif
  341.  
  342. //------------------------------------------------
  343.  
  344. //forbidden lists
  345. new gForbidden_Words[(MAX_FORBIDDEN_ITEMS + 1)][150], gForbidden_Names[(MAX_FORBIDDEN_ITEMS + 1)][MAX_PLAYER_NAME], gForbidden_Tags[(MAX_FORBIDDEN_ITEMS + 1)][MAX_PLAYER_NAME];
  346.  
  347. //------------------------------------------------
  348.  
  349. //vehicle names
  350. new const VehicleNames[212][] =
  351. {
  352.     {"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
  353.     {"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
  354.     {"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
  355.     {"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
  356.     {"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
  357.     {"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
  358.     {"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
  359.     {"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
  360.     {"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
  361.     {"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
  362.     {"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
  363.     {"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
  364.     {"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
  365.     {"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
  366.     {"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
  367.     {"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
  368.     {"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
  369.     {"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
  370.     {"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
  371.     {"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
  372.     {"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
  373.     {"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
  374.     {"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
  375.     {"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
  376.     {"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
  377.     {"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
  378.     {"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
  379.     {"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
  380.     {"Utility Trailer"}
  381. };
  382.  
  383. //------------------------------------------------
  384.  
  385. public OnFilterScriptInit()
  386. {
  387.     print(" ");
  388.     print("_________________| GAdminv3 |_________________");
  389.     print("Attempting to initialize ''GAdminv3.amx''...");
  390.     print(" ");
  391.  
  392.     if(! DB::Open(LOCATION_DATABASE))
  393.     {
  394.         printf("[GAdminv3] - ERRO: O filterscript não pôde ser carregado porque o arquivo do banco de dados(%s) não foi aberto.", LOCATION_DATABASE);
  395.         return 0;
  396.     }
  397.  
  398.     gGlobal[s_usertable] = DB::VerifyTable(TABLE_USERS, "ID");
  399.     if(gGlobal[s_usertable] == DB_INVALID_TABLE)
  400.     {
  401.         printf("[GAdminv3] - ERRO: A tabela Usuários(%s) não pôde ser verificado.", TABLE_USERS);
  402.     }
  403.     else
  404.     {
  405.         DB::VerifyColumn(gGlobal[s_usertable], "username", DB::TYPE_STRING, "");
  406.         DB::VerifyColumn(gGlobal[s_usertable], "password", DB::TYPE_STRING, "");
  407.         DB::VerifyColumn(gGlobal[s_usertable], "ip", DB::TYPE_STRING, "");
  408.         DB::VerifyColumn(gGlobal[s_usertable], "joindate", DB::TYPE_STRING, "");
  409.         DB::VerifyColumn(gGlobal[s_usertable], "laston", DB::TYPE_STRING, "");
  410.         DB::VerifyColumn(gGlobal[s_usertable], "admin", DB::TYPE_NUMBER, 0);
  411.         DB::VerifyColumn(gGlobal[s_usertable], "vip", DB::TYPE_NUMBER, 0);
  412.         DB::VerifyColumn(gGlobal[s_usertable], "kills", DB::TYPE_NUMBER, 0);
  413.         DB::VerifyColumn(gGlobal[s_usertable], "deaths", DB::TYPE_NUMBER, 0);
  414.         DB::VerifyColumn(gGlobal[s_usertable], "score", DB::TYPE_NUMBER, 0);
  415.         DB::VerifyColumn(gGlobal[s_usertable], "money", DB::TYPE_NUMBER, 0);
  416.         DB::VerifyColumn(gGlobal[s_usertable], "hours", DB::TYPE_NUMBER, 0);
  417.         DB::VerifyColumn(gGlobal[s_usertable], "minutes", DB::TYPE_NUMBER, 0);
  418.         DB::VerifyColumn(gGlobal[s_usertable], "seconds", DB::TYPE_NUMBER, 0);
  419.         DB::VerifyColumn(gGlobal[s_usertable], "autologin", DB::TYPE_NUMBER, 0);
  420.     }
  421.     printf("[GAdminv3] - NOTICE: Total %i contas carregadas da tabela ''%s''", DB::CountRows(gGlobal[s_usertable]), TABLE_USERS);
  422.  
  423.     gGlobal[s_rangebantable] = DB::VerifyTable(TABLE_RANGE_BANS, "ID");
  424.     if(gGlobal[s_bantable] == DB_INVALID_TABLE)
  425.     {
  426.         printf("[GAdminv3] - ERROR: The Rangebans table(%s) couldn't be verified.", TABLE_RANGE_BANS);
  427.     }
  428.     else
  429.     {
  430.         DB::VerifyColumn(gGlobal[s_rangebantable], "ip", DB::TYPE_STRING, "");
  431.         DB::VerifyColumn(gGlobal[s_rangebantable], "banby", DB::TYPE_STRING, "");
  432.         DB::VerifyColumn(gGlobal[s_rangebantable], "banon", DB::TYPE_STRING, "");
  433.         DB::VerifyColumn(gGlobal[s_rangebantable], "reason", DB::TYPE_STRING, "");
  434.         DB::VerifyColumn(gGlobal[s_rangebantable], "expire", DB::TYPE_NUMBER, 0);
  435.     }
  436.     printf("[GAdminv3] - NOTICE: Total %i range bans loaded from the table ''%s''", DB::CountRows(gGlobal[s_rangebantable]), TABLE_RANGE_BANS);
  437.  
  438.     gGlobal[s_bantable] = DB::VerifyTable(TABLE_BANS, "ID");
  439.     if(gGlobal[s_bantable] == DB_INVALID_TABLE)
  440.     {
  441.         printf("[GAdminv3] - ERROR: The Bans table(%s) couldn't be verified.", TABLE_BANS);
  442.     }
  443.     else
  444.     {
  445.         DB::VerifyColumn(gGlobal[s_bantable], "name", DB::TYPE_STRING, "");
  446.         DB::VerifyColumn(gGlobal[s_bantable], "ip", DB::TYPE_STRING, "");
  447.         DB::VerifyColumn(gGlobal[s_bantable], "banby", DB::TYPE_STRING, "");
  448.         DB::VerifyColumn(gGlobal[s_bantable], "banon", DB::TYPE_STRING, "");
  449.         DB::VerifyColumn(gGlobal[s_bantable], "reason", DB::TYPE_STRING, "");
  450.         DB::VerifyColumn(gGlobal[s_bantable], "expire", DB::TYPE_NUMBER, 0);
  451.     }
  452.     printf("[GAdminv3] - NOTICE: Total %i bans loaded from the table ''%s''", DB::CountRows(gGlobal[s_bantable]), TABLE_BANS);
  453.  
  454.     gGlobal[s_fwordstable] = DB::VerifyTable(TABLE_FORBIDDEN_WORDS, "ID");
  455.     if(gGlobal[s_fwordstable] == DB_INVALID_TABLE)
  456.     {
  457.         printf("[GAdminv3] - ERROR: The Forbidden Words table(%s) couldn't be verified.", TABLE_FORBIDDEN_WORDS);
  458.     }
  459.     else
  460.     {
  461.         DB::VerifyColumn(gGlobal[s_fwordstable], "word", DB::TYPE_STRING, "");
  462.  
  463.         gGlobal[s_fwordscount] = DB::CountRows(gGlobal[s_fwordstable]);
  464.         for(new i = 0; i < MAX_FORBIDDEN_ITEMS; i++)
  465.         {
  466.             gForbidden_Words[i][0] = EOS;
  467.  
  468.             if(i < gGlobal[s_fwordscount])
  469.             {
  470.                 DB::GetStringEntry(gGlobal[s_fwordstable], i + 1, "word", gForbidden_Words[i]);
  471.             }
  472.         }
  473.         printf("[GAdminv3] - NOTICE: Total %i forbidden words loaded from the table ''%s''", gGlobal[s_fwordscount], TABLE_FORBIDDEN_WORDS);
  474.     }
  475.  
  476.     gGlobal[s_fnamestable] = DB::VerifyTable(TABLE_FORBIDDEN_NAMES, "ID");
  477.     if(gGlobal[s_fnamestable] == DB_INVALID_TABLE)
  478.     {
  479.         printf("[GAdminv3] - ERROR: The Forbidden Names table(%s) couldn't be verified.", TABLE_FORBIDDEN_NAMES);
  480.     }
  481.     else
  482.     {
  483.         DB::VerifyColumn(gGlobal[s_fnamestable], "name", DB::TYPE_STRING, "");
  484.  
  485.         gGlobal[s_fnamescount] = DB::CountRows(gGlobal[s_fnamestable]);
  486.         for(new i = 0; i < MAX_FORBIDDEN_ITEMS; i++)
  487.         {
  488.             gForbidden_Names[i][0] = EOS;
  489.  
  490.             if(i < gGlobal[s_fnamescount])
  491.             {
  492.                 DB::GetStringEntry(gGlobal[s_fnamestable], i + 1, "name", gForbidden_Names[i]);
  493.             }
  494.         }
  495.         printf("[GAdminv3] - NOTICE: Total %i forbidden names loaded from the table ''%s''", gGlobal[s_fnamescount], TABLE_FORBIDDEN_NAMES);
  496.     }
  497.  
  498.     gGlobal[s_ftagstable] = DB::VerifyTable(TABLE_FORBIDDEN_TAGS, "ID");
  499.     if(gGlobal[s_ftagstable] == DB_INVALID_TABLE)
  500.     {
  501.         printf("[GAdminv3] - ERROR: The Forbidden Names table(%s) couldn't be verified.", TABLE_FORBIDDEN_TAGS);
  502.     }
  503.     else
  504.     {
  505.         DB::VerifyColumn(gGlobal[s_ftagstable], "tag", DB::TYPE_STRING, "");
  506.  
  507.         gGlobal[s_ftagscount] = DB::CountRows(gGlobal[s_ftagstable]);
  508.         for(new i = 0; i < MAX_FORBIDDEN_ITEMS; i++)
  509.         {
  510.             gForbidden_Tags[i][0] = EOS;
  511.  
  512.             if(i < gGlobal[s_ftagscount])
  513.             {
  514.                 DB::GetStringEntry(gGlobal[s_ftagstable], i + 1, "tag", gForbidden_Tags[i]);
  515.             }
  516.         }
  517.         printf("[GAdminv3] - NOTICE: Total %i forbidden part of names/tags loaded from the table ''%s''", gGlobal[s_ftagscount], TABLE_FORBIDDEN_TAGS);
  518.     }
  519.  
  520.     //report TD
  521.     #if defined REPORT_TEXTDRAW
  522.         gGlobal[s_reporttd] = TextDrawCreate(6.000000, 434.000000, "~b~~h~~h~~h~[12:33] ~w~~h~REPORT from Gammix(0) ~y~I~w~~h~ Against HacX(9) ~y~I~w~~h~ Reason: health hack");
  523.         TextDrawBackgroundColor(gGlobal[s_reporttd], 255);
  524.         TextDrawFont(gGlobal[s_reporttd], 1);
  525.         TextDrawLetterSize(gGlobal[s_reporttd], 0.230000, 1.100000);
  526.         TextDrawColor(gGlobal[s_reporttd], -1);
  527.         TextDrawSetOutline(gGlobal[s_reporttd], 1);
  528.         TextDrawSetProportional(gGlobal[s_reporttd], 1);
  529.         TextDrawSetSelectable(gGlobal[s_reporttd], 0);
  530.     #endif
  531.  
  532.     for(new i; i < sizeof(gReportlog); i++)
  533.     {
  534.         format(gReportlog[i], 145, "");
  535.     }
  536.  
  537.     for(new i; i < GetMaxPlayers(); i++)
  538.     {
  539.         OnPlayerConnect(i);
  540.     }
  541.  
  542.     print(" ");
  543.     print("Gammix's Administration Filterscript (c) 2015 | "LOCATION_DATABASE" | Initialization complete...");
  544.     print("_________________________________________________");
  545.     print(" ");
  546.     return 1;
  547. }
  548.  
  549. //------------------------------------------------
  550.  
  551. public OnFilterScriptExit()
  552. {
  553.     for(new i; i < GetMaxPlayers(); i++)
  554.     {
  555.         OnPlayerDisconnect(i, 0);
  556.     }
  557.  
  558.     DB::Close();
  559.  
  560.     //destroy server lock
  561.     for(new i; i < 3; i++)
  562.     {
  563.         TextDrawHideForAll(gGlobal[s_locktd][i]);
  564.         TextDrawDestroy(gGlobal[s_locktd][i]);
  565.     }
  566.  
  567.     //destroy report textdraws
  568.     #if defined REPORT_TEXTDRAW
  569.         TextDrawHideForAll(gGlobal[s_reporttd]);
  570.         TextDrawDestroy(gGlobal[s_reporttd]);
  571.     #endif
  572.  
  573.     print(" ");
  574.     print("_________________| GAdminv3 |_________________");
  575.     print("Gammix's Administration Filterscript (c) 2015 | "LOCATION_DATABASE" | Unloading complete...");
  576.     print("_________________________________________________");
  577.     print(" ");
  578.     return 1;
  579. }
  580.  
  581. //------------------------------------------------
  582.  
  583. //delay kick
  584. DelayKick(playerid) return SetTimerEx("OnPlayerKicked", (10 + GetPlayerPing(playerid)), false, "i", playerid);
  585.  
  586. forward OnPlayerKicked(playerid);
  587. public OnPlayerKicked(playerid) return Kick(playerid);
  588.  
  589. //------------------------------------------------
  590.  
  591. JailPlayer(playerid)
  592. {
  593.     SetPlayerInterior(playerid, 3);
  594.     SetPlayerPos(playerid, 197.6661, 173.8179, 1003.0234);
  595.     SetCameraBehindPlayer(playerid);
  596.  
  597.     new string[144];
  598.     format(string, sizeof(string), "PRISÃO: você vai ficar preso por %i segundos", gUser[playerid][u_jailtime]);
  599.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  600.     return 1;
  601. }
  602.  
  603. //------------------------------------------------
  604.  
  605. EraseVeh(vehicleid)
  606. {
  607.     LOOP_PLAYERS(i)
  608.     {
  609.         new Float:X, Float:Y, Float:Z;
  610.         if(IsPlayerInVehicle(i, vehicleid))
  611.         {
  612.             RemovePlayerFromVehicle(i);
  613.             GetPlayerPos(i, X, Y, Z);
  614.             SetPlayerPos(i, X, Y+3, Z);
  615.         }
  616.         SetVehicleParamsForPlayer(vehicleid, i, 0, 1);
  617.     }
  618.     SetTimerEx("OnVehicleRespawned", 1500, 0, "i", vehicleid);
  619. }
  620.  
  621. forward OnVehicleRespawned(vehicleid);
  622. public OnVehicleRespawned(vehicleid) return DestroyVehicle(vehicleid);
  623.  
  624. //------------------------------------------------
  625.  
  626. GetVehicleModelIDFromName(vname[])
  627. {
  628.     for(new i = 0; i < 211; i++)
  629.     {
  630.         if ( strfind(VehicleNames[i], vname, true) != -1 )
  631.         return i + 400;
  632.     }
  633.     return -1;
  634. }
  635.  
  636. //------------------------------------------------
  637.  
  638. _GetWeaponName(weaponid, weapon[], len)
  639. {
  640.     switch(weaponid)
  641.     {
  642.         case 0: format(weapon, len, "Fist");
  643.         case 18: format(weapon, len, "Molotov Cocktail");
  644.         case 44: format(weapon, len, "Night Vision Goggles");
  645.         case 45: format(weapon, len, "Thermal Goggles");
  646.         default: GetWeaponName(weaponid, weapon, len);
  647.     }
  648. }
  649. #if defined _ALS_GetWeaponName
  650.     #undef GetWeaponName
  651. #else
  652.     #define _ALS_GetWeaponName
  653. #endif
  654. #define GetWeaponName _GetWeaponName
  655.  
  656. _TogglePlayerSpectating(playerid, set)
  657. {
  658.     if(set)
  659.     {
  660.         if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)
  661.         {
  662.             TogglePlayerSpectating(playerid, true);
  663.         }
  664.     }
  665.     else
  666.     {
  667.         if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
  668.         {
  669.             TogglePlayerSpectating(playerid, false);
  670.         }
  671.     }
  672. }
  673. #if defined _ALS_TogglePlayerSpectating
  674.     #undef TogglePlayerSpectating
  675. #else
  676.     #define _ALS_TogglePlayerSpectating
  677. #endif
  678. #define TogglePlayerSpectating _TogglePlayerSpectating
  679.  
  680. GetWeaponIDFromName(WeaponName[])
  681. {
  682.     if(strfind("molotov", WeaponName, true) != -1) return 18;
  683.     for(new i = 0; i <= 46; i++)
  684.     {
  685.         switch(i)
  686.         {
  687.             case 0,19,20,21,44,45: continue;
  688.             default:
  689.             {
  690.                 new name[32];
  691.                 GetWeaponName(i,name,32);
  692.                 if(strfind(name,WeaponName,true) != -1) return i;
  693.             }
  694.         }
  695.     }
  696.     return -1;
  697. }
  698.  
  699. //------------------------------------------------
  700.  
  701. IsPlayerGAdmin(playerid)
  702. {
  703.     if(gUser[playerid][u_admin] > 0 || IsPlayerAdmin(playerid)) return true;
  704.     return false;
  705. }
  706.  
  707. GetPlayerGAdminLevel(playerid)
  708. {
  709.     return gUser[playerid][u_admin];
  710. }
  711.  
  712. //------------------------------------------------
  713.  
  714. IsPlayerGVip(playerid)
  715. {
  716.     if(gUser[playerid][u_vip] > 0) return true;
  717.     return false;
  718. }
  719.  
  720. GetPlayerGVipLevel(playerid)
  721. {
  722.     return gUser[playerid][u_vip];
  723. }
  724.  
  725. //------------------------------------------------
  726.  
  727. SendClientMessageForAdmins(color, message[], level = 1)
  728. {
  729.     LOOP_PLAYERS(i)
  730.     {
  731.         if(GetPlayerGAdminLevel(i) >= level)
  732.         {
  733.             SendClientMessage(i, color, message);
  734.         }
  735.     }
  736.     return 1;
  737. }
  738.  
  739. //------------------------------------------------
  740.  
  741. IsPlayerSpawned(playerid)
  742. {
  743.     switch(GetPlayerState(playerid))
  744.     {
  745.         case PLAYER_STATE_ONFOOT, PLAYER_STATE_DRIVER, PLAYER_STATE_PASSENGER, PLAYER_STATE_SPAWNED: return true;
  746.         default: return false;
  747.     }
  748.     return false;
  749. }
  750.  
  751. IsPlayerSpectating(playerid)
  752. {
  753.     if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING) return true;
  754.     return false;
  755. }
  756.  
  757. //------------------------------------------------
  758.  
  759. SetPlayerSpectating(playerid, targetid)
  760. {
  761.     TogglePlayerSpectating(playerid, true);
  762.  
  763.     if(GetPlayerInterior(playerid) != GetPlayerInterior(targetid))
  764.     {
  765.         SetPlayerInterior(playerid, GetPlayerInterior(targetid));
  766.     }
  767.     if(GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(targetid))
  768.     {
  769.         SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(targetid));
  770.     }
  771.  
  772.     if(IsPlayerInAnyVehicle(targetid))
  773.     {
  774.         PlayerSpectateVehicle(playerid, GetPlayerVehicleID(targetid));
  775.     }
  776.     else
  777.     {
  778.         PlayerSpectatePlayer(playerid, targetid);
  779.     }
  780.  
  781.     new string[144];
  782.     format(string, sizeof(string),"-> Você está agora assistindo %s[%i].", ReturnPlayerName(targetid), targetid);
  783.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  784.  
  785.     gUser[playerid][u_spec] = true;
  786.     gUser[playerid][u_specid] = targetid;
  787.     return true;
  788. }
  789.  
  790. UpdatePlayerSpectating(playerid, type = 0, bool:forcestop = false)
  791. {
  792.     switch(type)
  793.     {
  794.         case 0:
  795.         {
  796.             new check = 0;
  797.             LOOP_PLAYERS(i)
  798.             {
  799.                 if(i < gUser[i][u_specid]) i = (gUser[playerid][u_specid] + 1);
  800.                 if(i > GetPlayerPoolSize()) i = 0, check += 1;
  801.  
  802.                 if(check > 1) break;
  803.  
  804.                 if(IsPlayerSpawned(i))
  805.                 {
  806.                     if(i != playerid)
  807.                     {
  808.                         if(! IsPlayerSpectating(i))
  809.                         {
  810.                             SetPlayerSpectating(playerid, i);
  811.                             break;
  812.                         }
  813.                     }
  814.                 }
  815.             }
  816.  
  817.             if(forcestop)
  818.             {
  819.                 cmd_specoff(playerid, "");
  820.                 SendClientMessage(playerid, COLOR_FIREBRICK, "ERRO: Não havia nenhum jogador para assistir mais.");
  821.             }
  822.             else
  823.             {
  824.                 SetPlayerSpectating(playerid, gUser[playerid][u_specid]);
  825.             }
  826.         }
  827.         case 1:
  828.         {
  829.             new check = 0;
  830.             LOOP_PLAYERS(i)
  831.             {
  832.                 if(i > gUser[i][u_specid]) i = (gUser[playerid][u_specid] - 1);
  833.                 if(i < 0) i = GetPlayerPoolSize(), check += 1;
  834.  
  835.                 if(check > 1) break;
  836.  
  837.                 if(IsPlayerSpawned(i))
  838.                 {
  839.                     if(i != playerid)
  840.                     {
  841.                         if(! IsPlayerSpectating(i))
  842.                         {
  843.                             SetPlayerSpectating(playerid, i);
  844.                             break;
  845.                         }
  846.                     }
  847.                 }
  848.             }
  849.  
  850.             if(forcestop)
  851.             {
  852.                 cmd_specoff(playerid, "");
  853.                 SendClientMessage(playerid, COLOR_FIREBRICK, "ERRO: Não havia nenhum jogador para voltar.");
  854.             }
  855.             else
  856.             {
  857.                 SetPlayerSpectating(playerid, gUser[playerid][u_specid]);
  858.             }
  859.         }
  860.         case 2:
  861.         {
  862.             if(GetPlayerInterior(playerid) != GetPlayerInterior(gUser[playerid][u_specid]))
  863.             {
  864.                 SetPlayerInterior(playerid, GetPlayerInterior(gUser[playerid][u_specid]));
  865.             }
  866.             if(GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(gUser[playerid][u_specid]))
  867.             {
  868.                 SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(gUser[playerid][u_specid]));
  869.             }
  870.  
  871.             if(IsPlayerInAnyVehicle(gUser[playerid][u_specid]))
  872.             {
  873.                 PlayerSpectateVehicle(playerid, GetPlayerVehicleID(gUser[playerid][u_specid]));
  874.             }
  875.             else
  876.             {
  877.                 PlayerSpectatePlayer(playerid, gUser[playerid][u_specid]);
  878.             }
  879.         }
  880.     }
  881.     return true;
  882. }
  883.  
  884. //------------------------------------------------
  885.  
  886. HighestTopList(const playerid, const Value, Player_ID[], Top_Score[], Loop) //Created by Phento
  887. {
  888.     new t = 0,
  889.         p = Loop-1;
  890.     while(t < p)
  891.     {
  892.         if(Value >= Top_Score[t])
  893.         {
  894.             while(p > t)
  895.             {
  896.                 Top_Score[p] = Top_Score[p - 1];
  897.                 Player_ID[p] = Player_ID[p - 1];
  898.                 p--;
  899.             }
  900.             Top_Score[t] = Value; Player_ID[t] = playerid;
  901.             break;
  902.         }
  903.         t++;
  904.     }
  905.     return 1;
  906. }
  907.  
  908. //------------------------------------------------
  909.  
  910. IsNumericString(str[])
  911. {
  912.     new ch, i;
  913.     while ((ch = str[i++])) if (!('0' <= ch <= '9')) return false;
  914.     return true;
  915. }
  916.  
  917. ReturnPlayerName(playerid)
  918. {
  919.     new player_name[MAX_PLAYER_NAME];
  920.     GetPlayerName(playerid, player_name, MAX_PLAYER_NAME);
  921.     return player_name;
  922. }
  923.  
  924. ReturnPlayerIP(playerid)
  925. {
  926.     new player_ip[18];
  927.     GetPlayerIp(playerid, player_ip, sizeof(player_ip));
  928.     return player_ip;
  929. }
  930.  
  931. //------------------------------------------------
  932.  
  933. forward OnPlayerTimeUpdate(playerid);
  934. public OnPlayerTimeUpdate(playerid)
  935. {
  936.     new string[1024];
  937.  
  938.     #if defined SPECTATE_TEXTDRAW
  939.         if(gUser[playerid][u_spec])
  940.         {
  941.             if(IsPlayerConnected(gUser[playerid][u_specid]))
  942.             {
  943.                 new target = gUser[playerid][u_specid];
  944.                 new arg_s[96], Float:arg_f, Float:arg_speed[3], arg_weaps[13][2];
  945.                 strcat(string, "~g~Username: ");
  946.                 strcat(string, "~y~");
  947.                 strcat(string, ReturnPlayerName(target));
  948.                 strcat(string, " (");
  949.                 format(arg_s, sizeof(arg_s), "%i", target);
  950.                 strcat(string, arg_s);
  951.                 strcat(string, ")");
  952.                 strcat(string, "~n~");
  953.                 strcat(string, "~g~Health: ");
  954.                 strcat(string, "~y~");
  955.                 GetPlayerHealth(target, arg_f);
  956.                 format(arg_s, sizeof(arg_s), "%0.2f", arg_f);
  957.                 strcat(string, arg_s);
  958.                 strcat(string, "~n~");
  959.                 strcat(string, "~g~Armour: ");
  960.                 strcat(string, "~y~");
  961.                 GetPlayerArmour(target, arg_f);
  962.                 format(arg_s, sizeof(arg_s), "%0.2f", arg_f);
  963.                 strcat(string, arg_s);
  964.                 strcat(string, "~n~");
  965.                 strcat(string, "~g~Ping: ");
  966.                 strcat(string, "~y~");
  967.                 format(arg_s, sizeof(arg_s), "%i", GetPlayerPing(target));
  968.                 strcat(string, arg_s);
  969.                 strcat(string, "~n~");
  970.                 strcat(string, "~g~IP.: ");
  971.                 strcat(string, "~y~");
  972.                 strcat(string, ReturnPlayerIP(target));
  973.                 strcat(string, "~n~");
  974.                 strcat(string, "~g~Skinid: ");
  975.                 strcat(string, "~y~");
  976.                 format(arg_s, sizeof(arg_s), "%i", GetPlayerSkin(target));
  977.                 strcat(string, arg_s);
  978.                 strcat(string, "~n~");
  979.                 strcat(string, "~g~Teamid: ");
  980.                 strcat(string, "~y~");
  981.                 format(arg_s, sizeof(arg_s), "%i", GetPlayerTeam(target));
  982.                 strcat(string, arg_s);
  983.                 strcat(string, "~n~");
  984.                 strcat(string, "~g~Money: ");
  985.                 strcat(string, "~y~");
  986.                 format(arg_s, sizeof(arg_s), "$%i", GetPlayerMoney(target));
  987.                 strcat(string, arg_s);
  988.                 strcat(string, "~n~");
  989.                 strcat(string, "~g~Score: ");
  990.                 strcat(string, "~y~");
  991.                 format(arg_s, sizeof(arg_s), "%i", GetPlayerScore(target));
  992.                 strcat(string, arg_s);
  993.                 strcat(string, "~n~");
  994.                 strcat(string, "~g~Camera target player: ");
  995.                 strcat(string, "~y~");
  996.                 if(GetPlayerCameraTargetPlayer(target) != INVALID_PLAYER_ID)
  997.                 {
  998.                     strcat(string, ReturnPlayerName(GetPlayerCameraTargetPlayer(target)));
  999.                     strcat(string, " (");
  1000.                     format(arg_s, sizeof(arg_s), "%i", GetPlayerScore(target));
  1001.                     strcat(string, arg_s);
  1002.                     strcat(string, ")");
  1003.                 }
  1004.                 else
  1005.                 {
  1006.                     strcat(string, "No Player");
  1007.                 }
  1008.                 strcat(string, "~n~");
  1009.                 strcat(string, "~g~Weapon target player: ");
  1010.                 strcat(string, "~y~");
  1011.                 if(GetPlayerTargetPlayer(target) != INVALID_PLAYER_ID)
  1012.                 {
  1013.                     strcat(string, ReturnPlayerName(GetPlayerTargetPlayer(target)));
  1014.                     strcat(string, " (");
  1015.                     format(arg_s, sizeof(arg_s), "%i", GetPlayerScore(target));
  1016.                     strcat(string, arg_s);
  1017.                     strcat(string, ")");
  1018.                 }
  1019.                 else
  1020.                 {
  1021.                     strcat(string, "No Player");
  1022.                 }
  1023.                 strcat(string, "~n~");
  1024.                 strcat(string, "~g~Speed: ");
  1025.                 strcat(string, "~y~");
  1026.                 if(! IsPlayerInAnyVehicle(playerid))
  1027.                 {
  1028.                     GetPlayerVelocity(target, arg_speed[0], arg_speed[1], arg_speed[2]);
  1029.                     arg_f = floatsqroot((arg_speed[0] * arg_speed[0]) + (arg_speed[1] * arg_speed[1]) + (arg_speed[2] * arg_speed[2])) * 179.28625;
  1030.                     format(arg_s, sizeof(arg_s), "%0.2f MPH", arg_f);
  1031.                     strcat(string, arg_s);
  1032.                 }
  1033.                 else
  1034.                 {
  1035.                     strcat(string, "0.0 MPH");
  1036.                 }
  1037.                 strcat(string, "~n~");
  1038.                 strcat(string, "~g~Vehicle Speed: ");
  1039.                 strcat(string, "~y~");
  1040.                 if(IsPlayerInAnyVehicle(playerid))
  1041.                 {
  1042.                     GetVehicleVelocity(GetPlayerVehicleID(target), arg_speed[0], arg_speed[1], arg_speed[2]);
  1043.                     arg_f = floatsqroot((arg_speed[0] * arg_speed[0]) + (arg_speed[1] * arg_speed[1]) + (arg_speed[2] * arg_speed[2])) * 179.28625;
  1044.                     format(arg_s, sizeof(arg_s), "%0.2f MPH", arg_f);
  1045.                     strcat(string, arg_s);
  1046.                 }
  1047.                 else
  1048.                 {
  1049.                     strcat(string, "0.0 MPH");
  1050.                 }
  1051.                 strcat(string, "~n~");
  1052.                 strcat(string, "~g~Position: ");
  1053.                 strcat(string, "~y~");
  1054.                 GetPlayerPos(playerid, arg_speed[0], arg_speed[1], arg_speed[2]);
  1055.                 format(arg_s, sizeof(arg_s), "%f, %f, %f", arg_speed[0], arg_speed[1], arg_speed[2]);
  1056.                 strcat(string, arg_s);
  1057.                 strcat(string, "~n~");
  1058.                 strcat(string, "~g~~h~Weapons:");
  1059.                 strcat(string, "~y~");
  1060.                 new count = 0;
  1061.                 for(new i; i < 13; i++)
  1062.                 {
  1063.                     GetPlayerWeaponData(target, i, arg_weaps[i][0], arg_weaps[i][1]);
  1064.                     if(arg_weaps[i][0] != 0)
  1065.                     {
  1066.                         count += 1;
  1067.  
  1068.                         strcat(string, "~n~");
  1069.                         format(arg_s, sizeof(arg_s), "%i. ", count);
  1070.                         strcat(string, arg_s);
  1071.                         GetWeaponName(arg_weaps[i][0], arg_s, sizeof(arg_s));
  1072.                         strcat(string, arg_s);
  1073.                         strcat(string, " [Ammo: ");
  1074.                         format(arg_s, sizeof(arg_s), "%i", arg_weaps[i][1]);
  1075.                         strcat(string, arg_s);
  1076.                         strcat(string, "]");
  1077.                     }
  1078.                 }
  1079.                 strcat(string, "~n~");
  1080.                 strcat(string, "~n~");
  1081.                 strcat(string, "~g~You can use LCTRL (KEY_ACTION) and RCTRL (KEY_FIRE) to switch players");
  1082.                 strcat(string, "~n~");
  1083.                 strcat(string, "~g~You can use MMB (KEY_LOOK_BEHIND) or /specoff to stop spectating");
  1084.  
  1085.                 PlayerTextDrawSetString(playerid, gUser[playerid][u_spectxt], string);
  1086.             }
  1087.         }
  1088.     #endif
  1089.  
  1090.     if(gUser[playerid][u_lastreportedtime] > 0)
  1091.     {
  1092.         gUser[playerid][u_lastreportedtime] -= 1;
  1093.     }
  1094.     else
  1095.     {
  1096.         if(gUser[playerid][u_lastreported] != INVALID_PLAYER_ID)
  1097.         {
  1098.             gUser[playerid][u_lastreported] = INVALID_PLAYER_ID;
  1099.             gUser[playerid][u_lastreportedtime] = 0;
  1100.         }
  1101.     }
  1102.  
  1103.     if(GetPVarType(playerid, "GAdmin_Jailed") != PLAYER_VARTYPE_NONE)
  1104.     {
  1105.         if(gUser[playerid][u_jailtime] >= 1)
  1106.         {
  1107.             gUser[playerid][u_jailtime] -= 1;
  1108.         }
  1109.         else if(gUser[playerid][u_jailtime] <= 0)
  1110.         {
  1111.             DeletePVar(playerid, "GAdmin_Jailed");
  1112.             gUser[playerid][u_jailtime] = 0;
  1113.             format(string, sizeof(string), "* %s[%d] has been unjailed after completing his/her time.", ReturnPlayerName(playerid), playerid);
  1114.             SendClientMessageToAll(COLOR_STEEL_BLUE, string);
  1115.             SpawnPlayer(playerid);
  1116.         }
  1117.     }
  1118.     if(GetPVarType(playerid, "GAdmin_Muted") != PLAYER_VARTYPE_NONE)
  1119.     {
  1120.         if(gUser[playerid][u_mutetime] >= 1)
  1121.         {
  1122.             gUser[playerid][u_mutetime] -= 1;
  1123.         }
  1124.         else if(gUser[playerid][u_mutetime] <= 0)
  1125.         {
  1126.             DeletePVar(playerid, "GAdmin_Muted");
  1127.  
  1128.             gUser[playerid][u_mutetime] = 0;
  1129.             format(string, sizeof(string), "* %s[%d] has been unmuted after completing his/her time.", ReturnPlayerName(playerid), playerid);
  1130.             SendClientMessageToAll(COLOR_STEEL_BLUE, string);
  1131.         }
  1132.     }
  1133.     if(GetPVarType(playerid, "GAdmin_CMDMuted") != PLAYER_VARTYPE_NONE)
  1134.     {
  1135.         if(gUser[playerid][u_cmutetime] >= 1)
  1136.         {
  1137.             gUser[playerid][u_cmutetime] --;
  1138.         }
  1139.         else if(gUser[playerid][u_cmutetime] <= 0)
  1140.         {
  1141.             DeletePVar(playerid, "GAdmin_CMDMuted");
  1142.  
  1143.             gUser[playerid][u_cmutetime] = 0;
  1144.             format(string, sizeof(string), "* %s[%d] has been unmuted for commands after completing his/her time.", ReturnPlayerName(playerid), playerid);
  1145.             SendClientMessageToAll(COLOR_STEEL_BLUE, string);
  1146.         }
  1147.     }
  1148.     return 1;
  1149. }
  1150.  
  1151. //------------------------------------------------
  1152.  
  1153. GetPlayerAKA(playerid, str[][], l = sizeof(str))
  1154. {
  1155.     new akaCount, uIP[18], pIP[18];
  1156.     format(pIP, sizeof(pIP), ReturnPlayerIP(playerid));
  1157.  
  1158.     for(new i = 0; i < l; i++)
  1159.     {
  1160.         str[i][0] = EOS;
  1161.     }
  1162.  
  1163.     for(new i = 1, j = DB::GetHighestRegisteredKey(gGlobal[s_usertable]); i <= j; i++)
  1164.     {
  1165.         DB::GetStringEntry(gGlobal[s_usertable], i, "ip", uIP);
  1166.         if(ipmatch(uIP, pIP))
  1167.         {
  1168.             if(akaCount >= l)
  1169.             {
  1170.                 return akaCount;
  1171.             }
  1172.  
  1173.             DB::GetStringEntry(gGlobal[s_usertable], i, "username", str[akaCount], l);
  1174.             akaCount += 1;
  1175.         }
  1176.     }
  1177.  
  1178.     return akaCount;
  1179. }
  1180.  
  1181. //------------------------------------------------
  1182.  
  1183. public OnPlayerConnect(playerid)
  1184. {
  1185.     gUser[playerid][u_admin] = 0;
  1186.     gUser[playerid][u_vip] = 0;
  1187.     gUser[playerid][u_kills] = 0;
  1188.     gUser[playerid][u_deaths] = 0;
  1189.     gUser[playerid][u_score] = 0;
  1190.     gUser[playerid][u_money] = 0;
  1191.     gUser[playerid][u_hours] = 0;
  1192.     gUser[playerid][u_minutes] = 0;
  1193.     gUser[playerid][u_seconds] = 0;
  1194.  
  1195.     gUser[playerid][u_attempts] = 0;
  1196.     gUser[playerid][u_sessionkills] = 0;
  1197.     gUser[playerid][u_sessiondeaths] = 0;
  1198.     gUser[playerid][u_spree] = 0;
  1199.     gUser[playerid][u_lastreported] = INVALID_PLAYER_ID;
  1200.     gUser[playerid][u_lastreportedtime] = 0;
  1201.     gUser[playerid][u_updatetimer] = SetTimerEx("OnPlayerTimeUpdate", 1000, true, "i", playerid);
  1202.  
  1203.     gUser[playerid][u_jailtime] = 0;
  1204.     gUser[playerid][u_mutetime] = 0;
  1205.     gUser[playerid][u_cmutetime] = 0;
  1206.     gUser[playerid][u_specdata][0] = 0;
  1207.     gUser[playerid][u_specdata][1] = 0;
  1208.     gUser[playerid][u_specpos][0] = 0.0;
  1209.     gUser[playerid][u_specpos][1] = 0.0;
  1210.     gUser[playerid][u_specpos][2] = 0.0;
  1211.     gUser[playerid][u_specpos][3] = 0.0;
  1212.     gUser[playerid][u_vehicle] = -1;
  1213.     gUser[playerid][u_warnings] = 0;
  1214.  
  1215.     gUser[playerid][u_lastuser] = -1;
  1216.  
  1217.     gUser[playerid][u_specid] = INVALID_PLAYER_ID;
  1218.     gUser[playerid][u_spec] = false;
  1219.     gUser[playerid][u_pos][0] = 0.0;
  1220.     gUser[playerid][u_pos][1] = 0.0;
  1221.     gUser[playerid][u_pos][2] = 0.0;
  1222.     gUser[playerid][u_int] = 0;
  1223.     gUser[playerid][u_vw] = 0;
  1224.  
  1225.     #if defined SPECTATE_TEXTDRAW
  1226.         gUser[playerid][u_spectxt] = CreatePlayerTextDraw(playerid,17.000000, 170.000000, "~g~Spectate information");
  1227.         PlayerTextDrawBackgroundColor(playerid,gUser[playerid][u_spectxt], 255);
  1228.         PlayerTextDrawFont(playerid,gUser[playerid][u_spectxt], 1);
  1229.         PlayerTextDrawLetterSize(playerid,gUser[playerid][u_spectxt], 0.130000, 0.699998);
  1230.         PlayerTextDrawColor(playerid,gUser[playerid][u_spectxt], -1);
  1231.         PlayerTextDrawSetOutline(playerid,gUser[playerid][u_spectxt], 1);
  1232.         PlayerTextDrawSetProportional(playerid,gUser[playerid][u_spectxt], 1);
  1233.         PlayerTextDrawSetSelectable(playerid,gUser[playerid][u_spectxt], 0);
  1234.     #endif
  1235.  
  1236.     new string[150];
  1237.  
  1238.     for(new i = 0; i < gGlobal[s_fnamescount]; i++)
  1239.     {
  1240.         if( ! isnull(gForbidden_Names[i]) &&
  1241.             ! strcmp(ReturnPlayerName(playerid), gForbidden_Names[i], true))
  1242.         {
  1243.             SendClientMessage(playerid, COLOR_RED, "* You have a forbidden/banned username, please change it in order to play.");
  1244.  
  1245.             format(string, sizeof(string), "* %s[%i] has been automatically kicked [Reason: Forbidden name]", ReturnPlayerName(playerid), playerid);
  1246.             SendClientMessageToAll(COLOR_RED, string);
  1247.  
  1248.             return DelayKick(playerid);
  1249.         }
  1250.     }
  1251.  
  1252.     for(new i = 0; i < gGlobal[s_ftagscount]; i++)
  1253.     {
  1254.         if( ! isnull(gForbidden_Tags[i]) &&
  1255.             strfind(ReturnPlayerName(playerid), gForbidden_Tags[i], true) != -1)
  1256.         {
  1257.             format(string, sizeof(string), "* You have a forbidden/banned part of name [tag: %s], please change it in order to play.", gForbidden_Tags[i]);
  1258.             SendClientMessage(playerid, COLOR_RED, string);
  1259.  
  1260.             format(string, sizeof(string), "* %s[%i] has been automatically kicked [Reason: Forbidden part of name/tag]", ReturnPlayerName(playerid), playerid);
  1261.             SendClientMessageToAll(COLOR_RED, string);
  1262.  
  1263.             return DelayKick(playerid);
  1264.         }
  1265.     }
  1266.  
  1267.     format(string, sizeof(string), "* %s[%i] have joined the server!", ReturnPlayerName(playerid), playerid);
  1268.     SendClientMessageToAll(COLOR_GREY, string);
  1269.  
  1270.     #if defined READ_AKA
  1271.         format(string, sizeof(string), "");
  1272.  
  1273.         new aka[15][MAX_PLAYER_NAME];
  1274.         if(GetPlayerAKA(playerid, aka))
  1275.         {
  1276.             strcat(string, "** AKA: ");
  1277.             for(new i = 0, j = sizeof(aka); i < j; i++)
  1278.             {
  1279.                 if(aka[i][0])
  1280.                 {
  1281.                     if((strlen(string) + strlen(aka[i])) > 135)
  1282.                     {
  1283.                         strcat(string, "more... [/aka]");
  1284.                         break;
  1285.                     }
  1286.                     strcat(string, aka[i]);
  1287.                     strcat(string, ", ");
  1288.                 }
  1289.             }
  1290.             SendClientMessageForAdmins(COLOR_GREY, string);
  1291.         }
  1292.     #endif
  1293.     return 1;
  1294. }
  1295.  
  1296. //------------------------------------------------
  1297.  
  1298. GetPlayerConnectedTime(playerid, &hours, &minutes, &seconds)
  1299. {
  1300.     new connected_time = NetStats_GetConnectedTime(playerid);
  1301.     seconds = (connected_time / 1000) % 60;
  1302.     minutes = (connected_time / (1000 * 60)) % 60;
  1303.     hours = (connected_time / (1000 * 60 * 60));
  1304.     return true;
  1305. }
  1306.  
  1307. //------------------------------------------------
  1308.  
  1309. public OnPlayerDisconnect(playerid, reason)
  1310. {
  1311.     KillTimer(gUser[playerid][u_updatetimer]);
  1312.  
  1313.     for(new i; i < 3; i++)
  1314.     {
  1315.         TextDrawHideForPlayer(playerid, gGlobal[s_locktd][i]);
  1316.     }
  1317.     #if defined REPORT_TEXTDRAW
  1318.         TextDrawHideForPlayer(playerid, gGlobal[s_reporttd]);
  1319.     #endif
  1320.     #if defined SPECTATE_TEXTDRAW
  1321.         PlayerTextDrawHide(playerid, gUser[playerid][u_spectxt]);
  1322.     #endif
  1323.  
  1324.     LOOP_PLAYERS(i)
  1325.     {
  1326.         if(IsPlayerSpectating(i))
  1327.         {
  1328.             if(gUser[i][u_spec] && gUser[i][u_specid] == playerid)
  1329.             {
  1330.                 UpdatePlayerSpectating(playerid, 0, true);
  1331.             }
  1332.         }
  1333.     }
  1334.  
  1335.     if(gUser[playerid][u_vehicle] != -1) EraseVeh(gUser[playerid][u_vehicle]);
  1336.  
  1337.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  1338.     if(key != DB_INVALID_KEY)
  1339.     {
  1340.         if(GetPVarInt(playerid, "GAdmin_Loggedin") != PLAYER_VARTYPE_NONE)
  1341.         {
  1342.             new DATE[18], date[3];
  1343.             getdate(date[0], date[1], date[2]);
  1344.             format(DATE, sizeof(DATE), "%i/%i/%i", date[2], date[1], date[0]);
  1345.  
  1346.             GetPlayerConnectedTime(playerid, gUser[playerid][u_hours], gUser[playerid][u_minutes], gUser[playerid][u_seconds]);
  1347.  
  1348.             DB::SetStringEntry(gGlobal[s_usertable], key, "laston", DATE);
  1349.             DB::SetIntEntry(gGlobal[s_usertable], key, "kills", gUser[playerid][u_kills]);
  1350.             DB::SetIntEntry(gGlobal[s_usertable], key, "deaths", gUser[playerid][u_deaths]);
  1351.             DB::SetIntEntry(gGlobal[s_usertable], key, "score", GetPlayerScore(playerid));
  1352.             DB::SetIntEntry(gGlobal[s_usertable], key, "money", GetPlayerMoney(playerid));
  1353.             DB::SetIntEntry(gGlobal[s_usertable], key, "hours", DB::GetIntEntry(gGlobal[s_usertable], key, "hours") + gUser[playerid][u_hours]);
  1354.             DB::SetIntEntry(gGlobal[s_usertable], key, "minutes", DB::GetIntEntry(gGlobal[s_usertable], key, "minutes") + gUser[playerid][u_minutes]);
  1355.             DB::SetIntEntry(gGlobal[s_usertable], key, "seconds", DB::GetIntEntry(gGlobal[s_usertable], key, "seconds") + gUser[playerid][u_seconds]);
  1356.             DB::SetIntEntry(gGlobal[s_usertable], key, "", 0);
  1357.         }
  1358.     }
  1359.  
  1360.     #if defined ANTI_FLOOD
  1361.         gUser[playerid][u_chattime] = 0;
  1362.     #endif
  1363.     #if defined ANTI_SPAM
  1364.         format(gUser[playerid][u_chattext], 144, "");
  1365.     #endif
  1366.  
  1367.     new string[144], reasonstr[25];
  1368.     switch(reason)
  1369.     {
  1370.         case 0: reasonstr = "Timeout";
  1371.         case 1: reasonstr = "Quit";
  1372.         case 2: reasonstr = "Kicked/Banned";
  1373.     }
  1374.     format(string, sizeof(string), "* %s[%i] have left the server! [%s]", ReturnPlayerName(playerid), playerid, reasonstr);
  1375.     SendClientMessageToAll(COLOR_GREY, string);
  1376.     return 1;
  1377. }
  1378.  
  1379. //------------------------------------------------
  1380.  
  1381. ip2long(const sIP[])
  1382. {
  1383.     new
  1384.         iCount = 0,
  1385.         iIPAddress = 0,
  1386.         iIPLenght = strlen(sIP);
  1387.  
  1388.     if(iIPLenght > 0 && iIPLenght < 17)
  1389.     {
  1390.         for(new i = 0; i < iIPLenght; i++)
  1391.             if(sIP[i] == '.')
  1392.                 iCount++;
  1393.  
  1394.         if(iCount == 3)
  1395.         {
  1396.             iIPAddress = strval(sIP) << 24;
  1397.             iCount = strfind(sIP, ".", false, 0) + 1;
  1398.             iIPAddress += strval(sIP[iCount]) << 16;
  1399.             iCount = strfind(sIP, ".", false, iCount) + 1;
  1400.             iIPAddress += strval(sIP[iCount]) << 8;
  1401.             iCount = strfind(sIP, ".", false, iCount) + 1;
  1402.             iIPAddress += strval(sIP[iCount]);
  1403.         }
  1404.     }
  1405.     return iIPAddress;
  1406. }
  1407.  
  1408. split(const sSrc[], sDest[][], sDelimiter = ' ')
  1409. {
  1410.     new
  1411.         i = 0,
  1412.         j = 0,
  1413.         k = 0,
  1414.         iSourceLen = strlen(sSrc),
  1415.         iLenght = 0;
  1416.  
  1417.     while(i <= iSourceLen)
  1418.     {
  1419.         if(sSrc[i] == sDelimiter || i == iSourceLen)
  1420.         {
  1421.             iLenght = strmid(sDest[j], sSrc, k, i, 128);
  1422.             sDest[j][iLenght] = 0;
  1423.             k = i + 1;
  1424.             j++;
  1425.         }
  1426.         i++;
  1427.     }
  1428.  
  1429.     return true;
  1430. }
  1431.  
  1432. ipmatch(sIP[], sIP2[], iRange = 26)
  1433. {
  1434.     new
  1435.         sRangeInfo[2][18],
  1436.         iIP = 0,
  1437.         iSubnet = 0,
  1438.         iBits = 0,
  1439.         iMask = 0,
  1440.         sRange[35];
  1441.  
  1442.     format(sRange, sizeof(sRange), "%s/%i", sIP2, iRange);
  1443.  
  1444.     split(sRange, sRangeInfo, '/');
  1445.     iIP = ip2long(sIP);
  1446.     iSubnet = ip2long(sRangeInfo[0]);
  1447.     iBits = strval(sRangeInfo[1]);
  1448.  
  1449.     iMask = -1 << (32 - iBits);
  1450.     iSubnet &= iMask;
  1451.  
  1452.     return bool:((iIP & iMask) == iSubnet);
  1453. }
  1454.  
  1455. //------------------------------------------------
  1456.  
  1457. public OnPlayerRequestClass(playerid, classid)
  1458. {
  1459.     TextDrawHideForPlayer(playerid, gGlobal[s_reporttd]);
  1460.     #if defined SPECTATE_TEXTDRAW
  1461.         PlayerTextDrawHide(playerid, gUser[playerid][u_spectxt]);
  1462.     #endif
  1463.  
  1464.     for(new i = 1, j = DB::GetHighestRegisteredKey(gGlobal[s_rangebantable]); i <= j; i++)
  1465.     {
  1466.         new range[18];
  1467.         DB::GetStringEntry(gGlobal[s_rangebantable], i, "ip", range);
  1468.         if(ipmatch(ReturnPlayerIP(playerid), range))
  1469.         {
  1470.             new val;
  1471.             val = DB::GetIntEntry(gGlobal[s_rangebantable], i, "expire");
  1472.             if(val < gettime() || val == 0)//if the player ban has not expired
  1473.             {
  1474.                 //Ban stats stuff !:D!
  1475.                 new str[100];
  1476.                 new DIALOG[676];
  1477.                 new string[156];
  1478.                 strcat(DIALOG, ""SAMP_BLUE"You are range banned from the server:\n\n");
  1479.                 //ban player ip
  1480.                 DB::GetStringEntry(gGlobal[s_rangebantable], i, "ip", str);
  1481.                 format(string, sizeof(string), ""WHITE"I.P. Banned: "MARONE"%s\n", str);
  1482.                 strcat(DIALOG, string);
  1483.                 //admin name
  1484.                 DB::GetStringEntry(gGlobal[s_rangebantable], i, "banby", str);
  1485.                 format(string, sizeof(string), ""WHITE"Banned by: "MARONE"%s\n", str);
  1486.                 strcat(DIALOG, string);
  1487.                 //reason
  1488.                 DB::GetStringEntry(gGlobal[s_rangebantable], i, "reason", str);
  1489.                 format(string, sizeof(string), ""WHITE"Reason: "MARONE"%s\n", str);
  1490.                 strcat(DIALOG, string);
  1491.                 //ban date
  1492.                 DB::GetStringEntry(gGlobal[s_rangebantable], i, "banon", str);
  1493.                 format(string, sizeof(string), ""WHITE"Ban date: "MARONE"%s\n", str);
  1494.                 strcat(DIALOG, string);
  1495.                 //expire time
  1496.                 new expire[68];
  1497.                 if(val == 0) expire = "PERMANENT";
  1498.                 else expire = ConvertTime(val);
  1499.                 format(string, sizeof(string), ""WHITE"Expiration timeleft: "MARONE"%s\n\n", expire);
  1500.                 strcat(DIALOG, string);
  1501.                 //shit!
  1502.                 strcat(DIALOG, ""SAMP_BLUE"If you think your ban is a false ban, a bug, or the admin missued his/her power; Please place an appeal in forums.\n");
  1503.                 strcat(DIALOG, "Make sure you have a screen this and some good evidence.");
  1504.  
  1505.                 for(new c; c < 250; c++) SendClientMessage(playerid, -1, " ");
  1506.  
  1507.                 //show BAN stats in dialog
  1508.                 ShowPlayerDialog(   playerid,
  1509.                                     DIALOG_COMMON,
  1510.                                     DIALOG_STYLE_MSGBOX,
  1511.                                     "Player Range Banned",
  1512.                                     DIALOG,
  1513.                                     "Close",
  1514.                                     "");
  1515.  
  1516.                 DelayKick(playerid);
  1517.                 return 1;
  1518.             }
  1519.             else//if player ban has expired
  1520.             {
  1521.                 DB::DeleteRow(gGlobal[s_rangebantable], i);
  1522.                 break;
  1523.             }
  1524.         }
  1525.     }
  1526.  
  1527.     new bankey = DB::RetrieveKey(gGlobal[s_bantable], "ip", ReturnPlayerIP(playerid));
  1528.     if(bankey == DB_INVALID_KEY)
  1529.     {
  1530.         bankey = DB::RetrieveKey(gGlobal[s_bantable], "name", ReturnPlayerName(playerid));
  1531.     }
  1532.  
  1533.     if(bankey != DB_INVALID_KEY)//if the player is banned
  1534.     {
  1535.         new val;
  1536.         val = DB::GetIntEntry(gGlobal[s_bantable], bankey, "expire");
  1537.         if(val < gettime() || val == 0)//if the player ban has not expired
  1538.         {
  1539.             //Ban stats stuff !:D!
  1540.             new str[100];
  1541.             new DIALOG[676];
  1542.             new string[156];
  1543.             strcat(DIALOG, ""SAMP_BLUE"You are banned from the server:\n\n");
  1544.             //ban player name
  1545.             DB::GetStringEntry(gGlobal[s_bantable], bankey, "name", str);
  1546.             format(string, sizeof(string), ""WHITE"Username: "MARONE"%s\n", str);
  1547.             strcat(DIALOG, string);
  1548.             //ban player ip
  1549.             DB::GetStringEntry(gGlobal[s_bantable], bankey, "ip", str);
  1550.             format(string, sizeof(string), ""WHITE"I.P.: "MARONE"%s\n", str);
  1551.             strcat(DIALOG, string);
  1552.             //admin name
  1553.             DB::GetStringEntry(gGlobal[s_bantable], bankey, "banby", str);
  1554.             format(string, sizeof(string), ""WHITE"Banned by: "MARONE"%s\n", str);
  1555.             strcat(DIALOG, string);
  1556.             //reason
  1557.             DB::GetStringEntry(gGlobal[s_bantable], bankey, "reason", str);
  1558.             format(string, sizeof(string), ""WHITE"Reason: "MARONE"%s\n", str);
  1559.             strcat(DIALOG, string);
  1560.             //ban date
  1561.             DB::GetStringEntry(gGlobal[s_bantable], bankey, "banon", str);
  1562.             format(string, sizeof(string), ""WHITE"Ban date: "MARONE"%s\n", str);
  1563.             strcat(DIALOG, string);
  1564.             //expire time
  1565.             new expire[68];
  1566.             if(val == 0) expire = "PERMANENT";
  1567.             else expire = ConvertTime(val);
  1568.             format(string, sizeof(string), ""WHITE"Expiration timeleft: "MARONE"%s\n\n", expire);
  1569.             strcat(DIALOG, string);
  1570.             //shit!
  1571.             strcat(DIALOG, ""SAMP_BLUE"If you think your ban is a false ban, a bug, or the admin missued his/her power; Please place an appeal in forums.\n");
  1572.             strcat(DIALOG, "Make sure you have a screen this and some good evidence.");
  1573.  
  1574.             for(new i; i < 250; i++) SendClientMessage(playerid, -1, " ");
  1575.  
  1576.             //show BAN stats in dialog
  1577.             ShowPlayerDialog(   playerid,
  1578.                                 DIALOG_COMMON,
  1579.                                 DIALOG_STYLE_MSGBOX,
  1580.                                 "Player Banned",
  1581.                                 DIALOG,
  1582.                                 "Close",
  1583.                                 "");
  1584.  
  1585.             DelayKick(playerid);
  1586.             return 1;
  1587.         }
  1588.         else//if player ban has expired
  1589.         {
  1590.             DB::DeleteRow(gGlobal[s_bantable], bankey);
  1591.         }
  1592.     }
  1593.  
  1594.     ////////
  1595.  
  1596.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  1597.  
  1598.     //server lock
  1599.     if(gGlobal[s_locked])
  1600.     {
  1601.         if( (key != DB_INVALID_KEY && DB::GetIntEntry(gGlobal[s_usertable], key, "admin") >= 1) ||
  1602.             IsPlayerAdmin(playerid))
  1603.         {
  1604.             SendClientMessage(playerid, COLOR_DODGER_BLUE, "The server is locked, but you were permited in (Admins allowed).");
  1605.             return 1;
  1606.         }
  1607.         else
  1608.         {
  1609.             TogglePlayerSpectating(playerid, true);
  1610.  
  1611.             for(new i; i < 3; i++)
  1612.             {
  1613.                 TextDrawShowForPlayer(playerid, gGlobal[s_locktd][i]);
  1614.             }
  1615.  
  1616.             SendClientMessage(playerid, COLOR_RED, "- Server is locked -");
  1617.             return 1;
  1618.         }
  1619.     }
  1620.     //
  1621.  
  1622.     if( GetPVarType(playerid, "GAdmin_Loggedin") == PLAYER_VARTYPE_NONE &&
  1623.         GetPVarType(playerid, "GAdmin_Guest") == PLAYER_VARTYPE_NONE)
  1624.     {
  1625.         if(key != DB_INVALID_KEY)
  1626.         {
  1627.             if(DB::GetIntEntry(gGlobal[s_usertable], key, "autologin"))
  1628.             {
  1629.                 new IP[18];
  1630.                 DB::GetStringEntry(gGlobal[s_usertable], key, "ip", IP);
  1631.                 if(! strcmp(IP, ReturnPlayerIP(playerid)))
  1632.                 {
  1633.                     gUser[playerid][u_admin] = DB::GetIntEntry(gGlobal[s_usertable], key, "admin");
  1634.                     gUser[playerid][u_vip] = DB::GetIntEntry(gGlobal[s_usertable], key, "vip");
  1635.                     gUser[playerid][u_kills] = DB::GetIntEntry(gGlobal[s_usertable], key, "kills");
  1636.                     gUser[playerid][u_deaths] = DB::GetIntEntry(gGlobal[s_usertable], key, "deaths");
  1637.                     gUser[playerid][u_score] = DB::GetIntEntry(gGlobal[s_usertable], key, "score");
  1638.                     gUser[playerid][u_money] = DB::GetIntEntry(gGlobal[s_usertable], key, "money");
  1639.                     gUser[playerid][u_hours] = DB::GetIntEntry(gGlobal[s_usertable], key, "hours");
  1640.                     gUser[playerid][u_minutes] = DB::GetIntEntry(gGlobal[s_usertable], key, "minutes");
  1641.                     gUser[playerid][u_seconds] = DB::GetIntEntry(gGlobal[s_usertable], key, "seconds");
  1642.  
  1643.                     SetPlayerScore(playerid, gUser[playerid][u_score]);
  1644.  
  1645.                     ResetPlayerMoney(playerid);
  1646.                     GivePlayerMoney(playerid, gUser[playerid][u_money]);
  1647.  
  1648.                     SendClientMessage(playerid, COLOR_GREEN, "CONTA: Você fez login automático. Verifique /est para ver estatísticas da conta.");
  1649.  
  1650.                     new string[156];
  1651.                     format(string, sizeof(string), "[Admin: %i | Vip : %i]", gUser[playerid][u_admin], gUser[playerid][u_vip]);
  1652.                     SendClientMessage(playerid, COLOR_GREEN, string);
  1653.  
  1654.                     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  1655.  
  1656.                     SetPVarInt(playerid, "GAdmin_Loggedin", 1);
  1657.                     DeletePVar(playerid, "GAdmin_Guest");
  1658.                     return 1;
  1659.                 }
  1660.             }
  1661.             new string[156];
  1662.             format(string, sizeof(string), ""SAMP_BLUE"Sua conta "RED"%s "SAMP_BLUE"está registrada.\n\nDigite sua senha para fazer o login", ReturnPlayerName(playerid));
  1663.             ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Login", "Pular");
  1664.             return 1;
  1665.         }
  1666.         else
  1667.         {
  1668.             new string[156];
  1669.             format(string, sizeof(string), ""SAMP_BLUE"Sua conta "RED"%s "SAMP_BLUE"não está registrada.\n\nRegistre uma nova conta para continuar", ReturnPlayerName(playerid));
  1670.             ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registrar conta", string, "Registrar", "Pular");
  1671.         }
  1672.     }
  1673.     return 1;
  1674. }
  1675.  
  1676. //------------------------------------------------
  1677.  
  1678. public OnPlayerRequestSpawn(playerid)
  1679. {
  1680.     if( GetPVarType(playerid, "GAdmin_Loggedin") == PLAYER_VARTYPE_NONE &&
  1681.         GetPVarType(playerid, "GAdmin_Guest") == PLAYER_VARTYPE_NONE)
  1682.     {
  1683.         GameTextForPlayer(playerid, "~r~You must be logged in to spawn", 5000, 3);
  1684.         return 0;
  1685.     }
  1686.     return 1;
  1687. }
  1688.  
  1689. //------------------------------------------------
  1690.  
  1691. public OnPlayerSpawn(playerid)
  1692. {
  1693.     #if defined SPECTATE_TEXTDRAW
  1694.         PlayerTextDrawHide(playerid, gUser[playerid][u_spectxt]);
  1695.     #endif
  1696.  
  1697.     if(GetPVarType(playerid, "GAdmin_Jailed") != PLAYER_VARTYPE_NONE)
  1698.     {
  1699.         JailPlayer(playerid);
  1700.         SendClientMessage(playerid, COLOR_DODGER_BLUE, "JAIL: You cannot escape your punishment. You are still in jail!");
  1701.         return 1;
  1702.     }
  1703.  
  1704.     if(GetPVarType(playerid, "GAdmin_Onduty") != PLAYER_VARTYPE_NONE)
  1705.     {
  1706.         new randompos = random(sizeof(gAdminSpawn));
  1707.         SetPlayerPos(playerid, gAdminSpawn[randompos][0], gAdminSpawn[randompos][1], gAdminSpawn[randompos][2]);
  1708.         SetPlayerFacingAngle(playerid, gAdminSpawn[randompos][3]);
  1709.  
  1710.         SetPlayerSkin(playerid, 217);
  1711.         SetPlayerColor(playerid, COLOR_HOT_PINK);
  1712.         SetPlayerTeam(playerid, 100);//admin team !:D!
  1713.  
  1714.         //toggle godmode
  1715.         if(GetPVarType(playerid, "GAdmin_God") == PLAYER_VARTYPE_NONE)
  1716.         {
  1717.             SetPVarInt(playerid, "GAdmin_God", 1);
  1718.         }
  1719.         SetPlayerHealth(playerid, FLOAT_INFINITY);
  1720.  
  1721.         //load admin weapons
  1722.         ResetPlayerWeapons(playerid);
  1723.         GivePlayerWeapon(playerid, 38, 999999);//minigun
  1724.  
  1725.         GameTextForPlayer(playerid, "~b~~h~~h~~h~You are currently~n~~w~~h~ON DUTY", 5000, 3);
  1726.         PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  1727.         return 1;
  1728.     }
  1729.  
  1730.     if(GetPVarType(playerid, "GAdmin_God") != PLAYER_VARTYPE_NONE)
  1731.     {
  1732.         SetPlayerHealth(playerid, FLOAT_INFINITY);
  1733.  
  1734.         SendClientMessage(playerid, COLOR_LIME, "GOD: Your godmode is still enabled. Type /agod if you wish to disable it.");
  1735.     }
  1736.  
  1737.  
  1738.     LOOP_PLAYERS(i)
  1739.     {
  1740.         if(IsPlayerSpectating(i))
  1741.         {
  1742.             if(gUser[i][u_specid] == playerid)
  1743.             {
  1744.                 SetPlayerSpectating(i, playerid);
  1745.             }
  1746.         }
  1747.     }
  1748.     return 1;
  1749. }
  1750.  
  1751. //------------------------------------------------
  1752.  
  1753. public OnPlayerDeath(playerid, killerid, reason)
  1754. {
  1755.     #if defined SPECTATE_TEXTDRAW
  1756.         PlayerTextDrawHide(playerid, gUser[playerid][u_spectxt]);
  1757.     #endif
  1758.  
  1759.     new Float:pos[3];
  1760.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  1761.  
  1762.     LOOP_PLAYERS(i)
  1763.     {
  1764.         if(IsPlayerSpectating(i))
  1765.         {
  1766.             if(gUser[i][u_specid] == playerid)
  1767.             {
  1768.                 SetPlayerCameraPos(i, pos[0], pos[1], (pos[2] + 5.0));
  1769.                 SetPlayerCameraLookAt(i, pos[0], pos[1], pos[2]);
  1770.             }
  1771.         }
  1772.     }
  1773.  
  1774.     gUser[playerid][u_deaths] ++;
  1775.     gUser[playerid][u_sessiondeaths] ++;
  1776.     if(killerid != INVALID_PLAYER_ID)
  1777.     {
  1778.         gUser[playerid][u_sessionkills] ++;
  1779.         gUser[killerid][u_kills] ++;
  1780.  
  1781.         gUser[playerid][u_spree] ++;
  1782.     }
  1783.     return 1;
  1784. }
  1785.  
  1786. //------------------------------------------------
  1787.  
  1788. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1789. {
  1790.     if(dialogid == DIALOG_REGISTER)
  1791.     {
  1792.         if(! response)
  1793.         {
  1794.             #if defined FORCE_REGISTER
  1795.                 GameTextForPlayer(playerid, "~r~~h~~h~~h~Goodbye", 5000, 1);
  1796.  
  1797.                 DelayKick(playerid);
  1798.             #else
  1799.                 new string[156];
  1800.                 format(string, sizeof(string), "guest%i_%s", playerid, ReturnPlayerName(playerid));
  1801.                 SetPlayerName(playerid, string);//set player name to a random name, a guest to server
  1802.                 //don't worry, it will not collapse with other names!
  1803.  
  1804.                 DeletePVar(playerid, "GAdmin_Loggedin");
  1805.  
  1806.                 SetPVarInt(playerid, "GAdmin_Guest", 1);
  1807.  
  1808.                 GameTextForPlayer(playerid, "~g~~h~~h~~h~Welcome Guest", 5000, 1);
  1809.             #endif
  1810.         }
  1811.         else
  1812.         {
  1813.             if(strlen(inputtext) < 4 || strlen(inputtext) > 35)
  1814.             {
  1815.                 new string[156];
  1816.                 format(string, sizeof(string), ""SAMP_BLUE"Your account "RED"%s "SAMP_BLUE"doesn't exist in database.\n\nType your complicated password above to continue", ReturnPlayerName(playerid));
  1817.                 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register account", string, "Register", "Skip");
  1818.                 return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid password length, must be b/w 0-35.");
  1819.             }
  1820.  
  1821.             new DATE[18], date[3];
  1822.             getdate(date[0], date[1], date[2]);
  1823.             format(DATE, sizeof(DATE), "%i/%i/%i", date[2], date[1], date[0]);
  1824.  
  1825.             gUser[playerid][u_score] = GetPlayerScore(playerid);
  1826.             gUser[playerid][u_money] = GetPlayerMoney(playerid);
  1827.  
  1828.             new hash[65];
  1829.             DB::Hash(hash, sizeof(hash), inputtext);
  1830.  
  1831.             DB::CreateRow(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  1832.             new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  1833.             DB::SetStringEntry(gGlobal[s_usertable], key, "password", hash);
  1834.             DB::SetStringEntry(gGlobal[s_usertable], key, "ip", ReturnPlayerIP(playerid));
  1835.             DB::SetStringEntry(gGlobal[s_usertable], key, "joindate", DATE);
  1836.             DB::SetStringEntry(gGlobal[s_usertable], key, "laston", DATE);
  1837.             DB::SetIntEntry(gGlobal[s_usertable], key, "admin", gUser[playerid][u_admin]);
  1838.             DB::SetIntEntry(gGlobal[s_usertable], key, "vip", gUser[playerid][u_vip]);
  1839.             DB::SetIntEntry(gGlobal[s_usertable], key, "kills", gUser[playerid][u_kills]);
  1840.             DB::SetIntEntry(gGlobal[s_usertable], key, "deaths", gUser[playerid][u_deaths]);
  1841.             DB::SetIntEntry(gGlobal[s_usertable], key, "score", GetPlayerScore(playerid));
  1842.             DB::SetIntEntry(gGlobal[s_usertable], key, "money", GetPlayerMoney(playerid));
  1843.             DB::SetIntEntry(gGlobal[s_usertable], key, "hours", gUser[playerid][u_hours]);
  1844.             DB::SetIntEntry(gGlobal[s_usertable], key, "minutes", gUser[playerid][u_minutes]);
  1845.             DB::SetIntEntry(gGlobal[s_usertable], key, "seconds", gUser[playerid][u_seconds]);
  1846.             DB::SetIntEntry(gGlobal[s_usertable], key, "autologin", 0);
  1847.  
  1848.             SetPVarInt(playerid, "GAdmin_Loggedin", 1);
  1849.  
  1850.             DeletePVar(playerid, "GAdmin_Guest");
  1851.  
  1852.             new string[156];
  1853.             format(string, sizeof(string), "~g~~h~~h~~h~Welcome~n~~g~~h~~h~~h~%s", ReturnPlayerName(playerid));
  1854.             GameTextForPlayer(playerid, string, 5000, 1);
  1855.  
  1856.             PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  1857.             SendClientMessage(playerid, COLOR_GREEN, "ACCOUNT: You have successfully registered your account. Checkout your /stats.");
  1858.         }
  1859.     }
  1860.     if(dialogid == DIALOG_LOGIN)
  1861.     {
  1862.         if(! response)
  1863.         {
  1864.             #if defined FORCE_REGISTER
  1865.                 GameTextForPlayer(playerid, "~r~~h~~h~~h~Goodbye", 5000, 1);
  1866.  
  1867.                 DelayKick(playerid);
  1868.             #else
  1869.                 new string[156];
  1870.                 format(string, sizeof(string), "guest%i_%s", playerid, ReturnPlayerName(playerid));
  1871.                 SetPlayerName(playerid, string);//set player name to a random name, a guest to server
  1872.                 //don't worry, it will not collapse with other names!
  1873.  
  1874.                 DeletePVar(playerid, "GAdmin_Loggedin");
  1875.  
  1876.                 SetPVarInt(playerid, "GAdmin_Guest", 1);
  1877.  
  1878.                 GameTextForPlayer(playerid, "~g~~h~~h~~h~Welcome Guest", 5000, 1);
  1879.             #endif
  1880.         }
  1881.         else
  1882.         {
  1883.             if(strlen(inputtext) < 4 || strlen(inputtext) > 35)
  1884.             {
  1885.                 new string[156];
  1886.                 format(string, sizeof(string), ""SAMP_BLUE"Your account "RED"%s "SAMP_BLUE"is registered.\n\nType your complicated password above to continue", ReturnPlayerName(playerid));
  1887.                 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login account", string, "Login", "Skip");
  1888.                 return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid password length, must be b/w 0-35.");
  1889.             }
  1890.  
  1891.             new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  1892.  
  1893.             new hash[65];
  1894.             DB::Hash(hash, sizeof(hash), inputtext);
  1895.  
  1896.             new password[128];
  1897.             DB::GetStringEntry(gGlobal[s_usertable], key, "password", password);
  1898.             if(! strcmp(hash, password))
  1899.             {
  1900.                 gUser[playerid][u_admin] = DB::GetIntEntry(gGlobal[s_usertable], key, "admin");
  1901.                 gUser[playerid][u_vip] = DB::GetIntEntry(gGlobal[s_usertable], key, "vip");
  1902.                 gUser[playerid][u_kills] = DB::GetIntEntry(gGlobal[s_usertable], key, "kills");
  1903.                 gUser[playerid][u_deaths] = DB::GetIntEntry(gGlobal[s_usertable], key, "deaths");
  1904.                 gUser[playerid][u_score] = DB::GetIntEntry(gGlobal[s_usertable], key, "score");
  1905.                 gUser[playerid][u_money] = DB::GetIntEntry(gGlobal[s_usertable], key, "money");
  1906.                 gUser[playerid][u_hours] = DB::GetIntEntry(gGlobal[s_usertable], key, "hours");
  1907.                 gUser[playerid][u_minutes] = DB::GetIntEntry(gGlobal[s_usertable], key, "minutes");
  1908.                 gUser[playerid][u_seconds] = DB::GetIntEntry(gGlobal[s_usertable], key, "seconds");
  1909.  
  1910.                 DB::SetStringEntry(gGlobal[s_usertable], key, "ip", ReturnPlayerIP(playerid));
  1911.  
  1912.                 SetPlayerScore(playerid, gUser[playerid][u_score]);
  1913.  
  1914.                 ResetPlayerMoney(playerid);
  1915.                 GivePlayerMoney(playerid, gUser[playerid][u_money]);
  1916.  
  1917.                 SendClientMessage(playerid, COLOR_GREEN, "ACCOUNT: You have successfully logged in. Check /stats for account statics.");
  1918.  
  1919.                 new string[156];
  1920.                 format(string, sizeof(string), "[Admin level: %i | Vip level: %i]", gUser[playerid][u_admin], gUser[playerid][u_vip]);
  1921.                 SendClientMessage(playerid, COLOR_GREEN, string);
  1922.  
  1923.                 PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  1924.  
  1925.                 format(string, sizeof(string), "~g~~h~~h~~h~Welcome~n~~g~~h~~h~~h~%s", ReturnPlayerName(playerid));
  1926.                 GameTextForPlayer(playerid, string, 5000, 1);
  1927.  
  1928.                 gUser[playerid][u_attempts] = 0;
  1929.  
  1930.                 SetPVarInt(playerid, "GAdmin_Loggedin", 1);
  1931.  
  1932.                 DeletePVar(playerid, "GAdmin_Guest");
  1933.             }
  1934.             else
  1935.             {
  1936.                 new string[156];
  1937.  
  1938.                 SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You have entered the worng password.");
  1939.  
  1940.                 #if MAX_LOGIN_ATTEMPTS > 0
  1941.                     gUser[playerid][u_attempts]++;
  1942.                     if(gUser[playerid][u_attempts] >= MAX_LOGIN_ATTEMPTS)
  1943.                     {
  1944.                         format(string, sizeof(string), "* %s[%d] has been automatically kicked [Reason: Too many failed login attempts]", ReturnPlayerName(playerid), playerid);
  1945.                         SendClientMessageToAll(COLOR_RED, string);
  1946.                         DelayKick(playerid);
  1947.                         return 1;
  1948.                     }
  1949.                     format(string, sizeof(string), "WARNING: You have %i/"#MAX_LOGIN_ATTEMPTS" tries left to login.", gUser[playerid][u_attempts]);
  1950.                     SendClientMessage(playerid, COLOR_STEEL_BLUE, string);
  1951.                 #endif
  1952.  
  1953.                 format(string, sizeof(string), ""SAMP_BLUE"Your account "RED"%s "SAMP_BLUE"is registered.\n\nType your complicated password above to continue", ReturnPlayerName(playerid));
  1954.                 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login account", string, "Login", "Skip");
  1955.             }
  1956.         }
  1957.     }
  1958.  
  1959.     if(dialogid == DIALOG_PLAYER_COLORS)
  1960.     {
  1961.         if(! response) DeletePVar(playerid, "PlayerColor");
  1962.         if(response)
  1963.         {
  1964.             new color, colorname[18];
  1965.             switch(listitem)
  1966.             {
  1967.                 case 0: color = COLOR_BLACK, colorname = "Black";
  1968.                 case 1: color = COLOR_WHITE, colorname = "White";
  1969.                 case 2: color = COLOR_RED, colorname = "Red";
  1970.                 case 3: color = COLOR_ORANGE, colorname = "Orange";
  1971.                 case 4: color = COLOR_YELLOW, colorname = "Yellow";
  1972.                 case 5: color = COLOR_GREEN, colorname = "Green";
  1973.                 case 6: color = COLOR_BLUE, colorname = "Blue";
  1974.                 case 7: color = COLOR_PURPLE, colorname = "Purple";
  1975.                 case 8: color = COLOR_BROWN, colorname = "Brown";
  1976.                 case 9: color = COLOR_PINK, colorname = "Pink";
  1977.             }
  1978.             SetPlayerColor(GetPVarInt(playerid, "PlayerColor"), color);
  1979.  
  1980.             new string[144];
  1981.             format(string, sizeof(string), "You have set %s[%i]'s color to %s.", ReturnPlayerName(GetPVarInt(playerid, "PlayerColor")), GetPVarInt(playerid, "PlayerColor"), colorname);
  1982.             SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  1983.  
  1984.             format(string, sizeof(string), "admin %s[%i] has set your color to %s.", ReturnPlayerName(playerid), playerid, colorname);
  1985.             SendClientMessage(GetPVarInt(playerid, "PlayerColor"), COLOR_DODGER_BLUE, string);
  1986.  
  1987.             DeletePVar(playerid, "PlayerColor");
  1988.         }
  1989.     }
  1990.  
  1991.     if(dialogid == DIALOG_TELEPORTS)
  1992.     {
  1993.         if(response)
  1994.         {
  1995.             switch(listitem)
  1996.             {
  1997.                 case 0: ShowPlayerDialog(playerid, DIALOG_TELEPORTS + 1, DIALOG_STYLE_LIST, "Los Santos", "Los Santos Airport \nPershing Square \nVinewood \nGrove Street \nRichman \nSanta Maria Beach \nOcean Docks \nDillimore \nPalomino Creek \nBlueBerry \nMontGomery", "Select", "Back");
  1998.                 case 1: ShowPlayerDialog(playerid, DIALOG_TELEPORTS + 2, DIALOG_STYLE_LIST, "San Fierro", "San Fierro Airport \nGolden Gate Bridge \nMt. Chilliad \nCJ's garage \nSan Fierro Stadium \nOcean Flats \nMissionary Hill", "Select", "Back");
  1999.                 case 2: ShowPlayerDialog(playerid, DIALOG_TELEPORTS + 3, DIALOG_STYLE_LIST, "Las Venturas", "Las Venturas Airport \nArea51 \nFour Dragons Casino \nLas Venturas Police Department \nBayside \nBig Jump \nLas Barrancas \nFort Carson \nLas Venturas Stadium \nNorthern Las Venturas \nStarfish Casino", "Select", "Back");
  2000.             }
  2001.         }
  2002.     }
  2003.  
  2004.     if(dialogid == DIALOG_TELEPORTS + 1)
  2005.     {
  2006.         if(! response) ShowPlayerDialog(playerid, DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "Select City", "Los Santos\nSan Fierro\nLas Venturas", "Select", "Close");
  2007.         if(response)
  2008.         {
  2009.             switch(listitem)
  2010.             {
  2011.                 case 0: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 1642.3022,-2333.6287,13.5469);
  2012.                 case 1: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 1511.8770,-1661.2853,13.5469);
  2013.                 case 2: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 1382.6194,-888.5532,38.0863);
  2014.                 case 3: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 2485.2546,-1684.7223,13.5096);
  2015.                 case 4: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 597.6629,-1241.3900,18.1275);
  2016.                 case 5: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 491.7868,-1823.2258,5.5028);
  2017.                 case 6: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 2771.1060,-2417.5828,13.6405);
  2018.                 case 7: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 661.0361,-573.5891,16.3359);
  2019.                 case 8: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 2269.6877,-75.0973,26.7724);
  2020.                 case 9: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 198.4328,-252.1696,1.5781);
  2021.                 case 10: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 1242.2875,328.5506,19.7555);
  2022.             }
  2023.             GameTextForPlayer(playerid, "~g~Teleported", 3000, 3);
  2024.         }
  2025.     }
  2026.  
  2027.     if(dialogid == DIALOG_TELEPORTS + 2)
  2028.     {
  2029.         if(! response) ShowPlayerDialog(playerid, DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "Select City", "Los Santos\nSan Fierro\nLas Venturas", "Select", "Close");
  2030.         if(response)
  2031.         {
  2032.             switch(listitem)
  2033.             {
  2034.                 case 0: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -1422.8820,-287.4992,14.1484);
  2035.                 case 1: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -2672.6116,1268.4943,55.9456);
  2036.                 case 2: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -2305.6143,-1626.0594,483.7662);
  2037.                 case 3: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -2026.2843,156.4974,29.0391);
  2038.                 case 4: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -2159.3616,-407.8362,35.3359);
  2039.                 case 5: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -2648.7498,14.2868,6.1328);
  2040.                 case 6: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -2521.4055,-623.5245,132.7727);
  2041.             }
  2042.             GameTextForPlayer(playerid, "~g~Teleported", 3000, 3);
  2043.         }
  2044.     }
  2045.  
  2046.     if(dialogid == DIALOG_TELEPORTS + 3)
  2047.     {
  2048.         if(! response) ShowPlayerDialog(playerid, DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "Select City", "Los Santos\nSan Fierro\nLas Venturas", "Select", "Close");
  2049.         if(response)
  2050.         {
  2051.             switch(listitem)
  2052.             {
  2053.                 case 0: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 1679.3361,1448.6248,10.7744);
  2054.                 case 1: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 95.7283,1920.3488,18.1163);
  2055.                 case 2: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 2027.5721,1008.2877,10.8203);
  2056.                 case 3: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 2287.0313,2431.0276,10.8203);
  2057.                 case 4: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -2241.4238,2327.4290,4.9844);
  2058.                 case 5: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -670.6358,2306.0559,135.2990);
  2059.                 case 6: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -761.5192,1552.1647,26.9609);
  2060.                 case 7: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, -143.5370,1217.8855,19.7352);
  2061.                 case 8: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 1099.1533,1384.3300,10.8203);
  2062.                 case 9: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 1614.2190,2334.9338,10.8203);
  2063.                 case 10: SetPlayerInterior(playerid, 0), SetPlayerPos(playerid, 2572.6560,1818.1030,10.8203);
  2064.             }
  2065.             GameTextForPlayer(playerid, "~g~Teleported", 3000, 3);
  2066.         }
  2067.         return 1;
  2068.     }
  2069.  
  2070.     if(dialogid == DIALOG_MAIN)//main tune dialog
  2071.     {
  2072.         if(response)
  2073.         {
  2074.             switch(listitem)
  2075.             {
  2076.                 // Paintjobs
  2077.                 case 0: ShowPlayerDialog(playerid, DIALOG_PAINTJOBS, DIALOG_STYLE_LIST, "Paintjobs", "Paint Job 1\nPaint Job 2\nPaint Job 3\nPaint Job 4\nPaint Job 5", "Select", "Back");
  2078.                 // colors
  2079.                 case 1: ShowPlayerDialog(playerid, DIALOG_COLORS, DIALOG_STYLE_LIST, "Colors", "Black\nWhite\nRed\nBlue\nGreen\nYellow\nPink\nBrown\nGrey\nGold\nDark Blue\nLight Blue\nCold Green\nLight Grey\nDark Red\nDark Brown", "Select", "Back");
  2080.                 // Hoods
  2081.                 case 2: ShowPlayerDialog(playerid, DIALOG_HOODS, DIALOG_STYLE_LIST, "Hoods", "Fury\nChamp\nRace\nWorx", "Select", "Back");
  2082.                 // Vents
  2083.                 case 3: ShowPlayerDialog(playerid, DIALOG_VENTS, DIALOG_STYLE_LIST, "Vents", "Oval\nSquare", "Select", "Back");
  2084.                 // Lights
  2085.                 case 4: ShowPlayerDialog(playerid, DIALOG_LIGHTS, DIALOG_STYLE_LIST, "Lights", "Round\nSquare", "Select", "Back");
  2086.                 // Exhausts
  2087.                 case 5: ShowPlayerDialog(playerid, DIALOG_EXHAUSTS, DIALOG_STYLE_LIST, "Exhausts", "Wheel Arc. Alien exhaust\nWheel Arc. X-Flow exhaust\nLow Co. Chromer exhaust\nLow Co. Slamin exhaust\nTransfender Large exhaust\nTransfender Medium exhaust\nTransfender Small exhaust\nTransfender Twin exhaust\nTransfender Upswept exhaust", "Select", "Back");
  2088.                 // Front Bumpers
  2089.                 case 6: ShowPlayerDialog(playerid, DIALOG_FBUMPS, DIALOG_STYLE_LIST,"Front Bumpers", "Wheel Arc. Alien Bumper\nWheel Arc. X-Flow Bumper\nLow co. Chromer Bumper\nLow co. Slamin Bumper", "Select", "Back");
  2090.                 // Rear Bumpers
  2091.                 case 7: ShowPlayerDialog(playerid, DIALOG_RBUMPS, DIALOG_STYLE_LIST, "Rear Bumpers", "Wheel Arc. Alien Bumper\nWheel Arc. X-Flow Bumper\nLow Co. Chromer Bumper\nLow Co. Slamin Bumper", "Select", "Back");
  2092.                 // Roofs
  2093.                 case 8: ShowPlayerDialog(playerid, DIALOG_ROOFS, DIALOG_STYLE_LIST, "Roofs", "Wheel Arc. Alien\nWheel Arc. X-Flow\nLow Co. Hardtop Roof\nLow Co. Softtop Roof\nTransfender Roof Scoop", "Select", "Back");
  2094.                 // Spoilers
  2095.                 case 9: ShowPlayerDialog(playerid, DIALOG_SPOILERS, DIALOG_STYLE_LIST, "Spoilers", "Wheel Arc. Alien Spoiler\nWheel Arc. X-Flow Spoiler\nTransfender Win Spoiler\nTransfender Fury Spoiler\nTransfender Alpha Spoiler\nTransfender Pro Spoiler\nTransfender Champ Spoiler\nTransfender Race Spoiler\nTransfender Drag Spoiler", "Select", "Back");
  2096.                 // Side Skirts
  2097.                 case 10: ShowPlayerDialog(playerid, DIALOG_SIDESKIRTS, DIALOG_STYLE_LIST, "Side Skirts", "Wheel Arc. Alien Side Skirt\nWheel Arc. X-Flow Side Skirt\nLocos Chrome Strip\nLocos Chrome Flames\nLocos Chrome Arches \nLocos Chrome Trim\nLocos Wheelcovers\nTransfender Side Skirt", "Select", "Back");
  2098.                 // Bullbars
  2099.                 case 11: ShowPlayerDialog(playerid, DIALOG_BULLBARS, DIALOG_STYLE_LIST, "Bullbars", "Locos Chrome Grill\nLocos Chrome Bars\nLocos Chrome Lights \nLocos Chrome Bullbar", "Select", "Back");
  2100.                 // Wheels
  2101.                 case 12: ShowPlayerDialog(playerid, DIALOG_WHEELS, DIALOG_STYLE_LIST, "Wheels", "Offroad\nMega\nWires\nTwist\nGrove\nImport\nAtomic\nAhab\nVirtual\nAccess\nTrance\nShadow\nRimshine\nClassic\nCutter\nSwitch\nDollar", "Select", "Back");
  2102.                 // Car Stereo
  2103.                 case 13: ShowPlayerDialog(playerid, DIALOG_CSTEREO, DIALOG_STYLE_LIST, "Car Stereo", "Bass Boost", "Select", "Back");
  2104.                 // Hydraulics
  2105.                 case 14: ShowPlayerDialog(playerid, DIALOG_HYDRAULICS, DIALOG_STYLE_LIST, "Hydaulics", "Hydaulics", "Select", "Back");
  2106.                 // Nitrous Oxide
  2107.                 case 15: ShowPlayerDialog(playerid, DIALOG_NITRO, DIALOG_STYLE_LIST, "Nitrous Oxide", "2x Nitrous\n5x Nitrous\n10x Nitrous", "Select", "Back");
  2108.                 // Repair Car
  2109.                 case 16:
  2110.                 {
  2111.                     SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
  2112.                     PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2113.                     SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully repaired your car.");
  2114.                     ShowPlayerTuneDialog(playerid);
  2115.                     return 1;
  2116.                 }
  2117.             }
  2118.         }
  2119.     }
  2120.  
  2121.     if(dialogid == DIALOG_PAINTJOBS)// Paintjobs
  2122.     {
  2123.         if(! response) ShowPlayerTuneDialog(playerid);
  2124.         if(response)
  2125.         {
  2126.             switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2127.             {
  2128.                 case 562,565,559,561,560,575,534,567,536,535,576,558:
  2129.                 {
  2130.                     ChangeVehiclePaintjob(GetPlayerVehicleID(playerid), listitem);
  2131.                     SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully added paintjob to your car.");
  2132.                     PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0);
  2133.                 }
  2134.                 default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Paintjob is only for Wheel Arch Angels and Loco Low Co types of cars.");
  2135.             }
  2136.             ShowPlayerTuneDialog(playerid);
  2137.         }
  2138.     }
  2139.  
  2140.     if(dialogid == DIALOG_COLORS)// Colors
  2141.     {
  2142.         if(! response) ShowPlayerTuneDialog(playerid);
  2143.         if(response)
  2144.         {
  2145.             new colors[2], colorname[14];
  2146.             switch(listitem)
  2147.             {
  2148.                 case 0: colors[0] = 0, colors[1] = 0, colorname = "Black";
  2149.                 case 1: colors[0] = 1, colors[1] = 1, colorname = "White";
  2150.                 case 2: colors[0] = 3, colors[1] = 3, colorname = "Red";
  2151.                 case 3: colors[0] = 79, colors[1] = 79, colorname = "Blue";
  2152.                 case 4: colors[0] = 86, colors[1] = 86, colorname = "Green";
  2153.                 case 5: colors[0] = 6, colors[1] = 6, colorname = "Yellow";
  2154.                 case 6: colors[0] = 126, colors[1] = 126, colorname = "Pink";
  2155.                 case 7: colors[0] = 66, colors[1] = 66, colorname = "Brown";
  2156.                 case 8: colors[0] = 24, colors[1] = 24, colorname = "Grey";
  2157.                 case 9: colors[0] = 123, colors[1] = 123, colorname = "Gold";
  2158.                 case 10: colors[0] = 53, colors[1] = 53, colorname = "Dark Blue";
  2159.                 case 11: colors[0] = 93, colors[1] = 93, colorname = "Light Blue";
  2160.                 case 12: colors[0] = 83, colors[1] = 83, colorname = "Cold Green";
  2161.                 case 13: colors[0] = 60, colors[1] = 60, colorname = "Light Grey";
  2162.                 case 14: colors[0] = 161, colors[1] = 161, colorname = "Dark Red";
  2163.                 case 15: colors[0] = 153, colors[1] = 153, colorname = "Dark Brown";
  2164.             }
  2165.             ChangeVehicleColor(GetPlayerVehicleID(playerid), colors[0], colors[1]);
  2166.             new string[144];
  2167.             format(string, sizeof(string), "You have succesfully changed colour of your car to %s (%i & %i).", colorname, colors[0], colors[1]);
  2168.             SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  2169.             PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0);
  2170.             ShowPlayerTuneDialog(playerid);
  2171.         }
  2172.     }
  2173.  
  2174.     if(dialogid == DIALOG_EXHAUSTS)// Exhausts
  2175.     {
  2176.         if(! response) ShowPlayerTuneDialog(playerid);
  2177.         if(response)
  2178.         {
  2179.             new exhaust = 0;
  2180.             switch(listitem)
  2181.             {
  2182.                 case 0:
  2183.                 {
  2184.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2185.                     {
  2186.                         case 562: exhaust = 1034;
  2187.                         case 565: exhaust = 1046;
  2188.                         case 559: exhaust = 1065;
  2189.                         case 561: exhaust = 1064;
  2190.                         case 560: exhaust = 1028;
  2191.                         case 558: exhaust = 1089;
  2192.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Ehausts to this vehicle.");
  2193.                     }
  2194.                     if(exhaust != 0)
  2195.                     {
  2196.                         AddVehicleComponent(GetPlayerVehicleID(playerid), exhaust);
  2197.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2198.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed exhaust of your car to Wheel Arc. Alien exhaust.");
  2199.                     }
  2200.                     ShowPlayerTuneDialog(playerid);
  2201.                 }
  2202.                 case 1:
  2203.                 {
  2204.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2205.                     {
  2206.                         case 562: exhaust = 1037;
  2207.                         case 565: exhaust = 1045;
  2208.                         case 559: exhaust = 1066;
  2209.                         case 561: exhaust = 1059;
  2210.                         case 560: exhaust = 1029;
  2211.                         case 558: exhaust = 1092;
  2212.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Ehausts to this vehicle.");
  2213.                     }
  2214.                     if(exhaust != 0)
  2215.                     {
  2216.                         AddVehicleComponent(GetPlayerVehicleID(playerid), exhaust);
  2217.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2218.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed exhaust of your car to Wheel Arc. X-Flow exhaust.");
  2219.                     }
  2220.                     ShowPlayerTuneDialog(playerid);
  2221.                 }
  2222.                 case 2:
  2223.                 {
  2224.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2225.                     {
  2226.                         case 562: exhaust = 1044;
  2227.                         case 565: exhaust = 1126;
  2228.                         case 559: exhaust = 1129;
  2229.                         case 561: exhaust = 1104;
  2230.                         case 560: exhaust = 1113;
  2231.                         case 558: exhaust = 1136;
  2232.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Ehausts to this vehicle.");
  2233.                     }
  2234.                     if(exhaust != 0)
  2235.                     {
  2236.                         AddVehicleComponent(GetPlayerVehicleID(playerid), exhaust);
  2237.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2238.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed exhaust of your car to Low Co. Chromer exhaust.");
  2239.                     }
  2240.                     ShowPlayerTuneDialog(playerid);
  2241.                 }
  2242.                 case 3:
  2243.                 {
  2244.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2245.                     {
  2246.                         case 562: exhaust = 1043;
  2247.                         case 565: exhaust = 1127;
  2248.                         case 559: exhaust = 1132;
  2249.                         case 561: exhaust = 1105;
  2250.                         case 560: exhaust = 1114;
  2251.                         case 558: exhaust = 1135;
  2252.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Ehausts to this vehicle.");
  2253.                     }
  2254.                     if(exhaust != 0)
  2255.                     {
  2256.                         AddVehicleComponent(GetPlayerVehicleID(playerid), exhaust);
  2257.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2258.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed exhaust of your car to Low Co. Slamin exhaust.");
  2259.                     }
  2260.                     ShowPlayerTuneDialog(playerid);
  2261.                 }
  2262.                 case 4:
  2263.                 {
  2264.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2265.                     {
  2266.                         case 401,518,527,542,589,400,517,603,426,547,405,580,550,549,477: exhaust = 1020;
  2267.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Ehausts to this vehicle.");
  2268.                     }
  2269.                     if(exhaust != 0)
  2270.                     {
  2271.                         AddVehicleComponent(GetPlayerVehicleID(playerid), exhaust);
  2272.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2273.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed exhaust of your car to Transfender Large exhaust.");
  2274.                     }
  2275.                     ShowPlayerTuneDialog(playerid);
  2276.                 }
  2277.                 case 5:
  2278.                 {
  2279.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2280.                     {
  2281.                         case 527,542,400,426,436,547,405,477: exhaust = 1021;
  2282.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Ehausts to this vehicle.");
  2283.                     }
  2284.                     if(exhaust != 0)
  2285.                     {
  2286.                         AddVehicleComponent(GetPlayerVehicleID(playerid), exhaust);
  2287.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2288.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed exhaust of your car to Transfender Twin exhaust.");
  2289.                     }
  2290.                     ShowPlayerTuneDialog(playerid);
  2291.                 }
  2292.                 case 6:
  2293.                 {
  2294.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2295.                     {
  2296.                         case 518,415,542,546,400,517,603,426,436,547,405,550,549,477: exhaust = 1019;
  2297.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Ehausts to this vehicle.");
  2298.                     }
  2299.                     if(exhaust != 0)
  2300.                     {
  2301.                         AddVehicleComponent(GetPlayerVehicleID(playerid), exhaust);
  2302.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2303.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed exhaust of your car to Transfender Twin exhaust.");
  2304.                     }
  2305.                     ShowPlayerTuneDialog(playerid);
  2306.                 }
  2307.                 case 7:
  2308.                 {
  2309.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2310.                     {
  2311.                         case 401,518,527,542,589,400,517,603,426,547,405,580,550,549,477: exhaust = 1018;
  2312.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Ehausts to this vehicle.");
  2313.                     }
  2314.                     if(exhaust != 0)
  2315.                     {
  2316.                         AddVehicleComponent(GetPlayerVehicleID(playerid), exhaust);
  2317.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2318.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed exhaust of your car to Transfender Upswept exhaust.");
  2319.                     }
  2320.                     ShowPlayerTuneDialog(playerid);
  2321.                 }
  2322.             }
  2323.         }
  2324.     }
  2325.  
  2326.     if(dialogid == DIALOG_FBUMPS)
  2327.     {
  2328.         if(! response) ShowPlayerTuneDialog(playerid);
  2329.         if(response)
  2330.         {
  2331.             new bumper = 0;
  2332.             switch(listitem)
  2333.             {
  2334.                 case 0:
  2335.                 {
  2336.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2337.                     {
  2338.                         case 562: bumper = 1171;
  2339.                         case 565: bumper = 1153;
  2340.                         case 559: bumper = 1160;
  2341.                         case 561: bumper = 1155;
  2342.                         case 560: bumper = 1169;
  2343.                         case 558: bumper = 1166;
  2344.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Front bumpers to this vehicle.");
  2345.                     }
  2346.                     if(bumper != 0)
  2347.                     {
  2348.                         AddVehicleComponent(GetPlayerVehicleID(playerid), bumper);
  2349.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2350.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed front bumpers of your car to Wheel Arc. Alien Bumper.");
  2351.                     }
  2352.                     ShowPlayerTuneDialog(playerid);
  2353.                 }
  2354.                 case 1:
  2355.                 {
  2356.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2357.                     {
  2358.                         case 562: bumper = 1172;
  2359.                         case 565: bumper = 1152;
  2360.                         case 559: bumper = 1173;
  2361.                         case 561: bumper = 1157;
  2362.                         case 560: bumper = 1170;
  2363.                         case 558: bumper = 1165;
  2364.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Front bumpers to this vehicle.");
  2365.                     }
  2366.                     if(bumper != 0)
  2367.                     {
  2368.                         AddVehicleComponent(GetPlayerVehicleID(playerid), bumper);
  2369.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2370.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed front bumpers of your car to Wheel Arc. X-Flow Bumper.");
  2371.                     }
  2372.                     ShowPlayerTuneDialog(playerid);
  2373.                 }
  2374.                 case 2:
  2375.                 {
  2376.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2377.                     {
  2378.                         case 575: bumper = 1174;
  2379.                         case 534: bumper = 1179;
  2380.                         case 567: bumper = 1189;
  2381.                         case 536: bumper = 1182;
  2382.                         case 535: bumper = 1115;
  2383.                         case 576: bumper = 1191;
  2384.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Front bumpers to this vehicle.");
  2385.                     }
  2386.                     if(bumper != 0)
  2387.                     {
  2388.                         AddVehicleComponent(GetPlayerVehicleID(playerid), bumper);
  2389.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2390.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed front bumpers of your car to Low co. Chromer Bumper.");
  2391.                     }
  2392.                     ShowPlayerTuneDialog(playerid);
  2393.                 }
  2394.                 case 3:
  2395.                 {
  2396.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2397.                     {
  2398.                         case 575: bumper = 1175;
  2399.                         case 534: bumper = 1185;
  2400.                         case 567: bumper = 1188;
  2401.                         case 536: bumper = 1181;
  2402.                         case 535: bumper = 1116;
  2403.                         case 576: bumper = 1190;
  2404.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Front bumpers to this vehicle.");
  2405.                     }
  2406.                     if(bumper != 0)
  2407.                     {
  2408.                         AddVehicleComponent(GetPlayerVehicleID(playerid), bumper);
  2409.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2410.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed front bumpers of your car to Low co. Slamin Bumper.");
  2411.                     }
  2412.                     ShowPlayerTuneDialog(playerid);
  2413.                 }
  2414.             }
  2415.         }
  2416.     }
  2417.  
  2418.     if(dialogid == DIALOG_RBUMPS)// Rear bumbers
  2419.     {
  2420.         if(! response) ShowPlayerTuneDialog(playerid);
  2421.         if(response)
  2422.         {
  2423.             new bumper = 0;
  2424.             switch(listitem)
  2425.             {
  2426.                 case 0:
  2427.                 {
  2428.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2429.                     {
  2430.                         case 562: bumper = 1149;
  2431.                         case 565: bumper = 1150;
  2432.                         case 559: bumper = 1159;
  2433.                         case 561: bumper = 1154;
  2434.                         case 560: bumper = 1141;
  2435.                         case 558: bumper = 1168;
  2436.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Rear bumpers to this vehicle.");
  2437.                     }
  2438.                     if(bumper != 0)
  2439.                     {
  2440.                         AddVehicleComponent(GetPlayerVehicleID(playerid), bumper);
  2441.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2442.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed rear bumpers of your car to Wheel Arc. Alien Bumper.");
  2443.                     }
  2444.                     ShowPlayerTuneDialog(playerid);
  2445.                 }
  2446.                 case 1:
  2447.                 {
  2448.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2449.                     {
  2450.                         case 562: bumper = 1148;
  2451.                         case 565: bumper = 1151;
  2452.                         case 559: bumper = 1161;
  2453.                         case 560: bumper = 1140;
  2454.                         case 561: bumper = 1156;
  2455.                         case 558: bumper = 1167;
  2456.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add rear bumpers to this vehicle.");
  2457.                     }
  2458.                     if(bumper != 0)
  2459.                     {
  2460.                         AddVehicleComponent(GetPlayerVehicleID(playerid), bumper);
  2461.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2462.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed rear bumpers of your car to Wheel Arc. X-Flow Bumper.");
  2463.                     }
  2464.                     ShowPlayerTuneDialog(playerid);
  2465.                 }
  2466.                 case 2:
  2467.                 {
  2468.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2469.                     {
  2470.                         case 575: bumper = 1176;
  2471.                         case 534: bumper = 1180;
  2472.                         case 567: bumper = 1187;
  2473.                         case 536: bumper = 1184;
  2474.                         case 535: bumper = 1109;
  2475.                         case 576: bumper = 1192;
  2476.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add rear bumpers to this vehicle.");
  2477.                     }
  2478.                     if(bumper != 0)
  2479.                     {
  2480.                         AddVehicleComponent(GetPlayerVehicleID(playerid), bumper);
  2481.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2482.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed rear bumpers of your car to Low co. Chromer Bumper.");
  2483.                     }
  2484.                     ShowPlayerTuneDialog(playerid);
  2485.                 }
  2486.                 case 3:
  2487.                 {
  2488.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2489.                     {
  2490.                         case 575: bumper = 1177;
  2491.                         case 534: bumper = 1178;
  2492.                         case 567: bumper = 1186;
  2493.                         case 536: bumper = 1183;
  2494.                         case 535: bumper = 1110;
  2495.                         case 576: bumper = 1193;
  2496.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add rear bumpers to this vehicle.");
  2497.                     }
  2498.                     if(bumper != 0)
  2499.                     {
  2500.                         AddVehicleComponent(GetPlayerVehicleID(playerid), bumper);
  2501.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2502.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed rear bumpers of your car to Low co. Slamin Bumper.");
  2503.                     }
  2504.                     ShowPlayerTuneDialog(playerid);
  2505.                 }
  2506.             }
  2507.         }
  2508.     }
  2509.  
  2510.     if(dialogid == DIALOG_ROOFS)// Roofs
  2511.     {
  2512.         if(! response) ShowPlayerTuneDialog(playerid);
  2513.         if(response)
  2514.         {
  2515.             new roof = 0;
  2516.             switch(listitem)
  2517.             {
  2518.                 case 0:
  2519.                 {
  2520.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2521.                     {
  2522.                         case 562: roof = 1038;
  2523.                         case 565: roof = 1054;
  2524.                         case 559: roof = 1067;
  2525.                         case 561: roof = 1055;
  2526.                         case 560: roof = 1032;
  2527.                         case 558: roof = 1088;
  2528.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Roof to this vehicle.");
  2529.                     }
  2530.                     if(roof != 0)
  2531.                     {
  2532.                         AddVehicleComponent(GetPlayerVehicleID(playerid), roof);
  2533.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2534.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed roof of your car to Wheel Arc. Alien roof.");
  2535.                     }
  2536.                     ShowPlayerTuneDialog(playerid);
  2537.                 }
  2538.                 case 1:
  2539.                 {
  2540.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2541.                     {
  2542.                         case 562: roof = 1035;
  2543.                         case 565: roof = 1053;
  2544.                         case 559: roof = 1068;
  2545.                         case 561: roof = 1061;
  2546.                         case 560: roof = 1033;
  2547.                         case 558: roof = 1091;
  2548.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Roof to this vehicle.");
  2549.                     }
  2550.                     if(roof != 0)
  2551.                     {
  2552.                         AddVehicleComponent(GetPlayerVehicleID(playerid), roof);
  2553.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2554.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed roof of your car to Wheel Arc. X-Flow roof.");
  2555.                     }
  2556.                     ShowPlayerTuneDialog(playerid);
  2557.                 }
  2558.                 case 2:
  2559.                 {
  2560.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2561.                     {
  2562.                         case 567: roof = 1130;
  2563.                         case 536: roof = 1128;
  2564.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Roof to this vehicle.");
  2565.                     }
  2566.                     if(roof != 0)
  2567.                     {
  2568.                         AddVehicleComponent(GetPlayerVehicleID(playerid), roof);
  2569.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2570.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed roof of your car to Low Co. Hardtop roof.");
  2571.                     }
  2572.                     ShowPlayerTuneDialog(playerid);
  2573.                 }
  2574.                 case 3:
  2575.                 {
  2576.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2577.                     {
  2578.                         case 567: roof = 1131;
  2579.                         case 536: roof = 1103;
  2580.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Roof to this vehicle.");
  2581.                     }
  2582.                     if(roof != 0)
  2583.                     {
  2584.                         AddVehicleComponent(GetPlayerVehicleID(playerid), roof);
  2585.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2586.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed roof of your car to Low Co. Softtop roof.");
  2587.                     }
  2588.                     ShowPlayerTuneDialog(playerid);
  2589.                 }
  2590.                 case 4:
  2591.                 {
  2592.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2593.                     {
  2594.                         case 401,518,589,492,546,603,426,436,580,550,477: roof = 1006;
  2595.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add Roof to this vehicle.");
  2596.                     }
  2597.                     if(roof != 0)
  2598.                     {
  2599.                         AddVehicleComponent(GetPlayerVehicleID(playerid), roof);
  2600.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2601.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed roof of your car to Transfender Roof Scoop.");
  2602.                     }
  2603.                     ShowPlayerTuneDialog(playerid);
  2604.                 }
  2605.             }
  2606.         }
  2607.     }
  2608.  
  2609.     if(dialogid == DIALOG_SPOILERS)// Spoilers
  2610.     {
  2611.         if(! response) ShowPlayerTuneDialog(playerid);
  2612.         if(response)
  2613.         {
  2614.             new spoiler = 0;
  2615.             switch(listitem)
  2616.             {
  2617.                 case 0:
  2618.                 {
  2619.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2620.                     {
  2621.                         case 562: spoiler = 1147;
  2622.                         case 565: spoiler = 1049;
  2623.                         case 559: spoiler = 1162;
  2624.                         case 561: spoiler = 1158;
  2625.                         case 560: spoiler = 1138;
  2626.                         case 558: spoiler = 1164;
  2627.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2628.                     }
  2629.                     if(spoiler != 0)
  2630.                     {
  2631.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2632.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2633.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Wheel Arc. Alien.");
  2634.                     }
  2635.                     ShowPlayerTuneDialog(playerid);
  2636.                 }
  2637.                 case 1:
  2638.                 {
  2639.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2640.                     {
  2641.                         case 562: spoiler = 1146;
  2642.                         case 565: spoiler = 1150;
  2643.                         case 559: spoiler = 1158;
  2644.                         case 561: spoiler = 1060;
  2645.                         case 560: spoiler = 1139;
  2646.                         case 558: spoiler = 1163;
  2647.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2648.                     }
  2649.                     if(spoiler != 0)
  2650.                     {
  2651.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2652.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2653.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Wheel Arc. X-Flow.");
  2654.                     }
  2655.                     ShowPlayerTuneDialog(playerid);
  2656.                 }
  2657.                 case 2:
  2658.                 {
  2659.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2660.                     {
  2661.                         case 401,518,527,415,546,603,426,436,405,477,580,550,549: spoiler = 1001;
  2662.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2663.                     }
  2664.                     if(spoiler != 0)
  2665.                     {
  2666.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2667.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2668.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Transfender Win Spoiler.");
  2669.                     }
  2670.                     ShowPlayerTuneDialog(playerid);
  2671.                 }
  2672.                 case 3:
  2673.                 {
  2674.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2675.                     {
  2676.                         case 518,415,546,517,603,405,477,580,550,549: spoiler = 1023;
  2677.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2678.                     }
  2679.                     if(spoiler != 0)
  2680.                     {
  2681.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2682.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2683.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Transfender Fury Spoiler.");
  2684.                     }
  2685.                     ShowPlayerTuneDialog(playerid);
  2686.                 }
  2687.                 case 4:
  2688.                 {
  2689.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2690.                     {
  2691.                         case 518,415,546,517,603,405,477,580,550,549: spoiler = 1003;
  2692.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2693.                     }
  2694.                     if(spoiler != 0)
  2695.                     {
  2696.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2697.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2698.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Transfender Alpha Spoiler.");
  2699.                     }
  2700.                     ShowPlayerTuneDialog(playerid);
  2701.                 }
  2702.                 case 5:
  2703.                 {
  2704.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2705.                     {
  2706.                         case 589,492,547,405: spoiler = 1000;
  2707.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2708.                     }
  2709.                     if(spoiler != 0)
  2710.                     {
  2711.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2712.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2713.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Transfender Pro Spoiler.");
  2714.                     }
  2715.                     ShowPlayerTuneDialog(playerid);
  2716.                 }
  2717.                 case 6:
  2718.                 {
  2719.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2720.                     {
  2721.                         case 527,542,405: spoiler = 1014;
  2722.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2723.                     }
  2724.                     if(spoiler != 0)
  2725.                     {
  2726.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2727.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2728.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Transfender Champ Spoiler.");
  2729.                     }
  2730.                     ShowPlayerTuneDialog(playerid);
  2731.                 }
  2732.                 case 7:
  2733.                 {
  2734.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2735.                     {
  2736.                         case 527,542: spoiler = 1014;
  2737.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2738.                     }
  2739.                     if(spoiler != 0)
  2740.                     {
  2741.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2742.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2743.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Transfender Race Spoiler.");
  2744.                     }
  2745.                     ShowPlayerTuneDialog(playerid);
  2746.                 }
  2747.                 case 8:
  2748.                 {
  2749.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2750.                     {
  2751.                         case 546,517: spoiler = 1002;
  2752.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add spoiler to this vehicle.");
  2753.                     }
  2754.                     if(spoiler != 0)
  2755.                     {
  2756.                         AddVehicleComponent(GetPlayerVehicleID(playerid), spoiler);
  2757.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2758.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed spoiler of your car to Transfender Drag Spoiler.");
  2759.                     }
  2760.                     ShowPlayerTuneDialog(playerid);
  2761.                 }
  2762.             }
  2763.         }
  2764.     }
  2765.  
  2766.     if(dialogid == DIALOG_SIDESKIRTS)// Side skirts
  2767.     {
  2768.         if(! response) ShowPlayerTuneDialog(playerid);
  2769.         if(response)
  2770.         {
  2771.             new skirts[2] = {0, 0};
  2772.             switch(listitem)
  2773.             {
  2774.                 case 0:
  2775.                 {
  2776.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2777.                     {
  2778.                         case 562: skirts[0] = 1036, skirts[1] = 1040;
  2779.                         case 565: skirts[0] = 1047, skirts[1] = 1051;
  2780.                         case 559: skirts[0] = 1069, skirts[1] = 1071;
  2781.                         case 561: skirts[0] = 1056, skirts[1] = 1062;
  2782.                         case 560: skirts[0] = 1026, skirts[1] = 1027;
  2783.                         case 558: skirts[0] = 1090, skirts[1] = 1094;
  2784.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add side skirts to this vehicle.");
  2785.                     }
  2786.                     if(skirts[0] != 0)
  2787.                     {
  2788.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[0]);
  2789.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[1]);
  2790.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2791.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed side skirts of your car to Wheel Arc. Alien Side Skirts.");
  2792.                     }
  2793.                     ShowPlayerTuneDialog(playerid);
  2794.                 }
  2795.                 case 1:
  2796.                 {
  2797.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2798.                     {
  2799.                         case 562: skirts[0] = 1039, skirts[1] = 1041;
  2800.                         case 565: skirts[0] = 1048, skirts[1] = 1052;
  2801.                         case 559: skirts[0] = 1070, skirts[1] = 1072;
  2802.                         case 561: skirts[0] = 1057, skirts[1] = 1063;
  2803.                         case 560: skirts[0] = 1031, skirts[1] = 1030;
  2804.                         case 558: skirts[0] = 1093, skirts[1] = 1095;
  2805.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add side skirts to this vehicle.");
  2806.                     }
  2807.                     if(skirts[0] != 0)
  2808.                     {
  2809.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[0]);
  2810.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[1]);
  2811.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2812.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed side skirts of your car to Wheel Arc. X-Flow Side Skirts.");
  2813.                     }
  2814.                     ShowPlayerTuneDialog(playerid);
  2815.                 }
  2816.                 case 2:
  2817.                 {
  2818.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2819.                     {
  2820.                         case 575: skirts[0] = 1042, skirts[1] = 1099;
  2821.                         case 567: skirts[0] = 1102, skirts[1] = 1133;
  2822.                         case 576: skirts[0] = 1134, skirts[1] = 1137;
  2823.                         case 536: skirts[0] = 1108, skirts[1] = 1107;
  2824.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add side skirts to this vehicle.");
  2825.                     }
  2826.                     if(skirts[0] != 0)
  2827.                     {
  2828.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[0]);
  2829.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[1]);
  2830.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2831.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed side skirts of your car to Locos Chrome Strip.");
  2832.                     }
  2833.                     ShowPlayerTuneDialog(playerid);
  2834.                 }
  2835.                 case 3:
  2836.                 {
  2837.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2838.                     {
  2839.                         case 534: skirts[0] = 1122, skirts[1] = 1101;
  2840.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add side skirts to this vehicle.");
  2841.                     }
  2842.                     if(skirts[0] != 0)
  2843.                     {
  2844.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[0]);
  2845.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[1]);
  2846.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2847.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed side skirts of your car to Locos Chrome Flames.");
  2848.                     }
  2849.                     ShowPlayerTuneDialog(playerid);
  2850.                 }
  2851.                 case 4:
  2852.                 {
  2853.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2854.                     {
  2855.                         case 534: skirts[0] = 1106, skirts[1] = 1124;
  2856.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add side skirts to this vehicle.");
  2857.                     }
  2858.                     if(skirts[0] != 0)
  2859.                     {
  2860.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[0]);
  2861.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[1]);
  2862.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2863.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed side skirts of your car to Locos Chrome Arches.");
  2864.                     }
  2865.                     ShowPlayerTuneDialog(playerid);
  2866.                 }
  2867.                 case 5:
  2868.                 {
  2869.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2870.                     {
  2871.                         case 535: skirts[0] = 1118, skirts[1] = 1120;
  2872.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add side skirts to this vehicle.");
  2873.                     }
  2874.                     if(skirts[0] != 0)
  2875.                     {
  2876.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[0]);
  2877.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[1]);
  2878.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2879.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed side skirts of your car to Locos Chrome Trim.");
  2880.                     }
  2881.                     ShowPlayerTuneDialog(playerid);
  2882.                 }
  2883.                 case 6:
  2884.                 {
  2885.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2886.                     {
  2887.                         case 535: skirts[0] = 1119, skirts[1] = 1121;
  2888.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add side skirts to this vehicle.");
  2889.                     }
  2890.                     if(skirts[0] != 0)
  2891.                     {
  2892.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[0]);
  2893.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[1]);
  2894.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2895.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed side skirts of your car to Locos Wheelcovers.");
  2896.                     }
  2897.                     ShowPlayerTuneDialog(playerid);
  2898.                 }
  2899.                 case 7:
  2900.                 {
  2901.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  2902.                     {
  2903.                         case 401,518,527,415,589,546,517,603,436,439,580,549,477: skirts[0] = 1007, skirts[1] = 1017;
  2904.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add side skirts to this vehicle.");
  2905.                     }
  2906.                     if(skirts[0] != 0)
  2907.                     {
  2908.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[0]);
  2909.                         AddVehicleComponent(GetPlayerVehicleID(playerid), skirts[1]);
  2910.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2911.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed side skirts of your car to Transfender Side Skirt.");
  2912.                     }
  2913.                     ShowPlayerTuneDialog(playerid);
  2914.                 }
  2915.             }
  2916.         }
  2917.     }
  2918.  
  2919.     if(dialogid == DIALOG_BULLBARS)// Bull bars
  2920.     {
  2921.         if(! response) ShowPlayerTuneDialog(playerid);
  2922.         if(response)
  2923.         {
  2924.             new bulls = 0, bullsname[26];
  2925.             switch(listitem)
  2926.             {
  2927.                 case 0:
  2928.                 {
  2929.                     if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 534) SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add bull bars to this vehicle.");
  2930.                     else bulls = 1100, bullsname = "Locos Chrome Grill";
  2931.                 }
  2932.                 case 1:
  2933.                 {
  2934.                     if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 534) SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add bull bars to this vehicle.");
  2935.                     else bulls = 1123, bullsname = "Locos Chrome Bars";
  2936.                 }
  2937.                 case 2:
  2938.                 {
  2939.                     if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 534) SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add bull bars to this vehicle.");
  2940.                     else bulls = 1125, bullsname = "Locos Chrome Lights";
  2941.                 }
  2942.                 case 3:
  2943.                 {
  2944.                     if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 535) SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add bull bars to this vehicle.");
  2945.                     else bulls = 1117, bullsname = "Locos Chrome Bullbar";
  2946.                 }
  2947.             }
  2948.             if(bulls != 0)
  2949.             {
  2950.                 AddVehicleComponent(GetPlayerVehicleID(playerid), bulls);
  2951.                 PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  2952.                 new string[144];
  2953.                 format(string, sizeof(string), "You have succesfully changed bull bars of your car to %s.", bullsname);
  2954.                 SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  2955.             }
  2956.             ShowPlayerTuneDialog(playerid);
  2957.         }
  2958.     }
  2959.  
  2960.     if(dialogid == DIALOG_WHEELS)// Wheels
  2961.     {
  2962.         if(! response) ShowPlayerTuneDialog(playerid);
  2963.         if(response)
  2964.         {
  2965.             new wheels, wheelsname[26];
  2966.             switch(listitem)
  2967.             {
  2968.                 case 0: wheels = 1025, wheelsname = "Offroad Wheels";
  2969.                 case 1: wheels = 1074, wheelsname = "Mega Wheels";
  2970.                 case 2: wheels = 1076, wheelsname = "Wires Wheels";
  2971.                 case 3: wheels = 1078, wheelsname = "Twist Wheels";
  2972.                 case 4: wheels = 1081, wheelsname = "Grove Wheels";
  2973.                 case 5: wheels = 1082, wheelsname = "Import Wheels";
  2974.                 case 6: wheels = 1085, wheelsname = "Atomic Wheels";
  2975.                 case 7: wheels = 1096, wheelsname = "Ahab Wheels";
  2976.                 case 8: wheels = 1097, wheelsname = "Virtual Wheels";
  2977.                 case 9: wheels = 1098, wheelsname = "Access Wheels";
  2978.                 case 10: wheels = 1084, wheelsname = "Trance Wheels";
  2979.                 case 11: wheels = 1073, wheelsname = "Shadow Wheels";
  2980.                 case 12: wheels = 1075, wheelsname = "Rimshine Wheels";
  2981.                 case 13: wheels = 1077, wheelsname = "Classic Wheels";
  2982.                 case 14: wheels = 1079, wheelsname = "Cutter Wheels";
  2983.                 case 15: wheels = 1080, wheelsname = "Switch Wheels";
  2984.                 case 16: wheels = 1083, wheelsname = "Dollar Wheels";
  2985.             }
  2986.             AddVehicleComponent(GetPlayerVehicleID(playerid), wheels);
  2987.             new string[144];
  2988.             format(string, sizeof(string), "You have succesfully changed wheels of your car to %s (%i).", wheelsname, wheels);
  2989.             SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  2990.             PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0);
  2991.             ShowPlayerTuneDialog(playerid);
  2992.         }
  2993.     }
  2994.  
  2995.     if(dialogid == DIALOG_WHEELS)// Stero
  2996.     {
  2997.         if(! response) ShowPlayerTuneDialog(playerid);
  2998.         if(response)
  2999.         {
  3000.             AddVehicleComponent(GetPlayerVehicleID(playerid), 1086);
  3001.             SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully added a stero to your vehicle.");
  3002.             PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0);
  3003.             ShowPlayerTuneDialog(playerid);
  3004.         }
  3005.     }
  3006.  
  3007.     if(dialogid == DIALOG_HYDRAULICS)// Hydraulics
  3008.     {
  3009.         if(! response) ShowPlayerTuneDialog(playerid);
  3010.         if(response)
  3011.         {
  3012.             AddVehicleComponent(GetPlayerVehicleID(playerid), 1087);
  3013.             SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully added hydraulics to your vehicle.");
  3014.             PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0);
  3015.             ShowPlayerTuneDialog(playerid);
  3016.         }
  3017.     }
  3018.  
  3019.     if(dialogid == DIALOG_NITRO)// Nitros !
  3020.     {
  3021.         if(! response) ShowPlayerTuneDialog(playerid);
  3022.         if(response)
  3023.         {
  3024.             new nitro, nitroname[5];
  3025.             switch(listitem)
  3026.             {
  3027.                 case 0: nitro = 1008, nitroname = "2x";
  3028.                 case 1: nitro = 1009, nitroname = "5x";
  3029.                 case 2: nitro = 1010, nitroname = "10x";
  3030.             }
  3031.             AddVehicleComponent(GetPlayerVehicleID(playerid), nitro);
  3032.             new string[144];
  3033.             format(string, sizeof(string), "You have succesfully added nitros to your car, %s.", nitroname);
  3034.             SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3035.             PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0);
  3036.             ShowPlayerTuneDialog(playerid);
  3037.         }
  3038.     }
  3039.  
  3040.     if(dialogid == DIALOG_HOODS)// Hoods
  3041.     {
  3042.         if(! response) ShowPlayerTuneDialog(playerid);
  3043.         if(response)
  3044.         {
  3045.             new hood = 0;
  3046.             switch(listitem)
  3047.             {
  3048.                 case 0:
  3049.                 {
  3050.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3051.                     {
  3052.                         case 401,518,589,492,426,550: hood = 1005;
  3053.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add hood to this vehicle.");
  3054.                     }
  3055.                     if(hood != 0)
  3056.                     {
  3057.                         AddVehicleComponent(GetPlayerVehicleID(playerid), hood);
  3058.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3059.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed hood of your car to Fury.");
  3060.                     }
  3061.                     ShowPlayerTuneDialog(playerid);
  3062.                 }
  3063.                 case 1:
  3064.                 {
  3065.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3066.                     {
  3067.                         case 401,546,492,426,550: hood = 1004;
  3068.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add hood to this vehicle.");
  3069.                     }
  3070.                     if(hood != 0)
  3071.                     {
  3072.                         AddVehicleComponent(GetPlayerVehicleID(playerid), hood);
  3073.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3074.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed hood of your car to Champ.");
  3075.                     }
  3076.                     ShowPlayerTuneDialog(playerid);
  3077.                 }
  3078.                 case 2:
  3079.                 {
  3080.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3081.                     {
  3082.                         case 549: hood = 1011;
  3083.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add hood to this vehicle.");
  3084.                     }
  3085.                     if(hood != 0)
  3086.                     {
  3087.                         AddVehicleComponent(GetPlayerVehicleID(playerid), hood);
  3088.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3089.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed hood of your car to Race.");
  3090.                     }
  3091.                     ShowPlayerTuneDialog(playerid);
  3092.                 }
  3093.                 case 3:
  3094.                 {
  3095.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3096.                     {
  3097.                         case 549: hood = 1012;
  3098.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add hood to this vehicle.");
  3099.                     }
  3100.                     if(hood != 0)
  3101.                     {
  3102.                         AddVehicleComponent(GetPlayerVehicleID(playerid), hood);
  3103.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3104.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed hood of your car to Worx.");
  3105.                     }
  3106.                     ShowPlayerTuneDialog(playerid);
  3107.                 }
  3108.             }
  3109.         }
  3110.     }
  3111.  
  3112.     if(dialogid == DIALOG_VENTS)// Vents
  3113.     {
  3114.         if(! response) ShowPlayerTuneDialog(playerid);
  3115.         if(response)
  3116.         {
  3117.             new vents[2] = {0, 0};
  3118.             switch(listitem)
  3119.             {
  3120.                 case 0:
  3121.                 {
  3122.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3123.                     {
  3124.                         case 401,518,546,517,603,547,439,550,549: vents[0] = 1142, vents[1] = 1143;
  3125.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add vents to this vehicle.");
  3126.                     }
  3127.                     if(vents[0] != 0)
  3128.                     {
  3129.                         AddVehicleComponent(GetPlayerVehicleID(playerid), vents[0]);
  3130.                         AddVehicleComponent(GetPlayerVehicleID(playerid), vents[1]);
  3131.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3132.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed vents of your car to Oval.");
  3133.                     }
  3134.                     ShowPlayerTuneDialog(playerid);
  3135.                 }
  3136.                 case 1:
  3137.                 {
  3138.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3139.                     {
  3140.                         case 401,518,546,517,603,547,439,550,549: vents[0] = 1144, vents[1] = 1145;
  3141.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add vents to this vehicle.");
  3142.                     }
  3143.                     if(vents[0] != 0)
  3144.                     {
  3145.                         AddVehicleComponent(GetPlayerVehicleID(playerid), vents[0]);
  3146.                         AddVehicleComponent(GetPlayerVehicleID(playerid), vents[1]);
  3147.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3148.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed vents of your car to Square.");
  3149.                     }
  3150.                     ShowPlayerTuneDialog(playerid);
  3151.                 }
  3152.             }
  3153.         }
  3154.     }
  3155.  
  3156.     if(dialogid == DIALOG_LIGHTS)// Lights
  3157.     {
  3158.         if(! response) ShowPlayerTuneDialog(playerid);
  3159.         if(response)
  3160.         {
  3161.             new light = 0;
  3162.             switch(listitem)
  3163.             {
  3164.                 case 0:
  3165.                 {
  3166.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3167.                     {
  3168.                         case 401,518,589,400,436,439: light = 1013;
  3169.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add lights to this vehicle.");
  3170.                     }
  3171.                     if(light != 0)
  3172.                     {
  3173.                         AddVehicleComponent(GetPlayerVehicleID(playerid), light);
  3174.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3175.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed lights of your car to Round.");
  3176.                     }
  3177.                     ShowPlayerTuneDialog(playerid);
  3178.                 }
  3179.                 case 1:
  3180.                 {
  3181.                     switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3182.                     {
  3183.                         case 589,603,400: light = 1024;
  3184.                         default: SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't add lights to this vehicle.");
  3185.                     }
  3186.                     if(light != 0)
  3187.                     {
  3188.                         AddVehicleComponent(GetPlayerVehicleID(playerid), light);
  3189.                         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3190.                         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have succesfully changed lights of your car to Square.");
  3191.                     }
  3192.                     ShowPlayerTuneDialog(playerid);
  3193.                 }
  3194.             }
  3195.         }
  3196.     }
  3197.     return 1;
  3198. }
  3199.  
  3200. //------------------------------------------------
  3201.  
  3202. public OnVehicleSpawn(vehicleid)
  3203. {
  3204.     LOOP_PLAYERS(i)
  3205.     {
  3206.         if(vehicleid == gUser[i][u_vehicle])
  3207.         {
  3208.             EraseVeh(vehicleid);
  3209.             gUser[i][u_vehicle] = -1;
  3210.         }
  3211.     }
  3212.     return 1;
  3213. }
  3214.  
  3215. //------------------------------------------------
  3216.  
  3217. public OnVehicleDeath(vehicleid, killerid)
  3218. {
  3219.     return 1;
  3220. }
  3221.  
  3222. //------------------------------------------------
  3223.  
  3224. public OnPlayerText(playerid, text[])
  3225. {
  3226.     if(gGlobal[s_locked]) return SendClientMessage(playerid, COLOR_RED, "ERROR: The server is locked.");
  3227.  
  3228.     //mute system
  3229.     if(GetPVarType(playerid, "GAdmin_Muted") != PLAYER_VARTYPE_NONE)
  3230.     {
  3231.         new string[144];
  3232.         format(string, sizeof(string), "ERROR: You are muted, you can't chat till %i seconds.", gUser[playerid][u_mutetime]);
  3233.         SendClientMessage(playerid, COLOR_FIREBRICK, string);
  3234.         return 0;
  3235.     }
  3236.  
  3237.     if(GetPlayerGAdminLevel(playerid) >= 1)
  3238.     {
  3239.         if(text[0] == '!')
  3240.         {
  3241.             new string[144];
  3242.             format(string, sizeof(string), "[Admin chat] %s[%i]: %s", ReturnPlayerName(playerid), playerid, text[1]);
  3243.             SendClientMessageForAdmins(COLOR_PINK, string);
  3244.             return 0;
  3245.         }
  3246.     }
  3247.  
  3248.     if(GetPlayerGAdminLevel(playerid) >= 4)
  3249.     {
  3250.         if(text[0] == '@')
  3251.         {
  3252.             new string[144];
  3253.             format(string, sizeof(string), "[Adminlevel 4 chat] %s[%i]: %s", ReturnPlayerName(playerid), playerid, text[1]);
  3254.             SendClientMessageForAdmins(COLOR_PINK, string, 4);
  3255.             return 0;
  3256.         }
  3257.     }
  3258.  
  3259.     if(GetPlayerGAdminLevel(playerid) >= 5)
  3260.     {
  3261.         if(text[0] == '#')
  3262.         {
  3263.             new string[144];
  3264.             format(string, sizeof(string), "[Adminlevel 5 chat] %s[%i]: %s", ReturnPlayerName(playerid), playerid, text[1]);
  3265.             SendClientMessageForAdmins(COLOR_PINK, string, 5);
  3266.             return 0;
  3267.         }
  3268.     }
  3269.  
  3270.     //admin chat interface
  3271.     if(GetPVarType(playerid, "GAdmin_Onduty") != PLAYER_VARTYPE_NONE)
  3272.     {
  3273.         new string[144];
  3274.         format(string, sizeof(string), "Admin %s[%i]: %s", ReturnPlayerName(playerid), playerid, text);
  3275.         SendClientMessage(playerid, COLOR_HOT_PINK, string);
  3276.         return 0;
  3277.     }
  3278.  
  3279.     #if defined ANTI_FLOOD
  3280.         //anti flooding
  3281.         if((GetTickCount() - gUser[playerid][u_chattime]) < 1000)
  3282.         {
  3283.             SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Please don't flood in the chat.");
  3284.             return 0;
  3285.         }
  3286.     #endif
  3287.  
  3288.     #if defined ANTI_SPAM
  3289.         //anti spam
  3290.         if(strlen(text) == strlen(gUser[playerid][u_chattext]) && ! strcmp(gUser[playerid][u_chattext], text,  false))
  3291.         {
  3292.             SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Please don't spam in the chat.");
  3293.             format(gUser[playerid][u_chattext][playerid], 144, "%s", text);
  3294.             return 0;
  3295.         }
  3296.     #endif
  3297.  
  3298.     //anti swear
  3299.     new place;
  3300.     for(new i = 0; i < gGlobal[s_fwordscount]; i++)
  3301.     {
  3302.         place = strfind(text, gForbidden_Words[i], true);
  3303.         if(place != -1)
  3304.         {
  3305.             for(new x = place; x < (place + strlen(gForbidden_Words[i])); x ++)
  3306.             {
  3307.                 text[x] = '*';
  3308.             }
  3309.         }
  3310.     }
  3311.  
  3312.     #if defined ANTI_FLOOD
  3313.         gUser[playerid][u_chattime] = GetTickCount();
  3314.     #endif
  3315.  
  3316.     #if defined ANTI_SPAM
  3317.         format(gUser[playerid][u_chattext], 144, "%s", text);
  3318.     #endif
  3319.     return 1;
  3320. }
  3321.  
  3322. //------------------------------------------------
  3323.  
  3324. public OnPlayerCommandReceived(playerid, cmdtext[])
  3325. {
  3326.     if(gGlobal[s_locked]) return SendClientMessage(playerid, COLOR_RED, "ERROR: The server is locked.");
  3327.  
  3328.     //command mute system
  3329.     if(GetPVarType(playerid, "GAdmin_CMDMuted") != PLAYER_VARTYPE_NONE)
  3330.     {
  3331.         new string[144];
  3332.         format(string, sizeof(string), "ERROR: You are muted for commands, you can't input commands till %i seconds.", gUser[playerid][u_cmutetime]);
  3333.         SendClientMessage(playerid, COLOR_FIREBRICK, string);
  3334.         return 0;
  3335.     }
  3336.  
  3337.     //command mute system for jailed players
  3338.     if(GetPVarType(playerid, "GAdmin_Jailed") != PLAYER_VARTYPE_NONE)
  3339.     {
  3340.         SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You are muted for commands until you are unjailed, you can't input commands.");
  3341.         return 0;
  3342.     }
  3343.  
  3344.     //read commands
  3345.     #if defined READ_COMMANDS
  3346.         LOOP_PLAYERS(i)
  3347.         {
  3348.             if(strcmp("/changepass", cmdtext, true))
  3349.             {
  3350.                 if( IsPlayerGAdmin(i) &&
  3351.                     GetPlayerGAdminLevel(i) > GetPlayerGAdminLevel(playerid) &&
  3352.                     i != playerid)
  3353.                 {
  3354.                     new string[144];
  3355.                     format(string, sizeof(string), "** %s[%i] inputs: %s", ReturnPlayerName(playerid), playerid, cmdtext);
  3356.                     SendClientMessage(i, COLOR_GREY, string);
  3357.                 }
  3358.             }
  3359.         }
  3360.     #endif
  3361.     return 1;
  3362. }
  3363.  
  3364. //------------------------------------------------
  3365.  
  3366. //Admin level 1+
  3367. CMD:acmds(playerid, params[])
  3368. {
  3369.     new DIALOG[1246+546];
  3370.  
  3371.     strcat(DIALOG, ""HOT_PINK"JOGADOR:\n");
  3372.     strcat(DIALOG, ""SAMP_BLUE"/admins, /vips, /report, /pm, /responder, /nopm, /est, /register, /login, /changename, /trocarsenha,\n");
  3373.     strcat(DIALOG, ""SAMP_BLUE" /autologin, /salvardados, /hora, /id, /ricos, /scorelist, /procurar\n\n");
  3374.  
  3375.     if(GetPlayerGAdminLevel(playerid) >= 1 || IsPlayerAdmin(playerid))
  3376.     {
  3377.         strcat(DIALOG, ""HOT_PINK"ADMIN LEVEL 1:\n");
  3378.         strcat(DIALOG, ""SAMP_BLUE"/acmds, /weaps, /onduty, /reports, /repair, /addnos, /warn, /rewarn, /spec, /specoff,\n");
  3379.         strcat(DIALOG, ""SAMP_BLUE"/flip, /ip, /goto, /setweather, /settime, /ann, /kick, /asay, /spawn\n");
  3380.         strcat(DIALOG, ""SAMP_BLUE"Use '!' para falar no chat exclusivos para membro da staff [exemplo: !Olá]\n\n");
  3381.     }
  3382.     if(GetPlayerGAdminLevel(playerid) >= 2 || IsPlayerAdmin(playerid))
  3383.     {
  3384.         strcat(DIALOG, ""HOT_PINK"ADMIN LEVEL 2:\n");
  3385.         strcat(DIALOG, ""SAMP_BLUE"/jetpack, /aweaps, /show, /muted, /jailed, /carhealth, /eject, /carpaint,\n");
  3386.         strcat(DIALOG, ""SAMP_BLUE"/carcolor, /givecar, /car, /akill, /jail, /unjail, /mute, /unmute, /setskin,\n");
  3387.         strcat(DIALOG, ""SAMP_BLUE"/cc, /aheal, /aarmour, /setinterior, /setworld, /explode, /disarm, /tune, /aka\n");
  3388.         strcat(DIALOG, ""SAMP_BLUE"/ban, /oban, /searchban, /searchipban, /searchrangeban, /unban, /atele, /ann2\n\n");
  3389.     }
  3390.     if(GetPlayerGAdminLevel(playerid) >= 3 || IsPlayerAdmin(playerid))
  3391.     {
  3392.         strcat(DIALOG, ""HOT_PINK"ADMIN LEVEL 3:\n");
  3393.         strcat(DIALOG, ""SAMP_BLUE"/get, /write, /force, /healall, /armourall, /fightstyle, /sethealth, /setarmour, /destroycar,\n");
  3394.         strcat(DIALOG, "/agod, /resetcash, /getall, /freeze, /unfreeze, /giveweapon, /slap, /setcolor, /setcash, /setscore, /osetpass\n");
  3395.         strcat(DIALOG, "/givecash, /givescore, /respawncar, /setkills, /setdeaths, /banip, /unbanip, /freezeall, /unfreezeall\n\n");
  3396.     }
  3397.     if(GetPlayerGAdminLevel(playerid) >= 4 || IsPlayerAdmin(playerid))
  3398.     {
  3399.         strcat(DIALOG, ""HOT_PINK"ADMIN LEVEL 4:\n");
  3400.         strcat(DIALOG, ""SAMP_BLUE"/fakedeath, /cmdmuted, /cmdmute, /uncmdmute, /killall, /ejectall, /disarmall, /muteall, /unmuteall,\n");
  3401.         strcat(DIALOG, "/giveallscore, /giveallcash, /setalltime, /setallweather, /respawncars, /clearwindow, /giveallweapon,\n");
  3402.         strcat(DIALOG, "/object, /destroyobject, /editobject, /banrange, /unbanrange\n");
  3403.         strcat(DIALOG, ""SAMP_BLUE"Use '@' specifier in chat console at first place for admin chat [example: !hello lvl 4+ admins]\n\n");
  3404.     }
  3405.     if(GetPlayerGAdminLevel(playerid) >= 5 || IsPlayerAdmin(playerid))
  3406.     {
  3407.         strcat(DIALOG, ""HOT_PINK"ADMIN LEVEL 5+:\n");
  3408.         strcat(DIALOG, ""SAMP_BLUE"/gmx, /removeuser, /fakecmd, /fakechat, /setlevel, /setvip, /forbidname, /forbidtag, /forbidword,\n");
  3409.         strcat(DIALOG, ""SAMP_BLUE"/pickup, /destroypickup, /reloaddb\n");
  3410.         strcat(DIALOG, ""SAMP_BLUE"Use '#' specifier in chat console at first place for admin chat [example: !hello lvl 5+ admins]\n\n");
  3411.     }
  3412.  
  3413.     ShowPlayerDialog(playerid, DIALOG_COMMON, DIALOG_STYLE_MSGBOX, "Administrative help/commands list:", DIALOG, "Close", "");
  3414.     return 1;
  3415. }
  3416.  
  3417. CMD:spec(playerid, params[])
  3418. {
  3419.     //check if the player is a admin
  3420.     LevelCheck(playerid, 1);
  3421.  
  3422.     new target;
  3423.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /spec [player]");
  3424.  
  3425.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3426.  
  3427.     if(! IsPlayerSpawned(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not spawned.");
  3428.  
  3429.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't spectate to yourself.");
  3430.  
  3431.     if(IsPlayerSpectating(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is spectating a player.");
  3432.  
  3433.     GetPlayerPos(playerid, gUser[playerid][u_pos][0], gUser[playerid][u_pos][1], gUser[playerid][u_pos][2]);
  3434.  
  3435.     #if defined SPECTATE_TEXTDRAW
  3436.         PlayerTextDrawShow(playerid, gUser[playerid][u_spectxt]);
  3437.     #endif
  3438.  
  3439.     gUser[playerid][u_int] = GetPlayerInterior(playerid);
  3440.     gUser[playerid][u_vw] = GetPlayerVirtualWorld(playerid);
  3441.  
  3442.     SetPlayerSpectating(playerid, target);
  3443.     SendClientMessage(playerid, COLOR_KHAKI, "TIP: You can use LCTRL (KEY_ACTION) and RCTRL (KEY_FIRE) to switch players.");
  3444.     SendClientMessage(playerid, COLOR_KHAKI, "TIP: You can use MMB (KEY_LOOK_BEHIND) or /specoff to stop spectating.");
  3445.     return 1;
  3446. }
  3447.  
  3448. CMD:specoff(playerid, params[])
  3449. {
  3450.     //check if the player is a admin
  3451.     LevelCheck(playerid, 1);
  3452.  
  3453.     if(! IsPlayerSpectating(playerid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You are not spectating.");
  3454.  
  3455.     TogglePlayerSpectating(playerid, false);
  3456.  
  3457.     #if defined SPECTATE_TEXTDRAW
  3458.         PlayerTextDrawHide(playerid, gUser[playerid][u_spectxt]);
  3459.     #endif
  3460.  
  3461.     gUser[playerid][u_spec] = false;
  3462.     gUser[playerid][u_specid] = INVALID_PLAYER_ID;
  3463.     SetPlayerPos(playerid, gUser[playerid][u_pos][0], gUser[playerid][u_pos][1], gUser[playerid][u_pos][2]);
  3464.     SetPlayerInterior(playerid, gUser[playerid][u_int]);
  3465.     SetPlayerVirtualWorld(playerid, gUser[playerid][u_vw]);
  3466.     return 1;
  3467. }
  3468.  
  3469. CMD:adminarea(playerid, params[])
  3470. {
  3471.     //check if the player is a admin
  3472.     LevelCheck(playerid, 1);
  3473.  
  3474.     GameTextForPlayer(playerid, "~g~Admin Area", 3000, 3);
  3475.  
  3476.     SetPlayerPos(playerid, 377, 170, 1008);
  3477.     SetPlayerFacingAngle(playerid, 90);
  3478.     SetPlayerInterior(playerid, 3);
  3479.     SetPlayerVirtualWorld(playerid, 0);
  3480.     return 1;
  3481. }
  3482.  
  3483. CMD:weaps(playerid, params[])
  3484. {
  3485.     //check if the player is a admin
  3486.     LevelCheck(playerid, 1);
  3487.  
  3488.     new target;
  3489.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /weaps [player]");
  3490.  
  3491.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3492.  
  3493.     new weap, ammo, count;
  3494.     for(new i = 0; i < 14; i++)
  3495.     {
  3496.         GetPlayerWeaponData(target, i, weap, ammo);
  3497.         if(ammo != 0 && weap != 0)
  3498.         {
  3499.             count++;
  3500.             break;
  3501.         }
  3502.     }
  3503.  
  3504.     if(count < 1) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Players has no weapons.");
  3505.  
  3506.     SendClientMessage(playerid, COLOR_DODGER_BLUE, " ");
  3507.     new string[144];
  3508.     format(string, sizeof(string), "%s(%i) weapons:", ReturnPlayerName(target), target);
  3509.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3510.  
  3511.     new weaponname[28], x;
  3512.     for(new i = 0; i < 14; i++)
  3513.     {
  3514.         GetPlayerWeaponData(target, i, weap, ammo);
  3515.         if(ammo != 0 && weap != 0)
  3516.         {
  3517.             GetWeaponName(weap, weaponname, sizeof(weaponname));
  3518.             if(ammo == 65535 || ammo == 1) format(string, sizeof(string), "%s%s [1]",string, weaponname);
  3519.             else format(string, sizeof(string), "%s%s [%d]", string, weaponname, ammo);
  3520.             x++;
  3521.             if(x >= 5)
  3522.             {
  3523.                 SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3524.                 x = 0;
  3525.                 format(string, sizeof(string), "");
  3526.             }
  3527.             else format(string, sizeof(string), "%s, ", string);
  3528.         }
  3529.     }
  3530.     if(x <= 4 && x > 0)
  3531.     {
  3532.         string[strlen(string)-3] = '.';
  3533.         SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3534.     }
  3535.     SendClientMessage(playerid, COLOR_DODGER_BLUE, " ");
  3536.     return 1;
  3537. }
  3538.  
  3539. CMD:onduty(playerid, params[])
  3540. {
  3541.     //check if the player is a admin
  3542.     LevelCheck(playerid, 1);
  3543.  
  3544.     if(GetPVarType(playerid, "GAdmin_Onduty") == PLAYER_VARTYPE_NONE)
  3545.     {
  3546.         for(new i; i < MAX_PLAYER_ATTACHED_OBJECTS; i++) RemovePlayerAttachedObject(playerid, i);
  3547.  
  3548.         gUser[playerid][u_duty3dtext] = CreateDynamic3DTextLabel("Admin on duty\nDon't shoot", COLOR_LIME, 0.0, 0.0, 0.3, 20.0, playerid, _, 1);
  3549.  
  3550.         SetPlayerSkin(playerid, 217);
  3551.         SetPlayerColor(playerid, COLOR_HOT_PINK);
  3552.         SetPlayerTeam(playerid, 100);//admin team !:D!
  3553.  
  3554.         //toggle godmode
  3555.         if(GetPVarType(playerid, "GAdmin_God") == PLAYER_VARTYPE_NONE)
  3556.         {
  3557.             SetPVarInt(playerid, "GAdmin_God", 1);
  3558.         }
  3559.         SetPlayerHealth(playerid, FLOAT_INFINITY);
  3560.         SetPlayerArmour(playerid, 0.0);
  3561.  
  3562.         //load admin weapons
  3563.         ResetPlayerWeapons(playerid);
  3564.         GivePlayerWeapon(playerid, 38, 999999);//minigun
  3565.  
  3566.         GameTextForPlayer(playerid, "~g~ADMIN DUTY ~w~~h~ON", 5000, 3);
  3567.         PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  3568.  
  3569.         new string[144];
  3570.         format(string, sizeof(string), "%s[%i] is now on admin duty.", ReturnPlayerName(playerid), playerid);
  3571.         SendClientMessageToAll(COLOR_RED, string);
  3572.  
  3573.         SetPVarInt(playerid, "GAdmin_Onduty", 1);
  3574.     }
  3575.     else
  3576.     {
  3577.         SetPlayerTeam(playerid, 0);
  3578.  
  3579.         DestroyDynamic3DTextLabel(gUser[playerid][u_duty3dtext]);
  3580.  
  3581.         GameTextForPlayer(playerid, "~g~ADMIN DUTY ~w~~h~OFF", 5000, 3);
  3582.         PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  3583.  
  3584.         DeletePVar(playerid, "GAdmin_God");
  3585.  
  3586.         new string[144];
  3587.         format(string, sizeof(string), "%s[%i] is now off admin duty.", ReturnPlayerName(playerid), playerid);
  3588.         SendClientMessageToAll(COLOR_RED, string);
  3589.         ForceClassSelection(playerid);
  3590.         SetPlayerHealth(playerid, 0.0);
  3591.  
  3592.         DeletePVar(playerid, "GAdmin_Onduty");
  3593.     }
  3594.     return 1;
  3595. }
  3596.  
  3597. CMD:reports(playerid, params[])
  3598. {
  3599.     //check if the player is a admin
  3600.     LevelCheck(playerid, 1);
  3601.  
  3602.     LOOP_PLAYERS(i)
  3603.     {
  3604.         if(gUser[i][u_lastreported] != INVALID_PLAYER_ID)
  3605.         {
  3606.             SendClientMessage(playerid, COLOR_DODGER_BLUE, "* An admin is checking you report now.");
  3607.             gUser[i][u_lastreported] = INVALID_PLAYER_ID;
  3608.             gUser[i][u_lastreportedtime] = 0;
  3609.         }
  3610.     }
  3611.  
  3612.     new DIALOG[956], string[156];
  3613.     strcat(DIALOG, ""LIME"Reports log sent by players\n\n");
  3614.     strcat(DIALOG, ""SAMP_BLUE"");
  3615.     for(new i; i < sizeof(gReportlog); i++)
  3616.     {
  3617.         format(string, sizeof(string), ""SAMP_BLUE"%i. %s\n\n", i, gReportlog[i]);
  3618.         strcat(DIALOG, string);
  3619.     }
  3620.  
  3621.     ShowPlayerDialog(playerid, DIALOG_COMMON, DIALOG_STYLE_MSGBOX, "Reports log", DIALOG, "Close", "");
  3622.     return 1;
  3623. }
  3624.  
  3625. CMD:repair(playerid, params[])
  3626. {
  3627.     //check if the player is a admin
  3628.     LevelCheck(playerid, 1);
  3629.  
  3630.     if(IsPlayerInAnyVehicle(playerid))
  3631.     {
  3632.         RepairVehicle(GetPlayerVehicleID(playerid));
  3633.         GameTextForPlayer(playerid, "~b~~h~~h~~h~Vehicle Repaired", 5000, 3);
  3634.         SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
  3635.         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3636.         return 1;
  3637.     }
  3638.     SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You must be in a vehicle to repair.");
  3639.     return 1;
  3640. }
  3641.  
  3642. CMD:fix(playerid, params[]) return cmd_repair(playerid, params);
  3643.  
  3644. CMD:addnos(playerid, params[])
  3645. {
  3646.     //check if the player is a admin
  3647.     LevelCheck(playerid, 1);
  3648.  
  3649.     if(IsPlayerInAnyVehicle(playerid))
  3650.     {
  3651.         switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  3652.         {
  3653.             case 448,461,462,463,468,471,509,510,521,522,523,581,586,449:
  3654.             {
  3655.                 return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot add nitros to this vehicle.");
  3656.             }
  3657.         }
  3658.         GameTextForPlayer(playerid, "~b~~h~~h~~h~Nitros Added", 5000, 3);
  3659.         AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
  3660.         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3661.         return 1;
  3662.     }
  3663.     SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You must be in a vehicle to repair.");
  3664.     return 1;
  3665. }
  3666.  
  3667. CMD:warn(playerid, params[])
  3668. {
  3669.     //check if the player is a admin
  3670.     LevelCheck(playerid, 1);
  3671.  
  3672.     new target, reason[128];
  3673.     if(sscanf(params, "uS(No reason specified)[128]", target, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /warn [player] [*reason]");
  3674.  
  3675.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3676.  
  3677.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot warn yourself.");
  3678.  
  3679.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3680.  
  3681.     new string[144];
  3682.     format(string, sizeof(string), "admin %s[%i] has warned %s[%i] [Reason: %s] (warnings: %i)", ReturnPlayerName(playerid), playerid, ReturnPlayerName(target), target, reason, gUser[target][u_warnings]);
  3683.     SendClientMessageToAll(COLOR_YELLOW, string);
  3684.  
  3685.     gUser[target][u_warnings] += 1;
  3686.     if(gUser[target][u_warnings] >= MAX_WARNINGS)
  3687.     {
  3688.         format(string, sizeof(string), "* %s[%d] has been automatically kicked [Reason: Exceeded maximum warnings] (Warnings: %i/"#MAX_WARNINGS")", ReturnPlayerName(target), target, gUser[target][u_warnings]);
  3689.         SendClientMessageToAll(COLOR_RED, string);
  3690.         DelayKick(target);
  3691.         return 1;
  3692.     }
  3693.  
  3694.     format(string, sizeof(string), ""SAMP_BLUE"You have been issued a WARNING.\n\n"SAMP_BLUE"Admin: "PINK"%s\n"SAMP_BLUE"Reason: "PINK"%s\n"SAMP_BLUE"Warnings count: "PINK"%i/"#MAX_WARNINGS"\n\n"SAMP_BLUE"If you think this is a bug, false warn, or the admin abused his/her power, Please place a report on forums.", ReturnPlayerName(playerid), reason, gUser[target][u_warnings]);
  3695.     ShowPlayerDialog(target, DIALOG_COMMON, DIALOG_STYLE_MSGBOX, "Warning issued", string, "Close", "");
  3696.     return 1;
  3697. }
  3698.  
  3699. CMD:rewarn(playerid, params[])
  3700. {
  3701.     //check if the player is a admin
  3702.     LevelCheck(playerid, 1);
  3703.  
  3704.     new target, reason[45];
  3705.     if(sscanf(params, "u", target, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /rewarn [player]");
  3706.  
  3707.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3708.  
  3709.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3710.  
  3711.     gUser[target][u_warnings] = 0;
  3712.  
  3713.     new string[144];
  3714.     format(string, sizeof(string), "admin %s[%i] has remove your warning counts (warnings: %i)", ReturnPlayerName(playerid), playerid, gUser[target][u_warnings]);
  3715.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  3716.     format(string, sizeof(string), "You have removed %s[%i]'s warning counts (warnings: %i)", ReturnPlayerName(target), target, gUser[target][u_warnings]);
  3717.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3718.     return 1;
  3719. }
  3720.  
  3721. CMD:flip(playerid, params[])
  3722. {
  3723.     //check if the player is a admin
  3724.     LevelCheck(playerid, 1);
  3725.  
  3726.     new target;
  3727.     if(! sscanf(params, "u", target))
  3728.     {
  3729.         if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3730.  
  3731.         if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3732.  
  3733.         if(! IsPlayerInAnyVehicle(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is not in a vehicle.");
  3734.  
  3735.         new Float:angle;
  3736.         GetVehicleZAngle(GetPlayerVehicleID(target), angle);
  3737.         SetVehicleZAngle(GetPlayerVehicleID(target), angle);
  3738.  
  3739.         GameTextForPlayer(target, "~b~~h~~h~~h~Vehicle Fliped", 5000, 3);
  3740.         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3741.         PlayerPlaySound(target, 1133, 0.0, 0.0, 0.0);
  3742.  
  3743.         new string[144];
  3744.         format(string, sizeof(string), "You have fliped %s[%i]'s vehicle.", ReturnPlayerName(target), target);
  3745.         SendClientMessage(target, COLOR_DODGER_BLUE, string);
  3746.         format(string, sizeof(string), "admin %s[%i] has flipped your vehicle.", ReturnPlayerName(playerid), playerid);
  3747.         SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3748.     }
  3749.     else
  3750.     {
  3751.         if(! IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You must be in a vehicle to flip.");
  3752.  
  3753.         new Float:angle;
  3754.         GetVehicleZAngle(GetPlayerVehicleID(playerid), angle);
  3755.         SetVehicleZAngle(GetPlayerVehicleID(playerid), angle);
  3756.  
  3757.         GameTextForPlayer(target, "~b~~h~~h~~h~Vehicle Fliped", 5000, 3);
  3758.         PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  3759.  
  3760.         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have fliped your vehicle.");
  3761.         SendClientMessage(playerid, COLOR_KHAKI, "TIP: You can flip other player's vehicle by /flip [player].");
  3762.     }
  3763.     return 1;
  3764. }
  3765.  
  3766. CMD:ip(playerid, params[])
  3767. {
  3768.     //check if the player is a admin
  3769.     LevelCheck(playerid, 1);
  3770.  
  3771.     new target;
  3772.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /ip [player]");
  3773.  
  3774.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3775.  
  3776.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3777.  
  3778.     new string[144];
  3779.     format(string, sizeof(string), "%s[%i]'s IP: %s", ReturnPlayerName(target), target, ReturnPlayerIP(playerid));
  3780.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3781.     return 1;
  3782. }
  3783.  
  3784. CMD:spawn(playerid, params[])
  3785. {
  3786.     //check if the player is a admin
  3787.     LevelCheck(playerid, 1);
  3788.  
  3789.     new target;
  3790.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /spawn [player]");
  3791.  
  3792.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3793.  
  3794.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3795.  
  3796.     SpawnPlayer(target);
  3797.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  3798.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  3799.  
  3800.     new string[144];
  3801.     format(string, sizeof(string), "admin %s[%i] has re-spawned you.", ReturnPlayerName(playerid), playerid);
  3802.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  3803.     format(string, sizeof(string), "You have respawned %s[%i].", ReturnPlayerName(target), target);
  3804.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3805.     return 1;
  3806. }
  3807.  
  3808. CMD:goto(playerid, params[])
  3809. {
  3810.     //check if the player is a admin
  3811.     LevelCheck(playerid, 1);
  3812.  
  3813.     new target;
  3814.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /goto [player]");
  3815.  
  3816.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3817.  
  3818.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't teleport to yourself.");
  3819.  
  3820.     new Float:pos[3];
  3821.     GetPlayerPos(target, pos[0], pos[1], pos[2]);
  3822.     SetPlayerInterior(playerid, GetPlayerInterior(target));
  3823.     SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(target));
  3824.     if(GetPlayerState(playerid) == 2)
  3825.     {
  3826.         SetVehiclePos(GetPlayerVehicleID(playerid), pos[0] + 2.5, pos[1], pos[2]);
  3827.         LinkVehicleToInterior(GetPlayerVehicleID(playerid), GetPlayerInterior(target));
  3828.         SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), GetPlayerVirtualWorld(target));
  3829.     }
  3830.     else SetPlayerPos(playerid, pos[0] + 2.0, pos[1], pos[2]);
  3831.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  3832.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  3833.  
  3834.     new string[144];
  3835.     format(string, sizeof(string), "You have teleported to %s[%i]'s position.", ReturnPlayerName(target), target);
  3836.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3837.     return 1;
  3838. }
  3839.  
  3840. CMD:setweather(playerid, params[])
  3841. {
  3842.     //check if the player is a admin
  3843.     LevelCheck(playerid, 1);
  3844.  
  3845.     new target, id;
  3846.     if(sscanf(params, "ui", target, id)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setweather [player] [weatherid]");
  3847.  
  3848.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3849.  
  3850.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3851.  
  3852.     if(id < 0 || id > 45) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid weather id, must be b/w 0-45.");
  3853.  
  3854.     SetPlayerWeather(target, id);
  3855.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  3856.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  3857.  
  3858.     new string[144];
  3859.     format(string, sizeof(string), "admin %s[%i] has changed your weather to %i.", ReturnPlayerName(playerid), playerid, id);
  3860.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  3861.     format(string, sizeof(string), "You have cahnged %s[%i]'s weather to %i.", ReturnPlayerName(target), target, id);
  3862.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3863.     return 1;
  3864. }
  3865.  
  3866. CMD:settime(playerid, params[])
  3867. {
  3868.     //check if the player is a admin
  3869.     LevelCheck(playerid, 1);
  3870.  
  3871.     new target, id;
  3872.     if(sscanf(params, "ui", target, id)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /settime [player] [timeid]");
  3873.  
  3874.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3875.  
  3876.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3877.  
  3878.     if(id < 0 || id > 24) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid weather id, must be b/w 0-24.");
  3879.  
  3880.     SetPlayerTime(target, id, 0);
  3881.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  3882.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  3883.  
  3884.     new string[144];
  3885.     format(string, sizeof(string), "admin %s[%i] has changed your time to %i.", ReturnPlayerName(playerid), playerid, id);
  3886.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  3887.     format(string, sizeof(string), "You have cahnged %s[%i]'s time to %i.", ReturnPlayerName(target), target, id);
  3888.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3889.     return 1;
  3890. }
  3891.  
  3892. CMD:ann(playerid, params[])
  3893. {
  3894.     //check if the player is a admin
  3895.     LevelCheck(playerid, 1);
  3896.  
  3897.     new message[35];
  3898.     if(sscanf(params, "s[35]", message)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /ann [message]");
  3899.  
  3900.     GameTextForAll(message, 5000, 3);
  3901.     return 1;
  3902. }
  3903.  
  3904. CMD:kick(playerid, params[])
  3905. {
  3906.     //check if the player is a admin
  3907.     LevelCheck(playerid, 1);
  3908.  
  3909.     new target, reason[45];
  3910.     if(sscanf(params, "us[128]", target, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /kick [player] [reason]");
  3911.  
  3912.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3913.  
  3914.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3915.  
  3916.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't kick yourself.");
  3917.  
  3918.     new message[144];
  3919.     format(message, sizeof(message), "* %s[%i] has been kicked by admin %s[%i] [Reason: %s]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid, reason);
  3920.     SendClientMessageToAll(COLOR_RED, message);
  3921.  
  3922.     DelayKick(target);
  3923.     return 1;
  3924. }
  3925.  
  3926. CMD:asay(playerid, params[])
  3927. {
  3928.     //check if the player is a admin
  3929.     LevelCheck(playerid, 1);
  3930.  
  3931.     new message[135];
  3932.     if(sscanf(params, "s[135]", message)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /asay [message]");
  3933.  
  3934.     new string[144];
  3935.     format(string, sizeof(string), "Admin %s[%i]: %s", ReturnPlayerName(playerid), playerid, message);
  3936.     SendClientMessageToAll(COLOR_HOT_PINK, string);
  3937.     return 1;
  3938. }
  3939.  
  3940. //------------------------------------------------
  3941.  
  3942. //Admin level 2+
  3943. CMD:jetpack(playerid, params[])
  3944. {
  3945.     //check if the player is a admin
  3946.     LevelCheck(playerid, 2);
  3947.  
  3948.     new target;
  3949.     if( sscanf(params, "u", target) ||
  3950.         ! sscanf(params, "u", target) && playerid == target)
  3951.     {
  3952.         SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
  3953.         SendClientMessage(playerid, COLOR_DODGER_BLUE, "You have spawned a jetpack.");
  3954.         SendClientMessage(playerid, COLOR_KHAKI, "TIP: You can also give jetpack to players by /jetpack [player].");
  3955.         PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  3956.         return 1;
  3957.     }
  3958.  
  3959.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  3960.  
  3961.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  3962.  
  3963.     SetPlayerSpecialAction(target, SPECIAL_ACTION_USEJETPACK);
  3964.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  3965.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  3966.  
  3967.     new string[144];
  3968.     format(string, sizeof(string), "admin %s[%i] has given you a jetpack.", ReturnPlayerName(playerid), playerid);
  3969.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  3970.     format(string, sizeof(string), "You have given %s[%i] a jetpack.", ReturnPlayerName(target), target);
  3971.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3972.     return 1;
  3973. }
  3974.  
  3975. CMD:aka(playerid, params[])
  3976. {
  3977.     //check if the player is a admin
  3978.     LevelCheck(playerid, 2);
  3979.  
  3980.     new target;
  3981.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /aka [player]");
  3982.  
  3983.     new aka[15][MAX_PLAYER_NAME];
  3984.     if(! GetPlayerAKA(playerid, aka)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The player has no mulitple accounts.");
  3985.  
  3986.     new string[150];
  3987.     format(string, sizeof(string), "Search result for %s's AKA: [ip: %s]", ReturnPlayerName(target), ReturnPlayerIP(target));
  3988.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3989.     for(new i = 0, j = sizeof(aka); i < j; i++)
  3990.     {
  3991.         if(aka[i][0])
  3992.         {
  3993.             format(string, sizeof(string), "%i. %s", i, aka[i]);
  3994.             SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  3995.         }
  3996.     }
  3997.     return 1;
  3998. }
  3999.  
  4000. CMD:aweaps(playerid, params[])
  4001. {
  4002.     //check if the player is a admin
  4003.     LevelCheck(playerid, 2);
  4004.  
  4005.     GivePlayerWeapon(playerid, 9, 1);//chainsaw
  4006.     GivePlayerWeapon(playerid, 32, 999999);//tec-9
  4007.     GivePlayerWeapon(playerid, 16, 999999);//grenades
  4008.     GivePlayerWeapon(playerid, 24, 999999);//deagle
  4009.     GivePlayerWeapon(playerid, 26, 999999);//sawn off
  4010.     GivePlayerWeapon(playerid, 29, 999999);//mp5
  4011.     GivePlayerWeapon(playerid, 31, 999999);//m4
  4012.     GivePlayerWeapon(playerid, 34, 999999);//sniper
  4013.     GivePlayerWeapon(playerid, 38, 999999);//minigun
  4014.  
  4015.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4016.  
  4017.     GameTextForPlayer(playerid, "~b~~h~~h~~h~Weapons recieved", 5000, 3);
  4018.     return 1;
  4019. }
  4020.  
  4021. CMD:show(playerid, params[])
  4022. {
  4023.     //check if the player is a admin
  4024.     LevelCheck(playerid, 2);
  4025.  
  4026.     new target, message[35];
  4027.     if(sscanf(params, "us[35]", target, message)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /show [player] [message]");
  4028.  
  4029.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4030.  
  4031.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't show message to yourself.");
  4032.  
  4033.     GameTextForPlayer(target, message, 5000, 3);
  4034.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4035.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4036.  
  4037.     new string[144];
  4038.     format(string, sizeof(string), "admin %s[%i] has sent you a screen message.", ReturnPlayerName(playerid), playerid);
  4039.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4040.     format(string, sizeof(string), "You have sent %s[%i] a scren message.", ReturnPlayerName(target), target);
  4041.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4042.     return 1;
  4043. }
  4044.  
  4045. CMD:ann2(playerid, params[])
  4046. {
  4047.     //check if the player is a admin
  4048.     LevelCheck(playerid, 2);
  4049.  
  4050.     new style, expiretime, message[35];
  4051.     if(sscanf(params, "iis[35]", style, expiretime, message)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /ann2 [style] [expiretime] [message]");
  4052.  
  4053.     GameTextForAll(message, expiretime, style);
  4054.     return 1;
  4055. }
  4056.  
  4057. CMD:muted(playerid, params[])
  4058. {
  4059.     //check if the player is a admin
  4060.     LevelCheck(playerid, 2);
  4061.  
  4062.     new DIALOG[98+670], string[128], bool:count = false;
  4063.  
  4064.     LOOP_PLAYERS(i)
  4065.     {
  4066.         if(GetPVarType(i, "GAdmin_Muted") != PLAYER_VARTYPE_NONE)
  4067.         {
  4068.             format(string, sizeof(string), "%i. %s - Unmute in %i secs..", i, ReturnPlayerName(i), gUser[i][u_mutetime]);
  4069.             strcat(DIALOG, string);
  4070.             count = true;
  4071.         }
  4072.     }
  4073.     if(! count) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: No muted players in the server.");
  4074.     else
  4075.     {
  4076.         ShowPlayerDialog(playerid, DIALOG_COMMON, DIALOG_STYLE_LIST, "Muted players", DIALOG, "Close", "");
  4077.     }
  4078.     return 1;
  4079. }
  4080.  
  4081. CMD:jailed(playerid, params[])
  4082. {
  4083.     //check if the player is a admin
  4084.     LevelCheck(playerid, 2);
  4085.  
  4086.     new DIALOG[98+670], string[128], bool:count = false;
  4087.  
  4088.     LOOP_PLAYERS(i)
  4089.     {
  4090.         if(GetPVarType(i, "GAdmin_Jailed") != PLAYER_VARTYPE_NONE)
  4091.         {
  4092.             format(string, sizeof(string), "%i. %s - Unjail in %i secs..", i, ReturnPlayerName(i), gUser[i][u_jailtime]);
  4093.             strcat(DIALOG, string);
  4094.             count = true;
  4095.         }
  4096.     }
  4097.     if(! count) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: No jailed players in the server.");
  4098.     else
  4099.     {
  4100.         ShowPlayerDialog(playerid, DIALOG_COMMON, DIALOG_STYLE_LIST, "Jailed players", DIALOG, "Close", "");
  4101.     }
  4102.     return 1;
  4103. }
  4104.  
  4105. CMD:carhealth(playerid, params[])
  4106. {
  4107.     //check if the player is a admin
  4108.     LevelCheck(playerid, 2);
  4109.  
  4110.     new target, Float:amount;
  4111.     if(sscanf(params, "uf", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /carhealth [player] [amount]");
  4112.     else if(! sscanf(params, "f", amount)) target = playerid;
  4113.  
  4114.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4115.  
  4116.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4117.  
  4118.     if(! IsPlayerInAnyVehicle(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not in any vehicle.");
  4119.  
  4120.     SetVehicleHealth(GetPlayerVehicleID(target), amount);
  4121.     PlayerPlaySound(target, 1133, 0.0, 0.0, 0.0);
  4122.     PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  4123.  
  4124.     new string[144];
  4125.     format(string, sizeof(string), "admin %s[%i] has set your car's health to %0.2f.", ReturnPlayerName(playerid), playerid, amount);
  4126.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4127.     format(string, sizeof(string), "You have set %s[%i]'s car health to %.2f.", ReturnPlayerName(target), target, VehicleNames[GetVehicleModel(GetPlayerVehicleID(target)) - 400], amount);
  4128.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4129.     return 1;
  4130. }
  4131.  
  4132. CMD:eject(playerid, params[])
  4133. {
  4134.     //check if the player is a admin
  4135.     LevelCheck(playerid, 2);
  4136.  
  4137.     new target;
  4138.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /eject [player]");
  4139.  
  4140.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4141.  
  4142.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4143.  
  4144.     if(! IsPlayerInAnyVehicle(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not in any vehicle.");
  4145.  
  4146.     new Float:pos[3];
  4147.     GetPlayerPos(target, pos[0], pos[1], pos[2]);
  4148.     SetPlayerPos(target, pos[0], pos[1], pos[2] + 3.0);
  4149.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4150.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4151.  
  4152.     new string[144];
  4153.     format(string, sizeof(string), "admin %s[%i] has ejected you from your vehicle.", ReturnPlayerName(playerid), playerid);
  4154.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4155.     format(string, sizeof(string), "You have ejected %s[%i] from his vehicle.", ReturnPlayerName(target), target);
  4156.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4157.     return 1;
  4158. }
  4159.  
  4160. CMD:carpaint(playerid, params[])
  4161. {
  4162.     //check if the player is a admin
  4163.     LevelCheck(playerid, 2);
  4164.  
  4165.     new target, paint;
  4166.     if(sscanf(params, "ui", target, paint)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /carpaint [player] [paintjob]");
  4167.     else if(! sscanf(params, "i", paint)) target = playerid;
  4168.  
  4169.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4170.  
  4171.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4172.  
  4173.     if(! IsPlayerInAnyVehicle(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not in any vehicle.");
  4174.  
  4175.     if(paint < 0 || paint > 3) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid paintjob id, must be b/w 0-3.");
  4176.  
  4177.     ChangeVehiclePaintjob(GetPlayerVehicleID(target), paint);
  4178.     PlayerPlaySound(target, 1133, 0.0, 0.0, 0.0);
  4179.     PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  4180.  
  4181.     new string[144];
  4182.     format(string, sizeof(string), "admin %s[%i] has set your vehicle's paintjob id to %i.", ReturnPlayerName(playerid), playerid, paint);
  4183.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4184.     format(string, sizeof(string), "You have set %s[%i]'s vehicle's paintjob id to %i.", ReturnPlayerName(target), target, paint);
  4185.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4186.     return 1;
  4187. }
  4188.  
  4189. CMD:carcolor(playerid, params[])
  4190. {
  4191.     //check if the player is a admin
  4192.     LevelCheck(playerid, 2);
  4193.  
  4194.     new target, color[2];
  4195.     if(sscanf(params, "uiI(-1)", target, color[0], color[1])) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /carcolor [player] [color1] [*color2]");
  4196.     else if(! sscanf(params, "iI(-1)", color[0], color[1])) target = playerid;
  4197.  
  4198.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4199.  
  4200.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4201.  
  4202.     if(! IsPlayerInAnyVehicle(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not in any vehicle.");
  4203.  
  4204.     if(color[1] == -1) color[1] = random(256);//random color
  4205.     PlayerPlaySound(target, 1133, 0.0, 0.0, 0.0);
  4206.     PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  4207.  
  4208.     ChangeVehicleColor(GetPlayerVehicleID(target), color[0], color[1]);
  4209.  
  4210.     new string[144];
  4211.     format(string, sizeof(string), "admin %s[%i] has set your vehicle's color to %i & %i.", ReturnPlayerName(playerid), playerid, color[0], color[1]);
  4212.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4213.     format(string, sizeof(string), "You have set %s[%i]'s vehicle's paintjob to %i & %i.", ReturnPlayerName(target), target, color[0], color[1]);
  4214.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4215.     return 1;
  4216. }
  4217.  
  4218. CMD:givecar(playerid, params[])
  4219. {
  4220.     //check if the player is a admin
  4221.     LevelCheck(playerid, 2);
  4222.  
  4223.     new target, vehicle[32], model, color[2];
  4224.     if(sscanf(params, "us[32]I(-1)I(-1)", target, vehicle, color[0], color[1])) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /givecar [player] [vehicle] [*color1] [*color2]");
  4225.  
  4226.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4227.  
  4228.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4229.  
  4230.     if(IsNumericString(vehicle))    model = strval(vehicle);
  4231.     else                    model = GetVehicleModelIDFromName(vehicle);
  4232.  
  4233.     if(model < 400 || model > 611) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid vehicle model id, must be b/w 400-611.");
  4234.  
  4235.     new Float:pos[4];
  4236.     GetPlayerPos(target, pos[0], pos[1], pos[2]);
  4237.     GetPlayerFacingAngle(target, pos[3]);
  4238.  
  4239.     if(IsPlayerInAnyVehicle(target)) SetPlayerPos(target, pos[0] + 3.0, pos[1], pos[2]);//ejected!
  4240.  
  4241.     if(color[0] == -1) color[0] = random(256);
  4242.     if(color[1] == -1) color[1] = random(256);
  4243.  
  4244.     if(gUser[target][u_vehicle] != -1) EraseVeh(gUser[target][u_vehicle]);//delete previous vehicle
  4245.  
  4246.     gUser[target][u_vehicle] = CreateVehicle(model, pos[0] + 3.0, pos[1], pos[2], pos[3], color[0], color[1], -1);
  4247.     SetVehicleVirtualWorld(gUser[target][u_vehicle], GetPlayerVirtualWorld(target));
  4248.     LinkVehicleToInterior(gUser[target][u_vehicle], GetPlayerInterior(target));
  4249.     PutPlayerInVehicle(target, gUser[target][u_vehicle], 0);
  4250.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4251.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4252.  
  4253.     new string[144];
  4254.     format(string, sizeof(string), "admin %s[%i] has given you vehicle %s[model: %i], colors: %i & %i.", ReturnPlayerName(playerid), playerid, VehicleNames[model - 400], model, color[0], color[1]);
  4255.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4256.     format(string, sizeof(string), "You have given %s[%i] vehicle %s[model: %i], colors: %i & %i.", ReturnPlayerName(target), target, VehicleNames[model - 400], model, color[0], color[1]);
  4257.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4258.     return 1;
  4259. }
  4260.  
  4261. CMD:car(playerid, params[])
  4262. {
  4263.     //check if the player is a admin
  4264.     LevelCheck(playerid, 2);
  4265.  
  4266.     new vehicle[32], model, color[2];
  4267.     if(sscanf(params, "s[32]I(-1)I(-1)", vehicle, color[0], color[1])) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /car [vehicle] [*color1] [*color2]");
  4268.  
  4269.     if(IsNumericString(vehicle))    model = strval(vehicle);
  4270.     else                    model = GetVehicleModelIDFromName(vehicle);
  4271.  
  4272.     if(model < 400 || model > 611) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid vehicle model id, must be b/w 400-611.");
  4273.  
  4274.     new Float:pos[4];
  4275.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  4276.     GetPlayerFacingAngle(playerid, pos[3]);
  4277.  
  4278.     if(IsPlayerInAnyVehicle(playerid)) SetPlayerPos(playerid, pos[0] + 3.0, pos[1], pos[2]);//ejected!
  4279.  
  4280.     if(color[0] == -1) color[0] = random(256);
  4281.     if(color[1] == -1) color[1] = random(256);
  4282.  
  4283.     if(gUser[playerid][u_vehicle] != -1) EraseVeh(gUser[playerid][u_vehicle]);//delete previous vehicle
  4284.  
  4285.     gUser[playerid][u_vehicle] = CreateVehicle(model, pos[0] + 3.0, pos[1], pos[2], pos[3], color[0], color[1], -1);
  4286.     SetVehicleVirtualWorld(gUser[playerid][u_vehicle], GetPlayerVirtualWorld(playerid));
  4287.     LinkVehicleToInterior(gUser[playerid][u_vehicle], GetPlayerInterior(playerid));
  4288.     PutPlayerInVehicle(playerid, gUser[playerid][u_vehicle], 0);
  4289.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4290.  
  4291.     new string[144];
  4292.     format(string, sizeof(string), "You have spawned a vehicle %s[model: %i], colors: %i & %i.", VehicleNames[model - 400], model, color[0], color[1]);
  4293.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4294.     return 1;
  4295. }
  4296.  
  4297. CMD:akill(playerid, params[])
  4298. {
  4299.     //check if the player is a admin
  4300.     LevelCheck(playerid, 2);
  4301.  
  4302.     new target, reason[128];
  4303.     if(sscanf(params, "uS(No reason specified)[128]", target, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /akill [player] [*reason]");
  4304.  
  4305.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4306.  
  4307.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4308.  
  4309.     SetPlayerHealth(target, 0.0);
  4310.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4311.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4312.  
  4313.     new string[144];
  4314.     format(string, sizeof(string), "* %s[%i] was killed by admin %s[%i] [Reason: %s]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid, reason);
  4315.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  4316.     return 1;
  4317. }
  4318.  
  4319. CMD:jail(playerid, params[])
  4320. {
  4321.     //check if the player is a admin
  4322.     LevelCheck(playerid, 2);
  4323.  
  4324.     new target, time, reason[128];
  4325.     if(sscanf(params, "uI(60)S(No reason specified)[128]", target, time, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /jail [player] [*seconds] [*reason]");
  4326.  
  4327.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4328.  
  4329.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4330.  
  4331.     if(time > 5*60 || time < 10) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The jail time must be b/w 10 - 360(5 minutes) seconds.");
  4332.  
  4333.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot jail yourself.");
  4334.  
  4335.     if(GetPVarType(target, "GAdmin_Jailed") != PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is already in jail.");
  4336.  
  4337.     SetPVarInt(target, "GAdmin_Jailed", 1);
  4338.  
  4339.     gUser[target][u_jailtime] = time;
  4340.     JailPlayer(target);
  4341.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4342.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4343.  
  4344.     new string[144];
  4345.     format(string, sizeof(string), "* %s[%i] has been jailed by admin %s[%i] for %i seconds [Reason: %s]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid, time, reason);
  4346.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  4347.     format(string, sizeof(string), "~b~~h~~h~~h~Jailed for %i secs", time);
  4348.     GameTextForPlayer(target, string, 5000, 3);
  4349.     return 1;
  4350. }
  4351.  
  4352. CMD:unjail(playerid, params[])
  4353. {
  4354.     //check if the player is a admin
  4355.     LevelCheck(playerid, 2);
  4356.  
  4357.     new target;
  4358.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /unjail [player]");
  4359.  
  4360.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4361.  
  4362.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4363.  
  4364.     if(GetPVarType(target, "GAdmin_Jailed") == PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is not in jail.");
  4365.  
  4366.     DeletePVar(target, "GAdmin_Jailed");
  4367.  
  4368.     gUser[target][u_jailtime] = 0;
  4369.     SpawnPlayer(target);
  4370.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4371.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4372.  
  4373.     new string[144];
  4374.     format(string, sizeof(string), "* %s[%i] has been unjailed by admin %s[%i]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid);
  4375.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  4376.     GameTextForPlayer(target, "~b~~h~~h~~h~Unjailed", 5000, 3);
  4377.     return 1;
  4378. }
  4379.  
  4380. CMD:mute(playerid, params[])
  4381. {
  4382.     //check if the player is a admin
  4383.     LevelCheck(playerid, 2);
  4384.  
  4385.     new target, time, reason[128];
  4386.     if(sscanf(params, "uI(60)S(No reason specified)[128]", target, time, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /mute [player] [*seconds] [*reason]");
  4387.  
  4388.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4389.  
  4390.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4391.  
  4392.     if(time > 5*60 || time < 10) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The mute time must be b/w 10 - 360(5 minutes) seconds.");
  4393.  
  4394.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot mute yourself.");
  4395.  
  4396.     if(GetPVarType(target, "GAdmin_Muted") != PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is already in muted.");
  4397.  
  4398.     SetPVarInt(target, "GAdmin_Muted", 1);
  4399.  
  4400.     gUser[target][u_mutetime] = time;
  4401.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4402.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4403.  
  4404.     new string[144];
  4405.     format(string, sizeof(string), "* %s[%i] has been muted by admin %s[%i] for %i seconds [Reason: %s]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid, time, reason);
  4406.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  4407.     format(string, sizeof(string), "~b~~h~~h~~h~Muted for %i secs", time);
  4408.     GameTextForPlayer(target, string, 5000, 3);
  4409.     return 1;
  4410. }
  4411.  
  4412. CMD:unmute(playerid, params[])
  4413. {
  4414.     //check if the player is a admin
  4415.     LevelCheck(playerid, 2);
  4416.  
  4417.     new target;
  4418.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /unmute [player]");
  4419.  
  4420.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4421.  
  4422.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4423.  
  4424.     if(GetPVarType(target, "GAdmin_Muted") == PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is not muted.");
  4425.  
  4426.     DeletePVar(playerid, "GAdmin_Muted");
  4427.  
  4428.     gUser[target][u_mutetime] = 0;
  4429.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4430.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4431.  
  4432.     new string[144];
  4433.     format(string, sizeof(string), "* %s[%i] has been unmuted by admin %s[%i]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid);
  4434.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  4435.     GameTextForPlayer(target, "~b~~h~~h~~h~Unmuted", 5000, 3);
  4436.     return 1;
  4437. }
  4438.  
  4439. CMD:atele(playerid, params[])
  4440. {
  4441.     //check if the player is a admin
  4442.     LevelCheck(playerid, 2);
  4443.  
  4444.     ShowPlayerDialog(playerid, DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "Select City", "Los Santos\nSan Fierro\nLas Venturas", "Select", "Close");
  4445.     return 1;
  4446. }
  4447.  
  4448. CMD:setskin(playerid, params[])
  4449. {
  4450.     //check if the player is a admin
  4451.     LevelCheck(playerid, 2);
  4452.  
  4453.     new target, skin;
  4454.  
  4455.     if(sscanf(params, "ui", target, skin)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setskin [player] [skinid]");
  4456.  
  4457.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4458.  
  4459.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4460.  
  4461.     if(skin < 0 || skin == 74 || skin > 299) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid skin id, must be b/w 0 - 299 (except 74).");
  4462.  
  4463.     SetPlayerSkin(target, skin);
  4464.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4465.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4466.  
  4467.     new string[144];
  4468.     format(string, sizeof(string), "Admin %s[%i] has set your skin id to %i.", ReturnPlayerName(playerid), playerid, skin);
  4469.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4470.     format(string, sizeof(string), "You have set %s[%i]'s skin id to %i.", ReturnPlayerName(target), target, skin);
  4471.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4472.     return 1;
  4473. }
  4474.  
  4475. CMD:cc(playerid, params[])
  4476. {
  4477.     //check if the player is a admin
  4478.     LevelCheck(playerid, 2);
  4479.  
  4480.     for(new i; i < 250; i++) SendClientMessageToAll(-1, " ") && PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  4481.  
  4482.     new string[144];
  4483.     format(string, sizeof(string), "admin %s[%i] has cleared all chat.", ReturnPlayerName(playerid), playerid);
  4484.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  4485.     return 1;
  4486. }
  4487.  
  4488. CMD:aheal(playerid, params[])
  4489. {
  4490.     //check if the player is a admin
  4491.     LevelCheck(playerid, 2);
  4492.  
  4493.     new target;
  4494.  
  4495.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /heal [player]");
  4496.  
  4497.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4498.  
  4499.     SetPlayerHealth(target, 100.0);
  4500.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4501.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4502.  
  4503.     new string[144];
  4504.     format(string, sizeof(string), "admin %s[%i] has healed you.", ReturnPlayerName(playerid), playerid);
  4505.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4506.     format(string, sizeof(string), "You have healed %s[%i].", ReturnPlayerName(target), target);
  4507.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4508.     return 1;
  4509. }
  4510.  
  4511. CMD:aarmour(playerid, params[])
  4512. {
  4513.     //check if the player is a admin
  4514.     LevelCheck(playerid, 2);
  4515.  
  4516.     new target;
  4517.  
  4518.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /armour [player]");
  4519.  
  4520.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4521.  
  4522.     SetPlayerArmour(target, 100.0);
  4523.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4524.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4525.  
  4526.     new string[144];
  4527.     format(string, sizeof(string), "admin %s[%i] has armoured you.", ReturnPlayerName(playerid), playerid);
  4528.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4529.     format(string, sizeof(string), "You have armoured %s[%i].", ReturnPlayerName(target), target);
  4530.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4531.     return 1;
  4532. }
  4533.  
  4534. CMD:setinterior(playerid, params[])
  4535. {
  4536.     //check if the player is a admin
  4537.     LevelCheck(playerid, 2);
  4538.  
  4539.     new target, id;
  4540.     if(sscanf(params, "ui", target, id)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setinterior [player] [interior]");
  4541.  
  4542.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4543.  
  4544.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4545.  
  4546.     SetPlayerInterior(target, id);
  4547.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4548.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4549.  
  4550.     new string[144];
  4551.     format(string, sizeof(string), "Admin %s[%i] has set your interior id to %i.", ReturnPlayerName(playerid), playerid, id);
  4552.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4553.     format(string, sizeof(string), "You have set %s[%i]'s interior id to %i.", ReturnPlayerName(target), target, id);
  4554.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4555.     return 1;
  4556. }
  4557.  
  4558. CMD:setworld(playerid, params[])
  4559. {
  4560.     //check if the player is a admin
  4561.     LevelCheck(playerid, 2);
  4562.  
  4563.     new target, id;
  4564.     if(sscanf(params, "ui", target, id)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setworld [player] [worldid]");
  4565.  
  4566.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4567.  
  4568.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4569.  
  4570.     SetPlayerVirtualWorld(target, id);
  4571.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4572.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4573.  
  4574.     new string[144];
  4575.     format(string, sizeof(string), "Admin %s[%i] has set your virtual world id to %i.", ReturnPlayerName(playerid), playerid, id);
  4576.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4577.     format(string, sizeof(string), "You have set %s[%i]'s virtual world id to %i.", ReturnPlayerName(target), target, id);
  4578.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4579.     return 1;
  4580. }
  4581.  
  4582. CMD:explode(playerid, params[])
  4583. {
  4584.     //check if the player is a admin
  4585.     LevelCheck(playerid, 2);
  4586.  
  4587.     new target;
  4588.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /explode [player]");
  4589.  
  4590.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4591.  
  4592.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4593.  
  4594.     new Float:pos[3];
  4595.     GetPlayerPos(target, pos[0], pos[1], pos[2]);
  4596.     CreateExplosion(pos[0], pos[1], pos[2], 7, 1.00);
  4597.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4598.  
  4599.     new string[144];
  4600.     format(string, sizeof(string), "You have made an explosion on %s[%i]'s position.", ReturnPlayerName(target), target);
  4601.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4602.     return 1;
  4603. }
  4604.  
  4605. CMD:disarm(playerid, params[])
  4606. {
  4607.     //check if the player is a admin
  4608.     LevelCheck(playerid, 2);
  4609.  
  4610.     new target;
  4611.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /disarm [player]");
  4612.  
  4613.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4614.  
  4615.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4616.  
  4617.     ResetPlayerWeapons(target);
  4618.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4619.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4620.  
  4621.     new string[144];
  4622.     format(string, sizeof(string), "admin %s[%i] has disarmed you.", ReturnPlayerName(playerid), playerid);
  4623.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  4624.     format(string, sizeof(string), "You have disarmed %s[%i].", ReturnPlayerName(target), target);
  4625.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  4626.     return 1;
  4627. }
  4628.  
  4629. ShowPlayerTuneDialog(playerid)
  4630. {
  4631.     ShowPlayerDialog(   playerid,
  4632.                         DIALOG_MAIN,
  4633.                         DIALOG_STYLE_LIST,
  4634.                         "Vehicle tuning:",
  4635.                         "Paint Jobs\n\
  4636.                         Colors\n\
  4637.                         Hoods\n\
  4638.                         Vents\n\
  4639.                         Lights\n\
  4640.                         Exhausts\n\
  4641.                         Front Bumpers\n\
  4642.                         Rear Bumpers\n\
  4643.                         Roofs\n\
  4644.                         Spoilers\n\
  4645.                         Side Skirts\n\
  4646.                         Bullbars\n\
  4647.                         Wheels\n\
  4648.                         Car Stereo\n\
  4649.                         Hydraulics\n\
  4650.                         Nitrous Oxide\n\
  4651.                         Repair Car",
  4652.                         "Enter",
  4653.                         "Close"
  4654.                     );
  4655.     return true;
  4656. }
  4657.  
  4658. CMD:tune(playerid, params[])
  4659. {
  4660.     //check if the player is a admin
  4661.     LevelCheck(playerid, 2);
  4662.  
  4663.     if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You must be in a vehicle as driver.");
  4664.  
  4665.     ShowPlayerTuneDialog(playerid);
  4666.     return 1;
  4667. }
  4668.  
  4669. CMD:ban(playerid, params[])
  4670. {
  4671.     //check if the player is a admin
  4672.     LevelCheck(playerid, 2);
  4673.  
  4674.     new target, reason[35], days;
  4675.     if(sscanf(params, "is[35]I(0)", target, reason, days)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /ban [player] [reason] [*days]");
  4676.  
  4677.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4678.  
  4679.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't ban yourself.");
  4680.  
  4681.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4682.  
  4683.     if(days < 0) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid days, must be greater than 0 for temp ban, or 0 for permanent ban.");
  4684.  
  4685.     if(strlen(reason) < 3 || strlen(reason) > 35) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid reason length, must be b/w 0-35 characters.");
  4686.  
  4687.     new bandate[18], date[3], time;
  4688.     getdate(date[0], date[1], date[2]);
  4689.     format(bandate, sizeof(bandate), "%02i/%02i/%i", date[2], date[1], date[0]);
  4690.  
  4691.     if(days == 0) time = 0;
  4692.     else time = ((days * 24 * 60 * 60) + gettime());
  4693.  
  4694.     DB::CreateRow(gGlobal[s_bantable], "name", ReturnPlayerName(target));
  4695.     new bankey = DB::RetrieveKey(gGlobal[s_bantable], "name", ReturnPlayerName(target));
  4696.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "ip", ReturnPlayerIP(target));
  4697.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "banby", ReturnPlayerName(playerid));
  4698.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "banon", bandate);
  4699.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "reason", reason);
  4700.     DB::SetIntEntry(gGlobal[s_bantable], bankey, "expire", time);
  4701.  
  4702.     if(days == 0)
  4703.     {
  4704.         new string[144];
  4705.         format(string, sizeof(string), "* %s[%i] has been banned by admin %s[%d] [Reason: %s]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid, reason);
  4706.         SendClientMessage(target, COLOR_RED, string);
  4707.     }
  4708.     else
  4709.     {
  4710.         new string[144];
  4711.         format(string, sizeof(string), "* %s[%i] has been temp banned by admin %s[%d] [Reason: %s]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid, reason);
  4712.         SendClientMessage(target, COLOR_RED, string);
  4713.         format(string, sizeof(string), "* Banned for %i days [Unban on %s]", days, ConvertTime(time));
  4714.         SendClientMessage(target, COLOR_RED, string);
  4715.     }
  4716.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  4717.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4718.  
  4719.     DelayKick(target);
  4720.     return 1;
  4721. }
  4722.  
  4723. CMD:oban(playerid, params[])
  4724. {
  4725.     //check if the player is a admin
  4726.     LevelCheck(playerid, 2);
  4727.  
  4728.     new name[MAX_PLAYER_NAME], reason[35], days;
  4729.     if(sscanf(params, "s[24]s[35]I(0)", name, reason, days)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /oban [username] [reason] [*days]");
  4730.  
  4731.     if(! strcmp(name, ReturnPlayerName(playerid))) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't ban yourself.");
  4732.  
  4733.     LOOP_PLAYERS(i)
  4734.     {
  4735.         if(! strcmp(name, ReturnPlayerName(i), false))
  4736.         {
  4737.             return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified username is online. Try /ban instead.");
  4738.         }
  4739.     }
  4740.  
  4741.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", name);
  4742.     if(key != DB_INVALID_KEY)
  4743.     {
  4744.         if(GetPlayerGAdminLevel(playerid) < DB::GetIntEntry(gGlobal[s_usertable], key, "admin")) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4745.     }
  4746.     else return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The username doesn't exist in the database.");
  4747.  
  4748.     key = DB::RetrieveKey(gGlobal[s_bantable], "name", name);
  4749.     if(key != DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified user is already banned.");
  4750.  
  4751.     if(days < 0) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid days, must be greater than 0 for temp ban, or 0 for permanent ban.");
  4752.  
  4753.     if(strlen(reason) < 3 || strlen(reason) > 35) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid reason length, must be b/w 0-35 characters.");
  4754.  
  4755.     new bandate[18], date[3], time;
  4756.     getdate(date[0], date[1], date[2]);
  4757.     format(bandate, sizeof(bandate), "%02i/%02i/%i", date[2], date[1], date[0]);
  4758.  
  4759.     if(days == 0) time = 0;
  4760.     else time = ((days * 24 * 60 * 60) + gettime());
  4761.  
  4762.     DB::CreateRow(gGlobal[s_bantable], "name", name);
  4763.     new bankey = DB::RetrieveKey(gGlobal[s_bantable], "name", name);
  4764.     new ip[18];
  4765.     DB::GetStringEntry(gGlobal[s_usertable], DB::RetrieveKey(gGlobal[s_usertable], "username", name), "ip", ip);
  4766.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "ip", ip);
  4767.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "banby", ReturnPlayerName(playerid));
  4768.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "banon", bandate);
  4769.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "reason", reason);
  4770.     DB::SetIntEntry(gGlobal[s_bantable], bankey, "expire", time);
  4771.  
  4772.     if(days == 0)
  4773.     {
  4774.         new string[144];
  4775.         format(string, sizeof(string), "* %s has been offline banned by admin %s[%d] [Reason: %s]", name, ReturnPlayerName(playerid), playerid, reason);
  4776.         SendClientMessageToAll(COLOR_RED, string);
  4777.     }
  4778.     else
  4779.     {
  4780.         new string[144];
  4781.         format(string, sizeof(string), "* %s has been offline temp banned by admin %s[%d] [Reason: %s]", name, ReturnPlayerName(playerid), playerid, reason);
  4782.         SendClientMessageToAll(COLOR_RED, string);
  4783.         format(string, sizeof(string), "* Banned for %i days [Unban on %s]", days, ConvertTime(time));
  4784.         SendClientMessageToAll(COLOR_RED, string);
  4785.     }
  4786.  
  4787.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  4788.     return 1;
  4789. }
  4790.  
  4791. CMD:searchban(playerid, params[])
  4792. {
  4793.     //check if the player is a admin
  4794.     LevelCheck(playerid, 2);
  4795.  
  4796.     new name[MAX_PLAYER_NAME];
  4797.     if(sscanf(params,"s[24]", name)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /searchban [name]");
  4798.  
  4799.     new bankey = DB::RetrieveKey(gGlobal[s_bantable], "name", name);
  4800.     if(bankey == DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified username is not banned.");
  4801.  
  4802.     new str[100];
  4803.     new DIALOG[676];
  4804.     new string[156];
  4805.     //search result base !:D!
  4806.     format(string, sizeof(string), ""SAMP_BLUE"Search ban results for %s:\n\n", name);
  4807.     strcat(DIALOG, string);
  4808.     //user ip
  4809.     DB::GetStringEntry(gGlobal[s_bantable], bankey, "ip", str);
  4810.     format(string, sizeof(string), ""WHITE"IP: "MARONE"%s\n", str);
  4811.     strcat(DIALOG, string);
  4812.     //admin name
  4813.     DB::GetStringEntry(gGlobal[s_bantable], bankey, "banby", str);
  4814.     format(string, sizeof(string), ""WHITE"Banned by: "MARONE"%s\n", str);
  4815.     strcat(DIALOG, string);
  4816.     //reason
  4817.     DB::GetStringEntry(gGlobal[s_bantable], bankey, "reason", str);
  4818.     format(string, sizeof(string), ""WHITE"Reason: "MARONE"%s\n", str);
  4819.     strcat(DIALOG, string);
  4820.     //ban date
  4821.     DB::GetStringEntry(gGlobal[s_bantable], bankey, "banon", str);
  4822.     format(string, sizeof(string), ""WHITE"Ban date: "MARONE"%s\n", str);
  4823.     strcat(DIALOG, string);
  4824.     //expire time
  4825.     new val = DB::GetIntEntry(gGlobal[s_bantable], bankey, "expire");
  4826.     new expire[68];
  4827.     if(val == 0) expire = "PERMANENT";
  4828.     else expire = ConvertTime(val);
  4829.     format(string, sizeof(string), ""WHITE"Expiration timeleft: "MARONE"%s\n", expire);
  4830.     strcat(DIALOG, string);
  4831.  
  4832.     //show BAN stats in dialog
  4833.     ShowPlayerDialog(   playerid,
  4834.                         DIALOG_COMMON,
  4835.                         DIALOG_STYLE_MSGBOX,
  4836.                         "Search-Ban results",
  4837.                         DIALOG,
  4838.                         "Close",
  4839.                         "");
  4840.     return 1;
  4841. }
  4842.  
  4843. CMD:searchipban(playerid, params[])
  4844. {
  4845.     //check if the player is a admin
  4846.     LevelCheck(playerid, 2);
  4847.  
  4848.     new ip[18];
  4849.     if(sscanf(params,"s[18]", ip)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /searchipban [ip]");
  4850.  
  4851.     new bankey = DB::RetrieveKey(gGlobal[s_bantable], "ip", ip);
  4852.     if(bankey == DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified ip is not banned.");
  4853.  
  4854.     new str[100];
  4855.     new DIALOG[676];
  4856.     new string[144];
  4857.     //search result base !:D!
  4858.     format(string, sizeof(string), ""SAMP_BLUE"Search ban results for ip %s:\n\n", ip);
  4859.     strcat(DIALOG, string);
  4860.     //user name
  4861.     DB::GetStringEntry(gGlobal[s_bantable], bankey, "name", str);
  4862.     format(string, sizeof(string), ""WHITE"Username: "MARONE"%s\n", str);
  4863.     strcat(DIALOG, string);
  4864.     //admin name
  4865.     DB::GetStringEntry(gGlobal[s_bantable], bankey, "banby", str);
  4866.     format(string, sizeof(string), ""WHITE"Banned by: "MARONE"%s\n", str);
  4867.     strcat(DIALOG, string);
  4868.     //reason
  4869.     DB::GetStringEntry(gGlobal[s_bantable], bankey, "reason", str);
  4870.     format(string, sizeof(string), ""WHITE"Reason: "MARONE"%s\n", str);
  4871.     strcat(DIALOG, string);
  4872.     //ban date
  4873.     DB::GetStringEntry(gGlobal[s_bantable], bankey, "banon", str);
  4874.     format(string, sizeof(string), ""WHITE"Ban date: "MARONE"%s\n", str);
  4875.     strcat(DIALOG, string);
  4876.     //expire time
  4877.     new val = DB::GetIntEntry(gGlobal[s_bantable], bankey, "expire");
  4878.     new expire[68];
  4879.     if(val == 0) expire = "PERMANENT";
  4880.     else expire = ConvertTime(val);
  4881.     format(string, sizeof(string), ""WHITE"Expiration timeleft: "MARONE"%s\n", expire);
  4882.     strcat(DIALOG, string);
  4883.  
  4884.     //show BAN stats in dialog
  4885.     ShowPlayerDialog(   playerid,
  4886.                         DIALOG_COMMON,
  4887.                         DIALOG_STYLE_MSGBOX,
  4888.                         "Search-Ban results",
  4889.                         DIALOG,
  4890.                         "Close",
  4891.                         "");
  4892.     return 1;
  4893. }
  4894.  
  4895. CMD:searchrangeban(playerid, params[])
  4896. {
  4897.     //check if the player is a admin
  4898.     LevelCheck(playerid, 2);
  4899.  
  4900.     new ip[18];
  4901.     if(sscanf(params,"s[18]", ip)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /searchrangeban [ip]");
  4902.  
  4903.     new bankey = DB_INVALID_KEY;
  4904.     for(new i = 1, j = DB::GetHighestRegisteredKey(gGlobal[s_rangebantable]); i <= j; i++)
  4905.     {
  4906.         new range[18];
  4907.         DB::GetStringEntry(gGlobal[s_rangebantable], i, "ip", range);
  4908.         if(ipmatch(ip, range))
  4909.         {
  4910.             bankey = i;
  4911.             break;
  4912.         }
  4913.     }
  4914.     if(bankey == DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified ip is not banned.");
  4915.  
  4916.     new str[100];
  4917.     new DIALOG[676];
  4918.     new string[144];
  4919.     //search result base !:D!
  4920.     format(string, sizeof(string), ""SAMP_BLUE"Search range ban results for ip %s:\n\n", ip);
  4921.     strcat(DIALOG, string);
  4922.     //user name
  4923.     DB::GetStringEntry(gGlobal[s_rangebantable], bankey, "ip", str);
  4924.     format(string, sizeof(string), ""WHITE"I.P. Banned: "MARONE"%s\n", str);
  4925.     strcat(DIALOG, string);
  4926.     //admin name
  4927.     DB::GetStringEntry(gGlobal[s_rangebantable], bankey, "banby", str);
  4928.     format(string, sizeof(string), ""WHITE"Banned by: "MARONE"%s\n", str);
  4929.     strcat(DIALOG, string);
  4930.     //reason
  4931.     DB::GetStringEntry(gGlobal[s_rangebantable], bankey, "reason", str);
  4932.     format(string, sizeof(string), ""WHITE"Reason: "MARONE"%s\n", str);
  4933.     strcat(DIALOG, string);
  4934.     //ban date
  4935.     DB::GetStringEntry(gGlobal[s_rangebantable], bankey, "banon", str);
  4936.     format(string, sizeof(string), ""WHITE"Ban date: "MARONE"%s\n", str);
  4937.     strcat(DIALOG, string);
  4938.     //expire time
  4939.     new val = DB::GetIntEntry(gGlobal[s_rangebantable], bankey, "expire");
  4940.     new expire[68];
  4941.     if(val == 0) expire = "PERMANENT";
  4942.     else expire = ConvertTime(val);
  4943.     format(string, sizeof(string), ""WHITE"Expiration timeleft: "MARONE"%s\n", expire);
  4944.     strcat(DIALOG, string);
  4945.  
  4946.     //show BAN stats in dialog
  4947.     ShowPlayerDialog(   playerid,
  4948.                         DIALOG_COMMON,
  4949.                         DIALOG_STYLE_MSGBOX,
  4950.                         "Search-Rangeban results",
  4951.                         DIALOG,
  4952.                         "Close",
  4953.                         "");
  4954.     return 1;
  4955. }
  4956.  
  4957. CMD:unban(playerid, params[])
  4958. {
  4959.     //check if the player is a admin
  4960.     LevelCheck(playerid, 2);
  4961.  
  4962.     new name[MAX_PLAYER_NAME];
  4963.     if(sscanf(params,"s[24]", name)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /unban [name]");
  4964.  
  4965.     new bankey = DB::RetrieveKey(gGlobal[s_bantable], "name", name);
  4966.     if(bankey == DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified username is not banned.");
  4967.  
  4968.     DB::DeleteRow(gGlobal[s_bantable], bankey);
  4969.  
  4970.     new string[144];
  4971.     format(string, sizeof(string), "* You have unbanned user %s successfully.", name);
  4972.     SendClientMessage(playerid, COLOR_GREEN, string);
  4973.     return 1;
  4974. }
  4975.  
  4976. //------------------------------------------------
  4977.  
  4978. //Admin level 3+
  4979. CMD:get(playerid, params[])
  4980. {
  4981.     //check if the player is a admin
  4982.     LevelCheck(playerid, 3);
  4983.  
  4984.     new target;
  4985.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /get [player]");
  4986.  
  4987.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  4988.  
  4989.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot get yourself.");
  4990.  
  4991.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  4992.  
  4993.     new Float:pos[3];
  4994.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  4995.     if(GetPlayerState(target) == PLAYER_STATE_DRIVER)
  4996.     {
  4997.         SetVehiclePos(GetPlayerVehicleID(target), pos[0] + 3.0, pos[1], pos[2]);
  4998.         LinkVehicleToInterior(GetPlayerVehicleID(target), GetPlayerInterior(playerid));
  4999.         SetVehicleVirtualWorld(GetPlayerVehicleID(target), GetPlayerVirtualWorld(playerid));
  5000.     }
  5001.     else
  5002.     {
  5003.         SetPlayerPos(target, pos[0] + 2.5, pos[1], pos[2]);
  5004.     }
  5005.     SetPlayerInterior(target, GetPlayerInterior(playerid));
  5006.     SetPlayerVirtualWorld(target, GetPlayerVirtualWorld(playerid));
  5007.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5008.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5009.  
  5010.     new string[144];
  5011.     format(string, sizeof(string), "admin %s[%i] has teleported you to his/her position.", ReturnPlayerName(playerid), playerid);
  5012.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5013.     format(string, sizeof(string), "You have teleport %s[%i] to your position.", ReturnPlayerName(target), target);
  5014.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5015.     return 1;
  5016. }
  5017.  
  5018. CMD:write(playerid, params[])
  5019. {
  5020.     //check if the player is a admin
  5021.     LevelCheck(playerid, 3);
  5022.  
  5023.     new text[144], color;
  5024.     if(sscanf(params, "s[144]I(1)", text, color))
  5025.     {
  5026.         SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /write [text] [*color]");
  5027.         SendClientMessage(playerid, COLOR_THISTLE, "COLOR: [0]Black, [1]White, [2]Red, [3]Orange, [4]Yellow, [5]Green, [6]Blue, [7]Purple, [8]Brown, [9]Pink");
  5028.         return 1;
  5029.     }
  5030.  
  5031.     if(color > 9 || color > 0)
  5032.     {
  5033.         SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid color id, must be b/w 0-9.");
  5034.         SendClientMessage(playerid, COLOR_THISTLE, "COLOR: [0]Black, [1]White, [2]Red, [3]Orange, [4]Yellow, [5]Green, [6]Blue, [7]Purple, [8]Brown, [9]Pink");
  5035.         return 1;
  5036.     }
  5037.  
  5038.     switch(color)
  5039.     {
  5040.         case 0: color = COLOR_BLACK;
  5041.         case 1: color = COLOR_WHITE;
  5042.         case 2: color = COLOR_RED;
  5043.         case 3: color = COLOR_ORANGE;
  5044.         case 4: color = COLOR_YELLOW;
  5045.         case 5: color = COLOR_GREEN;
  5046.         case 6: color = COLOR_BLUE;
  5047.         case 7: color = COLOR_PURPLE;
  5048.         case 8: color = COLOR_BROWN;
  5049.         case 9: color = COLOR_PINK;
  5050.     }
  5051.     SendClientMessageToAll(color, text);
  5052.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5053.     return 1;
  5054. }
  5055.  
  5056. CMD:force(playerid, params[])
  5057. {
  5058.     //check if the player is a admin
  5059.     LevelCheck(playerid, 3);
  5060.  
  5061.     new target;
  5062.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /force [player]");
  5063.  
  5064.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5065.  
  5066.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5067.  
  5068.     SetPlayerHealth(target, 0.0);
  5069.     ForceClassSelection(target);
  5070.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5071.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5072.  
  5073.     new string[144];
  5074.     format(string, sizeof(string), "admin %s[%i] has forced you to class selection.", ReturnPlayerName(playerid), playerid);
  5075.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5076.     format(string, sizeof(string), "You have forced %s[%i] to class selection.", ReturnPlayerName(target), target);
  5077.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5078.     return 1;
  5079. }
  5080.  
  5081. CMD:healall(playerid, params[])
  5082. {
  5083.     //check if the player is a admin
  5084.     LevelCheck(playerid, 3);
  5085.  
  5086.     LOOP_PLAYERS(i) SetPlayerHealth(i, 100.0) && PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  5087.  
  5088.     new string[144];
  5089.     format(string, sizeof(string), "* admin %s[%i] has healed all players.", ReturnPlayerName(playerid), playerid);
  5090.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  5091.     return 1;
  5092. }
  5093.  
  5094. CMD:armourall(playerid, params[])
  5095. {
  5096.     //check if the player is a admin
  5097.     LevelCheck(playerid, 3);
  5098.  
  5099.     LOOP_PLAYERS(i) SetPlayerArmour(i, 100.0) && PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  5100.  
  5101.     new string[144];
  5102.     format(string, sizeof(string), "* admin %s[%i] has armoured all players.", ReturnPlayerName(playerid), playerid);
  5103.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  5104.     return 1;
  5105. }
  5106.  
  5107. CMD:fightstyle(playerid, params[])
  5108. {
  5109.     //check if the player is a admin
  5110.     LevelCheck(playerid, 3);
  5111.  
  5112.     new target, style, sylename[15];
  5113.  
  5114.     if(sscanf(params, "ui", target, style))
  5115.     {
  5116.         SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /fightstyle [player] [style]");
  5117.         SendClientMessage(playerid, COLOR_THISTLE, "STYLES: [0]Normal, [1]Boxing, [2]Kungfu, [3]Kneehead, [4]Grabkick, [5]Elbow");
  5118.         return 1;
  5119.     }
  5120.  
  5121.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5122.  
  5123.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5124.  
  5125.     if(style > 5 || style < 0) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Inavlid fighting style, must be b/w 0-5.");
  5126.  
  5127.     switch(style)
  5128.     {
  5129.         case 0:
  5130.         {
  5131.             SetPlayerFightingStyle(target, 4);
  5132.             sylename = "Normal";
  5133.         }
  5134.         case 1:
  5135.         {
  5136.             SetPlayerFightingStyle(target, 5);
  5137.             sylename = "Boxing";
  5138.         }
  5139.         case 2:
  5140.         {
  5141.             SetPlayerFightingStyle(target, 6);
  5142.             sylename = "Kung Fu";
  5143.         }
  5144.         case 3:
  5145.         {
  5146.             SetPlayerFightingStyle(target, 7);
  5147.             sylename = "Kneehead";
  5148.         }
  5149.         case 4:
  5150.         {
  5151.             SetPlayerFightingStyle(target, 15);
  5152.             sylename = "Grabkick";
  5153.         }
  5154.         case 5:
  5155.         {
  5156.             SetPlayerFightingStyle(target, 16);
  5157.             sylename = "Elbow";
  5158.         }
  5159.     }
  5160.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5161.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5162.  
  5163.     new string[144];
  5164.     format(string, sizeof(string), "admin %s[%i] has set your fighting style to [%i]%s.", ReturnPlayerName(playerid), playerid, sylename, style);
  5165.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5166.     format(string, sizeof(string), "You have set %s[%i]'s fighting style to [%i]%s.", ReturnPlayerName(target), target, sylename, style);
  5167.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5168.     return 1;
  5169. }
  5170.  
  5171. CMD:sethealth(playerid, params[])
  5172. {
  5173.     //check if the player is a admin
  5174.     LevelCheck(playerid, 3);
  5175.  
  5176.     new target, Float:amount;
  5177.     if(sscanf(params, "uf", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /sethealth [player] [amount]");
  5178.  
  5179.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5180.  
  5181.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5182.  
  5183.     SetPlayerHealth(target, amount);
  5184.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5185.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5186.  
  5187.     new string[144];
  5188.     format(string, sizeof(string), "admin %s[%i] has set your health to %0.2f.", ReturnPlayerName(playerid), playerid, amount);
  5189.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5190.     format(string, sizeof(string), "You have set %s[%i]'s health to %.2f.", ReturnPlayerName(target), target, amount);
  5191.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5192.     return 1;
  5193. }
  5194.  
  5195. CMD:setarmour(playerid, params[])
  5196. {
  5197.     //check if the player is a admin
  5198.     LevelCheck(playerid, 3);
  5199.  
  5200.     new target, Float:amount;
  5201.     if(sscanf(params, "uf", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setarmour [player] [amount]");
  5202.  
  5203.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5204.  
  5205.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5206.  
  5207.     SetPlayerArmour(target, amount);
  5208.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5209.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5210.  
  5211.     new string[144];
  5212.     format(string, sizeof(string), "admin %s[%i] has set your armour to %0.2f.", ReturnPlayerName(playerid), playerid, amount);
  5213.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5214.     format(string, sizeof(string), "You have set %s[%i]'s armour to %.2f.", ReturnPlayerName(target), target, amount);
  5215.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5216.     return 1;
  5217. }
  5218.  
  5219. CMD:agod(playerid, params[])
  5220. {
  5221.     //check if the player is a admin
  5222.     LevelCheck(playerid, 3);
  5223.  
  5224.     if(GetPVarType(playerid, "GAdmin_God") == PLAYER_VARTYPE_NONE)
  5225.     {
  5226.         SetPlayerHealth(playerid, 9999999.0);
  5227.         GameTextForPlayer(playerid, "~g~GODMODE ~w~~h~ON", 5000, 3);
  5228.  
  5229.         SetPVarInt(playerid, "GAdmin_God", 1);
  5230.     }
  5231.     else
  5232.     {
  5233.         SetPlayerHealth(playerid, 100.0);
  5234.         GameTextForPlayer(playerid, "~g~GODMODE ~w~~h~OFF", 5000, 3);
  5235.  
  5236.         DeletePVar(playerid, "GAdmin_God");
  5237.     }
  5238.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5239.     return 1;
  5240. }
  5241.  
  5242. CMD:resetcash(playerid, params[])
  5243. {
  5244.     //check if the player is a admin
  5245.     LevelCheck(playerid, 3);
  5246.  
  5247.     new target;
  5248.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "ERROR: /resetcash [player]");
  5249.  
  5250.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5251.  
  5252.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5253.  
  5254.     ResetPlayerMoney(target);
  5255.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5256.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5257.  
  5258.     new string[144];
  5259.     format(string, sizeof(string), "admin %s[%i] has reset your cash to 0$.", ReturnPlayerName(playerid), playerid);
  5260.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5261.     format(string, sizeof(string), "You have reset %s[%i]'s cash to 0$.", ReturnPlayerName(target), target);
  5262.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5263.     return 1;
  5264. }
  5265.  
  5266. CMD:getall(playerid, params[])
  5267. {
  5268.     //check if the player is a admin
  5269.     LevelCheck(playerid, 3);
  5270.  
  5271.     new Float:pos[3];
  5272.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  5273.     LOOP_PLAYERS(i)
  5274.     {
  5275.         if(i != playerid)
  5276.         {
  5277.             PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  5278.             SetPlayerPos(i, pos[0] + ((playerid / 4) + 1), pos[1] + (playerid / 4), pos[2]);
  5279.             SetPlayerInterior(i, GetPlayerInterior(playerid));
  5280.             SetPlayerVirtualWorld(i, GetPlayerVirtualWorld(playerid));
  5281.         }
  5282.     }
  5283.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5284.  
  5285.     new string[144];
  5286.     format(string, sizeof(string), "* admin %s[%i] has teleported all players to hist location.", ReturnPlayerName(playerid), playerid);
  5287.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  5288.     return 1;
  5289. }
  5290.  
  5291. CMD:freeze(playerid, params[])
  5292. {
  5293.     //check if the player is a admin
  5294.     LevelCheck(playerid, 3);
  5295.  
  5296.     new target, reason[35];
  5297.     if(sscanf(params, "uS(No reason specified)[35]", target, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /freeze [playerid] [*reason]");
  5298.  
  5299.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5300.  
  5301.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5302.  
  5303.     TogglePlayerControllable(target, false);
  5304.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5305.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5306.  
  5307.     new string[144];
  5308.     format(string, sizeof(string), "admin %s[%i] has freezed you.", ReturnPlayerName(playerid), playerid);
  5309.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5310.     format(string, sizeof(string), "You have freezed %s[%i].", ReturnPlayerName(target), target);
  5311.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5312.     return 1;
  5313. }
  5314.  
  5315. CMD:unfreeze(playerid, params[])
  5316. {
  5317.     //check if the player is a admin
  5318.     LevelCheck(playerid, 3);
  5319.  
  5320.     new target;
  5321.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /unfreeze [playerid]");
  5322.  
  5323.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5324.  
  5325.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5326.  
  5327.     TogglePlayerControllable(target, true);
  5328.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5329.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5330.  
  5331.     new string[144];
  5332.     format(string, sizeof(string), "admin %s[%i] has unfreezed you.", ReturnPlayerName(playerid), playerid);
  5333.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5334.     format(string, sizeof(string), "You have unfreezed %s[%i].", ReturnPlayerName(target), target);
  5335.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5336.     return 1;
  5337. }
  5338.  
  5339. CMD:giveweapon(playerid, params[])
  5340. {
  5341.     //check if the player is a admin
  5342.     LevelCheck(playerid, 3);
  5343.  
  5344.     new target, weapon[32], ammo;
  5345.     if(sscanf(params, "us[32]I(250)", target, weapon, ammo)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /giveweapon [player] [weapon] [*ammo]");
  5346.  
  5347.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5348.  
  5349.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5350.  
  5351.     new weaponid;
  5352.     if(! IsNumericString(weapon)) weaponid = GetWeaponIDFromName(weapon);
  5353.     else                    weaponid = strval(weapon);
  5354.  
  5355.     if(! IsValidWeapon(weaponid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid weapon id.");
  5356.  
  5357.     GetWeaponName(weaponid, weapon, sizeof(weapon));
  5358.     GivePlayerWeapon(target, weaponid, ammo);
  5359.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5360.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5361.  
  5362.     new string[144];
  5363.     format(string, sizeof(string), "admin %s[%i] has given you a %s[id: %i] with %i ammo.", ReturnPlayerName(playerid), playerid, weapon, weaponid, ammo);
  5364.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5365.     format(string, sizeof(string), "You have given %s[%i] a %s[id: %i] with %i ammo.", ReturnPlayerName(target), target, weapon, weaponid, ammo);
  5366.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5367.     return 1;
  5368. }
  5369.  
  5370. CMD:slap(playerid, params[])
  5371. {
  5372.     //check if the player is a admin
  5373.     LevelCheck(playerid, 3);
  5374.  
  5375.     new target;
  5376.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /slap [player]");
  5377.  
  5378.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5379.  
  5380.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5381.  
  5382.     new Float:pos[3];
  5383.     GetPlayerPos(target, pos[0], pos[1], pos[2]);
  5384.     SetPlayerPos(target, pos[0], pos[1], pos[2] + 5.0);
  5385.  
  5386.     PlayerPlaySound(playerid, 1190, 0.0, 0.0, 0.0);
  5387.     PlayerPlaySound(target, 1190, 0.0, 0.0, 0.0);
  5388.  
  5389.     new string[144];
  5390.     format(string, sizeof(string), "You have slapped %s[%i].", ReturnPlayerName(target), target);
  5391.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5392.     return 1;
  5393. }
  5394.  
  5395. CMD:setcolor(playerid, params[])
  5396. {
  5397.     //check if the player is a admin
  5398.     LevelCheck(playerid, 3);
  5399.  
  5400.     new target;
  5401.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setcolor [player]");
  5402.  
  5403.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5404.  
  5405.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5406.  
  5407.     SetPVarInt(playerid, "PlayerColor", target);
  5408.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5409.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5410.     ShowPlayerDialog(playerid, DIALOG_PLAYER_COLORS, DIALOG_STYLE_LIST, "Select a color", ""BLACK"Black\n"WHITE"White\n"RED"Red\n"ORANGE"Orange\n"YELLOW"Yellow\n"GREEN"Green\n"RED"Blue\n"VIOLET"Purple\n"BROWN"Brown\n"PINK"Pink", "Select", "Cancel");
  5411.     return 1;
  5412. }
  5413.  
  5414. CMD:setcash(playerid, params[])
  5415. {
  5416.     //check if the player is a admin
  5417.     LevelCheck(playerid, 3);
  5418.  
  5419.     new target, amount;
  5420.     if(sscanf(params, "ui", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setcash [player] [amount]");
  5421.  
  5422.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5423.  
  5424.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5425.  
  5426.     ResetPlayerMoney(target);
  5427.     GivePlayerMoney(target, amount);
  5428.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5429.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5430.  
  5431.     new string[144];
  5432.     format(string, sizeof(string), "admin %s[%i] has set your money to $%i.", ReturnPlayerName(playerid), playerid, amount);
  5433.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5434.     format(string, sizeof(string), "You have set %s[%i]'s money to $%i.", ReturnPlayerName(target), target, amount);
  5435.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5436.     return 1;
  5437. }
  5438.  
  5439. CMD:setscore(playerid, params[])
  5440. {
  5441.     //check if the player is a admin
  5442.     LevelCheck(playerid, 3);
  5443.  
  5444.     new target, amount;
  5445.     if(sscanf(params, "ui", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setscore [player] [amount]");
  5446.  
  5447.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5448.  
  5449.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5450.  
  5451.     SetPlayerScore(target, amount);
  5452.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5453.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5454.  
  5455.     new string[144];
  5456.     format(string, sizeof(string), "admin %s[%i] has set your score to %i.", ReturnPlayerName(playerid), playerid, amount);
  5457.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5458.     format(string, sizeof(string), "You have set %s[%i]'s score to %i.", ReturnPlayerName(target), target, amount);
  5459.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5460.     return 1;
  5461. }
  5462.  
  5463. CMD:givecash(playerid, params[])
  5464. {
  5465.     //check if the player is a admin
  5466.     LevelCheck(playerid, 3);
  5467.  
  5468.     new target, amount;
  5469.     if(sscanf(params, "ui", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /givecash [player] [amount]");
  5470.  
  5471.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5472.  
  5473.     GivePlayerMoney(target, amount);
  5474.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5475.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5476.  
  5477.     new string[144];
  5478.     format(string, sizeof(string), "admin %s[%i] has given you money $%i.", ReturnPlayerName(playerid), playerid, amount);
  5479.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5480.     format(string, sizeof(string), "You have given %s[%i]'s money $%i.", ReturnPlayerName(target), target, amount);
  5481.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5482.     return 1;
  5483. }
  5484.  
  5485. CMD:givescore(playerid, params[])
  5486. {
  5487.     //check if the player is a admin
  5488.     LevelCheck(playerid, 3);
  5489.  
  5490.     new target, amount;
  5491.     if(sscanf(params, "ui", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /givescore [player] [amount]");
  5492.  
  5493.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5494.  
  5495.     SetPlayerScore(target, amount);
  5496.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5497.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5498.  
  5499.     new string[144];
  5500.     format(string, sizeof(string), "admin %s[%i] has given you score to %i.", ReturnPlayerName(playerid), playerid, amount);
  5501.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5502.     format(string, sizeof(string), "You have given %s[%i]'s score %i.", ReturnPlayerName(target), target, amount);
  5503.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5504.     return 1;
  5505. }
  5506.  
  5507. CMD:respawncar(playerid, params[])
  5508. {
  5509.     //check if the player is a admin
  5510.     LevelCheck(playerid, 3);
  5511.  
  5512.     new vehicleid;
  5513.     if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /respawncar [vehicleid]");
  5514.  
  5515.     if(! IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified vehicle is not created.");
  5516.  
  5517.     SetVehicleToRespawn(vehicleid);
  5518.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5519.  
  5520.     new string[144];
  5521.     format(string, sizeof(string), "You have respawned vehicle id %i.", vehicleid);
  5522.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5523.     return 1;
  5524. }
  5525.  
  5526. CMD:destroycar(playerid, params[])
  5527. {
  5528.     //check if the player is a admin
  5529.     LevelCheck(playerid, 3);
  5530.  
  5531.     new vehicleid;
  5532.     if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /destroycar [vehicleid]");
  5533.  
  5534.     if(! IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified vehicle is not created.");
  5535.  
  5536.     SetVehicleToRespawn(vehicleid);
  5537.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5538.  
  5539.     new string[144];
  5540.     format(string, sizeof(string), "You have destroyed vehicle id %i.", vehicleid);
  5541.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5542.     return 1;
  5543. }
  5544.  
  5545. CMD:setkills(playerid, params[])
  5546. {
  5547.     //check if the player is a admin
  5548.     LevelCheck(playerid, 3);
  5549.  
  5550.     new target, amount;
  5551.     if(sscanf(params, "ui", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setkills [player] [amount]");
  5552.  
  5553.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5554.  
  5555.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5556.  
  5557.     gUser[target][u_kills] = amount;
  5558.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5559.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5560.  
  5561.     new string[144];
  5562.     format(string, sizeof(string), "admin %s[%i] has set your kills to %i.", ReturnPlayerName(playerid), playerid, amount);
  5563.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5564.     format(string, sizeof(string), "You have set %s[%i]'s kills to %i.", ReturnPlayerName(target), target, amount);
  5565.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5566.  
  5567.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  5568.     DB::SetIntEntry(gGlobal[s_usertable], key, "kills", amount);
  5569.     return 1;
  5570. }
  5571.  
  5572. CMD:setdeaths(playerid, params[])
  5573. {
  5574.     //check if the player is a admin
  5575.     LevelCheck(playerid, 3);
  5576.  
  5577.     new target, amount;
  5578.     if(sscanf(params, "ui", target, amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setdeaths [player] [amount]");
  5579.  
  5580.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5581.  
  5582.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5583.  
  5584.     gUser[target][u_deaths] = amount;
  5585.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5586.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5587.  
  5588.     new string[144];
  5589.     format(string, sizeof(string), "admin %s[%i] has set your deaths to %i.", ReturnPlayerName(playerid), playerid, amount);
  5590.     SendClientMessage(target, COLOR_DODGER_BLUE, string);
  5591.     format(string, sizeof(string), "You have set %s[%i]'s deaths to %i.", ReturnPlayerName(target), target, amount);
  5592.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5593.  
  5594.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  5595.     DB::SetIntEntry(gGlobal[s_usertable], key, "deaths", amount);
  5596.     return 1;
  5597. }
  5598.  
  5599. CMD:banip(playerid, params[])
  5600. {
  5601.     //check if the player is a admin
  5602.     LevelCheck(playerid, 3);
  5603.  
  5604.     new ip[18], reason[35], days;
  5605.     if(sscanf(params,"s[18]s[35]I(0)", ip, reason, days)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /banip [ip] [reason] [*days]");
  5606.  
  5607.     if(! strcmp(ip, ReturnPlayerIP(playerid))) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't ban yourself.");
  5608.  
  5609.     if(days < 0) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid days, must be greater than 0 for temp ban, or 0 for permanent ban.");
  5610.  
  5611.     if(strlen(reason) < 3 || strlen(reason) > 35) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid reason length, must be b/w 0-35 characters.");
  5612.  
  5613.     new key = DB::RetrieveKey(gGlobal[s_usertable], "ip", ip);
  5614.     if(key != DB_INVALID_KEY)
  5615.     {
  5616.         if(DB::GetIntEntry(gGlobal[s_usertable], key, "admin") > GetPlayerGAdminLevel(playerid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin's ip.");
  5617.     }
  5618.  
  5619.     key = DB::RetrieveKey(gGlobal[s_bantable], "ip", ip);
  5620.     if(key != DB_INVALID_KEY)
  5621.     {
  5622.         return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified ip is already banned.");
  5623.     }
  5624.  
  5625.     new bandate[18], date[3], time;
  5626.     getdate(date[0], date[1], date[2]);
  5627.     format(bandate, sizeof(bandate), "%02i/%02i/%i", date[2], date[1], date[0]);
  5628.  
  5629.     if(days == 0) time = 0;
  5630.     else time = ((days * 24 * 60 * 60) + gettime());
  5631.  
  5632.     new name[MAX_PLAYER_NAME] = "Unknown";
  5633.     LOOP_PLAYERS(i)
  5634.     {
  5635.         if(! strcmp(ip, ReturnPlayerIP(i)))
  5636.         {
  5637.             if(GetPlayerGAdminLevel(i) > GetPlayerGAdminLevel(playerid)) return  SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5638.  
  5639.             GetPlayerName(i, name, MAX_PLAYER_NAME);
  5640.             break;
  5641.         }
  5642.     }
  5643.  
  5644.     DB::CreateRow(gGlobal[s_bantable], "ip", ip);
  5645.     new bankey = DB::RetrieveKey(gGlobal[s_bantable], "ip", ip);
  5646.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "name", name);
  5647.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "banby", ReturnPlayerName(playerid));
  5648.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "banon", bandate);
  5649.     DB::SetStringEntry(gGlobal[s_bantable], bankey, "reason", reason);
  5650.     DB::SetIntEntry(gGlobal[s_bantable], bankey, "expire", time);
  5651.  
  5652.     if(days == 0)
  5653.     {
  5654.         new string[144];
  5655.         format(string, sizeof(string), "* You have banned the ip %s [Reason: %s].", ReturnPlayerName(playerid), playerid, ip, reason);
  5656.         SendClientMessageToAll(COLOR_RED, string);
  5657.     }
  5658.     else
  5659.     {
  5660.         new string[144];
  5661.         format(string, sizeof(string), "* Banned for %i days [Unban on %s]", days, ConvertTime(time));
  5662.         SendClientMessageToAll(COLOR_RED, string);
  5663.     }
  5664.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5665.  
  5666.     LOOP_PLAYERS(i)
  5667.     {
  5668.         if(! strcmp(ReturnPlayerIP(i), ip))
  5669.         {
  5670.             if(days == 0)
  5671.             {
  5672.                 new string[144];
  5673.                 format(string, sizeof(string), "* admin %s[%i] has banned your ip %s [Reason: %s].", ReturnPlayerName(playerid), playerid, ip, reason);
  5674.                 SendClientMessage(i, COLOR_RED, string);
  5675.             }
  5676.             else
  5677.             {
  5678.                 new string[144];
  5679.                 format(string, sizeof(string), "* admin %s[%i] has temp banned your ip %s [Reason: %s].", ReturnPlayerName(playerid), playerid, ip, reason);
  5680.                 SendClientMessage(i, COLOR_RED, string);
  5681.                 format(string, sizeof(string), "* Banned for %i days [Unban on %s]", days, ConvertTime(time));
  5682.                 SendClientMessage(i, COLOR_RED, string);
  5683.             }
  5684.             PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  5685.             DelayKick(i);
  5686.         }
  5687.     }
  5688.     return 1;
  5689. }
  5690.  
  5691. CMD:unbanip(playerid, params[])
  5692. {
  5693.     //check if the player is a admin
  5694.     LevelCheck(playerid, 3);
  5695.  
  5696.     new ip[18];
  5697.     if(sscanf(params,"s[18]", ip)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /unbanip [ip]");
  5698.  
  5699.     new bankey = DB::RetrieveKey(gGlobal[s_bantable], "ip", ip);
  5700.     if(bankey == DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified ip is not banned.");
  5701.  
  5702.     DB::DeleteRow(gGlobal[s_bantable], bankey);
  5703.  
  5704.     new string[144];
  5705.     format(string, sizeof(string), "* You have unbanned ip %s successfully.", ip);
  5706.     SendClientMessage(playerid, COLOR_GREEN, string);
  5707.     return 1;
  5708. }
  5709.  
  5710. CMD:freezeall(playerid, params[])
  5711. {
  5712.     //check if the player is a admin
  5713.     LevelCheck(playerid, 3);
  5714.  
  5715.     LOOP_PLAYERS(i)
  5716.     {
  5717.         if(i != playerid)
  5718.         {
  5719.             if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(i))
  5720.             {
  5721.                 TogglePlayerControllable(i, false);
  5722.                 PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  5723.             }
  5724.         }
  5725.     }
  5726.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5727.  
  5728.     new string[144];
  5729.     format(string, sizeof(string), "* admin %s[%i] has freezed all players.", ReturnPlayerName(playerid), playerid);
  5730.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  5731.     return 1;
  5732. }
  5733.  
  5734. CMD:unfreezeall(playerid, params[])
  5735. {
  5736.     //check if the player is a admin
  5737.     LevelCheck(playerid, 3);
  5738.  
  5739.     LOOP_PLAYERS(i)
  5740.     {
  5741.         if(i != playerid)
  5742.         {
  5743.             if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(i))
  5744.             {
  5745.                 TogglePlayerControllable(i, true);
  5746.                 PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  5747.             }
  5748.         }
  5749.     }
  5750.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5751.  
  5752.     new string[144];
  5753.     format(string, sizeof(string), "* admin %s[%i] has unfreezed all players.", ReturnPlayerName(playerid), playerid);
  5754.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  5755.     return 1;
  5756. }
  5757.  
  5758. //------------------------------------------------
  5759.  
  5760. //Admin level 4+
  5761. CMD:banrange(playerid, params[])
  5762. {
  5763.     //check if the player is a admin
  5764.     LevelCheck(playerid, 3);
  5765.  
  5766.     new ip[18], reason[35], days;
  5767.     if(sscanf(params,"s[18]s[35]I(10)", ip, reason, days)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /banip [ip] [reason] [*days]");
  5768.  
  5769.     if(! strcmp(ip, ReturnPlayerIP(playerid)) || ipmatch(ReturnPlayerIP(playerid), ip)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't range ban yourself.");
  5770.  
  5771.     if(days < 0) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid days, must be greater than 0 for temp range ban, or 0 for permanent range ban.");
  5772.  
  5773.     if(strlen(reason) < 3 || strlen(reason) > 35) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid reason length, must be b/w 0-35 characters.");
  5774.  
  5775.     for(new i = 1, j = DB::GetHighestRegisteredKey(gGlobal[s_usertable]); i <= j; i++)
  5776.     {
  5777.         new uIP[18];
  5778.         DB::GetStringEntry(gGlobal[s_usertable], i, "ip", uIP);
  5779.         if(ipmatch(uIP, ip))
  5780.         {
  5781.             return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin's ip.");
  5782.         }
  5783.     }
  5784.  
  5785.     for(new i = 1, j = DB::GetHighestRegisteredKey(gGlobal[s_rangebantable]); i <= j; i++)
  5786.     {
  5787.         new uIP[18];
  5788.         DB::GetStringEntry(gGlobal[s_rangebantable], i, "ip", uIP);
  5789.         if(ipmatch(uIP, ip))
  5790.         {
  5791.             return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified ip is already range banned.");
  5792.         }
  5793.     }
  5794.  
  5795.     new bandate[18], date[3], time;
  5796.     getdate(date[0], date[1], date[2]);
  5797.     format(bandate, sizeof(bandate), "%02i/%02i/%i", date[2], date[1], date[0]);
  5798.  
  5799.     if(days == 0) time = 0;
  5800.     else time = ((days * 24 * 60 * 60) + gettime());
  5801.  
  5802.     LOOP_PLAYERS(i)
  5803.     {
  5804.         if(ipmatch(ReturnPlayerIP(i), ip))
  5805.         {
  5806.             if(GetPlayerGAdminLevel(i) > GetPlayerGAdminLevel(playerid))
  5807.             {
  5808.                 SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin's ip.");
  5809.             }
  5810.             break;
  5811.         }
  5812.     }
  5813.  
  5814.     DB::CreateRow(gGlobal[s_rangebantable], "ip", ip);
  5815.     new bankey = DB::RetrieveKey(gGlobal[s_rangebantable], "ip", ip);
  5816.     DB::SetStringEntry(gGlobal[s_rangebantable], bankey, "banby", ReturnPlayerName(playerid));
  5817.     DB::SetStringEntry(gGlobal[s_rangebantable], bankey, "banon", bandate);
  5818.     DB::SetStringEntry(gGlobal[s_rangebantable], bankey, "reason", reason);
  5819.     DB::SetIntEntry(gGlobal[s_rangebantable], bankey, "expire", time);
  5820.  
  5821.     if(days == 0)
  5822.     {
  5823.         new string[144];
  5824.         format(string, sizeof(string), "* You have range banned the ip %s [Reason: %s].", ReturnPlayerName(playerid), playerid, ip, reason);
  5825.         SendClientMessage(playerid, COLOR_RED, string);
  5826.     }
  5827.     else
  5828.     {
  5829.         new string[144];
  5830.         format(string, sizeof(string), "* You have temp range banned the ip %s [Reason: %s].", ReturnPlayerName(playerid), playerid, ip, reason);
  5831.         SendClientMessage(playerid, COLOR_RED, string);
  5832.         format(string, sizeof(string), "* Range banned for %i days [Unban on %s]", days, ConvertTime( time - gettime() ));
  5833.         SendClientMessage(playerid, COLOR_RED, string);
  5834.     }
  5835.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5836.  
  5837.     LOOP_PLAYERS(i)
  5838.     {
  5839.         if(ipmatch(ReturnPlayerIP(i), ip))
  5840.         {
  5841.             if(days == 0)
  5842.             {
  5843.                 new string[144];
  5844.                 format(string, sizeof(string), "* admin %s[%i] has range banned your ip %s [Reason: %s].", ReturnPlayerName(playerid), playerid, ip, reason);
  5845.                 SendClientMessage(i, COLOR_RED, string);
  5846.             }
  5847.             else
  5848.             {
  5849.                 new string[144];
  5850.                 format(string, sizeof(string), "* admin %s[%i] has temp range banned your ip %s [Reason: %s].", ReturnPlayerName(playerid), playerid, ip, reason);
  5851.                 SendClientMessage(i, COLOR_RED, string);
  5852.                 format(string, sizeof(string), "* Banned for %i days [Unban on %s]", days, ConvertTime( time - gettime() ));
  5853.                 SendClientMessage(i, COLOR_RED, string);
  5854.             }
  5855.             PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  5856.             DelayKick(i);
  5857.         }
  5858.     }
  5859.     return 1;
  5860. }
  5861.  
  5862. CMD:unbanrange(playerid, params[])
  5863. {
  5864.     //check if the player is a admin
  5865.     LevelCheck(playerid, 3);
  5866.  
  5867.     new ip[18];
  5868.     if(sscanf(params,"s[18]", ip)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /unbanrange [ip]");
  5869.  
  5870.     for(new i = 1, j = DB::GetHighestRegisteredKey(gGlobal[s_rangebantable]); i <= j; i++)
  5871.     {
  5872.         new range[18];
  5873.         DB::GetStringEntry(gGlobal[s_rangebantable], i, "ip", range);
  5874.         if(ipmatch(ip, range))
  5875.         {
  5876.             DB::DeleteRow(gGlobal[s_rangebantable], i);
  5877.  
  5878.             new string[144];
  5879.             format(string, sizeof(string), "* You have unbanned ip range %s successfully.", ip);
  5880.             SendClientMessage(playerid, COLOR_GREEN, string);
  5881.  
  5882.             break;
  5883.         }
  5884.     }
  5885.  
  5886.     SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified ip is not range banned.");
  5887.     return 1;
  5888. }
  5889.  
  5890. CMD:fakedeath(playerid, params[])
  5891. {
  5892.     //check if the player is a admin
  5893.     LevelCheck(playerid, 4);
  5894.  
  5895.     new target, killerid, weaponid;
  5896.     if(sscanf(params, "uui", target, killerid, weaponid)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /fakedeath [player] [killer] [weapon]");
  5897.  
  5898.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5899.  
  5900.     if(! IsPlayerConnected(killerid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified killer is not conected.");
  5901.  
  5902.     if(! IsValidWeapon(weaponid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid weapon id.");
  5903.  
  5904.     new weaponname[35];
  5905.     GetWeaponName(weaponid, weaponname, sizeof(weaponname));
  5906.     SendDeathMessage(killerid, target, weaponid);
  5907.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5908.  
  5909.     new string[144];
  5910.     format(string, sizeof(string), "Fake death sent [Player: %s | Killer: %s | Weapon: %s]", ReturnPlayerName(target), ReturnPlayerName(killerid), weaponname);
  5911.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  5912.     return 1;
  5913. }
  5914.  
  5915. CMD:cmdmuted(playerid, params[])
  5916. {
  5917.     //check if the player is a admin
  5918.     LevelCheck(playerid, 4);
  5919.  
  5920.     new DIALOG[98+670], string[128], bool:count = false;
  5921.  
  5922.     LOOP_PLAYERS(i)
  5923.     {
  5924.         if(GetPVarType(i, "GAdmin_CMDMuted") != PLAYER_VARTYPE_NONE)
  5925.         {
  5926.             format(string, sizeof(string), "%i. %s - Unmute in %i secs..", i, ReturnPlayerName(i), gUser[i][u_cmutetime]);
  5927.             strcat(DIALOG, string);
  5928.             count = true;
  5929.         }
  5930.     }
  5931.     if(! count) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: No commands muted players in the server.");
  5932.     else
  5933.     {
  5934.         ShowPlayerDialog(playerid, DIALOG_COMMON, DIALOG_STYLE_LIST, "Commands muted players", DIALOG, "Close", "");
  5935.     }
  5936.     return 1;
  5937. }
  5938.  
  5939. CMD:cmdmute(playerid, params[])
  5940. {
  5941.     //check if the player is a admin
  5942.     LevelCheck(playerid, 4);
  5943.  
  5944.     new target, time, reason[128];
  5945.     if(sscanf(params, "uI(60)S(No reason specified)[128]", target, time, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /cmdmute [player] [*seconds] [*reason]");
  5946.  
  5947.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5948.  
  5949.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5950.  
  5951.     if(time > 5*60 || time < 10) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The cmdmute time must be b/w 10 - 360(5 minutes) seconds.");
  5952.  
  5953.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot cmdmute yourself.");
  5954.  
  5955.     if(GetPVarType(target, "GAdmin_CMDMuted") != PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is already in cmdmuted.");
  5956.  
  5957.     SetPVarInt(playerid, "GAdmin_CMDMuted", 1);
  5958.  
  5959.     gUser[target][u_cmutetime] = time;
  5960.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5961.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5962.  
  5963.     new string[144];
  5964.     format(string, sizeof(string), "* %s[%i] has been cmdmuted by admin %s[%i] for %i seconds [Reason: %s]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid, time, reason);
  5965.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  5966.     format(string, sizeof(string), "~b~~h~~h~~h~Commands muted for %i secs", time);
  5967.     GameTextForPlayer(target, string, 5000, 3);
  5968.     return 1;
  5969. }
  5970.  
  5971. CMD:uncmdmute(playerid, params[])
  5972. {
  5973.     //check if the player is a admin
  5974.     LevelCheck(playerid, 4);
  5975.  
  5976.     new target;
  5977.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /uncmdmute [player]");
  5978.  
  5979.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  5980.  
  5981.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  5982.  
  5983.     if(GetPVarType(playerid, "GAdmin_CMDMuted") == PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is not cmdmuted.");
  5984.  
  5985.     DeletePVar(playerid, "GAdmin_CMDMuted");
  5986.  
  5987.     gUser[target][u_cmutetime] = 0;
  5988.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  5989.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  5990.  
  5991.     new string[144];
  5992.     format(string, sizeof(string), "* %s[%i] has been uncmdmuted by admin %s[%i]", ReturnPlayerName(target), target, ReturnPlayerName(playerid), playerid);
  5993.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  5994.     GameTextForPlayer(target, "~b~~h~~h~~h~Uncmdmuted", 5000, 3);
  5995.     return 1;
  5996. }
  5997.  
  5998. CMD:muteall(playerid, params[])
  5999. {
  6000.     //check if the player is a admin
  6001.     LevelCheck(playerid, 3);
  6002.  
  6003.     LOOP_PLAYERS(i)
  6004.     {
  6005.         if(i != playerid)
  6006.         {
  6007.             if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(i))
  6008.             {
  6009.                 SetPVarInt(i, "GAdmin_Muted", 1);
  6010.  
  6011.                 gUser[i][u_mutetime] = 5*60;
  6012.                 PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6013.             }
  6014.         }
  6015.     }
  6016.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6017.  
  6018.     new string[144];
  6019.     format(string, sizeof(string), "* admin %s[%i] has muted all players.", ReturnPlayerName(playerid), playerid);
  6020.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6021.     return 1;
  6022. }
  6023.  
  6024. CMD:unmuteall(playerid, params[])
  6025. {
  6026.     //check if the player is a admin
  6027.     LevelCheck(playerid, 3);
  6028.  
  6029.     LOOP_PLAYERS(i)
  6030.     {
  6031.         if(i != playerid)
  6032.         {
  6033.             if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(i))
  6034.             {
  6035.                 DeletePVar(i, "GAdmin_Muted");
  6036.  
  6037.                 gUser[i][u_mutetime] = 0;
  6038.                 PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6039.             }
  6040.         }
  6041.     }
  6042.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6043.  
  6044.     new string[144];
  6045.     format(string, sizeof(string), "* admin %s[%i] has unmuted all players.", ReturnPlayerName(playerid), playerid);
  6046.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6047.     return 1;
  6048. }
  6049.  
  6050. CMD:osetpass(playerid, params[])
  6051. {
  6052.     //check if the player is a admin
  6053.     LevelCheck(playerid, 3);
  6054.  
  6055.     new name[MAX_PLAYER_NAME], newpass[35];
  6056.     if(sscanf(params, "s[24]s[35]", name, newpass)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /osetpass [username] [new password]");
  6057.  
  6058.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", name);
  6059.     if(key != DB_INVALID_KEY)
  6060.     {
  6061.         if(GetPlayerGAdminLevel(playerid) < DB::GetIntEntry(gGlobal[s_usertable], key, "admin")) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  6062.     }
  6063.     else return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The username doesn't exist in the database.");
  6064.  
  6065.     if(strlen(newpass) < 3 || strlen(newpass) > 35) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid password length, must be b/w 0-35 characters.");
  6066.  
  6067.     new hash[65];
  6068.     DB::Hash(hash, sizeof(hash), newpass);
  6069.     DB::SetStringEntry(gGlobal[s_usertable], key, "password", hash);
  6070.  
  6071.     new string[144];
  6072.     format(string, sizeof(string), "* You have reseted the password of '%s [DBId: %i]' to '%s'.", name, key, newpass);
  6073.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6074.    
  6075.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6076.     return 1;
  6077. }
  6078.  
  6079. CMD:killall(playerid, params[])
  6080. {
  6081.     //check if the player is a admin
  6082.     LevelCheck(playerid, 4);
  6083.  
  6084.     LOOP_PLAYERS(i)
  6085.     {
  6086.         if(i != playerid)
  6087.         {
  6088.             if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(i))
  6089.             {
  6090.                 SetPlayerHealth(i, 0.0);
  6091.                 PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6092.             }
  6093.         }
  6094.     }
  6095.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6096.  
  6097.     new string[144];
  6098.     format(string, sizeof(string), "* admin %s[%i] has killed all players.", ReturnPlayerName(playerid), playerid);
  6099.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6100.     return 1;
  6101. }
  6102.  
  6103. CMD:ejectall(playerid, params[])
  6104. {
  6105.     //check if the player is a admin
  6106.     LevelCheck(playerid, 4);
  6107.  
  6108.     new Float:pos[3];
  6109.     LOOP_PLAYERS(i)
  6110.     {
  6111.         if(i != playerid)
  6112.         {
  6113.             if(IsPlayerInAnyVehicle(i))
  6114.             {
  6115.                 if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(i))
  6116.                 {
  6117.                     GetPlayerPos(i, pos[0], pos[1], pos[2]);
  6118.                     SetPlayerPos(i, pos[0] + 2.5, pos[1], pos[2]);
  6119.                     PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6120.                 }
  6121.             }
  6122.         }
  6123.     }
  6124.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6125.  
  6126.     new string[144];
  6127.     format(string, sizeof(string), "* admin %s[%i] has ejected all players from their vehicles.", ReturnPlayerName(playerid), playerid);
  6128.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6129.     return 1;
  6130. }
  6131.  
  6132. CMD:disarmall(playerid, params[])
  6133. {
  6134.     //check if the player is a admin
  6135.     LevelCheck(playerid, 4);
  6136.  
  6137.     LOOP_PLAYERS(i)
  6138.     {
  6139.         if(i != playerid)
  6140.         {
  6141.             if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(i))
  6142.             {
  6143.                 ResetPlayerWeapons(i);
  6144.                 PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6145.             }
  6146.         }
  6147.     }
  6148.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6149.  
  6150.     new string[144];
  6151.     format(string, sizeof(string), "* admin %s[%i] has disarmed all players.", ReturnPlayerName(playerid), playerid);
  6152.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6153.     return 1;
  6154. }
  6155.  
  6156. CMD:giveallscore(playerid, params[])
  6157. {
  6158.     //check if the player is a admin
  6159.     LevelCheck(playerid, 4);
  6160.  
  6161.     new amount;
  6162.     if(sscanf(params, "i", amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /giveallscore [amount]");
  6163.  
  6164.     LOOP_PLAYERS(i)
  6165.     {
  6166.         PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6167.         SetPlayerScore(i, GetPlayerScore(i) + amount);
  6168.         PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6169.     }
  6170.  
  6171.     new string[144];
  6172.     format(string, sizeof(string), "* admin %s[%i] has given all players %i score.", ReturnPlayerName(playerid), playerid, amount);
  6173.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6174.     return 1;
  6175. }
  6176.  
  6177. CMD:giveallcash(playerid, params[])
  6178. {
  6179.     //check if the player is a admin
  6180.     LevelCheck(playerid, 4);
  6181.  
  6182.     new amount;
  6183.     if(sscanf(params, "i", amount)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /giveallcash [amount]");
  6184.  
  6185.     LOOP_PLAYERS(i)
  6186.     {
  6187.         PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6188.         GivePlayerMoney(i, amount);
  6189.         PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6190.     }
  6191.  
  6192.     new string[144];
  6193.     format(string, sizeof(string), "* admin %s[%i] has given all players $%i.", ReturnPlayerName(playerid), playerid, amount);
  6194.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6195.     return 1;
  6196. }
  6197.  
  6198. CMD:setalltime(playerid, params[])
  6199. {
  6200.     //check if the player is a admin
  6201.     LevelCheck(playerid, 4);
  6202.  
  6203.     new id;
  6204.     if(sscanf(params, "i", id)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setalltime [id]");
  6205.  
  6206.     if(id < 0 || id > 24) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid time hour, must be b/w 0-24.");
  6207.  
  6208.     LOOP_PLAYERS(i)
  6209.     {
  6210.         PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6211.         SetPlayerTime(i, id, 0);
  6212.         PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6213.     }
  6214.  
  6215.     new string[144];
  6216.     format(string, sizeof(string), "* admin %s[%i] has set all players time to %i.", ReturnPlayerName(playerid), playerid, id);
  6217.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6218.     return 1;
  6219. }
  6220.  
  6221. CMD:setallweather(playerid, params[])
  6222. {
  6223.     //check if the player is a admin
  6224.     LevelCheck(playerid, 4);
  6225.  
  6226.     new id;
  6227.     if(sscanf(params, "i", id)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setallweather [id]");
  6228.  
  6229.     if(id < 0 || id > 45) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid weather id, must be b/w 0-45.");
  6230.  
  6231.     LOOP_PLAYERS(i)
  6232.     {
  6233.         PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6234.         SetPlayerWeather(i, id);
  6235.         PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6236.     }
  6237.  
  6238.     new string[144];
  6239.     format(string, sizeof(string), "* admin %s[%i] has set all players weather to %i.", ReturnPlayerName(playerid), playerid, id);
  6240.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6241.     return 1;
  6242. }
  6243.  
  6244. CMD:respawncars(playerid, params[])
  6245. {
  6246.     //check if the player is a admin
  6247.     LevelCheck(playerid, 4);
  6248.  
  6249.     for(new cars; cars < MAX_VEHICLES; cars++)
  6250.     {
  6251.         LOOP_PLAYERS(i)
  6252.         {
  6253.             PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6254.             if(GetPlayerVehicleID(i) == cars)
  6255.             {
  6256.                 if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
  6257.                 {
  6258.                     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(i))
  6259.                     {
  6260.                         SetVehicleToRespawn(cars);
  6261.                     }
  6262.                 }
  6263.                 else SetVehicleToRespawn(cars);
  6264.             }
  6265.             else SetVehicleToRespawn(cars);
  6266.         }
  6267.     }
  6268.  
  6269.     GameTextForAll("~b~~h~~h~~h~Vehicles respawned", 5000, 3);
  6270.     new string[144];
  6271.     format(string, sizeof(string), "You respawned all vehicles.", ReturnPlayerName(playerid), playerid);
  6272.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6273.     return 1;
  6274. }
  6275.  
  6276. CMD:cleardwindow(playerid, params[])
  6277. {
  6278.     //check if the player is a admin
  6279.     LevelCheck(playerid, 4);
  6280.  
  6281.     for(new i = 0; i < 20; i++) SendDeathMessage(6000, 5005, 255);
  6282.  
  6283.     new string[144];
  6284.     format(string, sizeof(string), "* admin %s[%i] has cleared all players death window.", ReturnPlayerName(playerid), playerid);
  6285.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6286.     return 1;
  6287. }
  6288.  
  6289. CMD:giveallweapon(playerid, params[])
  6290. {
  6291.     //check if the player is a admin
  6292.     LevelCheck(playerid, 4);
  6293.  
  6294.     new weapon[32], ammo;
  6295.     if(sscanf(params, "s[32]I(250)", weapon, ammo)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /giveallweapon [weapon] [ammo]");
  6296.  
  6297.     new weaponid;
  6298.     if(! IsNumericString(weapon)) weaponid = GetWeaponIDFromName(weapon);
  6299.     else                    weaponid = strval(weapon);
  6300.  
  6301.     if(! IsValidWeapon(weaponid)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid weapon id.");
  6302.  
  6303.     GetWeaponName(weaponid, weapon, sizeof(weapon));
  6304.     LOOP_PLAYERS(i) GivePlayerWeapon(i, weaponid, ammo) && PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  6305.  
  6306.     new string[144];
  6307.     format(string, sizeof(string), "* admin %s[%i] has given all players %s[id: %i] with %i ammo.", ReturnPlayerName(playerid), playerid, weapon, weaponid, ammo);
  6308.     SendClientMessageToAll(COLOR_DODGER_BLUE, string);
  6309.     return 1;
  6310. }
  6311.  
  6312. CMD:object(playerid, params[])
  6313. {
  6314.     //check if the player is a admin
  6315.     LevelCheck(playerid, 4);
  6316.  
  6317.     new model;
  6318.     if(sscanf(params, "i", model)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /object [model]");
  6319.  
  6320.     if(0 > model > 20000) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified model is invalid.");
  6321.  
  6322.     new Float:pos[3];
  6323.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  6324.  
  6325.     new Float:angle;
  6326.     GetPlayerFacingAngle(playerid, angle);
  6327.  
  6328.     new object = CreateObject(model, pos[0] + (20.0 * floatsin(-angle, degrees)), pos[1] + (20.0 * floatcos(-angle, degrees)), pos[2] + 5, 0, 0, angle);
  6329.  
  6330.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6331.  
  6332.     new string[144];
  6333.     format(string, sizeof(string), "You have created a new object [model: %i, id: %i, position: %f, %f, %f, 0.0, 0.0, %f].", model, object, pos[0], pos[1], pos[2], angle);
  6334.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6335.     return 1;
  6336. }
  6337.  
  6338. CMD:destroyobject(playerid, params[])
  6339. {
  6340.     //check if the player is a admin
  6341.     LevelCheck(playerid, 4);
  6342.  
  6343.     new object;
  6344.     if(sscanf(params, "i", object)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /destroyobject [object]");
  6345.  
  6346.     if(! IsValidObject(object)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified object is invalid.");
  6347.  
  6348.     DestroyObject(object);
  6349.  
  6350.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6351.  
  6352.     new string[144];
  6353.     format(string, sizeof(string), "You have destroyed the object id %i.", object);
  6354.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6355.     return 1;
  6356. }
  6357.  
  6358. CMD:editobject(playerid, params[])
  6359. {
  6360.     //check if the player is a admin
  6361.     LevelCheck(playerid, 4);
  6362.  
  6363.     new object;
  6364.     if(sscanf(params, "i", object)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /editobject [object]");
  6365.  
  6366.     if(! IsValidObject(object)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified object is invalid.");
  6367.  
  6368.     EditObject(playerid, object);
  6369.  
  6370.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6371.  
  6372.     new string[144];
  6373.     format(string, sizeof(string), "You are now editing the object id %i.", object);
  6374.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6375.     SendClientMessage(playerid, COLOR_DODGER_BLUE, "Hold SPACE and use MOUSE to move camera.");
  6376.     return 1;
  6377. }
  6378.  
  6379. //------------------------------------------------
  6380.  
  6381. //Admin level 5+
  6382. CMD:gmx(playerid, params[])
  6383. {
  6384.     //check if the player is a admin
  6385.     LevelCheck(playerid, 5);
  6386.  
  6387.     new time;
  6388.     if(sscanf(params, "I(5)", time)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /gmx [*interval]");
  6389.  
  6390.     if(time < 0 || time > 5*60) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid restart time, must be b/w 0-360 seconds.");
  6391.  
  6392.     if(time > 0)
  6393.     {
  6394.         SetTimer("RestartTimer", 1000 * time, false);
  6395.         new string[144];
  6396.         format(string, sizeof(string), ">> Admin %s[%i] has set the gamemode to reboot. The reboot will occur in %i seconds...", ReturnPlayerName(playerid), playerid, time);
  6397.         SendClientMessageToAll(COLOR_LIME, string);
  6398.     }
  6399.     else
  6400.     {
  6401.         new string[144];
  6402.         format(string, sizeof(string), ">> Admin %s[%i] has set the gamemode to reboot. rebooting...", ReturnPlayerName(playerid), playerid);
  6403.         SendClientMessageToAll(COLOR_LIME, string);
  6404.         SendRconCommand("gmx");
  6405.     }
  6406.     return 1;
  6407. }
  6408.  
  6409. forward RestartTimer();
  6410. public RestartTimer() return SendRconCommand("gmx");
  6411.  
  6412. CMD:removeuser(playerid, params[])
  6413. {
  6414.     //check if the player is a admin
  6415.     LevelCheck(playerid, 5);
  6416.  
  6417.     new name[MAX_PLAYER_NAME];
  6418.     if(sscanf(params, "s[24]", name)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /removeuser [username]");
  6419.  
  6420.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", name);
  6421.     if(key == DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specififed account doesn't exist.");
  6422.     else
  6423.     {
  6424.         if(DB::GetIntEntry(gGlobal[s_usertable], key, "admin") > GetPlayerGAdminLevel(playerid))
  6425.         {
  6426.             return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specififed account is a higher level admin.");
  6427.         }
  6428.     }
  6429.  
  6430.     if(! strcmp(ReturnPlayerName(playerid), name, false)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot delete your own account.");
  6431.  
  6432.     LOOP_PLAYERS(i)
  6433.     {
  6434.         if(! strcmp(name, ReturnPlayerName(i), true))
  6435.         {
  6436.             new string[144];
  6437.             format(string, sizeof(string), "* admin %s[%i] has deleted your account.", ReturnPlayerName(playerid), playerid);
  6438.             SendClientMessage(i, COLOR_RED, string);
  6439.             DelayKick(i);
  6440.             break;
  6441.         }
  6442.     }
  6443.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6444.  
  6445.     DB::DeleteRow(gGlobal[s_usertable], key);
  6446.     new string[144];
  6447.     format(string, sizeof(string), "You have deleted %s's account.", name);
  6448.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6449.     return 1;
  6450. }
  6451.  
  6452. CMD:fakecmd(playerid, params[])
  6453. {
  6454.     //check if the player is a admin
  6455.     LevelCheck(playerid, 5);
  6456.  
  6457.     new target, cmdtext[45];
  6458.     if(sscanf(params, "us[45]", target, cmdtext)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /fakecmd [player] [command]");
  6459.  
  6460.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  6461.  
  6462.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  6463.  
  6464.     if(strfind(cmdtext, "/", false) == -1) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Add '/' before putting the command name to avoid UNKNOWN COMMAND error.");
  6465.  
  6466.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6467.     CallRemoteFunction("OnPlayerCommandText", "is", target, cmdtext);
  6468.  
  6469.     new string[144];
  6470.     format(string, sizeof(string), "Fake command sent [Player: %s[%i] | Command: %s]", ReturnPlayerName(target), target, cmdtext);
  6471.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6472.     return 1;
  6473. }
  6474.  
  6475. CMD:fakechat(playerid, params[])
  6476. {
  6477.     //check if the player is a admin
  6478.     LevelCheck(playerid, 5);
  6479.  
  6480.     new target, text[129];
  6481.     if(sscanf(params, "us[129]", target, text)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /fakechat [player] [text]");
  6482.  
  6483.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  6484.  
  6485.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  6486.  
  6487.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6488.  
  6489.     new string[144];
  6490.     format(string, sizeof(string), "%i %s: %s", target, ReturnPlayerName(target), text);
  6491.     SendClientMessageToAll(GetPlayerColor(target), string);
  6492.  
  6493.     format(string, sizeof(string), "Fake chat sent [Player: %s[%i] | Text: %s]", ReturnPlayerName(target), target, text);
  6494.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6495.     return 1;
  6496. }
  6497.  
  6498. CMD:setlevel(playerid, params[])
  6499. {
  6500.     //check if the player is a admin
  6501.     LevelCheck(playerid, 5);
  6502.  
  6503.     new target, level;
  6504.     if(sscanf(params, "ui", target, level)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setlevel [player] [level]");
  6505.  
  6506.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  6507.  
  6508.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  6509.  
  6510.     if(level < 0 || level > MAX_ADMIN_LEVELS) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid level, mus be b/w 0-"#MAX_ADMIN_LEVELS".");
  6511.  
  6512.     if(level == GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is already of that level.");
  6513.  
  6514.     new string[144];
  6515.     if(GetPlayerGAdminLevel(playerid) < level)
  6516.     {
  6517.         GameTextForPlayer(target, "~g~~h~~h~~h~Promoted", 5000, 1);
  6518.         format(string, sizeof(string), "You have been promoted to admin level %i by %s[%i], Congratulation.", level, ReturnPlayerName(playerid), playerid);
  6519.         SendClientMessage(target, COLOR_DODGER_BLUE, string);
  6520.         format(string, sizeof(string), "You have promoted %s[%i] to admin level %i.", ReturnPlayerName(target), target, level);
  6521.         SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6522.     }
  6523.     else if(GetPlayerGAdminLevel(playerid) > level)
  6524.     {
  6525.         GameTextForPlayer(target, "~r~~h~~h~~h~Demoted", 5000, 1);
  6526.         format(string, sizeof(string), "You have been demoted to admin level %i by %s[%i], Sorry.", level, ReturnPlayerName(playerid), playerid);
  6527.         SendClientMessage(target, COLOR_DODGER_BLUE, string);
  6528.         format(string, sizeof(string), "You have demoted %s[%i] to admin level %i.", ReturnPlayerName(target), target, level);
  6529.         SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6530.     }
  6531.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  6532.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6533.  
  6534.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  6535.     DB::SetIntEntry(gGlobal[s_usertable], key, "admin", level);
  6536.  
  6537.     gUser[target][u_admin] = level;
  6538.     return 1;
  6539. }
  6540.  
  6541. CMD:setvip(playerid, params[])
  6542. {
  6543.     //check if the player is a admin
  6544.     LevelCheck(playerid, 5);
  6545.  
  6546.     new target, level;
  6547.     if(sscanf(params, "ui", target, level)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /setvip [player] [level]");
  6548.  
  6549.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  6550.  
  6551.     if(GetPlayerGAdminLevel(playerid) < GetPlayerGAdminLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot use this command on higher level admin.");
  6552.  
  6553.     if(level < 0 || level > MAX_VIP_LEVELS) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid level, mus be b/w 0-"#MAX_VIP_LEVELS".");
  6554.  
  6555.     if(level == GetPlayerGVipLevel(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Player is already of that level.");
  6556.  
  6557.     new string[144];
  6558.     if(GetPlayerGVipLevel(playerid) < level)
  6559.     {
  6560.         GameTextForPlayer(target, "~g~~h~~h~~h~Premium", 5000, 1);
  6561.         format(string, sizeof(string), "You have been given VIP level %i by %s[%i], Congratulation.", level, ReturnPlayerName(playerid), playerid);
  6562.         SendClientMessage(target, COLOR_DODGER_BLUE, string);
  6563.         format(string, sizeof(string), "You have given %s[%i] VIP level of %i.", ReturnPlayerName(target), target, level);
  6564.         SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6565.     }
  6566.     else if(GetPlayerGAdminLevel(playerid) > level)
  6567.     {
  6568.         GameTextForPlayer(target, "~r~~h~~h~~h~Demoted", 5000, 1);
  6569.         format(string, sizeof(string), "Your VIP level havs been taken and reseted to level %i by %s[%i], Sorry.", level, ReturnPlayerName(playerid), playerid);
  6570.         SendClientMessage(target, COLOR_DODGER_BLUE, string);
  6571.         format(string, sizeof(string), "You have taken %s[%i]'s VIP level and reseted it to level %i.", ReturnPlayerName(target), target, level);
  6572.         SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6573.     }
  6574.     PlayerPlaySound(target, 1057, 0.0, 0.0, 0.0);
  6575.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6576.  
  6577.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  6578.     DB::SetIntEntry(gGlobal[s_usertable], key, "vip", level);
  6579.  
  6580.     gUser[target][u_vip] = level;
  6581.     return 1;
  6582. }
  6583.  
  6584. CMD:lock(playerid, params[])
  6585. {
  6586.     //check if the player is a admin
  6587.     LevelCheck(playerid, 5);
  6588.  
  6589.     if(gGlobal[s_locked]) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The server is already locked, try /unlock to unlock the server.");
  6590.  
  6591.     gGlobal[s_locktd][0] = TextDrawCreate(1.000000, 1.000000, "box");
  6592.     TextDrawBackgroundColor(gGlobal[s_locktd][0], 255);
  6593.     TextDrawFont(gGlobal[s_locktd][0], 1);
  6594.     TextDrawLetterSize(gGlobal[s_locktd][0], 0.000000, 51.000000);
  6595.     TextDrawColor(gGlobal[s_locktd][0], -1);
  6596.     TextDrawSetOutline(gGlobal[s_locktd][0], 0);
  6597.     TextDrawSetProportional(gGlobal[s_locktd][0], 1);
  6598.     TextDrawSetShadow(gGlobal[s_locktd][0], 1);
  6599.     TextDrawUseBox(gGlobal[s_locktd][0], 1);
  6600.     TextDrawBoxColor(gGlobal[s_locktd][0], 255);
  6601.     TextDrawTextSize(gGlobal[s_locktd][0], 650.000000, 0.000000);
  6602.     TextDrawSetSelectable(gGlobal[s_locktd][0], 0);
  6603.  
  6604.     gGlobal[s_locktd][1] = TextDrawCreate(330.000000, 170.000000, "~y~Server Locked");
  6605.     TextDrawAlignment(gGlobal[s_locktd][1], 2);
  6606.     TextDrawBackgroundColor(gGlobal[s_locktd][1], 255);
  6607.     TextDrawFont(gGlobal[s_locktd][1], 1);
  6608.     TextDrawLetterSize(gGlobal[s_locktd][1], 1.000000, 5.800000);
  6609.     TextDrawColor(gGlobal[s_locktd][1], -1);
  6610.     TextDrawSetOutline(gGlobal[s_locktd][1], 0);
  6611.     TextDrawSetProportional(gGlobal[s_locktd][1], 1);
  6612.     TextDrawSetShadow(gGlobal[s_locktd][1], 1);
  6613.     TextDrawSetSelectable(gGlobal[s_locktd][1], 0);
  6614.  
  6615.     gGlobal[s_locktd][2] = TextDrawCreate(330.000000, 219.000000, "An high level admin has locked the server temporarily! Contact server website if you have any queries!");
  6616.     TextDrawAlignment(gGlobal[s_locktd][2], 2);
  6617.     TextDrawBackgroundColor(gGlobal[s_locktd][2], 255);
  6618.     TextDrawFont(gGlobal[s_locktd][2], 1);
  6619.     TextDrawLetterSize(gGlobal[s_locktd][2], 0.270000, 1.500000);
  6620.     TextDrawColor(gGlobal[s_locktd][2], -1);
  6621.     TextDrawSetOutline(gGlobal[s_locktd][2], 0);
  6622.     TextDrawSetProportional(gGlobal[s_locktd][2], 1);
  6623.     TextDrawSetShadow(gGlobal[s_locktd][2], 1);
  6624.     TextDrawSetSelectable(gGlobal[s_locktd][2], 0);
  6625.  
  6626.     LOOP_PLAYERS(i)
  6627.     {
  6628.         if(! IsPlayerGAdmin(playerid))
  6629.         {
  6630.             TogglePlayerSpectating(i, true);
  6631.             for(new x; x < 3; x++)
  6632.             {
  6633.                 TextDrawShowForPlayer(i, gGlobal[s_locktd][x]);
  6634.             }
  6635.         }
  6636.     }
  6637.  
  6638.     gGlobal[s_locked] = true;
  6639.  
  6640.     SendClientMessage(playerid, COLOR_RED, " ");
  6641.     SendClientMessage(playerid, COLOR_RED, "- Server Locked -");
  6642.     new string[144];
  6643.     format(string, sizeof(string), "admin %s[%i] has locked the server.", ReturnPlayerName(playerid), playerid);
  6644.     SendClientMessage(playerid, COLOR_RED, string);
  6645.     return 1;
  6646. }
  6647.  
  6648. CMD:unlock(playerid, params[])
  6649. {
  6650.     //check if the player is a admin
  6651.     LevelCheck(playerid, 5);
  6652.  
  6653.     if(! gGlobal[s_locked]) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The server is already unlocked, try /lock to lock the server.");
  6654.  
  6655.     for(new i; i < 3; i++)
  6656.     {
  6657.         TextDrawHideForAll(gGlobal[s_locktd][i]);
  6658.         TextDrawDestroy(gGlobal[s_locktd][i]);
  6659.     }
  6660.     LOOP_PLAYERS(i)
  6661.     {
  6662.         if(! IsPlayerGAdmin(playerid))
  6663.         {
  6664.             TogglePlayerSpectating(i, false);
  6665.  
  6666.             ForceClassSelection(i);
  6667.             SetPlayerHealth(i, 0.0);
  6668.         }
  6669.     }
  6670.  
  6671.     gGlobal[s_locked] = false;
  6672.  
  6673.     SendClientMessage(playerid, COLOR_RED, " ");
  6674.     SendClientMessage(playerid, COLOR_RED, "- Server Unlocked -");
  6675.     new string[144];
  6676.     format(string, sizeof(string), "admin %s[%i] has unlocked the server.", ReturnPlayerName(playerid), playerid);
  6677.     SendClientMessage(playerid, COLOR_RED, string);
  6678.     return 1;
  6679. }
  6680.  
  6681. CMD:forbidname(playerid, params[])
  6682. {
  6683.     //check if the player is a admin
  6684.     LevelCheck(playerid, 5);
  6685.  
  6686.     new name[MAX_PLAYER_NAME];
  6687.     if(sscanf(params, "s[24]", name)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /forbidname [username]");
  6688.  
  6689.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", name);
  6690.     if(key != DB_INVALID_KEY)
  6691.     {
  6692.         if(DB::GetIntEntry(gGlobal[s_usertable], key, "admin") > GetPlayerGAdminLevel(playerid))
  6693.         {
  6694.             return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specififed username is a higher level registered admin.");
  6695.         }
  6696.     }
  6697.  
  6698.     if(gGlobal[s_fnamescount] >= (MAX_FORBIDDEN_ITEMS - 1))
  6699.     {
  6700.         return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't anymore forbidden names(limit can't be exceeded), kindly increase ''MAX_FORBIDDEN_ITEMS'' to a higher value.");
  6701.     }
  6702.  
  6703.     if(DB::RetrieveKey(gGlobal[s_fnamestable], "name", name) != DB::INVALID_KEY)
  6704.     {
  6705.         return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The name already exists in the forbiden names list.");
  6706.     }
  6707.  
  6708.     format(gForbidden_Names[gGlobal[s_fnamescount]], MAX_PLAYER_NAME, name);
  6709.     DB::CreateRow(gGlobal[s_fnamestable], "name", name);
  6710.  
  6711.     gGlobal[s_fnamescount] += 1;
  6712.  
  6713.     new string[144];
  6714.     LOOP_PLAYERS(i)
  6715.     {
  6716.         if( ! isnull(name) &&
  6717.             ! strcmp(ReturnPlayerName(i), name, true))
  6718.         {
  6719.             SendClientMessage(i, COLOR_RED, "* You have a forbidden/banned username, please change it in order to play.");
  6720.  
  6721.             format(string, sizeof(string), "* %s[%i] has been automatically kicked [Reason: Forbidden name]", ReturnPlayerName(i), i);
  6722.             SendClientMessageToAll(COLOR_RED, string);
  6723.  
  6724.             DelayKick(i);
  6725.             break;
  6726.         }
  6727.     }
  6728.  
  6729.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6730.  
  6731.     format(string, sizeof(string), "* You have added ''%s'' to forbidden names list. (use /reloaddb to save all forbidden lists)", name);
  6732.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6733.     return 1;
  6734. }
  6735.  
  6736. CMD:forbidtag(playerid, params[])
  6737. {
  6738.     //check if the player is a admin
  6739.     LevelCheck(playerid, 5);
  6740.  
  6741.     new tag[MAX_PLAYER_NAME];
  6742.     if(sscanf(params, "s[24]", tag)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /forbidtag [part of name/tag]");
  6743.  
  6744.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", tag);
  6745.     if(key != DB_INVALID_KEY)
  6746.     {
  6747.         if(DB::GetIntEntry(gGlobal[s_usertable], key, "admin") > GetPlayerGAdminLevel(playerid))
  6748.         {
  6749.             return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specififed part of name/tag is used by a higher level registered admin.");
  6750.         }
  6751.     }
  6752.  
  6753.     if(gGlobal[s_ftagscount] >= (MAX_FORBIDDEN_ITEMS - 1))
  6754.     {
  6755.         return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't anymore forbidden tags(limit can't be exceeded), kindly increase ''MAX_FORBIDDEN_ITEMS'' to a higher value.");
  6756.     }
  6757.  
  6758.     if(DB::RetrieveKey(gGlobal[s_ftagstable], "tag", tag) != DB::INVALID_KEY)
  6759.     {
  6760.         return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The tag already exists in the forbiden tags list.");
  6761.     }
  6762.  
  6763.     format(gForbidden_Names[gGlobal[s_ftagscount]], MAX_PLAYER_NAME, tag);
  6764.     DB::CreateRow(gGlobal[s_ftagstable], "tag", tag);
  6765.  
  6766.     gGlobal[s_ftagscount] += 1;
  6767.  
  6768.     new string[144];
  6769.     LOOP_PLAYERS(i)
  6770.     {
  6771.         if( ! isnull(tag) &&
  6772.             strfind(ReturnPlayerName(i), tag, true) != -1)
  6773.         {
  6774.             format(string, sizeof(string), "* You have a forbidden/banned part of name [tag: %s], please change it in order to play.", tag);
  6775.             SendClientMessage(i, COLOR_RED, string);
  6776.  
  6777.             format(string, sizeof(string), "* %s[%i] has been automatically kicked [Reason: Forbidden part of name/tag]", ReturnPlayerName(i), i);
  6778.             SendClientMessageToAll(COLOR_RED, string);
  6779.  
  6780.             DelayKick(i);
  6781.             break;
  6782.         }
  6783.     }
  6784.  
  6785.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6786.  
  6787.     format(string, sizeof(string), "* You have added ''%s'' to forbidden names list. (use /reloaddb to save all forbidden lists)", tag);
  6788.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6789.     return 1;
  6790. }
  6791.  
  6792. CMD:forbidword(playerid, params[])
  6793. {
  6794.     //check if the player is a admin
  6795.     LevelCheck(playerid, 5);
  6796.  
  6797.     new word[144];
  6798.     if(sscanf(params, "s[144]", word)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /forbidword [word]");
  6799.  
  6800.     if(gGlobal[s_fwordscount] >= (MAX_FORBIDDEN_ITEMS - 1))
  6801.     {
  6802.         return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You can't anymore forbidden words(limit can't be exceeded), kindly increase ''MAX_FORBIDDEN_ITEMS'' to a higher value.");
  6803.     }
  6804.  
  6805.     if(DB::RetrieveKey(gGlobal[s_fwordstable], "word", word) != DB::INVALID_KEY)
  6806.     {
  6807.         return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The word already exists in the forbiden words list.");
  6808.     }
  6809.  
  6810.     format(gForbidden_Words[gGlobal[s_fwordscount]], 150, word);
  6811.     DB::CreateRow(gGlobal[s_fwordstable], "word", word);
  6812.  
  6813.     gGlobal[s_fwordscount] += 1;
  6814.  
  6815.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6816.  
  6817.     new string[144];
  6818.     format(string, sizeof(string), "* You have added ''%s'' to forbidden words list. (use /reloaddb to save all forbidden lists)", word);
  6819.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6820.     return 1;
  6821. }
  6822.  
  6823. CMD:reloaddb(playerid, params[])
  6824. {
  6825.     //check if the player is a admin
  6826.     LevelCheck(playerid, 5);
  6827.  
  6828.     gGlobal[s_fwordscount] = DB::CountRows(gGlobal[s_fwordstable]);
  6829.     for(new i = 0; i < MAX_FORBIDDEN_ITEMS; i++)
  6830.     {
  6831.         gForbidden_Words[i][0] = EOS;
  6832.  
  6833.         if(i < gGlobal[s_fwordscount])
  6834.         {
  6835.             DB::GetStringEntry(gGlobal[s_fwordstable], i + 1, "word", gForbidden_Words[i]);
  6836.         }
  6837.     }
  6838.  
  6839.     gGlobal[s_fnamescount] = DB::CountRows(gGlobal[s_fnamestable]);
  6840.     for(new i = 0; i < MAX_FORBIDDEN_ITEMS; i++)
  6841.     {
  6842.         gForbidden_Names[i][0] = EOS;
  6843.  
  6844.         if(i < gGlobal[s_fnamescount])
  6845.         {
  6846.             DB::GetStringEntry(gGlobal[s_fnamestable], i + 1, "name", gForbidden_Names[i]);
  6847.         }
  6848.     }
  6849.  
  6850.     gGlobal[s_ftagscount] = DB::CountRows(gGlobal[s_ftagstable]);
  6851.     for(new i = 0; i < MAX_FORBIDDEN_ITEMS; i++)
  6852.     {
  6853.         gForbidden_Tags[i][0] = EOS;
  6854.  
  6855.         if(i < gGlobal[s_ftagscount])
  6856.         {
  6857.             DB::GetStringEntry(gGlobal[s_ftagstable], i + 1, "tag", gForbidden_Tags[i]);
  6858.         }
  6859.     }
  6860.  
  6861.     SendClientMessage(playerid, COLOR_DODGER_BLUE, "** Server database has been reloaded successfully. (Forbidden names, words, tags are now reloaded)");
  6862.     return 1;
  6863. }
  6864.  
  6865. CMD:pickup(playerid, params[])
  6866. {
  6867.     //check if the player is a admin
  6868.     LevelCheck(playerid, 5);
  6869.  
  6870.     new model;
  6871.     if(sscanf(params, "i", model)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /pickup [model]");
  6872.  
  6873.     if(0 > model > 20000) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified model is invalid.");
  6874.  
  6875.     new Float:pos[3];
  6876.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  6877.  
  6878.     new Float:angle;
  6879.     GetPlayerFacingAngle(playerid, angle);
  6880.  
  6881.     new pickup = CreatePickup(model, 1, pos[0] + (20.0 * floatsin(-angle, degrees)), pos[1] + (20.0 * floatcos(-angle, degrees)), pos[2] + 5);
  6882.  
  6883.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6884.  
  6885.     new string[144];
  6886.     format(string, sizeof(string), "You have created a new object [model: %i, id: %i, position: %f, %f, %f].", model, pickup, pos[0], pos[1], pos[2]);
  6887.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6888.     return 1;
  6889. }
  6890.  
  6891. CMD:destroypickup(playerid, params[])
  6892. {
  6893.     //check if the player is a admin
  6894.     LevelCheck(playerid, 5);
  6895.  
  6896.     new pickup;
  6897.     if(sscanf(params, "i", pickup)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /destroypickup [pickup]");
  6898.  
  6899.     DestroyPickup(pickup);
  6900.  
  6901.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  6902.  
  6903.     new string[144];
  6904.     format(string, sizeof(string), "You have destroyed the pickup id %i.", pickup);
  6905.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  6906.     return 1;
  6907. }
  6908.  
  6909. //------------------------------------------------
  6910.  
  6911. //Player commands
  6912. CMD:admins(playerid, params[])
  6913. {
  6914.     new string[128], bool:count = false, rank[35], status[15];
  6915.  
  6916.     SendClientMessage(playerid, COLOR_ORANGE_RED, " ");
  6917.     LOOP_PLAYERS(i)
  6918.     {
  6919.         if(IsPlayerGAdmin(i) || IsPlayerAdmin(i))
  6920.         {
  6921.             if(! count) SendClientMessage(playerid, COLOR_ORANGE_RED, "- Online Administrators -");
  6922.  
  6923.             if(GetPVarType(playerid, "GAdmin_Onduty") != PLAYER_VARTYPE_NONE) status = "On Duty";
  6924.             else status = "Playing";
  6925.  
  6926.             if(IsPlayerAdmin(i)) rank = "RCON Admin";
  6927.             else
  6928.             {
  6929.                 switch(GetPlayerGAdminLevel(i))
  6930.                 {
  6931.                     case 1: rank = "Trial Admin";
  6932.                     case 2: rank = "Junior Admin";
  6933.                     case 3: rank = "Senior Admin";
  6934.                     case 4: rank = "Lead Admin";
  6935.                     case 5: rank = "Master Admin";
  6936.                     default: rank = "Server Manager";
  6937.                 }
  6938.             }
  6939.  
  6940.             format(string, sizeof(string), "%s [%i] | Rank: %s | Level %i | Status: %s", ReturnPlayerName(i), i, rank, GetPlayerGAdminLevel(i), status);
  6941.             SendClientMessage(playerid, COLOR_ORANGE_RED, string);
  6942.             count = true;
  6943.         }
  6944.     }
  6945.     if(! count) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: No admin on-duty currently.");
  6946.     return 1;
  6947. }
  6948.  
  6949. CMD:vips(playerid, params[])
  6950. {
  6951.     new string[128], bool:count = false, rank[28];
  6952.  
  6953.     SendClientMessage(playerid, COLOR_ORANGE_RED, " ");
  6954.     LOOP_PLAYERS(i)
  6955.     {
  6956.         if(IsPlayerGVip(i))
  6957.         {
  6958.             if(! count) SendClientMessage(playerid, COLOR_ORANGE_RED, "- Online Donaters -");
  6959.  
  6960.             switch(GetPlayerGVipLevel(i))
  6961.             {
  6962.                 case 1: rank = "Bronse VIP";
  6963.                 case 2: rank = "Silver VIP";
  6964.                 case 3: rank = "Gold VIP";
  6965.             }
  6966.  
  6967.             format(string, sizeof(string), "%s [%i] | Rank: %s | Level %i", ReturnPlayerName(i), i, rank, GetPlayerGVipLevel(i));
  6968.             SendClientMessage(playerid, COLOR_ORANGE_RED, string);
  6969.             count = true;
  6970.         }
  6971.     }
  6972.     if(! count) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: No vip online currently.");
  6973.     return 1;
  6974. }
  6975.  
  6976. CMD:report(playerid, params[])
  6977. {
  6978.     new target, reason[98];
  6979.     if(sscanf(params, "us[98]", target, reason)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /report [player] [reason]");
  6980.  
  6981.     if(strlen(reason) < 1) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Report reason length must be greater than 1.");
  6982.  
  6983.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not conected.");
  6984.  
  6985.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot report yourself.");
  6986.  
  6987.     new hour, minute, second;
  6988.     gettime(hour, minute, second);
  6989.  
  6990.     gUser[playerid][u_lastreported] = target;
  6991.     gUser[playerid][u_lastreportedtime] = 80;
  6992.  
  6993.     new string[145];
  6994.     format(string, sizeof(string), "%02d:%02d | %s[%i] reported against %s[%i] | Reason: %s", hour, minute, ReturnPlayerName(playerid), playerid, ReturnPlayerName(target), target, reason);
  6995.     SendClientMessageForAdmins(COLOR_YELLOW, string);
  6996.  
  6997.     for(new i = (sizeof(gReportlog) - 1); i > 0; i--)
  6998.     {
  6999.         format(gReportlog[(i - 1)], 145, gReportlog[i]);
  7000.     }
  7001.     format(gReportlog[(sizeof(gReportlog) - 1)], 145, ""GREEN"%02d:%02d\n"WHITE"%s[%i] reported against %s[%i]\n"WHITE"Reason: %s", hour, minute, ReturnPlayerName(playerid), playerid, ReturnPlayerName(target), target, reason);
  7002.  
  7003.     #if defined REPORT_TEXTDRAW
  7004.         format(string, sizeof(string), "~w~~h~[%02i:%02i] ~b~~h~~h~~h~%s(%i) ~w~~h~reported against ~b~~h~~h~~h~%s(%i) ~w~~h~Reason: %s", hour, minute, ReturnPlayerName(playerid), playerid, ReturnPlayerName(target), target, reason);
  7005.         TextDrawSetString(gGlobal[s_reporttd], string);
  7006.  
  7007.         LOOP_PLAYERS(i)
  7008.         {
  7009.             if(IsPlayerGAdmin(i))
  7010.             {
  7011.                 TextDrawShowForPlayer(i, gGlobal[s_reporttd]);
  7012.             }
  7013.         }
  7014.     #endif
  7015.  
  7016.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  7017.  
  7018.     format(string, sizeof(string), "Your report against %s[%i] has been sent to online admins.", ReturnPlayerName(target), target);
  7019.     SendClientMessage(playerid, COLOR_YELLOW, string);
  7020.     return 1;
  7021. }
  7022.  
  7023. CMD:register(playerid, params[])
  7024. {
  7025.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  7026.     if(key != DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The username is already registered. Try /login instead.");
  7027.  
  7028.     if(GetPVarType(playerid, "GAdmin_Loggedin") != PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You are already registered and logged in.");
  7029.  
  7030.     SendClientMessage(playerid, COLOR_GREEN, "ACCOUNT: Welcome user, type in the password to sign up.");
  7031.  
  7032.     new string[156];
  7033.     format(string, sizeof(string), ""SAMP_BLUE"Your account "RED"%s "SAMP_BLUE"doesn't exist in database.\n\nType your complicated password above to continue", ReturnPlayerName(playerid));
  7034.     ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register account", string, "Register", "Skip");
  7035.     return 1;
  7036. }
  7037.  
  7038. CMD:login(playerid, params[])
  7039. {
  7040.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  7041.     if(key == DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The username is not registered. Try /register instead.");
  7042.  
  7043.     if(GetPVarType(playerid, "GAdmin_Loggedin") != PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You are already registered and logged in.");
  7044.  
  7045.     SendClientMessage(playerid, COLOR_GREEN, "ACCOUNT: Welcome user, type in the password to sign in and load your stats.");
  7046.  
  7047.     new string[156];
  7048.     format(string, sizeof(string), ""SAMP_BLUE"Your account "RED"%s "SAMP_BLUE"is registered.\n\nType your complicated password above to continue", ReturnPlayerName(playerid));
  7049.     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login account", string, "Login", "Skip");
  7050.     return 1;
  7051. }
  7052.  
  7053. CMD:changename(playerid, params[])
  7054. {
  7055.     if(GetPVarType(playerid, "GAdmin_Loggedin") == PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You are not registered or logged in.");
  7056.  
  7057.     new name[MAX_PLAYER_NAME];
  7058.     if(sscanf(params, "s[24]", name)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /changename [newname]");
  7059.  
  7060.     if(strlen(name) < 4 || strlen(name) > MAX_PLAYER_NAME) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid user name length, must be b/w 4-24.");
  7061.  
  7062.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", name);
  7063.     if(key != DB_INVALID_KEY) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: That username is already registered, try another one!");
  7064.  
  7065.     key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  7066.     DB::SetStringEntry(gGlobal[s_usertable], key, "username", name);
  7067.  
  7068.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  7069.  
  7070.     new string[144];
  7071.     format(string, sizeof(string), "ACCOUNT: You have changed your username from %s to %s.", ReturnPlayerName(playerid), name);
  7072.     SendClientMessage(playerid, COLOR_GREEN, string);
  7073.     SetPlayerName(playerid, name);
  7074.  
  7075.     GameTextForPlayer(playerid, "~g~NAME CHANGED!", 5000, 3);
  7076.     return 1;
  7077. }
  7078.  
  7079. CMD:trocarsenha(playerid, params[])
  7080. {
  7081.     if(GetPVarType(playerid, "GAdmin_Loggedin") == PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You are not registered or logged in.");
  7082.  
  7083.     new pass[MAX_PLAYER_NAME];
  7084.     if(sscanf(params, "s[24]", pass)) return SendClientMessage(playerid, COLOR_THISTLE, "USO: /trocarsenha [nova senha]");
  7085.  
  7086.     if(strlen(pass) < 4 || strlen(pass) > MAX_PLAYER_NAME) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: Invalid password length, must be b/w 4-24.");
  7087.  
  7088.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  7089.     new hash[65];
  7090.     DB::Hash(hash, sizeof(hash), pass);
  7091.     DB::SetStringEntry(gGlobal[s_usertable], key, "password", hash);
  7092.  
  7093.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  7094.  
  7095.     SendClientMessage(playerid, COLOR_GREEN, "CONTA: você mudou sua senha, não a esqueça");
  7096.  
  7097.     GameTextForPlayer(playerid, "~g~SENHA ALTERADA!", 5000, 3);
  7098.     return 1;
  7099. }
  7100.  
  7101. CMD:autologin(playerid, params[])
  7102. {
  7103.     if(GetPVarType(playerid, "GAdmin_Loggedin") == PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You are not registered or logged in.");
  7104.  
  7105.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  7106.     if(DB::GetIntEntry(gGlobal[s_usertable], key, "autologin"))
  7107.     {
  7108.         DB::SetIntEntry(gGlobal[s_usertable], key, "autologin", 0);
  7109.         SendClientMessage(playerid, COLOR_GREEN, "CONTA: você DESATIVOU o auto-login para essa conta.");
  7110.     }
  7111.     else
  7112.     {
  7113.         DB::SetIntEntry(gGlobal[s_usertable], key, "autologin", 1);
  7114.         SendClientMessage(playerid, COLOR_GREEN, "CONTA: você ATIVOU o auto-login para essa conta.");
  7115.     }
  7116.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  7117.     return 1;
  7118. }
  7119.  
  7120. CMD:salvardados(playerid, params[])
  7121. {
  7122.     if(GetPVarType(playerid, "GAdmin_Loggedin") == PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You are not registered or logged in.");
  7123.  
  7124.     GetPlayerConnectedTime(playerid, gUser[playerid][u_hours], gUser[playerid][u_minutes], gUser[playerid][u_seconds]);
  7125.  
  7126.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(playerid));
  7127.     DB::SetIntEntry(gGlobal[s_usertable], key, "kills", gUser[playerid][u_kills]);
  7128.     DB::SetIntEntry(gGlobal[s_usertable], key, "deaths", gUser[playerid][u_deaths]);
  7129.     DB::SetIntEntry(gGlobal[s_usertable], key, "score", GetPlayerScore(playerid));
  7130.     DB::SetIntEntry(gGlobal[s_usertable], key, "money", GetPlayerMoney(playerid));
  7131.     DB::SetIntEntry(gGlobal[s_usertable], key, "hours", DB::GetIntEntry(gGlobal[s_usertable], key, "hours") + gUser[playerid][u_hours]);
  7132.     DB::SetIntEntry(gGlobal[s_usertable], key, "minutes", DB::GetIntEntry(gGlobal[s_usertable], key, "minutes") + gUser[playerid][u_minutes]);
  7133.     DB::SetIntEntry(gGlobal[s_usertable], key, "seconds", DB::GetIntEntry(gGlobal[s_usertable], key, "seconds") + gUser[playerid][u_seconds]);
  7134.  
  7135.     SendClientMessage(playerid, COLOR_GREEN, "CONTA:Suas estatísticas foram salvas");
  7136.     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  7137.     return 1;
  7138. }
  7139.  
  7140. CMD:est(playerid, params[])
  7141. {
  7142.     new target;
  7143.     if(sscanf(params, "u", target))
  7144.     {
  7145.         target = playerid;
  7146.         SendClientMessage(playerid, COLOR_KHAKI, "DICA: Para ver estastisca de outro jogador use /est [ID]");
  7147.     }
  7148.  
  7149.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "AVISO:Este jogador não está conectado.");
  7150.  
  7151.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(target));
  7152.  
  7153.     GetPlayerConnectedTime(target, gUser[target][u_hours], gUser[target][u_minutes], gUser[target][u_seconds]);
  7154.     //Stats stuff !:D!
  7155.     new DIALOG[676];
  7156.     new string[156];
  7157.     format(string, sizeof(string), ""WHITE"You are now viewing "LIME"%s's [id: %i]"WHITE", statics:\n\n", ReturnPlayerName(target), target);
  7158.     strcat(DIALOG, string);
  7159.     format(string, sizeof(string), ""SAMP_BLUE"Kills: "TOMATO"%i\n", gUser[target][u_kills]);
  7160.     strcat(DIALOG, string);
  7161.     format(string, sizeof(string), ""SAMP_BLUE"Deaths: "TOMATO"%i\n", gUser[target][u_deaths]);
  7162.     strcat(DIALOG, string);
  7163.     format(string, sizeof(string), ""SAMP_BLUE"Session Kills: "TOMATO"%i\n", gUser[target][u_sessionkills]);
  7164.     strcat(DIALOG, string);
  7165.     format(string, sizeof(string), ""SAMP_BLUE"Session Deaths: "TOMATO"%i\n", gUser[target][u_sessiondeaths]);
  7166.     strcat(DIALOG, string);
  7167.     format(string, sizeof(string), ""SAMP_BLUE"Killing Spree: "TOMATO"%i\n", gUser[target][u_spree]);
  7168.     strcat(DIALOG, string);
  7169.     //calculate Kill/Deaths ratio
  7170.     new Float:ratio;
  7171.     if(gUser[target][u_deaths] <= 0) ratio = 0.0;
  7172.     else ratio = Float:(gUser[target][u_kills] / gUser[target][u_deaths]);
  7173.     format(string, sizeof(string), ""SAMP_BLUE"K/D Ratio: "TOMATO"%0.2f\n", ratio);
  7174.     strcat(DIALOG, string);
  7175.     format(string, sizeof(string), ""SAMP_BLUE"Score: "TOMATO"%i\n", GetPlayerScore(target));
  7176.     strcat(DIALOG, string);
  7177.     format(string, sizeof(string), ""SAMP_BLUE"Money: "TOMATO"$%i\n", GetPlayerMoney(target));
  7178.     strcat(DIALOG, string);
  7179.     //player game play time
  7180.     format(string, sizeof(string), ""SAMP_BLUE"Played time: "TOMATO"%02i hours %02i minutes %02i seconds\n", DB::GetIntEntry(gGlobal[s_usertable], key, "hours") + gUser[target][u_hours], DB::GetIntEntry(gGlobal[s_usertable], key, "minutes") + gUser[target][u_minutes], DB::GetIntEntry(gGlobal[s_usertable], key, "seconds") + gUser[target][u_seconds]);
  7181.     strcat(DIALOG, string);
  7182.     //print if registered or not
  7183.     new yes[4] = "YES", no[3] = "NO";
  7184.     format(string, sizeof(string), ""SAMP_BLUE"Registered: "TOMATO"%s\n", ((GetPVarType(playerid, "GAdmin_Loggedin") != PLAYER_VARTYPE_NONE) ? yes : no));
  7185.     strcat(DIALOG, string);
  7186.     //get user id
  7187.     new DATE[18];
  7188.     //joined date
  7189.     DB::GetStringEntry(gGlobal[s_usertable], key, "joindate", DATE);
  7190.     format(string, sizeof(string), ""SAMP_BLUE"Join date: "CORAL"%s\n", DATE);
  7191.     strcat(DIALOG, string);
  7192.     //last visit to server date
  7193.     DB::GetStringEntry(gGlobal[s_usertable], key, "laston", DATE);
  7194.     format(string, sizeof(string), ""SAMP_BLUE"Last visit: "TOMATO"%s\n", DATE);
  7195.     strcat(DIALOG, string);
  7196.     //current team id
  7197.     format(string, sizeof(string), ""SAMP_BLUE"Team: "TOMATO"%i\n\n", GetPlayerTeam(target));
  7198.     strcat(DIALOG, string);
  7199.     //shit!
  7200.     strcat(DIALOG, ""WHITE"If you think your stats are wrong or not saved according to last log out, Please place an appeal in forums.\n");
  7201.     strcat(DIALOG, "Make sure you have a screen of your last stats and this.");
  7202.  
  7203.     //show stats in dialog
  7204.     ShowPlayerDialog(playerid, DIALOG_COMMON, DIALOG_STYLE_MSGBOX, "Player statics", DIALOG, "Close", "");
  7205.     return 1;
  7206. }
  7207.  
  7208. CMD:spree(playerid, params[])
  7209. {
  7210.     new target;
  7211.     if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /spree [player]");
  7212.  
  7213.     if(! IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not connected.");
  7214.  
  7215.     new string[144];
  7216.     format(string, sizeof(string), "* %s[%i] have a killing spree of %i kills.", ReturnPlayerName(target), target, gUser[playerid][u_spree]);
  7217.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  7218.     return 1;
  7219. }
  7220.  
  7221. CMD:nopm(playerid, params[])
  7222. {
  7223.     #pragma unused params
  7224.     if(GetPVarType(playerid, "GAdmin_Nopm") == PLAYER_VARTYPE_NONE)
  7225.     {
  7226.         SetPVarInt(playerid, "GAdmin_Nopm", 1);
  7227.  
  7228.         SendClientMessage(playerid, COLOR_RED, "PM: You are no longer accepting private messages.");
  7229.     }
  7230.     else
  7231.     {
  7232.         DeletePVar(playerid, "GAdmin_Nopm");
  7233.  
  7234.         SendClientMessage(playerid, COLOR_GREEN, "PM: You are now accepting private messages.");
  7235.     }
  7236.     return 1;
  7237. }
  7238. CMD:dnd(playerid, params[]) return cmd_nopm(playerid, params);
  7239.  
  7240. CMD:pm(playerid, params[])
  7241. {
  7242.     new target, text[128], string[145];
  7243.     if(sscanf(params, "us[128]", target, text)) return SendClientMessage(playerid, COLOR_THISTLE, "USAGE: /pm (player) (message)");
  7244.  
  7245.     if(!IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: The specified player is not connected.");
  7246.  
  7247.     if(target == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "ERROR: You cannot PM yourself.");
  7248.  
  7249.     format(string, sizeof(string), "ERROR: %s[%d] is not accepting private messages at the moment.", ReturnPlayerName(target), target);
  7250.     if(GetPVarType(playerid, "GAdmin_Nopm") != PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, string);
  7251.  
  7252.     format(string, sizeof(string), "PM to %s[%i]: %s", ReturnPlayerName(target), target, text);
  7253.     SendClientMessage(playerid, COLOR_YELLOW, string);
  7254.     format(string, sizeof(string), "PM from %s[%i]: %s", ReturnPlayerName(playerid), playerid, text);
  7255.     SendClientMessage(target, COLOR_YELLOW, string);
  7256.     gUser[playerid][u_lastuser] = target;
  7257.     return 1;
  7258. }
  7259.  
  7260. CMD:responder(playerid, params[])
  7261. {
  7262.     new text[128];
  7263.     if(sscanf(params, "s[128]", text)) return SendClientMessage(playerid, COLOR_THISTLE, "USO: /responder (messagem)");
  7264.  
  7265.     if(!IsPlayerConnected(gUser[playerid][u_lastuser])) return SendClientMessage(playerid, COLOR_FIREBRICK, "AVISO: Este jogador não esta conctado.");
  7266.  
  7267.     if(gUser[playerid][u_lastuser] == playerid) return SendClientMessage(playerid, COLOR_FIREBRICK, "AVISO: não pode enviar PM a si mesmo.");
  7268.  
  7269.     new string[145];
  7270.     format(string, sizeof(string), "AVISO: %s[%d] Não está aceitando PM no momento.", ReturnPlayerName(gUser[playerid][u_lastuser]), gUser[playerid][u_lastuser]);
  7271.     if(GetPVarType(playerid, "GAdmin_Nopm") != PLAYER_VARTYPE_NONE) return SendClientMessage(playerid, COLOR_FIREBRICK, string);
  7272.  
  7273.     format(string, sizeof(string), "PM de %s[%i]: %s", ReturnPlayerName(gUser[playerid][u_lastuser]), gUser[playerid][u_lastuser], text);
  7274.     SendClientMessage(playerid, COLOR_YELLOW, string);
  7275.     format(string, sizeof(string), "PM para %s[%i]: %s", ReturnPlayerName(playerid), playerid, text);
  7276.     SendClientMessage(gUser[playerid][u_lastuser], COLOR_YELLOW, string);
  7277.     return 1;
  7278. }
  7279.  
  7280. CMD:hora(playerid, params[])
  7281. {
  7282.     new time[3];
  7283.     gettime(time[0], time[1], time[2]);
  7284.  
  7285.     new string[144];
  7286.     format(string, sizeof(string), "~y~~h~%i:%i", time[0], time[1]);
  7287.     GameTextForPlayer(playerid, string, 3000, 1);
  7288.     return 1;
  7289. }
  7290.  
  7291. CMD:id(playerid, params[])
  7292. {
  7293.     new name[MAX_PLAYER_NAME];
  7294.     if(sscanf(params, "s[24]", name)) return SendClientMessage(playerid, COLOR_THISTLE, "USO: /id [nome]");
  7295.  
  7296.     SendClientMessage(playerid, COLOR_ORANGE_RED, " ");
  7297.     new string[144];
  7298.     format(string, sizeof(string), "- Search result for %s", name);
  7299.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  7300.  
  7301.     new count = 0;
  7302.     LOOP_PLAYERS(i)
  7303.     {
  7304.         if(strfind(ReturnPlayerName(i), name, true) != -1)
  7305.         {
  7306.             count += 1;
  7307.  
  7308.             format(string, sizeof(string), "%i. %s[%i]", count, ReturnPlayerName(i), i);
  7309.             SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  7310.         }
  7311.     }
  7312.  
  7313.     if(! count) return SendClientMessage(playerid, COLOR_DODGER_BLUE, "- Nenhum jogador encontrado com esse nome!");
  7314.     return 1;
  7315. }
  7316. CMD:getid(playerid, params[]) return cmd_id(playerid, params);
  7317.  
  7318. CMD:ricos(playerid, params[])
  7319. {
  7320.     #define TOPLINE 10
  7321.  
  7322.     new Player_ID[TOPLINE], Top_Info[TOPLINE];
  7323.  
  7324.     LOOP_PLAYERS(i)
  7325.     {
  7326.         HighestTopList(i, GetPlayerMoney(i), Player_ID, Top_Info, TOPLINE);
  7327.     }
  7328.  
  7329.     SendClientMessage(playerid, COLOR_DODGER_BLUE, " ");
  7330.     SendClientMessage(playerid, COLOR_DODGER_BLUE, "- Os mais ricos:");
  7331.  
  7332.     new string[144];
  7333.     for(new i; i < TOPLINE; i++)
  7334.     {
  7335.         if(Top_Info[i] <= 0) continue;
  7336.         format(string, sizeof string, "%s[%i] - $%i", ReturnPlayerName(Player_ID[i]), Player_ID[i], Top_Info[i]);
  7337.         SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  7338.     }
  7339.  
  7340.     #undef TOPLINE
  7341.     return 1;
  7342. }
  7343.  
  7344. CMD:scorelist(playerid, params[])
  7345. {
  7346.     #define TOPLINE 10
  7347.  
  7348.     new Player_ID[TOPLINE], Top_Info[TOPLINE];
  7349.  
  7350.     LOOP_PLAYERS(i)
  7351.     {
  7352.         HighestTopList(i, GetPlayerScore(i), Player_ID, Top_Info, TOPLINE);
  7353.     }
  7354.  
  7355.     SendClientMessage(playerid, COLOR_DODGER_BLUE, " ");
  7356.     SendClientMessage(playerid, COLOR_DODGER_BLUE, "- Resultados Top-score:");
  7357.  
  7358.     new string[144];
  7359.     for(new i; i < TOPLINE; i++)
  7360.     {
  7361.         if(Top_Info[i] <= 0) continue;
  7362.         format(string, sizeof string, "%s[%i] - %i Score", ReturnPlayerName(Player_ID[i]), Player_ID[i], Top_Info[i]);
  7363.         SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  7364.     }
  7365.  
  7366.     #undef TOPLINE
  7367.     return 1;
  7368. }
  7369.  
  7370. CMD:procurar(playerid, params[])
  7371. {
  7372.     new name[MAX_PLAYER_NAME];
  7373.     if(sscanf(params, "s[24]", name)) return SendClientMessage(playerid, COLOR_THISTLE, "USO: /search [Nome]");
  7374.  
  7375.     SendClientMessage(playerid, COLOR_ORANGE_RED, " ");
  7376.     new string[150], arg[56];
  7377.     format(string, sizeof(string), "- Search result for %s:", name);
  7378.     SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  7379.  
  7380.     new count = 0;
  7381.     for(new i = 1, j = DB::GetHighestRegisteredKey(gGlobal[s_usertable]); i <= j; i++)
  7382.     {
  7383.         new uName[MAX_PLAYER_NAME];
  7384.         DB::GetStringEntry(gGlobal[s_usertable], i, "username", uName);
  7385.  
  7386.         if(strfind(uName, name, true) != -1)
  7387.         {
  7388.             count += 1;
  7389.  
  7390.             format(string, sizeof(string), "%i", count);
  7391.             strcat(string, ". ");
  7392.             strcat(string, uName);
  7393.             strcat(string, " [Join date: ");
  7394.             DB::GetStringEntry(gGlobal[s_usertable], i, "joindate", arg);
  7395.             strcat(string, arg);
  7396.             strcat(string, " | Last active: ");
  7397.             DB::GetStringEntry(gGlobal[s_usertable], i, "laston", arg);
  7398.             strcat(string, arg);
  7399.             strcat(string, "]");
  7400.             SendClientMessage(playerid, COLOR_DODGER_BLUE, string);
  7401.         }
  7402.     }
  7403.  
  7404.     if(! count) return SendClientMessage(playerid, COLOR_DODGER_BLUE, "- Nenhuma conta encontrada com esse nome!");
  7405.     return 1;
  7406. }
  7407. CMD:procuraruser(playerid, params[]) return cmd_procurar(playerid, params);
  7408.  
  7409. //------------------------------------------------
  7410.  
  7411. stock ConvertTime(time)
  7412. {
  7413.     new string[68];
  7414.     new values[6];
  7415.     TimestampToDate(time, values[0], values[1], values[2], values[3], values[4], values[5], 0, 0);
  7416.     format(string, sizeof(string), "%i.%i.%i (%i hrs %i mins %i secs)", values[0], values[1], values[2], values[3], values[4], values[5]);
  7417.     return string;
  7418. }
  7419.  
  7420. //------------------------------------------------
  7421.  
  7422. public OnPlayerStateChange(playerid, newstate, oldstate)
  7423. {
  7424.     LOOP_PLAYERS(i)
  7425.     {
  7426.         if(IsPlayerSpectating(i))
  7427.         {
  7428.             if(gUser[i][u_spec] && gUser[i][u_specid] == playerid)
  7429.             {
  7430.                 UpdatePlayerSpectating(i, 0, false);
  7431.             }
  7432.         }
  7433.     }
  7434.     return 1;
  7435. }
  7436.  
  7437. //------------------------------------------------
  7438.  
  7439. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  7440. {
  7441.     if(gUser[playerid][u_spec] && IsPlayerGAdmin(playerid))
  7442.     {
  7443.         if(newkeys == KEY_LOOK_BEHIND && IsPlayerSpectating(playerid))
  7444.         {
  7445.             cmd_specoff(playerid, "");
  7446.         }
  7447.         if(newkeys == KEY_FIRE && IsPlayerSpectating(playerid))
  7448.         {
  7449.             UpdatePlayerSpectating(playerid, 0, false);
  7450.         }
  7451.         if(newkeys == KEY_ACTION && IsPlayerSpectating(playerid))
  7452.         {
  7453.             UpdatePlayerSpectating(playerid, 1, false);
  7454.         }
  7455.     }
  7456.     return 1;
  7457. }
  7458.  
  7459. //------------------------------------------------
  7460.  
  7461. public OnPlayerClickPlayer(playerid, clickedplayerid)
  7462. {
  7463.     GetPlayerConnectedTime(clickedplayerid, gUser[clickedplayerid][u_hours], gUser[clickedplayerid][u_minutes], gUser[clickedplayerid][u_seconds]);
  7464.     //Stats stuff !:D!
  7465.     new string[156];
  7466.     format(string, sizeof(string), "Você esta vendo agora %s's [id: %i] estáticas!", ReturnPlayerName(clickedplayerid), clickedplayerid);
  7467.     SendClientMessage(playerid, COLOR_GREEN, string);
  7468.  
  7469.     new key = DB::RetrieveKey(gGlobal[s_usertable], "username", ReturnPlayerName(clickedplayerid));
  7470.  
  7471.     new MESSAGE[676];
  7472.     format(string, sizeof(string), "Matou: %i | ", gUser[clickedplayerid][u_kills]);
  7473.     strcat(MESSAGE, string);
  7474.     format(string, sizeof(string), "Morreu: %i | ", gUser[clickedplayerid][u_deaths]);
  7475.     strcat(MESSAGE, string);
  7476.     format(string, sizeof(string), "Matou na seção: %i | ", gUser[clickedplayerid][u_sessionkills]);
  7477.     strcat(MESSAGE, string);
  7478.     format(string, sizeof(string), "Morreu na seção: %i | ", gUser[clickedplayerid][u_sessiondeaths]);
  7479.     strcat(MESSAGE, string);
  7480.     format(string, sizeof(string), "Spree: %i | ", gUser[clickedplayerid][u_spree]);
  7481.     strcat(MESSAGE, string);
  7482.     //calculate Kill/Deaths ratio
  7483.     new Float:ratio;
  7484.     if(gUser[clickedplayerid][u_deaths] <= 0) ratio = 0.0;
  7485.     else ratio = Float:(gUser[clickedplayerid][u_kills] / gUser[clickedplayerid][u_deaths]);
  7486.     format(string, sizeof(string), "K/D Ratio: %0.2f | ", ratio);
  7487.     strcat(MESSAGE, string);
  7488.     format(string, sizeof(string), "Score: %i | ", GetPlayerScore(clickedplayerid));
  7489.     strcat(MESSAGE, string);
  7490.     format(string, sizeof(string), "Dinheiro: $%i", GetPlayerMoney(clickedplayerid));
  7491.     strcat(MESSAGE, string);
  7492.     SendClientMessage(playerid, COLOR_GREEN, MESSAGE);
  7493.     //player game play time
  7494.     format(string, sizeof(string), "Tempo jogado: %02i houras %02i minutos %02i segundos | ", DB::GetIntEntry(gGlobal[s_usertable], key, "hours") + gUser[clickedplayerid][u_hours], DB::GetIntEntry(gGlobal[s_usertable], key, "minutes") + gUser[clickedplayerid][u_minutes], DB::GetIntEntry(gGlobal[s_usertable], key, "seconds") + gUser[clickedplayerid][u_seconds]);
  7495.     strcat(MESSAGE, string);
  7496.     //print if registered or not
  7497.     new yes[4] = "YES", no[3] = "NO";
  7498.     format(string, sizeof(string), "Registrado: %s | ", ((GetPVarType(playerid, "GAdmin_Loggedin") != PLAYER_VARTYPE_NONE) ? yes : no));
  7499.     strcat(MESSAGE, string);
  7500.     //get user id
  7501.     new DATE[18];
  7502.     //joined date
  7503.     DB::GetStringEntry(gGlobal[s_usertable], key, "joindate", DATE);
  7504.     format(string, sizeof(string), "Data de registro: %s | ", DATE);
  7505.     strcat(MESSAGE, string);
  7506.     //last visit to server date
  7507.     DB::GetStringEntry(gGlobal[s_usertable], key, "laston", DATE);
  7508.     format(string, sizeof(string), "Ultima visita: %s | ", DATE);
  7509.     strcat(MESSAGE, string);
  7510.     //current team id
  7511.     format(string, sizeof(string), "Time: %i", GetPlayerTeam(clickedplayerid));
  7512.     strcat(MESSAGE, string);
  7513.     SendClientMessage(playerid, COLOR_GREEN, MESSAGE);
  7514.     return 1;
  7515. }
  7516.  
  7517. //------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment