Advertisement
Jujuv

[SA:MP | FS] Gangs-TDM

Mar 21st, 2012
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.17 KB | None | 0 0
  1. /*
  2. Original Scripts and ideas by HunterFalcon !
  3. Improvements and editing by Jujuv.
  4. Thanks to HunterFalcon !
  5. */
  6. //Inclusion de bibliotheques
  7. #include <a_samp>
  8. #include <utils>
  9. #include <dini>
  10. #include <sscanf2>
  11. //Fin de liste de bibliotheques
  12.  
  13. //Debut de la liste de definition des constantes
  14. #define GREEN 0x00FF0066
  15. #define RED 0xFF000066
  16. #define VIOLET 0x8000FF66
  17. #define YELLOW 0xFFFF0066
  18. #define LIGHTBLUE 0x33CCFFAA
  19.  
  20. #define GROVE 1
  21. #define BALLAS 2
  22. #define AZTECAS 3
  23. #define VAGOS 4
  24.  
  25. #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
  26. //Fin (Constantes def. liste)
  27.  
  28. //Debut de la liste de definition des tableaux
  29. new gangMembers[5] = {0, 0, 0, 0, 0};
  30. new gangs[5] = {0, 0, 0, 0, 0};
  31. new gLeader[5] = {0, 0, 0, 0, 0};
  32. //Fin (tableaux def. liste)
  33.  
  34. //Definition de variables globales (debut)
  35. new gPlayerConnected = 0;
  36.  
  37.  
  38.  
  39. public OnFilterScriptInit()
  40. {
  41.     print("\n--------------------------------------");
  42.     print("Gangs by HunterFalcon (edited by Jujuv)");
  43.     print("--------------------------------------\n");
  44.  
  45.     return 1;
  46. }
  47.  
  48. public OnPlayerConnect(playerid)
  49. {
  50.     gPlayerConnected++;
  51.     return 1;
  52. }
  53. public OnPlayerDisconnect(playerid, reason)
  54. {
  55.     gPlayerConnected--;
  56.     OnPlayerQuitGang(playerid);
  57.  
  58.     return 1;
  59. }
  60.  
  61. public OnPlayerCommandText(playerid, cmdtext[])
  62. {
  63.     dcmd(gangkick, 8, cmdtext);
  64.     dcmd(join, 4, cmdtext);
  65.    
  66.     if (strcmp("/gang", cmdtext, true, 10) == 0)
  67.     {
  68.     if(GetPlayerTeam(playerid) != 1)
  69.     {
  70.             if(!GetPlayerGang(playerid))
  71.             {
  72.                             new gangId = 0;
  73.                             for(new i = 1; i < 5; i++)
  74.                             {
  75.                                 if(!gangs[i])
  76.                                 {
  77.                                     gangId = i;
  78.                                     break;
  79.                                 }
  80.                             }
  81.                            
  82.                             new gangName[256];
  83.                             switch(gangId)
  84.                             {
  85.                                 case GROVE:
  86.                                 {
  87.                                     gangName= "grove";
  88.                                     SetPlayerColor(playerid, GREEN);
  89.                                     SetPlayerSkin(playerid, 107);
  90.                                 }
  91.                                 case BALLAS:
  92.                                 {
  93.                                     gangName = "ballas";
  94.                                     SetPlayerSkin(playerid, 104);
  95.                                     SetPlayerColor(playerid, VIOLET);
  96.                                 }
  97.                                 case AZTECAS:
  98.                                 {
  99.                                     gangName = "aztecas";
  100.                                     SetPlayerSkin(playerid, 116);
  101.                                     SetPlayerColor(playerid, LIGHTBLUE);
  102.                                 }
  103.                                 case VAGOS:
  104.                                 {
  105.                                     gangName = "vagos";
  106.                                     SetPlayerSkin(playerid, 110);
  107.                                     SetPlayerColor(playerid, YELLOW);
  108.                                 }
  109.                                 default:
  110.                                 {
  111.                                     gangName = "Inconnu";
  112.                                 }
  113.                            
  114.                            
  115.                             }
  116.                            
  117.                             SetPlayerGang(playerid, gangId);
  118.                             gangMembers[gangId]++;
  119.                             gLeader[gangId] = playerid;
  120.                             gangs[gangId] = 1;
  121.                            
  122.  
  123.                             new string[256], pname[MAX_PLAYER_NAME];
  124.                             GetPlayerName(playerid, pname, sizeof(pname));
  125.  
  126.                             format(string, sizeof(string), "> %s (id : %i) vient de rejoindre le gang %s [%d/4].", pname, playerid, gangName, gangMembers[gangId]);
  127.                             SendClientMessageToAll(GREEN, string);
  128.                             format(string, sizeof(string), "> Pour le rejoindre, entrez la commande /join %s", gangName);
  129.                             SendClientMessageToAll(GREEN, string);
  130.                             format(string, sizeof(string), "> Vous venez de rejoindre le gang %s.", gangName);
  131.                             SendClientMessage(playerid, GREEN, string);
  132.                             SendClientMessage(playerid, YELLOW, "> Pour voir les commandes de gang, entrez /gang?.");
  133.             }
  134.             else {SendClientMessage(playerid, RED, "> Erreur. Vous êtes déjà dans un gang.");}
  135.         }
  136.         else {SendClientMessage(playerid, RED, ">Erreur. Vous devez être un hors-la-loi pour rejoindre un gang.");}
  137.     return 1;
  138.         }
  139.        
  140.     if (strcmp("/gang?", cmdtext, true, 10) == 0)
  141.         {
  142.         SendClientMessage(playerid, YELLOW, "  ______COMMANDES______ ");
  143.         SendClientMessage(playerid, YELLOW, "> /gang : Créer un gang.");
  144.         SendClientMessage(playerid, YELLOW, "> /join [nom du gang] : Rejoindre un gang (Grove, Ballas, Aztecas ou Vagos).");
  145.         SendClientMessage(playerid, YELLOW, "> /gangq : Quitter un gang.");
  146.         SendClientMessage(playerid, YELLOW, "> /gangkick : Expulser un joueur d'un gang (Commande réservée aux leaders).");
  147.         SendClientMessage(playerid, YELLOW, "> ![message] : Envoyer un message aux membres de son gang.");
  148.         SendClientMessage(playerid, YELLOW, "____________________________");
  149.         return 1;
  150.         }
  151.        
  152.     if(strcmp("/gangq", cmdtext, true, 10) == 0)
  153.     {
  154.         OnPlayerQuitGang(playerid);
  155.         return 1;
  156.     }
  157.     return 0;
  158. }
  159.  
  160.    
  161.  
  162. dcmd_join(playerid, parrams[])
  163.     {
  164. if(!strlen(parrams))
  165.     {
  166.         SendClientMessage(playerid, RED, "> Erreur. Pour rejoindre un gang, entrez la commande |/join [Gangname]|.");
  167.     }
  168.     else if(GetPlayerTeam(playerid) != 1)
  169.     {
  170.         if(!GetPlayerGang(playerid))
  171.         {
  172.             new gangName[10], gangId = 0;
  173.  
  174.             sscanf(parrams, "s[10]",gangName);
  175.             if(!strcmp(gangName, "grove", true, false))
  176.             {
  177.                 gangId = GROVE;
  178.             }
  179.             else if(!strcmp(gangName, "ballas", true, false))
  180.             {
  181.                 gangId = BALLAS;
  182.             }
  183.             else if(!strcmp(gangName, "vagos", true, false))
  184.             {
  185.                 gangId = VAGOS;
  186.             }
  187.             else if(!strcmp(gangName, "aztecas", true, false))
  188.             {
  189.                 gangId = AZTECAS;
  190.             }
  191.             else { SendClientMessage(playerid, RED, "Err.Ce gang n'existe pas");}
  192.  
  193.             if(gangs[gangId] == 1)
  194.             {
  195.                 if(gangMembers[gangId] < 4)
  196.                 {
  197.                         SetPlayerGang(playerid, gangId);
  198.                         gangMembers[gangId]++;
  199.  
  200.                         new string[256], pname[MAX_PLAYER_NAME];
  201.                         GetPlayerName(playerid, pname, sizeof(pname));
  202.  
  203.                         format(string, sizeof(string), "> %s (id : %i) vient de rejoindre le gang %s [%d/4].", pname, playerid, gangName, gangMembers[gangId]);
  204.                         SendClientMessageToAll(GREEN, string);
  205.                         format(string, sizeof(string), "> Pour le rejoindre, entrez la commande /join %s.", gangName);
  206.                         SendClientMessageToAll(GREEN, string);
  207.                         format(string, sizeof(string), "> Vous venez de rejoindre le gang %s.", gangName);
  208.                         SendClientMessage(playerid, GREEN, string);
  209.                         SendClientMessage(playerid, YELLOW, "> Pour voir les commandes de Gang, entrez /gang?.");
  210.                         switch(gangId)
  211.                         {
  212.                             case 1:
  213.                             {
  214.                                 SetPlayerColor(playerid, GREEN);
  215.                                 SetPlayerSkin(playerid, 107);
  216.                             }
  217.                             case 2:
  218.                             {
  219.                                 SetPlayerSkin(playerid, 104);
  220.                                 SetPlayerColor(playerid, VIOLET);
  221.  
  222.                             }
  223.                             case 3:
  224.                             {
  225.                                 SetPlayerSkin(playerid, 116);
  226.                                 SetPlayerColor(playerid, LIGHTBLUE);
  227.  
  228.                             }
  229.                             case 4:
  230.                             {
  231.                                 SetPlayerSkin(playerid, 110);
  232.                                 SetPlayerColor(playerid, YELLOW);
  233.                             }
  234.                         }
  235.                 }
  236.                 else {SendClientMessage(playerid, RED, "> Erreur. Ce gang est complet.");}
  237.             }
  238.             else {SendClientMessage(playerid, RED, "> Erreur. Ce gang n'existe pas.");}
  239.         }
  240.         else {SendClientMessage(playerid, RED, "> Erreur. Vous êtes déjà dans un gang.");}
  241.     }
  242.     else {SendClientMessage(playerid, RED, "> Erreur. Vous devez être un hors-la-loi pour rejoindre un gang.");}
  243.        
  244. return 1;
  245. }
  246.  
  247. dcmd_gangkick(playerid, params[])
  248. {
  249.         if(!strlen(params))
  250.         {
  251.             SendClientMessage(playerid, RED, "> Erreur. /gangkick [PlayerID]");
  252.         }
  253.         else
  254.         {
  255.             if(gLeader[GROVE] == playerid || gLeader[BALLAS] == playerid || gLeader[AZTECAS] == playerid || gLeader[VAGOS] == playerid)
  256.             {
  257.                 new id;
  258.                 sscanf(params, "r", id);
  259.                 if(IsPlayerConnected(id))
  260.                 {
  261.                     if(GetPlayerTeam(playerid) == GetPlayerTeam(id) && playerid != id)
  262.                     {
  263.                         SendClientMessage(id, RED, "> Vous avez été expulsé(e) de votre gang.");
  264.                         OnPlayerQuitGang(id);
  265.                     }
  266.                     else
  267.                     {
  268.                         SendClientMessage(playerid, RED, "> Erreur. Vous ne pouvez expulser que les membres de votre gang.");
  269.                     }
  270.                 }
  271.                 else
  272.                 {
  273.                     SendClientMessage(playerid, RED, "> Erreur. ID Joueur Invalide.");
  274.                 }
  275.             }
  276.             else
  277.             {
  278.                 SendClientMessage(playerid, RED, "> Erreur. Vous devez être leader d'un gang pour en expulser un membre.");
  279.             }
  280.         }
  281.         return 1;
  282. }
  283.  
  284. public OnPlayerText(playerid, text[])
  285. {
  286.     if(text[0] == '!')
  287.     {
  288.         new name[24], string[128];
  289.         GetPlayerName(playerid, name, 24);
  290.         format(string, sizeof(string), "[Team] %s : %s", name, text[1]);
  291.         printf("%s", string);
  292.         if(GetPlayerTeam(playerid) == 2)
  293.         {
  294.             for(new i = 0; i < gPlayerConnected; i++)
  295.             {
  296.                 if(GetPlayerGang(i) == GetPlayerGang(playerid))
  297.                 {
  298.                     SendClientMessage(i, GetPlayerColor(playerid), string);
  299.                 }
  300.             }
  301.             return 0;
  302.         }
  303.     }
  304.     return 1;
  305. }
  306.  
  307. OnPlayerQuitGang(playerid)
  308. {
  309.     new pGang = GetPlayerGang(playerid);
  310.     if(pGang)
  311.     {
  312.    
  313.         new gangName[256];
  314.         switch(pGang)
  315.         {
  316.         case GROVE: { gangName = "Grove";}
  317.         case BALLAS: { gangName = "Ballas";}
  318.         case VAGOS:  { gangName = "Vagos";}
  319.         case AZTECAS: { gangName = "Aztecas";}
  320.         default: { gangName = "Inconnu";}
  321.         }
  322.        
  323.        
  324.         SetPlayerGang(playerid, 0);
  325.         SetPlayerColor(playerid, RED);
  326.         SetPlayerSkin(playerid, 29);
  327.         gangMembers[pGang]--;
  328.        
  329.         new string[256];
  330.         new pname[MAX_PLAYER_NAME];
  331.         GetPlayerName(playerid, pname, sizeof(pname));
  332.         format(string, sizeof(string), "> %s (id : %i) vient de quitter le gang %s [%d/4].", pname, playerid, gangName, gangMembers[pGang]);
  333.         SendClientMessageToAll(GREEN, string);
  334.         format(string, sizeof(string), "> Pour prendre sa place, entrez la commande /join %s.", gangName);
  335.         SendClientMessageToAll(GREEN, string);
  336.  
  337.         if(!gangMembers[pGang]){ gangs[pGang] = 0;}
  338.         if(gLeader[pGang] == playerid && gangs[pGang])
  339.         {
  340.             gLeader[pGang] = 800;
  341.                
  342.             for(new i = 0; i < gPlayerConnected; i++)
  343.             {
  344.                 if(GetPlayerGang(i) == pGang && gLeader[pGang] == 800)
  345.                 {
  346.                     gLeader[pGang] = i;
  347.                     SendClientMessage(i, GREEN, "> Vous devenez leader de votre gang.");
  348.                 }
  349.             }
  350.         }
  351.         else if(!gangs[pGang])
  352.         {
  353.             gLeader[pGang] = 800;
  354.         }
  355.     }
  356.     else
  357.     {
  358.         SendClientMessage(playerid, RED, "> Erreur. Vous n'êtes dans aucun gang.");
  359.     }
  360.     return 1;
  361. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement