咕咕镇沙滩自动刷新

气人页游 咕咕镇 沙滩自动刷新。

  1. // ==UserScript==
  2. // @name GuguTown Auto Refresh Beach
  3. // @name:zh-CN 咕咕镇沙滩自动刷新
  4. // @name:zh-TW 咕咕鎮沙灘自動刷新
  5. // @name:ja 咕咕镇砂浜自動更新
  6. // @namespace https://github.com/GuguTown/AutoRefreshBeach
  7. // @homepage https://github.com/GuguTown/AutoRefreshBeach
  8. // @version 1.0.0
  9. // @description WebGame GuguTown Automatic Beach Refresh.
  10. // @description:zh-CN 气人页游 咕咕镇 沙滩自动刷新。
  11. // @description:zh-TW 氣人頁遊 咕咕鎮 沙灘自動刷新。
  12. // @description:ja オンラインゲーム 咕咕镇 ビーチの自動更新
  13. // @icon https://sticker.inari.site/favicon.ico
  14. // @author ikarosf
  15. // @copyright 2020.09-2023.04 ikarosf
  16. // @match https://*.guguzhen.com/fyg_beach.php
  17. // @match https://*.momozhen.com/fyg_beach.php
  18. // @run-at document-end
  19. // @license MIT License
  20. // ==/UserScript==
  21. /* eslint-env jquery */
  22.  
  23. function guarb(){
  24. let user = $("button[class*='btn btn-lg'][onclick*='fyg_index.php']")[0].innerText;
  25.  
  26. if (user === undefined || user === null || user === NaN) {
  27. console.log('当前登陆态失效或游戏处于维护状态,已停止加载沙滩自动刷新插件'); return;
  28. };
  29.  
  30. let refreshBoxNum,keyname = `guguzhen_beach_refresh_plugin_${user}`;
  31.  
  32. if (localStorage[keyname] === undefined) { localStorage[keyname] = 0 };
  33.  
  34. function FLASHbeach() {
  35. 'use strict';
  36. let xingshaflashremainder = 0,flashbyxingshaNUM = 0;
  37. if(FM_getValue('flashbyxingshaNUM')!=null){
  38. flashbyxingshaNUM = FM_getValue('flashbyxingshaNUM');
  39. }
  40.  
  41. let mydiv = $(".row>.row>.col-md-12>.panel>.panel-heading>.pull-right")[0],text = mydiv.textContent
  42. if(!text.startsWith("距离下次随机装备")){
  43. alert("咕咕镇沙滩自动刷新脚本未获取到时间!");
  44. return;
  45. }
  46. let patt1 = /\d+/,minute = text.match(patt1)
  47. minute = parseInt(minute[0]) + 1
  48. setTimeout(async function(){
  49. await getstpage()
  50. await getstdata()
  51. for(let i = 0;i < flashbyxingshaNUM ; i++){
  52. await sxstbyxs()
  53. await getstpage()
  54. await getstdata()
  55. }
  56. location.reload();
  57. }, minute*60*1000);
  58. mydiv.textContent = text + " 将自动刷新"
  59.  
  60. };
  61.  
  62. function FM_setValue(name, value){
  63. let oldvalue = JSON.parse(localStorage.getItem(user));
  64. if(oldvalue === undefined){
  65. oldvalue = {};}
  66. oldvalue[name] = value;
  67. localStorage.setItem(user,JSON.stringify(oldvalue));
  68. };
  69.  
  70. function FM_getValue(name, defaultValue){
  71. let thisvalue = JSON.parse(localStorage.getItem(user));
  72. if(thisvalue != undefined&&name in thisvalue){
  73. return thisvalue[name]
  74. }
  75. if(defaultValue != null){
  76. return defaultValue;
  77. }
  78. return null;
  79. };
  80.  
  81. function getPostData(p1,p2){
  82. let data = -1;
  83. for(let s of document.getElementsByTagName('script')){
  84. let func = s.innerText.match(p1)
  85. if(func!=null){
  86. data = func[0].match(p2)[0];
  87. break;
  88. }
  89. }
  90. return data
  91. };
  92.  
  93. function get_saveid(){
  94. return getPostData(/gx_sxst\(\)\{[\s\S]*\}/m,/data: ".*"/).slice(-7,-1);
  95. };
  96.  
  97. function getstpage(){
  98. return new Promise((resolve, reject)=>{
  99. $.ajax({ url: window.location.origin + "/fyg_beach.php", type: 'GET', contentType: 'application/x-www-form-urlencoded; charset=UTF-8', processData: false, })
  100. .done(data => { if (data.ret == 200) { resolve(data.responseText) }else { console.log(data);reject(); }})
  101. .fail(data => { console.log(data);reject();});
  102. })
  103. };
  104.  
  105. function getstdata(){
  106. return new Promise((resolve, reject)=>{
  107. $.ajax({ url: window.location.origin + "/fyg_read.php", type: 'POST', contentType: 'application/x-www-form-urlencoded; charset=UTF-8', data:"f=1",processData: false, })
  108. .done(data => { if (data.ret == 200) { /*console.log(data.responseText);*/resolve(data.responseText) }else { console.log(data);reject(); }})
  109. .fail(data => { console.log(data);reject();});
  110. })
  111. };
  112.  
  113. function sxstbyxs(){
  114. return new Promise((resolve, reject)=>{
  115. $.ajax({ url: window.location.origin + "/fyg_click.php", type: 'POST', contentType: 'application/x-www-form-urlencoded; charset=UTF-8', data:"c=12&safeid=" + get_saveid(),processData: false, })
  116. .done(data => { if (data.ret == 200) { console.log(data.responseText);resolve(data.responseText) }else { console.log(data);reject(); }})
  117. .fail(data => { console.log(data);reject();});
  118. })
  119. };
  120.  
  121. function refreshUntilCondition(refreshBoxNum) {
  122. if (refreshBoxNum === undefined || refreshBoxNum === NaN) {
  123. refreshBoxNum = parseInt(localStorage[keyname])
  124. if (isNaN(refreshBoxNum)) {
  125. localStorage[keyname] = 0
  126. refreshBoxNum = 0
  127. }
  128. } else {
  129. localStorage[keyname] = refreshBoxNum
  130. }
  131. console.log('ddd',refreshBoxNum)
  132. if (refreshBoxNum == 0) {
  133. return
  134. }
  135. if (refreshBoxNum > 0) {
  136. gx_sxst();
  137.  
  138. localStorage[keyname] = refreshBoxNum - 1
  139. }
  140. }
  141.  
  142. function createElementForOperation() {
  143. 'use strict';
  144. refreshBoxNum = 0;
  145. let refreshEquipCaseNumInput = document.createElement("div")
  146. refreshEquipCaseNumInput.setAttribute('style',"display: inline-block;float: right!important;");
  147.  
  148. let refreshEquipCaseNUMlabel = document.createElement('i');
  149. refreshEquipCaseNUMlabel.innerText = "批量使用随机装备箱个数:";
  150. refreshEquipCaseNumInput.appendChild(refreshEquipCaseNUMlabel);
  151.  
  152. let refreshEquipCaseNUMInput = document.createElement('input');
  153. refreshEquipCaseNUMInput.setAttribute('type','text');
  154. refreshEquipCaseNUMInput.setAttribute('oninput',"value=value.replace(/[^\\d]/g,'')");
  155. refreshEquipCaseNUMInput.setAttribute('style',"width: 40px;margin-right:15px;");
  156. refreshEquipCaseNUMInput.value = refreshBoxNum;
  157. refreshEquipCaseNUMInput.onchange = function(){
  158. let localNUM = parseInt(refreshEquipCaseNUMInput.value);
  159. if(isNaN(localNUM)){
  160. refreshBoxNum = 0;
  161. }else if(localNUM<0){
  162. localNUM = 0;
  163. }
  164. refreshBoxNum = localNUM
  165. }
  166. refreshEquipCaseNumInput.appendChild(refreshEquipCaseNUMInput);
  167. $(".btn-group.pull-right").after(refreshEquipCaseNumInput);
  168.  
  169. let refreshContinueBtn = document.createElement('button')
  170. refreshContinueBtn.setAttribute('type','button');
  171. refreshContinueBtn.setAttribute('class',"btn btn-success");
  172. refreshContinueBtn.setAttribute('style',"width: auto;margin-left:10px;");
  173. refreshContinueBtn.innerText = '批量消耗装备箱,获取随机装备'
  174. refreshContinueBtn.onclick = () => refreshUntilCondition(refreshBoxNum)
  175. document.querySelector('div.btn-group.pull-right > button').parentNode.append(refreshContinueBtn)
  176. // Your code here...
  177. }
  178.  
  179. window.addEventListener('load', () => refreshUntilCondition()); createElementForOperation(); FLASHbeach();
  180. };
  181. $(document).ready(function(e) { guarb();});