Advertisement
Guest User

AdvancedChat.inc - Updated

a guest
Feb 23rd, 2016
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.07 KB | None | 0 0
  1. #include <a_samp>
  2. //==============================================================================
  3.  
  4. #define RandColor // Comment This line if you want to disable the random colors.
  5. #define FloodProtection 1 //Set it to 0 if you want to disable the anti Flood.
  6. #define MAX_CHAT_LENGHT 128 //Max chat lenght that will appear (More words won't be seen)
  7.  
  8. enum Chat_Enum
  9. {
  10. Enabled,
  11. AllowID
  12. }
  13.  
  14. new AntiFlood;
  15. new ChatInfo[Chat_Enum];
  16. new PlayerMuted[MAX_PLAYERS];
  17. new MessagesCount[MAX_PLAYERS];
  18.  
  19. #if defined RandColor
  20.  
  21. new RandCol[] =
  22. {
  23. 0xFF0000FF, 0x00FF00FF, 0x0000FFFF, 0xFFFFFFFF, 0x000000FF,
  24. 0xFF00FFFF, 0xF0F8FFFF, 0xFAEBD7FF, 0x00FFFFFF, 0x7FFFD4FF,
  25. 0xF0FFFFFF, 0xA52A2AFF, 0x008B8BFF, 0xE9967AFF, 0x00BFFFFF,
  26. 0xFFD700FF, 0x808080FF, 0x008000FF, 0x800000FF, 0x000080FF
  27. };
  28.  
  29. #endif
  30.  
  31. forward OnChatInit();
  32. forward OnChatEnabled();
  33. forward OnChatDisabled();
  34. forward OnPlayerMuted(playerid);
  35. forward OnPlayerUnMuted(playerid);
  36.  
  37. #if defined RandColor
  38.  
  39. forward RandColour(playerid);
  40.  
  41. #endif
  42.  
  43. public OnFilterScriptInit()
  44. {
  45. print("\n===============================================");
  46. print("AdvancedChat.inc - By illuminati2 20/2/2016");
  47. print("===============================================\n");
  48. CallLocalFunction("OnChatInit", "");
  49. return 1;
  50. }
  51.  
  52. #if defined _ALS_OnFilterScriptInit
  53. #undef OnFilterScriptInit
  54. #else
  55. #define _ALS_OnFilterScriptInit
  56. #endif
  57. #define OnFilterScriptInit PS_OnFilterScriptInit
  58.  
  59. forward PS_OnFilterScriptInit();
  60.  
  61. #if defined RandColor
  62.  
  63. public OnPlayerConnect(playerid)
  64. {
  65. SetTimerEx("RandColour", 3000, true, "i", playerid);
  66. return 1;
  67. }
  68.  
  69. #if defined _ALS_OnPlayerConnect
  70. #undef OnPlayerConnect
  71. #else
  72. #define _ALS_OnPlayerConnect
  73. #endif
  74. #define OnPlayerConnect PS_OnPlayerConnect
  75.  
  76. forward PS_OnPlayerConnect(playerid);
  77.  
  78. #endif
  79.  
  80. public OnPlayerText(playerid, text[])
  81. {
  82. if(ChatInfo[Enabled] == 0)
  83. {
  84. SendClientMessage(playerid, -1, "{FF0000}ERROR: Chat is disabled!");
  85. return 0;
  86. }
  87. if(PlayerMuted[playerid] == 1)
  88. {
  89. SendClientMessage(playerid, -1, "{FF0000}ERROR: You're muted!");
  90. return 0;
  91. }
  92.  
  93. new chatstr[MAX_CHAT_LENGHT], name[MAX_PLAYER_NAME];
  94. GetPlayerName(playerid, name, sizeof(name));
  95.  
  96. if(ChatInfo[AllowID] == 1) {
  97. format(chatstr, sizeof(chatstr), "{%06x}%s [%d]:{FFFFFF} %s", GetPlayerColor(playerid) >>> 8, name, playerid, text);
  98. }
  99. else {
  100. format(chatstr, sizeof(chatstr), "{%06x}%s:{FFFFFF} %s", GetPlayerColor(playerid) >>> 8, name, text);
  101. }
  102.  
  103. SendClientMessageToAll(-1, chatstr);
  104.  
  105. #if FloodProtection == 1
  106. MessagesCount[playerid] += 1;
  107. AntiFlood = SetTimerEx("ReduceCount", 1500, true, "i", playerid);
  108. if(MessagesCount[playerid] >= 4) SendClientMessage(playerid, -1, "{FF0000}If you continue flooding you'll be automatically kicked.");
  109. else if(MessagesCount[playerid] == 5)
  110. {
  111. Kick(playerid);
  112. }
  113. #endif
  114. return 0;
  115. }
  116.  
  117. #if defined _ALS_OnPlayerText
  118. #undef OnPlayerText
  119. #else
  120. #define _ALS_OnPlayerText
  121. #endif
  122. #define OnPlayerText PS_OnPlayerText
  123.  
  124. forward PS_OnPlayerText(playerid, text[]);
  125.  
  126. forward ReduceCount(playerid);
  127. public ReduceCount(playerid)
  128. {
  129. MessagesCount[playerid] -= 1;
  130. if(MessagesCount[playerid] == 0) KillTimer(AntiFlood);
  131. return 1;
  132. }
  133.  
  134. forward UnMute(playerid);
  135. public UnMute(playerid)
  136. {
  137. PlayerMuted[playerid] = 0;
  138. CallLocalFunction("OnPlayerUnMuted", "i", playerid);
  139. return 1;
  140. }
  141.  
  142. #if defined RandColor
  143.  
  144. public RandColour(playerid)
  145. {
  146. new rand = random(sizeof(RandCol));
  147. SetPlayerColor(playerid, RandCol[rand]);
  148. return 1;
  149. }
  150.  
  151. #endif
  152.  
  153. //==============================================================================
  154.  
  155. stock ToggleChat(bool: Toggle)
  156. {
  157. if(Toggle == false) ChatInfo[Enabled] = 0, CallLocalFunction("OnChatDisabled", "");;
  158. else if(Toggle == true) ChatInfo[Enabled] = 1, CallLocalFunction("OnChatEnabled", "");;
  159. return 1;
  160. }
  161.  
  162. stock ClearChat()
  163. {
  164. for(new i; i <= 30; i++) SendClientMessageToAll(-1, " ");
  165. return 1;
  166. }
  167.  
  168. stock ToggleChatID(bool: Toggle)
  169. {
  170. if(Toggle == false) ChatInfo[AllowID] = 0;
  171. else if(Toggle == true) ChatInfo[AllowID] = 1;
  172. return 1;
  173. }
  174.  
  175. stock TogglePlayerChat(playerid, bool: Toggle)
  176. {
  177. if(Toggle == false) PlayerMuted[playerid] = 1, CallLocalFunction("OnPlayerMuted", "i", playerid);
  178. else if(Toggle == true) PlayerMuted[playerid] = 0, CallLocalFunction("OnPlayerUnMuted", "i", playerid);
  179. return 1;
  180. }
  181.  
  182. stock TempPlayerMute(playerid, minutes)
  183. {
  184. PlayerMuted[playerid] = 1;
  185. CallLocalFunction("OnPlayerMuted", "i", playerid);
  186. SetTimerEx("UnMute", 1000000 * minutes, false);
  187. return 1;
  188. }
  189.  
  190. stock SendPlayerMessageInPointToAll(playerid, msg[], Float:distance, Float:x, Float:y, Float:z)
  191. {
  192. if(IsPlayerInRangeOfPoint(playerid, distance, x, y, z))
  193. {
  194. if(IsPlayerConnected(i)
  195. {
  196. new chatstr[MAX_CHAT_LENGHT], name[MAX_PLAYER_NAME];
  197. GetPlayerName(playerid, name, sizeof(name));
  198. format(chatstr, sizeof(chatstr), "{%06x}%s [%d]:{FFFFFF} %s", GetPlayerColor(playerid) >>> 8, name, playerid, msg);
  199. SendClientMessageToAll(-1, msg);
  200. }
  201. }
  202. return 1;
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement