예제 #1
0
        /// <summary>
        /// Creates a new instance of the <see cref="Rift.ShopDialog"/> class
        /// from the specified user account and shop items data
        /// </summary>
        /// <param name="account">A user account data.</param>
        /// <param name="shop">An in-game shop items data.</param>
        public ShopDialog(GameAccount account, GameShop shop)
        {
            InitializeComponent();

            this.account = account;
            this.shop = shop;

            onLoading = false;
            updateEnabled = true;

            characters = new Queue<string>();
            itemPanels = new Dictionary<int, ShopItemPanel>();
            comboBoxCategory.Items.Add(Resources.ShopCategorySearch);

            if (account != null)
                labelUser.Text = account.Name;
            else
            {
                labelUser.Visible = false;
                labelPoints.Visible = false;
            }

            if (shop == null) return;

            foreach (var category in shop.CategoryNames)
                comboBoxCategory.Items.Add(category);

            flowPanel.ChildCount = shop.ItemsCount;
            comboBoxCategory.SelectedIndex = comboBoxCategory.Items.Count > 1 ? 1 : 0;
        }
예제 #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Rift.Services.GameProcessParameters"/> structure
        /// with the specified server and the user account information.
        /// </summary>
        /// <param name="ip">An IP-address of the server to connect.</param>
        /// <param name="port">A server port number to use.</param>
        /// <param name="countryCode">A game client country code.</param>
        /// <param name="account">An account data to login.</param>
        public GameProcessParameters(
            string ip,
            int port,
            int countryCode,
            GameAccount account = default(GameAccount))
        {
            this.ip = ip;
            this.port = port;
            this.countryCode = countryCode;
            this.account = account;

            flags = new List<string>();
        }
        public static void CreateAccount(string[] args)
        {
            var email = Helper.Read<string>(args, 0);
            var loginName = Helper.Read<string>(args, 1);
            var password = Helper.Read<string>(args, 2);

            if (email != null && password != null && loginName != null)
            {
                var salt = Helper.GenerateRandomKey(8).ToHexString();
                var result = DB.Auth.Any<Account>(a => a.Email == email || a.LoginName == loginName);

                if (!result)
                {
                    var srp = new SRP6a(salt);

                    srp.CalculateX(email, password, false);

                    var account = new Account
                    {
                        Email = email,
                        LoginName = loginName,
                        PasswordVerifier = srp.V.ToHexString(),
                        Salt = salt
                    };

                    var accountId = DB.Auth.GetAutoIncrementValue<Account, uint>();
                    var gameAccountId = DB.Auth.GetAutoIncrementValue<GameAccount, uint>();

                    var gameAccount = new GameAccount
                    {
                        AccountId = accountId,
                        Alias     = $"{accountId}#{gameAccountId}",
                    };

                    if (DB.Auth.Add(account) && DB.Auth.Add(gameAccount))
                        Console.WriteLine($"Account 'Email: {email}, LoginName: {loginName}' successfully created.");
                }
                else
                    Console.WriteLine($"Account 'Email: {email}' or 'LoginName: {loginName}' already in database.");
            }
        }
예제 #4
0
        private async System.Threading.Tasks.Task <string> GetOTPAsync(GameAccount acc, string service_code, string service_region)
        {
            string longPollingKey = "";

            var webRequest = CreateWebRequest("https://tw.beanfun.com/beanfun_block/game_zone/game_start_step2.aspx?service_code=" + service_code + "&service_region=" + service_region + "&sotp=" + acc.sotp);

            using (var r = await WebRequestExtensions.GetResponseAsync(webRequest, MillisecondsTimeout))
                using (Stream ReceiveStream = r.GetResponseStream())
                    using (StreamReader readStream = new StreamReader(ReceiveStream, Encoding.UTF8))
                        while (!readStream.EndOfStream)
                        {
                            var line = readStream.ReadLine();
                            if (line.Contains("GetResultByLongPolling"))
                            {
                                Regex regex = new Regex("GetResultByLongPolling&key=(.*)\"");
                                if (!regex.IsMatch(line))
                                {
                                    throw new Exception("GetGamePassword Failed: OTPNoLongPollingKey");
                                }
                                longPollingKey = regex.Match(line).Groups[1].Value;
                            }
                            else if (string.IsNullOrEmpty(acc.screatetime) && line.Contains("ServiceAccountCreateTime"))
                            {
                                Regex regex = new Regex("ServiceAccountCreateTime: \"([^\"]+)\"");
                                if (!regex.IsMatch(line))
                                {
                                    throw new Exception("GetGamePassword Failed: OTPNoCreateTime");
                                }
                                acc.screatetime = regex.Match(line).Groups[1].Value;
                            }
                        }

            string secretCode = "";

            webRequest = CreateWebRequest("https://tw.newlogin.beanfun.com/generic_handlers/get_cookies.ashx");
            using (var r = await WebRequestExtensions.GetResponseAsync(webRequest, MillisecondsTimeout))
                using (Stream ReceiveStream = r.GetResponseStream())
                    using (StreamReader readStream = new StreamReader(ReceiveStream, Encoding.UTF8))
                        while (!readStream.EndOfStream)
                        {
                            var line = readStream.ReadLine();
                            if (line.Contains("m_strSecretCode"))
                            {
                                Regex regex = new Regex("var m_strSecretCode = '(.*)';");
                                if (!regex.IsMatch(line))
                                {
                                    throw new Exception("GetGamePassword Failed: OTPNoSecretCode");
                                }
                                secretCode = regex.Match(line).Groups[1].Value;
                                break;
                            }
                        }

            webRequest = CreateWebRequest("http://tw.beanfun.com/beanfun_block/generic_handlers/get_webstart_otp.ashx?SN=" + longPollingKey + "&WebToken=" + bfWebToken + "&SecretCode=" + secretCode + "&ppppp=1F552AEAFF976018F942B13690C990F60ED01510DDF89165F1658CCE7BC21DBA&ServiceCode=" + service_code + "&ServiceRegion=" + service_region + "&ServiceAccount=" + acc.sacc + "&CreateTime=" + acc.screatetime.Replace(" ", "%20") + "&d=" + Environment.TickCount);
            using (var r = await WebRequestExtensions.GetResponseAsync(webRequest, MillisecondsTimeout))
                using (Stream ReceiveStream = r.GetResponseStream())
                    using (StreamReader readStream = new StreamReader(ReceiveStream, Encoding.UTF8))
                    {
                        string DESValue = readStream.ReadToEnd();
                        DESValue = DESValue.Substring(2);
                        string key   = DESValue.Substring(0, 8);
                        string plain = DESValue.Substring(8);
                        string otp   = DecryptDES(plain, key);
                        if (string.IsNullOrEmpty(otp))
                        {
                            throw new Exception("GetGamePassword Failed: Decrypt OTP Failed");
                        }
                        return(otp);
                    }
        }
