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(); }
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(); }
public string ChangeGender(string[] @params, LogNetClient invokerClient) { if (invokerClient == null) { return("You can not invoke this command from console."); } if (invokerClient.InGameClient == null) { return("You can only invoke this command while ingame."); } Toon toon = invokerClient.Account.CurrentGameAccount.CurrentToon; ToonFlags gender = invokerClient.Account.CurrentGameAccount.CurrentToon.Flags; var dbToon = DBSessions.AccountSession.Get <DBToon>(toon.PersistentID); string lastGender = toon.DBToon.Flags.ToString(); if (gender == ToonFlags.Male) { toon.DBToon.Flags = ToonFlags.Female; } else if (gender == ToonFlags.Female) { toon.DBToon.Flags = ToonFlags.Male; } DBSessions.AccountSession.SaveOrUpdate(dbToon); DBSessions.AccountSession.Flush(); return(string.Format("Gender {0} changed to {1}!. Reload to see the change.", lastGender, toon.DBToon.Flags.ToString())); }
private void SetFields(string name, int hashCode, ToonClass @class, ToonFlags flags, byte level, Account owner, uint timePlayed) { this.ToonHandle = new ToonHandleHelper(this.PersistentID); this.D3EntityID = this.ToonHandle.ToD3EntityID(); this.BnetEntityID = this.ToonHandle.ToBnetEntityID(); this.Name = name; this.HashCode = hashCode; this.HashCodeString = HashCode.ToString("D3"); this.NameText = D3.Hero.NameText.CreateBuilder().SetName(string.Format("{0}#{1}", this.Name, this.HashCodeString)).Build(); this.Class = @class; this.Flags = flags; this.Level = level; this.Owner = 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(); }
public static Toon CreateNewToon(string name, int classId, 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 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); DBSessions.AccountSession.SaveOrUpdate(dbGameAccount); DBSessions.AccountSession.Flush(); return(GetToonByLowID(newDBToon.Id)); }
public static Toon CreateNewToon(string name, int classId, ToonFlags flags, byte level, GameAccount gameAccount) { 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); DBSessions.AccountSession.SaveOrUpdate(dbGameAccount); DBSessions.AccountSession.Flush(); return GetToonByLowID(newDBToon.Id); }
public static Toon CreateNewToon(string name, int classId, ToonFlags flags, byte level, GameAccount gameAccount) { 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); DBSessions.AccountSession.SaveOrUpdate(dbGameAccount); DBSessions.AccountSession.Flush(); return(GetToonByLowID(newDBToon.Id)); }
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); }
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.D3EntityID = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh((ulong)EntityIdHelper.HighIdType.ToonId).SetIdLow(this.PersistentID).Build(); this.Name = name; this.HashCode = hashCode; this.Class = @GetClassByID(classId); this.Flags = flags; this.Level = level; this.ExperienceNext = Player.LevelBorders[level]; this.GameAccount = account; this.TimePlayed = 0; 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(); }
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 #region Щиток //Структура сущности предмета DBItemInstance BARBuckInstance = new DBItemInstance { GbId = 1815806857, // Affixes = "", Attributes = "295,:2|2,802597E-45;91,:0|0;308,:1|1,401298E-45;312,:978984494|0,0008320537;48,:1090519040|8;51,:1090519040|8;52,:1090519040|8;53,:1090519040|8;207,:1040522936|0,13;208,:1040522936|0,13;205,:1040522936|0,13;213,:1088421888|7;211,:1088421888|7;212,:1094713344|12;214,:1084227584|5;297,:1|1,401298E-45" }; // Добавляем сущность в базу DBSessions.AccountSession.SaveOrUpdate(BARBuckInstance); // Структура предмета DBInventory BARBuckler = new DBInventory { DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту DBItemInstance = BARBuckInstance, // Использовать свеже созданную сущность предмета Hardcore = isHardcore, // Хардкорный или нет персонаж DBToon = newDBToon, // Выдать созданному персонажу EquipmentSlot = 3, // Вооружить в первую руку LocationX = 0, LocationY = 0 }; // Добавляем предмет в базу DBSessions.AccountSession.SaveOrUpdate(BARBuckler); #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 Стандартные предметы Monk if (newDBToon.Class == ToonClass.Monk) { #region Перчатки //Структура сущности предмета DBItemInstance MKKnuckInstance = new DBItemInstance { GbId = 1236604967, // Affixes = "", Attributes = "295,:2|2,802597E-45;91,:0|0;308,:1|1,401298E-45;312,:277358000|5,370061E-29;157,:1067030938|1,2;159,:1067030938|1,2;161,:1067030938|1,2;412,:1067030938|1,2;414,:1067030938|1,2;420,:1067030938|1,2;164,:1067030938|1,2;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(MKKnuckInstance); // Структура предмета DBInventory MKKnucktWeapon = new DBInventory { DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту DBItemInstance = MKKnuckInstance, // Использовать свеже созданную сущность предмета DBToon = newDBToon, // Выдать созданному персонажу Hardcore = isHardcore, // Хардкорный или нет персонаж EquipmentSlot = 4, // Вооружить в первую руку LocationX = 0, LocationY = 0 }; // Добавляем предмет в базу DBSessions.AccountSession.SaveOrUpdate(MKKnucktWeapon); #endregion } #endregion #region Стандартные предметы Witch Doctor if (newDBToon.Class == ToonClass.WitchDoctor) { #region Нож //Структура сущности предмета DBItemInstance WDKnifeInstance = new DBItemInstance { GbId = -635269584, // Affixes = "", Attributes = "295,:1|1,401298E-45;91,:0|0;308,:1|1,401298E-45;312,:233363062|1,434973E-30;157,:1067030938|1,2;159,:1067030938|1,2;161,:1067030938|1,2;412,:1067030938|1,2;414,:1067030938|1,2;420,:1067030938|1,2;164,:1067030938|1,2;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(WDKnifeInstance); // Структура предмета DBInventory WDKnifeWeapon = new DBInventory { DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту DBItemInstance = WDKnifeInstance, // Использовать свеже созданную сущность предмета DBToon = newDBToon, // Выдать созданному персонажу Hardcore = isHardcore, // Хардкорный или нет персонаж EquipmentSlot = 4, // Вооружить в первую руку LocationX = 0, LocationY = 0 }; // Добавляем предмет в базу DBSessions.AccountSession.SaveOrUpdate(WDKnifeWeapon); #endregion } #endregion #region Стандартные предметы Wizzard if (newDBToon.Class == ToonClass.Wizard) { #region Палочка //Структура сущности предмета DBItemInstance WWandInstance = new DBItemInstance { GbId = -635269584, // Affixes = "", Attributes = "295,:1|1,401298E-45;91,:0|0;308,:1|1,401298E-45;312,:233363062|1,434973E-30;157,:1067030938|1,2;159,:1067030938|1,2;161,:1067030938|1,2;412,:1067030938|1,2;414,:1067030938|1,2;420,:1067030938|1,2;164,:1067030938|1,2;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(WWandInstance); // Структура предмета DBInventory WWandWeapon = new DBInventory { DBGameAccount = DBSessions.AccountSession.Get <DBGameAccount>(gameAccount.PersistentID), // Привязка к используемому аккаунту DBItemInstance = WWandInstance, // Использовать свеже созданную сущность предмета DBToon = newDBToon, // Выдать созданному персонажу Hardcore = isHardcore, // Хардкорный или нет персонаж EquipmentSlot = 4, // Вооружить в первую руку LocationX = 0, LocationY = 0 }; // Добавляем предмет в базу DBSessions.AccountSession.SaveOrUpdate(WWandWeapon); #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)); }
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); }
public Toon(string name, int classId, ToonFlags flags, byte level, Account account) // Toon with **newly generated** persistent ID : base(StringHashHelper.HashIdentity(name)) { this.SetFields(name, GetClassByID(classId), flags, level, account); }
private void SetFields(string name, int hashCode, int @class, ToonFlags flags, byte level, GameAccount owner, uint timePlayed, int goldAmount) { 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; 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(); }
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,:1|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,:1|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,:1|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,:1|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,:1|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,:1|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,:1|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,:1|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,:1|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,:1|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,:1|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)); }
private void SetFields(string name, int hashCode, ToonClass @class, ToonFlags flags, byte level, Account owner,uint timePlayed) { this.ToonHandle = new ToonHandleHelper(this.PersistentID); this.D3EntityID = this.ToonHandle.ToD3EntityID(); this.BnetEntityID = this.ToonHandle.ToBnetEntityID(); this.Name = name; this.HashCode = hashCode; this.HashCodeString = HashCode.ToString("D3"); this.Class = @class; this.Flags = flags; this.Level = level; this.Owner = owner; this.TimePlayed = timePlayed; var visualItems = new[] { D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Head D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Chest D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Feet D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Hands D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Weapon (1) D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Weapon (2) D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Shoulders D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Legs }; this.Equipment = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build(); }
//<<<<<<< HEAD // public Toon(ulong persistantId, string name, byte @class, byte gender, byte level, long accountId) // Toon with given persistent ID // :base(persistantId) // { // this.SetFields(name, (ToonClass)@class, (ToonFlags)gender, level, AccountManager.GetAccountByPersistantID((ulong)accountId)); // } // public Toon(string name, int classId, ToonFlags flags, byte level, Account account) // Toon with **newly generated** persistent ID // : base(StringHashHelper.HashIdentity(name)) // { // this.SetFields(name, GetClassByID(classId), flags, level, account); // } //======= //>>>>>>> 8574c238179fe15ed89f064963d15f70293617bc private void SetFields(string name, ToonClass @class, ToonFlags flags, byte level, Account owner) { this.ToonHandle = new ToonHandleHelper(this.PersistentID); this.D3EntityID = this.ToonHandle.ToD3EntityID(); this.BnetEntityID = this.ToonHandle.ToBnetEntityID(); this.Name = name; this.Class = @class; this.Flags = flags; this.Level = level; this.Owner = owner; var itemsGenerator = new Items.ItemTypeGenerator(); var visualItems = new[] { // Head D3.Hero.VisualItem.CreateBuilder() .SetGbid(itemsGenerator.generateRandomElement(Items.ItemType.Helm).Gbid) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Chest D3.Hero.VisualItem.CreateBuilder() .SetGbid(itemsGenerator.generateRandomElement(Items.ItemType.ChestArmor).Gbid) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Feet D3.Hero.VisualItem.CreateBuilder() .SetGbid(itemsGenerator.generateRandomElement(Items.ItemType.Boots).Gbid) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Hands D3.Hero.VisualItem.CreateBuilder() .SetGbid(itemsGenerator.generateRandomElement(Items.ItemType.Gloves).Gbid) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Weapon (1) D3.Hero.VisualItem.CreateBuilder() .SetGbid(itemsGenerator.generateRandomElement(Items.ItemType.Sword_1H).Gbid) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Weapon (2) D3.Hero.VisualItem.CreateBuilder() .SetGbid(itemsGenerator.generateRandomElement(Items.ItemType.Shield).Gbid) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Shoulders D3.Hero.VisualItem.CreateBuilder() .SetGbid(itemsGenerator.generateRandomElement(Items.ItemType.Shoulders).Gbid) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Legs D3.Hero.VisualItem.CreateBuilder() .SetGbid(itemsGenerator.generateRandomElement(Items.ItemType.Pants).Gbid) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), }; this.Equipment = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build(); this.Digest = D3.Hero.Digest.CreateBuilder().SetVersion(891) .SetHeroId(this.D3EntityID) .SetHeroName(this.Name) .SetGbidClass((int)this.ClassID) .SetPlayerFlags((uint)this.Flags) .SetLevel(this.Level) .SetVisualEquipment(this.Equipment) .SetLastPlayedAct(0) .SetHighestUnlockedAct(0) .SetLastPlayedDifficulty(0) .SetHighestUnlockedDifficulty(0) .SetLastPlayedQuest(-1) .SetLastPlayedQuestStep(-1) .SetTimePlayed(0) .Build(); }
private void SetFields(string name, ToonClass @class, ToonFlags flags, byte level, Account owner) { this.ToonHandle = new ToonHandleHelper(this.PersistentID); this.D3EntityID = this.ToonHandle.ToD3EntityID(); this.BnetEntityID = this.ToonHandle.ToBnetEntityID(); this.Name = name; this.Class = @class; this.Flags = flags; this.Level = level; this.Owner = owner; var visualItems = new[] { // Head D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Chest D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Feet D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Hands D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Weapon (1) D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Weapon (2) D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Shoulders D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Legs D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), }; this.Equipment = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build(); this.Digest = D3.Hero.Digest.CreateBuilder().SetVersion(891) .SetHeroId(this.D3EntityID) .SetHeroName(this.Name) .SetGbidClass((int)this.ClassID) .SetPlayerFlags((uint)this.Flags) .SetLevel(this.Level) .SetVisualEquipment(this.Equipment) .SetLastPlayedAct(0) .SetHighestUnlockedAct(0) .SetLastPlayedDifficulty(0) .SetHighestUnlockedDifficulty(0) .SetLastPlayedQuest(-1) .SetLastPlayedQuestStep(-1) .SetTimePlayed(0) .Build(); }
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>()); }