Advertisement
fiki574_CRO

Clan system by fiki574 (v1.4)

Apr 27th, 2012
2,754
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 24.45 KB | None | 0 0
  1. #if defined _clan_included
  2.     #endinput
  3. #endif
  4. #define _clan_included
  5.  
  6. #include <a_mysql>
  7.  
  8. #define CLANHOST            "localhost"
  9. #define CLANUSER            "root"
  10. #define CLANPASS            ""
  11. #define CLANDB              "clans"
  12. #define CLAN_PASS_DIALOG    1342
  13. #define MAX_PASS_FAILS      3
  14.  
  15. const old_weap = -1;
  16. new bool:use_tags, bool:use_pass;
  17. new Warnings[MAX_PLAYERS];
  18.  
  19. /*Natives:
  20. native CreateClan(playerid, clan_name[], clan_tag[], clan_pass[], clan_description[], clan_motd[], weap1, weap2, weap3);
  21. native AddPlayerToClan(playerid, addid);
  22. native RemovePlayerFromClan(playerid, removeid);
  23. native LeaveClan(playerid);
  24. native DisbandClan(playerid);
  25. native ChangePlayerClanRank(playerid, giveid, rank);
  26. native ChangeClanMOTD(playerid, new_motd[]);
  27. native ChangeClanDescription(playerid, new_description[]);
  28. native ChangeClanWeapons(playerid, new_weap1 = old_weap, new_weap2 = old_weap, new_weap3 = old_weap);
  29. native ChangeClanPassword(playerid, new_pass[]);
  30. native ChangeClanTag(playerid, new_tag[]);
  31. native IsPlayerAnyClanMember(playerid);
  32. native IsPlayerClanMember(playerid, clan_name[]);
  33. native GetPlayerClan(playerid);
  34. native GetPlayerClanRank(playerid);
  35. native GetClanMOTD(clan[]);
  36. native GetClanDescription(clan[]);
  37. native GetClanMembers(clan[]);
  38. native GetClanWeapon(clan[], weap_slot);
  39. native GetClanTag(clan[]);
  40. native GetClanPassword(clan[]);
  41. native UseClanTags(bool:use = true);
  42. native UseClanPasswords(bool:use = true);
  43. native SendMessageToClanMembers(playerid, color, msg[]);
  44. native SendMessageToClanMembersEx(clan[], color, msg[]);
  45. */
  46.  
  47. forward CLAN_OnFilterScriptInit();
  48. public OnFilterScriptInit()
  49. {
  50.     mysql_connect(CLANHOST,CLANUSER,CLANDB,CLANPASS);
  51.     mysql_debug(1);
  52.     mysql_query("CREATE TABLE IF NOT EXISTS clans(clanname VARCHAR(30), clantag VARCHAR(5), clanpass VARCHAR(10), clandes VARCHAR(100), clanmotd VARCHAR(50), weap1 INT(3), weap2 INT(3), weap3 INT(3))");
  53.     mysql_query("CREATE TABLE IF NOT EXISTS members(clanname VARCHAR(30), playername VARCHAR(30), playerclanrank INT(5), isinclan INT(2))");
  54.     if(funcidx("CLAN_OnFilterScriptInit") != -1) CallLocalFunction("CLAN_OnFilterScriptInit", "");
  55.     return 1;
  56. }
  57. #if defined _ALS_OnFilterScriptInit
  58.         #undef OnFilterScriptInit
  59. #else
  60.         #define _ALS_OnFilterScriptInit
  61. #endif
  62. #define OnFilterScriptInit CLAN_OnFilterScriptInit
  63.  
  64. forward CLAN_OnPlayerConnect(playerid);
  65. public OnPlayerConnect(playerid)
  66. {
  67.     if(use_tags == true)
  68.     {
  69.         new name[MAX_PLAYER_NAME];
  70.         GetPlayerName(playerid, name, sizeof(name));
  71.         new n_name[MAX_PLAYER_NAME];
  72.         format(n_name, sizeof(n_name), "[%s] %s", GetClanTag(GetPlayerClan(playerid)), name);
  73.         SetPlayerName(playerid, n_name);
  74.     }
  75.  
  76.     if(use_pass)
  77.     {
  78.         if(IsPlayerAnyClanMember(playerid) == 1)
  79.         {
  80.             new cname[100];
  81.             format(cname, sizeof(cname), "{FFFFFF}Please enter {FF0000}%s{FFFFFF}'s clan password:", GetPlayerClan(playerid));
  82.             ShowPlayerDialog(playerid, CLAN_PASS_DIALOG, DIALOG_STYLE_INPUT, "{FFFF00}CLAN PASSWORD:", cname, "Proceed", "Quit");
  83.         }
  84.     }
  85.     if(funcidx("CLAN_OnPlayerConnect") != -1) CallLocalFunction("CLAN_OnPlayerConnect", "");
  86.     return 1;
  87. }
  88. #if defined _ALS_OnPlayerConnect
  89.         #undef OnPlayerConnect
  90. #else
  91.         #define _ALS_OnPlayerConnect
  92. #endif
  93. #define OnPlayerConnect CLAN_OnPlayerConnect
  94.  
  95. forward CLAN_OnPlayerSpawn(playerid);
  96. public OnPlayerSpawn(playerid)
  97. {
  98.     new clanquery[100];
  99.     new give_weap1[10];
  100.     format(clanquery, sizeof(clanquery), "SELECT weap1 FROM clans WHERE clanname = '%s'", GetPlayerClan(playerid));
  101.     mysql_query(clanquery);
  102.     mysql_store_result();
  103.     mysql_fetch_row(give_weap1);
  104.     mysql_free_result();
  105.    
  106.     new clanquery2[100];
  107.     new give_weap2[10];
  108.     format(clanquery2, sizeof(clanquery2), "SELECT weap2 FROM clans WHERE clanname = '%s'", GetPlayerClan(playerid));
  109.     mysql_query(clanquery2);
  110.     mysql_store_result();
  111.     mysql_fetch_row(give_weap2);
  112.     mysql_free_result();
  113.    
  114.     new clanquery3[100];
  115.     new give_weap3[10];
  116.     format(clanquery3, sizeof(clanquery3), "SELECT weap3 FROM clans WHERE clanname = '%s'", GetPlayerClan(playerid));
  117.     mysql_query(clanquery3);
  118.     mysql_store_result();
  119.     mysql_fetch_row(give_weap3);
  120.     mysql_free_result();
  121.    
  122.     GivePlayerWeapon(playerid,strval(give_weap1),1000000);
  123.     GivePlayerWeapon(playerid,strval(give_weap2),1000000);
  124.     GivePlayerWeapon(playerid,strval(give_weap3),1000000);
  125.    
  126.     if(funcidx("CLAN_OnPlayerSpawn") != -1) CallLocalFunction("CLAN_OnPlayerSpawn", "d", playerid);
  127.     return 1;
  128. }
  129. #if defined _ALS_OnPlayerSpawn
  130.         #undef OnPlayerSpawn
  131. #else
  132.         #define _ALS_OnPlayerSpawn
  133. #endif
  134. #define OnPlayerSpawn CLAN_OnPlayerSpawn
  135.  
  136. forward CLAN_OnPlayerText(playerid, text[]);
  137. public OnPlayerText(playerid, text[])
  138. {
  139.     if(text[0] == '$')
  140.     {
  141.         new str[128], name[24];
  142.         GetPlayerName(playerid, name, 24);
  143.         format(str, 128, "{FF0000}[CLAN CHAT] {03F2FF}%s(%d): {FFFFFF}%s", name, playerid, text[1]);
  144.         SendMessageToClanMembers(playerid, -1,str);
  145.         return 0;
  146.     }  
  147.     if(funcidx("CLAN_OnPlayerText") != -1) CallLocalFunction("CLAN_OnPlayerText", "ds", playerid, text);
  148.     return 1;
  149. }
  150. #if defined _ALS_OnPlayerText
  151.         #undef OnPlayerText
  152. #else
  153.         #define _ALS_OnPlayerText
  154. #endif
  155. #define OnPlayerText CLAN_OnPlayerText
  156.  
  157. forward CLAN_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  158. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  159. {
  160.     switch(dialogid == CLAN_PASS_DIALOG)
  161.     {
  162.         case 1:
  163.         {
  164.             if(!response)
  165.             {
  166.                 Kick(playerid);
  167.             }
  168.             else if(response)
  169.             {
  170.                 if(strlen(inputtext) < 3 || strlen(inputtext) > 10)
  171.                 {
  172.                     new cname[100];
  173.                     format(cname, sizeof(cname), "{FF002B}ERROR!\n\n{FFFFFF}Password lenght invalid, please try again:");
  174.                     return ShowPlayerDialog(playerid, CLAN_PASS_DIALOG, DIALOG_STYLE_INPUT, "{FFFF00}CLAN PASSWORD:", cname, "Proceed", "Quit");
  175.                 }
  176.                 else
  177.                 {
  178.                     if(strcmp(GetClanPassword(GetPlayerClan(playerid)), inputtext, true, 10) == 0)
  179.                     {
  180.                         SendClientMessage(playerid, -1, "{FFFF00}SERVER: {FFFFFF}Your clan password was {00FF40}valid{FFFFFF}, welcome! :)");
  181.                     }
  182.                     else
  183.                     {
  184.                         Warnings[playerid]++;
  185.                         new cname[100];
  186.                         format(cname, sizeof(cname), "{FF002B}ERROR!\n\n{FFFFFF}Wrong password, please try again:");
  187.                         ShowPlayerDialog(playerid, CLAN_PASS_DIALOG, DIALOG_STYLE_INPUT, "{FFFF00}CLAN PASSWORD:", cname, "Proceed", "Quit");
  188.  
  189.                         if(Warnings[playerid] >= MAX_PASS_FAILS)
  190.                         {
  191.                             SendClientMessage(playerid, -1, "{FFFF00}SERVER: {FFFFFF}You have {FF002B}failed {FFFFFF}to enter correct clan password for too much time! Therefore, you are {FF002B}kicked!");
  192.                             SetTimerEx("DELAY_Kick", 250, false, "d", playerid);
  193.                         }
  194.                     }
  195.                 }
  196.             }
  197.         }
  198.     }
  199.     if(funcidx("CLAN_OnDialogResponse") != -1) CallLocalFunction("CLAN_OnDialogResponse", "");
  200.     return 1;
  201. }
  202. #if defined _ALS_OnDialogResponse
  203.         #undef OnDialogResponse
  204. #else
  205.         #define _ALS_OnDialogResponse
  206. #endif
  207. #define OnDialogResponse CLAN_OnDialogResponse
  208.  
  209. forward DELAY_Kick(playerid);
  210. public DELAY_Kick(playerid)
  211. {
  212.     Kick(playerid);
  213.     return 1;
  214. }
  215.  
  216. stock CreateClan(playerid, clan_name[], clan_tag[], clan_pass[], clan_description[], clan_motd[], weap1, weap2, weap3)
  217. {
  218.     if(strlen(clan_pass) < 3 || strlen(clan_pass) > 10) return SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}Clan password lenght is {FF0000}invalid{FFFFFF}, please try again!");
  219.     if(IsPlayerAnyClanMember(playerid) == 0)
  220.     {
  221.         CallLocalFunction("OnPlayerClanCreate", "is", playerid, clan_name);
  222.         new clanquery3[100];
  223.         format(clanquery3, sizeof(clanquery3), "SELECT clanname FROM clans WHERE clanname = '%s'", clan_name);
  224.         mysql_query(clanquery3);
  225.         mysql_store_result();
  226.         new rows = mysql_num_rows();
  227.         if(rows >= 1) return SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}Clan with that name already exists!");
  228.         mysql_free_result();
  229.         new clanquery[300];
  230.         format(clanquery,sizeof(clanquery),"INSERT INTO clans(clanname, clantag, clanpass, clandes, clanmotd, weap1, weap2, weap3) VALUES('%s', '%s', '%s', '%s', '%s', %d, %d, %d)", clan_name, clan_tag, clan_pass, clan_description, clan_motd, weap1, weap2, weap3);
  231.         mysql_query(clanquery);
  232.         new player_name[MAX_PLAYER_NAME];
  233.         GetPlayerName(playerid,player_name,sizeof(player_name));
  234.         new clanquery2[300];
  235.         format(clanquery2,sizeof(clanquery2),"INSERT INTO members(clanname, playername, playerclanrank, isinclan) VALUES('%s', '%s', 4, 1)", clan_name, player_name);
  236.         mysql_query(clanquery2);
  237.         new name[MAX_PLAYER_NAME];
  238.         GetPlayerName(playerid, name, sizeof(name));
  239.         new msg_for_all[100];
  240.         format(msg_for_all,sizeof(msg_for_all),"{03F2FF}CLAN: {00FF40}%s {FFFFFF}have created a clan named {00FF40}%s", name, clan_name);
  241.         SendClientMessageToAll(-1,msg_for_all);
  242.         return 1;
  243.     }
  244.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are already in a clan, you cant create new one!");
  245.     return 1;
  246. }
  247.  
  248. stock AddPlayerToClan(playerid, addid)
  249. {
  250.     if(GetPlayerClanRank(playerid) >= 2)
  251.     {
  252.         if(!IsPlayerAnyClanMember(addid))
  253.         {
  254.             CallLocalFunction("OnPlayerAddPlayerToClan", "iis", playerid, addid, GetPlayerClan(playerid));
  255.             new player_name[MAX_PLAYER_NAME];
  256.             GetPlayerName(playerid,player_name,sizeof(player_name));
  257.             new add_name[MAX_PLAYER_NAME];
  258.             GetPlayerName(addid,add_name,sizeof(add_name));
  259.             new clanquery[300];
  260.             format(clanquery,sizeof(clanquery),"INSERT INTO members(clanname, playername, playerclanrank, isinclan) VALUES('%s', '%s', 1, 1)", GetPlayerClan(playerid), add_name);
  261.             mysql_query(clanquery);
  262.             new msg_for_all[100];
  263.             format(msg_for_all,sizeof(msg_for_all),"{03F2FF}CLAN: {00FF40}%s {FFFFFF}added {00FF40}%s {FFFFFF}to clan {FFFF00}%s", player_name, add_name, GetPlayerClan(playerid));
  264.             SendClientMessageToAll(-1,msg_for_all);
  265.             return 1;
  266.         }
  267.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}Player is already in a clan!");
  268.     }
  269.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You must be an {00FF40}Officer {FFFFFF}or {00FF40}Clan Leader/Subleader {FFFFFF}to add people to clan!");
  270.     return 1;
  271. }
  272.  
  273. stock RemovePlayerFromClan(playerid, removeid)
  274. {
  275.     if(GetPlayerClanRank(playerid) >= 2)
  276.     {
  277.         if(IsPlayerClanMember(removeid,GetPlayerClan(playerid)))
  278.         {
  279.             CallLocalFunction("OnPlayerRemovePlayerFromClan", "iis", playerid, removeid, GetPlayerClan(playerid));
  280.             new player_name[MAX_PLAYER_NAME];
  281.             GetPlayerName(playerid,player_name,sizeof(player_name));
  282.             new remove_name[MAX_PLAYER_NAME];
  283.             GetPlayerName(removeid,remove_name,sizeof(remove_name));
  284.             new clanquery[300];
  285.             format(clanquery, sizeof(clanquery), "DELETE FROM members WHERE playername = '%s'", remove_name);
  286.             mysql_query(clanquery);
  287.             new msg_for_all[100];
  288.             format(msg_for_all,sizeof(msg_for_all),"{03F2FF}CLAN: {00FF40}%s {FFFFFF}removed {00FF40}%s {FFFFFF}from clan {FFFF00}%s", player_name, remove_name, GetPlayerClan(playerid));
  289.             SendClientMessageToAll(-1,msg_for_all);
  290.             return 1;
  291.         }
  292.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}Player is not in your clan!");
  293.     }
  294.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You must be an {00FF40}Officer {FFFFFF}or {00FF40}Clan Leader/Subleader {FFFFFF}to remove people from clan!");
  295.     return 1;
  296. }
  297.  
  298. stock LeaveClan(playerid)
  299. {
  300.     if(GetPlayerClanRank(playerid) < 4)
  301.     {
  302.         if(IsPlayerAnyClanMember(playerid) == 1)
  303.         {
  304.             CallLocalFunction("OnPlayerLeaveClan", "is", playerid, GetPlayerClan(playerid));
  305.             new leave_name[MAX_PLAYER_NAME];
  306.             GetPlayerName(playerid,leave_name,sizeof(leave_name));
  307.             new msg_for_all[100];
  308.             format(msg_for_all,sizeof(msg_for_all),"{03F2FF}CLAN: {00FF40}%s {FFFFFF}left clan {FFFF00}%s", leave_name, GetPlayerClan(playerid));
  309.             SendClientMessageToAll(-1,msg_for_all);
  310.             new clanquery[300];
  311.             format(clanquery, sizeof(clanquery), "DELETE FROM members WHERE playername = '%s'", leave_name);
  312.             mysql_query(clanquery);
  313.         }
  314.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not in a clan!");
  315.     }
  316.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}Leaders can't leave clan! You can disband your clan or assign a new clan leader!");
  317.     return 1;
  318. }
  319.  
  320. stock DisbandClan(playerid)
  321. {
  322.     if(IsPlayerAnyClanMember(playerid))
  323.     {
  324.         if(GetPlayerClanRank(playerid) >= 4)
  325.         {
  326.             CallLocalFunction("OnPlayerDisbandClan", "is", playerid, GetPlayerClan(playerid));
  327.             new player_name[MAX_PLAYER_NAME];
  328.             GetPlayerName(playerid,player_name,sizeof(player_name));
  329.             new msg_for_all[100];
  330.             format(msg_for_all,sizeof(msg_for_all),"{03F2FF}CLAN: {00FF40}%s {FFFFFF}disbanded clan {00FF40}%s", player_name, GetPlayerClan(playerid));
  331.             SendClientMessageToAll(-1,msg_for_all);
  332.             new clanquery[300];
  333.             format(clanquery, sizeof(clanquery), "DELETE FROM clans WHERE clanname = '%s'", GetPlayerClan(playerid));
  334.             mysql_query(clanquery);
  335.             return 1;
  336.         }
  337.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not clan leader!");
  338.     }
  339.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not in a clan!");
  340.     return 1;
  341. }
  342.  
  343. stock ChangePlayerClanRank(playerid, giveid, new_rank)
  344. {
  345.     if(IsPlayerAnyClanMember(playerid) == 1)
  346.     {
  347.         if(GetPlayerClanRank(playerid) >= 2)
  348.         {
  349.             if(IsPlayerClanMember(giveid,GetPlayerClan(playerid)))
  350.             {
  351.                 CallLocalFunction("OnPlayerChangePlayerRank", "iii", playerid, giveid, new_rank);
  352.                 new player_name[MAX_PLAYER_NAME];
  353.                 GetPlayerName(playerid,player_name,sizeof(player_name));
  354.                 new give_name[MAX_PLAYER_NAME];
  355.                 GetPlayerName(giveid,give_name,sizeof(give_name));
  356.                 new clanquery[300];
  357.                 format(clanquery, sizeof(clanquery), "UPDATE members SET playerclanrank = %d WHERE playername = '%s'", new_rank, give_name);
  358.                 mysql_query(clanquery);
  359.                 new msg_for_all[100];
  360.                 format(msg_for_all,sizeof(msg_for_all),"{03F2FF}CLAN: {00FF40}%s {FFFFFF}changed rank of clanmate {00FF40}%s {FFFFFF}to rank %d (clan: {00FF40}%s{FFFFFF})", player_name, give_name, new_rank, GetPlayerClan(playerid));
  361.                 SendClientMessageToAll(-1,msg_for_all);
  362.             }
  363.             else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}Player is not in your clan!");
  364.         }
  365.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You must be an {00FF40}Officer {FFFFFF}or {00FF40}Clan Leader/Subleader {FFFFFF}to change members' clan rank!");
  366.     }
  367.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not part of a clan!");
  368.     return 1;
  369. }
  370.  
  371. stock ChangeClanMOTD(playerid, new_motd[])
  372. {
  373.     if(IsPlayerAnyClanMember(playerid) == 1)
  374.     {
  375.         if(GetPlayerClanRank(playerid) >= 2)
  376.         {
  377.             CallLocalFunction("OnPlayerChangeClanMOTD", "is", playerid, new_motd);
  378.             new clanquery[300];
  379.             format(clanquery, sizeof(clanquery), "UPDATE clans SET clanmotd = '%s' WHERE clanname = '%s'", new_motd, GetPlayerClan(playerid));
  380.             mysql_query(clanquery);
  381.             new msg_for_play[100];
  382.             format(msg_for_play,sizeof(msg_for_play),"{03F2FF}CLAN: {FFFFFF}You changed Message of The Day to {00FF40}%s", new_motd);
  383.             SendClientMessage(playerid,-1,msg_for_play);
  384.         }
  385.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You must be an {00FF40}Officer {FFFFFF}or {00FF40}Clan Leader/Subleader {FFFFFF}to change clan's MOTD!");
  386.     }
  387.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not in a clan!");
  388.     return 1;
  389. }
  390.  
  391. stock ChangeClanDescription(playerid, new_description[])
  392. {
  393.     if(IsPlayerAnyClanMember(playerid) == 1)
  394.     {
  395.         if(GetPlayerClanRank(playerid) >= 2)
  396.         {
  397.             CallLocalFunction("OnPlayerChangeClanDescription", "is", playerid, new_description);
  398.             new clanquery[300];
  399.             format(clanquery, sizeof(clanquery), "UPDATE clans SET clandes = '%s' WHERE clanname = '%s'", new_description, GetPlayerClan(playerid));
  400.             mysql_query(clanquery);
  401.             new msg_for_play[100];
  402.             format(msg_for_play,sizeof(msg_for_play),"{03F2FF}CLAN: {FFFFFF}You changed clan's description to {00FF40}%s", new_description);
  403.             SendClientMessage(playerid,-1,msg_for_play);
  404.         }
  405.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You must be an {00FF40}Officer {FFFFFF}or {00FF40}Clan Leader/Subleader {FFFFFF}to change clan's description!");
  406.     }
  407.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not in a clan!");
  408.     return 1;
  409. }
  410.  
  411. stock ChangeClanWeapons(playerid, new_weap1 = old_weap, new_weap2 = old_weap, new_weap3 = old_weap)
  412. {
  413.     if(IsPlayerAnyClanMember(playerid) == 1)
  414.     {
  415.         if(GetPlayerClanRank(playerid) >= 2)
  416.         {
  417.             if(new_weap1 == old_weap) new_weap1 = GetClanWeapon(GetPlayerClan(playerid),1);
  418.             if(new_weap2 == old_weap) new_weap2 = GetClanWeapon(GetPlayerClan(playerid),2);
  419.             if(new_weap3 == old_weap) new_weap3 = GetClanWeapon(GetPlayerClan(playerid),3);
  420.             CallLocalFunction("OnPlayerChangeClanWeapons", "iiii", playerid, new_weap1, new_weap2, new_weap3);
  421.             new clanquery[300];
  422.             format(clanquery, sizeof(clanquery), "UPDATE clans SET weap1 = %d, weap2 = %d, weap3 = %d WHERE clanname = '%s'", new_weap1, new_weap2, new_weap3, GetPlayerClan(playerid));
  423.             mysql_query(clanquery);
  424.             new msg_for_play[100];
  425.             format(msg_for_play,sizeof(msg_for_play),"{03F2FF}CLAN: {FFFFFF}You changed clan's weapons to {00FF40}%d, %d and %d", new_weap1, new_weap2, new_weap3);
  426.             SendClientMessage(playerid,-1,msg_for_play);
  427.         }
  428.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You must be an {00FF40}Officer {FFFFFF}or {00FF40}Clan Leader/Subleader {FFFFFF}to change clan's weapons!");
  429.     }
  430.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not in a clan!");
  431.     return 1;
  432. }
  433.  
  434. stock ChangeClanPassword(playerid, new_pass[])
  435. {
  436.     if(IsPlayerAnyClanMember(playerid) == 1)
  437.     {
  438.         if(GetPlayerClanRank(playerid) >= 3)
  439.         {
  440.             CallLocalFunction("OnPlayerChangeClanPassword", "is", playerid, new_pass);
  441.             new clanquery[300];
  442.             format(clanquery, sizeof(clanquery), "UPDATE clans SET clanpass = '%s' WHERE clanname = '%s'", new_pass, GetPlayerClan(playerid));
  443.             mysql_query(clanquery);
  444.             new msg_for_play[100];
  445.             format(msg_for_play,sizeof(msg_for_play),"{03F2FF}CLAN: {FFFFFF}You changed clan's password to {00FF40}%s", new_pass);
  446.             SendClientMessage(playerid,-1,msg_for_play);
  447.         }
  448.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You must be {00FF40}Clan Leader/Subleader {FFFFFF}to change clan's password!");
  449.     }
  450.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not in a clan!");
  451.     return 1;
  452. }
  453.  
  454. stock ChangeClanTag(playerid, new_tag[])
  455. {
  456.     if(IsPlayerAnyClanMember(playerid) == 1)
  457.     {
  458.         if(GetPlayerClanRank(playerid) >= 3)
  459.         {
  460.             CallLocalFunction("OnPlayerChangeClanTag", "is", playerid, new_tag);
  461.             new clanquery[300];
  462.             format(clanquery, sizeof(clanquery), "UPDATE clans SET clantag = '%s' WHERE clanname = '%s'", new_tag, GetPlayerClan(playerid));
  463.             mysql_query(clanquery);
  464.             new msg_for_play[100];
  465.             format(msg_for_play,sizeof(msg_for_play),"{03F2FF}CLAN: {FFFFFF}You changed clan's tag to {00FF40}[%s]", new_tag);
  466.             SendClientMessage(playerid,-1,msg_for_play);
  467.         }
  468.         else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You must be {00FF40}Clan Leader/Subleader {FFFFFF}to change clan's tag!");
  469.     }
  470.     else SendClientMessage(playerid,-1,"{FF0000}ERROR: {FFFFFF}You are not in a clan!");
  471.     return 1;
  472. }
  473.  
  474. stock IsPlayerAnyClanMember(playerid)
  475. {
  476.     new player_name[MAX_PLAYER_NAME];
  477.     GetPlayerName(playerid,player_name,sizeof(player_name));
  478.     new clanquery[100];
  479.     format(clanquery, sizeof(clanquery), "SELECT playername FROM members WHERE playername = '%s'", player_name);
  480.     mysql_query(clanquery);
  481.     mysql_store_result();
  482.     new rows = mysql_num_rows();
  483.     mysql_free_result();
  484.     if(!rows) return 0;
  485.     else return 1;
  486. }
  487.  
  488. stock IsPlayerClanMember(playerid, clan_name[])
  489. {
  490.     new player_name[MAX_PLAYER_NAME];
  491.     GetPlayerName(playerid,player_name,sizeof(player_name));
  492.     new clanquery[100];
  493.     format(clanquery, sizeof(clanquery), "SELECT clanname FROM members WHERE playername = '%s' AND clanname = '%s'", player_name, clan_name);
  494.     mysql_query(clanquery);
  495.     mysql_store_result();
  496.     new rows = mysql_num_rows();
  497.     mysql_free_result();
  498.     if(!rows) return 0;
  499.     else return 1;
  500. }
  501.  
  502. stock GetPlayerClan(playerid)
  503. {
  504.     new player_name[MAX_PLAYER_NAME];
  505.     GetPlayerName(playerid,player_name,sizeof(player_name));
  506.     new clan_name[100];
  507.     new clanquery[100];
  508.     format(clanquery, sizeof(clanquery), "SELECT clanname FROM members WHERE playername = '%s'", player_name);
  509.     mysql_query(clanquery);
  510.     mysql_store_result();
  511.     mysql_fetch_row(clan_name);
  512.     mysql_free_result();
  513.     return clan_name;
  514. }
  515.  
  516. stock GetPlayerClanRank(playerid)
  517. {
  518.     new player_name[MAX_PLAYER_NAME];
  519.     GetPlayerName(playerid,player_name,sizeof(player_name));
  520.     new rank[10];
  521.     new clanquery[100];
  522.     format(clanquery, sizeof(clanquery), "SELECT playerclanrank FROM members WHERE playername = '%s'", player_name);
  523.     mysql_query(clanquery);
  524.     mysql_store_result();
  525.     mysql_fetch_row(rank);
  526.     mysql_free_result();
  527.     return strval(rank);
  528. }
  529.  
  530. stock GetClanMOTD(clan[])
  531. {
  532.     new clanquery[100];
  533.     new clan_motd[100];
  534.     format(clanquery, sizeof(clanquery), "SELECT clanmotd FROM clans WHERE clanname = '%s'", clan);
  535.     mysql_query(clanquery);
  536.     mysql_store_result();
  537.     mysql_fetch_row(clan_motd);
  538.     mysql_free_result();
  539.     return clan_motd;
  540. }
  541.  
  542. stock GetClanDescription(clan[])
  543. {
  544.     new clanquery[100];
  545.     new clan_desc[100];
  546.     format(clanquery, sizeof(clanquery), "SELECT clandes FROM clans WHERE clanname = '%s'", clan);
  547.     mysql_query(clanquery);
  548.     mysql_store_result();
  549.     mysql_fetch_row(clan_desc);
  550.     mysql_free_result();
  551.     return clan_desc;
  552. }
  553.  
  554. stock GetClanMembers(clan[])
  555. {
  556.     new clanquery[200];
  557.     new minfo[300], mreturn[300];
  558.     new string[300];
  559.     format(clanquery, sizeof(clanquery), "SELECT * FROM members WHERE clanname = '%s'", clan);
  560.     mysql_query(clanquery);
  561.     mysql_store_result();
  562.     while(mysql_fetch_row_format(clanquery,"|"))
  563.     {
  564.         mysql_fetch_field_row(string,"playername");
  565.         format(minfo,sizeof(minfo),"%s\n",string);
  566.         strcat(mreturn, minfo);
  567.     }
  568.     mysql_free_result();
  569.     return mreturn;
  570. }
  571.  
  572. stock GetClanWeapon(clan[], weap_slot)
  573. {
  574.     new clanquery[100];
  575.     new give_weap[10];
  576.     switch(weap_slot)
  577.     {
  578.         case 1:
  579.         {
  580.             format(clanquery, sizeof(clanquery), "SELECT weap1 FROM clans WHERE clanname = '%s'", clan);
  581.             mysql_query(clanquery);
  582.             mysql_store_result();
  583.             mysql_fetch_row(give_weap);
  584.             mysql_free_result();
  585.         }
  586.         case 2:
  587.         {
  588.             format(clanquery, sizeof(clanquery), "SELECT weap2 FROM clans WHERE clanname = '%s'", clan);
  589.             mysql_query(clanquery);
  590.             mysql_store_result();
  591.             mysql_fetch_row(give_weap);
  592.             mysql_free_result();
  593.         }
  594.         case 3:
  595.         {
  596.             format(clanquery, sizeof(clanquery), "SELECT weap3 FROM clans WHERE clanname = '%s'", clan);
  597.             mysql_query(clanquery);
  598.             mysql_store_result();
  599.             mysql_fetch_row(give_weap);
  600.             mysql_free_result();
  601.         }
  602.     }
  603.     return strval(give_weap);
  604. }
  605.  
  606. stock GetClanTag(clan[])
  607. {
  608.     new clanquery[100];
  609.     new clan_tag[100];
  610.     format(clanquery, sizeof(clanquery), "SELECT clantag FROM clans WHERE clanname = '%s'", clan);
  611.     mysql_query(clanquery);
  612.     mysql_store_result();
  613.     mysql_fetch_row(clan_tag);
  614.     mysql_free_result();
  615.     return clan_tag;
  616. }
  617.  
  618. stock GetClanPassword(clan[])
  619. {
  620.     new clanquery[100];
  621.     new clan_pass[100];
  622.     format(clanquery, sizeof(clanquery), "SELECT clanpass FROM clans WHERE clanname = '%s'", clan);
  623.     mysql_query(clanquery);
  624.     mysql_store_result();
  625.     mysql_fetch_row(clan_pass);
  626.     mysql_free_result();
  627.     return clan_pass;
  628. }
  629.  
  630. stock UseClanTags(bool:use = true)
  631. {
  632.     use_tags = use;
  633.     return 1;
  634. }
  635.  
  636. stock UseClanPasswords(bool:use = true)
  637. {
  638.     use_pass = use;
  639.     return 1;
  640. }
  641.  
  642. stock SendMessageToClanMembers(playerid, color, msg[])
  643. {
  644.     for(new i = 0; i < MAX_PLAYERS; i++)
  645.     {
  646.         if(IsPlayerAnyClanMember(playerid) == 1)
  647.         {
  648.             if(IsPlayerConnected(i) == 1)
  649.             {
  650.                 if(strcmp(GetPlayerClan(playerid), GetPlayerClan(i), true, 30) == 0)
  651.                 {
  652.                     SendClientMessage(i, color, msg);
  653.                 }
  654.             }
  655.         }
  656.     }
  657.     return 1;
  658. }
  659.  
  660. stock SendMessageToClanMembersEx(clan[], color, msg[])
  661. {
  662.     for(new i = 0; i < MAX_PLAYERS; i++)
  663.     {
  664.         if(IsPlayerAnyClanMember(i) == 1)
  665.         {
  666.             if(IsPlayerConnected(i) == 1)
  667.             {
  668.                 if(strcmp(clan, GetPlayerClan(i), true, 30) == 0)
  669.                 {
  670.                     SendClientMessage(i, color, msg);
  671.                 }
  672.             }
  673.         }
  674.     }
  675.     return 1;
  676. }
  677.  
  678. forward OnPlayerClanCreate(playerid, clan_name[]);
  679. forward OnPlayerAddPlayerToClan(playerid, addid, clan_name[]);
  680. forward OnPlayerRemovePlayerFromClan(playerid, removeid, clan_name[]);
  681. forward OnPlayerLeaveClan(playerid, clan_name[]);
  682. forward OnPlayerDisbandClan(playerid, clan_name[]);
  683. forward OnPlayerChangeClanMOTD(playerid, new_motd[]);
  684. forward OnPlayerChangeClanDescription(playerid, new_description[]);
  685. forward OnPlayerChangeClanWeapons(playerid, new_weap1, new_weap2, new_weap3);
  686. forward OnPlayerChangeClanPassword(playerid, new_pass[]);
  687. forward OnPlayerChangeClanTag(playerid, new_tag[]);
  688. forward OnPlayerChangePlayerRank(playerid, giveid, new_rank);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement