Newmcpe/RakClient

GitHub: Newmcpe/RakClient

基于 Rust/Tokio 的异步 SA-MP 0.3.7 客户端,完整实现 RakNet 3.x 协议并提供 Luau 脚本扩展层,可与真实服务器通信。

Stars: 0 | Forks: 0

# RakClient — 异步 SA-MP 0.3.7 客户端 (Rust / Tokio) 这是一个基于 `RakSAMP Lite.exe` 逆向工程的、干净的异步 RakSAMP 风格 SA-MP 0.3.7 控制台客户端重实现。它驱动了完整的连接 → 游玩序列: ``` Disconnected → Connecting → RakNet-connected → Joining (ClientJoin) → Joined (InitGame) → ClassSelection → SpawnRequested → Spawned → InGame (on-foot sync) ``` 其还原度足以与真实的 0.3.7 服务器通信:它实现了 SA-MP 的 "RakNet 3.x" 可靠/有序 UDP 传输、每个数据报的字节加密,以及镜像 MoonLoader / SAMP.Lua API 的 Lua (Luau) 脚本层,因此现有的脚本可以 hook 每一个 RPC 和数据包。 [俄语文档 →](README.ru.md) ## 工作区布局 | Crate | 职责 | | --- | --- | | `samp-proto` | 纯编解码器:`BitStream`、packet/RPC id、类型化的 (反) 序列化器。无 I/O。 | | `raknet` | SA-MP RakNet 3.x 传输:字节加密、可靠性层、异步 `RakPeer`。 | | `samp-client` | 连接状态机 + 基于传输层的高级 `Client`。 | | `samp-script` | Luau 脚本宿主:`bitStream` + `registerHandler` 原生接口以及类型化的 `samp.events` 移植。 | | `app` | 二进制文件 (`rakclient`):配置 + tracing + 运行 client 至 `Spawned`。 | | `test-support` | 仅用于开发的 fixtures + 用于集成测试的环回模拟 SA-MP 服务器。 | ## 运行 ``` cargo run -p app -- --server --nick [--scripts-dir example_scripts] ``` `RUST_LOG=info`(或使用 `raknet::transport=trace` 以十六进制查看每个数据报)。二进制文件名为 `rakclient`,而不是 crate 名称 `app`。 ## 开发 ``` cargo build --workspace # the gate (在声称完成之前必须为绿色): cargo fmt --all --check cargo clippy --all-targets --all-features -- -D warnings cargo test --workspace ``` ## 协议来源 通信格式(wire format)是从原始二进制文件中恢复出来的(RPC id 表、BitStream 语义、ClientJoin 握手 `version=4057` / `challengeResponse = cookie ^ 0xFD9`、步行同步布局,以及带有 256 字节替换表的端口映射字节加密)。通信布局是经过验证的、与二进制文件一致的逐字节精确移植——它们仅在通过 golden-vector 测试时才会更改。 ## 许可证 [WTFPL](LICENSE) — 想干什么就干什么。
标签:Lua脚本, Rust, 云资产清单, 内核驱动, 可视化界面, 异步编程, 游戏客户端, 网络协议, 网络模拟, 网络流量审计, 逆向工程, 通知系统