예제 #5
0
 public async System.Threading.Tasks.Task <string> GetGamePasswordAsync(GameAccount acc)
 {
     return(await GetOTPAsync(acc, service_code, service_region));
 }
예제 #6
0
 public GameAccount UpdateStats(GameAccount account)
 {
     return(AccountRepository.UpdateStats(account));
 }
예제 #7
0
 public BeginnerState(GameAccount state)
 {
     GAcct = state;
 }
예제 #8
0
        public List <AvailableCharacterTemplateSet> GetAvailableCharacterTemplates(GameAccount gameAccount, Realm realm)
        {
            var charTemplates = new List <AvailableCharacterTemplateSet>();

            if (gameAccount.GameAccountCharacterTemplates != null)
            {
                gameAccount.GameAccountCharacterTemplates.ToList().ForEach(gat =>
                {
                    var set = DB.Character.Single <CharacterTemplateSet>(cts => cts.Id == gat.SetId);

                    if (set != null)
                    {
                        var templateSet = new AvailableCharacterTemplateSet
                        {
                            TemplateSetID = (uint)set.Id,
                            Name          = set.Name,
                            Description   = set.Description,
                        };

                        set.CharacterTemplateClasses.ToList().ForEach(ctc =>
                        {
                            templateSet.Classes.Add(new AvailableCharacterTemplateClass
                            {
                                ClassID      = ctc.ClassId,
                                FactionGroup = ctc.FactionGroup
                            });
                        });

                        charTemplates.Add(templateSet);
                    }
                });
            }
            else
            {
                if (realm.RealmCharacterTemplates != null)
                {
                    realm.RealmCharacterTemplates.ToList().ForEach(rt =>
                    {
                        var set = DB.Character.Single <CharacterTemplateSet>(cts => cts.Id == rt.SetId);

                        var templateSet = new AvailableCharacterTemplateSet
                        {
                            TemplateSetID = (uint)set.Id,
                            Name          = set.Name,
                            Description   = set.Description,
                        };

                        set.CharacterTemplateClasses.ToList().ForEach(ctc =>
                        {
                            templateSet.Classes.Add(new AvailableCharacterTemplateClass
                            {
                                ClassID      = ctc.ClassId,
                                FactionGroup = ctc.FactionGroup
                            });
                        });

                        charTemplates.Add(templateSet);
                    });
                }
            }

            return(charTemplates);
        }
