Esempio n. 1
0
        public IEnumerable<PlayerInfo> Parse(byte[] data)
        {
            var players = new List<PlayerInfo>();

            var reader = new PacketReader(data);

            var header = reader.ReadByte();
            var chard = Convert.ToChar(header);

            var numberOfPlayers = reader.ReadByte();

            for (byte i = 1; i <= numberOfPlayers; i++)
            {
                var player = new PlayerInfo();
                if (!reader.IsEnd)
                {
                    player.Index = reader.ReadByte(); // always returns 0
                    player.Index = i;
                    player.Name = reader.ReadUTFString();
                    player.Score = reader.ReadLong();
                    player.Duration = reader.ReadFloat();
                }
                players.Add(player);
            }

            return players;
        }
Esempio n. 2
0
        public IEnumerable<RuleInfo> Parse(byte[] data)
        {
            var rules = new List<RuleInfo>();
            var reader = new PacketReader(data);

            var header = reader.ReadByte();
            var numberOfRules = reader.ReadShort();

            for (short i = 1; i <= numberOfRules; i++)
            {
                if (!reader.IsEnd)
                {
                    var rule = new RuleInfo();
                    rule.Index = i;
                    rule.Name = reader.ReadUTFString();
                    rule.Value = reader.ReadUTFString();
                    rules.Add(rule);
                }
            }

            return rules;
        }
        public ServerInfo Parse(byte[] data)
        {
            var server = new ServerInfo();
            var reader = new PacketReader(data);

            var header = reader.ReadByte();
            var address = reader.ReadUTFString();
            var name = reader.ReadUTFString();
            var map = reader.ReadUTFString();
            var folder = reader.ReadUTFString();
            var game = reader.ReadUTFString();
            var players = reader.ReadByte();
            var maxPlayers = reader.ReadByte();
            var protocol = reader.ReadByte();
            var type = reader.ReadByte();
            var environment = reader.ReadByte();
            var visibility = reader.ReadByte();
            var mod = reader.ReadByte();
            var version = 0;
            if (mod == 1)
            {
                var link = reader.ReadUTFString();
                var downloadLink = reader.ReadUTFString();
                var nullByte = reader.ReadByte();
                version = reader.ReadLong();
                var size = reader.ReadLong();
                var mptype = reader.ReadByte();
                var dll = reader.ReadByte();
            }
            var isSecured = reader.ReadByte();
            var bots = reader.ReadByte();

            server.Name = name;
            server.Map = map;
            server.Players = players;
            server.MaxPlayers = maxPlayers;
            server.Bots = bots;
            server.Game = game;
            server.AppId = -1;
            server.Folder = folder;
            server.Protocol = protocol;

            var typeChar = Convert.ToChar(type);
            switch (typeChar)
            {
                case 'd':
                    server.Type = ServerType.Dedicated;
                    break;
                case 'l':
                    server.Type = ServerType.NonDedicated;
                    break;
                case 'p':
                    server.Type = ServerType.Proxy;
                    break;
            };

            var envirommentChar = Convert.ToChar(environment);
            switch (envirommentChar)
            {
                case 'l':
                    server.Environment = ServerEnvironment.Linux;
                    break;
                case 'w':
                    server.Environment = ServerEnvironment.Windows;
                    break;
            }

            server.Visibility = (visibility == 0) ? ServerVisibility.Public : ServerVisibility.Private;
            server.IsSecured = (isSecured == 1);
            server.Version = version.ToString();

            return server;
        }
Esempio n. 4
0
        public ServerInfo Parse(byte[] data)
        {
            var server = new ServerInfo();
            var reader = new PacketReader(data);

            var header = reader.ReadByte();
            var headerChar = Convert.ToChar(header);
            var protocol = reader.ReadByte();
            var name = reader.ReadUTFString();
            var map = reader.ReadUTFString();
            var folder = reader.ReadUTFString();
            var game = reader.ReadUTFString();
            var appId = reader.ReadShort();
            var players = reader.ReadByte();
            var maxPlayers = reader.ReadByte();
            var bots = reader.ReadByte();
            var type = reader.ReadByte();
            var environment = reader.ReadByte();
            var visibility = reader.ReadByte();
            var isSecured = reader.ReadByte();
            var version = reader.ReadUTFString();

            server.Name = name;
            server.Map = map;
            server.Players = players;
            server.MaxPlayers = maxPlayers;
            server.Bots = bots;
            server.Game = game;
            server.AppId = appId;
            server.Folder = folder;
            server.Protocol = protocol;

            var typeChar = Convert.ToChar(type);
            switch (typeChar)
            {
                case 'd':
                    server.Type = ServerType.Dedicated;
                    break;
                case 'l':
                    server.Type = ServerType.NonDedicated;
                    break;
                case 'p':
                    server.Type = ServerType.Proxy;
                    break;
            };

            var envirommentChar = Convert.ToChar(environment);
            switch (envirommentChar)
            {
                case 'l':
                    server.Environment = ServerEnvironment.Linux;
                    break;
                case 'w':
                    server.Environment = ServerEnvironment.Windows;
                    break;
                case 'm':
                case 'o':
                    server.Environment = ServerEnvironment.Mac;
                    break;
            }

            server.Visibility = (visibility == 0) ? ServerVisibility.Public : ServerVisibility.Private;
            server.IsSecured = (isSecured == 1);
            server.Version = version;

            if (!reader.IsEnd)
            {
                var extraDataFlag = reader.ReadByte();
                if ((extraDataFlag & 0x80) > 0)
                {
                    server.Port = reader.ReadShort();
                }
                if ((extraDataFlag & 0x10) > 0)
                {
                    server.SteamId = reader.ReadLongLong();
                }
                if ((extraDataFlag & 0x40) > 0)
                {
                    server.SourceTVPort = reader.ReadShort();
                    server.SourceTVName = reader.ReadUTFString();
                }
                if ((extraDataFlag & 0x20) > 0)
                {
                    server.Tags = reader.ReadUTFString();
                }
                if ((extraDataFlag & 0x01) > 0)
                {
                    server.GameId = reader.ReadLongLong();
                }
            }

            return server;
        }