Advertisement
S4T3K

s_admin

Apr 2nd, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 64.35 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3. #include <sscanf2>
  4. #include <s_changes>
  5. #include <streamer>
  6. #include <Thread>
  7.  
  8.  
  9. #define JAIL_X 0.0
  10. #define JAIL_Y 0.0
  11. #define JAIL_Z 0.0
  12.  
  13. #define RPW_X 0.0
  14. #define RPW_Y 0.0
  15. #define RPW_Z 0.0
  16.  
  17. #define HOST "localhost"
  18. #define USER "root"
  19. #define DB "database"
  20. #define PASS ""
  21.  
  22. #define INFINITY (Float:0x7F800000)
  23.  
  24. #pragma unused SH_OnPlayerConnect, SH_OnPlayerKeyStateChange, SH_OnPlayerUpdate
  25.  
  26. // Crédits : U2C RP (ReturnVehicleModelID)
  27.  
  28. new VehicleNames[212][] = {
  29.    "Landstalker",  "Bravura",  "Buffalo", "Linerunner", "Perennial", "Sentinel",
  30.    "Dumper",  "Firetruck" ,  "Trashmaster" ,  "Stretch",  "Manana",  "Infernus",
  31.    "Voodoo", "Pony",  "Mule", "Cheetah", "Ambulance",  "Leviathan",  "Moonbeam",
  32.    "Esperanto", "Taxi",  "Washington",  "Bobcat",  "Mr Whoopee", "BF Injection",
  33.    "Hunter", "Premier",  "Enforcer",  "Securicar", "Banshee", "Predator", "Bus",
  34.    "Rhino",  "Barracks",  "Hotknife",  "Trailer",  "Previon", "Coach", "Cabbie",
  35.    "Stallion", "Rumpo", "RC Bandit",  "Romero", "Packer", "Monster",  "Admiral",
  36.    "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer",  "Turismo", "Speeder",
  37.    "Reefer", "Tropic", "Flatbed","Yankee", "Caddy", "Solair","Berkley's RC Van",
  38.    "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron","RC Raider","Glendale",
  39.    "Oceanic", "Sanchez", "Sparrow",  "Patriot", "Quad",  "Coastguard", "Dinghy",
  40.    "Hermes", "Sabre", "Rustler", "ZR-350", "Walton",  "Regina",  "Comet", "BMX",
  41.    "Burrito", "Camper", "Marquis", "Baggage", "Dozer","Maverick","News Chopper",
  42.    "Rancher", "FBI Rancher", "Virgo", "Greenwood","Jetmax","Hotring","Sandking",
  43.    "Blista Compact", "Police Maverick", "Boxville", "Benson","Mesa","RC Goblin",
  44.    "Hotring Racer", "Hotring Racer", "Bloodring Banger", "Rancher",  "Super GT",
  45.    "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropdust", "Stunt",
  46.    "Tanker", "RoadTrain", "Nebula", "Majestic", "Buccaneer", "Shamal",  "Hydra",
  47.    "FCR-900","NRG-500","HPV1000","Camion ciment","Tow Truck","Fortune","Cadrona",
  48.    "FBI Truck", "Willard", "Forklift","Tractor","Combine","Feltzer","Remington",
  49.    "Slamvan", "Blade", "Freight", "Streak","Vortex","Vincent","Bullet","Clover",
  50.    "Sadler",  "Firetruck", "Hustler", "Intruder", "Primo", "Cargobob",  "Tampa",
  51.    "Sunrise", "Merit",  "Utility Truck",  "Nevada", "Yosemite", "Windsor",  "Monster",
  52.    "Monster","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RCTiger",
  53.    "Flash","Tahoma","Savanna", "Bandito", "Freight", "Trailer", "Kart", "Mower",
  54.    "Dune", "Sweeper", "Broadway", "Tornado", "AT-400",  "DFT-30", "Huntley",
  55.    "Stafford", "BF-400", "Newsvan","Tug","Trailer","Emperor","Wayfarer","Euros",
  56.    "Hotdog", "Club", "Trailer", "Trailer","Andromada","Dodo","RC Cam", "Launch",
  57.    "LSPD", "SFPD","LVPD","Police Ranger",
  58.    "Picador",   "SWAT Van",  "Alpha",   "Phoenix",   "Glendale",   "Sadler",
  59.    "Remorque baggages","Remorque baggage","Remorque escalier", "Boxville", "Farm Plow",
  60.    "Utility Trailer"
  61. };
  62.  
  63. static thread_spec, thread_jail, MySQL, requete[1024], grade[MAX_PLAYERS];
  64.  
  65. forward KickPublic(playerid);
  66. forward BanSQL(playerid, raison[], admin[]);
  67. forward KickLog(kickedid, adminname[], raison[]);
  68. forward JailLog(jailedid, adminname[], temps, raison[]);
  69. forward libererJoueur(playerid, Float:x, Float:y, Float:z);
  70. forward UpdateSpec(playerid);
  71. forward UpdateJail(playerid);
  72.  
  73. enum jInfo
  74. {
  75.     jService,
  76.     Float:jPosx,
  77.     Float:jPosy,
  78.     Float:jPosz,
  79.     jSpec,
  80.     spectated,
  81.     jJailr,
  82.     jSkin,
  83. };
  84.  
  85. new InfoJoueur[MAX_PLAYERS][jInfo];
  86.  
  87. public OnFilterScriptInit()
  88. {
  89.  
  90.     thread_spec = CreateThread("UpdateSpec");
  91.     thread_jail = CreateThread("UpdateJail");
  92.     MySQL = mysql_connect(HOST, USER, DB, PASS);
  93.     if(MySQL) { printf("Connexion MySQL réussie !"); }
  94.     else { mysql_reconnect(MySQL); }
  95.     return 1;
  96. }
  97.  
  98. public OnFilterScriptExit()
  99. {
  100.     DestroyThread(thread_spec);
  101.     DestroyThread(thread_jail);
  102.     mysql_close(MySQL);
  103.     printf("Déconnexion réussie à la base de données MySQL.");
  104.     return 1;
  105. }
  106.  
  107. public OnPlayerConnect(playerid)
  108. {
  109.     new nom[MAX_PLAYER_NAME+1];
  110.     GetPlayerName(playerid, nom, sizeof(nom));
  111.     format(requete, sizeof(requete), "SELECT * FROM `Banlist` WHERE `pseudo_banni` = '%s'", nom);
  112.     mysql_tquery(MySQL, requete);
  113.     if(cache_num_rows() > 0)
  114.     {
  115.         new date[20], mess[144], datet[6];
  116.         cache_get_field_content(0, "date_heure", date, MySQL, 20);
  117.         sscanf(date, "d d d d d d", datet[0], datet[1], datet[2], datet[3], datet[4], datet[5]);
  118.         format(mess, sizeof(mess), "{FF0000}[Admin]{FFFFFF} Tu as été banni en date du %d-%d-%d à %dh%dm%ds.", datet[0], datet[1], datet[2], datet[3], datet[4], datet[5]);
  119.         KickWithMessage(playerid, mess);
  120.     }
  121.     if(InfoJoueur[playerid][jJailr] > 0)
  122.     {
  123.         SetPlayerPos(playerid, JAIL_X, JAIL_Y, JAIL_Z);
  124.         SetPlayerVirtualWorld(playerid, 1998);
  125.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Il vous reste %d secondes à purger en jail.", InfoJoueur[playerid][jJailr]);
  126.     }
  127.     return 1;
  128. }
  129.  
  130. public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
  131. {
  132.     if(InfoJoueur[playerid][jJailr] > 0)
  133.     {
  134.         ResetPlayerWeapons(playerid);
  135.         SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Il est interdit de DM en jail.");
  136.         new Float:vie;
  137.         GetPlayerHealth(damagedid, vie);
  138.         SetPlayerHealth(damagedid, vie+amount);
  139.         SendClientMessage(damagedid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez été blessé par un joueur en jail OOC, vous avez donc été soigné.");
  140.     }
  141.     return 1;
  142. }
  143.  
  144. public OnPlayerMoneyChange(playerid, oldm, newm)
  145. {
  146.     if(InfoJoueur[playerid][spectated] != -1)
  147.     {
  148.         if(InfoJoueur[playerid][spectated] != -1)
  149.         {
  150.             new money[124], money2[124];
  151.             format(money, sizeof(money), "~p~$%d", newm);
  152.             GameTextForPlayer(InfoJoueur[playerid][spectated], money, 120000, 1);
  153.             if(newm > oldm) format(money2, sizeof(money2), "~n~~g~(+ $%d)", newm-oldm);
  154.             else format(money2, sizeof(money2), "~n~~r~(- $%d)", oldm-newm);
  155.             GameTextForPlayer(InfoJoueur[playerid][spectated], money2, 30000, 1);
  156.         }
  157.     }
  158.     return 1;
  159. }
  160.  
  161.  
  162. public OnPlayerCommandText(playerid, cmdtext[])
  163. {
  164.     new cmd[20], params[128], mess[1024];
  165.     sscanf(cmdtext, "'/'s[20] s[128]", cmd, params);
  166.  
  167.     /*--------------------------------------------
  168.     Commandes pour level admin 1 et 2 (Modérateur)
  169.     --------------------------------------------*/
  170.  
  171.     if(strcmp(cmd, "aaide", true) == 0)
  172.     {
  173.         if(grade[playerid] >= 1) { SendClientMessage(playerid, -1, "{04AB94}[Modérateur]{FFFFFF} /aaide, /kick, /jail, /spec, /ban, /slap, /vehslap, /freeze, /unfreeze, /respawn, /goto, /gethere, /setskin, /areparer, /aduty, /ab, /a(dmin)"); }
  174.         else if(grade[playerid] >= 3) { SendClientMessage(playerid, -1, "{D15401}[Administrateur]{FFFFFF} /skick, /sjail, /sban, /exploser, /voirbans, /superslap, /supervehslap, /gotocar, /getcar, /exploser"); }
  175.         else if(grade[playerid] >= 1338) { SendClientMessage(playerid, -1, "{727A7D}[Admin Général]{FFFFFF} /sexploser, /rename, /veh, /gotoincar, /getincar, /meteo"); }
  176.         else if(grade[playerid] >= 1339) { SendClientMessage(playerid, -1, "{6E0E0E}[Super Admin]{FFFFFF} /unban, /unbanip, /unbanid, /mettreadmin, /getthereall, /explosertous, /heure, /mgravity, /tgravity, /gravity, /donnerarme, /donnerargent, /resetarme, /resetargent"); }
  177.         else if(grade[playerid] > 1339) { SendClientMessage(playerid, -1, "{FF0000}[Fondateur]{FFFFFF} /kickall, /banall, /map, /unbanall, /unbanallip, /freezeall, /slapall, /superslapall, /vehslapall, /supervehslapall, /donnerarmeall, /givemoneyall, /resetmoneyall /resetarmeall"); }
  178.         return 1;
  179.     }
  180.  
  181.     if(strcmp(cmd, "admins", true) == 0)
  182.     {
  183.         for(new p = 0; p < MAX_PLAYERS; p++)
  184.         {
  185.             if(IsPlayerConnected(p))
  186.             {
  187.                 if(InfoJoueur[p][jService] == 0)
  188.                 {
  189.                     new nom[MAX_PLAYER_NAME+1], rang[144];
  190.                     GetPlayerName(p, nom, sizeof(nom));
  191.                     if(grade[p] == 1 || grade[p] == 2) { format(rang, sizeof(rang), "{04AB94}[Modérateur]{FFFFFF} : %s", nom); }
  192.                     if(grade[p] >= 3 && grade[p] < 1338) { format(rang, sizeof(rang), "{D15401}[Administrateur]{FFFFFF} %s", nom); }
  193.                     if(grade[p] == 1338) { format(rang, sizeof(rang), "{727A7D}[Admin général]{FFFFFF} %s", nom); }
  194.                     if(grade[p] == 1339) { format(rang, sizeof(rang), "{6E0E0E}[Super Admin]{FFFFFF} : %s", nom); }
  195.                     if(grade[p] > 1339) { format(rang, sizeof(rang), "{FF0000}[Fondateur]{FFFFFF} : %s", nom); }
  196.                     SendClientMessage(playerid, -1, rang);
  197.                 }
  198.                 else
  199.                 {
  200.                     new nom[MAX_PLAYER_NAME+1], rang[144];
  201.                     GetPlayerName(p, nom, sizeof(nom));
  202.                     if(grade[p] == 1 || grade[p] == 2) { format(rang, sizeof(rang), "{04AB94}[Modérateur]{FFFFFF} : %s {FF0000}[En service]", nom); }
  203.                     if(grade[p] >= 3 && grade[p] < 1338) { format(rang, sizeof(rang), "{D15401}[Administrateur]{FFFFFF} %s {FF0000}[En service]", nom); }
  204.                     if(grade[p] == 1338) { format(rang, sizeof(rang), "{727A7D}[Admin général]{FFFFFF} %s {FF0000}[En service]", nom); }
  205.                     if(grade[p] == 1339) { format(rang, sizeof(rang), "{6E0E0E}[Super Admin]{FFFFFF} : %s {FF0000}[En service]", nom); }
  206.                     if(grade[p] > 1339) { format(rang, sizeof(rang), "{FF0000}[Fondateur]{FFFFFF} : %s {FF0000}[En service]", nom); }
  207.                     SendClientMessage(playerid, -1, rang);
  208.                 }
  209.             }
  210.         }
  211.     }
  212.  
  213.     if(strcmp(cmd, "kick", true) == 0)
  214.     {
  215.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  216.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/kick [ID joueur] [Raison]", "BA9D0C", "", "");
  217.         new id, raison[144];
  218.         sscanf(params, "u s[144]", id, raison);
  219.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  220.         new nom[MAX_PLAYER_NAME+1], nom2[MAX_PLAYER_NAME+1];
  221.         GetPlayerName(playerid, nom2, sizeof(nom2));
  222.         GetPlayerName(id, nom, sizeof(nom));
  223.         new annee, mois, jour, heure, minute, seconde;
  224.         getdate(annee, mois, jour);
  225.         gettime(heure, minute, seconde);
  226.         format(mess, sizeof(mess), "[Kick] %s (%d) a été kické par l'Admin %s (%d) [%s]", nom, id, nom2, playerid, raison);
  227.         SendClientMessageToAll(0xFF0000FF, mess);
  228.         KickLog(id, nom2, raison);
  229.         KickWithMessage(id, mess);
  230.         return 1;
  231.     }
  232.  
  233.     if(strcmp(cmd, "ban", true) == 0)
  234.     {
  235.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  236.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/ban [ID joueur] [Raison]", "BA9D0C", "", "");
  237.         new id, raison[144];
  238.         sscanf(params, "u s[144]", id, raison);
  239.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  240.         new nom[MAX_PLAYER_NAME+1], nom2[MAX_PLAYER_NAME+1];
  241.         GetPlayerName(playerid, nom2, sizeof(nom2));
  242.         GetPlayerName(id, nom, sizeof(nom));
  243.         format(mess, sizeof(mess), "[Ban] %s (%d) a été kické par l'Admin %s (%d) [%s]", nom, id, nom2, playerid, raison);
  244.         SendClientMessageToAll(0xFF0000FF, mess);
  245.         BanSQL(playerid, raison, nom2);
  246.         return 1;
  247.     }
  248.  
  249.     if(strcmp(cmd, "jail", true) == 0)
  250.     {
  251.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  252.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/jail [ID joueur] [Temps] [Raison]", "BA9D0C", "", "");
  253.         new id, temps, raison[144];
  254.         sscanf(params, "u d s[144]", id, temps, raison);
  255.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  256.         new nomid[MAX_PLAYER_NAME+1], nomad[MAX_PLAYER_NAME+1];
  257.         GetPlayerName(playerid, nomad, sizeof(nomad));
  258.         GetPlayerName(id, nomid, sizeof(nomid));
  259.         GetPlayerPos(id, InfoJoueur[id][jPosx], InfoJoueur[id][jPosy], InfoJoueur[id][jPosz]);
  260.         SetPlayerPos(id, JAIL_X, JAIL_Y, JAIL_Z);
  261.         ResetPlayerWeapons(id);
  262.         SetPlayerVirtualWorld(id, 1998); // Pour l'empêcher de jail evading
  263.         SendClientFormattedMessageToAll(0xFF0000FF, "[Jail] %s (%d) a été emprisonné pour %d minutes par l'Admin %s (%d) [%s]", nomid, id, temps, nomad, playerid, raison);
  264.         JailLog(id, nomad, temps, raison);
  265.         InfoJoueur[id][jJailr] = temps*60;
  266.         SetTimerEx("libererJoueur", temps*60000, false, "dfff", id, InfoJoueur[id][jPosx], InfoJoueur[id][jPosy], InfoJoueur[id][jPosz]);
  267.         return 1;
  268.     }
  269.  
  270.     if(strcmp(cmd, "spec", true) == 0)
  271.     {
  272.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  273.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/spec [ID du joueur/Off]", "BA9D0C", "", "");
  274.         if(strcmp(params, "off", true) == 0)
  275.         {
  276.             if(InfoJoueur[playerid][jSpec] != -1) return SendErrorMessage(playerid, "Tu ne spec actuellement personne !");
  277.             SetPlayerPos(playerid, InfoJoueur[playerid][jPosx], InfoJoueur[playerid][jPosy], InfoJoueur[playerid][jPosz]);
  278.             TogglePlayerSpectating(playerid, 0);
  279.             InfoJoueur[playerid][jSpec] = -1;
  280.         }
  281.         else
  282.         {
  283.             if(InfoJoueur[playerid][jService] != 1) return SendErrorMessage(playerid, "Tu dois être en service admin !");
  284.             new id;
  285.             sscanf(params, "u", id);
  286.             if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  287.             GetPlayerPos(playerid, InfoJoueur[playerid][jPosx], InfoJoueur[playerid][jPosy], InfoJoueur[playerid][jPosz]);
  288.             TogglePlayerSpectating(playerid, 1);
  289.             new Float:pos[4];
  290.             GetPlayerPos(id, pos[0], pos[1], pos[2]);
  291.             GetPlayerFacingAngle(id, pos[3]);
  292.             SetPlayerCameraLookAt(playerid, pos[0], pos[1], pos[2]);
  293.             SetPlayerFacingAngle(playerid, pos[3]);
  294.             InfoJoueur[playerid][jSpec] = id;
  295.             InfoJoueur[id][spectated] = playerid;
  296.         }
  297.         return 1;
  298.     }
  299.  
  300.     if(strcmp(cmd, "slap", true) == 0)
  301.     {
  302.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  303.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/slap [ID du joueur]", "BA9D0C", "", "");
  304.         new id;
  305.         sscanf(params, "u", id);
  306.         if(IsPlayerConnected(id)) return SendNoCMessage(playerid);
  307.         new Float:pos[3];
  308.         GetPlayerPos(id, pos[0], pos[1], pos[2]);
  309.         SetPlayerPos(id, pos[0], pos[1], pos[2]+10.0);
  310.         return 1;
  311.     }
  312.  
  313.     if(strcmp(cmd, "vehslap", true) == 0)
  314.     {
  315.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  316.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/vehslap [ID du joueur]", "BA9D0C", "", "");
  317.         new id;
  318.         sscanf(params, "u", id);
  319.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  320.         if(!IsPlayerInAnyVehicle(id)) return SendErrorMessage(playerid, "Ce joueur n'est pas dans un véhicule !");
  321.         new Float:pos[3], vid;
  322.         vid = GetPlayerVehicleID(playerid);
  323.         GetVehiclePos(vid, pos[0], pos[1], pos[2]);
  324.         SetVehiclePos(vid, pos[0], pos[1], pos[2]+15.0);
  325.         return 1;
  326.     }
  327.  
  328.     if(strcmp(cmd, "freeze", true) == 0)
  329.     {
  330.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  331.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/freeze [ID du joueur]", "BA9D0C", "", "");
  332.         new id;
  333.         sscanf(params, "u", id);
  334.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  335.         TogglePlayerControllable(id, 0);
  336.         GameTextForPlayer(id, "~n~~w~Freeze", 5000, 0);
  337.         return 1;
  338.     }
  339.  
  340.     if(strcmp(cmd, "unfreeze", true) == 0)
  341.     {
  342.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  343.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/unfreeze [ID du joueur]", "BA9D0C", "", "");
  344.         new id;
  345.         sscanf(params, "u", id);
  346.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  347.         TogglePlayerControllable(id, 1);
  348.         GameTextForPlayer(id, "~n~~w~Unfreeze", 5000, 0);
  349.         return 1;
  350.     }
  351.  
  352.     if(strcmp(cmd, "respawn", true) == 0)
  353.     {
  354.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  355.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/respawn [ID du joueur]", "BA9D0C", "", "");
  356.         new id;
  357.         sscanf(params, "u", id);
  358.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  359.         SetPlayerPos(id, RPW_X, RPW_Y, RPW_Z);
  360.         SendClientMessage(id, -1, "{FF0000}[Admin]{FFFFFF} Vous avez été respawn dans un endroit sûr.");
  361.         return 1;
  362.     }
  363.    
  364.     if(strcmp(cmd, "goto", true) == 0)
  365.     {
  366.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  367.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/goto [ID du joueur]", "BA9D0C", "", "");
  368.         new id;
  369.         sscanf(params, "u", id);
  370.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  371.         new Float:pos[3];
  372.         GetPlayerPos(id, pos[0], pos[1], pos[2]);
  373.         SetPlayerPos(playerid, pos[0], pos[1]+1.0, pos[2]);
  374.         SetPlayerInterior(playerid, GetPlayerInterior(id));
  375.         SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(id));
  376.         SendClientMessage(playerid, 0x727A7DFF, "Téléportation effectuée !");
  377.         return 1;
  378.     }
  379.  
  380.     if(strcmp(cmd, "gethere", true) == 0)
  381.     {
  382.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  383.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/goto [ID du joueur]", "BA9D0C", "", "");
  384.         new id;
  385.         sscanf(params, "u", id);
  386.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  387.         new Float:pos[3];
  388.         GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  389.         SetPlayerPos(id, pos[0], pos[1]+1.0, pos[2]);
  390.         SetPlayerInterior(id, GetPlayerInterior(playerid));
  391.         SetPlayerVirtualWorld(id, GetPlayerVirtualWorld(playerid));
  392.         SendClientMessage(playerid, 0x727A7DFF, "Joueur téléporté avec succès !");
  393.         SendClientMessage(id, 0x727A7DFF, "Vous avez été téléporté !");
  394.         return 1;
  395.     }
  396.  
  397.     if(strcmp(cmd, "aduty", true) == 0)
  398.     {
  399.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  400.         if(InfoJoueur[playerid][jService] == 0)
  401.         {
  402.             InfoJoueur[playerid][jSkin] = GetPlayerSkin(playerid);
  403.             SetPlayerSkin(playerid, 217);
  404.             InfoJoueur[playerid][jService] = 1;
  405.             SetPlayerHealth(playerid, INFINITY);
  406.             SetPlayerArmour(playerid, INFINITY);
  407.             new nom[MAX_PLAYER_NAME+1];
  408.             GetPlayerName(playerid, nom, sizeof(nom));
  409.             for(new p = 0; p < MAX_PLAYERS; p++)
  410.             {
  411.                 if(IsPlayerConnected(p))
  412.                 {
  413.                     if(grade[p] >= 1) return SendClientFormattedMessage(p, -1, "{FF0000}[Admin]{FFFFFF} %s (%d) est entré en service Admin !", nom, playerid);
  414.                 }
  415.             }
  416.         }
  417.         else
  418.         {
  419.             InfoJoueur[playerid][jService] = 0;
  420.             SetPlayerSkin(playerid, InfoJoueur[playerid][jSkin]);
  421.             InfoJoueur[playerid][jSkin] = 0;
  422.             SetPlayerHealth(playerid, 100.0);
  423.             SetPlayerArmour(playerid, 100.0);
  424.             new nom[MAX_PLAYER_NAME+1];
  425.             GetPlayerName(playerid, nom, sizeof(nom));
  426.             for(new p = 0; p < MAX_PLAYERS; p++)
  427.             {
  428.                 if(IsPlayerConnected(p))
  429.                 {
  430.                     if(grade[p] >= 1) return SendClientFormattedMessage(p, -1, "{FF0000}[Admin]{FFFFFF} %s (%d) est sorti du service Admin !", nom, playerid);
  431.                 }
  432.             }
  433.         }
  434.         return 1;
  435.     }
  436.  
  437.     if(strcmp(cmd, "setvw", true) == 0 || strcmp(cmd, "mettrevw", true) == 0)
  438.     {
  439.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  440.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/setvw [ID du joueur] [ID du Virtual World]", "BA9D0C", "_", "_");
  441.         new id, vw;
  442.         sscanf(params, "u d", id, vw);
  443.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  444.         if(vw < 0 || vw > 2147483647) return SendErrorMessage(playerid, "Le monde virtuel du joueur doit être compris entre 0 et 2\'147\'483\'647");
  445.         SetPlayerVirtualWorld(id, vw);
  446.         SendClientFormattedMessage(id, -1, "{FF0000}L'Admin %s vous a mit votre monde virtuel à %d !", GetName(playerid), vw);
  447.         return SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez mit le monde virtuel de %s à %d !", GetName(id), vw);
  448.     }
  449.  
  450.     if(strcmp(cmd, "setint", true) == 0 || strcmp(cmd, "mettreint", true) == 0)
  451.     {
  452.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  453.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/setint [ID du joueur] [ID du Virtual Interior]", "BA9D0C", "_", "_");
  454.         new id, int;
  455.         sscanf(params, "u d", id, int);
  456.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  457.         SetPlayerInterior(id, int);
  458.         SendClientFormattedMessage(id, -1, "{FF0000}L'Admin %s vous a mit votre monde virtuel à %d !", GetName(playerid), int);
  459.         return SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez mit le monde virtuel de %s à %d !", GetName(id), int);
  460.     }
  461.  
  462.     if(strcmp(cmd, "setskin", true) == 0)
  463.     {
  464.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  465.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/setskin [ID du joueur] [ID du skin]", "BA9D0C", "", "");
  466.         new skinid, id;
  467.         sscanf(params, "u i", id, skinid);
  468.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  469.         if(skinid < 1 || skinid > 299) return SendErrorMessage(playerid, "Les ID de skins sont compris entre 1 et 299 !");
  470.         SetPlayerSkin(id, skinid);
  471.         new nom[MAX_PLAYER_NAME+1], nomj[MAX_PLAYER_NAME+1];
  472.         GetPlayerName(playerid, nom, sizeof(nom));
  473.         GetPlayerName(id, nomj, sizeof(nomj));
  474.         SendClientFormattedMessage(id, -1, "{FF0000}[Admin]{FFFFFF} Votre skin a été changé par l'Admin %s. C'est maintenant le skin %d !", nom, skinid);
  475.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez changé le skin de %s à %d.", nomj, skinid);
  476.         return 1;
  477.     }
  478.  
  479.     if(strcmp(cmd, "ab", true) == 0)
  480.     {
  481.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  482.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/ab [Message]", "BA9D0C", "", "");
  483.         if(strlen(params) > 120) return SendErrorMessage(playerid, "Ce message est trop long. Il doit faire au maximum 120 caractères.");
  484.  
  485.         new rank[24];
  486.         if(grade[playerid] >= 1 && grade[playerid] < 3) format(rank, sizeof(rank), "(( [HRP] {04AB94}[Modérateur]{FFFFFF}");
  487.         else if(grade[playerid] >= 3 && grade[playerid] < 1338) format(rank, sizeof(rank), "(( [HRP] {D15401}[Administrateur]{FFFFFF}");
  488.         else if(grade[playerid] == 1338) format(rank, sizeof(rank), "(( [HRP] {727A7D}[Admin Général]{FFFFFF}");
  489.         else if(grade[playerid] == 1339) format(rank, sizeof(rank), "(( [HRP] {6E0E0E}[Super Admin]{FFFFFF}");
  490.         else if(grade[playerid] > 1339) format(rank, sizeof(rank), "(( [HRP] {FF0000}[Fondateur]{FFFFFF}");
  491.         new messa[144];
  492.         format(messa, sizeof(messa), "%s %s ))", rank, params);
  493.         ProxDetector(15.0, playerid, messa, -1);
  494.         return 1;
  495.     }
  496.  
  497.     if(strcmp(cmd, "admin", true) == 0 || strcmp(cmd, "a", true) == 0)
  498.     {
  499.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  500.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/admin [Message]", "BA9D0C", "", "");
  501.         if(strlen(params) > 120) return SendErrorMessage(playerid, "Ce message est trop long. Il doit faire un maximum de 120 caractères.");
  502.  
  503.         new rank[24];
  504.         if(grade[playerid] >= 1 && grade[playerid] < 3) format(rank, sizeof(rank), "* [Modérateur]");
  505.         else if(grade[playerid] >= 3 && grade[playerid] < 1338) format(rank, sizeof(rank), "* [Administrateur]");
  506.         else if(grade[playerid] == 1338) format(rank, sizeof(rank), "* [Admin Général]");
  507.         else if(grade[playerid] == 1339) format(rank, sizeof(rank), "* [Super Admin]");
  508.         else if(grade[playerid] > 1339) format(rank, sizeof(rank), "* [Fondateur]");
  509.  
  510.         for(new p = 0; p < MAX_PLAYERS; p++)
  511.         {
  512.             if(IsPlayerConnected(p))
  513.             {
  514.                 if(grade[p] >= 1) return SendClientFormattedMessage(p, 0x289A06FF, "%s : %s", rank, params);
  515.             }
  516.         }
  517.         return 1;
  518.     }
  519.  
  520.     if(strcmp(cmd, "aooc", true) == 0 || strcmp(cmd, "ao", true) == 0)
  521.     {
  522.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  523.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/ao(oc) [Message]", "BA9D0C", "", "");
  524.         if(strlen(params) > 120) return SendErrorMessage(playerid, "Ce message est trop long. Il doit faire un maximum de 120 caractères.");
  525.  
  526.         new nom[MAX_PLAYER_NAME+1];
  527.         GetPlayerName(playerid, nom, sizeof(nom));
  528.         if(grade[playerid] >= 1 && grade[playerid] < 3) return SendClientFormattedMessageToAll(0x04AB94FF, "Modérateur %s : %s", nom, params);
  529.         else if(grade[playerid] >= 3 && grade[playerid] < 1338) return SendClientFormattedMessageToAll(0xD15401FF, "Administrateur %s : %s", nom, params);
  530.         else if(grade[playerid] == 1338) return SendClientFormattedMessageToAll(0x727A7DFF, "Admin Général %s : %s", nom, params);
  531.         else if(grade[playerid] == 1339) return SendClientFormattedMessageToAll(0x6E0E0EFF, "Super Admin %s : %s", nom, params);
  532.         else if(grade[playerid] > 1339) return SendClientFormattedMessageToAll(0xFF0000FF, "Fondateur %s : %s", nom, params);
  533.         return 1;
  534.     }
  535.  
  536.     if(strcmp(cmd, "areparer", true) == 0)
  537.     {
  538.         if(grade[playerid] < 1) return SendNoAMessage(playerid);
  539.         new vid;
  540.         vid = GetPlayerVehicleID(playerid);
  541.         SetVehicleHealth(vid, 1000.0);
  542.         RepairVehicle(vid);
  543.         SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez réparé ce véhicule !");
  544.         return 1;
  545.     }
  546.  
  547.     /********************************************************************
  548.     Commandes pour level admin à partir de 3 (inclus) jusque 1338 (exclu)
  549.     ********************************************************************/
  550.  
  551.     if(strcmp(cmd, "skick", true) == 0)
  552.     {
  553.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  554.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/skick [ID joueur]", "BA9D0C", "", "");
  555.         new id, raison[120];
  556.         sscanf(params, "u s[120]", id, raison);
  557.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  558.         new nom[MAX_PLAYER_NAME+1], nom2[MAX_PLAYER_NAME+1];
  559.         GetPlayerName(playerid, nom2, sizeof(nom2));
  560.         GetPlayerName(id, nom, sizeof(nom));
  561.         KickLog(id, nom2, raison);
  562.         KickWithMessage(id, mess);
  563.         return 1;
  564.     }
  565.  
  566.     if(strcmp(cmd, "sban", true) == 0)
  567.     {
  568.  
  569.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  570.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/sban [ID joueur]", "BA9D0C", "", "");
  571.         new id, raison[120];
  572.         sscanf(params, "u s[120]", id, raison);
  573.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  574.         new nom[MAX_PLAYER_NAME+1], nom2[MAX_PLAYER_NAME+1];
  575.         GetPlayerName(playerid, nom2, sizeof(nom2));
  576.         GetPlayerName(id, nom, sizeof(nom));
  577.         BanSQL(playerid, raison, nom2);
  578.         return 1;
  579.     }
  580.  
  581.     if(strcmp(cmd, "sjail", true) == 0)
  582.     {
  583.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  584.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/jail [ID joueur] [Temps] [Raison]", "BA9D0C", "", "");
  585.         new id, temps, raison[120];
  586.         sscanf(params, "u d s[120]", id, temps, raison);
  587.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  588.         new nomid[MAX_PLAYER_NAME+1], nomad[MAX_PLAYER_NAME+1];
  589.         GetPlayerName(playerid, nomad, sizeof(nomad));
  590.         GetPlayerName(id, nomid, sizeof(nomid));
  591.         GetPlayerPos(id, InfoJoueur[id][jPosx], InfoJoueur[id][jPosy], InfoJoueur[id][jPosz]);
  592.         SetPlayerPos(id, JAIL_X, JAIL_Y, JAIL_Z);
  593.         ResetPlayerWeapons(id);
  594.         SetPlayerVirtualWorld(id, 1998); // Pour l'empêcher de jail evading
  595.         JailLog(id, nomad, temps, raison);
  596.         InfoJoueur[id][jJailr] = temps*60;
  597.         SetTimerEx("libererJoueur", temps*60000, false, "dfff", id, InfoJoueur[id][jPosx], InfoJoueur[id][jPosy], InfoJoueur[id][jPosz]);
  598.         return 1;
  599.     }
  600.  
  601.     if(strcmp(cmd, "voirban", true) == 0 || strcmp(cmd, "voirbans", true) == 0)
  602.     {
  603.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  604.         if(!strlen(params))
  605.         {
  606.             mysql_tquery(MySQL, "SELECT * FROM `Banlist`");
  607.             SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Il y a %d entrées dans la banlist. Tapez /voirban [ID du ban] (Visible sur la table SQL) pour voir le ban en détail.", cache_num_rows());
  608.             return 1;
  609.         }
  610.         else
  611.         {
  612.             new banid;
  613.             sscanf(params, "i", banid);
  614.             format(requete, sizeof(requete), "SELECT * FROM `Banlist` WHERE `id` = '%d'", banid);
  615.             mysql_tquery(MySQL, requete);
  616.             if(cache_num_rows() > 0)
  617.             {
  618.                 new nom_banni[MAX_PLAYER_NAME+1], date[20], nom_admin[MAX_PLAYER_NAME+1], raison[144], ip[17];
  619.                 SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Information sur le ban {D15401}%d", banid);
  620.                 cache_get_field_content(0, "pseudo_banni", nom_banni, MySQL, MAX_PLAYER_NAME+1);
  621.                 cache_get_field_content(0, "date_heure", date, MySQL, 20);
  622.                 cache_get_field_content(0, "pseudo_admin", nom_admin, MySQL, MAX_PLAYER_NAME+1);
  623.                 cache_get_field_content(0, "raison", raison, MySQL, 144);
  624.                 SendClientFormattedMessage(playerid, -1, "Le pseudo du joueur banni est {D15401}%s", nom_banni);
  625.                 SendClientFormattedMessage(playerid, -1, "Il a été banni en date du {D15401}%s", date);
  626.                 SendClientFormattedMessage(playerid, -1, "Il a été banni par l'Admin {D15401}%s{FFFFFF}, et le motif du ban était {D15401}%s", nom_admin, raison);
  627.                 cache_get_field_content(0, ip, ip, MySQL, 17);
  628.                 if(grade[playerid] < 1338)
  629.                 {
  630.                     strdel(ip, 6, 17);
  631.                     strcat(ip, "**.***");
  632.                     SendClientFormattedMessage(playerid, -1, "L'IP Bannie liée au compte est {D15401}%s{FFFFFF} (censurée pour sécurité)", ip);
  633.                 }
  634.                 else { SendClientFormattedMessage(playerid, -1, "L'IP Bannie liée au compte est {D15401}%s", ip); }
  635.             }
  636.             else return SendErrorMessage(playerid, "Il n'y a aucun ban lié à cet ID.");
  637.             return 1;
  638.         }
  639.  
  640.     }
  641.  
  642.     if(strcmp(cmd, "gotocar", true) == 0)
  643.     {
  644.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  645.         new vid;
  646.         sscanf(params, "i", vid);
  647.         if(vid < 1 || vid > 2000) return SendErrorMessage(playerid, "Les IDs de véhicule vont de 1 à 2'000 (0.3z)");
  648.         if(!IsValidVehicle(vid)) return SendErrorMessage(playerid, "Cet ID ne correspond pas à un véhicule existant.");
  649.         new Float:pos[3];
  650.         GetVehiclePos(vid, pos[0], pos[1], pos[2]);
  651.         SetPlayerPos(playerid, pos[0], pos[1], pos[2]+1.0);
  652.         SetPlayerVirtualWorld(playerid, GetVehicleVirtualWorld(vid));
  653.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous vous êtes téléporté au véhicule ID %d.", vid);
  654.         return 1;
  655.     }
  656.  
  657.     if(strcmp(cmd, "getcar", true) == 0)
  658.     {
  659.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  660.         new vid;
  661.         sscanf(params, "i", vid);
  662.         if(vid < 1 || vid > 2000) return SendErrorMessage(playerid, "Les IDs de véhicule vont de 1 à 2'000 (0.3z)");
  663.         if(!IsValidVehicle(vid)) return SendErrorMessage(playerid, "Cet ID ne correspond pas à un véhicule existant !");
  664.         new Float:pos[3];
  665.         GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  666.         SetVehiclePos(vid, pos[0], pos[1]+1.0, pos[2]+1.0);
  667.         SetVehicleVirtualWorld(vid, GetPlayerVirtualWorld(playerid));
  668.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez téléporté le véhicule %d à votre position.", vid);
  669.         return 1;
  670.     }
  671.  
  672.     if(strcmp(cmd, "superslap", true) == 0)
  673.     {
  674.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  675.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/superslap [ID du joueur]", "BA9D0C", "", "");
  676.         new id;
  677.         sscanf(params, "u", id);
  678.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  679.         new Float:pos[3];
  680.         GetPlayerPos(id, pos[0], pos[1], pos[2]);
  681.         SetPlayerPos(id, pos[0], pos[1], pos[2]+20.0);
  682.         return 1;
  683.     }
  684.  
  685.     if(strcmp(cmd, "supervehslap", true) == 0)
  686.     {
  687.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  688.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/supervehslap [ID du joueur]", "BA9D0C", "", "");
  689.         new id;
  690.         sscanf(params, "u", id);
  691.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  692.         new Float:pos[3], vid;
  693.         vid = GetPlayerVehicleID(id);
  694.         GetVehiclePos(vid, pos[0], pos[1], pos[2]);
  695.         SetVehiclePos(vid, pos[0], pos[1], pos[2]+40.0);
  696.         return 1;
  697.     }
  698.  
  699.     if(strcmp(cmd, "exploser", true) == 0)
  700.     {
  701.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  702.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/exploser [ID du joueur]", "BA9D0C", "", "");
  703.         new id;
  704.         sscanf(params, "u", id);
  705.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  706.         new Float:pos[3];
  707.         GetPlayerPos(id, pos[0], pos[1], pos[2]);
  708.         CreateExplosion(pos[0], pos[1], pos[2], 2, 15.0);
  709.         return 1;
  710.     }
  711.  
  712.     if(strcmp(cmd, "sethp", true) == 0 || strcmp(cmd, "mettrevie", true) == 0)
  713.     {
  714.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  715.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/sethp [ID du joueur] [Vie]", "BA9DOC", "", "");
  716.         new id, vie, Float:vie1;
  717.         sscanf(params, "u d", id, vie);
  718.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  719.         vie1 = vie;
  720.         SetPlayerHealth(id, vie1);
  721.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez mit la vie de %s à %f !", GetName(id), vie1);
  722.         return SendClientFormattedMessage(id, -1, "{FF0000}[Admin]{FFFFFF} L'Admin %s a changé votre vie à %f !", GetName(playerid), vie1);
  723.     }
  724.  
  725.     if(strcmp(cmd, "setarmor", true) == 0 || strcmp(cmd, "setarmour", true) == 0 || strcmp(cmd, "mettrearmure", true) == 0 || strcmp(cmd, "setarm", true) == 0)
  726.     {
  727.         if(grade[playerid] < 3) return SendNoAMessage(playerid);
  728.         if(!strlen(params)) SendSyntaxMessage(playerid, "/setarm [ID du joueur] [Armure]", "BA9DOC", "", "");
  729.         new id, arm, Float:arm1;
  730.         sscanf(params, "u d", id, arm);
  731.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  732.         arm1 = arm;
  733.         SetPlayerHealth(id, arm1);
  734.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez mit l'armure de %s à %f !", GetName(id), arm1);
  735.         return SendClientFormattedMessage(id, -1, "{FF0000}[Admin]{FFFFFF} L'Admin %s a changé votre armure à %f !", GetName(playerid), arm1);
  736.     }
  737.  
  738.  
  739.     /***************************************************
  740.     Commandes pour level admin à partir de 1338 (inclus)
  741.     ***************************************************/
  742.  
  743.     if(strcmp(cmd, "sexploser", true) == 0 || strcmp(cmd, "superexploser", true) == 0)
  744.     {
  745.         if(grade[playerid] < 1338) return SendNoAMessage(playerid);
  746.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/sexploser [ID du joueur]", "BA9D0C", "", "");
  747.         new id;
  748.         sscanf(params, "u", id);
  749.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  750.         new Float:pos[3];
  751.         GetPlayerPos(id, pos[0], pos[1], pos[2]);
  752.         CreateExplosion(pos[0], pos[1], pos[2], 2, 20.0);
  753.         CreateExplosion(pos[0], pos[1], pos[2], 2, 20.0);
  754.         CreateExplosion(pos[0], pos[1], pos[2], 2, 20.0);
  755.         return 1;
  756.     }
  757.  
  758.     if(strcmp(cmd, "rename", true) == 0)
  759.     {
  760.         if(grade[playerid] < 1338) return SendNoAMessage(playerid);
  761.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/rename [ID du joueur] [Nouveau nom]", "BA9D0C", "", "");
  762.         new id, nom[MAX_PLAYER_NAME+1];
  763.         sscanf(params, "u s[MAX_PLAYER_NAME+1]", id, nom);
  764.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  765.         if(strlen(nom) > MAX_PLAYER_NAME+1 || strlen(nom) < 6) return SendErrorMessage(playerid, "Un pseudo doit contenir au minimum 5 caractères !");
  766.         SetPlayerName(id, nom);
  767.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez changé le pseudo de l'ID %d à %s !", id, nom);
  768.         SendClientFormattedMessage(id, -1, "{FF0000}[Admin]{FFFFFF} Votre pseudo a été changé à %s !", nom);
  769.         return 1;
  770.     }
  771.  
  772.     if(strcmp(cmd, "veh", true) == 0 || strcmp(cmd, "createveh", true) == 0)
  773.     {
  774.         if(grade[playerid] < 1338) return SendNoAMessage(playerid);
  775.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/veh [ID/Nom du model] [Couleur 1] [Couleur 2]", "BA9D0C", "", "");
  776.         new veht[15], col1, col2;
  777.         sscanf(params, "s[15] d d", veht, col1, col2);
  778.         new veh = ReturnVehicleModelID(veht);
  779.         if(!veh) return SendErrorMessage(playerid, "ID de model invalide !");
  780.         if(col1 < -1 || col1 > 255) return SendErrorMessage(playerid, "Les IDs de couleur sont compris entre 1 et 255 !");
  781.         if(col2 < -1 || col2 > 255) return SendErrorMessage(playerid, "Les IDs de couleur sont compris entre 1 et 255 !");
  782.  
  783.         if(IsPlayerInAnyVehicle(playerid)) { RemovePlayerFromVehicle(playerid); }
  784.         new Float:pos[4];
  785.         GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  786.         GetPlayerFacingAngle(playerid, pos[3]);
  787.         new car = CreateVehicle(veh, pos[0], pos[1]+1.0, pos[2]+1.0, pos[3], col1, col2, -1);
  788.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez créé un(e) %s, de model ID %s. Il ne sera pas enregistré dans le serveur, et sera détruit au prochain reboot.", veht, veh);
  789.         PutPlayerInVehicle(playerid, car, 0);
  790.         return 1;
  791.     }
  792.  
  793.     if(strcmp(cmd, "gotoincar", true) == 0 || strcmp(cmd, "gotoic", true) == 0)
  794.     {
  795.         if(grade[playerid] < 1338) return SendNoAMessage(playerid);
  796.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/gotoincar [ID du joueur]", "BA9D0C", "", "");
  797.         new id;
  798.         sscanf(params, "u", id);
  799.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  800.         if(!IsPlayerInAnyVehicle(id)) return SendErrorMessage(playerid, "Ce joueur n'est pas dans un véhicule !");
  801.         new vid = GetPlayerVehicleID(id);
  802.         for(new p = 0; p < MAX_PLAYERS; p++)
  803.         {
  804.             if(IsPlayerConnected(p))
  805.             {
  806.                 if(GetPlayerVehicleID(p) == vid)
  807.                 {
  808.                     if(GetPlayerVehicleSeat(p) == 0 || GetPlayerVehicleSeat(p) == 1 || GetPlayerVehicleSeat(p) == 2 || GetPlayerVehicleSeat(p) == 3) return SendErrorMessage(playerid, "Ce véhicule est plein.");
  809.                     else
  810.                     {
  811.                         if(GetPlayerVehicleSeat(p) != 0) { PutPlayerInVehicle(playerid, vid, 0); return 1; }
  812.                         else if(GetPlayerVehicleSeat(p) != 1) { PutPlayerInVehicle(playerid, vid, 1);  return 1; }
  813.                         else if(GetPlayerVehicleSeat(p) != 1) { PutPlayerInVehicle(playerid, vid, 2);  return 1; }
  814.                         else if(GetPlayerVehicleSeat(p) != 2) { PutPlayerInVehicle(playerid, vid, 3);  return 1; }
  815.                     }
  816.                 }
  817.             }
  818.  
  819.         }
  820.     }
  821.  
  822.     if(strcmp(cmd, "getincar", true) == 0 || strcmp(cmd, "getic", true) == 0)
  823.     {
  824.         if(grade[playerid] < 1338) return SendNoAMessage(playerid);
  825.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/getincar [ID du joueur]", "BA9D0C", "", "");
  826.         new id;
  827.         sscanf(params, "u", id);
  828.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  829.         new vid = GetPlayerVehicleID(playerid);
  830.         for(new p = 0; p < MAX_PLAYERS; p++)
  831.         {
  832.             if(IsPlayerConnected(p))
  833.             {
  834.                 if(GetPlayerVehicleID(p) == vid)
  835.                 {
  836.                     if(GetPlayerVehicleSeat(p) == 0 || GetPlayerVehicleSeat(p) == 1 || GetPlayerVehicleSeat(p) == 2 || GetPlayerVehicleSeat(p) == 3) return SendErrorMessage(playerid, "Votre véhicule est plein.");
  837.                     else
  838.                     {
  839.                         if(GetPlayerVehicleSeat(p) != 0) { PutPlayerInVehicle(id, vid, 0); return 1; }
  840.                         else if(GetPlayerVehicleSeat(p) != 1) { PutPlayerInVehicle(id, vid, 1); return 1; }
  841.                         else if(GetPlayerVehicleSeat(p) != 2) { PutPlayerInVehicle(id, vid, 2); return 1; }
  842.                         else if(GetPlayerVehicleSeat(p) != 3) { PutPlayerInVehicle(id, vid, 3); return 1; }
  843.                     }
  844.                 }
  845.             }
  846.         }
  847.     }
  848.  
  849.     if(strcmp(cmd, "meteo", true) == 0 || strcmp(cmd, "weather", true) == 0)
  850.     {
  851.         if(grade[playerid] < 1338) return SendNoAMessage(playerid);
  852.         if(!strlen(params)) {
  853.             SendSyntaxMessage(playerid, "/meteo [ID de la météo]", "BA9D0C", "IDs de météo", "0-7 : Beau temps, 8-16 : Orage, 9 : Nuageux, 32 : Très nuageux, 11-17-18 : Journée très chaude.");
  854.             SendClientMessage(playerid, -1, "{BA9D0C}[IDs de météo]{FFFFFF} 12 - 15 : Ciel brumeux/nuageux, 19 : Tempête de sable, 40 : Grosse tempête de sable, 20 : Ciel noir");
  855.             return 1;
  856.         }
  857.         new wid;
  858.         sscanf(params, "i", wid);
  859.         if(wid < 0 || wid > 40) return SendErrorMessage(playerid, "Les IDs de météo sont compris entre 0 et 40.");
  860.         SetWeather(wid);
  861.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez changé la météo du serveur pour %d !", wid);
  862.         return 1;
  863.     }
  864.  
  865.     if(strcmp(cmd, "adestroyc", true) == 0 || strcmp(cmd, "adc", true) == 0)
  866.     {
  867.         if(grade[playerid] < 1338) return SendNoAMessage(playerid);
  868.         if(!IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "Vous devez être dans un véhciule afin de le détruire !");
  869.         new car = GetPlayerVehicleID(playerid);
  870.         if(!IsValidVehicle(car)) return INVALID_VEHICLE_ID;
  871.         RemovePlayerFromVehicle(playerid);
  872.         DestroyVehicle(car);
  873.         return SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez détruit le véhicule ID %d !", car);
  874.     }
  875.  
  876.     /******************************************
  877.         Commandes pour level Admin 1339
  878.     ******************************************/
  879.  
  880.     if(strcmp(cmd, "unban", true) == 0 || strcmp(cmd, "deban", true) == 0)
  881.     {
  882.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  883.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/unban [Nom de compte]", "BA9D0C", "Nom de compte", "Le nom de compte doit être saisi tel qu'il est affiché dans la TAB. (Serveurs RP ne pas oublier le _)");
  884.         new banni[MAX_PLAYER_NAME+1];
  885.         sscanf(params, "s[MAX_PLAYER_NAME+1]", banni);
  886.         if(strlen(banni) < 6) return SendErrorMessage(playerid, "Un pseudo contient au minimum 6 caractères.");
  887.         format(requete, sizeof(requete), "DELETE FROM `Banlist` WHERE `nom_banni` = '%s'", banni);
  888.         mysql_tquery(MySQL, requete);
  889.         if(cache_affected_rows() > 0) return SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez débanni %s !", banni);
  890.         else return SendErrorMessage(playerid, "Ce nom de compte n'est pas dans la banlist.");
  891.     }
  892.  
  893.     if(strcmp(cmd, "unbanip", true) == 0 || strcmp(cmd, "debanip", true) == 0)
  894.     {
  895.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  896.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/unbanip [IP du compte]", "BA9D0C", "", "");
  897.         new ip[17];
  898.         sscanf(params, "s[17]", ip);
  899.         if(strlen(ip) < 7) return SendErrorMessage(playerid, "Une IP contient au minimum 7 caractères.");
  900.         format(requete, sizeof(requete), "DELETE FROM `Banlist` WHERE `ip` = '%s'", ip);
  901.         mysql_tquery(MySQL, requete);
  902.         if(cache_affected_rows() > 0) return SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez débanni l'ip : %s !", ip);
  903.         else return SendErrorMessage(playerid, "Cette IP n'est pas dans la banlist.");
  904.     }
  905.  
  906.     if(strcmp(cmd, "unbanid", true) == 0 || strcmp(cmd, "debanid", true) == 0)
  907.     {
  908.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  909.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/unbanid [ID du ban]", "BA9D0C", "", "");
  910.         new bid;
  911.         sscanf(params, "d", bid);
  912.         format(requete, sizeof(requete), "DELETE FROM `Banlist` WHERE `id` = '%d'", bid);
  913.         mysql_tquery(MySQL, requete);
  914.         if(cache_affected_rows() > 0) return SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez supprimé le ban d'ID %d !", bid);
  915.         else return SendErrorMessage(playerid, "Cet ID ne correspond à aucun ban de la banlist.");
  916.     }
  917.  
  918.     if(strcmp(cmd, "mettreadmin", true) == 0 || strcmp(cmd, "makeadmin", true) == 0 || strcmp(cmd, "adminlevel", true) == 0)
  919.     {
  920.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  921.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/mettreadmin [ID du joueur] [Niveau Admin]", "BA9D0C", "Niveaux Admin", "1 - 2 : Modérateur | 3 > 1338 : Administrateur | 1338 : Administrateur Général | 1339 : Super Admin | +1339 : Fondateur");
  922.         new id, alevel;
  923.         sscanf(params, "u i", id, alevel);
  924.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  925.         if(alevel > grade[playerid]) return SendErrorMessage(playerid, "Vous ne pouvez pas promouvoir un joueur à un grade plus haut que le vôtre !");
  926.         grade[id] = alevel;
  927.         new nom[MAX_PLAYER_NAME+1], nom2[MAX_PLAYER_NAME+1];
  928.         GetPlayerName(id, nom2, sizeof(nom2));
  929.         GetPlayerName(playerid, nom, sizeof(nom));
  930.         if(alevel > grade[id])
  931.         {
  932.             SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez promu %s (%d) au rang Admin %d.", nom2, id, alevel);
  933.             SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} L'Administrateur HR %s (%d) vous a promu au rang Admin %d. Félicitations !", nom, playerid, alevel);
  934.             return 1;
  935.         }
  936.         else
  937.         {
  938.             SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez été rétrogradé au rang Admin %d par l'Admin %s (%d).", alevel, nom2, id);
  939.             SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} L'Administrateur HR %s (%d) vous a rétrogradé au rang Admin %d.", nom, playerid, alevel);
  940.             return 1;
  941.         }
  942.     }
  943.  
  944.     if(strcmp(cmd, "gethereall", true) == 0)
  945.     {
  946.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  947.         new Float:pos[4];
  948.         GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  949.         GetPlayerFacingAngle(playerid, pos[3]);
  950.         for(new p = 0; p < MAX_PLAYERS; p++)
  951.         {
  952.             if(IsPlayerConnected(p))
  953.             {
  954.                 SetPlayerPos(p, pos[0], pos[1], pos[2]);
  955.                 SetPlayerFacingAngle(p, pos[3]);
  956.                 SendClientMessage(p, -1, "{FF0000}[Admin]{FFFFFF} Vous avez été téléporté à un Admin !");
  957.             }
  958.         }
  959.         return 1;
  960.     }
  961.  
  962.     if(strcmp(cmd, "explodeall", true) == 0 || strcmp(cmd, "explosertous", true) == 0)
  963.     {
  964.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  965.         new Float:pos[3];
  966.         for(new p = 0; p < MAX_PLAYERS; p++)
  967.         {
  968.             if(IsPlayerConnected(p))
  969.             {
  970.                 if(p == playerid) continue;
  971.                 else
  972.                 {
  973.                     GetPlayerPos(p, pos[0], pos[1], pos[2]);
  974.                     CreateExplosion(pos[0], pos[1], pos[2], 2, 15.0);
  975.                     CreateExplosion(pos[0], pos[1], pos[2], 2, 15.0);
  976.                 }
  977.             }
  978.         }
  979.         SendClientMessageToAll(-1, "{6E0E0E}[Zeus]{FFFFFF} Les misérables mortels ne méritent plus la vie. Je vous bombarde d'éclairs pour vous anéantir !");
  980.         return 1;
  981.     }
  982.  
  983.     if(strcmp(cmd, "heure", true) == 0)
  984.     {
  985.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  986.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/heure [Heure (0-23)]", "BA9D0C", "", "");
  987.         new heure;
  988.         sscanf(params, "d", heure);
  989.         if(heure < 0 || heure > 23) return SendErrorMessage(playerid, "L'heure doit être comprise entre 0 et 23 !");
  990.         SetWorldTime(heure);
  991.         return 1;
  992.     }
  993.  
  994.     if(strcmp(cmd, "mgravity", true) == 0)
  995.     {
  996.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  997.         SetGravity(0.001);
  998.         SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez changé la gravité du serveur pour celle de la Lune !");
  999.         return 1;
  1000.     }
  1001.  
  1002.     if(strcmp(cmd, "tgravity", true) == 0)
  1003.     {
  1004.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  1005.         SetGravity(0.008);
  1006.         SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez changé la gravité du serveur pour celle de la Terre (normal)");
  1007.         return 1;
  1008.     }
  1009.  
  1010.     if(strcmp(cmd, "gravity", true) == 0)
  1011.     {
  1012.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  1013.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/gravity [Gravité]", "BA9D0C", "Gravité", "La gravité est une flottante. Plus la valeur est basse, moins elle est forte. 0.0002 est une très faible gravité, alors que 1.228 est une très forte gravité. Vous devez saisir la flottante en entier.");
  1014.         new Float:grav;
  1015.         sscanf(params, "f", grav);
  1016.         SetGravity(grav);
  1017.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez changé la gravité du serveur pour %f !", grav);
  1018.         return 1;
  1019.     }
  1020.  
  1021.     if(strcmp(cmd, "donnerarme", true) == 0)
  1022.     {
  1023.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  1024.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/donnerarme [ID joueur] [ID arme] [Munitions]", "BA9D0C", "", "");
  1025.         new id, wid, ammo;
  1026.         sscanf(params, "u i d", id, wid, ammo);
  1027.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  1028.         else
  1029.         {
  1030.             new nomj[MAX_PLAYER_NAME+1];
  1031.             GivePlayerWeapon(id, wid, ammo);
  1032.             GetPlayerName(id, nomj, sizeof(nomj));
  1033.             SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez donné une arme d'id %d avec %d munitions à %s !", wid, ammo, nomj);
  1034.         }
  1035.         return 1;
  1036.     }
  1037.  
  1038.     if(strcmp(cmd, "givemoney", true) == 0 || strcmp(cmd, "donnerargent", true) == 0)
  1039.     {
  1040.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  1041.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/donnerargent [ID joueur] [Montant]", "BA9D0C", "", "");
  1042.         new id, money;
  1043.         sscanf(params, "u i", id, money);
  1044.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  1045.         GivePlayerMoney(id, money);
  1046.         new nomj[MAX_PLAYER_NAME+1];
  1047.         GetPlayerName(id, nomj, sizeof(nomj));
  1048.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez donné %d$ à %s !", money, nomj);
  1049.         return 1;
  1050.     }
  1051.  
  1052.     if(strcmp(cmd, "resetarme", true) == 0 || strcmp(cmd, "resetweapons", true) == 0)
  1053.     {
  1054.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  1055.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/resetarme [ID joueur]", "BA9D0C", "", "");
  1056.         new id;
  1057.         sscanf(params, "u", id);
  1058.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  1059.         ResetPlayerWeapons(id);
  1060.         new nomj[MAX_PLAYER_NAME+1];
  1061.         GetPlayerName(id, nomj, sizeof(nomj));
  1062.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez réinitialisé les armes de %s !", nomj);
  1063.         return 1;
  1064.     }
  1065.  
  1066.     if(strcmp(cmd, "resetmoney", true) == 0 || strcmp(cmd, "resetargent", true) == 0)
  1067.     {
  1068.         if(grade[playerid] < 1339) return SendNoAMessage(playerid);
  1069.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/resetargent [ID joueur]", "BA9D0C", "", "");
  1070.         new id;
  1071.         sscanf(params, "u", id);
  1072.         if(!IsPlayerConnected(id)) return SendNoCMessage(playerid);
  1073.         ResetPlayerMoney(id);
  1074.         new nomj[MAX_PLAYER_NAME+1];
  1075.         GetPlayerName(id, nomj, sizeof(nomj));
  1076.         SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez réinitialisé l'argent de %s !", nomj);
  1077.         return 1;
  1078.     }
  1079.  
  1080.     /************************************************
  1081.         Commandes pour level Admin supérieur à 1339
  1082.     ************************************************/
  1083.  
  1084.     if(strcmp(cmd, "kickall", true) == 0)
  1085.     {
  1086.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1087.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/kickall [Raison]", "BA9D0C", "", "");
  1088.         new raison[120], nom[MAX_PLAYER_NAME+1], messa[144];
  1089.         GetPlayerName(playerid, nom, sizeof(nom));
  1090.         sscanf(params, "s[120]", raison);
  1091.         for(new p = 0; p < MAX_PLAYERS; p++)
  1092.         {
  1093.             if(IsPlayerConnected(p))
  1094.             {
  1095.                 if(p == playerid) continue;
  1096.                 else
  1097.                 {
  1098.                     KickLog(p, nom, raison);
  1099.                     format(messa, sizeof(messa), "{FF0000}[Admin]{FFFFFF} Tous les joueurs ont été kickés par %s. Raison : %s", nom, raison);
  1100.                     KickWithMessage(p, mess);
  1101.                 }
  1102.             }
  1103.         }
  1104.         return 1;
  1105.     }
  1106.  
  1107.     if(strcmp(cmd, "banall", true) == 0)
  1108.     {
  1109.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1110.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/banall [Raison]", "BA9D0C", "", "");
  1111.         new raison[120], nom[MAX_PLAYER_NAME+1];
  1112.         GetPlayerName(playerid, nom, sizeof(nom));
  1113.         sscanf(params, "s[120]", raison);
  1114.         for(new p = 0; p < MAX_PLAYERS; p++)
  1115.         {
  1116.             if(IsPlayerConnected(p))
  1117.             {
  1118.                 if(p == playerid) continue;
  1119.                 else
  1120.                 {
  1121.                     BanSQL(p, raison, nom);
  1122.                 }
  1123.             }
  1124.         }
  1125.         return 1;
  1126.     }
  1127.  
  1128.     if(strcmp(cmd, "map", true) == 0)
  1129.     {
  1130.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1131.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/map [ID de l'objet]", "BA9D0C", "", "");
  1132.         new oid, obj;
  1133.         sscanf(params, "d", oid);
  1134.         new Float:pos[3];
  1135.         GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  1136.         obj = CreateDynamicObject(oid, pos[0], pos[1], pos[2], 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
  1137.         EditDynamicObject(playerid, obj);
  1138.         return 1;
  1139.     }
  1140.  
  1141.     if(strcmp(cmd, "unbanall", true) == 0)
  1142.     {
  1143.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1144.         mysql_tquery(MySQL, "DELETE FROM `Banlist`");
  1145.         if(cache_num_rows() == 0) return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Tous les bannissements ont été supprimés.");
  1146.         else return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Il y a eu un problème lors de la supression des bannissements.");
  1147.     }
  1148.  
  1149.     if(strcmp(cmd, "unbanallip", true) == 0)
  1150.     {
  1151.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1152.         mysql_tquery(MySQL, "ALTER TABLE `Banlist` DROP `ip`");
  1153.         if(cache_num_rows() > 0) return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez supprimé toutes les IP de la Banlist. Toutefois, les comptes sont encore bannis. Pour débannir tous les comptes, utiliser /unbanall.");
  1154.         else return SendErrorMessage(playerid, "Il y a eu un problème lors de la suppression des IPs de la banlist.");
  1155.     }
  1156.  
  1157.     if(strcmp(cmd, "slapall", true) == 0)
  1158.     {
  1159.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1160.         new Float:pos[3];
  1161.         for(new p = 0; p < MAX_PLAYERS; p++)
  1162.         {
  1163.             if(IsPlayerConnected(p))
  1164.             {
  1165.                 if(p == playerid) continue;
  1166.                 else
  1167.                 {
  1168.                     GetPlayerPos(p, pos[0], pos[1], pos[2]);
  1169.                     SetPlayerPos(p, pos[0], pos[1], pos[2]+10.0);
  1170.                 }
  1171.             }
  1172.         }
  1173.         return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Tous les joueurs ont été slappés.");
  1174.     }
  1175.  
  1176.     if(strcmp(cmd, "vehslapall", true) == 0)
  1177.     {
  1178.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1179.         new Float:pos[3];
  1180.         for(new p = 0; p < MAX_PLAYERS; p++)
  1181.         {
  1182.             if(IsPlayerConnected(p))
  1183.             {
  1184.                 if(IsPlayerInAnyVehicle(p))
  1185.                 {
  1186.                     if(p == playerid) continue;
  1187.                     else
  1188.                     {
  1189.                         GetVehiclePos(GetPlayerVehicleID(p), pos[0], pos[1], pos[2]);
  1190.                         SetPlayerPos(GetPlayerVehicleID(p), pos[0], pos[1], pos[2]+15.0);
  1191.                     }
  1192.                 }
  1193.             }
  1194.         }
  1195.         return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Tous les joueurs en véhicule ont été slappés.");
  1196.     }
  1197.  
  1198.     if(strcmp(cmd, "superslapall", true) == 0)
  1199.     {
  1200.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1201.         new Float:pos[3];
  1202.         for(new p = 0; p < MAX_PLAYERS; p++)
  1203.         {
  1204.             if(IsPlayerConnected(p))
  1205.             {
  1206.                 if(p == playerid) continue;
  1207.                 else
  1208.                 {
  1209.                     GetPlayerPos(p, pos[0], pos[1], pos[2]);
  1210.                     SetPlayerPos(p, pos[0], pos[1], pos[2]+20.0);
  1211.                 }
  1212.             }
  1213.         }
  1214.         return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Tous les joueurs ont été super slappés.");
  1215.     }
  1216.  
  1217.     if(strcmp(cmd, "supervehslapall", true) == 0)
  1218.     {
  1219.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1220.         new Float:pos[3];
  1221.         for(new p = 0; p < MAX_PLAYERS; p++)
  1222.         {
  1223.             if(IsPlayerConnected(p))
  1224.             {
  1225.                 if(IsPlayerInAnyVehicle(p))
  1226.                 {
  1227.                     if(p == playerid) continue;
  1228.                     else
  1229.                     {
  1230.                         GetVehiclePos(GetPlayerVehicleID(p), pos[0], pos[1], pos[2]);
  1231.                         SetPlayerPos(GetPlayerVehicleID(p), pos[0], pos[1], pos[2]+40.0);
  1232.                     }
  1233.                 }
  1234.             }
  1235.         }
  1236.         return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Tous les joueurs en véhicule ont été super slappés.");
  1237.     }
  1238.  
  1239.     if(strcmp(cmd, "freezeall", true) == 0)
  1240.     {
  1241.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1242.         for(new p = 0; p < MAX_PLAYERS; p++)
  1243.         {
  1244.             if(IsPlayerConnected(p))
  1245.             {
  1246.                 if(p == playerid) continue;
  1247.                 else
  1248.                 {
  1249.                     TogglePlayerControllable(p, 0);
  1250.                     GameTextForPlayer(p, "Freeze", 5000, 0);
  1251.                 }
  1252.             }
  1253.         }
  1254.         return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Tous les joueurs ont été freeze !");
  1255.     }
  1256.  
  1257.     if(strcmp(cmd, "unfreezeall", true) == 0)
  1258.     {
  1259.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1260.         for(new p = 0; p < MAX_PLAYERS; p++)
  1261.         {
  1262.             if(IsPlayerConnected(p))
  1263.             {
  1264.                 if(p == playerid) continue;
  1265.                 else
  1266.                 {
  1267.                     TogglePlayerControllable(p, 1);
  1268.                     GameTextForPlayer(p, "Unfreeze", 5000, 0);
  1269.                 }
  1270.             }
  1271.         }
  1272.         return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Tous les joueurs ont été unfreeze !");
  1273.     }
  1274.  
  1275.     if(strcmp(cmd, "donnerarmeall", true) == 0)
  1276.     {
  1277.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1278.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/donnerarmeall [ID de l'arme] [Munitions]", "BA9D0C", "", "");
  1279.         new id, ammo;
  1280.         sscanf(params, "d d", id, ammo);
  1281.         for(new p = 0; p < MAX_PLAYERS; p++)
  1282.         {
  1283.             if(IsPlayerConnected(p))
  1284.             {
  1285.                 GivePlayerWeapon(p, id, ammo);
  1286.             }
  1287.         }
  1288.         return SendClientFormattedMessage(playerid, -1, "{FF0000}[Admins]{FFFFFF} Vous avez donné une arme d'ID %d avec %d munitions à tous les joueurs !");
  1289.     }
  1290.  
  1291.     if(strcmp(cmd, "resetarmeall", true) == 0)
  1292.     {
  1293.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1294.         for(new p = 0; p < MAX_PLAYERS; p++)
  1295.         {
  1296.             if(IsPlayerConnected(p))
  1297.             {
  1298.                 if(p == playerid) continue;
  1299.                 else ResetPlayerWeapons(p);
  1300.             }
  1301.         }
  1302.         return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez réinitialisé les armes de tous les joueurs !");
  1303.     }
  1304.  
  1305.     if(strcmp(cmd, "givemoneyall", true) == 0)
  1306.     {
  1307.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1308.         if(!strlen(params)) return SendSyntaxMessage(playerid, "/givemoneyall [Montant]", "BA9D0C", "", "");
  1309.         new argent;
  1310.         sscanf(params, "d", argent);
  1311.         for(new p = 0; p < MAX_PLAYERS; p++)
  1312.         {
  1313.             if(IsPlayerConnected(p))
  1314.             {
  1315.                 GivePlayerMoney(p, argent);
  1316.             }
  1317.         }
  1318.         return SendClientFormattedMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez donné %d$ à tous les joueurs !", argent);
  1319.     }
  1320.  
  1321.     if(strcmp(cmd, "resetmoneyall", true) == 0)
  1322.     {
  1323.         if(grade[playerid] <= 1339) return SendNoAMessage(playerid);
  1324.         for(new p = 0; p < MAX_PLAYERS; p++)
  1325.         {
  1326.             if(IsPlayerConnected(p))
  1327.             {
  1328.                 if(p == playerid) continue;
  1329.                 else ResetPlayerMoney(p);
  1330.             }
  1331.         }
  1332.         return SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez réinitialisé l'argent en poche de tous les joueurs !");
  1333.     }
  1334.     return 0;
  1335. }
  1336.  
  1337.  
  1338.  
  1339.  
  1340. /**************************
  1341.     FONCTIONS
  1342. **************************/
  1343.  
  1344. public KickPublic(playerid) { Kick(playerid); }
  1345.  
  1346. public libererJoueur(playerid, Float:x, Float:y, Float:z)
  1347. {
  1348.     SetPlayerPos(playerid, x, y, z);
  1349.     SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez été libéré de prison. Faîtes attention la prochaine fois.");
  1350.     return 1;
  1351. }
  1352.  
  1353. public BanSQL(playerid, raison[], admin[])
  1354. {
  1355.     new jour, mois, annee, heures, minutes, secondes, ip[16], mess[144], nom[MAX_PLAYER_NAME+1];
  1356.     GetPlayerName(playerid, nom, sizeof(nom));
  1357.     GetPlayerIp(playerid, ip, 16);
  1358.     getdate(annee, mois, jour);
  1359.     gettime(heures, minutes, secondes);
  1360.     format(requete, sizeof(requete), "INSERT INTO `Banlist` VALUES (NULL, '%s', '%d-%d-%d %d:%d:%d', '%s', '%s', %s')", nom, jour, mois, annee, heures, minutes, secondes, admin, raison, ip);
  1361.     mysql_tquery(MySQL, requete);
  1362.     format(mess, sizeof(mess), "{FF0000}[Admin]{FFFFFF} Vous avez été banni par l'Admin %s. Raison : %s", admin, raison);
  1363.     KickWithMessage(playerid, mess);
  1364.     return 1;
  1365. }
  1366.  
  1367. public KickLog(kickedid, adminname[], raison[])
  1368. {
  1369.     new kickedname[MAX_PLAYER_NAME+1], date_heure[6];
  1370.     getdate(date_heure[0], date_heure[1], date_heure[2]);
  1371.     gettime(date_heure[3], date_heure[4], date_heure[5]);
  1372.     GetPlayerName(kickedid, kickedname, sizeof(kickedname));
  1373.     format(requete, sizeof(requete), "INSERT INTO `Kicklog` VALUES (NULL, '%s', '%s', '%s', '%d-%d-%d %d:%d:%d')", kickedname, adminname, raison, date_heure[0], date_heure[1], date_heure[2], date_heure[3], date_heure[4], date_heure[5]);
  1374.     mysql_tquery(MySQL, requete);
  1375.     return 1;
  1376. }
  1377.  
  1378. public JailLog(jailedid, adminname[], temps, raison[])
  1379. {
  1380.     new jailedname[MAX_PLAYER_NAME+1], date_heure[6];
  1381.     getdate(date_heure[0], date_heure[1], date_heure[2]);
  1382.     gettime(date_heure[3], date_heure[4], date_heure[5]);
  1383.     GetPlayerName(jailedid, jailedname, sizeof(jailedname));
  1384.     format(requete, sizeof(requete), "INSERT INTO `Jaillog` VALUES (NULL, '%s', '%s', '%d', '%s', '%d-%d-%d %d:%d:%d')", jailedname, adminname, temps, raison, date_heure[0], date_heure[1], date_heure[2], date_heure[3], date_heure[4], date_heure[5]);
  1385.     mysql_tquery(MySQL, requete);
  1386.     return 1;
  1387. }
  1388.  
  1389. public UpdateSpec(playerid)
  1390. {
  1391.     if(InfoJoueur[playerid][jSpec] != -1)
  1392.     {
  1393.         if(IsPlayerConnected(InfoJoueur[playerid][jSpec]))
  1394.         {
  1395.             new Float:pos[4];
  1396.             GetPlayerPos(InfoJoueur[playerid][jSpec], pos[0], pos[1], pos[2]);
  1397.             SetPlayerCameraLookAt(playerid, pos[0], pos[1], pos[2]);
  1398.             GetPlayerFacingAngle(InfoJoueur[playerid][jSpec], pos[3]);
  1399.             SetPlayerFacingAngle(playerid, pos[3]);
  1400.         }
  1401.     }
  1402.     SleepThread(300);
  1403. }
  1404.  
  1405. public UpdateJail(playerid)
  1406. {
  1407.     if(!IsPlayerConnected(playerid)) return 1;
  1408.     new messa[144];
  1409.     if(InfoJoueur[playerid][jJailr] > 0)
  1410.     {
  1411.         InfoJoueur[playerid][jJailr]--;
  1412.         format(messa, sizeof(messa), "~p~Il vous reste %d secondes de prison !", InfoJoueur[playerid][jJailr]);
  1413.         GameTextForPlayer(playerid, messa, 1000, 1);
  1414.     }
  1415.     else
  1416.     {
  1417.         SetPlayerPos(playerid, InfoJoueur[playerid][jPosx], InfoJoueur[playerid][jPosy], InfoJoueur[playerid][jPosz]);
  1418.         SetPlayerVirtualWorld(playerid, 0);
  1419.         SendClientMessage(playerid, -1, "{FF0000}[Admin]{FFFFFF} Vous avez été libéré de prison après un acte NoRP. Réflechissez avant d'en refaire d'autres !");
  1420.     }
  1421.     SleepThread(1000);
  1422.     return 1;
  1423. }
  1424.  
  1425. stock KickWithMessage(playerid, message[])
  1426. {
  1427.     SendClientMessageToAll(0xFF0000FF, message);
  1428.     SetTimerEx("KickPublic", 1, false, "i", playerid);
  1429. }
  1430.  
  1431. stock SendErrorMessage(playerid, message[])
  1432. {
  1433.     return SendClientFormattedMessage(playerid, -1, "{FF0000}[Erreur]{FFFFFF} %s", message);
  1434. }
  1435.  
  1436.  
  1437. stock SendNoAMessage(playerid)
  1438. {
  1439.     return SendErrorMessage(playerid, "Tu n'as pas l'autorisation d'utiliser cette commande.");
  1440. }
  1441.  
  1442. stock SendNoCMessage(playerid)
  1443. {
  1444.     return SendErrorMessage(playerid, "Ce joueur n'est pas connecté !");
  1445. }
  1446.  
  1447. stock SendSyntaxMessage(playerid, syntax[], couleur[], actions[], parname[])
  1448. {
  1449.     SendClientFormattedMessage(playerid, -1, "{33CCFF}USAGE:{FFFFFF} %s", syntax);
  1450.     if(strlen(actions) < 3 || strlen(parname) < 3) return 1;
  1451.     else return SendClientFormattedMessage(playerid, -1, "{%s}[%s]{FFFFFF} %s", couleur, actions, parname);
  1452. }
  1453.  
  1454. stock ProxDetector(Float:radi, playerid, message[], couleur)
  1455. {
  1456.     new Float:pos[3];
  1457.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  1458.     for(new p = 0; p < MAX_PLAYERS; p++)
  1459.     {
  1460.         if(IsPlayerConnected(p))
  1461.         {
  1462.             if(IsPlayerInRangeOfPoint(p, radi, pos[0], pos[1], pos[2]))
  1463.             {
  1464.                 SendClientMessage(p, couleur, message);
  1465.             }
  1466.         }
  1467.     }
  1468.     return 1;
  1469. }
  1470.  
  1471. stock GetName(playerid)
  1472. {
  1473.     new tszName[MAX_PLAYER_NAME+1];
  1474.     GetPlayerName(playerid, tszName, sizeof(tszName));
  1475.     return tszName;
  1476. }
  1477.  
  1478. // Crédits : U2C RP
  1479.  
  1480. stock IsNumeric(const string[])
  1481. {
  1482.   new length=strlen(string);
  1483.   if (length==0) return false;
  1484.   for (new i = 0; i < length; i++)
  1485.     {
  1486.       if (
  1487.             (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+') // Not a number,'+' or '-'
  1488.              || (string[i]=='-' && i!=0)                                             // A '-' but not at first.
  1489.              || (string[i]=='+' && i!=0)                                             // A '+' but not at first.
  1490.          ) return false;
  1491.     }
  1492.   if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
  1493.   return true;
  1494. }
  1495.  
  1496. stock ReturnVehicleModelID(string[])
  1497. {
  1498.  
  1499.     if(IsNumeric(string))
  1500.     {
  1501.         new id = strval(string);
  1502.  
  1503.         if(id >= 400 && id <= 611)
  1504.         {
  1505.             return id;
  1506.         }
  1507.     }
  1508.  
  1509.     for(new i = 0;i < sizeof(VehicleNames);i++)
  1510.     {
  1511.         if(strfind(VehicleNames[i],string,true) != -1)
  1512.         {
  1513.             return i + 400;
  1514.         }
  1515.     }
  1516.  
  1517.     return 0;
  1518. }
  1519.  
  1520. // Crédits : MrFredo (SendClientFormattedMessage & SendClientFormattedMessageToAll)
  1521.  
  1522. stock SendClientFormattedMessage(playerid, color, const msg[], {Float,_}:...)
  1523. {
  1524.     new len = strlen(msg),d=0,posArg = 3;
  1525.     new dest[512];
  1526.     for(new i=0;i<len;i++)
  1527.     {
  1528.         if(msg[i] == '%')
  1529.         {
  1530.             switch (msg[i+1])
  1531.             {
  1532.                 case 's':
  1533.                 {
  1534.                     new pos,arg,tmppos;
  1535.                     new str[128];
  1536.                     while(getarg(posArg,pos)!='\0')
  1537.                     {
  1538.                         arg=getarg(posArg,pos++);
  1539.                         str[tmppos]=arg;
  1540.                         tmppos++;
  1541.                     }
  1542.                     strins(dest,str,d,strlen(str));
  1543.                     d+=strlen(str);
  1544.                     posArg++;
  1545.                     i++;
  1546.                 }
  1547.                 case 'i', 'd':
  1548.                 {
  1549.                     new str[128];
  1550.                     format(str,sizeof(str),"%d",getarg(posArg));
  1551.                     strins(dest,str,d,strlen(str));
  1552.                     d+=strlen(str);
  1553.                     posArg++;
  1554.                     i++;
  1555.                 }
  1556.                 case 'f':
  1557.                 {
  1558.                     new str[128];
  1559.                     format(str,sizeof(str),"%f",getarg(posArg));
  1560.                     strins(dest,str,d,strlen(str));
  1561.                     d+=strlen(str);
  1562.                     posArg++;
  1563.                     i++;
  1564.                 }
  1565.                 case '.':
  1566.                 {
  1567.                     new len2 = msg[i+2];
  1568.                     if(len2 == 0)
  1569.                     {
  1570.                         dest[d] = msg[i];
  1571.                         d++;
  1572.                     }
  1573.                     else
  1574.                     {
  1575.                         new str[32],formatting[5];
  1576.                         formatting[0] = '%';
  1577.                         formatting[1] = '.';
  1578.                         formatting[2] = len2;
  1579.                         formatting[3] = 'f';
  1580.                         format(str,sizeof(str),formatting,getarg(posArg));
  1581.                         strins(dest,str,d,len2);
  1582.                         d+=len;
  1583.                         posArg++;
  1584.                         i+= 2;
  1585.                     }
  1586.                 }
  1587.                 default:
  1588.                 {
  1589.                     dest[d] = msg[i];
  1590.                     d++;
  1591.                 }
  1592.             }
  1593.         }
  1594.         else
  1595.         {
  1596.             dest[d] = msg[i];
  1597.             d++;
  1598.         }
  1599.     }
  1600.     //printf("[DEBUG] %s",dest);
  1601.     return SendClientMessage(playerid,color,dest);
  1602. }
  1603.  
  1604. stock SendClientFormattedMessageToAll(color, const msg[], {Float,_}:...)
  1605. {
  1606.     new len = strlen(msg),d=0,posArg = 2;
  1607.     new dest[128];
  1608.     for(new i=0;i<len;i++)
  1609.     {
  1610.         if(msg[i] == '%')
  1611.         {
  1612.             switch (msg[i+1])
  1613.             {
  1614.                 case 's':
  1615.                 {
  1616.                     new pos,arg,tmppos;
  1617.                     new str[128];
  1618.                     while(getarg(posArg,pos)!='\0')
  1619.                     {
  1620.                         arg=getarg(posArg,pos++);
  1621.                         str[tmppos]=arg;
  1622.                         tmppos++;
  1623.                     }
  1624.                     strins(dest,str,d,strlen(str));
  1625.                     d+=strlen(str);
  1626.                     posArg++;
  1627.                     i++;
  1628.                 }
  1629.                 case 'i', 'd':
  1630.                 {
  1631.                     new str[128];
  1632.                     format(str,sizeof(str),"%d",getarg(posArg));
  1633.                     strins(dest,str,d,strlen(str));
  1634.                     d+=strlen(str);
  1635.                     posArg++;
  1636.                     i++;
  1637.                 }
  1638.                 case 'f':
  1639.                 {
  1640.                     new str[128];
  1641.                     format(str,sizeof(str),"%f",getarg(posArg));
  1642.                     strins(dest,str,d,strlen(str));
  1643.                     d+=strlen(str);
  1644.                     posArg++;
  1645.                     i++;
  1646.                 }
  1647.                 case '.':
  1648.                 {
  1649.                     new len2 = msg[i+2];
  1650.                     if(len2 == 0)
  1651.                     {
  1652.                         dest[d] = msg[i];
  1653.                         d++;
  1654.                     }
  1655.                     else
  1656.                     {
  1657.                         new str[32],formatting[5];
  1658.                         formatting[0] = '%';
  1659.                         formatting[1] = '.';
  1660.                         formatting[2] = len2;
  1661.                         formatting[3] = 'f';
  1662.                         format(str,sizeof(str),formatting,getarg(posArg));
  1663.                         strins(dest,str,d,len2);
  1664.                         d+=len;
  1665.                         posArg++;
  1666.                         i+= 2;
  1667.                     }
  1668.                 }
  1669.                 default:
  1670.                 {
  1671.                     dest[d] = msg[i];
  1672.                     d++;
  1673.                 }
  1674.             }
  1675.         }
  1676.         else
  1677.         {
  1678.             dest[d] = msg[i];
  1679.             d++;
  1680.         }
  1681.     }
  1682.     //printf("[DEBUG] %s",dest);
  1683.     return SendClientMessageToAll(color,dest);
  1684. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement