/*
Original Scripts and ideas by HunterFalcon !
Improvements and editing by Jujuv.
Thanks to HunterFalcon !
*/
//Inclusion de bibliotheques
#include <a_samp>
#include <utils>
#include <dini>
#include <sscanf2>
//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;
}
Comments
0 B
|👍
/👎