/* Original Scripts and ideas by HunterFalcon ! Improvements and editing by Jujuv. Thanks to HunterFalcon ! */ //Inclusion de bibliotheques #include #include #include #include //Fin de liste de bibliotheques //Debut de la liste de definition des constantes #define GREEN 0x00FF0066 #define RED 0xFF000066 #define VIOLET 0x8000FF66 #define YELLOW 0xFFFF0066 #define LIGHTBLUE 0x33CCFFAA #define GROVE 1 #define BALLAS 2 #define AZTECAS 3 #define VAGOS 4 #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 //Fin (Constantes def. liste) //Debut de la liste de definition des tableaux new gangMembers[5] = {0, 0, 0, 0, 0}; new gangs[5] = {0, 0, 0, 0, 0}; new gLeader[5] = {0, 0, 0, 0, 0}; //Fin (tableaux def. liste) //Definition de variables globales (debut) new gPlayerConnected = 0; public OnFilterScriptInit() { print("\n--------------------------------------"); print("Gangs by HunterFalcon (edited by Jujuv)"); print("--------------------------------------\n"); return 1; } public OnPlayerConnect(playerid) { gPlayerConnected++; return 1; } public OnPlayerDisconnect(playerid, reason) { gPlayerConnected--; OnPlayerQuitGang(playerid); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { dcmd(gangkick, 8, cmdtext); dcmd(join, 4, cmdtext); if (strcmp("/gang", cmdtext, true, 10) == 0) { if(GetPlayerTeam(playerid) != 1) { if(!GetPlayerGang(playerid)) { new gangId = 0; for(new i = 1; i < 5; i++) { if(!gangs[i]) { gangId = i; break; } } new gangName[256]; switch(gangId) { case GROVE: { gangName= "grove"; SetPlayerColor(playerid, GREEN); SetPlayerSkin(playerid, 107); } case BALLAS: { gangName = "ballas"; SetPlayerSkin(playerid, 104); SetPlayerColor(playerid, VIOLET); } case AZTECAS: { gangName = "aztecas"; SetPlayerSkin(playerid, 116); SetPlayerColor(playerid, LIGHTBLUE); } case VAGOS: { gangName = "vagos"; SetPlayerSkin(playerid, 110); SetPlayerColor(playerid, YELLOW); } default: { gangName = "Inconnu"; } } SetPlayerGang(playerid, gangId); gangMembers[gangId]++; gLeader[gangId] = playerid; gangs[gangId] = 1; new string[256], pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); format(string, sizeof(string), "> %s (id : %i) vient de rejoindre le gang %s [%d/4].", pname, playerid, gangName, gangMembers[gangId]); SendClientMessageToAll(GREEN, string); format(string, sizeof(string), "> Pour le rejoindre, entrez la commande /join %s", gangName); SendClientMessageToAll(GREEN, string); format(string, sizeof(string), "> Vous venez de rejoindre le gang %s.", gangName); SendClientMessage(playerid, GREEN, string); SendClientMessage(playerid, YELLOW, "> Pour voir les commandes de gang, entrez /gang?."); } else {SendClientMessage(playerid, RED, "> Erreur. Vous êtes déjà dans un gang.");} } else {SendClientMessage(playerid, RED, ">Erreur. Vous devez être un hors-la-loi pour rejoindre un gang.");} return 1; } if (strcmp("/gang?", cmdtext, true, 10) == 0) { SendClientMessage(playerid, YELLOW, " ______COMMANDES______ "); SendClientMessage(playerid, YELLOW, "> /gang : Créer un gang."); SendClientMessage(playerid, YELLOW, "> /join [nom du gang] : Rejoindre un gang (Grove, Ballas, Aztecas ou Vagos)."); SendClientMessage(playerid, YELLOW, "> /gangq : Quitter un gang."); SendClientMessage(playerid, YELLOW, "> /gangkick : Expulser un joueur d'un gang (Commande réservée aux leaders)."); SendClientMessage(playerid, YELLOW, "> ![message] : Envoyer un message aux membres de son gang."); SendClientMessage(playerid, YELLOW, "____________________________"); return 1; } if(strcmp("/gangq", cmdtext, true, 10) == 0) { OnPlayerQuitGang(playerid); return 1; } return 0; } dcmd_join(playerid, parrams[]) { if(!strlen(parrams)) { SendClientMessage(playerid, RED, "> Erreur. Pour rejoindre un gang, entrez la commande |/join [Gangname]|."); } else if(GetPlayerTeam(playerid) != 1) { if(!GetPlayerGang(playerid)) { new gangName[10], gangId = 0; sscanf(parrams, "s[10]",gangName); if(!strcmp(gangName, "grove", true, false)) { gangId = GROVE; } else if(!strcmp(gangName, "ballas", true, false)) { gangId = BALLAS; } else if(!strcmp(gangName, "vagos", true, false)) { gangId = VAGOS; } else if(!strcmp(gangName, "aztecas", true, false)) { gangId = AZTECAS; } else { SendClientMessage(playerid, RED, "Err.Ce gang n'existe pas");} if(gangs[gangId] == 1) { if(gangMembers[gangId] < 4) { SetPlayerGang(playerid, gangId); gangMembers[gangId]++; new string[256], pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); format(string, sizeof(string), "> %s (id : %i) vient de rejoindre le gang %s [%d/4].", pname, playerid, gangName, gangMembers[gangId]); SendClientMessageToAll(GREEN, string); format(string, sizeof(string), "> Pour le rejoindre, entrez la commande /join %s.", gangName); SendClientMessageToAll(GREEN, string); format(string, sizeof(string), "> Vous venez de rejoindre le gang %s.", gangName); SendClientMessage(playerid, GREEN, string); SendClientMessage(playerid, YELLOW, "> Pour voir les commandes de Gang, entrez /gang?."); switch(gangId) { case 1: { SetPlayerColor(playerid, GREEN); SetPlayerSkin(playerid, 107); } case 2: { SetPlayerSkin(playerid, 104); SetPlayerColor(playerid, VIOLET); } case 3: { SetPlayerSkin(playerid, 116); SetPlayerColor(playerid, LIGHTBLUE); } case 4: { SetPlayerSkin(playerid, 110); SetPlayerColor(playerid, YELLOW); } } } else {SendClientMessage(playerid, RED, "> Erreur. Ce gang est complet.");} } else {SendClientMessage(playerid, RED, "> Erreur. Ce gang n'existe pas.");} } else {SendClientMessage(playerid, RED, "> Erreur. Vous êtes déjà dans un gang.");} } else {SendClientMessage(playerid, RED, "> Erreur. Vous devez être un hors-la-loi pour rejoindre un gang.");} return 1; } dcmd_gangkick(playerid, params[]) { if(!strlen(params)) { SendClientMessage(playerid, RED, "> Erreur. /gangkick [PlayerID]"); } else { if(gLeader[GROVE] == playerid || gLeader[BALLAS] == playerid || gLeader[AZTECAS] == playerid || gLeader[VAGOS] == playerid) { new id; sscanf(params, "r", id); if(IsPlayerConnected(id)) { if(GetPlayerTeam(playerid) == GetPlayerTeam(id) && playerid != id) { SendClientMessage(id, RED, "> Vous avez été expulsé(e) de votre gang."); OnPlayerQuitGang(id); } else { SendClientMessage(playerid, RED, "> Erreur. Vous ne pouvez expulser que les membres de votre gang."); } } else { SendClientMessage(playerid, RED, "> Erreur. ID Joueur Invalide."); } } else { SendClientMessage(playerid, RED, "> Erreur. Vous devez être leader d'un gang pour en expulser un membre."); } } return 1; } public OnPlayerText(playerid, text[]) { if(text[0] == '!') { new name[24], string[128]; GetPlayerName(playerid, name, 24); format(string, sizeof(string), "[Team] %s : %s", name, text[1]); printf("%s", string); if(GetPlayerTeam(playerid) == 2) { for(new i = 0; i < gPlayerConnected; i++) { if(GetPlayerGang(i) == GetPlayerGang(playerid)) { SendClientMessage(i, GetPlayerColor(playerid), string); } } return 0; } } return 1; } OnPlayerQuitGang(playerid) { new pGang = GetPlayerGang(playerid); if(pGang) { new gangName[256]; switch(pGang) { case GROVE: { gangName = "Grove";} case BALLAS: { gangName = "Ballas";} case VAGOS: { gangName = "Vagos";} case AZTECAS: { gangName = "Aztecas";} default: { gangName = "Inconnu";} } SetPlayerGang(playerid, 0); SetPlayerColor(playerid, RED); SetPlayerSkin(playerid, 29); gangMembers[pGang]--; new string[256]; new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); format(string, sizeof(string), "> %s (id : %i) vient de quitter le gang %s [%d/4].", pname, playerid, gangName, gangMembers[pGang]); SendClientMessageToAll(GREEN, string); format(string, sizeof(string), "> Pour prendre sa place, entrez la commande /join %s.", gangName); SendClientMessageToAll(GREEN, string); if(!gangMembers[pGang]){ gangs[pGang] = 0;} if(gLeader[pGang] == playerid && gangs[pGang]) { gLeader[pGang] = 800; for(new i = 0; i < gPlayerConnected; i++) { if(GetPlayerGang(i) == pGang && gLeader[pGang] == 800) { gLeader[pGang] = i; SendClientMessage(i, GREEN, "> Vous devenez leader de votre gang."); } } } else if(!gangs[pGang]) { gLeader[pGang] = 800; } } else { SendClientMessage(playerid, RED, "> Erreur. Vous n'êtes dans aucun gang."); } return 1; }