Advertisement
flatman

Simple Gang System

Aug 4th, 2012
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.50 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #include <sscanf>
  4.  
  5. #define MAX_GANGS 32
  6. #define MAX_GANG_NAME 16
  7. #define MAX_GANG_MEMBERS 6
  8.  
  9. #define _red "{FF0000}"
  10. #define _white "{FFFFFF}"
  11. #define _grey "{AAAAAA}"
  12. #define _yellow "{FFFF00}"
  13. #define _green "{00FF00}"
  14. #define _blue "{0000FF}"
  15. #define _black "{000000}"
  16. #define _lowblue "{00C0FF}"
  17.  
  18. enum pInfo {
  19. PlayerGang,
  20. GangInvite };
  21. enum gInfo {
  22. Created,
  23. Members,
  24. Color,
  25. Member[MAX_GANG_MEMBERS],
  26. Name[MAX_GANG_NAME] };
  27.  
  28. new GangInfo[MAX_GANGS][gInfo],
  29. PlayerInfo[MAX_PLAYERS][pInfo];
  30.  
  31.  
  32. public OnPlayerConnect(playerid) {
  33. SetPlayerColor(playerid, ((random(0xFFFFFF) << 8) | 0xFF));
  34. return 1;
  35. }
  36. public OnPlayerText(playerid, text[]) {
  37. new string[128];
  38. if(text[0] == '!' && PlayerInfo[playerid][PlayerGang] > 0) {
  39. format(string, sizeof(string), ""_blue"Gang - "_yellow"%s: "_white"%s", PlayerName(playerid), text[1]);
  40. for(new i; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[playerid][PlayerGang] == PlayerInfo[i][PlayerGang]) SendClientMessage(i, -1, string);
  41. return 0;
  42. }
  43. return 1;
  44. }
  45. CMD:gangcreate(playerid, params[]) {
  46. new string[128],
  47. name[32];
  48. if(PlayerInfo[playerid][PlayerGang] > 0) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Már egy banda tagja vagy!");
  49. if(sscanf(params, "s", name)) return SendClientMessage(playerid, -1, ""_red"USAGE: "_white"/gangcreate [name]");
  50. for(new i = 1; i < MAX_GANGS; i++) {
  51. if(GangInfo[i][Created] == 0) {
  52. format(GangInfo[i][Name], MAX_GANG_NAME, "%s", name);
  53. GangInfo[i][Created] = 1;
  54. GangInfo[i][Members] = 1;
  55. GangInfo[i][Color] = GetPlayerColor(playerid);
  56. GangInfo[i][Member][0] = playerid;
  57. format(string, sizeof(string),""_green"Elkészítetted a Bandád. "_yellow"%s [id: %d]", GangInfo[i][Name], i);
  58. SendClientMessage(playerid, -1, string);
  59. PlayerInfo[playerid][PlayerGang] = i;
  60. return 1;
  61. }
  62. }
  63. return 1;
  64. }
  65. CMD:gangjoin(playerid, params[]) {
  66. new string[128],
  67. gangid = PlayerInfo[playerid][GangInvite];
  68. if(gangid == 0) return SendClientMessage(playerid, -1, ""_red"Nem vagy meghívva bandába!");
  69. if(GangInfo[gangid][Members] < MAX_GANG_MEMBERS) {
  70. new i = GangInfo[gangid][Members];
  71. GangInfo[gangid][Member][i] = playerid;
  72. for(new j = 0; j < GangInfo[gangid][Members]; j++) {
  73. format(string, sizeof(string),""_white"%s "_yellow"belépett a bandádba.", PlayerName(playerid));
  74. SendClientMessage(GangInfo[gangid][Member][j], -1, string);
  75. }
  76. GangInfo[gangid][Members]++;
  77. PlayerInfo[playerid][PlayerGang] = gangid;
  78. SetPlayerColor(playerid, GangInfo[gangid][Color]);
  79. format(string, sizeof(string),""_yellow"Beléptél a "_white"%s "_yellow"bandába.", GangInfo[gangid][Name]);
  80. SendClientMessage(playerid, -1, string);
  81. return 1;
  82. }
  83. SendClientMessage(playerid, -1, ""_red"Ez a banda televan.");
  84. return 1;
  85. }
  86. CMD:ganginvite(playerid, params[]) {
  87. new player1,
  88. string[128];
  89. if(PlayerInfo[playerid][PlayerGang] == 0) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Nem vagy banda tagja!");
  90. if(sscanf(params, "d", player1)) return SendClientMessage(playerid, -1, ""_red"USAGE: "_white"/ganginvite [playerid]");
  91. if(!IsPlayerConnected(player1)) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Rossz ID!");
  92. if(PlayerInfo[player1][PlayerGang] > 0) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Ez a játékos már egy banda tagja!");
  93. format(string, sizeof(string),""_yellow"Küldtél egy meghívót "_white"%s "_yellow"játékosnak.", PlayerName(player1));
  94. SendClientMessage(playerid, -1, string);
  95. format(string, sizeof(string),""_white"%s "_yellow"küldött neked egy meghívót a(z) "_green"'%s' "_yellow"bandába.", PlayerName(playerid), GangInfo[PlayerInfo[playerid][PlayerGang]][Name]);
  96. SendClientMessage(player1, -1, string);
  97. PlayerInfo[player1][GangInvite] = PlayerInfo[playerid][PlayerGang];
  98. return 1;
  99. }
  100. CMD:gangkick(playerid, params[]) {
  101. new string[128],
  102. player1,
  103. gangid = PlayerInfo[playerid][PlayerGang];
  104. if(gangid == 0) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Nem vagy banda tagja.");
  105. if(sscanf(params, "d", player1)) return SendClientMessage(playerid, -1, ""_red"USAGE: "_white"/gangkick [playerid]");
  106. if(!IsPlayerConnected(player1)) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Rossz ID");
  107. if(PlayerInfo[player1][PlayerGang] != PlayerInfo[playerid][PlayerGang]) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Ez a játékos nincs a bandádban!");
  108. for(new i = 0; i < GangInfo[gangid][Members]; i++) {
  109. if(GangInfo[gangid][Member][i] == player1) {
  110. GangInfo[gangid][Members]--;
  111. for(new j = i; j < GangInfo[gangid][Members]; j++) GangInfo[gangid][Member][j] = GangInfo[gangid][Member][j+1];
  112. if(GangInfo[gangid][Members] < 1) {
  113. GangInfo[gangid][Created] = 0;
  114. GangInfo[gangid][Members] = 0;
  115. }
  116. for(new j = 0; j < GangInfo[gangid][Members]; j++) {
  117. format(string, sizeof(string),""_white"%s "_red"ki lett rúgva a bandából "_white"%s "_red"által.", PlayerName(player1), PlayerName(playerid));
  118. SendClientMessage(GangInfo[gangid][Member][j], -1, string);
  119. }
  120. format(string, sizeof(string),""_red"Ki lettél rúgva a(z) "_white"'%s' "_red"bandából "_white"%s "_red"által.", GangInfo[gangid][Name], PlayerName(playerid));
  121. SendClientMessage(player1, -1, string);
  122. PlayerInfo[player1][PlayerGang] = 0;
  123. return 1;
  124. }
  125. }
  126. return 1;
  127. }
  128. CMD:gangleave(playerid, params[]) {
  129. new string[128],
  130. gangid = PlayerInfo[playerid][PlayerGang];
  131. if(gangid == 0) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Nem vagy banda tagja.");
  132. for(new i = 0; i < GangInfo[gangid][Members]; i++) {
  133. if(GangInfo[gangid][Member][i] == playerid) {
  134. GangInfo[gangid][Members]--;
  135. for(new j = i; j < GangInfo[gangid][Members]; j++) GangInfo[gangid][Member][j] = GangInfo[gangid][Member][j+1];
  136. if(GangInfo[gangid][Members] < 1) {
  137. GangInfo[gangid][Created] = 0;
  138. GangInfo[gangid][Members] = 0;
  139. }
  140. for(new j = 0; j < GangInfo[gangid][Members]; j++) {
  141. format(string, sizeof(string),""_white"%s "_red"kilépett a bandádból.", PlayerName(playerid));
  142. SendClientMessage(GangInfo[gangid][Member][j], -1, string);
  143. }
  144. format(string, sizeof(string),""_white"Kiléptél a(z) "_white"'%s' "_red"bandából", GangInfo[gangid][Name]);
  145. SendClientMessage(playerid, -1, string);
  146. PlayerInfo[playerid][PlayerGang] = 0;
  147. return 1;
  148. }
  149. }
  150. return 1;
  151. }
  152. CMD:ganghelp(playerid, params[]) return ShowDialog(playerid, 3090);
  153. CMD:ganginfo(playerid, params[]) {
  154. new gangid,
  155. string[512];
  156. if(sscanf(params, "d", gangid)) return SendClientMessage(playerid, -1, ""_red"USAGE: "_white"/ganginfo [gangid]");
  157. if(GangInfo[gangid][Created] == 0) return SendClientMessage(playerid, -1, ""_red"ERROR: "_white"Ilyen banda nem létezik!");
  158. format(string, sizeof(string),""_white"'%s' "_yellow"Gang Members "_white"(id: %d)\n", GangInfo[gangid][Name], gangid);
  159. for(new i = 0; i < GangInfo[gangid][Members]; i++) format(string, sizeof(string),"%s\n"_white"%s (%d)", string, PlayerName(GangInfo[gangid][Member][i]), GangInfo[gangid][Member][i]);
  160. ShowDialog(playerid, 3100, string);
  161. return 1;
  162. }
  163. CMD:gangs(playerid, params[]) {
  164. new count = 0,
  165. string[512];
  166. for(new i = 0; i < MAX_GANGS; i++) {
  167. if(GangInfo[i][Created] == 1) {
  168. format(string, sizeof(string), "%s\n"_white"%s(%d) "_yellow"- "_white"%d "_yellow"members", string, GangInfo[i][Name], i, GangInfo[i][Members]);
  169. count++;
  170. }
  171. }
  172. if(count == 0) format(string, sizeof(string), ""_red"Nincs aktuális banda!");
  173. ShowDialog(playerid, 3110, string);
  174. return 1;
  175. }
  176. stock PlayerName(playerid) {
  177. new name[MAX_PLAYER_NAME];
  178. GetPlayerName(playerid, name, sizeof(name));
  179. return name;
  180. }
  181. stock ShowDialog(playerid, dialogid, string[] = "None.") {
  182. if(dialogid == 3090) return ShowPlayerDialog(playerid, 3090, DIALOG_STYLE_MSGBOX, "Gang System - HELP", ""_yellow"Create Gang - "_white"/gangcreate [name]\n"_yellow"Invite a player - "_white"/ganginvite [playerid]\n"_yellow"Join to gang - "_white"/gangjoin\n"_yellow"Leave from gang - "_white"/gangleave\n"_yellow"Kick from gang - "_white"/gangkick [playerid]\n"_yellow"Gang Chat - "_white"!your message [Example: !hello]", "Close", "");
  183. else if(dialogid == 3100) return ShowPlayerDialog(playerid, 3100, DIALOG_STYLE_MSGBOX, "Gang System - Gang Info", string, "Close", "");
  184. else if(dialogid == 3110) return ShowPlayerDialog(playerid, 3110, DIALOG_STYLE_MSGBOX, "Gang System - Gangs", string, "Close", "");
  185. else return 1;
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement