// ==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 // @downloadURL https://update.greasyfork.icu/scripts/510725/InfoCell.user.js // @updateURL https://update.greasyfork.icu/scripts/510725/InfoCell.meta.js // ==/UserScript== function Accounts() { var wrapper = document.getElementById("overlays"); var closeOpen = document.createElement("div"); closeOpen.innerHTML = (`
`); var altBox = document.createElement("div"); altBox.innerHTML = (`

Accounts

AccountName

Recs

Speeds

`); 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 = `
${name}
${rec}
${speed}
`; 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 = (`
Info by qwd
Level: Loading
XP Gained: Loading
Coins: Loading
Coins gained: Loading
Played: Loading
`); 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);