Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.01 KB | None | 0 0
  1. import alt from 'alt';
  2.  
  3. let cmdHandlers = {};
  4. let mutedPlayers = new Map();
  5. let rangedChat = false;
  6. let rangeOfChat = 25;
  7. let cancelAllChat = false;
  8.  
  9. function invokeCmd(player, cmd, args) {
  10. const callback = cmdHandlers[cmd];
  11.  
  12. if (callback) {
  13. callback(player, args);
  14. } else {
  15. send(player, `{FF0000} Unknown command /${cmd}`);
  16. }
  17. }
  18.  
  19. alt.onClient('chatmessage', (player, msg) => {
  20. if (msg[0] === '/') {
  21. msg = msg.trim().slice(1);
  22.  
  23. if (msg.length > 0) {
  24. alt.log('[chat:cmd] ' + player.name + ': /' + msg);
  25.  
  26. let args = msg.split(' ');
  27. let cmd = args.shift();
  28.  
  29. invokeCmd(player, cmd, args);
  30. }
  31. } else {
  32. if (mutedPlayers.has(player.name) && mutedPlayers.get(player.name)) {
  33. send(player, '{FF0000} You are currently muted.');
  34. return;
  35. }
  36.  
  37. if (cancelAllChat) {
  38. alt.emit('chatIntercept', player, msg);
  39. return;
  40. }
  41.  
  42. msg = msg.trim();
  43.  
  44. if (msg.length <= 0) return;
  45.  
  46. alt.log('[==> CHAT] ' + player.name + ': ' + msg);
  47.  
  48. if (rangedChat) {
  49. var playersInRange = alt.Player.all.filter(
  50. x => Distance(player.pos, x.pos) <= rangeOfChat
  51. );
  52.  
  53. if (playersInRange.length <= 0) return;
  54.  
  55. var closePlayers = playersInRange.filter(
  56. x => Distance(player.pos, x.pos) <= rangeOfChat / 2
  57. );
  58. var farPlayers = playersInRange.filter(
  59. x => Distance(player.pos, x.pos) >= rangeOfChat / 2
  60. );
  61.  
  62. closePlayers.forEach(target => {
  63. alt.emitClient(
  64. target,
  65. 'chatmessage',
  66. player.name,
  67. msg
  68. .replace(/</g, '&lt;')
  69. .replace(/'/g, '&#39')
  70. .replace(/"/g, '&#34')
  71. );
  72. });
  73.  
  74. farPlayers.forEach(target => {
  75. alt.emitClient(
  76. target,
  77. 'chatmessage',
  78. null,
  79. `{707070} ${player.name}: ${msg
  80. .replace(/</g, '&lt;')
  81. .replace(/'/g, '&#39')
  82. .replace(/"/g, '&#34')}`
  83. );
  84. });
  85. return;
  86. }
  87.  
  88. alt.emitClient(
  89. null,
  90. 'chatmessage',
  91. player.name,
  92. msg
  93. .replace(/</g, '&lt;')
  94. .replace(/'/g, '&#39')
  95. .replace(/"/g, '&#34')
  96. );
  97. }
  98. });
  99.  
  100. // Get the distance between two vectors.
  101. function Distance(vector1, vector2) {
  102. return Math.sqrt(
  103. Math.pow(vector1.x - vector2.x, 2) +
  104. Math.pow(vector1.y - vector2.y, 2) +
  105. Math.pow(vector1.z - vector2.z, 2)
  106. );
  107. }
  108.  
  109. export function send(player, msg) {
  110. alt.emitClient(player, 'chatmessage', null, msg);
  111. }
  112.  
  113. export function broadcast(msg) {
  114. send(null, msg);
  115. }
  116.  
  117. export function registerCmd(cmd, callback) {
  118. if (cmdHandlers[cmd] !== undefined) {
  119. alt.logError(`Failed to register command /${cmd}, already registered`);
  120. } else {
  121. cmdHandlers[cmd] = callback;
  122. }
  123. }
  124.  
  125. export function mute(player) {
  126. mutedPlayers.set(player.name, true);
  127. }
  128.  
  129. export function unmute(player) {
  130. mutedPlayers.set(player.name, false);
  131. }
  132.  
  133. // Formatting for in-chat debug messages.
  134. export function success(message) {
  135. broadcast(`{00FF00}[Success] ${message}`);
  136. }
  137.  
  138. export function info(message) {
  139. broadcast(`{FFAB0F}[Info] ${message}`);
  140. }
  141.  
  142. export function warning(message) {
  143. broadcast(`{FF8989}[Warning] ${message}`);
  144. }
  145.  
  146. export function error(message) {
  147. broadcast(`{FF0000}[Error] ${message}`);
  148. }
  149.  
  150. export function debug(message) {
  151. broadcast(`{FF00FF}[Debug] ${message}`);
  152. }
  153.  
  154. // Used in an onConnect function to add functions to the player entity for a seperate resource.
  155. export function setupPlayer(player) {
  156. player.sendMessage = msg => {
  157. send(player, msg);
  158. };
  159.  
  160. player.mute = state => {
  161. if (state) {
  162. send(player, '{FF0000} You were muted.');
  163. } else {
  164. send(player, '{00FF00} You were unmuted.');
  165. }
  166.  
  167. mutedPlayers.set(player.name, state);
  168. };
  169. }
  170.  
  171. // Arbitrary events to call.
  172. alt.on('sendChatMessage', (player, msg) => {
  173. send(player, msg);
  174. });
  175.  
  176. alt.on('broadcastMessage', msg => {
  177. send(null, msg);
  178. });
  179.  
  180. export default {
  181. send,
  182. broadcast,
  183. registerCmd,
  184. setupPlayer,
  185. success,
  186. info,
  187. warning,
  188. error,
  189. debug
  190. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement