UPDATED SKIN CHANGER SCRIPT

no

  1. // ==UserScript==
  2. // @name UPDATED SKIN CHANGER SCRIPT
  3. // @version 1.0
  4. // @match *://agma.io/**
  5. // @icon https://www.google.com/s2/favicons?sz=64&domain=agma.io
  6. // @grant unsafeWindow
  7. // @run-at document-start
  8. // @description no
  9. // @namespace https://greasyfork.org/users/1238627
  10. // ==/UserScript==
  11. const userkey = '0'; //change to anykey u want like 'a','b','SHIFT',...
  12. let skinid = [1304, 159, 10139, 1120];
  13. let wearableid = [8,0];
  14. let send;
  15. const osend = WebSocket.prototype.send;
  16. (WebSocket.prototype.send = function () {
  17. return (send = (...e) => osend.call(this, ...e)), osend.apply(this, arguments);
  18. });
  19. class Writer {
  20. constructor(n) {
  21. this.buffer = new DataView(new ArrayBuffer(n));
  22. this.position = 0;
  23. this.littleEndian = true;
  24. }
  25. ["setString"](n) {
  26. for (let r = 0; r < n.length; r++) {
  27. this.setUint16(n.charCodeAt(r));
  28. }
  29. return this;
  30. }
  31. ["setInt8"](n) {
  32. this.buffer.setInt8(this.position++, n);
  33. return this;
  34. }
  35. ["setUint8"](n) {
  36. this.buffer.setUint8(this.position++, n);
  37. return this;
  38. }
  39. ["setInt16"](n) {
  40. this.buffer.setInt16((this.position += 2) - 2, n, this.littleEndian);
  41. return this;
  42. }
  43. ["setUint16"](n) {
  44. this.buffer.setUint16((this.position += 2) - 2, n, this.littleEndian);
  45. return this;
  46. }
  47. ["setInt32"](n) {
  48. this.buffer.setInt32((this.position += 4) - 4, n, this.littleEndian);
  49. return this;
  50. }
  51. ["setUint32"](n) {
  52. if ((n % 1 !== 0) && (88 === n.toString().slice(-2))) {
  53. n += 4;
  54. }
  55. this.buffer.setUint32((this.position += 4) - 4, n, this.littleEndian);
  56. return this;
  57. }
  58. ["setFloat32"](n) {
  59. this.buffer.setFloat32((this.position += 4) - 4, n, this.littleEndian);
  60. return this;
  61. }
  62. ["setFloat64"](n) {
  63. this.buffer.setFloat64((this.position += 8) - 8, n, this.littleEndian);
  64. return this;
  65. }
  66. ["send"](n) {
  67. return send(this.buffer);
  68. }
  69. }
  70.  
  71. let delay = 5100;
  72. let currentSkinIndex = 0,currentWearIndex=0, interval,interval1, enabled = false;
  73.  
  74. unsafeWindow.changeskin = (id,wear) => {
  75. if(!$("input, textarea").is(":focus") && "block" != $("#advert").css("display") && "block" != $("#overlays").css("display")){
  76. let es = [""],
  77. rs = "";
  78. let packet = new Writer(4 + 2 * es.length + 2 * rs.length);
  79. packet.setUint8(1).setUint16(id).setUint8(es.length).setUint16(wear);
  80. packet.setString(rs).send();}
  81. };
  82.  
  83. function rotateskin() {
  84. unsafeWindow.changeskin(skinid[currentSkinIndex],wearableid[currentWearIndex]);
  85. currentSkinIndex = (currentSkinIndex + 1) % skinid.length;
  86. }
  87. function rotatewear() {
  88. unsafeWindow.changeskin(skinid[currentSkinIndex],wearableid[currentWearIndex]);
  89. currentWearIndex = (currentWearIndex + 1) % wearableid.length;
  90. }
  91. function toggleRotation() {
  92. enabled = !enabled;
  93. if (enabled) {
  94. rotateskin()
  95. interval = setInterval(rotateskin, delay);
  96. interval1 = setInterval(rotatewear, delay*0);
  97. } else {
  98. clearInterval(interval);
  99. clearInterval(interval1);
  100. }
  101. }
  102.  
  103. unsafeWindow.addEventListener('keydown', (event) => {
  104. if (event.key === userkey&&!$("input, textarea").is(":focus")) {
  105. toggleRotation();
  106. }
  107. });