NGA论坛Vtuber讨论区表情包

在NGA发帖框中增加VTB表情(现为清露イクナ和湊あくあ),图片来自于NGA用户绘制。

  1. // ==UserScript==
  2. // @name NGA论坛Vtuber讨论区表情包
  3. // @version 0.1.0
  4. // @description 在NGA发帖框中增加VTB表情(现为清露イクナ和湊あくあ),图片来自于NGA用户绘制。
  5. // @author hoshikaze
  6. // @match *://bbs.ngacn.cc/post.php*
  7. // @match *://ngabbs.com/post.php*
  8. // @match *://nga.178.com/post.php*
  9. // @match *://bbs.nga.cn/post.php*
  10. // @grant none
  11. // @require http://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.js
  12. // @namespace https://gf.qytechs.cn/users/296667
  13. // ==/UserScript==
  14. this.$ = this.jQuery = jQuery.noConflict(true);
  15. (function() {
  16. 'use strict';
  17. const addStyle = (css) => {
  18. const style = document.createElement('style')
  19. style.innerText = css
  20. document.head.appendChild(style)
  21. }
  22.  
  23. addStyle(`
  24. .single_ttip2 .div3 > div {
  25. padding: 4px 4px 0 4px;
  26. }
  27. .single_ttip2 .div3 > div:empty {
  28. display: inline-block;
  29. padding: 0;
  30. }
  31. .vtb-sticker img {
  32. max-height: 130px;
  33. cursor: pointer;
  34. }
  35. `)
  36.  
  37. const stickers = ['./mon_201904/01/-zue37Q5-aki2KlToS1x-1o.png','./mon_201904/01/-zue37Q5-g8wdKoToS1x-1o.png','./mon_201904/01/-zue37Q5-eqmKlToS1x-1o.png','./mon_201904/01/-zue37Q5-6ae0KmToS1x-1o.png','./mon_201904/01/-zue37Q5-bwarKoToS1x-1o.png','./mon_201904/30/-88lruQ5-6s2bKzToS4g-3m.png',
  38. './mon_201904/30/-88lruQ5-l5q4KzToS4g-3m.png',
  39. './mon_201904/30/-88lruQ5-drj3KvToS4g-3m.png',
  40. './mon_201904/30/-88lruQ5-6z8fKwToS4g-3m.png',
  41. './mon_201904/30/-88lruQ5-lakzK11ToS4g-3m.png',
  42. './mon_201904/30/-88lruQ5-8c88KvToS4g-3m.png',
  43. './mon_201904/30/-88lruQ5-c58KvToS4g-3m.png',
  44. './mon_201904/30/-88lruQ5-e8xyK10ToS4g-3m.png',
  45. './mon_201904/30/-88lruQ5-hxdqKvToS4g-3m.png',
  46. './mon_201904/30/-88lruQ5-a34dKuToS4g-3m.png',
  47. './mon_201904/30/-88lruQ5-2pqhKyToS4g-3m.png',
  48. './mon_201904/30/-88lruQ5-gtu0KzToS4g-3m.png',
  49. './mon_201904/30/-88lruQ5-8cwvKxToS4g-3m.png',
  50. './mon_201904/30/-88lruQ5-fry6KvToS4g-3m.png',
  51. './mon_201904/30/-88lruQ5-7dm7KxToS4g-3m.png',
  52. './mon_201904/30/-88lruQ5-fx5xKyToS4g-3m.png',
  53. './mon_201904/30/-88lruQ5-h8pxKwToS4g-3m.png',
  54. './mon_201904/30/-88lruQ5-i0qyKrToS4g-3m.png',
  55. './mon_201904/30/-88lruQ5-75twKrToS4g-3m.png',
  56. './mon_201904/30/-88lruQ5-jcorKrToS4g-3m.png',
  57. './mon_201904/30/-88lruQ5-gdz8KpToS4g-3m.png',
  58. './mon_201904/30/-88lruQ5-8tynKpToS4g-3m.png',
  59. './mon_201904/30/-88lruQ5-1lsdKrToS4g-3m.png',
  60. './mon_201904/30/-88lruQ5-g9e8KsToS4g-3m.png',
  61. './mon_201904/30/-88lruQ5-9ig8KqToS4g-3m.png',
  62. './mon_201904/30/-88lruQ5-31n5KsToS4g-3m.png',
  63. './mon_201904/30/-88lruQ5-ctslKmToS4g-3m.png',
  64. './mon_201904/30/-88lruQ5-5934KwToS4g-3m.png'
  65. ]
  66. const insertBtn = () => {
  67. if (document.querySelector('button#vtb-sticker')) return
  68. const box = document.querySelector('#uiAddTag .div3')
  69. box.insertAdjacentHTML('beforeend', '<button id="vtb-sticker" onclick="window.setvtbSticker(this)">Vtuber</button><div class="vtb-sticker"></div>')
  70. }
  71. function m() {
  72. $("#xoxoxxxoxoxxoo").find("tr").eq(3).find("td.c2").append('&nbsp;<button title="vtb区" id="vtb-sticker" type="button" style="" onclick="window.setvtbSticker(this)">VTB专区</button><div class="vtb-sticker"></div>');
  73. }
  74. m()
  75. $("body").on("click","#vtb-sticker",function(e) {
  76. postfunc.dialog.createWindow('uiAddTag')
  77. postfunc.dialog.w.style.display='none'
  78. postfunc.dialog.w._.addContent(null)
  79. postfunc.dialog.w._.addTitle('VTB区表情')
  80. var tmp = ''
  81. tmp += "<div style='display: block; transform-origin: 0px 0px; width: 1314px; visibility: inherit; transform: translate(0px, 0px) scale(1); left: 19px; top: 449px;'>"
  82. /*调整边框大小和图片大小*/
  83. for (var k in stickers) {
  84. tmp += "<img src='http://img.nga.178.com/attachments/"+stickers[k]+"' max-height='130' onclick='postfunc.dialog.w._.hide();postfunc.addText(\"[img]"+stickers[k]+"[/img]\")' />"
  85. }
  86. tmp += "</div>"
  87. postfunc.dialog.w._.addContent(tmp)
  88. postfunc.dialog.w._.show(e)
  89. })
  90.  
  91. const obConfig = {
  92. subtree: true,
  93. childList: true
  94. }
  95.  
  96. const targetNode = document.body
  97. const observer = new MutationObserver(mutationCallback)
  98. observer.observe(targetNode, obConfig)
  99. })();

QingJ © 2025

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