剑灵 种彩虹活动

enter:确定邀请; 1:实时领取; 2:补充领取; 3:领取星星; 4:开启/关闭种彩虹

  1. // ==UserScript==
  2. // @name 剑灵 种彩虹活动
  3. // @include https://bns.qq.com/cp/a20210119rainbow/index.htm*
  4. // @version 0.1
  5. // @description enter:确定邀请; 1:实时领取; 2:补充领取; 3:领取星星; 4:开启/关闭种彩虹
  6. // @author Ryousuke Saitou
  7. // @match https://www.tampermonkey.net/scripts.php
  8. // @grant none
  9. // @run-at document-start
  10. // @namespace https://gf.qytechs.cn/users/669061
  11. // ==/UserScript==
  12. var i = 0;
  13. var scheduled = "";
  14. document.onkeydown=function(e){
  15. var event = e || window.event;
  16. var key = event.which || event.keyCode || event.charCode;
  17. if(key ==13){
  18. obsClick('.pop-btns.clearfix>.btn6.ti',10)
  19. }else if(key ==49){
  20. obsClick('.welfares1.clearfix li>.btn1.ti',10)
  21. }else if(key == 50){
  22. obsClick('.welfares1.clearfix li>.add-btn1.ti',10)
  23. }else if(key == 51){
  24. obsClick('.invi-btns.clearfix>.btn3.ti',10)
  25. }else if(key == 52){
  26. if(i%2 == 0){
  27. scheduled = setInterval(scheduledClick,2000)
  28. }else{
  29. clearInterval(scheduled)
  30. }
  31. i++
  32. }
  33. }
  34.  
  35. function scheduledClick(){
  36. obsClick('.rainbow-handle>.btn4.ti',10)
  37. }
  38.  
  39. function fireKeyEvent(el, evtType, keyCode) {
  40. var evtObj;
  41. if (document.createEvent) {
  42. if (window.KeyEvent) {//firefox 浏览器下模拟事件
  43. evtObj = document.createEvent('KeyEvents');
  44. evtObj.initKeyEvent(evtType, true, true, window, true, false, false, false, keyCode, 0);
  45. } else {//chrome 浏览器下模拟事件
  46. evtObj = document.createEvent('UIEvents');
  47. evtObj.initUIEvent(evtType, true, true, window, 1);
  48.  
  49. delete evtObj.keyCode;
  50. if (typeof evtObj.keyCode === "undefined") {//为了模拟keycode
  51. Object.defineProperty(evtObj, "keyCode", { value: keyCode });
  52. } else {
  53. evtObj.key = String.fromCharCode(keyCode);
  54. }
  55.  
  56. if (typeof evtObj.ctrlKey === 'undefined') {//为了模拟ctrl键
  57. Object.defineProperty(evtObj, "ctrlKey", { value: true });
  58. } else {
  59. evtObj.ctrlKey = true;
  60. }
  61. }
  62. el.dispatchEvent(evtObj);
  63.  
  64. } else if (document.createEventObject) {//IE 浏览器下模拟事件
  65. evtObj = document.createEventObject();
  66. evtObj.keyCode = keyCode
  67. el.fireEvent('on' + evtType, evtObj);
  68. }
  69. }
  70.  
  71. function obsClick(selector, time = 0, desc = 'click') {
  72. return new Promise(resolve => {
  73. //obs node
  74. let timer = setInterval(() => {
  75. let target = document.querySelector(selector)
  76. if (!!target) {
  77. clearInterval(timer)
  78. if (time < 0) {
  79. setTimeout(() => {
  80. target.click()
  81. console.log(desc, selector)
  82. resolve(selector)
  83. }, Math.abs(time) * 1000)
  84. } else if (time > 0) {
  85. target.click()
  86. setTimeout(() => {
  87. console.log(desc, selector)
  88. resolve(selector)
  89. }, Math.abs(time) * 1000)
  90. } else {
  91. target.click()
  92. console.log(desc, selector)
  93. resolve(selector)
  94. }
  95. } else {
  96. return
  97. }
  98. }, 100)
  99. })
  100. }
  101.  
  102.  
  103. // 禁止alert框
  104. addJS_Node (null, null, overrideSelectNativeJS_Functions);
  105.  
  106. function overrideSelectNativeJS_Functions () {
  107. window.alert = function alert (message) {
  108. console.log (message);
  109. }
  110. }
  111.  
  112. function addJS_Node (text, s_URL, funcToRun) {
  113. var D = document;
  114. var scriptNode = D.createElement ('script');
  115. scriptNode.type = "text/javascript";
  116. if (text) scriptNode.textContent = text;
  117. if (s_URL) scriptNode.src = s_URL;
  118. if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
  119.  
  120. var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
  121. targ.appendChild (scriptNode);
  122. }
  123.  

QingJ © 2025

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