Advertisement
Mionelal

group system

Feb 10th, 2014
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.74 KB | None | 0 0
  1. // Mione Auchindoun (c) 2014
  2.  
  3. #include <a_samp>
  4. #include <zcmd>
  5. #include <sscanf2>
  6.  
  7. #define COLOR_GREY          0xB9C9BFFF
  8. #define COLOR_GREEN         0x338A45FF
  9. #define COLOR_BLUE          0x4169BFC8
  10.  
  11. new Group[MAX_PLAYERS];
  12. new GroupInvited[MAX_PLAYERS];
  13. new GroupLeader[MAX_PLAYERS];
  14.  
  15. public OnFilterScriptInit();
  16.  
  17. CMD:grouphelp(playerid, params[])
  18. {
  19.     SendClientMessage(playerid, COLOR_GREEN, "Available group commands");
  20.  
  21.     if(Group[playerid] == 0)
  22.     {
  23.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} /groupcreate, /grouprequest ]}");
  24.         return 1;
  25.     }
  26.     if(Group[playerid] != 0)
  27.     {
  28.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} /groupleave, /g(roup)c(hat) ]}");
  29.     }
  30.     if(GroupLeader[playerid] == 1)
  31.     {
  32.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} /groupinvite, /groupuninvite, /groupdisband ]}");
  33.         return 1;
  34.     }
  35.     return 1;
  36. }
  37.  
  38. CMD:groupcreate(playerid, params[])
  39. {
  40.     new randnum = 15 + random(500000), string[128], name[MAX_PLAYER_NAME+1];
  41.     GetPlayerName(playerid, name, sizeof(name));
  42.    
  43.     if(Group[playerid] != 0)
  44.     {
  45.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You are already in a group, /groupleave first. ]}");
  46.         return 1;
  47.     }
  48.     else if(Group[playerid] == 0)
  49.     {
  50.         Group[playerid] = randnum;
  51.         GroupLeader[playerid] = 1;
  52.  
  53.         format(string, sizeof(string), "{[ {1DA357}[!]{B9C9BF} You have created group {FF8000}ID %d{B9C9BF}. You are now the leader of this group. ]}", Group[playerid]);
  54.         SendClientMessage(playerid, COLOR_GREY, string);
  55.        
  56.         new grpnumb = Group[playerid]; // make logs about who created groups
  57.         printf("[!!] [GroupMsg]: [%d] has just created group ID [%d]", playerid, name, grpnumb);
  58.         return 1;
  59.     }
  60.     return 1;
  61. }
  62.  
  63. CMD:groupinvite(playerid, params[])
  64. {
  65.     new targetid, string[128], name[MAX_PLAYER_NAME+1];
  66.     GetPlayerName(playerid, name, sizeof(name));
  67.  
  68.     if(sscanf(params,"u", targetid)) return SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} /groupinvite [id] ]}");
  69.  
  70.     if(Group[playerid] == 0 || GroupLeader[playerid] == 0)
  71.     {
  72.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You are not in a group, or you are not the leader. ]}");
  73.         return 1;
  74.     }
  75.     else if(Group[playerid] > 0 || GroupLeader[playerid] == 1)
  76.     {
  77.         if(Group[targetid] != 0)
  78.         {
  79.             SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} The individual you tried to invite is already in a group.");
  80.             return 1;
  81.         }
  82.         if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} The player you have tried to invite is currently not connected to the server. ]}");
  83.  
  84.         new grpnumb = Group[playerid];
  85.         GroupInvited[targetid] = grpnumb;
  86.  
  87.         format(string, sizeof(string), "{[ {1DA357}[!]{B9C9BF} You have been invited to join group {FF8000}ID %d{B9C9BF} by leader {FF8000}[%d] %s{B9C9BF}. ]}", Group[playerid], playerid, name);
  88.         SendClientMessage(targetid, COLOR_GREY, string);
  89.         SendClientMessage(targetid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} To answer your invitation, please use {FFFF09}/grouprequest [accept/decline]{B9C9BF}. ]}");
  90.  
  91.         format(string, sizeof(string), "{[ {1DA357}[!]{B9C9BF} You have invited {FF8000}[%d] %s ID{B9C9BF} to join your group. ]}", targetid, name);
  92.         SendClientMessage(playerid, COLOR_GREY, string);
  93.     }
  94.     return 1;
  95. }
  96.  
  97. CMD:groupuninvite(playerid, params[])
  98. {
  99.     new targetid, string[128], name[MAX_PLAYER_NAME+1], name2[MAX_PLAYER_NAME+1];
  100.     new grpnumb = Group[playerid];
  101.     GetPlayerName(playerid, name, sizeof(name));
  102.     GetPlayerName(targetid, name2, sizeof(name2));
  103.  
  104.     if(sscanf(params,"u", targetid)) return SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} /groupuninvite [id] ]}");
  105.  
  106.     if(Group[playerid] == 0 || GroupLeader[playerid] == 0)
  107.     {
  108.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You are not in a group, or you are not the leader. ]}");
  109.         return 1;
  110.     }
  111.     else if(Group[playerid] > 0 || GroupLeader[playerid] == 1)
  112.     {
  113.         if(Group[targetid] == grpnumb)
  114.         {
  115.             if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} The player you have tried to invite is currently not connected to the server. ]}");
  116.  
  117.             format(string, sizeof(string), "{[ {1DA357}[!]{B9C9BF} You have been kicked from group {FF8000}ID %d{B9C9BF} by leader {FF8000}[%d] %s{B9C9BF}. ]}", Group[playerid], playerid, name);
  118.             SendClientMessage(targetid, COLOR_GREY, string);
  119.  
  120.             Group[targetid] = 0, GroupLeader[targetid] = 0, GroupInvited[targetid] = 0;
  121.             printf("[!!] [GroupMsg]: [%d] %s has just left group ID [%d] [KICKED]", targetid, name2, grpnumb);
  122.         }
  123.         else SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} The individual you tried to uninvite is not in your group.");
  124.     }
  125.     return 1;
  126. }
  127.  
  128. CMD:grouprequest(playerid, params[])
  129. {
  130.     new string[128], name[MAX_PLAYER_NAME+1];
  131.     GetPlayerName(playerid, name, sizeof(name));
  132.    
  133.     if(isnull(params))
  134.     {
  135.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} /grouprequest [accept | decline] ]}");
  136.         return 1;
  137.     }
  138.     if(!strcmp(params, "accept", true))
  139.     {
  140.         if(GroupInvited[playerid] == 0)
  141.         {
  142.             SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You do not have a pending invitation to join an active group. ]}");
  143.             return 1;
  144.         }
  145.         else if(GroupInvited[playerid] > 0)
  146.         {
  147.             format(string, sizeof(string), "{[ {1DA357}[!]{B9C9BF} You have accepted the pending invitation and you have joined group ID %d ]}", Group[playerid]);
  148.             SendClientMessage(playerid, COLOR_GREY, string);
  149.  
  150.             new grpnumb = GroupInvited[playerid];
  151.             Group[playerid] = grpnumb;
  152.             GroupInvited[playerid] = 0;
  153.            
  154.             printf("[!!] [GroupMsg]: [%d] %s has just joined group ID [%d]", playerid, name, grpnumb);
  155.             return 1;
  156.         }
  157.     }
  158.     if(!strcmp(params, "decline", true))
  159.     {
  160.         if(GroupInvited[playerid] == 0)
  161.         {
  162.             SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You do not have a pending invitation to join an active group. ]}");
  163.             return 1;
  164.         }
  165.         else if(GroupInvited[playerid] > 0)
  166.         {
  167.             SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You have declined the pending group invitation. ]}");
  168.             GroupInvited[playerid] = 0, Group[playerid] = 0; // set both their group and invited to 0
  169.             return 1;
  170.         }
  171.     }
  172.     return 1;
  173. }
  174.  
  175. CMD:groupleave(playerid, params[])
  176. {
  177.     if(Group[playerid] == 0)
  178.     {
  179.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You are currently not in a group. ]}");
  180.         return 1;
  181.     }
  182.     else if(Group[playerid] != 0)
  183.     {
  184.         if(GroupLeader[playerid] == 1)
  185.         {
  186.             SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You are currently the group leader. You need to use /gdisband first. ]}");
  187.             return 1;
  188.         }
  189.         GroupInvited[playerid] = 0, Group[playerid] = 0, GroupLeader[playerid] = 0; // set both their group, invited, and groupleader to 0
  190.         SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You have left your current group. ]}");
  191.         return 1;
  192.     }
  193.     return 1;
  194. }
  195.  
  196. CMD:groupdisband(playerid, params[])
  197. {
  198.     new name[MAX_PLAYER_NAME+1];
  199.     GetPlayerName(playerid, name, sizeof(name));
  200.  
  201.     if(GroupLeader[playerid] == 1)
  202.     {
  203.         new grpnumb = Group[playerid]; // Get group from PLAYERID, aka sender of command
  204.  
  205.         for(new i = 0; i < MAX_PLAYERS; i++)
  206.         {
  207.             if(IsPlayerConnected(i))
  208.             {
  209.                 if(Group[i] == grpnumb)
  210.                 {
  211.                     SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} The leader has disbanded the group. You have been automaticly kicked. ]}");
  212.                     Group[i] = 0, GroupLeader[i] = 0, GroupInvited[playerid] = 0;
  213.  
  214.                     printf("[!!] [GroupMsg]: [%d] %s has just disbanded group ID [%d]", playerid, name, grpnumb);
  215.                     return 1;
  216.                 }
  217.             }
  218.         }
  219.     }
  220.     else SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You're not the leader of an active group. ]}");
  221.     return 1;
  222. }
  223.  
  224. CMD:groupchat(playerid, params[])
  225. {
  226.     new string[128], name[MAX_PLAYER_NAME+1];
  227.     new grpnumb = Group[playerid]; // Get group from PLAYERID, aka sender of command
  228.     GetPlayerName(playerid, name, sizeof(name));
  229.    
  230.     if(Group[playerid] == 0) SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} You are not in a group! ]}");
  231.    
  232.     if(sscanf(params, "s[128]", params)) return SendClientMessage(playerid, COLOR_GREY, "{[ {1DA357}[!]{B9C9BF} /g(roup)c(hat) [message] ]}");
  233.  
  234.     for(new i = 0; i < MAX_PLAYERS; i++)
  235.     {
  236.         if(IsPlayerConnected(i))
  237.         {
  238.             if(Group[i] == grpnumb)
  239.             {
  240.                 format(string, sizeof(string), "{[ [%d] %s: %s ]}", playerid, name, params);
  241.                 SendClientMessage(i, COLOR_BLUE, string);
  242.                 printf("[GroupMsg] GROUP %d CHAT: [%d %s] %s", grpnumb, playerid, name, params);
  243.                 return 1;
  244.             }
  245.         }
  246.     }
  247.     return 1;
  248. }
  249. CMD:gc(playerid, params[]) return cmd_groupchat(playerid, params);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement