Merge branch 'fix/issue-539-spawn' (#539)

This commit is contained in:
troytt 2026-10-01 11:25:14 +00:00
commit 17e7a8f2e4
12 changed files with 1360 additions and 120 deletions

View File

@ -19,6 +19,7 @@ import {
type PackedDrlgBundleManifest,
type PackedTileCatalogIndex,
} from '../../common/pack-contract/index.ts'
import { COLLIDE_MASK_INVALID } from '../../common/world/d2map.ts'
import {
getCollisionLocalSubTile,
getCollisionWorldSubTile,
@ -443,6 +444,43 @@ export class MapService {
return getCollisionWorldSubTile(this.activeView, worldSubX, worldSubY)
}
/**
* Resolve the full-level `LevelView` (among `areaIds`, in order) whose DRLG sub-tile canvas
* contains world sub-tile `(worldSubX, worldSubY)` on a non-void cell.
*
* This is how the renderer picks the level to draw around a server-positioned unit (1.13c: the
* unit's room → `pRoom->pLevel`, levels of an act occupy disjoint DRLG coordinate rectangles).
* It deliberately does NOT use {@link getActiveLevelView}: that is "the last view built", which
* `AutomapView` changes as a side effect when it builds neighbouring levels for `0x07` reveals
* (e.g. Blood Moor rooms next to the Rogue Encampment spawn) — issue #539.
*
* Returns `null` when no candidate level has real floor/wall data at that sub-tile (DRLG mismatch
* or not yet loaded); callers must treat that as not-ready rather than guessing a level.
*/
findLevelViewAtWorldSubTile(
worldSubX: number,
worldSubY: number,
areaIds: Iterable<number>,
): LevelView | null {
if (!this.engine) {
throw new Error('MapService.findLevelViewAtWorldSubTile: synchronous call requires in-process engine')
}
if (this.activeSeed === null) return null
const seen = new Set<number>()
for (const areaId of areaIds) {
if (areaId <= 0 || seen.has(areaId)) continue
seen.add(areaId)
const view = this.engine.getLevelView(areaId, 'all')
const lx = Math.floor(worldSubX) - view.subOriginX
const ly = Math.floor(worldSubY) - view.subOriginY
if (lx < 0 || ly < 0 || lx >= view.subWidth || ly >= view.subHeight) continue
const mask = view.collision[ly * view.subWidth + lx] ?? COLLIDE_MASK_INVALID
if ((mask & COLLIDE_MASK_INVALID) === COLLIDE_MASK_INVALID) continue
return view
}
return null
}
private sendWorkerRequest(
req: MapWorkerRequest,
): Promise<Extract<MapWorkerResponse, { readonly ok: true }>> {

View File

@ -38,7 +38,6 @@ import { BAKED_UI_MANIFEST } from '../../common/items/baked-ui-meta.ts'
import { resolveGroundItemSpriteRect } from '../ui/inventory.ts'
import {
applyLightingInputs,
type LightingInputs,
type LightingPassTargets,
} from './lighting-presets.ts'
@ -501,56 +500,34 @@ function drawSceneOverlayDrawable(
}
}
function normalizeSceneLightingInputs(
lightingInputs: LightingInputs,
subShiftX: number,
subShiftY: number,
): LightingInputs {
if (
(subShiftX === 0 && subShiftY === 0) ||
!(lightingInputs.playerSubTile.x >= subShiftX && subShiftX > 0)
) {
return lightingInputs
}
const normalizedPlayerSubTile = {
x: lightingInputs.playerSubTile.x - subShiftX,
y: lightingInputs.playerSubTile.y - subShiftY,
}
const normalizedPointLights = lightingInputs.pointLights.map((light) => ({
...light,
subTileX:
light.subTileX >= subShiftX && subShiftX > 0 ? light.subTileX - subShiftX : light.subTileX,
subTileY:
light.subTileY >= subShiftY && subShiftY > 0 ? light.subTileY - subShiftY : light.subTileY,
}))
return {
...lightingInputs,
playerSubTile: normalizedPlayerSubTile,
pointLights: normalizedPointLights,
}
}
/**
* Render one frame driven by an engine-decoupled `SceneSource` (e.g. online `ClientWorld` + `LevelView`).
*
* Coordinate contract (#539): `SceneSource` already converts absolute D2GS world sub-tiles to
* level-local sub-tiles (`world - levelView.subOrigin`) for drawables, lighting and the player;
* this function must not re-normalise them with value-range heuristics. Until the source reports
* `isWorldReady()` (LevelView loaded + server-assigned player position) only a cleared frame and
* the HUD are drawn — the camera is never anchored on a guessed position.
*/
export function renderSceneSourceFrame(ctx: SceneSourceRenderContext): SceneFrameSnapshot {
const rawSnapshot = ctx.source.buildFrameSnapshot()
const snapshot = ctx.source.buildFrameSnapshot()
const levelView = ctx.source.getLevelView()
const subShiftX = levelView ? (levelView.subOriginX ?? levelView.originX * 5) : 0
const subShiftY = levelView ? (levelView.subOriginY ?? levelView.originY * 5) : 0
const snapshot: SceneFrameSnapshot =
rawSnapshot.playerSubTile.x >= subShiftX && subShiftX > 0
? {
...rawSnapshot,
playerSubTile: {
x: rawSnapshot.playerSubTile.x - subShiftX,
y: rawSnapshot.playerSubTile.y - subShiftY,
},
}
: rawSnapshot
const nowMs = ctx.nowMs ?? performance.now()
const renderer = ctx.renderer ?? null
if (!snapshot.worldReady) {
if (renderer !== null) {
renderer.begin({ x: 0, y: 0, zoom: 1 }, [0, 0, 0])
renderer.setLighting(null)
renderer.flush()
}
if (ctx.hudManager) {
ctx.hudManager.render(nowMs, ctx.playerMoving ?? false)
}
ctx.onFrameSnapshot?.(snapshot)
return snapshot
}
if (renderer !== null) {
ctx.tileGpuCache?.ensureActPalette(snapshot.actId)
const camX = snapshot.playerWorld.x
@ -558,13 +535,7 @@ export function renderSceneSourceFrame(ctx: SceneSourceRenderContext): SceneFram
renderer.begin({ x: camX, y: camY, zoom: 1 }, [0.02, 0.02, 0.03])
if (ctx.lightingTargets) {
const lightingInputs = ctx.source.buildLightingInputs(ctx.lightingPreset)
const normalizedLightingInputs = normalizeSceneLightingInputs(
lightingInputs,
subShiftX,
subShiftY,
)
applyLightingInputs(normalizedLightingInputs, ctx.lightingTargets)
applyLightingInputs(ctx.source.buildLightingInputs(ctx.lightingPreset), ctx.lightingTargets)
}
const drawTileQuad = (
@ -654,13 +625,9 @@ export function renderSceneSourceFrame(ctx: SceneSourceRenderContext): SceneFram
originY: levelView?.isoOriginY ?? 0,
preRevealTown: isTownLevel(snapshot.levelId),
}
const localSub = ctx.source.getPlayerLocalSubTile()
const normSubX =
localSub.x >= subShiftX && subShiftX > 0 ? localSub.x - subShiftX : localSub.x
const normSubY =
localSub.y >= subShiftY && subShiftY > 0 ? localSub.y - subShiftY : localSub.y
const playerCellX = Math.floor(normSubX / 5)
const playerCellY = Math.floor(normSubY / 5)
const localSub = snapshot.playerLocalSubTile
const playerCellX = Math.floor(localSub.x / 5)
const playerCellY = Math.floor(localSub.y / 5)
ctx.minimap.reveal(
effectiveMinimapLevel,
playerCellX,
@ -707,13 +674,7 @@ export function renderSceneSourceFrame(ctx: SceneSourceRenderContext): SceneFram
renderer.flush()
} else if (ctx.lightingTargets) {
const lightingInputs = ctx.source.buildLightingInputs(ctx.lightingPreset)
const normalizedLightingInputs = normalizeSceneLightingInputs(
lightingInputs,
subShiftX,
subShiftY,
)
applyLightingInputs(normalizedLightingInputs, ctx.lightingTargets)
applyLightingInputs(ctx.source.buildLightingInputs(ctx.lightingPreset), ctx.lightingTargets)
}
if (ctx.hudManager) {

View File

@ -275,19 +275,32 @@ export class OnlineSession {
})
this.sceneSource = new ClientWorldSceneSource(
() => ({
() => {
// #539: the scene is anchored only on server-provided state (0x03 LoadAct area + 0x07
// revealed rooms + server player position). No `|| 1` Rogue Encampment default and no
// "last LevelView MapService happened to build" (AutomapView builds neighbouring levels
// such as Blood Moor as a side effect of 0x07). The rendered level is the one whose DRLG
// canvas contains the player's world sub-tile (1.13c: unit → pRoom → pLevel); until such a
// level exists the scene reports not-ready.
const predSnap = this.predictor.getSnapshot()
const levelView =
this.mapService && this.world.areaId > 0 && (predSnap.x !== 0 || predSnap.y !== 0)
? this.mapService.findLevelViewAtWorldSubTile(predSnap.x, predSnap.y, [
this.world.areaId,
...this.world.getRevealedAreaIds(),
])
: null
const levelId = levelView?.areaId ?? 0
return {
tick: this.tickCounter,
actId: getActForArea(this.world.areaId || 1),
levelId: this.world.areaId || 1,
playerSubX: this.predictor.getSnapshot().x,
playerSubY: this.predictor.getSnapshot().y,
...(levelId > 0 ? { actId: getActForArea(levelId), levelId } : {}),
playerSubX: predSnap.x,
playerSubY: predSnap.y,
units: this.buildRenderableUnits(),
levelView:
this.mapService?.getActiveLevelView() ??
this.automapView.getLevelView(this.world.areaId || 1) ??
null,
levelView,
tileAtlas: this.mapService?.getTileAtlas() ?? null,
}),
}
},
initialViewport,
)
@ -735,32 +748,41 @@ export class OnlineSession {
switch (ev.type) {
case 'LoadAct': {
const defaultTownArea = ([1, 40, 75, 103, 109] as const)[ev.act] ?? 1
const effectiveAreaId = ev.areaId > 0 ? ev.areaId : defaultTownArea
// 1.13c `0x03 LoadAct` (D2Client 0x6fb5db50) always names the level the player is being
// loaded into. Without it (or without a buildable LevelView) the client cannot place the
// player on the server's map, so fail fast instead of guessing a town (#539).
if (ev.areaId <= 0) {
this.handleUnexpectedDisconnect(
`0x03 LoadAct carried no areaId (act=${String(ev.act)}): cannot build the level the server placed the player in`,
)
break
}
if (this.mapService) {
try {
this.mapService.onLoadActPacket(
{
act: ev.act,
mapSeed: ev.mapSeed,
areaId: effectiveAreaId,
areaId: ev.areaId,
},
{ difficulty: this.world.difficulty },
)
} catch {
// MapService may be running without packed bundle in lightweight tests
} catch (err) {
const msg = err instanceof Error ? err.message : String(err)
this.handleUnexpectedDisconnect(
`MapService failed to build area ${String(ev.areaId)} (act=${String(ev.act)}, seed=0x${(ev.mapSeed >>> 0).toString(16)}): ${msg}`,
)
break
}
}
const activeView = this.mapService?.getActiveLevelView() ?? undefined
this.automapView.setContext(
ev.mapSeed,
this.world.difficulty,
effectiveAreaId,
ev.areaId,
activeView,
)
if (effectiveAreaId > 0) {
void this.soundService.onEnterArea(effectiveAreaId)
}
void this.soundService.onEnterArea(ev.areaId)
break
}

View File

@ -44,7 +44,12 @@ export interface SceneFrameSnapshot {
readonly actId: 1 | 2 | 3 | 4 | 5
readonly levelId: number
readonly viewportProfile: ViewportProfile
/** `true` once a LevelView and a server-assigned player position exist (see `isWorldReady`). */
readonly worldReady: boolean
/** Absolute world sub-tile of the local player (D2GS coordinates). */
readonly playerSubTile: { readonly x: number; readonly y: number }
/** Level-local sub-tile of the local player (`world - levelView.subOrigin`). */
readonly playerLocalSubTile: { readonly x: number; readonly y: number }
readonly playerWorld: { readonly x: number; readonly y: number }
readonly cameraTopLeft: { readonly x: number; readonly y: number }
readonly floorQuads: readonly SceneTileQuad[]
@ -66,6 +71,8 @@ export interface SceneSource {
getLevelId(): number
getTick(): number
getPlayerSubTile(): { readonly x: number; readonly y: number }
/** LevelView loaded and local player position assigned by the server. */
isWorldReady(): boolean
getPlayerLocalSubTile(): { readonly x: number; readonly y: number }
getPlayerWorldOrtho(): { readonly x: number; readonly y: number }
getCameraTopLeft(profile?: ViewportProfile): { readonly x: number; readonly y: number }
@ -149,23 +156,23 @@ function mapLevelDrawToQuad(item: LevelDrawItem, fallbackActId: number): SceneTi
}
}
/**
* Level-local sub-tile shift for the active `LevelView`.
*
* Contract: every unit / player coordinate fed into a `ClientWorldSceneSource` is an absolute
* world sub-tile coordinate as sent by D2GS (`0x15`, `0x59`, `0x95`, `0xAC`, ...). The level-local
* sub-tile is always `world - levelView.subOrigin` (`subOrigin = DRLG coord * 5`). There is no
* heuristic "already local?" guess any more (the old `player < origin * 0.5` probe silently accepted
* two coordinate contracts). Without a `LevelView` there is no level to anchor to: shift is zero and
* `isWorldReady()` reports not-ready so the renderer does not draw units at arbitrary positions.
*/
function resolveLevelSubTileShift(
playerSubX: number,
playerSubY: number,
levelView: LevelView | null | undefined,
): { readonly shiftX: number; readonly shiftY: number } {
if (!levelView) {
return { shiftX: 0, shiftY: 0 }
}
const ox = levelView.subOriginX ?? levelView.originX ?? 0
const oy = levelView.subOriginY ?? levelView.originY ?? 0
if (ox === 0 && oy === 0) {
return { shiftX: 0, shiftY: 0 }
}
if (playerSubX < ox * 0.5 && playerSubY < oy * 0.5) {
return { shiftX: 0, shiftY: 0 }
}
return { shiftX: ox, shiftY: oy }
return { shiftX: levelView.subOriginX, shiftY: levelView.subOriginY }
}
function normalizeUnitsToLocalSubTiles(
@ -240,9 +247,21 @@ export class ClientWorldSceneSource implements SceneSource {
return { x: st.playerSubX, y: st.playerSubY }
}
/**
* The world can only be drawn once D2GS has (a) loaded the act/level (`0x03 LoadAct` →
* `LevelView`) and (b) assigned the local player a world position (`0x15` / `0x95` / ...).
* D2 world sub-tile coordinates are always far from `(0, 0)` (DRLG act origins), so `(0, 0)`
* means "not yet assigned". Until then nothing world-relative may be drawn (#539: never guess a
* spawn / camera anchor).
*/
isWorldReady(): boolean {
const st = this.stateProvider()
return Boolean(st.levelView) && (st.playerSubX !== 0 || st.playerSubY !== 0)
}
getPlayerLocalSubTile(): { readonly x: number; readonly y: number } {
const st = this.stateProvider()
const { shiftX, shiftY } = resolveLevelSubTileShift(st.playerSubX, st.playerSubY, st.levelView)
const { shiftX, shiftY } = resolveLevelSubTileShift(st.levelView)
return {
x: st.playerSubX - shiftX,
y: st.playerSubY - shiftY,
@ -251,7 +270,7 @@ export class ClientWorldSceneSource implements SceneSource {
getPlayerWorldOrtho(): { readonly x: number; readonly y: number } {
const st = this.stateProvider()
const { shiftX, shiftY } = resolveLevelSubTileShift(st.playerSubX, st.playerSubY, st.levelView)
const { shiftX, shiftY } = resolveLevelSubTileShift(st.levelView)
const isoOriginX = st.levelView?.isoOriginX ?? 0
const isoOriginY = st.levelView?.isoOriginY ?? 0
return subTileToWorldOrtho(
@ -275,19 +294,19 @@ export class ClientWorldSceneSource implements SceneSource {
isSubTileWalkable(subX: number, subY: number): boolean {
const st = this.stateProvider()
if (st.levelView && st.levelView.rooms.length > 0) {
// No LevelView → no collision data → nothing is walkable (never a permissive `return true`).
if (!st.levelView) return false
return isWalkableWorldSubTile(st.levelView, Math.floor(subX), Math.floor(subY))
}
return true
}
buildFrameSnapshot(cullPaddingPx = 240): SceneFrameSnapshot {
const st = this.stateProvider()
const profile = this.viewportProfile
const { shiftX, shiftY } = resolveLevelSubTileShift(st.playerSubX, st.playerSubY, st.levelView)
const { shiftX, shiftY } = resolveLevelSubTileShift(st.levelView)
const isoOriginX = st.levelView?.isoOriginX ?? 0
const isoOriginY = st.levelView?.isoOriginY ?? 0
const playerSubTile = { x: st.playerSubX, y: st.playerSubY }
const playerLocalSubTile = { x: st.playerSubX - shiftX, y: st.playerSubY - shiftY }
const playerWorld = subTileToWorldOrtho(
st.playerSubX - shiftX,
st.playerSubY - shiftY,
@ -351,7 +370,9 @@ export class ClientWorldSceneSource implements SceneSource {
actId: this.getActId(),
levelId: this.getLevelId(),
viewportProfile: profile,
worldReady: this.isWorldReady(),
playerSubTile,
playerLocalSubTile,
playerWorld,
cameraTopLeft,
floorQuads,
@ -365,7 +386,7 @@ export class ClientWorldSceneSource implements SceneSource {
buildLightingInputs(preset: LightingPreset): LightingInputs {
const st = this.stateProvider()
const { shiftX, shiftY } = resolveLevelSubTileShift(st.playerSubX, st.playerSubY, st.levelView)
const { shiftX, shiftY } = resolveLevelSubTileShift(st.levelView)
const isoOriginX = st.levelView?.isoOriginX ?? 0
const isoOriginY = st.levelView?.isoOriginY ?? 0
const localPlayerSub = {
@ -401,7 +422,7 @@ export class ClientWorldSceneSource implements SceneSource {
profile: ViewportProfile = this.viewportProfile,
): SceneUnitDrawable | null {
const st = this.stateProvider()
const { shiftX, shiftY } = resolveLevelSubTileShift(st.playerSubX, st.playerSubY, st.levelView)
const { shiftX, shiftY } = resolveLevelSubTileShift(st.levelView)
const isoOriginX = st.levelView?.isoOriginX ?? 0
const isoOriginY = st.levelView?.isoOriginY ?? 0
const playerWorld = subTileToWorldOrtho(

View File

@ -148,9 +148,19 @@ export function screenToWorld(
/**
* Convert 1.13c isometric sub-tile coordinates `(subX, subY)` to world orthogonal pixels.
* Each sub-tile is 32×16 ortho pixels:
* `worldX = originX + (subX - subY) * 16`
* `worldY = originY + (subX + subY) * 8`
*
* Diablo II 1.13c floor tiles are 160×80 px diamonds (DT1 floor blocks) holding 5×5 sub-tiles,
* so one sub-tile is a 32×16 px diamond and the tile grid places cell `(cx, cy)` at
* `((cx - cy) * 80, (cx + cy) * 40)` (`ORTHO_CELL_WIDTH` / `ORTHO_CELL_HEIGHT`, see
* `buildIsoMapScene` / `localSubTileToOrtho`). Units (server sub-tile coordinates) MUST use the
* same lattice as the tiles they stand on:
* `worldX = originX + (subX - subY) * 16` (`ORTHO_SUB_TILE_WIDTH = 80 / 5 = 16`)
* `worldY = originY + (subX + subY) * 8` (`ORTHO_SUB_TILE_HEIGHT = 40 / 5 = 8`)
*
* Issue #539: this used to multiply by `ORTHO_SUB_TILE_WIDTH / 2` and `ORTHO_SUB_TILE_HEIGHT / 2`,
* i.e. a 16×8 px lattice at half the tile scale. Every unit (and the camera that follows the
* player) was drawn at half its distance from the level iso origin, so a player standing on
* Rogue Encampment floor appeared outside the palisade among the trees.
*/
export function subTileToWorldOrtho(
subX: number,
@ -159,13 +169,14 @@ export function subTileToWorldOrtho(
originY = 0,
): { x: number; y: number } {
return {
x: originX + (subX - subY) * (ORTHO_SUB_TILE_WIDTH / 2),
y: originY + (subX + subY) * (ORTHO_SUB_TILE_HEIGHT / 2),
x: originX + (subX - subY) * ORTHO_SUB_TILE_WIDTH,
y: originY + (subX + subY) * ORTHO_SUB_TILE_HEIGHT,
}
}
/**
* Convert world orthogonal pixels `(worldX, worldY)` to continuous sub-tile coordinates.
* Convert world orthogonal pixels `(worldX, worldY)` to continuous sub-tile coordinates
* (exact inverse of {@link subTileToWorldOrtho}).
*/
export function worldOrthoToSubTile(
worldX: number,
@ -176,13 +187,14 @@ export function worldOrthoToSubTile(
const dx = (worldX - originX) / ORTHO_SUB_TILE_WIDTH
const dy = (worldY - originY) / ORTHO_SUB_TILE_HEIGHT
return {
x: dy + dx,
y: dy - dx,
x: (dy + dx) / 2,
y: (dy - dx) / 2,
}
}
/**
* Convert sub-tile `(subX, subY)` directly to screen coordinates relative to camera sub-tile `(camSubX, camSubY)`.
* Convert sub-tile `(subX, subY)` directly to screen coordinates relative to camera sub-tile `(camSubX, camSubY)`
* (same 32×16 px sub-tile lattice as {@link subTileToWorldOrtho}).
*/
export function subTileToScreen(
subX: number,
@ -194,13 +206,14 @@ export function subTileToScreen(
const dSubX = subX - camSubX
const dSubY = subY - camSubY
return {
x: profile.width / 2 + (dSubX - dSubY) * (ORTHO_SUB_TILE_WIDTH / 2),
y: profile.height / 2 + (dSubX + dSubY) * (ORTHO_SUB_TILE_HEIGHT / 2),
x: profile.width / 2 + (dSubX - dSubY) * ORTHO_SUB_TILE_WIDTH,
y: profile.height / 2 + (dSubX + dSubY) * ORTHO_SUB_TILE_HEIGHT,
}
}
/**
* Convert screen click `(screenX, screenY)` to fractional sub-tile coordinates relative to camera sub-tile `(camSubX, camSubY)`.
* Convert screen click `(screenX, screenY)` to fractional sub-tile coordinates relative to camera sub-tile `(camSubX, camSubY)`
* (exact inverse of {@link subTileToScreen}).
*/
export function screenToSubTile(
screenX: number,
@ -214,8 +227,8 @@ export function screenToSubTile(
const dx = relX / ORTHO_SUB_TILE_WIDTH
const dy = relY / ORTHO_SUB_TILE_HEIGHT
return {
x: camSubX + (dy + dx),
y: camSubY + (dy - dx),
x: camSubX + (dy + dx) / 2,
y: camSubY + (dy - dx) / 2,
}
}

View File

@ -219,6 +219,19 @@ export class ClientWorld {
return this._revealedRooms
}
/**
* Distinct area ids of the rooms currently revealed by the server (`0x07` minus `0x08`), in
* first-seen order. Used to resolve which level contains the player's server position (#539).
*/
getRevealedAreaIds(): number[] {
const out: number[] = []
for (const key of this._revealedRooms) {
const areaId = Number(key.slice(0, key.indexOf(':')))
if (areaId > 0 && !out.includes(areaId)) out.push(areaId)
}
return out
}
get waypoints(): ReadonlySet<number> {
return this._waypoints
}

View File

@ -0,0 +1,266 @@
/**
* Issue #539 regression: the local player must be rendered exactly at the server-assigned
* world position, on Rogue Encampment walkable floor, across many map seeds.
*
* Root cause (fixed): `subTileToWorldOrtho` / `subTileToScreen` projected unit sub-tiles on a
* 16×8 px lattice (`ORTHO_SUB_TILE_* / 2`) while the DT1 floor tiles are laid out on the 1.13c
* 160×80 px tile = 5×5 sub-tiles of 32×16 px lattice (`(x - y) * 16`, `(x + y) * 8`). The player
* sprite and the camera following it were drawn at half their distance from the level iso origin,
* i.e. on the palisade / forest outside the camp, while the server (and our DRLG collision) had
* the player standing on camp floor.
*
* The test drives the real `OnlineSession` replay path (D2GS S→C decode → ClientWorld →
* predictor → `MapService` DRLG from `0x03 LoadAct` → `ClientWorldSceneSource`) with live 1.13c
* captures (`tests/fixtures/netproto/*.d2cap`, one fresh game / map seed each) and compares the
* rendered result with ground truth decoded independently by `replayD2CapText`.
*/
import { readdirSync, readFileSync } from 'node:fs'
import { resolve } from 'node:path'
import { beforeAll, describe, expect, it } from 'vitest'
import '../../tools/lib/node-map-loader.ts'
import { replayD2CapText } from '../../tools/netproto-replay.ts'
import {
MapService,
getCollisionWorldSubTile,
isWalkableWorldSubTile,
localSubTileToOrtho,
orthoToLocalSubTile,
type LevelView,
} from '../../src/client/map/map-service.ts'
import { OnlineSession } from '../../src/client/session/online-session.ts'
import { createSettingsStore } from '../../src/client/settings/settings-store.ts'
import {
VIEWPORT_800x600,
screenToSubTile,
subTileToScreen,
subTileToWorldOrtho,
worldOrthoToSubTile,
} from '../../src/client/view/viewport-profile.ts'
import { COLLIDE_BLANK, COLLIDE_MASK_INVALID, COLLIDE_WALL } from '../../src/common/world/d2map.ts'
const FIXTURE_DIR = resolve('tests/fixtures/netproto')
const ROGUE_ENCAMPMENT = 1
/** Objects.txt id 119: Act 1 town waypoint (`waypoint`, Rogue Encampment). */
const ACT1_TOWN_WAYPOINT_CLASS = 119
/** Every capture that enters a game (01..04 legacy fixtures + 10-d2gs-spawn-seed-* fresh games). */
const SPAWN_FIXTURES = readdirSync(FIXTURE_DIR)
.filter(name => name.endsWith('.d2cap'))
.filter(name => replayD2CapText(readFileSync(resolve(FIXTURE_DIR, name), 'utf8')).world.mapSeed !== 0)
.sort()
/** 4-connected walkable component labels over the LevelView sub-tile grid. */
function labelWalkableComponents(view: LevelView): { readonly label: Int32Array; readonly sizes: number[] } {
const w = view.subWidth
const h = view.subHeight
const label = new Int32Array(w * h).fill(-1)
const sizes: number[] = []
for (let start = 0; start < w * h; start++) {
if (view.blocked[start] !== 0 || label[start]! >= 0) continue
const id = sizes.length
let size = 0
const stack = [start]
label[start] = id
while (stack.length > 0) {
const i = stack.pop()!
size++
const x = i % w
const y = (i - x) / w
const neighbors = [
x + 1 < w ? i + 1 : -1,
x > 0 ? i - 1 : -1,
y + 1 < h ? i + w : -1,
y > 0 ? i - w : -1,
]
for (const n of neighbors) {
if (n < 0 || view.blocked[n] !== 0 || label[n]! >= 0) continue
label[n] = id
stack.push(n)
}
}
sizes.push(size)
}
return { label, sizes }
}
describe('Issue #539: player spawn is rendered at the server position inside the Rogue Encampment', () => {
let mapService: MapService
beforeAll(async () => {
mapService = await MapService.fromPackedDir(resolve('public/act-packs/tiles'))
})
it('has spawn captures from several distinct map seeds and town layouts', () => {
const seeds = new Set<number>()
const layouts = new Set<string>()
for (const name of SPAWN_FIXTURES) {
const world = replayD2CapText(readFileSync(resolve(FIXTURE_DIR, name), 'utf8')).world
seeds.add(world.mapSeed >>> 0)
const view = mapService.loadAct({
act: world.act,
seed: world.mapSeed,
difficulty: world.difficulty as 0 | 1 | 2,
areaId: world.areaId,
})
expect(view).not.toBeNull()
layouts.add(`${String(world.self.x - view!.subOriginX)},${String(world.self.y - view!.subOriginY)}`)
}
expect(seeds.size).toBeGreaterThanOrEqual(8)
// The Rogue Encampment preset orientation is seed-dependent; cover more than one variant.
expect(layouts.size).toBeGreaterThanOrEqual(3)
})
it('sub-tile projection uses the same 32×16 px lattice as the DT1 floor tiles', () => {
const view = { isoOriginX: 3280, isoOriginY: 0 }
for (const [x, y] of [
[0, 0],
[5, 0],
[0, 5],
[137, 123],
[153, 68],
] as const) {
const unit = subTileToWorldOrtho(x, y, view.isoOriginX, view.isoOriginY)
const tile = localSubTileToOrtho(view, x, y)
expect(unit).toEqual({ x: tile.x, y: tile.y })
const back = worldOrthoToSubTile(unit.x, unit.y, view.isoOriginX, view.isoOriginY)
expect(back.x).toBeCloseTo(x, 9)
expect(back.y).toBeCloseTo(y, 9)
}
// One tile (5 sub-tiles) along +x is (80, 40) px, exactly one ORTHO cell.
expect(subTileToWorldOrtho(5, 0)).toEqual({ x: 80, y: 40 })
// Screen picking is the exact inverse of screen projection around the camera.
const s = subTileToScreen(5737, 4523, 5730, 4520, VIEWPORT_800x600)
expect(s).toEqual({ x: 400 + (7 - 3) * 16, y: 300 + (7 + 3) * 8 })
const p = screenToSubTile(s.x, s.y, 5730, 4520, VIEWPORT_800x600)
expect(p.x).toBeCloseTo(5737, 9)
expect(p.y).toBeCloseTo(4523, 9)
})
for (const name of SPAWN_FIXTURES) {
it(`${name}: rendered player == server position, on camp floor`, () => {
const text = readFileSync(resolve(FIXTURE_DIR, name), 'utf8')
// Independent ground truth: plain protocol replay into a bare ClientWorld.
const truth = replayD2CapText(text, { strict: true }).world
expect(truth.areaId).toBe(ROGUE_ENCAMPMENT)
expect(truth.self.x).toBeGreaterThan(0)
expect(truth.self.y).toBeGreaterThan(0)
const session = new OnlineSession({ settingsStore: createSettingsStore(), mapService })
session.loadD2CapReplay(text)
session.replayAllD2Cap()
// Let any rubber-band reconciliation settle; no movement commands are issued.
for (let i = 0; i < 50; i++) session.tick(40, 1000 + i * 40)
expect(session.disconnectReason).toBeNull()
// The level the scene renders must be the one containing the server position (#539 root
// cause #2): AutomapView builds neighbouring levels (Blood Moor) for 0x07 reveals near the
// spawn, which used to switch MapService's "active" view — and therefore the rendered map.
const view = session.sceneSource.getLevelView()
expect(view).not.toBeNull()
expect(view!.areaId).toBe(ROGUE_ENCAMPMENT)
expect(view!.seed).toBe(truth.mapSeed >>> 0)
const snap = session.sceneSource.buildFrameSnapshot()
expect(snap.worldReady).toBe(true)
expect(snap.levelId).toBe(ROGUE_ENCAMPMENT)
// 1. Player / camera anchor == server position (no locally computed spawn).
expect(snap.playerSubTile.x).toBeCloseTo(truth.self.x, 6)
expect(snap.playerSubTile.y).toBeCloseTo(truth.self.y, 6)
expect(session.camera.subX).toBeCloseTo(truth.self.x, 6)
expect(session.camera.subY).toBeCloseTo(truth.self.y, 6)
expect(snap.playerLocalSubTile.x).toBeCloseTo(truth.self.x - view!.subOriginX, 6)
expect(snap.playerLocalSubTile.y).toBeCloseTo(truth.self.y - view!.subOriginY, 6)
// 2. The pixel where the player sprite / camera is drawn lies over the server sub-tile in the
// tile lattice (old half-scale projection put it ~(68,61) sub-tiles away, on the palisade).
const under = orthoToLocalSubTile(view!, snap.playerWorld.x, snap.playerWorld.y)
expect(under.x).toBeCloseTo(snap.playerLocalSubTile.x, 6)
expect(under.y).toBeCloseTo(snap.playerLocalSubTile.y, 6)
const selfDrawable = snap.entities.unitDrawables.find(
u => u.unitKind === 'player' && u.unitId === truth.selfId,
)
expect(selfDrawable).toBeDefined()
expect(selfDrawable!.worldX).toBeCloseTo(snap.playerWorld.x, 6)
expect(selfDrawable!.worldY).toBeCloseTo(snap.playerWorld.y, 6)
expect(snap.cameraTopLeft.x).toBeCloseTo(snap.playerWorld.x - snap.viewportProfile.width / 2, 6)
expect(snap.cameraTopLeft.y).toBeCloseTo(snap.playerWorld.y - snap.viewportProfile.height / 2, 6)
// 3. The server sub-tile is walkable camp floor in the client DRLG collision.
const sx = Math.floor(truth.self.x)
const sy = Math.floor(truth.self.y)
expect(isWalkableWorldSubTile(view!, sx, sy)).toBe(true)
const mask = getCollisionWorldSubTile(view!, sx, sy)
expect(mask & (COLLIDE_WALL | COLLIDE_BLANK)).toBe(0)
expect(mask & COLLIDE_MASK_INVALID).not.toBe(COLLIDE_MASK_INVALID)
// 4. Inside the camp: the player's walkable component is the level's main floor and reaches the
// town waypoint the server spawned for this game.
const { label, sizes } = labelWalkableComponents(view!)
const playerComp = label[(sy - view!.subOriginY) * view!.subWidth + (sx - view!.subOriginX)]!
expect(playerComp).toBeGreaterThanOrEqual(0)
expect(sizes[playerComp]).toBe(Math.max(...sizes))
const waypoints = truth.getUnitsByType('object').filter(o => o.classId === ACT1_TOWN_WAYPOINT_CLASS)
expect(waypoints.length).toBe(1)
const wp = waypoints[0]!
let waypointReachable = false
for (let dy = -4; dy <= 4 && !waypointReachable; dy++) {
for (let dx = -4; dx <= 4 && !waypointReachable; dx++) {
const lx = wp.x + dx - view!.subOriginX
const ly = wp.y + dy - view!.subOriginY
if (lx < 0 || ly < 0 || lx >= view!.subWidth || ly >= view!.subHeight) continue
waypointReachable = label[ly * view!.subWidth + lx] === playerComp
}
}
expect(waypointReachable).toBe(true)
// 5. Every other server unit is drawn over its own server sub-tile as well (same lattice).
for (const u of snap.entities.unitDrawables) {
const back = orthoToLocalSubTile(view!, u.worldX, u.worldY)
// `u.subX/subY` are level-local (`world - subOrigin`) after scene normalisation.
expect(back.x).toBeCloseTo(u.subX, 6)
expect(back.y).toBeCloseTo(u.subY, 6)
}
})
}
it('0x07 reveals of a neighbouring level (Blood Moor) do not switch the rendered level', () => {
// 04-d2gs-idle-60s spawns near the camp's north gate: the server reveals Blood Moor (area 2)
// rooms, AutomapView builds that LevelView and MapService's "active" view becomes area 2.
const text = readFileSync(resolve(FIXTURE_DIR, '04-d2gs-idle-60s.d2cap'), 'utf8')
const session = new OnlineSession({ settingsStore: createSettingsStore(), mapService })
session.loadD2CapReplay(text)
session.replayAllD2Cap()
expect(session.world.getRevealedAreaIds()).toContain(2)
expect(mapService.getActiveLevelView()?.areaId).toBe(2) // precondition: the old hijack source
const view = session.sceneSource.getLevelView()
expect(view?.areaId).toBe(ROGUE_ENCAMPMENT)
expect(session.sceneSource.buildFrameSnapshot().levelId).toBe(ROGUE_ENCAMPMENT)
})
it('reports not-ready (never anchors the camera) before the server assigns a position', () => {
const text = readFileSync(resolve(FIXTURE_DIR, '10-d2gs-spawn-seed-52e4e6ff.d2cap'), 'utf8')
const truth = replayD2CapText(text, { strict: true }).world
const session = new OnlineSession({ settingsStore: createSettingsStore(), mapService })
session.handleServerEvent({ type: 'LoadAct', act: truth.act, mapSeed: truth.mapSeed, areaId: ROGUE_ENCAMPMENT })
const snap = session.sceneSource.buildFrameSnapshot()
expect(snap.worldReady).toBe(false)
expect(session.sceneSource.getLevelView()).toBeNull()
session.handleServerEvent({
type: 'UnitReassign',
unitType: 'player',
id: truth.selfId,
at: { x: truth.self.x, y: truth.self.y },
snap: true,
})
expect(session.sceneSource.buildFrameSnapshot().worldReady).toBe(true)
expect(session.sceneSource.getLevelView()?.areaId).toBe(ROGUE_ENCAMPMENT)
})
it('fails fast on a 0x03 LoadAct without an areaId instead of defaulting to a town', () => {
const session = new OnlineSession({ settingsStore: createSettingsStore(), mapService })
session.handleServerEvent({ type: 'LoadAct', act: 0, mapSeed: 0x52e4e6ff, areaId: 0 })
expect(session.disconnectReason).toMatch(/LoadAct carried no areaId/)
expect(session.sceneSource.buildFrameSnapshot().worldReady).toBe(false)
})
})

View File

@ -0,0 +1,170 @@
{"format":"d2cap-v1","createdAt":"2026-10-01T09:54:48.288Z","server":"101.37.117.183 (via=mixed)","account":"<redacted>","character":"WebBotFour","scenario":"join"}
{"t":1790848483284,"conn":"bnet","dir":"c2s","hex":"01","packetName":"BNCS_GREETING"}
{"t":1790848483284,"conn":"bnet","dir":"c2s","hex":"ff503a000000000036385849505832440d000000090400007f000001e0010000090400000904000055534100556e697465642053746174657300","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848483332,"conn":"bnet","dir":"s2c","hex":"ff2508003ca38d09","packetId":37,"packetName":"SID_PING"}
{"t":1790848483332,"conn":"bnet","dir":"c2s","hex":"ff2508003ca38d09","packetId":37,"packetName":"SID_PING"}
{"t":1790848483375,"conn":"bnet","dir":"s2c","hex":"ff5065000000000021e99b317a00000000d8b1d80027dd0149583836766572312e6d707100413d3338343535383136333420423d38383038323335383020433d31333633393337313033203420413d412d5320423d422d4320433d432d4120413d412d4200","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848483376,"conn":"bnet","dir":"c2s","hex":"ff518b00c4a1dfac000d0001cabe867602000000000000001000000006000000cbba000000000000dedb8ee0b6fbf4cd555415862ce7e8f95dbce0ff100000000a000000f015eb00000000002c9916a8cb282eed7b0753488b2b00b16e00dfd047616d652e6578652030332f30392f31302030343a31303a353120363134343000576562506c6179657200","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848483422,"conn":"bnet","dir":"s2c","hex":"ff5109000000000000","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848483423,"conn":"bnet","dir":"c2s","hex":"ff3a2a00c4a1dfac21e99b31910dfd82781e4a5ea07277813d9cbbee0648b6026432776562626f743400","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848483733,"conn":"bnet","dir":"s2c","hex":"ff590400","packetId":89,"packetName":"SID_SETEMAIL"}
{"t":1790848483775,"conn":"bnet","dir":"s2c","hex":"ff3a080000000000","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848483776,"conn":"bnet","dir":"c2s","hex":"ff3e2600c4a1dfac525199d4373ab72365215f0d733d5a6663020f9753616e63747561727900","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848483819,"conn":"bnet","dir":"s2c","hex":"ff3e5600c4a1dfac00000000000000007a000000652575b717e1000021e99b310000000000000000505832440d0000000000000000000000560940b14074c43d40df58fde610db6f5cfe483a6432776562626f743400","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848484277,"conn":"realm","dir":"c2s","hex":"01","packetName":"MCP_GREETING"}
{"t":1790848484278,"conn":"realm","dir":"c2s","hex":"4d0001c4a1dfac00000000000000007a00000021e99b310000000000000000505832440d0000000000000000000000560940b14074c43d40df58fde610db6f5cfe483a6432776562626f743400","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848484326,"conn":"realm","dir":"s2c","hex":"07000100000000","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848484327,"conn":"realm","dir":"c2s","hex":"07001908000000","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848484372,"conn":"realm","dir":"s2c","hex":"3c00190800010000000100ffffff7f576562426f74466f7572008d80ffffffffff2dff4fffffff07ffffffffffffffffffffff01e080808001ffff00","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848484373,"conn":"realm","dir":"c2s","hex":"0e0007576562426f74466f757200","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848484417,"conn":"realm","dir":"s2c","hex":"07000700000000","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848484419,"conn":"realm","dir":"c2s","hex":"21000301000000000001ff0877626d38336a38000064322d626f74206a6f696e00","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848484464,"conn":"realm","dir":"s2c","hex":"0d000301000100010000000000","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848484465,"conn":"realm","dir":"c2s","hex":"0e0004020077626d38336a380000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848484511,"conn":"realm","dir":"s2c","hex":"15000402004a000000652575b72f71f81d00000000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848484715,"conn":"game","dir":"s2c","hex":"af01","packetId":175}
{"t":1790848484716,"conn":"game","dir":"c2s","hex":"682f71f81d4a00060d000000ed4d5650b453354200576562426f74466f7572000000000000","packetId":104}
{"t":1790848484785,"conn":"game","dir":"s2c","hex":"0100040030000101","packetId":1}
{"t":1790848484786,"conn":"game","dir":"s2c","hex":"00","packetId":0}
{"t":1790848484786,"conn":"game","dir":"s2c","hex":"02","packetId":2}
{"t":1790848484786,"conn":"game","dir":"c2s","hex":"6b","packetId":107}
{"t":1790848484786,"conn":"game","dir":"c2s","hex":"6db245e3f60000000000000000","packetId":109}
{"t":1790848484866,"conn":"game","dir":"s2c","hex":"590100000006576562426f74466f757200000000000000000000","packetId":89}
{"t":1790848484866,"conn":"game","dir":"s2c","hex":"aa00010000000c6959f9ff1f","packetId":170}
{"t":1790848484866,"conn":"game","dir":"s2c","hex":"760001000000","packetId":118}
{"t":1790848484866,"conn":"game","dir":"s2c","hex":"940901000000000001020001010001d90001da0001db0001dc0001050001030001","packetId":148}
{"t":1790848484866,"conn":"game","dir":"s2c","hex":"22000001000000db0001cd00","packetId":34}
{"t":1790848484866,"conn":"game","dir":"s2c","hex":"22000001000000d90001cd00","packetId":34}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"5e01010101010101010101010101010101010101010101010101010101010101010101010101","packetId":94}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"28060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":40}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":41}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"0b0001000000","packetId":11}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"5f01000000","packetId":95}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848484867,"conn":"game","dir":"s2c","hex":"9c0e1410010000001000a2006508008006170302","packetId":156}
{"t":1790848484869,"conn":"game","dir":"s2c","hex":"9c0e1410020000001000a2006508028006170302","packetId":156}
{"t":1790848484869,"conn":"game","dir":"s2c","hex":"9c0e1410030000001000a2006508048006170302","packetId":156}
{"t":1790848484869,"conn":"game","dir":"s2c","hex":"9c0e1410040000001000a2006508068006170302","packetId":156}
{"t":1790848484869,"conn":"game","dir":"s2c","hex":"9c041410050000001000a2006500724237370602","packetId":156}
{"t":1790848484869,"conn":"game","dir":"s2c","hex":"9c041410060000001000a2006500529236370602","packetId":156}
{"t":1790848484869,"conn":"game","dir":"s2c","hex":"9d061e0507000000000100000011008200658408b046270782800003e33f","packetId":157}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"9d0620060800000000010000001100820065a40a20563706828000010606ff01","packetId":157}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"230001000000010000ffffffff","packetId":35}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"230001000000000000ffffffff","packetId":35}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"9532800cc01700000000000000","packetId":149}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"03005ef1440c010036170d50","packetId":3}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"53020000000000000000","packetId":83}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"074004a80301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"073804a00301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"073804a80301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"074004a00301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"074804a00301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"073804b00301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"074004a80301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"074804a80301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"074004b00301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"074804b00301","packetId":7}
{"t":1790848484870,"conn":"game","dir":"s2c","hex":"1500010000006115641201","packetId":21}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"7e00000000","packetId":126}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"8f0000000000000000000000000000000000000000000000000000000000000000","packetId":143}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"ac060000009a003a155912800e01","packetId":172}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"aa01060000000c6959f9ff1f","packetId":170}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"6d060000003a15591280","packetId":109}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"51020d0000002500341560120200","packetId":81}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"0e020d000000030002000000","packetId":14}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"ac0500000098003b157112800e01","packetId":172}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"aa01050000000c6959f9ff1f","packetId":170}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"6d050000003b15711280","packetId":109}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"ac0400000093003c159612800e01","packetId":172}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"aa01040000000c6959f9ff1f","packetId":170}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"6d040000003c15961280","packetId":109}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"51020c00000025003f158d120200","packetId":81}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"0e020c000000030002000000","packetId":14}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"51020b0000002500371573120200","packetId":81}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"0e020b000000030002000000","packetId":14}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"ac070000009b005a156b12800e01","packetId":172}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"aa01070000000c6959f9ff1f","packetId":170}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"6d070000005a156b1280","packetId":109}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"5102110000000b015a1565120000","packetId":81}
{"t":1790848484871,"conn":"game","dir":"s2c","hex":"5102100000002500421553120200","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"0e0210000000030002000000","packetId":14}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"51020f000000250050156a120200","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"0e020f000000030002000000","packetId":14}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"51020e0000002400601558120000","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"a800010000000b69acfc0f","packetId":168}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"ac03000000960073156212800e01","packetId":172}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"aa01030000000c6959f9ff1f","packetId":170}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"6d030000007315621280","packetId":109}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"ac0200000098008c1562128010112000","packetId":172}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"aa01020000000c6959f9ff1f","packetId":170}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"6d020000008c15621280","packetId":109}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"51020a00000077007b1551120200","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"0e020a000000030102000000","packetId":14}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"5102090000002500731549120200","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"0e0209000000030002000000","packetId":14}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"51020800000025006e155d120200","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"0e0208000000030002000000","packetId":14}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"5102070000002500871552120200","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"0e0207000000030002000000","packetId":14}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"ac0100000098005b1594128010110800","packetId":172}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"aa01010000000c6959f9ff1f","packetId":170}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"6d010000005b15941280","packetId":109}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"5102060000004e00531573120000","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"5102050000002500611593120200","packetId":81}
{"t":1790848484876,"conn":"game","dir":"s2c","hex":"0e0205000000030002000000","packetId":14}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"5102040000002300541590120000","packetId":81}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"5102030000002700651572120000","packetId":81}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"51020200000081016c1571120000","packetId":81}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"51020100000025007c1575120200","packetId":81}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"0e0201000000030002000000","packetId":14}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"04","packetId":4}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"5b24000100000006576562426f74466f75720000000000000100ffff0000000000000000","packetId":91}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"65010000000000","packetId":101}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"8d01000000ffff","packetId":141}
{"t":1790848484877,"conn":"game","dir":"s2c","hex":"5a02040000000000576562426f74466f75720000000000006432776562626f743400000000000000","packetId":90}
{"t":1790848485744,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848485745,"conn":"game","dir":"s2c","hex":"6706000000013b1553120100074b0005","packetId":103}
{"t":1790848485745,"conn":"game","dir":"s2c","hex":"6d040000003c15961280","packetId":109}
{"t":1790848485745,"conn":"game","dir":"s2c","hex":"6707000000015c1569120100074b0005","packetId":103}
{"t":1790848486065,"conn":"game","dir":"s2c","hex":"6703000000017a1563120100074b0005","packetId":103}
{"t":1790848486585,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848486585,"conn":"game","dir":"s2c","hex":"6707000000015d1568120100074b0005","packetId":103}
{"t":1790848486704,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff63385b443247535d202d204e6f20636f6d6d65726369616c20707572706f736520697320616c6c6f77656421ff633400","packetId":38}
{"t":1790848486705,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d0048656c6c6f20776f726c642100","packetId":38}
{"t":1790848486705,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff633954686520576f726c64204576656e7420656e61626c6573206f6e2074686973207365727665722e20546865206b6579206974656d20697320224b6579222eff633100","packetId":38}
{"t":1790848487064,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848487064,"conn":"game","dir":"s2c","hex":"6707000000015e1567120100074b0005","packetId":103}
{"t":1790848487064,"conn":"game","dir":"s2c","hex":"6d060000003b15531280","packetId":109}
{"t":1790848487464,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848487465,"conn":"game","dir":"s2c","hex":"6d070000005e15671280","packetId":109}
{"t":1790848487465,"conn":"game","dir":"s2c","hex":"2c01070000001200","packetId":44}
{"t":1790848487465,"conn":"game","dir":"s2c","hex":"965f80b00a32893032","packetId":150}
{"t":1790848487986,"conn":"game","dir":"c2s","hex":"69","packetId":105}

View File

@ -0,0 +1,195 @@
{"format":"d2cap-v1","createdAt":"2026-10-01T09:54:19.287Z","server":"101.37.117.183 (via=mixed)","account":"<redacted>","character":"WebBotFour","scenario":"join"}
{"t":1790848453198,"conn":"bnet","dir":"c2s","hex":"01","packetName":"BNCS_GREETING"}
{"t":1790848453199,"conn":"bnet","dir":"c2s","hex":"ff503a000000000036385849505832440d000000090400007f000001e0010000090400000904000055534100556e697465642053746174657300","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848453246,"conn":"bnet","dir":"s2c","hex":"ff250800b72d8d09","packetId":37,"packetName":"SID_PING"}
{"t":1790848453246,"conn":"bnet","dir":"c2s","hex":"ff250800b72d8d09","packetId":37,"packetName":"SID_PING"}
{"t":1790848453292,"conn":"bnet","dir":"s2c","hex":"ff50650000000000f9f219007700000000d8b1d80027dd0149583836766572312e6d707100413d3338343535383136333420423d38383038323335383020433d31333633393337313033203420413d412d5320423d422d4320433d432d4120413d412d4200","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848453294,"conn":"bnet","dir":"c2s","hex":"ff518b005a54deac000d0001cabe867602000000000000001000000006000000cbba00000000000076e06ee976c85a85f2e228e06d348b857acbbaf3100000000a000000f015eb00000000006022db01626d118aba6b1ae2702f52f13387b3da47616d652e6578652030332f30392f31302030343a31303a353120363134343000576562506c6179657200","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848453338,"conn":"bnet","dir":"s2c","hex":"ff5109000000000000","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848453340,"conn":"bnet","dir":"c2s","hex":"ff3a2a005a54deacf9f219005779cb502a51f6c3b12e8fabd3719d54c2abcfe96432776562626f743400","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848453384,"conn":"bnet","dir":"s2c","hex":"ff590400","packetId":89,"packetName":"SID_SETEMAIL"}
{"t":1790848453471,"conn":"bnet","dir":"s2c","hex":"ff3a080000000000","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848453472,"conn":"bnet","dir":"c2s","hex":"ff3e26005a54deaca78c40549a0d3556af014968570def14a0fde66b53616e63747561727900","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848453517,"conn":"bnet","dir":"s2c","hex":"ff3e56005a54deac000000000000000077000000652575b717e10000f9f219000000000000000000505832440d00000000000000000000006fb284156dea9d2aca58a12a15da4ec2afd587986432776562626f743400","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848454940,"conn":"realm","dir":"c2s","hex":"01","packetName":"MCP_GREETING"}
{"t":1790848454941,"conn":"realm","dir":"c2s","hex":"4d00015a54deac000000000000000077000000f9f219000000000000000000505832440d00000000000000000000006fb284156dea9d2aca58a12a15da4ec2afd587986432776562626f743400","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848454991,"conn":"realm","dir":"s2c","hex":"07000100000000","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848454991,"conn":"realm","dir":"c2s","hex":"07001908000000","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848455039,"conn":"realm","dir":"s2c","hex":"3c00190800010000000100ffffff7f576562426f74466f7572008d80ffffffffff2dff4fffffff07ffffffffffffffffffffff01e080808001ffff00","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848455040,"conn":"realm","dir":"c2s","hex":"0e0007576562426f74466f757200","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848455087,"conn":"realm","dir":"s2c","hex":"07000700000000","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848455088,"conn":"realm","dir":"c2s","hex":"21000301000000000001ff0877626d38336966000064322d626f74206a6f696e00","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848455137,"conn":"realm","dir":"s2c","hex":"0d000301000100010000000000","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848455138,"conn":"realm","dir":"c2s","hex":"0e0004020077626d383369660000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848455189,"conn":"realm","dir":"s2c","hex":"150004020047000000652575b7f283b52e00000000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848455697,"conn":"game","dir":"s2c","hex":"af01","packetId":175}
{"t":1790848455698,"conn":"game","dir":"c2s","hex":"68f283b52e4700060d000000ed4d5650b453354200576562426f74466f7572000000000000","packetId":104}
{"t":1790848455784,"conn":"game","dir":"s2c","hex":"0100040030000101","packetId":1}
{"t":1790848455784,"conn":"game","dir":"s2c","hex":"00","packetId":0}
{"t":1790848455784,"conn":"game","dir":"s2c","hex":"02","packetId":2}
{"t":1790848455784,"conn":"game","dir":"c2s","hex":"6b","packetId":107}
{"t":1790848455784,"conn":"game","dir":"c2s","hex":"6d68d4e2f60000000000000000","packetId":109}
{"t":1790848455864,"conn":"game","dir":"s2c","hex":"590100000006576562426f74466f757200000000000000000000","packetId":89}
{"t":1790848455865,"conn":"game","dir":"s2c","hex":"aa00010000000c6959f9ff1f","packetId":170}
{"t":1790848455865,"conn":"game","dir":"s2c","hex":"760001000000","packetId":118}
{"t":1790848455865,"conn":"game","dir":"s2c","hex":"940901000000000001020001010001d90001da0001db0001dc0001050001030001","packetId":148}
{"t":1790848455865,"conn":"game","dir":"s2c","hex":"22000001000000db0001cd00","packetId":34}
{"t":1790848455865,"conn":"game","dir":"s2c","hex":"22000001000000d90001cd00","packetId":34}
{"t":1790848455865,"conn":"game","dir":"s2c","hex":"5e01010101010101010101010101010101010101010101010101010101010101010101010101","packetId":94}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"28060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":40}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":41}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"0b0001000000","packetId":11}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"5f01000000","packetId":95}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848455866,"conn":"game","dir":"s2c","hex":"9c0e1410010000001000a2006508008006170302","packetId":156}
{"t":1790848455868,"conn":"game","dir":"s2c","hex":"9c0e1410020000001000a2006508028006170302","packetId":156}
{"t":1790848455868,"conn":"game","dir":"s2c","hex":"9c0e1410030000001000a2006508048006170302","packetId":156}
{"t":1790848455868,"conn":"game","dir":"s2c","hex":"9c0e1410040000001000a2006508068006170302","packetId":156}
{"t":1790848455868,"conn":"game","dir":"s2c","hex":"9c041410050000001000a2006500724237370602","packetId":156}
{"t":1790848455868,"conn":"game","dir":"s2c","hex":"9c041410060000001000a2006500529236370602","packetId":156}
{"t":1790848455868,"conn":"game","dir":"s2c","hex":"9d061e0507000000000100000011008200658408b046270782800003e33f","packetId":157}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"9d0620060800000000010000001100820065a40a20563706828000010606ff01","packetId":157}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"230001000000010000ffffffff","packetId":35}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"230001000000000000ffffffff","packetId":35}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"9532800cc01700000000000000","packetId":149}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"0300cbda054f01009ae94549","packetId":3}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"53020000000000000000","packetId":83}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"076804500401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"076004480401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"076004500401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"076804480401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"077004480401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"076004580401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"076804500401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"077004500401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"076804580401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"077004580401","packetId":7}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"1500010000001516931501","packetId":21}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"7e00000000","packetId":126}
{"t":1790848455869,"conn":"game","dir":"s2c","hex":"8f0000000000000000000000000000000000000000000000000000000000000000","packetId":143}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"ac080000009a00ee158815800e01","packetId":172}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"aa01080000000c6959f9ff1f","packetId":170}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"6d08000000ee15881580","packetId":109}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"5102130000002500f61582150200","packetId":81}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"0e0213000000030002000000","packetId":14}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"5102120000002500e8158f150200","packetId":81}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"0e0212000000030002000000","packetId":14}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"5102110000007700071676150200","packetId":81}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"0e0211000000030102000000","packetId":14}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"ac070000009800f515b0158010116800","packetId":172}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"aa01070000000c6959f9ff1f","packetId":170}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"6d07000000f515b01580","packetId":109}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"5102100000002400f51596150000","packetId":81}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"51020f0000004e000716a1150000","packetId":81}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"51020e0000002500f015a2150200","packetId":81}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"0e020e000000030002000000","packetId":14}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"51020d0000002500041699150200","packetId":81}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"0e020d000000030002000000","packetId":14}
{"t":1790848455870,"conn":"game","dir":"s2c","hex":"51020c00000025001a168a150200","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"0e020c000000030002000000","packetId":14}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"ac06000000940050167d15800e01","packetId":172}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"aa01060000000c6959f9ff1f","packetId":170}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"6d0600000050167d1580","packetId":109}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"51020b0000002500491681150200","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"0e020b000000030002000000","packetId":14}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"51020a0000002500561678150200","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"0e020a000000030002000000","packetId":14}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"51020900000025003b1680150200","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"0e0209000000030002000000","packetId":14}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"ac050000009300f215c915800e01","packetId":172}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"aa01050000000c6959f9ff1f","packetId":170}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"6d05000000f215c91580","packetId":109}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"5102080000002500f315bc150200","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"0e0208000000030002000000","packetId":14}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"5102070000002500eb15cc150200","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"0e0207000000030002000000","packetId":14}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"ac0a0000009b000e169a15800e01","packetId":172}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"aa010a0000000c6959f9ff1f","packetId":170}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"6d0a0000000e169a1580","packetId":109}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"ac0900000096002b169b15800e01","packetId":172}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"aa01090000000c6959f9ff1f","packetId":170}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"6d090000002b169b1580","packetId":109}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"51021800000025002a1696150200","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"0e0218000000030002000000","packetId":14}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"51021700000027001916a1150000","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"5102160000000b010e1694150000","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"51021500000025001c16b0150200","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"0e0215000000030002000000","packetId":14}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"51021400000081012016a0150000","packetId":81}
{"t":1790848455874,"conn":"game","dir":"s2c","hex":"a800010000000b69acfc0f","packetId":168}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"ac0400000098003d16aa158010114800","packetId":172}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"aa01040000000c6959f9ff1f","packetId":170}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"6d040000003d16aa1580","packetId":109}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"51020600000023004716b0150000","packetId":81}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"51020500000025005416b4150200","packetId":81}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"0e0205000000030002000000","packetId":14}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"ac0300000098002016d5158010116800","packetId":172}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"aa01030000000c6959f9ff1f","packetId":170}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"6d030000002016d51580","packetId":109}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"ac0200000098001016c3158010116800","packetId":172}
{"t":1790848455875,"conn":"game","dir":"s2c","hex":"aa01020000000c6959f9ff1f","packetId":170}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"6d020000001016c31580","packetId":109}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"ac0100000098002d16c5158010114800","packetId":172}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"aa01010000000c6959f9ff1f","packetId":170}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"6d010000002d16c51580","packetId":109}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"51020400000025002516d6150200","packetId":81}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"0e0204000000030002000000","packetId":14}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"51020300000025001416c2150200","packetId":81}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"0e0203000000030002000000","packetId":14}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"51020200000025003116d1150200","packetId":81}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"0e0202000000030002000000","packetId":14}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"51020100000025004016d2150200","packetId":81}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"0e0201000000030002000000","packetId":14}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"04","packetId":4}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"5b24000100000006576562426f74466f75720000000000000100ffff0000000000000000","packetId":91}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"65010000000000","packetId":101}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"8d01000000ffff","packetId":141}
{"t":1790848455876,"conn":"game","dir":"s2c","hex":"5a02040000000000576562426f74466f75720000000000006432776562626f743400000000000000","packetId":90}
{"t":1790848456503,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff63385b443247535d202d204e6f20636f6d6d65726369616c20707572706f736520697320616c6c6f77656421ff633400","packetId":38}
{"t":1790848456504,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d0048656c6c6f20776f726c642100","packetId":38}
{"t":1790848456504,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff633954686520576f726c64204576656e7420656e61626c6573206f6e2074686973207365727665722e20546865206b6579206974656d20697320224b6579222eff633100","packetId":38}
{"t":1790848456743,"conn":"game","dir":"s2c","hex":"8a010a000000","packetId":138}
{"t":1790848456743,"conn":"game","dir":"s2c","hex":"670800000001ee1589150100074b0005","packetId":103}
{"t":1790848456743,"conn":"game","dir":"s2c","hex":"670500000001f215c2150100074b0005","packetId":103}
{"t":1790848456743,"conn":"game","dir":"s2c","hex":"670a00000001101698150100074b0005","packetId":103}
{"t":1790848456743,"conn":"game","dir":"s2c","hex":"6709000000012916a3150100074b0005","packetId":103}
{"t":1790848456983,"conn":"game","dir":"s2c","hex":"6d08000000ee15891580","packetId":109}
{"t":1790848457383,"conn":"game","dir":"s2c","hex":"670600000001541681150100074b0005","packetId":103}
{"t":1790848457583,"conn":"game","dir":"s2c","hex":"8a010a000000","packetId":138}
{"t":1790848457583,"conn":"game","dir":"s2c","hex":"670a00000001111697150100074b0005","packetId":103}
{"t":1790848458063,"conn":"game","dir":"s2c","hex":"8a010a000000","packetId":138}
{"t":1790848458063,"conn":"game","dir":"s2c","hex":"670a00000001121696150100074b0005","packetId":103}
{"t":1790848458263,"conn":"game","dir":"s2c","hex":"6d05000000f215c21580","packetId":109}
{"t":1790848458463,"conn":"game","dir":"s2c","hex":"8a010a000000","packetId":138}
{"t":1790848458463,"conn":"game","dir":"s2c","hex":"6d0a0000001216961580","packetId":109}
{"t":1790848458463,"conn":"game","dir":"s2c","hex":"2c010a0000001200","packetId":44}
{"t":1790848458463,"conn":"game","dir":"s2c","hex":"965f800a8bc98a8a49","packetId":150}
{"t":1790848458984,"conn":"game","dir":"c2s","hex":"69","packetId":105}

View File

@ -0,0 +1,174 @@
{"format":"d2cap-v1","createdAt":"2026-10-01T09:53:56.881Z","server":"101.37.117.183 (via=mixed)","account":"<redacted>","character":"WebBotFour","scenario":"join"}
{"t":1790848431018,"conn":"bnet","dir":"c2s","hex":"01","packetName":"BNCS_GREETING"}
{"t":1790848431019,"conn":"bnet","dir":"c2s","hex":"ff503a000000000036385849505832440d000000090400007f000001e0010000090400000904000055534100556e697465642053746174657300","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848431066,"conn":"bnet","dir":"s2c","hex":"ff25080013d78c09","packetId":37,"packetName":"SID_PING"}
{"t":1790848431066,"conn":"bnet","dir":"c2s","hex":"ff25080013d78c09","packetId":37,"packetName":"SID_PING"}
{"t":1790848431111,"conn":"bnet","dir":"s2c","hex":"ff506500000000003a64205d7500000000d8b1d80027dd0149583836766572312e6d707100413d3338343535383136333420423d38383038323335383020433d31333633393337313033203420413d412d5320423d422d4320433d432d4120413d412d4200","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848431112,"conn":"bnet","dir":"c2s","hex":"ff518b00bdeddeac000d0001cabe867602000000000000001000000006000000cbba0000000000000ecdf78c407f562b7dcb0863e95cfc66f6a62cbe100000000a000000f015eb0000000000b3c5dd01105cff0489126724ed5e27f0b05e52d747616d652e6578652030332f30392f31302030343a31303a353120363134343000576562506c6179657200","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848431158,"conn":"bnet","dir":"s2c","hex":"ff5109000000000000","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848431159,"conn":"bnet","dir":"c2s","hex":"ff3a2a00bdeddeac3a64205d8c55811b15cf13f56052dc84ef05afec000ee4706432776562626f743400","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848431205,"conn":"bnet","dir":"s2c","hex":"ff590400","packetId":89,"packetName":"SID_SETEMAIL"}
{"t":1790848431293,"conn":"bnet","dir":"s2c","hex":"ff3a080000000000","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848431294,"conn":"bnet","dir":"c2s","hex":"ff3e2600bdeddeac9340e49f9aec6dd7295f958b5d3fd8801270d7f353616e63747561727900","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848431342,"conn":"bnet","dir":"s2c","hex":"ff3e5600bdeddeac000000000000000075000000652575b717e100003a64205d0000000000000000505832440d00000000000000000000009a0d0af0f9f4d70645ce0dfb26c56872ad6bb1f16432776562626f743400","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848431805,"conn":"realm","dir":"c2s","hex":"01","packetName":"MCP_GREETING"}
{"t":1790848431806,"conn":"realm","dir":"c2s","hex":"4d0001bdeddeac0000000000000000750000003a64205d0000000000000000505832440d00000000000000000000009a0d0af0f9f4d70645ce0dfb26c56872ad6bb1f16432776562626f743400","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848431869,"conn":"realm","dir":"s2c","hex":"07000100000000","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848431870,"conn":"realm","dir":"c2s","hex":"07001908000000","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848431932,"conn":"realm","dir":"s2c","hex":"3c00190800010000000100ffffff7f576562426f74466f7572008480ffffffffffffffffffffff07ffffffffffffffffffffff01e180808001ffff00","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848431933,"conn":"realm","dir":"c2s","hex":"0e0007576562426f74466f757200","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848431996,"conn":"realm","dir":"s2c","hex":"07000700000000","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848431997,"conn":"realm","dir":"c2s","hex":"21000301000000000001ff0877626d38336872000064322d626f74206a6f696e00","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848432062,"conn":"realm","dir":"s2c","hex":"0d000301000100010000000000","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848432063,"conn":"realm","dir":"c2s","hex":"0e0004020077626d383368720000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848432125,"conn":"realm","dir":"s2c","hex":"150004020046000000652575b717d5c93f00000000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848432316,"conn":"game","dir":"s2c","hex":"af01","packetId":175}
{"t":1790848432317,"conn":"game","dir":"c2s","hex":"6817d5c93f4600060d000000ed4d5650b453354200576562426f74466f7572000000000000","packetId":104}
{"t":1790848432381,"conn":"game","dir":"s2c","hex":"0100040030000101","packetId":1}
{"t":1790848432381,"conn":"game","dir":"s2c","hex":"00","packetId":0}
{"t":1790848432381,"conn":"game","dir":"s2c","hex":"02","packetId":2}
{"t":1790848432381,"conn":"game","dir":"c2s","hex":"6b","packetId":107}
{"t":1790848432382,"conn":"game","dir":"c2s","hex":"6dfe78e2f60000000000000000","packetId":109}
{"t":1790848432461,"conn":"game","dir":"s2c","hex":"590100000006576562426f74466f757200000000000000000000","packetId":89}
{"t":1790848432461,"conn":"game","dir":"s2c","hex":"aa00010000000c6959f9ff1f","packetId":170}
{"t":1790848432462,"conn":"game","dir":"s2c","hex":"760001000000","packetId":118}
{"t":1790848432462,"conn":"game","dir":"s2c","hex":"22000001000000db0001cd00","packetId":34}
{"t":1790848432462,"conn":"game","dir":"s2c","hex":"22000001000000d90001cd00","packetId":34}
{"t":1790848432462,"conn":"game","dir":"s2c","hex":"5e01010101010101010101010101010101010101010101010101010101010101010101010101","packetId":94}
{"t":1790848432462,"conn":"game","dir":"s2c","hex":"28060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":40}
{"t":1790848432463,"conn":"game","dir":"s2c","hex":"29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":41}
{"t":1790848432463,"conn":"game","dir":"s2c","hex":"5e01010101010101010101010101010101010101010101010101010101010101010101010101","packetId":94}
{"t":1790848432463,"conn":"game","dir":"s2c","hex":"28060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":40}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":41}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"0b0001000000","packetId":11}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"5f01000000","packetId":95}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848432464,"conn":"game","dir":"s2c","hex":"9d061e0501000000000100000011208200658408b046270782800003e33f","packetId":157}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"9d0620060200000000010000001120820065a40a20563706828000010606ff01","packetId":157}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"9c0e1410030000001020a2006508008006170302","packetId":156}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"9c0e1410040000001020a2006508028006170302","packetId":156}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"9c0e1410050000001020a2006508048006170302","packetId":156}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"9c0e1410060000001020a2006508068006170302","packetId":156}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"9c041410070000001020a2006500724237370602","packetId":156}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"9c041410080000001020a2006500529236370602","packetId":156}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"23000100000001000000000000","packetId":35}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"23000100000000000000000000","packetId":35}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"9532800cc01700000000000000","packetId":149}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"0300ffe6e452010059a5a3ba","packetId":3}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"53020000000000000000","packetId":83}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"071803100401","packetId":7}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"071003080401","packetId":7}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"071003100401","packetId":7}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"071803080401","packetId":7}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"072003080401","packetId":7}
{"t":1790848432466,"conn":"game","dir":"s2c","hex":"071003180401","packetId":7}
{"t":1790848432467,"conn":"game","dir":"s2c","hex":"071803100401","packetId":7}
{"t":1790848432467,"conn":"game","dir":"s2c","hex":"072003100401","packetId":7}
{"t":1790848432467,"conn":"game","dir":"s2c","hex":"071803180401","packetId":7}
{"t":1790848432467,"conn":"game","dir":"s2c","hex":"072003180401","packetId":7}
{"t":1790848432467,"conn":"game","dir":"s2c","hex":"150001000000990f6c1401","packetId":21}
{"t":1790848432467,"conn":"game","dir":"s2c","hex":"7e00000000","packetId":126}
{"t":1790848432470,"conn":"game","dir":"s2c","hex":"8f0000000000000000000000000000000000000000000000000000000000000000","packetId":143}
{"t":1790848432470,"conn":"game","dir":"s2c","hex":"ac060000009a00720f6114800e01","packetId":172}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"aa01060000000c6959f9ff1f","packetId":170}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"6d06000000720f611480","packetId":109}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"51020d00000025006c0f68140200","packetId":81}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"0e020d000000030002000000","packetId":14}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"ac050000009800730f79148010114000","packetId":172}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"aa01050000000c6959f9ff1f","packetId":170}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"6d05000000730f791480","packetId":109}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"ac040000009300740f9e14800e01","packetId":172}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"aa01040000000c6959f9ff1f","packetId":170}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"6d04000000740f9e1480","packetId":109}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"51020c0000002500770f95140200","packetId":81}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"0e020c000000030002000000","packetId":14}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"51020b00000025006f0f7b140200","packetId":81}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"0e020b000000030002000000","packetId":14}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"ac070000009b00920f7314800e01","packetId":172}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"aa01070000000c6959f9ff1f","packetId":170}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"6d07000000920f731480","packetId":109}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"5102110000000b01920f6d140000","packetId":81}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"51021000000025007a0f5b140200","packetId":81}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"0e0210000000030002000000","packetId":14}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"51020f0000002500880f72140200","packetId":81}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"0e020f000000030002000000","packetId":14}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"51020e0000002400980f60140000","packetId":81}
{"t":1790848432471,"conn":"game","dir":"s2c","hex":"a800010000000b69acfc0f","packetId":168}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"ac030000009600ab0f6a14800e01","packetId":172}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"aa01030000000c6959f9ff1f","packetId":170}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"6d03000000ab0f6a1480","packetId":109}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"ac020000009800c40f6a148010114000","packetId":172}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"aa01020000000c6959f9ff1f","packetId":170}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"6d02000000c40f6a1480","packetId":109}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"51020a0000007700b30f59140200","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"0e020a000000030102000000","packetId":14}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"5102090000002500ab0f51140200","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"0e0209000000030002000000","packetId":14}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"5102080000002500a60f65140200","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"0e0208000000030002000000","packetId":14}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"5102070000002500bf0f5a140200","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"0e0207000000030002000000","packetId":14}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"ac010000009800930f9c148010110800","packetId":172}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"aa01010000000c6959f9ff1f","packetId":170}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"6d01000000930f9c1480","packetId":109}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"5102060000004e008b0f7b140000","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"5102050000002500990f9b140200","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"0e0205000000030002000000","packetId":14}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"51020400000023008c0f98140000","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"51020300000027009d0f7a140000","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"5102020000008101a40f79140000","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"5102010000002500b40f7d140200","packetId":81}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"0e0201000000030002000000","packetId":14}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848432472,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848432473,"conn":"game","dir":"s2c","hex":"04","packetId":4}
{"t":1790848432473,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848432473,"conn":"game","dir":"s2c","hex":"5b24000100000006576562426f74466f75720000000000000100ffff0000000000000000","packetId":91}
{"t":1790848432473,"conn":"game","dir":"s2c","hex":"65010000000000","packetId":101}
{"t":1790848432473,"conn":"game","dir":"s2c","hex":"8d01000000ffff","packetId":141}
{"t":1790848432473,"conn":"game","dir":"s2c","hex":"5a02040000000000576562426f74466f75720000000000006432776562626f743400000000000000","packetId":90}
{"t":1790848433341,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848433341,"conn":"game","dir":"s2c","hex":"670600000001730f5b140100074b0005","packetId":103}
{"t":1790848433341,"conn":"game","dir":"s2c","hex":"6d04000000740f9e1480","packetId":109}
{"t":1790848433341,"conn":"game","dir":"s2c","hex":"670700000001940f71140100074b0005","packetId":103}
{"t":1790848433341,"conn":"game","dir":"s2c","hex":"670300000001b20f6b140100074b0005","packetId":103}
{"t":1790848434181,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848434181,"conn":"game","dir":"s2c","hex":"670700000001950f70140100074b0005","packetId":103}
{"t":1790848434341,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff63385b443247535d202d204e6f20636f6d6d65726369616c20707572706f736520697320616c6c6f77656421ff633400","packetId":38}
{"t":1790848434341,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d0048656c6c6f20776f726c642100","packetId":38}
{"t":1790848434341,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff633954686520576f726c64204576656e7420656e61626c6573206f6e2074686973207365727665722e20546865206b6579206974656d20697320224b6579222eff633100","packetId":38}
{"t":1790848434621,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848434621,"conn":"game","dir":"s2c","hex":"670700000001960f6f140100074b0005","packetId":103}
{"t":1790848434661,"conn":"game","dir":"s2c","hex":"6d06000000730f5b1480","packetId":109}
{"t":1790848435060,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848435060,"conn":"game","dir":"s2c","hex":"6d07000000960f6f1480","packetId":109}
{"t":1790848435060,"conn":"game","dir":"s2c","hex":"2c01070000001200","packetId":44}
{"t":1790848435381,"conn":"game","dir":"s2c","hex":"6d03000000b20f6b1480","packetId":109}
{"t":1790848435860,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848435860,"conn":"game","dir":"s2c","hex":"965f80cc07368a4c36","packetId":150}
{"t":1790848436580,"conn":"game","dir":"c2s","hex":"69","packetId":105}

View File

@ -0,0 +1,172 @@
{"format":"d2cap-v1","createdAt":"2026-10-01T09:54:38.662Z","server":"101.37.117.183 (via=mixed)","account":"<redacted>","character":"WebBotFour","scenario":"join"}
{"t":1790848473749,"conn":"bnet","dir":"c2s","hex":"01","packetName":"BNCS_GREETING"}
{"t":1790848473750,"conn":"bnet","dir":"c2s","hex":"ff503a000000000036385849505832440d000000090400007f000001e0010000090400000904000055534100556e697465642053746174657300","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848473798,"conn":"bnet","dir":"s2c","hex":"ff250800ff7d8d09","packetId":37,"packetName":"SID_PING"}
{"t":1790848473798,"conn":"bnet","dir":"c2s","hex":"ff250800ff7d8d09","packetId":37,"packetName":"SID_PING"}
{"t":1790848473842,"conn":"bnet","dir":"s2c","hex":"ff506500000000000a570e577900000000d8b1d80027dd0149583836766572312e6d707100413d3338343535383136333420423d38383038323335383020433d31333633393337313033203420413d412d5320423d422d4320433d432d4120413d412d4200","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848473844,"conn":"bnet","dir":"c2s","hex":"ff518b008284dfac000d0001cabe867602000000000000001000000006000000cbba0000000000000f52bab8af420566967c71336e3deb0c80085bb0100000000a000000f015eb00000000002af04169fde7159f064d4caf3a7732562269639247616d652e6578652030332f30392f31302030343a31303a353120363134343000576562506c6179657200","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848473890,"conn":"bnet","dir":"s2c","hex":"ff5109000000000000","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848473892,"conn":"bnet","dir":"c2s","hex":"ff3a2a008284dfac0a570e578fd9c7cc8c061b46464cc4f6324df220bffae9bd6432776562626f743400","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848474198,"conn":"bnet","dir":"s2c","hex":"ff590400","packetId":89,"packetName":"SID_SETEMAIL"}
{"t":1790848474241,"conn":"bnet","dir":"s2c","hex":"ff3a080000000000","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848474242,"conn":"bnet","dir":"c2s","hex":"ff3e26008284dfacc481e3c8c57b4ce4a4702bfc8cdb4c254e402c5b53616e63747561727900","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848474286,"conn":"bnet","dir":"s2c","hex":"ff3e56008284dfac000000000000000079000000652575b717e100000a570e570000000000000000505832440d0000000000000000000000c8a6fd14b0d970b217078b5b5ec77ef4847d7c1e6432776562626f743400","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848474712,"conn":"realm","dir":"c2s","hex":"01","packetName":"MCP_GREETING"}
{"t":1790848474713,"conn":"realm","dir":"c2s","hex":"4d00018284dfac0000000000000000790000000a570e570000000000000000505832440d0000000000000000000000c8a6fd14b0d970b217078b5b5ec77ef4847d7c1e6432776562626f743400","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848474762,"conn":"realm","dir":"s2c","hex":"07000100000000","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848474762,"conn":"realm","dir":"c2s","hex":"07001908000000","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848474810,"conn":"realm","dir":"s2c","hex":"3c00190800010000000100ffffff7f576562426f74466f7572008d80ffffffffff2dff4fffffff07ffffffffffffffffffffff01e080808001ffff00","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848474811,"conn":"realm","dir":"c2s","hex":"0e0007576562426f74466f757200","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848474859,"conn":"realm","dir":"s2c","hex":"07000700000000","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848474860,"conn":"realm","dir":"c2s","hex":"21000301000000000001ff0877626d38336979000064322d626f74206a6f696e00","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848474909,"conn":"realm","dir":"s2c","hex":"0d000301000100010000000000","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848474910,"conn":"realm","dir":"c2s","hex":"0e0004020077626d383369790000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848474958,"conn":"realm","dir":"s2c","hex":"150004020049000000652575b71dacba5200000000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848475151,"conn":"game","dir":"s2c","hex":"af01","packetId":175}
{"t":1790848475152,"conn":"game","dir":"c2s","hex":"681dacba524900060d000000ed4d5650b453354200576562426f74466f7572000000000000","packetId":104}
{"t":1790848475264,"conn":"game","dir":"s2c","hex":"0100040030000101","packetId":1}
{"t":1790848475264,"conn":"game","dir":"s2c","hex":"00","packetId":0}
{"t":1790848475264,"conn":"game","dir":"s2c","hex":"02","packetId":2}
{"t":1790848475264,"conn":"game","dir":"c2s","hex":"6b","packetId":107}
{"t":1790848475265,"conn":"game","dir":"c2s","hex":"6d8120e3f60000000000000000","packetId":109}
{"t":1790848475345,"conn":"game","dir":"s2c","hex":"590100000006576562426f74466f757200000000000000000000","packetId":89}
{"t":1790848475345,"conn":"game","dir":"s2c","hex":"aa00010000000c6959f9ff1f","packetId":170}
{"t":1790848475345,"conn":"game","dir":"s2c","hex":"760001000000","packetId":118}
{"t":1790848475345,"conn":"game","dir":"s2c","hex":"940901000000000001020001010001d90001da0001db0001dc0001050001030001","packetId":148}
{"t":1790848475345,"conn":"game","dir":"s2c","hex":"22000001000000db0001cd00","packetId":34}
{"t":1790848475345,"conn":"game","dir":"s2c","hex":"22000001000000d90001cd00","packetId":34}
{"t":1790848475345,"conn":"game","dir":"s2c","hex":"5e01010101010101010101010101010101010101010101010101010101010101010101010101","packetId":94}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"28060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":40}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":41}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"0b0001000000","packetId":11}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"5f01000000","packetId":95}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848475346,"conn":"game","dir":"s2c","hex":"9c0e1410010000001000a2006508008006170302","packetId":156}
{"t":1790848475347,"conn":"game","dir":"s2c","hex":"9c0e1410020000001000a2006508028006170302","packetId":156}
{"t":1790848475347,"conn":"game","dir":"s2c","hex":"9c0e1410030000001000a2006508048006170302","packetId":156}
{"t":1790848475347,"conn":"game","dir":"s2c","hex":"9c0e1410040000001000a2006508068006170302","packetId":156}
{"t":1790848475347,"conn":"game","dir":"s2c","hex":"9c041410050000001000a2006500724237370602","packetId":156}
{"t":1790848475348,"conn":"game","dir":"s2c","hex":"9c041410060000001000a2006500529236370602","packetId":156}
{"t":1790848475348,"conn":"game","dir":"s2c","hex":"9d061e0507000000000100000011008200658408b046270782800003e33f","packetId":157}
{"t":1790848475348,"conn":"game","dir":"s2c","hex":"9d0620060800000000010000001100820065a40a20563706828000010606ff01","packetId":157}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"230001000000010000ffffffff","packetId":35}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"230001000000000000ffffffff","packetId":35}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"9532800cc01700000000000000","packetId":149}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"0300f0c4a17201000db75ab9","packetId":3}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"53020000000000000000","packetId":83}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"077803980301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"077003900301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"077003980301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"077803900301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"078003900301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"077003a00301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"077803980301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"078003980301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"077803a00301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"078003a00301","packetId":7}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"1500010000007911141201","packetId":21}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"7e00000000","packetId":126}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"8f0000000000000000000000000000000000000000000000000000000000000000","packetId":143}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"ac060000009a0052110912800e01","packetId":172}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"aa01060000000c6959f9ff1f","packetId":170}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"6d060000005211091280","packetId":109}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"51020d00000025004c1110120200","packetId":81}
{"t":1790848475349,"conn":"game","dir":"s2c","hex":"0e020d000000030002000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"ac050000009800531121128010116000","packetId":172}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"aa01050000000c6959f9ff1f","packetId":170}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"6d050000005311211280","packetId":109}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"ac04000000930054114612800e01","packetId":172}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"aa01040000000c6959f9ff1f","packetId":170}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"6d040000005411461280","packetId":109}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"51020c000000250057113d120200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e020c000000030002000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"51020b00000025004f1123120200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e020b000000030002000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"ac070000009b0072111b12800e01","packetId":172}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"aa01070000000c6959f9ff1f","packetId":170}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"6d0700000072111b1280","packetId":109}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"5102110000000b01721115120000","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"51021000000025005a1103120200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e0210000000030002000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"51020f000000250068111a120200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e020f000000030002000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"51020e0000002400781108120000","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"a800010000000b69acfc0f","packetId":168}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"ac0300000096008b111212800e01","packetId":172}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"aa01030000000c6959f9ff1f","packetId":170}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"6d030000008b11121280","packetId":109}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"ac020000009800a41112128010114000","packetId":172}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"aa01020000000c6959f9ff1f","packetId":170}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"6d02000000a411121280","packetId":109}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"51020a0000007700931101120200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e020a000000030102000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"51020900000025008b11f9110200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e0209000000030002000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"510208000000250086110d120200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e0208000000030002000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"51020700000025009f1102120200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e0207000000030002000000","packetId":14}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"ac010000009800731144128010114000","packetId":172}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"aa01010000000c6959f9ff1f","packetId":170}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"6d010000007311441280","packetId":109}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"5102060000004e006b1123120000","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"5102050000002500791143120200","packetId":81}
{"t":1790848475350,"conn":"game","dir":"s2c","hex":"0e0205000000030002000000","packetId":14}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"51020400000023006c1140120000","packetId":81}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"51020300000027007d1122120000","packetId":81}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"5102020000008101841121120000","packetId":81}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"5102010000002500941125120200","packetId":81}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"0e0201000000030002000000","packetId":14}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"04","packetId":4}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"5b24000100000006576562426f74466f75720000000000000100ffff0000000000000000","packetId":91}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"65010000000000","packetId":101}
{"t":1790848475351,"conn":"game","dir":"s2c","hex":"8d01000000ffff","packetId":141}
{"t":1790848475355,"conn":"game","dir":"s2c","hex":"5a02040000000000576562426f74466f75720000000000006432776562626f743400000000000000","packetId":90}
{"t":1790848476264,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848476264,"conn":"game","dir":"s2c","hex":"670600000001531103120100074b0005","packetId":103}
{"t":1790848476264,"conn":"game","dir":"s2c","hex":"6d040000005411461280","packetId":109}
{"t":1790848476264,"conn":"game","dir":"s2c","hex":"670700000001741119120100074b0005","packetId":103}
{"t":1790848476585,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff63385b443247535d202d204e6f20636f6d6d65726369616c20707572706f736520697320616c6c6f77656421ff633400","packetId":38}
{"t":1790848476585,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d0048656c6c6f20776f726c642100","packetId":38}
{"t":1790848476585,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff633954686520576f726c64204576656e7420656e61626c6573206f6e2074686973207365727665722e20546865206b6579206974656d20697320224b6579222eff633100","packetId":38}
{"t":1790848477064,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848477064,"conn":"game","dir":"s2c","hex":"670700000001751118120100074b0005","packetId":103}
{"t":1790848477184,"conn":"game","dir":"s2c","hex":"670300000001921113120100074b0005","packetId":103}
{"t":1790848477424,"conn":"game","dir":"s2c","hex":"6d040000005411461280","packetId":109}
{"t":1790848477504,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848477504,"conn":"game","dir":"s2c","hex":"670700000001761117120100074b0005","packetId":103}
{"t":1790848477543,"conn":"game","dir":"s2c","hex":"6d060000005311031280","packetId":109}
{"t":1790848477943,"conn":"game","dir":"s2c","hex":"8a0107000000","packetId":138}
{"t":1790848477943,"conn":"game","dir":"s2c","hex":"6d070000007611171280","packetId":109}
{"t":1790848477943,"conn":"game","dir":"s2c","hex":"2c01070000001200","packetId":44}
{"t":1790848477944,"conn":"game","dir":"s2c","hex":"965f80bc080a893c0a","packetId":150}
{"t":1790848478024,"conn":"game","dir":"s2c","hex":"6d040000005411461280","packetId":109}
{"t":1790848478361,"conn":"game","dir":"c2s","hex":"69","packetId":105}

View File

@ -0,0 +1,195 @@
{"format":"d2cap-v1","createdAt":"2026-10-01T09:54:29.082Z","server":"101.37.117.183 (via=mixed)","account":"<redacted>","character":"WebBotFour","scenario":"join"}
{"t":1790848463913,"conn":"bnet","dir":"c2s","hex":"01","packetName":"BNCS_GREETING"}
{"t":1790848463914,"conn":"bnet","dir":"c2s","hex":"ff503a000000000036385849505832440d000000090400007f000001e0010000090400000904000055534100556e697465642053746174657300","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848464252,"conn":"bnet","dir":"s2c","hex":"ff250800b3588d09","packetId":37,"packetName":"SID_PING"}
{"t":1790848464252,"conn":"bnet","dir":"c2s","hex":"ff250800b3588d09","packetId":37,"packetName":"SID_PING"}
{"t":1790848464295,"conn":"bnet","dir":"s2c","hex":"ff5065000000000099bacb3c7800000000d8b1d80027dd0149583836766572312e6d707100413d3338343535383136333420423d38383038323335383020433d31333633393337313033203420413d412d5320423d422d4320433d432d4120413d412d4200","packetId":80,"packetName":"SID_AUTH_INFO"}
{"t":1790848464296,"conn":"bnet","dir":"c2s","hex":"ff518b003f6adeac000d0001cabe867602000000000000001000000006000000cbba0000000000008c3458c5a7c48e29ae6686ee7876927e59279ec3100000000a000000f015eb0000000000571002df0d1e6bd559d51088f8ec21aa928338b847616d652e6578652030332f30392f31302030343a31303a353120363134343000576562506c6179657200","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848464340,"conn":"bnet","dir":"s2c","hex":"ff5109000000000000","packetId":81,"packetName":"SID_AUTH_CHECK"}
{"t":1790848464342,"conn":"bnet","dir":"c2s","hex":"ff3a2a003f6adeac99bacb3cef2e0e520a1a9a4f19cea61c079bdefe215d820c6432776562626f743400","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848464386,"conn":"bnet","dir":"s2c","hex":"ff590400","packetId":89,"packetName":"SID_SETEMAIL"}
{"t":1790848464471,"conn":"bnet","dir":"s2c","hex":"ff3a080000000000","packetId":58,"packetName":"SID_LOGONRESPONSE2"}
{"t":1790848464472,"conn":"bnet","dir":"c2s","hex":"ff3e26003f6adeacddcbda002ffb7adccac8fc1cca42c235e1f9ced553616e63747561727900","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848464517,"conn":"bnet","dir":"s2c","hex":"ff3e56003f6adeac000000000000000078000000652575b717e1000099bacb3c0000000000000000505832440d0000000000000000000000f70e389389b2cd91e1db90003680bd336d22d08b6432776562626f743400","packetId":62,"packetName":"SID_LOGONREALMEX"}
{"t":1790848464996,"conn":"realm","dir":"c2s","hex":"01","packetName":"MCP_GREETING"}
{"t":1790848464997,"conn":"realm","dir":"c2s","hex":"4d00013f6adeac00000000000000007800000099bacb3c0000000000000000505832440d0000000000000000000000f70e389389b2cd91e1db90003680bd336d22d08b6432776562626f743400","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848465059,"conn":"realm","dir":"s2c","hex":"07000100000000","packetId":1,"packetName":"MCP_STARTUP"}
{"t":1790848465059,"conn":"realm","dir":"c2s","hex":"07001908000000","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848465118,"conn":"realm","dir":"s2c","hex":"3c00190800010000000100ffffff7f576562426f74466f7572008d80ffffffffff2dff4fffffff07ffffffffffffffffffffff01e080808001ffff00","packetId":25,"packetName":"MCP_CHARLIST2"}
{"t":1790848465119,"conn":"realm","dir":"c2s","hex":"0e0007576562426f74466f757200","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848465178,"conn":"realm","dir":"s2c","hex":"07000700000000","packetId":7,"packetName":"MCP_CHARLOGON"}
{"t":1790848465180,"conn":"realm","dir":"c2s","hex":"21000301000000000001ff0877626d38336970000064322d626f74206a6f696e00","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848465239,"conn":"realm","dir":"s2c","hex":"0d000301000100010000000000","packetId":3,"packetName":"MCP_CREATEGAME"}
{"t":1790848465240,"conn":"realm","dir":"c2s","hex":"0e0004020077626d383369700000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848465300,"conn":"realm","dir":"s2c","hex":"150004020048000000652575b77e0db96f00000000","packetId":4,"packetName":"MCP_JOINGAME"}
{"t":1790848465489,"conn":"game","dir":"s2c","hex":"af01","packetId":175}
{"t":1790848465490,"conn":"game","dir":"c2s","hex":"687e0db96f4800060d000000ed4d5650b453354200576562426f74466f7572000000000000","packetId":104}
{"t":1790848465583,"conn":"game","dir":"s2c","hex":"0100040030000101","packetId":1}
{"t":1790848465583,"conn":"game","dir":"s2c","hex":"00","packetId":0}
{"t":1790848465583,"conn":"game","dir":"s2c","hex":"02","packetId":2}
{"t":1790848465583,"conn":"game","dir":"c2s","hex":"6b","packetId":107}
{"t":1790848465584,"conn":"game","dir":"c2s","hex":"6db0fae2f60000000000000000","packetId":109}
{"t":1790848465664,"conn":"game","dir":"s2c","hex":"590100000006576562426f74466f757200000000000000000000","packetId":89}
{"t":1790848465664,"conn":"game","dir":"s2c","hex":"aa00010000000c6959f9ff1f","packetId":170}
{"t":1790848465664,"conn":"game","dir":"s2c","hex":"760001000000","packetId":118}
{"t":1790848465664,"conn":"game","dir":"s2c","hex":"940901000000000001020001010001d90001da0001db0001dc0001050001030001","packetId":148}
{"t":1790848465664,"conn":"game","dir":"s2c","hex":"22000001000000db0001cd00","packetId":34}
{"t":1790848465664,"conn":"game","dir":"s2c","hex":"22000001000000d90001cd00","packetId":34}
{"t":1790848465664,"conn":"game","dir":"s2c","hex":"5e01010101010101010101010101010101010101010101010101010101010101010101010101","packetId":94}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"28060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":40}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","packetId":41}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"0b0001000000","packetId":11}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"5f01000000","packetId":95}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848465665,"conn":"game","dir":"s2c","hex":"9c0e1410010000001000a2006508008006170302","packetId":156}
{"t":1790848465666,"conn":"game","dir":"s2c","hex":"9c0e1410020000001000a2006508028006170302","packetId":156}
{"t":1790848465666,"conn":"game","dir":"s2c","hex":"9c0e1410030000001000a2006508048006170302","packetId":156}
{"t":1790848465666,"conn":"game","dir":"s2c","hex":"9c0e1410040000001000a2006508068006170302","packetId":156}
{"t":1790848465666,"conn":"game","dir":"s2c","hex":"9c041410050000001000a2006500724237370602","packetId":156}
{"t":1790848465666,"conn":"game","dir":"s2c","hex":"9c041410060000001000a2006500529236370602","packetId":156}
{"t":1790848465667,"conn":"game","dir":"s2c","hex":"9d061e0507000000000100000011008200658408b046270782800003e33f","packetId":157}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"9d0620060800000000010000001100820065a40a20563706828000010606ff01","packetId":157}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"230001000000010000ffffffff","packetId":35}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"230001000000000000ffffffff","packetId":35}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"9532800cc01700000000000000","packetId":149}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"03003f405d7e01003a2ee262","packetId":3}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"53020000000000000000","packetId":83}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"076804500401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"076004480401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"076004500401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"076804480401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"077004480401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"076004580401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"076804500401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"077004500401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"076804580401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"077004580401","packetId":7}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"1500010000001516931501","packetId":21}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"7e00000000","packetId":126}
{"t":1790848465668,"conn":"game","dir":"s2c","hex":"8f0000000000000000000000000000000000000000000000000000000000000000","packetId":143}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"ac080000009a00ee158815800e01","packetId":172}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"aa01080000000c6959f9ff1f","packetId":170}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"6d08000000ee15881580","packetId":109}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"5102130000002500f61582150200","packetId":81}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"0e0213000000030002000000","packetId":14}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"5102120000002500e8158f150200","packetId":81}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"0e0212000000030002000000","packetId":14}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"5102110000007700071676150200","packetId":81}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"0e0211000000030102000000","packetId":14}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"ac070000009800f515b0158010110800","packetId":172}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"aa01070000000c6959f9ff1f","packetId":170}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"6d07000000f515b01580","packetId":109}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"5102100000002400f51596150000","packetId":81}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"51020f0000004e000716a1150000","packetId":81}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"51020e0000002500f015a2150200","packetId":81}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"0e020e000000030002000000","packetId":14}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"51020d0000002500041699150200","packetId":81}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"0e020d000000030002000000","packetId":14}
{"t":1790848465669,"conn":"game","dir":"s2c","hex":"51020c00000025001a168a150200","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"0e020c000000030002000000","packetId":14}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"ac06000000940050167d15800e01","packetId":172}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"aa01060000000c6959f9ff1f","packetId":170}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"6d0600000050167d1580","packetId":109}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"51020b0000002500491681150200","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"0e020b000000030002000000","packetId":14}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"51020a0000002500561678150200","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"0e020a000000030002000000","packetId":14}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"51020900000025003b1680150200","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"0e0209000000030002000000","packetId":14}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"ac050000009300f215c915800e01","packetId":172}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"aa01050000000c6959f9ff1f","packetId":170}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"6d05000000f215c91580","packetId":109}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"5102080000002500f315bc150200","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"0e0208000000030002000000","packetId":14}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"5102070000002500eb15cc150200","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"0e0207000000030002000000","packetId":14}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"ac0a0000009b000e169a15800e01","packetId":172}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"aa010a0000000c6959f9ff1f","packetId":170}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"6d0a0000000e169a1580","packetId":109}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"ac0900000096002b169b15800e01","packetId":172}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"aa01090000000c6959f9ff1f","packetId":170}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"6d090000002b169b1580","packetId":109}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"51021800000025002a1696150200","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"0e0218000000030002000000","packetId":14}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"51021700000027001916a1150000","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"5102160000000b010e1694150000","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"51021500000025001c16b0150200","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"0e0215000000030002000000","packetId":14}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"51021400000081012016a0150000","packetId":81}
{"t":1790848465673,"conn":"game","dir":"s2c","hex":"a800010000000b69acfc0f","packetId":168}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"ac0400000098003d16aa158010110800","packetId":172}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"aa01040000000c6959f9ff1f","packetId":170}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"6d040000003d16aa1580","packetId":109}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"51020600000023004716b0150000","packetId":81}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"51020500000025005416b4150200","packetId":81}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"0e0205000000030002000000","packetId":14}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"ac0300000098002016d515800e01","packetId":172}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"aa01030000000c6959f9ff1f","packetId":170}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"6d030000002016d51580","packetId":109}
{"t":1790848465674,"conn":"game","dir":"s2c","hex":"ac0200000098001016c3158010114800","packetId":172}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"aa01020000000c6959f9ff1f","packetId":170}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"6d020000001016c31580","packetId":109}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"ac0100000098002d16c5158010114800","packetId":172}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"aa01010000000c6959f9ff1f","packetId":170}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"6d010000002d16c51580","packetId":109}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"51020400000025002516d6150200","packetId":81}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"0e0204000000030002000000","packetId":14}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"51020300000025001416c2150200","packetId":81}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"0e0203000000030002000000","packetId":14}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"51020200000025003116d1150200","packetId":81}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"0e0202000000030002000000","packetId":14}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"51020100000025004016d2150200","packetId":81}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"0e0201000000030002000000","packetId":14}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"1d0014","packetId":29}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"1d0119","packetId":29}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"1d0214","packetId":29}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"1d0314","packetId":29}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"1e070032","packetId":30}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"1e090019","packetId":30}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"1e0b005f","packetId":30}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"1d0c01","packetId":29}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"04","packetId":4}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"4800000100000000000000","packetId":72}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"5b24000100000006576562426f74466f75720000000000000100ffff0000000000000000","packetId":91}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"65010000000000","packetId":101}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"8d01000000ffff","packetId":141}
{"t":1790848465675,"conn":"game","dir":"s2c","hex":"5a02040000000000576562426f74466f75720000000000006432776562626f743400000000000000","packetId":90}
{"t":1790848466542,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff63385b443247535d202d204e6f20636f6d6d65726369616c20707572706f736520697320616c6c6f77656421ff633400","packetId":38}
{"t":1790848466542,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d0048656c6c6f20776f726c642100","packetId":38}
{"t":1790848466542,"conn":"game","dir":"s2c","hex":"260400020000000001005b61646d696e6973747261746f725d00ff633954686520576f726c64204576656e7420656e61626c6573206f6e2074686973207365727665722e20546865206b6579206974656d20697320224b6579222eff633100","packetId":38}
{"t":1790848466542,"conn":"game","dir":"s2c","hex":"8a010a000000","packetId":138}
{"t":1790848466543,"conn":"game","dir":"s2c","hex":"670500000001ed15c9150100074b0005","packetId":103}
{"t":1790848466543,"conn":"game","dir":"s2c","hex":"670a00000001101698150100074b0005","packetId":103}
{"t":1790848466902,"conn":"game","dir":"s2c","hex":"6709000000013016a0150100074b0005","packetId":103}
{"t":1790848467182,"conn":"game","dir":"s2c","hex":"670800000001ef1582150100074b0005","packetId":103}
{"t":1790848467182,"conn":"game","dir":"s2c","hex":"6706000000014d1681150100074b0005","packetId":103}
{"t":1790848467382,"conn":"game","dir":"s2c","hex":"8a010a000000","packetId":138}
{"t":1790848467382,"conn":"game","dir":"s2c","hex":"670a00000001111697150100074b0005","packetId":103}
{"t":1790848467622,"conn":"game","dir":"s2c","hex":"6d05000000ed15c91580","packetId":109}
{"t":1790848467821,"conn":"game","dir":"s2c","hex":"8a010a000000","packetId":138}
{"t":1790848467821,"conn":"game","dir":"s2c","hex":"670a00000001121696150100074b0005","packetId":103}
{"t":1790848468302,"conn":"game","dir":"s2c","hex":"8a010a000000","packetId":138}
{"t":1790848468302,"conn":"game","dir":"s2c","hex":"6d0a0000001216961580","packetId":109}
{"t":1790848468302,"conn":"game","dir":"s2c","hex":"2c010a0000001200","packetId":44}
{"t":1790848468303,"conn":"game","dir":"s2c","hex":"965f800a8bc98a8a49","packetId":150}
{"t":1790848468501,"conn":"game","dir":"s2c","hex":"6d08000000ef15821580","packetId":109}
{"t":1790848468781,"conn":"game","dir":"c2s","hex":"69","packetId":105}