Zombs.io chat filter + blocking names

zombsio chat filter

当前为 2020-07-08 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Zombs.io chat filter + blocking names
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1
  5. // @description zombsio chat filter
  6. // @author Apex
  7. // @match *://zombs.io/
  8. // @grant none
  9. // ==/UserScript==
  10. const getId = ID => {
  11. return document.getElementById(ID);
  12. }
  13.  
  14. const getElement = ELEMENT => {
  15. return document.getElementsByClassName(ELEMENT);
  16. }
  17. if (localStorage.getItem("blockedNames") == null) {
  18. localStorage.setItem("blockedNames", "[]");
  19. }
  20.  
  21. getElement("hud-settings-grid")[0].innerHTML += `<center><h3>Chat filter</h3>\n<button class="btn btn-green" style="width: 99%;" id="chatFilter" filter="all">All</button>\n<input type="text" class="btn" id="nameToBlock" style="width: 99%; margin-top: 1%;" maxlength=35 placeholder="Name of person you want to block/unblock..."></input>\n<button class="btn btn-red" id="blockName" style="width: 45%; margin-top: 1%;">Block</button><button class="btn btn-green" id="unblockName" style="margin-top: 1%; margin-left: 1%; width: 45%;">Unblock</button>\n<button class="btn btn-green" id="showBlocked" style="width:99%; margin-top: 1%;">Show Blocked Names</button></center>\n<div style="margin-top: 1%;" id="blockNamesList"></div>`;
  22. let filterButton = getId("chatFilter");
  23. filterButton.onclick = () => {
  24. let f = filterButton.getAttribute("filter");
  25. let newF = "all";
  26. if (f == "all") {
  27. newF = "party";
  28. } else if (f == "party") {
  29. newF = "none";
  30. } else if (f == "none") {
  31. newF = "all";
  32. }
  33. filterButton.setAttribute("filter", newF);
  34. switch (newF) {
  35. case "all":
  36. filterButton.setAttribute("class", "btn btn-green");
  37. filterButton.textContent = "All";
  38. break;
  39. case "party":
  40. filterButton.setAttribute("class", "btn btn-gold");
  41. filterButton.textContent = "Party";
  42. break;
  43. case "none":
  44. filterButton.setAttribute("class", "btn btn-red");
  45. filterButton.textContent = "None";
  46. break;
  47. }
  48. }
  49.  
  50. let blockButton = getId("blockName");
  51. blockButton.onclick = () => {
  52. let blocked = JSON.parse(localStorage.getItem("blockedNames"));
  53. let nameToBlock = getId("nameToBlock").value;
  54. if (blocked.includes(nameToBlock)) return;
  55. blocked.push(nameToBlock);
  56. localStorage.setItem("blockedNames", JSON.stringify(blocked));
  57. }
  58.  
  59. let unblockButton = getId("unblockName");
  60. unblockButton.onclick = () => {
  61. let blocked = JSON.parse(localStorage.getItem("blockedNames"));
  62. let nameToUnblock = getId("nameToBlock").value;
  63. if (blocked.indexOf(nameToUnblock) == -1) return;
  64. blocked.splice(blocked.indexOf(nameToUnblock), 1);
  65. localStorage.setItem("blockedNames", JSON.stringify(blocked));
  66. }
  67.  
  68. let showBlockedButton = getId("showBlocked");
  69. showBlockedButton.onclick = () => {
  70. let blocked = JSON.parse(localStorage.getItem("blockedNames"));
  71. let str = "<h3>";
  72. str += blocked.join(", ");
  73. str += "</h3>";
  74. getId("blockNamesList").innerHTML = str;
  75. }
  76.  
  77. Game.currentGame.network.emitter.removeListener("PACKET_RPC", Game.currentGame.network.emitter._events.PACKET_RPC[1]);
  78. let onMessageReceived = (msg => {
  79. let filter = filterButton.getAttribute("filter");
  80. switch (filter) {
  81. case "party":
  82. {
  83. let party = Game.currentGame.ui.playerPartyMembers;
  84. let uids = [];
  85. for (let member of party) {
  86. uids.push(member.playerUid);
  87. }
  88. if (!uids.includes(msg.uid)) return;
  89. }
  90. break;
  91. case "none":
  92. return;
  93. break;
  94. }
  95. let blockedNames = JSON.parse(localStorage.getItem("blockedNames"));
  96. let a = Game.currentGame.ui.getComponent("Chat"),
  97. b = msg.displayName.replace(/<(?:.|\n)*?>/gm, ''),
  98. c = msg.message.replace(/<(?:.|\n)*?>/gm, ''),
  99. d = a.ui.createElement(`<div class="hud-chat-message"><strong>${b}</strong>: ${c}</div>`);
  100. if (blockedNames.includes(b)) return;
  101. a.messagesElem.appendChild(d);
  102. a.messagesElem.scrollTop = a.messagesElem.scrollHeight;
  103. })
  104. Game.currentGame.network.addRpcHandler("ReceiveChatMessage", onMessageReceived);