| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # -*- coding: utf-8 -*-
- """diag_map.py — 会话内 dump SC51/800/801 原始帧, 核实协议图名。
- 用法: .venv/bin/python diag_map.py [--name 萌新2814]
- """
- import argparse
- import json
- import sys
- import time
- import zlib
- import requests as rq
- import urllib3
- urllib3.disable_warnings()
- HERE = __file__.rsplit("/", 1)[0]
- sys.path.insert(0, HERE)
- import login_996pc as L # noqa: E402
- import quest_bot3 as Q # noqa: E402
- from encode6bitbuf_final import decode6 # noqa: E402
- from combat_bot import log # noqa: E402
- ZONE = 14492170
- def body_text(body):
- for fn in (lambda b: b.decode("utf-8"),
- lambda b: "zlib:" + zlib.decompress(b).decode("utf-8"),
- lambda b: "e6:" + decode6(b).decode("utf-8")):
- try:
- return fn(body)
- except Exception:
- continue
- return repr(body[:60])
- def main():
- ap = argparse.ArgumentParser()
- ap.add_argument("--name", default="萌新2814")
- args = ap.parse_args()
- s = rq.Session()
- j, _ = L.do_login(s, "longwu988", "Longwu1988")
- assert j.get("code") == 200, j.get("msg")
- jwt = j["data"]["token"]
- uid = str(j["data"]["userInfo"]["id"])
- g, bot = Q.enter_world(s, jwt, uid, ZONE, args.name, 0)
- seen = []
- orig = bot._dispatch
- def wrapped(mid, recog, p1, p2, p3, body):
- if mid in (51, 634, 800, 801, 658, 2, 55):
- seen.append((mid, recog, p1, p2, p3, body))
- return orig(mid, recog, p1, p2, p3, body)
- bot._dispatch = wrapped
- log(f"出生: map={bot.me.get('mapname')} @({bot.me['x']},{bot.me['y']}) me.map={bot.me.get('map')!r}")
- t0 = time.time()
- while time.time() - t0 < 5:
- bot.pump(0.3)
- # 触发任务链传送, 捕获目的图 SC51
- if 1 in bot.mission_bodies:
- bot.send(3031, 0, 0, 0, bot.sid,
- json.dumps(bot.mission_bodies[1], separators=(",", ":")).encode())
- bot.send(1011, 0, 0, 0, bot.sid, json.dumps(
- {"Act": "@renwu_mov,1", "UserID": "999999999", "index": 999999999},
- separators=(",", ":")).encode())
- log(">>> 已发 @renwu_mov,1 — 等待传送链帧 ...")
- t0 = time.time()
- while time.time() - t0 < 8:
- bot.pump(0.3)
- log(f"--- 地图相关帧 dump ({len(seen)}条) ---")
- for mid, recog, p1, p2, p3, body in seen[:30]:
- log(f"SC{mid} r={recog} p1={p1} p2={p2} p3={p3} | {body_text(body)[:260]}")
- log(f"最终: mapname={bot.me.get('mapname')!r} me.map={bot.me.get('map')!r} @({bot.me['x']},{bot.me['y']})")
- g.close()
- if __name__ == "__main__":
- main()
|