teeworlds 2.5.5 → 2.5.7

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.
Files changed (56) hide show
  1. package/README.md +5 -1
  2. package/dist/README.md +103 -0
  3. package/{index.ts → dist/index.d.ts} +6 -6
  4. package/{index.js → dist/index.js} +1 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/MsgPacker.d.ts +11 -0
  7. package/{lib → dist/lib}/MsgPacker.js +1 -0
  8. package/dist/lib/MsgPacker.js.map +1 -0
  9. package/dist/lib/MsgUnpacker.d.ts +16 -0
  10. package/{lib → dist/lib}/MsgUnpacker.js +1 -0
  11. package/dist/lib/MsgUnpacker.js.map +1 -0
  12. package/dist/lib/UUIDManager.d.ts +27 -0
  13. package/{lib → dist/lib}/UUIDManager.js +1 -0
  14. package/dist/lib/UUIDManager.js.map +1 -0
  15. package/dist/lib/client.d.ts +134 -0
  16. package/{lib → dist/lib}/client.js +5 -4
  17. package/dist/lib/client.js.map +1 -0
  18. package/dist/lib/components/game.d.ts +32 -0
  19. package/{lib → dist/lib}/components/game.js +1 -0
  20. package/dist/lib/components/game.js.map +1 -0
  21. package/dist/lib/components/movement.d.ts +34 -0
  22. package/{lib → dist/lib}/components/movement.js +1 -0
  23. package/dist/lib/components/movement.js.map +1 -0
  24. package/dist/lib/components/rcon.d.ts +33 -0
  25. package/{lib → dist/lib}/components/rcon.js +1 -0
  26. package/dist/lib/components/rcon.js.map +1 -0
  27. package/dist/lib/components/snapshot.d.ts +59 -0
  28. package/{lib → dist/lib}/components/snapshot.js +1 -0
  29. package/dist/lib/components/snapshot.js.map +1 -0
  30. package/dist/lib/enums_types/protocol.d.ts +120 -0
  31. package/{lib → dist/lib}/enums_types/protocol.js +1 -0
  32. package/dist/lib/enums_types/protocol.js.map +1 -0
  33. package/dist/lib/huffman.d.ts +24 -0
  34. package/{lib → dist/lib}/huffman.js +1 -0
  35. package/dist/lib/huffman.js.map +1 -0
  36. package/dist/lib/snapshot.d.ts +49 -0
  37. package/{lib → dist/lib}/snapshot.js +1 -0
  38. package/dist/lib/snapshot.js.map +1 -0
  39. package/dist/package.json +21 -0
  40. package/package.json +14 -6
  41. package/docs/documentation.md +0 -371
  42. package/docs/examples/chat_bot.js +0 -25
  43. package/docs/examples/kill_on_freeze.js +0 -20
  44. package/lib/MsgPacker.ts +0 -45
  45. package/lib/MsgUnpacker.ts +0 -58
  46. package/lib/UUIDManager.ts +0 -45
  47. package/lib/client.ts +0 -947
  48. package/lib/components/game.ts +0 -133
  49. package/lib/components/movement.ts +0 -88
  50. package/lib/components/rcon.ts +0 -114
  51. package/lib/components/snapshot.ts +0 -187
  52. package/lib/enums_types/protocol.ts +0 -145
  53. package/lib/enums_types/types.d.ts +0 -236
  54. package/lib/huffman.ts +0 -226
  55. package/lib/snapshot.ts +0 -632
  56. package/tsconfig.json +0 -69
@@ -1,236 +0,0 @@
1
- export type Item = SnapshotItemTypes.PlayerInput | SnapshotItemTypes.PlayerInfo | SnapshotItemTypes.Projectile | SnapshotItemTypes.Laser | SnapshotItemTypes.Pickup | SnapshotItemTypes.Flag | SnapshotItemTypes.GameInfo | SnapshotItemTypes.GameData | SnapshotItemTypes.CharacterCore | SnapshotItemTypes.Character | SnapshotItemTypes.PlayerInfo | SnapshotItemTypes.ClientInfo | SnapshotItemTypes.SpectatorInfo | SnapshotItemTypes.Common | SnapshotItemTypes.Explosion | SnapshotItemTypes.Spawn | SnapshotItemTypes.HammerHit | SnapshotItemTypes.Death | SnapshotItemTypes.SoundGlobal | SnapshotItemTypes.SoundWorld | SnapshotItemTypes.DamageInd;
2
- export type DDNetItem = SnapshotItemTypes.MyOwnObject | SnapshotItemTypes.DDNetCharacter | SnapshotItemTypes.DDNetPlayer | SnapshotItemTypes.GameInfoEx | SnapshotItemTypes.DDNetProjectile | SnapshotItemTypes.DDNetLaser;
3
- export type DeltaItem = { 'data': number[], 'parsed': Item | DDNetItem, 'type_id': number, 'id': number, 'key': number};
4
- export namespace SnapshotItemTypes {
5
- interface PlayerInput {
6
- direction: number,
7
- target_x: number,
8
- target_y: number,
9
- jump: number,
10
- fire: number,
11
- hook: number,
12
- player_flags: number,
13
- wanted_weapon: number,
14
- next_weapon: number,
15
- prev_weapon: number,
16
- }
17
-
18
- interface Projectile {
19
- x: number,
20
- y: number,
21
- vel_x: number,
22
- vel_y: number,
23
- type_: number,
24
- start_tick: number,
25
- }
26
-
27
- interface Laser {
28
- x: number,
29
- y: number,
30
- from_x: number,
31
- from_y: number,
32
- start_tick: number,
33
- }
34
-
35
- interface Pickup {
36
- x: number,
37
- y: number,
38
- type_: number,
39
- subtype: number,
40
- }
41
-
42
- interface Flag {
43
- x: number,
44
- y: number,
45
- team: number,
46
- }
47
-
48
- interface GameInfo {
49
- game_flags: number,
50
- game_state_flags: number,
51
- round_start_tick: number,
52
- warmup_timer: number,
53
- score_limit: number,
54
- time_limit: number,
55
- round_num: number,
56
- round_current: number,
57
- }
58
-
59
- interface GameData {
60
- teamscore_red: number,
61
- teamscore_blue: number,
62
- flag_carrier_red: number,
63
- flag_carrier_blue: number,
64
- }
65
-
66
- interface CharacterCore {
67
- tick: number,
68
- x: number,
69
- y: number,
70
- vel_x: number,
71
- vel_y: number,
72
- angle: number,
73
- direction: number,
74
- jumped: number,
75
- hooked_player: number,
76
- hook_state: number,
77
- hook_tick: number,
78
- hook_x: number,
79
- hook_y: number,
80
- hook_dx: number,
81
- hook_dy: number,
82
- }
83
-
84
- interface Character {
85
- character_core: CharacterCore,
86
- player_flags: number,
87
- health: number,
88
- armor: number,
89
- ammo_count: number,
90
- weapon: number,
91
- emote: number,
92
- attack_tick: number,
93
-
94
- client_id: number
95
- }
96
-
97
- interface PlayerInfo {
98
- local: number,
99
- client_id: number,
100
- team: number,
101
- score: number,
102
- latency: number,
103
- }
104
-
105
- interface ClientInfo {
106
- name: string,
107
- clan: string,
108
- country: number,
109
- skin: string,
110
- use_custom_color: number,
111
- color_body: number,
112
- color_feet: number,
113
-
114
- id: number
115
- }
116
-
117
- interface SpectatorInfo {
118
- spectator_id: number,
119
- x: number,
120
- y: number,
121
- }
122
-
123
- interface Common {
124
- x: number,
125
- y: number,
126
- }
127
-
128
- interface Explosion {
129
- common: Common,
130
- }
131
-
132
- interface Spawn {
133
- common: Common,
134
- }
135
-
136
- interface HammerHit {
137
- common: Common,
138
- }
139
-
140
- interface Death {
141
- common: Common,
142
- client_id: number,
143
- }
144
-
145
- interface SoundGlobal {
146
- common: Common,
147
- sound_id: number,
148
- }
149
-
150
- interface SoundWorld {
151
- common: Common,
152
- sound_id: number,
153
- }
154
-
155
- interface DamageInd {
156
- common: Common,
157
- angle: number,
158
- }
159
-
160
- interface MyOwnObject {
161
- m_Test: number
162
- }
163
-
164
- interface DDNetCharacter {
165
- m_Flags: number,
166
- m_FreezeEnd: number,
167
- m_Jumps: number,
168
- m_TeleCheckpoint: number,
169
- m_StrongWeakID: number,
170
-
171
- // # New data fields for jump display, freeze bar and ninja bar
172
- // # Default values indicate that these values should not be used
173
- m_JumpedTotal?: number,
174
- m_NinjaActivationTick?: number,
175
- m_FreezeStart?: number,
176
- // # New data fields for improved target accuracy
177
- m_TargetX?: number,
178
- m_TargetY?: number,
179
- id: number
180
- } //, validate_size=False),
181
- /** m_AuthLevel "AUTHED_NO", "AUTHED_ADMIN" */
182
- interface DDNetPlayer {
183
- m_Flags: number,
184
- m_AuthLevel: number,
185
- id: number
186
- }
187
-
188
- interface GameInfoEx {
189
-
190
- m_Flags: number,
191
- m_Version: number,
192
- m_Flags2: number,
193
- }//, validate_size=False),
194
-
195
- // # The code assumes that this has the same in-memory representation as
196
- // # the Projectile net object.
197
- interface DDNetProjectile {
198
- m_X: number,
199
- m_Y: number,
200
- m_Angle: number,
201
- m_Data: number,
202
- m_Type: number,
203
- m_StartTick: number,
204
- }
205
-
206
- interface DDNetLaser {
207
- m_ToX: number,
208
- m_ToY: number,
209
- m_FromX: number,
210
- m_FromY: number,
211
- m_StartTick: number,
212
- m_Owner: number,
213
- m_Type: number,
214
- }
215
- }
216
- export type RconCommand = {
217
- command: string;
218
- description: string;
219
- params: string;
220
- }
221
- export interface Chunk {
222
- bytes: number,
223
- flags: number,
224
- seq?: number,
225
- // type: 'sys' | 'game',
226
- sys: Boolean,
227
- msgid: number,
228
- msg: string,
229
- raw: Buffer,
230
- extended_msgid?: Buffer;
231
- }
232
-
233
- export interface _Packet {
234
- twprotocol: { flags: number, ack: number, chunkAmount: number, size: number },
235
- chunks: Chunk[]
236
- }
package/lib/huffman.ts DELETED
@@ -1,226 +0,0 @@
1
- let FREQ_TABLE = [
2
- 1 << 30, 4545, 2657, 431, 1950, 919, 444, 482, 2244, 617, 838, 542, 715, 1814, 304, 240, 754, 212, 647, 186,
3
- 283, 131, 146, 166, 543, 164, 167, 136, 179, 859, 363, 113, 157, 154, 204, 108, 137, 180, 202, 176,
4
- 872, 404, 168, 134, 151, 111, 113, 109, 120, 126, 129, 100, 41, 20, 16, 22, 18, 18, 17, 19,
5
- 16, 37, 13, 21, 362, 166, 99, 78, 95, 88, 81, 70, 83, 284, 91, 187, 77, 68, 52, 68,
6
- 59, 66, 61, 638, 71, 157, 50, 46, 69, 43, 11, 24, 13, 19, 10, 12, 12, 20, 14, 9,
7
- 20, 20, 10, 10, 15, 15, 12, 12, 7, 19, 15, 14, 13, 18, 35, 19, 17, 14, 8, 5,
8
- 15, 17, 9, 15, 14, 18, 8, 10, 2173, 134, 157, 68, 188, 60, 170, 60, 194, 62, 175, 71,
9
- 148, 67, 167, 78, 211, 67, 156, 69, 1674, 90, 174, 53, 147, 89, 181, 51, 174, 63, 163, 80,
10
- 167, 94, 128, 122, 223, 153, 218, 77, 200, 110, 190, 73, 174, 69, 145, 66, 277, 143, 141, 60,
11
- 136, 53, 180, 57, 142, 57, 158, 61, 166, 112, 152, 92, 26, 22, 21, 28, 20, 26, 30, 21,
12
- 32, 27, 20, 17, 23, 21, 30, 22, 22, 21, 27, 25, 17, 27, 23, 18, 39, 26, 15, 21,
13
- 12, 18, 18, 27, 20, 18, 15, 19, 11, 17, 33, 12, 18, 15, 19, 18, 16, 26, 17, 18,
14
- 9, 10, 25, 22, 22, 17, 20, 16, 6, 16, 15, 20, 14, 18, 24, 335, 1517],
15
-
16
- HUFFMAN_EOF_SYMBOL = 256,
17
- HUFFMAN_MAX_SYMBOLS = HUFFMAN_EOF_SYMBOL + 1,
18
- HUFFMAN_MAX_NODES = HUFFMAN_MAX_SYMBOLS * 2 - 1,
19
- HUFFMAN_LUTBITS = 10,
20
- HUFFMAN_LUTSIZE = 1 << HUFFMAN_LUTBITS,
21
- HUFFMAN_LUTMASK = HUFFMAN_LUTSIZE - 1;
22
-
23
- interface HuffmanNode {
24
- bits: number;
25
- numbits: number;
26
- left: number;
27
- right: number;
28
- symbol: number;
29
- }
30
-
31
-
32
- interface HuffmanConstructNode {
33
- node_id: number;
34
- frequency: number;
35
- }
36
-
37
- export class Huffman {
38
- nodes: HuffmanNode[];
39
- decode_lut: number[];
40
- num_nodes: number;
41
- start_node_index: number;
42
-
43
- constructor(frequencies = FREQ_TABLE) {
44
- this.nodes = new Array<HuffmanNode>(HUFFMAN_MAX_NODES);
45
- for (let i = 0; i < HUFFMAN_MAX_NODES; i++) {
46
- this.nodes[i] = {} as HuffmanNode;
47
- }
48
- this.decode_lut = new Array<number>(HUFFMAN_LUTSIZE);
49
- this.num_nodes = 0;
50
- this.start_node_index = 0;
51
-
52
- this.construct_tree(frequencies);
53
-
54
-
55
- for (let i = 0; i < HUFFMAN_LUTSIZE; i++) {
56
- let bits = i;
57
- let broke = false;
58
- let index = this.start_node_index;
59
- for (let x = 0; x < HUFFMAN_LUTBITS; x++) {
60
- if (bits & 1)
61
- index = this.nodes[index].right;
62
- else
63
- index = this.nodes[index].left;
64
- bits >>= 1;
65
- if (this.nodes[index].numbits) {
66
- this.decode_lut[i] = index;
67
- broke = true;
68
- break;
69
- }
70
- }
71
- if (!broke) {
72
- this.decode_lut[i] = index;
73
- }
74
- }
75
- }
76
- set_bits_r(node_index: number, bits: number, depth: number) {
77
- if (this.nodes[node_index].right != 0xffff)
78
- this.set_bits_r(this.nodes[node_index].right, bits | (1 << depth), depth + 1)
79
- if (this.nodes[node_index].left != 0xffff)
80
- this.set_bits_r(this.nodes[node_index].left, bits, depth + 1)
81
- if (this.nodes[node_index].numbits) {
82
- this.nodes[node_index].bits = bits;
83
- this.nodes[node_index].numbits = depth;
84
- }
85
- }
86
-
87
- bubble_sort(index_list: number[], node_list: HuffmanConstructNode[], size: number) {
88
- let changed = true;
89
- while (changed) {
90
- changed = false;
91
- for (let i = 0; i < size-1; i++) {
92
- if (node_list[index_list[i]].frequency < node_list[index_list[i + 1]].frequency) {
93
- let temp = index_list[i];
94
- index_list[i] = index_list[i + 1];
95
- index_list[i + 1] = temp;
96
- changed = true;
97
- }
98
- }
99
- size--;
100
- }
101
- return index_list;
102
- }
103
-
104
- construct_tree(frequencies = FREQ_TABLE) {
105
- let nodes_left_storage: HuffmanConstructNode[] = new Array<HuffmanConstructNode>(HUFFMAN_MAX_SYMBOLS);
106
- for (let i = 0; i < HUFFMAN_MAX_SYMBOLS; i++) {
107
- nodes_left_storage[i] = {} as HuffmanConstructNode;
108
- }
109
- let nodes_left: number[] = new Array<number>(HUFFMAN_MAX_SYMBOLS);
110
- let num_nodes_left = HUFFMAN_MAX_SYMBOLS;
111
-
112
- for (let i = 0; i < HUFFMAN_MAX_SYMBOLS; i++) {
113
- this.nodes[i].numbits = 0xFFFFFFFF;
114
- this.nodes[i].symbol = i;
115
- this.nodes[i].left = 0xFFFF;
116
- this.nodes[i].right = 0xFFFF;
117
-
118
- if (i == HUFFMAN_EOF_SYMBOL) {
119
- nodes_left_storage[i].frequency = 1;
120
- } else
121
- nodes_left_storage[i].frequency = frequencies[i];
122
- nodes_left_storage[i].node_id = i;
123
- nodes_left[i] = i;
124
- }
125
- this.num_nodes = HUFFMAN_MAX_SYMBOLS;
126
-
127
- while (num_nodes_left > 1) {
128
- nodes_left = this.bubble_sort(nodes_left, nodes_left_storage, num_nodes_left);
129
-
130
- this.nodes[this.num_nodes].numbits = 0;
131
- this.nodes[this.num_nodes].left = nodes_left_storage[nodes_left[num_nodes_left - 1]].node_id
132
- this.nodes[this.num_nodes].right = nodes_left_storage[nodes_left[num_nodes_left - 2]].node_id
133
-
134
- nodes_left_storage[nodes_left[num_nodes_left - 2]].node_id = this.num_nodes;
135
- nodes_left_storage[nodes_left[num_nodes_left - 2]].frequency = nodes_left_storage[nodes_left[num_nodes_left - 1]].frequency
136
- + nodes_left_storage[nodes_left[num_nodes_left - 2]].frequency
137
- this.num_nodes++;
138
- num_nodes_left--;
139
- }
140
- this.start_node_index = this.num_nodes-1;
141
- this.set_bits_r(this.start_node_index, 0, 0);
142
- }
143
-
144
- compress(inp_buffer: Buffer, start_index = 0, size: number = 0): Buffer {
145
- let output = [];
146
- let bits = 0;
147
- let bitcount = 0;
148
-
149
- if (size == 0)
150
- size = inp_buffer.byteLength;
151
- inp_buffer = inp_buffer.slice(start_index, start_index + size);
152
- for (let i = 0; i < size; i++) {
153
- let x = inp_buffer[i];
154
- bits |= this.nodes[x].bits << bitcount;
155
- bitcount += this.nodes[x].numbits;
156
-
157
- while (bitcount >= 8) {
158
- output.push(bits & 0xff);
159
- bits >>= 8;
160
- bitcount -= 8;
161
- }
162
- }
163
- bits |= this.nodes[HUFFMAN_EOF_SYMBOL].bits << bitcount;
164
- bitcount += this.nodes[HUFFMAN_EOF_SYMBOL].numbits;
165
-
166
- while (bitcount >= 8) {
167
- output.push(bits & 0xff);
168
- bits >>= 8;
169
- bitcount -= 8;
170
- }
171
- output.push(bits);
172
- return Buffer.from(output);
173
- }
174
- decompress(inp_buffer: Buffer, size = 0): Buffer {
175
-
176
- let bits = 0;
177
- let bitcount = 0;
178
- let eof = this.nodes[HUFFMAN_EOF_SYMBOL];
179
- let output = [];
180
-
181
- if (size == 0)
182
- size = inp_buffer.byteLength;
183
- inp_buffer = inp_buffer.slice(0, size);
184
- let src_index = 0;
185
- while (true) {
186
- let node_i = -1;
187
- if (bitcount >= HUFFMAN_LUTBITS)
188
- node_i = this.decode_lut[bits & HUFFMAN_LUTMASK];
189
- while (bitcount < 24 && src_index != size) {
190
- bits |= inp_buffer[src_index] << bitcount;
191
- bitcount += 8;
192
- src_index++;
193
- }
194
- if (node_i == -1)
195
- node_i = this.decode_lut[bits & HUFFMAN_LUTMASK];
196
- if (this.nodes[node_i].numbits) {
197
- bits >>= this.nodes[node_i].numbits;
198
- bitcount -= this.nodes[node_i].numbits;
199
- } else {
200
- bits >>= HUFFMAN_LUTBITS;
201
- bitcount -= HUFFMAN_LUTBITS;
202
-
203
- while (true) {
204
- if (bits & 1) {
205
- node_i = this.nodes[node_i].right;
206
- } else
207
- node_i = this.nodes[node_i].left;
208
- bitcount -= 1;
209
- bits >>= 1;
210
-
211
- if (this.nodes[node_i].numbits)
212
- break;
213
- if (bitcount == 0)
214
- throw new Error("No more bits, decoding error")
215
- }
216
-
217
- }
218
- if (this.nodes[node_i] == eof)
219
- break;
220
- output.push(this.nodes[node_i].symbol);
221
- }
222
- return Buffer.from(output);
223
- }
224
-
225
-
226
- }