Advertisement
Guest User

rang_admin_chat.sma

a guest
Sep 16th, 2013
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. #pragma semicolon 1
  5.  
  6. enum Color {
  7. NORMAL = 1, // clients scr_concolor cvar color
  8. GREEN, // Green Color
  9. TEAM_COLOR, // Red, grey, blue
  10. GREY, // grey
  11. RED, // Red
  12. BLUE, // Blue
  13. };
  14.  
  15. new TeamName[][] = {
  16. "",
  17. "TERRORIST",
  18. "CT",
  19. "SPECTATOR"
  20. };
  21.  
  22. // - - - - - - - - - - -
  23.  
  24. #define MAX_GROUPS 8
  25.  
  26. new g_Rang[MAX_GROUPS][] = {
  27. "Fondator",
  28. "Admin",
  29. "Moderator",
  30. "VIP Eco",
  31. "VIP Av",
  32. "VIP Pro",
  33. "DeluxVIP",
  34. "SupremVIP"
  35. };
  36.  
  37. new g_RangFlag[MAX_GROUPS][] = {
  38. "abcdefghijklmnopqrstu",
  39. "cdefghijmnopqrsu",
  40. "cdemnopqrsu",
  41. "bt",
  42. "beit",
  43. "bceijt",
  44. "abcdeijt",
  45. "abcdefijt"
  46. };
  47.  
  48. // - - - - - - - - - - -
  49.  
  50. new g_RangFlag_Value[MAX_GROUPS];
  51.  
  52. new cvar_type;
  53.  
  54. public plugin_init() {
  55. register_plugin("RangAdminChat", "0.6", "Ex3cuTioN");
  56. register_clcmd("say","hook_say");
  57. register_clcmd("say_team","hook_say2");
  58.  
  59. for(new i=0; i<MAX_GROUPS; i++) {
  60. g_RangFlag_Value[i] = read_flags(g_Rang[i]);
  61. }
  62.  
  63. cvar_type = register_cvar("amx_rang_chat","1");
  64. }
  65.  
  66. public hook_say(id) {
  67. if(is_user_bot(id)) {
  68. return PLUGIN_CONTINUE;
  69. }
  70.  
  71. new nick[32];
  72. get_user_name(id,nick,31);
  73.  
  74. static chat[192];
  75. read_args(chat, sizeof(chat) - 1);
  76. remove_quotes(chat);
  77.  
  78. if(equali(chat,"")) {
  79. return PLUGIN_CONTINUE;
  80. }
  81.  
  82. if(is_user_admin(id)) {
  83. for(new i=0; i<MAX_GROUPS; i++) {
  84. if(get_user_flags(id) == read_flags(g_RangFlag[i])) {
  85. switch(get_pcvar_num(cvar_type)) {
  86. case 1:
  87. {
  88. ColorChat(0,TEAM_COLOR,"^x04[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat);
  89. }
  90. case 2:
  91. {
  92. ColorChat(0,TEAM_COLOR,"%s^x01 [^x04%s^x01] : %s",nick,g_Rang[i],chat);
  93. }
  94. case 3:
  95. {
  96. ColorChat(0,GREEN,"[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat);
  97. }
  98. }
  99. return PLUGIN_HANDLED;
  100. }
  101. }
  102. }
  103. else {
  104. if(is_user_alive(id)) {
  105. ColorChat(0,TEAM_COLOR,"%s^x01 : %s",nick,chat);
  106. }
  107. else {
  108. ColorChat(0,TEAM_COLOR,"*Mort*%s^x01 : %s",nick,chat);
  109. }
  110. return PLUGIN_HANDLED;
  111. }
  112. return PLUGIN_CONTINUE;
  113. }
  114.  
  115. public hook_say2(id) {
  116. if(is_user_bot(id)) {
  117. return PLUGIN_CONTINUE;
  118. }
  119.  
  120. new nick[32];
  121. get_user_name(id,nick,31);
  122.  
  123. static chat[192];
  124. read_args(chat, sizeof(chat) - 1);
  125. remove_quotes(chat);
  126.  
  127. if(equali(chat,"")) {
  128. return PLUGIN_CONTINUE;
  129. }
  130.  
  131. if(is_user_admin(id)) {
  132. for(new i=0; i<MAX_GROUPS; i++) {
  133. if(get_user_flags(id) == read_flags(g_RangFlag[i])) {
  134. new players[32],num;
  135. get_players(players,num,"c");
  136.  
  137. for(new x=0; x<num; x++) {
  138. if(get_user_team(id) == get_user_team(players[x])) {
  139. switch(get_user_team(id)) {
  140. case 1:
  141. {
  142. ColorChat(players[x],TEAM_COLOR,"(Terrorist)^x04[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat);
  143. }
  144. case 2:
  145. {
  146. ColorChat(players[x],TEAM_COLOR,"(Counter-Terrorist)^x04[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat);
  147. }
  148. case 3:
  149. {
  150. ColorChat(players[x],TEAM_COLOR,"(Spectator)^x04[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat);
  151. }
  152. }
  153. }
  154. return PLUGIN_HANDLED;
  155. }
  156. }
  157. }
  158. }
  159. else {
  160. new players[32],num;
  161. get_players(players,num,"c");
  162.  
  163. for(new x=0; x<num; x++) {
  164. if(get_user_team(id) == get_user_team(players[x])) {
  165. switch(get_user_team(id)) {
  166. case 1:
  167. {
  168. ColorChat(players[x],TEAM_COLOR,"(Terrorist) %s^x01 : %s",nick,chat);
  169. }
  170. case 2:
  171. {
  172. ColorChat(players[x],TEAM_COLOR,"(Counter-Terrorist) %s^x01 : %s",nick,chat);
  173. }
  174. case 3:
  175. {
  176. ColorChat(players[x],TEAM_COLOR,"(Spectator) %s^x01 : %s",nick,chat);
  177. }
  178. }
  179. }
  180. return PLUGIN_HANDLED;
  181. }
  182. }
  183. return PLUGIN_CONTINUE;
  184. }
  185.  
  186. ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) {
  187. new message[256];
  188.  
  189. switch(type) {
  190. case NORMAL: // clients scr_concolor cvar color
  191. {
  192. message[0] = 0x01;
  193. }
  194. case GREEN: // Green
  195. {
  196. message[0] = 0x04;
  197. }
  198. default: // White, Red, Blue
  199. {
  200. message[0] = 0x03;
  201. }
  202. }
  203.  
  204. vformat(message[1], 251, msg, 4);
  205.  
  206. // Make sure message is not longer than 192 character. Will crash the server.
  207. message[192] = '^0';
  208.  
  209. new team, ColorChange, index, MSG_Type;
  210.  
  211. if(id) {
  212. MSG_Type = MSG_ONE;
  213. index = id;
  214. } else {
  215. index = FindPlayer();
  216. MSG_Type = MSG_ALL;
  217. }
  218.  
  219. team = get_user_team(index);
  220. ColorChange = ColorSelection(index, MSG_Type, type);
  221.  
  222. ShowColorMessage(index, MSG_Type, message);
  223.  
  224. if(ColorChange) {
  225. Team_Info(index, MSG_Type, TeamName[team]);
  226. }
  227. }
  228.  
  229. ShowColorMessage(id, type, message[]) {
  230. static bool:saytext_used;
  231. static get_user_msgid_saytext;
  232. if(!saytext_used)
  233. {
  234. get_user_msgid_saytext = get_user_msgid("SayText");
  235. saytext_used = true;
  236. }
  237. message_begin(type, get_user_msgid_saytext, _, id);
  238. write_byte(id);
  239. write_string(message);
  240. message_end();
  241. }
  242.  
  243. Team_Info(id, type, team[]) {
  244. static bool:teaminfo_used;
  245. static get_user_msgid_teaminfo;
  246.  
  247. if(!teaminfo_used) {
  248. get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
  249. teaminfo_used = true;
  250. }
  251. message_begin(type, get_user_msgid_teaminfo, _, id);
  252. write_byte(id);
  253. write_string(team);
  254. message_end();
  255.  
  256. return 1;
  257. }
  258.  
  259. ColorSelection(index, type, Color:Type) {
  260. switch(Type) {
  261. case RED:
  262. {
  263. return Team_Info(index, type, TeamName[1]);
  264. }
  265. case BLUE:
  266. {
  267. return Team_Info(index, type, TeamName[2]);
  268. }
  269. case GREY:
  270. {
  271. return Team_Info(index, type, TeamName[0]);
  272. }
  273. }
  274.  
  275. return 0;
  276. }
  277.  
  278. FindPlayer() {
  279. new i = -1;
  280.  
  281. while(i <= get_maxplayers()) {
  282. if(is_user_connected(++i))
  283. return i;
  284. }
  285.  
  286. return -1;
  287. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement