bonktools 3.2.0 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/old/bonkbot.js DELETED
@@ -1,1266 +0,0 @@
1
- //
2
- // BonkBot Framework
3
- // - Version: 3.0.0 by Pix@7008
4
- //
5
-
6
- const WebSocket = require("ws");
7
- const axios = require("axios");
8
- const EventEmitter = require("events");
9
-
10
- const LZString = require("lz-string");
11
- const PSON = require("pson");
12
- const bytebuffer = require("bytebuffer");
13
-
14
- process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
15
-
16
- const createBot = function (options) {
17
- console.log("Starting BonkBot v3.0.0");
18
- options = options || {};
19
- return {
20
- protocol_version: 49,
21
- skin:
22
- options.skin ||
23
- `{"id":30,"scale":0.30000001192092896,"angle":0,"x":0,"y":0,"flipX":false,"flipY":false,"color":49663},{"id":75,"scale":0.07894168794155121,"angle":231.9313201904297,"x":-9.684389114379883,"y":2.921388626098633,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.08011436462402344,"angle":246.96766662597656,"x":-7.4090142250061035,"y":6.844449520111084,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.08011436462402344,"angle":-69.44682312011719,"x":7.4201555252075195,"y":6.805218696594238,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.08325429260730743,"angle":-53.76435089111328,"x":9.440908432006836,"y":3.1005043983459473,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.08254065364599228,"angle":7.713021755218506,"x":-1.975311517715454,"y":-9.978830337524414,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.08310862630605698,"angle":-6.316278457641602,"x":2.2820658683776855,"y":-9.94627857208252,"flipX":false,"flipY":false,"color":0},{"id":13,"scale":0.3945557773113251,"angle":0.04141417145729065,"x":-0.0322730652987957,"y":-0.060396190732717514,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.21413731575012207,"angle":419.81427001953125,"x":-2.4916510581970215,"y":1.3715696334838867,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.21413731575012207,"angle":120.56624603271484,"x":2.608327865600586,"y":1.3715696334838867,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.21413731575012207,"angle":0.39198538661003113,"x":0,"y":-3.107584238052368,"flipX":false,"flipY":false,"color":16777215},{"id":30,"scale":1.0002638101577759,"angle":-1.4328136444091797,"x":-0.04256964847445488,"y":0,"flipX":false,"flipY":false,"color":0},{"id":13,"scale":0.5588991045951843,"angle":-0.6648434996604919,"x":0,"y":0,"flipX":false,"flipY":false,"color":0},{"id":34,"scale":0.759579062461853,"angle":124.82804870605469,"x":-10.603617668151855,"y":-4.556829929351807,"flipX":false,"flipY":false,"color":16777215},{"id":34,"scale":0.7667332887649536,"angle":-3.340736150741577,"x":-0.7606570720672607,"y":11.768919944763184,"flipX":false,"flipY":false,"color":16777215},{"id":34,"scale":0.7913457751274109,"angle":241.08135986328125,"x":9.895292282104492,"y":-6.6403703689575195,"flipX":false,"flipY":false,"color":16777215}`,
24
- server: options.server || `b2ny1`,
25
- passbypass: options.passbypass || undefined,
26
- token: options.token || undefined,
27
- peerID: options.peerid || undefined,
28
- account: options.account || {
29
- username: `BonkBotV3-${Math.random().toString().substr(2, 5)}`,
30
- guest: true,
31
- },
32
- game: {
33
- players: [],
34
- bots: [],
35
- },
36
- events: new EventEmitter(),
37
- timesync: function () {
38
- this.socket.send(`429[18,{"jsonrpc":"2.0","id":9,"method":"timesync"}]`);
39
- },
40
- sendInput: function (input) {
41
- this.socket.send(
42
- `42[4,{"i":${input.input},"f":${input.frame},"c":${input.sequence}}]`,
43
- );
44
- },
45
- joinTeam: function (team) {
46
- this.socket.send(`42[6,{"targetTeam":${team}}]`);
47
- },
48
- toggleTeams: function (locked) {
49
- this.socket.send(`42[7,{"teamLock":${locked}}]`);
50
- },
51
- banPlayer: function (player) {
52
- this.socket.send(`42[9,{"banshortid":${player}}]`);
53
- },
54
- leaveGame: function () {
55
- this.socket.send(`42[14]`);
56
- },
57
- ready: function (ready) {
58
- this.socket.send(`42[16,{"ready":${ready}}]`);
59
- },
60
- gainXP: function () {
61
- this.socket.send(`42[38]`);
62
- },
63
- giveHost: function (newhost) {
64
- this.socket.send(`42[34,{"id":${newhost}}]`);
65
- },
66
- friendRequest: function (friendID) {
67
- this.socket.send(`42[35,{"id":${friendID}}]`);
68
- },
69
- record: function () {
70
- this.socket.send(`42[33]`);
71
- },
72
- setRounds: function (rounds) {
73
- this.socket.send(`42[21,{"w":${rounds}}]`);
74
- },
75
- chat: function (message) {
76
- this.socket.send(`42[10,{"message":"${message}"}]`);
77
- },
78
- stateDecode: function (rawdata) {
79
- let ISpsonpair = new PSON.StaticPair([
80
- "physics",
81
- "shapes",
82
- "fixtures",
83
- "bodies",
84
- "bro",
85
- "joints",
86
- "ppm",
87
- "lights",
88
- "spawns",
89
- "lasers",
90
- "capZones",
91
- "type",
92
- "w",
93
- "h",
94
- "c",
95
- "a",
96
- "v",
97
- "l",
98
- "s",
99
- "sh",
100
- "fr",
101
- "re",
102
- "de",
103
- "sn",
104
- "fc",
105
- "fm",
106
- "f",
107
- "d",
108
- "n",
109
- "bg",
110
- "lv",
111
- "av",
112
- "ld",
113
- "ad",
114
- "fr",
115
- "bu",
116
- "cf",
117
- "rv",
118
- "p",
119
- "d",
120
- "bf",
121
- "ba",
122
- "bb",
123
- "aa",
124
- "ab",
125
- "axa",
126
- "dr",
127
- "em",
128
- "mmt",
129
- "mms",
130
- "ms",
131
- "ut",
132
- "lt",
133
- "New body",
134
- "Box Shape",
135
- "Circle Shape",
136
- "Polygon Shape",
137
- "EdgeChain Shape",
138
- "priority",
139
- "Light",
140
- "Laser",
141
- "Cap Zone",
142
- "BG Shape",
143
- "Background Layer",
144
- "Rotate Joint",
145
- "Slider Joint",
146
- "Rod Joint",
147
- "Gear Joint",
148
- 65535,
149
- 16777215,
150
- ]);
151
- rawdata_caseflipped = "";
152
- for (i = 0; i < rawdata.length; i++) {
153
- if (i <= 100 && rawdata.charAt(i) === rawdata.charAt(i).toLowerCase()) {
154
- rawdata_caseflipped += rawdata.charAt(i).toUpperCase();
155
- } else if (
156
- i <= 100 &&
157
- rawdata.charAt(i) === rawdata.charAt(i).toUpperCase()
158
- ) {
159
- rawdata_caseflipped += rawdata.charAt(i).toLowerCase();
160
- } else {
161
- rawdata_caseflipped += rawdata.charAt(i);
162
- }
163
- }
164
- data_deLZd =
165
- LZString.decompressFromEncodedURIComponent(rawdata_caseflipped);
166
- databuffer = bytebuffer.fromBase64(data_deLZd);
167
- data = ISpsonpair.decode(databuffer.buffer);
168
- return data;
169
- },
170
- stateEncode: function (rawdata) {
171
- let ISpsonpair = new PSON.StaticPair([
172
- "physics",
173
- "shapes",
174
- "fixtures",
175
- "bodies",
176
- "bro",
177
- "joints",
178
- "ppm",
179
- "lights",
180
- "spawns",
181
- "lasers",
182
- "capZones",
183
- "type",
184
- "w",
185
- "h",
186
- "c",
187
- "a",
188
- "v",
189
- "l",
190
- "s",
191
- "sh",
192
- "fr",
193
- "re",
194
- "de",
195
- "sn",
196
- "fc",
197
- "fm",
198
- "f",
199
- "d",
200
- "n",
201
- "bg",
202
- "lv",
203
- "av",
204
- "ld",
205
- "ad",
206
- "fr",
207
- "bu",
208
- "cf",
209
- "rv",
210
- "p",
211
- "d",
212
- "bf",
213
- "ba",
214
- "bb",
215
- "aa",
216
- "ab",
217
- "axa",
218
- "dr",
219
- "em",
220
- "mmt",
221
- "mms",
222
- "ms",
223
- "ut",
224
- "lt",
225
- "New body",
226
- "Box Shape",
227
- "Circle Shape",
228
- "Polygon Shape",
229
- "EdgeChain Shape",
230
- "priority",
231
- "Light",
232
- "Laser",
233
- "Cap Zone",
234
- "BG Shape",
235
- "Background Layer",
236
- "Rotate Joint",
237
- "Slider Joint",
238
- "Rod Joint",
239
- "Gear Joint",
240
- 65535,
241
- 16777215,
242
- ]);
243
- rawdata = ISpsonpair.encode(obj);
244
- b64 = rawdata.toBase64();
245
- lzd = LZString.compressToEncodedURIComponent(b64);
246
- caseflipped = "";
247
- for (i = 0; i < lzd.length; i++) {
248
- if (i <= 100 && lzd.charAt(i) === lzd.charAt(i).toLowerCase()) {
249
- caseflipped += lzd.charAt(i).toUpperCase();
250
- } else if (i <= 100 && lzd.charAt(i) === lzd.charAt(i).toUpperCase()) {
251
- caseflipped += lzd.charAt(i).toLowerCase();
252
- } else {
253
- caseflipped += lzd.charAt(i);
254
- }
255
- }
256
- return caseflipped;
257
- },
258
- mapDecode: function (rawdata) {
259
- bytebuffer.prototype.readBoolean = function () {
260
- return this.readByte() > 0;
261
- };
262
- bytebuffer.prototype.readUTF = function () {
263
- return this.readString(this.readShort());
264
- };
265
- bytebuffer.prototype.readUint = bytebuffer.prototype.readUint32;
266
- decodeFromDatabase = function (map) {
267
- var thingie = [arguments];
268
- b64mapdata = LZString.decompressFromEncodedURIComponent(map);
269
- binaryReader = bytebuffer.fromBase64(b64mapdata, false);
270
- map = {
271
- v: 1,
272
- s: { re: false, nc: false, pq: 1, gd: 25, fl: false },
273
- physics: {
274
- shapes: [],
275
- fixtures: [],
276
- bodies: [],
277
- bro: [],
278
- joints: [],
279
- ppm: 12,
280
- },
281
- spawns: [],
282
- capZones: [],
283
- m: {
284
- a: "noauthor",
285
- n: "noname",
286
- dbv: 2,
287
- dbid: -1,
288
- authid: -1,
289
- date: "",
290
- rxid: 0,
291
- rxn: "",
292
- rxa: "",
293
- rxdb: 1,
294
- cr: [],
295
- pub: false,
296
- mo: "",
297
- },
298
- };
299
- map.v = binaryReader.readShort();
300
- if (map.v > 13) {
301
- throw new Error("New map format, this script needs to be updated.");
302
- }
303
- map.s.re = binaryReader.readBoolean();
304
- map.s.nc = binaryReader.readBoolean();
305
- if (map.v >= 3) {
306
- map.s.pq = binaryReader.readShort();
307
- }
308
- if (map.v >= 4 && map.v <= 12) {
309
- map.s.gd = binaryReader.readShort();
310
- } else if (map.v >= 13) {
311
- map.s.gd = binaryReader.readFloat();
312
- }
313
- if (map.v >= 9) {
314
- map.s.fl = binaryReader.readBoolean();
315
- }
316
- map.m.rxn = binaryReader.readUTF();
317
- map.m.rxa = binaryReader.readUTF();
318
- map.m.rxid = binaryReader.readUint();
319
- map.m.rxdb = binaryReader.readShort();
320
- map.m.n = binaryReader.readUTF();
321
- map.m.a = binaryReader.readUTF();
322
- if (map.v >= 10) {
323
- map.m.vu = binaryReader.readUint();
324
- map.m.vd = binaryReader.readUint();
325
- }
326
- if (map.v >= 4) {
327
- cr_count = binaryReader.readShort();
328
- for (cr_iterator = 0; cr_iterator < cr_count; cr_iterator++) {
329
- map.m.cr.push(binaryReader.readUTF());
330
- }
331
- }
332
- if (map.v >= 5) {
333
- map.m.mo = binaryReader.readUTF();
334
- map.m.dbid = binaryReader.readInt();
335
- }
336
- if (map.v >= 7) {
337
- map.m.pub = binaryReader.readBoolean();
338
- }
339
- if (map.v >= 8) {
340
- map.m.dbv = binaryReader.readInt();
341
- }
342
- map.physics.ppm = binaryReader.readShort();
343
- bro_count = binaryReader.readShort();
344
- for (bro_iterator = 0; bro_iterator < bro_count; bro_iterator++) {
345
- map.physics.bro[bro_iterator] = binaryReader.readShort();
346
- }
347
- shape_count = binaryReader.readShort();
348
- for (
349
- shape_iterator = 0;
350
- shape_iterator < shape_count;
351
- shape_iterator++
352
- ) {
353
- shape_type = binaryReader.readShort();
354
- if (shape_type == 1) {
355
- map.physics.shapes[shape_iterator] = {
356
- type: "bx",
357
- w: 10,
358
- h: 40,
359
- c: [0, 0],
360
- a: 0,
361
- sk: false,
362
- };
363
- map.physics.shapes[shape_iterator].w = binaryReader.readDouble();
364
- map.physics.shapes[shape_iterator].h = binaryReader.readDouble();
365
- map.physics.shapes[shape_iterator].c = [
366
- binaryReader.readDouble(),
367
- binaryReader.readDouble(),
368
- ];
369
- map.physics.shapes[shape_iterator].a = binaryReader.readDouble();
370
- map.physics.shapes[shape_iterator].sk = binaryReader.readBoolean();
371
- }
372
- if (shape_type == 2) {
373
- map.physics.shapes[shape_iterator] = {
374
- type: "ci",
375
- r: 25,
376
- c: [0, 0],
377
- sk: false,
378
- };
379
- map.physics.shapes[shape_iterator].r = binaryReader.readDouble();
380
- map.physics.shapes[shape_iterator].c = [
381
- binaryReader.readDouble(),
382
- binaryReader.readDouble(),
383
- ];
384
- map.physics.shapes[shape_iterator].sk = binaryReader.readBoolean();
385
- }
386
- if (shape_type == 3) {
387
- map.physics.shapes[shape_iterator] = {
388
- type: "po",
389
- v: [],
390
- s: 1,
391
- a: 0,
392
- c: [0, 0],
393
- };
394
- map.physics.shapes[shape_iterator].s = binaryReader.readDouble();
395
- map.physics.shapes[shape_iterator].a = binaryReader.readDouble();
396
- map.physics.shapes[shape_iterator].c = [
397
- binaryReader.readDouble(),
398
- binaryReader.readDouble(),
399
- ];
400
- point_count = binaryReader.readShort();
401
- map.physics.shapes[shape_iterator].v = [];
402
- for (
403
- point_iterator = 0;
404
- point_iterator < point_count;
405
- point_iterator++
406
- ) {
407
- map.physics.shapes[shape_iterator].v.push([
408
- binaryReader.readDouble(),
409
- binaryReader.readDouble(),
410
- ]);
411
- }
412
- }
413
- }
414
- fixtureCount = binaryReader.readShort();
415
- for (i = 0; i < fixtureCount; i++) {
416
- map.physics.fixtures[i] = {
417
- n: "Def Fix",
418
- fr: 0.3,
419
- fp: null,
420
- re: 0.8,
421
- de: 0.3,
422
- f: 5209260,
423
- d: false,
424
- np: false,
425
- ng: false,
426
- };
427
- map.physics.fixtures[i].sh = binaryReader.readShort();
428
- map.physics.fixtures[i].n = binaryReader.readUTF();
429
- map.physics.fixtures[i].fr = binaryReader.readDouble();
430
- if (map.physics.fixtures[i].fr == Number.MAX_VALUE) {
431
- map.physics.fixtures[i].fr = null;
432
- }
433
- fixture = binaryReader.readShort();
434
- if (fixture == 0) {
435
- map.physics.fixtures[i].fp = null;
436
- }
437
- if (fixture == 1) {
438
- map.physics.fixtures[i].fp = false;
439
- }
440
- if (fixture == 2) {
441
- map.physics.fixtures[i].fp = true;
442
- }
443
- map.physics.fixtures[i].re = binaryReader.readDouble();
444
- if (map.physics.fixtures[i].re == Number.MAX_VALUE) {
445
- map.physics.fixtures[i].re = null;
446
- }
447
- map.physics.fixtures[i].de = binaryReader.readDouble();
448
- if (map.physics.fixtures[i].de == Number.MAX_VALUE) {
449
- map.physics.fixtures[i].de = null;
450
- }
451
- map.physics.fixtures[i].f = binaryReader.readUint();
452
- map.physics.fixtures[i].d = binaryReader.readBoolean();
453
- map.physics.fixtures[i].np = binaryReader.readBoolean();
454
- if (map.v >= 11) {
455
- map.physics.fixtures[i].ng = binaryReader.readBoolean();
456
- }
457
- if (map.v >= 12) {
458
- map.physics.fixtures[i].ig = binaryReader.readBoolean();
459
- }
460
- }
461
- thingie[41] = binaryReader.readShort();
462
- for (x = 0; x < thingie[41]; x++) {
463
- map.physics.bodies[x] = {
464
- type: "s",
465
- n: "Unnamed",
466
- p: [0, 0],
467
- a: 0,
468
- fric: 0.3,
469
- fricp: false,
470
- re: 0.8,
471
- de: 0.3,
472
- lv: [0, 0],
473
- av: 0,
474
- ld: 0,
475
- ad: 0,
476
- fr: false,
477
- bu: false,
478
- cf: { x: 0, y: 0, w: true, ct: 0 },
479
- fx: [],
480
- f_c: 1,
481
- f_p: true,
482
- f_1: true,
483
- f_2: true,
484
- f_3: true,
485
- f_4: true,
486
- };
487
- map.physics.bodies[x].type = binaryReader.readUTF();
488
- map.physics.bodies[x].n = binaryReader.readUTF();
489
- map.physics.bodies[x].p = [
490
- binaryReader.readDouble(),
491
- binaryReader.readDouble(),
492
- ];
493
- map.physics.bodies[x].a = binaryReader.readDouble();
494
- map.physics.bodies[x].fric = binaryReader.readDouble();
495
- map.physics.bodies[x].fricp = binaryReader.readBoolean();
496
- map.physics.bodies[x].re = binaryReader.readDouble();
497
- map.physics.bodies[x].de = binaryReader.readDouble();
498
- map.physics.bodies[x].lv = [
499
- binaryReader.readDouble(),
500
- binaryReader.readDouble(),
501
- ];
502
- map.physics.bodies[x].av = binaryReader.readDouble();
503
- map.physics.bodies[x].ld = binaryReader.readDouble();
504
- map.physics.bodies[x].ad = binaryReader.readDouble();
505
- map.physics.bodies[x].fr = binaryReader.readBoolean();
506
- map.physics.bodies[x].bu = binaryReader.readBoolean();
507
- map.physics.bodies[x].cf.x = binaryReader.readDouble();
508
- map.physics.bodies[x].cf.y = binaryReader.readDouble();
509
- map.physics.bodies[x].cf.ct = binaryReader.readDouble();
510
- map.physics.bodies[x].cf.w = binaryReader.readBoolean();
511
- map.physics.bodies[x].f_c = binaryReader.readShort();
512
- map.physics.bodies[x].f_1 = binaryReader.readBoolean();
513
- map.physics.bodies[x].f_2 = binaryReader.readBoolean();
514
- map.physics.bodies[x].f_3 = binaryReader.readBoolean();
515
- map.physics.bodies[x].f_4 = binaryReader.readBoolean();
516
- if (map.v >= 2) {
517
- map.physics.bodies[x].f_p = binaryReader.readBoolean();
518
- }
519
- thingie[50] = binaryReader.readShort();
520
- for (thingie[66] = 0; thingie[66] < thingie[50]; thingie[66]++) {
521
- map.physics.bodies[x].fx.push(binaryReader.readShort());
522
- }
523
- }
524
- thingie[48] = binaryReader.readShort();
525
- for (thingie[36] = 0; thingie[36] < thingie[48]; thingie[36]++) {
526
- map.spawns[thingie[36]] = {
527
- x: 400,
528
- y: 300,
529
- xv: 0,
530
- yv: 0,
531
- priority: 5,
532
- r: true,
533
- f: true,
534
- b: true,
535
- gr: false,
536
- ye: false,
537
- n: "Spawn",
538
- };
539
- thingie[80] = map.spawns[thingie[36]];
540
- thingie[80].x = binaryReader.readDouble();
541
- thingie[80].y = binaryReader.readDouble();
542
- thingie[80].xv = binaryReader.readDouble();
543
- thingie[80].yv = binaryReader.readDouble();
544
- thingie[80].priority = binaryReader.readShort();
545
- thingie[80].r = binaryReader.readBoolean();
546
- thingie[80].f = binaryReader.readBoolean();
547
- thingie[80].b = binaryReader.readBoolean();
548
- thingie[80].gr = binaryReader.readBoolean();
549
- thingie[80].ye = binaryReader.readBoolean();
550
- thingie[80].n = binaryReader.readUTF();
551
- }
552
- thingie[40] = binaryReader.readShort();
553
- for (thingie[18] = 0; thingie[18] < thingie[40]; thingie[18]++) {
554
- map.capZones[thingie[18]] = { n: "Cap Zone", ty: 1, l: 10, i: -1 };
555
- map.capZones[thingie[18]].n = binaryReader.readUTF();
556
- map.capZones[thingie[18]].l = binaryReader.readDouble();
557
- map.capZones[thingie[18]].i = binaryReader.readShort();
558
- if (map.v >= 6) {
559
- map.capZones[thingie[18]].ty = binaryReader.readShort();
560
- }
561
- }
562
- thingie[39] = binaryReader.readShort();
563
- for (thingie[94] = 0; thingie[94] < thingie[39]; thingie[94]++) {
564
- thingie[75] = binaryReader.readShort();
565
- if (thingie[75] == 1) {
566
- map.physics.joints[thingie[94]] = {
567
- type: "rv",
568
- d: {
569
- la: 0,
570
- ua: 0,
571
- mmt: 0,
572
- ms: 0,
573
- el: false,
574
- em: false,
575
- cc: false,
576
- bf: 0,
577
- dl: true,
578
- },
579
- aa: [0, 0],
580
- };
581
- thingie[53] = map.physics.joints[thingie[94]];
582
- thingie[53].d.la = binaryReader.readDouble();
583
- thingie[53].d.ua = binaryReader.readDouble();
584
- thingie[53].d.mmt = binaryReader.readDouble();
585
- thingie[53].d.ms = binaryReader.readDouble();
586
- thingie[53].d.el = binaryReader.readBoolean();
587
- thingie[53].d.em = binaryReader.readBoolean();
588
- thingie[53].aa = [
589
- binaryReader.readDouble(),
590
- binaryReader.readDouble(),
591
- ];
592
- }
593
- if (thingie[75] == 2) {
594
- map.physics.joints[thingie[94]] = {
595
- type: "d",
596
- d: { fh: 0, dr: 0, cc: false, bf: 0, dl: true },
597
- aa: [0, 0],
598
- ab: [0, 0],
599
- };
600
- thingie[27] = map.physics.joints[thingie[94]];
601
- thingie[27].d.fh = binaryReader.readDouble();
602
- thingie[27].d.dr = binaryReader.readDouble();
603
- thingie[27].aa = [
604
- binaryReader.readDouble(),
605
- binaryReader.readDouble(),
606
- ];
607
- thingie[27].ab = [
608
- binaryReader.readDouble(),
609
- binaryReader.readDouble(),
610
- ];
611
- }
612
- if (thingie[75] == 3) {
613
- map.physics.joints[thingie[94]] = {
614
- type: "lpj",
615
- d: { cc: false, bf: 0, dl: true },
616
- pax: 0,
617
- pay: 0,
618
- pa: 0,
619
- pf: 0,
620
- pl: 0,
621
- pu: 0,
622
- plen: 0,
623
- pms: 0,
624
- };
625
- thingie[23] = map.physics.joints[thingie[94]];
626
- thingie[23].pax = binaryReader.readDouble();
627
- thingie[23].pay = binaryReader.readDouble();
628
- thingie[23].pa = binaryReader.readDouble();
629
- thingie[23].pf = binaryReader.readDouble();
630
- thingie[23].pl = binaryReader.readDouble();
631
- thingie[23].pu = binaryReader.readDouble();
632
- thingie[23].plen = binaryReader.readDouble();
633
- thingie[23].pms = binaryReader.readDouble();
634
- }
635
- if (thingie[75] == 4) {
636
- map.physics.joints[thingie[94]] = {
637
- type: "lsj",
638
- d: { cc: false, bf: 0, dl: true },
639
- sax: 0,
640
- say: 0,
641
- sf: 0,
642
- slen: 0,
643
- };
644
- thingie[47] = map.physics.joints[thingie[94]];
645
- thingie[47].sax = binaryReader.readDouble();
646
- thingie[47].say = binaryReader.readDouble();
647
- thingie[47].sf = binaryReader.readDouble();
648
- thingie[47].slen = binaryReader.readDouble();
649
- }
650
- map.physics.joints[thingie[94]].ba = binaryReader.readShort();
651
- map.physics.joints[thingie[94]].bb = binaryReader.readShort();
652
- map.physics.joints[thingie[94]].d.cc = binaryReader.readBoolean();
653
- map.physics.joints[thingie[94]].d.bf = binaryReader.readDouble();
654
- map.physics.joints[thingie[94]].d.dl = binaryReader.readBoolean();
655
- }
656
- return map;
657
- };
658
- return decodeFromDatabase(rawdata);
659
- },
660
- mapEncode: function (map) {
661
- // unfinished
662
- },
663
- setAddress: function (gameInfo) {
664
- if (
665
- gameInfo.address == undefined ||
666
- gameInfo.roomname == undefined ||
667
- gameInfo.server == undefined ||
668
- gameInfo.passbypass == undefined
669
- ) {
670
- console.log("Room not found");
671
- return false;
672
- }
673
- this.address = gameInfo.address;
674
- this.roomname = gameInfo.roomname;
675
- this.server = gameInfo.server;
676
- this.passbypass = gameInfo.passbypass;
677
- },
678
- getAddressFromRoomName: async function (name) {
679
- let response = await this.getRoomByName(name);
680
- let serv = {};
681
- let addr = await this.getRoomAddress(response.id);
682
- serv.roomname = response.roomname;
683
- serv.address = addr.address;
684
- serv.server = addr.server;
685
- serv.passbypass = "";
686
- return serv;
687
- },
688
- sendRoomInfo: function (id, username) {
689
- let welcomemsg = `Welcome`;
690
- if (username != undefined || username != null) {
691
- welcomemsg = `Welcome ${username}!`;
692
- }
693
- let msg = [
694
- 11,
695
- {
696
- sid: id,
697
- gs: {
698
- map: {
699
- v: 13,
700
- s: {
701
- re: false,
702
- nc: false,
703
- pq: 1,
704
- gd: 25,
705
- fl: false,
706
- },
707
- physics: {
708
- shapes: [],
709
- fixtures: [],
710
- bodies: [],
711
- bro: [],
712
- joints: [],
713
- ppm: 12,
714
- },
715
- spawns: [],
716
- capZones: [],
717
- m: {
718
- a: "🤓",
719
- n: welcomemsg,
720
- dbv: 2,
721
- dbid: 742086,
722
- authid: -1,
723
- date: "2022-07-29 17:46:46",
724
- rxid: 0,
725
- rxn: "",
726
- rxa: "",
727
- rxdb: 1,
728
- cr: ["🤓"],
729
- pub: true,
730
- mo: "",
731
- vu: 0,
732
- vd: 0,
733
- },
734
- },
735
- gt: 2,
736
- wl: "21!?!",
737
- q: false,
738
- tl: false,
739
- tea: false,
740
- ga: "b",
741
- mo: "b",
742
- bal: [],
743
- GMMode: "",
744
- },
745
- },
746
- ];
747
- return `42${JSON.stringify(msg)}`;
748
- },
749
- getSocketID: async function (server) {
750
- var url = `https://${server}.bonk.io/socket.io/?EIO=3&transport=websocket`;
751
- return new Promise((resolve, reject) => {
752
- axios.get(url).then(function (response) {
753
- var socketid = response.data.substring(12, 32);
754
- resolve(socketid);
755
- });
756
- }).catch(function (error) {
757
- console.log(error);
758
- });
759
- },
760
- getAddressFromLink: async function (link) {
761
- // make an http request to the link and pull out the room address from the html
762
- return new Promise((resolve, reject) => {
763
- axios.get(link).then(function (response) {
764
- let gameInfo = response.data.match(
765
- /autoJoin = {"address":"(.*?)","roomname":"(.*?)","server":"(.*?)","passbypass":"(.*?)","r":"success"}/,
766
- );
767
- gameInfo = {
768
- address: gameInfo[1],
769
- roomname: gameInfo[2],
770
- server: gameInfo[3],
771
- passbypass: gameInfo[4],
772
- };
773
- resolve(gameInfo);
774
- });
775
- }).catch(function (error) {
776
- console.log(error);
777
- });
778
- },
779
- getToken: async function () {
780
- var url = "https://bonk2.io/scripts/login_legacy.php";
781
- return new Promise((resolve, reject) => {
782
- var headers = {
783
- "Content-Type": "application/x-www-form-urlencoded",
784
- };
785
- var data = `username=${this.account.username}&password=${this.account.password}&remember=true`;
786
- axios.post(url, data, { headers: headers }).then(function (response) {
787
- resolve(response.data.token);
788
- });
789
- });
790
- },
791
- joinRoom: function (options) {
792
- if (options.address == undefined) {
793
- throw new Error("address is undefined");
794
- }
795
- if (options.account.guest == undefined) {
796
- options.account.guest = true;
797
- }
798
- if (options.token == undefined) {
799
- if (options.account.guest != true) {
800
- throw new Error(`No token provided and is not a guest!`);
801
- }
802
- }
803
- if (options.peerid == undefined) {
804
- options.peerid = Math.random().toString(36).substr(2, 10) + "v00000";
805
- }
806
- if (options.account.username == undefined) {
807
- options.account.username = `Robot${Math.random()
808
- .toString()
809
- .substr(2, 5)}`;
810
- }
811
- if (options.roompassword == undefined) {
812
- options.roompassword = "";
813
- }
814
- if (options.basecolor == undefined) {
815
- options.basecolor = 16448250;
816
- }
817
- if (options.skin == undefined) {
818
- options.skin = `{"id":30,"scale":0.30000001192092896,"angle":0,"x":0,"y":0,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.07894168794155121,"angle":231.9313201904297,"x":-9.684389114379883,"y":2.921388626098633,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08011436462402344,"angle":246.96766662597656,"x":-7.4090142250061035,"y":6.844449520111084,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08011436462402344,"angle":-69.44682312011719,"x":7.4201555252075195,"y":6.805218696594238,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08325429260730743,"angle":-53.76435089111328,"x":9.440908432006836,"y":3.1005043983459473,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08254065364599228,"angle":7.713021755218506,"x":-1.975311517715454,"y":-9.978830337524414,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08310862630605698,"angle":-6.316278457641602,"x":2.2820658683776855,"y":-9.94627857208252,"flipX":false,"flipY":false,"color":16777215},{"id":13,"scale":0.3945557773113251,"angle":0.04141417145729065,"x":-0.0322730652987957,"y":-0.060396190732717514,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.21413731575012207,"angle":419.81427001953125,"x":-2.4916510581970215,"y":1.3715696334838867,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.21413731575012207,"angle":120.56624603271484,"x":2.608327865600586,"y":1.3715696334838867,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.21413731575012207,"angle":0.39198538661003113,"x":0,"y":-3.107584238052368,"flipX":false,"flipY":false,"color":0},{"id":30,"scale":1.0002638101577759,"angle":-1.4328136444091797,"x":-0.04256964847445488,"y":0,"flipX":false,"flipY":false,"color":16777215},{"id":13,"scale":0.5588991045951843,"angle":-0.6648434996604919,"x":0,"y":0,"flipX":false,"flipY":false,"color":16777215},{"id":34,"scale":0.759579062461853,"angle":124.82804870605469,"x":-10.603617668151855,"y":-4.556829929351807,"flipX":false,"flipY":false,"color":0},{"id":34,"scale":0.7667332887649536,"angle":-3.340736150741577,"x":-0.7606570720672607,"y":11.768919944763184,"flipX":false,"flipY":false,"color":0},{"id":34,"scale":0.7913457751274109,"angle":241.08135986328125,"x":9.895292282104492,"y":-6.6403703689575195,"flipX":false,"flipY":false,"color":0}`;
819
- }
820
- if (options.account.guest == true) {
821
- this.socket.send(
822
- `42[13,{"joinID":"${options.address}","roomPassword":"${options.roompassword}","guest":true,"dbid":2,"version":44,"peerID":"${options.peerid}","bypass":"","guestName":"${options.account.username}","avatar":{"layers":[${options.skin}],"bc":${options.basecolor}}}]`,
823
- );
824
- } else {
825
- this.socket.send(
826
- `42[13,{"joinID":"${options.address}","roomPassword":"${options.roompassword}","guest":false,"dbid":2,"version":44,"peerID":"${options.peerid}","bypass":"","token":"${options.token}","avatar":{"layers":[${options.skin}],"bc":${options.basecolor}}}]`,
827
- );
828
- }
829
- },
830
- createRoom: function (options) {
831
- if (options.roomname == undefined) {
832
- options.roomname = `Super cool room`;
833
- }
834
- if (options.maxplayers == undefined) {
835
- options.maxplayers = 8;
836
- }
837
- if (options.account.guest == undefined) {
838
- options.account.guest = true;
839
- }
840
- if (options.token == undefined) {
841
- if (options.account.guest != true) {
842
- throw new Error(`No token provided and is not a guest!`);
843
- }
844
- }
845
- if (options.peerid == undefined) {
846
- options.peerid = Math.random().toString(36).substr(2, 10) + "v00000";
847
- }
848
- if (options.username == undefined) {
849
- options.username = `Robot${Math.random().toString().substr(2, 5)}`;
850
- }
851
- if (options.roompassword == undefined) {
852
- options.roompassword = "";
853
- }
854
- if (options.basecolor == undefined) {
855
- options.basecolor = 0;
856
- }
857
- if (options.skin == undefined) {
858
- options.skin = `{"id":30,"scale":0.30000001192092896,"angle":0,"x":0,"y":0,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.07894168794155121,"angle":231.9313201904297,"x":-9.684389114379883,"y":2.921388626098633,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08011436462402344,"angle":246.96766662597656,"x":-7.4090142250061035,"y":6.844449520111084,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08011436462402344,"angle":-69.44682312011719,"x":7.4201555252075195,"y":6.805218696594238,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08325429260730743,"angle":-53.76435089111328,"x":9.440908432006836,"y":3.1005043983459473,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08254065364599228,"angle":7.713021755218506,"x":-1.975311517715454,"y":-9.978830337524414,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.08310862630605698,"angle":-6.316278457641602,"x":2.2820658683776855,"y":-9.94627857208252,"flipX":false,"flipY":false,"color":16777215},{"id":13,"scale":0.3945557773113251,"angle":0.04141417145729065,"x":-0.0322730652987957,"y":-0.060396190732717514,"flipX":false,"flipY":false,"color":16777215},{"id":75,"scale":0.21413731575012207,"angle":419.81427001953125,"x":-2.4916510581970215,"y":1.3715696334838867,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.21413731575012207,"angle":120.56624603271484,"x":2.608327865600586,"y":1.3715696334838867,"flipX":false,"flipY":false,"color":0},{"id":75,"scale":0.21413731575012207,"angle":0.39198538661003113,"x":0,"y":-3.107584238052368,"flipX":false,"flipY":false,"color":0},{"id":30,"scale":1.0002638101577759,"angle":-1.4328136444091797,"x":-0.04256964847445488,"y":0,"flipX":false,"flipY":false,"color":16777215},{"id":13,"scale":0.5588991045951843,"angle":-0.6648434996604919,"x":0,"y":0,"flipX":false,"flipY":false,"color":16777215},{"id":34,"scale":0.759579062461853,"angle":124.82804870605469,"x":-10.603617668151855,"y":-4.556829929351807,"flipX":false,"flipY":false,"color":0},{"id":34,"scale":0.7667332887649536,"angle":-3.340736150741577,"x":-0.7606570720672607,"y":11.768919944763184,"flipX":false,"flipY":false,"color":0},{"id":34,"scale":0.7913457751274109,"angle":241.08135986328125,"x":9.895292282104492,"y":-6.6403703689575195,"flipX":false,"flipY":false,"color":0}`;
859
- }
860
- if (options.account.guest == true) {
861
- this.socket.send(
862
- `42[12,{"peerID":"${options.peerid}","roomName":"${options.roomname}","maxPlayers":${options.maxplayers},"password":"${options.roompassword}","dbid":11822936,"guest":true,"minLevel":0,"maxLevel":999,"latitude":41.7227,"longitude":-72.2196,"country":"US","version":44,"hidden":0,"quick":false,"mode":"custom","token":"${options.token}","avatar":{"layers":[${options.skin}],"bc":${options.basecolor}}}]`,
863
- );
864
- } else {
865
- this.socket.send(
866
- `42[12,{"peerID":"${options.peerid}","roomName":"${options.roomname}","maxPlayers":${options.maxplayers},"password":"${options.roompassword}","dbid":11822936,"guest":false,"minLevel":0,"maxLevel":999,"latitude":41.7227,"longitude":-72.2196,"country":"US","version":44,"hidden":0,"quick":false,"mode":"custom","token":"${options.token}","avatar":{"layers":[${options.skin}],"bc":${options.basecolor}}}]`,
867
- );
868
- }
869
- return true;
870
- },
871
- getRoomByName: async function (roomname) {
872
- return new Promise(async (resolve, reject) => {
873
- try {
874
- var rooms = await this.getRooms();
875
- for (var i = rooms.length - 1; i >= 0; i--) {
876
- if (roomname != undefined) {
877
- if (rooms[i].roomname == roomname) {
878
- resolve(rooms[i]);
879
- }
880
- }
881
- }
882
- resolve(false);
883
- } catch (error) {
884
- console.log(error);
885
- }
886
- });
887
- },
888
- getRooms: async function () {
889
- var url = "https://bonk2.io/scripts/getrooms.php";
890
- var data = `version=${this.protocol_version}&gl=y&token=`;
891
- return new Promise((resolve, reject) => {
892
- axios
893
- .post(url, data)
894
- .then(function (response) {
895
- var roomdata = response.data;
896
- resolve(roomdata.rooms);
897
- })
898
- .catch(function (error) {
899
- console.log(error);
900
- });
901
- });
902
- },
903
- getRoomAddress: async function (id) {
904
- var url = "https://bonk2.io/scripts/getroomaddress.php";
905
- var data = `id=${id}`;
906
-
907
- return new Promise((resolve, reject) => {
908
- axios.post(url, data).then(function (response) {
909
- var roomjoinid = response.data;
910
- resolve(roomjoinid);
911
- });
912
- });
913
- },
914
- getPlayerByID: function (id) {
915
- for (var i = this.game.players.length - 1; i >= 0; i--) {
916
- if (this.game.players[i] != undefined || this.game.players[i] != null) {
917
- if (this.game.players[i].id == id) {
918
- return this.game.players[i];
919
- }
920
- }
921
- }
922
- return false;
923
- },
924
- parseSocket: function (message) {
925
- let numToTeam = {
926
- 0: `spectator`,
927
- 1: `ffa`,
928
- 2: `red`,
929
- 3: `blue`,
930
- 4: `green`,
931
- 5: `yellow`,
932
- };
933
- if (message == "3probe") {
934
- return `{"type":"3probe"}`;
935
- }
936
- if (message == "40") {
937
- return `{"type":"40"}`;
938
- }
939
- if (message == "41") {
940
- return `{"type":"41"}`;
941
- }
942
- if (JSON.parse(message.substring(2))) {
943
- var message = JSON.parse(message.substring(2));
944
- try {
945
- function switchyswitch(message) {
946
- switch (message[0]) {
947
- case 1:
948
- return `{"type":"ping"}`;
949
- case 2:
950
- return `{"type":"roomaddr","roomaddr":"${message[1]}"}`;
951
- case 3:
952
- return `{"type":"roomjoin","roombypass":"${
953
- message[7]
954
- }","roomid":"${message[6]}","teamslocked":"${
955
- message[5]
956
- }","myid":"${message[1]}","hostid":"${
957
- message[2]
958
- }","playerdata":${JSON.stringify(message[3])}}`;
959
- case 4:
960
- if (message[4] == true) {
961
- return `{"type":"playerjoin","id":"${message[1]}","peerid":"${
962
- message[2]
963
- }","username":"${
964
- message[3]
965
- }","level":"0","guest":true,"skin":${JSON.stringify(
966
- message[7],
967
- )},"tabbed":${message[6]}}`;
968
- } else {
969
- return `{"type":"playerjoin","id":"${message[1]}","peerid":"${
970
- message[2]
971
- }","username":"${message[3]}","level":"${
972
- message[5]
973
- }","guest":false,"skin":${JSON.stringify(
974
- message[7],
975
- )},"tabbed":${message[6]}}`;
976
- }
977
- case 5:
978
- return `{"type":"playerleave","id":"${message[1]}"}`;
979
- case 6:
980
- if (message[2] == `-1`) {
981
- return `{"type":"gameclose"}`;
982
- } else {
983
- return `{"type":"hostleave","oldid":"${message[1]}","newid":"${message[2]}"}`;
984
- }
985
- case 7:
986
- if (
987
- !message[2].hasOwnProperty("f") ||
988
- !message[2].hasOwnProperty("c") ||
989
- !message[2].hasOwnProperty("i")
990
- ) {
991
- return `{"type":"playerinputerror"}`;
992
- }
993
- return `{"type":"playerinput","id":"${message[1]}","input":${
994
- message[2][`i`]
995
- },"frame":${message[2][`f`]},"sequence":${message[2][`c`]}}`;
996
- case 8:
997
- return `{"type":"playerready","id":"${message[1]}","ready":${message[2]}}`;
998
- case 13:
999
- return `{"type":"gamecancel"}`;
1000
- case 15:
1001
- return `{"type":"gamestart"}`;
1002
- case 16:
1003
- return `{"type":"ratelimit","limit":"${message[1]}"}`;
1004
- case 18:
1005
- return `{"type":"playermove","id":"${message[1]}","team":${message[2]}}`;
1006
- case 19:
1007
- return `{"type":"teamslock","teamslocked":${message[1]}}`;
1008
- case 20:
1009
- return `{"type":"chatmessage","id":"${message[1]}","message":"${message[2]}"}`;
1010
- case 21:
1011
- return `{"type":"mapdata","data":"${message[1]}"}`;
1012
- case 23:
1013
- return `{"type":"timesync","time":"${message[1].result}","id":"${message[1].id}"}`;
1014
- case 24:
1015
- return `{"type":"playerkick","id":"${message[1]}"}`;
1016
- case 26:
1017
- return `{"type":"modechange","mode":"${message[2]}","rootmode":"${message[1]}"}`;
1018
- case 27:
1019
- return `{"type":"roundschange","rounds":${message[1]}}`;
1020
- case 29:
1021
- return `{"type":"mapswap","data":"${message[1]}"}`;
1022
- case 33:
1023
- return `{"type":"hostmaprequest","mapdata":"${message[1]}","id":"${message[2]}"}`;
1024
- case 34:
1025
- return `{"type":"maprequest","map":"${message[1]}","author":"${message[2]}","id":"${message[3]}"}`;
1026
- case 36:
1027
- return `{"type":"changebalance","id":"${message[1]}","balance":"${message[2]}"}`;
1028
- case 40:
1029
- return `{"type":"savereplay","id":"${message[1]}"}`;
1030
- case 41:
1031
- return `{"type":"hosttransfer","oldHost":"${
1032
- message[1][`oldHost`]
1033
- }","newHost":"${message[1][`newHost`]}"}`;
1034
- case 42:
1035
- return `{"type":"friend","id":"${message[1]}"}`;
1036
- case 43:
1037
- return `{"type":"countdown","countdown":"${message[1]}"}`;
1038
- case 44:
1039
- return `{"type":"countdownabort"}`;
1040
- case 45:
1041
- return `{"type":"playerlevelup","id":"${message[1]}","level":"${message[2]}"}`;
1042
- case 46:
1043
- if (message[1][`newLevel`] != undefined) {
1044
- return `{"type":"levelup","xp":${
1045
- message[1][`newXP`]
1046
- },"level":${message[1][`newLevel`]},"token","${
1047
- message[1][`newToken`]
1048
- }"}`;
1049
- } else {
1050
- return `{"type":"xp","xp":${message[1][`newXP`]}}`;
1051
- }
1052
- case 48:
1053
- message = message[1];
1054
- let decodedState = this.decodeState(message.state);
1055
- let decodedMap = this.decodeMap(message.gs.map);
1056
- return `{"type":"state","gt":${message.gt},"rounds":${
1057
- message.wl
1058
- },"quickplay":${message.q},"teamsLocked":${
1059
- message.tl
1060
- },"teams":${message.tea},"gameType":"${message.ga}","mode":"${
1061
- message.mo
1062
- }","balance":${JSON.stringify(
1063
- message.bal,
1064
- )}, "inputs":${JSON.stringify(message.inputs)}, "framecount":${
1065
- message.fc
1066
- }, "stateID":${message.stateID}, "admin":${JSON.stringify(
1067
- message.admin,
1068
- )}, "map":${JSON.stringify(
1069
- message.gs.map,
1070
- )}, "mapDecoded":${JSON.stringify(
1071
- decodedMap,
1072
- )}, "state":${JSON.stringify(
1073
- message.state,
1074
- )}, "stateDecoded":${JSON.stringify(
1075
- decodedState,
1076
- )} "random":${JSON.stringify(message.random)}}`;
1077
- case 52:
1078
- return `{"type":"playertabbed","id":"${message[1]}","tabbed":${message[2]}}`;
1079
- case 58:
1080
- return `{"type":"roomnamechange","name":"${message[1]}"}`;
1081
- case 59:
1082
- if (message[1] == `1`) {
1083
- return `{"type":"roompassword","password":true}`;
1084
- } else {
1085
- return `{"type":"roompassword","password":false}`;
1086
- }
1087
- case 39:
1088
- return `{"type":"teamtoggle","teams":"${message[1]}"}`;
1089
- }
1090
- console.log(`BonkBot could not identify => `);
1091
- console.log(message);
1092
- return `{"type":"none"}`;
1093
- }
1094
- return JSON.parse(switchyswitch(message));
1095
- } catch (error) {
1096
- console.log(
1097
- `Err: ${error}\nBonkbot: Probably just a json parsing error, you can ignore this.`,
1098
- );
1099
- return `{"type":"none"}`;
1100
- }
1101
- }
1102
- },
1103
- autoHandlePacket: function (data) {
1104
- switch (data.type) {
1105
- case "none":
1106
- break;
1107
- case "ping":
1108
- this.socket.send(this.timesync());
1109
- break;
1110
- case "roomjoin":
1111
- this.id = data.myid;
1112
- this.team = data.myteam;
1113
- this.game.host = data.hostid;
1114
- this.game.roomid = data.roomid;
1115
- this.game.roombypass = data.roombypass;
1116
- this.game.teamslocked = data.teamslocked;
1117
- for (let i = 0; i < data.playerdata.length; i++) {
1118
- let player = data.playerdata[i];
1119
- if (player != undefined || player != null) {
1120
- player.id = i;
1121
- player.username = player.userName;
1122
- delete player.userName;
1123
- player.here = true;
1124
- this.game.players[player.id] = player;
1125
- }
1126
- }
1127
- break;
1128
- case "playerjoin":
1129
- this.game.players[data.id] = {
1130
- id: data.id,
1131
- username: data.username,
1132
- peerID: data.peerid,
1133
- level: data.level,
1134
- guest: data.guest,
1135
- tabbed: data.tabbed,
1136
- skin: data.skin,
1137
- ready: false,
1138
- here: true,
1139
- };
1140
- if (this.game.host == this.id) {
1141
- this.socket.send(this.sendRoomInfo(data.id, data.username));
1142
- }
1143
- break;
1144
- case "playerleave":
1145
- // delete this.game.players[data.id]
1146
- this.game.players[data.id].here = false;
1147
- break;
1148
- case "hosttransfer":
1149
- this.game.host = data.newHost;
1150
- break;
1151
- case "playerready":
1152
- this.game.players[data.id].ready = data.ready;
1153
- break;
1154
- case "teamslock":
1155
- this.game.teamslocked = data.teamslocked;
1156
- break;
1157
- case "tabbed":
1158
- this.game.players[data.id].tabbed = data.tabbed;
1159
- break;
1160
- case "roomnamechange":
1161
- this.game.roomname = data.name;
1162
- break;
1163
- case "roundschange":
1164
- this.game.rounds = data.rounds;
1165
- break;
1166
- case "hostleave":
1167
- this.game.host = data.newid;
1168
- break;
1169
- case "playerkick":
1170
- if (data.id == this.id) {
1171
- this.banned = true;
1172
- }
1173
- break;
1174
- case "ratelimit":
1175
- if (data.limit == "banned") {
1176
- bot.events.emit("banned");
1177
- }
1178
- break;
1179
- }
1180
- },
1181
- keepAlive: function () {
1182
- // send timesync every 5 seconds
1183
- this.keepAliveLoop = setInterval(() => {
1184
- this.socket.send(this.timesync());
1185
- }, 5000);
1186
- },
1187
- init: async function () {
1188
- this.token = await this.getToken();
1189
- this.events.emit("ready");
1190
- },
1191
- connect: async function () {
1192
- let self = this;
1193
-
1194
- // clear previous events
1195
- // this.events.removeAllListeners()
1196
-
1197
- this.socketid = await self.getSocketID(this.server);
1198
- this.socketAddr = `wss://${this.server}.bonk.io/socket.io/?EIO=3&transport=websocket&sid=${this.socketid}`;
1199
- this.socket = new WebSocket(this.socketAddr);
1200
- this.socket.addEventListener("open", () => {
1201
- self.socket.send(`2probe`);
1202
- self.socket.send(`5`);
1203
- self.socket.send(self.timesync());
1204
- self.joinRoom(self);
1205
- this.connected = true;
1206
- this.events.emit("connect");
1207
- this.keepAlive();
1208
- });
1209
- this.socket.addEventListener("message", (e) => {
1210
- let message = self.parseSocket(e.data);
1211
- self.events.emit("packet", message);
1212
- if (message.type == "chatmessage") {
1213
- for (let i = 0; i < self.game.players.length; i++) {
1214
- let player = self.game.players[i];
1215
- if (player != undefined || player != null) {
1216
- if (player.here == true) {
1217
- if (player.id == message.id) {
1218
- message.username = player.username;
1219
- message.peerID = player.peerID;
1220
- message.level = player.level;
1221
- message.guest = player.guest;
1222
- message.tabbed = player.tabbed;
1223
- message.skin = player.avatar;
1224
- message.ready = player.ready;
1225
- message.team = player.team;
1226
- message.id = player.id;
1227
- message.here = player.here;
1228
- }
1229
- }
1230
- }
1231
- }
1232
- self.events.emit("chatmessage", message);
1233
- }
1234
- if (message.type == "playerkick") {
1235
- if (message.id == self.id) {
1236
- self.events.emit("banned");
1237
- self.events.removeAllListeners();
1238
- self.socket.close();
1239
- }
1240
- }
1241
- if (message.type == "playerleave") {
1242
- self.events.emit("leave", message);
1243
- }
1244
- if (message.type == "playerjoin") {
1245
- self.events.emit("join", message);
1246
- }
1247
- });
1248
- this.socket.addEventListener("close", (e) => {
1249
- self.events.emit("disconnect");
1250
- this.connected = false;
1251
- });
1252
- },
1253
- disconnect: function () {
1254
- this.connected = false;
1255
- if (this.socket) {
1256
- this.socket.close();
1257
- }
1258
- },
1259
- clearListeners: function () {
1260
- this.events.removeAllListeners();
1261
- },
1262
- };
1263
- };
1264
- module.exports = {
1265
- createBot: createBot,
1266
- };