├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .github └── workflows │ └── main.yaml ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── examples ├── index.js └── replays │ └── 1.replay ├── index.ts ├── package-lock.json ├── package.json ├── src ├── BinaryReader.ts ├── Http.ts ├── ReplayReader.ts └── structs.ts ├── test ├── index.js ├── replays │ ├── client-11.00.replay │ ├── client-19.00.replay │ ├── client-22.00.replay │ ├── client-8.11.replay │ ├── server-21.40.replay │ └── server-22.10.replay └── results │ ├── client-11.00.json │ ├── client-19.00.json │ ├── client-22.00.json │ ├── client-8.11.json │ ├── server-21.40.json │ └── server-22.10.json └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | ; Top-most .editorcofing file 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | quote_type = single 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.{yml,yaml}] 14 | indent_size = 2 15 | 16 | [*.md] 17 | trim_trailing_whitespace = false 18 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | test 2 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | es2021: true, 4 | node: true, 5 | }, 6 | extends: [ 7 | 'airbnb-base', 8 | ], 9 | parser: '@typescript-eslint/parser', 10 | parserOptions: { 11 | ecmaVersion: 12, 12 | sourceType: 'module', 13 | }, 14 | plugins: [ 15 | '@typescript-eslint', 16 | ], 17 | rules: { 18 | 'import/extensions': 'off', 19 | 'lines-between-class-members': [ 20 | 'error', 21 | 'always', 22 | { exceptAfterSingleLine: true }, 23 | ], 24 | 'default-case': 'off', 25 | 'max-len': 'off', 26 | 'no-bitwise': 'off', 27 | }, 28 | settings: { 29 | 'import/resolver': { 30 | node: { 31 | extensions: ['.js', '.jsx', '.ts', '.tsx'], 32 | }, 33 | }, 34 | }, 35 | }; 36 | -------------------------------------------------------------------------------- /.github/workflows/main.yaml: -------------------------------------------------------------------------------- 1 | name: Node.js CI 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | strategy: 13 | matrix: 14 | node-version: [14.x] 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v1 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | 24 | - run: npm install 25 | 26 | - run: npm run build 27 | 28 | - run: npm run test -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Packages 2 | node_modules/ 3 | 4 | # Log files 5 | logs/ 6 | *.log 7 | npm-debug.log* 8 | 9 | # Runtime data 10 | pids 11 | *.pid 12 | *.seed 13 | 14 | # Env 15 | .env 16 | 17 | # Dist 18 | dist/ 19 | 20 | # Miscellaneous 21 | .tmp/ 22 | coverage/ 23 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | examples/ 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020-2023 Nils S. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # node-replay-reader 2 | 3 | [![Node.js CI](https://github.com/ThisNils/node-replay-reader/actions/workflows/main.yml/badge.svg)](https://github.com/ThisNils/node-replay-reader/actions/workflows/main.yml) 4 | [![npm version](https://img.shields.io/npm/v/replay-reader.svg)](https://npmjs.com/package/replay-reader) 5 | [![npm downloads](https://img.shields.io/npm/dm/replay-reader.svg)](https://npmjs.com/package/replay-reader) 6 | [![license](https://img.shields.io/npm/l/replay-reader.svg)](https://github.com/ThisNils/node-replay-reader/blob/master/LICENSE) 7 | 8 | A tool to parse fortnite replays 9 | 10 | ## Installation 11 | ``` 12 | npm install replay-reader 13 | ``` 14 | 15 | ## Example 16 | Example: 17 | ```javascript 18 | const fs = require('fs').promises; 19 | const { ReplayReader } = require('replay-reader'); 20 | 21 | (async () => { 22 | const replay = await ReplayReader.parse('./replays/1.replay'); 23 | await fs.writeFile('./replay.json', JSON.stringify(replay, null, 2)); 24 | })(); 25 | 26 | ``` 27 | 28 | ## Help 29 | Feel free to join [this Discord server](https://discord.gg/HsUFr5f) 30 | 31 | ## License 32 | MIT License 33 | 34 | Copyright (c) 2020-2023 Nils S. 35 | 36 | Permission is hereby granted, free of charge, to any person obtaining a copy 37 | of this software and associated documentation files (the "Software"), to deal 38 | in the Software without restriction, including without limitation the rights 39 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 40 | copies of the Software, and to permit persons to whom the Software is 41 | furnished to do so, subject to the following conditions: 42 | 43 | The above copyright notice and this permission notice shall be included in all 44 | copies or substantial portions of the Software. 45 | 46 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 47 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 48 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 49 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 50 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 51 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 52 | SOFTWARE. 53 | -------------------------------------------------------------------------------- /examples/index.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs').promises; 2 | const { ReplayReader } = require('../dist'); 3 | 4 | (async () => { 5 | const replay = await ReplayReader.parse('./replays/UnsavedReplay-2022.08.10-11.39.59.replay'); 6 | await fs.writeFile('./replay.json', JSON.stringify(replay, null, 2)); 7 | })(); 8 | -------------------------------------------------------------------------------- /examples/replays/1.replay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThisNils/node-replay-reader/ed4ee5111d0b56e456d3a3c876ee1ea849d2c527/examples/replays/1.replay -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | // Main lib exports 2 | export { default as ReplayReader } from './src/ReplayReader'; 3 | export { default as BinaryReader } from './src/BinaryReader'; 4 | 5 | // Supporting interfaces 6 | export * from './src/structs'; 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "replay-reader", 3 | "version": "3.1.0", 4 | "description": "A tool to read Fortnite replays", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "keywords": [ 8 | "fortnite", 9 | "replay", 10 | "node" 11 | ], 12 | "scripts": { 13 | "build": "tsc", 14 | "test": "cd test && mocha index" 15 | }, 16 | "files": [ 17 | "dist", 18 | "package.json", 19 | "package-lock.json", 20 | "README.md", 21 | "LICENSE" 22 | ], 23 | "author": "ThisNils", 24 | "license": "MIT", 25 | "devDependencies": { 26 | "@types/node": "^14.14.37", 27 | "@typescript-eslint/eslint-plugin": "^4.20.0", 28 | "@typescript-eslint/parser": "^4.20.0", 29 | "eslint": "^7.23.0", 30 | "eslint-config-airbnb-base": "^14.2.1", 31 | "eslint-plugin-import": "^2.22.1", 32 | "mocha": "^10.2.0", 33 | "typescript": "^4.2.3" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/BinaryReader.ts: -------------------------------------------------------------------------------- 1 | import crypto from 'crypto'; 2 | import type { HasToString, ParserParseFunction, ReadObjectResult } from './structs'; 3 | 4 | class BinaryReader { 5 | buffer: Buffer; 6 | offset: number; 7 | 8 | constructor(buffer: Buffer) { 9 | this.buffer = buffer; 10 | this.offset = 0; 11 | } 12 | 13 | /** 14 | * Skip bytes 15 | */ 16 | skip(count: number) { 17 | this.offset += count; 18 | } 19 | 20 | /** 21 | * Change the current buffer offset 22 | */ 23 | goto(offset: number) { 24 | this.offset = offset; 25 | } 26 | 27 | /** 28 | * Read an int8 29 | */ 30 | readInt8() { 31 | const int8 = this.buffer.readInt8(this.offset); 32 | this.offset += 1; 33 | return int8; 34 | } 35 | 36 | /** 37 | * Read a uint8 38 | */ 39 | readUInt8() { 40 | const uint8 = this.buffer.readUInt8(this.offset); 41 | this.offset += 1; 42 | return uint8; 43 | } 44 | 45 | /** 46 | * Read an int16 47 | */ 48 | readInt16() { 49 | const int16 = this.buffer.readInt16LE(this.offset); 50 | this.offset += 2; 51 | return int16; 52 | } 53 | 54 | /** 55 | * Read a uint16 56 | */ 57 | readUInt16() { 58 | const uint16 = this.buffer.readUInt16LE(this.offset); 59 | this.offset += 2; 60 | return uint16; 61 | } 62 | 63 | /** 64 | * Read an int32 65 | */ 66 | readInt32() { 67 | const int32 = this.buffer.readInt32LE(this.offset); 68 | this.offset += 4; 69 | return int32; 70 | } 71 | 72 | /** 73 | * Read a uint32 74 | */ 75 | readUInt32() { 76 | const uint32 = this.buffer.readUInt32LE(this.offset); 77 | this.offset += 4; 78 | return uint32; 79 | } 80 | 81 | /** 82 | * Read an int64 83 | */ 84 | readInt64() { 85 | const int64 = this.buffer.readBigInt64LE(this.offset); 86 | this.offset += 8; 87 | return int64; 88 | } 89 | 90 | /** 91 | * Read a uint64 92 | */ 93 | readUInt64() { 94 | const uint64 = this.buffer.readBigUInt64LE(this.offset); 95 | this.offset += 8; 96 | return uint64; 97 | } 98 | 99 | /** 100 | * Read a float32 101 | */ 102 | readFloat32() { 103 | const float32 = this.buffer.readFloatLE(this.offset); 104 | this.offset += 4; 105 | return float32; 106 | } 107 | 108 | /** 109 | * Read a double64 110 | */ 111 | readDouble64() { 112 | const double64 = this.buffer.readDoubleLE(this.offset); 113 | this.offset += 8; 114 | return double64; 115 | } 116 | 117 | /** 118 | * Read a string 119 | */ 120 | readString() { 121 | const length = this.readInt32(); 122 | if (length === 0) return ''; 123 | if (length < 0) return this.readBytes(length * -2).slice(0, -2).toString('utf16le').trim(); 124 | 125 | const str = this.readBytes(length).slice(0, -1); 126 | 127 | return str.toString('utf-8'); 128 | } 129 | 130 | /** 131 | * Read a boolean 132 | */ 133 | readBool() { 134 | return this.readInt32() === 1; 135 | } 136 | 137 | /** 138 | * Read a 4 dimensional vector consisting of floats 139 | */ 140 | readVector4f() { 141 | return { 142 | x: this.readFloat32(), 143 | y: this.readFloat32(), 144 | z: this.readFloat32(), 145 | w: this.readFloat32(), 146 | }; 147 | } 148 | 149 | /** 150 | * Read a 3 dimensional vector consisting of floats 151 | */ 152 | readVector3f() { 153 | return { 154 | x: this.readFloat32(), 155 | y: this.readFloat32(), 156 | z: this.readFloat32(), 157 | }; 158 | } 159 | 160 | /** 161 | * Read a 4 dimensional vector consisting of doubles 162 | */ 163 | readVector4d() { 164 | return { 165 | x: this.readDouble64(), 166 | y: this.readDouble64(), 167 | z: this.readDouble64(), 168 | w: this.readDouble64(), 169 | }; 170 | } 171 | 172 | /** 173 | * Read a 3 dimensional vector consisting of doubles 174 | */ 175 | readVector3d() { 176 | return { 177 | x: this.readDouble64(), 178 | y: this.readDouble64(), 179 | z: this.readDouble64(), 180 | }; 181 | } 182 | 183 | /** 184 | * Read a byte 185 | */ 186 | readByte() { 187 | const byte = Buffer.from(this.buffer.toString('binary', this.offset, this.offset + 1), 'binary'); 188 | this.offset += 1; 189 | return byte; 190 | } 191 | 192 | /** 193 | * Read multiple bytes 194 | */ 195 | readBytes(count: number) { 196 | const bytes = Buffer.from(this.buffer.toString('binary', this.offset, this.offset + count), 'binary'); 197 | this.offset += count; 198 | return bytes; 199 | } 200 | 201 | /** 202 | * Read multiple bytes to a number 203 | */ 204 | readBytesToInt(count: number) { 205 | const bytes = this.readBytes(count); 206 | 207 | return bytes.reduce((oldByte, byte, i) => oldByte + (byte << (i * 8)), 0); 208 | } 209 | 210 | /** 211 | * Read 16 bytes as a hex string 212 | */ 213 | readId() { 214 | return this.readBytes(16).toString('hex'); 215 | } 216 | 217 | /** 218 | * Read an array 219 | */ 220 | // eslint-disable-next-line no-unused-vars 221 | readArray(fn: (reader: BinaryReader) => any) { 222 | const arrayLength = this.readUInt32(); 223 | const array = []; 224 | for (let i = 0; i < arrayLength; i += 1) { 225 | array.push(fn(this)); 226 | } 227 | return array; 228 | } 229 | 230 | /** 231 | * Read an array that consists of objects 232 | */ 233 | // eslint-disable-next-line no-unused-vars 234 | readObjectArray(keyFn: ParserParseFunction, valueFn: ParserParseFunction) { 235 | const arrayLength = this.readUInt32(); 236 | const array: ReadObjectResult = {}; 237 | 238 | for (let i = 0; i < arrayLength; i += 1) { 239 | array[keyFn(this).toString()] = valueFn(this); 240 | } 241 | 242 | return array; 243 | } 244 | 245 | /** 246 | * Decrypt a buffer 247 | */ 248 | decryptBuffer(encryptedLength: number, key: crypto.CipherKey) { 249 | const bytes = this.readBytes(encryptedLength); 250 | const decipher = crypto.createDecipheriv('aes-256-ecb', key, null); 251 | return Buffer.from((decipher.update as any)(bytes, 'binary', 'binary') + decipher.final('binary'), 'binary'); 252 | } 253 | } 254 | 255 | export default BinaryReader; 256 | -------------------------------------------------------------------------------- /src/Http.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/prefer-default-export */ 2 | import https from 'https'; 3 | import { URL } from 'url'; 4 | 5 | interface KeyValuePairs { 6 | [key: string]: any; 7 | } 8 | 9 | interface HttpResponse { 10 | data?: any; 11 | error?: any; 12 | } 13 | 14 | const accountQuery = ` 15 | query AccountQuery($accountIds: [String]!) { 16 | Account { 17 | accounts(accountIds: $accountIds) { 18 | id 19 | displayName 20 | externalAuths { 21 | externalDisplayName 22 | } 23 | } 24 | } 25 | } 26 | `; 27 | 28 | const request = async (method: string, urlString: string, body?: any, headers?: KeyValuePairs): Promise => { 29 | const url = new URL(urlString); 30 | const rawBody = body && typeof body === 'object' ? JSON.stringify(body) : body.toString(); 31 | const finalHeaders = headers || {}; 32 | if (rawBody) finalHeaders['Content-Length'] = Buffer.byteLength(rawBody); 33 | if (typeof body === 'object' && !finalHeaders['Content-Type']) finalHeaders['Content-Type'] = 'application/json'; 34 | 35 | const httpResponse: HttpResponse = await new Promise((res) => { 36 | const req = https.request({ 37 | headers: finalHeaders, 38 | method, 39 | protocol: url.protocol, 40 | host: url.hostname, 41 | path: url.pathname, 42 | searchParams: url.searchParams, 43 | port: url.port, 44 | }, (response) => { 45 | let data = ''; 46 | response.on('data', (d) => { 47 | data += d; 48 | }); 49 | response.on('end', () => { 50 | try { 51 | data = JSON.parse(data); 52 | } catch (err) { 53 | // ignore JSON errors 54 | } 55 | 56 | if (!response.statusCode || response.statusCode < 200 || response.statusCode > 399) res({ error: data }); 57 | else res({ data }); 58 | }); 59 | }); 60 | 61 | req.once('error', (err) => res({ error: err })); 62 | 63 | if (rawBody) { 64 | req.end(rawBody); 65 | } 66 | }); 67 | 68 | return httpResponse; 69 | }; 70 | 71 | const queryAccounts = async (accountIds: string[]) => { 72 | const chunkedAccounts = accountIds.reduce((resArr: any[], id, i) => { 73 | const chunkIndex = Math.floor(i / 100); 74 | // eslint-disable-next-line no-param-reassign 75 | if (!resArr[chunkIndex]) resArr[chunkIndex] = []; 76 | resArr[chunkIndex].push(id); 77 | return resArr; 78 | }, []); 79 | 80 | const accounts = (await Promise.all(chunkedAccounts.map((accountChunk) => request('POST', 'https://graphql.epicgames.com/graphql', { 81 | operationName: 'query', 82 | variables: { 83 | accountIds: accountChunk, 84 | }, 85 | query: accountQuery, 86 | })))).map((a) => a.data.data.Account.accounts).flat(1); 87 | 88 | return accounts; 89 | }; 90 | 91 | export { request, queryAccounts }; 92 | -------------------------------------------------------------------------------- /src/ReplayReader.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable class-methods-use-this */ 2 | import { promises as fs } from 'fs'; 3 | import BinaryReader from './BinaryReader'; 4 | import { queryAccounts } from './Http'; 5 | import { 6 | ReaderConfig, 7 | Parseable, 8 | ReplayEncryption, 9 | ReplayMeta, 10 | ReplayHeader, 11 | ReplayPlayer, 12 | ReplayElimination, 13 | ReplayMatchStats, 14 | ReplayTeamMatchStats, 15 | Location, 16 | AdditionGfp, 17 | SafeZone, 18 | PlayerPositions, 19 | } from './structs'; 20 | 21 | const halfMapSize = 131328; 22 | 23 | class ReplayReader { 24 | private replay: Buffer; 25 | private reader: BinaryReader; 26 | private encryption: ReplayEncryption; 27 | private meta?: ReplayMeta; 28 | private header?: ReplayHeader; 29 | private eliminations: ReplayElimination[]; 30 | private matchStats?: ReplayMatchStats; 31 | private teamMatchStats?: ReplayTeamMatchStats; 32 | /** contains a list of additional game files that are required to watch the replay */ 33 | private additionGfps: AdditionGfp[]; 34 | private safeZones: SafeZone[] = []; 35 | private playerPositions: PlayerPositions = {}; 36 | private constructor(replay: Buffer) { 37 | this.replay = replay; 38 | this.reader = new BinaryReader(this.replay); 39 | 40 | this.encryption = { 41 | isEncrypted: undefined, 42 | encryptionKey: undefined, 43 | }; 44 | 45 | this.meta = undefined; 46 | this.header = undefined; 47 | this.eliminations = []; 48 | this.matchStats = undefined; 49 | this.teamMatchStats = undefined; 50 | this.additionGfps = []; 51 | } 52 | 53 | private parseMeta() { 54 | const magic = this.reader.readUInt32(); 55 | const fileVersion = this.reader.readUInt32(); 56 | const lengthInMs = this.reader.readUInt32(); 57 | const networkVersion = this.reader.readUInt32(); 58 | const changelist = this.reader.readUInt32(); 59 | const name = this.reader.readString(); 60 | const isLive = this.reader.readBool(); 61 | 62 | let timestamp; 63 | if (fileVersion >= 3) { 64 | const timeStampUint64 = this.reader.readUInt64(); 65 | timestamp = new Date(parseInt(((timeStampUint64 - BigInt('621355968000000000')) / BigInt('10000')).toString(), 10)); 66 | } 67 | 68 | let isCompressed; 69 | if (fileVersion >= 2) isCompressed = this.reader.readBool(); 70 | 71 | let isEncrypted = false; 72 | let encryptionKey = Buffer.from([]); 73 | if (fileVersion >= 6) { 74 | isEncrypted = this.reader.readBool(); 75 | const encryptionKeyLength = this.reader.readUInt32(); 76 | encryptionKey = Buffer.from(this.reader.readBytes(encryptionKeyLength)); 77 | } 78 | 79 | if (!isLive && isEncrypted && encryptionKey.length === 0) throw new Error('Cannot read encrypted replay without encryption key'); 80 | 81 | if (isLive && isEncrypted) throw new Error('Cannot read encrypted live replay'); 82 | 83 | if (isEncrypted) { 84 | this.encryption.isEncrypted = true; 85 | this.encryption.encryptionKey = encryptionKey; 86 | } 87 | 88 | this.meta = { 89 | magic, 90 | fileVersion, 91 | lengthInMs, 92 | networkVersion, 93 | changelist, 94 | name, 95 | isLive, 96 | timestamp, 97 | isCompressed, 98 | }; 99 | } 100 | 101 | private parseChunks() { 102 | const chunksStartOffset = this.reader.offset; 103 | while (this.reader.buffer.byteLength > this.reader.offset) { 104 | const chunkType = this.reader.readUInt32(); 105 | const chunkSize = this.reader.readInt32(); 106 | const startOffset = this.reader.offset; 107 | 108 | switch (chunkType) { 109 | case 0: 110 | if (!this.header) { 111 | this.parseHeader(); 112 | this.reader.goto(chunksStartOffset); 113 | } 114 | break; 115 | case 1: break; 116 | case 2: break; 117 | case 3: if (this.header) this.parseEvent(); break; 118 | } 119 | 120 | this.reader.goto(startOffset + chunkSize); 121 | } 122 | } 123 | 124 | private parseHeader() { 125 | const magic = this.reader.readUInt32(); 126 | const networkVersion = this.reader.readUInt32(); 127 | const networkChecksum = this.reader.readUInt32(); 128 | const engineNetworkVersion = this.reader.readUInt32(); 129 | const gameNetworkProtocol = this.reader.readUInt32(); 130 | 131 | let id; 132 | if (networkVersion > 12) id = this.reader.readId(); 133 | 134 | this.reader.skip(4); 135 | const patch = this.reader.readUInt16(); 136 | const changelist = this.reader.readUInt32(); 137 | const branch = this.reader.readString(); 138 | 139 | let fileVersionUE4; 140 | let fileVersionUE5; 141 | let packageVersionLicenseeUe; 142 | 143 | if (networkVersion >= 18) { 144 | fileVersionUE4 = this.reader.readUInt32(); 145 | fileVersionUE5 = this.reader.readUInt32(); 146 | packageVersionLicenseeUe = this.reader.readUInt32(); 147 | } 148 | 149 | const levelNamesAndTimes = this.reader.readObjectArray((r) => r.readString(), (r) => r.readUInt32()); 150 | const flags = this.reader.readUInt32(); 151 | const gameSpecificData = this.reader.readArray((r) => r.readString()); 152 | 153 | const major = parseInt((branch.match(/(?<=-)\d*/) as any[])[0], 10); 154 | const minor = parseInt((branch.match(/\d*$/) as any[])[0], 10); 155 | 156 | this.header = { 157 | magic, 158 | networkVersion, 159 | networkChecksum, 160 | engineNetworkVersion, 161 | gameNetworkProtocol, 162 | id, 163 | version: { 164 | branch, 165 | major, 166 | minor, 167 | changelist, 168 | patch, 169 | }, 170 | fileVersionUE4, 171 | fileVersionUE5, 172 | packageVersionLicenseeUe, 173 | levelNamesAndTimes, 174 | flags, 175 | gameSpecificData, 176 | }; 177 | } 178 | 179 | private parseEvent() { 180 | if (!this.reader) throw new Error('This is an internal method which is not supposed to be called manually. Please use .parse()'); 181 | if (!this.header) throw new Error('Replay is missing a header chunk'); 182 | 183 | this.reader.readString(); // eventId 184 | const group = this.reader.readString(); 185 | const metadata = this.reader.readString(); 186 | const startTime = this.reader.readUInt32(); 187 | this.reader.readUInt32(); // endTime 188 | const size = this.reader.readUInt32(); 189 | 190 | const decryptedEventBuffer = this.encryption.encryptionKey 191 | ? this.reader.decryptBuffer(size, this.encryption.encryptionKey) : this.reader.readBytes(size); 192 | 193 | const eventReader = new BinaryReader(decryptedEventBuffer); 194 | 195 | if (group === 'playerElim') this.parsePlayerElim(eventReader, startTime); 196 | else if (metadata === 'AthenaMatchStats') this.parseMatchStats(eventReader); 197 | else if (metadata === 'AthenaMatchTeamStats') this.parseTeamMatchStats(eventReader); 198 | else if (group === 'AdditionGFPEventGroup') this.parseAdditionGfp(eventReader); 199 | else if (group === 'ZoneUpdate') this.parseZoneUpdate(eventReader); 200 | else if (group === 'CharacterSample') this.parseCharacterSampleMeta(eventReader); 201 | } 202 | 203 | private parsePlayerElim(reader: BinaryReader, timestamp: number) { 204 | if (!this.reader || !this.header) throw new Error('This is an internal method which is not supposed to be called manually. Please use .parse()'); 205 | 206 | const version = reader.readInt32(); 207 | let eliminated: ReplayPlayer; 208 | let eliminator: ReplayPlayer; 209 | 210 | if (version >= 3) { 211 | reader.skip(1); 212 | let eliminatedPos; 213 | let eliminatorPos; 214 | 215 | if (version >= 6) { 216 | if (this.header.engineNetworkVersion < 23) { 217 | eliminatedPos = { 218 | rotation: reader.readVector4f(), 219 | position: reader.readVector3f(), 220 | scale: reader.readVector3f(), 221 | }; 222 | } else { 223 | eliminatedPos = { 224 | rotation: reader.readVector4d(), 225 | position: reader.readVector3d(), 226 | scale: reader.readVector3d(), 227 | }; 228 | } 229 | } 230 | 231 | if (this.header.engineNetworkVersion < 23) { 232 | eliminatorPos = { 233 | rotation: reader.readVector4f(), 234 | position: reader.readVector3f(), 235 | scale: reader.readVector3f(), 236 | }; 237 | } else { 238 | eliminatorPos = { 239 | rotation: reader.readVector4d(), 240 | position: reader.readVector3d(), 241 | scale: reader.readVector3d(), 242 | }; 243 | } 244 | 245 | if (this.header.version.major >= 9) { 246 | eliminated = this.parsePlayer(reader); 247 | eliminator = this.parsePlayer(reader); 248 | 249 | eliminated.location = eliminatedPos; 250 | eliminator.location = eliminatorPos; 251 | } else { 252 | eliminated = { 253 | name: reader.readString(), 254 | location: eliminatedPos, 255 | isBot: false, 256 | }; 257 | 258 | eliminator = { 259 | name: reader.readString(), 260 | location: eliminatorPos, 261 | isBot: false, 262 | }; 263 | } 264 | } else { 265 | if (this.header.version.major <= 4 && this.header.version.minor < 2) reader.skip(8); 266 | else if (this.header.version.major === 4 && this.header.version.minor <= 2) reader.skip(36); 267 | else reader.skip(41); 268 | 269 | eliminated = { name: undefined, id: reader.readString(), isBot: false }; 270 | eliminator = { name: undefined, id: reader.readString(), isBot: false }; 271 | } 272 | 273 | const gunType = reader.readByte().toString('hex'); 274 | const knocked = reader.readBool(); 275 | 276 | this.eliminations.push({ 277 | eliminated, 278 | eliminator, 279 | gunType, 280 | knocked, 281 | timestamp, 282 | }); 283 | } 284 | 285 | private parsePlayer(reader: BinaryReader) { 286 | const playerType = reader.readByte().toString('hex'); 287 | 288 | const player: ReplayPlayer = { name: undefined, id: undefined, isBot: true }; 289 | if (playerType === '03') { 290 | player.name = 'Bot'; 291 | } else if (playerType === '10') { 292 | player.name = reader.readString(); 293 | } else { 294 | reader.skip(1); 295 | player.id = reader.readId(); 296 | player.isBot = false; 297 | } 298 | 299 | return player; 300 | } 301 | 302 | private parseMatchStats(reader: BinaryReader) { 303 | reader.skip(4); 304 | const accuracy = reader.readFloat32(); 305 | const assists = reader.readUInt32(); 306 | const eliminations = reader.readUInt32(); 307 | const weaponDamage = reader.readUInt32(); 308 | const otherDamage = reader.readUInt32(); 309 | const revives = reader.readUInt32(); 310 | const damageTaken = reader.readUInt32(); 311 | const damageToStructures = reader.readUInt32(); 312 | const materialsGathered = reader.readUInt32(); 313 | const materialsUsed = reader.readUInt32(); 314 | const totalTraveled = Math.round(reader.readUInt32() / 100000); 315 | 316 | this.matchStats = { 317 | accuracy, 318 | assists, 319 | eliminations, 320 | weaponDamage, 321 | otherDamage, 322 | revives, 323 | damageTaken, 324 | damageToStructures, 325 | materialsGathered, 326 | materialsUsed, 327 | totalTraveled, 328 | }; 329 | } 330 | 331 | private parseTeamMatchStats(reader: BinaryReader) { 332 | reader.skip(4); 333 | const position = reader.readUInt32(); 334 | const totalPlayers = reader.readUInt32(); 335 | 336 | this.teamMatchStats = { 337 | position, 338 | totalPlayers, 339 | }; 340 | } 341 | 342 | private parseAdditionGfp(reader: BinaryReader) { 343 | if (!this.reader || !this.header) throw new Error('This is an internal method which is not supposed to be called manually. Please use .parse()'); 344 | 345 | const version = reader.readInt32(); 346 | const count = reader.readUInt32(); 347 | 348 | for (let i = 0; i < count; i += 1) { 349 | const moduleId = reader.readString(); 350 | 351 | if (version < 2) { 352 | this.additionGfps.push({ 353 | moduleId, 354 | moduleVersion: reader.readInt32(), 355 | }); 356 | } else { 357 | this.additionGfps.push({ 358 | moduleId, 359 | artifactId: reader.readString(), 360 | }); 361 | } 362 | } 363 | } 364 | 365 | private parseZoneUpdate(reader: BinaryReader) { 366 | if (!this.reader || !this.header) throw new Error('This is an internal method which is not supposed to be called manually. Please use .parse()'); 367 | 368 | reader.skip(4); // version 369 | 370 | this.safeZones.push({ 371 | ...(this.header.engineNetworkVersion < 23 ? reader.readVector3f() : reader.readVector3d()), 372 | radius: reader.readFloat32(), 373 | }); 374 | } 375 | 376 | private parseCharacterSampleMeta(reader: BinaryReader) { 377 | if (!this.reader || !this.header) throw new Error('This is an internal method which is not supposed to be called manually. Please use .parse()'); 378 | 379 | reader.skip(4); // version 380 | 381 | const playerCount = reader.readUInt32(); 382 | 383 | for (let i = 0; i < playerCount; i += 1) { 384 | const id = reader.readString(); 385 | 386 | let player = this.playerPositions[id]; 387 | 388 | if (!player) { 389 | player = {}; 390 | 391 | this.playerPositions[id] = player; 392 | } 393 | 394 | const sampleCount = reader.readUInt32(); 395 | 396 | for (let j = 0; j < sampleCount; j += 1) { 397 | const location = { 398 | ...this.readPosition(reader), 399 | movementStyle: reader.readByte().toString('hex'), 400 | }; 401 | 402 | const time = reader.readInt16(); 403 | 404 | player[time] = location; 405 | } 406 | } 407 | } 408 | 409 | private readPositionCompat(reader: BinaryReader) { 410 | if (!this.reader || !this.header) throw new Error('This is an internal method which is not supposed to be called manually. Please use .parse()'); 411 | 412 | const size = reader.readInt32(); 413 | const x = reader.readInt32(); 414 | const y = reader.readInt32(); 415 | const z = reader.readInt32(); 416 | 417 | return { 418 | x: x - (halfMapSize >> (16 - size)), 419 | y: y - (halfMapSize >> (16 - size)), 420 | z: z - (halfMapSize >> (16 - size)), 421 | }; 422 | } 423 | 424 | private readPosition(reader: BinaryReader) { 425 | if (!this.reader || !this.header) throw new Error('This is an internal method which is not supposed to be called manually. Please use .parse()'); 426 | 427 | if (this.header.version.major < 22) { 428 | return this.readPositionCompat(reader); 429 | } 430 | 431 | const size = reader.readInt32(); 432 | const componentBits = size & 63; 433 | const byteCount = (componentBits + 7) >> 3; 434 | 435 | const x = reader.readBytesToInt(byteCount); 436 | const y = reader.readBytesToInt(byteCount); 437 | const z = reader.readBytesToInt(byteCount); 438 | 439 | const signBit = 1 << (byteCount * 8 - 1); 440 | 441 | const xSign = (x ^ signBit) - signBit; 442 | const ySign = (y ^ signBit) - signBit; 443 | const zSign = (z ^ signBit) - signBit; 444 | 445 | return { 446 | x: xSign, 447 | y: ySign, 448 | z: zSign, 449 | }; 450 | } 451 | 452 | private async resolveDisplayNames() { 453 | const accountIds: string[] = []; 454 | [...this.eliminations.map((e) => e.eliminated), ...this.eliminations.map((e) => e.eliminator)].forEach((p) => { 455 | if (!p.isBot && p.id && !accountIds.includes(p.id)) accountIds.push(p.id); 456 | }); 457 | 458 | const accounts = await queryAccounts(accountIds); 459 | 460 | accounts.forEach((a) => { 461 | this.eliminations.forEach((e) => { 462 | if (e.eliminated.id === a.id) e.eliminated.name = a.displayName || a.externalAuths[0].externalDisplayName; 463 | if (e.eliminator.id === a.id) e.eliminator.name = a.displayName || a.externalAuths[0].externalDisplayName; 464 | }); 465 | }); 466 | } 467 | 468 | private toObject() { 469 | if (!this.meta || !this.header || !this.eliminations) { 470 | throw new Error('Cannot use .toObject() before replay was parsed'); 471 | } 472 | 473 | return { 474 | meta: this.meta, 475 | header: this.header, 476 | matchStats: this.matchStats, 477 | teamMatchStats: this.teamMatchStats, 478 | eliminations: this.eliminations, 479 | /** contains a list of additional game files that are required to watch the replay */ 480 | additionGfps: this.additionGfps, 481 | safeZones: this.safeZones, 482 | playerPositions: this.playerPositions, 483 | }; 484 | } 485 | 486 | public static async parse(replay: Parseable, config?: ReaderConfig) { 487 | const replayBuffer = Buffer.isBuffer(replay) ? replay : await fs.readFile(replay); 488 | 489 | const reader = new ReplayReader(replayBuffer); 490 | reader.parseMeta(); 491 | reader.parseChunks(); 492 | 493 | if (config?.resolveAccountNames) await reader.resolveDisplayNames(); 494 | 495 | return reader.toObject(); 496 | } 497 | } 498 | 499 | export default ReplayReader; 500 | -------------------------------------------------------------------------------- /src/structs.ts: -------------------------------------------------------------------------------- 1 | import BinaryReader from './BinaryReader'; 2 | 3 | export interface ParserParseFunction { 4 | // eslint-disable-next-line no-unused-vars 5 | (reader: BinaryReader): T, 6 | } 7 | 8 | export interface ReadObjectResult { 9 | [key: string]: U, 10 | } 11 | 12 | export interface HasToString { 13 | toString(): string, 14 | } 15 | 16 | export interface ReaderConfig { 17 | // eslint-disable-next-line no-unused-vars 18 | debug?: ((msg: string) => void); 19 | resolveAccountNames?: boolean; 20 | } 21 | 22 | export type Parseable = Buffer | string; 23 | 24 | export interface ReplayEncryption { 25 | isEncrypted?: boolean; 26 | encryptionKey?: Buffer; 27 | } 28 | 29 | export interface Vector3 { 30 | x: number; 31 | y: number; 32 | z: number; 33 | } 34 | 35 | export interface Vector4 { 36 | x: number; 37 | y: number; 38 | z: number; 39 | w: number; 40 | } 41 | 42 | export interface ReplayMeta { 43 | magic: number; 44 | fileVersion: number; 45 | lengthInMs: number; 46 | networkVersion: number; 47 | changelist: number; 48 | name: string; 49 | isLive: boolean; 50 | timestamp?: Date; 51 | isCompressed?: boolean; 52 | } 53 | 54 | export interface ReplayHeader { 55 | magic: number; 56 | networkVersion: number; 57 | networkChecksum: number; 58 | engineNetworkVersion: number; 59 | gameNetworkProtocol: number; 60 | id: string | undefined; 61 | version: { 62 | branch: string; 63 | major: number; 64 | minor: number; 65 | changelist: number; 66 | patch: number; 67 | }; 68 | fileVersionUE4?: number; 69 | fileVersionUE5?: number; 70 | packageVersionLicenseeUe?: number; 71 | levelNamesAndTimes: ReadObjectResult; 72 | flags: number; 73 | gameSpecificData: any[]; 74 | } 75 | 76 | export interface Location { 77 | rotation: Vector4, 78 | position: Vector3, 79 | scale: Vector3, 80 | } 81 | 82 | export interface ReplayPlayer { 83 | name?: string; 84 | id?: string; 85 | isBot: boolean; 86 | location?: Location; 87 | } 88 | 89 | export interface ReplayElimination { 90 | eliminated: ReplayPlayer; 91 | eliminator: ReplayPlayer; 92 | gunType: string; 93 | knocked: boolean; 94 | timestamp: number; 95 | } 96 | 97 | export interface ReplayMatchStats { 98 | accuracy: number; 99 | assists: number; 100 | eliminations: number; 101 | weaponDamage: number; 102 | otherDamage: number; 103 | revives: number; 104 | damageTaken: number; 105 | damageToStructures: number; 106 | materialsGathered: number; 107 | materialsUsed: number; 108 | totalTraveled: number; 109 | } 110 | 111 | export interface ReplayTeamMatchStats { 112 | position: number; 113 | totalPlayers: number; 114 | } 115 | 116 | export interface AdditionGfp { 117 | moduleId: string; 118 | moduleVersion?: number; 119 | artifactId?: string; 120 | } 121 | 122 | export interface SafeZone { 123 | x: number; 124 | y: number; 125 | z: number; 126 | radius: number; 127 | } 128 | 129 | export interface PlayerPosition { 130 | x: number; 131 | y: number; 132 | z: number; 133 | movementStyle: string; 134 | } 135 | 136 | export interface PlayerPositions { 137 | [id: string]: { 138 | [time: number]: PlayerPosition; 139 | }, 140 | } 141 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const assert = require('assert'); 3 | 4 | const { ReplayReader } = require('..'); 5 | 6 | const replays = fs.readdirSync('./replays').map((file) => file.split('.').slice(0, -1).join('.')); 7 | 8 | describe('Parsing a replay', () => { 9 | for (let replay of replays) { 10 | const binary = fs.readFileSync(`./replays/${replay}.replay`); 11 | const expectedResult = JSON.parse(fs.readFileSync(`./results/${replay}.json`, 'utf8')); 12 | 13 | it(`should parse ${replay} correctly`, async () => { 14 | const actualResult = JSON.parse(JSON.stringify(await ReplayReader.parse(binary))); 15 | 16 | assert.deepStrictEqual(actualResult, expectedResult) 17 | }); 18 | 19 | it(`should resolve account names from ${replay} correctly`, async () => { 20 | const actualResult = await ReplayReader.parse(`./replays/${replay}.replay`, { resolveAccountNames: true }); 21 | 22 | assert.equal(actualResult.eliminations.some((elimination) => elimination.eliminator.name || elimination.eliminated.name), true, 'Some eliminations have resolved names'); 23 | }); 24 | }; 25 | }); 26 | -------------------------------------------------------------------------------- /test/replays/client-11.00.replay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThisNils/node-replay-reader/ed4ee5111d0b56e456d3a3c876ee1ea849d2c527/test/replays/client-11.00.replay -------------------------------------------------------------------------------- /test/replays/client-19.00.replay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThisNils/node-replay-reader/ed4ee5111d0b56e456d3a3c876ee1ea849d2c527/test/replays/client-19.00.replay -------------------------------------------------------------------------------- /test/replays/client-22.00.replay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThisNils/node-replay-reader/ed4ee5111d0b56e456d3a3c876ee1ea849d2c527/test/replays/client-22.00.replay -------------------------------------------------------------------------------- /test/replays/client-8.11.replay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThisNils/node-replay-reader/ed4ee5111d0b56e456d3a3c876ee1ea849d2c527/test/replays/client-8.11.replay -------------------------------------------------------------------------------- /test/replays/server-21.40.replay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThisNils/node-replay-reader/ed4ee5111d0b56e456d3a3c876ee1ea849d2c527/test/replays/server-21.40.replay -------------------------------------------------------------------------------- /test/replays/server-22.10.replay: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThisNils/node-replay-reader/ed4ee5111d0b56e456d3a3c876ee1ea849d2c527/test/replays/server-22.10.replay -------------------------------------------------------------------------------- /test/results/client-11.00.json: -------------------------------------------------------------------------------- 1 | { 2 | "meta": { 3 | "magic": 480436863, 4 | "fileVersion": 5, 5 | "lengthInMs": 292697, 6 | "networkVersion": 2, 7 | "changelist": 9603417, 8 | "name": "Ungespeicherte Wiederholung", 9 | "isLive": false, 10 | "timestamp": "2019-10-21T21:39:51.727Z", 11 | "isCompressed": true 12 | }, 13 | "header": { 14 | "magic": 754295101, 15 | "networkVersion": 14, 16 | "networkChecksum": 1348245422, 17 | "engineNetworkVersion": 13, 18 | "gameNetworkProtocol": 0, 19 | "id": "9e6c450d47dfc747a38509ee6ca7c778", 20 | "version": { 21 | "branch": "++Fortnite+Release-11.00", 22 | "major": 11, 23 | "minor": 0, 24 | "changelist": 9603448, 25 | "patch": 0 26 | }, 27 | "levelNamesAndTimes": { 28 | "/Game/Athena/Apollo/Maps/Apollo_Terrain": 0 29 | }, 30 | "flags": 3, 31 | "gameSpecificData": [ 32 | "SubGame=Athena" 33 | ] 34 | }, 35 | "matchStats": { 36 | "accuracy": 0.5323740839958191, 37 | "assists": 0, 38 | "eliminations": 6, 39 | "weaponDamage": 963, 40 | "otherDamage": 113, 41 | "revives": 0, 42 | "damageTaken": 162, 43 | "damageToStructures": 1271, 44 | "materialsGathered": 360, 45 | "materialsUsed": 240, 46 | "totalTraveled": 0 47 | }, 48 | "teamMatchStats": { 49 | "position": 36, 50 | "totalPlayers": 99 51 | }, 52 | "eliminations": [ 53 | { 54 | "eliminated": { 55 | "id": "c17de387a3cb4ac3876c5ae374679c83", 56 | "isBot": false, 57 | "location": { 58 | "rotation": { 59 | "x": 0, 60 | "y": 0, 61 | "z": -0.9238795638084412, 62 | "w": 0.38268327713012695 63 | }, 64 | "position": { 65 | "x": -67067.1953125, 66 | "y": -39750.34765625, 67 | "z": 70220.796875 68 | }, 69 | "scale": { 70 | "x": 1, 71 | "y": 1, 72 | "z": 1 73 | } 74 | } 75 | }, 76 | "eliminator": { 77 | "id": "60f4a65831e3486db33feda0d0c758ab", 78 | "isBot": false, 79 | "location": { 80 | "rotation": { 81 | "x": 0, 82 | "y": 0, 83 | "z": 0.06132078915834427, 84 | "w": 0.9981181025505066 85 | }, 86 | "position": { 87 | "x": -111831.9140625, 88 | "y": -56906.44921875, 89 | "z": 66957.375 90 | }, 91 | "scale": { 92 | "x": 1, 93 | "y": 1, 94 | "z": 1 95 | } 96 | } 97 | }, 98 | "gunType": "03", 99 | "knocked": true, 100 | "timestamp": 98147 101 | }, 102 | { 103 | "eliminated": { 104 | "name": "Bot", 105 | "isBot": true, 106 | "location": { 107 | "rotation": { 108 | "x": 0, 109 | "y": 0, 110 | "z": 0, 111 | "w": 1 112 | }, 113 | "position": { 114 | "x": 0, 115 | "y": 0, 116 | "z": 0 117 | }, 118 | "scale": { 119 | "x": 1, 120 | "y": 1, 121 | "z": 1 122 | } 123 | } 124 | }, 125 | "eliminator": { 126 | "id": "54921192bba341baa95369580ed17069", 127 | "isBot": false, 128 | "location": { 129 | "rotation": { 130 | "x": 0, 131 | "y": 0, 132 | "z": 0, 133 | "w": 1 134 | }, 135 | "position": { 136 | "x": 0, 137 | "y": 0, 138 | "z": 0 139 | }, 140 | "scale": { 141 | "x": 1, 142 | "y": 1, 143 | "z": 1 144 | } 145 | } 146 | }, 147 | "gunType": "04", 148 | "knocked": true, 149 | "timestamp": 113611 150 | }, 151 | { 152 | "eliminated": { 153 | "name": "Bot", 154 | "isBot": true, 155 | "location": { 156 | "rotation": { 157 | "x": 0, 158 | "y": 0, 159 | "z": 0, 160 | "w": 1 161 | }, 162 | "position": { 163 | "x": 0, 164 | "y": 0, 165 | "z": 0 166 | }, 167 | "scale": { 168 | "x": 1, 169 | "y": 1, 170 | "z": 1 171 | } 172 | } 173 | }, 174 | "eliminator": { 175 | "id": "0eddf3a0f1634cbda775d968b4911efd", 176 | "isBot": false, 177 | "location": { 178 | "rotation": { 179 | "x": 0, 180 | "y": 0, 181 | "z": 0, 182 | "w": 1 183 | }, 184 | "position": { 185 | "x": 0, 186 | "y": 0, 187 | "z": 0 188 | }, 189 | "scale": { 190 | "x": 1, 191 | "y": 1, 192 | "z": 1 193 | } 194 | } 195 | }, 196 | "gunType": "08", 197 | "knocked": true, 198 | "timestamp": 115555 199 | }, 200 | { 201 | "eliminated": { 202 | "id": "60f4a65831e3486db33feda0d0c758ab", 203 | "isBot": false, 204 | "location": { 205 | "rotation": { 206 | "x": 0, 207 | "y": 0, 208 | "z": 0, 209 | "w": 1 210 | }, 211 | "position": { 212 | "x": 0, 213 | "y": 0, 214 | "z": 0 215 | }, 216 | "scale": { 217 | "x": 1, 218 | "y": 1, 219 | "z": 1 220 | } 221 | } 222 | }, 223 | "eliminator": { 224 | "id": "8ea40f328fd443cba7b3b1eb679d3e28", 225 | "isBot": false, 226 | "location": { 227 | "rotation": { 228 | "x": 0, 229 | "y": 0, 230 | "z": 0, 231 | "w": 1 232 | }, 233 | "position": { 234 | "x": 0, 235 | "y": 0, 236 | "z": 0 237 | }, 238 | "scale": { 239 | "x": 1, 240 | "y": 1, 241 | "z": 1 242 | } 243 | } 244 | }, 245 | "gunType": "03", 246 | "knocked": true, 247 | "timestamp": 117534 248 | }, 249 | { 250 | "eliminated": { 251 | "id": "c17de387a3cb4ac3876c5ae374679c83", 252 | "isBot": false, 253 | "location": { 254 | "rotation": { 255 | "x": 0, 256 | "y": 0, 257 | "z": 0, 258 | "w": 1 259 | }, 260 | "position": { 261 | "x": 0, 262 | "y": 0, 263 | "z": 0 264 | }, 265 | "scale": { 266 | "x": 1, 267 | "y": 1, 268 | "z": 1 269 | } 270 | } 271 | }, 272 | "eliminator": { 273 | "id": "60f4a65831e3486db33feda0d0c758ab", 274 | "isBot": false, 275 | "location": { 276 | "rotation": { 277 | "x": 0, 278 | "y": 0, 279 | "z": 0, 280 | "w": 1 281 | }, 282 | "position": { 283 | "x": 0, 284 | "y": 0, 285 | "z": 0 286 | }, 287 | "scale": { 288 | "x": 1, 289 | "y": 1, 290 | "z": 1 291 | } 292 | } 293 | }, 294 | "gunType": "03", 295 | "knocked": false, 296 | "timestamp": 118235 297 | }, 298 | { 299 | "eliminated": { 300 | "id": "8ea40f328fd443cba7b3b1eb679d3e28", 301 | "isBot": false, 302 | "location": { 303 | "rotation": { 304 | "x": 0, 305 | "y": 0, 306 | "z": 0, 307 | "w": 1 308 | }, 309 | "position": { 310 | "x": 0, 311 | "y": 0, 312 | "z": 0 313 | }, 314 | "scale": { 315 | "x": 1, 316 | "y": 1, 317 | "z": 1 318 | } 319 | } 320 | }, 321 | "eliminator": { 322 | "id": "27d0d3c702104806b126be901d668c20", 323 | "isBot": false, 324 | "location": { 325 | "rotation": { 326 | "x": 0, 327 | "y": 0, 328 | "z": 0, 329 | "w": 1 330 | }, 331 | "position": { 332 | "x": 0, 333 | "y": 0, 334 | "z": 0 335 | }, 336 | "scale": { 337 | "x": 1, 338 | "y": 1, 339 | "z": 1 340 | } 341 | } 342 | }, 343 | "gunType": "30", 344 | "knocked": false, 345 | "timestamp": 118367 346 | }, 347 | { 348 | "eliminated": { 349 | "name": "Bot", 350 | "isBot": true, 351 | "location": { 352 | "rotation": { 353 | "x": 0, 354 | "y": 0, 355 | "z": 0, 356 | "w": 1 357 | }, 358 | "position": { 359 | "x": 0, 360 | "y": 0, 361 | "z": 0 362 | }, 363 | "scale": { 364 | "x": 1, 365 | "y": 1, 366 | "z": 1 367 | } 368 | } 369 | }, 370 | "eliminator": { 371 | "id": "54921192bba341baa95369580ed17069", 372 | "isBot": false, 373 | "location": { 374 | "rotation": { 375 | "x": 0, 376 | "y": 0, 377 | "z": 0, 378 | "w": 1 379 | }, 380 | "position": { 381 | "x": 0, 382 | "y": 0, 383 | "z": 0 384 | }, 385 | "scale": { 386 | "x": 1, 387 | "y": 1, 388 | "z": 1 389 | } 390 | } 391 | }, 392 | "gunType": "04", 393 | "knocked": true, 394 | "timestamp": 119068 395 | }, 396 | { 397 | "eliminated": { 398 | "id": "6774a4d75ff144529f0a9350d99ec7d3", 399 | "isBot": false, 400 | "location": { 401 | "rotation": { 402 | "x": 0, 403 | "y": 0, 404 | "z": 0, 405 | "w": 1 406 | }, 407 | "position": { 408 | "x": 0, 409 | "y": 0, 410 | "z": 0 411 | }, 412 | "scale": { 413 | "x": 1, 414 | "y": 1, 415 | "z": 1 416 | } 417 | } 418 | }, 419 | "eliminator": { 420 | "id": "9d361cb8602c4671912c4c1c8ba47595", 421 | "isBot": false, 422 | "location": { 423 | "rotation": { 424 | "x": 0, 425 | "y": 0, 426 | "z": 0, 427 | "w": 1 428 | }, 429 | "position": { 430 | "x": 0, 431 | "y": 0, 432 | "z": 0 433 | }, 434 | "scale": { 435 | "x": 1, 436 | "y": 1, 437 | "z": 1 438 | } 439 | } 440 | }, 441 | "gunType": "04", 442 | "knocked": true, 443 | "timestamp": 119371 444 | }, 445 | { 446 | "eliminated": { 447 | "name": "Bot", 448 | "isBot": true, 449 | "location": { 450 | "rotation": { 451 | "x": 0, 452 | "y": 0, 453 | "z": 0.8986771106719971, 454 | "w": 0.4386107921600342 455 | }, 456 | "position": { 457 | "x": 33195.66796875, 458 | "y": -82541.828125, 459 | "z": -3395.849853515625 460 | }, 461 | "scale": { 462 | "x": 1, 463 | "y": 1, 464 | "z": 1 465 | } 466 | } 467 | }, 468 | "eliminator": { 469 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 470 | "isBot": false, 471 | "location": { 472 | "rotation": { 473 | "x": 0, 474 | "y": 0, 475 | "z": 0.5811576843261719, 476 | "w": 0.8137909770011902 477 | }, 478 | "position": { 479 | "x": 33613.0703125, 480 | "y": -82234.8515625, 481 | "z": -2665.95947265625 482 | }, 483 | "scale": { 484 | "x": 1, 485 | "y": 1, 486 | "z": 1 487 | } 488 | } 489 | }, 490 | "gunType": "04", 491 | "knocked": true, 492 | "timestamp": 120537 493 | }, 494 | { 495 | "eliminated": { 496 | "id": "356d6cefaa2f440aa39e0c2e9bc17725", 497 | "isBot": false, 498 | "location": { 499 | "rotation": { 500 | "x": 0, 501 | "y": 0, 502 | "z": 0, 503 | "w": 1 504 | }, 505 | "position": { 506 | "x": 0, 507 | "y": 0, 508 | "z": 0 509 | }, 510 | "scale": { 511 | "x": 1, 512 | "y": 1, 513 | "z": 1 514 | } 515 | } 516 | }, 517 | "eliminator": { 518 | "id": "9d361cb8602c4671912c4c1c8ba47595", 519 | "isBot": false, 520 | "location": { 521 | "rotation": { 522 | "x": 0, 523 | "y": 0, 524 | "z": 0, 525 | "w": 1 526 | }, 527 | "position": { 528 | "x": 0, 529 | "y": 0, 530 | "z": 0 531 | }, 532 | "scale": { 533 | "x": 1, 534 | "y": 1, 535 | "z": 1 536 | } 537 | } 538 | }, 539 | "gunType": "04", 540 | "knocked": true, 541 | "timestamp": 124732 542 | }, 543 | { 544 | "eliminated": { 545 | "id": "356d6cefaa2f440aa39e0c2e9bc17725", 546 | "isBot": false, 547 | "location": { 548 | "rotation": { 549 | "x": 0, 550 | "y": 0, 551 | "z": 0, 552 | "w": 1 553 | }, 554 | "position": { 555 | "x": 0, 556 | "y": 0, 557 | "z": 0 558 | }, 559 | "scale": { 560 | "x": 1, 561 | "y": 1, 562 | "z": 1 563 | } 564 | } 565 | }, 566 | "eliminator": { 567 | "id": "9d361cb8602c4671912c4c1c8ba47595", 568 | "isBot": false, 569 | "location": { 570 | "rotation": { 571 | "x": 0, 572 | "y": 0, 573 | "z": 0, 574 | "w": 1 575 | }, 576 | "position": { 577 | "x": 0, 578 | "y": 0, 579 | "z": 0 580 | }, 581 | "scale": { 582 | "x": 1, 583 | "y": 1, 584 | "z": 1 585 | } 586 | } 587 | }, 588 | "gunType": "03", 589 | "knocked": false, 590 | "timestamp": 126398 591 | }, 592 | { 593 | "eliminated": { 594 | "name": "Bot", 595 | "isBot": true, 596 | "location": { 597 | "rotation": { 598 | "x": 0, 599 | "y": 0, 600 | "z": 0, 601 | "w": 1 602 | }, 603 | "position": { 604 | "x": 0, 605 | "y": 0, 606 | "z": 0 607 | }, 608 | "scale": { 609 | "x": 1, 610 | "y": 1, 611 | "z": 1 612 | } 613 | } 614 | }, 615 | "eliminator": { 616 | "name": "Bot", 617 | "isBot": true, 618 | "location": { 619 | "rotation": { 620 | "x": 0, 621 | "y": 0, 622 | "z": 0, 623 | "w": 1 624 | }, 625 | "position": { 626 | "x": 0, 627 | "y": 0, 628 | "z": 0 629 | }, 630 | "scale": { 631 | "x": 1, 632 | "y": 1, 633 | "z": 1 634 | } 635 | } 636 | }, 637 | "gunType": "04", 638 | "knocked": true, 639 | "timestamp": 126803 640 | }, 641 | { 642 | "eliminated": { 643 | "name": "Bot", 644 | "isBot": true, 645 | "location": { 646 | "rotation": { 647 | "x": 0, 648 | "y": 0, 649 | "z": -0.9783168435096741, 650 | "w": 0.20711374282836914 651 | }, 652 | "position": { 653 | "x": 32642.158203125, 654 | "y": -82708.3046875, 655 | "z": -3395.849853515625 656 | }, 657 | "scale": { 658 | "x": 1, 659 | "y": 1, 660 | "z": 1 661 | } 662 | } 663 | }, 664 | "eliminator": { 665 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 666 | "isBot": false, 667 | "location": { 668 | "rotation": { 669 | "x": 0, 670 | "y": 0, 671 | "z": 0.6037673950195312, 672 | "w": 0.7971605062484741 673 | }, 674 | "position": { 675 | "x": 33649.1875, 676 | "y": -82202.4765625, 677 | "z": -2987.89453125 678 | }, 679 | "scale": { 680 | "x": 1, 681 | "y": 1, 682 | "z": 1 683 | } 684 | } 685 | }, 686 | "gunType": "04", 687 | "knocked": false, 688 | "timestamp": 127240 689 | }, 690 | { 691 | "eliminated": { 692 | "name": "Bot", 693 | "isBot": true, 694 | "location": { 695 | "rotation": { 696 | "x": 0, 697 | "y": 0, 698 | "z": 0, 699 | "w": 1 700 | }, 701 | "position": { 702 | "x": 0, 703 | "y": 0, 704 | "z": 0 705 | }, 706 | "scale": { 707 | "x": 1, 708 | "y": 1, 709 | "z": 1 710 | } 711 | } 712 | }, 713 | "eliminator": { 714 | "id": "0eddf3a0f1634cbda775d968b4911efd", 715 | "isBot": false, 716 | "location": { 717 | "rotation": { 718 | "x": 0, 719 | "y": 0, 720 | "z": 0, 721 | "w": 1 722 | }, 723 | "position": { 724 | "x": 0, 725 | "y": 0, 726 | "z": 0 727 | }, 728 | "scale": { 729 | "x": 1, 730 | "y": 1, 731 | "z": 1 732 | } 733 | } 734 | }, 735 | "gunType": "08", 736 | "knocked": false, 737 | "timestamp": 127316 738 | }, 739 | { 740 | "eliminated": { 741 | "id": "6774a4d75ff144529f0a9350d99ec7d3", 742 | "isBot": false, 743 | "location": { 744 | "rotation": { 745 | "x": 0, 746 | "y": 0, 747 | "z": 0, 748 | "w": 1 749 | }, 750 | "position": { 751 | "x": 0, 752 | "y": 0, 753 | "z": 0 754 | }, 755 | "scale": { 756 | "x": 1, 757 | "y": 1, 758 | "z": 1 759 | } 760 | } 761 | }, 762 | "eliminator": { 763 | "id": "9d361cb8602c4671912c4c1c8ba47595", 764 | "isBot": false, 765 | "location": { 766 | "rotation": { 767 | "x": 0, 768 | "y": 0, 769 | "z": 0, 770 | "w": 1 771 | }, 772 | "position": { 773 | "x": 0, 774 | "y": 0, 775 | "z": 0 776 | }, 777 | "scale": { 778 | "x": 1, 779 | "y": 1, 780 | "z": 1 781 | } 782 | } 783 | }, 784 | "gunType": "03", 785 | "knocked": false, 786 | "timestamp": 127754 787 | }, 788 | { 789 | "eliminated": { 790 | "name": "Bot", 791 | "isBot": true, 792 | "location": { 793 | "rotation": { 794 | "x": 0, 795 | "y": 0, 796 | "z": 0, 797 | "w": 1 798 | }, 799 | "position": { 800 | "x": 0, 801 | "y": 0, 802 | "z": 0 803 | }, 804 | "scale": { 805 | "x": 1, 806 | "y": 1, 807 | "z": 1 808 | } 809 | } 810 | }, 811 | "eliminator": { 812 | "id": "54921192bba341baa95369580ed17069", 813 | "isBot": false, 814 | "location": { 815 | "rotation": { 816 | "x": 0, 817 | "y": 0, 818 | "z": 0, 819 | "w": 1 820 | }, 821 | "position": { 822 | "x": 0, 823 | "y": 0, 824 | "z": 0 825 | }, 826 | "scale": { 827 | "x": 1, 828 | "y": 1, 829 | "z": 1 830 | } 831 | } 832 | }, 833 | "gunType": "02", 834 | "knocked": false, 835 | "timestamp": 130435 836 | }, 837 | { 838 | "eliminated": { 839 | "name": "Bot", 840 | "isBot": true, 841 | "location": { 842 | "rotation": { 843 | "x": 0, 844 | "y": 0, 845 | "z": 0, 846 | "w": 1 847 | }, 848 | "position": { 849 | "x": 0, 850 | "y": 0, 851 | "z": 0 852 | }, 853 | "scale": { 854 | "x": 1, 855 | "y": 1, 856 | "z": 1 857 | } 858 | } 859 | }, 860 | "eliminator": { 861 | "id": "54921192bba341baa95369580ed17069", 862 | "isBot": false, 863 | "location": { 864 | "rotation": { 865 | "x": 0, 866 | "y": 0, 867 | "z": 0, 868 | "w": 1 869 | }, 870 | "position": { 871 | "x": 0, 872 | "y": 0, 873 | "z": 0 874 | }, 875 | "scale": { 876 | "x": 1, 877 | "y": 1, 878 | "z": 1 879 | } 880 | } 881 | }, 882 | "gunType": "04", 883 | "knocked": false, 884 | "timestamp": 132070 885 | }, 886 | { 887 | "eliminated": { 888 | "name": "Bot", 889 | "isBot": true, 890 | "location": { 891 | "rotation": { 892 | "x": 0, 893 | "y": 0, 894 | "z": 0, 895 | "w": 1 896 | }, 897 | "position": { 898 | "x": 0, 899 | "y": 0, 900 | "z": 0 901 | }, 902 | "scale": { 903 | "x": 1, 904 | "y": 1, 905 | "z": 1 906 | } 907 | } 908 | }, 909 | "eliminator": { 910 | "name": "Bot", 911 | "isBot": true, 912 | "location": { 913 | "rotation": { 914 | "x": 0, 915 | "y": 0, 916 | "z": 0, 917 | "w": 1 918 | }, 919 | "position": { 920 | "x": 0, 921 | "y": 0, 922 | "z": 0 923 | }, 924 | "scale": { 925 | "x": 1, 926 | "y": 1, 927 | "z": 1 928 | } 929 | } 930 | }, 931 | "gunType": "03", 932 | "knocked": true, 933 | "timestamp": 132611 934 | }, 935 | { 936 | "eliminated": { 937 | "id": "60f4a65831e3486db33feda0d0c758ab", 938 | "isBot": false, 939 | "location": { 940 | "rotation": { 941 | "x": 0, 942 | "y": 0, 943 | "z": 0, 944 | "w": 1 945 | }, 946 | "position": { 947 | "x": 0, 948 | "y": 0, 949 | "z": 0 950 | }, 951 | "scale": { 952 | "x": 1, 953 | "y": 1, 954 | "z": 1 955 | } 956 | } 957 | }, 958 | "eliminator": { 959 | "id": "27d0d3c702104806b126be901d668c20", 960 | "isBot": false, 961 | "location": { 962 | "rotation": { 963 | "x": 0, 964 | "y": 0, 965 | "z": 0, 966 | "w": 1 967 | }, 968 | "position": { 969 | "x": 0, 970 | "y": 0, 971 | "z": 0 972 | }, 973 | "scale": { 974 | "x": 1, 975 | "y": 1, 976 | "z": 1 977 | } 978 | } 979 | }, 980 | "gunType": "03", 981 | "knocked": false, 982 | "timestamp": 137619 983 | }, 984 | { 985 | "eliminated": { 986 | "name": "Bot", 987 | "isBot": true, 988 | "location": { 989 | "rotation": { 990 | "x": 0, 991 | "y": 0, 992 | "z": 0, 993 | "w": 1 994 | }, 995 | "position": { 996 | "x": 0, 997 | "y": 0, 998 | "z": 0 999 | }, 1000 | "scale": { 1001 | "x": 1, 1002 | "y": 1, 1003 | "z": 1 1004 | } 1005 | } 1006 | }, 1007 | "eliminator": { 1008 | "id": "09751afc65214881a20aa0c25060cdce", 1009 | "isBot": false, 1010 | "location": { 1011 | "rotation": { 1012 | "x": 0, 1013 | "y": 0, 1014 | "z": 0, 1015 | "w": 1 1016 | }, 1017 | "position": { 1018 | "x": 0, 1019 | "y": 0, 1020 | "z": 0 1021 | }, 1022 | "scale": { 1023 | "x": 1, 1024 | "y": 1, 1025 | "z": 1 1026 | } 1027 | } 1028 | }, 1029 | "gunType": "04", 1030 | "knocked": true, 1031 | "timestamp": 138752 1032 | }, 1033 | { 1034 | "eliminated": { 1035 | "name": "Bot", 1036 | "isBot": true, 1037 | "location": { 1038 | "rotation": { 1039 | "x": 0, 1040 | "y": 0, 1041 | "z": 0, 1042 | "w": 1 1043 | }, 1044 | "position": { 1045 | "x": 0, 1046 | "y": 0, 1047 | "z": 0 1048 | }, 1049 | "scale": { 1050 | "x": 1, 1051 | "y": 1, 1052 | "z": 1 1053 | } 1054 | } 1055 | }, 1056 | "eliminator": { 1057 | "id": "54921192bba341baa95369580ed17069", 1058 | "isBot": false, 1059 | "location": { 1060 | "rotation": { 1061 | "x": 0, 1062 | "y": 0, 1063 | "z": 0, 1064 | "w": 1 1065 | }, 1066 | "position": { 1067 | "x": 0, 1068 | "y": 0, 1069 | "z": 0 1070 | }, 1071 | "scale": { 1072 | "x": 1, 1073 | "y": 1, 1074 | "z": 1 1075 | } 1076 | } 1077 | }, 1078 | "gunType": "02", 1079 | "knocked": false, 1080 | "timestamp": 139121 1081 | }, 1082 | { 1083 | "eliminated": { 1084 | "name": "Bot", 1085 | "isBot": true, 1086 | "location": { 1087 | "rotation": { 1088 | "x": 0, 1089 | "y": 0, 1090 | "z": 0, 1091 | "w": 1 1092 | }, 1093 | "position": { 1094 | "x": 0, 1095 | "y": 0, 1096 | "z": 0 1097 | }, 1098 | "scale": { 1099 | "x": 1, 1100 | "y": 1, 1101 | "z": 1 1102 | } 1103 | } 1104 | }, 1105 | "eliminator": { 1106 | "id": "09751afc65214881a20aa0c25060cdce", 1107 | "isBot": false, 1108 | "location": { 1109 | "rotation": { 1110 | "x": 0, 1111 | "y": 0, 1112 | "z": 0, 1113 | "w": 1 1114 | }, 1115 | "position": { 1116 | "x": 0, 1117 | "y": 0, 1118 | "z": 0 1119 | }, 1120 | "scale": { 1121 | "x": 1, 1122 | "y": 1, 1123 | "z": 1 1124 | } 1125 | } 1126 | }, 1127 | "gunType": "04", 1128 | "knocked": false, 1129 | "timestamp": 143669 1130 | }, 1131 | { 1132 | "eliminated": { 1133 | "name": "Bot", 1134 | "isBot": true, 1135 | "location": { 1136 | "rotation": { 1137 | "x": 0, 1138 | "y": 0, 1139 | "z": 0, 1140 | "w": 1 1141 | }, 1142 | "position": { 1143 | "x": 0, 1144 | "y": 0, 1145 | "z": 0 1146 | }, 1147 | "scale": { 1148 | "x": 1, 1149 | "y": 1, 1150 | "z": 1 1151 | } 1152 | } 1153 | }, 1154 | "eliminator": { 1155 | "id": "ed6d424c9efe444f9e45c814b0d5013e", 1156 | "isBot": false, 1157 | "location": { 1158 | "rotation": { 1159 | "x": 0, 1160 | "y": 0, 1161 | "z": 0, 1162 | "w": 1 1163 | }, 1164 | "position": { 1165 | "x": 0, 1166 | "y": 0, 1167 | "z": 0 1168 | }, 1169 | "scale": { 1170 | "x": 1, 1171 | "y": 1, 1172 | "z": 1 1173 | } 1174 | } 1175 | }, 1176 | "gunType": "03", 1177 | "knocked": true, 1178 | "timestamp": 143732 1179 | }, 1180 | { 1181 | "eliminated": { 1182 | "name": "Bot", 1183 | "isBot": true, 1184 | "location": { 1185 | "rotation": { 1186 | "x": 0, 1187 | "y": 0, 1188 | "z": 0, 1189 | "w": 1 1190 | }, 1191 | "position": { 1192 | "x": 0, 1193 | "y": 0, 1194 | "z": 0 1195 | }, 1196 | "scale": { 1197 | "x": 1, 1198 | "y": 1, 1199 | "z": 1 1200 | } 1201 | } 1202 | }, 1203 | "eliminator": { 1204 | "id": "0eddf3a0f1634cbda775d968b4911efd", 1205 | "isBot": false, 1206 | "location": { 1207 | "rotation": { 1208 | "x": 0, 1209 | "y": 0, 1210 | "z": 0, 1211 | "w": 1 1212 | }, 1213 | "position": { 1214 | "x": 0, 1215 | "y": 0, 1216 | "z": 0 1217 | }, 1218 | "scale": { 1219 | "x": 1, 1220 | "y": 1, 1221 | "z": 1 1222 | } 1223 | } 1224 | }, 1225 | "gunType": "08", 1226 | "knocked": false, 1227 | "timestamp": 147134 1228 | }, 1229 | { 1230 | "eliminated": { 1231 | "name": "Bot", 1232 | "isBot": true, 1233 | "location": { 1234 | "rotation": { 1235 | "x": 0, 1236 | "y": 0, 1237 | "z": 0, 1238 | "w": 1 1239 | }, 1240 | "position": { 1241 | "x": 0, 1242 | "y": 0, 1243 | "z": 0 1244 | }, 1245 | "scale": { 1246 | "x": 1, 1247 | "y": 1, 1248 | "z": 1 1249 | } 1250 | } 1251 | }, 1252 | "eliminator": { 1253 | "id": "5c684e594c6740ea9d180403e34e7fd1", 1254 | "isBot": false, 1255 | "location": { 1256 | "rotation": { 1257 | "x": 0, 1258 | "y": 0, 1259 | "z": 0, 1260 | "w": 1 1261 | }, 1262 | "position": { 1263 | "x": 0, 1264 | "y": 0, 1265 | "z": 0 1266 | }, 1267 | "scale": { 1268 | "x": 1, 1269 | "y": 1, 1270 | "z": 1 1271 | } 1272 | } 1273 | }, 1274 | "gunType": "04", 1275 | "knocked": true, 1276 | "timestamp": 147384 1277 | }, 1278 | { 1279 | "eliminated": { 1280 | "name": "Bot", 1281 | "isBot": true, 1282 | "location": { 1283 | "rotation": { 1284 | "x": 0, 1285 | "y": 0, 1286 | "z": 0, 1287 | "w": 1 1288 | }, 1289 | "position": { 1290 | "x": 0, 1291 | "y": 0, 1292 | "z": 0 1293 | }, 1294 | "scale": { 1295 | "x": 1, 1296 | "y": 1, 1297 | "z": 1 1298 | } 1299 | } 1300 | }, 1301 | "eliminator": { 1302 | "id": "ed6d424c9efe444f9e45c814b0d5013e", 1303 | "isBot": false, 1304 | "location": { 1305 | "rotation": { 1306 | "x": 0, 1307 | "y": 0, 1308 | "z": 0, 1309 | "w": 1 1310 | }, 1311 | "position": { 1312 | "x": 0, 1313 | "y": 0, 1314 | "z": 0 1315 | }, 1316 | "scale": { 1317 | "x": 1, 1318 | "y": 1, 1319 | "z": 1 1320 | } 1321 | } 1322 | }, 1323 | "gunType": "03", 1324 | "knocked": false, 1325 | "timestamp": 150269 1326 | }, 1327 | { 1328 | "eliminated": { 1329 | "name": "Bot", 1330 | "isBot": true, 1331 | "location": { 1332 | "rotation": { 1333 | "x": 0, 1334 | "y": 0, 1335 | "z": 0, 1336 | "w": 1 1337 | }, 1338 | "position": { 1339 | "x": 0, 1340 | "y": 0, 1341 | "z": 0 1342 | }, 1343 | "scale": { 1344 | "x": 1, 1345 | "y": 1, 1346 | "z": 1 1347 | } 1348 | } 1349 | }, 1350 | "eliminator": { 1351 | "name": "Bot", 1352 | "isBot": true, 1353 | "location": { 1354 | "rotation": { 1355 | "x": 0, 1356 | "y": 0, 1357 | "z": 0, 1358 | "w": 1 1359 | }, 1360 | "position": { 1361 | "x": 0, 1362 | "y": 0, 1363 | "z": 0 1364 | }, 1365 | "scale": { 1366 | "x": 1, 1367 | "y": 1, 1368 | "z": 1 1369 | } 1370 | } 1371 | }, 1372 | "gunType": "03", 1373 | "knocked": false, 1374 | "timestamp": 150713 1375 | }, 1376 | { 1377 | "eliminated": { 1378 | "name": "Bot", 1379 | "isBot": true, 1380 | "location": { 1381 | "rotation": { 1382 | "x": 0, 1383 | "y": 0, 1384 | "z": 0, 1385 | "w": 1 1386 | }, 1387 | "position": { 1388 | "x": 0, 1389 | "y": 0, 1390 | "z": 0 1391 | }, 1392 | "scale": { 1393 | "x": 1, 1394 | "y": 1, 1395 | "z": 1 1396 | } 1397 | } 1398 | }, 1399 | "eliminator": { 1400 | "id": "5c684e594c6740ea9d180403e34e7fd1", 1401 | "isBot": false, 1402 | "location": { 1403 | "rotation": { 1404 | "x": 0, 1405 | "y": 0, 1406 | "z": 0, 1407 | "w": 1 1408 | }, 1409 | "position": { 1410 | "x": 0, 1411 | "y": 0, 1412 | "z": 0 1413 | }, 1414 | "scale": { 1415 | "x": 1, 1416 | "y": 1, 1417 | "z": 1 1418 | } 1419 | } 1420 | }, 1421 | "gunType": "04", 1422 | "knocked": false, 1423 | "timestamp": 155420 1424 | }, 1425 | { 1426 | "eliminated": { 1427 | "name": "Bot", 1428 | "isBot": true, 1429 | "location": { 1430 | "rotation": { 1431 | "x": 0, 1432 | "y": 0, 1433 | "z": 0, 1434 | "w": 1 1435 | }, 1436 | "position": { 1437 | "x": 0, 1438 | "y": 0, 1439 | "z": 0 1440 | }, 1441 | "scale": { 1442 | "x": 1, 1443 | "y": 1, 1444 | "z": 1 1445 | } 1446 | } 1447 | }, 1448 | "eliminator": { 1449 | "id": "5c684e594c6740ea9d180403e34e7fd1", 1450 | "isBot": false, 1451 | "location": { 1452 | "rotation": { 1453 | "x": 0, 1454 | "y": 0, 1455 | "z": 0, 1456 | "w": 1 1457 | }, 1458 | "position": { 1459 | "x": 0, 1460 | "y": 0, 1461 | "z": 0 1462 | }, 1463 | "scale": { 1464 | "x": 1, 1465 | "y": 1, 1466 | "z": 1 1467 | } 1468 | } 1469 | }, 1470 | "gunType": "04", 1471 | "knocked": false, 1472 | "timestamp": 155455 1473 | }, 1474 | { 1475 | "eliminated": { 1476 | "name": "Bot", 1477 | "isBot": true, 1478 | "location": { 1479 | "rotation": { 1480 | "x": 0, 1481 | "y": 0, 1482 | "z": 0.6276298761367798, 1483 | "w": 0.7785118818283081 1484 | }, 1485 | "position": { 1486 | "x": 33712.5390625, 1487 | "y": -82601.2578125, 1488 | "z": -3370.929931640625 1489 | }, 1490 | "scale": { 1491 | "x": 1, 1492 | "y": 1, 1493 | "z": 1 1494 | } 1495 | } 1496 | }, 1497 | "eliminator": { 1498 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 1499 | "isBot": false, 1500 | "location": { 1501 | "rotation": { 1502 | "x": 0, 1503 | "y": 0, 1504 | "z": -0.9910499453544617, 1505 | "w": 0.13349127769470215 1506 | }, 1507 | "position": { 1508 | "x": 33955.80078125, 1509 | "y": -82669.6328125, 1510 | "z": -3370.85009765625 1511 | }, 1512 | "scale": { 1513 | "x": 1, 1514 | "y": 1, 1515 | "z": 1 1516 | } 1517 | } 1518 | }, 1519 | "gunType": "04", 1520 | "knocked": false, 1521 | "timestamp": 160008 1522 | }, 1523 | { 1524 | "eliminated": { 1525 | "name": "Bot", 1526 | "isBot": true, 1527 | "location": { 1528 | "rotation": { 1529 | "x": 0, 1530 | "y": 0, 1531 | "z": 0, 1532 | "w": 1 1533 | }, 1534 | "position": { 1535 | "x": 0, 1536 | "y": 0, 1537 | "z": 0 1538 | }, 1539 | "scale": { 1540 | "x": 1, 1541 | "y": 1, 1542 | "z": 1 1543 | } 1544 | } 1545 | }, 1546 | "eliminator": { 1547 | "id": "09751afc65214881a20aa0c25060cdce", 1548 | "isBot": false, 1549 | "location": { 1550 | "rotation": { 1551 | "x": 0, 1552 | "y": 0, 1553 | "z": 0, 1554 | "w": 1 1555 | }, 1556 | "position": { 1557 | "x": 0, 1558 | "y": 0, 1559 | "z": 0 1560 | }, 1561 | "scale": { 1562 | "x": 1, 1563 | "y": 1, 1564 | "z": 1 1565 | } 1566 | } 1567 | }, 1568 | "gunType": "03", 1569 | "knocked": false, 1570 | "timestamp": 162984 1571 | }, 1572 | { 1573 | "eliminated": { 1574 | "id": "ed6d424c9efe444f9e45c814b0d5013e", 1575 | "isBot": false, 1576 | "location": { 1577 | "rotation": { 1578 | "x": 0, 1579 | "y": 0, 1580 | "z": 0, 1581 | "w": 1 1582 | }, 1583 | "position": { 1584 | "x": 0, 1585 | "y": 0, 1586 | "z": 0 1587 | }, 1588 | "scale": { 1589 | "x": 1, 1590 | "y": 1, 1591 | "z": 1 1592 | } 1593 | } 1594 | }, 1595 | "eliminator": { 1596 | "id": "38feea485c314202b77d9ae7a6640d55", 1597 | "isBot": false, 1598 | "location": { 1599 | "rotation": { 1600 | "x": 0, 1601 | "y": 0, 1602 | "z": 0, 1603 | "w": 1 1604 | }, 1605 | "position": { 1606 | "x": 0, 1607 | "y": 0, 1608 | "z": 0 1609 | }, 1610 | "scale": { 1611 | "x": 1, 1612 | "y": 1, 1613 | "z": 1 1614 | } 1615 | } 1616 | }, 1617 | "gunType": "03", 1618 | "knocked": true, 1619 | "timestamp": 163956 1620 | }, 1621 | { 1622 | "eliminated": { 1623 | "id": "8eac1af98f5f4cacae7717b096a6577e", 1624 | "isBot": false, 1625 | "location": { 1626 | "rotation": { 1627 | "x": 0, 1628 | "y": 0, 1629 | "z": 0, 1630 | "w": 1 1631 | }, 1632 | "position": { 1633 | "x": 0, 1634 | "y": 0, 1635 | "z": 0 1636 | }, 1637 | "scale": { 1638 | "x": 1, 1639 | "y": 1, 1640 | "z": 1 1641 | } 1642 | } 1643 | }, 1644 | "eliminator": { 1645 | "id": "38feea485c314202b77d9ae7a6640d55", 1646 | "isBot": false, 1647 | "location": { 1648 | "rotation": { 1649 | "x": 0, 1650 | "y": 0, 1651 | "z": 0, 1652 | "w": 1 1653 | }, 1654 | "position": { 1655 | "x": 0, 1656 | "y": 0, 1657 | "z": 0 1658 | }, 1659 | "scale": { 1660 | "x": 1, 1661 | "y": 1, 1662 | "z": 1 1663 | } 1664 | } 1665 | }, 1666 | "gunType": "03", 1667 | "knocked": false, 1668 | "timestamp": 166852 1669 | }, 1670 | { 1671 | "eliminated": { 1672 | "id": "ed6d424c9efe444f9e45c814b0d5013e", 1673 | "isBot": false, 1674 | "location": { 1675 | "rotation": { 1676 | "x": 0, 1677 | "y": 0, 1678 | "z": 0, 1679 | "w": 1 1680 | }, 1681 | "position": { 1682 | "x": 0, 1683 | "y": 0, 1684 | "z": 0 1685 | }, 1686 | "scale": { 1687 | "x": 1, 1688 | "y": 1, 1689 | "z": 1 1690 | } 1691 | } 1692 | }, 1693 | "eliminator": { 1694 | "id": "38feea485c314202b77d9ae7a6640d55", 1695 | "isBot": false, 1696 | "location": { 1697 | "rotation": { 1698 | "x": 0, 1699 | "y": 0, 1700 | "z": 0, 1701 | "w": 1 1702 | }, 1703 | "position": { 1704 | "x": 0, 1705 | "y": 0, 1706 | "z": 0 1707 | }, 1708 | "scale": { 1709 | "x": 1, 1710 | "y": 1, 1711 | "z": 1 1712 | } 1713 | } 1714 | }, 1715 | "gunType": "03", 1716 | "knocked": false, 1717 | "timestamp": 167014 1718 | }, 1719 | { 1720 | "eliminated": { 1721 | "name": "Bot", 1722 | "isBot": true, 1723 | "location": { 1724 | "rotation": { 1725 | "x": 0, 1726 | "y": 0, 1727 | "z": -0.7111824750900269, 1728 | "w": 0.7030074596405029 1729 | }, 1730 | "position": { 1731 | "x": 32794.34765625, 1732 | "y": -82859.28125, 1733 | "z": -3395.849853515625 1734 | }, 1735 | "scale": { 1736 | "x": 1, 1737 | "y": 1, 1738 | "z": 1 1739 | } 1740 | } 1741 | }, 1742 | "eliminator": { 1743 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 1744 | "isBot": false, 1745 | "location": { 1746 | "rotation": { 1747 | "x": 0, 1748 | "y": 0, 1749 | "z": -0.8527045249938965, 1750 | "w": 0.5223935842514038 1751 | }, 1752 | "position": { 1753 | "x": 32737.744140625, 1754 | "y": -82786.3671875, 1755 | "z": -3270.249267578125 1756 | }, 1757 | "scale": { 1758 | "x": 1, 1759 | "y": 1, 1760 | "z": 1 1761 | } 1762 | } 1763 | }, 1764 | "gunType": "04", 1765 | "knocked": true, 1766 | "timestamp": 170785 1767 | }, 1768 | { 1769 | "eliminated": { 1770 | "name": "Bot", 1771 | "isBot": true, 1772 | "location": { 1773 | "rotation": { 1774 | "x": 0, 1775 | "y": 0, 1776 | "z": 0.6717500686645508, 1777 | "w": 0.740777850151062 1778 | }, 1779 | "position": { 1780 | "x": 32800.41015625, 1781 | "y": -82804.09375, 1782 | "z": -3395.849853515625 1783 | }, 1784 | "scale": { 1785 | "x": 1, 1786 | "y": 1, 1787 | "z": 1 1788 | } 1789 | } 1790 | }, 1791 | "eliminator": { 1792 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 1793 | "isBot": false, 1794 | "location": { 1795 | "rotation": { 1796 | "x": 0, 1797 | "y": 0, 1798 | "z": -0.9730023741722107, 1799 | "w": 0.2307947278022766 1800 | }, 1801 | "position": { 1802 | "x": 32707.587890625, 1803 | "y": -82537.3203125, 1804 | "z": -3370.85009765625 1805 | }, 1806 | "scale": { 1807 | "x": 1, 1808 | "y": 1, 1809 | "z": 1 1810 | } 1811 | } 1812 | }, 1813 | "gunType": "04", 1814 | "knocked": false, 1815 | "timestamp": 175297 1816 | }, 1817 | { 1818 | "eliminated": { 1819 | "id": "0eddf3a0f1634cbda775d968b4911efd", 1820 | "isBot": false, 1821 | "location": { 1822 | "rotation": { 1823 | "x": 0, 1824 | "y": 0, 1825 | "z": 0, 1826 | "w": 1 1827 | }, 1828 | "position": { 1829 | "x": 0, 1830 | "y": 0, 1831 | "z": 0 1832 | }, 1833 | "scale": { 1834 | "x": 1, 1835 | "y": 1, 1836 | "z": 1 1837 | } 1838 | } 1839 | }, 1840 | "eliminator": { 1841 | "id": "27d0d3c702104806b126be901d668c20", 1842 | "isBot": false, 1843 | "location": { 1844 | "rotation": { 1845 | "x": 0, 1846 | "y": 0, 1847 | "z": 0, 1848 | "w": 1 1849 | }, 1850 | "position": { 1851 | "x": 0, 1852 | "y": 0, 1853 | "z": 0 1854 | }, 1855 | "scale": { 1856 | "x": 1, 1857 | "y": 1, 1858 | "z": 1 1859 | } 1860 | } 1861 | }, 1862 | "gunType": "04", 1863 | "knocked": false, 1864 | "timestamp": 179070 1865 | }, 1866 | { 1867 | "eliminated": { 1868 | "name": "Bot", 1869 | "isBot": true, 1870 | "location": { 1871 | "rotation": { 1872 | "x": 0, 1873 | "y": 0, 1874 | "z": 0, 1875 | "w": 1 1876 | }, 1877 | "position": { 1878 | "x": 0, 1879 | "y": 0, 1880 | "z": 0 1881 | }, 1882 | "scale": { 1883 | "x": 1, 1884 | "y": 1, 1885 | "z": 1 1886 | } 1887 | } 1888 | }, 1889 | "eliminator": { 1890 | "name": "Bot", 1891 | "isBot": true, 1892 | "location": { 1893 | "rotation": { 1894 | "x": 0, 1895 | "y": 0, 1896 | "z": 0, 1897 | "w": 1 1898 | }, 1899 | "position": { 1900 | "x": 0, 1901 | "y": 0, 1902 | "z": 0 1903 | }, 1904 | "scale": { 1905 | "x": 1, 1906 | "y": 1, 1907 | "z": 1 1908 | } 1909 | } 1910 | }, 1911 | "gunType": "03", 1912 | "knocked": true, 1913 | "timestamp": 182713 1914 | }, 1915 | { 1916 | "eliminated": { 1917 | "id": "1c156b9a59d34ff2ac82907e06718c4b", 1918 | "isBot": false, 1919 | "location": { 1920 | "rotation": { 1921 | "x": 0, 1922 | "y": 0, 1923 | "z": -0.3940701186656952, 1924 | "w": 0.919080376625061 1925 | }, 1926 | "position": { 1927 | "x": 34878.70703125, 1928 | "y": -75236.7578125, 1929 | "z": -3011.849853515625 1930 | }, 1931 | "scale": { 1932 | "x": 1, 1933 | "y": 1, 1934 | "z": 1 1935 | } 1936 | } 1937 | }, 1938 | "eliminator": { 1939 | "id": "e198cb46ed9a400a85375c4ceef0089d", 1940 | "isBot": false, 1941 | "location": { 1942 | "rotation": { 1943 | "x": 0, 1944 | "y": 0, 1945 | "z": 0.9550434350967407, 1946 | "w": 0.2964658737182617 1947 | }, 1948 | "position": { 1949 | "x": 35039.13671875, 1950 | "y": -75163.578125, 1951 | "z": -2986.849853515625 1952 | }, 1953 | "scale": { 1954 | "x": 1, 1955 | "y": 1, 1956 | "z": 1 1957 | } 1958 | } 1959 | }, 1960 | "gunType": "03", 1961 | "knocked": true, 1962 | "timestamp": 186556 1963 | }, 1964 | { 1965 | "eliminated": { 1966 | "name": "Bot", 1967 | "isBot": true, 1968 | "location": { 1969 | "rotation": { 1970 | "x": 0, 1971 | "y": 0, 1972 | "z": 0, 1973 | "w": 1 1974 | }, 1975 | "position": { 1976 | "x": 0, 1977 | "y": 0, 1978 | "z": 0 1979 | }, 1980 | "scale": { 1981 | "x": 1, 1982 | "y": 1, 1983 | "z": 1 1984 | } 1985 | } 1986 | }, 1987 | "eliminator": { 1988 | "name": "Bot", 1989 | "isBot": true, 1990 | "location": { 1991 | "rotation": { 1992 | "x": 0, 1993 | "y": 0, 1994 | "z": 0, 1995 | "w": 1 1996 | }, 1997 | "position": { 1998 | "x": 0, 1999 | "y": 0, 2000 | "z": 0 2001 | }, 2002 | "scale": { 2003 | "x": 1, 2004 | "y": 1, 2005 | "z": 1 2006 | } 2007 | } 2008 | }, 2009 | "gunType": "04", 2010 | "knocked": false, 2011 | "timestamp": 188390 2012 | }, 2013 | { 2014 | "eliminated": { 2015 | "id": "1c156b9a59d34ff2ac82907e06718c4b", 2016 | "isBot": false, 2017 | "location": { 2018 | "rotation": { 2019 | "x": 0, 2020 | "y": 0, 2021 | "z": 0.11409297585487366, 2022 | "w": 0.9934700727462769 2023 | }, 2024 | "position": { 2025 | "x": 34844.65234375, 2026 | "y": -75397.8984375, 2027 | "z": -3011.849853515625 2028 | }, 2029 | "scale": { 2030 | "x": 1, 2031 | "y": 1, 2032 | "z": 1 2033 | } 2034 | } 2035 | }, 2036 | "eliminator": { 2037 | "id": "e198cb46ed9a400a85375c4ceef0089d", 2038 | "isBot": false, 2039 | "location": { 2040 | "rotation": { 2041 | "x": 0, 2042 | "y": 0, 2043 | "z": -0.9807852506637573, 2044 | "w": 0.1950901746749878 2045 | }, 2046 | "position": { 2047 | "x": 34908.0703125, 2048 | "y": -75404.515625, 2049 | "z": -2986.849853515625 2050 | }, 2051 | "scale": { 2052 | "x": 1, 2053 | "y": 1, 2054 | "z": 1 2055 | } 2056 | } 2057 | }, 2058 | "gunType": "03", 2059 | "knocked": false, 2060 | "timestamp": 189573 2061 | }, 2062 | { 2063 | "eliminated": { 2064 | "id": "43d3dffede734f0eb6094e8f1b510f74", 2065 | "isBot": false, 2066 | "location": { 2067 | "rotation": { 2068 | "x": 0, 2069 | "y": 0, 2070 | "z": -0.6370306015014648, 2071 | "w": 0.7708384990692139 2072 | }, 2073 | "position": { 2074 | "x": 34447.16796875, 2075 | "y": -71344.6640625, 2076 | "z": -1877.87939453125 2077 | }, 2078 | "scale": { 2079 | "x": 1, 2080 | "y": 1, 2081 | "z": 1 2082 | } 2083 | } 2084 | }, 2085 | "eliminator": { 2086 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 2087 | "isBot": false, 2088 | "location": { 2089 | "rotation": { 2090 | "x": 0, 2091 | "y": 0, 2092 | "z": 0.6375804543495178, 2093 | "w": 0.7703837156295776 2094 | }, 2095 | "position": { 2096 | "x": 33720.1875, 2097 | "y": -80222.765625, 2098 | "z": -2468.554443359375 2099 | }, 2100 | "scale": { 2101 | "x": 1, 2102 | "y": 1, 2103 | "z": 1 2104 | } 2105 | } 2106 | }, 2107 | "gunType": "06", 2108 | "knocked": false, 2109 | "timestamp": 192340 2110 | }, 2111 | { 2112 | "eliminated": { 2113 | "name": "Bot", 2114 | "isBot": true, 2115 | "location": { 2116 | "rotation": { 2117 | "x": 0, 2118 | "y": 0, 2119 | "z": 0, 2120 | "w": 1 2121 | }, 2122 | "position": { 2123 | "x": 0, 2124 | "y": 0, 2125 | "z": 0 2126 | }, 2127 | "scale": { 2128 | "x": 1, 2129 | "y": 1, 2130 | "z": 1 2131 | } 2132 | } 2133 | }, 2134 | "eliminator": { 2135 | "id": "70900139b7814cfb91d00a398b8eab78", 2136 | "isBot": false, 2137 | "location": { 2138 | "rotation": { 2139 | "x": 0, 2140 | "y": 0, 2141 | "z": 0, 2142 | "w": 1 2143 | }, 2144 | "position": { 2145 | "x": 0, 2146 | "y": 0, 2147 | "z": 0 2148 | }, 2149 | "scale": { 2150 | "x": 1, 2151 | "y": 1, 2152 | "z": 1 2153 | } 2154 | } 2155 | }, 2156 | "gunType": "04", 2157 | "knocked": true, 2158 | "timestamp": 193149 2159 | }, 2160 | { 2161 | "eliminated": { 2162 | "id": "9d361cb8602c4671912c4c1c8ba47595", 2163 | "isBot": false, 2164 | "location": { 2165 | "rotation": { 2166 | "x": 0, 2167 | "y": 0, 2168 | "z": 0, 2169 | "w": 1 2170 | }, 2171 | "position": { 2172 | "x": 0, 2173 | "y": 0, 2174 | "z": 0 2175 | }, 2176 | "scale": { 2177 | "x": 1, 2178 | "y": 1, 2179 | "z": 1 2180 | } 2181 | } 2182 | }, 2183 | "eliminator": { 2184 | "id": "27d0d3c702104806b126be901d668c20", 2185 | "isBot": false, 2186 | "location": { 2187 | "rotation": { 2188 | "x": 0, 2189 | "y": 0, 2190 | "z": 0, 2191 | "w": 1 2192 | }, 2193 | "position": { 2194 | "x": 0, 2195 | "y": 0, 2196 | "z": 0 2197 | }, 2198 | "scale": { 2199 | "x": 1, 2200 | "y": 1, 2201 | "z": 1 2202 | } 2203 | } 2204 | }, 2205 | "gunType": "03", 2206 | "knocked": true, 2207 | "timestamp": 195580 2208 | }, 2209 | { 2210 | "eliminated": { 2211 | "name": "Bot", 2212 | "isBot": true, 2213 | "location": { 2214 | "rotation": { 2215 | "x": 0, 2216 | "y": 0, 2217 | "z": 0, 2218 | "w": 1 2219 | }, 2220 | "position": { 2221 | "x": 0, 2222 | "y": 0, 2223 | "z": 0 2224 | }, 2225 | "scale": { 2226 | "x": 1, 2227 | "y": 1, 2228 | "z": 1 2229 | } 2230 | } 2231 | }, 2232 | "eliminator": { 2233 | "id": "70900139b7814cfb91d00a398b8eab78", 2234 | "isBot": false, 2235 | "location": { 2236 | "rotation": { 2237 | "x": 0, 2238 | "y": 0, 2239 | "z": 0, 2240 | "w": 1 2241 | }, 2242 | "position": { 2243 | "x": 0, 2244 | "y": 0, 2245 | "z": 0 2246 | }, 2247 | "scale": { 2248 | "x": 1, 2249 | "y": 1, 2250 | "z": 1 2251 | } 2252 | } 2253 | }, 2254 | "gunType": "04", 2255 | "knocked": false, 2256 | "timestamp": 197651 2257 | }, 2258 | { 2259 | "eliminated": { 2260 | "id": "9d361cb8602c4671912c4c1c8ba47595", 2261 | "isBot": false, 2262 | "location": { 2263 | "rotation": { 2264 | "x": 0, 2265 | "y": 0, 2266 | "z": 0, 2267 | "w": 1 2268 | }, 2269 | "position": { 2270 | "x": 0, 2271 | "y": 0, 2272 | "z": 0 2273 | }, 2274 | "scale": { 2275 | "x": 1, 2276 | "y": 1, 2277 | "z": 1 2278 | } 2279 | } 2280 | }, 2281 | "eliminator": { 2282 | "id": "27d0d3c702104806b126be901d668c20", 2283 | "isBot": false, 2284 | "location": { 2285 | "rotation": { 2286 | "x": 0, 2287 | "y": 0, 2288 | "z": 0, 2289 | "w": 1 2290 | }, 2291 | "position": { 2292 | "x": 0, 2293 | "y": 0, 2294 | "z": 0 2295 | }, 2296 | "scale": { 2297 | "x": 1, 2298 | "y": 1, 2299 | "z": 1 2300 | } 2301 | } 2302 | }, 2303 | "gunType": "03", 2304 | "knocked": false, 2305 | "timestamp": 200099 2306 | }, 2307 | { 2308 | "eliminated": { 2309 | "name": "Bot", 2310 | "isBot": true, 2311 | "location": { 2312 | "rotation": { 2313 | "x": 0, 2314 | "y": 0, 2315 | "z": 0, 2316 | "w": 1 2317 | }, 2318 | "position": { 2319 | "x": 0, 2320 | "y": 0, 2321 | "z": 0 2322 | }, 2323 | "scale": { 2324 | "x": 1, 2325 | "y": 1, 2326 | "z": 1 2327 | } 2328 | } 2329 | }, 2330 | "eliminator": { 2331 | "name": "Bot", 2332 | "isBot": true, 2333 | "location": { 2334 | "rotation": { 2335 | "x": 0, 2336 | "y": 0, 2337 | "z": 0, 2338 | "w": 1 2339 | }, 2340 | "position": { 2341 | "x": 0, 2342 | "y": 0, 2343 | "z": 0 2344 | }, 2345 | "scale": { 2346 | "x": 1, 2347 | "y": 1, 2348 | "z": 1 2349 | } 2350 | } 2351 | }, 2352 | "gunType": "03", 2353 | "knocked": false, 2354 | "timestamp": 200765 2355 | }, 2356 | { 2357 | "eliminated": { 2358 | "name": "Bot", 2359 | "isBot": true, 2360 | "location": { 2361 | "rotation": { 2362 | "x": 0, 2363 | "y": 0, 2364 | "z": 1, 2365 | "w": 8.940696716308594e-7 2366 | }, 2367 | "position": { 2368 | "x": 23637.896484375, 2369 | "y": -86454.375, 2370 | "z": -3373.3193359375 2371 | }, 2372 | "scale": { 2373 | "x": 1, 2374 | "y": 1, 2375 | "z": 1 2376 | } 2377 | } 2378 | }, 2379 | "eliminator": { 2380 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 2381 | "isBot": false, 2382 | "location": { 2383 | "rotation": { 2384 | "x": 0, 2385 | "y": 0, 2386 | "z": -0.9828665852546692, 2387 | "w": 0.184317946434021 2388 | }, 2389 | "position": { 2390 | "x": 33672.609375, 2391 | "y": -80593.0546875, 2392 | "z": -2582.419189453125 2393 | }, 2394 | "scale": { 2395 | "x": 1, 2396 | "y": 1, 2397 | "z": 1 2398 | } 2399 | } 2400 | }, 2401 | "gunType": "06", 2402 | "knocked": false, 2403 | "timestamp": 203928 2404 | }, 2405 | { 2406 | "eliminated": { 2407 | "id": "af0a84b2c78c49a68f621d89ec4eb7d4", 2408 | "isBot": false, 2409 | "location": { 2410 | "rotation": { 2411 | "x": 0, 2412 | "y": 0, 2413 | "z": 0, 2414 | "w": 1 2415 | }, 2416 | "position": { 2417 | "x": 0, 2418 | "y": 0, 2419 | "z": 0 2420 | }, 2421 | "scale": { 2422 | "x": 1, 2423 | "y": 1, 2424 | "z": 1 2425 | } 2426 | } 2427 | }, 2428 | "eliminator": { 2429 | "id": "1ac76fadb11040968c58c13bf787de12", 2430 | "isBot": false, 2431 | "location": { 2432 | "rotation": { 2433 | "x": 0, 2434 | "y": 0, 2435 | "z": 0, 2436 | "w": 1 2437 | }, 2438 | "position": { 2439 | "x": 0, 2440 | "y": 0, 2441 | "z": 0 2442 | }, 2443 | "scale": { 2444 | "x": 1, 2445 | "y": 1, 2446 | "z": 1 2447 | } 2448 | } 2449 | }, 2450 | "gunType": "03", 2451 | "knocked": true, 2452 | "timestamp": 204464 2453 | }, 2454 | { 2455 | "eliminated": { 2456 | "id": "af0a84b2c78c49a68f621d89ec4eb7d4", 2457 | "isBot": false, 2458 | "location": { 2459 | "rotation": { 2460 | "x": 0, 2461 | "y": 0, 2462 | "z": 0, 2463 | "w": 1 2464 | }, 2465 | "position": { 2466 | "x": 0, 2467 | "y": 0, 2468 | "z": 0 2469 | }, 2470 | "scale": { 2471 | "x": 1, 2472 | "y": 1, 2473 | "z": 1 2474 | } 2475 | } 2476 | }, 2477 | "eliminator": { 2478 | "id": "1ac76fadb11040968c58c13bf787de12", 2479 | "isBot": false, 2480 | "location": { 2481 | "rotation": { 2482 | "x": 0, 2483 | "y": 0, 2484 | "z": 0, 2485 | "w": 1 2486 | }, 2487 | "position": { 2488 | "x": 0, 2489 | "y": 0, 2490 | "z": 0 2491 | }, 2492 | "scale": { 2493 | "x": 1, 2494 | "y": 1, 2495 | "z": 1 2496 | } 2497 | } 2498 | }, 2499 | "gunType": "03", 2500 | "knocked": false, 2501 | "timestamp": 205989 2502 | }, 2503 | { 2504 | "eliminated": { 2505 | "id": "09751afc65214881a20aa0c25060cdce", 2506 | "isBot": false, 2507 | "location": { 2508 | "rotation": { 2509 | "x": 0, 2510 | "y": 0, 2511 | "z": 0, 2512 | "w": 1 2513 | }, 2514 | "position": { 2515 | "x": 0, 2516 | "y": 0, 2517 | "z": 0 2518 | }, 2519 | "scale": { 2520 | "x": 1, 2521 | "y": 1, 2522 | "z": 1 2523 | } 2524 | } 2525 | }, 2526 | "eliminator": { 2527 | "id": "1ac76fadb11040968c58c13bf787de12", 2528 | "isBot": false, 2529 | "location": { 2530 | "rotation": { 2531 | "x": 0, 2532 | "y": 0, 2533 | "z": 0, 2534 | "w": 1 2535 | }, 2536 | "position": { 2537 | "x": 0, 2538 | "y": 0, 2539 | "z": 0 2540 | }, 2541 | "scale": { 2542 | "x": 1, 2543 | "y": 1, 2544 | "z": 1 2545 | } 2546 | } 2547 | }, 2548 | "gunType": "03", 2549 | "knocked": false, 2550 | "timestamp": 207817 2551 | }, 2552 | { 2553 | "eliminated": { 2554 | "name": "Bot", 2555 | "isBot": true, 2556 | "location": { 2557 | "rotation": { 2558 | "x": 0, 2559 | "y": 0, 2560 | "z": 0, 2561 | "w": 1 2562 | }, 2563 | "position": { 2564 | "x": 0, 2565 | "y": 0, 2566 | "z": 0 2567 | }, 2568 | "scale": { 2569 | "x": 1, 2570 | "y": 1, 2571 | "z": 1 2572 | } 2573 | } 2574 | }, 2575 | "eliminator": { 2576 | "id": "b51a955f27e44ce6bd2e43a430305a4f", 2577 | "isBot": false, 2578 | "location": { 2579 | "rotation": { 2580 | "x": 0, 2581 | "y": 0, 2582 | "z": 0, 2583 | "w": 1 2584 | }, 2585 | "position": { 2586 | "x": 0, 2587 | "y": 0, 2588 | "z": 0 2589 | }, 2590 | "scale": { 2591 | "x": 1, 2592 | "y": 1, 2593 | "z": 1 2594 | } 2595 | } 2596 | }, 2597 | "gunType": "04", 2598 | "knocked": true, 2599 | "timestamp": 214062 2600 | }, 2601 | { 2602 | "eliminated": { 2603 | "name": "Bot", 2604 | "isBot": true, 2605 | "location": { 2606 | "rotation": { 2607 | "x": 0, 2608 | "y": 0, 2609 | "z": 0, 2610 | "w": 1 2611 | }, 2612 | "position": { 2613 | "x": 0, 2614 | "y": 0, 2615 | "z": 0 2616 | }, 2617 | "scale": { 2618 | "x": 1, 2619 | "y": 1, 2620 | "z": 1 2621 | } 2622 | } 2623 | }, 2624 | "eliminator": { 2625 | "id": "7e179041c0aa49219a93a9cf25c01e2f", 2626 | "isBot": false, 2627 | "location": { 2628 | "rotation": { 2629 | "x": 0, 2630 | "y": 0, 2631 | "z": 0, 2632 | "w": 1 2633 | }, 2634 | "position": { 2635 | "x": 0, 2636 | "y": 0, 2637 | "z": 0 2638 | }, 2639 | "scale": { 2640 | "x": 1, 2641 | "y": 1, 2642 | "z": 1 2643 | } 2644 | } 2645 | }, 2646 | "gunType": "04", 2647 | "knocked": false, 2648 | "timestamp": 218464 2649 | }, 2650 | { 2651 | "eliminated": { 2652 | "id": "27d0d3c702104806b126be901d668c20", 2653 | "isBot": false, 2654 | "location": { 2655 | "rotation": { 2656 | "x": 0, 2657 | "y": 0, 2658 | "z": 0, 2659 | "w": 1 2660 | }, 2661 | "position": { 2662 | "x": 0, 2663 | "y": 0, 2664 | "z": 0 2665 | }, 2666 | "scale": { 2667 | "x": 1, 2668 | "y": 1, 2669 | "z": 1 2670 | } 2671 | } 2672 | }, 2673 | "eliminator": { 2674 | "id": "623fc78dd67d4c0ca0fcae6a7723c130", 2675 | "isBot": false, 2676 | "location": { 2677 | "rotation": { 2678 | "x": 0, 2679 | "y": 0, 2680 | "z": 0, 2681 | "w": 1 2682 | }, 2683 | "position": { 2684 | "x": 0, 2685 | "y": 0, 2686 | "z": 0 2687 | }, 2688 | "scale": { 2689 | "x": 1, 2690 | "y": 1, 2691 | "z": 1 2692 | } 2693 | } 2694 | }, 2695 | "gunType": "04", 2696 | "knocked": true, 2697 | "timestamp": 222006 2698 | }, 2699 | { 2700 | "eliminated": { 2701 | "id": "e198cb46ed9a400a85375c4ceef0089d", 2702 | "isBot": false, 2703 | "location": { 2704 | "rotation": { 2705 | "x": 0, 2706 | "y": 0, 2707 | "z": -0.32456979155540466, 2708 | "w": 0.9458617568016052 2709 | }, 2710 | "position": { 2711 | "x": 35063.04296875, 2712 | "y": -76299.03125, 2713 | "z": -3395.849853515625 2714 | }, 2715 | "scale": { 2716 | "x": 1, 2717 | "y": 1, 2718 | "z": 1 2719 | } 2720 | } 2721 | }, 2722 | "eliminator": { 2723 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 2724 | "isBot": false, 2725 | "location": { 2726 | "rotation": { 2727 | "x": 0, 2728 | "y": 0, 2729 | "z": -0.9974698424339294, 2730 | "w": 0.0710906982421875 2731 | }, 2732 | "position": { 2733 | "x": 35269.9765625, 2734 | "y": -76323.6484375, 2735 | "z": -3348.980224609375 2736 | }, 2737 | "scale": { 2738 | "x": 1, 2739 | "y": 1, 2740 | "z": 1 2741 | } 2742 | } 2743 | }, 2744 | "gunType": "03", 2745 | "knocked": true, 2746 | "timestamp": 223316 2747 | }, 2748 | { 2749 | "eliminated": { 2750 | "id": "e198cb46ed9a400a85375c4ceef0089d", 2751 | "isBot": false, 2752 | "location": { 2753 | "rotation": { 2754 | "x": 0, 2755 | "y": 0, 2756 | "z": 0.4765661358833313, 2757 | "w": 0.8791385889053345 2758 | }, 2759 | "position": { 2760 | "x": 35200.0859375, 2761 | "y": -76208.203125, 2762 | "z": -3395.849853515625 2763 | }, 2764 | "scale": { 2765 | "x": 1, 2766 | "y": 1, 2767 | "z": 1 2768 | } 2769 | } 2770 | }, 2771 | "eliminator": { 2772 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 2773 | "isBot": false, 2774 | "location": { 2775 | "rotation": { 2776 | "x": 0, 2777 | "y": 0, 2778 | "z": 0.9818968176841736, 2779 | "w": 0.18941646814346313 2780 | }, 2781 | "position": { 2782 | "x": 35274.93359375, 2783 | "y": -76290.25, 2784 | "z": -3300.86669921875 2785 | }, 2786 | "scale": { 2787 | "x": 1, 2788 | "y": 1, 2789 | "z": 1 2790 | } 2791 | } 2792 | }, 2793 | "gunType": "03", 2794 | "knocked": false, 2795 | "timestamp": 226264 2796 | }, 2797 | { 2798 | "eliminated": { 2799 | "id": "6774a4d75ff144529f0a9350d99ec7d3", 2800 | "isBot": false, 2801 | "location": { 2802 | "rotation": { 2803 | "x": 0, 2804 | "y": 0, 2805 | "z": 0, 2806 | "w": 1 2807 | }, 2808 | "position": { 2809 | "x": 0, 2810 | "y": 0, 2811 | "z": 0 2812 | }, 2813 | "scale": { 2814 | "x": 1, 2815 | "y": 1, 2816 | "z": 1 2817 | } 2818 | } 2819 | }, 2820 | "eliminator": { 2821 | "id": "623fc78dd67d4c0ca0fcae6a7723c130", 2822 | "isBot": false, 2823 | "location": { 2824 | "rotation": { 2825 | "x": 0, 2826 | "y": 0, 2827 | "z": 0, 2828 | "w": 1 2829 | }, 2830 | "position": { 2831 | "x": 0, 2832 | "y": 0, 2833 | "z": 0 2834 | }, 2835 | "scale": { 2836 | "x": 1, 2837 | "y": 1, 2838 | "z": 1 2839 | } 2840 | } 2841 | }, 2842 | "gunType": "04", 2843 | "knocked": false, 2844 | "timestamp": 226327 2845 | }, 2846 | { 2847 | "eliminated": { 2848 | "id": "27d0d3c702104806b126be901d668c20", 2849 | "isBot": false, 2850 | "location": { 2851 | "rotation": { 2852 | "x": 0, 2853 | "y": 0, 2854 | "z": 0, 2855 | "w": 1 2856 | }, 2857 | "position": { 2858 | "x": 0, 2859 | "y": 0, 2860 | "z": 0 2861 | }, 2862 | "scale": { 2863 | "x": 1, 2864 | "y": 1, 2865 | "z": 1 2866 | } 2867 | } 2868 | }, 2869 | "eliminator": { 2870 | "id": "623fc78dd67d4c0ca0fcae6a7723c130", 2871 | "isBot": false, 2872 | "location": { 2873 | "rotation": { 2874 | "x": 0, 2875 | "y": 0, 2876 | "z": 0, 2877 | "w": 1 2878 | }, 2879 | "position": { 2880 | "x": 0, 2881 | "y": 0, 2882 | "z": 0 2883 | }, 2884 | "scale": { 2885 | "x": 1, 2886 | "y": 1, 2887 | "z": 1 2888 | } 2889 | } 2890 | }, 2891 | "gunType": "04", 2892 | "knocked": false, 2893 | "timestamp": 226431 2894 | }, 2895 | { 2896 | "eliminated": { 2897 | "id": "5c684e594c6740ea9d180403e34e7fd1", 2898 | "isBot": false, 2899 | "location": { 2900 | "rotation": { 2901 | "x": 0, 2902 | "y": 0, 2903 | "z": 0, 2904 | "w": 1 2905 | }, 2906 | "position": { 2907 | "x": 0, 2908 | "y": 0, 2909 | "z": 0 2910 | }, 2911 | "scale": { 2912 | "x": 1, 2913 | "y": 1, 2914 | "z": 1 2915 | } 2916 | } 2917 | }, 2918 | "eliminator": { 2919 | "id": "083acef5dc5143089768392fb09cb158", 2920 | "isBot": false, 2921 | "location": { 2922 | "rotation": { 2923 | "x": 0, 2924 | "y": 0, 2925 | "z": 0, 2926 | "w": 1 2927 | }, 2928 | "position": { 2929 | "x": 0, 2930 | "y": 0, 2931 | "z": 0 2932 | }, 2933 | "scale": { 2934 | "x": 1, 2935 | "y": 1, 2936 | "z": 1 2937 | } 2938 | } 2939 | }, 2940 | "gunType": "05", 2941 | "knocked": true, 2942 | "timestamp": 231271 2943 | }, 2944 | { 2945 | "eliminated": { 2946 | "id": "40bca9d831ef41bf989196ec0ed00db6", 2947 | "isBot": false, 2948 | "location": { 2949 | "rotation": { 2950 | "x": 0, 2951 | "y": 0, 2952 | "z": 0.32436442375183105, 2953 | "w": 0.9459322094917297 2954 | }, 2955 | "position": { 2956 | "x": 36900.62109375, 2957 | "y": -77401.390625, 2958 | "z": -3395.849853515625 2959 | }, 2960 | "scale": { 2961 | "x": 1, 2962 | "y": 1, 2963 | "z": 1 2964 | } 2965 | } 2966 | }, 2967 | "eliminator": { 2968 | "id": "caeea208d28845b2a73dba61802caf2a", 2969 | "isBot": false, 2970 | "location": { 2971 | "rotation": { 2972 | "x": 0, 2973 | "y": 0, 2974 | "z": -0.9729399681091309, 2975 | "w": 0.23105788230895996 2976 | }, 2977 | "position": { 2978 | "x": 42476.078125, 2979 | "y": -72924.4453125, 2980 | "z": -3371.889892578125 2981 | }, 2982 | "scale": { 2983 | "x": 1, 2984 | "y": 1, 2985 | "z": 1 2986 | } 2987 | } 2988 | }, 2989 | "gunType": "06", 2990 | "knocked": true, 2991 | "timestamp": 235638 2992 | }, 2993 | { 2994 | "eliminated": { 2995 | "name": "Bot", 2996 | "isBot": true, 2997 | "location": { 2998 | "rotation": { 2999 | "x": 0, 3000 | "y": 0, 3001 | "z": 0, 3002 | "w": 1 3003 | }, 3004 | "position": { 3005 | "x": 0, 3006 | "y": 0, 3007 | "z": 0 3008 | }, 3009 | "scale": { 3010 | "x": 1, 3011 | "y": 1, 3012 | "z": 1 3013 | } 3014 | } 3015 | }, 3016 | "eliminator": { 3017 | "id": "c5eb856307784d5693b1803917db9499", 3018 | "isBot": false, 3019 | "location": { 3020 | "rotation": { 3021 | "x": 0, 3022 | "y": 0, 3023 | "z": 0, 3024 | "w": 1 3025 | }, 3026 | "position": { 3027 | "x": 0, 3028 | "y": 0, 3029 | "z": 0 3030 | }, 3031 | "scale": { 3032 | "x": 1, 3033 | "y": 1, 3034 | "z": 1 3035 | } 3036 | } 3037 | }, 3038 | "gunType": "03", 3039 | "knocked": false, 3040 | "timestamp": 237860 3041 | }, 3042 | { 3043 | "eliminated": { 3044 | "id": "ae68e45d82504c638bca89a31b2a07f3", 3045 | "isBot": false, 3046 | "location": { 3047 | "rotation": { 3048 | "x": 0, 3049 | "y": 0, 3050 | "z": 0, 3051 | "w": 1 3052 | }, 3053 | "position": { 3054 | "x": 0, 3055 | "y": 0, 3056 | "z": 0 3057 | }, 3058 | "scale": { 3059 | "x": 1, 3060 | "y": 1, 3061 | "z": 1 3062 | } 3063 | } 3064 | }, 3065 | "eliminator": { 3066 | "id": "70900139b7814cfb91d00a398b8eab78", 3067 | "isBot": false, 3068 | "location": { 3069 | "rotation": { 3070 | "x": 0, 3071 | "y": 0, 3072 | "z": 0, 3073 | "w": 1 3074 | }, 3075 | "position": { 3076 | "x": 0, 3077 | "y": 0, 3078 | "z": 0 3079 | }, 3080 | "scale": { 3081 | "x": 1, 3082 | "y": 1, 3083 | "z": 1 3084 | } 3085 | } 3086 | }, 3087 | "gunType": "04", 3088 | "knocked": true, 3089 | "timestamp": 242754 3090 | }, 3091 | { 3092 | "eliminated": { 3093 | "id": "b51a955f27e44ce6bd2e43a430305a4f", 3094 | "isBot": false, 3095 | "location": { 3096 | "rotation": { 3097 | "x": 0, 3098 | "y": 0, 3099 | "z": 0, 3100 | "w": 1 3101 | }, 3102 | "position": { 3103 | "x": 0, 3104 | "y": 0, 3105 | "z": 0 3106 | }, 3107 | "scale": { 3108 | "x": 1, 3109 | "y": 1, 3110 | "z": 1 3111 | } 3112 | } 3113 | }, 3114 | "eliminator": { 3115 | "id": "083acef5dc5143089768392fb09cb158", 3116 | "isBot": false, 3117 | "location": { 3118 | "rotation": { 3119 | "x": 0, 3120 | "y": 0, 3121 | "z": 0, 3122 | "w": 1 3123 | }, 3124 | "position": { 3125 | "x": 0, 3126 | "y": 0, 3127 | "z": 0 3128 | }, 3129 | "scale": { 3130 | "x": 1, 3131 | "y": 1, 3132 | "z": 1 3133 | } 3134 | } 3135 | }, 3136 | "gunType": "03", 3137 | "knocked": true, 3138 | "timestamp": 244254 3139 | }, 3140 | { 3141 | "eliminated": { 3142 | "id": "b51a955f27e44ce6bd2e43a430305a4f", 3143 | "isBot": false, 3144 | "location": { 3145 | "rotation": { 3146 | "x": 0, 3147 | "y": 0, 3148 | "z": 0, 3149 | "w": 1 3150 | }, 3151 | "position": { 3152 | "x": 0, 3153 | "y": 0, 3154 | "z": 0 3155 | }, 3156 | "scale": { 3157 | "x": 1, 3158 | "y": 1, 3159 | "z": 1 3160 | } 3161 | } 3162 | }, 3163 | "eliminator": { 3164 | "id": "083acef5dc5143089768392fb09cb158", 3165 | "isBot": false, 3166 | "location": { 3167 | "rotation": { 3168 | "x": 0, 3169 | "y": 0, 3170 | "z": 0, 3171 | "w": 1 3172 | }, 3173 | "position": { 3174 | "x": 0, 3175 | "y": 0, 3176 | "z": 0 3177 | }, 3178 | "scale": { 3179 | "x": 1, 3180 | "y": 1, 3181 | "z": 1 3182 | } 3183 | } 3184 | }, 3185 | "gunType": "03", 3186 | "knocked": false, 3187 | "timestamp": 247125 3188 | }, 3189 | { 3190 | "eliminated": { 3191 | "id": "40bca9d831ef41bf989196ec0ed00db6", 3192 | "isBot": false, 3193 | "location": { 3194 | "rotation": { 3195 | "x": 0, 3196 | "y": 0, 3197 | "z": 0.9285058379173279, 3198 | "w": 0.37131792306900024 3199 | }, 3200 | "position": { 3201 | "x": 37464.51953125, 3202 | "y": -77813.6796875, 3203 | "z": -3396.889892578125 3204 | }, 3205 | "scale": { 3206 | "x": 1, 3207 | "y": 1, 3208 | "z": 1 3209 | } 3210 | } 3211 | }, 3212 | "eliminator": { 3213 | "id": "caeea208d28845b2a73dba61802caf2a", 3214 | "isBot": false, 3215 | "location": { 3216 | "rotation": { 3217 | "x": 0, 3218 | "y": 0, 3219 | "z": -0.5341063737869263, 3220 | "w": 0.845417320728302 3221 | }, 3222 | "position": { 3223 | "x": 35067.828125, 3224 | "y": -74736.46875, 3225 | "z": -2559.31982421875 3226 | }, 3227 | "scale": { 3228 | "x": 1, 3229 | "y": 1, 3230 | "z": 1 3231 | } 3232 | } 3233 | }, 3234 | "gunType": "06", 3235 | "knocked": false, 3236 | "timestamp": 258766 3237 | }, 3238 | { 3239 | "eliminated": { 3240 | "id": "b6a0405fd6ba4aaba1d1bd001095a772", 3241 | "isBot": false, 3242 | "location": { 3243 | "rotation": { 3244 | "x": 0, 3245 | "y": 0, 3246 | "z": 0, 3247 | "w": 1 3248 | }, 3249 | "position": { 3250 | "x": 35406.5, 3251 | "y": -75497.03125, 3252 | "z": -2420.654541015625 3253 | }, 3254 | "scale": { 3255 | "x": 1, 3256 | "y": 1, 3257 | "z": 1 3258 | } 3259 | } 3260 | }, 3261 | "eliminator": { 3262 | "id": "caeea208d28845b2a73dba61802caf2a", 3263 | "isBot": false, 3264 | "location": { 3265 | "rotation": { 3266 | "x": 0, 3267 | "y": 0, 3268 | "z": -0.5341063737869263, 3269 | "w": 0.845417320728302 3270 | }, 3271 | "position": { 3272 | "x": 35067.828125, 3273 | "y": -74736.46875, 3274 | "z": -2559.31982421875 3275 | }, 3276 | "scale": { 3277 | "x": 1, 3278 | "y": 1, 3279 | "z": 1 3280 | } 3281 | } 3282 | }, 3283 | "gunType": "03", 3284 | "knocked": false, 3285 | "timestamp": 258766 3286 | }, 3287 | { 3288 | "eliminated": { 3289 | "id": "7e179041c0aa49219a93a9cf25c01e2f", 3290 | "isBot": false, 3291 | "location": { 3292 | "rotation": { 3293 | "x": 0, 3294 | "y": 0, 3295 | "z": 0, 3296 | "w": 1 3297 | }, 3298 | "position": { 3299 | "x": 0, 3300 | "y": 0, 3301 | "z": 0 3302 | }, 3303 | "scale": { 3304 | "x": 1, 3305 | "y": 1, 3306 | "z": 1 3307 | } 3308 | } 3309 | }, 3310 | "eliminator": { 3311 | "id": "4c5eebe9d58544fb9190f9dcbdf24ce9", 3312 | "isBot": false, 3313 | "location": { 3314 | "rotation": { 3315 | "x": 0, 3316 | "y": 0, 3317 | "z": 0, 3318 | "w": 1 3319 | }, 3320 | "position": { 3321 | "x": 0, 3322 | "y": 0, 3323 | "z": 0 3324 | }, 3325 | "scale": { 3326 | "x": 1, 3327 | "y": 1, 3328 | "z": 1 3329 | } 3330 | } 3331 | }, 3332 | "gunType": "03", 3333 | "knocked": false, 3334 | "timestamp": 288971 3335 | }, 3336 | { 3337 | "eliminated": { 3338 | "name": "Bot", 3339 | "isBot": true, 3340 | "location": { 3341 | "rotation": { 3342 | "x": 0, 3343 | "y": 0, 3344 | "z": 0, 3345 | "w": 1 3346 | }, 3347 | "position": { 3348 | "x": 0, 3349 | "y": 0, 3350 | "z": 0 3351 | }, 3352 | "scale": { 3353 | "x": 1, 3354 | "y": 1, 3355 | "z": 1 3356 | } 3357 | } 3358 | }, 3359 | "eliminator": { 3360 | "name": "Bot", 3361 | "isBot": true, 3362 | "location": { 3363 | "rotation": { 3364 | "x": 0, 3365 | "y": 0, 3366 | "z": 0, 3367 | "w": 1 3368 | }, 3369 | "position": { 3370 | "x": 0, 3371 | "y": 0, 3372 | "z": 0 3373 | }, 3374 | "scale": { 3375 | "x": 1, 3376 | "y": 1, 3377 | "z": 1 3378 | } 3379 | } 3380 | }, 3381 | "gunType": "06", 3382 | "knocked": true, 3383 | "timestamp": 289677 3384 | }, 3385 | { 3386 | "eliminated": { 3387 | "name": "Bot", 3388 | "isBot": true, 3389 | "location": { 3390 | "rotation": { 3391 | "x": 0, 3392 | "y": 0, 3393 | "z": 0, 3394 | "w": 1 3395 | }, 3396 | "position": { 3397 | "x": 0, 3398 | "y": 0, 3399 | "z": 0 3400 | }, 3401 | "scale": { 3402 | "x": 1, 3403 | "y": 1, 3404 | "z": 1 3405 | } 3406 | } 3407 | }, 3408 | "eliminator": { 3409 | "id": "5a1355a767194b88a801439bc1e13c21", 3410 | "isBot": false, 3411 | "location": { 3412 | "rotation": { 3413 | "x": 0, 3414 | "y": 0, 3415 | "z": 0, 3416 | "w": 1 3417 | }, 3418 | "position": { 3419 | "x": 0, 3420 | "y": 0, 3421 | "z": 0 3422 | }, 3423 | "scale": { 3424 | "x": 1, 3425 | "y": 1, 3426 | "z": 1 3427 | } 3428 | } 3429 | }, 3430 | "gunType": "05", 3431 | "knocked": true, 3432 | "timestamp": 291083 3433 | } 3434 | ], 3435 | "additionGfps": [], 3436 | "safeZones": [], 3437 | "playerPositions": {} 3438 | } 3439 | -------------------------------------------------------------------------------- /test/results/client-22.00.json: -------------------------------------------------------------------------------- 1 | { 2 | "meta": { 3 | "magic": 480436863, 4 | "fileVersion": 6, 5 | "lengthInMs": 161391, 6 | "networkVersion": 2, 7 | "changelist": 22149829, 8 | "name": "Unsaved Replay", 9 | "isLive": false, 10 | "timestamp": "2022-09-26T23:26:27.418Z", 11 | "isCompressed": true 12 | }, 13 | "header": { 14 | "magic": 754295101, 15 | "networkVersion": 18, 16 | "networkChecksum": 82819646, 17 | "engineNetworkVersion": 27, 18 | "gameNetworkProtocol": 0, 19 | "id": "c2e1f2e2061e5541b2c6ed8e694d4bfd", 20 | "version": { 21 | "branch": "++Fortnite+Release-22.00", 22 | "major": 22, 23 | "minor": 0, 24 | "changelist": 22149829, 25 | "patch": 0 26 | }, 27 | "fileVersionUE4": 522, 28 | "fileVersionUE5": 1006, 29 | "packageVersionLicenseeUe": 0, 30 | "levelNamesAndTimes": { 31 | "/Game/Athena/Artemis/Maps/Artemis_Terrain": 0 32 | }, 33 | "flags": 139, 34 | "gameSpecificData": [ 35 | "SubGame=Athena" 36 | ] 37 | }, 38 | "matchStats": { 39 | "accuracy": 0.2857142984867096, 40 | "assists": 0, 41 | "eliminations": 0, 42 | "weaponDamage": 174, 43 | "otherDamage": 43, 44 | "revives": 0, 45 | "damageTaken": 116, 46 | "damageToStructures": 2294, 47 | "materialsGathered": 292, 48 | "materialsUsed": 20, 49 | "totalTraveled": 0 50 | }, 51 | "teamMatchStats": { 52 | "position": 37, 53 | "totalPlayers": 95 54 | }, 55 | "eliminations": [ 56 | { 57 | "eliminated": { 58 | "id": "3115617ff5fa473b9363202cfb10816e", 59 | "isBot": false, 60 | "location": { 61 | "rotation": { 62 | "x": 0, 63 | "y": 0, 64 | "z": 0, 65 | "w": 1 66 | }, 67 | "position": { 68 | "x": -97948.5078125, 69 | "y": 236764.734375, 70 | "z": 795.2192821502686 71 | }, 72 | "scale": { 73 | "x": 1, 74 | "y": 1, 75 | "z": 1 76 | } 77 | } 78 | }, 79 | "eliminator": { 80 | "id": "3115617ff5fa473b9363202cfb10816e", 81 | "isBot": false, 82 | "location": { 83 | "rotation": { 84 | "x": 0, 85 | "y": 0, 86 | "z": -0.9963126121827779, 87 | "w": 0.08579731234443966 88 | }, 89 | "position": { 90 | "x": -97948.51000000001, 91 | "y": 236764.73, 92 | "z": 795.22 93 | }, 94 | "scale": { 95 | "x": 1, 96 | "y": 1, 97 | "z": 1 98 | } 99 | } 100 | }, 101 | "gunType": "32", 102 | "knocked": false, 103 | "timestamp": 18102 104 | }, 105 | { 106 | "eliminated": { 107 | "id": "f2eed96af132448d9563ac6cc1f2048c", 108 | "isBot": false, 109 | "location": { 110 | "rotation": { 111 | "x": 0, 112 | "y": 0, 113 | "z": 0, 114 | "w": 1 115 | }, 116 | "position": { 117 | "x": -97981.171875, 118 | "y": 220193.265625, 119 | "z": 84.1054916381836 120 | }, 121 | "scale": { 122 | "x": 1, 123 | "y": 1, 124 | "z": 1 125 | } 126 | } 127 | }, 128 | "eliminator": { 129 | "id": "f2eed96af132448d9563ac6cc1f2048c", 130 | "isBot": false, 131 | "location": { 132 | "rotation": { 133 | "x": 0, 134 | "y": 0, 135 | "z": 0, 136 | "w": 1 137 | }, 138 | "position": { 139 | "x": 0, 140 | "y": 0, 141 | "z": 0 142 | }, 143 | "scale": { 144 | "x": 1, 145 | "y": 1, 146 | "z": 1 147 | } 148 | } 149 | }, 150 | "gunType": "32", 151 | "knocked": false, 152 | "timestamp": 28020 153 | }, 154 | { 155 | "eliminated": { 156 | "id": "52b9aca0e78c452285d50f87ba671387", 157 | "isBot": false, 158 | "location": { 159 | "rotation": { 160 | "x": 0, 161 | "y": 0, 162 | "z": 0, 163 | "w": 1 164 | }, 165 | "position": { 166 | "x": -8771.144988893528, 167 | "y": -27907.274781423814, 168 | "z": 3157.149997446568 169 | }, 170 | "scale": { 171 | "x": 1, 172 | "y": 1, 173 | "z": 1 174 | } 175 | } 176 | }, 177 | "eliminator": { 178 | "id": "53aebfd39bb442218554942809b4e951", 179 | "isBot": false, 180 | "location": { 181 | "rotation": { 182 | "x": 0, 183 | "y": 0, 184 | "z": 0, 185 | "w": 1 186 | }, 187 | "position": { 188 | "x": 0, 189 | "y": 0, 190 | "z": 0 191 | }, 192 | "scale": { 193 | "x": 1, 194 | "y": 1, 195 | "z": 1 196 | } 197 | } 198 | }, 199 | "gunType": "05", 200 | "knocked": true, 201 | "timestamp": 78825 202 | }, 203 | { 204 | "eliminated": { 205 | "id": "1ce375794fb043a2b09ef19277dcf83e", 206 | "isBot": false, 207 | "location": { 208 | "rotation": { 209 | "x": 0, 210 | "y": 0, 211 | "z": 0, 212 | "w": 1 213 | }, 214 | "position": { 215 | "x": -42333.75618211016, 216 | "y": -741.6541176754654, 217 | "z": 2931.048378757654 218 | }, 219 | "scale": { 220 | "x": 1, 221 | "y": 1, 222 | "z": 1 223 | } 224 | } 225 | }, 226 | "eliminator": { 227 | "id": "7fe423287a064a10a4adfa8f963981f8", 228 | "isBot": false, 229 | "location": { 230 | "rotation": { 231 | "x": 0, 232 | "y": 0, 233 | "z": 0, 234 | "w": 1 235 | }, 236 | "position": { 237 | "x": 0, 238 | "y": 0, 239 | "z": 0 240 | }, 241 | "scale": { 242 | "x": 1, 243 | "y": 1, 244 | "z": 1 245 | } 246 | } 247 | }, 248 | "gunType": "03", 249 | "knocked": false, 250 | "timestamp": 80794 251 | }, 252 | { 253 | "eliminated": { 254 | "id": "442d0f0113154a7e8a71dba5ba11bb49", 255 | "isBot": false, 256 | "location": { 257 | "rotation": { 258 | "x": 0, 259 | "y": 0, 260 | "z": 0, 261 | "w": 1 262 | }, 263 | "position": { 264 | "x": -53506.734221243176, 265 | "y": -1703.1927136301244, 266 | "z": 1982.221337666097 267 | }, 268 | "scale": { 269 | "x": 1, 270 | "y": 1, 271 | "z": 1 272 | } 273 | } 274 | }, 275 | "eliminator": { 276 | "id": "800d947b1527440bb32d8bd63ba8fb6c", 277 | "isBot": false, 278 | "location": { 279 | "rotation": { 280 | "x": 0, 281 | "y": 0, 282 | "z": 0, 283 | "w": 1 284 | }, 285 | "position": { 286 | "x": 0, 287 | "y": 0, 288 | "z": 0 289 | }, 290 | "scale": { 291 | "x": 1, 292 | "y": 1, 293 | "z": 1 294 | } 295 | } 296 | }, 297 | "gunType": "04", 298 | "knocked": true, 299 | "timestamp": 82252 300 | }, 301 | { 302 | "eliminated": { 303 | "id": "52b9aca0e78c452285d50f87ba671387", 304 | "isBot": false, 305 | "location": { 306 | "rotation": { 307 | "x": 0, 308 | "y": 0, 309 | "z": 0, 310 | "w": 1 311 | }, 312 | "position": { 313 | "x": -8856.585721908767, 314 | "y": -28099.550244408412, 315 | "z": 3132.149997446568 316 | }, 317 | "scale": { 318 | "x": 1, 319 | "y": 1, 320 | "z": 1 321 | } 322 | } 323 | }, 324 | "eliminator": { 325 | "id": "53aebfd39bb442218554942809b4e951", 326 | "isBot": false, 327 | "location": { 328 | "rotation": { 329 | "x": 0, 330 | "y": 0, 331 | "z": 0, 332 | "w": 1 333 | }, 334 | "position": { 335 | "x": 0, 336 | "y": 0, 337 | "z": 0 338 | }, 339 | "scale": { 340 | "x": 1, 341 | "y": 1, 342 | "z": 1 343 | } 344 | } 345 | }, 346 | "gunType": "05", 347 | "knocked": false, 348 | "timestamp": 82609 349 | }, 350 | { 351 | "eliminated": { 352 | "id": "2b94b8c2618d4fa296fd2c792a20701d", 353 | "isBot": false, 354 | "location": { 355 | "rotation": { 356 | "x": 0, 357 | "y": 0, 358 | "z": 0, 359 | "w": 1 360 | }, 361 | "position": { 362 | "x": -6928.84214477788, 363 | "y": -22296.71455174232, 364 | "z": 2005.3419478641636 365 | }, 366 | "scale": { 367 | "x": 1, 368 | "y": 1, 369 | "z": 1 370 | } 371 | } 372 | }, 373 | "eliminator": { 374 | "id": "e3f7826dd9c94ebe838d6e0803974bea", 375 | "isBot": false, 376 | "location": { 377 | "rotation": { 378 | "x": 0, 379 | "y": 0, 380 | "z": 0, 381 | "w": 1 382 | }, 383 | "position": { 384 | "x": 0, 385 | "y": 0, 386 | "z": 0 387 | }, 388 | "scale": { 389 | "x": 1, 390 | "y": 1, 391 | "z": 1 392 | } 393 | } 394 | }, 395 | "gunType": "05", 396 | "knocked": true, 397 | "timestamp": 83968 398 | }, 399 | { 400 | "eliminated": { 401 | "id": "6a4a2db1b8a2447386685ccdc6016125", 402 | "isBot": false, 403 | "location": { 404 | "rotation": { 405 | "x": 0, 406 | "y": 0, 407 | "z": 0, 408 | "w": 1 409 | }, 410 | "position": { 411 | "x": -13938.12546845311, 412 | "y": -25217.98311071448, 413 | "z": 2062.7746077646552 414 | }, 415 | "scale": { 416 | "x": 1, 417 | "y": 1, 418 | "z": 1 419 | } 420 | } 421 | }, 422 | "eliminator": { 423 | "id": "3ee27f0ff5b6403783235c37e09de82b", 424 | "isBot": false, 425 | "location": { 426 | "rotation": { 427 | "x": 0, 428 | "y": 0, 429 | "z": 0, 430 | "w": 1 431 | }, 432 | "position": { 433 | "x": 0, 434 | "y": 0, 435 | "z": 0 436 | }, 437 | "scale": { 438 | "x": 1, 439 | "y": 1, 440 | "z": 1 441 | } 442 | } 443 | }, 444 | "gunType": "05", 445 | "knocked": true, 446 | "timestamp": 84375 447 | }, 448 | { 449 | "eliminated": { 450 | "id": "daab96ff76d14d41acf51806cddca9e3", 451 | "isBot": false, 452 | "location": { 453 | "rotation": { 454 | "x": 0, 455 | "y": 0, 456 | "z": 0, 457 | "w": 1 458 | }, 459 | "position": { 460 | "x": -13616.418257213785, 461 | "y": -29468.439667370396, 462 | "z": 3213.26397434256 463 | }, 464 | "scale": { 465 | "x": 1, 466 | "y": 1, 467 | "z": 1 468 | } 469 | } 470 | }, 471 | "eliminator": { 472 | "id": "9cd3609421074aaba6d5c32182c8d428", 473 | "isBot": false, 474 | "location": { 475 | "rotation": { 476 | "x": 0, 477 | "y": 0, 478 | "z": 0, 479 | "w": 1 480 | }, 481 | "position": { 482 | "x": 0, 483 | "y": 0, 484 | "z": 0 485 | }, 486 | "scale": { 487 | "x": 1, 488 | "y": 1, 489 | "z": 1 490 | } 491 | } 492 | }, 493 | "gunType": "06", 494 | "knocked": true, 495 | "timestamp": 85113 496 | }, 497 | { 498 | "eliminated": { 499 | "id": "800d947b1527440bb32d8bd63ba8fb6c", 500 | "isBot": false, 501 | "location": { 502 | "rotation": { 503 | "x": 0, 504 | "y": 0, 505 | "z": 0, 506 | "w": 1 507 | }, 508 | "position": { 509 | "x": -52877.42329964842, 510 | "y": -2994.806247847801, 511 | "z": 1980.1500052348297 512 | }, 513 | "scale": { 514 | "x": 1, 515 | "y": 1, 516 | "z": 1 517 | } 518 | } 519 | }, 520 | "eliminator": { 521 | "id": "f388325580f2444d9f07ecc7529bc698", 522 | "isBot": false, 523 | "location": { 524 | "rotation": { 525 | "x": 0, 526 | "y": 0, 527 | "z": 0, 528 | "w": 1 529 | }, 530 | "position": { 531 | "x": 0, 532 | "y": 0, 533 | "z": 0 534 | }, 535 | "scale": { 536 | "x": 1, 537 | "y": 1, 538 | "z": 1 539 | } 540 | } 541 | }, 542 | "gunType": "05", 543 | "knocked": false, 544 | "timestamp": 85467 545 | }, 546 | { 547 | "eliminated": { 548 | "id": "e3f7826dd9c94ebe838d6e0803974bea", 549 | "isBot": false, 550 | "location": { 551 | "rotation": { 552 | "x": 0, 553 | "y": 0, 554 | "z": 0, 555 | "w": 1 556 | }, 557 | "position": { 558 | "x": -8891.413723945334, 559 | "y": -21464.50693801024, 560 | "z": 4188.597961425703 561 | }, 562 | "scale": { 563 | "x": 1, 564 | "y": 1, 565 | "z": 1 566 | } 567 | } 568 | }, 569 | "eliminator": { 570 | "id": "db5dbe38a32442df83cfc238f7d60084", 571 | "isBot": false, 572 | "location": { 573 | "rotation": { 574 | "x": 0, 575 | "y": 0, 576 | "z": 0, 577 | "w": 1 578 | }, 579 | "position": { 580 | "x": 0, 581 | "y": 0, 582 | "z": 0 583 | }, 584 | "scale": { 585 | "x": 1, 586 | "y": 1, 587 | "z": 1 588 | } 589 | } 590 | }, 591 | "gunType": "04", 592 | "knocked": true, 593 | "timestamp": 88020 594 | }, 595 | { 596 | "eliminated": { 597 | "id": "de5c785985da4c278076e017cc65fb48", 598 | "isBot": false, 599 | "location": { 600 | "rotation": { 601 | "x": 0, 602 | "y": 0, 603 | "z": 0, 604 | "w": 1 605 | }, 606 | "position": { 607 | "x": 28890.772546276512, 608 | "y": 18887.998685845425, 609 | "z": 2302.8698094442057 610 | }, 611 | "scale": { 612 | "x": 1, 613 | "y": 1, 614 | "z": 1 615 | } 616 | } 617 | }, 618 | "eliminator": { 619 | "id": "06c8f88c94c74fbbac9640f73bcd6170", 620 | "isBot": false, 621 | "location": { 622 | "rotation": { 623 | "x": 0, 624 | "y": 0, 625 | "z": 0, 626 | "w": 1 627 | }, 628 | "position": { 629 | "x": 0, 630 | "y": 0, 631 | "z": 0 632 | }, 633 | "scale": { 634 | "x": 1, 635 | "y": 1, 636 | "z": 1 637 | } 638 | } 639 | }, 640 | "gunType": "03", 641 | "knocked": true, 642 | "timestamp": 88093 643 | }, 644 | { 645 | "eliminated": { 646 | "id": "daab96ff76d14d41acf51806cddca9e3", 647 | "isBot": false, 648 | "location": { 649 | "rotation": { 650 | "x": 0, 651 | "y": 0, 652 | "z": 0, 653 | "w": 1 654 | }, 655 | "position": { 656 | "x": -13601.166555553058, 657 | "y": -29566.603804298255, 658 | "z": 3188.279974851822 659 | }, 660 | "scale": { 661 | "x": 1, 662 | "y": 1, 663 | "z": 1 664 | } 665 | } 666 | }, 667 | "eliminator": { 668 | "id": "9cd3609421074aaba6d5c32182c8d428", 669 | "isBot": false, 670 | "location": { 671 | "rotation": { 672 | "x": 0, 673 | "y": 0, 674 | "z": 0, 675 | "w": 1 676 | }, 677 | "position": { 678 | "x": 0, 679 | "y": 0, 680 | "z": 0 681 | }, 682 | "scale": { 683 | "x": 1, 684 | "y": 1, 685 | "z": 1 686 | } 687 | } 688 | }, 689 | "gunType": "06", 690 | "knocked": false, 691 | "timestamp": 88895 692 | }, 693 | { 694 | "eliminated": { 695 | "id": "de5c785985da4c278076e017cc65fb48", 696 | "isBot": false, 697 | "location": { 698 | "rotation": { 699 | "x": 0, 700 | "y": 0, 701 | "z": 0, 702 | "w": 1 703 | }, 704 | "position": { 705 | "x": 28800.583806321938, 706 | "y": 18751.721627428873, 707 | "z": 1212.1500074538578 708 | }, 709 | "scale": { 710 | "x": 1, 711 | "y": 1, 712 | "z": 1 713 | } 714 | } 715 | }, 716 | "eliminator": { 717 | "id": "06c8f88c94c74fbbac9640f73bcd6170", 718 | "isBot": false, 719 | "location": { 720 | "rotation": { 721 | "x": 0, 722 | "y": 0, 723 | "z": 0, 724 | "w": 1 725 | }, 726 | "position": { 727 | "x": 0, 728 | "y": 0, 729 | "z": 0 730 | }, 731 | "scale": { 732 | "x": 1, 733 | "y": 1, 734 | "z": 1 735 | } 736 | } 737 | }, 738 | "gunType": "03", 739 | "knocked": false, 740 | "timestamp": 91727 741 | }, 742 | { 743 | "eliminated": { 744 | "id": "6a4a2db1b8a2447386685ccdc6016125", 745 | "isBot": false, 746 | "location": { 747 | "rotation": { 748 | "x": 0, 749 | "y": 0, 750 | "z": 0, 751 | "w": 1 752 | }, 753 | "position": { 754 | "x": -13920.198248760305, 755 | "y": -25209.57510343921, 756 | "z": 2056.7329117801173 757 | }, 758 | "scale": { 759 | "x": 1, 760 | "y": 1, 761 | "z": 1 762 | } 763 | } 764 | }, 765 | "eliminator": { 766 | "id": "3ee27f0ff5b6403783235c37e09de82b", 767 | "isBot": false, 768 | "location": { 769 | "rotation": { 770 | "x": 0, 771 | "y": 0, 772 | "z": 0, 773 | "w": 1 774 | }, 775 | "position": { 776 | "x": 0, 777 | "y": 0, 778 | "z": 0 779 | }, 780 | "scale": { 781 | "x": 1, 782 | "y": 1, 783 | "z": 1 784 | } 785 | } 786 | }, 787 | "gunType": "05", 788 | "knocked": false, 789 | "timestamp": 91793 790 | }, 791 | { 792 | "eliminated": { 793 | "id": "5191e3ea0e094d3ca8ff8858db89a480", 794 | "isBot": false, 795 | "location": { 796 | "rotation": { 797 | "x": 0, 798 | "y": 0, 799 | "z": 0, 800 | "w": 1 801 | }, 802 | "position": { 803 | "x": -43005.92395939006, 804 | "y": 704.9686550653048, 805 | "z": 2005.1500137778012 806 | }, 807 | "scale": { 808 | "x": 1, 809 | "y": 1, 810 | "z": 1 811 | } 812 | } 813 | }, 814 | "eliminator": { 815 | "id": "609df92c00e34338b7ad4d2bb478cf06", 816 | "isBot": false, 817 | "location": { 818 | "rotation": { 819 | "x": 0, 820 | "y": 0, 821 | "z": 0, 822 | "w": 1 823 | }, 824 | "position": { 825 | "x": 0, 826 | "y": 0, 827 | "z": 0 828 | }, 829 | "scale": { 830 | "x": 1, 831 | "y": 1, 832 | "z": 1 833 | } 834 | } 835 | }, 836 | "gunType": "02", 837 | "knocked": true, 838 | "timestamp": 92143 839 | }, 840 | { 841 | "eliminated": { 842 | "id": "131d3ff56b4d40258b1bcd7830d7939e", 843 | "isBot": false, 844 | "location": { 845 | "rotation": { 846 | "x": 0, 847 | "y": 0, 848 | "z": 0, 849 | "w": 1 850 | }, 851 | "position": { 852 | "x": -9358.406021868444, 853 | "y": -30717.28035208003, 854 | "z": 3283.270218007713 855 | }, 856 | "scale": { 857 | "x": 1, 858 | "y": 1, 859 | "z": 1 860 | } 861 | } 862 | }, 863 | "eliminator": { 864 | "id": "b7c4b429916c448984be9ea2ee7037c8", 865 | "isBot": false, 866 | "location": { 867 | "rotation": { 868 | "x": 0, 869 | "y": 0, 870 | "z": 0, 871 | "w": 1 872 | }, 873 | "position": { 874 | "x": 0, 875 | "y": 0, 876 | "z": 0 877 | }, 878 | "scale": { 879 | "x": 1, 880 | "y": 1, 881 | "z": 1 882 | } 883 | } 884 | }, 885 | "gunType": "05", 886 | "knocked": false, 887 | "timestamp": 92790 888 | }, 889 | { 890 | "eliminated": { 891 | "id": "442d0f0113154a7e8a71dba5ba11bb49", 892 | "isBot": false, 893 | "location": { 894 | "rotation": { 895 | "x": 0, 896 | "y": 0, 897 | "z": 0, 898 | "w": 1 899 | }, 900 | "position": { 901 | "x": -53078.21256561935, 902 | "y": -858.5301544178164, 903 | "z": 1980.1639620011179 904 | }, 905 | "scale": { 906 | "x": 1, 907 | "y": 1, 908 | "z": 1 909 | } 910 | } 911 | }, 912 | "eliminator": { 913 | "id": "f388325580f2444d9f07ecc7529bc698", 914 | "isBot": false, 915 | "location": { 916 | "rotation": { 917 | "x": 0, 918 | "y": 0, 919 | "z": 0, 920 | "w": 1 921 | }, 922 | "position": { 923 | "x": 0, 924 | "y": 0, 925 | "z": 0 926 | }, 927 | "scale": { 928 | "x": 1, 929 | "y": 1, 930 | "z": 1 931 | } 932 | } 933 | }, 934 | "gunType": "04", 935 | "knocked": false, 936 | "timestamp": 93202 937 | }, 938 | { 939 | "eliminated": { 940 | "id": "5e2def2be6ea438797dd6d41fd720289", 941 | "isBot": false, 942 | "location": { 943 | "rotation": { 944 | "x": 0, 945 | "y": 0, 946 | "z": 0, 947 | "w": 1 948 | }, 949 | "position": { 950 | "x": 24218.587523291353, 951 | "y": 15369.325765931811, 952 | "z": 1376.7081762474318 953 | }, 954 | "scale": { 955 | "x": 1, 956 | "y": 1, 957 | "z": 1 958 | } 959 | } 960 | }, 961 | "eliminator": { 962 | "id": "a53fd9620cee4033ad98a261f98db436", 963 | "isBot": false, 964 | "location": { 965 | "rotation": { 966 | "x": 0, 967 | "y": 0, 968 | "z": 0, 969 | "w": 1 970 | }, 971 | "position": { 972 | "x": 0, 973 | "y": 0, 974 | "z": 0 975 | }, 976 | "scale": { 977 | "x": 1, 978 | "y": 1, 979 | "z": 1 980 | } 981 | } 982 | }, 983 | "gunType": "05", 984 | "knocked": false, 985 | "timestamp": 95504 986 | }, 987 | { 988 | "eliminated": { 989 | "id": "e3f7826dd9c94ebe838d6e0803974bea", 990 | "isBot": false, 991 | "location": { 992 | "rotation": { 993 | "x": 0, 994 | "y": 0, 995 | "z": 0, 996 | "w": 1 997 | }, 998 | "position": { 999 | "x": -9041.66729992434, 1000 | "y": -21298.015284849313, 1001 | "z": 3998.8464236429672 1002 | }, 1003 | "scale": { 1004 | "x": 1, 1005 | "y": 1, 1006 | "z": 1 1007 | } 1008 | } 1009 | }, 1010 | "eliminator": { 1011 | "id": "db5dbe38a32442df83cfc238f7d60084", 1012 | "isBot": false, 1013 | "location": { 1014 | "rotation": { 1015 | "x": 0, 1016 | "y": 0, 1017 | "z": 0, 1018 | "w": 1 1019 | }, 1020 | "position": { 1021 | "x": 0, 1022 | "y": 0, 1023 | "z": 0 1024 | }, 1025 | "scale": { 1026 | "x": 1, 1027 | "y": 1, 1028 | "z": 1 1029 | } 1030 | } 1031 | }, 1032 | "gunType": "04", 1033 | "knocked": false, 1034 | "timestamp": 95504 1035 | }, 1036 | { 1037 | "eliminated": { 1038 | "id": "5191e3ea0e094d3ca8ff8858db89a480", 1039 | "isBot": false, 1040 | "location": { 1041 | "rotation": { 1042 | "x": 0, 1043 | "y": 0, 1044 | "z": 0, 1045 | "w": 1 1046 | }, 1047 | "position": { 1048 | "x": -42595.261181181944, 1049 | "y": 414.6254814806044, 1050 | "z": 1980.150003948783 1051 | }, 1052 | "scale": { 1053 | "x": 1, 1054 | "y": 1, 1055 | "z": 1 1056 | } 1057 | } 1058 | }, 1059 | "eliminator": { 1060 | "id": "609df92c00e34338b7ad4d2bb478cf06", 1061 | "isBot": false, 1062 | "location": { 1063 | "rotation": { 1064 | "x": 0, 1065 | "y": 0, 1066 | "z": 0, 1067 | "w": 1 1068 | }, 1069 | "position": { 1070 | "x": 0, 1071 | "y": 0, 1072 | "z": 0 1073 | }, 1074 | "scale": { 1075 | "x": 1, 1076 | "y": 1, 1077 | "z": 1 1078 | } 1079 | } 1080 | }, 1081 | "gunType": "02", 1082 | "knocked": false, 1083 | "timestamp": 95976 1084 | }, 1085 | { 1086 | "eliminated": { 1087 | "id": "7fe423287a064a10a4adfa8f963981f8", 1088 | "isBot": false, 1089 | "location": { 1090 | "rotation": { 1091 | "x": 0, 1092 | "y": 0, 1093 | "z": 0, 1094 | "w": 1 1095 | }, 1096 | "position": { 1097 | "x": -42997.1734747081, 1098 | "y": 566.8556164191532, 1099 | "z": 2005.1500018667698 1100 | }, 1101 | "scale": { 1102 | "x": 1, 1103 | "y": 1, 1104 | "z": 1 1105 | } 1106 | } 1107 | }, 1108 | "eliminator": { 1109 | "id": "609df92c00e34338b7ad4d2bb478cf06", 1110 | "isBot": false, 1111 | "location": { 1112 | "rotation": { 1113 | "x": 0, 1114 | "y": 0, 1115 | "z": 0, 1116 | "w": 1 1117 | }, 1118 | "position": { 1119 | "x": 0, 1120 | "y": 0, 1121 | "z": 0 1122 | }, 1123 | "scale": { 1124 | "x": 1, 1125 | "y": 1, 1126 | "z": 1 1127 | } 1128 | } 1129 | }, 1130 | "gunType": "02", 1131 | "knocked": false, 1132 | "timestamp": 96592 1133 | }, 1134 | { 1135 | "eliminated": { 1136 | "id": "3055a75bf944484fbc14d64fc85fd0f4", 1137 | "isBot": false, 1138 | "location": { 1139 | "rotation": { 1140 | "x": 0, 1141 | "y": 0, 1142 | "z": 0, 1143 | "w": 1 1144 | }, 1145 | "position": { 1146 | "x": -58768.94226351613, 1147 | "y": -11442.096616512968, 1148 | "z": 2674.839853198651 1149 | }, 1150 | "scale": { 1151 | "x": 1, 1152 | "y": 1, 1153 | "z": 1 1154 | } 1155 | } 1156 | }, 1157 | "eliminator": { 1158 | "id": "4fb1d75914dc4b57bdb8dab6bd363ddd", 1159 | "isBot": false, 1160 | "location": { 1161 | "rotation": { 1162 | "x": 0, 1163 | "y": 0, 1164 | "z": 0, 1165 | "w": 1 1166 | }, 1167 | "position": { 1168 | "x": 0, 1169 | "y": 0, 1170 | "z": 0 1171 | }, 1172 | "scale": { 1173 | "x": 1, 1174 | "y": 1, 1175 | "z": 1 1176 | } 1177 | } 1178 | }, 1179 | "gunType": "02", 1180 | "knocked": true, 1181 | "timestamp": 100033 1182 | }, 1183 | { 1184 | "eliminated": { 1185 | "id": "a92ef8d574e74cbeb9ef744e547b9db2", 1186 | "isBot": false, 1187 | "location": { 1188 | "rotation": { 1189 | "x": 0, 1190 | "y": 0, 1191 | "z": 0, 1192 | "w": 1 1193 | }, 1194 | "position": { 1195 | "x": 55404.24129273895, 1196 | "y": -9736.348223250714, 1197 | "z": 3891.93571607032 1198 | }, 1199 | "scale": { 1200 | "x": 1, 1201 | "y": 1, 1202 | "z": 1 1203 | } 1204 | } 1205 | }, 1206 | "eliminator": { 1207 | "id": "c3bdcba205714b0f82225a1f6ab1f3ef", 1208 | "isBot": false, 1209 | "location": { 1210 | "rotation": { 1211 | "x": 0, 1212 | "y": 0, 1213 | "z": 0.7325038598175055, 1214 | "w": 0.6807628774782423 1215 | }, 1216 | "position": { 1217 | "x": 55344.130000000005, 1218 | "y": -9943.58, 1219 | "z": 3891.94 1220 | }, 1221 | "scale": { 1222 | "x": 1, 1223 | "y": 1, 1224 | "z": 1 1225 | } 1226 | } 1227 | }, 1228 | "gunType": "02", 1229 | "knocked": true, 1230 | "timestamp": 100835 1231 | }, 1232 | { 1233 | "eliminated": { 1234 | "id": "a92ef8d574e74cbeb9ef744e547b9db2", 1235 | "isBot": false, 1236 | "location": { 1237 | "rotation": { 1238 | "x": 0, 1239 | "y": 0, 1240 | "z": 0, 1241 | "w": 1 1242 | }, 1243 | "position": { 1244 | "x": 55280.93150848969, 1245 | "y": -9658.060261899207, 1246 | "z": 3892.1402994644095 1247 | }, 1248 | "scale": { 1249 | "x": 1, 1250 | "y": 1, 1251 | "z": 1 1252 | } 1253 | } 1254 | }, 1255 | "eliminator": { 1256 | "id": "c3bdcba205714b0f82225a1f6ab1f3ef", 1257 | "isBot": false, 1258 | "location": { 1259 | "rotation": { 1260 | "x": 0, 1261 | "y": 0, 1262 | "z": 0.8981303080615369, 1263 | "w": 0.43972940513603187 1264 | }, 1265 | "position": { 1266 | "x": 55276.450000000004, 1267 | "y": -9585.2, 1268 | "z": 3916.9700000000003 1269 | }, 1270 | "scale": { 1271 | "x": 1, 1272 | "y": 1, 1273 | "z": 1 1274 | } 1275 | } 1276 | }, 1277 | "gunType": "02", 1278 | "knocked": false, 1279 | "timestamp": 103863 1280 | }, 1281 | { 1282 | "eliminated": { 1283 | "id": "ea1b6b38391b4497a429a38ea710c353", 1284 | "isBot": false, 1285 | "location": { 1286 | "rotation": { 1287 | "x": 0, 1288 | "y": 0, 1289 | "z": 0, 1290 | "w": 1 1291 | }, 1292 | "position": { 1293 | "x": -5502.368740616107, 1294 | "y": -30726.34959913155, 1295 | "z": 2825.3055308300645 1296 | }, 1297 | "scale": { 1298 | "x": 1, 1299 | "y": 1, 1300 | "z": 1 1301 | } 1302 | } 1303 | }, 1304 | "eliminator": { 1305 | "id": "08b7950f9368426d8290ba221a1ed879", 1306 | "isBot": false, 1307 | "location": { 1308 | "rotation": { 1309 | "x": 0, 1310 | "y": 0, 1311 | "z": 0, 1312 | "w": 1 1313 | }, 1314 | "position": { 1315 | "x": 0, 1316 | "y": 0, 1317 | "z": 0 1318 | }, 1319 | "scale": { 1320 | "x": 1, 1321 | "y": 1, 1322 | "z": 1 1323 | } 1324 | } 1325 | }, 1326 | "gunType": "04", 1327 | "knocked": true, 1328 | "timestamp": 107608 1329 | }, 1330 | { 1331 | "eliminated": { 1332 | "id": "1eabd20f3142491fa1fcbaed216fea68", 1333 | "isBot": false, 1334 | "location": { 1335 | "rotation": { 1336 | "x": 0, 1337 | "y": 0, 1338 | "z": 0, 1339 | "w": 1 1340 | }, 1341 | "position": { 1342 | "x": 57551.30918730722, 1343 | "y": -15058.97749361092, 1344 | "z": 3534.256829242827 1345 | }, 1346 | "scale": { 1347 | "x": 1, 1348 | "y": 1, 1349 | "z": 1 1350 | } 1351 | } 1352 | }, 1353 | "eliminator": { 1354 | "id": "61585506e8d44c7f9052dee04ea55739", 1355 | "isBot": false, 1356 | "location": { 1357 | "rotation": { 1358 | "x": 0, 1359 | "y": 0, 1360 | "z": 0.5443124376149187, 1361 | "w": 0.8388825723888328 1362 | }, 1363 | "position": { 1364 | "x": 57357.96, 1365 | "y": -15498.380000000001, 1366 | "z": 3533.54 1367 | }, 1368 | "scale": { 1369 | "x": 1, 1370 | "y": 1, 1371 | "z": 1 1372 | } 1373 | } 1374 | }, 1375 | "gunType": "02", 1376 | "knocked": true, 1377 | "timestamp": 109373 1378 | }, 1379 | { 1380 | "eliminated": { 1381 | "id": "9c1cc934359841e2a7fae89ab22d9227", 1382 | "isBot": false, 1383 | "location": { 1384 | "rotation": { 1385 | "x": 0, 1386 | "y": 0, 1387 | "z": 0, 1388 | "w": 1 1389 | }, 1390 | "position": { 1391 | "x": -14162.549802874275, 1392 | "y": -30975.858477840386, 1393 | "z": 1972.4205029171321 1394 | }, 1395 | "scale": { 1396 | "x": 1, 1397 | "y": 1, 1398 | "z": 1 1399 | } 1400 | } 1401 | }, 1402 | "eliminator": { 1403 | "id": "3ee27f0ff5b6403783235c37e09de82b", 1404 | "isBot": false, 1405 | "location": { 1406 | "rotation": { 1407 | "x": 0, 1408 | "y": 0, 1409 | "z": 0, 1410 | "w": 1 1411 | }, 1412 | "position": { 1413 | "x": 0, 1414 | "y": 0, 1415 | "z": 0 1416 | }, 1417 | "scale": { 1418 | "x": 1, 1419 | "y": 1, 1420 | "z": 1 1421 | } 1422 | } 1423 | }, 1424 | "gunType": "05", 1425 | "knocked": false, 1426 | "timestamp": 110310 1427 | }, 1428 | { 1429 | "eliminated": { 1430 | "id": "ea1b6b38391b4497a429a38ea710c353", 1431 | "isBot": false, 1432 | "location": { 1433 | "rotation": { 1434 | "x": 0, 1435 | "y": 0, 1436 | "z": 0, 1437 | "w": 1 1438 | }, 1439 | "position": { 1440 | "x": -5401.826201777537, 1441 | "y": -30743.781292782198, 1442 | "z": 2748.1500013325667 1443 | }, 1444 | "scale": { 1445 | "x": 1, 1446 | "y": 1, 1447 | "z": 1 1448 | } 1449 | } 1450 | }, 1451 | "eliminator": { 1452 | "id": "08b7950f9368426d8290ba221a1ed879", 1453 | "isBot": false, 1454 | "location": { 1455 | "rotation": { 1456 | "x": 0, 1457 | "y": 0, 1458 | "z": 0, 1459 | "w": 1 1460 | }, 1461 | "position": { 1462 | "x": 0, 1463 | "y": 0, 1464 | "z": 0 1465 | }, 1466 | "scale": { 1467 | "x": 1, 1468 | "y": 1, 1469 | "z": 1 1470 | } 1471 | } 1472 | }, 1473 | "gunType": "04", 1474 | "knocked": false, 1475 | "timestamp": 110880 1476 | }, 1477 | { 1478 | "eliminated": { 1479 | "id": "d0896b7e339a46458183428a370ce299", 1480 | "isBot": false, 1481 | "location": { 1482 | "rotation": { 1483 | "x": 0, 1484 | "y": 0, 1485 | "z": 0, 1486 | "w": 1 1487 | }, 1488 | "position": { 1489 | "x": 56147.30771092128, 1490 | "y": -14872.058012082123, 1491 | "z": 3555.119978525919 1492 | }, 1493 | "scale": { 1494 | "x": 1, 1495 | "y": 1, 1496 | "z": 1 1497 | } 1498 | } 1499 | }, 1500 | "eliminator": { 1501 | "id": "61585506e8d44c7f9052dee04ea55739", 1502 | "isBot": false, 1503 | "location": { 1504 | "rotation": { 1505 | "x": 0, 1506 | "y": 0, 1507 | "z": 0.9921489029655696, 1508 | "w": 0.12506220190055944 1509 | }, 1510 | "position": { 1511 | "x": 56709.340000000004, 1512 | "y": -14859.78, 1513 | "z": 3555.19 1514 | }, 1515 | "scale": { 1516 | "x": 1, 1517 | "y": 1, 1518 | "z": 1 1519 | } 1520 | } 1521 | }, 1522 | "gunType": "02", 1523 | "knocked": false, 1524 | "timestamp": 112480 1525 | }, 1526 | { 1527 | "eliminated": { 1528 | "id": "1eabd20f3142491fa1fcbaed216fea68", 1529 | "isBot": false, 1530 | "location": { 1531 | "rotation": { 1532 | "x": 0, 1533 | "y": 0, 1534 | "z": 0, 1535 | "w": 1 1536 | }, 1537 | "position": { 1538 | "x": 57282.33719418583, 1539 | "y": -15140.143794123886, 1540 | "z": 3510.8723796121867 1541 | }, 1542 | "scale": { 1543 | "x": 1, 1544 | "y": 1, 1545 | "z": 1 1546 | } 1547 | } 1548 | }, 1549 | "eliminator": { 1550 | "id": "61585506e8d44c7f9052dee04ea55739", 1551 | "isBot": false, 1552 | "location": { 1553 | "rotation": { 1554 | "x": 0, 1555 | "y": 0, 1556 | "z": 0.9944743708673109, 1557 | "w": 0.10497964416050239 1558 | }, 1559 | "position": { 1560 | "x": 56709.340000000004, 1561 | "y": -14859.78, 1562 | "z": 3555.19 1563 | }, 1564 | "scale": { 1565 | "x": 1, 1566 | "y": 1, 1567 | "z": 1 1568 | } 1569 | } 1570 | }, 1571 | "gunType": "02", 1572 | "knocked": false, 1573 | "timestamp": 112548 1574 | }, 1575 | { 1576 | "eliminated": { 1577 | "id": "19a4291beba7480fadeb7fa0d1be54b2", 1578 | "isBot": false, 1579 | "location": { 1580 | "rotation": { 1581 | "x": 0, 1582 | "y": 0, 1583 | "z": 0, 1584 | "w": 1 1585 | }, 1586 | "position": { 1587 | "x": -1853.2209031712991, 1588 | "y": -22562.87688974637, 1589 | "z": 2840.4663263045127 1590 | }, 1591 | "scale": { 1592 | "x": 1, 1593 | "y": 1, 1594 | "z": 1 1595 | } 1596 | } 1597 | }, 1598 | "eliminator": { 1599 | "id": "f0cc3f865b444e17ad1e9741291b9195", 1600 | "isBot": false, 1601 | "location": { 1602 | "rotation": { 1603 | "x": 0, 1604 | "y": 0, 1605 | "z": 0, 1606 | "w": 1 1607 | }, 1608 | "position": { 1609 | "x": 0, 1610 | "y": 0, 1611 | "z": 0 1612 | }, 1613 | "scale": { 1614 | "x": 1, 1615 | "y": 1, 1616 | "z": 1 1617 | } 1618 | } 1619 | }, 1620 | "gunType": "05", 1621 | "knocked": true, 1622 | "timestamp": 114335 1623 | }, 1624 | { 1625 | "eliminated": { 1626 | "id": "0f8c5c8859c4455fa91c3d5e917843af", 1627 | "isBot": false, 1628 | "location": { 1629 | "rotation": { 1630 | "x": 0, 1631 | "y": 0, 1632 | "z": 0, 1633 | "w": 1 1634 | }, 1635 | "position": { 1636 | "x": 23569.105645669657, 1637 | "y": 16334.145028612815, 1638 | "z": 2069.380160315654 1639 | }, 1640 | "scale": { 1641 | "x": 1, 1642 | "y": 1, 1643 | "z": 1 1644 | } 1645 | } 1646 | }, 1647 | "eliminator": { 1648 | "id": "70bdae8fb57e4025839734cc2993563c", 1649 | "isBot": false, 1650 | "location": { 1651 | "rotation": { 1652 | "x": 0, 1653 | "y": 0, 1654 | "z": 0, 1655 | "w": 1 1656 | }, 1657 | "position": { 1658 | "x": 0, 1659 | "y": 0, 1660 | "z": 0 1661 | }, 1662 | "scale": { 1663 | "x": 1, 1664 | "y": 1, 1665 | "z": 1 1666 | } 1667 | } 1668 | }, 1669 | "gunType": "03", 1670 | "knocked": true, 1671 | "timestamp": 114760 1672 | }, 1673 | { 1674 | "eliminated": { 1675 | "id": "19a4291beba7480fadeb7fa0d1be54b2", 1676 | "isBot": false, 1677 | "location": { 1678 | "rotation": { 1679 | "x": 0, 1680 | "y": 0, 1681 | "z": 0, 1682 | "w": 1 1683 | }, 1684 | "position": { 1685 | "x": -1820.2344278859784, 1686 | "y": -22606.214900413994, 1687 | "z": 2740.410538601328 1688 | }, 1689 | "scale": { 1690 | "x": 1, 1691 | "y": 1, 1692 | "z": 1 1693 | } 1694 | } 1695 | }, 1696 | "eliminator": { 1697 | "id": "f0cc3f865b444e17ad1e9741291b9195", 1698 | "isBot": false, 1699 | "location": { 1700 | "rotation": { 1701 | "x": 0, 1702 | "y": 0, 1703 | "z": 0, 1704 | "w": 1 1705 | }, 1706 | "position": { 1707 | "x": 0, 1708 | "y": 0, 1709 | "z": 0 1710 | }, 1711 | "scale": { 1712 | "x": 1, 1713 | "y": 1, 1714 | "z": 1 1715 | } 1716 | } 1717 | }, 1718 | "gunType": "05", 1719 | "knocked": false, 1720 | "timestamp": 117197 1721 | }, 1722 | { 1723 | "eliminated": { 1724 | "id": "0b53258544594cb18365eb5b57238bed", 1725 | "isBot": false, 1726 | "location": { 1727 | "rotation": { 1728 | "x": 0, 1729 | "y": 0, 1730 | "z": 0, 1731 | "w": 1 1732 | }, 1733 | "position": { 1734 | "x": -48470.20608412815, 1735 | "y": -3926.172139393008, 1736 | "z": 2005.1499960830554 1737 | }, 1738 | "scale": { 1739 | "x": 1, 1740 | "y": 1, 1741 | "z": 1 1742 | } 1743 | } 1744 | }, 1745 | "eliminator": { 1746 | "id": "0591470dbf7447ccb767752e3d7271d5", 1747 | "isBot": false, 1748 | "location": { 1749 | "rotation": { 1750 | "x": 0, 1751 | "y": 0, 1752 | "z": 0, 1753 | "w": 1 1754 | }, 1755 | "position": { 1756 | "x": 0, 1757 | "y": 0, 1758 | "z": 0 1759 | }, 1760 | "scale": { 1761 | "x": 1, 1762 | "y": 1, 1763 | "z": 1 1764 | } 1765 | } 1766 | }, 1767 | "gunType": "04", 1768 | "knocked": false, 1769 | "timestamp": 117364 1770 | }, 1771 | { 1772 | "eliminated": { 1773 | "id": "3be55773f0dc40b98c8afb6e1299bb4c", 1774 | "isBot": false, 1775 | "location": { 1776 | "rotation": { 1777 | "x": 0, 1778 | "y": 0, 1779 | "z": 0, 1780 | "w": 1 1781 | }, 1782 | "position": { 1783 | "x": -48074.17633566528, 1784 | "y": 5753.20114071594, 1785 | "z": 2216.1805993951784 1786 | }, 1787 | "scale": { 1788 | "x": 1, 1789 | "y": 1, 1790 | "z": 1 1791 | } 1792 | } 1793 | }, 1794 | "eliminator": { 1795 | "id": "192618b2773d4f7185ae7f3683d70677", 1796 | "isBot": false, 1797 | "location": { 1798 | "rotation": { 1799 | "x": 0, 1800 | "y": 0, 1801 | "z": 0, 1802 | "w": 1 1803 | }, 1804 | "position": { 1805 | "x": 0, 1806 | "y": 0, 1807 | "z": 0 1808 | }, 1809 | "scale": { 1810 | "x": 1, 1811 | "y": 1, 1812 | "z": 1 1813 | } 1814 | } 1815 | }, 1816 | "gunType": "02", 1817 | "knocked": false, 1818 | "timestamp": 117850 1819 | }, 1820 | { 1821 | "eliminated": { 1822 | "id": "3055a75bf944484fbc14d64fc85fd0f4", 1823 | "isBot": false, 1824 | "location": { 1825 | "rotation": { 1826 | "x": 0, 1827 | "y": 0, 1828 | "z": 0, 1829 | "w": 1 1830 | }, 1831 | "position": { 1832 | "x": -58200.68014728798, 1833 | "y": -12192.638443275764, 1834 | "z": 2952.733368742686 1835 | }, 1836 | "scale": { 1837 | "x": 1, 1838 | "y": 1, 1839 | "z": 1 1840 | } 1841 | } 1842 | }, 1843 | "eliminator": { 1844 | "id": "4fb1d75914dc4b57bdb8dab6bd363ddd", 1845 | "isBot": false, 1846 | "location": { 1847 | "rotation": { 1848 | "x": 0, 1849 | "y": 0, 1850 | "z": 0, 1851 | "w": 1 1852 | }, 1853 | "position": { 1854 | "x": 0, 1855 | "y": 0, 1856 | "z": 0 1857 | }, 1858 | "scale": { 1859 | "x": 1, 1860 | "y": 1, 1861 | "z": 1 1862 | } 1863 | } 1864 | }, 1865 | "gunType": "02", 1866 | "knocked": false, 1867 | "timestamp": 118103 1868 | }, 1869 | { 1870 | "eliminated": { 1871 | "id": "694edeef0b4f4431aa81732f1e7fd3f9", 1872 | "isBot": false, 1873 | "location": { 1874 | "rotation": { 1875 | "x": 0, 1876 | "y": 0, 1877 | "z": 0, 1878 | "w": 1 1879 | }, 1880 | "position": { 1881 | "x": -7586.175465123359, 1882 | "y": -30236.59705581491, 1883 | "z": 3132.150597424402 1884 | }, 1885 | "scale": { 1886 | "x": 1, 1887 | "y": 1, 1888 | "z": 1 1889 | } 1890 | } 1891 | }, 1892 | "eliminator": { 1893 | "id": "65b167aa7d694717a1ce3fc1a0c668a0", 1894 | "isBot": false, 1895 | "location": { 1896 | "rotation": { 1897 | "x": 0, 1898 | "y": 0, 1899 | "z": 0, 1900 | "w": 1 1901 | }, 1902 | "position": { 1903 | "x": 0, 1904 | "y": 0, 1905 | "z": 0 1906 | }, 1907 | "scale": { 1908 | "x": 1, 1909 | "y": 1, 1910 | "z": 1 1911 | } 1912 | } 1913 | }, 1914 | "gunType": "05", 1915 | "knocked": true, 1916 | "timestamp": 122500 1917 | }, 1918 | { 1919 | "eliminated": { 1920 | "id": "0f8c5c8859c4455fa91c3d5e917843af", 1921 | "isBot": false, 1922 | "location": { 1923 | "rotation": { 1924 | "x": 0, 1925 | "y": 0, 1926 | "z": 0, 1927 | "w": 1 1928 | }, 1929 | "position": { 1930 | "x": 23684.377812747665, 1931 | "y": 16198.654879093703, 1932 | "z": 1980.1499991942944 1933 | }, 1934 | "scale": { 1935 | "x": 1, 1936 | "y": 1, 1937 | "z": 1 1938 | } 1939 | } 1940 | }, 1941 | "eliminator": { 1942 | "id": "70bdae8fb57e4025839734cc2993563c", 1943 | "isBot": false, 1944 | "location": { 1945 | "rotation": { 1946 | "x": 0, 1947 | "y": 0, 1948 | "z": 0, 1949 | "w": 1 1950 | }, 1951 | "position": { 1952 | "x": 0, 1953 | "y": 0, 1954 | "z": 0 1955 | }, 1956 | "scale": { 1957 | "x": 1, 1958 | "y": 1, 1959 | "z": 1 1960 | } 1961 | } 1962 | }, 1963 | "gunType": "03", 1964 | "knocked": false, 1965 | "timestamp": 123430 1966 | }, 1967 | { 1968 | "eliminated": { 1969 | "id": "26d8e8a3bdb3429c81e4995c94b7aacf", 1970 | "isBot": false, 1971 | "location": { 1972 | "rotation": { 1973 | "x": 0, 1974 | "y": 0, 1975 | "z": 0, 1976 | "w": 1 1977 | }, 1978 | "position": { 1979 | "x": 23507.59093851501, 1980 | "y": 16291.540307901645, 1981 | "z": 1980.150001501998 1982 | }, 1983 | "scale": { 1984 | "x": 1, 1985 | "y": 1, 1986 | "z": 1 1987 | } 1988 | } 1989 | }, 1990 | "eliminator": { 1991 | "id": "2a38edd6470347b9bdf8cf556e07b20d", 1992 | "isBot": false, 1993 | "location": { 1994 | "rotation": { 1995 | "x": 0, 1996 | "y": 0, 1997 | "z": 0, 1998 | "w": 1 1999 | }, 2000 | "position": { 2001 | "x": 0, 2002 | "y": 0, 2003 | "z": 0 2004 | }, 2005 | "scale": { 2006 | "x": 1, 2007 | "y": 1, 2008 | "z": 1 2009 | } 2010 | } 2011 | }, 2012 | "gunType": "05", 2013 | "knocked": false, 2014 | "timestamp": 123886 2015 | }, 2016 | { 2017 | "eliminated": { 2018 | "id": "694edeef0b4f4431aa81732f1e7fd3f9", 2019 | "isBot": false, 2020 | "location": { 2021 | "rotation": { 2022 | "x": 0, 2023 | "y": 0, 2024 | "z": 0, 2025 | "w": 1 2026 | }, 2027 | "position": { 2028 | "x": -7832.443829518888, 2029 | "y": -30136.924354474475, 2030 | "z": 3132.150597424402 2031 | }, 2032 | "scale": { 2033 | "x": 1, 2034 | "y": 1, 2035 | "z": 1 2036 | } 2037 | } 2038 | }, 2039 | "eliminator": { 2040 | "id": "b7c4b429916c448984be9ea2ee7037c8", 2041 | "isBot": false, 2042 | "location": { 2043 | "rotation": { 2044 | "x": 0, 2045 | "y": 0, 2046 | "z": 0, 2047 | "w": 1 2048 | }, 2049 | "position": { 2050 | "x": 0, 2051 | "y": 0, 2052 | "z": 0 2053 | }, 2054 | "scale": { 2055 | "x": 1, 2056 | "y": 1, 2057 | "z": 1 2058 | } 2059 | } 2060 | }, 2061 | "gunType": "05", 2062 | "knocked": false, 2063 | "timestamp": 125216 2064 | }, 2065 | { 2066 | "eliminated": { 2067 | "id": "84ed2a12b9fd40b0aadd1e6a2766f78c", 2068 | "isBot": false, 2069 | "location": { 2070 | "rotation": { 2071 | "x": 0, 2072 | "y": 0, 2073 | "z": 0, 2074 | "w": 1 2075 | }, 2076 | "position": { 2077 | "x": -6956.827767376304, 2078 | "y": -26031.850479812954, 2079 | "z": 1997.4204724951128 2080 | }, 2081 | "scale": { 2082 | "x": 1, 2083 | "y": 1, 2084 | "z": 1 2085 | } 2086 | } 2087 | }, 2088 | "eliminator": { 2089 | "id": "d144610537d74215a12c2feb17bcb407", 2090 | "isBot": false, 2091 | "location": { 2092 | "rotation": { 2093 | "x": 0, 2094 | "y": 0, 2095 | "z": 0, 2096 | "w": 1 2097 | }, 2098 | "position": { 2099 | "x": 0, 2100 | "y": 0, 2101 | "z": 0 2102 | }, 2103 | "scale": { 2104 | "x": 1, 2105 | "y": 1, 2106 | "z": 1 2107 | } 2108 | } 2109 | }, 2110 | "gunType": "04", 2111 | "knocked": true, 2112 | "timestamp": 129844 2113 | }, 2114 | { 2115 | "eliminated": { 2116 | "id": "84ed2a12b9fd40b0aadd1e6a2766f78c", 2117 | "isBot": false, 2118 | "location": { 2119 | "rotation": { 2120 | "x": 0, 2121 | "y": 0, 2122 | "z": 0, 2123 | "w": 1 2124 | }, 2125 | "position": { 2126 | "x": -6879.315722588139, 2127 | "y": -26083.05583224586, 2128 | "z": 1972.4204724951128 2129 | }, 2130 | "scale": { 2131 | "x": 1, 2132 | "y": 1, 2133 | "z": 1 2134 | } 2135 | } 2136 | }, 2137 | "eliminator": { 2138 | "id": "d144610537d74215a12c2feb17bcb407", 2139 | "isBot": false, 2140 | "location": { 2141 | "rotation": { 2142 | "x": 0, 2143 | "y": 0, 2144 | "z": 0, 2145 | "w": 1 2146 | }, 2147 | "position": { 2148 | "x": 0, 2149 | "y": 0, 2150 | "z": 0 2151 | }, 2152 | "scale": { 2153 | "x": 1, 2154 | "y": 1, 2155 | "z": 1 2156 | } 2157 | } 2158 | }, 2159 | "gunType": "03", 2160 | "knocked": false, 2161 | "timestamp": 132223 2162 | }, 2163 | { 2164 | "eliminated": { 2165 | "id": "b51762d24fec4064a8c7064418b744ec", 2166 | "isBot": false, 2167 | "location": { 2168 | "rotation": { 2169 | "x": 0, 2170 | "y": 0, 2171 | "z": 0, 2172 | "w": 1 2173 | }, 2174 | "position": { 2175 | "x": -48745.33047801719, 2176 | "y": 5426.008437779267, 2177 | "z": 2028.0568141459557 2178 | }, 2179 | "scale": { 2180 | "x": 1, 2181 | "y": 1, 2182 | "z": 1 2183 | } 2184 | } 2185 | }, 2186 | "eliminator": { 2187 | "id": "192618b2773d4f7185ae7f3683d70677", 2188 | "isBot": false, 2189 | "location": { 2190 | "rotation": { 2191 | "x": 0, 2192 | "y": 0, 2193 | "z": 0, 2194 | "w": 1 2195 | }, 2196 | "position": { 2197 | "x": 0, 2198 | "y": 0, 2199 | "z": 0 2200 | }, 2201 | "scale": { 2202 | "x": 1, 2203 | "y": 1, 2204 | "z": 1 2205 | } 2206 | } 2207 | }, 2208 | "gunType": "05", 2209 | "knocked": true, 2210 | "timestamp": 133847 2211 | }, 2212 | { 2213 | "eliminated": { 2214 | "id": "b51762d24fec4064a8c7064418b744ec", 2215 | "isBot": false, 2216 | "location": { 2217 | "rotation": { 2218 | "x": 0, 2219 | "y": 0, 2220 | "z": 0, 2221 | "w": 1 2222 | }, 2223 | "position": { 2224 | "x": -48729.92137239414, 2225 | "y": 5518.809114017743, 2226 | "z": 2097.7235712031597 2227 | }, 2228 | "scale": { 2229 | "x": 1, 2230 | "y": 1, 2231 | "z": 1 2232 | } 2233 | } 2234 | }, 2235 | "eliminator": { 2236 | "id": "609df92c00e34338b7ad4d2bb478cf06", 2237 | "isBot": false, 2238 | "location": { 2239 | "rotation": { 2240 | "x": 0, 2241 | "y": 0, 2242 | "z": 0, 2243 | "w": 1 2244 | }, 2245 | "position": { 2246 | "x": 0, 2247 | "y": 0, 2248 | "z": 0 2249 | }, 2250 | "scale": { 2251 | "x": 1, 2252 | "y": 1, 2253 | "z": 1 2254 | } 2255 | } 2256 | }, 2257 | "gunType": "05", 2258 | "knocked": false, 2259 | "timestamp": 136349 2260 | }, 2261 | { 2262 | "eliminated": { 2263 | "id": "cb071da9955f43119db1b58a1b5d2efd", 2264 | "isBot": false, 2265 | "location": { 2266 | "rotation": { 2267 | "x": 0, 2268 | "y": 0, 2269 | "z": 0, 2270 | "w": 1 2271 | }, 2272 | "position": { 2273 | "x": 31186.70260969354, 2274 | "y": 19003.781123704466, 2275 | "z": 1208.052382528806 2276 | }, 2277 | "scale": { 2278 | "x": 1, 2279 | "y": 1, 2280 | "z": 1 2281 | } 2282 | } 2283 | }, 2284 | "eliminator": { 2285 | "id": "a7465831a48e4e018728a5237b09efc3", 2286 | "isBot": false, 2287 | "location": { 2288 | "rotation": { 2289 | "x": 0, 2290 | "y": 0, 2291 | "z": 0, 2292 | "w": 1 2293 | }, 2294 | "position": { 2295 | "x": 0, 2296 | "y": 0, 2297 | "z": 0 2298 | }, 2299 | "scale": { 2300 | "x": 1, 2301 | "y": 1, 2302 | "z": 1 2303 | } 2304 | } 2305 | }, 2306 | "gunType": "03", 2307 | "knocked": true, 2308 | "timestamp": 137855 2309 | }, 2310 | { 2311 | "eliminated": { 2312 | "id": "5b657ac72e9645f39b6eff0f7f26217c", 2313 | "isBot": false, 2314 | "location": { 2315 | "rotation": { 2316 | "x": 0, 2317 | "y": 0, 2318 | "z": 0, 2319 | "w": 1 2320 | }, 2321 | "position": { 2322 | "x": -6675.79071578115, 2323 | "y": -22331.91298186174, 2324 | "z": 2041.525737802532 2325 | }, 2326 | "scale": { 2327 | "x": 1, 2328 | "y": 1, 2329 | "z": 1 2330 | } 2331 | } 2332 | }, 2333 | "eliminator": { 2334 | "id": "019ec79e96b2407daf2e50d535541b4b", 2335 | "isBot": false, 2336 | "location": { 2337 | "rotation": { 2338 | "x": 0, 2339 | "y": 0, 2340 | "z": 0, 2341 | "w": 1 2342 | }, 2343 | "position": { 2344 | "x": 0, 2345 | "y": 0, 2346 | "z": 0 2347 | }, 2348 | "scale": { 2349 | "x": 1, 2350 | "y": 1, 2351 | "z": 1 2352 | } 2353 | } 2354 | }, 2355 | "gunType": "04", 2356 | "knocked": true, 2357 | "timestamp": 139062 2358 | }, 2359 | { 2360 | "eliminated": { 2361 | "id": "cb071da9955f43119db1b58a1b5d2efd", 2362 | "isBot": false, 2363 | "location": { 2364 | "rotation": { 2365 | "x": 0, 2366 | "y": 0, 2367 | "z": 0, 2368 | "w": 1 2369 | }, 2370 | "position": { 2371 | "x": 31011.303633059157, 2372 | "y": 19369.69198956979, 2373 | "z": 1204.5127768245095 2374 | }, 2375 | "scale": { 2376 | "x": 1, 2377 | "y": 1, 2378 | "z": 1 2379 | } 2380 | } 2381 | }, 2382 | "eliminator": { 2383 | "id": "a7465831a48e4e018728a5237b09efc3", 2384 | "isBot": false, 2385 | "location": { 2386 | "rotation": { 2387 | "x": 0, 2388 | "y": 0, 2389 | "z": 0, 2390 | "w": 1 2391 | }, 2392 | "position": { 2393 | "x": 0, 2394 | "y": 0, 2395 | "z": 0 2396 | }, 2397 | "scale": { 2398 | "x": 1, 2399 | "y": 1, 2400 | "z": 1 2401 | } 2402 | } 2403 | }, 2404 | "gunType": "03", 2405 | "knocked": false, 2406 | "timestamp": 140243 2407 | }, 2408 | { 2409 | "eliminated": { 2410 | "id": "8aef7e180db342879643385c7996dd71", 2411 | "isBot": false, 2412 | "location": { 2413 | "rotation": { 2414 | "x": 0, 2415 | "y": 0, 2416 | "z": 0, 2417 | "w": 1 2418 | }, 2419 | "position": { 2420 | "x": -16783.615034886217, 2421 | "y": -33668.69822582507, 2422 | "z": 1414.5588999887914 2423 | }, 2424 | "scale": { 2425 | "x": 1, 2426 | "y": 1, 2427 | "z": 1 2428 | } 2429 | } 2430 | }, 2431 | "eliminator": { 2432 | "id": "5248a026a210488c85dee11a4b67900b", 2433 | "isBot": false, 2434 | "location": { 2435 | "rotation": { 2436 | "x": 0, 2437 | "y": 0, 2438 | "z": 0, 2439 | "w": 1 2440 | }, 2441 | "position": { 2442 | "x": 0, 2443 | "y": 0, 2444 | "z": 0 2445 | }, 2446 | "scale": { 2447 | "x": 1, 2448 | "y": 1, 2449 | "z": 1 2450 | } 2451 | } 2452 | }, 2453 | "gunType": "03", 2454 | "knocked": false, 2455 | "timestamp": 142265 2456 | }, 2457 | { 2458 | "eliminated": { 2459 | "id": "e9dc470da0974fc7a393878ecc5cbbe2", 2460 | "isBot": false, 2461 | "location": { 2462 | "rotation": { 2463 | "x": 0, 2464 | "y": 0, 2465 | "z": 0, 2466 | "w": 1 2467 | }, 2468 | "position": { 2469 | "x": -53847.49153342446, 2470 | "y": 2757.8130571864735, 2471 | "z": 2059.290224987628 2472 | }, 2473 | "scale": { 2474 | "x": 1, 2475 | "y": 1, 2476 | "z": 1 2477 | } 2478 | } 2479 | }, 2480 | "eliminator": { 2481 | "id": "f388325580f2444d9f07ecc7529bc698", 2482 | "isBot": false, 2483 | "location": { 2484 | "rotation": { 2485 | "x": 0, 2486 | "y": 0, 2487 | "z": 0, 2488 | "w": 1 2489 | }, 2490 | "position": { 2491 | "x": 0, 2492 | "y": 0, 2493 | "z": 0 2494 | }, 2495 | "scale": { 2496 | "x": 1, 2497 | "y": 1, 2498 | "z": 1 2499 | } 2500 | } 2501 | }, 2502 | "gunType": "05", 2503 | "knocked": false, 2504 | "timestamp": 144149 2505 | }, 2506 | { 2507 | "eliminated": { 2508 | "id": "5b657ac72e9645f39b6eff0f7f26217c", 2509 | "isBot": false, 2510 | "location": { 2511 | "rotation": { 2512 | "x": 0, 2513 | "y": 0, 2514 | "z": 0, 2515 | "w": 1 2516 | }, 2517 | "position": { 2518 | "x": -6177.787964287303, 2519 | "y": -22209.210434656903, 2520 | "z": 1980.1500077490891 2521 | }, 2522 | "scale": { 2523 | "x": 1, 2524 | "y": 1, 2525 | "z": 1 2526 | } 2527 | } 2528 | }, 2529 | "eliminator": { 2530 | "id": "019ec79e96b2407daf2e50d535541b4b", 2531 | "isBot": false, 2532 | "location": { 2533 | "rotation": { 2534 | "x": 0, 2535 | "y": 0, 2536 | "z": 0, 2537 | "w": 1 2538 | }, 2539 | "position": { 2540 | "x": 0, 2541 | "y": 0, 2542 | "z": 0 2543 | }, 2544 | "scale": { 2545 | "x": 1, 2546 | "y": 1, 2547 | "z": 1 2548 | } 2549 | } 2550 | }, 2551 | "gunType": "04", 2552 | "knocked": false, 2553 | "timestamp": 144325 2554 | }, 2555 | { 2556 | "eliminated": { 2557 | "id": "bddd43011f1643aca2c06f36ad4d441e", 2558 | "isBot": false, 2559 | "location": { 2560 | "rotation": { 2561 | "x": 0, 2562 | "y": 0, 2563 | "z": 0, 2564 | "w": 1 2565 | }, 2566 | "position": { 2567 | "x": 29185.764306617137, 2568 | "y": 18378.02784985002, 2569 | "z": 2142.0851249882135 2570 | }, 2571 | "scale": { 2572 | "x": 1, 2573 | "y": 1, 2574 | "z": 1 2575 | } 2576 | } 2577 | }, 2578 | "eliminator": { 2579 | "id": "6ad96ecc71644b819aa5529a2a51c346", 2580 | "isBot": false, 2581 | "location": { 2582 | "rotation": { 2583 | "x": 0, 2584 | "y": 0, 2585 | "z": 0, 2586 | "w": 1 2587 | }, 2588 | "position": { 2589 | "x": 0, 2590 | "y": 0, 2591 | "z": 0 2592 | }, 2593 | "scale": { 2594 | "x": 1, 2595 | "y": 1, 2596 | "z": 1 2597 | } 2598 | } 2599 | }, 2600 | "gunType": "05", 2601 | "knocked": true, 2602 | "timestamp": 144700 2603 | }, 2604 | { 2605 | "eliminated": { 2606 | "id": "dd3c6ac4ac3b4cdb89adb3bdc123cda6", 2607 | "isBot": false, 2608 | "location": { 2609 | "rotation": { 2610 | "x": 0, 2611 | "y": 0, 2612 | "z": 0, 2613 | "w": 1 2614 | }, 2615 | "position": { 2616 | "x": -47957.60496977294, 2617 | "y": 77825.34456076041, 2618 | "z": 2748.1519991951654 2619 | }, 2620 | "scale": { 2621 | "x": 1, 2622 | "y": 1, 2623 | "z": 1 2624 | } 2625 | } 2626 | }, 2627 | "eliminator": { 2628 | "id": "ab599dc364974c3287dec5ca2fd05d76", 2629 | "isBot": false, 2630 | "location": { 2631 | "rotation": { 2632 | "x": 0, 2633 | "y": 0, 2634 | "z": 0, 2635 | "w": 1 2636 | }, 2637 | "position": { 2638 | "x": 0, 2639 | "y": 0, 2640 | "z": 0 2641 | }, 2642 | "scale": { 2643 | "x": 1, 2644 | "y": 1, 2645 | "z": 1 2646 | } 2647 | } 2648 | }, 2649 | "gunType": "04", 2650 | "knocked": false, 2651 | "timestamp": 145140 2652 | }, 2653 | { 2654 | "eliminated": { 2655 | "id": "2b94b8c2618d4fa296fd2c792a20701d", 2656 | "isBot": false, 2657 | "location": { 2658 | "rotation": { 2659 | "x": 0, 2660 | "y": 0, 2661 | "z": 0, 2662 | "w": 1 2663 | }, 2664 | "position": { 2665 | "x": -6206.453120320608, 2666 | "y": -23197.20155931453, 2667 | "z": 1980.1499989545728 2668 | }, 2669 | "scale": { 2670 | "x": 1, 2671 | "y": 1, 2672 | "z": 1 2673 | } 2674 | } 2675 | }, 2676 | "eliminator": { 2677 | "id": "e3f7826dd9c94ebe838d6e0803974bea", 2678 | "isBot": false, 2679 | "location": { 2680 | "rotation": { 2681 | "x": 0, 2682 | "y": 0, 2683 | "z": 0, 2684 | "w": 1 2685 | }, 2686 | "position": { 2687 | "x": 0, 2688 | "y": 0, 2689 | "z": 0 2690 | }, 2691 | "scale": { 2692 | "x": 1, 2693 | "y": 1, 2694 | "z": 1 2695 | } 2696 | } 2697 | }, 2698 | "gunType": "05", 2699 | "knocked": false, 2700 | "timestamp": 145595 2701 | }, 2702 | { 2703 | "eliminated": { 2704 | "id": "ebb50fb270dd4fb4b43fae79b032d0bd", 2705 | "isBot": false, 2706 | "location": { 2707 | "rotation": { 2708 | "x": 0, 2709 | "y": 0, 2710 | "z": 0, 2711 | "w": 1 2712 | }, 2713 | "position": { 2714 | "x": -48037.96800307518, 2715 | "y": 77753.71887506009, 2716 | "z": 2748.1510000605876 2717 | }, 2718 | "scale": { 2719 | "x": 1, 2720 | "y": 1, 2721 | "z": 1 2722 | } 2723 | } 2724 | }, 2725 | "eliminator": { 2726 | "id": "2af4d2c339154e00a348b8e4eb73cc48", 2727 | "isBot": false, 2728 | "location": { 2729 | "rotation": { 2730 | "x": 0, 2731 | "y": 0, 2732 | "z": 0, 2733 | "w": 1 2734 | }, 2735 | "position": { 2736 | "x": 0, 2737 | "y": 0, 2738 | "z": 0 2739 | }, 2740 | "scale": { 2741 | "x": 1, 2742 | "y": 1, 2743 | "z": 1 2744 | } 2745 | } 2746 | }, 2747 | "gunType": "03", 2748 | "knocked": false, 2749 | "timestamp": 146331 2750 | }, 2751 | { 2752 | "eliminated": { 2753 | "id": "b391abe6280e42c6b035d10d4676076e", 2754 | "isBot": false, 2755 | "location": { 2756 | "rotation": { 2757 | "x": 0, 2758 | "y": 0, 2759 | "z": 0, 2760 | "w": 1 2761 | }, 2762 | "position": { 2763 | "x": 55230.303276098704, 2764 | "y": -1528.2503810172211, 2765 | "z": 4455.986295274491 2766 | }, 2767 | "scale": { 2768 | "x": 1, 2769 | "y": 1, 2770 | "z": 1 2771 | } 2772 | } 2773 | }, 2774 | "eliminator": { 2775 | "id": "83a86ee46a0a42f69038650dd0d969f2", 2776 | "isBot": false, 2777 | "location": { 2778 | "rotation": { 2779 | "x": 0, 2780 | "y": 0, 2781 | "z": -0.06628134222745007, 2782 | "w": 0.9978009739785423 2783 | }, 2784 | "position": { 2785 | "x": 54919.58, 2786 | "y": -1741.98, 2787 | "z": 4406.63 2788 | }, 2789 | "scale": { 2790 | "x": 1, 2791 | "y": 1, 2792 | "z": 1 2793 | } 2794 | } 2795 | }, 2796 | "gunType": "03", 2797 | "knocked": true, 2798 | "timestamp": 146950 2799 | }, 2800 | { 2801 | "eliminated": { 2802 | "id": "75d50be47d814f67bd63f059b23e1b25", 2803 | "isBot": false, 2804 | "location": { 2805 | "rotation": { 2806 | "x": 0, 2807 | "y": 0, 2808 | "z": 0, 2809 | "w": 1 2810 | }, 2811 | "position": { 2812 | "x": 55058.39980384555, 2813 | "y": -2822.351302650808, 2814 | "z": 4949.24855903755 2815 | }, 2816 | "scale": { 2817 | "x": 1, 2818 | "y": 1, 2819 | "z": 1 2820 | } 2821 | } 2822 | }, 2823 | "eliminator": { 2824 | "id": "9d58d46c633f475e8f329d203b7a4198", 2825 | "isBot": false, 2826 | "location": { 2827 | "rotation": { 2828 | "x": 0, 2829 | "y": 0, 2830 | "z": 0.9844067815147255, 2831 | "w": 0.1759070450772775 2832 | }, 2833 | "position": { 2834 | "x": 57110.33201234294, 2835 | "y": -2351.6631727147583, 2836 | "z": 5766.540683132713 2837 | }, 2838 | "scale": { 2839 | "x": 1, 2840 | "y": 1, 2841 | "z": 1 2842 | } 2843 | } 2844 | }, 2845 | "gunType": "04", 2846 | "knocked": true, 2847 | "timestamp": 146996 2848 | }, 2849 | { 2850 | "eliminated": { 2851 | "id": "9d58d46c633f475e8f329d203b7a4198", 2852 | "isBot": false, 2853 | "location": { 2854 | "rotation": { 2855 | "x": 0, 2856 | "y": 0, 2857 | "z": 0, 2858 | "w": 1 2859 | }, 2860 | "position": { 2861 | "x": 56630.5192809965, 2862 | "y": -1561.7195443666108, 2863 | "z": 5353.775107351716 2864 | }, 2865 | "scale": { 2866 | "x": 1, 2867 | "y": 1, 2868 | "z": 1 2869 | } 2870 | } 2871 | }, 2872 | "eliminator": { 2873 | "id": "83a86ee46a0a42f69038650dd0d969f2", 2874 | "isBot": false, 2875 | "location": { 2876 | "rotation": { 2877 | "x": 0, 2878 | "y": 0, 2879 | "z": 0.020571158621428578, 2880 | "w": 0.9997883913273711 2881 | }, 2882 | "position": { 2883 | "x": 54903.380000000005, 2884 | "y": -1724.57, 2885 | "z": 4374.32 2886 | }, 2887 | "scale": { 2888 | "x": 1, 2889 | "y": 1, 2890 | "z": 1 2891 | } 2892 | } 2893 | }, 2894 | "gunType": "04", 2895 | "knocked": false, 2896 | "timestamp": 151726 2897 | }, 2898 | { 2899 | "eliminated": { 2900 | "id": "b391abe6280e42c6b035d10d4676076e", 2901 | "isBot": false, 2902 | "location": { 2903 | "rotation": { 2904 | "x": 0, 2905 | "y": 0, 2906 | "z": 0, 2907 | "w": 1 2908 | }, 2909 | "position": { 2910 | "x": 55477.63557740325, 2911 | "y": -757.5848443607265, 2912 | "z": 4576.864039532547 2913 | }, 2914 | "scale": { 2915 | "x": 1, 2916 | "y": 1, 2917 | "z": 1 2918 | } 2919 | } 2920 | }, 2921 | "eliminator": { 2922 | "id": "83a86ee46a0a42f69038650dd0d969f2", 2923 | "isBot": false, 2924 | "location": { 2925 | "rotation": { 2926 | "x": 0, 2927 | "y": 0, 2928 | "z": 0.9089487430327796, 2929 | "w": 0.41690788255816136 2930 | }, 2931 | "position": { 2932 | "x": 55129.590000000004, 2933 | "y": -1245.64, 2934 | "z": 4391 2935 | }, 2936 | "scale": { 2937 | "x": 1, 2938 | "y": 1, 2939 | "z": 1 2940 | } 2941 | } 2942 | }, 2943 | "gunType": "03", 2944 | "knocked": false, 2945 | "timestamp": 154130 2946 | }, 2947 | { 2948 | "eliminated": { 2949 | "id": "bddd43011f1643aca2c06f36ad4d441e", 2950 | "isBot": false, 2951 | "location": { 2952 | "rotation": { 2953 | "x": 0, 2954 | "y": 0, 2955 | "z": 0, 2956 | "w": 1 2957 | }, 2958 | "position": { 2959 | "x": 29499.35110957828, 2960 | "y": 18280.655405525256, 2961 | "z": 1980.149999153567 2962 | }, 2963 | "scale": { 2964 | "x": 1, 2965 | "y": 1, 2966 | "z": 1 2967 | } 2968 | } 2969 | }, 2970 | "eliminator": { 2971 | "id": "6ad96ecc71644b819aa5529a2a51c346", 2972 | "isBot": false, 2973 | "location": { 2974 | "rotation": { 2975 | "x": 0, 2976 | "y": 0, 2977 | "z": 0, 2978 | "w": 1 2979 | }, 2980 | "position": { 2981 | "x": 0, 2982 | "y": 0, 2983 | "z": 0 2984 | }, 2985 | "scale": { 2986 | "x": 1, 2987 | "y": 1, 2988 | "z": 1 2989 | } 2990 | } 2991 | }, 2992 | "gunType": "05", 2993 | "knocked": false, 2994 | "timestamp": 154316 2995 | }, 2996 | { 2997 | "eliminated": { 2998 | "id": "9cd3609421074aaba6d5c32182c8d428", 2999 | "isBot": false, 3000 | "location": { 3001 | "rotation": { 3002 | "x": 0, 3003 | "y": 0, 3004 | "z": 0, 3005 | "w": 1 3006 | }, 3007 | "position": { 3008 | "x": -9670.472144413836, 3009 | "y": -29135.748289732484, 3010 | "z": 4811.4388242926325 3011 | }, 3012 | "scale": { 3013 | "x": 1, 3014 | "y": 1, 3015 | "z": 1 3016 | } 3017 | } 3018 | }, 3019 | "eliminator": { 3020 | "id": "3ee27f0ff5b6403783235c37e09de82b", 3021 | "isBot": false, 3022 | "location": { 3023 | "rotation": { 3024 | "x": 0, 3025 | "y": 0, 3026 | "z": 0, 3027 | "w": 1 3028 | }, 3029 | "position": { 3030 | "x": 0, 3031 | "y": 0, 3032 | "z": 0 3033 | }, 3034 | "scale": { 3035 | "x": 1, 3036 | "y": 1, 3037 | "z": 1 3038 | } 3039 | } 3040 | }, 3041 | "gunType": "04", 3042 | "knocked": false, 3043 | "timestamp": 155558 3044 | }, 3045 | { 3046 | "eliminated": { 3047 | "id": "8b3e6cc9f6144176b06ccc009015cea3", 3048 | "isBot": false, 3049 | "location": { 3050 | "rotation": { 3051 | "x": 0, 3052 | "y": 0, 3053 | "z": 0, 3054 | "w": 1 3055 | }, 3056 | "position": { 3057 | "x": -9375.664376986746, 3058 | "y": -29626.28896033214, 3059 | "z": 3316.144857653946 3060 | }, 3061 | "scale": { 3062 | "x": 1, 3063 | "y": 1, 3064 | "z": 1 3065 | } 3066 | } 3067 | }, 3068 | "eliminator": { 3069 | "id": "b7c4b429916c448984be9ea2ee7037c8", 3070 | "isBot": false, 3071 | "location": { 3072 | "rotation": { 3073 | "x": 0, 3074 | "y": 0, 3075 | "z": 0, 3076 | "w": 1 3077 | }, 3078 | "position": { 3079 | "x": 0, 3080 | "y": 0, 3081 | "z": 0 3082 | }, 3083 | "scale": { 3084 | "x": 1, 3085 | "y": 1, 3086 | "z": 1 3087 | } 3088 | } 3089 | }, 3090 | "gunType": "05", 3091 | "knocked": false, 3092 | "timestamp": 158329 3093 | } 3094 | ], 3095 | "additionGfps": [], 3096 | "safeZones": [], 3097 | "playerPositions": {} 3098 | } 3099 | -------------------------------------------------------------------------------- /test/results/client-8.11.json: -------------------------------------------------------------------------------- 1 | { 2 | "meta": { 3 | "magic": 480436863, 4 | "fileVersion": 5, 5 | "lengthInMs": 144574, 6 | "networkVersion": 2, 7 | "changelist": 5484841, 8 | "name": "Ungespeicherte Wiederholung", 9 | "isLive": false, 10 | "timestamp": "2019-03-23T03:26:30.103Z", 11 | "isCompressed": true 12 | }, 13 | "header": { 14 | "magic": 754295101, 15 | "networkVersion": 14, 16 | "networkChecksum": 2625471030, 17 | "engineNetworkVersion": 11, 18 | "gameNetworkProtocol": 0, 19 | "id": "9c986e6290b24441963808b44bfe29a1", 20 | "version": { 21 | "branch": "++Fortnite+Release-8.11", 22 | "major": 8, 23 | "minor": 11, 24 | "changelist": 5484841, 25 | "patch": 0 26 | }, 27 | "levelNamesAndTimes": { 28 | "/Game/Athena/Maps/Athena_Terrain": 0 29 | }, 30 | "flags": 3, 31 | "gameSpecificData": [ 32 | "SubGame=Athena" 33 | ] 34 | }, 35 | "matchStats": { 36 | "accuracy": 0, 37 | "assists": 0, 38 | "eliminations": 0, 39 | "weaponDamage": 0, 40 | "otherDamage": 0, 41 | "revives": 0, 42 | "damageTaken": 172, 43 | "damageToStructures": 150, 44 | "materialsGathered": 41, 45 | "materialsUsed": 10, 46 | "totalTraveled": 0 47 | }, 48 | "teamMatchStats": { 49 | "position": 80, 50 | "totalPlayers": 97 51 | }, 52 | "eliminations": [ 53 | { 54 | "eliminated": { 55 | "name": "Plex YT GAMER", 56 | "isBot": false 57 | }, 58 | "eliminator": { 59 | "name": "Plex YT GAMER", 60 | "location": { 61 | "rotation": { 62 | "x": 0, 63 | "y": 0, 64 | "z": 0, 65 | "w": 1 66 | }, 67 | "position": { 68 | "x": 0, 69 | "y": 0, 70 | "z": 0 71 | }, 72 | "scale": { 73 | "x": 1, 74 | "y": 1, 75 | "z": 1 76 | } 77 | }, 78 | "isBot": false 79 | }, 80 | "gunType": "2e", 81 | "knocked": false, 82 | "timestamp": 8559 83 | }, 84 | { 85 | "eliminated": { 86 | "name": "adamsRS3", 87 | "isBot": false 88 | }, 89 | "eliminator": { 90 | "name": "adamsRS3", 91 | "location": { 92 | "rotation": { 93 | "x": 0, 94 | "y": 0, 95 | "z": 0, 96 | "w": 1 97 | }, 98 | "position": { 99 | "x": 0, 100 | "y": 0, 101 | "z": 0 102 | }, 103 | "scale": { 104 | "x": 1, 105 | "y": 1, 106 | "z": 1 107 | } 108 | }, 109 | "isBot": false 110 | }, 111 | "gunType": "2e", 112 | "knocked": false, 113 | "timestamp": 36456 114 | }, 115 | { 116 | "eliminated": { 117 | "name": "NaVi_MakSutI", 118 | "isBot": false 119 | }, 120 | "eliminator": { 121 | "name": "siNa_MPG", 122 | "location": { 123 | "rotation": { 124 | "x": 0, 125 | "y": 0, 126 | "z": 0, 127 | "w": 1 128 | }, 129 | "position": { 130 | "x": 0, 131 | "y": 0, 132 | "z": 0 133 | }, 134 | "scale": { 135 | "x": 1, 136 | "y": 1, 137 | "z": 1 138 | } 139 | }, 140 | "isBot": false 141 | }, 142 | "gunType": "10", 143 | "knocked": false, 144 | "timestamp": 88505 145 | }, 146 | { 147 | "eliminated": { 148 | "name": "ϹΗΕZ", 149 | "isBot": false 150 | }, 151 | "eliminator": { 152 | "name": "Kzander TV", 153 | "location": { 154 | "rotation": { 155 | "x": 0, 156 | "y": 0, 157 | "z": 0, 158 | "w": 1 159 | }, 160 | "position": { 161 | "x": 0, 162 | "y": 0, 163 | "z": 0 164 | }, 165 | "scale": { 166 | "x": 1, 167 | "y": 1, 168 | "z": 1 169 | } 170 | }, 171 | "isBot": false 172 | }, 173 | "gunType": "03", 174 | "knocked": false, 175 | "timestamp": 89684 176 | }, 177 | { 178 | "eliminated": { 179 | "name": "TTv_Pm_Sc0rPi0N", 180 | "isBot": false 181 | }, 182 | "eliminator": { 183 | "name": "carlos-carlos230", 184 | "location": { 185 | "rotation": { 186 | "x": 0, 187 | "y": 0, 188 | "z": 0, 189 | "w": 1 190 | }, 191 | "position": { 192 | "x": 0, 193 | "y": 0, 194 | "z": 0 195 | }, 196 | "scale": { 197 | "x": 1, 198 | "y": 1, 199 | "z": 1 200 | } 201 | }, 202 | "isBot": false 203 | }, 204 | "gunType": "04", 205 | "knocked": false, 206 | "timestamp": 98550 207 | }, 208 | { 209 | "eliminated": { 210 | "name": "OKuxwaDiaBeł", 211 | "isBot": false 212 | }, 213 | "eliminator": { 214 | "name": "JulianWarocquier", 215 | "location": { 216 | "rotation": { 217 | "x": 0, 218 | "y": 0, 219 | "z": 0, 220 | "w": 1 221 | }, 222 | "position": { 223 | "x": 0, 224 | "y": 0, 225 | "z": 0 226 | }, 227 | "scale": { 228 | "x": 1, 229 | "y": 1, 230 | "z": 1 231 | } 232 | }, 233 | "isBot": false 234 | }, 235 | "gunType": "01", 236 | "knocked": false, 237 | "timestamp": 99355 238 | }, 239 | { 240 | "eliminated": { 241 | "name": "Willokhlass", 242 | "isBot": false 243 | }, 244 | "eliminator": { 245 | "name": "Leg4cyOf Netero", 246 | "location": { 247 | "rotation": { 248 | "x": 0, 249 | "y": 0, 250 | "z": 0, 251 | "w": 1 252 | }, 253 | "position": { 254 | "x": 0, 255 | "y": 0, 256 | "z": 0 257 | }, 258 | "scale": { 259 | "x": 1, 260 | "y": 1, 261 | "z": 1 262 | } 263 | }, 264 | "isBot": false 265 | }, 266 | "gunType": "03", 267 | "knocked": false, 268 | "timestamp": 99606 269 | }, 270 | { 271 | "eliminated": { 272 | "name": "Ekamrr-yt", 273 | "isBot": false 274 | }, 275 | "eliminator": { 276 | "name": "AlkoKalle", 277 | "location": { 278 | "rotation": { 279 | "x": 0, 280 | "y": 0, 281 | "z": 0, 282 | "w": 1 283 | }, 284 | "position": { 285 | "x": 0, 286 | "y": 0, 287 | "z": 0 288 | }, 289 | "scale": { 290 | "x": 1, 291 | "y": 1, 292 | "z": 1 293 | } 294 | }, 295 | "isBot": false 296 | }, 297 | "gunType": "02", 298 | "knocked": false, 299 | "timestamp": 99843 300 | }, 301 | { 302 | "eliminated": { 303 | "name": "0vuk0", 304 | "isBot": false 305 | }, 306 | "eliminator": { 307 | "name": "0vuk0", 308 | "location": { 309 | "rotation": { 310 | "x": 0, 311 | "y": 0, 312 | "z": 0, 313 | "w": 1 314 | }, 315 | "position": { 316 | "x": 0, 317 | "y": 0, 318 | "z": 0 319 | }, 320 | "scale": { 321 | "x": 1, 322 | "y": 1, 323 | "z": 1 324 | } 325 | }, 326 | "isBot": false 327 | }, 328 | "gunType": "2e", 329 | "knocked": false, 330 | "timestamp": 100445 331 | }, 332 | { 333 | "eliminated": { 334 | "name": "vao.exe", 335 | "isBot": false 336 | }, 337 | "eliminator": { 338 | "name": "PeluoTOP", 339 | "location": { 340 | "rotation": { 341 | "x": 0, 342 | "y": 0, 343 | "z": 0, 344 | "w": 1 345 | }, 346 | "position": { 347 | "x": 0, 348 | "y": 0, 349 | "z": 0 350 | }, 351 | "scale": { 352 | "x": 1, 353 | "y": 1, 354 | "z": 1 355 | } 356 | }, 357 | "isBot": false 358 | }, 359 | "gunType": "03", 360 | "knocked": false, 361 | "timestamp": 102204 362 | }, 363 | { 364 | "eliminated": { 365 | "name": "MRO v1.1", 366 | "isBot": false 367 | }, 368 | "eliminator": { 369 | "name": "UtileForm72", 370 | "location": { 371 | "rotation": { 372 | "x": 0, 373 | "y": 0, 374 | "z": 0, 375 | "w": 1 376 | }, 377 | "position": { 378 | "x": 0, 379 | "y": 0, 380 | "z": 0 381 | }, 382 | "scale": { 383 | "x": 1, 384 | "y": 1, 385 | "z": 1 386 | } 387 | }, 388 | "isBot": false 389 | }, 390 | "gunType": "04", 391 | "knocked": false, 392 | "timestamp": 103323 393 | }, 394 | { 395 | "eliminated": { 396 | "name": "SoraΗD", 397 | "isBot": false 398 | }, 399 | "eliminator": { 400 | "name": "RagnarITB", 401 | "location": { 402 | "rotation": { 403 | "x": 0, 404 | "y": 0, 405 | "z": 0, 406 | "w": 1 407 | }, 408 | "position": { 409 | "x": 0, 410 | "y": 0, 411 | "z": 0 412 | }, 413 | "scale": { 414 | "x": 1, 415 | "y": 1, 416 | "z": 1 417 | } 418 | }, 419 | "isBot": false 420 | }, 421 | "gunType": "03", 422 | "knocked": false, 423 | "timestamp": 103957 424 | }, 425 | { 426 | "eliminated": { 427 | "name": "blithzz49", 428 | "isBot": false 429 | }, 430 | "eliminator": { 431 | "name": "DønaldDuck", 432 | "location": { 433 | "rotation": { 434 | "x": 0, 435 | "y": 0, 436 | "z": 0, 437 | "w": 1 438 | }, 439 | "position": { 440 | "x": 0, 441 | "y": 0, 442 | "z": 0 443 | }, 444 | "scale": { 445 | "x": 1, 446 | "y": 1, 447 | "z": 1 448 | } 449 | }, 450 | "isBot": false 451 | }, 452 | "gunType": "03", 453 | "knocked": false, 454 | "timestamp": 105090 455 | }, 456 | { 457 | "eliminated": { 458 | "name": "DekroHD", 459 | "isBot": false 460 | }, 461 | "eliminator": { 462 | "name": "Cook31100", 463 | "location": { 464 | "rotation": { 465 | "x": 0, 466 | "y": 0, 467 | "z": 0, 468 | "w": 1 469 | }, 470 | "position": { 471 | "x": 0, 472 | "y": 0, 473 | "z": 0 474 | }, 475 | "scale": { 476 | "x": 1, 477 | "y": 1, 478 | "z": 1 479 | } 480 | }, 481 | "isBot": false 482 | }, 483 | "gunType": "03", 484 | "knocked": false, 485 | "timestamp": 105650 486 | }, 487 | { 488 | "eliminated": { 489 | "name": "05lol26", 490 | "isBot": false 491 | }, 492 | "eliminator": { 493 | "name": "uryyy15", 494 | "location": { 495 | "rotation": { 496 | "x": 0, 497 | "y": 0, 498 | "z": 0, 499 | "w": 1 500 | }, 501 | "position": { 502 | "x": 0, 503 | "y": 0, 504 | "z": 0 505 | }, 506 | "scale": { 507 | "x": 1, 508 | "y": 1, 509 | "z": 1 510 | } 511 | }, 512 | "isBot": false 513 | }, 514 | "gunType": "05", 515 | "knocked": false, 516 | "timestamp": 107502 517 | }, 518 | { 519 | "eliminated": { 520 | "name": "killerix88", 521 | "isBot": false 522 | }, 523 | "eliminator": { 524 | "name": "SoLiD_Vaskebjørn", 525 | "location": { 526 | "rotation": { 527 | "x": 0, 528 | "y": 0, 529 | "z": 0, 530 | "w": 1 531 | }, 532 | "position": { 533 | "x": 0, 534 | "y": 0, 535 | "z": 0 536 | }, 537 | "scale": { 538 | "x": 1, 539 | "y": 1, 540 | "z": 1 541 | } 542 | }, 543 | "isBot": false 544 | }, 545 | "gunType": "03", 546 | "knocked": false, 547 | "timestamp": 111518 548 | }, 549 | { 550 | "eliminated": { 551 | "name": "carlos-carlos230", 552 | "isBot": false 553 | }, 554 | "eliminator": { 555 | "name": "DønaldDuck", 556 | "location": { 557 | "rotation": { 558 | "x": 0, 559 | "y": 0, 560 | "z": 0, 561 | "w": 1 562 | }, 563 | "position": { 564 | "x": 0, 565 | "y": 0, 566 | "z": 0 567 | }, 568 | "scale": { 569 | "x": 1, 570 | "y": 1, 571 | "z": 1 572 | } 573 | }, 574 | "isBot": false 575 | }, 576 | "gunType": "03", 577 | "knocked": false, 578 | "timestamp": 112352 579 | }, 580 | { 581 | "eliminated": { 582 | "name": "12william12", 583 | "isBot": false 584 | }, 585 | "eliminator": { 586 | "name": "NeMo Nircial", 587 | "location": { 588 | "rotation": { 589 | "x": 0, 590 | "y": 0, 591 | "z": 0, 592 | "w": 1 593 | }, 594 | "position": { 595 | "x": 0, 596 | "y": 0, 597 | "z": 0 598 | }, 599 | "scale": { 600 | "x": 1, 601 | "y": 1, 602 | "z": 1 603 | } 604 | }, 605 | "isBot": false 606 | }, 607 | "gunType": "05", 608 | "knocked": false, 609 | "timestamp": 121281 610 | }, 611 | { 612 | "eliminated": { 613 | "name": "juan1609", 614 | "isBot": false 615 | }, 616 | "eliminator": { 617 | "name": "Leg4cyOf Netero", 618 | "location": { 619 | "rotation": { 620 | "x": 0, 621 | "y": 0, 622 | "z": 0, 623 | "w": 1 624 | }, 625 | "position": { 626 | "x": 0, 627 | "y": 0, 628 | "z": 0 629 | }, 630 | "scale": { 631 | "x": 1, 632 | "y": 1, 633 | "z": 1 634 | } 635 | }, 636 | "isBot": false 637 | }, 638 | "gunType": "03", 639 | "knocked": false, 640 | "timestamp": 125843 641 | }, 642 | { 643 | "eliminated": { 644 | "name": "xNocken", 645 | "isBot": false 646 | }, 647 | "eliminator": { 648 | "name": "N2K_Patchi", 649 | "location": { 650 | "rotation": { 651 | "x": 0, 652 | "y": 0, 653 | "z": 0, 654 | "w": 1 655 | }, 656 | "position": { 657 | "x": 0, 658 | "y": 0, 659 | "z": 0 660 | }, 661 | "scale": { 662 | "x": 1, 663 | "y": 1, 664 | "z": 1 665 | } 666 | }, 667 | "isBot": false 668 | }, 669 | "gunType": "02", 670 | "knocked": false, 671 | "timestamp": 126946 672 | }, 673 | { 674 | "eliminated": { 675 | "name": "ttvDarioesFresco", 676 | "isBot": false 677 | }, 678 | "eliminator": { 679 | "name": "PeluoTOP", 680 | "location": { 681 | "rotation": { 682 | "x": 0, 683 | "y": 0, 684 | "z": 0, 685 | "w": 1 686 | }, 687 | "position": { 688 | "x": 0, 689 | "y": 0, 690 | "z": 0 691 | }, 692 | "scale": { 693 | "x": 1, 694 | "y": 1, 695 | "z": 1 696 | } 697 | }, 698 | "isBot": false 699 | }, 700 | "gunType": "03", 701 | "knocked": false, 702 | "timestamp": 140382 703 | }, 704 | { 705 | "eliminated": { 706 | "name": "UtileForm72", 707 | "isBot": false 708 | }, 709 | "eliminator": { 710 | "name": "AlkoKalle", 711 | "location": { 712 | "rotation": { 713 | "x": 0, 714 | "y": 0, 715 | "z": 0, 716 | "w": 1 717 | }, 718 | "position": { 719 | "x": 0, 720 | "y": 0, 721 | "z": 0 722 | }, 723 | "scale": { 724 | "x": 1, 725 | "y": 1, 726 | "z": 1 727 | } 728 | }, 729 | "isBot": false 730 | }, 731 | "gunType": "02", 732 | "knocked": false, 733 | "timestamp": 140483 734 | }, 735 | { 736 | "eliminated": { 737 | "name": "Thicc Depyツ", 738 | "isBot": false 739 | }, 740 | "eliminator": { 741 | "name": "ventus314", 742 | "location": { 743 | "rotation": { 744 | "x": 0, 745 | "y": 0, 746 | "z": 0, 747 | "w": 1 748 | }, 749 | "position": { 750 | "x": 0, 751 | "y": 0, 752 | "z": 0 753 | }, 754 | "scale": { 755 | "x": 1, 756 | "y": 1, 757 | "z": 1 758 | } 759 | }, 760 | "isBot": false 761 | }, 762 | "gunType": "05", 763 | "knocked": false, 764 | "timestamp": 140617 765 | } 766 | ], 767 | "additionGfps": [], 768 | "safeZones": [], 769 | "playerPositions": {} 770 | } 771 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "moduleResolution": "node", 5 | "module": "commonjs", 6 | "target": "es2019", 7 | "lib": ["esnext", "esnext.array", "esnext.asynciterable", "esnext.intl", "esnext.symbol"], 8 | "declaration": true, 9 | "sourceMap": true, 10 | "removeComments": false, 11 | "alwaysStrict": true, 12 | "pretty": true, 13 | "outDir": "dist", 14 | "incremental": true, 15 | "noEmitHelpers": true, 16 | "importHelpers": true, 17 | "skipLibCheck": true, 18 | "esModuleInterop": true 19 | }, 20 | "exclude": [ 21 | "node_modules", 22 | "dist", 23 | "examples" 24 | ] 25 | } --------------------------------------------------------------------------------