mirror of
https://github.com/tribufu/rust-gamedig
synced 2026-05-06 07:17:27 +00:00
7 Days To Die support.
This commit is contained in:
parent
2f640e93d5
commit
e689bc766e
8 changed files with 38 additions and 20 deletions
|
|
@ -2,7 +2,8 @@
|
|||
Who knows what the future holds...
|
||||
|
||||
# 0.0.6 - ??/??/2022
|
||||
[Minecraft](https://www.minecraft.com) implementation (bedrock not supported yet).
|
||||
[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.
|
||||
|
||||
# 0.0.5 - 15/11/2022
|
||||
Added `SocketBind` error, regarding failing to bind a socket.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
# Supported games:
|
||||
# Supported services:
|
||||
| ID | Name | Notes |
|
||||
|-----|------|-------|
|
||||
| --- | ---- | ----- |
|
||||
|
|
|
|||
|
|
@ -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, tf2, ts};
|
||||
use gamedig::{aliens, 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;
|
||||
|
|
@ -47,6 +47,7 @@ fn main() -> GDResult<()> {
|
|||
"mc_legacy_vb1_8" => println!("{:#?}", mc::query_specific(Server::Legacy(LegacyGroup::VB1_8), ip, port)?),
|
||||
"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)?),
|
||||
"_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)?),
|
||||
|
|
|
|||
|
|
@ -35,3 +35,5 @@ pub mod cscz;
|
|||
pub mod dod;
|
||||
/// Minecraft
|
||||
pub mod mc;
|
||||
/// 7 Days To Die
|
||||
pub mod sdtd;
|
||||
|
|
|
|||
12
src/games/sdtd.rs
Normal file
12
src/games/sdtd.rs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
use crate::GDResult;
|
||||
use crate::protocols::valve;
|
||||
use crate::protocols::valve::{game, SteamID};
|
||||
|
||||
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
|
||||
let valve_response = valve::query(address, match port {
|
||||
None => 26900,
|
||||
Some(port) => port
|
||||
}, SteamID::SDTD.as_app(), None, None)?;
|
||||
|
||||
Ok(game::Response::new_from_valve_response(valve_response))
|
||||
}
|
||||
|
|
@ -31,16 +31,16 @@ SOFTWARE.
|
|||
use crate::{GDError, GDResult};
|
||||
use crate::utils::buffer::get_u8;
|
||||
|
||||
/// The type of Minecraft Server you want to query
|
||||
/// The type of Minecraft Server you want to query.
|
||||
#[derive(Debug)]
|
||||
pub enum Server {
|
||||
/// Java Edition
|
||||
/// Java Edition.
|
||||
Java,
|
||||
/// Legacy Java
|
||||
/// Legacy Java.
|
||||
Legacy(LegacyGroup)
|
||||
}
|
||||
|
||||
/// Legacy Java (Versions) Groups
|
||||
/// Legacy Java (Versions) Groups.
|
||||
#[derive(Debug)]
|
||||
pub enum LegacyGroup {
|
||||
/// 1.6
|
||||
|
|
@ -51,35 +51,35 @@ pub enum LegacyGroup {
|
|||
VB1_8
|
||||
}
|
||||
|
||||
/// Information about a player
|
||||
/// Information about a player.
|
||||
#[derive(Debug)]
|
||||
pub struct Player {
|
||||
pub name: String,
|
||||
pub id: String
|
||||
}
|
||||
|
||||
/// A query response
|
||||
/// A query response.
|
||||
#[derive(Debug)]
|
||||
pub struct Response {
|
||||
/// Version name, example: "1.19.2"
|
||||
/// Version name, example: "1.19.2".
|
||||
pub version_name: String,
|
||||
/// Version protocol, example: 760 (for 1.19.2)
|
||||
/// Version protocol, example: 760 (for 1.19.2).
|
||||
pub version_protocol: i32,
|
||||
/// Number of server capacity
|
||||
/// Number of server capacity.
|
||||
pub max_players: u32,
|
||||
/// Number of online players
|
||||
/// Number of online players.
|
||||
pub online_players: u32,
|
||||
/// Some online players (can be missing)
|
||||
/// Some online players (can be missing).
|
||||
pub sample_players: Option<Vec<Player>>,
|
||||
/// Server's description or MOTD
|
||||
/// Server's description or MOTD.
|
||||
pub description: String,
|
||||
/// The favicon (can be missing)
|
||||
/// The favicon (can be missing).
|
||||
pub favicon: Option<String>,
|
||||
/// Tells if the chat preview is enabled (can be missing)
|
||||
/// Tells if the chat preview is enabled (can be missing).
|
||||
pub previews_chat: Option<bool>,
|
||||
/// Tells if secure chat is enforced (can be missing)
|
||||
/// Tells if secure chat is enforced (can be missing).
|
||||
pub enforces_secure_chat: Option<bool>,
|
||||
/// Tell's the server type
|
||||
/// Tell's the server type.
|
||||
pub server_type: Server
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ struct ValveProtocol {
|
|||
socket: UdpSocket
|
||||
}
|
||||
|
||||
static PACKET_SIZE: usize = 1400;
|
||||
static PACKET_SIZE: usize = 1600;
|
||||
|
||||
impl ValveProtocol {
|
||||
fn new(address: &str, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
||||
|
|
|
|||
|
|
@ -173,6 +173,8 @@ pub enum SteamID {
|
|||
INSMIC = 17700,
|
||||
/// Insurgency
|
||||
INS = 222880,
|
||||
/// 7 Days To Die
|
||||
SDTD = 251570,
|
||||
/// Insurgency: Sandstorm
|
||||
INSS = 581320,
|
||||
/// Alien Swarm: Reactive Drop
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue