IQA Maker Plus

给轻文的编辑器添加素材库隐藏 预览添加命令

  1. // ==UserScript==
  2. // @icon http://www.iqing.com/iriya/img/人物.0a09b6d.png
  3. // @name IQA Maker Plus
  4. // @namespace http://www.iqing.com/
  5. // @version 0.88888888888
  6. // @description 给轻文的编辑器添加素材库隐藏 预览添加命令
  7. // @author Ts8zs
  8. // @include *//www.iqing.com/preview.html*
  9. // @include *//www.iqing.com/iriya.html*
  10. // @update https://greasyfork.org/scripts/371697-iqa-maker-plus/code/IQA%20Maker%20Plus.user.js
  11. // ==/UserScript==
  12.  
  13.  
  14. /* <datalist id="iqacmd">
  15. <option>@jump</option>
  16. <option>@in</option>
  17. <option>@sel</option>
  18. <option>@clear</option>
  19. <option>@action</option>
  20. <option>@play</option>
  21. <option>@stop</option>
  22. <option>@add</option>
  23. <option>@break</option>
  24. <option>@random</option>
  25. </datalist> */
  26.  
  27. //预览指令控制
  28. if (/.*preview.*/.test(location.href)) {
  29. document.getElementsByClassName('nav')[0].innerHTML +=
  30. `<div style="position:fixed;z-index:100000;right:0;bottom:0;left:0;">
  31. <input id="command" list="iqacmd" style="width:100%;font-size: 24px;" placeholder="输入指令回车执行"></div>
  32. `;
  33. var cmdhistory = [];
  34. var cmdpointer = 0;
  35. command.onkeyup = function (e) {
  36. switch (e.key) {
  37. case 'Enter':
  38. previewIframe.contentWindow.game.logic.Stage_exec.insert(command.value);
  39. cmdhistory.push(command.value);
  40. cmdpointer = cmdhistory.length - 1;
  41. command.value = '';
  42. break;
  43. case 'ArrowUp':
  44. command.value = cmdhistory[cmdpointer]||'';
  45. cmdpointer--;
  46. if (cmdpointer < 0) cmdpointer = 0;
  47. break;
  48. case 'ArrowDown':
  49. cmdpointer++;
  50. if (cmdpointer >= cmdhistory.length) {
  51. command.value = '';
  52. cmdpointer = cmdhistory.length - 1;
  53. } else {
  54. command.value = cmdhistory[cmdpointer];
  55. }
  56. break;
  57. default:
  58. break;
  59. }
  60. };
  61. }
  62.  
  63.  
  64. document.domain = "iqing.com";
  65.  
  66. function iriya() {
  67. //ctrl+s快捷键
  68. document.onkeydown=function (e){
  69. var currKey=0;
  70. e=e||event||window.event;
  71. currKey = e.keyCode||e.which||e.charCode;
  72. if(currKey == 83 && (e.ctrlKey||e.metaKey)){
  73. e.preventDefault();
  74. document.querySelector('#stage > div.default-top.navbar-top-high.higher-theme > button.el-button.el-button--warning.el-button--small').click();
  75. }else{
  76. }
  77. }
  78.  
  79. //素材列表隐藏
  80. document.getElementsByClassName('editor-top')[0].innerHTML +=
  81. `<button id="fold" class="el-button el-button--small" style="margin-left:10px;" onclick="
  82. if(document.getElementsByClassName('material-list-panel')[0].style.display=='block')
  83. { document.getElementsByClassName('material-list-panel')[0].style.display='none'; fold.innerText='<显示素材列表'}
  84. else { document.getElementsByClassName('material-list-panel')[0].style.display='block';fold.innerText='隐藏素材列表>' }
  85. ">
  86. 隐藏素材列表>
  87. </button>
  88. `
  89. //素材列表过滤
  90. var ele = document.createElement('div')
  91. ele.innerHTML = `<div style="width: 100%;display: flex;">
  92. <input type="text" style="width: 100%;height: 15px;" id="mtfilter" placeholder="素材过滤" onkeyup="
  93. document.querySelectorAll('.item').forEach(function (e) {
  94. if(e.querySelector('p').innerText.indexOf(mtfilter.value)==-1){
  95. e.style.display='none';
  96. }else{
  97. e.style.display = '';
  98. }
  99. })
  100. "></div>
  101. `
  102. document.querySelector('.material-top').after(ele);
  103.  
  104. //修正添加过滤框后的列表高度
  105. document.querySelector('.material-main').style.height = "calc(100% - 60px)";
  106.  
  107. //素材名称快速复制
  108. document.querySelector('.material-list-wrap').onclick = function (e) {
  109. if (e.toElement.tagName == 'P') {
  110. const input = document.createElement('input');
  111. input.setAttribute('readonly', 'readonly');
  112. input.setAttribute('value', e.toElement.innerText);
  113. document.body.appendChild(input);
  114. input.select()
  115. if (document.execCommand('copy')) {
  116. console.log('复制成功:' + e.toElement.innerText);
  117. }
  118. document.body.removeChild(input);
  119. }
  120. }
  121. }
  122. if (/.*iriya.*/.test(location.href))
  123. setTimeout(iriya, 1000);