您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Some infos
// ==UserScript== // @name InfoCell // @namespace http://tampermonkey.net/ // @version 2024-09-28 // @description Some infos // @author qwd // @match https://cellcraft.io/ // @icon https://www.google.com/s2/favicons?sz=64&domain=cellcraft.io // @grant none // @license qwd // ==/UserScript== function Accounts() { var wrapper = document.getElementById("overlays"); var closeOpen = document.createElement("div"); closeOpen.innerHTML = (`<div id="OpenClose" style="border-radius: 7px;"> <img src="https://cdn.iconscout.com/icon/premium/png-256-thumb/dropdown-2425289-2035004.png?f=webp&w=256" style="width: 30px; background-color: white; margin-left: 2%; boder-radius: 7px; cursor: pointer"> </div>`); var altBox = document.createElement("div"); altBox.innerHTML = (`<div id="altBox" style="border: 2px solid white; width: 300px; height: 300px; overflow-y: auto; scrollbar-color: white; scrollbar-width: thin; background-color: black; color: white; margin-left: 2%; position: absolute; width: 25%; border-radius: 7px;"> <p style="font-size: 30px; font-weight: 900; display: flex; justify-content: center">Accounts</p> <div style="display: flex"> <p style="margin-left: 1%;">AccountName</p> <p style="margin-left: 22%;">Recs</p> <p style="margin-left: 5%;">Speeds</p> </div> <div id="accountBox"></div> <button id="addAccount" style="border: 2px solid white; background-color: black; color: white; padding: 5px; margin-left: 94%; border-radius: 7px;">+</button> </div>`); wrapper.appendChild(closeOpen); wrapper.appendChild(altBox); var status = 1; closeOpen.addEventListener("click", closeOpenFunc); function closeOpenFunc() { if (status === 0) { altBox.style.display="block"; status++ } else { altBox.style.display="none"; status-- } } var addBtn = document.getElementById("addAccount"); addBtn.addEventListener("click", addAccount); var accounts = []; loadAccounts(); function addAccount() { var accountIndex = accounts.length; var accountline = createAccountLine(accountIndex, "", "", ""); document.getElementById("accountBox").appendChild(accountline); accounts.push({ index: accountIndex, name: "", rec: "", speed: "" }); saveAccounts(); } function createAccountLine(index, name, rec, speed) { var accountline = document.createElement("div"); accountline.setAttribute('id', `acc${index}`); accountline.setAttribute('style', "display: flex; gap: 10px; padding: 5px;"); accountline.innerHTML = ` <div id="acc${index}name" contenteditable="true" style="width: 200px; color: white; border: 1px solid white; padding: 5px; border-radius: 7px;" placeholder="name">${name}</div> <div id="acc${index}rec" contenteditable="true" style="width: 50px; color: white; border: 1px solid white; padding: 5px;border-radius: 7px;" placeholder="rec">${rec}</div> <div id="acc${index}speed" contenteditable="true" style="width: 50px; color: white; border: 1px solid white; padding: 5px;border-radius: 7px;" placeholder="speed">${speed}</div> `; attachInputListeners(accountline, index); var setRecNullBtn = document.createElement("button"); setRecNullBtn.textContent = "0"; setRecNullBtn.setAttribute('style', "width: 30px; background-color: #2e3034; border-radius: 7px;"); setRecNullBtn.addEventListener('click', function() { setToNull(index, 'rec'); }); var setSpeedNullBtn = document.createElement("button"); setSpeedNullBtn.textContent = "0"; setSpeedNullBtn.setAttribute('style', "width: 30px; background-color: #2e3034; border-radius: 7px;"); setSpeedNullBtn.addEventListener('click', function() { setToNull(index, 'speed'); }); var removeBtn = document.createElement("button"); removeBtn.textContent = "-"; removeBtn.setAttribute('style', "width: 30px; background-color: red;"); removeBtn.addEventListener('click', function() { removeAccount(index); }); accountline.appendChild(setRecNullBtn); accountline.appendChild(setSpeedNullBtn); accountline.appendChild(removeBtn); return accountline; } function attachInputListeners(accountline, index) { const nameDiv = accountline.querySelector(`#acc${index}name`); const recDiv = accountline.querySelector(`#acc${index}rec`); const speedDiv = accountline.querySelector(`#acc${index}speed`); nameDiv.addEventListener('input', function() { accounts[index].name = this.innerText; saveAccounts(); }); recDiv.addEventListener('input', function() { accounts[index].rec = this.innerText; saveAccounts(); }); speedDiv.addEventListener('input', function() { accounts[index].speed = this.innerText; saveAccounts(); }); } function setToNull(id, field) { document.getElementById(`acc${id}${field}`).innerText = "0"; accounts[id][field] = "0"; saveAccounts(); } function removeAccount(accountIndex) { var accountToRemove = document.getElementById(`acc${accountIndex}`); if (accountToRemove) { accountToRemove.remove(); } accounts.splice(accountIndex, 1); updateAccounts(); saveAccounts(); } function updateAccounts() { accounts.forEach((account, index) => { var accountDiv = document.getElementById(`acc${index}`); if (accountDiv) { accountDiv.setAttribute('id', `acc${index}`); var divs = accountDiv.querySelectorAll('div'); divs[0].setAttribute('id', `acc${index}name`); divs[1].setAttribute('id', `acc${index}rec`); divs[2].setAttribute('id', `acc${index}speed`); divs[0].innerText = account.name; divs[1].innerText = account.rec; divs[2].innerText = account.speed; attachInputListeners(accountDiv, index); } }); } function saveAccounts() { localStorage.setItem('accounts', JSON.stringify(accounts)); } function loadAccounts() { var storedAccounts = localStorage.getItem('accounts'); if (storedAccounts) { accounts = JSON.parse(storedAccounts); accounts.forEach(account => { var accountIndex = account.index; addAccountFromData(accountIndex, account.name, account.rec, account.speed); }); } } function addAccountFromData(index, name, rec, speed) { var accountline = createAccountLine(index, name, rec, speed); document.getElementById("accountBox").appendChild(accountline); } } setTimeout(Accounts, 3000); function infos() { var canvas = document.querySelector(".inner-overlays"); var box = document.createElement("div"); box.innerHTML = (` <div style="background-color: white; margin-top: 200px; position: absolute; z-index: +1; border-radius: 7px; margin-left: 5%; padding: 20px; width: 300px;"> Info by qwd <div id="Levelq">Level: Loading</div> <div id="Progressq">XP Gained: Loading</div> <div id="coinsq">Coins: Loading</div> <div id="coinsgained">Coins gained: Loading</div> <div id="playedq">Played: Loading</div> </div> `); canvas.appendChild(box); var level = document.getElementById("Levelq"); var xpbarRaw = document.querySelector(".exp-bar").textContent; var xpbar = parseInt(xpbarRaw); var progress = document.getElementById("Progressq"); var coins = document.getElementById("coinsq"); var coinsgained = document.getElementById("coinsgained"); var coinsStatusRawOld = document.getElementById("coinsDash").textContent; var coinsStatusOld = parseInt(coinsStatusRawOld); function update() { var lvl = document.getElementById("level").textContent; level.innerHTML = "Level: " + lvl; var xpbarNewRaw = document.querySelector(".exp-bar").textContent; var xpbarNew = parseInt(xpbarNewRaw); var xpProgress = xpbarNew - xpbar; progress.innerHTML = "XP Gained: " + xpProgress + "%"; var coinsStatusRaw = document.getElementById("coinsDash").textContent; coins.innerHTML = "Coins: " + coinsStatusRaw; var coinsStatus = parseInt(coinsStatusRaw); var coinsgainedValue = coinsStatus - coinsStatusOld; coinsgained.innerHTML = "Coins gained: " + coinsgainedValue; } setInterval(update, 2000) let seconds = 0; var timer = document.getElementById("playedq"); function formatTimeUnit(unit) { return unit < 10 ? '0' + unit : unit; } function updateTimer() { seconds++; const days = Math.floor(seconds / (60 * 60 * 24)); const hours = Math.floor((seconds % (60 * 60 * 24)) / (60 * 60)); const minutes = Math.floor((seconds % (60 * 60)) / 60); const secs = seconds % 60; let displayTime = ''; if (days > 0) { displayTime += formatTimeUnit(days) + ' d '; } if (hours > 0 || days > 0) { displayTime += formatTimeUnit(hours) + ' h '; } if (minutes > 0 || hours > 0 || days > 0) { displayTime += formatTimeUnit(minutes) + ' m '; } displayTime += formatTimeUnit(secs) + ' s'; timer.innerHTML = "Played: " + displayTime; } setInterval(updateTimer, 1000); } setTimeout(infos, 3000);