static SourceParseResult ParseSettings(byte[] info) { var r = new Reader(info); r.Skip(5); var settings = new SourceParseResult(); settings.Protocol = r.ReadAsInt(); settings.Name = r.ReadStringUntil(); settings.Map = r.ReadStringUntil(); settings.Folder = r.ReadStringUntil(); settings.Game = r.ReadStringUntil(); settings.AppId = r.ReadShort(); settings.CurrentPlayers = r.ReadAsInt(); settings.MaxPlayers = r.ReadAsInt(); settings.BotCount = r.ReadAsInt(); settings.ServerType = r.ReadAsInt(); settings.Environment = r.ReadAsInt(); settings.Visibility = r.ReadAsInt(); settings.Vac = r.ReadAsInt(); //if The Ship, additional fields: //_results.mode = reply[pos++]; //_results.witnesses = reply[pos++]; //_results.duration = reply[pos++]; settings.Version = r.ReadStringUntil(); var edf = r.ReadByte(); //settings.edf = edf.ToString(CultureInfo.InvariantCulture); if ((edf & 0x80) != 0) { settings.Port = r.ReadShort(); } if ((edf & 0x10) != 0) { settings.SteamId = r.ReadLong(); } if ((edf & 0x40) != 0) { settings.TvPort = r.ReadShort(); settings.TvName = r.ReadStringUntil(); } if ((edf & 0x20) != 0) { settings.Keywords = r.ReadStringUntil(); } //gameID = full appID if was truncated in previous field (not always the case) if ((edf & 0x01) != 0) { settings.AppId = r.ReadLong(); } return(settings); }
static SourceParseResult ParseSettings(byte[] info) { var r = new Reader(info); r.Skip(5); var settings = new SourceParseResult(); settings.Protocol = r.ReadAsInt(); settings.Name = r.ReadStringUntil(); settings.Map = r.ReadStringUntil(); settings.Folder = r.ReadStringUntil(); settings.Game = r.ReadStringUntil(); settings.AppId = r.ReadShort(); settings.CurrentPlayers = r.ReadAsInt(); settings.MaxPlayers = r.ReadAsInt(); settings.BotCount = r.ReadAsInt(); settings.ServerType = r.ReadAsInt(); settings.Environment = r.ReadAsInt(); settings.Visibility = r.ReadAsInt(); settings.Vac = r.ReadAsInt(); //if The Ship, additional fields: //_results.mode = reply[pos++]; //_results.witnesses = reply[pos++]; //_results.duration = reply[pos++]; settings.Version = r.ReadStringUntil(); var edf = r.ReadByte(); //settings.edf = edf.ToString(CultureInfo.InvariantCulture); if ((edf & 0x80) != 0) settings.Port = r.ReadShort(); if ((edf & 0x10) != 0) settings.SteamId = r.ReadLong(); if ((edf & 0x40) != 0) { settings.TvPort = r.ReadShort(); settings.TvName = r.ReadStringUntil(); } if ((edf & 0x20) != 0) { settings.Keywords = r.ReadStringUntil(); } //gameID = full appID if was truncated in previous field (not always the case) if ((edf & 0x01) != 0) settings.AppId = r.ReadLong(); return settings; }
public SourceServerQueryResult(IPEndPoint ep, SourceParseResult settings, bool isMasterResult = false) : base(ep, settings, isMasterResult) {}