#data #real-time #warcraft #world #pixel #transmission #encoding

bin+lib libserpix_rs

通过将数据编码成像素实现《魔兽世界》的实时数据传输

3 个版本

0.5.3 2023年6月14日
0.5.1 2023年6月14日
0.5.0 2023年6月6日

#565 in 游戏

MIT 许可证

18KB
360

libserpix_rs

这是一个 Rust 库,充当屏幕阅读器部分,与 lua 库 LibSerpix 配合使用,该库允许通过将数据编码成像素实现《魔兽世界》的实时数据传输。两者结合使用,允许实时将 JSON 格式的消息从《魔兽世界》中传输出来。

示例

这是 src/bin/wow.rs。使用 cargo run --release --bin wow 运行。

use std::time::Instant;
use tokio::sync::mpsc::{channel, error};
use libserpix_rs::*;

#[tokio::main]
async fn main() {
    let (tx, mut rx) = channel(100);
    let mut handles = vec![];
    // Thread #1: scan WoW window
    let h = tokio::spawn(async move {
        let hwnd = win_screenshot::utils::find_window("World of Warcraft").expect("Couldn't find window");
        loop {
            read_wow(hwnd, tx.clone()).await;
        }
    });
    handles.push(h);
    // Thread #2: parse output
    let h = tokio::spawn(async move {
        loop {
            match rx.try_recv() {
                Ok(v) => {
                    let jstring = &v.to_string();
                    println!("{}",jstring);
                },
                Err(e) => {
                    match e {
                        error::TryRecvError::Disconnected => break,
                        _ => {}
                    }
                }
            }
        }
    });
    handles.push(h);
    for handle in handles {
        handle.await.expect("Thread exited");
    }
}

依赖项

~8–45MB
~665K SLoC