Advertisement
eitherlast

gensh auto

Jul 25th, 2021
1,314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        Genshin Daily Check-In
  3. // @namespace   Violentmonkey Scripts
  4. // @match       https://webstatic-sea.mihoyo.com/ys/event/signin-sea/index.html?act_id=e202102251931481*
  5. // @grant       none
  6. // @run-at      document-end
  7. // @version     2.0
  8. // @author      h010c
  9. // @description Genshin Daily Check-In
  10. // @icon        https://i.imgur.com/H8yt3g7.png
  11. // ==/UserScript==
  12.  
  13. var hoursGenshin = 16;  // UTC time when Genshin jumps to the "next day"
  14. var lang = "en";
  15. var table;
  16.  
  17. if (/^(?:ru|uk)\b/.test(navigator.language) || document.URL.slice(-5) === "ru-ru") {
  18.   lang = "ru";
  19. }
  20.  
  21. checkLoot();
  22.  
  23. function checkLoot(reload = false) {
  24.   if (reload) {
  25.     table = 0;
  26.     document.location.reload();
  27.     return;
  28.   }
  29.  
  30.   // element containing list of daily loot
  31.   if (!table) {
  32.     table = document.getElementsByClassName("components-home-assets-__sign-content_---list---3L0nzm")[0];
  33.     setTimeout(checkLoot, 5000);
  34.     return;
  35.   }
  36.  
  37.   let timeNow = new Date();
  38.  
  39.   // show timers on webpage
  40.   let elemNote = document.getElementsByClassName("components-home-assets-__sign-content_---desc---oUGkHX")[0];
  41.   if (elemNote) {
  42.     if (lang === "ru") {
  43.       elemNote.innerText = `Лут проверен ${timeNow.toLocaleDateString()} в ${timeNow.toLocaleTimeString()}`;
  44.     } else {
  45.       elemNote.innerText = `Loot checked ${timeNow.toLocaleDateString()} at ${timeNow.toLocaleTimeString()}`;
  46.     }
  47.   }
  48.   console.log("Loot checked at " + timeNow.toLocaleTimeString());
  49.  
  50.   // notification indicator on loot waiting to be acquired
  51.   let elem = table.getElementsByClassName("components-home-assets-__sign-content_---badge---26v3dm")[0];
  52.   if (elem) {
  53.     elem.parentNode.click();
  54.   }
  55.  
  56.   // setting up the next check
  57.   let hoursUTCNow = timeNow.getUTCHours();
  58.   let hoursLeft =  hoursUTCNow <= hoursGenshin ? hoursGenshin - hoursUTCNow : 24 + hoursGenshin - hoursUTCNow;
  59.   let minutesNow = timeNow.getMinutes();
  60.   let minutesLeft = 60 - minutesNow;
  61.  
  62.   setTimeout( checkLoot, ((hoursLeft * 60 + minutesLeft + 5) * 60000), true );
  63.   if (elemNote) {
  64.     if (lang === "ru") {
  65.       elemNote.innerText += `; следующая проверка через ${minutesLeft > 54 ? hoursLeft + 1 : hoursLeft} часов ${minutesLeft > 54 ? minutesLeft - 55 : minutesLeft + 5} минут.`;
  66.     } else {
  67.       elemNote.innerText += `; next loot check in ${minutesLeft > 54 ? hoursLeft + 1 : hoursLeft} hours ${minutesLeft > 54 ? minutesLeft - 55 : minutesLeft + 5} minutes.`;
  68.     }
  69.   }
  70.   console.log("Next loot check in %.2d:%.2d:00", (minutesLeft > 54 ? hoursLeft + 1 : hoursLeft), (minutesLeft > 54 ? minutesLeft - 55 : minutesLeft + 5));
  71.   return;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement