mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 00:54:14 +02:00
include /build
This commit is contained in:
parent
6e50384883
commit
132ab1b47a
220 changed files with 9059 additions and 1 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,5 +1,6 @@
|
||||||
node_modules
|
node_modules
|
||||||
build
|
build/tests/
|
||||||
|
build/es6/
|
||||||
*.dem
|
*.dem
|
||||||
*.txt
|
*.txt
|
||||||
*.lock
|
*.lock
|
||||||
|
|
|
||||||
17
build/Analyser.d.ts
vendored
Normal file
17
build/Analyser.d.ts
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
/// <reference types="node" />
|
||||||
|
import { EventEmitter } from 'events';
|
||||||
|
import { Header } from './Data/Header';
|
||||||
|
import { Match } from './Data/Match';
|
||||||
|
import { Message } from './Data/Message';
|
||||||
|
import { Packet } from './Data/Packet';
|
||||||
|
import { Parser } from './Parser';
|
||||||
|
export declare class Analyser extends EventEmitter {
|
||||||
|
readonly match: Match;
|
||||||
|
private readonly parser;
|
||||||
|
private analysed;
|
||||||
|
constructor(parser: Parser);
|
||||||
|
getHeader(): Header;
|
||||||
|
getBody(): Match;
|
||||||
|
getPackets(): IterableIterator<Packet>;
|
||||||
|
getMessages(): IterableIterator<Message>;
|
||||||
|
}
|
||||||
48
build/Analyser.js
Normal file
48
build/Analyser.js
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const events_1 = require("events");
|
||||||
|
const Match_1 = require("./Data/Match");
|
||||||
|
const Message_1 = require("./Data/Message");
|
||||||
|
class Analyser extends events_1.EventEmitter {
|
||||||
|
constructor(parser) {
|
||||||
|
super();
|
||||||
|
this.analysed = false;
|
||||||
|
this.parser = parser;
|
||||||
|
this.match = new Match_1.Match(this.parser.parserState);
|
||||||
|
}
|
||||||
|
getHeader() {
|
||||||
|
return this.parser.getHeader();
|
||||||
|
}
|
||||||
|
getBody() {
|
||||||
|
if (!this.analysed) {
|
||||||
|
for (const packet of this.getPackets()) {
|
||||||
|
this.emit('packet', packet);
|
||||||
|
}
|
||||||
|
this.emit('done');
|
||||||
|
}
|
||||||
|
this.analysed = true;
|
||||||
|
return this.match;
|
||||||
|
}
|
||||||
|
*getPackets() {
|
||||||
|
for (const message of this.parser.getMessages()) {
|
||||||
|
if (message.type === Message_1.MessageType.Packet) {
|
||||||
|
for (const packet of message.packets) {
|
||||||
|
this.match.handlePacket(packet, message);
|
||||||
|
yield packet;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*getMessages() {
|
||||||
|
for (const message of this.parser.getMessages()) {
|
||||||
|
if (message.type === Message_1.MessageType.Packet) {
|
||||||
|
for (const packet of message.packets) {
|
||||||
|
this.match.handlePacket(packet, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yield message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Analyser = Analyser;
|
||||||
|
//# sourceMappingURL=Analyser.js.map
|
||||||
1
build/Analyser.js.map
Normal file
1
build/Analyser.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Analyser.js","sourceRoot":"","sources":["../src/Analyser.ts"],"names":[],"mappings":";;AAAA,mCAAoC;AAEpC,wCAAmC;AACnC,4CAAoD;AAIpD,MAAa,QAAS,SAAQ,qBAAY;IAKzC,YAAY,MAAc;QACzB,KAAK,EAAE,CAAC;QAHD,aAAQ,GAAY,KAAK,CAAC;QAIjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAEM,SAAS;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAEM,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClB;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAEM,CAAE,UAAU;QAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE;YAChD,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAW,CAAC,MAAM,EAAE;gBACxC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;oBACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBACzC,MAAM,MAAM,CAAC;iBACb;aACD;SACD;IACF,CAAC;IAEM,CAAE,WAAW;QACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE;YAChD,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAW,CAAC,MAAM,EAAE;gBACxC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;oBACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBACzC;aACD;YACD,MAAM,OAAO,CAAC;SACd;IACF,CAAC;CACD;AA/CD,4BA+CC"}
|
||||||
36
build/Data/Building.d.ts
vendored
Normal file
36
build/Data/Building.d.ts
vendored
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
import { Vector } from './Vector';
|
||||||
|
export interface BaseBuilding {
|
||||||
|
builder: number;
|
||||||
|
position: Vector;
|
||||||
|
level: number;
|
||||||
|
maxHealth: number;
|
||||||
|
health: number;
|
||||||
|
isBuilding: boolean;
|
||||||
|
isSapped: boolean;
|
||||||
|
team: number;
|
||||||
|
angle: number;
|
||||||
|
}
|
||||||
|
export interface Sentry extends BaseBuilding {
|
||||||
|
type: 'sentry';
|
||||||
|
shieldLevel: number;
|
||||||
|
playerControlled: boolean;
|
||||||
|
autoAimTarget: number;
|
||||||
|
ammoShells: number;
|
||||||
|
ammoRockets: number;
|
||||||
|
isMini: boolean;
|
||||||
|
}
|
||||||
|
export interface Dispenser extends BaseBuilding {
|
||||||
|
type: 'dispenser';
|
||||||
|
healing: number[];
|
||||||
|
metal: number;
|
||||||
|
}
|
||||||
|
export interface Teleporter extends BaseBuilding {
|
||||||
|
type: 'teleporter';
|
||||||
|
isEntrance: boolean;
|
||||||
|
otherEnd: number;
|
||||||
|
rechargeTime: number;
|
||||||
|
rechargeDuration: number;
|
||||||
|
timesUsed: number;
|
||||||
|
yawToExit: number;
|
||||||
|
}
|
||||||
|
export declare type Building = Sentry | Dispenser | Teleporter;
|
||||||
3
build/Data/Building.js
Normal file
3
build/Data/Building.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=Building.js.map
|
||||||
1
build/Data/Building.js.map
Normal file
1
build/Data/Building.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Building.js","sourceRoot":"","sources":["../../src/Data/Building.ts"],"names":[],"mappings":""}
|
||||||
6
build/Data/Chat.d.ts
vendored
Normal file
6
build/Data/Chat.d.ts
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
export interface Chat {
|
||||||
|
kind: string;
|
||||||
|
from: string;
|
||||||
|
text: string;
|
||||||
|
tick: number;
|
||||||
|
}
|
||||||
3
build/Data/Chat.js
Normal file
3
build/Data/Chat.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=Chat.js.map
|
||||||
1
build/Data/Chat.js.map
Normal file
1
build/Data/Chat.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Chat.js","sourceRoot":"","sources":["../../src/Data/Chat.ts"],"names":[],"mappings":""}
|
||||||
7
build/Data/Death.d.ts
vendored
Normal file
7
build/Data/Death.d.ts
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
export interface Death {
|
||||||
|
weapon: string;
|
||||||
|
victim: number;
|
||||||
|
assister: number | null;
|
||||||
|
killer: number;
|
||||||
|
tick: number;
|
||||||
|
}
|
||||||
3
build/Data/Death.js
Normal file
3
build/Data/Death.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=Death.js.map
|
||||||
1
build/Data/Death.js.map
Normal file
1
build/Data/Death.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Death.js","sourceRoot":"","sources":["../../src/Data/Death.ts"],"names":[],"mappings":""}
|
||||||
23
build/Data/GameEvent.d.ts
vendored
Normal file
23
build/Data/GameEvent.d.ts
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { GameEventType } from './GameEventTypes';
|
||||||
|
export interface GameEventDefinition<T extends GameEventType> {
|
||||||
|
id: number;
|
||||||
|
name: T;
|
||||||
|
entries: GameEventEntry[];
|
||||||
|
}
|
||||||
|
export interface GameEventEntry {
|
||||||
|
name: string;
|
||||||
|
type: GameEventValueType;
|
||||||
|
}
|
||||||
|
export declare enum GameEventValueType {
|
||||||
|
STRING = 1,
|
||||||
|
FLOAT = 2,
|
||||||
|
LONG = 3,
|
||||||
|
SHORT = 4,
|
||||||
|
BYTE = 5,
|
||||||
|
BOOLEAN = 6,
|
||||||
|
LOCAL = 7
|
||||||
|
}
|
||||||
|
export declare type GameEventValue = string | number | boolean;
|
||||||
|
export interface GameEventValues {
|
||||||
|
[name: string]: GameEventValue;
|
||||||
|
}
|
||||||
13
build/Data/GameEvent.js
Normal file
13
build/Data/GameEvent.js
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var GameEventValueType;
|
||||||
|
(function (GameEventValueType) {
|
||||||
|
GameEventValueType[GameEventValueType["STRING"] = 1] = "STRING";
|
||||||
|
GameEventValueType[GameEventValueType["FLOAT"] = 2] = "FLOAT";
|
||||||
|
GameEventValueType[GameEventValueType["LONG"] = 3] = "LONG";
|
||||||
|
GameEventValueType[GameEventValueType["SHORT"] = 4] = "SHORT";
|
||||||
|
GameEventValueType[GameEventValueType["BYTE"] = 5] = "BYTE";
|
||||||
|
GameEventValueType[GameEventValueType["BOOLEAN"] = 6] = "BOOLEAN";
|
||||||
|
GameEventValueType[GameEventValueType["LOCAL"] = 7] = "LOCAL";
|
||||||
|
})(GameEventValueType = exports.GameEventValueType || (exports.GameEventValueType = {}));
|
||||||
|
//# sourceMappingURL=GameEvent.js.map
|
||||||
1
build/Data/GameEvent.js.map
Normal file
1
build/Data/GameEvent.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"GameEvent.js","sourceRoot":"","sources":["../../src/Data/GameEvent.ts"],"names":[],"mappings":";;AAaA,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC7B,+DAAU,CAAA;IACV,6DAAS,CAAA;IACT,2DAAQ,CAAA;IACR,6DAAS,CAAA;IACT,2DAAQ,CAAA;IACR,iEAAW,CAAA;IACX,6DAAS,CAAA;AACV,CAAC,EARW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAQ7B"}
|
||||||
2979
build/Data/GameEventTypes.d.ts
vendored
Normal file
2979
build/Data/GameEventTypes.d.ts
vendored
Normal file
File diff suppressed because one or more lines are too long
381
build/Data/GameEventTypes.js
Normal file
381
build/Data/GameEventTypes.js
Normal file
|
|
@ -0,0 +1,381 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.GameEventTypeIdMap = new Map([
|
||||||
|
['server_spawn', 0],
|
||||||
|
['server_changelevel_failed', 1],
|
||||||
|
['server_shutdown', 2],
|
||||||
|
['server_cvar', 3],
|
||||||
|
['server_message', 4],
|
||||||
|
['server_addban', 5],
|
||||||
|
['server_removeban', 6],
|
||||||
|
['player_connect', 7],
|
||||||
|
['player_connect_client', 8],
|
||||||
|
['player_info', 9],
|
||||||
|
['player_disconnect', 10],
|
||||||
|
['player_activate', 11],
|
||||||
|
['player_say', 12],
|
||||||
|
['client_disconnect', 13],
|
||||||
|
['client_beginconnect', 14],
|
||||||
|
['client_connected', 15],
|
||||||
|
['client_fullconnect', 16],
|
||||||
|
['host_quit', 17],
|
||||||
|
['team_info', 18],
|
||||||
|
['team_score', 19],
|
||||||
|
['teamplay_broadcast_audio', 20],
|
||||||
|
['player_team', 21],
|
||||||
|
['player_class', 22],
|
||||||
|
['player_death', 23],
|
||||||
|
['player_hurt', 24],
|
||||||
|
['player_chat', 25],
|
||||||
|
['player_score', 26],
|
||||||
|
['player_spawn', 27],
|
||||||
|
['player_shoot', 28],
|
||||||
|
['player_use', 29],
|
||||||
|
['player_changename', 30],
|
||||||
|
['player_hintmessage', 31],
|
||||||
|
['base_player_teleported', 32],
|
||||||
|
['game_init', 33],
|
||||||
|
['game_newmap', 34],
|
||||||
|
['game_start', 35],
|
||||||
|
['game_end', 36],
|
||||||
|
['round_start', 37],
|
||||||
|
['round_end', 38],
|
||||||
|
['game_message', 39],
|
||||||
|
['break_breakable', 40],
|
||||||
|
['break_prop', 41],
|
||||||
|
['entity_killed', 42],
|
||||||
|
['bonus_updated', 43],
|
||||||
|
['achievement_event', 44],
|
||||||
|
['achievement_increment', 45],
|
||||||
|
['physgun_pickup', 46],
|
||||||
|
['flare_ignite_npc', 47],
|
||||||
|
['helicopter_grenade_punt_miss', 48],
|
||||||
|
['user_data_downloaded', 49],
|
||||||
|
['ragdoll_dissolved', 50],
|
||||||
|
['hltv_changed_mode', 51],
|
||||||
|
['hltv_changed_target', 52],
|
||||||
|
['vote_ended', 53],
|
||||||
|
['vote_started', 54],
|
||||||
|
['vote_changed', 55],
|
||||||
|
['vote_passed', 56],
|
||||||
|
['vote_failed', 57],
|
||||||
|
['vote_cast', 58],
|
||||||
|
['vote_options', 59],
|
||||||
|
['replay_saved', 60],
|
||||||
|
['entered_performance_mode', 61],
|
||||||
|
['browse_replays', 62],
|
||||||
|
['replay_youtube_stats', 63],
|
||||||
|
['inventory_updated', 64],
|
||||||
|
['cart_updated', 65],
|
||||||
|
['store_pricesheet_updated', 66],
|
||||||
|
['gc_connected', 67],
|
||||||
|
['item_schema_initialized', 68],
|
||||||
|
['intro_finish', 69],
|
||||||
|
['intro_nextcamera', 70],
|
||||||
|
['mm_lobby_chat', 71],
|
||||||
|
['mm_lobby_member_join', 72],
|
||||||
|
['mm_lobby_member_leave', 73],
|
||||||
|
['player_changeclass', 74],
|
||||||
|
['tf_map_time_remaining', 75],
|
||||||
|
['tf_game_over', 76],
|
||||||
|
['ctf_flag_captured', 77],
|
||||||
|
['controlpoint_initialized', 78],
|
||||||
|
['controlpoint_updateimages', 79],
|
||||||
|
['controlpoint_updatelayout', 80],
|
||||||
|
['controlpoint_updatecapping', 81],
|
||||||
|
['controlpoint_updateowner', 82],
|
||||||
|
['controlpoint_starttouch', 83],
|
||||||
|
['controlpoint_endtouch', 84],
|
||||||
|
['controlpoint_pulse_element', 85],
|
||||||
|
['controlpoint_fake_capture', 86],
|
||||||
|
['controlpoint_fake_capture_mult', 87],
|
||||||
|
['teamplay_round_selected', 88],
|
||||||
|
['teamplay_round_start', 89],
|
||||||
|
['teamplay_round_active', 90],
|
||||||
|
['teamplay_waiting_begins', 91],
|
||||||
|
['teamplay_waiting_ends', 92],
|
||||||
|
['teamplay_waiting_abouttoend', 93],
|
||||||
|
['teamplay_restart_round', 94],
|
||||||
|
['teamplay_ready_restart', 95],
|
||||||
|
['teamplay_round_restart_seconds', 96],
|
||||||
|
['teamplay_team_ready', 97],
|
||||||
|
['teamplay_round_win', 98],
|
||||||
|
['teamplay_update_timer', 99],
|
||||||
|
['teamplay_round_stalemate', 100],
|
||||||
|
['teamplay_overtime_begin', 101],
|
||||||
|
['teamplay_overtime_end', 102],
|
||||||
|
['teamplay_suddendeath_begin', 103],
|
||||||
|
['teamplay_suddendeath_end', 104],
|
||||||
|
['teamplay_game_over', 105],
|
||||||
|
['teamplay_map_time_remaining', 106],
|
||||||
|
['teamplay_timer_flash', 107],
|
||||||
|
['teamplay_timer_time_added', 108],
|
||||||
|
['teamplay_point_startcapture', 109],
|
||||||
|
['teamplay_point_captured', 110],
|
||||||
|
['teamplay_point_locked', 111],
|
||||||
|
['teamplay_point_unlocked', 112],
|
||||||
|
['teamplay_capture_broken', 113],
|
||||||
|
['teamplay_capture_blocked', 114],
|
||||||
|
['teamplay_flag_event', 115],
|
||||||
|
['teamplay_win_panel', 116],
|
||||||
|
['teamplay_teambalanced_player', 117],
|
||||||
|
['teamplay_setup_finished', 118],
|
||||||
|
['teamplay_alert', 119],
|
||||||
|
['training_complete', 120],
|
||||||
|
['show_freezepanel', 121],
|
||||||
|
['hide_freezepanel', 122],
|
||||||
|
['freezecam_started', 123],
|
||||||
|
['localplayer_changeteam', 124],
|
||||||
|
['localplayer_score_changed', 125],
|
||||||
|
['localplayer_changeclass', 126],
|
||||||
|
['localplayer_respawn', 127],
|
||||||
|
['building_info_changed', 128],
|
||||||
|
['localplayer_changedisguise', 129],
|
||||||
|
['player_account_changed', 130],
|
||||||
|
['spy_pda_reset', 131],
|
||||||
|
['flagstatus_update', 132],
|
||||||
|
['player_stats_updated', 133],
|
||||||
|
['playing_commentary', 134],
|
||||||
|
['player_chargedeployed', 135],
|
||||||
|
['player_builtobject', 136],
|
||||||
|
['player_upgradedobject', 137],
|
||||||
|
['player_carryobject', 138],
|
||||||
|
['player_dropobject', 139],
|
||||||
|
['object_removed', 140],
|
||||||
|
['object_destroyed', 141],
|
||||||
|
['object_detonated', 142],
|
||||||
|
['achievement_earned', 143],
|
||||||
|
['spec_target_updated', 144],
|
||||||
|
['tournament_stateupdate', 145],
|
||||||
|
['tournament_enablecountdown', 146],
|
||||||
|
['player_calledformedic', 147],
|
||||||
|
['player_askedforball', 148],
|
||||||
|
['localplayer_becameobserver', 149],
|
||||||
|
['player_ignited_inv', 150],
|
||||||
|
['player_ignited', 151],
|
||||||
|
['player_extinguished', 152],
|
||||||
|
['player_teleported', 153],
|
||||||
|
['player_healedmediccall', 154],
|
||||||
|
['localplayer_chargeready', 155],
|
||||||
|
['localplayer_winddown', 156],
|
||||||
|
['player_invulned', 157],
|
||||||
|
['escort_speed', 158],
|
||||||
|
['escort_progress', 159],
|
||||||
|
['escort_recede', 160],
|
||||||
|
['gameui_activated', 161],
|
||||||
|
['gameui_hidden', 162],
|
||||||
|
['player_escort_score', 163],
|
||||||
|
['player_healonhit', 164],
|
||||||
|
['player_stealsandvich', 165],
|
||||||
|
['show_class_layout', 166],
|
||||||
|
['show_vs_panel', 167],
|
||||||
|
['player_damaged', 168],
|
||||||
|
['arena_player_notification', 169],
|
||||||
|
['arena_match_maxstreak', 170],
|
||||||
|
['arena_round_start', 171],
|
||||||
|
['arena_win_panel', 172],
|
||||||
|
['pve_win_panel', 173],
|
||||||
|
['air_dash', 174],
|
||||||
|
['landed', 175],
|
||||||
|
['player_damage_dodged', 176],
|
||||||
|
['player_stunned', 177],
|
||||||
|
['scout_grand_slam', 178],
|
||||||
|
['scout_slamdoll_landed', 179],
|
||||||
|
['arrow_impact', 180],
|
||||||
|
['player_jarated', 181],
|
||||||
|
['player_jarated_fade', 182],
|
||||||
|
['player_shield_blocked', 183],
|
||||||
|
['player_pinned', 184],
|
||||||
|
['player_healedbymedic', 185],
|
||||||
|
['player_sapped_object', 186],
|
||||||
|
['item_found', 187],
|
||||||
|
['show_annotation', 188],
|
||||||
|
['hide_annotation', 189],
|
||||||
|
['post_inventory_application', 190],
|
||||||
|
['controlpoint_unlock_updated', 191],
|
||||||
|
['deploy_buff_banner', 192],
|
||||||
|
['player_buff', 193],
|
||||||
|
['medic_death', 194],
|
||||||
|
['overtime_nag', 195],
|
||||||
|
['teams_changed', 196],
|
||||||
|
['halloween_pumpkin_grab', 197],
|
||||||
|
['rocket_jump', 198],
|
||||||
|
['rocket_jump_landed', 199],
|
||||||
|
['sticky_jump', 200],
|
||||||
|
['sticky_jump_landed', 201],
|
||||||
|
['medic_defended', 202],
|
||||||
|
['localplayer_healed', 203],
|
||||||
|
['player_destroyed_pipebomb', 204],
|
||||||
|
['object_deflected', 205],
|
||||||
|
['player_mvp', 206],
|
||||||
|
['raid_spawn_mob', 207],
|
||||||
|
['raid_spawn_squad', 208],
|
||||||
|
['nav_blocked', 209],
|
||||||
|
['path_track_passed', 210],
|
||||||
|
['num_cappers_changed', 211],
|
||||||
|
['player_regenerate', 212],
|
||||||
|
['update_status_item', 213],
|
||||||
|
['stats_resetround', 214],
|
||||||
|
['scorestats_accumulated_update', 215],
|
||||||
|
['scorestats_accumulated_reset', 216],
|
||||||
|
['achievement_earned_local', 217],
|
||||||
|
['player_healed', 218],
|
||||||
|
['building_healed', 219],
|
||||||
|
['item_pickup', 220],
|
||||||
|
['duel_status', 221],
|
||||||
|
['fish_notice', 222],
|
||||||
|
['fish_notice__arm', 223],
|
||||||
|
['throwable_hit', 224],
|
||||||
|
['pumpkin_lord_summoned', 225],
|
||||||
|
['pumpkin_lord_killed', 226],
|
||||||
|
['merasmus_summoned', 227],
|
||||||
|
['merasmus_killed', 228],
|
||||||
|
['merasmus_escape_warning', 229],
|
||||||
|
['merasmus_escaped', 230],
|
||||||
|
['eyeball_boss_summoned', 231],
|
||||||
|
['eyeball_boss_stunned', 232],
|
||||||
|
['eyeball_boss_killed', 233],
|
||||||
|
['eyeball_boss_killer', 234],
|
||||||
|
['eyeball_boss_escape_imminent', 235],
|
||||||
|
['eyeball_boss_escaped', 236],
|
||||||
|
['npc_hurt', 237],
|
||||||
|
['controlpoint_timer_updated', 238],
|
||||||
|
['player_highfive_start', 239],
|
||||||
|
['player_highfive_cancel', 240],
|
||||||
|
['player_highfive_success', 241],
|
||||||
|
['player_bonuspoints', 242],
|
||||||
|
['player_upgraded', 243],
|
||||||
|
['player_buyback', 244],
|
||||||
|
['player_used_powerup_bottle', 245],
|
||||||
|
['christmas_gift_grab', 246],
|
||||||
|
['player_killed_achievement_zone', 247],
|
||||||
|
['party_updated', 248],
|
||||||
|
['lobby_updated', 249],
|
||||||
|
['mvm_mission_update', 250],
|
||||||
|
['recalculate_holidays', 251],
|
||||||
|
['player_currency_changed', 252],
|
||||||
|
['doomsday_rocket_open', 253],
|
||||||
|
['remove_nemesis_relationships', 254],
|
||||||
|
['mvm_creditbonus_wave', 255],
|
||||||
|
['mvm_creditbonus_all', 256],
|
||||||
|
['mvm_creditbonus_all_advanced', 257],
|
||||||
|
['mvm_quick_sentry_upgrade', 258],
|
||||||
|
['mvm_tank_destroyed_by_players', 259],
|
||||||
|
['mvm_kill_robot_delivering_bomb', 260],
|
||||||
|
['mvm_pickup_currency', 261],
|
||||||
|
['mvm_bomb_carrier_killed', 262],
|
||||||
|
['mvm_sentrybuster_detonate', 263],
|
||||||
|
['mvm_scout_marked_for_death', 264],
|
||||||
|
['mvm_medic_powerup_shared', 265],
|
||||||
|
['mvm_begin_wave', 266],
|
||||||
|
['mvm_wave_complete', 267],
|
||||||
|
['mvm_mission_complete', 268],
|
||||||
|
['mvm_bomb_reset_by_player', 269],
|
||||||
|
['mvm_bomb_alarm_triggered', 270],
|
||||||
|
['mvm_bomb_deploy_reset_by_player', 271],
|
||||||
|
['mvm_wave_failed', 272],
|
||||||
|
['mvm_reset_stats', 273],
|
||||||
|
['damage_resisted', 274],
|
||||||
|
['revive_player_notify', 275],
|
||||||
|
['revive_player_stopped', 276],
|
||||||
|
['revive_player_complete', 277],
|
||||||
|
['player_turned_to_ghost', 278],
|
||||||
|
['medigun_shield_blocked_damage', 279],
|
||||||
|
['mvm_adv_wave_complete_no_gates', 280],
|
||||||
|
['mvm_sniper_headshot_currency', 281],
|
||||||
|
['mvm_mannhattan_pit', 282],
|
||||||
|
['flag_carried_in_detection_zone', 283],
|
||||||
|
['mvm_adv_wave_killed_stun_radio', 284],
|
||||||
|
['player_directhit_stun', 285],
|
||||||
|
['mvm_sentrybuster_killed', 286],
|
||||||
|
['upgrades_file_changed', 287],
|
||||||
|
['rd_team_points_changed', 288],
|
||||||
|
['rd_rules_state_changed', 289],
|
||||||
|
['rd_robot_killed', 290],
|
||||||
|
['rd_robot_impact', 291],
|
||||||
|
['teamplay_pre_round_time_left', 292],
|
||||||
|
['parachute_deploy', 293],
|
||||||
|
['parachute_holster', 294],
|
||||||
|
['kill_refills_meter', 295],
|
||||||
|
['rps_taunt_event', 296],
|
||||||
|
['conga_kill', 297],
|
||||||
|
['player_initial_spawn', 298],
|
||||||
|
['competitive_victory', 299],
|
||||||
|
['competitive_stats_update', 300],
|
||||||
|
['minigame_win', 301],
|
||||||
|
['sentry_on_go_active', 302],
|
||||||
|
['duck_xp_level_up', 303],
|
||||||
|
['questlog_opened', 304],
|
||||||
|
['schema_updated', 305],
|
||||||
|
['localplayer_pickup_weapon', 306],
|
||||||
|
['rd_player_score_points', 307],
|
||||||
|
['demoman_det_stickies', 308],
|
||||||
|
['quest_objective_completed', 309],
|
||||||
|
['player_score_changed', 310],
|
||||||
|
['killed_capping_player', 311],
|
||||||
|
['environmental_death', 312],
|
||||||
|
['projectile_direct_hit', 313],
|
||||||
|
['pass_get', 314],
|
||||||
|
['pass_score', 315],
|
||||||
|
['pass_free', 316],
|
||||||
|
['pass_pass_caught', 317],
|
||||||
|
['pass_ball_stolen', 318],
|
||||||
|
['pass_ball_blocked', 319],
|
||||||
|
['damage_prevented', 320],
|
||||||
|
['halloween_boss_killed', 321],
|
||||||
|
['escaped_loot_island', 322],
|
||||||
|
['tagged_player_as_it', 323],
|
||||||
|
['merasmus_stunned', 324],
|
||||||
|
['merasmus_prop_found', 325],
|
||||||
|
['halloween_skeleton_killed', 326],
|
||||||
|
['escape_hell', 327],
|
||||||
|
['cross_spectral_bridge', 328],
|
||||||
|
['minigame_won', 329],
|
||||||
|
['respawn_ghost', 330],
|
||||||
|
['kill_in_hell', 331],
|
||||||
|
['halloween_duck_collected', 332],
|
||||||
|
['special_score', 333],
|
||||||
|
['team_leader_killed', 334],
|
||||||
|
['halloween_soul_collected', 335],
|
||||||
|
['recalculate_truce', 336],
|
||||||
|
['deadringer_cheat_death', 337],
|
||||||
|
['crossbow_heal', 338],
|
||||||
|
['damage_mitigated', 339],
|
||||||
|
['payload_pushed', 340],
|
||||||
|
['player_abandoned_match', 341],
|
||||||
|
['cl_drawline', 342],
|
||||||
|
['restart_timer_time', 343],
|
||||||
|
['winlimit_changed', 344],
|
||||||
|
['winpanel_show_scores', 345],
|
||||||
|
['top_streams_request_finished', 346],
|
||||||
|
['competitive_state_changed', 347],
|
||||||
|
['global_war_data_updated', 348],
|
||||||
|
['stop_watch_changed', 349],
|
||||||
|
['ds_stop', 350],
|
||||||
|
['ds_screenshot', 351],
|
||||||
|
['show_match_summary', 352],
|
||||||
|
['experience_changed', 353],
|
||||||
|
['begin_xp_lerp', 354],
|
||||||
|
['matchmaker_stats_updated', 355],
|
||||||
|
['rematch_vote_period_over', 356],
|
||||||
|
['rematch_failed_to_create', 357],
|
||||||
|
['player_rematch_change', 358],
|
||||||
|
['ping_updated', 359],
|
||||||
|
['player_next_map_vote_change', 360],
|
||||||
|
['vote_maps_changed', 361],
|
||||||
|
['hltv_status', 362],
|
||||||
|
['hltv_cameraman', 363],
|
||||||
|
['hltv_rank_camera', 364],
|
||||||
|
['hltv_rank_entity', 365],
|
||||||
|
['hltv_fixed', 366],
|
||||||
|
['hltv_chase', 367],
|
||||||
|
['hltv_message', 368],
|
||||||
|
['hltv_title', 369],
|
||||||
|
['hltv_chat', 370],
|
||||||
|
['replay_startrecord', 371],
|
||||||
|
['replay_sessioninfo', 372],
|
||||||
|
['replay_endrecord', 373],
|
||||||
|
['replay_replaysavailable', 374],
|
||||||
|
['replay_servererror', 375]
|
||||||
|
]);
|
||||||
|
//# sourceMappingURL=GameEventTypes.js.map
|
||||||
1
build/Data/GameEventTypes.js.map
Normal file
1
build/Data/GameEventTypes.js.map
Normal file
File diff suppressed because one or more lines are too long
13
build/Data/Header.d.ts
vendored
Normal file
13
build/Data/Header.d.ts
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
export interface Header {
|
||||||
|
type: string;
|
||||||
|
version: number;
|
||||||
|
protocol: number;
|
||||||
|
server: string;
|
||||||
|
nick: string;
|
||||||
|
map: string;
|
||||||
|
game: string;
|
||||||
|
duration: number;
|
||||||
|
ticks: number;
|
||||||
|
frames: number;
|
||||||
|
sigon: number;
|
||||||
|
}
|
||||||
3
build/Data/Header.js
Normal file
3
build/Data/Header.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=Header.js.map
|
||||||
1
build/Data/Header.js.map
Normal file
1
build/Data/Header.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/Data/Header.ts"],"names":[],"mappings":""}
|
||||||
45
build/Data/Match.d.ts
vendored
Normal file
45
build/Data/Match.d.ts
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
import { Building } from './Building';
|
||||||
|
import { Chat } from './Chat';
|
||||||
|
import { Death } from './Death';
|
||||||
|
import { PacketMessage } from './Message';
|
||||||
|
import { Packet } from './Packet';
|
||||||
|
import { EntityId, PacketEntity } from './PacketEntity';
|
||||||
|
import { ParserState } from './ParserState';
|
||||||
|
import { Player } from './Player';
|
||||||
|
import { PlayerResource } from './PlayerResource';
|
||||||
|
import { Round } from './Round';
|
||||||
|
import { Team, TeamNumber } from './Team';
|
||||||
|
import { UserInfo } from './UserInfo';
|
||||||
|
import { Weapon } from './Weapon';
|
||||||
|
import { World } from './World';
|
||||||
|
export declare class Match {
|
||||||
|
tick: number;
|
||||||
|
chat: Chat[];
|
||||||
|
users: Map<number, UserInfo>;
|
||||||
|
deaths: Death[];
|
||||||
|
rounds: Round[];
|
||||||
|
startTick: number;
|
||||||
|
intervalPerTick: number;
|
||||||
|
world: World;
|
||||||
|
playerEntityMap: Map<EntityId, Player>;
|
||||||
|
weaponMap: Map<EntityId, Weapon>;
|
||||||
|
outerMap: Map<number, EntityId>;
|
||||||
|
teams: Map<TeamNumber, Team>;
|
||||||
|
teamEntityMap: Map<EntityId, Team>;
|
||||||
|
buildings: Map<EntityId, Building>;
|
||||||
|
playerResources: PlayerResource[];
|
||||||
|
readonly parserState: ParserState;
|
||||||
|
constructor(parserState: ParserState);
|
||||||
|
getState(): {
|
||||||
|
chat: Chat[];
|
||||||
|
users: {};
|
||||||
|
deaths: Death[];
|
||||||
|
rounds: Round[];
|
||||||
|
startTick: number;
|
||||||
|
intervalPerTick: number;
|
||||||
|
};
|
||||||
|
handlePacket(packet: Packet, message: PacketMessage): void;
|
||||||
|
getUserInfo(userId: number): UserInfo;
|
||||||
|
getUserInfoForEntity(entity: PacketEntity): UserInfo | null;
|
||||||
|
getPlayerByUserId(userId: number): Player | null;
|
||||||
|
}
|
||||||
120
build/Data/Match.js
Normal file
120
build/Data/Match.js
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const GameEvent_1 = require("../PacketHandler/GameEvent");
|
||||||
|
const PacketEntities_1 = require("../PacketHandler/PacketEntities");
|
||||||
|
const SayText2_1 = require("../PacketHandler/SayText2");
|
||||||
|
class Match {
|
||||||
|
constructor(parserState) {
|
||||||
|
this.tick = 0;
|
||||||
|
this.chat = [];
|
||||||
|
this.users = new Map();
|
||||||
|
this.deaths = [];
|
||||||
|
this.rounds = [];
|
||||||
|
this.startTick = 0;
|
||||||
|
this.intervalPerTick = 0;
|
||||||
|
this.world = {
|
||||||
|
boundaryMin: { x: 0, y: 0, z: 0 },
|
||||||
|
boundaryMax: { x: 0, y: 0, z: 0 }
|
||||||
|
};
|
||||||
|
this.playerEntityMap = new Map();
|
||||||
|
this.weaponMap = new Map();
|
||||||
|
this.outerMap = new Map();
|
||||||
|
this.teams = new Map();
|
||||||
|
this.teamEntityMap = new Map();
|
||||||
|
this.buildings = new Map();
|
||||||
|
this.playerResources = [];
|
||||||
|
this.parserState = parserState;
|
||||||
|
}
|
||||||
|
getState() {
|
||||||
|
const users = {};
|
||||||
|
for (const userEntity of this.parserState.userInfo.values()) {
|
||||||
|
this.getUserInfo(userEntity.userId);
|
||||||
|
}
|
||||||
|
for (const [key, user] of this.users.entries()) {
|
||||||
|
users[key] = {
|
||||||
|
classes: user.classes,
|
||||||
|
name: user.name,
|
||||||
|
steamId: user.steamId,
|
||||||
|
userId: user.userId
|
||||||
|
};
|
||||||
|
if (user.team) {
|
||||||
|
users[key].team = user.team;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
chat: this.chat,
|
||||||
|
users,
|
||||||
|
deaths: this.deaths,
|
||||||
|
rounds: this.rounds,
|
||||||
|
startTick: this.startTick,
|
||||||
|
intervalPerTick: this.intervalPerTick
|
||||||
|
};
|
||||||
|
}
|
||||||
|
handlePacket(packet, message) {
|
||||||
|
switch (packet.packetType) {
|
||||||
|
case 'packetEntities':
|
||||||
|
PacketEntities_1.handlePacketEntities(packet, this, message);
|
||||||
|
break;
|
||||||
|
case 'netTick':
|
||||||
|
if (this.startTick === 0) {
|
||||||
|
this.startTick = packet.tick;
|
||||||
|
}
|
||||||
|
this.tick = packet.tick;
|
||||||
|
break;
|
||||||
|
case 'serverInfo':
|
||||||
|
this.intervalPerTick = packet.intervalPerTick;
|
||||||
|
break;
|
||||||
|
case 'userMessage':
|
||||||
|
switch (packet.userMessageType) {
|
||||||
|
case 'sayText2':
|
||||||
|
SayText2_1.handleSayText2(packet, this);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'gameEvent':
|
||||||
|
GameEvent_1.handleGameEvent(packet, this);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getUserInfo(userId) {
|
||||||
|
// no clue why it does this
|
||||||
|
// only seems to be the case with per user ready
|
||||||
|
while (userId > 256) {
|
||||||
|
userId -= 256;
|
||||||
|
}
|
||||||
|
const user = this.users.get(userId);
|
||||||
|
if (user && user.userId !== userId) {
|
||||||
|
throw new Error(`Invalid user info id`);
|
||||||
|
}
|
||||||
|
if (!user) {
|
||||||
|
const entityInfo = this.parserState.getUserEntityInfo(userId);
|
||||||
|
const newUser = Object.assign({ classes: {}, team: '' }, entityInfo);
|
||||||
|
this.users.set(userId, newUser);
|
||||||
|
return newUser;
|
||||||
|
}
|
||||||
|
else if (!user.steamId) {
|
||||||
|
const entityInfo = this.parserState.getUserEntityInfo(userId);
|
||||||
|
if (entityInfo.steamId) {
|
||||||
|
user.steamId = entityInfo.steamId;
|
||||||
|
user.entityId = entityInfo.entityId;
|
||||||
|
user.name = entityInfo.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
getUserInfoForEntity(entity) {
|
||||||
|
for (const userEntity of this.parserState.userInfo.values()) {
|
||||||
|
if (userEntity && userEntity.entityId === entity.entityIndex) {
|
||||||
|
return this.getUserInfo(userEntity.userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
getPlayerByUserId(userId) {
|
||||||
|
const user = this.getUserInfo(userId);
|
||||||
|
const player = this.playerEntityMap.get(user.entityId);
|
||||||
|
return player || null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Match = Match;
|
||||||
|
//# sourceMappingURL=Match.js.map
|
||||||
1
build/Data/Match.js.map
Normal file
1
build/Data/Match.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Match.js","sourceRoot":"","sources":["../../src/Data/Match.ts"],"names":[],"mappings":"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"}
|
||||||
65
build/Data/Message.d.ts
vendored
Normal file
65
build/Data/Message.d.ts
vendored
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
import { BitStream } from 'bit-buffer';
|
||||||
|
import { Packet } from './Packet';
|
||||||
|
import { ParserState } from './ParserState';
|
||||||
|
import { SendTable } from './SendTable';
|
||||||
|
import { ServerClass } from './ServerClass';
|
||||||
|
import { StringTable } from './StringTable';
|
||||||
|
import { Vector } from './Vector';
|
||||||
|
export declare enum MessageType {
|
||||||
|
Sigon = 1,
|
||||||
|
Packet = 2,
|
||||||
|
SyncTick = 3,
|
||||||
|
ConsoleCmd = 4,
|
||||||
|
UserCmd = 5,
|
||||||
|
DataTables = 6,
|
||||||
|
Stop = 7,
|
||||||
|
StringTables = 8
|
||||||
|
}
|
||||||
|
export interface BaseMessage {
|
||||||
|
rawData: BitStream;
|
||||||
|
}
|
||||||
|
export interface PacketMessage extends BaseMessage {
|
||||||
|
tick: number;
|
||||||
|
type: MessageType.Packet;
|
||||||
|
packets: Packet[];
|
||||||
|
viewOrigin: [Vector, Vector];
|
||||||
|
viewAngles: [Vector, Vector];
|
||||||
|
localViewAngles: [Vector, Vector];
|
||||||
|
sequenceIn: number;
|
||||||
|
sequenceOut: number;
|
||||||
|
flags: number;
|
||||||
|
}
|
||||||
|
export declare type SigonMessage = PacketMessage;
|
||||||
|
export interface SyncTickMessage extends BaseMessage {
|
||||||
|
tick: number;
|
||||||
|
type: MessageType.SyncTick;
|
||||||
|
}
|
||||||
|
export interface StopMessage extends BaseMessage {
|
||||||
|
type: MessageType.Stop;
|
||||||
|
}
|
||||||
|
export interface ConsoleCmdMessage extends BaseMessage {
|
||||||
|
tick: number;
|
||||||
|
type: MessageType.ConsoleCmd;
|
||||||
|
command: string;
|
||||||
|
}
|
||||||
|
export interface UserCmdMessage extends BaseMessage {
|
||||||
|
tick: number;
|
||||||
|
type: MessageType.UserCmd;
|
||||||
|
sequenceOut: number;
|
||||||
|
}
|
||||||
|
export interface DataTablesMessage extends BaseMessage {
|
||||||
|
tick: number;
|
||||||
|
type: MessageType.DataTables;
|
||||||
|
tables: SendTable[];
|
||||||
|
serverClasses: ServerClass[];
|
||||||
|
}
|
||||||
|
export interface StringTablesMessage extends BaseMessage {
|
||||||
|
tick: number;
|
||||||
|
type: MessageType.StringTables;
|
||||||
|
tables: StringTable[];
|
||||||
|
}
|
||||||
|
export declare type Message = SigonMessage | PacketMessage | SyncTickMessage | ConsoleCmdMessage | UserCmdMessage | DataTablesMessage | StopMessage | StringTablesMessage;
|
||||||
|
export interface MessageHandler<M extends Message> {
|
||||||
|
parseMessage: (stream: BitStream, state: ParserState) => M;
|
||||||
|
encodeMessage: (message: M, stream: BitStream, state: ParserState) => void;
|
||||||
|
}
|
||||||
14
build/Data/Message.js
Normal file
14
build/Data/Message.js
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var MessageType;
|
||||||
|
(function (MessageType) {
|
||||||
|
MessageType[MessageType["Sigon"] = 1] = "Sigon";
|
||||||
|
MessageType[MessageType["Packet"] = 2] = "Packet";
|
||||||
|
MessageType[MessageType["SyncTick"] = 3] = "SyncTick";
|
||||||
|
MessageType[MessageType["ConsoleCmd"] = 4] = "ConsoleCmd";
|
||||||
|
MessageType[MessageType["UserCmd"] = 5] = "UserCmd";
|
||||||
|
MessageType[MessageType["DataTables"] = 6] = "DataTables";
|
||||||
|
MessageType[MessageType["Stop"] = 7] = "Stop";
|
||||||
|
MessageType[MessageType["StringTables"] = 8] = "StringTables";
|
||||||
|
})(MessageType = exports.MessageType || (exports.MessageType = {}));
|
||||||
|
//# sourceMappingURL=Message.js.map
|
||||||
1
build/Data/Message.js.map
Normal file
1
build/Data/Message.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/Data/Message.ts"],"names":[],"mappings":";;AAQA,IAAY,WASX;AATD,WAAY,WAAW;IACtB,+CAAS,CAAA;IACT,iDAAU,CAAA;IACV,qDAAY,CAAA;IACZ,yDAAc,CAAA;IACd,mDAAW,CAAA;IACX,yDAAc,CAAA;IACd,6CAAQ,CAAA;IACR,6DAAgB,CAAA;AACjB,CAAC,EATW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAStB"}
|
||||||
246
build/Data/Packet.d.ts
vendored
Normal file
246
build/Data/Packet.d.ts
vendored
Normal file
|
|
@ -0,0 +1,246 @@
|
||||||
|
import { BitStream } from 'bit-buffer';
|
||||||
|
import { GameEventDefinition } from './GameEvent';
|
||||||
|
import { GameEvent } from './GameEventTypes';
|
||||||
|
import { EntityId, PacketEntity } from './PacketEntity';
|
||||||
|
import { Game } from './ParserState';
|
||||||
|
import { SendTable } from './SendTable';
|
||||||
|
import { ServerClass } from './ServerClass';
|
||||||
|
import { StringTable, StringTableEntry } from './StringTable';
|
||||||
|
import { UserMessagePacket, UserMessageTypeMap } from './UserMessage';
|
||||||
|
import { Vector } from './Vector';
|
||||||
|
export interface StringTablePacket {
|
||||||
|
packetType: 'stringTable';
|
||||||
|
tables: StringTable[];
|
||||||
|
}
|
||||||
|
export interface CreateStringTablePacket {
|
||||||
|
packetType: 'createStringTable';
|
||||||
|
table: StringTable;
|
||||||
|
}
|
||||||
|
export interface UpdateStringTablePacket {
|
||||||
|
packetType: 'updateStringTable';
|
||||||
|
entries: StringTableEntry[];
|
||||||
|
tableId: number;
|
||||||
|
}
|
||||||
|
export interface ConsoleCmdPacket {
|
||||||
|
packetType: 'consoleCmd';
|
||||||
|
command: string;
|
||||||
|
}
|
||||||
|
export interface DataTablePacket {
|
||||||
|
packetType: 'dataTable';
|
||||||
|
tables: SendTable[];
|
||||||
|
serverClasses: ServerClass[];
|
||||||
|
}
|
||||||
|
export interface BSPDecalPacket {
|
||||||
|
packetType: 'bspDecal';
|
||||||
|
position: Vector;
|
||||||
|
textureIndex: number;
|
||||||
|
entIndex: number;
|
||||||
|
modelIndex: number;
|
||||||
|
lowPriority: boolean;
|
||||||
|
}
|
||||||
|
export interface ClassInfoPacket {
|
||||||
|
packetType: 'classInfo';
|
||||||
|
number: number;
|
||||||
|
create: boolean;
|
||||||
|
entries: Array<{
|
||||||
|
classId: number;
|
||||||
|
className: string;
|
||||||
|
dataTableName: string;
|
||||||
|
}>;
|
||||||
|
}
|
||||||
|
export interface EntityMessagePacket {
|
||||||
|
packetType: 'entityMessage';
|
||||||
|
classId: number;
|
||||||
|
length: number;
|
||||||
|
data: string;
|
||||||
|
}
|
||||||
|
export interface GameEventPacket {
|
||||||
|
packetType: 'gameEvent';
|
||||||
|
event: GameEvent;
|
||||||
|
}
|
||||||
|
export interface GameEventListPacket {
|
||||||
|
packetType: 'gameEventList';
|
||||||
|
eventList: Map<number, GameEventDefinition<GameEvent['name']>>;
|
||||||
|
}
|
||||||
|
export interface PacketEntitiesPacket {
|
||||||
|
packetType: 'packetEntities';
|
||||||
|
entities: PacketEntity[];
|
||||||
|
removedEntities: EntityId[];
|
||||||
|
maxEntries: number;
|
||||||
|
delta: number;
|
||||||
|
baseLine: number;
|
||||||
|
updatedBaseLine: boolean;
|
||||||
|
}
|
||||||
|
export interface ParseSoundsPacket {
|
||||||
|
packetType: 'parseSounds';
|
||||||
|
reliable: boolean;
|
||||||
|
num: number;
|
||||||
|
length: number;
|
||||||
|
data: BitStream;
|
||||||
|
}
|
||||||
|
export interface SetConVarPacket {
|
||||||
|
packetType: 'setConVar';
|
||||||
|
vars: Map<string, string>;
|
||||||
|
}
|
||||||
|
export interface TempEntitiesPacket {
|
||||||
|
packetType: 'tempEntities';
|
||||||
|
entities: PacketEntity[];
|
||||||
|
}
|
||||||
|
export interface VoiceInitPacket {
|
||||||
|
packetType: 'voiceInit';
|
||||||
|
codec: string;
|
||||||
|
quality: number;
|
||||||
|
extraData: number;
|
||||||
|
}
|
||||||
|
export interface VoiceDataPacket {
|
||||||
|
packetType: 'voiceData';
|
||||||
|
client: number;
|
||||||
|
proximity: number;
|
||||||
|
length: number;
|
||||||
|
data: BitStream;
|
||||||
|
}
|
||||||
|
export interface MenuPacket {
|
||||||
|
packetType: 'menu';
|
||||||
|
type: number;
|
||||||
|
length: number;
|
||||||
|
data: BitStream;
|
||||||
|
}
|
||||||
|
export interface CmdKeyValuesPacket {
|
||||||
|
packetType: 'cmdKeyValues';
|
||||||
|
length: number;
|
||||||
|
data: BitStream;
|
||||||
|
}
|
||||||
|
export interface VoidPacket {
|
||||||
|
packetType: 'void';
|
||||||
|
}
|
||||||
|
export interface FilePacket {
|
||||||
|
packetType: 'file';
|
||||||
|
transferId: number;
|
||||||
|
fileName: string;
|
||||||
|
requested: boolean;
|
||||||
|
}
|
||||||
|
export interface NetTickPacket {
|
||||||
|
packetType: 'netTick';
|
||||||
|
tick: number;
|
||||||
|
frameTime: number;
|
||||||
|
stdDev: number;
|
||||||
|
}
|
||||||
|
export interface StringCmdPacket {
|
||||||
|
packetType: 'stringCmd';
|
||||||
|
command: string;
|
||||||
|
}
|
||||||
|
export interface SigOnStatePacket {
|
||||||
|
packetType: 'sigOnState';
|
||||||
|
state: number;
|
||||||
|
count: number;
|
||||||
|
}
|
||||||
|
export interface PrintPacket {
|
||||||
|
packetType: 'print';
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
export interface ServerInfoPacket {
|
||||||
|
packetType: 'serverInfo';
|
||||||
|
version: number;
|
||||||
|
serverCount: number;
|
||||||
|
stv: boolean;
|
||||||
|
dedicated: boolean;
|
||||||
|
maxCrc: number;
|
||||||
|
maxClasses: number;
|
||||||
|
mapHash: number;
|
||||||
|
playerCount: number;
|
||||||
|
maxPlayerCount: number;
|
||||||
|
intervalPerTick: number;
|
||||||
|
platform: string;
|
||||||
|
game: Game;
|
||||||
|
skybox: string;
|
||||||
|
serverName: string;
|
||||||
|
replay: boolean;
|
||||||
|
}
|
||||||
|
export interface SetPausePacket {
|
||||||
|
packetType: 'setPause';
|
||||||
|
paused: boolean;
|
||||||
|
}
|
||||||
|
export interface SetViewPacket {
|
||||||
|
packetType: 'setView';
|
||||||
|
index: number;
|
||||||
|
}
|
||||||
|
export interface FixAnglePacket {
|
||||||
|
packetType: 'fixAngle';
|
||||||
|
relative: boolean;
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
z: number;
|
||||||
|
}
|
||||||
|
export interface PreFetchPacket {
|
||||||
|
packetType: 'preFetch';
|
||||||
|
index: number;
|
||||||
|
}
|
||||||
|
export interface GetCvarValuePacket {
|
||||||
|
packetType: 'getCvarValue';
|
||||||
|
cookie: number;
|
||||||
|
value: string;
|
||||||
|
}
|
||||||
|
export declare type Packet = BSPDecalPacket | StringTablePacket | CreateStringTablePacket | UpdateStringTablePacket | DataTablePacket | ClassInfoPacket | EntityMessagePacket | GameEventPacket | GameEventListPacket | PacketEntitiesPacket | ParseSoundsPacket | SetConVarPacket | TempEntitiesPacket | UserMessagePacket | VoiceInitPacket | VoiceDataPacket | MenuPacket | ConsoleCmdPacket | CmdKeyValuesPacket | VoidPacket | FilePacket | NetTickPacket | StringCmdPacket | SigOnStatePacket | PrintPacket | ServerInfoPacket | SetPausePacket | SetViewPacket | FixAnglePacket | PreFetchPacket | GetCvarValuePacket;
|
||||||
|
export declare type PacketType = Packet['packetType'];
|
||||||
|
export declare type PacketMapType = {
|
||||||
|
bspDecal: BSPDecalPacket;
|
||||||
|
stringTable: StringTablePacket;
|
||||||
|
createStringTable: CreateStringTablePacket;
|
||||||
|
updateStringTable: UpdateStringTablePacket;
|
||||||
|
dataTable: DataTablePacket;
|
||||||
|
classInfo: ClassInfoPacket;
|
||||||
|
entityMessage: EntityMessagePacket;
|
||||||
|
gameEvent: GameEventPacket;
|
||||||
|
gameEventList: GameEventListPacket;
|
||||||
|
packetEntities: PacketEntitiesPacket;
|
||||||
|
parseSounds: ParseSoundsPacket;
|
||||||
|
setConVar: SetConVarPacket;
|
||||||
|
tempEntities: TempEntitiesPacket;
|
||||||
|
userMessage: UserMessagePacket;
|
||||||
|
voiceInit: VoiceInitPacket;
|
||||||
|
voiceData: VoiceDataPacket;
|
||||||
|
menu: MenuPacket;
|
||||||
|
consoleCmd: ConsoleCmdPacket;
|
||||||
|
cmdKeyValues: CmdKeyValuesPacket;
|
||||||
|
'void': VoidPacket;
|
||||||
|
file: FilePacket;
|
||||||
|
netTick: NetTickPacket;
|
||||||
|
stringCmd: StringCmdPacket;
|
||||||
|
sigOnState: SigOnStatePacket;
|
||||||
|
print: PrintPacket;
|
||||||
|
serverInfo: ServerInfoPacket;
|
||||||
|
setPause: SetPausePacket;
|
||||||
|
setView: SetViewPacket;
|
||||||
|
fixAngle: FixAnglePacket;
|
||||||
|
preFetch: PreFetchPacket;
|
||||||
|
getCvarValue: GetCvarValuePacket;
|
||||||
|
} & UserMessageTypeMap;
|
||||||
|
export declare enum PacketTypeId {
|
||||||
|
file = 2,
|
||||||
|
netTick = 3,
|
||||||
|
stringCmd = 4,
|
||||||
|
setConVar = 5,
|
||||||
|
sigOnState = 6,
|
||||||
|
print = 7,
|
||||||
|
serverInfo = 8,
|
||||||
|
classInfo = 10,
|
||||||
|
setPause = 11,
|
||||||
|
createStringTable = 12,
|
||||||
|
updateStringTable = 13,
|
||||||
|
voiceInit = 14,
|
||||||
|
voiceData = 15,
|
||||||
|
parseSounds = 17,
|
||||||
|
setView = 18,
|
||||||
|
fixAngle = 19,
|
||||||
|
bspDecal = 21,
|
||||||
|
userMessage = 23,
|
||||||
|
entityMessage = 24,
|
||||||
|
gameEvent = 25,
|
||||||
|
packetEntities = 26,
|
||||||
|
tempEntities = 27,
|
||||||
|
preFetch = 28,
|
||||||
|
menu = 29,
|
||||||
|
gameEventList = 30,
|
||||||
|
getCvarValue = 31,
|
||||||
|
cmdKeyValues = 32
|
||||||
|
}
|
||||||
33
build/Data/Packet.js
Normal file
33
build/Data/Packet.js
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var PacketTypeId;
|
||||||
|
(function (PacketTypeId) {
|
||||||
|
PacketTypeId[PacketTypeId["file"] = 2] = "file";
|
||||||
|
PacketTypeId[PacketTypeId["netTick"] = 3] = "netTick";
|
||||||
|
PacketTypeId[PacketTypeId["stringCmd"] = 4] = "stringCmd";
|
||||||
|
PacketTypeId[PacketTypeId["setConVar"] = 5] = "setConVar";
|
||||||
|
PacketTypeId[PacketTypeId["sigOnState"] = 6] = "sigOnState";
|
||||||
|
PacketTypeId[PacketTypeId["print"] = 7] = "print";
|
||||||
|
PacketTypeId[PacketTypeId["serverInfo"] = 8] = "serverInfo";
|
||||||
|
PacketTypeId[PacketTypeId["classInfo"] = 10] = "classInfo";
|
||||||
|
PacketTypeId[PacketTypeId["setPause"] = 11] = "setPause";
|
||||||
|
PacketTypeId[PacketTypeId["createStringTable"] = 12] = "createStringTable";
|
||||||
|
PacketTypeId[PacketTypeId["updateStringTable"] = 13] = "updateStringTable";
|
||||||
|
PacketTypeId[PacketTypeId["voiceInit"] = 14] = "voiceInit";
|
||||||
|
PacketTypeId[PacketTypeId["voiceData"] = 15] = "voiceData";
|
||||||
|
PacketTypeId[PacketTypeId["parseSounds"] = 17] = "parseSounds";
|
||||||
|
PacketTypeId[PacketTypeId["setView"] = 18] = "setView";
|
||||||
|
PacketTypeId[PacketTypeId["fixAngle"] = 19] = "fixAngle";
|
||||||
|
PacketTypeId[PacketTypeId["bspDecal"] = 21] = "bspDecal";
|
||||||
|
PacketTypeId[PacketTypeId["userMessage"] = 23] = "userMessage";
|
||||||
|
PacketTypeId[PacketTypeId["entityMessage"] = 24] = "entityMessage";
|
||||||
|
PacketTypeId[PacketTypeId["gameEvent"] = 25] = "gameEvent";
|
||||||
|
PacketTypeId[PacketTypeId["packetEntities"] = 26] = "packetEntities";
|
||||||
|
PacketTypeId[PacketTypeId["tempEntities"] = 27] = "tempEntities";
|
||||||
|
PacketTypeId[PacketTypeId["preFetch"] = 28] = "preFetch";
|
||||||
|
PacketTypeId[PacketTypeId["menu"] = 29] = "menu";
|
||||||
|
PacketTypeId[PacketTypeId["gameEventList"] = 30] = "gameEventList";
|
||||||
|
PacketTypeId[PacketTypeId["getCvarValue"] = 31] = "getCvarValue";
|
||||||
|
PacketTypeId[PacketTypeId["cmdKeyValues"] = 32] = "cmdKeyValues";
|
||||||
|
})(PacketTypeId = exports.PacketTypeId || (exports.PacketTypeId = {}));
|
||||||
|
//# sourceMappingURL=Packet.js.map
|
||||||
1
build/Data/Packet.js.map
Normal file
1
build/Data/Packet.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Packet.js","sourceRoot":"","sources":["../../src/Data/Packet.ts"],"names":[],"mappings":";;AA6RA,IAAY,YA4BX;AA5BD,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,2DAAc,CAAA;IACd,iDAAS,CAAA;IACT,2DAAc,CAAA;IACd,0DAAc,CAAA;IACd,wDAAa,CAAA;IACb,0EAAsB,CAAA;IACtB,0EAAsB,CAAA;IACtB,0DAAc,CAAA;IACd,0DAAc,CAAA;IACd,8DAAgB,CAAA;IAChB,sDAAY,CAAA;IACZ,wDAAa,CAAA;IACb,wDAAa,CAAA;IACb,8DAAgB,CAAA;IAChB,kEAAkB,CAAA;IAClB,0DAAc,CAAA;IACd,oEAAmB,CAAA;IACnB,gEAAiB,CAAA;IACjB,wDAAa,CAAA;IACb,gDAAS,CAAA;IACT,kEAAkB,CAAA;IAClB,gEAAiB,CAAA;IACjB,gEAAiB,CAAA;AAClB,CAAC,EA5BW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QA4BvB"}
|
||||||
28
build/Data/PacketEntity.d.ts
vendored
Normal file
28
build/Data/PacketEntity.d.ts
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
import { SendProp, SendPropValue } from './SendProp';
|
||||||
|
import { SendPropDefinition } from './SendPropDefinition';
|
||||||
|
import { ServerClass } from './ServerClass';
|
||||||
|
export declare enum PVS {
|
||||||
|
PRESERVE = 0,
|
||||||
|
ENTER = 1,
|
||||||
|
LEAVE = 2,
|
||||||
|
DELETE = 4
|
||||||
|
}
|
||||||
|
export declare type EntityId = number;
|
||||||
|
export declare class PacketEntity {
|
||||||
|
static getPropByFullName(props: SendProp[], fullName: string): SendProp | null;
|
||||||
|
serverClass: ServerClass;
|
||||||
|
entityIndex: EntityId;
|
||||||
|
props: SendProp[];
|
||||||
|
inPVS: boolean;
|
||||||
|
pvs: PVS;
|
||||||
|
serialNumber?: number;
|
||||||
|
delay?: number;
|
||||||
|
constructor(serverClass: ServerClass, entityIndex: number, pvs: PVS);
|
||||||
|
getPropByDefinition(definition: SendPropDefinition): SendProp | null;
|
||||||
|
getProperty(originTable: string, name: string): SendProp;
|
||||||
|
hasProperty(originTable: string, name: string): boolean;
|
||||||
|
clone(): PacketEntity;
|
||||||
|
applyPropUpdate(props: SendProp[]): void;
|
||||||
|
diffFromBaseLine(baselineProps: SendProp[]): SendProp[];
|
||||||
|
getPropValue(fullName: string): SendPropValue | null;
|
||||||
|
}
|
||||||
77
build/Data/PacketEntity.js
Normal file
77
build/Data/PacketEntity.js
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const SendProp_1 = require("./SendProp");
|
||||||
|
var PVS;
|
||||||
|
(function (PVS) {
|
||||||
|
PVS[PVS["PRESERVE"] = 0] = "PRESERVE";
|
||||||
|
PVS[PVS["ENTER"] = 1] = "ENTER";
|
||||||
|
PVS[PVS["LEAVE"] = 2] = "LEAVE";
|
||||||
|
PVS[PVS["DELETE"] = 4] = "DELETE";
|
||||||
|
})(PVS = exports.PVS || (exports.PVS = {}));
|
||||||
|
class PacketEntity {
|
||||||
|
static getPropByFullName(props, fullName) {
|
||||||
|
for (const prop of props) {
|
||||||
|
if (prop.definition.fullName === fullName) {
|
||||||
|
return prop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
constructor(serverClass, entityIndex, pvs) {
|
||||||
|
this.serverClass = serverClass;
|
||||||
|
this.entityIndex = entityIndex;
|
||||||
|
this.props = [];
|
||||||
|
this.inPVS = false;
|
||||||
|
this.pvs = pvs;
|
||||||
|
}
|
||||||
|
getPropByDefinition(definition) {
|
||||||
|
return PacketEntity.getPropByFullName(this.props, definition.fullName);
|
||||||
|
}
|
||||||
|
getProperty(originTable, name) {
|
||||||
|
const prop = PacketEntity.getPropByFullName(this.props, `${originTable}.${name}`);
|
||||||
|
if (prop) {
|
||||||
|
return prop;
|
||||||
|
}
|
||||||
|
throw new Error(`Property not found in entity (${originTable}.${name})`);
|
||||||
|
}
|
||||||
|
hasProperty(originTable, name) {
|
||||||
|
return PacketEntity.getPropByFullName(this.props, `${originTable}.${name}`) !== null;
|
||||||
|
}
|
||||||
|
clone() {
|
||||||
|
const result = new PacketEntity(this.serverClass, this.entityIndex, this.pvs);
|
||||||
|
for (const prop of this.props) {
|
||||||
|
result.props.push(prop.clone());
|
||||||
|
}
|
||||||
|
if (this.serialNumber) {
|
||||||
|
result.serialNumber = this.serialNumber;
|
||||||
|
}
|
||||||
|
if (typeof this.delay !== 'undefined') {
|
||||||
|
result.delay = this.delay;
|
||||||
|
}
|
||||||
|
result.inPVS = this.inPVS;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
applyPropUpdate(props) {
|
||||||
|
for (const prop of props) {
|
||||||
|
const existingProp = this.getPropByDefinition(prop.definition);
|
||||||
|
if (existingProp) {
|
||||||
|
existingProp.value = prop.value;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.props.push(prop.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diffFromBaseLine(baselineProps) {
|
||||||
|
return this.props.filter((prop) => {
|
||||||
|
const baseProp = PacketEntity.getPropByFullName(baselineProps, prop.definition.fullName);
|
||||||
|
return (!baseProp || !SendProp_1.SendProp.areEqual(prop, baseProp));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
getPropValue(fullName) {
|
||||||
|
const prop = PacketEntity.getPropByFullName(this.props, fullName);
|
||||||
|
return prop ? prop.value : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.PacketEntity = PacketEntity;
|
||||||
|
//# sourceMappingURL=PacketEntity.js.map
|
||||||
1
build/Data/PacketEntity.js.map
Normal file
1
build/Data/PacketEntity.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"PacketEntity.js","sourceRoot":"","sources":["../../src/Data/PacketEntity.ts"],"names":[],"mappings":"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"}
|
||||||
37
build/Data/ParserState.d.ts
vendored
Normal file
37
build/Data/ParserState.d.ts
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
import { BitStream } from 'bit-buffer';
|
||||||
|
import { GameEventDefinition } from './GameEvent';
|
||||||
|
import { GameEventType } from './GameEventTypes';
|
||||||
|
import { Message } from './Message';
|
||||||
|
import { Packet, PacketTypeId } from './Packet';
|
||||||
|
import { EntityId } from './PacketEntity';
|
||||||
|
import { SendProp } from './SendProp';
|
||||||
|
import { SendTable, SendTableName } from './SendTable';
|
||||||
|
import { ServerClass, ServerClassId } from './ServerClass';
|
||||||
|
import { StringTable } from './StringTable';
|
||||||
|
import { UserEntityInfo, UserId } from './UserInfo';
|
||||||
|
export declare type Game = 'tf' | 'hl2mp';
|
||||||
|
export declare class ParserState {
|
||||||
|
version: number;
|
||||||
|
staticBaseLines: Map<ServerClassId, BitStream>;
|
||||||
|
staticBaselineCache: Map<ServerClassId, SendProp[]>;
|
||||||
|
eventDefinitions: Map<number, GameEventDefinition<GameEventType>>;
|
||||||
|
eventDefinitionTypes: Map<GameEventType, number>;
|
||||||
|
entityClasses: Map<EntityId, ServerClass>;
|
||||||
|
sendTables: Map<SendTableName, SendTable>;
|
||||||
|
stringTables: StringTable[];
|
||||||
|
serverClasses: ServerClass[];
|
||||||
|
instanceBaselines: [Map<EntityId, SendProp[]>, Map<EntityId, SendProp[]>];
|
||||||
|
skippedPackets: PacketTypeId[];
|
||||||
|
userInfo: Map<UserId, UserEntityInfo>;
|
||||||
|
tick: number;
|
||||||
|
game: Game;
|
||||||
|
handlePacket(packet: Packet): void;
|
||||||
|
handleMessage(message: Message): void;
|
||||||
|
getStringTable(name: string): StringTable | null;
|
||||||
|
getUserEntityInfo(userId: number): UserEntityInfo;
|
||||||
|
private handleDataTableMessage;
|
||||||
|
private handleStringTableMessage;
|
||||||
|
}
|
||||||
|
export declare function getClassBits(state: ParserState): number;
|
||||||
|
export declare function getSendTable(state: ParserState, dataTable: string): SendTable;
|
||||||
|
export declare function createParserState(): ParserState;
|
||||||
107
build/Data/ParserState.js
Normal file
107
build/Data/ParserState.js
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const GameEventList_1 = require("../PacketHandler/GameEventList");
|
||||||
|
const PacketEntities_1 = require("../PacketHandler/PacketEntities");
|
||||||
|
const StringTable_1 = require("../PacketHandler/StringTable");
|
||||||
|
const Message_1 = require("./Message");
|
||||||
|
class ParserState {
|
||||||
|
constructor() {
|
||||||
|
this.version = 0;
|
||||||
|
this.staticBaseLines = new Map();
|
||||||
|
this.staticBaselineCache = new Map();
|
||||||
|
this.eventDefinitions = new Map();
|
||||||
|
this.eventDefinitionTypes = new Map();
|
||||||
|
this.entityClasses = new Map();
|
||||||
|
this.sendTables = new Map();
|
||||||
|
this.stringTables = [];
|
||||||
|
this.serverClasses = [];
|
||||||
|
this.instanceBaselines = [new Map(), new Map()];
|
||||||
|
this.skippedPackets = [];
|
||||||
|
this.userInfo = new Map();
|
||||||
|
this.tick = 0;
|
||||||
|
}
|
||||||
|
handlePacket(packet) {
|
||||||
|
switch (packet.packetType) {
|
||||||
|
case 'netTick':
|
||||||
|
this.tick = packet.tick;
|
||||||
|
break;
|
||||||
|
case 'serverInfo':
|
||||||
|
this.version = packet.version;
|
||||||
|
this.game = packet.game;
|
||||||
|
break;
|
||||||
|
case 'stringTable':
|
||||||
|
StringTable_1.handleStringTables(packet, this);
|
||||||
|
break;
|
||||||
|
case 'createStringTable':
|
||||||
|
StringTable_1.handleStringTable(packet, this);
|
||||||
|
break;
|
||||||
|
case 'updateStringTable':
|
||||||
|
StringTable_1.handleStringTableUpdate(packet, this);
|
||||||
|
break;
|
||||||
|
case 'gameEventList':
|
||||||
|
GameEventList_1.handleGameEventList(packet, this);
|
||||||
|
break;
|
||||||
|
case 'packetEntities':
|
||||||
|
PacketEntities_1.handlePacketEntitiesForState(packet, this);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handleMessage(message) {
|
||||||
|
switch (message.type) {
|
||||||
|
case Message_1.MessageType.DataTables:
|
||||||
|
this.handleDataTableMessage(message);
|
||||||
|
break;
|
||||||
|
case Message_1.MessageType.StringTables:
|
||||||
|
this.handleStringTableMessage(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getStringTable(name) {
|
||||||
|
const table = this.stringTables.find((stringTable) => stringTable.name === name);
|
||||||
|
if (!table) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return table;
|
||||||
|
}
|
||||||
|
getUserEntityInfo(userId) {
|
||||||
|
const info = this.userInfo.get(JSON.parse(JSON.stringify(userId)));
|
||||||
|
if (info) {
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
name: '',
|
||||||
|
userId,
|
||||||
|
steamId: '',
|
||||||
|
entityId: 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
handleDataTableMessage(message) {
|
||||||
|
for (const table of message.tables) {
|
||||||
|
this.sendTables.set(table.name, table);
|
||||||
|
}
|
||||||
|
this.serverClasses = message.serverClasses;
|
||||||
|
}
|
||||||
|
handleStringTableMessage(message) {
|
||||||
|
for (const table of message.tables) {
|
||||||
|
StringTable_1.handleTable(table, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.ParserState = ParserState;
|
||||||
|
function getClassBits(state) {
|
||||||
|
return Math.ceil(Math.log(state.serverClasses.length) * Math.LOG2E);
|
||||||
|
}
|
||||||
|
exports.getClassBits = getClassBits;
|
||||||
|
function getSendTable(state, dataTable) {
|
||||||
|
const sendTable = state.sendTables.get(dataTable);
|
||||||
|
if (!sendTable) {
|
||||||
|
throw new Error(`Unknown sendTable ${dataTable}`);
|
||||||
|
}
|
||||||
|
return sendTable;
|
||||||
|
}
|
||||||
|
exports.getSendTable = getSendTable;
|
||||||
|
function createParserState() {
|
||||||
|
return new ParserState();
|
||||||
|
}
|
||||||
|
exports.createParserState = createParserState;
|
||||||
|
//# sourceMappingURL=ParserState.js.map
|
||||||
1
build/Data/ParserState.js.map
Normal file
1
build/Data/ParserState.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"ParserState.js","sourceRoot":"","sources":["../../src/Data/ParserState.ts"],"names":[],"mappings":"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"}
|
||||||
26
build/Data/Player.d.ts
vendored
Normal file
26
build/Data/Player.d.ts
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
import { Match } from './Match';
|
||||||
|
import { UserInfo } from './UserInfo';
|
||||||
|
import { Vector } from './Vector';
|
||||||
|
import { Weapon } from './Weapon';
|
||||||
|
export declare enum LifeState {
|
||||||
|
ALIVE = 0,
|
||||||
|
DYING = 1,
|
||||||
|
DEATH = 2,
|
||||||
|
RESPAWNABLE = 3
|
||||||
|
}
|
||||||
|
export declare class Player {
|
||||||
|
match: Match;
|
||||||
|
user: UserInfo;
|
||||||
|
position: Vector;
|
||||||
|
health: number;
|
||||||
|
maxHealth: number;
|
||||||
|
classId: number;
|
||||||
|
team: number;
|
||||||
|
viewAngle: number;
|
||||||
|
weaponIds: number[];
|
||||||
|
ammo: number[];
|
||||||
|
lifeState: LifeState;
|
||||||
|
activeWeapon: number;
|
||||||
|
constructor(match: Match, userInfo: UserInfo);
|
||||||
|
readonly weapons: Weapon[];
|
||||||
|
}
|
||||||
34
build/Data/Player.js
Normal file
34
build/Data/Player.js
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const Vector_1 = require("./Vector");
|
||||||
|
var LifeState;
|
||||||
|
(function (LifeState) {
|
||||||
|
LifeState[LifeState["ALIVE"] = 0] = "ALIVE";
|
||||||
|
LifeState[LifeState["DYING"] = 1] = "DYING";
|
||||||
|
LifeState[LifeState["DEATH"] = 2] = "DEATH";
|
||||||
|
LifeState[LifeState["RESPAWNABLE"] = 3] = "RESPAWNABLE";
|
||||||
|
})(LifeState = exports.LifeState || (exports.LifeState = {}));
|
||||||
|
class Player {
|
||||||
|
constructor(match, userInfo) {
|
||||||
|
this.position = new Vector_1.Vector(0, 0, 0);
|
||||||
|
this.health = 0;
|
||||||
|
this.maxHealth = 0;
|
||||||
|
this.classId = 0;
|
||||||
|
this.team = 0;
|
||||||
|
this.viewAngle = 0;
|
||||||
|
this.weaponIds = [];
|
||||||
|
this.ammo = [];
|
||||||
|
this.lifeState = LifeState.DEATH;
|
||||||
|
this.activeWeapon = 0;
|
||||||
|
this.match = match;
|
||||||
|
this.user = userInfo;
|
||||||
|
}
|
||||||
|
get weapons() {
|
||||||
|
return this.weaponIds
|
||||||
|
.map((id) => this.match.outerMap.get(id))
|
||||||
|
.filter((entityId) => entityId > 0)
|
||||||
|
.map((entityId) => this.match.weaponMap.get(entityId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Player = Player;
|
||||||
|
//# sourceMappingURL=Player.js.map
|
||||||
1
build/Data/Player.js.map
Normal file
1
build/Data/Player.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Player.js","sourceRoot":"","sources":["../../src/Data/Player.ts"],"names":[],"mappings":";;AAIA,qCAAgC;AAGhC,IAAY,SAKX;AALD,WAAY,SAAS;IACpB,2CAAS,CAAA;IACT,2CAAS,CAAA;IACT,2CAAS,CAAA;IACT,uDAAe,CAAA;AAChB,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAED,MAAa,MAAM;IAclB,YAAY,KAAY,EAAE,QAAkB;QAXrC,aAAQ,GAAW,IAAI,eAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,WAAM,GAAW,CAAC,CAAC;QACnB,cAAS,GAAW,CAAC,CAAC;QACtB,YAAO,GAAW,CAAC,CAAC;QACpB,SAAI,GAAW,CAAC,CAAC;QACjB,cAAS,GAAW,CAAC,CAAC;QACtB,cAAS,GAAa,EAAE,CAAC;QACzB,SAAI,GAAa,EAAE,CAAC;QACpB,cAAS,GAAc,SAAS,CAAC,KAAK,CAAC;QACvC,iBAAY,GAAW,CAAC,CAAC;QAG/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,SAAS;aACnB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAa,CAAC;aACpD,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;aAClC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC,CAAC;IACnE,CAAC;CACD;AAzBD,wBAyBC"}
|
||||||
81
build/Data/PlayerCondition.d.ts
vendored
Normal file
81
build/Data/PlayerCondition.d.ts
vendored
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
export declare enum PlayerCondition {
|
||||||
|
TF_COND_AIMIN = 1,
|
||||||
|
TF_COND_ZOOMED = 2,
|
||||||
|
TF_COND_DISGUISING = 4,
|
||||||
|
TF_COND_DISGUISED = 8,
|
||||||
|
TF_COND_STEALTHED = 16,
|
||||||
|
TF_COND_INVULNERABL = 32,
|
||||||
|
TF_COND_TELEPORTED = 64,
|
||||||
|
TF_COND_TAUNTING = 128,
|
||||||
|
TF_COND_INVULNERABLE_WEARINGOFF = 256,
|
||||||
|
TF_COND_STEALTHED_BLIN = 512,
|
||||||
|
TF_COND_SELECTED_TO_TELEPOR = 1024,
|
||||||
|
TF_COND_CRITBOOSTED = 2048,
|
||||||
|
TF_COND_TMPDAMAGEBONUS = 4096,
|
||||||
|
TF_COND_FEIGN_DEATH = 8192,
|
||||||
|
TF_COND_PHAS = 16384,
|
||||||
|
TF_COND_STUNNED = 32768,
|
||||||
|
TF_COND_OFFENSEBUF = 65536,
|
||||||
|
TF_COND_SHIELD_CHARG = 131072,
|
||||||
|
TF_COND_DEMO_BUF = 262144,
|
||||||
|
TF_COND_ENERGY_BUF = 524288,
|
||||||
|
TF_COND_RADIUSHEA = 1048576,
|
||||||
|
TF_COND_HEALTH_BUF = 2097152,
|
||||||
|
TF_COND_BURNING = 4194304,
|
||||||
|
TF_COND_HEALTH_OVERHEALE = 8388608,
|
||||||
|
TF_COND_URINE = 16777216,
|
||||||
|
TF_COND_BLEEDING = 33554432,
|
||||||
|
TF_COND_DEFENSEBUFF = 67108864,
|
||||||
|
TF_COND_MAD_MILK = 134217728,
|
||||||
|
TF_COND_MEGAHEAL = 268435456,
|
||||||
|
TF_COND_REGENONDAMAGEBUF = 536870912,
|
||||||
|
TF_COND_MARKEDFORDEATH = 1073741824,
|
||||||
|
TF_COND_NOHEALINGDAMAGEBUF = -2147483648,
|
||||||
|
TF_COND_SPEED_BOOST = 1,
|
||||||
|
TF_COND_CRITBOOSTED_PUMPKIN = 2,
|
||||||
|
TF_COND_CRITBOOSTED_USER_BUFF = 4,
|
||||||
|
TF_COND_CRITBOOSTED_DEMO_CHARGE = 8,
|
||||||
|
TF_COND_CRITBOOSTED_HYPE = 16,
|
||||||
|
TF_COND_CRITBOOSTED_FIRST_BLOOD = 32,
|
||||||
|
TF_COND_CRITBOOSTED_BONUS_TIME = 64,
|
||||||
|
TF_COND_CRITBOOSTED_CTF_CAPTURE = 128,
|
||||||
|
TF_COND_CRITBOOSTED_ON_KILL = 256,
|
||||||
|
TF_COND_CANNOT_SWITCH_FROM_MELEE = 512,
|
||||||
|
TF_COND_DEFENSEBUFF_NO_CRIT_BLOCK = 1024,
|
||||||
|
TF_COND_REPROGRAMME = 2048,
|
||||||
|
TF_COND_CRITBOOSTED_RAGE_BUF = 4096,
|
||||||
|
TF_COND_DEFENSEBUFF_HIG = 8192,
|
||||||
|
TF_COND_SNIPERCHARGE_RAGE_BUFF = 16384,
|
||||||
|
TF_COND_DISGUISE_WEARINGOF = 32768,
|
||||||
|
TF_COND_MARKEDFORDEATH_SILENT = 65536,
|
||||||
|
TF_COND_DISGUISED_AS_DISPENSE = 131072,
|
||||||
|
TF_COND_SAPPED = 262144,
|
||||||
|
TF_COND_INVULNERABLE_HIDE_UNLESS_DAMAGE = 524288,
|
||||||
|
TF_COND_INVULNERABLE_USER_BUF = 1048576,
|
||||||
|
TF_COND_HALLOWEEN_BOMB_HEAD = 2097152,
|
||||||
|
TF_COND_HALLOWEEN_THRILLER = 4194304,
|
||||||
|
TF_COND_RADIUSHEAL_ON_DAMAGE = 8388608,
|
||||||
|
TF_COND_CRITBOOSTED_CARD_EFFECT = 16777216,
|
||||||
|
TF_COND_INVULNERABLE_CARD_EFFECT = 33554432,
|
||||||
|
TF_COND_MEDIGUN_UBER_BULLET_RESIST = 67108864,
|
||||||
|
TF_COND_MEDIGUN_UBER_BLAST_RESIST = 134217728,
|
||||||
|
TF_COND_MEDIGUN_UBER_FIRE_RESIST = 268435456,
|
||||||
|
TF_COND_MEDIGUN_SMALL_BULLET_RESIST = 536870912,
|
||||||
|
TF_COND_MEDIGUN_SMALL_BLAST_RESIST = 1073741824,
|
||||||
|
TF_COND_MEDIGUN_SMALL_FIRE_RESIST = -2147483648,
|
||||||
|
TF_COND_STEALTHED_USER_BUF = 1,
|
||||||
|
TF_COND_MEDIGUN_DEBUF = 2,
|
||||||
|
TF_COND_STEALTHED_USER_BUFF_FADING = 4,
|
||||||
|
TF_COND_BULLET_IMMUNE = 8,
|
||||||
|
TF_COND_BLAST_IMMUNE = 16,
|
||||||
|
TF_COND_FIRE_IMMUNE = 32,
|
||||||
|
TF_COND_PREVENT_DEATH = 64,
|
||||||
|
TF_COND_MVM_BOT_STUN_RADIOWAVE = 128,
|
||||||
|
TF_COND_HALLOWEEN_SPEED_BOOST = 256,
|
||||||
|
TF_COND_HALLOWEEN_QUICK_HEAL = 512,
|
||||||
|
TF_COND_HALLOWEEN_GIANT = 1024,
|
||||||
|
TF_COND_HALLOWEEN_TINY = 2048,
|
||||||
|
TF_COND_HALLOWEEN_IN_HELL = 4096,
|
||||||
|
TF_COND_HALLOWEEN_GHOST_MODE = 8192,
|
||||||
|
TF_COND_MINICRITBOOSTED_ON_KILL = 16384
|
||||||
|
}
|
||||||
85
build/Data/PlayerCondition.js
Normal file
85
build/Data/PlayerCondition.js
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var PlayerCondition;
|
||||||
|
(function (PlayerCondition) {
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_AIMIN"] = 1] = "TF_COND_AIMIN";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_ZOOMED"] = 2] = "TF_COND_ZOOMED";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_DISGUISING"] = 4] = "TF_COND_DISGUISING";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_DISGUISED"] = 8] = "TF_COND_DISGUISED";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_STEALTHED"] = 16] = "TF_COND_STEALTHED";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_INVULNERABL"] = 32] = "TF_COND_INVULNERABL";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_TELEPORTED"] = 64] = "TF_COND_TELEPORTED";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_TAUNTING"] = 128] = "TF_COND_TAUNTING";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_INVULNERABLE_WEARINGOFF"] = 256] = "TF_COND_INVULNERABLE_WEARINGOFF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_STEALTHED_BLIN"] = 512] = "TF_COND_STEALTHED_BLIN";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_SELECTED_TO_TELEPOR"] = 1024] = "TF_COND_SELECTED_TO_TELEPOR";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED"] = 2048] = "TF_COND_CRITBOOSTED";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_TMPDAMAGEBONUS"] = 4096] = "TF_COND_TMPDAMAGEBONUS";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_FEIGN_DEATH"] = 8192] = "TF_COND_FEIGN_DEATH";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_PHAS"] = 16384] = "TF_COND_PHAS";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_STUNNED"] = 32768] = "TF_COND_STUNNED";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_OFFENSEBUF"] = 65536] = "TF_COND_OFFENSEBUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_SHIELD_CHARG"] = 131072] = "TF_COND_SHIELD_CHARG";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_DEMO_BUF"] = 262144] = "TF_COND_DEMO_BUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_ENERGY_BUF"] = 524288] = "TF_COND_ENERGY_BUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_RADIUSHEA"] = 1048576] = "TF_COND_RADIUSHEA";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HEALTH_BUF"] = 2097152] = "TF_COND_HEALTH_BUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_BURNING"] = 4194304] = "TF_COND_BURNING";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HEALTH_OVERHEALE"] = 8388608] = "TF_COND_HEALTH_OVERHEALE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_URINE"] = 16777216] = "TF_COND_URINE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_BLEEDING"] = 33554432] = "TF_COND_BLEEDING";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_DEFENSEBUFF"] = 67108864] = "TF_COND_DEFENSEBUFF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MAD_MILK"] = 134217728] = "TF_COND_MAD_MILK";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MEGAHEAL"] = 268435456] = "TF_COND_MEGAHEAL";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_REGENONDAMAGEBUF"] = 536870912] = "TF_COND_REGENONDAMAGEBUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MARKEDFORDEATH"] = 1073741824] = "TF_COND_MARKEDFORDEATH";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_NOHEALINGDAMAGEBUF"] = -2147483648] = "TF_COND_NOHEALINGDAMAGEBUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_SPEED_BOOST"] = 1] = "TF_COND_SPEED_BOOST";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_PUMPKIN"] = 2] = "TF_COND_CRITBOOSTED_PUMPKIN";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_USER_BUFF"] = 4] = "TF_COND_CRITBOOSTED_USER_BUFF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_DEMO_CHARGE"] = 8] = "TF_COND_CRITBOOSTED_DEMO_CHARGE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_HYPE"] = 16] = "TF_COND_CRITBOOSTED_HYPE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_FIRST_BLOOD"] = 32] = "TF_COND_CRITBOOSTED_FIRST_BLOOD";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_BONUS_TIME"] = 64] = "TF_COND_CRITBOOSTED_BONUS_TIME";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_CTF_CAPTURE"] = 128] = "TF_COND_CRITBOOSTED_CTF_CAPTURE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_ON_KILL"] = 256] = "TF_COND_CRITBOOSTED_ON_KILL";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CANNOT_SWITCH_FROM_MELEE"] = 512] = "TF_COND_CANNOT_SWITCH_FROM_MELEE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_DEFENSEBUFF_NO_CRIT_BLOCK"] = 1024] = "TF_COND_DEFENSEBUFF_NO_CRIT_BLOCK";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_REPROGRAMME"] = 2048] = "TF_COND_REPROGRAMME";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_RAGE_BUF"] = 4096] = "TF_COND_CRITBOOSTED_RAGE_BUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_DEFENSEBUFF_HIG"] = 8192] = "TF_COND_DEFENSEBUFF_HIG";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_SNIPERCHARGE_RAGE_BUFF"] = 16384] = "TF_COND_SNIPERCHARGE_RAGE_BUFF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_DISGUISE_WEARINGOF"] = 32768] = "TF_COND_DISGUISE_WEARINGOF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MARKEDFORDEATH_SILENT"] = 65536] = "TF_COND_MARKEDFORDEATH_SILENT";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_DISGUISED_AS_DISPENSE"] = 131072] = "TF_COND_DISGUISED_AS_DISPENSE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_SAPPED"] = 262144] = "TF_COND_SAPPED";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_INVULNERABLE_HIDE_UNLESS_DAMAGE"] = 524288] = "TF_COND_INVULNERABLE_HIDE_UNLESS_DAMAGE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_INVULNERABLE_USER_BUF"] = 1048576] = "TF_COND_INVULNERABLE_USER_BUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HALLOWEEN_BOMB_HEAD"] = 2097152] = "TF_COND_HALLOWEEN_BOMB_HEAD";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HALLOWEEN_THRILLER"] = 4194304] = "TF_COND_HALLOWEEN_THRILLER";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_RADIUSHEAL_ON_DAMAGE"] = 8388608] = "TF_COND_RADIUSHEAL_ON_DAMAGE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_CRITBOOSTED_CARD_EFFECT"] = 16777216] = "TF_COND_CRITBOOSTED_CARD_EFFECT";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_INVULNERABLE_CARD_EFFECT"] = 33554432] = "TF_COND_INVULNERABLE_CARD_EFFECT";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MEDIGUN_UBER_BULLET_RESIST"] = 67108864] = "TF_COND_MEDIGUN_UBER_BULLET_RESIST";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MEDIGUN_UBER_BLAST_RESIST"] = 134217728] = "TF_COND_MEDIGUN_UBER_BLAST_RESIST";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MEDIGUN_UBER_FIRE_RESIST"] = 268435456] = "TF_COND_MEDIGUN_UBER_FIRE_RESIST";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MEDIGUN_SMALL_BULLET_RESIST"] = 536870912] = "TF_COND_MEDIGUN_SMALL_BULLET_RESIST";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MEDIGUN_SMALL_BLAST_RESIST"] = 1073741824] = "TF_COND_MEDIGUN_SMALL_BLAST_RESIST";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MEDIGUN_SMALL_FIRE_RESIST"] = -2147483648] = "TF_COND_MEDIGUN_SMALL_FIRE_RESIST";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_STEALTHED_USER_BUF"] = 1] = "TF_COND_STEALTHED_USER_BUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MEDIGUN_DEBUF"] = 2] = "TF_COND_MEDIGUN_DEBUF";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_STEALTHED_USER_BUFF_FADING"] = 4] = "TF_COND_STEALTHED_USER_BUFF_FADING";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_BULLET_IMMUNE"] = 8] = "TF_COND_BULLET_IMMUNE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_BLAST_IMMUNE"] = 16] = "TF_COND_BLAST_IMMUNE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_FIRE_IMMUNE"] = 32] = "TF_COND_FIRE_IMMUNE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_PREVENT_DEATH"] = 64] = "TF_COND_PREVENT_DEATH";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MVM_BOT_STUN_RADIOWAVE"] = 128] = "TF_COND_MVM_BOT_STUN_RADIOWAVE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HALLOWEEN_SPEED_BOOST"] = 256] = "TF_COND_HALLOWEEN_SPEED_BOOST";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HALLOWEEN_QUICK_HEAL"] = 512] = "TF_COND_HALLOWEEN_QUICK_HEAL";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HALLOWEEN_GIANT"] = 1024] = "TF_COND_HALLOWEEN_GIANT";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HALLOWEEN_TINY"] = 2048] = "TF_COND_HALLOWEEN_TINY";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HALLOWEEN_IN_HELL"] = 4096] = "TF_COND_HALLOWEEN_IN_HELL";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_HALLOWEEN_GHOST_MODE"] = 8192] = "TF_COND_HALLOWEEN_GHOST_MODE";
|
||||||
|
PlayerCondition[PlayerCondition["TF_COND_MINICRITBOOSTED_ON_KILL"] = 16384] = "TF_COND_MINICRITBOOSTED_ON_KILL";
|
||||||
|
})(PlayerCondition = exports.PlayerCondition || (exports.PlayerCondition = {}));
|
||||||
|
//# sourceMappingURL=PlayerCondition.js.map
|
||||||
1
build/Data/PlayerCondition.js.map
Normal file
1
build/Data/PlayerCondition.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"PlayerCondition.js","sourceRoot":"","sources":["../../src/Data/PlayerCondition.ts"],"names":[],"mappings":";;AAAA,IAAY,eAgFX;AAhFD,WAAY,eAAe;IAC1B,uEAAkD,CAAA;IAClD,yEAAkD,CAAA;IAClD,iFAAkD,CAAA;IAClD,+EAAkD,CAAA;IAClD,gFAAkD,CAAA;IAClD,oFAAkD,CAAA;IAClD,kFAAkD,CAAA;IAClD,+EAAkD,CAAA;IAClD,6GAAkD,CAAA;IAClD,2FAAkD,CAAA;IAClD,sGAAmD,CAAA;IACnD,sFAAmD,CAAA;IACnD,4FAAmD,CAAA;IACnD,sFAAmD,CAAA;IACnD,yEAAmD,CAAA;IACnD,+EAAmD,CAAA;IACnD,qFAAmD,CAAA;IACnD,0FAAmD,CAAA;IACnD,kFAAmD,CAAA;IACnD,sFAAmD,CAAA;IACnD,qFAAmD,CAAA;IACnD,uFAAmD,CAAA;IACnD,iFAAmD,CAAA;IACnD,mGAAmD,CAAA;IACnD,8EAAmD,CAAA;IACnD,oFAAmD,CAAA;IACnD,0FAAmD,CAAA;IACnD,qFAAmD,CAAA;IACnD,qFAAmD,CAAA;IACnD,qGAAmD,CAAA;IACnD,kGAAmD,CAAA;IACnD,2GAAmD,CAAA;IACnD,mFAAmD,CAAA;IACnD,mGAAmD,CAAA;IACnD,uGAAmD,CAAA;IACnD,2GAAmD,CAAA;IACnD,8FAAmD,CAAA;IACnD,4GAAmD,CAAA;IACnD,0GAAmD,CAAA;IACnD,6GAAmD,CAAA;IACnD,qGAAmD,CAAA;IACnD,+GAAmD,CAAA;IACnD,kHAAmD,CAAA;IACnD,sFAAmD,CAAA;IACnD,wGAAmD,CAAA;IACnD,8FAAmD,CAAA;IACnD,6GAAmD,CAAA;IACnD,qGAAmD,CAAA;IACnD,2GAAmD,CAAA;IACnD,4GAAmD,CAAA;IACnD,8EAAmD,CAAA;IACnD,gIAAmD,CAAA;IACnD,6GAAmD,CAAA;IACnD,yGAAmD,CAAA;IACnD,uGAAmD,CAAA;IACnD,2GAAmD,CAAA;IACnD,kHAAmD,CAAA;IACnD,oHAAmD,CAAA;IACnD,wHAAmD,CAAA;IACnD,uHAAmD,CAAA;IACnD,qHAAmD,CAAA;IACnD,2HAAmD,CAAA;IACnD,0HAAmD,CAAA;IACnD,yHAAmD,CAAA;IACnD,iGAAmD,CAAA;IACnD,uFAAmD,CAAA;IACnD,iHAAmD,CAAA;IACnD,uFAAmD,CAAA;IACnD,sFAAmD,CAAA;IACnD,oFAAmD,CAAA;IACnD,wFAAmD,CAAA;IACnD,2GAAmD,CAAA;IACnD,yGAAmD,CAAA;IACnD,uGAAmD,CAAA;IACnD,8FAAmD,CAAA;IACnD,4FAAmD,CAAA;IACnD,kGAAmD,CAAA;IACnD,wGAAmD,CAAA;IACnD,+GAAmD,CAAA;AACpD,CAAC,EAhFW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAgF1B"}
|
||||||
25
build/Data/PlayerResource.d.ts
vendored
Normal file
25
build/Data/PlayerResource.d.ts
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
export interface PlayerResource {
|
||||||
|
ping: number;
|
||||||
|
score: number;
|
||||||
|
deaths: number;
|
||||||
|
connected: boolean;
|
||||||
|
team: number;
|
||||||
|
alive: boolean;
|
||||||
|
health: number;
|
||||||
|
totalScore: number;
|
||||||
|
maxHealth: number;
|
||||||
|
maxBuffedHealth: number;
|
||||||
|
playerClass: number;
|
||||||
|
arenaSpectator: boolean;
|
||||||
|
dominations: number;
|
||||||
|
nextRespawn: number;
|
||||||
|
chargeLevel: number;
|
||||||
|
damage: number;
|
||||||
|
damageAssists: number;
|
||||||
|
healing: number;
|
||||||
|
healingAssist: number;
|
||||||
|
damageBlocked: number;
|
||||||
|
bonusPoints: number;
|
||||||
|
playerLevel: number;
|
||||||
|
killStreak: number;
|
||||||
|
}
|
||||||
3
build/Data/PlayerResource.js
Normal file
3
build/Data/PlayerResource.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=PlayerResource.js.map
|
||||||
1
build/Data/PlayerResource.js.map
Normal file
1
build/Data/PlayerResource.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"PlayerResource.js","sourceRoot":"","sources":["../../src/Data/PlayerResource.ts"],"names":[],"mappings":""}
|
||||||
5
build/Data/Round.d.ts
vendored
Normal file
5
build/Data/Round.d.ts
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
export interface Round {
|
||||||
|
winner: 'red' | 'blue';
|
||||||
|
length: number;
|
||||||
|
end_tick: number;
|
||||||
|
}
|
||||||
3
build/Data/Round.js
Normal file
3
build/Data/Round.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=Round.js.map
|
||||||
1
build/Data/Round.js.map
Normal file
1
build/Data/Round.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Round.js","sourceRoot":"","sources":["../../src/Data/Round.ts"],"names":[],"mappings":""}
|
||||||
12
build/Data/SendProp.d.ts
vendored
Normal file
12
build/Data/SendProp.d.ts
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
import { SendPropDefinition } from './SendPropDefinition';
|
||||||
|
import { Vector } from './Vector';
|
||||||
|
export declare class SendProp {
|
||||||
|
static areEqual(a: SendProp, b: SendProp): boolean;
|
||||||
|
private static valuesAreEqual;
|
||||||
|
definition: SendPropDefinition;
|
||||||
|
value: SendPropValue | null;
|
||||||
|
constructor(definition: SendPropDefinition);
|
||||||
|
clone(): SendProp;
|
||||||
|
}
|
||||||
|
export declare type SendPropArrayValue = Vector | number | string;
|
||||||
|
export declare type SendPropValue = Vector | number | string | SendPropArrayValue[];
|
||||||
38
build/Data/SendProp.js
Normal file
38
build/Data/SendProp.js
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const Vector_1 = require("./Vector");
|
||||||
|
class SendProp {
|
||||||
|
static areEqual(a, b) {
|
||||||
|
return a.definition.fullName !== b.definition.fullName ? false : SendProp.valuesAreEqual(a.value, b.value);
|
||||||
|
}
|
||||||
|
static valuesAreEqual(a, b) {
|
||||||
|
if (Array.isArray(a) && Array.isArray(b)) {
|
||||||
|
if (a.length !== b.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (let i = 0; i < a.length; i++) {
|
||||||
|
if (!SendProp.valuesAreEqual(a[i], b[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (a instanceof Vector_1.Vector && b instanceof Vector_1.Vector) {
|
||||||
|
return Vector_1.Vector.areEqual(a, b);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return a === b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
constructor(definition) {
|
||||||
|
this.definition = definition;
|
||||||
|
this.value = null;
|
||||||
|
}
|
||||||
|
clone() {
|
||||||
|
const prop = new SendProp(this.definition);
|
||||||
|
prop.value = this.value;
|
||||||
|
return prop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.SendProp = SendProp;
|
||||||
|
//# sourceMappingURL=SendProp.js.map
|
||||||
1
build/Data/SendProp.js.map
Normal file
1
build/Data/SendProp.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"SendProp.js","sourceRoot":"","sources":["../../src/Data/SendProp.ts"],"names":[],"mappings":";;AACA,qCAAgC;AAEhC,MAAa,QAAQ;IACb,MAAM,CAAC,QAAQ,CAAC,CAAW,EAAE,CAAW;QAC9C,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5G,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,CAAuB,EAAE,CAAuB;QAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACb;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oBACzC,OAAO,KAAK,CAAC;iBACb;aACD;YACD,OAAO,IAAI,CAAC;SACZ;aAAM,IAAI,CAAC,YAAY,eAAM,IAAI,CAAC,YAAY,eAAM,EAAE;YACtD,OAAO,eAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7B;aAAM;YACN,OAAO,CAAC,KAAK,CAAC,CAAC;SACf;IACF,CAAC;IAKD,YAAY,UAA8B;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK;QACX,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AApCD,4BAoCC"}
|
||||||
51
build/Data/SendPropDefinition.d.ts
vendored
Normal file
51
build/Data/SendPropDefinition.d.ts
vendored
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
import { SendTable } from './SendTable';
|
||||||
|
export declare class SendPropDefinition {
|
||||||
|
static formatFlags(flags: number): string[];
|
||||||
|
type: SendPropType;
|
||||||
|
name: string;
|
||||||
|
flags: number;
|
||||||
|
excludeDTName: string | null;
|
||||||
|
lowValue: number;
|
||||||
|
highValue: number;
|
||||||
|
bitCount: number;
|
||||||
|
originalBitCount: number | null;
|
||||||
|
table: SendTable | null;
|
||||||
|
numElements: number;
|
||||||
|
arrayProperty: SendPropDefinition | null;
|
||||||
|
ownerTableName: string;
|
||||||
|
constructor(type: SendPropType, name: string, flags: number, ownerTableName: string);
|
||||||
|
hasFlag(flag: SendPropFlag): boolean;
|
||||||
|
isExcludeProp(): boolean;
|
||||||
|
inspect(): any;
|
||||||
|
readonly fullName: string;
|
||||||
|
readonly allFlags: string[];
|
||||||
|
}
|
||||||
|
export declare enum SendPropType {
|
||||||
|
DPT_Int = 0,
|
||||||
|
DPT_Float = 1,
|
||||||
|
DPT_Vector = 2,
|
||||||
|
DPT_VectorXY = 3,
|
||||||
|
DPT_String = 4,
|
||||||
|
DPT_Array = 5,
|
||||||
|
DPT_DataTable = 6,
|
||||||
|
DPT_NUMSendPropTypes = 7
|
||||||
|
}
|
||||||
|
export declare enum SendPropFlag {
|
||||||
|
SPROP_UNSIGNED = 1,
|
||||||
|
SPROP_COORD = 2,
|
||||||
|
SPROP_NOSCALE = 4,
|
||||||
|
SPROP_ROUNDDOWN = 8,
|
||||||
|
SPROP_ROUNDUP = 16,
|
||||||
|
SPROP_NORMAL = 32,
|
||||||
|
SPROP_EXCLUDE = 64,
|
||||||
|
SPROP_XYZE = 128,
|
||||||
|
SPROP_INSIDEARRAY = 256,
|
||||||
|
SPROP_PROXY_ALWAYS_YES = 512,
|
||||||
|
SPROP_CHANGES_OFTEN = 1024,
|
||||||
|
SPROP_IS_A_VECTOR_ELEM = 2048,
|
||||||
|
SPROP_COLLAPSIBLE = 4096,
|
||||||
|
SPROP_COORD_MP = 8192,
|
||||||
|
SPROP_COORD_MP_LOWPRECISION = 16384,
|
||||||
|
SPROP_COORD_MP_INTEGRAL = 32768,
|
||||||
|
SPROP_VARINT = 32
|
||||||
|
}
|
||||||
101
build/Data/SendPropDefinition.js
Normal file
101
build/Data/SendPropDefinition.js
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
class SendPropDefinition {
|
||||||
|
constructor(type, name, flags, ownerTableName) {
|
||||||
|
this.originalBitCount = null;
|
||||||
|
this.type = type;
|
||||||
|
this.name = name;
|
||||||
|
this.flags = flags;
|
||||||
|
this.excludeDTName = null;
|
||||||
|
this.lowValue = 0;
|
||||||
|
this.highValue = 0;
|
||||||
|
this.bitCount = 0;
|
||||||
|
this.table = null;
|
||||||
|
this.numElements = 0;
|
||||||
|
this.arrayProperty = null;
|
||||||
|
this.ownerTableName = ownerTableName;
|
||||||
|
}
|
||||||
|
static formatFlags(flags) {
|
||||||
|
const names = [];
|
||||||
|
for (const name in SendPropFlag) {
|
||||||
|
if (SendPropFlag.hasOwnProperty(name)) {
|
||||||
|
const flagValue = SendPropFlag[name];
|
||||||
|
if (typeof flagValue === 'number') {
|
||||||
|
if (flags & flagValue) {
|
||||||
|
names.push(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
hasFlag(flag) {
|
||||||
|
return (this.flags & flag) !== 0;
|
||||||
|
}
|
||||||
|
isExcludeProp() {
|
||||||
|
return this.hasFlag(SendPropFlag.SPROP_EXCLUDE);
|
||||||
|
}
|
||||||
|
inspect() {
|
||||||
|
const data = {
|
||||||
|
ownerTableName: this.ownerTableName,
|
||||||
|
name: this.name,
|
||||||
|
type: SendPropType[this.type],
|
||||||
|
flags: this.flags,
|
||||||
|
bitCount: this.bitCount
|
||||||
|
};
|
||||||
|
if (this.type === SendPropType.DPT_Float) {
|
||||||
|
data.lowValue = this.lowValue;
|
||||||
|
data.highValue = this.highValue;
|
||||||
|
}
|
||||||
|
if (this.type === SendPropType.DPT_DataTable && this.table) {
|
||||||
|
data.excludeDTName = this.table.name;
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
get fullName() {
|
||||||
|
return `${this.ownerTableName}.${this.name}`;
|
||||||
|
}
|
||||||
|
get allFlags() {
|
||||||
|
return SendPropDefinition.formatFlags(this.flags);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.SendPropDefinition = SendPropDefinition;
|
||||||
|
var SendPropType;
|
||||||
|
(function (SendPropType) {
|
||||||
|
SendPropType[SendPropType["DPT_Int"] = 0] = "DPT_Int";
|
||||||
|
SendPropType[SendPropType["DPT_Float"] = 1] = "DPT_Float";
|
||||||
|
SendPropType[SendPropType["DPT_Vector"] = 2] = "DPT_Vector";
|
||||||
|
SendPropType[SendPropType["DPT_VectorXY"] = 3] = "DPT_VectorXY";
|
||||||
|
SendPropType[SendPropType["DPT_String"] = 4] = "DPT_String";
|
||||||
|
SendPropType[SendPropType["DPT_Array"] = 5] = "DPT_Array";
|
||||||
|
SendPropType[SendPropType["DPT_DataTable"] = 6] = "DPT_DataTable";
|
||||||
|
SendPropType[SendPropType["DPT_NUMSendPropTypes"] = 7] = "DPT_NUMSendPropTypes";
|
||||||
|
})(SendPropType = exports.SendPropType || (exports.SendPropType = {}));
|
||||||
|
var SendPropFlag;
|
||||||
|
(function (SendPropFlag) {
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_UNSIGNED"] = 1] = "SPROP_UNSIGNED";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_COORD"] = 2] = "SPROP_COORD";
|
||||||
|
// Note that the bit count is ignored in this case.
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_NOSCALE"] = 4] = "SPROP_NOSCALE";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_ROUNDDOWN"] = 8] = "SPROP_ROUNDDOWN";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_ROUNDUP"] = 16] = "SPROP_ROUNDUP";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_NORMAL"] = 32] = "SPROP_NORMAL";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_EXCLUDE"] = 64] = "SPROP_EXCLUDE";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_XYZE"] = 128] = "SPROP_XYZE";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_INSIDEARRAY"] = 256] = "SPROP_INSIDEARRAY";
|
||||||
|
// flattened property list. Its array will point at it when it needs to.
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_PROXY_ALWAYS_YES"] = 512] = "SPROP_PROXY_ALWAYS_YES";
|
||||||
|
// SendProxy_DataTableToDataTable that always send the data to all clients.
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_CHANGES_OFTEN"] = 1024] = "SPROP_CHANGES_OFTEN";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_IS_A_VECTOR_ELEM"] = 2048] = "SPROP_IS_A_VECTOR_ELEM";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_COLLAPSIBLE"] = 4096] = "SPROP_COLLAPSIBLE";
|
||||||
|
// (ie: for all automatically-chained base classes).
|
||||||
|
// In this case, it can get rid of this SendPropDataTable altogether and spare the
|
||||||
|
// trouble of walking the hierarchy more than necessary.
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_COORD_MP"] = 8192] = "SPROP_COORD_MP";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_COORD_MP_LOWPRECISION"] = 16384] = "SPROP_COORD_MP_LOWPRECISION";
|
||||||
|
// where the fractional component only gets a 3 bits instead of 5
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_COORD_MP_INTEGRAL"] = 32768] = "SPROP_COORD_MP_INTEGRAL";
|
||||||
|
SendPropFlag[SendPropFlag["SPROP_VARINT"] = 32] = "SPROP_VARINT";
|
||||||
|
})(SendPropFlag = exports.SendPropFlag || (exports.SendPropFlag = {}));
|
||||||
|
//# sourceMappingURL=SendPropDefinition.js.map
|
||||||
1
build/Data/SendPropDefinition.js.map
Normal file
1
build/Data/SendPropDefinition.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"SendPropDefinition.js","sourceRoot":"","sources":["../../src/Data/SendPropDefinition.ts"],"names":[],"mappings":"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"}
|
||||||
15
build/Data/SendTable.d.ts
vendored
Normal file
15
build/Data/SendTable.d.ts
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { SendPropDefinition } from './SendPropDefinition';
|
||||||
|
export declare type SendTableName = string;
|
||||||
|
export declare class SendTable {
|
||||||
|
name: SendTableName;
|
||||||
|
props: SendPropDefinition[];
|
||||||
|
needsDecoder: boolean;
|
||||||
|
private cachedFlattenedProps;
|
||||||
|
constructor(name: any);
|
||||||
|
addProp(prop: any): void;
|
||||||
|
getAllProps(excludes: SendPropDefinition[], props: SendPropDefinition[]): void;
|
||||||
|
getAllPropsIteratorProps(excludes: SendPropDefinition[], props: SendPropDefinition[], childProps: SendPropDefinition[]): void;
|
||||||
|
readonly flattenedProps: SendPropDefinition[];
|
||||||
|
readonly excludes: SendPropDefinition[];
|
||||||
|
private flatten;
|
||||||
|
}
|
||||||
81
build/Data/SendTable.js
Normal file
81
build/Data/SendTable.js
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const SendPropDefinition_1 = require("./SendPropDefinition");
|
||||||
|
class SendTable {
|
||||||
|
constructor(name) {
|
||||||
|
this.name = name;
|
||||||
|
this.props = [];
|
||||||
|
this.cachedFlattenedProps = [];
|
||||||
|
}
|
||||||
|
addProp(prop) {
|
||||||
|
this.props.push(prop);
|
||||||
|
}
|
||||||
|
getAllProps(excludes, props) {
|
||||||
|
const localProps = [];
|
||||||
|
this.getAllPropsIteratorProps(excludes, localProps, props);
|
||||||
|
for (const localProp of localProps) {
|
||||||
|
props.push(localProp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getAllPropsIteratorProps(excludes, props, childProps) {
|
||||||
|
for (const prop of this.props) {
|
||||||
|
if (prop.hasFlag(SendPropDefinition_1.SendPropFlag.SPROP_EXCLUDE)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (excludes.filter((exclude) => {
|
||||||
|
return exclude.name === prop.name && exclude.excludeDTName === prop.ownerTableName;
|
||||||
|
}).length > 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (prop.type === SendPropDefinition_1.SendPropType.DPT_DataTable && prop.table) {
|
||||||
|
if (prop.hasFlag(SendPropDefinition_1.SendPropFlag.SPROP_COLLAPSIBLE)) {
|
||||||
|
prop.table.getAllPropsIteratorProps(excludes, props, childProps);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
prop.table.getAllProps(excludes, childProps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
props.push(prop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get flattenedProps() {
|
||||||
|
if (this.cachedFlattenedProps.length === 0) {
|
||||||
|
this.flatten();
|
||||||
|
}
|
||||||
|
return this.cachedFlattenedProps;
|
||||||
|
}
|
||||||
|
get excludes() {
|
||||||
|
let result = [];
|
||||||
|
for (const prop of this.props) {
|
||||||
|
if (prop.hasFlag(SendPropDefinition_1.SendPropFlag.SPROP_EXCLUDE)) {
|
||||||
|
result.push(prop);
|
||||||
|
}
|
||||||
|
else if (prop.type === SendPropDefinition_1.SendPropType.DPT_DataTable && prop.table) {
|
||||||
|
result = result.concat(prop.table.excludes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
flatten() {
|
||||||
|
const excludes = this.excludes;
|
||||||
|
const props = [];
|
||||||
|
this.getAllProps(excludes, props);
|
||||||
|
// sort often changed props before the others
|
||||||
|
let start = 0;
|
||||||
|
for (let i = 0; i < props.length; i++) {
|
||||||
|
if (props[i].hasFlag(SendPropDefinition_1.SendPropFlag.SPROP_CHANGES_OFTEN)) {
|
||||||
|
if (i !== start) {
|
||||||
|
const temp = props[i];
|
||||||
|
props[i] = props[start];
|
||||||
|
props[start] = temp;
|
||||||
|
}
|
||||||
|
start++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.cachedFlattenedProps = props;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.SendTable = SendTable;
|
||||||
|
//# sourceMappingURL=SendTable.js.map
|
||||||
1
build/Data/SendTable.js.map
Normal file
1
build/Data/SendTable.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"SendTable.js","sourceRoot":"","sources":["../../src/Data/SendTable.ts"],"names":[],"mappings":"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"}
|
||||||
7
build/Data/ServerClass.d.ts
vendored
Normal file
7
build/Data/ServerClass.d.ts
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
export declare type ServerClassId = number;
|
||||||
|
export declare class ServerClass {
|
||||||
|
id: ServerClassId;
|
||||||
|
name: string;
|
||||||
|
dataTable: string;
|
||||||
|
constructor(id: ServerClassId, name: string, dataTable: string);
|
||||||
|
}
|
||||||
11
build/Data/ServerClass.js
Normal file
11
build/Data/ServerClass.js
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
class ServerClass {
|
||||||
|
constructor(id, name, dataTable) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.dataTable = dataTable;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.ServerClass = ServerClass;
|
||||||
|
//# sourceMappingURL=ServerClass.js.map
|
||||||
1
build/Data/ServerClass.js.map
Normal file
1
build/Data/ServerClass.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"ServerClass.js","sourceRoot":"","sources":["../../src/Data/ServerClass.ts"],"names":[],"mappings":";;AAEA,MAAa,WAAW;IAKvB,YAAY,EAAiB,EAAE,IAAY,EAAE,SAAiB;QAC7D,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;CACD;AAVD,kCAUC"}
|
||||||
14
build/Data/StringTable.d.ts
vendored
Normal file
14
build/Data/StringTable.d.ts
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
import { BitStream } from 'bit-buffer';
|
||||||
|
export interface StringTable {
|
||||||
|
name: string;
|
||||||
|
entries: StringTableEntry[];
|
||||||
|
maxEntries: number;
|
||||||
|
fixedUserDataSize?: number;
|
||||||
|
fixedUserDataSizeBits?: number;
|
||||||
|
clientEntries?: StringTableEntry[];
|
||||||
|
compressed: boolean;
|
||||||
|
}
|
||||||
|
export interface StringTableEntry {
|
||||||
|
text: string;
|
||||||
|
extraData?: BitStream;
|
||||||
|
}
|
||||||
3
build/Data/StringTable.js
Normal file
3
build/Data/StringTable.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=StringTable.js.map
|
||||||
1
build/Data/StringTable.js.map
Normal file
1
build/Data/StringTable.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"StringTable.js","sourceRoot":"","sources":["../../src/Data/StringTable.ts"],"names":[],"mappings":""}
|
||||||
13
build/Data/Team.d.ts
vendored
Normal file
13
build/Data/Team.d.ts
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
export declare enum TeamNumber {
|
||||||
|
UNASGINED = 0,
|
||||||
|
SPECTATOR = 1,
|
||||||
|
RED = 2,
|
||||||
|
BLU = 3
|
||||||
|
}
|
||||||
|
export interface Team {
|
||||||
|
teamNumber: TeamNumber;
|
||||||
|
name: string;
|
||||||
|
score: number;
|
||||||
|
roundsWon: number;
|
||||||
|
players: number[];
|
||||||
|
}
|
||||||
10
build/Data/Team.js
Normal file
10
build/Data/Team.js
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var TeamNumber;
|
||||||
|
(function (TeamNumber) {
|
||||||
|
TeamNumber[TeamNumber["UNASGINED"] = 0] = "UNASGINED";
|
||||||
|
TeamNumber[TeamNumber["SPECTATOR"] = 1] = "SPECTATOR";
|
||||||
|
TeamNumber[TeamNumber["RED"] = 2] = "RED";
|
||||||
|
TeamNumber[TeamNumber["BLU"] = 3] = "BLU";
|
||||||
|
})(TeamNumber = exports.TeamNumber || (exports.TeamNumber = {}));
|
||||||
|
//# sourceMappingURL=Team.js.map
|
||||||
1
build/Data/Team.js.map
Normal file
1
build/Data/Team.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Team.js","sourceRoot":"","sources":["../../src/Data/Team.ts"],"names":[],"mappings":";;AAAA,IAAY,UAKX;AALD,WAAY,UAAU;IACrB,qDAAa,CAAA;IACb,qDAAa,CAAA;IACb,yCAAO,CAAA;IACP,yCAAO,CAAA;AACR,CAAC,EALW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAKrB"}
|
||||||
11
build/Data/UserInfo.d.ts
vendored
Normal file
11
build/Data/UserInfo.d.ts
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
export interface UserInfo extends UserEntityInfo {
|
||||||
|
classes: any;
|
||||||
|
team: string;
|
||||||
|
}
|
||||||
|
export declare type UserId = number;
|
||||||
|
export interface UserEntityInfo {
|
||||||
|
name: string;
|
||||||
|
userId: UserId;
|
||||||
|
steamId: string;
|
||||||
|
entityId: number;
|
||||||
|
}
|
||||||
3
build/Data/UserInfo.js
Normal file
3
build/Data/UserInfo.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=UserInfo.js.map
|
||||||
1
build/Data/UserInfo.js.map
Normal file
1
build/Data/UserInfo.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"UserInfo.js","sourceRoot":"","sources":["../../src/Data/UserInfo.ts"],"names":[],"mappings":""}
|
||||||
134
build/Data/UserMessage.d.ts
vendored
Normal file
134
build/Data/UserMessage.d.ts
vendored
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
import { BitStream } from 'bit-buffer';
|
||||||
|
export declare enum UserMessageType {
|
||||||
|
Geiger = 0,
|
||||||
|
Train = 1,
|
||||||
|
HudText = 2,
|
||||||
|
SayText = 3,
|
||||||
|
SayText2 = 4,
|
||||||
|
TextMsg = 5,
|
||||||
|
ResetHUD = 6,
|
||||||
|
GameTitle = 7,
|
||||||
|
ItemPickup = 8,
|
||||||
|
ShowMenu = 9,
|
||||||
|
Shake = 10,
|
||||||
|
Fade = 11,
|
||||||
|
VGUIMenu = 12,
|
||||||
|
Rumble = 13,
|
||||||
|
CloseCaption = 14,
|
||||||
|
SendAudio = 15,
|
||||||
|
VoiceMask = 16,
|
||||||
|
RequestState = 17,
|
||||||
|
Damage = 18,
|
||||||
|
HintText = 19,
|
||||||
|
KeyHintText = 20,
|
||||||
|
HudMsg = 21,
|
||||||
|
AmmoDenied = 22,
|
||||||
|
AchievementEvent = 23,
|
||||||
|
UpdateRadar = 24,
|
||||||
|
VoiceSubtitle = 25,
|
||||||
|
HudNotify = 26,
|
||||||
|
HudNotifyCustom = 27,
|
||||||
|
PlayerStatsUpdate = 28,
|
||||||
|
PlayerIgnited = 29,
|
||||||
|
PlayerIgnitedInv = 30,
|
||||||
|
HudArenaNotify = 31,
|
||||||
|
UpdateAchievement = 32,
|
||||||
|
TrainingMsg = 33,
|
||||||
|
TrainingObjective = 34,
|
||||||
|
DamageDodged = 35,
|
||||||
|
PlayerJarated = 36,
|
||||||
|
PlayerExtinguished = 37,
|
||||||
|
PlayerJaratedFade = 38,
|
||||||
|
PlayerShieldBlocked = 39,
|
||||||
|
BreakModel = 40,
|
||||||
|
CheapBreakModel = 41,
|
||||||
|
BreakModel_Pumpkin = 42,
|
||||||
|
BreakModelRocketDud = 43,
|
||||||
|
CallVoteFailed = 44,
|
||||||
|
VoteStart = 45,
|
||||||
|
VotePass = 46,
|
||||||
|
VoteFailed = 47,
|
||||||
|
VoteSetup = 48,
|
||||||
|
PlayerBonusPoints = 49,
|
||||||
|
SpawnFlyingBird = 50,
|
||||||
|
PlayerGodRayEffect = 51,
|
||||||
|
SPHapWeapEvent = 52,
|
||||||
|
HapDmg = 53,
|
||||||
|
HapPunch = 54,
|
||||||
|
HapSetDrag = 55,
|
||||||
|
HapSet = 56,
|
||||||
|
HapMeleeContact = 57
|
||||||
|
}
|
||||||
|
export interface BaseDataUserPacket {
|
||||||
|
data: number;
|
||||||
|
}
|
||||||
|
export interface SayText2Packet {
|
||||||
|
packetType: 'userMessage';
|
||||||
|
userMessageType: 'sayText2';
|
||||||
|
client: number;
|
||||||
|
raw: number;
|
||||||
|
kind: 'TF_Chat_All' | 'TF_Chat_Team' | 'TF_Chat_AllDead' | '#TF_Name_Change';
|
||||||
|
from: string;
|
||||||
|
text: string;
|
||||||
|
}
|
||||||
|
export declare enum HudTextLocation {
|
||||||
|
HUD_PRINTNOTIFY = 1,
|
||||||
|
HUD_PRINTCONSOLE = 2,
|
||||||
|
HUD_PRINTTALK = 3,
|
||||||
|
HUD_PRINTCENTER = 4
|
||||||
|
}
|
||||||
|
export interface TextMessagePacket {
|
||||||
|
packetType: 'userMessage';
|
||||||
|
userMessageType: 'textMsg';
|
||||||
|
destType: HudTextLocation;
|
||||||
|
text: string;
|
||||||
|
}
|
||||||
|
export interface ResetHUDPacket extends BaseDataUserPacket {
|
||||||
|
packetType: 'userMessage';
|
||||||
|
userMessageType: 'resetHUD';
|
||||||
|
}
|
||||||
|
export interface TrainPacket extends BaseDataUserPacket {
|
||||||
|
packetType: 'userMessage';
|
||||||
|
userMessageType: 'train';
|
||||||
|
}
|
||||||
|
export interface VoiceSubtitlePacket {
|
||||||
|
packetType: 'userMessage';
|
||||||
|
userMessageType: 'voiceSubtitle';
|
||||||
|
client: number;
|
||||||
|
menu: number;
|
||||||
|
item: number;
|
||||||
|
}
|
||||||
|
export interface ShakePacket {
|
||||||
|
packetType: 'userMessage';
|
||||||
|
userMessageType: 'shake';
|
||||||
|
command: number;
|
||||||
|
amplitude: number;
|
||||||
|
frequency: number;
|
||||||
|
duration: number;
|
||||||
|
}
|
||||||
|
export interface UnknownUserMessageBasePacket {
|
||||||
|
data: BitStream;
|
||||||
|
type: number;
|
||||||
|
}
|
||||||
|
export interface BreakModelPumpkinPacket extends UnknownUserMessageBasePacket {
|
||||||
|
packetType: 'userMessage';
|
||||||
|
userMessageType: 'breakModelPumpkin';
|
||||||
|
}
|
||||||
|
export interface GenericUnknownUserMessagePacket extends UnknownUserMessageBasePacket {
|
||||||
|
packetType: 'userMessage';
|
||||||
|
userMessageType: 'unknownUserMessage';
|
||||||
|
}
|
||||||
|
export declare type UnknownUserMessagePacket = GenericUnknownUserMessagePacket | BreakModelPumpkinPacket;
|
||||||
|
export declare type UserMessagePacket = SayText2Packet | TextMessagePacket | ResetHUDPacket | UnknownUserMessagePacket | TrainPacket | VoiceSubtitlePacket | BreakModelPumpkinPacket | ShakePacket;
|
||||||
|
export declare type UserMessagePacketType = UserMessagePacket['userMessageType'];
|
||||||
|
export interface UserMessageTypeMap {
|
||||||
|
sayText2: SayText2Packet;
|
||||||
|
textMsg: TextMessagePacket;
|
||||||
|
unknownUserMessage: GenericUnknownUserMessagePacket;
|
||||||
|
train: TrainPacket;
|
||||||
|
voiceSubtitle: VoiceSubtitlePacket;
|
||||||
|
breakModelPumpkin: BreakModelPumpkinPacket;
|
||||||
|
resetHUD: ResetHUDPacket;
|
||||||
|
shake: ShakePacket;
|
||||||
|
}
|
||||||
|
export declare const UserMessagePacketTypeMap: Map<UserMessagePacketType, UserMessageType>;
|
||||||
81
build/Data/UserMessage.js
Normal file
81
build/Data/UserMessage.js
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var UserMessageType;
|
||||||
|
(function (UserMessageType) {
|
||||||
|
UserMessageType[UserMessageType["Geiger"] = 0] = "Geiger";
|
||||||
|
UserMessageType[UserMessageType["Train"] = 1] = "Train";
|
||||||
|
UserMessageType[UserMessageType["HudText"] = 2] = "HudText";
|
||||||
|
UserMessageType[UserMessageType["SayText"] = 3] = "SayText";
|
||||||
|
UserMessageType[UserMessageType["SayText2"] = 4] = "SayText2";
|
||||||
|
UserMessageType[UserMessageType["TextMsg"] = 5] = "TextMsg";
|
||||||
|
UserMessageType[UserMessageType["ResetHUD"] = 6] = "ResetHUD";
|
||||||
|
UserMessageType[UserMessageType["GameTitle"] = 7] = "GameTitle";
|
||||||
|
UserMessageType[UserMessageType["ItemPickup"] = 8] = "ItemPickup";
|
||||||
|
UserMessageType[UserMessageType["ShowMenu"] = 9] = "ShowMenu";
|
||||||
|
UserMessageType[UserMessageType["Shake"] = 10] = "Shake";
|
||||||
|
UserMessageType[UserMessageType["Fade"] = 11] = "Fade";
|
||||||
|
UserMessageType[UserMessageType["VGUIMenu"] = 12] = "VGUIMenu";
|
||||||
|
UserMessageType[UserMessageType["Rumble"] = 13] = "Rumble";
|
||||||
|
UserMessageType[UserMessageType["CloseCaption"] = 14] = "CloseCaption";
|
||||||
|
UserMessageType[UserMessageType["SendAudio"] = 15] = "SendAudio";
|
||||||
|
UserMessageType[UserMessageType["VoiceMask"] = 16] = "VoiceMask";
|
||||||
|
UserMessageType[UserMessageType["RequestState"] = 17] = "RequestState";
|
||||||
|
UserMessageType[UserMessageType["Damage"] = 18] = "Damage";
|
||||||
|
UserMessageType[UserMessageType["HintText"] = 19] = "HintText";
|
||||||
|
UserMessageType[UserMessageType["KeyHintText"] = 20] = "KeyHintText";
|
||||||
|
UserMessageType[UserMessageType["HudMsg"] = 21] = "HudMsg";
|
||||||
|
UserMessageType[UserMessageType["AmmoDenied"] = 22] = "AmmoDenied";
|
||||||
|
UserMessageType[UserMessageType["AchievementEvent"] = 23] = "AchievementEvent";
|
||||||
|
UserMessageType[UserMessageType["UpdateRadar"] = 24] = "UpdateRadar";
|
||||||
|
UserMessageType[UserMessageType["VoiceSubtitle"] = 25] = "VoiceSubtitle";
|
||||||
|
UserMessageType[UserMessageType["HudNotify"] = 26] = "HudNotify";
|
||||||
|
UserMessageType[UserMessageType["HudNotifyCustom"] = 27] = "HudNotifyCustom";
|
||||||
|
UserMessageType[UserMessageType["PlayerStatsUpdate"] = 28] = "PlayerStatsUpdate";
|
||||||
|
UserMessageType[UserMessageType["PlayerIgnited"] = 29] = "PlayerIgnited";
|
||||||
|
UserMessageType[UserMessageType["PlayerIgnitedInv"] = 30] = "PlayerIgnitedInv";
|
||||||
|
UserMessageType[UserMessageType["HudArenaNotify"] = 31] = "HudArenaNotify";
|
||||||
|
UserMessageType[UserMessageType["UpdateAchievement"] = 32] = "UpdateAchievement";
|
||||||
|
UserMessageType[UserMessageType["TrainingMsg"] = 33] = "TrainingMsg";
|
||||||
|
UserMessageType[UserMessageType["TrainingObjective"] = 34] = "TrainingObjective";
|
||||||
|
UserMessageType[UserMessageType["DamageDodged"] = 35] = "DamageDodged";
|
||||||
|
UserMessageType[UserMessageType["PlayerJarated"] = 36] = "PlayerJarated";
|
||||||
|
UserMessageType[UserMessageType["PlayerExtinguished"] = 37] = "PlayerExtinguished";
|
||||||
|
UserMessageType[UserMessageType["PlayerJaratedFade"] = 38] = "PlayerJaratedFade";
|
||||||
|
UserMessageType[UserMessageType["PlayerShieldBlocked"] = 39] = "PlayerShieldBlocked";
|
||||||
|
UserMessageType[UserMessageType["BreakModel"] = 40] = "BreakModel";
|
||||||
|
UserMessageType[UserMessageType["CheapBreakModel"] = 41] = "CheapBreakModel";
|
||||||
|
UserMessageType[UserMessageType["BreakModel_Pumpkin"] = 42] = "BreakModel_Pumpkin";
|
||||||
|
UserMessageType[UserMessageType["BreakModelRocketDud"] = 43] = "BreakModelRocketDud";
|
||||||
|
UserMessageType[UserMessageType["CallVoteFailed"] = 44] = "CallVoteFailed";
|
||||||
|
UserMessageType[UserMessageType["VoteStart"] = 45] = "VoteStart";
|
||||||
|
UserMessageType[UserMessageType["VotePass"] = 46] = "VotePass";
|
||||||
|
UserMessageType[UserMessageType["VoteFailed"] = 47] = "VoteFailed";
|
||||||
|
UserMessageType[UserMessageType["VoteSetup"] = 48] = "VoteSetup";
|
||||||
|
UserMessageType[UserMessageType["PlayerBonusPoints"] = 49] = "PlayerBonusPoints";
|
||||||
|
UserMessageType[UserMessageType["SpawnFlyingBird"] = 50] = "SpawnFlyingBird";
|
||||||
|
UserMessageType[UserMessageType["PlayerGodRayEffect"] = 51] = "PlayerGodRayEffect";
|
||||||
|
UserMessageType[UserMessageType["SPHapWeapEvent"] = 52] = "SPHapWeapEvent";
|
||||||
|
UserMessageType[UserMessageType["HapDmg"] = 53] = "HapDmg";
|
||||||
|
UserMessageType[UserMessageType["HapPunch"] = 54] = "HapPunch";
|
||||||
|
UserMessageType[UserMessageType["HapSetDrag"] = 55] = "HapSetDrag";
|
||||||
|
UserMessageType[UserMessageType["HapSet"] = 56] = "HapSet";
|
||||||
|
UserMessageType[UserMessageType["HapMeleeContact"] = 57] = "HapMeleeContact";
|
||||||
|
})(UserMessageType = exports.UserMessageType || (exports.UserMessageType = {}));
|
||||||
|
var HudTextLocation;
|
||||||
|
(function (HudTextLocation) {
|
||||||
|
HudTextLocation[HudTextLocation["HUD_PRINTNOTIFY"] = 1] = "HUD_PRINTNOTIFY";
|
||||||
|
HudTextLocation[HudTextLocation["HUD_PRINTCONSOLE"] = 2] = "HUD_PRINTCONSOLE";
|
||||||
|
HudTextLocation[HudTextLocation["HUD_PRINTTALK"] = 3] = "HUD_PRINTTALK";
|
||||||
|
HudTextLocation[HudTextLocation["HUD_PRINTCENTER"] = 4] = "HUD_PRINTCENTER";
|
||||||
|
})(HudTextLocation = exports.HudTextLocation || (exports.HudTextLocation = {}));
|
||||||
|
exports.UserMessagePacketTypeMap = new Map([
|
||||||
|
['sayText2', UserMessageType.SayText2],
|
||||||
|
['textMsg', UserMessageType.TextMsg],
|
||||||
|
['train', UserMessageType.Train],
|
||||||
|
['voiceSubtitle', UserMessageType.VoiceSubtitle],
|
||||||
|
['breakModelPumpkin', UserMessageType.BreakModel_Pumpkin],
|
||||||
|
['resetHUD', UserMessageType.ResetHUD],
|
||||||
|
['shake', UserMessageType.Shake],
|
||||||
|
['unknownUserMessage', -1]
|
||||||
|
]);
|
||||||
|
//# sourceMappingURL=UserMessage.js.map
|
||||||
1
build/Data/UserMessage.js.map
Normal file
1
build/Data/UserMessage.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"UserMessage.js","sourceRoot":"","sources":["../../src/Data/UserMessage.ts"],"names":[],"mappings":";;AAEA,IAAY,eA2DX;AA3DD,WAAY,eAAe;IAC1B,yDAAU,CAAA;IACV,uDAAS,CAAA;IACT,2DAAW,CAAA;IACX,2DAAW,CAAA;IACX,6DAAY,CAAA;IACZ,2DAAW,CAAA;IACX,6DAAY,CAAA;IACZ,+DAAa,CAAA;IACb,iEAAc,CAAA;IACd,6DAAY,CAAA;IACZ,wDAAU,CAAA;IACV,sDAAS,CAAA;IACT,8DAAa,CAAA;IACb,0DAAW,CAAA;IACX,sEAAiB,CAAA;IACjB,gEAAc,CAAA;IACd,gEAAc,CAAA;IACd,sEAAiB,CAAA;IACjB,0DAAW,CAAA;IACX,8DAAa,CAAA;IACb,oEAAgB,CAAA;IAChB,0DAAW,CAAA;IACX,kEAAe,CAAA;IACf,8EAAqB,CAAA;IACrB,oEAAgB,CAAA;IAChB,wEAAkB,CAAA;IAClB,gEAAc,CAAA;IACd,4EAAoB,CAAA;IACpB,gFAAsB,CAAA;IACtB,wEAAkB,CAAA;IAClB,8EAAqB,CAAA;IACrB,0EAAmB,CAAA;IACnB,gFAAsB,CAAA;IACtB,oEAAgB,CAAA;IAChB,gFAAsB,CAAA;IACtB,sEAAiB,CAAA;IACjB,wEAAkB,CAAA;IAClB,kFAAuB,CAAA;IACvB,gFAAsB,CAAA;IACtB,oFAAwB,CAAA;IACxB,kEAAe,CAAA;IACf,4EAAoB,CAAA;IACpB,kFAAuB,CAAA;IACvB,oFAAwB,CAAA;IACxB,0EAAmB,CAAA;IACnB,gEAAc,CAAA;IACd,8DAAa,CAAA;IACb,kEAAe,CAAA;IACf,gEAAc,CAAA;IACd,gFAAsB,CAAA;IACtB,4EAAoB,CAAA;IACpB,kFAAuB,CAAA;IACvB,0EAAmB,CAAA;IACnB,0DAAW,CAAA;IACX,8DAAa,CAAA;IACb,kEAAe,CAAA;IACf,0DAAW,CAAA;IACX,4EAAoB,CAAA;AACrB,CAAC,EA3DW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QA2D1B;AAgBD,IAAY,eAKX;AALD,WAAY,eAAe;IAC1B,2EAAmB,CAAA;IACnB,6EAAoB,CAAA;IACpB,uEAAiB,CAAA;IACjB,2EAAmB,CAAA;AACpB,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AA4EY,QAAA,wBAAwB,GACpC,IAAI,GAAG,CAAyC;IAC/C,CAAC,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC;IACtC,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC;IACpC,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC;IAChC,CAAC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC;IAChD,CAAC,mBAAmB,EAAE,eAAe,CAAC,kBAAkB,CAAC;IACzD,CAAC,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC;IACtC,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC;IAChC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC"}
|
||||||
7
build/Data/Vector.d.ts
vendored
Normal file
7
build/Data/Vector.d.ts
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
export declare class Vector {
|
||||||
|
static areEqual(a: Vector, b: Vector): boolean;
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
z: number;
|
||||||
|
constructor(x: any, y: any, z: any);
|
||||||
|
}
|
||||||
14
build/Data/Vector.js
Normal file
14
build/Data/Vector.js
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
class Vector {
|
||||||
|
static areEqual(a, b) {
|
||||||
|
return a.x === b.x && a.y === b.y && a.z === b.z;
|
||||||
|
}
|
||||||
|
constructor(x, y, z) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Vector = Vector;
|
||||||
|
//# sourceMappingURL=Vector.js.map
|
||||||
1
build/Data/Vector.js.map
Normal file
1
build/Data/Vector.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Vector.js","sourceRoot":"","sources":["../../src/Data/Vector.ts"],"names":[],"mappings":";;AAAA,MAAa,MAAM;IACX,MAAM,CAAC,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC1C,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAMD,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;CACD;AAdD,wBAcC"}
|
||||||
10
build/Data/Weapon.d.ts
vendored
Normal file
10
build/Data/Weapon.d.ts
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
export interface BaseCombatWeapon {
|
||||||
|
className: string;
|
||||||
|
owner: number;
|
||||||
|
}
|
||||||
|
export interface CWeaponMedigun {
|
||||||
|
className: 'CWeaponMedigun';
|
||||||
|
healTarget: number;
|
||||||
|
chargeLevel: number;
|
||||||
|
}
|
||||||
|
export declare type Weapon = BaseCombatWeapon | CWeaponMedigun;
|
||||||
3
build/Data/Weapon.js
Normal file
3
build/Data/Weapon.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=Weapon.js.map
|
||||||
1
build/Data/Weapon.js.map
Normal file
1
build/Data/Weapon.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Weapon.js","sourceRoot":"","sources":["../../src/Data/Weapon.ts"],"names":[],"mappings":""}
|
||||||
5
build/Data/World.d.ts
vendored
Normal file
5
build/Data/World.d.ts
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { Vector } from './Vector';
|
||||||
|
export interface World {
|
||||||
|
boundaryMin: Vector;
|
||||||
|
boundaryMax: Vector;
|
||||||
|
}
|
||||||
3
build/Data/World.js
Normal file
3
build/Data/World.js
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=World.js.map
|
||||||
1
build/Data/World.js.map
Normal file
1
build/Data/World.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"World.js","sourceRoot":"","sources":["../../src/Data/World.ts"],"names":[],"mappings":""}
|
||||||
18
build/Demo.d.ts
vendored
Normal file
18
build/Demo.d.ts
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
/// <reference types="node" />
|
||||||
|
import { BitStream } from 'bit-buffer';
|
||||||
|
import { Analyser } from './Analyser';
|
||||||
|
import { Parser } from './Parser';
|
||||||
|
export declare enum ParseMode {
|
||||||
|
MINIMAL = 0,
|
||||||
|
ENTITIES = 1,
|
||||||
|
COMPLETE = 2
|
||||||
|
}
|
||||||
|
export declare class Demo {
|
||||||
|
static fromNodeBuffer(nodeBuffer: Buffer): Demo;
|
||||||
|
stream: BitStream;
|
||||||
|
parser: Parser | null;
|
||||||
|
constructor(arrayBuffer: ArrayBuffer);
|
||||||
|
getParser(mode?: ParseMode): Parser;
|
||||||
|
getAnalyser(mode?: ParseMode): Analyser;
|
||||||
|
private getSkippedPackets;
|
||||||
|
}
|
||||||
47
build/Demo.js
Normal file
47
build/Demo.js
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const bit_buffer_1 = require("bit-buffer");
|
||||||
|
const Analyser_1 = require("./Analyser");
|
||||||
|
const Packet_1 = require("./Data/Packet");
|
||||||
|
const Parser_1 = require("./Parser");
|
||||||
|
var ParseMode;
|
||||||
|
(function (ParseMode) {
|
||||||
|
ParseMode[ParseMode["MINIMAL"] = 0] = "MINIMAL";
|
||||||
|
ParseMode[ParseMode["ENTITIES"] = 1] = "ENTITIES";
|
||||||
|
ParseMode[ParseMode["COMPLETE"] = 2] = "COMPLETE";
|
||||||
|
})(ParseMode = exports.ParseMode || (exports.ParseMode = {}));
|
||||||
|
class Demo {
|
||||||
|
static fromNodeBuffer(nodeBuffer) {
|
||||||
|
return new Demo(nodeBuffer.buffer);
|
||||||
|
}
|
||||||
|
constructor(arrayBuffer) {
|
||||||
|
this.stream = new bit_buffer_1.BitStream(arrayBuffer);
|
||||||
|
}
|
||||||
|
getParser(mode = ParseMode.ENTITIES) {
|
||||||
|
if (!this.parser) {
|
||||||
|
this.parser = new Parser_1.Parser(this.stream, this.getSkippedPackets(mode));
|
||||||
|
}
|
||||||
|
return this.parser;
|
||||||
|
}
|
||||||
|
getAnalyser(mode = ParseMode.ENTITIES) {
|
||||||
|
return new Analyser_1.Analyser(this.getParser(mode));
|
||||||
|
}
|
||||||
|
getSkippedPackets(mode) {
|
||||||
|
switch (mode) {
|
||||||
|
case ParseMode.MINIMAL:
|
||||||
|
return [
|
||||||
|
Packet_1.PacketTypeId.packetEntities,
|
||||||
|
Packet_1.PacketTypeId.tempEntities,
|
||||||
|
Packet_1.PacketTypeId.entityMessage
|
||||||
|
];
|
||||||
|
case ParseMode.ENTITIES:
|
||||||
|
return [
|
||||||
|
Packet_1.PacketTypeId.tempEntities
|
||||||
|
];
|
||||||
|
case ParseMode.COMPLETE:
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Demo = Demo;
|
||||||
|
//# sourceMappingURL=Demo.js.map
|
||||||
1
build/Demo.js.map
Normal file
1
build/Demo.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Demo.js","sourceRoot":"","sources":["../src/Demo.ts"],"names":[],"mappings":";;AAAA,2CAAqC;AACrC,yCAAoC;AACpC,0CAA2C;AAC3C,qCAAgC;AAEhC,IAAY,SAIX;AAJD,WAAY,SAAS;IACpB,+CAAO,CAAA;IACP,iDAAQ,CAAA;IACR,iDAAQ,CAAA;AACT,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB;AAED,MAAa,IAAI;IACT,MAAM,CAAC,cAAc,CAAC,UAAkB;QAC9C,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAqB,CAAC,CAAC;IACnD,CAAC;IAMD,YAAY,WAAwB;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAEM,SAAS,CAAC,OAAkB,SAAS,CAAC,QAAQ;QACpD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;SACpE;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAEM,WAAW,CAAC,OAAkB,SAAS,CAAC,QAAQ;QACtD,OAAO,IAAI,mBAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEO,iBAAiB,CAAC,IAAe;QACxC,QAAQ,IAAI,EAAE;YACb,KAAK,SAAS,CAAC,OAAO;gBACrB,OAAO;oBACN,qBAAY,CAAC,cAAc;oBAC3B,qBAAY,CAAC,YAAY;oBACzB,qBAAY,CAAC,aAAa;iBAC1B,CAAC;YACH,KAAK,SAAS,CAAC,QAAQ;gBACtB,OAAO;oBACN,qBAAY,CAAC,YAAY;iBACzB,CAAC;YACH,KAAK,SAAS,CAAC,QAAQ;gBACtB,OAAO,EAAE,CAAC;SACX;IACF,CAAC;CACD;AAxCD,oBAwCC"}
|
||||||
5
build/DynamicBitStream.d.ts
vendored
Normal file
5
build/DynamicBitStream.d.ts
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { BitStream } from 'bit-buffer';
|
||||||
|
export declare class DynamicBitStream extends BitStream {
|
||||||
|
constructor(initialByteSize?: number);
|
||||||
|
readonly length: number;
|
||||||
|
}
|
||||||
14
build/DynamicBitStream.js
Normal file
14
build/DynamicBitStream.js
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const bit_buffer_1 = require("bit-buffer");
|
||||||
|
const DynamicBitView_1 = require("./DynamicBitView");
|
||||||
|
class DynamicBitStream extends bit_buffer_1.BitStream {
|
||||||
|
constructor(initialByteSize = 16 * 1024) {
|
||||||
|
super(new DynamicBitView_1.DynamicBitView(new ArrayBuffer(initialByteSize)));
|
||||||
|
}
|
||||||
|
get length() {
|
||||||
|
return this.view.byteLength * 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.DynamicBitStream = DynamicBitStream;
|
||||||
|
//# sourceMappingURL=DynamicBitStream.js.map
|
||||||
1
build/DynamicBitStream.js.map
Normal file
1
build/DynamicBitStream.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"DynamicBitStream.js","sourceRoot":"","sources":["../src/DynamicBitStream.ts"],"names":[],"mappings":";;AAAA,2CAAqC;AACrC,qDAAgD;AAEhD,MAAa,gBAAiB,SAAQ,sBAAS;IAC9C,YAAY,kBAA0B,EAAE,GAAG,IAAI;QAC9C,KAAK,CAAC,IAAI,+BAAc,CAAC,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACjC,CAAC;CACD;AARD,4CAQC"}
|
||||||
6
build/DynamicBitView.d.ts
vendored
Normal file
6
build/DynamicBitView.d.ts
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { BitView } from 'bit-buffer';
|
||||||
|
export declare class DynamicBitView extends BitView {
|
||||||
|
protected _view: Uint8Array;
|
||||||
|
setBits(offset: number, value: number, bits: number): any;
|
||||||
|
grow(): void;
|
||||||
|
}
|
||||||
19
build/DynamicBitView.js
Normal file
19
build/DynamicBitView.js
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const bit_buffer_1 = require("bit-buffer");
|
||||||
|
class DynamicBitView extends bit_buffer_1.BitView {
|
||||||
|
setBits(offset, value, bits) {
|
||||||
|
const available = (this.byteLength * 8 - offset);
|
||||||
|
if (bits > available) {
|
||||||
|
this.grow();
|
||||||
|
}
|
||||||
|
return super.setBits(offset, value, bits);
|
||||||
|
}
|
||||||
|
grow() {
|
||||||
|
const newView = new Uint8Array(this.byteLength * 2);
|
||||||
|
newView.set(this._view);
|
||||||
|
this._view = newView;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.DynamicBitView = DynamicBitView;
|
||||||
|
//# sourceMappingURL=DynamicBitView.js.map
|
||||||
1
build/DynamicBitView.js.map
Normal file
1
build/DynamicBitView.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"DynamicBitView.js","sourceRoot":"","sources":["../src/DynamicBitView.ts"],"names":[],"mappings":";;AAAA,2CAAmC;AAEnC,MAAa,cAAe,SAAQ,oBAAO;IAInC,OAAO,CAAC,MAAc,EAAE,KAAa,EAAE,IAAY;QACzD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAEjD,IAAI,IAAI,GAAG,SAAS,EAAE;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC;SACZ;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,IAAI;QACV,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACtB,CAAC;CACD;AAlBD,wCAkBC"}
|
||||||
12
build/Encoder.d.ts
vendored
Normal file
12
build/Encoder.d.ts
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
import { BitStream } from 'bit-buffer';
|
||||||
|
import { Header } from './Data/Header';
|
||||||
|
import { Message } from './Data/Message';
|
||||||
|
import { ParserState } from './Data/ParserState';
|
||||||
|
export declare class Encoder {
|
||||||
|
readonly stream: BitStream;
|
||||||
|
readonly parserState: ParserState;
|
||||||
|
constructor(stream: BitStream);
|
||||||
|
encodeHeader(header: Header): void;
|
||||||
|
writeMessage(message: Message): void;
|
||||||
|
protected handleMessage(message: Message): void;
|
||||||
|
}
|
||||||
34
build/Encoder.js
Normal file
34
build/Encoder.js
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const Message_1 = require("./Data/Message");
|
||||||
|
const ParserState_1 = require("./Data/ParserState");
|
||||||
|
const Parser_1 = require("./Parser");
|
||||||
|
const Header_1 = require("./Parser/Header");
|
||||||
|
class Encoder {
|
||||||
|
constructor(stream) {
|
||||||
|
this.stream = stream;
|
||||||
|
this.parserState = new ParserState_1.ParserState();
|
||||||
|
}
|
||||||
|
encodeHeader(header) {
|
||||||
|
Header_1.encodeHeader(header, this.stream);
|
||||||
|
}
|
||||||
|
writeMessage(message) {
|
||||||
|
this.stream.writeUint8(message.type);
|
||||||
|
const handler = Parser_1.messageHandlers.get(message.type);
|
||||||
|
if (!handler) {
|
||||||
|
throw new Error(`No handler for message of type ${Message_1.MessageType[message.type]}`);
|
||||||
|
}
|
||||||
|
handler.encodeMessage(message, this.stream, this.parserState);
|
||||||
|
this.handleMessage(message);
|
||||||
|
}
|
||||||
|
handleMessage(message) {
|
||||||
|
this.parserState.handleMessage(message);
|
||||||
|
if (message.type === Message_1.MessageType.Packet) {
|
||||||
|
for (const packet of message.packets) {
|
||||||
|
this.parserState.handlePacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Encoder = Encoder;
|
||||||
|
//# sourceMappingURL=Encoder.js.map
|
||||||
1
build/Encoder.js.map
Normal file
1
build/Encoder.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Encoder.js","sourceRoot":"","sources":["../src/Encoder.ts"],"names":[],"mappings":";;AAEA,4CAAoD;AACpD,oDAA+C;AAC/C,qCAAyC;AACzC,4CAA6C;AAE7C,MAAa,OAAO;IAInB,YAAY,MAAiB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;IACtC,CAAC;IAEM,YAAY,CAAC,MAAc;QACjC,qBAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAEM,YAAY,CAAC,OAAgB;QACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,wBAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,qBAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/E;QACD,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAES,aAAa,CAAC,OAAgB;QACvC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAW,CAAC,MAAM,EAAE;YACxC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aACtC;SACD;IACF,CAAC;CACD;AA/BD,0BA+BC"}
|
||||||
1
build/Math.d.ts
vendored
Normal file
1
build/Math.d.ts
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
export declare function logBase2(num: number): number;
|
||||||
13
build/Math.js
Normal file
13
build/Math.js
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
function logBase2(num) {
|
||||||
|
let result = 0;
|
||||||
|
num >>= 1;
|
||||||
|
while (num !== 0 && result < 32) {
|
||||||
|
result++;
|
||||||
|
num >>= 1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
exports.logBase2 = logBase2;
|
||||||
|
//# sourceMappingURL=Math.js.map
|
||||||
1
build/Math.js.map
Normal file
1
build/Math.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"Math.js","sourceRoot":"","sources":["../src/Math.ts"],"names":[],"mappings":";;AAAA,SAAgB,QAAQ,CAAC,GAAW;IACnC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,GAAG,KAAK,CAAC,CAAC;IACV,OAAO,GAAG,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,EAAE;QAChC,MAAM,EAAE,CAAC;QACT,GAAG,KAAK,CAAC,CAAC;KACV;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AARD,4BAQC"}
|
||||||
4
build/PacketHandler/BaseEntityHandler.d.ts
vendored
Normal file
4
build/PacketHandler/BaseEntityHandler.d.ts
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
import { Match } from '../Data/Match';
|
||||||
|
import { PacketMessage } from '../Data/Message';
|
||||||
|
import { PacketEntity } from '../Data/PacketEntity';
|
||||||
|
export declare function handleBaseEntity(entity: PacketEntity, match: Match, message: PacketMessage): void;
|
||||||
29
build/PacketHandler/BaseEntityHandler.js
Normal file
29
build/PacketHandler/BaseEntityHandler.js
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
function handleBaseEntity(entity, match, message) {
|
||||||
|
for (const prop of entity.props) {
|
||||||
|
if (prop.definition.ownerTableName === 'DT_AttributeContainer' && prop.definition.name === 'm_hOuter') {
|
||||||
|
if (!match.outerMap.has(prop.value)) {
|
||||||
|
match.outerMap.set(prop.value, entity.entityIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const prop of entity.props) {
|
||||||
|
if (prop.definition.ownerTableName === 'DT_BaseCombatWeapon' && prop.definition.name === 'm_hOwner') {
|
||||||
|
if (!match.weaponMap.has(entity.entityIndex)) {
|
||||||
|
match.weaponMap.set(entity.entityIndex, {
|
||||||
|
className: entity.serverClass.name,
|
||||||
|
owner: prop.value
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (entity.serverClass.name) {
|
||||||
|
case 'CWorld':
|
||||||
|
match.world.boundaryMin = entity.getProperty('DT_WORLD', 'm_WorldMins').value;
|
||||||
|
match.world.boundaryMax = entity.getProperty('DT_WORLD', 'm_WorldMaxs').value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.handleBaseEntity = handleBaseEntity;
|
||||||
|
//# sourceMappingURL=BaseEntityHandler.js.map
|
||||||
1
build/PacketHandler/BaseEntityHandler.js.map
Normal file
1
build/PacketHandler/BaseEntityHandler.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"BaseEntityHandler.js","sourceRoot":"","sources":["../../src/PacketHandler/BaseEntityHandler.ts"],"names":[],"mappings":";;AAKA,SAAgB,gBAAgB,CAAC,MAAoB,EAAE,KAAY,EAAE,OAAsB;IAC1F,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,KAAK,uBAAuB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;YACtG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAe,CAAC,EAAE;gBAC9C,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;aAC7D;SACD;KACD;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,KAAK,qBAAqB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;YACpG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;gBAC7C,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE;oBACvC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;oBAClC,KAAK,EAAE,IAAI,CAAC,KAAe;iBAC3B,CAAC,CAAC;aACH;SACD;KACD;IAED,QAAQ,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAChC,KAAK,QAAQ;YACZ,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,KAAe,CAAC;YACxF,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,KAAe,CAAC;YACxF,MAAM;KACP;AACF,CAAC;AA1BD,4CA0BC"}
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue