teeworlds 2.0.5 → 2.0.8
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/README.md +5 -2
- package/index.ts +1 -1
- package/lib/huffman.js +0 -46
- package/lib/huffman.ts +1 -115
- package/lib/snapshot.js +8 -4
- package/lib/snapshot.ts +8 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# tw-chatonly
|
|
2
2
|
Library to connect a bot to a Teeworlds server.
|
|
3
3
|
|
|
4
|
+
https://www.npmjs.com/package/teeworlds
|
|
5
|
+
|
|
6
|
+
|
|
4
7
|
# Usage
|
|
5
8
|
Example file:
|
|
6
|
-
```const
|
|
7
|
-
let client = new
|
|
9
|
+
```const teeworlds = require('teeworlds');
|
|
10
|
+
let client = new teeworlds.Client("127.0.0.1", 8303, "nameless tee");
|
|
8
11
|
|
|
9
12
|
client.connect();
|
|
10
13
|
|
package/index.ts
CHANGED
package/lib/huffman.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// from Ryozuki, found on ddnet discord ( 11.10.2018 )
|
|
3
|
-
// from typing import List
|
|
4
|
-
// from sys import argv
|
|
5
2
|
var FREQ_TABLE = [
|
|
6
3
|
1 << 30, 4545, 2657, 431, 1950, 919, 444, 482, 2244, 617, 838, 542, 715, 1814, 304, 240, 754, 212, 647, 186,
|
|
7
4
|
283, 131, 146, 166, 543, 164, 167, 136, 179, 859, 363, 113, 157, 154, 204, 108, 137, 180, 202, 176,
|
|
@@ -17,22 +14,9 @@ var FREQ_TABLE = [
|
|
|
17
14
|
12, 18, 18, 27, 20, 18, 15, 19, 11, 17, 33, 12, 18, 15, 19, 18, 16, 26, 17, 18,
|
|
18
15
|
9, 10, 25, 22, 22, 17, 20, 16, 6, 16, 15, 20, 14, 18, 24, 335, 1517
|
|
19
16
|
], HUFFMAN_EOF_SYMBOL = 256, HUFFMAN_MAX_SYMBOLS = HUFFMAN_EOF_SYMBOL + 1, HUFFMAN_MAX_NODES = HUFFMAN_MAX_SYMBOLS * 2 - 1, HUFFMAN_LUTBITS = 10, HUFFMAN_LUTSIZE = 1 << HUFFMAN_LUTBITS, HUFFMAN_LUTMASK = HUFFMAN_LUTSIZE - 1;
|
|
20
|
-
// class HuffmanConstructNode {
|
|
21
|
-
// node_id: number;
|
|
22
|
-
// frequency: number;
|
|
23
|
-
// constructor(node_id: number, frequency: number) {
|
|
24
|
-
// this.node_id = node_id;
|
|
25
|
-
// this.frequency = frequency;
|
|
26
|
-
// }
|
|
27
|
-
// }
|
|
28
|
-
// class HuffmanConstructNode:
|
|
29
|
-
// def __init__(self):
|
|
30
|
-
// self.node_id: int = None
|
|
31
|
-
// self.frequency: int = None
|
|
32
17
|
var Huffman = /** @class */ (function () {
|
|
33
18
|
function Huffman(frequencies) {
|
|
34
19
|
if (frequencies === void 0) { frequencies = FREQ_TABLE; }
|
|
35
|
-
// this.frequencies = frequencies;
|
|
36
20
|
this.nodes = new Array(HUFFMAN_MAX_NODES);
|
|
37
21
|
for (var i = 0; i < HUFFMAN_MAX_NODES; i++) {
|
|
38
22
|
this.nodes[i] = {};
|
|
@@ -41,7 +25,6 @@ var Huffman = /** @class */ (function () {
|
|
|
41
25
|
this.num_nodes = 0;
|
|
42
26
|
this.start_node_index = 0;
|
|
43
27
|
this.construct_tree(frequencies);
|
|
44
|
-
var xx = 0;
|
|
45
28
|
for (var i = 0; i < HUFFMAN_LUTSIZE; i++) {
|
|
46
29
|
var bits = i;
|
|
47
30
|
var broke = false;
|
|
@@ -153,34 +136,6 @@ var Huffman = /** @class */ (function () {
|
|
|
153
136
|
}
|
|
154
137
|
output.push(bits);
|
|
155
138
|
return Buffer.from(output);
|
|
156
|
-
/* output = bytearray()
|
|
157
|
-
bits = 0
|
|
158
|
-
bitcount = 0
|
|
159
|
-
|
|
160
|
-
if size is None:
|
|
161
|
-
size = len(inp_buffer)
|
|
162
|
-
|
|
163
|
-
for x in inp_buffer[start_index:size:]:
|
|
164
|
-
bits |= self.nodes[x].bits << bitcount
|
|
165
|
-
bitcount += self.nodes[x].numbits
|
|
166
|
-
|
|
167
|
-
while bitcount >= 8:
|
|
168
|
-
output.append(bits & 0xff)
|
|
169
|
-
bits >>= 8
|
|
170
|
-
bitcount -= 8
|
|
171
|
-
|
|
172
|
-
bits |= self.nodes[HUFFMAN_EOF_SYMBOL].bits << bitcount
|
|
173
|
-
bitcount += self.nodes[HUFFMAN_EOF_SYMBOL].numbits
|
|
174
|
-
|
|
175
|
-
while bitcount >= 8:
|
|
176
|
-
output.append(bits & 0xff)
|
|
177
|
-
bits >>= 8
|
|
178
|
-
bitcount -= 8
|
|
179
|
-
|
|
180
|
-
# write out last bits
|
|
181
|
-
output.append(bits)
|
|
182
|
-
return output
|
|
183
|
-
*/
|
|
184
139
|
};
|
|
185
140
|
Huffman.prototype.decompress = function (inp_buffer, size) {
|
|
186
141
|
if (size === void 0) { size = 0; }
|
|
@@ -203,7 +158,6 @@ var Huffman = /** @class */ (function () {
|
|
|
203
158
|
}
|
|
204
159
|
if (node_i == -1)
|
|
205
160
|
node_i = this.decode_lut[bits & HUFFMAN_LUTMASK];
|
|
206
|
-
// console.log(node_i, bits & HUFFMAN_LUTMASK, this.decode_lut)
|
|
207
161
|
if (this.nodes[node_i].numbits) {
|
|
208
162
|
bits >>= this.nodes[node_i].numbits;
|
|
209
163
|
bitcount -= this.nodes[node_i].numbits;
|
package/lib/huffman.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// from Ryozuki, found on ddnet discord ( 11.10.2018 )
|
|
2
|
-
// from typing import List
|
|
3
|
-
// from sys import argv
|
|
4
1
|
let FREQ_TABLE = [
|
|
5
2
|
1 << 30, 4545, 2657, 431, 1950, 919, 444, 482, 2244, 617, 838, 542, 715, 1814, 304, 240, 754, 212, 647, 186,
|
|
6
3
|
283, 131, 146, 166, 543, 164, 167, 136, 179, 859, 363, 113, 157, 154, 204, 108, 137, 180, 202, 176,
|
|
@@ -31,44 +28,12 @@ interface HuffmanNode {
|
|
|
31
28
|
symbol: number;
|
|
32
29
|
}
|
|
33
30
|
|
|
34
|
-
// class HuffmanNode {
|
|
35
|
-
// bits: number;
|
|
36
|
-
// numbits: number;
|
|
37
|
-
// left: number;
|
|
38
|
-
// right: number;
|
|
39
|
-
// symbol: number;
|
|
40
|
-
// constructor(/*bits: number, numbits: number, left: number, right: number, symbol: number*/) {
|
|
41
|
-
// this.bits = -1;
|
|
42
|
-
// this.numbits = -1;
|
|
43
|
-
// this.left = -1;
|
|
44
|
-
// this.right = -1;
|
|
45
|
-
// this.symbol = -1;
|
|
46
|
-
// }
|
|
47
|
-
|
|
48
|
-
// equal(node: HuffmanNode) {
|
|
49
|
-
// return this.bits == node.bits && this.numbits == node.numbits && this.left == node.left && this.right == node.right && this.symbol == node.symbol;
|
|
50
|
-
// }
|
|
51
|
-
|
|
52
|
-
// }
|
|
53
31
|
|
|
54
32
|
interface HuffmanConstructNode {
|
|
55
33
|
node_id: number;
|
|
56
34
|
frequency: number;
|
|
57
35
|
}
|
|
58
36
|
|
|
59
|
-
// class HuffmanConstructNode {
|
|
60
|
-
// node_id: number;
|
|
61
|
-
// frequency: number;
|
|
62
|
-
// constructor(node_id: number, frequency: number) {
|
|
63
|
-
// this.node_id = node_id;
|
|
64
|
-
// this.frequency = frequency;
|
|
65
|
-
// }
|
|
66
|
-
// }
|
|
67
|
-
// class HuffmanConstructNode:
|
|
68
|
-
// def __init__(self):
|
|
69
|
-
// self.node_id: int = None
|
|
70
|
-
// self.frequency: int = None
|
|
71
|
-
|
|
72
37
|
class Huffman {
|
|
73
38
|
nodes: HuffmanNode[];
|
|
74
39
|
decode_lut: number[];
|
|
@@ -76,7 +41,6 @@ class Huffman {
|
|
|
76
41
|
start_node_index: number;
|
|
77
42
|
|
|
78
43
|
constructor(frequencies = FREQ_TABLE) {
|
|
79
|
-
// this.frequencies = frequencies;
|
|
80
44
|
this.nodes = new Array<HuffmanNode>(HUFFMAN_MAX_NODES);
|
|
81
45
|
for (let i = 0; i < HUFFMAN_MAX_NODES; i++) {
|
|
82
46
|
this.nodes[i] = {} as HuffmanNode;
|
|
@@ -87,7 +51,6 @@ class Huffman {
|
|
|
87
51
|
|
|
88
52
|
this.construct_tree(frequencies);
|
|
89
53
|
|
|
90
|
-
let xx = 0;
|
|
91
54
|
|
|
92
55
|
for (let i = 0; i < HUFFMAN_LUTSIZE; i++) {
|
|
93
56
|
let bits = i;
|
|
@@ -207,35 +170,6 @@ class Huffman {
|
|
|
207
170
|
}
|
|
208
171
|
output.push(bits);
|
|
209
172
|
return Buffer.from(output);
|
|
210
|
-
|
|
211
|
-
/* output = bytearray()
|
|
212
|
-
bits = 0
|
|
213
|
-
bitcount = 0
|
|
214
|
-
|
|
215
|
-
if size is None:
|
|
216
|
-
size = len(inp_buffer)
|
|
217
|
-
|
|
218
|
-
for x in inp_buffer[start_index:size:]:
|
|
219
|
-
bits |= self.nodes[x].bits << bitcount
|
|
220
|
-
bitcount += self.nodes[x].numbits
|
|
221
|
-
|
|
222
|
-
while bitcount >= 8:
|
|
223
|
-
output.append(bits & 0xff)
|
|
224
|
-
bits >>= 8
|
|
225
|
-
bitcount -= 8
|
|
226
|
-
|
|
227
|
-
bits |= self.nodes[HUFFMAN_EOF_SYMBOL].bits << bitcount
|
|
228
|
-
bitcount += self.nodes[HUFFMAN_EOF_SYMBOL].numbits
|
|
229
|
-
|
|
230
|
-
while bitcount >= 8:
|
|
231
|
-
output.append(bits & 0xff)
|
|
232
|
-
bits >>= 8
|
|
233
|
-
bitcount -= 8
|
|
234
|
-
|
|
235
|
-
# write out last bits
|
|
236
|
-
output.append(bits)
|
|
237
|
-
return output
|
|
238
|
-
*/
|
|
239
173
|
}
|
|
240
174
|
decompress(inp_buffer: Buffer, size = 0): Buffer {
|
|
241
175
|
|
|
@@ -259,7 +193,6 @@ class Huffman {
|
|
|
259
193
|
}
|
|
260
194
|
if (node_i == -1)
|
|
261
195
|
node_i = this.decode_lut[bits & HUFFMAN_LUTMASK];
|
|
262
|
-
// console.log(node_i, bits & HUFFMAN_LUTMASK, this.decode_lut)
|
|
263
196
|
if (this.nodes[node_i].numbits) {
|
|
264
197
|
bits >>= this.nodes[node_i].numbits;
|
|
265
198
|
bitcount -= this.nodes[node_i].numbits;
|
|
@@ -289,54 +222,7 @@ class Huffman {
|
|
|
289
222
|
return Buffer.from(output);
|
|
290
223
|
}
|
|
291
224
|
|
|
292
|
-
|
|
293
|
-
bitcount = 0
|
|
294
|
-
eof = self.nodes[HUFFMAN_EOF_SYMBOL]
|
|
295
|
-
output = bytearray()
|
|
296
|
-
|
|
297
|
-
if size is None:
|
|
298
|
-
size = len(inp_buffer)
|
|
299
|
-
|
|
300
|
-
src_index = 0
|
|
301
|
-
while True:
|
|
302
|
-
node_i = None
|
|
303
|
-
if bitcount >= HUFFMAN_LUTBITS:
|
|
304
|
-
node_i = self.decode_lut[bits & HUFFMAN_LUTMASK]
|
|
305
|
-
|
|
306
|
-
while bitcount < 24 and src_index != size:
|
|
307
|
-
bits |= inp_buffer[src_index] << bitcount
|
|
308
|
-
src_index += 1
|
|
309
|
-
bitcount += 8
|
|
310
|
-
|
|
311
|
-
if node_i is None:
|
|
312
|
-
node_i = self.decode_lut[bits & HUFFMAN_LUTMASK]
|
|
313
|
-
if self.nodes[node_i].numbits:
|
|
314
|
-
bits >>= self.nodes[node_i].numbits
|
|
315
|
-
bitcount -= self.nodes[node_i].numbits
|
|
316
|
-
else:
|
|
317
|
-
bits >>= HUFFMAN_LUTBITS
|
|
318
|
-
bitcount -= HUFFMAN_LUTBITS
|
|
319
|
-
|
|
320
|
-
while True:
|
|
321
|
-
if bits & 1:
|
|
322
|
-
node_i = self.nodes[node_i].right
|
|
323
|
-
else:
|
|
324
|
-
node_i = self.nodes[node_i].left
|
|
325
|
-
|
|
326
|
-
bitcount -= 1
|
|
327
|
-
bits >>= 1
|
|
328
|
-
|
|
329
|
-
if self.nodes[node_i].numbits:
|
|
330
|
-
break
|
|
331
|
-
|
|
332
|
-
if bitcount === 0:
|
|
333
|
-
raise ValueError("No more bits, decoding error")
|
|
334
|
-
|
|
335
|
-
if self.nodes[node_i] === eof:
|
|
336
|
-
break
|
|
337
|
-
output.append(self.nodes[node_i].symbol)
|
|
338
|
-
|
|
339
|
-
return output */
|
|
225
|
+
|
|
340
226
|
}
|
|
341
227
|
|
|
342
228
|
export = Huffman;
|
package/lib/snapshot.js
CHANGED
|
@@ -332,11 +332,15 @@ var Snapshot = /** @class */ (function () {
|
|
|
332
332
|
// console.log(_size, "size!")
|
|
333
333
|
var data = [];
|
|
334
334
|
for (var i = 0; i < _size; i++) {
|
|
335
|
-
snap = MsgUnpacker.unpackInt(snap).remaining;
|
|
336
|
-
data.push(MsgUnpacker.unpackInt(snap).result);
|
|
337
335
|
if (snap.length == 0) {
|
|
338
336
|
items.lost++;
|
|
339
337
|
}
|
|
338
|
+
if (snap[0]) {
|
|
339
|
+
snap = MsgUnpacker.unpackInt(snap).remaining;
|
|
340
|
+
data.push(MsgUnpacker.unpackInt(snap).result);
|
|
341
|
+
}
|
|
342
|
+
else
|
|
343
|
+
break;
|
|
340
344
|
}
|
|
341
345
|
if (type_id > 0x4000 || type_id == 0) {
|
|
342
346
|
if (_size == 5 && id == 0) {
|
|
@@ -350,8 +354,8 @@ var Snapshot = /** @class */ (function () {
|
|
|
350
354
|
// score: (!players[id] == undefined || typeof players[id].score == 'undefined') ? -1 : players[id].score
|
|
351
355
|
};
|
|
352
356
|
// console.log(Ddnet_Character)
|
|
353
|
-
|
|
354
|
-
|
|
357
|
+
if (Ddnet_Character.freeze_end > 0 || Ddnet_Character.freeze_end == -1) // freezed or deepfreezed
|
|
358
|
+
console.log(Ddnet_Character);
|
|
355
359
|
} // else
|
|
356
360
|
// console.log("lolol uuid??", _size, type_id, id, data)
|
|
357
361
|
}
|
package/lib/snapshot.ts
CHANGED
|
@@ -336,11 +336,15 @@ class Snapshot {
|
|
|
336
336
|
|
|
337
337
|
var data: number[] = []
|
|
338
338
|
for (let i = 0; i < _size; i++) {
|
|
339
|
-
snap = MsgUnpacker.unpackInt(snap).remaining;
|
|
340
|
-
data.push(MsgUnpacker.unpackInt(snap).result);
|
|
341
339
|
if (snap.length == 0) {
|
|
342
340
|
items.lost++;
|
|
343
341
|
}
|
|
342
|
+
if (snap[0]) {
|
|
343
|
+
snap = MsgUnpacker.unpackInt(snap).remaining;
|
|
344
|
+
data.push(MsgUnpacker.unpackInt(snap).result);
|
|
345
|
+
} else
|
|
346
|
+
break;
|
|
347
|
+
|
|
344
348
|
}
|
|
345
349
|
if (type_id > 0x4000 || type_id == 0) {
|
|
346
350
|
if (_size == 5 && id == 0) {
|
|
@@ -354,9 +358,9 @@ class Snapshot {
|
|
|
354
358
|
// score: (!players[id] == undefined || typeof players[id].score == 'undefined') ? -1 : players[id].score
|
|
355
359
|
}
|
|
356
360
|
// console.log(Ddnet_Character)
|
|
357
|
-
|
|
361
|
+
if (Ddnet_Character.freeze_end > 0 || Ddnet_Character.freeze_end == -1) // freezed or deepfreezed
|
|
358
362
|
|
|
359
|
-
|
|
363
|
+
console.log(Ddnet_Character)
|
|
360
364
|
} // else
|
|
361
365
|
// console.log("lolol uuid??", _size, type_id, id, data)
|
|
362
366
|
}
|