3个不稳定版本

0.2.1 2024年5月29日
0.2.0 2024年5月5日
0.1.0 2023年8月4日

网络编程 中排名第1266

每月下载量28

MIT许可协议MIT

19MB
408K SLoC

Steam-Vent

通过rust与Steam网络交互

允许使用与常规Steam客户端相同的协议与Steam服务器通信。

状态

虽然该项目仍非常不完整,但验证Steam和发送请求的基本功能已正常工作。

  • 匿名会话
  • 密码认证
  • 二维码认证
  • Steam guard(设备或电子邮件)确认
  • 设备通知确认
  • 保存的机器令牌确认
  • 通过连接执行RPC调用
  • 围绕RPC调用的高级包装

使用方法

请注意,此项目仍在早期开发阶段,API可能会发生重大变化。

use std::error::Error;
use steam_vent::connection::Connection;
use steam_vent::proto::steammessages_gameservers_steamclient::CGameServers_GetServerList_Request;
use steam_vent::serverlist::ServerList;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let server_list = ServerList::discover().await?;
    let mut connection = Connection::anonymous(server_list).await?;

    let mut req = CGameServers_GetServerList_Request::new();
    req.set_limit(16);
    req.set_filter("\\appid\\440".into());
    let some_tf2_servers = connection.service_method(req).await?;
    for server in some_tf2_servers.servers {
        println!(
            "{}({}) playing {}",
            server.get_name(),
            server.get_addr(),
            server.get_map()
        );
    }

    Ok(())
}

致谢

这在很大程度上受到了@DoctorMcKaySteamUser上的工作的启发,并基于此,向所有为此项目做出贡献的人表示衷心的感谢。

依赖项

~17–33MB
~472K SLoC