Two same gangs/crews
#1

SOLVED .
Reply
#2

Alright, give this a try. I added a function to check if a name exists already.

pawn Код:
#include <a_samp>

// Translate in English by DauerDicht
// http://www.SAW-RL.com
#define FILTERSCRIPT

#if defined FILTERSCRIPT
forward PlayerLeaveGang(playerid);
  #define COLOR_ORANGERED 0xE9370DFC
  #define COLOR_GOLD 0xDEAD4370
  #define COLOR_MEDIUMAQUA 0x83BFBFFF
  #define COLOR_BLUE 0x0000FFAA
  #define COLOR_GREY 0xAFAFAFAA
  #define COLOR_GREEN 0x33AA33AA
  #define COLOR_YELLOW 0xFFFF00AA
  #define COLOR_WHITE 0xFFFFFFAA
  #define COLOR_PURPLE 0x9900FFAA
  #define COLOR_BROWN 0x993300AA
  #define COLOR_ORANGE 0xFF9933AA
  #define COLOR_CYAN 0x99FFFFAA
  #define COLOR_TAN 0xFFFFCCAA
  #define COLOR_PINK 0xFF66FFAA
  #define COLOR_KHAKI 0x999900AA
  #define COLOR_LIME 0x99FF00AA
  #define COLOR_BLACK 0x000000AA
  #define COLOR_TURQ 0x00A3C0AA
  #define COLOR_LIGHTBLUE 0x00BFFFAA
  #define COLOR_GREENISHGOLD 0xCCFFDD56
  #define COLOR_LIGHTBLUEGREEN 0x0FFDD349
  #define COLOR_LIGHTCYAN 0xAAFFCC33
  #define COLOR_LEMON 0xDDDD2357
  #define COLOR_LIGHTGREEN 0x7CFC00AA
  #define COLOR_WHITEYELLOW 0xFFE87DAA
  #define COLOR_BLUEAQUA 0x7E60FFAA
  #define COLOR_GREENYELLOWWHITE 0xCBFF45AA
  #define COLOR_DARKBLUE 0x15005EAA
  #define COLOR_RED 0xAA3333AA
  #define COLOR_LIGHTRED 0xFF0000AA
#define NUMVALUES 4

new playerColors[100] =
{
0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,0xF4A460FF,0xEE82EEFF,0xFFD720FF,
0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,
0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,0x65ADEBFF,0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,
0x275222FF,0xF09F5BFF,0x3D0A4FFF,0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,
0x057F94FF,0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,0x4B8987FF,
0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,0x12D6D4FF,0x48C000FF,0x2A51E2FF,0xE3AC12FF,
0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,0x2FD9DEFF,0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,
0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,
0x9F945CFF,0xDCDE3DFF,0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,0xD8C762FF,
0x3FE65CFF
};

#define MAX_GANGS           4
#define MAX_GANG_MEMBERS    30
#define MAX_GANG_NAME    16
new gangMembers[MAX_GANGS][MAX_GANG_MEMBERS];
new gangNames[MAX_GANGS][MAX_GANG_NAME];
new gangInfo[MAX_GANGS][3]; //0-created,1-members,2-color
new gangBank[MAX_GANGS];
new playerGang[MAX_PLAYERS];
new gangInvite[MAX_PLAYERS];



