public static void Initialize(string file) { if (_instance != null) { throw new InvalidOperationException(); } _instance = new MapServerManager(file); }
public async Task CCharacterMapJoin2(GSSession session, CCharacterMapJoin2 Character) { var charDto = session.Player.Account.Characters .Select(x => x.Value) .FirstOrDefault(x => x.Name == Character.Name); if (!MapServerManager.CheckMapServerMove(session, (Maps)charDto.Map)) { return; } using (var db = new GameContext()) { charDto.Items = (from it in db.Items where it.CharacterId == charDto.CharacterId select it).ToList(); charDto.Spells = (from spell in db.Spells where spell.CharacterId == charDto.CharacterId select spell).ToList(); charDto.Quests = (from quest in db.Quests where quest.CharacterId == charDto.CharacterId select quest).ToList(); charDto.QuestEX = (from quest in db.QuestsEX where quest.CharacterId == charDto.CharacterId select quest).ToList(); charDto.SkillKey = (from config in db.Config where config.SkillKeyId == charDto.CharacterId select config).FirstOrDefault(); charDto.Favorites = (from config in db.Favorites where config.CharacterId == charDto.CharacterId select config).FirstOrDefault(); charDto.Friends = (from friend in db.Friends where (friend.FriendId == charDto.CharacterId || friend.CharacterId == charDto.CharacterId) && friend.State == 1 select friend).ToList(); charDto.Memos = (from letter in db.Letters where letter.CharacterId == charDto.CharacterId select letter).ToList(); charDto.MasterInfo = (from mi in db.MasterLevel where mi.MasterInfoId == charDto.CharacterId select mi).FirstOrDefault(); charDto.GremoryCases = (from gc in db.GremoryCase where gc.CharacterId == charDto.CharacterId && (gc.AccountId == charDto.AccountId && gc.Inventory == 1) select gc).ToList(); } if (@charDto == null) { return; } await session.SendAsync(new SCheckSum { Key = session.Player.CheckSum.GetKey(), Padding = 0xff }); session.Player.Character = new Character(session.Player, @charDto); var @char = session.Player.Character; await session.SendAsync(new SPeriodItemCount()); await session.SendAsync(new SKillCount { KillCount = 1 }); if (charDto.SkillKey != null) { var skillKey = new SSkillKey { SkillKey = charDto.SkillKey.SkillKey, ChatWindow = charDto.SkillKey.ChatWindow, E_Key = charDto.SkillKey.EkeyDefine, GameOption = charDto.SkillKey.GameOption, Q_Key = charDto.SkillKey.QkeyDefine, R_Key = charDto.SkillKey.RkeyDefine, W_Key = charDto.SkillKey.WkeyDefine, }; if (skillKey.SkillKey == null) { skillKey.SkillKey = Array.Empty <byte>(); } await session.SendAsync(skillKey); } if (charDto.Favorites != null) { var fav = new CFavoritesList { Region = new int[] { charDto.Favorites.Fav01, charDto.Favorites.Fav02, charDto.Favorites.Fav03, charDto.Favorites.Fav04, charDto.Favorites.Fav05, } }; await session.SendAsync(fav); } session.Player.Status = LoginStatus.Playing; GuildManager.Instance.AddPlayer(session.Player); //await session.SendAsync(new SNewQuestInfo()); session.Player.Character.Inventory.SendJewelsInfo(); await session.SendAsync(new SUBFInfo { Result = 1 }); await session.SendAsync(new SMapMoveCheckSum { key = 0x0010 }); //ConnectServer dataSend Program.client.SendAsync(new SCAdd { Server = (byte)Program.ServerCode, btName = @charDto.Name.GetBytes() }); if ((@char.CtlCode & ControlCode.GameMaster) == ControlCode.GameMaster) { @char.Spells.SetBuff(SkillStates.GameMaster, TimeSpan.FromDays(100)); } @char.DataLoaded = true; }