mirror of
https://github.com/tribufu/rust-gamedig
synced 2026-06-01 09:42:41 +00:00
Merge branch 'main' into feat/cli
This commit is contained in:
commit
963040fb84
28 changed files with 1071 additions and 348 deletions
|
|
@ -1,5 +1,6 @@
|
|||
use crate::protocols::valve::Engine;
|
||||
use crate::{
|
||||
protocols::valve::{self, game, SteamApp},
|
||||
protocols::valve::{self, game},
|
||||
GDErrorKind::TypeParse,
|
||||
GDResult,
|
||||
};
|
||||
|
|
@ -8,7 +9,7 @@ use std::net::{IpAddr, SocketAddr};
|
|||
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||
let mut valve_response = valve::query(
|
||||
&SocketAddr::new(*address, port.unwrap_or(7780)),
|
||||
SteamApp::BATTALION1944.as_engine(),
|
||||
Engine::new(489_940),
|
||||
None,
|
||||
None,
|
||||
)?;
|
||||
|
|
|
|||
|
|
@ -4,20 +4,31 @@ use crate::protocols::{
|
|||
gamespy::GameSpyVersion,
|
||||
minecraft::{LegacyGroup, Server},
|
||||
quake::QuakeVersion,
|
||||
valve::SteamApp,
|
||||
valve::Engine,
|
||||
Protocol,
|
||||
};
|
||||
use crate::Game;
|
||||
|
||||
use crate::protocols::types::ProprietaryProtocol;
|
||||
use crate::protocols::valve::GatheringSettings;
|
||||
use phf::{phf_map, Map};
|
||||
|
||||
macro_rules! game {
|
||||
($name: literal, $default_port: literal, $protocol: expr) => {
|
||||
game!(
|
||||
$name,
|
||||
$default_port,
|
||||
$protocol,
|
||||
GatheringSettings::default().into_extra()
|
||||
)
|
||||
};
|
||||
|
||||
($name: literal, $default_port: literal, $protocol: expr, $extra_request_settings: expr) => {
|
||||
Game {
|
||||
name: $name,
|
||||
default_port: $default_port,
|
||||
protocol: $protocol,
|
||||
request_settings: $extra_request_settings,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -33,60 +44,77 @@ pub static GAMES: Map<&'static str, Game> = phf_map! {
|
|||
"minecraftlegacy16" => game!("Minecraft (legacy v1.6)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::V1_6)))),
|
||||
"minecraftlegacy15" => game!("Minecraft (legacy v1.4-1.5)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::V1_5)))),
|
||||
"minecraftlegacy13" => game!("Minecraft (legacy vB1.8-1.3)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::V1_3)))),
|
||||
"alienswarm" => game!("Alien Swarm", 27015, Protocol::Valve(SteamApp::ALIENSWARM)),
|
||||
"aoc" => game!("Age of Chivalry", 27015, Protocol::Valve(SteamApp::AOC)),
|
||||
"a2oa" => game!("ARMA 2: Operation Arrowhead", 2304, Protocol::Valve(SteamApp::A2OA)),
|
||||
"ase" => game!("ARK: Survival Evolved", 27015, Protocol::Valve(SteamApp::ASE)),
|
||||
"asrd" => game!("Alien Swarm: Reactive Drop", 2304, Protocol::Valve(SteamApp::ASRD)),
|
||||
"avorion" => game!("Avorion", 27020, Protocol::Valve(SteamApp::AVORION)),
|
||||
"barotrauma" => game!("Barotrauma", 27016, Protocol::Valve(SteamApp::BAROTRAUMA)),
|
||||
"battalion1944" => game!("Battalion 1944", 7780, Protocol::Valve(SteamApp::BATTALION1944)),
|
||||
"brainbread2" => game!("BrainBread 2", 27015, Protocol::Valve(SteamApp::BRAINBREAD2)),
|
||||
"alienswarm" => game!("Alien Swarm", 27015, Protocol::Valve(Engine::new(630))),
|
||||
"aoc" => game!("Age of Chivalry", 27015, Protocol::Valve(Engine::new(17510))),
|
||||
"a2oa" => game!("ARMA 2: Operation Arrowhead", 2304, Protocol::Valve(Engine::new(33930))),
|
||||
"ase" => game!("ARK: Survival Evolved", 27015, Protocol::Valve(Engine::new(346_110))),
|
||||
"asrd" => game!("Alien Swarm: Reactive Drop", 2304, Protocol::Valve(Engine::new(563_560))),
|
||||
"avorion" => game!("Avorion", 27020, Protocol::Valve(Engine::new(445_220))),
|
||||
"barotrauma" => game!("Barotrauma", 27016, Protocol::Valve(Engine::new(602_960))),
|
||||
"battalion1944" => game!("Battalion 1944", 7780, Protocol::Valve(Engine::new(489_940))),
|
||||
"brainbread2" => game!("BrainBread 2", 27015, Protocol::Valve(Engine::new(346_330))),
|
||||
"battlefield1942" => game!("Battlefield 1942", 23000, Protocol::Gamespy(GameSpyVersion::One)),
|
||||
"blackmesa" => game!("Black Mesa", 27015, Protocol::Valve(SteamApp::BLACKMESA)),
|
||||
"ballisticoverkill" => game!("Ballistic Overkill", 27016, Protocol::Valve(SteamApp::BALLISTICOVERKILL)),
|
||||
"codenamecure" => game!("Codename CURE", 27015, Protocol::Valve(SteamApp::CODENAMECURE)),
|
||||
"colonysurvival" => game!("Colony Survival", 27004, Protocol::Valve(SteamApp::COLONYSURVIVAL)),
|
||||
"counterstrike" => game!("Counter-Strike", 27015, Protocol::Valve(SteamApp::COUNTERSTRIKE)),
|
||||
"cscz" => game!("Counter Strike: Condition Zero", 27015, Protocol::Valve(SteamApp::CSCZ)),
|
||||
"csgo" => game!("Counter-Strike: Global Offensive", 27015, Protocol::Valve(SteamApp::CSGO)),
|
||||
"css" => game!("Counter-Strike: Source", 27015, Protocol::Valve(SteamApp::CSS)),
|
||||
"creativerse" => game!("Creativerse", 26901, Protocol::Valve(SteamApp::CREATIVERSE)),
|
||||
"blackmesa" => game!("Black Mesa", 27015, Protocol::Valve(Engine::new(362_890))),
|
||||
"ballisticoverkill" => game!("Ballistic Overkill", 27016, Protocol::Valve(Engine::new(296_300))),
|
||||
"codenamecure" => game!("Codename CURE", 27015, Protocol::Valve(Engine::new(355_180))),
|
||||
"colonysurvival" => game!("Colony Survival", 27004, Protocol::Valve(Engine::new(366_090))),
|
||||
"conanexiles" => game!("Conan Exiles", 27015, Protocol::Valve(Engine::new(440_900)), GatheringSettings {
|
||||
players: false,
|
||||
rules: true,
|
||||
check_app_id: true,
|
||||
}.into_extra()),
|
||||
"counterstrike" => game!("Counter-Strike", 27015, Protocol::Valve(Engine::new_gold_src(false))),
|
||||
"cscz" => game!("Counter Strike: Condition Zero", 27015, Protocol::Valve(Engine::new_gold_src(false))),
|
||||
"csgo" => game!("Counter-Strike: Global Offensive", 27015, Protocol::Valve(Engine::new(730))),
|
||||
"css" => game!("Counter-Strike: Source", 27015, Protocol::Valve(Engine::new(240))),
|
||||
"creativerse" => game!("Creativerse", 26901, Protocol::Valve(Engine::new(280_790))),
|
||||
"crysiswars" => game!("Crysis Wars", 64100, Protocol::Gamespy(GameSpyVersion::Three)),
|
||||
"dod" => game!("Day of Defeat", 27015, Protocol::Valve(SteamApp::DOD)),
|
||||
"dods" => game!("Day of Defeat: Source", 27015, Protocol::Valve(SteamApp::DODS)),
|
||||
"doi" => game!("Day of Infamy", 27015, Protocol::Valve(SteamApp::DOI)),
|
||||
"dst" => game!("Don't Starve Together", 27016, Protocol::Valve(SteamApp::DST)),
|
||||
"dod" => game!("Day of Defeat", 27015, Protocol::Valve(Engine::new_gold_src(false))),
|
||||
"dods" => game!("Day of Defeat: Source", 27015, Protocol::Valve(Engine::new(300))),
|
||||
"doi" => game!("Day of Infamy", 27015, Protocol::Valve(Engine::new(447_820))),
|
||||
"dst" => game!("Don't Starve Together", 27016, Protocol::Valve(Engine::new(322_320))),
|
||||
"ffow" => game!("Frontlines: Fuel of War", 5478, Protocol::PROPRIETARY(ProprietaryProtocol::FFOW)),
|
||||
"garrysmod" => game!("Garry's Mod", 27016, Protocol::Valve(SteamApp::GARRYSMOD)),
|
||||
"hl2d" => game!("Half-Life 2 Deathmatch", 27015, Protocol::Valve(SteamApp::HL2D)),
|
||||
"garrysmod" => game!("Garry's Mod", 27016, Protocol::Valve(Engine::new(4000))),
|
||||
"hl2d" => game!("Half-Life 2 Deathmatch", 27015, Protocol::Valve(Engine::new(320))),
|
||||
"hce" => game!("Halo: Combat Evolved", 2302, Protocol::Gamespy(GameSpyVersion::Two)),
|
||||
"hlds" => game!("Half-Life Deathmatch: Source", 27015, Protocol::Valve(SteamApp::HLDS)),
|
||||
"hll" => game!("Hell Let Loose", 26420, Protocol::Valve(SteamApp::HLL)),
|
||||
"insurgency" => game!("Insurgency", 27015, Protocol::Valve(SteamApp::INSURGENCY)),
|
||||
"imic" => game!("Insurgency: Modern Infantry Combat", 27015, Protocol::Valve(SteamApp::IMIC)),
|
||||
"insurgencysandstorm" => game!("Insurgency: Sandstorm", 27131, Protocol::Valve(SteamApp::INSURGENCYSANDSTORM)),
|
||||
"left4dead" => game!("Left 4 Dead", 27015, Protocol::Valve(SteamApp::LEFT4DEAD)),
|
||||
"left4dead2" => game!("Left 4 Dead 2", 27015, Protocol::Valve(SteamApp::LEFT4DEAD2)),
|
||||
"ohd" => game!("Operation: Harsh Doorstop", 27005, Protocol::Valve(SteamApp::OHD)),
|
||||
"onset" => game!("Onset", 7776, Protocol::Valve(SteamApp::ONSET)),
|
||||
"projectzomboid" => game!("Project Zomboid", 16261, Protocol::Valve(SteamApp::PROJECTZOMBOID)),
|
||||
"hlds" => game!("Half-Life Deathmatch: Source", 27015, Protocol::Valve(Engine::new(360))),
|
||||
"hll" => game!("Hell Let Loose", 26420, Protocol::Valve(Engine::new(686_810))),
|
||||
"insurgency" => game!("Insurgency", 27015, Protocol::Valve(Engine::new(222_880))),
|
||||
"imic" => game!("Insurgency: Modern Infantry Combat", 27015, Protocol::Valve(Engine::new(17700))),
|
||||
"insurgencysandstorm" => game!("Insurgency: Sandstorm", 27131, Protocol::Valve(Engine::new(581_320))),
|
||||
"l4d" => game!("Left 4 Dead", 27015, Protocol::Valve(Engine::new(500))),
|
||||
"l4d2" => game!("Left 4 Dead 2", 27015, Protocol::Valve(Engine::new(550))),
|
||||
"ohd" => game!("Operation: Harsh Doorstop", 27005, Protocol::Valve(Engine::new_with_dedicated(736_590, 950_900))),
|
||||
"onset" => game!("Onset", 7776, Protocol::Valve(Engine::new(1_105_810))),
|
||||
"projectzomboid" => game!("Project Zomboid", 16261, Protocol::Valve(Engine::new(108_600))),
|
||||
"quake1" => game!("Quake 1", 27500, Protocol::Quake(QuakeVersion::One)),
|
||||
"quake2" => game!("Quake 2", 27910, Protocol::Quake(QuakeVersion::Two)),
|
||||
"quake3" => game!("Quake 3: Arena", 27960, Protocol::Quake(QuakeVersion::Three)),
|
||||
"ror2" => game!("Risk of Rain 2", 27016, Protocol::Valve(SteamApp::ROR2)),
|
||||
"rust" => game!("Rust", 27015, Protocol::Valve(SteamApp::RUST)),
|
||||
"sco" => game!("Sven Co-op", 27015, Protocol::Valve(SteamApp::SCO)),
|
||||
"7d2d" => game!("7 Days To Die", 26900, Protocol::Valve(SteamApp::SD2D)),
|
||||
"q3a" => game!("Quake 3 Arena", 27960, Protocol::Quake(QuakeVersion::Three)),
|
||||
"ror2" => game!("Risk of Rain 2", 27016, Protocol::Valve(Engine::new(632_360))),
|
||||
"rust" => game!("Rust", 27015, Protocol::Valve(Engine::new(252_490))),
|
||||
"sco" => game!("Sven Co-op", 27015, Protocol::Valve(Engine::new_gold_src(false))),
|
||||
"sdtd" => game!("7 Days to Die", 26900, Protocol::Valve(Engine::new(251_570))),
|
||||
"sof2" => game!("Soldier of Fortune 2", 20100, Protocol::Quake(QuakeVersion::Three)),
|
||||
"serioussam" => game!("Serious Sam", 25601, Protocol::Gamespy(GameSpyVersion::One)),
|
||||
"theforest" => game!("The Forest", 27016, Protocol::Valve(SteamApp::THEFOREST)),
|
||||
"teamfortress2" => game!("Team Fortress 2", 27015, Protocol::Valve(SteamApp::TEAMFORTRESS2)),
|
||||
"tfc" => game!("Team Fortress Classic", 27015, Protocol::Valve(SteamApp::TFC)),
|
||||
"theforest" => game!("The Forest", 27016, Protocol::Valve(Engine::new(556_450))),
|
||||
"thefront" => game!("The Front", 27015, Protocol::Valve(Engine::new(2_285_150))),
|
||||
"teamfortress2" => game!("Team Fortress 2", 27015, Protocol::Valve(Engine::new(440))),
|
||||
"tfc" => game!("Team Fortress Classic", 27015, Protocol::Valve(Engine::new_gold_src(false))),
|
||||
"theship" => game!("The Ship", 27015, Protocol::PROPRIETARY(ProprietaryProtocol::TheShip)),
|
||||
"unturned" => game!("Unturned", 27015, Protocol::Valve(SteamApp::UNTURNED)),
|
||||
"unturned" => game!("Unturned", 27015, Protocol::Valve(Engine::new(304_930))),
|
||||
"unrealtournament" => game!("Unreal Tournament", 7778, Protocol::Gamespy(GameSpyVersion::One)),
|
||||
"vrising" => game!("V Rising", 27016, Protocol::Valve(SteamApp::VRISING)),
|
||||
"valheim" => game!("Valheim", 2457, Protocol::Valve(Engine::new(892_970)), GatheringSettings {
|
||||
players: true,
|
||||
rules: false,
|
||||
check_app_id: true,
|
||||
}.into_extra()),
|
||||
"vrising" => game!("V Rising", 27016, Protocol::Valve(Engine::new(1_604_030))),
|
||||
"jc2m" => game!("Just Cause 2: Multiplayer", 7777, Protocol::PROPRIETARY(ProprietaryProtocol::JC2M)),
|
||||
"warsow" => game!("Warsow", 44400, Protocol::Quake(QuakeVersion::Three)),
|
||||
"darkesthour" => game!("Darkest Hour: Europe '44-'45 (2008)", 7758, Protocol::Unreal2),
|
||||
"devastation" => game!("Devastation (2003)", 7778, Protocol::Unreal2),
|
||||
"killingfloor" => game!("Killing Floor", 7708, Protocol::Unreal2),
|
||||
"redorchestra" => game!("Red Orchestra", 7759, Protocol::Unreal2),
|
||||
"ut2003" => game!("Unreal Tournament 2003", 7758, Protocol::Unreal2),
|
||||
"ut2004" => game!("Unreal Tournament 2004", 7778, Protocol::Unreal2),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,10 +5,12 @@ use serde::{Deserialize, Serialize};
|
|||
|
||||
pub mod gamespy;
|
||||
pub mod quake;
|
||||
pub mod unreal2;
|
||||
pub mod valve;
|
||||
|
||||
pub use gamespy::*;
|
||||
pub use quake::*;
|
||||
pub use unreal2::*;
|
||||
pub use valve::*;
|
||||
|
||||
/// Battalion 1944
|
||||
|
|
@ -39,6 +41,8 @@ pub struct Game {
|
|||
pub default_port: u16,
|
||||
/// The protocol the game's query uses
|
||||
pub protocol: Protocol,
|
||||
/// Request settings.
|
||||
pub request_settings: ExtraRequestSettings,
|
||||
}
|
||||
|
||||
#[cfg(feature = "game_defs")]
|
||||
|
|
@ -74,11 +78,13 @@ pub fn query_with_timeout_and_extra_settings(
|
|||
) -> GDResult<Box<dyn CommonResponse>> {
|
||||
let socket_addr = SocketAddr::new(*address, port.unwrap_or(game.default_port));
|
||||
Ok(match &game.protocol {
|
||||
Protocol::Valve(steam_app) => {
|
||||
Protocol::Valve(engine) => {
|
||||
protocols::valve::query(
|
||||
&socket_addr,
|
||||
steam_app.as_engine(),
|
||||
extra_settings.map(ExtraRequestSettings::into),
|
||||
*engine,
|
||||
extra_settings
|
||||
.or(Option::from(game.request_settings.clone()))
|
||||
.map(ExtraRequestSettings::into),
|
||||
timeout_settings,
|
||||
)
|
||||
.map(Box::new)?
|
||||
|
|
@ -125,6 +131,16 @@ pub fn query_with_timeout_and_extra_settings(
|
|||
QuakeVersion::Three => protocols::quake::three::query(&socket_addr, timeout_settings).map(Box::new)?,
|
||||
}
|
||||
}
|
||||
Protocol::Unreal2 => {
|
||||
protocols::unreal2::query(
|
||||
&socket_addr,
|
||||
&extra_settings
|
||||
.map(ExtraRequestSettings::into)
|
||||
.unwrap_or_default(),
|
||||
timeout_settings,
|
||||
)
|
||||
.map(Box::new)?
|
||||
}
|
||||
Protocol::PROPRIETARY(protocol) => {
|
||||
match protocol {
|
||||
ProprietaryProtocol::TheShip => {
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@ use crate::protocols::quake::game_query_mod;
|
|||
|
||||
game_query_mod!(quake1, "Quake 1", one, 27500);
|
||||
game_query_mod!(quake2, "Quake 2", two, 27910);
|
||||
game_query_mod!(quake3, "Quake 3: Arena", three, 27960);
|
||||
game_query_mod!(q3a, "Quake 3 Arena", three, 27960);
|
||||
game_query_mod!(sof2, "Soldier of Fortune 2", three, 20100);
|
||||
game_query_mod!(warsow, "Warsow", three, 44400);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use crate::{
|
||||
protocols::{
|
||||
types::{CommonPlayer, CommonResponse, GenericPlayer, TimeoutSettings},
|
||||
valve::{self, get_optional_extracted_data, Server, ServerPlayer, SteamApp},
|
||||
valve::{self, get_optional_extracted_data, Server, ServerPlayer},
|
||||
GenericResponse,
|
||||
},
|
||||
GDErrorKind::PacketBad,
|
||||
|
|
@ -11,6 +11,7 @@ use std::net::{IpAddr, SocketAddr};
|
|||
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::protocols::valve::Engine;
|
||||
#[cfg(feature = "serde")]
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
|
@ -136,7 +137,7 @@ pub fn query_with_timeout(
|
|||
) -> GDResult<Response> {
|
||||
let valve_response = valve::query(
|
||||
&SocketAddr::new(*address, port.unwrap_or(27015)),
|
||||
SteamApp::THESHIP.as_engine(),
|
||||
Engine::new(2400),
|
||||
None,
|
||||
timeout_settings,
|
||||
)?;
|
||||
|
|
|
|||
10
crates/lib/src/games/unreal2.rs
Normal file
10
crates/lib/src/games/unreal2.rs
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
//! Unreal2 game query modules
|
||||
|
||||
use crate::protocols::unreal2::game_query_mod;
|
||||
|
||||
game_query_mod!(darkesthour, "Darkest Hour: Europe '44-'45 (2008)", 7758);
|
||||
game_query_mod!(devastation, "Devastation (2003)", 7778);
|
||||
game_query_mod!(killingfloor, "Killing Floor", 7708);
|
||||
game_query_mod!(redorchestra, "Red Orchestra", 7759);
|
||||
game_query_mod!(ut2003, "Unreal Tournament 2003", 7758);
|
||||
game_query_mod!(ut2004, "Unreal Tournament 2004", 7778);
|
||||
|
|
@ -2,55 +2,133 @@
|
|||
|
||||
use crate::protocols::valve::game_query_mod;
|
||||
|
||||
game_query_mod!(a2oa, "ARMA 2: Operation Arrowhead", A2OA, 2304);
|
||||
game_query_mod!(alienswarm, "Alien Swarm", ALIENSWARM, 27015);
|
||||
game_query_mod!(aoc, "Age of Chivalry", AOC, 27015);
|
||||
game_query_mod!(ase, "ARK: Survival Evolved", ASE, 27015);
|
||||
game_query_mod!(asrd, "Alien Swarm: Reactive Drop", ASRD, 2304);
|
||||
game_query_mod!(avorion, "Avorion", AVORION, 27020);
|
||||
game_query_mod!(
|
||||
a2oa,
|
||||
"ARMA 2: Operation Arrowhead",
|
||||
Engine::new(33930),
|
||||
2304
|
||||
);
|
||||
game_query_mod!(alienswarm, "Alien Swarm", Engine::new(630), 27015);
|
||||
game_query_mod!(aoc, "Age of Chivalry", Engine::new(17510), 27015);
|
||||
game_query_mod!(ase, "ARK: Survival Evolved", Engine::new(346_110), 27015);
|
||||
game_query_mod!(
|
||||
asrd,
|
||||
"Alien Swarm: Reactive Drop",
|
||||
Engine::new(563_560),
|
||||
2304
|
||||
);
|
||||
game_query_mod!(avorion, "Avorion", Engine::new(445_220), 27020);
|
||||
game_query_mod!(
|
||||
ballisticoverkill,
|
||||
"Ballistic Overkill",
|
||||
BALLISTICOVERKILL,
|
||||
Engine::new(296_300),
|
||||
27016
|
||||
);
|
||||
game_query_mod!(barotrauma, "Barotrauma", BAROTRAUMA, 27016);
|
||||
game_query_mod!(blackmesa, "Black Mesa", BLACKMESA, 27015);
|
||||
game_query_mod!(brainbread2, "BrainBread 2", BRAINBREAD2, 27015);
|
||||
game_query_mod!(codenamecure, "Codename CURE", CODENAMECURE, 27015);
|
||||
game_query_mod!(colonysurvival, "Colony Survival", COLONYSURVIVAL, 27004);
|
||||
game_query_mod!(counterstrike, "Counter-Strike", COUNTERSTRIKE, 27015);
|
||||
game_query_mod!(creativerse, "Creativerse", CREATIVERSE, 26901);
|
||||
game_query_mod!(cscz, "Counter Strike: Condition Zero", CSCZ, 27015);
|
||||
game_query_mod!(csgo, "Counter-Strike: Global Offensive", CSGO, 27015);
|
||||
game_query_mod!(css, "Counter-Strike: Source", CSS, 27015);
|
||||
game_query_mod!(dod, "Day of Defeat", DOD, 27015);
|
||||
game_query_mod!(dods, "Day of Defeat: Source", DODS, 27015);
|
||||
game_query_mod!(doi, "Day of Infamy", DOI, 27015);
|
||||
game_query_mod!(dst, "Don't Starve Together", DST, 27016);
|
||||
game_query_mod!(garrysmod, "Garry's Mod", GARRYSMOD, 27016);
|
||||
game_query_mod!(hl2d, "Half-Life 2 Deathmatch", HL2D, 27015);
|
||||
game_query_mod!(hlds, "Half-Life Deathmatch: Source", HLDS, 27015);
|
||||
game_query_mod!(hll, "Hell Let Loose", HLL, 26420);
|
||||
game_query_mod!(imic, "Insurgency: Modern Infantry Combat", IMIC, 27015);
|
||||
game_query_mod!(insurgency, "Insurgency", INSURGENCY, 27015);
|
||||
game_query_mod!(barotrauma, "Barotrauma", Engine::new(602_960), 27016);
|
||||
game_query_mod!(blackmesa, "Black Mesa", Engine::new(362_890), 27015);
|
||||
game_query_mod!(brainbread2, "BrainBread 2", Engine::new(346_330), 27015);
|
||||
game_query_mod!(codenamecure, "Codename CURE", Engine::new(355_180), 27015);
|
||||
game_query_mod!(
|
||||
colonysurvival,
|
||||
"Colony Survival",
|
||||
Engine::new(366_090),
|
||||
27004
|
||||
);
|
||||
game_query_mod!(
|
||||
conanexiles,
|
||||
"Conan Exiles",
|
||||
Engine::new(440_900),
|
||||
27015,
|
||||
GatheringSettings {
|
||||
players: false,
|
||||
rules: true,
|
||||
check_app_id: true,
|
||||
}
|
||||
);
|
||||
game_query_mod!(
|
||||
counterstrike,
|
||||
"Counter-Strike",
|
||||
Engine::new_gold_src(false),
|
||||
27015
|
||||
);
|
||||
game_query_mod!(creativerse, "Creativerse", Engine::new(280_790), 26901);
|
||||
game_query_mod!(
|
||||
cscz,
|
||||
"Counter Strike: Condition Zero",
|
||||
Engine::new_gold_src(false),
|
||||
27015
|
||||
);
|
||||
game_query_mod!(
|
||||
csgo,
|
||||
"Counter-Strike: Global Offensive",
|
||||
Engine::new(730),
|
||||
27015
|
||||
);
|
||||
game_query_mod!(css, "Counter-Strike: Source", Engine::new(240), 27015);
|
||||
game_query_mod!(dod, "Day of Defeat", Engine::new_gold_src(false), 27015);
|
||||
game_query_mod!(dods, "Day of Defeat: Source", Engine::new(300), 27015);
|
||||
game_query_mod!(doi, "Day of Infamy", Engine::new(447_820), 27015);
|
||||
game_query_mod!(dst, "Don't Starve Together", Engine::new(322_320), 27016);
|
||||
game_query_mod!(garrysmod, "Garry's Mod", Engine::new(4000), 27016);
|
||||
game_query_mod!(hl2d, "Half-Life 2 Deathmatch", Engine::new(320), 27015);
|
||||
game_query_mod!(
|
||||
hlds,
|
||||
"Half-Life Deathmatch: Source",
|
||||
Engine::new(360),
|
||||
27015
|
||||
);
|
||||
game_query_mod!(hll, "Hell Let Loose", Engine::new(686_810), 26420);
|
||||
game_query_mod!(
|
||||
imic,
|
||||
"Insurgency: Modern Infantry Combat",
|
||||
Engine::new(17700),
|
||||
27015
|
||||
);
|
||||
game_query_mod!(insurgency, "Insurgency", Engine::new(222_880), 27015);
|
||||
game_query_mod!(
|
||||
insurgencysandstorm,
|
||||
"Insurgency: Sandstorm",
|
||||
INSURGENCYSANDSTORM,
|
||||
Engine::new(581_320),
|
||||
27131
|
||||
);
|
||||
game_query_mod!(left4dead, "Left 4 Dead", LEFT4DEAD, 27015);
|
||||
game_query_mod!(left4dead2, "Left 4 Dead 2", LEFT4DEAD2, 27015);
|
||||
game_query_mod!(ohd, "Operation: Harsh Doorstop", OHD, 27005);
|
||||
game_query_mod!(onset, "Onset", ONSET, 7776);
|
||||
game_query_mod!(projectzomboid, "Project Zomboid", PROJECTZOMBOID, 16261);
|
||||
game_query_mod!(ror2, "Risk of Rain 2", ROR2, 27016);
|
||||
game_query_mod!(rust, "Rust", RUST, 27015);
|
||||
game_query_mod!(sco, "Sven Co-op", SCO, 27015);
|
||||
game_query_mod!(sd2d, "7 Days To Die", SD2D, 26900);
|
||||
game_query_mod!(teamfortress2, "Team Fortress 2", TEAMFORTRESS2, 27015);
|
||||
game_query_mod!(tfc, "Team Fortress Classic", TFC, 27015);
|
||||
game_query_mod!(theforest, "The Forest", THEFOREST, 27016);
|
||||
game_query_mod!(unturned, "Unturned", UNTURNED, 27015);
|
||||
game_query_mod!(vrising, "V Rising", VRISING, 27016);
|
||||
game_query_mod!(l4d, "Left 4 Dead", Engine::new(500), 27015);
|
||||
game_query_mod!(l4d2, "Left 4 Dead 2", Engine::new(550), 27015);
|
||||
game_query_mod!(
|
||||
ohd,
|
||||
"Operation: Harsh Doorstop",
|
||||
Engine::new_with_dedicated(736_590, 950_900),
|
||||
27005
|
||||
);
|
||||
game_query_mod!(onset, "Onset", Engine::new(1_105_810), 7776);
|
||||
game_query_mod!(
|
||||
projectzomboid,
|
||||
"Project Zomboid",
|
||||
Engine::new(108_600),
|
||||
16261
|
||||
);
|
||||
game_query_mod!(ror2, "Risk of Rain 2", Engine::new(632_360), 27016);
|
||||
game_query_mod!(rust, "Rust", Engine::new(252_490), 27015);
|
||||
game_query_mod!(sco, "Sven Co-op", Engine::new_gold_src(false), 27015);
|
||||
game_query_mod!(sdtd, "7 Days to Die", Engine::new(251_570), 26900);
|
||||
game_query_mod!(teamfortress2, "Team Fortress 2", Engine::new(440), 27015);
|
||||
game_query_mod!(
|
||||
tfc,
|
||||
"Team Fortress Classic",
|
||||
Engine::new_gold_src(false),
|
||||
27015
|
||||
);
|
||||
game_query_mod!(theforest, "The Forest", Engine::new(556_450), 27016);
|
||||
game_query_mod!(thefront, "The Front", Engine::new(2_285_150), 27015);
|
||||
game_query_mod!(unturned, "Unturned", Engine::new(304_930), 27015);
|
||||
game_query_mod!(
|
||||
valheim,
|
||||
"Valheim",
|
||||
Engine::new(892_970),
|
||||
2457,
|
||||
GatheringSettings {
|
||||
players: true,
|
||||
rules: false,
|
||||
check_app_id: true,
|
||||
}
|
||||
);
|
||||
game_query_mod!(vrising, "V Rising", Engine::new(1_604_030), 27016);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue