| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- """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()
|