public OnFilterScriptInit()
{
    print("****************************************");
    print(" GoldenEye - GangScript        ");
    print("****************************************");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

#else

main()
{
    print("****************************************");
    print(" GoldenEye - GangScript        ");
    print("****************************************");
}

#endif

public OnPlayerText(playerid, text[])
{
    if(text[0] == '!')
    {
        if(playerGang[playerid] > 0)
        {
          new gangChat[256];
          new senderName[MAX_PLAYER_NAME];
          new string[256];

          for(new i = 1; i < strlen(text)+1; i++)
          gangChat[i]=text[i];

          strmid(gangChat,text,1,strlen(text));

          GetPlayerName(playerid, senderName, sizeof(senderName));
          format(string, sizeof(string),"%s: %s", senderName, gangChat);

          for(new i = 0; i < gangInfo[playerGang[playerid]][1]; i++)
          {
              SendClientMessage(gangMembers[playerGang[playerid]][i], COLOR_LIGHTBLUE, string);
          }
    }

        return 0;
}
    return 1;
}

public OnPlayerConnect(playerid)
{
    playerGang[playerid]=0;
    gangInvite[playerid]=0;
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    PlayerLeaveGang(playerid);
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new string[256];
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new cmd[256];
    new giveplayerid,idx;

    cmd = strtok(cmdtext, idx);

    if(strcmp(cmd, "/ganghelp", true) == 0)
    {
        SendClientMessage(playerid, COLOR_YELLOW,   "/gang create [Name]");
        SendClientMessage(playerid, COLOR_YELLOW,   "/gang join");
        SendClientMessage(playerid, COLOR_YELLOW,   "/gang invite [PlayerID]");
        SendClientMessage(playerid, COLOR_YELLOW,   "/gang leave");
        SendClientMessage(playerid, COLOR_YELLOW,   "/ganginfo [GangID]");
        SendClientMessage(playerid, COLOR_YELLOW,   "! [Text] Gangchat with your Gang");
        return 1;
    }


  //------------------- /gang

    if(strcmp(cmd, "/gang", true) == 0)
    {
        new tmp[256];
        new gangcmd, gangnum;
        tmp = strtok(cmdtext, idx);

        if(!strlen(tmp))
        {
            SendClientMessage(playerid, 0x83BFBFFF, "Type /ganghelp for gangcommands.");
            return 1;
        }
        giveplayerid = strval(tmp);

        if(strcmp(tmp, "create", true)==0)
        gangcmd = 1;
        else if(strcmp(tmp, "invite", true)==0)
        gangcmd = 2;
        else if(strcmp(tmp, "join", true)==0)
        gangcmd = 3;
        else if(strcmp(tmp, "leave", true)==0)
        gangcmd = 4;

        tmp = strtok(cmdtext, idx);
        if(gangcmd < 3 && !strlen(tmp))
        {
          if(gangcmd==0)
          SendClientMessage(playerid, 0x83BFBFFF, "Type /ganghilfe for gangcommands.");
          else if(gangcmd==1)
          SendClientMessage(playerid, 0x83BFBFFF, "Write: /gang create [Name]");
          else if(gangcmd==2)
          SendClientMessage(playerid, 0x83BFBFFF, "Write: /gang invite [PlayerID]");
          return 1;
        }

        //Create Gang//
        if(gangcmd==1)
        {
          if(playerGang[playerid]>0)
          {
                SendClientMessage(playerid, 0x83BFBFFF, "You are already in a gang!");
                return 1;
          }
          if(GangNameExists(tmp)) return SendClientMessage(playerid, 0x83BFBFFF, "This gang name already exists!");
          for(new i = 1; i < MAX_GANGS; i++)
          {
                    if(gangInfo[i][0]==0)
                    {
                    //name gang
                    format(gangNames[i], MAX_GANG_NAME, "%s", tmp);
                    //Gang exists
                    gangInfo[i][0]=1;
                    //There is one member
                    gangInfo[i][1]=1;
                    //Gang color is player's color
                    gangInfo[i][2]=playerColors[playerid];

                    //Player is the first gang member
                    gangMembers[i][0] = playerid;
                    format(string, sizeof(string),"You have create the gang '%s' (id: %d)", gangNames[i], i);
                    SendClientMessage(playerid, 0x83BFBFFF, string);

                    playerGang[playerid]=i;

                    return 1;
                }
          }
          return 1;

        //Join Gang//
        }
        else if (gangcmd==3)
        {
            gangnum = gangInvite[playerid];

            if(playerGang[playerid]>0)
          {
                SendClientMessage(playerid, 0x83BFBFFF, "You are already in a gang.");
                return 1;
          }
            if(gangInvite[playerid]==0)
            {
                SendClientMessage(playerid, 0x83BFBFFF, "You are not invite in a gang.");
                return 1;
            }
            if(gangInfo[gangnum][0]==0)
            {
                SendClientMessage(playerid, 0x83BFBFFF, "This gang doesnt exist.");
                return 1;
            }

            if(gangInfo[gangnum][1] < MAX_GANG_MEMBERS)
            {
              new i = gangInfo[gangnum][1];

              gangInvite[playerid]=0;

              gangMembers[gangnum][i] = playerid;

              GetPlayerName(playerid, sendername, MAX_PLAYER_NAME);
              for(new j = 0; j < gangInfo[gangnum][1]; j++)
              {
              format(string, sizeof(string),"%s joined your gang.", sendername);
              SendClientMessage(gangMembers[gangnum][j], COLOR_ORANGE, string);
              }

              gangInfo[gangnum][1]++;
              playerGang[playerid] = gangnum;

              SetPlayerColor(playerid,gangInfo[gangnum][2]);

              format(string, sizeof(string),"You join the gang '%s'(id: %d)", gangNames[gangnum], gangnum);
              SendClientMessage(playerid, 0x83BFBFFF, string);

              return 1;
            }

            SendClientMessage(playerid, 0x83BFBFFF, "No members searched");
            return 1;

        //Invite to Gang//
            }
            else if (gangcmd==2)
            {
            giveplayerid = strval(tmp);

            if(playerGang[playerid]==0)
            {
                SendClientMessage(playerid, 0x83BFBFFF, "You are not in a gang.");
                return 1;
            }
            if(gangMembers[playerGang[playerid]][0]!=playerid) {
            SendClientMessage(playerid, COLOR_RED, "You need to be the gang leader to send an invite.");
            return 1;
            }

            if(IsPlayerConnected(giveplayerid)) {
                GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                GetPlayerName(playerid, sendername, sizeof(sendername));

                format(string, sizeof(string),"You invite %s in your gang.", giveplayer);
                SendClientMessage(playerid, 0x83BFBFFF, string);
                format(string, sizeof(string),"You get a gang invite from %s in his gang '%s' (id: %d)", sendername, gangNames[playerGang[playerid]],playerGang[playerid]);
                SendClientMessage(giveplayerid, 0x83BFBFFF, string);

                gangInvite[giveplayerid]=playerGang[playerid];

            } else
                SendClientMessage(playerid, 0x83BFBFFF, "Player nicht verfьgbar!");

            //Leave Gang//
            }
            else if (gangcmd==4)
            {
            PlayerLeaveGang(playerid);
            }

        return 1;
    }

    //------------------- /ganginfo

    if(strcmp(cmd, "/ganginfo", true) == 0) {
        new tmp[256];
        new gangnum;
        tmp = strtok(cmdtext, idx);

        if(!strlen(tmp) && playerGang[playerid]==0) {
            SendClientMessage(playerid, 0x83BFBFFF, "Type: /ganginfo [GangID]");
            return 1;
        } else if (!strlen(tmp))
            gangnum = playerGang[playerid];
        else
            gangnum = strval(tmp);

        if(gangInfo[gangnum][0]==0) {
            SendClientMessage(playerid, 0x83BFBFFF, "Player nicht verfьgbar!");
            return 1;
        }

        format(string, sizeof(string),"'%s' Gang members (id: %d)", gangNames[gangnum], gangnum);
        SendClientMessage(playerid, 0x83BFBFFF, string);

        for(new i = 0; i < gangInfo[gangnum][1]; i++) {
            GetPlayerName(gangMembers[gangnum][i], giveplayer, sizeof(giveplayer));
            format(string, sizeof(string),"%s (%d)", giveplayer, gangMembers[gangnum][i]);
            SendClientMessage(playerid, 0x83BFBFFF, string);
        }

        return 1;
    }

    //------------------- /gangs

    if(strcmp(cmd, "/gangs", true) == 0)
    {
        new x;

        SendClientMessage(playerid, 0x83BFBFFF, "Exist gangs:");
        for(new i=0; i < MAX_GANGS; i++) {
            if(gangInfo[i][0]==1) {
                format(string, sizeof(string), "%s%s(%d) - %d members", string,gangNames[i],i,gangInfo[i][1]);

                x++;
                if(x > 2) {
                  SendClientMessage(playerid, 0x83BFBFFF, string);
                  x = 0;
                  format(string, sizeof(string), "");
                  } else {
                    format(string, sizeof(string), "%s, ", string);
                }
            }
        }

        if(x <= 2 && x > 0) {
            string[strlen(string)-2] = '.';
            SendClientMessage(playerid, 0x83BFBFFF, string);
        }

        return 1;
    }
    return 0;
}

stock PlayerName(playerid)
{
 new name[255];
 GetPlayerName(playerid, name, 255);
 return name;
}

public PlayerLeaveGang(playerid)
{
    new string[256];
    new playername[MAX_PLAYER_NAME];
    new gangnum = playerGang[playerid];

    if(gangnum > 0) {
    for(new i = 0; i < gangInfo[gangnum][1]; i++)
    {
        if(gangMembers[gangnum][i]==playerid)
        {
        //One less gang member
        gangInfo[gangnum][1]--;
        for(new j = i; j < gangInfo[gangnum][1]; j++)
        {
                 //Shift gang members
                gangMembers[gangnum][j]=gangMembers[gangnum][j+1];
        }
        //Disband gang if no more members
        if(gangInfo[gangnum][1]<1)
        {
                gangInfo[gangnum][0]=0;
                gangInfo[gangnum][1]=0;
                gangBank[gangnum]=0;
        }
        //Notify other members
        for(new j = 0; j < gangInfo[gangnum][1]; j++) {
        GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
        format(string, sizeof(string),"%s left your gang.", playername);
        SendClientMessage(gangMembers[gangnum][j], COLOR_ORANGE, string);
        }
        format(string, sizeof(string),"You left the gang '%s'(id: %d)", gangNames[gangnum], gangnum);
        SendClientMessage(playerid, 0x83BFBFFF, string);

        playerGang[playerid]=0;

        SetPlayerColor(playerid,playerColors[playerid]);

        return;
            }
        }
    } else
    {
        SendClientMessage(playerid, 0x83BFBFFF, "You arent in a gang.");
    }
}

strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

GangNameExists(gangname[])
{
    for(new x=0; x!=MAX_GANGS; x++)
    {
        if(strfind(gangNames[x], gangname, true) != -1) return 1;
    }
    return 0;
}
Reply
#3

Thx its working and thx for posting whole FS LOL

GangNameExists(gangname[])
{
for(new x=0; x!=MAX_GANGS; x++)
{
if(strfind(gangNames[x], gangname, true) != -1) return 1;
}
return 0;
}

Im biggest IDIOT on these world! I trying make these working like 1h!

thx again
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)