"""M2超速惩罚实验: 全新角色 + 1.5s 保守步距 + 只走 8 步。""" import logging, random, sys, time sys.path.insert(0, "src") logging.basicConfig(level=logging.INFO, stream=sys.stdout, format="%(asctime)s %(message)s") log = logging.getLogger("probe") import requests from pbot.bot.runner import pump from pbot.game.session import enter_world from pbot.login.box_client import enter_game_client, login from pbot.transport.gateway import create_role_needed, login_gate_with_retry from pbot.config import Account, RoleSpec acct = Account(username="longwu988", password="Longwu1988") http = requests.Session(); http.trust_env = False; http.verify = False jwt, uid = login(acct) _ = enter_game_client(http, jwt, 14504562) role = create_role_needed(RoleSpec(name="")) # 列表最后一个或新建 key32, sid, real, ticket, gport = login_gate_with_retry(14504562, jwt, uid, role, (8041,8021,8061,8001)) log.info(f"角色={real} sid={sid}") stop = [False] conn, world, updater = enter_world(14504562, real, ticket, sid, gport, uid, stop=stop) log.info(f"SC51位 map={world.me.map_name!r} @({world.me.x},{world.me.y})") # 静置 15s 洗计数(walk_final:278 实证) t0 = time.time() while time.time() - t0 < 15: pump(conn, world, updater, 0.3) log.info(f"静置后 @({world.me.x},{world.me.y})") confirmed = rejected = 0 heading = 2 t_end = time.time() + 40 while time.time() < t_end and confirmed < 6 and rejected < 8: frames = pump(conn, world, updater, 0.1) for f in frames: if f.msg_id == 1 and f.tail == 817: confirmed += 1 log.info(f" << SC1 ★确认 #{confirmed} @({f.recog},{f.p1}) dir={f.p2}") elif f.msg_id == 28 and f.p3 != 32368232: rejected += 1 log.info(f" << SC28 拒 @({f.recog},{f.p1}) dir={f.p2}") x, y = world.me.x, world.me.y if confirmed + rejected == 0: pass # 首步立即发 time.sleep(1.5) _ = conn.send_frame(3011, 0, heading, (y << 16) | x, sid, (world.me.map_name or "等待地图").encode()) log.info(f"[试] ({x},{y}) d{heading} 确认={confirmed} 拒={rejected}") time.sleep(1.5) log.info(f"结束 @({world.me.x},{world.me.y}) 确认={confirmed} 拒={rejected}") stop[0] = True; conn.close()