您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
The most advanced AFK system for CSGOClicker v2.
// ==UserScript== // @name Cyberiana AFK System // @namespace http://tampermonkey.net/ // @version 0.4.1 // @description The most advanced AFK system for CSGOClicker v2. // @author Cyberiana/Anastasia // @match https://csgoclicker.net/* // @icon https://www.google.com/s2/favicons?sz=64&domain=csgoclicker.net // @grant none // ==/UserScript== const sellprice = 100; const keepfloat = 0.0000; (function () { 'use strict'; // Custom HTML code const htmlCode = ` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Cyberiana AFK</title> <link rel="stylesheet" type="text/css" href="style.css"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Rubik&display=swap" rel="stylesheet"> </head> <body> <div class="topbar"> <div class="toplogo"></div> <div class="logocont">AFK system</div> </div> <div class="option-picker"> <div class="arrow left" id="left-arrow"><</div> <div class="case" id="ccase">CS:GO Weapon Case</div> <div class="arrow right" id="right-arrow">></div> </div> <div class="content"> <div class="unbox"> <div class="dot"></div> <div class="item">Placeholder Item (Wear)</div> <div class="itemfloat">0.000000000000000</div> <div class="itemprice">Milspec - $0.00</div> <div class="timer"> <div class="tlabel">6s</div> <div class="treel"></div> </div> </div> </div> <div id="sidebar" class="sidebar"> <div class="opener"> <div class="title">User Info</div> <div class="user">Ana (76734857399200)</div> <div class="balance">Balance: <b>$1,000,000.00</b></div> <div class="invval">Inv Value: <b>$1,000.00</b></div> </div> <div class="divider"></div> <div class="chat"> <div class="title">Chat (WIP-Coming Soon)</div> </div> </div> <script src="script.js"></script> </body> </html> `; // Custom CSS code const cssCode = ` /* Your CSS code here */ * { font-family: 'Rubik', sans-serif; } body { background-color: rgb(22, 22, 22); color: rgb(255, 255, 255); overflow: hidden; } .case { opacity: 1; transition: opacity 0.10s; font-size: 35px; font-weight: bold; user-select: none; } .option-picker { position: fixed; bottom: 2%; left: 0; right: 0; display: flex; align-items: center; justify-content: space-between; width: 80%; } .arrow { font-size: 25px; font-weight: bold; margin: 0 50px; user-select: none; cursor: pointer; filter: drop-shadow(0 0 0 rgba(255, 165, 0, 0)); transition: filter 0.3s; } .arrow:hover { filter: drop-shadow(0 0 15px rgb(166, 234, 255)); } .left { margin-left: 20%; transition: box-shadow 0.3s; } .right { margin-right: 20%; } .content { display: flex; align-items: center; justify-content: center; width: 80%; height: 90%; position: absolute; } .timer { display: flex; flex-wrap: wrap; } .itemprice { width: 100%; } .treel { margin-left: 30px; margin-top: 5.5px; position: absolute; height: 10px; width: 265px; background-color: rgb(158, 158, 158); } .sidebar { height: 100%; width: 20%; background-color: rgb(11, 11, 11); position: absolute; right: 0; top: 0; } .opener { height: 9.5%; background-color: rgb(15, 15, 15); text-align: center; justify-content: center; padding-top: 5px; } .opener * { font-size: 1.75vh; } .chat { height: 90.5%; background-color: rgb(15, 15, 15); padding-top: 5px; text-align: center; justify-content: center; } .chat * { font-size: 1.75vh; } .divider { height: 1px; background-color: rgb(7, 7, 7); } .unbox { display: flex; flex-wrap: wrap; max-width: 300px; } .dot { margin-left: 1px; margin-top: 10px; width: 10px; height: 10px; border-radius: 50%; background-color: blue; position: absolute; } .item { padding-left: 20.5px; font-size: 25px; max-width: 2500px; min-width: 1500px; } .itemfloat { width: 100%; } .smallt { font-size: 15px; } .title { margin-top: -5px; height: 20px; width: 100%; background-color: rgb(12, 12, 12); } .topbar { left: 0; top: 0; z-index: -1; position: absolute; width: 100%; height: 10%; background-color: #111; } .toplogo { position: absolute; top: 20%; height: 50%; width: 10%; background-size: contain; background-repeat: no-repeat; background-image: url('https://i.ibb.co/RhX63FN/logo-inv.png'); } .logocont { position: absolute; top: 60%; left: 3.5%; font-size: 1.5vh; } ::-webkit-scrollbar { width: 6px; /* Adjust as needed */ } ::-webkit-scrollbar-thumb { background-color: #888; /* Color of the scrollbar thumb */ border-radius: 3px; /* Rounded corners of the thumb */ } ::-webkit-scrollbar-thumb:hover { background-color: #555; /* Color of the thumb on hover */ } `; setTimeout(() => { // Injecting the HTML and CSS into the current webpage document.open(); document.write(htmlCode); document.write(`<style>${cssCode}</style>`); document.write('<script src="script.js"></script>'); document.close(); const cases = [ "CS:GO Weapon Case", "eSports 2013 Case", "Operation Bravo Case", "eSports 2013 Winter Case", "CS:GO Weapon Case 2", "CS:GO Weapon Case 3", "Winter Offensive Weapon Case", "Operation Phoenix Weapon Case", "Huntsman Weapon Case", "Operation Breakout Weapon Case", "Operation Vanguard Weapon Case", "Chroma 2 Case", "eSports 2014 Summer Case", "Falchion Case", "Shadow Case", "Chroma Case", "Revolver Case", "Operation Wildfire Case", "Chroma 3 Case", "Glove Case", "Spectrum 2 Case", "Clutch Case", "Gamma Case", "Spectrum Case", "Operation Hydra Case", "Gamma 2 Case" ]; const ccaseElement = document.getElementById('ccase'); let currentIndex = 0; function fadeOutAndChangeText(newText) { ccaseElement.style.opacity = 0; setTimeout(() => { ccaseElement.textContent = newText; fadeIn(); }, 120); } function fadeIn() { ccaseElement.style.opacity = 1; } function scrollLeft() { currentIndex = (currentIndex - 1 + cases.length) % cases.length; fadeOutAndChangeText(cases[currentIndex]); } function scrollRight() { currentIndex = (currentIndex + 1) % cases.length; fadeOutAndChangeText(cases[currentIndex]); } document.getElementById('left-arrow').addEventListener('click', scrollLeft); document.getElementById('right-arrow').addEventListener('click', scrollRight); function getData(dataKey) { return fetch('https://api.csgoclicker.net/v1/profile/', { credentials: 'include' }) .then(response => response.json()) .then(data => { if (data.hasOwnProperty(dataKey)) { return data[dataKey]; } else { throw new Error('Invalid data key'); } }) .catch(error => { console.error('Error:', error); }); } getData('name') .then(name => { console.log('Name:', name); return getData('steamId') .then(steamId => { console.log('Steam ID:', steamId); document.getElementsByClassName('user')[0].innerText = `${name} (${steamId})`; }); }); getData('balance') .then(balance => { console.log('Balance:', balance); document.getElementsByClassName('balance')[0].innerHTML = `Balance: <b>$${(balance / 100).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}</b>` }); runProgressBar(); }, 5000); function customSend(socket, data) { socket.send(`42${JSON.stringify(data)}`); } function getWear(float) { if (float >= 0 && float <= 0.07) { return 'Factory New'; } else if (float > 0.07 && float <= 0.15) { return 'Minimal Wear'; } else if (float > 0.15 && float <= 0.38) { return 'Field-Tested'; } else if (float > 0.38 && float <= 0.45) { return 'Well-Worn'; } else if (float > 0.45 && float <= 1) { return 'Battle-Scarred'; } else { return 'Unknown'; } } const colors = { "milspec": "#1757cf", "restricted": "#710193", "classified": "#dc2ef0", "covert": "#f23030", "gold": "#f2ae30" } function getPrice(item) { if (PriceList.hasOwnProperty(item)) { return PriceList[item]; } } window.sockets = []; const nativeWebSocket = window.WebSocket; window.WebSocket = function (...args) { const socket = new nativeWebSocket(...args); socket.addEventListener('message', function (event) { console.log('Received message.'); if (event.data.includes("case opened")) { let startIndex = event.data.indexOf("[{"); let endIndex = event.data.lastIndexOf("}]") + 2; let itemsStr = event.data.substring(startIndex, endIndex); let items = JSON.parse(itemsStr); let gold = items[38].rarity == "gold"; console.log(items[38]); document.getElementsByClassName('item')[0].innerText = `${(gold ? "★ " : "")}${(items[38].stattrak ? "StatTrak™ " : "")}${items[38].primaryName} | ${items[38].secondaryName} (${getWear(items[38].float)})` document.getElementsByClassName('itemfloat')[0].innerText = `${items[38].float}` let fname = `${(gold ? "★ " : "")}${(items[38].stattrak ? "StatTrak™ " : "")}${items[38].primaryName} | ${items[38].secondaryName} (${getWear(items[38].float)})` let sold = (getPrice(fname) < sellprice) ? "Sold" : "Kept" document.getElementsByClassName('itemprice')[0].innerText = `${(items[38].rarity).charAt(0).toUpperCase() + (items[38].rarity).slice(1)} - $${(getPrice(fname))} (${sold})` document.getElementsByClassName('dot')[0].style.backgroundColor = colors[items[38].rarity]; // 42["sell item",["75fe7161-1abb-11ee-be69-5d329c11f3d2"]] if (getPrice(fname) < sellprice) { if (items[38].float > keepfloat) { customSend(window.sockets[0], ["sell item", [`${items[38].id}`]]); console.log("Sold") } else { console.log("Kept due to float.") } } else { console.log("Kept due to price.") } function getData(dataKey) { return fetch('https://api.csgoclicker.net/v1/profile/', { credentials: 'include' }) .then(response => response.json()) .then(data => { if (data.hasOwnProperty(dataKey)) { return data[dataKey]; } else { throw new Error('Invalid data key'); } }) .catch(error => { console.error('Error:', error); }); } getData('balance') .then(balance => { console.log('Balance:', balance); document.getElementsByClassName('balance')[0].innerHTML = `Balance: <b>$${(balance / 100).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}</b>` }); } }); window.sockets.push(socket); return socket; }; function runProgressBar() { const progressBar = document.getElementsByClassName('treel')[0]; const tlabel = document.getElementsByClassName('tlabel')[0]; const totalTime = 6000; // 13 seconds in milliseconds const defaultLength = 265; // default length in pixels const decreaseAmount = defaultLength / (totalTime / 100); // decrease amount per interval const countDownInterval = 1000; // 1 second per interval let currentLength = defaultLength; let remainingTime = totalTime / 1000; // convert to seconds const progressBarInterval = setInterval(() => { currentLength -= decreaseAmount; progressBar.style.width = currentLength + 'px'; if (currentLength <= 0) { clearInterval(progressBarInterval); progressBar.style.width = '0'; // Restart the progress bar and countdown after 15 seconds setTimeout(() => { let ccase = document.getElementById('ccase').innerText; customSend(window.sockets[0], ["buy case", { "caseName": ccase, "amount": 1 }]) customSend(window.sockets[0], ["open case", ccase]); runProgressBar(); }, totalTime - 5500); } }, 100); const countDownIntervalId = setInterval(() => { remainingTime -= 1; tlabel.textContent = remainingTime + 's'; if (remainingTime <= 0) { clearInterval(countDownIntervalId); } }, countDownInterval); } })();