// ==UserScript==
// @name Classroom Client++
// @namespace StateFarmClient
// @version 1.10.457
// @description Admin panel & hack client for google classroom
// @author hydroflame521
// @icon https://upload.wikimedia.org/wikipedia/commons/5/59/Google_Classroom_Logo.png
// @match *.google.com/*
// @license StateFarmTeam
// @grant none
// @require https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.6.5/dat.gui.min.js
// ==/UserScript==
(function() {
const addScript = () => {
document.title = 'ClassroomClient++';
};
document.body ? addScript() : document.addEventListener("DOMContentLoaded", e => addScript());
})();
(function() {
let ping = document.getElementById('ping');
const getPing = ()=>{
try{return parseInt(ping.innerText.toLowerCase().replace('ms', ''))}catch(e){
document.getElementById('ping');
return 40}};
let lastShotSpread = 0;
'use strict';
const oldDefine = Object.defineProperty;
Object.defineProperty = function(a,b,c){
if(arguments[1]=="collisionMask" || b == "collisionMask"){
}
return oldDefine.apply(this,arguments);
}
window.players = new Map();
window.myPlayer = null;
var push = Array.prototype.push;
window.settings = {
Version: "v1.10.457",
Mail: function() {
window.location='https://mail.google.com';
},
Slides: function() {
window.location='https://docs.google.com/presentation';
},
Drawings: function() {
window.location='https://docs.google.com/drawings';
},
Docs: function () {
window.location='https://docs.google.com';
},
YouTube: function() {
window.location='https://www.youtube.com';
},
Drive: function() {
window.location='https://drive.google.com';
},
Sheets: function() {
window.location='https://docs.google.com/spreadsheets';
},
Translate: function() {
window.location='https://translate.google.com';
},
Classroom: function() {
window.location='https://classroom.google.com';
},
}
datgui();
function datgui(){
let gui = new dat.GUI({
autoplace: false,
width: 400,
height: 12 * 32 - 1
});
// Settings
let guiSettings = gui.addFolder('ClassroomClient++ v1');
guiSettings.add(window.settings, 'Version').onChange();
guiSettings.open();
guiSettings = gui.addFolder('Google Links');
guiSettings.add(window.settings, 'Mail').onChange((e)=>{});
guiSettings.add(window.settings, 'Slides').onChange((e)=>{});
guiSettings.add(window.settings, 'YouTube').onChange((e)=>{});
guiSettings.add(window.settings, 'Drawings').onChange((e)=>{});
guiSettings.add(window.settings, 'Docs').onChange((e)=>{});
guiSettings.add(window.settings, 'Drive').onChange((e)=>{});
guiSettings.add(window.settings, 'Sheets').onChange((e)=>{});
guiSettings.add(window.settings, 'Translate').onChange((e)=>{});
guiSettings.add(window.settings, 'Classroom').onChange((e)=>{});
guiSettings.open();
document.getElementsByClassName("dg ac")[0].style.zIndex=9999;
return gui;
}
})();
'use strict';
(function(window, e) {
if ("object" === typeof exports && "undefined" !== typeof module) {
module.exports = e();
} else {
if ("function" === typeof define && define.amd) {
define(e);
} else {
window.Stats = e();
}
}
})(this, function() {
var init = function() {
function addPanel(panel) {
container.appendChild(panel.dom);
return panel;
}
function showPanel(id) {
var i = 0;
for (; i < container.children.length; i++) {
container.children[i].style.display = i === id ? "block" : "none";
}
p = id;
}
var p = 0;
var container = document.createElement("div");
container.style.cssText = "position:fixed;bottom:0;left:0;cursor:pointer;opacity:1.0;z-index:10000";
container.addEventListener("click", function(event) {
event.preventDefault();
showPanel(++p % container.children.length);
}, false);
var beginTime = (performance || Date).now();
var prevTime = beginTime;
var value = 0;
var fpsPanel = addPanel(new init.Panel("FPS", "#0ff", "#002"));
var msPanel = addPanel(new init.Panel("PING", "#0f0", "#020"));
if (self.performance && self.performance.memory) {
var memPanel = addPanel(new init.Panel("MB", "#f08", "#201"));
}
showPanel(0);
return {
REVISION : 16,
dom : container,
addPanel : addPanel,
showPanel : showPanel,
begin : function() {
beginTime = (performance || Date).now();
},
end : function() {
value++;
var time = (performance || Date).now();
msPanel.update(time - beginTime, 200);
if (time > prevTime + 1E3 && (fpsPanel.update(1E3 * value / (time - prevTime), 100), prevTime = time, value = 0, memPanel)) {
var m = performance.memory;
memPanel.update(m.usedJSHeapSize / 1048576, m.jsHeapSizeLimit / 1048576);
}
return time;
},
update : function() {
beginTime = this.end();
},
domElement : container,
setMode : showPanel
};
};
init.Panel = function(label, container, position) {
var t = Infinity;
var val = 0;
var round = Math.round;
var r = round(window.devicePixelRatio || 1);
var w = 80 * r;
var h = 48 * r;
var right = 3 * r;
var padding = 2 * r;
var x = 3 * r;
var y = 15 * r;
var width = 74 * r;
var height = 30 * r;
var elem = document.createElement("canvas");
elem.width = w;
elem.height = h;
elem.style.cssText = "width:130px;height:68px";
var context = elem.getContext("2d");
context.font = "bold " + 11 * r + "px Helvetica,Arial,sans-serif";
context.textBaseline = "top";
context.fillStyle = position;
context.fillRect(0, 0, w, h);
context.fillStyle = container;
context.fillText(label, right, padding);
context.fillRect(x, y, width, height);
context.fillStyle = position;
context.globalAlpha = .9;
context.fillRect(x, y, width, height);
return {
dom : elem,
update : function(i, radius) {
t = Math.min(t, i);
val = Math.max(val, i);
context.fillStyle = position;
context.globalAlpha = 1;
context.fillRect(0, 0, w, y);
context.fillStyle = container;
context.fillText(round(i) + " " + label + " (" + round(t) + "-" + round(val) + ")", right, padding);
context.drawImage(elem, x + r, y, width - r, height, x, y, width - r, height);
context.fillRect(x + width - r, y, r, height);
context.fillStyle = position;
context.globalAlpha = .9;
context.fillRect(x + width - r, y, r, round((1 - i / radius) * height));
}
};
};
return init;
});
(function() {
'use strict';
const stats = new Stats();
const statsParentNode = document.body;
statsParentNode.appendChild(stats.dom);
requestAnimationFrame(function loop() {
stats.update();
requestAnimationFrame(loop);
});
})();
//dark mode theme made by ThaCheeseBun
(function() {
'use strict';
var style = `
body {
background: #2c2c2c;
color: #fff;
}
/* help btn */
.K2mXPb {
color: #fff;
fill: #fff;
}
/* links */
a {
color: dodgerblue;
}
a:visited {
color: mediumorchid;
}
/* top bar */
.joJglb {
background: #3c3c3c;
border-bottom: none;
}
.joJglb, .joJglb.kLHn3 {
box-shadow: 0px 0px 6px 4px rgba(28, 28, 28, .4);
}
/* google apps */
.gb_qa svg, .gb_C[aria-expanded="true"] .gb_Ve {
fill: #fff;
}
/* icons */
.IqJTee, .ViCi4, .xSP5ic, .cjq2Db {
color: #fff;
}
/* classroom elems */
.Aopndd {
background: #3c3c3c;
border-color: #5c5c5c;
}
.SZ0kZe {
border-top: none !important;
}
.apFsO.onkcGd,
.apFsO.onkcGd:visited {
color: #fff;
}
.oBSRLe {
color: #fff;
}
.JPdR6b {
background: #3c3c3c;
box-shadow: 0px 0px 2px 1px rgba(28, 28, 28, .4);
}
/* nav menu */
.asQXV {
color: #fff;
}
.dDKhVc, .iLjzDc {
color: #afafaf;
}
.kCtYwe {
border-color: #4c4c4c !important;
}
.ETRkCe {
background-color: #3c3c3c !important;
}
.DShyMc-AaTFfe .Xi8cpb.qs41qe .LlcfK, .bFjUmb-Ysl7Fe, .VUoKZ {
background-color: #4c4c4c !important;
}
.Xi8cpb:hover .LlcfK {
background-color: rgba(76, 76, 76, .5) !important;
}
/* calendar */
.Evt7cb, .Evt7cb:visited, .fKz7Od .TpQm9d {
color: #fff !important;
}
.BOW64 {
border-color: #5c5c5c !important;
}
.wQuPk .JsqLM.N4XV7d {
color: #afafaf !important;
}
.ybOdnf .OA0qNb .LMgvRb[aria-selected="true"] {
background-color: rgba(76, 76, 76, .5) !important;
}
.ncFHed .MocG8c.KKjvXb {
background-color: #4c4c4c !important;
}
/* todo page */
.Xp0OCe, .ncFHed {
background-color: #3c3c3c !important;
}
.Xp0OCe {
border: none !important;
}
.HZ3kWc, .WOPwXe, .gJk24c, .asQXV-FGzYL {
color: #fff;
}
.MHxtic:not(:last-child), .LKqFXc {
border-color: #4c4c4c !important;
}
.MHxtic:hover {
box-shadow: none !important;
background-color: #4c4c4c;
}
/* class page */
.d4Fe0d {
background-color: #3c3c3c !important;
border-color: #4c4c4c !important;
}
.EZrbnd, .A6dC2c, .O98Lj, .rpo4wf, .tLDEHd, .cSyPgb, .wZTANe .J1raN:hover, .udxSmc, .lziZub, .lziZub:visited {
color: #fff !important;
}
.sdDCme, .K6Ovqd, .T8rTjd, .Lzdwhd-BrZSOd, .onkcGd, .onkcGd:visited, .wZTANe .J1raN {
color: #ccc;
}
.VnOHwf-Tvm9db, .BEAGS:not(.RDPZE), .VnOHwf-Wvd9Cc, .CJXzee a:active,
.CJXzee a:focus, .CJXzee a:hover, .sdDCme, .K6Ovqd, .vnnr5e .snByac,
.vnnr5e .Aworge, .XpxsVb .Aworge, .UQuaGc, .wCDkmf, .ksaOtd {
color: #fff !important;
}
.MymH0d:hover .VBEdtc-Wvd9Cc, .l3F1ye:not(.RDPZE), .IMvYId, .IMvYId:visited, .nRLOzd:hover, .nRLOzd:hover *, .O98Lj, .Lzdwhd-BrZSOd {
color: #ccc !important;
}
.GWZ7yf, .hgjBDc, .vnnr5e .CIy9F, .qk0lee:focus::after {
background-color: #3c3c3c !important;
box-shadow: none !important;
}
.vnnr5e .I9OJHe {
background-color: #3c3c3c !important;
}
.ndcsBf.cjzpkc-Wvd9Cc {
border-color: #5c5c5c;
}
.Y5FYJe.RDPZE {
fill: #ccc;
color: #ccc;
}
.OZ6W0d:not(.RDPZE), .l3F1ye:not(.RDPZE) .TpQm9d, .wwnMtb:not(.RDPZE) {
fill: #fff !important;
color: #fff !important;
}
.ZoT1D:hover.idtp4e, .tUJKGd:not(.xp2dJ):not(.rZXyy):hover .idtp4e, .tUJKGd:not(.xp2dJ).ndcsBf .idtp4e, .V8apv, .P3W0Dd-Ysl7Fe:focus {
background-color: #4c4c4c !important;
}
.Niache, .QTD2uf {
border-color: #3c3c3c !important;
}
.UISY8d-Ysl7Fe:hover {
background-color: #3c3c3c !important;
color: #ccc;
}
.eumXzf:after {
border-color: #fff !important;
}
.tUJKGd:not(:first-child), .ySjuvd .eqqrO, .s2g3Xd, .oleV8d, .ZNE4y, .PeGHgb.Q8U8uc .Ono85c+.oh9CFb, .O9YpHb, .u73Apc, .d6CWTd {
border-color: #4c4c4c !important;
}
.lXuxY {
-webkit-box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.75);
-moz-box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.75);
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.75)
}
.BEAGS, .P02DYb, .ycbm1d {
border-color: #4c4c4c !important;
}
.Y5sE8d:not(.RDPZE) {
background-color: #2c2c2c !important;
}
.Y5sE8d:not(.RDPZE):hover {
box-shadow: none !important;
}
.ksaOtd {
color: #1e8e3e;
}
.uO32ac {
border-color: #5c5c5c !important;
}
.uQ3ESd {
background-color: #3c3c3c !important;
}
/* dialog */
.iph-dialog {
background-color: #4c4c4c !important;
}
.iph-dialog-title, .iph-dialog-content {
color: #fff !important;
}
/* join classroom */
.gKkZCe, .D3oBEe .n9IS1:before, .AeAAkf {
border-color: #4c4c4c;
}
.D3oBEe .qTs5Xc {
background-color: #3c3c3c;
}
.qTs5Xc, .poFWNe {
color: #fff;
}
.I7OXgf.ZEeHrd, .NZ9wdc, .i5sehe, .kox42c {
background-color: #2c2c2c !important;
}`;
var elem = document.createElement('style');
elem.innerText = style;
document.head.appendChild(elem);
})();