Exemplo n.º 1
0
        private void AddCharacter(string data)
        {
            var charactersNumber =
                DatabaseProvider.AccountCharacters.FindAll(x => x.Account.Id == _client.Account.Id).Count;

            if (charactersNumber >= int.Parse(Config.Get("Player_Max_Per_Account")))
            {
                _client.SendPackets(Packet.CreateCharacterFullErrors);
                return;
            }

            var datas = data.Split('|');

            var name = datas[0];

            var classe = int.Parse(datas[1]);

            var sex = int.Parse(datas[2]);

            var color1 = int.Parse(datas[3]);

            var color2 = int.Parse(datas[4]);

            var color3 = int.Parse(datas[5]);

            if (classe == (int) Character.Class.Pandawa &&
                bool.Parse(Config.Get("Subscription")) &&
                _client.Account.IsNotSubscribed())
                return;

            if (DatabaseProvider.Characters.All(x => x.Name != name) && name.Length >= 3 && name.Length <= 20)
            {
                var reg = new Regex("^[a-zA-Z-]+$");

                if (reg.IsMatch(name) && name.Count(c => c == '-') < 3)
                {
                    if (classe >= 1 && classe <= 12 && (sex == 1 || sex == 0))
                    {
                        var newCharacter = new Character
                        {
                            Id =
                                DatabaseProvider.Characters.Count > 0
                                    ? DatabaseProvider.Characters.OrderByDescending(x => x.Id).First().Id + 1
                                    : 1,
                            Name = name,
                            Classe = (Character.Class) classe,
                            Sex = sex,
                            Color1 = color1,
                            Color2 = color2,
                            Color3 = color3,
                            Level = int.Parse(Config.Get("Starting_level")),
                            Skin = int.Parse(classe + "" + sex),
                            PdvNow =
                                (int.Parse(Config.Get("Starting_level")) - 1)*Character.GainHpPerLvl + Character.BaseHp,
                            PdvMax =
                                (int.Parse(Config.Get("Starting_level")) - 1)*Character.GainHpPerLvl + Character.BaseHp,
                        };

                        newCharacter.GenerateInfos(_client.Account.GmLevel);

                        CharacterRepository.Create(newCharacter, _client.Account.Id);

                        _client.SendPackets(Packet.CreationSuccess);

                        _client.SendPackets(Packet.GameBegin);

                        SendCharactersList("");
                    }
                    else
                    {
                        _client.SendPackets(Packet.CreateCharacterFullErrors);
                    }
                }
                else
                {
                    _client.SendPackets(Packet.CreateCharacterBadName);
                }
            }
            else
            {
                _client.SendPackets(Packet.NameAlredyExists);
            }
        }