예제 #9
0
        public async Task <IActionResult> AddAccount([FromForm] AddLoLAccountVM viewModel)
        {
            //Check if data was returned correctly
            if ((String.IsNullOrEmpty(viewModel.UserName)) || (String.IsNullOrEmpty(viewModel.Region)))
            {
                return(BadRequest());
            }

            //Get the logged in  User
            var user = await _userManager.GetUserAsync(User);

            try
            {
                //download stuff
                var loLDTO = await lolApi.GetAccount(viewModel.Region, viewModel.UserName);

                var LoLStatsDTO = await lolApi.GetStats(viewModel.Region, loLDTO.id);

                var matchIds = await lolApi.GetMatcheList(loLDTO.accountId);

                var gameIds = matchIds.matches.Select(g => g.gameId);
                var matches = await lolApi.GetMatches(gameIds);

                string KDA = lolApi.CalculateKDA(matches, loLDTO.accountId);


                //get account from db
                user.GameAccounts = (ICollection <GameAccount>) await _unitOfWork.GameAccounts.GetAll(gameAccount => gameAccount.UserId == user.Id, includeProperties : "Statistics");

                var lolAccount = user.GameAccounts.FirstOrDefault(gameAccount => gameAccount.GameId == leagueId);


                if (lolAccount == null)
                {
                    lolAccount        = new GameAccount(viewModel.UserName, loLDTO.id, loLDTO.accountId, viewModel.Region);
                    lolAccount.UserId = user.Id;
                    lolAccount.GameId = leagueId;

                    lolAccount.Statistics = new GameAccountStats();
                    if (LoLStatsDTO.Count != 0)
                    {
                        lolAccount.Statistics.UpdateStats(LoLStatsDTO[0].tier + " " + LoLStatsDTO[0].rank, LoLStatsDTO[0].wins, LoLStatsDTO[0].losses, KDA);
                    }
                    user.GameAccounts.Add(lolAccount);
                }
                else
                {
                    lolAccount.UpdateAccount(viewModel.UserName, loLDTO.id, loLDTO.accountId, viewModel.Region);
                    if (LoLStatsDTO.Count != 0)
                    {
                        lolAccount.Statistics.UpdateStats(LoLStatsDTO[0].tier + " " + LoLStatsDTO[0].rank, LoLStatsDTO[0].wins, LoLStatsDTO[0].losses, KDA);
                    }
                }

                await _unitOfWork.Save();



                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
예제 #10
0
 public GameAccount UpdateStats(GameAccount account)
 {
     return(Context.UpdateStats(account));
 }
예제 #11
0
        /// <summary>
        /// Buys a shop item from the user account in the specified count.
        /// </summary>
        /// <param name="account">An account data to use.</param>
        /// <param name="item">A shop item to buy.</param>
        /// <param name="character">A character name to receive a shop item in-game.</param>
        /// <param name="count">An item count to buy.</param>
        /// <exception cref="System.ArgumentNullException"/>
        public void BuyItemAsync(GameAccount account, ShopItem item, string character, int count)
        {
            if (string.IsNullOrEmpty(character))
                throw new ArgumentNullException("character");

            var request = string.Format(Resources.NavigationServerBuyUriFormat,
                account.Name,
                account.GetPasswordHashString(),
                item.Identifier,
                count,
                character);

            try
            {
                client.DownloadStringAsync(new Uri(request));
            }
            catch (WebException)
            {
                OnItemBought(ItemBoughtResult.Failure | ItemBoughtResult.ServiceUnavailable);
            }
        }
예제 #12
0
        private void SetFields(string name, int hashCode, ToonClass @class, ToonFlags flags, byte level, GameAccount owner, uint timePlayed)
        {
            //this.BnetEntityID = bnet.protocol.EntityId.CreateBuilder().SetHigh((ulong)EntityIdHelper.HighIdType.ToonId + this.PersistentID).SetLow(this.PersistentID).Build();
            this.D3EntityID = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh((ulong)EntityIdHelper.HighIdType.ToonId).SetIdLow(this.PersistentID).Build();

            this.Name        = name;
            this.HashCode    = hashCode;
            this.Class       = @class;
            this.Flags       = flags;
            this.Level       = level;
            this.GameAccount = owner;
            this.TimePlayed  = timePlayed;

            var visualItems = new[]
            {
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Head
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Chest
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Feet
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Hands
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Weapon (1)
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Weapon (2)
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Shoulders
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Legs
            };

            this.Equipment = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build();
        }
예제 #13
0
파일: Toon.cs 프로젝트: DZilli/mooege
        private void SetFields(string name, int hashCode, int @class, ToonFlags flags, byte level, GameAccount owner, uint timePlayed, int goldAmount, Dictionary <uint, Item> items)
        {
            this.D3EntityID = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh((ulong)EntityIdHelper.HighIdType.ToonId).SetIdLow(this.PersistentID).Build();


            this.HeroNameField.Value  = name;
            this.HeroClassField.Value = @class;
            this.HeroFlagsField.Value = (uint)flags;
            this.HeroLevelField.Value = level;
            this.GameAccount          = owner;
            this.HashCode             = hashCode;
            this.TimePlayed           = timePlayed;
            this.GoldAmount           = goldAmount;
            this.Field6.Value         = 99999999999999999;
            this.Field7.Value         = 99999999999999999;
            this.Items = items;

            var visualItems = new[]
            {
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Head
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Chest
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Feet
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Hands
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Weapon (1)
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Weapon (2)
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Shoulders
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Legs
            };

            this.HeroVisualEquipmentField.Value = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build();
        }
예제 #14
0
파일: Toon.cs 프로젝트: DZilli/mooege
 public Toon(string name, int hashCode, int classHash, ToonFlags flags, byte level, GameAccount account) // Toon with **newly generated** persistent ID
     : base(StringHashHelper.HashIdentity(name + "#" + hashCode.ToString("D3")))
 {
     this.HeroClassField.transformDelegate += HeroClassFieldTransform;
     this.SetFields(name, hashCode, Toon.GetClassFromHash(classHash), flags, level, account, 0, 0, new Dictionary <uint, Item>());
 }
예제 #15
0
파일: Channel.cs 프로젝트: wlasser/mooege-2
 public bool HasMember(GameAccount gameAccount) //check if a given game account is already channels member
 {
     return(this.Members.Any(pair => pair.Value.Identity.AccountId.Low == gameAccount.BnetEntityId.Low));
 }
예제 #16
0
        private void SaveUserInput()
        {
            if (comboBoxName.SelectedIndex < 0 &&
                !string.IsNullOrEmpty(comboBoxName.Text) &&
                !string.IsNullOrEmpty(textBoxPassword.Text))
            {
                var name = comboBoxName.Text.Trim();
                var password = textBoxPassword.Text.Trim();
                var account = new GameAccount(name, password);

                App.CurrentContext.AccountManager.AddAccount(account);
            }
        }
예제 #17
0
 public Toon(string name, int hashCode, int classId, ToonFlags flags, byte level, GameAccount account) // Toon with **newly generated** persistent ID
     : base(StringHashHelper.HashIdentity(name + "#" + hashCode.ToString("D3")))
 {
     this.SetFields(name, hashCode, GetClassByID(classId), flags, level, account, 0);
 }
예제 #18
0
        public static Toon GetDeletedToon(GameAccount account)
        {
            var query = DBSessions.AccountSession.Query <DBToon>().Where(dbt => dbt.DBGameAccount.Id == account.PersistentID && dbt.Deleted);

            return(query.Any() ? GetToonByLowID(query.First().Id) : null);
        }
예제 #19
0
        /// <summary>
        /// Adds a new account data.
        /// </summary>
        /// <param name="data">
        /// A <see cref="Rift.Data.GameAccount"/> data to add.
        /// </param>
        public void AddAccount(GameAccount data)
        {
            if (data.Equals(GameAccount.Empty))
                return;

            accounts.Add(data);
            current = accounts.Count - 1;
        }
예제 #20
0
        /// <summary>
        /// Retrieves a count of points for the specified account.
        /// </summary>
        /// <param name="account">An account data.</param>
        public void UpdatePointsAsync(GameAccount account)
        {
            var request = string.Format(Resources.NavigationServerPointsFormat,
                account.Name,
                account.GetPasswordHashString());

            try
            {
                updateClient.DownloadStringAsync(new Uri(request));
            }
            catch (WebException)
            {
                OnPointsReceived(-1);
            }
        }
예제 #21
0
        public static List <Toon> GetToonsForGameAccount(GameAccount account)
        {
            var toons = account.DBGameAccount.DBToons.Select(dbt => GetToonByLowID(dbt.Id));

            return(toons.ToList());
        }
예제 #22
0
        public static Toon CreateNewToon(string name, int classId, bool isHardcore, ToonFlags flags, byte level, GameAccount gameAccount)
        {
            #region LevelConfs Server.conf
            if (Mooege.Net.GS.Config.Instance.LevelStarter < 1)
            {
                level = 1;
            }
            else if (Mooege.Net.GS.Config.Instance.LevelStarter > Mooege.Net.GS.Config.Instance.MaxLevel)
            {
                level = (byte)Mooege.Net.GS.Config.Instance.MaxLevel;
            }
            else
            {
                level = (byte)Mooege.Net.GS.Config.Instance.LevelStarter;
            }
            #endregion

            // Create Character
            var dbGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID);
            var newDBToon     = new DBToon
            {
                Class = @Toon.GetClassByID(classId),
                Name  = name,
                /*HashCode = GetUnusedHashCodeForToonName(name),*/
                Hardcore = isHardcore,
                Flags    = flags,
                Level    = level,

                DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID)
            };



            dbGameAccount.DBToons.Add(newDBToon);



            //Стандартные Предметы
            #region Стандартные предметы Barbarian
            if (newDBToon.Class == ToonClass.Barbarian)
            {
                #region Топор
                //Структура сущности предмета
                DBItemInstance BARAxeInstance = new DBItemInstance
                {
                    GbId       = 1661412390, //
                    Affixes    = "",
                    Attributes = "295,:1|" +
                                 "1.401298E-45;91,:0|" +
                                 "0;308,:1|" +
                                 "1.401298E-45;312,:1371713298|" +
                                 "1.045201E+11;157,:1067869798|" +
                                 "1.3;159,:1067869798|" +
                                 "1.3;161,:1067869798|" +
                                 "1.3;412,:1067869798|" +
                                 "1.3;414,:1067869798|" +
                                 "1.3;420,:1067869798|" +
                                 "1.3;164,:1067869798|" +
                                 "1.3;326,:0|" +
                                 "0;327,:0|" +
                                 "0;328,:0|" +
                                 "0;329,:0|" +
                                 "0;413,:0|" +
                                 "0;415,:0|" +
                                 "0;183,0:1073741824|" +
                                 "2;177,0:1077936128|" +
                                 "3;184,0:1073741824|" +
                                 "2;178,0:1077936128|" +
                                 "3;179,:1077936128|" +
                                 "3;185,:1073741824|" +
                                 "2;416,0:1073741824|" +
                                 "2;421,0:1073741824|" +
                                 "2;173,0:1073741824|" +
                                 "2;172,0:1073741824|" +
                                 "2;172,:0|" +
                                 "0;417,0:0|" +
                                 "0;175,0:1065353216|" +
                                 "1;176,0:1065353216|" +
                                 "1;180,0:1065353216|" +
                                 "1;181,:1065353216|" +
                                 "1;418,0:1065353216|" +
                                 "1;422,0:1065353216|" +
                                 "1;169,0:1065353216|" +
                                 "1;419,0:0|" +
                                 "0;89,30592:1|" +
                                 "1.401298E-45;90,30592:1|" +
                                 "1.401298E-45;297,:1|" +
                                 "1.401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(BARAxeInstance);
                // Структура предмета
                DBInventory BARAxeFirstWeapon = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = BARAxeInstance,                                                          // Использовать свеже созданную сущность предмета
                    Hardcore       = isHardcore,                                                              // Хардкорный или нет персонаж
                    DBToon         = newDBToon,                                                               // Выдать созданному персонажу
                    EquipmentSlot  = 4,                                                                       // Вооружить в первую руку
                    LocationX      = 0,
                    LocationY      = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARAxeFirstWeapon);
                #endregion
            }
            #endregion

            #region Стандартные предметы Demon Hunter
            if (newDBToon.Class == ToonClass.DemonHunter)
            {
                #region Арбалет
                //Структура сущности предмета
                DBItemInstance DHFWInstance = new DBItemInstance
                {
                    GbId       = -1647832978,                         //
                    Affixes    = "",
                    Attributes = "295,:0 |" +                         //Item Quality Level
                                 " 2,802597E-45; 91,:0 |" +           //TeamID
                                 " 0; 308,:1 |" +                     // ItemStackQuantityLo
                                 " 1,401298E-45; 312,:1381516818 |" + // Seed
                                 " 1,767016E+35; 157,:1070386381 |" + // Attacks_Per_Second_Item
                                 " 1,6; 159,:1070386381 |" +          // Attacks_Per_Second_Item_Subtotal
                                 " 1,6; 161,:1070386381 |" +          // Attacks_Per_Second_Item_Total
                                 " 1,6; 412,:1070386381 |" +          // Attacks_Per_Second_Item_MainHand
                                 " 1,6; 414,:1070386381 |" +          // Attacks_Per_Second_Item_Total_MainHand
                                 " 1,6; 420,:1070386381 |" +          // Attacks_Per_Second_Item_CurrentHand
                                 " 1,6; 164,:1070386381 |" +          // Attacks_Per_Second_Total
                                 " 1; 326,:0 |" +                     // InitialCooldownMinTotal
                                 " 0; 327,:0 |" +                     // InitialCooldownDeltaTotal
                                 " 0; 328,:0 |" +                     // Attack_Cooldown_Min_Total
                                 " 0; 329,:0 |" +                     // Attack_Cooldown_Delta_Total
                                 " 0; 413,:0 |" +                     // Attacks_Per_Second_Item_OffHand
                                 " 0; 415,:0 |" +                     // Attacks_Per_Second_Item_Total_OffHand
                                 " 0;183,0:1073741824 |" +            // Damage_Weapon_Min
                                 " 2;177,0:1096810496 |" +            // Damage_Weapon_Max
                                 " 14;184,0:1073741824 |" +           // Damage_Weapon_Min_Total
                                 " 2;178,0:1096810496 |" +            // Damage_Weapon_Max_Total
                                 " 14;179,:1096810496 |" +            // Damage_Weapon_Max_Total_All
                                 " 14;185,:1073741824 |" +            // Damage_Weapon_Min_Total_All
                                 " 2;416,0:1073741824 |" +            // Damage_Weapon_Min_Total_MainHand
                                 " 2;421,0:1073741824 |" +            // Damage_Weapon_Min_Total_CurrentHand
                                 " 2;173,0:1073741824 |" +            // Damage_Min_Subtotal
                                 " 2;172,0:1073741824 |" +            // Damage_Min_Total
                                 " 2;172,:0 |" +                      // Damage_Min_Total
                                 " 0;417,0:0 |" +                     // Damage_Weapon_Min_Total_OffHand
                                 " 0;175,0:1094713344 |" +            // Damage_Weapon_Delta
                                 " 12;176,0:1094713344 |" +           // Damage_Weapon_Delta_SubTotal
                                 " 12;180,0:1094713344 |" +           // Damage_Weapon_Delta_Total
                                 " 12;181,:1094713344 |" +            // Damage_Weapon_Delta_Total_All
                                 " 12;418,0:1094713344 |" +           // Damage_Weapon_Delta_Total_MainHand
                                 " 12;422,0:1094713344 |" +           // Damage_Weapon_Delta_Total_CurrentHand
                                 " 12;169,0:1094713344 |" +           // Damage_Delta_Total
                                 " 12;419,0:0|" +                     // Damage_Weapon_Delta_Total_OffHand
                                 " 0; 89,30599:1 |" +                 // Skill
                                 " 1,401298E-45; 90,30599:1 |" +      // Skill_Total
                                 " 1,401298E-45; 297,:1 |" +          // Item_Equipped
                                 " 1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(DHFWInstance);
                // Структура предмета
                DBInventory DHFirstWeapon = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = DHFWInstance,                                                            // Использовать свеже созданную сущность предмета
                    DBToon         = newDBToon,                                                               // Выдать созданному персонажу
                    Hardcore       = isHardcore,                                                              // Хардкорный или нет персонаж
                    EquipmentSlot  = 4,                                                                       // Вооружить в первую руку
                    LocationX      = 0,
                    LocationY      = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(DHFirstWeapon);
                #endregion
            }
            #endregion

            #region Начало прогресса. 1 Акт, Пока не взятый квест.
            DBProgressToon StartProgress = new DBProgressToon
            {
                DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                DBToon        = newDBToon,                                                               // Выдать созданному персонажу
                LastQuest     = 0,                                                                       // Последний выполненный квест
                StepOfQuest   = 0,                                                                       //Текущий шаг квеста
                ActiveAct     = 1,                                                                       // Активный акт
                ActiveQuest   = -1                                                                       // Активный квест
            };
            DBSessions.AccountSession.SaveOrUpdate(StartProgress);
            DBPortalOfToon NullPortal = new DBPortalOfToon
            {
                DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID),
                DBToon        = newDBToon,
                X             = 0,
                Y             = 0,
                Z             = 0,
                WorldDest     = 0
            };
            DBSessions.AccountSession.SaveOrUpdate(NullPortal);
            #endregion

            DBSessions.AccountSession.Flush();
            DBSessions.AccountSession.Refresh(dbGameAccount);
            return(GetToonByLowID(newDBToon.Id));
        }
