Advertisement
Jujuv

[SA:MP | FS | DROPED] jAdmin

Mar 21st, 2012
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 14.62 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <sscanf2>
  5. #include <dini>
  6.  
  7. #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  8.  
  9. #define RED 0xFF000066
  10. #define YELLOW 0xFFFF0066
  11. #define BLUE 0x0000FF66
  12. #define GREEN 0x00FF0066
  13.  
  14. #define ADMIN_RANK 2
  15. #define MODO_RANK 1
  16.  
  17. forward ban(playerid, reason[250]);
  18.  
  19.  
  20.  
  21. /*
  22. Les notations de variables:
  23.  
  24. pVar : "p" pour "player" (abreviation)
  25. aVar : "a" pour "administrator" (abreiviation)
  26. gVar: "g" pour globale mais ça c'est classique.
  27.  
  28. /!\ Toutes les variables globales ont pas le préfixe "g" ici (à faire ?)
  29. /!\Dans le FS Gangs le préfixe "g" peux aussi signifier "gang"! (à ré-organisé ?)
  30.  
  31.  
  32. */
  33. new pConnected;
  34. new aConnected;// /!\ Un adminastrateur est aussi un joueur ;)
  35. public OnFilterScriptInit()
  36. {
  37.     print("\n--------------------------------------");
  38.     print("Admin System by Jujuv");
  39.     print("--------------------------------------\n");
  40. }
  41.  
  42. public OnPlayerConnect(playerid)
  43. {
  44.     pConnected++;//Idée copié du GM de SK (TY Coboll, minimicro, Moathib, ..)
  45.    
  46.     if(IsAdmin(playerid))
  47.     {
  48.         aConnected++;//Ca va, je te fais pas un dessin ?!
  49.     }
  50.    
  51. }
  52.  
  53. public OnPlayerDisconnect(playerid, reason)
  54. {
  55.     pConnected--;//C'est vrais que c'est tout con comme idée, fallais juste y penser.
  56.     if(IsAdmin(playerid))
  57.     {
  58.         aConnected--;//Obvious
  59.     }
  60. }
  61. public OnPlayerCommandText(playerid, cmdtext[])
  62. {
  63.     //On utilise DCMD pour les commandes avec arguments
  64.     dcmd(setadmin, 8, cmdtext);
  65.     dcmd(kick, 4, cmdtext);
  66.     dcmd(ban, 3, cmdtext);
  67.     dcmd(tpa, 3, cmdtext);
  68.     dcmd(unban, 5, cmdtext);
  69.     dcmd(warn, 4, cmdtext);
  70.     dcmd(arme, 4, cmdtext);
  71.     dcmd(mute, 4, cmdtext);
  72.    
  73.    
  74.     //On utilise de simples conditions avec la fonction strcmp pour les commandes sans arguments.
  75.     if(!strcmp(cmdtext, "/god", true, 4))
  76.     {
  77.         if(IsAdmin(playerid) >= ADMIN_RANK)
  78.         {
  79.             if(GetPVarInt(playerid, "god"))
  80.             {
  81.                 SetPVarInt(playerid, "god", 0);
  82.                 SetPlayerHealth(playerid, 100);
  83.                 SendClientMessage(playerid, RED, "> Mode \"God\" désactivé.");
  84.             }
  85.             else
  86.             {
  87.                 SetPVarInt(playerid, "god", 1);
  88.                 SetPlayerHealth(playerid, 9999999);//Je me demande si cette valeur risque pas d'apporter des bogues ?!
  89.                 SendClientMessage(playerid, GREEN, "> Mode \"God\" activé.");
  90.             }
  91.            
  92.         }
  93.         else { SendClientMessage(playerid, RED, "> Erreur. Commande résérvée aux administrateurs."); }
  94.         return 1;
  95.     }
  96.     if(!strcmp(cmdtext, "/tp", true, 3))
  97.     {
  98.         if(IsAdmin(playerid) >= ADMIN_RANK)
  99.         {
  100.             if( GetPVarInt(playerid, "tpenabled"))
  101.             {
  102.                 SetPVarInt(playerid, "tpenabled", 0);
  103.                 SendClientMessage(playerid, RED, "> Téléportation par clic sur la carte désactivée.");
  104.             }
  105.             else
  106.             {
  107.                 SetPVarInt(playerid, "tpenabled", 1);
  108.                 SendClientMessage(playerid, GREEN, "> Téléportation par clic sur la carte activée.");
  109.             }
  110.         }
  111.     }
  112.     return 0;
  113. }
  114.  
  115. dcmd_setadmin(playerid, params[])
  116. {
  117.     new id, rank;
  118.     sscanf(params, "ri", id, rank);
  119.     if(IsAdmin(playerid) >= ADMIN_RANK)
  120.     {
  121.         if(!strlen(params))
  122.         {
  123.             SendClientMessage(playerid, RED, "> Erreur. Usage : /setadmin [PlayerID][Niveau admin (0-2)].");
  124.         }
  125.         else if(IsPlayerConnected(id) && id != playerid && GetPVarInt(id, "admin") < GetPVarInt(playerid, "admin"))
  126.         {
  127.             new pName[MAX_PLAYER_NAME], string[246];
  128.             SetPVarInt(id, "admin", rank);
  129.             dini_IntSet(userfile(playerid), "admin", rank);
  130.             GetPlayerName(id, pName, sizeof(pName));
  131.             format(string, sizeof(string), "> %s est désormais administrateur rang %d.", pName, rank);
  132.             SendClientMessageToAll(GREEN, string);
  133.         }
  134.         else
  135.         {
  136.             SendClientMessage(playerid, RED, "> Erreur. Joueur non connecté ou ID invalide.");
  137.         }
  138.        
  139.    
  140.     }
  141.     else
  142.     {
  143.         SendClientMessage(playerid, RED, "> Erreur. Cette commande est réservée aux administrateurs.");
  144.     }
  145.  
  146.     return 1;
  147.  
  148. }
  149.  
  150.  
  151.  
  152. dcmd_kick(playerid, params[])
  153. {
  154.     new kickedid, reason[256];
  155.     sscanf(params, "us[256]", kickedid, reason);
  156.     if(IsAdmin(playerid) >= MODO_RANK)
  157.     {
  158.         if(!strlen(params))
  159.         {
  160.             SendClientMessage(playerid, RED, "> Erreur. Usage : /kick [PlayerID] [Raison].");
  161.         }
  162.         else if(IsPlayerConnected(kickedid) && (!GetPVarInt(kickedid, "admin")))
  163.         {
  164.             new string[246], pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME];
  165.             GetPlayerName(playerid, aName, sizeof(aName));
  166.             GetPlayerName(kickedid, pName, sizeof(pName));
  167.             format(string, sizeof(string), "> L'administrateur %s a expulsé %s du serveur (Raison : %s).", aName, pName, reason);
  168.             SendClientMessageToAll(RED, string);
  169.             Kick(kickedid);
  170.         }
  171.         else
  172.         {
  173.             SendClientMessage(playerid, RED, "> Erreur. Joueur non connecté ou ID invalide.");
  174.         }
  175.     }
  176.       else
  177.       {
  178.         SendClientMessage(playerid, RED, "> Erreur. Cette commande est réservée aux modérateurs.");
  179.       }
  180.  
  181.     return 1;
  182.    
  183. }
  184.  
  185. dcmd_ban(playerid, params[])
  186. {
  187.     new bannedid, reason[250];
  188.     sscanf(params, "us[250]", bannedid, reason);
  189.     if(IsAdmin(playerid) >= ADMIN_RANK)
  190.     {
  191.         if(!strlen(params))
  192.         {
  193.             SendClientMessage(playerid, RED, "> Erreur. Usage : /ban [PlayerID] [Raison].");
  194.         }
  195.         else if(IsPlayerConnected(bannedid) && IsAdmin(bannedid) == 0)
  196.         {
  197.             new string[256], pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME];
  198.             GetPlayerName(playerid, aName, sizeof(aName));
  199.             GetPlayerName(bannedid, pName, sizeof(pName));
  200.             format(string, sizeof(string), "> L'administrateur %s a banni %s du serveur (Raison : %s)", aName, pName, reason);
  201.             SendClientMessageToAll(RED, string);
  202.             ban(playerid, reason);
  203.  
  204.         }
  205.         else
  206.         {
  207.             SendClientMessage(playerid, RED, "> Erreur. Joueur non connecté ou ID invalide.");
  208.         }
  209.     }
  210.       else
  211.       {
  212.         SendClientMessage(playerid, RED, "> Erreur. Cette commande est réservée aux administrateurs.");
  213.       }
  214.      
  215.     return 1;
  216.  
  217. }
  218.  
  219. dcmd_tpa(playerid, params[])
  220. {
  221.         /*
  222.             Note: Penser à rediger des commentaires explicite au possible pour cette "partie"
  223.         */
  224.  
  225.         if(IsAdmin(playerid) >= ADMIN_RANK)
  226.         {
  227.             new id1, id2;
  228.             sscanf(params, "rr", id1, id2);
  229.  
  230.             if(!strlen(params))
  231.             {
  232.                 SendClientMessage(playerid, RED, "> Erreur. Usage : /tpa [Player1ID] [Player2ID].");
  233.                 SendClientMessage(playerid, RED, "> Le premier joueur sera alors téléporté au deuxième.");
  234.             }
  235.             else if(IsPlayerConnected(id1) && IsPlayerConnected(id2) && id1 != id2)
  236.             {
  237.                 new Float:x, Float:y, Float:z;
  238.                 new string[128];
  239.                 new aName[MAX_PLAYER_NAME], pName[MAX_PLAYER_NAME], p2Name[MAX_PLAYER_NAME];
  240.                
  241.                 GetPlayerName(playerid, aName,  sizeof(aName));
  242.                 GetPlayerName(id1,  pName, sizeof(pName));
  243.                 GetPlayerName(id2, p2Name, sizeof(p2Name));
  244.                
  245.                 GetPlayerPos(id2, Float:x, Float:y, Float:z);
  246.                 if(IsPlayerInAnyVehicle(id1))
  247.                 {
  248.                     SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  249.                 }
  250.                 SetPlayerPos(id1, Float:x, Float:y, Float:z);
  251.                
  252.                 if(playerid != id1 && playerid != id2)
  253.                 {
  254.                 format(string, sizeof(string), "> L'administrateur %s a téléporté %s à vous.", aName, pName);
  255.                 SendClientMessage(id2, GREEN, string);
  256.                 format(string, sizeof(string), "> L'administrateur %s vous à téléporté à %s.", aName, p2Name);
  257.                 SendClientMessage(id1, GREEN, string);
  258.                 }
  259.                 else if(id1 == playerid)
  260.                 {
  261.                 format(string, sizeof(string), "> L'administrateur %s s'est téléporté à vous.", aName);
  262.                 SendClientMessage(id2, GREEN, string);
  263.                 format(string, sizeof(string), "> Vous avez été téléporté à %s.", p2Name);
  264.                 SendClientMessage(id1, GREEN, string);
  265.                 }
  266.                 else
  267.                 {
  268.                 format(string, sizeof(string), "> L'administrateur %s vous a téléporté à lui.", aName);
  269.                 SendClientMessage(id1, GREEN, string);
  270.                 format(string, sizeof(string), "> Vous avez téléporté %s à vous.", pName);
  271.                 SendClientMessage(id2, GREEN, string);
  272.                 }
  273.                
  274.                
  275.  
  276.             }
  277.             else { SendClientMessage(playerid, RED, "> Erreur. ID Invalide.");}
  278.        
  279.         }
  280.         else
  281.         {
  282.             SendClientMessage(playerid, RED, "> Erreur. Cette commande est réservée aux administrateurs.");
  283.         }
  284.        
  285. }
  286.  
  287. dcmd_unban(playerid, params[])
  288. {
  289.     if(IsAdmin(playerid) >= ADMIN_RANK)
  290.     {
  291.         if(!strlen(params))
  292.         {
  293.             SendClientMessage(playerid, RED, "> Erreur. Usage : /unban [Nom].");
  294.         }
  295.  
  296.         else
  297.         {
  298.             new userFile[MAX_PLAYER_NAME+14], pName[MAX_PLAYER_NAME];
  299.  
  300.             sscanf(params, "s[24]", pName);
  301.  
  302.             format(userFile, sizeof(userFile), "\\Users\\%s.ini", pName);
  303.             if(dini_Exists(userFile))
  304.             {
  305.                 if(dini_Int(userFile, "banned"))
  306.                 {
  307.                     dini_IntSet(userFile, "banned", 0);
  308.                     new string[256];
  309.                     if(dini_Int(userFile, "Warns"))//Si le joueur a été banni par avertisements il est norml de lui retirer ceux-ci lors de son débanissement
  310.                     {
  311.                         dini_IntSet(userFile, "Warns", 0);
  312.                     }
  313.                     format(string, sizeof(string), "> %s a été débanni du serveur.", pName);
  314.                     SendClientMessageToAll(GREEN, string);
  315.                 }
  316.                 else { SendClientMessage(playerid, RED, "> Erreur. Ce joueur n'est pas banni.");}
  317.             }
  318.             else { SendClientMessage(playerid, RED, "> Erreur. Ce joueur n'est pas enregistré");}
  319.         }
  320.     }
  321.     else { SendClientMessage(playerid, RED, "> Erreur. Cette commande est résérvée aux administrateurs."); }
  322.     return 0;
  323. }
  324.  
  325. dcmd_warn(playerid, params[])
  326. {
  327.     if(!strlen(params))
  328.     {
  329.         SendClientMessage(playerid, RED, "Erreur. Usage : /warn [PlayerID][Raison].");
  330.     }
  331.     else if(IsAdmin(playerid) >= MODO_RANK)
  332.     {
  333.         new warnedId, pName[MAX_PLAYER_NAME], file[sizeof(pName)+14], aName[MAX_PLAYER_NAME], string[256], reason[250];
  334.         sscanf(params, "rs[256]", warnedId, reason);
  335.         if(IsPlayerConnected(warnedId) && (!IsAdmin(warnedId)))
  336.         {
  337.             GetPlayerName(playerid, aName, sizeof(aName));
  338.             GetPlayerName(warnedId, pName, sizeof(pName));
  339.             dini_IntSet(userfile(playerid), "Warns", dini_Int(userfile(playerid), "Warns"));
  340.             format(string, sizeof(string), "> L'administrateur %s a donné un avertisement à %s (%d/3) pour le motif suivant: %s", aName, pName,dini_Int(file, "Warns") ,reason);
  341.            
  342.             SendClientMessageToAll(RED, string);
  343.             if(dini_Int(file, "Warns") > ADMIN_RANK)
  344.             {
  345.                 dini_IntSet(userfile(playerid), "banned", 1);
  346.                 GetPlayerName(playerid, aName, sizeof(aName));
  347.                 GetPlayerName(warnedId, pName, sizeof(pName));
  348.                
  349.                 format(reason, sizeof(reason), "%s (3 Avertisement)", reason);
  350.                 format(string, sizeof(string), "> L'administrateur %s a banni %s du serveur (Raison : %s).", aName, pName, reason);
  351.                 SendClientMessageToAll(RED, string);
  352.                 ban(warnedId, reason);
  353.             }
  354.         }
  355.         else{SendClientMessage(playerid, RED, "> Erreur .Joueur non connecté ou ID Invalide.");}
  356.        
  357.     }
  358.     else { SendClientMessage(playerid, RED, "> Erreur. Cette commande est résérvée aux modérateurs"); }
  359. }
  360.  
  361. dcmd_arme(playerid, params[])
  362. {
  363.     if(IsAdmin(playerid) >= ADMIN_RANK)
  364.     {
  365.         new weaponId;
  366.         sscanf(params, "i", weaponId);
  367.         if(weaponId > 0 && weaponId < 47)
  368.         {
  369.             GivePlayerWeapon(playerid, weaponId, 99999999999);//Si tu manque de munition.... (valeur dangereuse ?)
  370.         }
  371.         else{SendClientMessage(playerid, RED, "> Erreur. ID Arme invalide.");}
  372.     }
  373.     else{SendClientMessage(playerid, RED, "> Erreur. Cette commande est réservée aux administrateurs.");}
  374. }
  375.  
  376.  
  377. dcmd_mute(playerid, params[])
  378. {
  379.     if(IsAdmin(playerid) >= MODO_RANK)
  380.     {
  381.         new mutedId;
  382.         sscanf(params, "r", mutedId);
  383.         if(IsPlayerConnected(mutedId) && (!IsAdmin(mutedId)))
  384.         {
  385.             if(GetPVarInt(mutedId, "muted"))
  386.             {
  387.                 SetPVarInt(mutedId, "muted", 0);
  388.                 dini_IntSet(userfile(mutedId), "muted", 0);
  389.                 SendClientMessage(playerid, GREEN, "> Joueur dé-muté avec succès.");
  390.                 SendClientMessage(mutedId, GREEN, "> Vous avez été dé-muté.");
  391.             }
  392.             else
  393.             {
  394.                 SetPVarInt(mutedId, "muted", 1);
  395.                 dini_IntSet(userfile(mutedId), "muted", 1);
  396.                 SendClientMessage(playerid, GREEN, "> Joueur muté avec succès");
  397.                 SendClientMessage(mutedId, RED, "> Vous avez été muté.");
  398.             }
  399.         }
  400.     }
  401.     else{ SendClientMessage(playerid, RED, "> Commande réservée aux modérateurs.");}
  402. }
  403.  
  404.  
  405. public OnPlayerText(playerid, text[])
  406. {
  407.     if(GetPVarInt(playerid, "muted")) { SendClientMessage(playerid, RED, "Vous ête mutez"); return 0; }
  408.     //Part by hunterfalcon
  409.     if(text[0] == ':')
  410.     {
  411.         new name[24], string[128];
  412.         GetPlayerName(playerid, name, 24);
  413.         format(string, sizeof(string), "[Admin]%s: %s", name, text[1]);
  414.         printf("%s", string);
  415.         if(IsAdmin(playerid) >= 1)
  416.         {
  417.             for(new i = 0; i < pConnected; i++)
  418.             {
  419.                 if(IsAdmin(i) >= MODO_RANK)
  420.                 {
  421.                     SendClientMessage(i, BLUE, string);
  422.                 }
  423.             }
  424.             return 0;
  425.         }
  426.     }
  427.     if(text[0] == '>')
  428.     {
  429.         new string[128];
  430.         format(string, sizeof(string), "[Annonce]%s", text[1]);
  431.         printf("%s", string);
  432.         if(IsAdmin(playerid) >= MODO_RANK)
  433.         {
  434.             SendClientMessageToAll(YELLOW, string);
  435.         }
  436.         return 0;
  437.     }
  438.     //TY Hunter
  439.     return 1;
  440. }
  441.  
  442. IsAdmin(playerid)//Le dev' est un fénéant, c'est bien connue ;)
  443. {
  444.     return GetPVarInt(playerid, "admin");
  445. }
  446. userfile(playerid)//La c'est plus de l'inteligence que de la fénéantise ...
  447. {
  448.     new string[250], pName[MAX_PLAYER_NAME];
  449.     GetPlayerName(playerid, pName, sizeof(pName));
  450.     format(string, sizeof(string), "\\Users\\%s.ini", pName);
  451.     return string;
  452.     //A adapter a votre systeme d'enregistrement
  453. }
  454.  
  455.  
  456. public ban(playerid, reason[250])//Bah...on va pas retaper ces trois lignes à chaque fois qu'on veux bannire un joueur ...
  457. {
  458.     dini_IntSet(userfile(playerid), "banned", 1);
  459.     dini_Set(userfile(playerid), "banReason", reason);
  460.     Kick(playerid);
  461.     //A adapter a votre systeme d'enregistrement
  462. }
  463.  
  464.  
  465. public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
  466. {
  467.     if(GetPVarInt(playerid, "god"))
  468.     { SetPlayerHealth(playerid, 999999999); }//C'est plus un Dieu la... c'est presque Chuck (excusez moi maitre Noriss 8D)
  469.  
  470. }
  471.  
  472. public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
  473. {
  474.     if(IsAdmin(playerid)>= ADMIN_RANK && GetPVarInt(playerid, "tpenabled"))
  475.     {
  476.         SetPlayerPosFindZ(playerid, fX, fY, fZ);
  477.     }
  478.  
  479. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement