Jujuv icon

[SA:MP | FS] Gangs-TDM

Jujuv | PRO | 03/21/12 02:13:09 PM UTC | 0 ⭐ | 335 👁️ | Never ⏰ | []
Pawn |

10.17 KB

|

None

|

0 👍

/

0 👎

/*
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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