Advertisement
Guest User

Gamemode

a guest
Jun 4th, 2014
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 46.86 KB | None | 0 0
  1. /*
  2.  
  3.  ________                                         .___      
  4.  /  _____/_____    _____   ____   _____   ____   __| _/____  
  5. /   \  ___\__  \  /     \_/ __ \ /     \ /  _ \ / __ |/ __ \
  6. \    \_\  \/ __ \|  Y Y  \  ___/|  Y Y  (  <_> ) /_/ \  ___/
  7.  \______  (____  /__|_|  /\___  >__|_|  /\____/\____ |\___  >          
  8.         \/     \/      \/     \/      \/            \/    \/            
  9.  
  10. __________       .__                .__                
  11. \______   \ ____ |  |   ____ ______ |  | _____  ___.__.
  12.  |       _//  _ \|  | _/ __ \\____ \|  | \__  \<   |  |
  13.  |    |   (  <_> )  |_\  ___/|  |_> >  |__/ __ \\___  |
  14.  |____|_  /\____/|____/\___  >   __/|____(____  / ____|
  15.         \/                 \/|__|             \/\/    
  16.  
  17.  
  18.  
  19. Changelog :
  20.  
  21. • 29 Mai 2014 : Ajout des premières commandes/fonctions/includes : base extrêmement tiny
  22. • 2/3 Juin 2014 : Ajout de l'anti-cheat (version bêta) :
  23.                 - Anti cheat vie
  24.                 - Anti cheat armure
  25.                 - Anti cheat armes
  26.                 - Anti cheat argent
  27.                 - Anti cheat tuning
  28.                 - Anti cheat block munition
  29. • 4 juin 2014 : Ajout de la commande /immun [Joueur] [Temps] : Autorise les cheats à un joueur pendant temps minute(s)
  30.                 Ajout d'un raccourci pour le chat admin (# [Message])
  31.  
  32.  
  33.  
  34.  
  35.  
  36. ___.   ._____.   .__  .__        __  .__                                      
  37. \_ |__ |__\_ |__ |  | |__| _____/  |_|  |__   ____  ________ __   ____   ______
  38.  | __ \|  || __ \|  | |  |/  _ \   __\  |  \_/ __ \/ ____/  |  \_/ __ \ /  ___/
  39.  | \_\ \  || \_\ \  |_|  (  <_> )  | |   Y  \  ___< <_|  |  |  /\  ___/ \___ \
  40.  |___  /__||___  /____/__|\____/|__| |___|  /\___  >__   |____/  \___  >____  >
  41.      \/        \/                         \/     \/   |__|           \/     \/
  42.  
  43. */
  44.  
  45. #include <a_samp> // SA-MP Team
  46. #include <a_mysql> // BlueG/Maddinator
  47. #include <streamer> // Incognito
  48. #include <callbacks> // Emmet_
  49. #include <hash> // Mellnik
  50. #include <s_sniper_fix> // S4T3K
  51. #include <s_string_ex> // S4T3K
  52. #include <YSI\y_va> // Y_Less
  53. #include <YSI\md5> // Y_Less
  54. #include <YSI\y_iterate> // Y_Less
  55. #include <YSI\y_colours> // Y_Less
  56. #include <sscanf2> // Y_Less
  57. #include <zcmd> // Zeex
  58. #include <crashdetect> // Zeex
  59.  
  60. /*
  61.  
  62. ________          _____.__       .__  __  .__                      
  63. \______ \   _____/ ____\__| ____ |__|/  |_|__| ____   ____   ______
  64.  |    |  \_/ __ \   __\|  |/    \|  \   __\  |/  _ \ /    \ /  ___/
  65.  |    `   \  ___/|  |  |  |   |  \  ||  | |  (  <_> )   |  \\___ \
  66. /_______  /\___  >__|  |__|___|  /__||__| |__|\____/|___|  /____  >
  67.         \/     \/              \/                        \/     \/
  68.  
  69. */
  70.  
  71. #if !defined isnull
  72.     #define (isnull(%0)) ((%0[0]) == ('\0'))
  73. #endif
  74.  
  75. #define SCM SendClientMessage
  76. #define SCMToAll SendClientMessageToAll
  77. #define SendClientMessage SendClientMessageEx
  78. #define SendClientMessageToAll SendClientMessageToAllEx
  79. #define printf printfEx
  80. #define GameTextForPlayer GameTextForPlayerEx
  81. #define GetPlayerIP GetPlayerIp
  82.  
  83. // Anti-cheat
  84. #define SetPlayerHealth AC_SetPlayerHealth
  85. #define SetPlayerArmour AC_SetPlayerArmour
  86. #define GivePlayerWeapon AC_GivePlayerWeapon
  87. #define ResetPlayerWeapons AC_ResetPlayerWeapons
  88. #define GivePlayerMoney AC_GivePlayerMoney
  89. #define ResetPlayerMoney AC_ResetPlayerMoney
  90. #define AddVehicleComponent AC_AddVehicleComponent
  91.  
  92. #define CHEAT_RANGE 50 // Fréquence en ms d'immunité anti-cheat (plus bas possible pour de meilleurs résultats, mais ne pas trop baisser sur serveurs faibles performances)
  93.  
  94. #define CMD_SAVE "/vehsave"
  95.  
  96. #define SYNTAX 0x33CCFFFF
  97. #define NORMAL_TEXT_1 0xE6E6E6E6
  98. #define NORMAL_TEXT_2 0xC8C8C8C8
  99. #define NORMAL_TEXT_3 0xAAAAAAAA
  100. #define NORMAL_TEXT_4 0x8C8C8C8C
  101. #define NORMAL_TEXT_5 0x6E6E6E6E
  102.  
  103. #define SQL_HOST "mysql2.alwaysdata.com"
  104. #define SQL_USER "private"
  105. #define SQL_DATA "private"
  106. #define SQL_PASS "private"
  107.  
  108. #define JAIL_X 0.0
  109. #define JAIL_Y 0.0
  110. #define JAIL_Z 0.0
  111. #define JAIL_VW 0
  112.  
  113. #define D_CREDITS 1
  114.  
  115. /*
  116.  
  117. ___________                         _____                                    
  118. \_   _____/ ____  __ __  _____     /  _  \___________________  ___.__. ______
  119.  |    __)_ /    \|  |  \/     \   /  /_\  \_  __ \_  __ \__  \<   |  |/  ___/
  120.  |        \   |  \  |  /  Y Y  \ /    |    \  | \/|  | \// __ \\___  |\___ \
  121. /_______  /___|  /____/|__|_|  / \____|__  /__|   |__|  (____  / ____/____  >
  122.         \/     \/            \/          \/                  \/\/         \/
  123.  
  124. */
  125.  
  126. enum pInfo
  127. {
  128.     pLevel,
  129.     pAdmin,
  130.     pPass[33],
  131.     pMail,
  132.     pHBan,
  133.     pJailTime,
  134.     Float:pJail[3],
  135.     pMutetime,
  136.     pAFKd,
  137.  
  138.  
  139.     // Anti-Cheat (rajouter des variables joueur au dessus si besoin pour éviter les confusions)
  140.     bool:cArgent,
  141.     bool:cVie,
  142.     bool:cArmure,
  143.     bool:cArmes,
  144.     bool:cTuning,
  145.     bool:cBlock,
  146.     Float:oVie,
  147.     Float:oArmure,
  148.     oArme[12],
  149.     oArgent,
  150. };
  151.  
  152. new
  153.     PlayerInfo[MAX_PLAYERS][pInfo];
  154.  
  155.  
  156. /*
  157.  
  158. ____   ____            .__      ___.   .__                
  159. \   \ /   /____ _______|__|____ \_ |__ |  |   ____   ______
  160.  \   Y   /\__  \\_  __ \  \__  \ | __ \|  | _/ __ \ /  ___/
  161.   \     /  / __ \|  | \/  |/ __ \| \_\ \  |_\  ___/ \___ \
  162.    \___/  (____  /__|  |__(____  /___  /____/\___  >____  >
  163.                \/              \/    \/          \/     \/
  164.         .__        ___.          .__                
  165.    ____ |  |   ____\_ |__ _____  |  |   ____   ______
  166.   / ___\|  |  /  _ \| __ \\__  \ |  | _/ __ \ /  ___/
  167.  / /_/  >  |_(  <_> ) \_\ \/ __ \|  |_\  ___/ \___ \
  168.  \___  /|____/\____/|___  (____  /____/\___  >____  >
  169. /_____/                 \/     \/          \/     \/
  170.  
  171. */
  172.  
  173. static MySQL, m_banid;
  174. new pid, raison[145], query[256];
  175.  
  176. /*
  177.  
  178. _________        .__  .__ ___.                  __            
  179. \_   ___ \_____  |  | |  |\_ |__ _____    ____ |  | __  ______
  180. /    \  \/\__  \ |  | |  | | __ \\__  \ _/ ___\|  |/ / /  ___/
  181. \     \____/ __ \|  |_|  |_| \_\ \/ __ \\  \___|    <  \___ \
  182.  \______  (____  /____/____/___  (____  /\___  >__|_ \/____  >
  183.         \/     \/              \/     \/     \/     \/     \/
  184.         _____  _____.__       .__       .__  .__                
  185.   _____/ ____\/ ____\__| ____ |__| ____ |  | |  |   ____   ______
  186.  /  _ \   __\\   __\|  |/ ___\|  |/ __ \|  | |  | _/ __ \ /  ___/
  187. (  <_> )  |   |  |  |  \  \___|  \  ___/|  |_|  |_\  ___/ \___ \
  188.  \____/|__|   |__|  |__|\___  >__|\___  >____/____/\___  >____  >
  189.                             \/        \/               \/     \/
  190.  
  191. */
  192.  
  193. main()
  194. {
  195.     printf("Gamemode roleplay beta testing.");
  196.     return 1;
  197. }
  198.  
  199. public OnGameModeInit()
  200. {
  201.     MySQL = mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
  202.     if(mysql_errno() != 0)
  203.     {
  204.         printf("Problème de connexion à la base de données MySQL, deuxième tentative... [pid SQL : Hote : %s, User : %s, DB : %s, Pass : %s]", SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
  205.         mysql_reconnect(MySQL);
  206.         if(mysql_errno() != 0)
  207.         {
  208.             mysql_close(MySQL);
  209.             return printf("Deuxième connexion impossible, base de données SQL non chargée.");
  210.         }
  211.         else printf("Deuxième connexion SQL réussie, début du chargement des données...");
  212.     }
  213.     else printf("Connexion SQL réussie, début du chargement des données...");
  214.     return 1;
  215. }
  216.  
  217. public OnPlayerConnect(playerid)
  218. {
  219.     new ip[17], country[50];
  220.     #pragma unused country
  221.     GetPlayerIp(playerid, ip, sizeof(ip));
  222.     format(query, sizeof(query), "SELECT * FROM Banlist WHERE nom = '%s' OR ip = '%s'", GetName(playerid), ip);
  223.     mysql_tquery(MySQL, query, "OnBanInfoConnect", "i", playerid);
  224.     return 1;
  225. }
  226.  
  227. public OnPlayerUpdate(playerid)
  228. {
  229.     if(PlayerInfo[playerid][pJailTime] <= gettime()) Unjail(playerid);
  230.     else UpdateTime(playerid);
  231.    
  232.     if(PlayerInfo[playerid][pMutetime] >= gettime()) Unmute(playerid);
  233.  
  234.     // Anti cheat
  235.  
  236.     new Float:vie, Float:armure, arme[2][12], argent;
  237.     GetPlayerHealth(playerid, vie);
  238.     GetPlayerArmour(playerid, armure);
  239.     argent = GetPlayerMoney(playerid);
  240.     for(new s = 0; s < 12; s++)
  241.     {
  242.         GetPlayerWeaponData(playerid, s, arme[0][s], arme[1][s]);
  243.         if(arme[0][s] != PlayerInfo[playerid][oArme][s] && !PlayerInfo[playerid][cArmes]) BanSQL(playerid, -2, "Cheat - D-GUN");
  244.         PlayerInfo[playerid][oArme][s] = arme[0][s];
  245.     }
  246.     if( (vie != PlayerInfo[playerid][oVie]) && !PlayerInfo[playerid][cVie]) BanSQL(playerid, -2, "Cheat - vie");
  247.     if( (armure != PlayerInfo[playerid][oArmure]) && !PlayerInfo[playerid][cArmure]) BanSQL(playerid, -2, "Cheat - Armure");
  248.     if( (argent != PlayerInfo[playerid][oArgent]) && !PlayerInfo[playerid][cArgent]) BanSQL(playerid, -2, "Cheat - Argent");
  249.  
  250.     PlayerInfo[playerid][oVie] = vie;
  251.     PlayerInfo[playerid][oArmure] = armure;
  252.     PlayerInfo[playerid][oArgent] = argent;
  253.     return 1;
  254. }
  255.  
  256. public OnPlayerText(playerid, text[])
  257. {
  258.     if((text[0] == '#') && (PlayerInfo[playerid][pAdmin] < 1))
  259.     {
  260.         new ttext[144];
  261.         strmid(ttext, text, 1, strlen(text));
  262.         return ABroadCast(1, -1, ""DEEP_SKY_BLUE_2"[Admin chat]"DEEP_SKY_BLUE_3"[%s - %s]"DEEP_SKY_BLUE_4" [%s]", GetName(playerid), GetARank(playerid), ttext);
  263.     }
  264.     //if(!CheckValid(text)) ABroadCast(1, 0xFF0000FF, "[Invalide]"FIREBRICK" %s (%d) a prononcé un mot jugé invalide par l'anti-pub.", GetName(playerid), playerid);
  265.     ProxDetectorEx(20.0, playerid, NORMAL_TEXT_1, NORMAL_TEXT_2, NORMAL_TEXT_3, NORMAL_TEXT_4, NORMAL_TEXT_5, "%s : %s", MakeRP(GetName(playerid)), text);
  266.     return 1;
  267. }
  268.  
  269. public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
  270. {
  271.     new Float:health, Float:armour;
  272.     GetPlayerHealth(playerid, health);
  273.     GetPlayerArmour(playerid, armour);
  274.     if(armour >= amount) Enable_safe_armour(playerid);
  275.     else Enable_safe_health(playerid);
  276.     return 1;
  277. }
  278.  
  279. public OnVehicleMod(playerid, vehicleid, componentid)
  280. {
  281.     if(!PlayerInfo[playerid][cTuning] && GetPlayerInterior(playerid) == 0) BanSQL(playerid, -2, "Cheat - Tuning");
  282.     return 1;
  283. }
  284.  
  285. /*
  286.  
  287. _________                                           .___            
  288. \_   ___ \  ____   _____   _____ _____    ____    __| _/____   ______
  289. /    \  \/ /  _ \ /     \ /     \\__  \  /    \  / __ |/ __ \ /  ___/
  290. \     \___(  <_> )  Y Y  \  Y Y  \/ __ \|   |  \/ /_/ \  ___/ \___ \
  291.  \______  /\____/|__|_|  /__|_|  (____  /___|  /\____ |\___  >____  >
  292.         \/             \/      \/     \/     \/      \/    \/     \/
  293.  
  294. */
  295.  
  296. CMD:credits(playerid, params[])
  297. {
  298.     return ShowPlayerDialog(playerid, D_CREDITS, DIALOG_STYLE_MSGBOX, "Crédits", "{9ACD32}S4T3K/Soufiane{FFFFFF} : Gamemode\n{9ACD32}David Montana{FFFFFF} : Idées/Mapping\n{9ACD32}BlueG/Maddinat0r{FFFFFF} : MySQL plugin\n{9ACD32}ZeeX{FFFFFF} : ZCMD/Fix sur y_va\n{9ACD32}Y_Less{FFFFFF} : YSI/sscanf/Whirlpool\n{9ACD32}Slice{FFFFFF} : Mailer\n{9ACD32}Emmet_{FFFFFF} : Nouvelles callbacks\n{9ACD32}Incognito{FFFFFF} : Streamer\n{9ACD32}Mellnik{FFFFFF} : Hash plugin\n{9ACD32}Team SA-MP{FFFFFF} : SAMP\n", "OK", "");
  299. }
  300.  
  301. CMD:ban(playerid, params[])
  302. {
  303.     if(sscanf(params, "us[145]", pid, raison)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /ban [Joueur] [Raison]");
  304.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  305.     if(PlayerInfo[pid][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendNoAdMessage(playerid);
  306.     BanSQL(pid, playerid, raison);
  307.     return 1;
  308. }
  309.  
  310. CMD:fban(playerid, params[])
  311. {
  312.     if(sscanf(params, "us[145]", pid, raison)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /ban [Joueur] [Raison]");
  313.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  314.     return SCMToAll(0xFF0000FF, "[Admin]"FIREBRICK" Le joueur %s (%d) a été banni de façon permanente par un Administrateur"RED_4" [%s].",
  315.         GetName(playerid), playerid, raison);
  316. }
  317.  
  318. CMD:hban(playerid, params[])
  319. {
  320.     new heures;
  321.     if(sscanf(params, "uds[145]", pid, heures, raison)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /banh [Joueur] [Heures] [Raison]");
  322.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  323.     if(PlayerInfo[pid][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendNoAdMessage(playerid);
  324.     BanSQL(pid, playerid, raison, true, heures);
  325.     return 1;
  326. }
  327.  
  328. CMD:a(playerid, params[])
  329. {
  330.     if(isnull(params)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /a(dmin) [Message]");
  331.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  332.     return ABroadCast(1, -1, ""DEEP_SKY_BLUE_2"[Admin chat]"DEEP_SKY_BLUE_3"[%s - %s]"DEEP_SKY_BLUE_4" [%s]", GetName(playerid), GetARank(playerid), params);
  333. }
  334.  
  335. CMD:admin(playerid, params[]) { return cmd_a(playerid, params); }
  336.  
  337. CMD:unban(playerid, params[])
  338. {
  339.     if(PlayerInfo[playerid][pAdmin] < 2) return SendNoAMessage(playerid);
  340.     new nom[MAX_PLAYER_NAME+1];
  341.     if(sscanf(params, "s[MAX_PLAYER_NAME+1]", nom)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /unban [Nom du compte]");
  342.     mysql_format(MySQL, query, sizeof(query), "DELETE FROM Banlist WHERE nom = '%e'", nom);
  343.     mysql_tquery(MySQL, query, "OnUnbanDone", "iis", playerid, 1, nom);
  344.     return 1;
  345. }
  346.  
  347. CMD:unbanid(playerid, params[])
  348. {
  349.     if(PlayerInfo[playerid][pAdmin] < 2) return SendNoAMessage(playerid);
  350.     new banid;
  351.     if(sscanf(params, "d", banid)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /unbanid [ID du ban]");
  352.     format(query, sizeof(query), "DELETE FROM Banlist WHERE pid = '%d'", banid);
  353.     mysql_tquery(MySQL, query, "OnUnbanDone", "iisi", playerid, 2, "", banid);
  354.     return 1;
  355. }
  356.  
  357. CMD:unbanip(playerid, params[])
  358. {
  359.     if(PlayerInfo[playerid][pAdmin] < 2) return SendNoAMessage(playerid);
  360.     new ip[17];
  361.     if(sscanf(params, "s[17]", ip)) return SCM(playerid, 0x33CFFFFF, "[USAGE]{FFFFFF} /unbanip [IP bannie]");
  362.     mysql_format(MySQL, query, sizeof(query), "DELETE FROM Banlist WHERE ip = '%e'", ip);
  363.     mysql_tquery(MySQL, query, "OnUnbanDone", "iisis", playerid, 2, "", -1, ip);
  364.     return 1;
  365. }
  366.  
  367. CMD:kick(playerid, params[])
  368. {
  369.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  370.     if(sscanf(params, "us[145]", pid, raison)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /kick [Joueur] [Raison]");
  371.     if(PlayerInfo[pid][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendNoAdMessage(playerid);
  372.     KickSQL(pid, playerid, raison);
  373.     return 1;
  374. }
  375.  
  376. CMD:jail(playerid, params[])
  377. {
  378.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  379.     new temps;
  380.     if(sscanf(params, "uds[145]", pid, temps, raison)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /jail [Joueur] [Temps (minutes)] [Raison]");
  381.     if(PlayerInfo[pid][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendNoAdMessage(playerid);
  382.     JailSQL(pid, playerid, temps, raison);
  383.     return 1;
  384. }
  385.  
  386. CMD:unjail(playerid, params[])
  387. {
  388.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  389.     if(sscanf(params, "u", pid)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /unjail [Joueur]");
  390.     Unjail(pid);
  391.     return 1;
  392. }
  393.  
  394. CMD:mute(playerid, params[])
  395. {
  396.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  397.     new temps;
  398.     if(sscanf(params, "uds[145]", pid, temps, raison)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /mute [Joueur] [Temps (minutes)] [Raison]");
  399.     if(PlayerInfo[pid][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendNoAdMessage(playerid);
  400.     MuteSQL(pid, playerid, temps, raison);
  401.     return 1;
  402. }
  403.  
  404. CMD:unmute(playerid, params[])
  405. {
  406.     if(PlayerInfo[playerid][pAdmin] < 1) return SendNoAMessage(playerid);
  407.     if(sscanf(params, "u", pid)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /unmute [Joueur]");
  408.     Unmute(pid);
  409.     return 1;
  410. }
  411.  
  412. CMD:demute(playerid, params[]) { return cmd_unmute(playerid, params); }
  413.  
  414. CMD:veh(playerid, params[])
  415. {
  416.     new vehname[41], vehid, col1, col2, respawn, Float:pos[4];
  417.     col1 = 1, col2 = 1, respawn = 20;
  418.     if(sscanf(params, "s[41]DDD", vehname, col1, col2, respawn)) return SCM(playerid, SYNTAX, "[USAGE]{FFFFFF} /veh [ModelID/Nom] [Couleur 1 (optionnel)] [Couleur 2 (optionnel)] [Temps de respawn (Optionnel)]");
  419.     vehid = GetVehicleModelIDFromName(vehname);
  420.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  421.     GetPlayerFacingAngle(playerid, pos[3]);
  422.     new veh = CreateVehicle(vehid, floatadd(pos[0], 1.5), floatadd(pos[1], 1.5), floatadd(pos[2], 1.5), pos[3], col1, col2, respawn);
  423.     PutPlayerInVehicle(playerid, veh, 0);
  424.     return SCM(playerid, -1, ""RED"[Admin]"WHITE" Tu as créé un véhicule, cependant il est considéré comme temporaire ! Il faut utiliser %s pour le sauvegarder dans la base de données !" CMD_SAVE);
  425. }
  426.  
  427.  
  428. /*
  429.   _____                     __  .__                      
  430. _/ ____\____   ____   _____/  |_|__| ____   ____   ______
  431. \   __\/  _ \ /    \_/ ___\   __\  |/  _ \ /    \ /  ___/
  432.  |  | (  <_> )   |  \  \___|  | |  (  <_> )   |  \\___ \
  433.  |__|  \____/|___|  /\___  >__| |__|\____/|___|  /____  >
  434.                   \/     \/                    \/     \/
  435.  
  436. */
  437.  
  438. stock BanSQL(playerid, adminid = -1, const reason[] = "", bool:temp = false, heures = 0)
  439. {
  440.     if(!IsPlayerConnected(playerid)) return SendNoCMessage(adminid, playerid);
  441.     new date[6], pIP[17], name[MAX_PLAYER_NAME];
  442.     if(adminid == -2) name = "Anti cheat";
  443.     else name = GetName(adminid);
  444.  
  445.     getdate(date[0], date[1], date[2]);
  446.     gettime(date[3], date[4], date[5]);
  447.     GetPlayerIp(playerid, pIP, 17);
  448.     if(temp) PlayerInfo[playerid][pHBan] = gettime() + heures*3600;
  449.     mysql_format(MySQL, query, sizeof(query), "INSERT INTO Banlist VALUES(NULL, '%s', '%s', '%e', '%s', '%d-%d-%d %d:%d:%d', %d', '%d')",
  450.     GetName(playerid), name, reason, pIP, date[0], date[1], date[2], date[3], date[4], date[5], temp, heures);
  451.     mysql_tquery(MySQL, query);
  452.     format(query, sizeof(query), "SELECT `pid` FROM Banlist WHERE `nom` = '%s' LIMIT 1", GetName(playerid));
  453.     mysql_tquery(MySQL, query, "OnBanInfoFound", "i", playerid);
  454.     new rank[30];
  455.     rank = GetARank(playerid);
  456.     toupper(rank[0]);
  457.     if(temp)
  458.     {
  459.         SCMToAll(0xFF0000FF, "[Admin]"FIREBRICK" Le joueur %s (%d) a été banni par un Administrateur pendant %d heures"RED_4" [%s].",
  460.         GetName(playerid), playerid, heures, reason);
  461.         ABroadCast(1, 0xFF0000FF, "[Ban]"FIREBRICK" Le joueur %s (%d) a été banni par %s"RED3"[%s]"FIREBRICK" pendant %d heures"RED_4" [%s].",
  462.         GetName(playerid), playerid, name, rank, heures, reason);
  463.         KickWithMessage(playerid, 0xFF0000FF, "[Ban]"FIREBRICK" Vous avez été banni pour %d heures du serveur [%s].\nSi vous pensez que c'est une erreur, prenez un screen de ce message et postez une demande de débanissement. [BAN pid : %d]",
  464.         heures, reason, m_banid);
  465.     }
  466.     else
  467.     {
  468.         SCMToAll(0xFF0000FF, "[Admin]"FIREBRICK" Le joueur %s (%d) a été banni de façon permanente par un Administrateur"RED_4" [%s].",
  469.         GetName(playerid), playerid, reason);
  470.         ABroadCast(1, 0xFF0000FF, "[Ban]"FIREBRICK" Le joueur %s (%d) a été banni par %s"RED3"[%s]"FIREBRICK" de façon permanente"RED_4" [%s].",
  471.         GetName(playerid), playerid, name, rank, reason);
  472.         KickWithMessage(playerid, 0xFF0000FF, "[Ban]"FIREBRICK" Vous avez été banni de façon permanente du serveur "RED_4"[%s].\nSi vous pensez que c'est une erreur, prenez un screen de ce message et postez une demande de débanissement."BROWN_4"[BAN pid : %d]",
  473.         heures, reason, m_banid);
  474.     }
  475.     return 1;
  476. }
  477.  
  478. stock KickSQL(playerid, adminid = -1, const reason[] = "")
  479. {
  480.     if(!IsPlayerConnected(playerid)) return SendNoCMessage(adminid, playerid);
  481.     new  date[6], adminName[MAX_PLAYER_NAME];
  482.     if(adminid == -2) adminName = "Anti cheat";
  483.     else adminName = "Anti cheat";
  484.  
  485.     getdate(date[0], date[1], date[2]);
  486.     gettime(date[3], date[4], date[5]);
  487.     mysql_format(MySQL, query, sizeof(query), "INSERT INTO Kicklog VALUES(NULL, '%s', '%s', '%e', '%d-%d-%d %d:%d:%d')",
  488.     GetName(playerid), adminName, reason, date[0], date[1], date[2], date[3], date[4], date[5]);
  489.     mysql_tquery(MySQL, query);
  490.     new rank[30];
  491.     rank = GetARank(playerid);
  492.     toupper(rank[0]);
  493.     SCMToAll(0xFF0000FF, "[Admin]"FIREBRICK" Le joueur %s (%d) a été kické du serveur par un Administrateur"RED_4" [%s].", GetName(playerid), playerid, reason);
  494.     SetTimerEx("kickPublic", 1, false, "i", playerid);
  495.     return ABroadCast(1, 0xFF0000FF, "[Kick]"FIREBRICK" Le joueur %s (%d) a été kické du serveur par %s [%s]"RED_4" [%s].", GetName(playerid), playerid, adminName, rank, reason);
  496. }
  497.  
  498. stock JailSQL(playerid, adminid, temps, const reason[])
  499. {
  500.     if(!IsPlayerConnected(playerid)) return SendNoCMessage(adminid, playerid);
  501.     new  date[6];
  502.     getdate(date[0], date[1], date[2]);
  503.     gettime(date[3], date[4], date[5]);
  504.     mysql_format(MySQL, query, sizeof(query), "INSERT INTO Jaillog VALUES(NULL, '%s', '%s', '%e', '%d', '%d-%d-%d %d:%d:%d')",
  505.     GetName(playerid), GetName(adminid), reason, temps, date[0], date[1], date[2], date[3], date[4], date[5]);
  506.     mysql_tquery(MySQL, query);
  507.     new rank[30];
  508.     rank = GetARank(playerid);
  509.     toupper(rank[0]);
  510.     PlayerInfo[playerid][pJailTime] = gettime() + temps*60;
  511.     GetPlayerPos(playerid, PlayerInfo[playerid][pJail][0], PlayerInfo[playerid][pJail][1], PlayerInfo[playerid][pJail][2]);
  512.     SetPlayerPos(playerid, JAIL_X, JAIL_Y, JAIL_Z);
  513.     SetPlayerVirtualWorld(playerid, JAIL_VW);
  514.     SCMToAll(0xFF0000FF, "[Admin]"FIREBRICK" Le joueur %s (%d) a été emprisonné pour %d minutes par un Administrateur"RED_4" [%s].", GetName(playerid), playerid, temps, reason);
  515.     return ABroadCast(1, 0xFF0000FF, "[Jail]"FIREBRICK" Le joueur %s (%d) a été emprisonné pour %d minutes par %s [%s]"RED_4" [%s].", GetName(playerid), playerid, GetName(adminid), rank, reason);
  516. }
  517.  
  518. stock MuteSQL(playerid, adminid, temps, const reason[])
  519. {
  520.     if(!IsPlayerConnected(playerid)) return SendNoCMessage(adminid, playerid);
  521.     new  date[6];
  522.     getdate(date[0], date[1], date[2]);
  523.     gettime(date[3], date[4], date[5]);
  524.     mysql_format(MySQL, query, sizeof(query), "INSERT INTO Mutelog VALUES(NULL, '%s', '%s', '%e', '%d', '%d-%d-%d %d:%d:%d')",
  525.     GetName(playerid), GetName(adminid), reason, temps, date[0], date[1], date[2], date[3], date[4], date[5]);
  526.     mysql_tquery(MySQL, query);
  527.     new rank[30];
  528.     rank = GetARank(playerid);
  529.     toupper(rank[0]);
  530.     PlayerInfo[playerid][pMutetime] = gettime() + temps*60;
  531.     SCMToAll(0xFF0000FF, "[Admin]"FIREBRICK" Le joueur %s (%d) a été mute pour %d minutes par un Administrateur"RED_4" [%s].", GetName(playerid), playerid, temps, reason);
  532.     return ABroadCast(1, 0xFF0000FF, "[Mute]"FIREBRICK" Le joueur %s (%d) a été mute pour %d minutes par %s [%s]"RED_4" [%s].", GetName(playerid), playerid, GetName(adminid), rank, reason);
  533. }
  534.  
  535. stock KickWithMessage(playerid, const couleur, const reason[], va_args<>)
  536. {
  537.     static out[145];
  538.     va_format(out, sizeof(out), reason, va_start<3>);
  539.     SCM(playerid, couleur, out);
  540.     SetTimerEx("KickPublic", 1, false, "i", playerid);
  541.     return 1;
  542. }
  543. stock SendClientMessageEx(playerid, couleur, const message[], va_args<>)
  544. {
  545.     static out[145];
  546.     va_format(out, sizeof(out), message, va_start<3>);
  547.     return SCM(playerid, couleur, out);
  548. }
  549.  
  550. stock SendClientMessageToAllEx(couleur, const message[], va_args<>)
  551. {
  552.     static out[145];
  553.     va_format(out, sizeof(out), message, va_start<2>);
  554.     return SCMToAll(couleur, out);
  555. }
  556.  
  557. stock SendClientMessageToAllExept(exceptid, const couleur, const message[], va_args<>)
  558. {
  559.     if(!IsPlayerConnected(exceptid)) return 1;
  560.     static out[145];
  561.     va_format(out, sizeof(out), message, va_start<3>);
  562.     foreach(new p : Player)
  563.     {
  564.         if(p == exceptid) continue;
  565.         SCM(p, couleur, message);
  566.     }
  567.     return 1;
  568. }
  569.  
  570. stock GameTextForPlayerEx(playerid, const message[], temps, style, va_args<>)
  571. {
  572.     static out[145];
  573.     va_format(out, sizeof(out), message, va_start<4>);
  574.     return GameTextForPlayer(playerid, out, temps, style);
  575. }
  576.  
  577. stock printfEx(const string[], va_args<>)
  578. {
  579.     static out[512];
  580.     va_format(out, strlen(string), string, va_start<1>);
  581.     return printf(out);
  582. }
  583.  
  584. stock ABroadCast(level, const couleur, const string[], va_args<>)
  585. {
  586.     static out[145];
  587.     va_format(out, sizeof(out), string, va_start<3>);
  588.     foreach(new p : Player)
  589.     {
  590.         if(PlayerInfo[p][pAdmin] >= level) SCM(p, couleur, out);
  591.     }
  592.     return 1;
  593. }
  594.  
  595. stock SendNoAMessage(playerid)
  596. {
  597.     return SCM(playerid, 0xFF0000FF, "[Erreur]"FIREBRICK"Vous n'êtes pas autorisé à utiliser cette commande.");
  598. }
  599.  
  600. stock SendNoCMessage(playerid, ucid)
  601. {
  602.     return SCM(playerid, 0xFF0000FF, "[Erreur]{FFFFFF} Le joueur %d n'est pas connecté.", ucid);
  603. }
  604.  
  605. stock SendNoAdMessage(playerid)
  606. {
  607.     return SCM(playerid, 0xFF0000FF, "[Erreur]{FFFFFF} Vous ne pouvez pas sanctionner administrativement un membre du staff d'un rang plus haut que le vôtre !");
  608. }
  609.  
  610. stock GetName(playerid)
  611. {
  612.     new kfjqlkheizgfbsmlz[MAX_PLAYER_NAME];
  613.     GetPlayerName(playerid, kfjqlkheizgfbsmlz, sizeof(kfjqlkheizgfbsmlz));
  614.     return kfjqlkheizgfbsmlz;
  615. }
  616.  
  617. stock ProxDetector(Float:radi, playerid, const couleur, const message[], va_args<>)
  618. {
  619.     static out[145];
  620.     new Float:posi[3];
  621.     GetPlayerPos(playerid, posi[0], posi[1], posi[2]);
  622.     va_format(out, sizeof(out), message, va_start<4>);
  623.     foreach(new p : Player)
  624.     {
  625.         if(IsPlayerInRangeOfPoint(p, radi, posi[0], posi[1], posi[2]) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(p))) SCM(p, couleur, out);
  626.     }
  627.     return 1;
  628. }
  629.  
  630. stock ProxDetectorEx(Float:radi, playerid, col1, col2, col3, col4, col5, const message[], va_args<>)
  631. {
  632.     new Float:posx, Float:posy, Float:posz;
  633.     new Float:oldposx, Float:oldposy, Float:oldposz;
  634.     new Float:tempposx, Float:tempposy, Float:tempposz;
  635.     static out[145];
  636.     va_format(out, sizeof(out), message, va_start<8>);
  637.     GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  638.     foreach(new p : Player)
  639.     {
  640.         GetPlayerPos(p, posx, posy, posz);
  641.         tempposx = (oldposx -posx);
  642.         tempposy = (oldposy -posy);
  643.         tempposz = (oldposz -posz);
  644.         //printff("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
  645.         if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
  646.         {
  647.             SendClientMessage(p, col1, out);
  648.         }
  649.         else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
  650.         {
  651.             SendClientMessage(p, col2, out);
  652.         }
  653.         else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
  654.         {
  655.             SendClientMessage(p, col3, out);
  656.         }
  657.         else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
  658.         {
  659.             SendClientMessage(p, col4, out);
  660.         }
  661.         else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  662.         {
  663.             SendClientMessage(p, col5, out);
  664.         }
  665.     }
  666.     return 1;
  667. }
  668.  
  669. stock GetARank(playerid)
  670. {
  671.     new rank[30];
  672.     switch(PlayerInfo[playerid][pAdmin])
  673.     {
  674.         case 0: rank = "joueur";
  675.         case 1: rank = "modérateur";
  676.         case 2..4: rank = "administrateur";
  677.         case 5: rank = "administrateur général";
  678.         case 6: rank = "super administrateur";
  679.         case 7: rank = "administrateur suprême";
  680.         case 8: rank = "head admin";
  681.     }
  682.     return rank;
  683. }
  684.  
  685. stock MakeRP(username[])
  686. {
  687.     if(cfind(username, '_')) cdel(username, '_');
  688.     return username;
  689. }
  690.  
  691. /*stock CheckValid(const text[])
  692. {
  693.     for(new t = 0; t < sizeof(InvalidWords); t++)
  694.     {
  695.         if(strfind(text, InvalidWords[t]) != -1) return false;
  696.     }
  697.     return true;
  698. }*/
  699.  
  700. stock SplitDateTime(datetime[], &annee, &mois, &jour, &heure, &minute, &seconde)
  701. {
  702.     new tmp[20];
  703.     strmid(tmp, datetime, 0, 4);
  704.     strdel(datetime, 0, 5);
  705.     annee = strval(tmp);
  706.    
  707.     strmid(tmp, datetime, 0, 2);
  708.     strdel(datetime, 0, 3);
  709.     mois = strval(tmp);
  710.    
  711.     strmid(tmp, datetime, 0, 2);
  712.     strdel(datetime, 0, 3);
  713.     jour = strval(tmp);
  714.    
  715.     strmid(tmp, datetime, 0, 2);
  716.     strdel(datetime, 0, 3);
  717.     heure = strval(tmp);
  718.    
  719.     strmid(tmp, datetime, 0, 2);
  720.     strdel(datetime, 0, 3);
  721.     minute = strval(tmp);
  722.    
  723.     strmid(tmp, datetime, 0, 2);
  724.     strdel(datetime, 0, 3);
  725.     seconde = strval(tmp);
  726. }
  727.  
  728. // SSCANF:vehicle - Y_Less
  729.  
  730. stock GetVehicleModelIDFromName(const string[])
  731. {
  732.     if ('0' <= string[0] <= '9')
  733.     {
  734.         new
  735.             ret = strval(string);
  736.         if (400 <= ret <= 611)
  737.         {
  738.             return ret;
  739.         }
  740.     }
  741.     else if (!strcmp(string, "Landstalker")) return 400;
  742.     else if (!strcmp(string, "Bravura")) return 401;
  743.     else if (!strcmp(string, "Buffalo")) return 402;
  744.     else if (!strcmp(string, "Linerunner")) return 403;
  745.     else if (!strcmp(string, "Perenniel")) return 404;
  746.     else if (!strcmp(string, "Sentinel")) return 405;
  747.     else if (!strcmp(string, "Dumper")) return 406;
  748.     else if (!strcmp(string, "Firetruck")) return 407;
  749.     else if (!strcmp(string, "Trashmaster")) return 408;
  750.     else if (!strcmp(string, "Stretch")) return 409;
  751.     else if (!strcmp(string, "Manana")) return 410;
  752.     else if (!strcmp(string, "Infernus")) return 411;
  753.     else if (!strcmp(string, "Voodoo")) return 412;
  754.     else if (!strcmp(string, "Pony")) return 413;
  755.     else if (!strcmp(string, "Mule")) return 414;
  756.     else if (!strcmp(string, "Cheetah")) return 415;
  757.     else if (!strcmp(string, "Ambulance")) return 416;
  758.     else if (!strcmp(string, "Leviathan")) return 417;
  759.     else if (!strcmp(string, "Moonbeam")) return 418;
  760.     else if (!strcmp(string, "Esperanto")) return 419;
  761.     else if (!strcmp(string, "Taxi")) return 420;
  762.     else if (!strcmp(string, "Washington")) return 421;
  763.     else if (!strcmp(string, "Bobcat")) return 422;
  764.     else if (!strcmp(string, "Mr Whoopee")) return 423;
  765.     else if (!strcmp(string, "BF Injection")) return 424;
  766.     else if (!strcmp(string, "Hunter")) return 425;
  767.     else if (!strcmp(string, "Premier")) return 426;
  768.     else if (!strcmp(string, "Enforcer")) return 427;
  769.     else if (!strcmp(string, "Securicar")) return 428;
  770.     else if (!strcmp(string, "Banshee")) return 429;
  771.     else if (!strcmp(string, "Predator")) return 430;
  772.     else if (!strcmp(string, "Bus")) return 431;
  773.     else if (!strcmp(string, "Rhino")) return 432;
  774.     else if (!strcmp(string, "Barracks")) return 433;
  775.     else if (!strcmp(string, "Hotknife")) return 434;
  776.     else if (!strcmp(string, "Article Trailer")) return 435;
  777.     else if (!strcmp(string, "Previon")) return 436;
  778.     else if (!strcmp(string, "Coach")) return 437;
  779.     else if (!strcmp(string, "Cabbie")) return 438;
  780.     else if (!strcmp(string, "Stallion")) return 439;
  781.     else if (!strcmp(string, "Rumpo")) return 440;
  782.     else if (!strcmp(string, "RC Bandit")) return 441;
  783.     else if (!strcmp(string, "Romero")) return 442;
  784.     else if (!strcmp(string, "Packer")) return 443;
  785.     else if (!strcmp(string, "Monster")) return 444;
  786.     else if (!strcmp(string, "Admiral")) return 445;
  787.     else if (!strcmp(string, "Squallo")) return 446;
  788.     else if (!strcmp(string, "Seasparrow")) return 447;
  789.     else if (!strcmp(string, "Pizzaboy")) return 448;
  790.     else if (!strcmp(string, "Tram")) return 449;
  791.     else if (!strcmp(string, "Article Trailer 2")) return 450;
  792.     else if (!strcmp(string, "Turismo")) return 451;
  793.     else if (!strcmp(string, "Speeder")) return 452;
  794.     else if (!strcmp(string, "Reefer")) return 453;
  795.     else if (!strcmp(string, "Tropic")) return 454;
  796.     else if (!strcmp(string, "Flatbed")) return 455;
  797.     else if (!strcmp(string, "Yankee")) return 456;
  798.     else if (!strcmp(string, "Caddy")) return 457;
  799.     else if (!strcmp(string, "Solair")) return 458;
  800.     else if (!strcmp(string, "RC Van")) return 459;
  801.     else if (!strcmp(string, "Skimmer")) return 460;
  802.     else if (!strcmp(string, "PCJ-600")) return 461;
  803.     else if (!strcmp(string, "Faggio")) return 462;
  804.     else if (!strcmp(string, "Freeway")) return 463;
  805.     else if (!strcmp(string, "RC Baron")) return 464;
  806.     else if (!strcmp(string, "RC Raider")) return 465;
  807.     else if (!strcmp(string, "Glendale")) return 466;
  808.     else if (!strcmp(string, "Oceanic")) return 467;
  809.     else if (!strcmp(string, "Sanchez")) return 468;
  810.     else if (!strcmp(string, "Sparrow")) return 469;
  811.     else if (!strcmp(string, "Patriot")) return 470;
  812.     else if (!strcmp(string, "Quad")) return 471;
  813.     else if (!strcmp(string, "Coastguard")) return 472;
  814.     else if (!strcmp(string, "Dinghy")) return 473;
  815.     else if (!strcmp(string, "Hermes")) return 474;
  816.     else if (!strcmp(string, "Sabre")) return 475;
  817.     else if (!strcmp(string, "Rustler")) return 476;
  818.     else if (!strcmp(string, "ZR-350")) return 477;
  819.     else if (!strcmp(string, "Walton")) return 478;
  820.     else if (!strcmp(string, "Regina")) return 479;
  821.     else if (!strcmp(string, "Comet")) return 480;
  822.     else if (!strcmp(string, "BMX")) return 481;
  823.     else if (!strcmp(string, "Burrito")) return 482;
  824.     else if (!strcmp(string, "Camper")) return 483;
  825.     else if (!strcmp(string, "Marquis")) return 484;
  826.     else if (!strcmp(string, "Baggage")) return 485;
  827.     else if (!strcmp(string, "Dozer")) return 486;
  828.     else if (!strcmp(string, "Maverick")) return 487;
  829.     else if (!strcmp(string, "News Maverick")) return 488;
  830.     else if (!strcmp(string, "Rancher")) return 489;
  831.     else if (!strcmp(string, "FBI Rancher")) return 490;
  832.     else if (!strcmp(string, "Virgo")) return 491;
  833.     else if (!strcmp(string, "Greenwood")) return 492;
  834.     else if (!strcmp(string, "Jetmax")) return 493;
  835.     else if (!strcmp(string, "Hotring Racer")) return 494;
  836.     else if (!strcmp(string, "Sandking")) return 495;
  837.     else if (!strcmp(string, "Blista Compact")) return 496;
  838.     else if (!strcmp(string, "Police Maverick")) return 497;
  839.     else if (!strcmp(string, "Boxville")) return 498;
  840.     else if (!strcmp(string, "Benson")) return 499;
  841.     else if (!strcmp(string, "Mesa")) return 500;
  842.     else if (!strcmp(string, "RC Goblin")) return 501;
  843.     else if (!strcmp(string, "Hotring Racer")) return 502;
  844.     else if (!strcmp(string, "Hotring Racer")) return 503;
  845.     else if (!strcmp(string, "Bloodring Banger")) return 504;
  846.     else if (!strcmp(string, "Rancher")) return 505;
  847.     else if (!strcmp(string, "Super GT")) return 506;
  848.     else if (!strcmp(string, "Elegant")) return 507;
  849.     else if (!strcmp(string, "Journey")) return 508;
  850.     else if (!strcmp(string, "Bike")) return 509;
  851.     else if (!strcmp(string, "VTT")) return 510;
  852.     else if (!strcmp(string, "Beagle")) return 511;
  853.     else if (!strcmp(string, "Cropduster")) return 512;
  854.     else if (!strcmp(string, "Stuntplane")) return 513;
  855.     else if (!strcmp(string, "Tanker")) return 514;
  856.     else if (!strcmp(string, "Roadtrain")) return 515;
  857.     else if (!strcmp(string, "Nebula")) return 516;
  858.     else if (!strcmp(string, "Majestic")) return 517;
  859.     else if (!strcmp(string, "Buccaneer")) return 518;
  860.     else if (!strcmp(string, "Shamal")) return 519;
  861.     else if (!strcmp(string, "Hydra")) return 520;
  862.     else if (!strcmp(string, "FCR-900")) return 521;
  863.     else if (!strcmp(string, "NRG-500")) return 522;
  864.     else if (!strcmp(string, "HPV1000")) return 523;
  865.     else if (!strcmp(string, "Bétonnière")) return 524;
  866.     else if (!strcmp(string, "Towtruck")) return 525;
  867.     else if (!strcmp(string, "Fortune")) return 526;
  868.     else if (!strcmp(string, "Cadrona")) return 527;
  869.     else if (!strcmp(string, "FBI Truck")) return 528;
  870.     else if (!strcmp(string, "Willard")) return 529;
  871.     else if (!strcmp(string, "Forklift")) return 530;
  872.     else if (!strcmp(string, "Tractor")) return 531;
  873.     else if (!strcmp(string, "Combine Harvester")) return 532;
  874.     else if (!strcmp(string, "Feltzer")) return 533;
  875.     else if (!strcmp(string, "Remington")) return 534;
  876.     else if (!strcmp(string, "Slamvan")) return 535;
  877.     else if (!strcmp(string, "Blade")) return 536;
  878.     else if (!strcmp(string, "Freight (Train)")) return 537;
  879.     else if (!strcmp(string, "Brownstreak (Train)")) return 538;
  880.     else if (!strcmp(string, "Vortex")) return 539;
  881.     else if (!strcmp(string, "Vincent")) return 540;
  882.     else if (!strcmp(string, "Bullet")) return 541;
  883.     else if (!strcmp(string, "Clover")) return 542;
  884.     else if (!strcmp(string, "Sadler")) return 543;
  885.     else if (!strcmp(string, "Firetruck LA")) return 544;
  886.     else if (!strcmp(string, "Hustler")) return 545;
  887.     else if (!strcmp(string, "Intruder")) return 546;
  888.     else if (!strcmp(string, "Primo")) return 547;
  889.     else if (!strcmp(string, "Cargobob")) return 548;
  890.     else if (!strcmp(string, "Tampa")) return 549;
  891.     else if (!strcmp(string, "Sunrise")) return 550;
  892.     else if (!strcmp(string, "Merit")) return 551;
  893.     else if (!strcmp(string, "Utility Van")) return 552;
  894.     else if (!strcmp(string, "Nevada")) return 553;
  895.     else if (!strcmp(string, "Yosemite")) return 554;
  896.     else if (!strcmp(string, "Windsor")) return 555;
  897.     else if (!strcmp(string, "Monster \"A\"")) return 556;
  898.     else if (!strcmp(string, "Monster \"B\"")) return 557;
  899.     else if (!strcmp(string, "Uranus")) return 558;
  900.     else if (!strcmp(string, "Jester")) return 559;
  901.     else if (!strcmp(string, "Sultan")) return 560;
  902.     else if (!strcmp(string, "Stratum")) return 561;
  903.     else if (!strcmp(string, "Elegy")) return 562;
  904.     else if (!strcmp(string, "Raindance")) return 563;
  905.     else if (!strcmp(string, "RC Tiger")) return 564;
  906.     else if (!strcmp(string, "Flash")) return 565;
  907.     else if (!strcmp(string, "Tahoma")) return 566;
  908.     else if (!strcmp(string, "Savanna")) return 567;
  909.     else if (!strcmp(string, "Bandito")) return 568;
  910.     else if (!strcmp(string, "Freight Flat Trailer (Train)")) return 569;
  911.     else if (!strcmp(string, "Streak Trailer (Train)")) return 570;
  912.     else if (!strcmp(string, "Kart")) return 571;
  913.     else if (!strcmp(string, "Mower")) return 572;
  914.     else if (!strcmp(string, "Dune")) return 573;
  915.     else if (!strcmp(string, "Sweeper")) return 574;
  916.     else if (!strcmp(string, "Broadway")) return 575;
  917.     else if (!strcmp(string, "Tornado")) return 576;
  918.     else if (!strcmp(string, "AT400")) return 577;
  919.     else if (!strcmp(string, "DFT-30")) return 578;
  920.     else if (!strcmp(string, "Huntley")) return 579;
  921.     else if (!strcmp(string, "Stafford")) return 580;
  922.     else if (!strcmp(string, "BF-400")) return 581;
  923.     else if (!strcmp(string, "Newsvan")) return 582;
  924.     else if (!strcmp(string, "Tug")) return 583;
  925.     else if (!strcmp(string, "Petrol Trailer")) return 584;
  926.     else if (!strcmp(string, "Emperor")) return 585;
  927.     else if (!strcmp(string, "Wayfarer")) return 586;
  928.     else if (!strcmp(string, "Euros")) return 587;
  929.     else if (!strcmp(string, "Hotdog")) return 588;
  930.     else if (!strcmp(string, "Club")) return 589;
  931.     else if (!strcmp(string, "Freight Box Trailer (Train)")) return 590;
  932.     else if (!strcmp(string, "Article Trailer 3")) return 591;
  933.     else if (!strcmp(string, "Andromada")) return 592;
  934.     else if (!strcmp(string, "Dodo")) return 593;
  935.     else if (!strcmp(string, "RC Cam")) return 594;
  936.     else if (!strcmp(string, "Launch")) return 595;
  937.     else if (!strcmp(string, "LSPD")) return 596;
  938.     else if (!strcmp(string, "SFPD")) return 597;
  939.     else if (!strcmp(string, "LVPD")) return 598;
  940.     else if (!strcmp(string, "Police Ranger")) return 599;
  941.     else if (!strcmp(string, "Picador")) return 600;
  942.     else if (!strcmp(string, "SWAT")) return 601;
  943.     else if (!strcmp(string, "Alpha")) return 602;
  944.     else if (!strcmp(string, "Phoenix")) return 603;
  945.     else if (!strcmp(string, "Glendale Shit")) return 604;
  946.     else if (!strcmp(string, "Sadler Shit")) return 605;
  947.     else if (!strcmp(string, "Remorque à baggages \"A\"")) return 606;
  948.     else if (!strcmp(string, "Remorque à baggages \"B\"")) return 607;
  949.     else if (!strcmp(string, "Tug Stairs Trailer")) return 608;
  950.     else if (!strcmp(string, "Boxville")) return 609;
  951.     else if (!strcmp(string, "Farm Trailer")) return 610;
  952.     else if (!strcmp(string, "Utility Trailer")) return 611;
  953.     return -1;
  954. }
  955.  
  956. stock Unjail(playerid)
  957. {
  958.     PlayerInfo[playerid][pJailTime] = -1;
  959.     SetPlayerPos(playerid, PlayerInfo[playerid][pJail][0], PlayerInfo[playerid][pJail][1], PlayerInfo[playerid][pJail][2]);
  960.     SetPlayerVirtualWorld(playerid, 0);
  961.     return SCM(playerid, 0xFF0000FF, "[Admin]"FIREBRICK" Tu as purgé ta peine de jail OOC. Ne reproduis plus d'actes NoRP/interdits si tu ne veux pas y retourner !");
  962. }
  963.  
  964. stock Unmute(playerid) { PlayerInfo[playerid][pMutetime] = -1; return 1; }
  965.  
  966. stock UpdateTime(playerid)
  967. {
  968.     return GameTextForPlayer(playerid, "~p~Il te reste encore %d secondes de prison !", 500, 1, PlayerInfo[playerid][pJailTime]-gettime());
  969. }
  970.  
  971. forward OnBanInfoFound(playerid);
  972. forward OnBanInfoConnect(playerid);
  973. forward OnUnbanDone(playerid, type, const username[], const banid, const ip[]);
  974. forward KickPublic(playerid);
  975.  
  976. public OnBanInfoFound(playerid)
  977. {
  978.     if(cache_num_rows() < 1) return 1;
  979.     m_banid = cache_get_field_content_int(0, "pid", MySQL);
  980.     return 1;
  981. }
  982.  
  983. public OnBanInfoConnect(playerid)
  984. {
  985.     if(cache_num_rows() > 0)
  986.     {
  987.         new bool:temp, temp1, heures, banid, tdate[25], date[6];
  988.         cache_get_field_content(0, "bdate", tdate);
  989.         cache_get_field_content(0, "raison", raison);
  990.         SplitDateTime(tdate, date[0], date[1], date[2], date[3], date[4], date[5]);
  991.         banid = cache_get_field_content_int(0, "id", MySQL);
  992.         temp1 = cache_get_field_content_int(0, "temporaire", MySQL);
  993.         if(temp1 == 0) temp = false;
  994.         else temp = true;
  995.         heures = cache_get_field_content_int(0, "heures", MySQL);
  996.         if(!temp) return KickWithMessage(playerid, 0xFF0000FF, "[Ban]"FIREBRICK" Vous êtes actuellement banni depuis le "RED_4"%d/%d/%d (%dh%d)"FIREBRICK" pour "RED_4"[%s]."RED_4"[Ban pid : %d]",
  997.         date[2], date[1], date[0], date[3], date[4], raison, banid);
  998.         else return KickWithMessage(playerid, 0xFF0000FF, "[Ban]"FIREBRICK" Vous êtes actuellement banni depuis le "RED_4"%d/%d/%d (%dh%d)"FIREBRICK" pour "RED_4"[%s]"FIREBRICK". Il vous reste encore "RED_4"%d"FIREBRICK" heures de banissement."RED_4"[Ban pid : %d]",
  999.         date[2], date[1], date[0], date[3], date[4], raison, heures, banid);
  1000.     }
  1001.     return 1;
  1002. }
  1003.  
  1004. public OnUnbanDone(playerid, type, const username[], const banid, const ip[])
  1005. {
  1006.     switch(type)
  1007.     {
  1008.         case 1:
  1009.         {
  1010.             if(cache_affected_rows() > 0) return SCM(playerid, 0xFF0000FF, "[Unban]"FIREBRICK" Tu as débanni le compte %s. Le joueur peut dès à présent se reconnecter.", username);
  1011.             else return SCM(playerid, 0xFF0000FF, "[Unban]"FIREBRICK" Il y a eu un problème lors du déban du joueur. Veuillez réessayer. (Compte [%s] peut-être non banni)", username);
  1012.         }
  1013.         case 2:
  1014.         {
  1015.             if(cache_affected_rows() > 0) return SCM(playerid, 0xFF0000FF, "[Unban]"FIREBRICK" Tu as supprimé le ban ID %d. Le joueur affecté par ce banissement peut dès à présent se reconnecter.", banid);
  1016.             else return SCM(playerid, 0xFF0000FF, "[Unban]"FIREBRICK" Il y a eu un problème lors du déban du joueur. Veuillez réessayer. (Peut-être aucun ban correspondant à cet pid [%d])", banid);
  1017.         }
  1018.         case 3:
  1019.         {
  1020.             if(cache_affected_rows() > 0) return SCM(playerid, 0xFF0000FF, "[Unban]"FIREBRICK" Tu as débanni l'IP '%s'. Le(s) joueur(s) affecté(s) par ce banissement peut(vent) dès à présent se reconnecter !", ip);
  1021.             else return SCM(playerid, 0xFF0000FF, "[Unban]"FIREBRICK" Il y a eu un problème lors du déban du joueur. Veuillez réessayer. (IP [%s] peut-être non bannie)", ip);
  1022.         }
  1023.     }
  1024.     return 1;
  1025. }
  1026.  
  1027. public KickPublic(playerid) { Kick(playerid); return 1; }
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034. /*
  1035.    _____          __  .__           .__                   __  
  1036.   /  _  \   _____/  |_|__|     ____ |  |__   ____ _____ _/  |_
  1037.  /  /_\  \ /    \   __\  |   _/ ___\|  |  \_/ __ \\__  \\   __\
  1038. /    |    \   |  \  | |  |   \  \___|   Y  \  ___/ / __ \|  |  
  1039. \____|__  /___|  /__| |__|    \___  >___|  /\___  >____  /__|  
  1040.         \/     \/                 \/     \/     \/     \/      
  1041.  
  1042. */
  1043.  
  1044. public OnPlayerAntiReload(playerid, weaponid)
  1045. {
  1046.     if(PlayerInfo[playerid][pAdmin] < 1) return 1;
  1047.     BanSQL(playerid, -2, "Cheat - Anti reload");
  1048.     return 1;
  1049. }
  1050.  
  1051. public OnPlayerFall(playerid, Float:height, Float:damage) { Enable_safe_health(playerid); return 1; }
  1052.  
  1053. stock AC_SetPlayerHealth(playerid, Float:health) { Enable_safe_health(playerid); SetPlayerHealth(playerid, health); return 1; }
  1054. stock AC_SetPlayerArmour(playerid, Float:armour) { Enable_safe_armour(playerid); SetPlayerArmour(playerid, armour); return 1; }
  1055. stock AC_GivePlayerWeapon(playerid, weaponid, ammo) { Enable_safe_weapon(playerid); GivePlayerWeapon(playerid, weaponid, ammo); return 1; }
  1056. stock AC_ResetPlayerWeapons(playerid) { Enable_safe_weapon(playerid); ResetPlayerWeapons(playerid); return 1; }
  1057. stock AC_GivePlayerMoney(playerid, money) { Enable_safe_money(playerid); GivePlayerMoney(playerid,money); return 1; }
  1058. stock AC_ResetPlayerMoney(playerid) { Enable_safe_money(playerid); ResetPlayerMoney(playerid); return 1; }
  1059. stock AC_AddVehicleComponent(vehicleid, componentid)
  1060. {
  1061.     foreach(new p : Player)
  1062.     {
  1063.         if(IsPlayerInAnyVehicle(p))
  1064.         {
  1065.             if(GetPlayerVehicleID(p) == vehicleid) Enable_safe_tuning(p);
  1066.         }
  1067.     }
  1068.     AddVehicleComponent(vehicleid, componentid);
  1069.     return 1;
  1070. }
  1071.  
  1072. stock Enable_safe_health(playerid)
  1073. {
  1074.     PlayerInfo[playerid][cVie] = true;
  1075.     SetTimerEx("stopVie", CHEAT_RANGE, false, "i", playerid);
  1076.     return 1;
  1077. }
  1078.  
  1079. stock Enable_safe_armour(playerid)
  1080. {
  1081.     PlayerInfo[playerid][cArmure] = true;
  1082.     SetTimerEx("stopArmure", CHEAT_RANGE, false, "i", playerid);
  1083.     return 1;
  1084. }
  1085.  
  1086. stock Enable_safe_weapon(playerid)
  1087. {
  1088.     PlayerInfo[playerid][cArmes] = true;
  1089.     SetTimerEx("stopArmes", CHEAT_RANGE, false, "i", playerid);
  1090.     return 1;
  1091. }
  1092.  
  1093. stock Enable_safe_money(playerid)
  1094. {
  1095.     PlayerInfo[playerid][cArmes] = true;
  1096.     SetTimerEx("stopArgent", CHEAT_RANGE, false, "i", playerid);
  1097.     return 1;
  1098. }
  1099.  
  1100. stock Enable_safe_tuning(playerid)
  1101. {
  1102.     PlayerInfo[playerid][cTuning] = true;
  1103.     SetTimerEx("stopTuning", CHEAT_RANGE, false, "i", playerid);
  1104.     return 1;
  1105. }
  1106.  
  1107. forward stopVie(playerid);
  1108. forward stopArmure(playerid);
  1109. forward stopArmes(playerid);
  1110. forward stopArgent(playerid);
  1111. forward stopTuning(playerid);
  1112.  
  1113. public stopVie(playerid) { PlayerInfo[playerid][cVie] = false; return 1; }
  1114. public stopArmure(playerid) { PlayerInfo[playerid][cArmure] = false; return 1; }
  1115. public stopArmes(playerid) { PlayerInfo[playerid][cArmes] = false; return 1; }
  1116. public stopArgent(playerid) { PlayerInfo[playerid][cArgent] = false; return 1; }
  1117. public stopTuning(playerid) { PlayerInfo[playerid][cTuning] = false; return 1; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement