teeworlds
Version:
Library for (ingame) teeworlds bots.
236 lines (207 loc) • 6.09 kB
TypeScript
export type Item = SnapshotItemTypes.PlayerInput | SnapshotItemTypes.PlayerInfo | SnapshotItemTypes.Projectile | SnapshotItemTypes.Laser | SnapshotItemTypes.Pickup | SnapshotItemTypes.Flag | SnapshotItemTypes.GameInfo | SnapshotItemTypes.GameData | SnapshotItemTypes.CharacterCore | SnapshotItemTypes.Character | SnapshotItemTypes.PlayerInfo | SnapshotItemTypes.ClientInfo | SnapshotItemTypes.SpectatorInfo | SnapshotItemTypes.Common | SnapshotItemTypes.Explosion | SnapshotItemTypes.Spawn | SnapshotItemTypes.HammerHit | SnapshotItemTypes.Death | SnapshotItemTypes.SoundGlobal | SnapshotItemTypes.SoundWorld | SnapshotItemTypes.DamageInd;
export type DDNetItem = SnapshotItemTypes.MyOwnObject | SnapshotItemTypes.DDNetCharacter | SnapshotItemTypes.DDNetPlayer | SnapshotItemTypes.GameInfoEx | SnapshotItemTypes.DDNetProjectile | SnapshotItemTypes.DDNetLaser;
export type DeltaItem = { 'data': number[], 'parsed': Item | DDNetItem, 'type_id': number, 'id': number, 'key': number};
export namespace SnapshotItemTypes {
interface PlayerInput {
direction: number,
target_x: number,
target_y: number,
jump: number,
fire: number,
hook: number,
player_flags: number,
wanted_weapon: number,
next_weapon: number,
prev_weapon: number,
}
interface Projectile {
x: number,
y: number,
vel_x: number,
vel_y: number,
type_: number,
start_tick: number,
}
interface Laser {
x: number,
y: number,
from_x: number,
from_y: number,
start_tick: number,
}
interface Pickup {
x: number,
y: number,
type_: number,
subtype: number,
}
interface Flag {
x: number,
y: number,
team: number,
}
interface GameInfo {
game_flags: number,
game_state_flags: number,
round_start_tick: number,
warmup_timer: number,
score_limit: number,
time_limit: number,
round_num: number,
round_current: number,
}
interface GameData {
teamscore_red: number,
teamscore_blue: number,
flag_carrier_red: number,
flag_carrier_blue: number,
}
interface CharacterCore {
tick: number,
x: number,
y: number,
vel_x: number,
vel_y: number,
angle: number,
direction: number,
jumped: number,
hooked_player: number,
hook_state: number,
hook_tick: number,
hook_x: number,
hook_y: number,
hook_dx: number,
hook_dy: number,
}
interface Character {
character_core: CharacterCore,
player_flags: number,
health: number,
armor: number,
ammo_count: number,
weapon: number,
emote: number,
attack_tick: number,
client_id: number
}
interface PlayerInfo {
local: number,
client_id: number,
team: number,
score: number,
latency: number,
}
interface ClientInfo {
name: string,
clan: string,
country: number,
skin: string,
use_custom_color: number,
color_body: number,
color_feet: number,
id: number
}
interface SpectatorInfo {
spectator_id: number,
x: number,
y: number,
}
interface Common {
x: number,
y: number,
}
interface Explosion {
common: Common,
}
interface Spawn {
common: Common,
}
interface HammerHit {
common: Common,
}
interface Death {
common: Common,
client_id: number,
}
interface SoundGlobal {
common: Common,
sound_id: number,
}
interface SoundWorld {
common: Common,
sound_id: number,
}
interface DamageInd {
common: Common,
angle: number,
}
interface MyOwnObject {
m_Test: number
}
interface DDNetCharacter {
m_Flags: number,
m_FreezeEnd: number,
m_Jumps: number,
m_TeleCheckpoint: number,
m_StrongWeakID: number,
// # New data fields for jump display, freeze bar and ninja bar
// # Default values indicate that these values should not be used
m_JumpedTotal?: number,
m_NinjaActivationTick?: number,
m_FreezeStart?: number,
// # New data fields for improved target accuracy
m_TargetX?: number,
m_TargetY?: number,
id: number
} //, validate_size=False),
/** m_AuthLevel "AUTHED_NO", "AUTHED_ADMIN" */
interface DDNetPlayer {
m_Flags: number,
m_AuthLevel: number,
id: number
}
interface GameInfoEx {
m_Flags: number,
m_Version: number,
m_Flags2: number,
}//, validate_size=False),
// # The code assumes that this has the same in-memory representation as
// # the Projectile net object.
interface DDNetProjectile {
m_X: number,
m_Y: number,
m_Angle: number,
m_Data: number,
m_Type: number,
m_StartTick: number,
}
interface DDNetLaser {
m_ToX: number,
m_ToY: number,
m_FromX: number,
m_FromY: number,
m_StartTick: number,
m_Owner: number,
m_Type: number,
}
}
export type RconCommand = {
command: string;
description: string;
params: string;
}
export interface Chunk {
bytes: number,
flags: number,
seq?: number,
// type: 'sys' | 'game',
sys: Boolean,
msgid: number,
msg: string,
raw: Buffer,
extended_msgid?: Buffer;
}
export interface _Packet {
twprotocol: { flags: number, ack: number, chunkAmount: number, size: number },
chunks: Chunk[]
}