teeworlds 2.4.4 → 2.4.5

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/lib/snapshot.js CHANGED
@@ -3,29 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Snapshot = exports.items = void 0;
4
4
  var MsgUnpacker_1 = require("./MsgUnpacker");
5
5
  var decoder = new TextDecoder('utf-8');
6
- // export const itemAppendix: {"type_id": number, "size": number, "name": string}[] = [
7
- // {"type_id": 0, "size": 0, "name": "obj_ex"},
8
- // {"type_id": 1, "size": 10, "name": "obj_player_input"},
9
- // {"type_id": 2, "size": 6, "name": "obj_projectile"},
10
- // {"type_id": 3, "size": 5, "name": "obj_laser"},
11
- // {"type_id": 4, "size": 4, "name": "obj_pickup"},
12
- // {"type_id": 5, "size": 3, "name": "obj_flag"},
13
- // {"type_id": 6, "size": 8, "name": "obj_game_info"},
14
- // {"type_id": 7, "size": 4, "name": "obj_game_data"},
15
- // {"type_id": 8, "size": 15, "name": "obj_character_core"},
16
- // {"type_id": 9, "size": 22, "name": "obj_character"},
17
- // {"type_id": 10, "size": 5, "name": "obj_player_info"},
18
- // {"type_id": 11, "size": 17, "name": "obj_client_info"},
19
- // {"type_id": 12, "size": 3, "name": "obj_spectator_info"},
20
- // {"type_id": 13, "size": 2, "name": "event_common"},
21
- // {"type_id": 14, "size": 2, "name": "event_explosion"},
22
- // {"type_id": 15, "size": 2, "name": "event_spawn"},
23
- // {"type_id": 16, "size": 2, "name": "event_hammerhit"},
24
- // {"type_id": 17, "size": 3, "name": "event_death"},
25
- // {"type_id": 18, "size": 3, "name": "event_sound_global"},
26
- // {"type_id": 19, "size": 3, "name": "event_sound_world"},
27
- // {"type_id": 20, "size": 3, "name": "event_damage_indicator"}
28
- // ]
6
+ var ___itemAppendix = [
7
+ { "type_id": 0, "size": 0, "name": "obj_ex" },
8
+ { "type_id": 1, "size": 10, "name": "obj_player_input" },
9
+ { "type_id": 2, "size": 6, "name": "obj_projectile" },
10
+ { "type_id": 3, "size": 5, "name": "obj_laser" },
11
+ { "type_id": 4, "size": 4, "name": "obj_pickup" },
12
+ { "type_id": 5, "size": 3, "name": "obj_flag" },
13
+ { "type_id": 6, "size": 8, "name": "obj_game_info" },
14
+ { "type_id": 7, "size": 4, "name": "obj_game_data" },
15
+ { "type_id": 8, "size": 15, "name": "obj_character_core" },
16
+ { "type_id": 9, "size": 22, "name": "obj_character" },
17
+ { "type_id": 10, "size": 5, "name": "obj_player_info" },
18
+ { "type_id": 11, "size": 17, "name": "obj_client_info" },
19
+ { "type_id": 12, "size": 3, "name": "obj_spectator_info" },
20
+ { "type_id": 13, "size": 2, "name": "common" },
21
+ { "type_id": 14, "size": 2, "name": "explosion" },
22
+ { "type_id": 15, "size": 2, "name": "spawn" },
23
+ { "type_id": 16, "size": 2, "name": "hammerhit" },
24
+ { "type_id": 17, "size": 3, "name": "death" },
25
+ { "type_id": 18, "size": 3, "name": "sound_global" },
26
+ { "type_id": 19, "size": 3, "name": "sound_world" },
27
+ { "type_id": 20, "size": 3, "name": "damage_indicator" } // event_damage_indicator
28
+ ];
29
29
  var itemAppendix = [
30
30
  0,
31
31
  10,
@@ -74,10 +74,11 @@ var items;
74
74
  items[items["EVENT_DAMAGE_INDICATOR"] = 20] = "EVENT_DAMAGE_INDICATOR";
75
75
  })(items = exports.items || (exports.items = {}));
76
76
  var Snapshot = /** @class */ (function () {
77
- function Snapshot() {
77
+ function Snapshot(_client) {
78
78
  this.deltas = [];
79
79
  this.eSnapHolder = [];
80
80
  this.crc_errors = 0;
81
+ this.client = _client;
81
82
  }
82
83
  Snapshot.prototype.IntsToStr = function (pInts) {
83
84
  var pIntz = [];
@@ -216,6 +217,7 @@ var Snapshot = /** @class */ (function () {
216
217
  weapon: data[19],
217
218
  emote: data[20],
218
219
  attack_tick: data[21],
220
+ client_id: id
219
221
  };
220
222
  break;
221
223
  case items.OBJ_PLAYER_INFO:
@@ -341,10 +343,6 @@ var Snapshot = /** @class */ (function () {
341
343
  deltaSnaps.push(a);
342
344
  return a.ack >= deltatick;
343
345
  });
344
- // if (deltatick != -1 && this.eSnapHolder.length == 0) {
345
- // console.log("no deltatick stored")
346
- // return {items: [], recvTick: -1}
347
- // }
348
346
  }
349
347
  if (snap.length == 0) {
350
348
  // empty snap, copy old one into new ack
@@ -362,6 +360,7 @@ var Snapshot = /** @class */ (function () {
362
360
  * https://github.com/heinrich5991/libtw2/blob/master/snapshot/src/
363
361
  * https://github.com/heinrich5991/libtw2/blob/master/doc/snapshot.md
364
362
  */
363
+ var _events = [];
365
364
  var num_removed_items = unpacker.unpackInt();
366
365
  var num_item_deltas = unpacker.unpackInt();
367
366
  unpacker.unpackInt(); // _zero padding
@@ -375,11 +374,6 @@ var Snapshot = /** @class */ (function () {
375
374
  var deleted = [];
376
375
  for (var i = 0; i < num_removed_items; i++) {
377
376
  var deleted_key = unpacker.unpackInt(); // removed_item_keys
378
- // let index = this.deltas.map(delta => delta.key).indexOf(deleted_key);
379
- // let index = this.deltas.findIndex(delta => delta.key === deleted_key);
380
- // if (index > -1)
381
- // this.deltas.splice(index, 1);
382
- // console.log(deleted_key)
383
377
  deleted.push(deleted_key);
384
378
  }
385
379
  /*item_delta:
@@ -430,7 +424,6 @@ var Snapshot = /** @class */ (function () {
430
424
  else
431
425
  parsed = this_1.parseItem(data, type_id, id);
432
426
  this_1.eSnapHolder.push({ Snapshot: { Data: data, Key: key }, ack: recvTick });
433
- // items.items.push({data, type_id, id, key})
434
427
  this_1.deltas.push({
435
428
  data: data,
436
429
  key: key,
@@ -438,6 +431,11 @@ var Snapshot = /** @class */ (function () {
438
431
  type_id: type_id,
439
432
  parsed: parsed
440
433
  });
434
+ if (type_id >= items.EVENT_COMMON && type_id <= items.EVENT_DAMAGE_INDICATOR) {
435
+ // this.client.SnapshotUnpacker.
436
+ _events.push({ type_id: type_id, parsed: parsed });
437
+ // this.client.SnapshotUnpacker.emit(___itemAppendix[type_id].name, parsed);
438
+ }
441
439
  };
442
440
  var this_1 = this;
443
441
  for (var i = 0; i < num_item_deltas; i++) {
@@ -449,20 +447,6 @@ var Snapshot = /** @class */ (function () {
449
447
  }
450
448
  if (this_2.eSnapHolder.findIndex(function (a) { return a.ack == recvTick && a.Snapshot.Key == newSnap.Snapshot.Key; }) === -1) { // ugly copy new snap to eSnapHolder (if it isnt pushed already)
451
449
  this_2.eSnapHolder.push({ Snapshot: { Data: newSnap.Snapshot.Data, Key: newSnap.Snapshot.Key }, ack: recvTick });
452
- // this.deltas.push({})
453
- // if (deltatick > -1) {
454
- // let ____index = this.deltas.findIndex(delta => delta.key == newSnap.Snapshot.Key)
455
- // if (____index > -1) {
456
- // this.deltas[____index] = {
457
- // data: newSnap.Snapshot.Data,
458
- // key: newSnap.Snapshot.Key,
459
- // id: newSnap.Snapshot.Key & 0xffff,
460
- // type_id: ((newSnap.Snapshot.Key >> 16) & 0xffff),
461
- // parsed: this.parseItem(newSnap.Snapshot.Data, ((newSnap.Snapshot.Key >> 16) & 0xffff), ((newSnap.Snapshot.Key) & 0xffff))
462
- // };
463
- // continue;
464
- // }
465
- // // }
466
450
  var oldDelta = oldDeltas.find(function (delta) { return delta.key == newSnap.Snapshot.Key; });
467
451
  if (oldDelta !== undefined && compareArrays(newSnap.Snapshot.Data, oldDelta.data)) {
468
452
  this_2.deltas.push(oldDelta);
@@ -479,31 +463,10 @@ var Snapshot = /** @class */ (function () {
479
463
  }
480
464
  };
481
465
  var this_2 = this;
482
- // if (deleted.length) {
483
- // let _beforeLength = this.eSnapHolder.length;
484
- // this.eSnapHolder = this.eSnapHolder.filter(snap => !deleted.includes(snap.Snapshot.Key));
485
- // let _beforeLength = this.eSnapHolder.length;
486
- // if ((_beforeLength - this.eSnapHolder.length) !== num_removed_items) {
487
- // console.log("remove!", (_beforeLength - this.eSnapHolder.length) == num_removed_items, (_beforeLength - this.eSnapHolder.length), num_removed_items, WantedCrc)
488
- // }
489
- // }
490
466
  for (var _i = 0, deltaSnaps_1 = deltaSnaps; _i < deltaSnaps_1.length; _i++) {
491
467
  var newSnap = deltaSnaps_1[_i];
492
468
  _loop_2(newSnap);
493
469
  }
494
- // if (items.items.length != num_item_deltas)
495
- // console.log("length", items.items.length, num_item_deltas, items.items.length - num_item_deltas, WantedCrc)
496
- /* this.deltas = [];
497
- for (let newSnap of this.eSnapHolder) {
498
- if (newSnap.ack == recvTick)
499
- this.deltas.push({
500
- data: newSnap.Snapshot.Data,
501
- key: newSnap.Snapshot.Key,
502
- id: newSnap.Snapshot.Key & 0xffff,
503
- type_id: ((newSnap.Snapshot.Key >> 16) & 0xffff),
504
- parsed: this.parseItem(newSnap.Snapshot.Data, ((newSnap.Snapshot.Key >> 16) & 0xffff), ((newSnap.Snapshot.Key) & 0xffff))
505
- });
506
- }*/
507
470
  var _crc = this.crc();
508
471
  if (_crc !== WantedCrc) {
509
472
  this.deltas = oldDeltas;
@@ -521,11 +484,7 @@ var Snapshot = /** @class */ (function () {
521
484
  }
522
485
  else if (this.crc_errors > 0)
523
486
  this.crc_errors--;
524
- // let filterLength = this.eSnapHolder.filter(a => a.ack == recvTick).length
525
- // if (this.deltas.length !== filterLength) {
526
- // this.deltas = this.deltas.filter(a => !deleted.includes(a.key))
527
- // console.log(this.deltas.length, filterLength, this.deltas.length - filterLength, num_item_deltas )
528
- // }
487
+ _events.forEach(function (a) { return _this.client.SnapshotUnpacker.emit(___itemAppendix[a.type_id].name, a.parsed); });
529
488
  return { items: this.deltas, recvTick: recvTick };
530
489
  };
531
490
  return Snapshot;
package/lib/snapshot.ts CHANGED
@@ -1,29 +1,31 @@
1
+ import { Client } from "./client";
1
2
  import { MsgUnpacker } from "./MsgUnpacker";
3
+ import { PlayerInput, PlayerInfo, Projectile, Laser, Pickup, Flag, GameInfo, GameData, CharacterCore, Character, ClientInfo, SpectatorInfo, Common, Explosion, Spawn, HammerHit, Death, SoundGlobal, SoundWorld, DamageInd } from "./snapshots";
2
4
  var decoder = new TextDecoder('utf-8');
3
5
 
4
- // export const itemAppendix: {"type_id": number, "size": number, "name": string}[] = [
5
- // {"type_id": 0, "size": 0, "name": "obj_ex"},
6
- // {"type_id": 1, "size": 10, "name": "obj_player_input"},
7
- // {"type_id": 2, "size": 6, "name": "obj_projectile"},
8
- // {"type_id": 3, "size": 5, "name": "obj_laser"},
9
- // {"type_id": 4, "size": 4, "name": "obj_pickup"},
10
- // {"type_id": 5, "size": 3, "name": "obj_flag"},
11
- // {"type_id": 6, "size": 8, "name": "obj_game_info"},
12
- // {"type_id": 7, "size": 4, "name": "obj_game_data"},
13
- // {"type_id": 8, "size": 15, "name": "obj_character_core"},
14
- // {"type_id": 9, "size": 22, "name": "obj_character"},
15
- // {"type_id": 10, "size": 5, "name": "obj_player_info"},
16
- // {"type_id": 11, "size": 17, "name": "obj_client_info"},
17
- // {"type_id": 12, "size": 3, "name": "obj_spectator_info"},
18
- // {"type_id": 13, "size": 2, "name": "event_common"},
19
- // {"type_id": 14, "size": 2, "name": "event_explosion"},
20
- // {"type_id": 15, "size": 2, "name": "event_spawn"},
21
- // {"type_id": 16, "size": 2, "name": "event_hammerhit"},
22
- // {"type_id": 17, "size": 3, "name": "event_death"},
23
- // {"type_id": 18, "size": 3, "name": "event_sound_global"},
24
- // {"type_id": 19, "size": 3, "name": "event_sound_world"},
25
- // {"type_id": 20, "size": 3, "name": "event_damage_indicator"}
26
- // ]
6
+ const ___itemAppendix: {"type_id": number, "size": number, "name": string}[] = [ // only used for the events underneath. the actual itemAppendix below this is only used for size
7
+ {"type_id": 0, "size": 0, "name": "obj_ex"},
8
+ {"type_id": 1, "size": 10, "name": "obj_player_input"},
9
+ {"type_id": 2, "size": 6, "name": "obj_projectile"},
10
+ {"type_id": 3, "size": 5, "name": "obj_laser"},
11
+ {"type_id": 4, "size": 4, "name": "obj_pickup"},
12
+ {"type_id": 5, "size": 3, "name": "obj_flag"},
13
+ {"type_id": 6, "size": 8, "name": "obj_game_info"},
14
+ {"type_id": 7, "size": 4, "name": "obj_game_data"},
15
+ {"type_id": 8, "size": 15, "name": "obj_character_core"},
16
+ {"type_id": 9, "size": 22, "name": "obj_character"},
17
+ {"type_id": 10, "size": 5, "name": "obj_player_info"},
18
+ {"type_id": 11, "size": 17, "name": "obj_client_info"},
19
+ {"type_id": 12, "size": 3, "name": "obj_spectator_info"},
20
+ {"type_id": 13, "size": 2, "name": "common"}, // event_common
21
+ {"type_id": 14, "size": 2, "name": "explosion"}, // event_explosion
22
+ {"type_id": 15, "size": 2, "name": "spawn"}, // event_spawn
23
+ {"type_id": 16, "size": 2, "name": "hammerhit"}, // event_hammerhit
24
+ {"type_id": 17, "size": 3, "name": "death"}, // event_death
25
+ {"type_id": 18, "size": 3, "name": "sound_global"}, // event_sound_global
26
+ {"type_id": 19, "size": 3, "name": "sound_world"}, // event_sound_world
27
+ {"type_id": 20, "size": 3, "name": "damage_indicator"} // event_damage_indicator
28
+ ]
27
29
  const itemAppendix: number[] = [
28
30
  0,
29
31
  10,
@@ -72,7 +74,7 @@ export enum items {
72
74
  EVENT_DAMAGE_INDICATOR
73
75
  }
74
76
 
75
- export type Item = PlayerInput | PlayerInfo | Projectile | Laser | Pickup | Flag | GameInfo | GameData | CharacterCore | Character | PlayerInfo | ClientInfo | SpectatorInfo | Common | Explosion | Spawn |HammerHit | Death | SoundGlobal | SoundWorld | DamageInd | DdnetCharacter;
77
+ export declare type Item = PlayerInput | PlayerInfo | Projectile | Laser | Pickup | Flag | GameInfo | GameData | CharacterCore | Character | PlayerInfo | ClientInfo | SpectatorInfo | Common | Explosion | Spawn |HammerHit | Death | SoundGlobal | SoundWorld | DamageInd;
76
78
  interface eSnap {
77
79
  Snapshot: {Key: number, Data: number[]},
78
80
  ack: number,
@@ -81,7 +83,12 @@ export class Snapshot {
81
83
  deltas: {'data': number[], 'parsed': Item, 'type_id': number, 'id': number, 'key': number}[] = [];
82
84
  eSnapHolder: eSnap[] = [];
83
85
  crc_errors: number = 0;
86
+ client: Client;
84
87
 
88
+ constructor(_client: Client) {
89
+ this.client = _client;
90
+ }
91
+
85
92
  private IntsToStr(pInts: number[]): string {
86
93
  var pIntz: number[] = [];
87
94
  // var pStr = ''
@@ -220,6 +227,8 @@ export class Snapshot {
220
227
  weapon: data[19],
221
228
  emote: data[20],
222
229
  attack_tick: data[21],
230
+
231
+ client_id: id
223
232
  } as Character
224
233
  break;
225
234
  case items.OBJ_PLAYER_INFO:
@@ -347,10 +356,6 @@ export class Snapshot {
347
356
  deltaSnaps.push(a);
348
357
  return a.ack >= deltatick
349
358
  })
350
- // if (deltatick != -1 && this.eSnapHolder.length == 0) {
351
- // console.log("no deltatick stored")
352
- // return {items: [], recvTick: -1}
353
- // }
354
359
  }
355
360
  if (snap.length == 0) {
356
361
  // empty snap, copy old one into new ack
@@ -369,7 +374,8 @@ export class Snapshot {
369
374
  * https://github.com/heinrich5991/libtw2/blob/master/snapshot/src/
370
375
  * https://github.com/heinrich5991/libtw2/blob/master/doc/snapshot.md
371
376
  */
372
-
377
+ var _events: {type_id: number, parsed: Item}[] = [];
378
+
373
379
  let num_removed_items = unpacker.unpackInt();
374
380
  let num_item_deltas = unpacker.unpackInt();
375
381
  unpacker.unpackInt(); // _zero padding
@@ -384,11 +390,6 @@ export class Snapshot {
384
390
  var deleted: number[] = [];
385
391
  for (let i = 0; i < num_removed_items; i++) {
386
392
  let deleted_key = unpacker.unpackInt(); // removed_item_keys
387
- // let index = this.deltas.map(delta => delta.key).indexOf(deleted_key);
388
- // let index = this.deltas.findIndex(delta => delta.key === deleted_key);
389
- // if (index > -1)
390
- // this.deltas.splice(index, 1);
391
- // console.log(deleted_key)
392
393
  deleted.push(deleted_key)
393
394
  }
394
395
  /*item_delta:
@@ -447,8 +448,6 @@ export class Snapshot {
447
448
 
448
449
  this.eSnapHolder.push({Snapshot: {Data: data, Key: key}, ack: recvTick});
449
450
 
450
- // items.items.push({data, type_id, id, key})
451
-
452
451
  this.deltas.push({
453
452
  data,
454
453
  key,
@@ -457,43 +456,23 @@ export class Snapshot {
457
456
  parsed
458
457
  });
459
458
 
459
+ if (type_id >= items.EVENT_COMMON && type_id <= items.EVENT_DAMAGE_INDICATOR) {
460
+ // this.client.SnapshotUnpacker.
461
+
462
+ _events.push({type_id, parsed});
463
+ // this.client.SnapshotUnpacker.emit(___itemAppendix[type_id].name, parsed);
464
+ }
460
465
 
461
466
 
462
467
 
463
468
  }
464
- // if (deleted.length) {
465
- // let _beforeLength = this.eSnapHolder.length;
466
- // this.eSnapHolder = this.eSnapHolder.filter(snap => !deleted.includes(snap.Snapshot.Key));
467
- // let _beforeLength = this.eSnapHolder.length;
468
- // if ((_beforeLength - this.eSnapHolder.length) !== num_removed_items) {
469
- // console.log("remove!", (_beforeLength - this.eSnapHolder.length) == num_removed_items, (_beforeLength - this.eSnapHolder.length), num_removed_items, WantedCrc)
470
-
471
- // }
472
- // }
473
469
 
474
470
  for (let newSnap of deltaSnaps) {
475
471
  if (deleted.includes(newSnap.Snapshot.Key)) {
476
- // if ()
477
- // this.deltas = this.deltas.filter(a => !deleted.includes(a.key))
478
472
  continue;
479
473
  }
480
474
  if (this.eSnapHolder.findIndex(a => a.ack == recvTick && a.Snapshot.Key == newSnap.Snapshot.Key) === -1) { // ugly copy new snap to eSnapHolder (if it isnt pushed already)
481
475
  this.eSnapHolder.push({Snapshot: {Data: newSnap.Snapshot.Data, Key: newSnap.Snapshot.Key}, ack: recvTick});
482
- // this.deltas.push({})
483
- // if (deltatick > -1) {
484
- // let ____index = this.deltas.findIndex(delta => delta.key == newSnap.Snapshot.Key)
485
-
486
- // if (____index > -1) {
487
- // this.deltas[____index] = {
488
- // data: newSnap.Snapshot.Data,
489
- // key: newSnap.Snapshot.Key,
490
- // id: newSnap.Snapshot.Key & 0xffff,
491
- // type_id: ((newSnap.Snapshot.Key >> 16) & 0xffff),
492
- // parsed: this.parseItem(newSnap.Snapshot.Data, ((newSnap.Snapshot.Key >> 16) & 0xffff), ((newSnap.Snapshot.Key) & 0xffff))
493
- // };
494
- // continue;
495
- // }
496
- // // }
497
476
  let oldDelta = oldDeltas.find(delta => delta.key == newSnap.Snapshot.Key);
498
477
  if (oldDelta !== undefined && compareArrays(newSnap.Snapshot.Data, oldDelta.data)) {
499
478
  this.deltas.push(oldDelta);
@@ -510,19 +489,7 @@ export class Snapshot {
510
489
  }
511
490
  }
512
491
  }
513
- // if (items.items.length != num_item_deltas)
514
- // console.log("length", items.items.length, num_item_deltas, items.items.length - num_item_deltas, WantedCrc)
515
- /* this.deltas = [];
516
- for (let newSnap of this.eSnapHolder) {
517
- if (newSnap.ack == recvTick)
518
- this.deltas.push({
519
- data: newSnap.Snapshot.Data,
520
- key: newSnap.Snapshot.Key,
521
- id: newSnap.Snapshot.Key & 0xffff,
522
- type_id: ((newSnap.Snapshot.Key >> 16) & 0xffff),
523
- parsed: this.parseItem(newSnap.Snapshot.Data, ((newSnap.Snapshot.Key >> 16) & 0xffff), ((newSnap.Snapshot.Key) & 0xffff))
524
- });
525
- }*/
492
+
526
493
  let _crc = this.crc();
527
494
  if (_crc !== WantedCrc) {
528
495
  this.deltas = oldDeltas;
@@ -539,12 +506,7 @@ export class Snapshot {
539
506
  }
540
507
  } else if (this.crc_errors > 0)
541
508
  this.crc_errors--;
542
- // let filterLength = this.eSnapHolder.filter(a => a.ack == recvTick).length
543
- // if (this.deltas.length !== filterLength) {
544
- // this.deltas = this.deltas.filter(a => !deleted.includes(a.key))
545
- // console.log(this.deltas.length, filterLength, this.deltas.length - filterLength, num_item_deltas )
546
- // }
547
-
509
+ _events.forEach(a => this.client.SnapshotUnpacker.emit(___itemAppendix[a.type_id].name, a.parsed))
548
510
  return {items: this.deltas, recvTick};
549
511
  }
550
512
  }
@@ -1,4 +1,4 @@
1
- declare interface PlayerInput {
1
+ export declare interface PlayerInput {
2
2
  direction: number,
3
3
  target_x: number,
4
4
  target_y: number,
@@ -11,7 +11,7 @@ declare interface PlayerInput {
11
11
  prev_weapon: number,
12
12
  }
13
13
 
14
- declare interface Projectile {
14
+ export declare interface Projectile {
15
15
  x: number,
16
16
  y: number,
17
17
  vel_x: number,
@@ -20,7 +20,7 @@ declare interface Projectile {
20
20
  start_tick: number,
21
21
  }
22
22
 
23
- declare interface Laser {
23
+ export declare interface Laser {
24
24
  x: number,
25
25
  y: number,
26
26
  from_x: number,
@@ -28,20 +28,20 @@ declare interface Laser {
28
28
  start_tick: number,
29
29
  }
30
30
 
31
- declare interface Pickup {
31
+ export declare interface Pickup {
32
32
  x: number,
33
33
  y: number,
34
34
  type_: number,
35
35
  subtype: number,
36
36
  }
37
37
 
38
- declare interface Flag {
38
+ export declare interface Flag {
39
39
  x: number,
40
40
  y: number,
41
41
  team: number,
42
42
  }
43
43
 
44
- declare interface GameInfo {
44
+ export declare interface GameInfo {
45
45
  game_flags: number,
46
46
  game_state_flags: number,
47
47
  round_start_tick: number,
@@ -52,14 +52,14 @@ declare interface GameInfo {
52
52
  round_current: number,
53
53
  }
54
54
 
55
- declare interface GameData {
55
+ export declare interface GameData {
56
56
  teamscore_red: number,
57
57
  teamscore_blue: number,
58
58
  flag_carrier_red: number,
59
59
  flag_carrier_blue: number,
60
60
  }
61
61
 
62
- declare interface CharacterCore {
62
+ export declare interface CharacterCore {
63
63
  tick: number,
64
64
  x: number,
65
65
  y: number,
@@ -77,7 +77,7 @@ declare interface CharacterCore {
77
77
  hook_dy: number,
78
78
  }
79
79
 
80
- declare interface Character {
80
+ export declare interface Character {
81
81
  character_core: CharacterCore,
82
82
  player_flags: number,
83
83
  health: number,
@@ -86,9 +86,11 @@ declare interface Character {
86
86
  weapon: number,
87
87
  emote: number,
88
88
  attack_tick: number,
89
+
90
+ client_id: number
89
91
  }
90
92
 
91
- declare interface PlayerInfo {
93
+ export declare interface PlayerInfo {
92
94
  local: number,
93
95
  client_id: number,
94
96
  team: number,
@@ -96,7 +98,7 @@ declare interface PlayerInfo {
96
98
  latency: number,
97
99
  }
98
100
 
99
- declare interface ClientInfo {
101
+ export declare interface ClientInfo {
100
102
  name: string,
101
103
  clan: string,
102
104
  country: number,
@@ -104,9 +106,11 @@ declare interface ClientInfo {
104
106
  use_custom_color: number,
105
107
  color_body: number,
106
108
  color_feet: number,
109
+
110
+ id: number
107
111
  }
108
112
 
109
- declare interface DdnetCharacter {
113
+ export declare interface DdnetCharacter {
110
114
  flags: number,
111
115
  freeze_end: number,
112
116
  jumps: number,
@@ -114,49 +118,49 @@ declare interface DdnetCharacter {
114
118
  strong_weak_id: number,
115
119
  }
116
120
 
117
- declare interface SpectatorInfo {
121
+ export declare interface SpectatorInfo {
118
122
  spectator_id: number,
119
123
  x: number,
120
124
  y: number,
121
125
  }
122
126
 
123
- declare interface Common {
127
+ export declare interface Common {
124
128
  x: number,
125
129
  y: number,
126
130
  }
127
131
 
128
- declare interface Explosion {
132
+ export declare interface Explosion {
129
133
  common: Common,
130
134
  }
131
135
 
132
- declare interface Spawn {
136
+ export declare interface Spawn {
133
137
  common: Common,
134
138
  }
135
139
 
136
- declare interface HammerHit {
140
+ export declare interface HammerHit {
137
141
  common: Common,
138
142
  }
139
143
 
140
- declare interface Death {
144
+ export declare interface Death {
141
145
  common: Common,
142
146
  client_id: number,
143
147
  }
144
148
 
145
- declare interface SoundGlobal {
149
+ export declare interface SoundGlobal {
146
150
  common: Common,
147
151
  sound_id: number,
148
152
  }
149
153
 
150
- declare interface SoundWorld {
154
+ export declare interface SoundWorld {
151
155
  common: Common,
152
156
  sound_id: number,
153
157
  }
154
158
 
155
- declare interface DamageInd {
159
+ export declare interface DamageInd {
156
160
  common: Common,
157
161
  angle: number,
158
162
  }
159
- declare enum items {
163
+ export declare enum items {
160
164
  OBJ_EX,
161
165
  OBJ_PLAYER_INPUT,
162
166
  OBJ_PROJECTILE,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "teeworlds",
3
- "version": "2.4.4",
3
+ "version": "2.4.5",
4
4
  "description": "Library for (ingame) teeworlds bots.",
5
5
  "license": "MIT",
6
6
  "main": "index.js",