예제 #23
0
        public static Toon CreateNewToon(string name, int classId, ToonFlags flags, byte level, GameAccount gameAccount)
        {
            #region LevelConfs Server.conf
            if (NullD.Net.GS.Config.Instance.LevelStarter < 1)
            {
                level = 1;
            }
            else if (NullD.Net.GS.Config.Instance.LevelStarter > NullD.Net.GS.Config.Instance.MaxLevel)
            {
                level = (byte)NullD.Net.GS.Config.Instance.MaxLevel;
            }
            else
            {
                level = (byte)NullD.Net.GS.Config.Instance.LevelStarter;
            }
            #endregion

            var dbGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID);
            var newDBToon     = new DBToon
            {
                Class = @Toon.GetClassByID(classId),
                Name  = name,
                /*HashCode = GetUnusedHashCodeForToonName(name),*/
                Flags         = flags,
                Level         = level,
                DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID)
            };
            dbGameAccount.DBToons.Add(newDBToon);

            #region Стандартные предметы 1.0.4
            //*
            #region Стандартные предметы Barbarian
            if (newDBToon.Class == ToonClass.Barbarian)
            {
                #region Топор
                //Структура сущности предмета
                DBItemInstance BARAxeInstance = new DBItemInstance
                {
                    GbId       = 1661412390, //
                    Affixes    = "",
                    Attributes = "312,:4|5,605194E-45;101,:0|0;329,:1|1,401298E-45;196,0:1077936128|3;190,0:1082130432|4;197,0:1077936128|3;191,0:1082130432|4;192,:1082130432|4;198,:1077936128|3;201,:1080033280|3,5;200,0:1080033280|3,5;434,0:1077936128|3;439,0:1077936128|3;186,0:1077936128|3;182,0:1077936128|3;184,:1077936128|3;185,:1080033280|3,5;435,0:0|0;199,0:1080033280|3,5;188,0:1065353216|1;189,0:1065353216|1;193,0:1065353216|1;194,:1065353216|1;436,0:1065353216|1;440,0:1065353216|1;179,0:1065353216|1;183,:1065353216|1;437,0:0|0;326,:1|1,401298E-45;330,:851683752|2,277814E-08;167,:1067869798|1,3;169,:1067869798|1,3;171,:1067869798|1,3;430,:1067869798|1,3;432,:1067869798|1,3;438,:1067869798|1,3;174,:1067869798|1,3;344,:0|0;345,:0|0;346,:0|0;347,:0|0;431,:0|0;433,:0|0;99,30592:1|1,401298E-45;100,30592:1|1,401298E-45;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(BARAxeInstance);
                // Структура предмета
                DBInventory BARAxeFirstWeapon = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = BARAxeInstance,                                                          // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 4,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARAxeFirstWeapon);
                #endregion

                #region Нагрудник
                //Структура сущности предмета
                DBItemInstance ChestInstance = new DBItemInstance
                {
                    GbId       = 1612257704, //
                    Affixes    = "",
                    Attributes = "312,:1|1,401298E-45;101,:0|0;329,:1|1,401298E-45;48,:1073741824|2;51,:1073741824|2;52,:1073741824|2;53,:1073741824|2;326,:1|1,401298E-45;330,:1425612098|8,559502E+12"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(ChestInstance);
                // Структура предмета
                DBInventory BARChest = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = ChestInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 2,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARChest);
                #endregion

                #region Штаны
                //Структура сущности предмета
                DBItemInstance PantsInstance = new DBItemInstance
                {
                    GbId       = -1512732138, //
                    Affixes    = "",
                    Attributes = "312,:0|0;101,:0|0;329,:1|1,401298E-45;48,:1084227584|5;51,:1084227584|5;52,:1084227584|5;53,:1084227584|5;326,:1|1,401298E-45;330,:56548088|6,54913E-37;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(PantsInstance);
                // Структура предмета
                DBInventory BARPants = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = PantsInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 9,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARPants);
                #endregion
            }
            #endregion

            #region Стандартные предметы DemonHunter
            else if (newDBToon.Class == ToonClass.DemonHunter)
            {
                #region Одноручный арбалет
                //Структура сущности предмета
                DBItemInstance DHbowInstance = new DBItemInstance
                {
                    GbId       = -2091504072, //
                    Affixes    = "",
                    Attributes = "312,:4|5,605194E-45;101,:0|0;329,:1|1,401298E-45;196,0:1077936128|3;190,0:1082130432|4;197,0:1077936128|3;191,0:1082130432|4;192,:1082130432|4;198,:1077936128|3;201,:1080033280|3,5;200,0:1080033280|3,5;434,0:1077936128|3;439,0:1077936128|3;186,0:1077936128|3;182,0:1077936128|3;184,:1077936128|3;185,:1080033280|3,5;435,0:0|0;199,0:1080033280|3,5;188,0:1065353216|1;189,0:1065353216|1;193,0:1065353216|1;194,:1065353216|1;436,0:1065353216|1;440,0:1065353216|1;179,0:1065353216|1;183,:1065353216|1;437,0:0|0;326,:1|1,401298E-45;330,:851683752|2,277814E-08;167,:1067869798|1,3;169,:1067869798|1,3;171,:1067869798|1,3;430,:1067869798|1,3;432,:1067869798|1,3;438,:1067869798|1,3;174,:1067869798|1,3;344,:0|0;345,:0|0;346,:0|0;347,:0|0;431,:0|0;433,:0|0;99,30592:1|1,401298E-45;100,30592:1|1,401298E-45;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(DHbowInstance);
                // Структура предмета
                DBInventory DHFirstWeapon = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = DHbowInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 4,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(DHFirstWeapon);
                #endregion

                #region Нагрудник
                //Структура сущности предмета
                DBItemInstance ChestInstance = new DBItemInstance
                {
                    GbId       = 1612257704, //
                    Affixes    = "",
                    Attributes = "312,:1|1,401298E-45;101,:0|0;329,:1|1,401298E-45;48,:1073741824|2;51,:1073741824|2;52,:1073741824|2;53,:1073741824|2;326,:1|1,401298E-45;330,:1425612098|8,559502E+12"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(ChestInstance);
                // Структура предмета
                DBInventory BARChest = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = ChestInstance,                                                           // Использовать свеже созданную сущность предмета
                    // Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 2,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARChest);
                #endregion

                #region Штаны
                //Структура сущности предмета
                DBItemInstance PantsInstance = new DBItemInstance
                {
                    GbId       = -1512732138, //
                    Affixes    = "",
                    Attributes = "312,:0|0;101,:0|0;329,:1|1,401298E-45;48,:1084227584|5;51,:1084227584|5;52,:1084227584|5;53,:1084227584|5;326,:1|1,401298E-45;330,:56548088|6,54913E-37;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(PantsInstance);
                // Структура предмета
                DBInventory BARPants = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = PantsInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 9,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARPants);
                #endregion
            }
            #endregion

            #region Стандартные предметы Monk
            else if (newDBToon.Class == ToonClass.Monk)
            {
                #region Кастет 1
                //Структура сущности предмета
                DBItemInstance DHbowInstance = new DBItemInstance
                {
                    GbId       = 1236604967, //
                    Affixes    = "",
                    Attributes = "312,:2|2,802597E-45;101,:0|0;329,:1|1,401298E-45;196,0:1065353216|1;190,0:1077936128|3;197,0:1065353216|1;191,0:1077936128|3;192,:1077936128|3;198,:1065353216|1;201,:1073741824|2;200,0:1073741824|2;434,0:1065353216|1;439,0:1065353216|1;186,0:1065353216|1;182,0:1065353216|1;184,:1065353216|1;185,:1073741824|2;435,0:0|0;199,0:1073741824|2;188,0:1073741824|2;189,0:1073741824|2;193,0:1073741824|2;194,:1073741824|2;436,0:1073741824|2;440,0:1073741824|2;179,0:1073741824|2;183,:1073741824|2;437,0:0|0;326,:1|1,401298E-45;330,:750642467|5,397142E-12;167,:1067030938|1,2;169,:1067030938|1,2;171,:1067030938|1,2;430,:1067030938|1,2;432,:1067030938|1,2;438,:1067030938|1,2;174,:1067030938|1,2;344,:0|0;345,:0|0;346,:0|0;347,:0|0;431,:0|0;433,:0|0;99,30592:1|1,401298E-45;100,30592:1|1,401298E-45;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(DHbowInstance);
                // Структура предмета
                DBInventory DHFirstWeapon = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = DHbowInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 4,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(DHFirstWeapon);
                #endregion

                #region Кастет 2
                //Структура сущности предмета
                DBItemInstance DHbowInstance2 = new DBItemInstance
                {
                    GbId       = 1236604967, //
                    Affixes    = "",
                    Attributes = "312,:2|2,802597E-45;101,:0|0;329,:1|1,401298E-45;196,0:1065353216|1;190,0:1077936128|3;197,0:1065353216|1;191,0:1077936128|3;192,:1077936128|3;198,:1065353216|1;201,:1073741824|2;200,0:1073741824|2;434,0:1065353216|1;439,0:1065353216|1;186,0:1065353216|1;182,0:1065353216|1;184,:1065353216|1;185,:1073741824|2;435,0:0|0;199,0:1073741824|2;188,0:1073741824|2;189,0:1073741824|2;193,0:1073741824|2;194,:1073741824|2;436,0:1073741824|2;440,0:1073741824|2;179,0:1073741824|2;183,:1073741824|2;437,0:0|0;326,:1|1,401298E-45;330,:750642467|5,397142E-12;167,:1067030938|1,2;169,:1067030938|1,2;171,:1067030938|1,2;430,:1067030938|1,2;432,:1067030938|1,2;438,:1067030938|1,2;174,:1067030938|1,2;344,:0|0;345,:0|0;346,:0|0;347,:0|0;431,:0|0;433,:0|0;99,30592:1|1,401298E-45;100,30592:1|1,401298E-45;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(DHbowInstance2);
                // Структура предмета
                DBInventory DHFirstWeapon2 = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = DHbowInstance2,                                                          // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 3,                                                                        // Вооружить во вторую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(DHFirstWeapon2);
                #endregion

                #region Нагрудник
                //Структура сущности предмета
                DBItemInstance ChestInstance = new DBItemInstance
                {
                    GbId       = 1612257704, //
                    Affixes    = "",
                    Attributes = "312,:1|1,401298E-45;101,:0|0;329,:1|1,401298E-45;48,:1073741824|2;51,:1073741824|2;52,:1073741824|2;53,:1073741824|2;326,:1|1,401298E-45;330,:1425612098|8,559502E+12"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(ChestInstance);
                // Структура предмета
                DBInventory BARChest = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = ChestInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 2,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARChest);
                #endregion

                #region Штаны
                //Структура сущности предмета
                DBItemInstance PantsInstance = new DBItemInstance
                {
                    GbId       = -1512732138, //
                    Affixes    = "",
                    Attributes = "312,:0|0;101,:0|0;329,:1|1,401298E-45;48,:1084227584|5;51,:1084227584|5;52,:1084227584|5;53,:1084227584|5;326,:1|1,401298E-45;330,:56548088|6,54913E-37;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(PantsInstance);
                // Структура предмета
                DBInventory BARPants = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = PantsInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 9,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARPants);
                #endregion
            }
            #endregion

            #region Стандартные предметы Witch Doctor
            else if (newDBToon.Class == ToonClass.WitchDoctor)
            {
                #region Кинжал
                //Структура сущности предмета
                DBItemInstance DHbowInstance = new DBItemInstance
                {
                    GbId       = -1303415302, //
                    Affixes    = "",
                    Attributes = "312,:2|2,802597E-45;101,:0|0;329,:1|1,401298E-45;196,0:1073741824|2;190,0:1088421888|7;197,0:1073741824|2;191,0:1088421888|7;192,:1088421888|7;198,:1073741824|2;201,:1083179008|4,5;200,0:1083179008|4,5;434,0:1073741824|2;439,0:1073741824|2;186,0:1073741824|2;182,0:1073741824|2;184,:1073741824|2;185,:1083179008|4,5;435,0:0|0;199,0:1083179008|4,5;188,0:1084227584|5;189,0:1084227584|5;193,0:1084227584|5;194,:1084227584|5;436,0:1084227584|5;440,0:1084227584|5;179,0:1084227584|5;183,:1084227584|5;437,0:0|0;326,:1|1,401298E-45;330,:432328575|2,034973E-23;167,:1069547520|1,5;169,:1069547520|1,5;171,:1069547520|1,5;430,:1069547520|1,5;432,:1069547520|1,5;438,:1069547520|1,5;174,:1069547520|1,5;344,:0|0;345,:0|0;346,:0|0;347,:0|0;431,:0|0;433,:0|0;99,30592:1|1,401298E-45;100,30592:1|1,401298E-45;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(DHbowInstance);
                // Структура предмета
                DBInventory DHFirstWeapon = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = DHbowInstance,                                                           // Использовать свеже созданную сущность предмета
                    // Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 4,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(DHFirstWeapon);
                #endregion

                #region Нагрудник
                //Структура сущности предмета
                DBItemInstance ChestInstance = new DBItemInstance
                {
                    GbId       = 1612257704, //
                    Affixes    = "",
                    Attributes = "312,:1|1,401298E-45;101,:0|0;329,:1|1,401298E-45;48,:1073741824|2;51,:1073741824|2;52,:1073741824|2;53,:1073741824|2;326,:1|1,401298E-45;330,:1425612098|8,559502E+12"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(ChestInstance);
                // Структура предмета
                DBInventory BARChest = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = ChestInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 2,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARChest);
                #endregion

                #region Штаны
                //Структура сущности предмета
                DBItemInstance PantsInstance = new DBItemInstance
                {
                    GbId       = -1512732138, //
                    Affixes    = "",
                    Attributes = "312,:0|0;101,:0|0;329,:1|1,401298E-45;48,:1084227584|5;51,:1084227584|5;52,:1084227584|5;53,:1084227584|5;326,:1|1,401298E-45;330,:56548088|6,54913E-37;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(PantsInstance);
                // Структура предмета
                DBInventory BARPants = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = PantsInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 9,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARPants);
                #endregion
            }
            #endregion

            #region Стандартные предметы Wizard
            else if (newDBToon.Class == ToonClass.Wizard)
            {
                #region Кинжал
                //Структура сущности предмета
                DBItemInstance DHbowInstance = new DBItemInstance
                {
                    GbId       = 88665049, //
                    Affixes    = "",
                    Attributes = "312,:5|7,006492E-45;101,:0|0;329,:1|1,401298E-45;196,0:1077936128|3;190,0:1082130432|4;197,0:1077936128|3;191,0:1082130432|4;192,:1082130432|4;198,:1077936128|3;201,:1080033280|3,5;200,0:1080033280|3,5;434,0:1077936128|3;439,0:1077936128|3;186,0:1077936128|3;182,0:1077936128|3;184,:1077936128|3;185,:1080033280|3,5;435,0:0|0;199,0:1080033280|3,5;188,0:1065353216|1;189,0:1065353216|1;193,0:1065353216|1;194,:1065353216|1;436,0:1065353216|1;440,0:1065353216|1;179,0:1065353216|1;183,:1065353216|1;437,0:0|0;326,:1|1,401298E-45;330,:2081659420|3,065573E+36;167,:1067030938|1,2;169,:1067030938|1,2;171,:1067030938|1,2;430,:1067030938|1,2;432,:1067030938|1,2;438,:1067030938|1,2;174,:1067030938|1,2;344,:0|0;345,:0|0;346,:0|0;347,:0|0;431,:0|0;433,:0|0;99,30601:1|1,401298E-45;100,30601:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(DHbowInstance);
                // Структура предмета
                DBInventory DHFirstWeapon = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = DHbowInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 4,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(DHFirstWeapon);
                #endregion

                #region Нагрудник
                //Структура сущности предмета
                DBItemInstance ChestInstance = new DBItemInstance
                {
                    GbId       = 1612257704, //
                    Affixes    = "",
                    Attributes = "312,:1|1,401298E-45;101,:0|0;329,:1|1,401298E-45;48,:1073741824|2;51,:1073741824|2;52,:1073741824|2;53,:1073741824|2;326,:1|1,401298E-45;330,:1425612098|8,559502E+12"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(ChestInstance);
                // Структура предмета
                DBInventory BARChest = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = ChestInstance,                                                           // Использовать свеже созданную сущность предмета
                    //Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 2,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARChest);
                #endregion

                #region Штаны
                //Структура сущности предмета
                DBItemInstance PantsInstance = new DBItemInstance
                {
                    GbId       = -1512732138, //
                    Affixes    = "",
                    Attributes = "312,:0|0;101,:0|0;329,:1|1,401298E-45;48,:1084227584|5;51,:1084227584|5;52,:1084227584|5;53,:1084227584|5;326,:1|1,401298E-45;330,:56548088|6,54913E-37;315,:1|1,401298E-45"
                };
                // Добавляем сущность в базу
                DBSessions.AccountSession.SaveOrUpdate(PantsInstance);
                // Структура предмета
                DBInventory BARPants = new DBInventory
                {
                    DBGameAccount  = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                    DBItemInstance = PantsInstance,                                                           // Использовать свеже созданную сущность предмета
                    // Hardcore = isHardcore, // Хардкорный или нет персонаж
                    DBToon        = newDBToon,                                                                // Выдать созданному персонажу
                    EquipmentSlot = 9,                                                                        // Вооружить в первую руку
                    LocationX     = 0,
                    LocationY     = 0
                };
                // Добавляем предмет в базу
                DBSessions.AccountSession.SaveOrUpdate(BARPants);
                #endregion
            }
            #endregion
            //*/
            #endregion

            #region Начало прогресса. 1 Акт, Пока не взятый квест.
            DBProgressToon StartProgress = new DBProgressToon
            {
                DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту
                DBToon        = newDBToon,                                                               // Выдать созданному персонажу
                MaximumQuest  = 87700,                                                                   // Максимальный квест
                MaximumAct    = 0,                                                                       // Максимальный квест
                StepOfQuest   = 0,                                                                       //Текущий шаг квеста
                ActiveAct     = 0,                                                                       // Активный акт
                ActiveQuest   = -1,                                                                      // Активный квест
                StepIDofQuest = 1,
                LoreCollected = "",
                StatusOfWings = 0,

                LastCheckPoint = -1,
                LastWorld      = -1,

                WaypointStatus  = 1,
                WaypointStatus2 = 1,
                WaypointStatus3 = 1,
                WaypointStatus4 = 1
            };
            DBSessions.AccountSession.SaveOrUpdate(StartProgress);
            DBPortalOfToon NullPortal = new DBPortalOfToon
            {
                DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID),
                DBToon        = newDBToon,
                X             = 0,
                Y             = 0,
                Z             = 0,
                WorldDest     = 0
            };
            DBSessions.AccountSession.SaveOrUpdate(NullPortal);
            DBArtisansOfToon BaseArtisans = new DBArtisansOfToon
            {
                DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID),
                DBToon        = newDBToon,
                Blacksmith    = 1,
                Jeweler       = 1,
                Mystic        = 1,
            };
            DBSessions.AccountSession.SaveOrUpdate(BaseArtisans);
            DBHirelingsOfToon BaseInfoOfHirelings = new DBHirelingsOfToon
            {
                DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID),
                DBToon        = newDBToon,

                Level_Templar     = 1,
                Level_Scoundrel   = 1,
                Level_Enchantress = 1,

                Experience_Templar     = 1200,
                Experience_Scoundrel   = 1200,
                Experience_Enchantress = 1200,

                Templar_Skill1 = -1,
                Templar_Skill2 = -1,
                Templar_Skill3 = -1,
                Templar_Skill4 = -1,

                Scoundrel_Skill1 = -1,
                Scoundrel_Skill2 = -1,
                Scoundrel_Skill3 = -1,
                Scoundrel_Skill4 = -1,

                Enchantress_Skill1 = -1,
                Enchantress_Skill2 = -1,
                Enchantress_Skill3 = -1,
                Enchantress_Skill4 = -1
            };
            DBSessions.AccountSession.SaveOrUpdate(BaseInfoOfHirelings);
            #endregion



            DBSessions.AccountSession.SaveOrUpdate(dbGameAccount);
            DBSessions.AccountSession.Flush();
            DBSessions.AccountSession.Refresh(dbGameAccount);

            return(GetToonByLowID(newDBToon.Id));
        }