HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <cstrike>
  3.  
  4. #define ADMIN_LEVEL ADMIN_KICK
  5.  
  6.  
  7. /***************************************************************************************************
  8. uc_adminmode & uc_playermode:
  9.  
  10. a = The dead can see the general chat messages of alive teammates
  11. b = The dead can see the general chat messages of alive enemies
  12. c = The alive can see the general chat messages of dead teammates
  13. d = The alive can see the general chat messages of dead enemies
  14. e = The dead can see the team messages of alive teammates
  15. f = The alive can see the team messages of dead teamates
  16. g = The dead can see the team messages of dead enemies
  17. h = The alive can see the team messages of alive enemies
  18. i = The dead can see the team messages of alive enemies
  19. j = The alive can see the team messages of dead enemies
  20. ***************************************************************************************************/
  21.  
  22. /*
  23. Author & Creator:
  24.  
  25. [ --<-@ ] Black Rose
  26.  
  27. Profile: http://forums.alliedmods.net/member.php?u=7263
  28.  
  29. Email: rob1n_@hotmail.com
  30.  
  31. Plugin link : http://forums.alliedmods.net/showthread.php?t=64698
  32.  
  33.  
  34. Cred goes out to cs1.6 who requested it.
  35. He also patiently tested it and found bugs.
  36. */
  37.  
  38.  
  39. new g_msgid_SayText;
  40. new g_maxPlayers;
  41.  
  42. new pcvar_adminmode;
  43. new pcvar_playermode;
  44.  
  45.  
  46. new const textchannels[][] = {
  47. "#Cstrike_Chat_T",
  48. "#Cstrike_Chat_CT",
  49. "#Cstrike_Chat_Spec",
  50. "#Cstrike_Chat_All",
  51. "#Cstrike_Chat_AllSpec",
  52. "#Cstrike_Chat_AllDead",
  53. "#Cstrike_Chat_T_Dead",
  54. "#Cstrike_Chat_CT_Dead"
  55. };
  56.  
  57.  
  58. public plugin_init() {
  59. register_plugin("Ultimate Chat", "1.2", "[ --<-@ ]");
  60. pcvar_adminmode = register_cvar("uc_adminmode", "abcdefghij");
  61. pcvar_playermode = register_cvar("uc_playermode", "abe");
  62.  
  63. g_msgid_SayText = get_user_msgid("SayText");
  64. g_maxPlayers = get_maxplayers();
  65.  
  66. register_clcmd("say", "HandleSay");
  67. register_clcmd("say_team", "HandleSay");
  68. }
  69.  
  70. public HandleSay(id) {
  71.  
  72. if ( ! is_user_connected(id) )
  73. return PLUGIN_HANDLED;
  74.  
  75. new message[192], is_alive = is_user_alive(id), is_admin;
  76.  
  77. read_argv(0, message, 5);
  78. new is_team_msg = message[3] == '_';
  79.  
  80. get_pcvar_string(pcvar_playermode, message, 31);
  81. new playermode = read_flags(message);
  82.  
  83. get_pcvar_string(pcvar_adminmode, message, 31);
  84. new adminmode = read_flags(message);
  85.  
  86. new CsTeams:userTeam = cs_get_user_team(id);
  87.  
  88. read_args(message, 191);
  89. remove_quotes(message);
  90. trim(message);
  91.  
  92. for ( new i = 0 ; i < g_maxPlayers ; i++ ) {
  93.  
  94. if ( ! is_user_connected(i) )
  95. continue;
  96.  
  97. is_admin = get_user_flags(i) & ADMIN_LEVEL;
  98.  
  99. if (
  100. ( ( ( adminmode & 1 && is_admin ) || playermode & 1 ) && ! is_team_msg && is_alive && ! is_user_alive(i) && userTeam == cs_get_user_team(i) ) ||
  101. ( ( ( adminmode & 2 && is_admin ) || playermode & 2 ) && ! is_team_msg && is_alive && ! is_user_alive(i) && userTeam != cs_get_user_team(i) ) ||
  102. ( ( ( adminmode & 4 && is_admin ) || playermode & 4 ) && ! is_team_msg && ! is_alive && is_user_alive(i) && userTeam == cs_get_user_team(i) ) ||
  103. ( ( ( adminmode & 8 && is_admin ) || playermode & 8 ) && ! is_team_msg && ! is_alive && is_user_alive(i) && userTeam != cs_get_user_team(i) ) ||
  104. ( ( ( adminmode & 16 && is_admin ) || playermode & 16 ) && is_team_msg && userTeam == cs_get_user_team(i) && is_alive && ! is_user_alive(i) ) ||
  105. ( ( ( adminmode & 32 && is_admin ) || playermode & 32 ) && is_team_msg && userTeam == cs_get_user_team(i) && ! is_alive && is_user_alive(i) ) ||
  106. ( ( ( adminmode & 64 && is_admin ) || playermode & 64 ) && is_team_msg && userTeam != cs_get_user_team(i) && ! is_alive && ! is_user_alive(i) ) ||
  107. ( ( ( adminmode & 128 && is_admin ) || playermode & 128 ) && is_team_msg && userTeam != cs_get_user_team(i) && is_alive && is_user_alive(i) ) ||
  108. ( ( ( adminmode & 256 && is_admin ) || playermode & 256 ) && is_team_msg && userTeam != cs_get_user_team(i) && is_alive && ! is_user_alive(i) ) ||
  109. ( ( ( adminmode & 512 && is_admin ) || playermode & 512 ) && is_team_msg && userTeam != cs_get_user_team(i) && ! is_alive && is_user_alive(i) )
  110. ) {
  111. message_begin(MSG_ONE_UNRELIABLE, g_msgid_SayText, {0,0,0}, i);
  112. write_byte(id);
  113. write_string(textchannels[get_user_text_channel(id, userTeam, is_team_msg)]);
  114. write_string("");
  115. write_string(message);
  116. message_end();
  117. }
  118. }
  119. return PLUGIN_CONTINUE;
  120. }
  121.  
  122. stock get_user_text_channel(id, CsTeams:userTeam, is_team_msg) {
  123. if ( is_team_msg ) {
  124. switch ( userTeam ) {
  125. case CS_TEAM_T : {
  126. if ( is_user_alive(id) )
  127. return 0;
  128. else
  129. return 6;
  130. }
  131. case CS_TEAM_CT : {
  132. if ( is_user_alive(id) )
  133. return 1;
  134. else
  135. return 7;
  136. }
  137. case CS_TEAM_SPECTATOR, CS_TEAM_UNASSIGNED :
  138. return 2;
  139. }
  140. }
  141.  
  142. else {
  143. if ( is_user_alive(id) )
  144. return 3;
  145. else if ( userTeam == CsTeams:3 )
  146. return 4;
  147. }
  148. return 5;
  149. }
  150.