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 FILTERSCRIPTforward 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 4new 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 16new gangMembers
[MAX_GANGS
][MAX_GANG_MEMBERS
];
new gangNames
[MAX_GANGS
][MAX_GANG_NAME
];
new gangInfo
[MAX_GANGS
][3];
//0-created,1-members,2-colornew gangBank
[MAX_GANGS
];
new playerGang
[MAX_PLAYERS
];
new gangInvite
[MAX_PLAYERS
];
public OnFilterScriptInit
(){ print("****************************************");
print(" GoldenEye - GangScript ");
print("****************************************");
return 1;
}public OnFilterScriptExit
(){ return 1;
}#elsemain
(){ print("****************************************");
print(" GoldenEye - GangScript ");
print("****************************************");
}#endifpublic 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;
}