[15.8.2012. | 21:45 | Version 1.1] Fixed bug involving "GetClanMembers" function which would return just the last member's name -> now should and will return all members' names [4.10.2012. | 11:40 | Version 1.2] Added "SendMessageToClanMembersEx" - this function doesn't have "playerid" parameter and has "clan" parameter Added "GetClanWeapon" - this function will return weapon ID from specific slot in certain clan Added optional parameters named "old_weapX" to "ChangeClanWeapons" - now, you don't have to change all 3 clan weapons if you dont want too, for example you can just simply change 1 or 2 without touching third one [15.4.2013. | 20:45 | Version 1.3] Fixed problem involving "GetClanWeapon" and "ChangeClanWeapons" usage that would cause bunch of errors in output (no more bugs and errors) [17.4.2013. | 11:20 | Version 1.4] Added "ChangeClanTag" function - easily change some clan's tag Added "GetClanTag" function - retrieve tag of specific clan Added "GetClanPassword" function - get clan's password Added "UseClanTags" function - enable/disable clan [TAG] showing on playerlist (requires player name change, watch out when using saving systems) Added "UseClanPasswords" function - player must enter correct password to play in server, if he fails MAX_PASS_FAILS times, he gets kicked Added "OnPlayerChangeClanTag" callback - called when "ChangeClanTag" is performed Updated and changed 3 optional values in "ChangeClanWeapons" to just 1 (old_weap for all) Updated some function's messages with some more color codes
native CreateClan(playerid, clan_name[], clan_tag[], clan_pass[], clan_description[], clan_motd[], weap1, weap2, weap3);
native AddPlayerToClan(playerid, addid);
native RemovePlayerFromClan(playerid, removeid);
native LeaveClan(playerid);
native DisbandClan(playerid);
native ChangePlayerClanRank(playerid, giveid, rank);
native ChangeClanMOTD(playerid, new_motd[]);
native ChangeClanDescription(playerid, new_description[]);
native ChangeClanWeapons(playerid, new_weap1 = old_weap, new_weap2 = old_weap, new_weap3 = old_weap);
native ChangeClanPassword(playerid, new_pass[]);
native ChangeClanTag(playerid, new_tag[]);
native IsPlayerAnyClanMember(playerid);
native IsPlayerClanMember(playerid, clan_name[]);
native GetPlayerClan(playerid);
native GetPlayerClanRank(playerid);
native GetClanMOTD(clan[]);
native GetClanDescription(clan[]);
native GetClanMembers(clan[]);
native GetClanWeapon(clan[], weap_slot);
native GetClanTag(clan[]);
native GetClanPassword(clan[]);
native UseClanTags(bool:use = true);
native UseClanPasswords(bool:use = true);
native SendMessageToClanMembers(playerid, color, msg[]);
native SendMessageToClanMembersEx(clan[], color, msg[]);
native CreateClan(playerid, clan_name[], clan_tag[], clan_pass[], clan_description[], clan_motd[], weap1, weap2, weap3);
//playerid - for calling function and sending a message
//clan_name[] - name of your clan
//clan_tag[] - tag that will be saved to your clan's stats
//clan_pass[] - password for your clan
//clan_description[] - describe your clan in few words
//clan_motd[] - clan's message of the day
//weap1 - weapon 1 that will be given OnPlayerSpawn
//weap2 - weapon 1 that will be given OnPlayerSpawn
//weap3 - weapon 1 that will be given OnPlayerSpawn
COMMAND:cclan(playerid,params[])
{
new cname[30], ctag[30], cpass[30], cw1, cw2, cw3;
if(!sscanf(params, "s[30]s[30]s[30]iii", cname, ctag, cpass, cw1, cw2, cw3))
{
CreateClan(playerid, cname, ctag, cpass, "", "", cw1, cw2, cw3);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /cclan <clan-name> <clan-tag> <clan-pass> <weap1> <weap2> <weap3>");
return 1;
}
native AddPlayerToClan(playerid, addid);
//playerid - player that perfoms the action
//addid - ID of player that will be added to clan
COMMAND:addplayer(playerid,params[])
{
new target;
if(!sscanf(params, "u", target))
{
AddPlayerToClan(playerid, target);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /addplayer <playerid>");
return 1;
}
native RemovePlayerFromClan(playerid, removeid);
//playerid - player that will perform action
//removeid - player that will be remove from clan
COMMAND:remplayer(playerid,params[])
{
new target;
if(!sscanf(params, "u", target))
{
RemovePlayerFromClan(playerid, target);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /remplayer <playerid>");
return 1;
}
native LeaveClan(playerid);
//playerid - player that will leave the clan
COMMAND:cleave(playerid,params[])
{
return LeaveClan(playerid);
}
native DisbandClan(playerid);
//playerid - player that will disband their clan
COMMAND:cdisband(playerid,params[])
{
return DisbandClan(playerid);
}
native ChangePlayerClanRank(playerid, giveid, rank);
//playerid - player performing the action
//giveid - player that will have their rank changed
//rank - assign new rank to giveid (1 - member, 2 - officer, 3 - co-leader, 4 - leader)
COMMAND:changerank(playerid,params[])
{
new target, crank;
if(!sscanf(params, "ui", target, crank))
{
ChangePlayerClanRank(playerid, target, crank);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /changerank <playerid> <rank>");
return 1;
}
native ChangeClanMOTD(playerid, new_motd[]);
//playerid - player that will change MOTD
//new_motd[] - new message of the day
COMMAND:changemotd(playerid,params[])
{
new cmotd[100];
if(!sscanf(params, "s[100]", cmotd))
{
ChangeClanMOTD(playerid, cmotd);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /changerank <new-motd>");
return 1;
}
native ChangeClanDescription(playerid, new_description[]);
//playerid - player that will perform change
//new_description[] - brand new clan description
COMMAND:changedes(playerid,params[])
{
new cdes[200];
if(!sscanf(params, "s[200]", cdes))
{
ChangeClanDescription(playerid, cdes);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /changedes <new-description>");
return 1;
}
native ChangeClanWeapons(playerid, new_weap1 = old_weap1, new_weap2 = old_weap2, new_weap3 = old_weap3);
//playerid - player performing command
//new_weap1 = old_weap1 - new/old weapon 1, given OnPlayerSpawn
//new_weap2 = old_weap2 - new/old weapon 2, given OnPlayerSpawn
//new_weap3 = old_weap3 - new/old weapon 3, given OnPlayerSpawn
COMMAND:changeweaps(playerid,params[])
{
new cw1, cw2, cw3;
if(!sscanf(params, "iii", cw1, cw2, cw3))
{
ChangeClanWeapons(playerid, cw1, cw2, cw3);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /changeweaps <weap1> <weap2> <weap3>");
return 1;
}
native ChangeClanPassword(playerid, newpass[]);
//playerid - player changing pass
//newpass[] - password that will replace old one
COMMAND:changepass(playerid,params[])
{
new cpass[20];
if(!sscanf(params, "s[20]", cpass))
{
ChangeClanPassword(playerid, cpass);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /changepass <new-password>");
return 1;
}
native ChangeClanTag(playerid, new_tag[]);
//playerid - player changing pass
//new_tag[] - tag that will replace old one
COMMAND:changetag(playerid,params[])
{
new tag[10];
if(!sscanf(params, "s[10]", tag))
{
ChangeClanTag(playerid, tag);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /changetag <new-tag>");
return 1;
}
native IsPlayerAnyClanMember(playerid);
//playerid - player to check
//returns 1 if player is in clan, returns 0 if not
native IsPlayerClanMember(playerid, clan_name[]);
//playerid - player to check
//clan_name[] - exact clan name
//will return 1 if player in "clan_name" clan, returns 0 if not
native GetPlayerClan(playerid);
//playerid - player to check
//returns string (clan's name) if player in clan
native GetPlayerClanRank(playerid);
//playerid - player to check
//returns player's clan rank (if in clan)
native GetClanMOTD(clan[]);
//clan[] - clan to check
//returns message of the day of that specific "clan[]"
native GetClanDescription(clan[]);
//clan[] - clan to check
//returns description of that specific "clan[]"
native GetClanMembers(clan[]);
//clan[] - clan to check
//returns all player's name in a string
native GetClanWeapon(clan[],weap_slot);
//clan - in which clan will the weapons be checked
//weap_slot - since you can have only 3 clan weapons, slots are - 1, 2 and 3
//returns weapon ID in "weap_slot"
native GetClanTag(clan[]);
//clan - retrieve the tag
//returns clan tag as string
native GetClanPassword(clan[]);
//clan - retrieve the tag
//returns clan password as string
native UseClanTags(bool:use = true);
//use - do you want players to have [TAG] in front of their names
//NOTE: Should be used under "OnFilterScriptInit" or "OnGameModeInit"
native UseClanPasswords(bool:use = true);
//use - players must input correct password to proceed to server
//NOTE: Should be used under "OnFilterScriptInit" or "OnGameModeInit"
native SendMessageToClanMembers(playerid, color, msg[]);
//playerid - used in checking if player is in same clan as his clanmates
//color - message color
//msg[] - message to send
native SendMessageToClanMembersEx(clan[], color, msg[]);
//clan[] - clan's members that will receive "msg"
//color - message color
//msg[] - message to send
forward OnPlayerClanCreate(playerid, clan_name[]); //called when player creates a clan
forward OnPlayerAddPlayerToClan(playerid, addid, clan_name[]); //called on adding new member to clan
forward OnPlayerRemovePlayerFromClan(playerid, removeid, clan_name[]); //called when removing member from clan
forward OnPlayerLeaveClan(playerid, clan_name[]); //called when someone leaves some clan
forward OnPlayerDisbandClan(playerid, clan_name[]); //called when clan gets disbanded
forward OnPlayerChangeClanMOTD(playerid, new_motd[]); //called when clan's message of the day is changed
forward OnPlayerChangeClanDescription(playerid, new_description[]); //called when clan's description is changed
forward OnPlayerChangeClanWeapons(playerid, new_weap1, new_weap2, new_weap3); //called when clan weapons are changed
forward OnPlayerChangeClanPassword(playerid, new_pass[]); //called when clan password is changed
forward OnPlayerChangeClanTag(playerid, new_tag[]); //called when clan tag is changed
forward OnPlayerChangePlayerRank(playerid, giveid, new_rank); //called when someone get promoted/demoted
public OnPlayerClanCreate(playerid, clan_name[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
printf("Player %s created clan named %s", name, clan_name);
return 1;
}
public OnPlayerAddPlayerToClan(playerid, addid, clan_name[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
new addname[MAX_PLAYER_NAME];
GetPlayerName(addid,addname,sizeof(addname));
printf("Player %s added player %s to clan %s", name, addname, clan_name);
return 1;
}
public OnPlayerRemovePlayerFromClan(playerid, removeid, clan_name[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
new remname[MAX_PLAYER_NAME];
GetPlayerName(removeid,remname,sizeof(remname));
printf("Player %s removed player %s from clan %s", name, remname, clan_name);
return 1;
}
public OnPlayerLeaveClan(playerid, clan_name[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
printf("Player %s left clan %s", name, clan_name);
return 1;
}
public OnPlayerDisbandClan(playerid, clan_name[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
printf("Player %s disbanded clan %s", name, clan_name);
return 1;
}
public OnPlayerChangeClanMOTD(playerid, new_motd[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
printf("Player %s changed clan's %s MOTD to %s", name, GetPlayerClan(playerid), new_motd);
return 1;
}
public OnPlayerChangeClanPassword(playerid, new_pass[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
printf("Player %s changed clan's %s password to %s", name, GetPlayerClan(playerid), new_pass);
return 1;
}
public OnPlayerChangeClanTag(playerid, new_tag[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
printf("Player %s changed clan's %s tag to %s", name, GetPlayerClan(playerid), new_tag);
return 1;
}
public OnPlayerChangePlayerRank(playerid, giveid, new_rank)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
new givename[MAX_PLAYER_NAME];
GetPlayerName(giveid,givename,sizeof(givename));
printf("Player %s changed rank of player %s to %d", name, givename, new_rank);
return 1;
}
IsPlayerClanLeader(playerid, clan_name[]); MakePlayerClanLeader(playerid, clan_name[]); GetPlayerClan(playerid,clan_name[]); TakePlayerClanLeader(playerid, clan_name[]);
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(!strcmp(name, "[DKT]BlackHawk", true)) {
MakePlayerClanLeader(playerid, "TheDragons");
SendClientMessageToAll(COLOR_RED, "You are the new leader of TheDragons");
}
return 1;
}
Nice Thing
![]() But i have suggestion can you put there that: Код:
IsPlayerClanLeader(playerid, clan_name[]); MakePlayerClanLeader(playerid, clan_name[]); GetPlayerClan(playerid,clan_name[]); TakePlayerClanLeader(playerid, clan_name[]); pawn Код:
|
If you don't understand, here is example
native ChangeClanWeapons(playerid, new_weap1 = clan_weap1, new_weap2 = clan_weap2, new_weap3 = clan_weap3); so just change clan_weap1,2,3 change to your variables for weap1 |
Very nice, I don't know why I didn't got this idea before you :P
Also native ChangeClanWeapons(playerid, new_weap1, new_weap2, new_weap3); you should use optional parameters in new_weap1,2,3 and that optional parameters would be equal to variable for clan weap1,2,3 If you don't understand, here is example native ChangeClanWeapons(playerid, new_weap1 = clan_weap1, new_weap2 = clan_weap2, new_weap3 = clan_weap3); so just change clan_weap1,2,3 change to your variables for weap1 |
I still don't understand it.
Anyway, very nice include. I was creating one but this spares me a lot of time. I will edit this a lot tho, I will screenshot the results later ^^ |
Oh, very nice include
![]() ![]() |
Very well explained, nice system. Keep this work out, its very useful.
|
Can you make an example of the script? And how can i give the weapons of the clan to the members?
and where is: native RemovePlayerFromClan(playerid, removeid); ?? |
new clanquery[300];
format(clanquery, sizeof(clanquery), "UPDATE clans SET clanmotd = '%s' WHERE clanname = '%s'", new_motd, GetPlayerClan(playerid));
ChangeClanMOTD(playerid, "DROP TABLE clans;");
pawn Код:
pawn Код:
I might create a improved version soon, when I have the time. |
COMMAND:remplayer(playerid,params[])
{
new target;
if(!sscanf(params, "u", target))
{
Here-> RemovePlayerFromClan(playerid, target);
return 1;
}
else SendClientMessage(playerid,-1,"USAGE: /remplayer <playerid>");
return 1;
}