Skin Easier

search skin, open skin image & hide/show miracle favs

  1. // ==UserScript==
  2. // @name Skin Easier
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.0.3
  5. // @description search skin, open skin image & hide/show miracle favs
  6. // @author Big watermelon
  7. // @match *://agma.io
  8. // @license MIT
  9. // @grant unsafeWindow
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. const regex = /(<|&lt;)td id="skinContainer(\d+)" class="skin-container (?:|faded|selected)"(>|&gt;)(?:|\n *)\1img src="skins\/\2_lo\.png\?u=\d+" alt=""\3(?:|\n *)\1h4\3(.*?)\1\/h4\3(?:|\n *)(?:\1button id="skinUseBtn\2" class="btn btn-primary skinuse-btn" onclick="toggleSkin\(\2\);"\3Use\1\/button\3|<p>\&#128274;<br>\((?:Level \d+|Limited Edition|Gold Members)\)<\/p>|<button id="skinPurchaseBtn\2" class="btn btn-warning" onclick="purchaseSkin\(\d+, \2\);">Buy \([\d,]+\)<\/button>)(?:|\n *)\1\/td\3/g;
  16.  
  17. function init(phpSkins) {
  18. $('#publicSkinsHeader').before(`<div class="skin-subcategory" style="min-height:65px;color: black;"><button onclick="const fav = document.getElementById('fav-skins').style; fav.display = fav.display ? (this.innerText = 'Hide ⭐', '') : (this.innerText = 'Show ⭐', 'none')">Hide ⭐</button><input id="searchSkin" placeholder="Name or Id"><input type="number" placeholder="Open Skin Id" style="width: 150px;" onkeydown="event.key == 'Enter' && open('./skins/' + this.value +'.png', '_blank', '')"></div><table><tbody id="searchSkinsResults"></tbody></table>`);
  19. const searchSkinsResults = document.getElementById('searchSkinsResults');
  20. const pages = [...phpSkins.matchAll(regex)].map(([slot, _, id, __, name]) => [slot.replaceAll('&lt;', '<').replaceAll('&gt;', '>'), id, name]);
  21. document.getElementById('searchSkin').addEventListener("keydown", function(event) {
  22. if (event.key == 'Enter')
  23. searchSkinsResults.innerHTML = '<tr>' + pages
  24. .map(([slot, id, name]) => [slot, 2 * (id == this.value) + 2 * (name == this.value) + id.includes(this.value) + name.includes(this.value)])
  25. .filter(m => m[1])
  26. .sort((a, b) => b[1] - a[1])
  27. .map(m => m[0])
  28. .map((slot, i) => (console.log(i), slot + ((i + 1) % 4 ? '' : '</tr><tr>')))
  29. .join('')
  30. + '</tr>';
  31. });
  32. }
  33.  
  34. var loaded = false;
  35. document.addEventListener("DOMContentLoaded", () => {
  36. if (loaded) return;
  37. loaded = true;
  38.  
  39. const originalPost = unsafeWindow.$.post;
  40. unsafeWindow.$.post = function(url, data, callback, type) {
  41. if (url == "skins.php")
  42. return originalPost.call(this, url, data, function(response) {
  43. callback(response);
  44. init(response);
  45. }, type);
  46. return originalPost.apply(this, arguments);
  47. };
  48. });
  49. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址