diff --git a/CHANGELOG.md b/CHANGELOG.md index ba855c4..0cacbf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Games: - [Battalion 1944](https://store.steampowered.com/app/489940/BATTALION_Legacy/) support. - [Black Mesa](https://store.steampowered.com/app/362890/Black_Mesa/) support. - [Project Zomboid](https://store.steampowered.com/app/108600/Project_Zomboid/) support. +- [Age of Chivalry](https://store.steampowered.com/app/17510/Age_of_Chivalry/) support. Protocols: - Valve: Players with no name are no more added to the `players_details` field. diff --git a/GAMES.md b/GAMES.md index 05fa2dd..92ae331 100644 --- a/GAMES.md +++ b/GAMES.md @@ -34,6 +34,7 @@ A supported game is defined as a game that has been successfully tested, other g | Battalion 1944 | BAT1944 | Valve Protocol | Query port offset: 3. It is strongly recommended to also query the rules, as the game sends server information's in them. | | Black Mesa | BM | Valve Protocol | | | Project Zomboid | PZ | Valve Protocol | | +| Age of Chivalry | AOC | Valve Protocol | | ## Planned to add support: _ diff --git a/examples/master_querant.rs b/examples/master_querant.rs index 2ea2b79..6a1e4d4 100644 --- a/examples/master_querant.rs +++ b/examples/master_querant.rs @@ -1,6 +1,6 @@ use std::env; -use gamedig::{aliens, arma2oa, ase, asrd, bat1944, bm, cs, cscz, csgo, css, dod, dods, doi, GDResult, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, pz, ror2, rust, sc, sdtd, tf, tf2, tfc, ts, unturned}; +use gamedig::{aliens, aoc, arma2oa, ase, asrd, bat1944, bm, cs, cscz, csgo, css, dod, dods, doi, GDResult, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, pz, ror2, rust, sc, sdtd, tf, tf2, tfc, ts, unturned}; use gamedig::protocols::minecraft::LegacyGroup; use gamedig::protocols::valve; use gamedig::protocols::valve::App; @@ -73,6 +73,7 @@ fn main() -> GDResult<()> { "bat1944" => println!("{:#?}", bat1944::query(ip, port)?), "bm" => println!("{:#?}", bm::query(ip, port)?), "pz" => println!("{:#?}", pz::query(ip, port)?), + "aoc" => println!("{:#?}", aoc::query(ip, port)?), _ => panic!("Undefined game: {}", args[1]) }; diff --git a/src/games/aoc.rs b/src/games/aoc.rs new file mode 100644 index 0000000..55f1357 --- /dev/null +++ b/src/games/aoc.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::AOC.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 033ed38..6e59157 100644 --- a/src/games/mod.rs +++ b/src/games/mod.rs @@ -65,3 +65,5 @@ pub mod bat1944; pub mod bm; /// Project Zomboid pub mod pz; +/// Age of Chivalry +pub mod aoc; diff --git a/src/protocols/valve/types.rs b/src/protocols/valve/types.rs index d8e4585..986f3ed 100644 --- a/src/protocols/valve/types.rs +++ b/src/protocols/valve/types.rs @@ -169,6 +169,8 @@ pub enum SteamID { TS = 2400, /// Garry's Mod GM = 4000, + /// Age of Chivalry + AOC = 17510, /// Insurgency: Modern Infantry Combat INSMIC = 17700, /// ARMA 2: Operation Arrowhead