From 0a48b0e8eb49d7144ab2747b02ac00c9c3c91454 Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Fri, 25 Nov 2022 20:27:31 +0200 Subject: [PATCH] Ark: Survival Evolved support --- CHANGELOG.md | 3 ++- examples/master_querant.rs | 3 ++- src/games/ase.rs | 12 ++++++++++++ src/games/mod.rs | 2 ++ src/protocols/valve/types.rs | 2 ++ 5 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 src/games/ase.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d98442..3e16784 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ Who knows what the future holds... # 0.0.6 - ??/??/2022 [Minecraft](https://www.minecraft.com) implementation (bedrock not supported yet). -[7 Days To Die](https://store.steampowered.com/app/251570/7_Days_to_Die/) implementation. +[7 Days To Die](https://store.steampowered.com/app/251570/7_Days_to_Die/) support. +[ARK: Survival Evolved](https://store.steampowered.com/app/346110/ARK_Survival_Evolved/) support. # 0.0.5 - 15/11/2022 Added `SocketBind` error, regarding failing to bind a socket. diff --git a/examples/master_querant.rs b/examples/master_querant.rs index cb6bd4e..1190f6c 100644 --- a/examples/master_querant.rs +++ b/examples/master_querant.rs @@ -1,6 +1,6 @@ use std::env; -use gamedig::{aliens, asrd, cscz, csgo, css, dod, dods, GDResult, gm, hl2dm, ins, insmic, inss, l4d, l4d2, mc, sdtd, tf2, ts}; +use gamedig::{aliens, ase, asrd, cscz, csgo, css, dod, dods, GDResult, gm, hl2dm, ins, insmic, inss, l4d, l4d2, mc, sdtd, tf2, ts}; use gamedig::protocols::minecraft::{LegacyGroup, Server}; use gamedig::protocols::valve; use gamedig::protocols::valve::App; @@ -48,6 +48,7 @@ fn main() -> GDResult<()> { "mc_legacy_v1_4" => println!("{:#?}", mc::query_specific(Server::Legacy(LegacyGroup::V1_4), ip, port)?), "mc_legacy_v1_6" => println!("{:#?}", mc::query_specific(Server::Legacy(LegacyGroup::V1_6), ip, port)?), "7dtd" => println!("{:#?}", sdtd::query(ip, port)?), + "ase" => println!("{:#?}", ase::query(ip, port)?), "_src" => println!("{:#?}", valve::query(ip, 27015, App::Source(None), None, None)?), "_gld" => println!("{:#?}", valve::query(ip, 27015, App::GoldSrc(false), None, None)?), "_gld_f" => println!("{:#?}", valve::query(ip, 27015, App::GoldSrc(true), None, None)?), diff --git a/src/games/ase.rs b/src/games/ase.rs new file mode 100644 index 0000000..30d2092 --- /dev/null +++ b/src/games/ase.rs @@ -0,0 +1,12 @@ +use crate::GDResult; +use crate::protocols::valve; +use crate::protocols::valve::{game, SteamID}; + +pub fn query(address: &str, port: Option) -> GDResult { + let valve_response = valve::query(address, match port { + None => 27015, + Some(port) => port + }, SteamID::ASE.as_app(), None, None)?; + + Ok(game::Response::new_from_valve_response(valve_response)) +} diff --git a/src/games/mod.rs b/src/games/mod.rs index 5fe9863..63189ee 100644 --- a/src/games/mod.rs +++ b/src/games/mod.rs @@ -37,3 +37,5 @@ pub mod dod; pub mod mc; /// 7 Days To Die pub mod sdtd; +/// ARK: Survival Evolved +pub mod ase; diff --git a/src/protocols/valve/types.rs b/src/protocols/valve/types.rs index b9fb839..42c50ad 100644 --- a/src/protocols/valve/types.rs +++ b/src/protocols/valve/types.rs @@ -175,6 +175,8 @@ pub enum SteamID { INS = 222880, /// 7 Days To Die SDTD = 251570, + /// ARK: Survival Evolved + ASE = 346110, /// Insurgency: Sandstorm INSS = 581320, /// Alien Swarm: Reactive Drop