public QuestProgressInfo(BinaryReader reader) { Index = reader.ReadInt32(); Info = Envir.QuestInfoList.FirstOrDefault(e => e.Index == Index); StartDateTime = DateTime.FromBinary(reader.ReadInt64()); EndDateTime = DateTime.FromBinary(reader.ReadInt64()); int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { KillTaskCount.Add(reader.ReadInt32()); } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { ItemTaskCount.Add(reader.ReadInt64()); } if (Envir.LoadVersion >= 37) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) { FlagTaskSet.Add(reader.ReadBoolean()); } } }
public static void SaveQuestDB(QuestInfo info) { try { MySqlConnection connection = new MySqlConnection(); //star conection String connectionString; connectionString = "Server=" + Settings.ServerIP + "; Uid=" + Settings.Uid + "; Pwd=" + Settings.Pwd + "; convert zero datetime=True"; connection.ConnectionString = connectionString; connection.Open(); string sqlCommand; string query = "SELECT COUNT(*) FROM " + Settings.DBServer + ".questinfo WHERE IndexID=" + info.Index; using (var cmd = new MySqlCommand(query, connection)) { int count = Convert.ToInt32(cmd.ExecuteScalar()); if (count == 0) { sqlCommand = "INSERT INTO " + Settings.DBServer + ".questinfo (IndexID, Name, Group_, FileName, RequiredMinLevel, RequiredMaxLevel, RequiredQuest, RequiredClass, Type, GotoMessage, KillMessage, ItemMessage, FlagMessage) VALUES (@IndexID, @Name, @Group_, @FileName, @RequiredMinLevel, @RequiredMaxLevel, @RequiredQuest, @RequiredClass, @Type, @GotoMessage, @KillMessage, @ItemMessage, @FlagMessage)"; } else { sqlCommand = "UPDATE " + Settings.DBServer + ".questinfo SET IndexID = @IndexID, Name = @Name, Group_ = @Group_, FileName = @FileName, RequiredMinLevel = @RequiredMinLevel, RequiredMaxLevel = @RequiredMaxLevel, RequiredQuest = @RequiredQuest, RequiredClass = @RequiredClass,Type = @Type, GotoMessage = @GotoMessage, KillMessage = @KillMessage, ItemMessage = @ItemMessage, FlagMessage = @FlagMessage WHERE IndexID = " + info.Index + ""; } } using (var command = new MySqlCommand(sqlCommand, connection)) { command.Parameters.AddWithValue("@IndexID", info.Index); command.Parameters.AddWithValue("@Name", info.Name); command.Parameters.AddWithValue("@Group_", info.Group); command.Parameters.AddWithValue("@FileName", info.FileName); command.Parameters.AddWithValue("@RequiredMinLevel", info.RequiredMinLevel); command.Parameters.AddWithValue("@RequiredMaxLevel", info.RequiredMaxLevel); command.Parameters.AddWithValue("@RequiredQuest", info.RequiredQuest); command.Parameters.AddWithValue("@RequiredClass", info.RequiredClass); command.Parameters.AddWithValue("@Type", info.Type); command.Parameters.AddWithValue("@GotoMessage", info.GotoMessage); command.Parameters.AddWithValue("@KillMessage", info.KillMessage); command.Parameters.AddWithValue("@ItemMessage", info.ItemMessage); command.Parameters.AddWithValue("@FlagMessage", info.FlagMessage); command.ExecuteNonQuery(); command.Dispose(); } connection.Close(); } catch (MySqlException ex) { SMain.Enqueue(ex); } }
public static void FromText(string text, bool hero = false) { string[] data = text.Split(new[] { ',' }); if (data.Length < 13) { return; } QuestInfo info = new QuestInfo(false) { Name = data[0], Group = data[1] }; byte.TryParse(data[2], out byte temp); info.Type = (QuestType)temp; info.FileName = data[3]; info.GotoMessage = data[4]; info.KillMessage = data[5]; info.ItemMessage = data[6]; info.FlagMessage = data[7]; int.TryParse(data[8], out info.RequiredMinLevel); int.TryParse(data[9], out info.RequiredMaxLevel); int.TryParse(data[10], out info.RequiredQuest); byte.TryParse(data[11], out temp); bool.TryParse(data[12], out info.HeroQuest); bool.TryParse(data[13], out info.autoComplete); int.TryParse(data[14], out info.Time); info.RequiredClass = (RequiredClass)temp; info.HeroQuest = hero; info.Index = ++SMain.EditEnvir.QuestIndex; SMain.EditEnvir.QuestInfoList.Add(info); }
public QuestProgressInfo(int index) { Info = SMain.Envir.QuestInfoList.FirstOrDefault(e => e.Index == index); if (Info == null) return; foreach (var kill in Info.KillTasks) KillTaskCount.Add(0); foreach (var item in Info.ItemTasks) ItemTaskCount.Add(0); foreach (var flag in Info.FlagTasks) FlagTaskSet.Add(false); CheckCompleted(); }
public static QuestInfo CloneQuest(QuestInfo m) { QuestInfo newQuest = new QuestInfo(m.HeroQuest) { CarryItems = m.CarryItems, CompletionDescription = m.CompletionDescription, CreditReward = m.CreditReward, Description = m.Description, ExpReward = m.ExpReward, FileName = m.FileName, FixedRewards = m.FixedRewards, BuffRewards = m.BuffRewards, FlagMessage = m.FlagMessage, FlagTasks = m.FlagTasks, GoldReward = m.GoldReward, GotoMessage = m.GotoMessage, Group = m.Group, Index = m.Index, ItemMessage = m.ItemMessage, ItemTasks = m.ItemTasks, KillMessage = m.KillMessage, KillTasks = m.KillTasks, Name = m.Name, NpcIndex = m.NpcIndex, NpcInfo = m.NpcInfo, percentageExp = m.percentageExp, autoComplete = m.autoComplete, RequiredClass = m.RequiredClass, RequiredMaxLevel = m.RequiredMaxLevel, RequiredMinLevel = m.RequiredMinLevel, RequiredQuest = m.RequiredQuest, SelectRewards = m.SelectRewards, TaskDescription = m.TaskDescription, Time = m.Time, Type = m.Type, _finishNpcIndex = m._finishNpcIndex, _regexMessage = m._regexMessage, ItemExpReward = m.ItemExpReward }; return(newQuest); }
public QuestInfo UpdateQuestInfo(QuestInfo m) { CarryItems = m.CarryItems; CompletionDescription = m.CompletionDescription; CreditReward = m.CreditReward; Description = m.Description; ExpReward = m.ExpReward; FileName = m.FileName; FixedRewards = m.FixedRewards; BuffRewards = m.BuffRewards; FlagMessage = m.FlagMessage; FlagTasks = m.FlagTasks; GoldReward = m.GoldReward; GotoMessage = m.GotoMessage; Group = m.Group; Index = m.Index; ItemMessage = m.ItemMessage; ItemTasks = m.ItemTasks; KillMessage = m.KillMessage; KillTasks = m.KillTasks; Name = m.Name; NpcIndex = m.NpcIndex; NpcInfo = m.NpcInfo; percentageExp = m.percentageExp; autoComplete = m.autoComplete; RequiredClass = m.RequiredClass; RequiredMaxLevel = m.RequiredMaxLevel; RequiredMinLevel = m.RequiredMinLevel; RequiredQuest = m.RequiredQuest; SelectRewards = m.SelectRewards; TaskDescription = m.TaskDescription; Time = m.Time; Type = m.Type; _finishNpcIndex = m._finishNpcIndex; _regexMessage = m._regexMessage; ItemExpReward = m.ItemExpReward; return(this); }
public QuestProgressInfo(int index) { Index = index; Info = SMain.Envir.QuestInfoList.FirstOrDefault(e => e.Index == index); foreach (var kill in Info.KillTasks) { KillTaskCount.Add(0); } foreach (var item in Info.ItemTasks) { ItemTaskCount.Add(0); } foreach (var flag in Info.FlagTasks) { FlagTaskSet.Add(false); } CheckCompleted(); }
public QuestProgressInfo(BinaryReader reader) { Index = reader.ReadInt32(); Info = SMain.Envir.QuestInfoList.FirstOrDefault(e => e.Index == Index); StartDateTime = DateTime.FromBinary(reader.ReadInt64()); EndDateTime = DateTime.FromBinary(reader.ReadInt64()); int count = reader.ReadInt32(); for (int i = 0; i < count; i++) KillTaskCount.Add(reader.ReadInt32()); count = reader.ReadInt32(); for (int i = 0; i < count; i++) ItemTaskCount.Add(reader.ReadInt64()); if (Envir.LoadVersion >= 37) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) FlagTaskSet.Add(reader.ReadBoolean()); } }
public static void FromText(string text) { string[] data = text.Split(new[] { ',' }); if (data.Length < 10) { return; } QuestInfo info = new QuestInfo(); info.Name = data[0]; info.Group = data[1]; byte temp; byte.TryParse(data[2], out temp); info.Type = (QuestType)temp; info.FileName = data[3]; info.GotoMessage = data[4]; info.KillMessage = data[5]; info.ItemMessage = data[6]; info.FlagMessage = data[7]; int.TryParse(data[8], out info.RequiredMinLevel); int.TryParse(data[9], out info.RequiredMaxLevel); int.TryParse(data[10], out info.RequiredQuest); byte.TryParse(data[11], out temp); info.RequiredClass = (RequiredClass)temp; info.Index = ++EditEnvir.QuestIndex; EditEnvir.QuestInfoList.Add(info); }
public void Remove(QuestInfo info) { QuestInfoList.Remove(info); //Desync all objects\ }
public void CheckQuestInfo(QuestInfo info) { if (Connection.SentQuestInfo.Contains(info)) return; Enqueue(new S.NewQuestInfo { Info = info.CreateClientQuestInfo() }); Connection.SentQuestInfo.Add(info); }
public QuestProgressInfo(MySqlDataReader readerQuestProgressDB, string Name) { Index = Convert.ToInt32(readerQuestProgressDB["IndexID"]); Info = SMain.Envir.QuestInfoList.FirstOrDefault(e => e.Index == Index); // StartDateTime = DateTime.Now; // EndDateTime = DateTime.MaxValue; EndDateTime = readerQuestProgressDB.GetDateTime(readerQuestProgressDB.GetOrdinal("EndDateTime")); StartDateTime = readerQuestProgressDB.GetDateTime(readerQuestProgressDB.GetOrdinal("StartDateTime")); try { MySqlConnection connection = new MySqlConnection(); //star conection String connectionString; connectionString = "Server=" + Settings.ServerIP + "; Uid=" + Settings.Uid + "; Pwd=" + Settings.Pwd + "; convert zero datetime=True"; connection.ConnectionString = connectionString; connection.Open(); MySqlCommand instruccionKillTask = connection.CreateCommand(); instruccionKillTask.CommandText = "SELECT * FROM " + Settings.DBAccount + ".killtaskcount WHERE ChName = '" + Name + "' and IndexID = '" + Index + "' ORDER BY IndexID, Position"; MySqlDataReader readerKillTask = instruccionKillTask.ExecuteReader(); while (readerKillTask.Read()) { int position = Convert.ToInt32(readerKillTask["Position"]); int value = Convert.ToInt32(readerKillTask["Value"]); KillTaskCount.Add(value); } readerKillTask.Dispose(); MySqlCommand instruccionItemTask = connection.CreateCommand(); instruccionItemTask.CommandText = "SELECT * FROM " + Settings.DBAccount + ".itemtaskcount WHERE ChName = '" + Name + "' and IndexID = '" + Index + "' ORDER BY IndexID, Position"; MySqlDataReader readerItemTask = instruccionItemTask.ExecuteReader(); while (readerItemTask.Read()) { int position = Convert.ToInt32(readerItemTask["Position"]); long value = Convert.ToInt64(readerItemTask["Value"]); ItemTaskCount.Add(value); } readerItemTask.Dispose(); MySqlCommand instruccionFlagTask = connection.CreateCommand(); instruccionFlagTask.CommandText = "SELECT * FROM " + Settings.DBAccount + ".flagtaskset WHERE ChName = '" + Name + "' and IndexID = '" + Index + "' ORDER BY IndexID, Position"; MySqlDataReader readerFlagTask = instruccionFlagTask.ExecuteReader(); while (readerFlagTask.Read()) { int position = Convert.ToInt32(readerFlagTask["Position"]); bool value = Convert.ToBoolean(readerFlagTask["value"]); FlagTaskSet.Add(value); } readerFlagTask.Dispose(); connection.Close(); } catch (MySqlException ex) { SMain.Enqueue(ex); } }
public static void FromText(string text) { string[] data = text.Split(new[] { ',' }); if (data.Length < 10) return; QuestInfo info = new QuestInfo(); info.Name = data[0]; info.Group = data[1]; byte temp; byte.TryParse(data[2], out temp); info.Type = (QuestType)temp; info.FileName = data[3]; info.GotoMessage = data[4]; info.KillMessage = data[5]; info.ItemMessage = data[6]; info.FlagMessage = data[7]; int.TryParse(data[8], out info.RequiredMinLevel); int.TryParse(data[9], out info.RequiredMaxLevel); int.TryParse(data[10], out info.RequiredQuest); byte.TryParse(data[11], out temp); info.RequiredClass = (RequiredClass)temp; info.Index = ++SMain.EditEnvir.QuestIndex; SMain.EditEnvir.QuestInfoList.Add(info); }
public QuestProgressInfo(BinaryReader reader, int version, int customVersion) { Index = reader.ReadInt32(); Info = Envir.QuestInfoList.FirstOrDefault(e => e.Index == Index); StartDateTime = DateTime.FromBinary(reader.ReadInt64()); EndDateTime = DateTime.FromBinary(reader.ReadInt64()); if (version < 90) { int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { var killCount = reader.ReadInt32(); if (Info.KillTasks.Count >= i) { var progress = new QuestKillTaskProgress { MonsterID = Info.KillTasks[i].Monster.Index, Count = killCount, Info = Info.KillTasks[i] }; KillTaskCount.Add(progress); } } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { var itemCount = reader.ReadInt32(); if (Info.ItemTasks.Count >= i) { var progress = new QuestItemTaskProgress { ItemID = Info.ItemTasks[i].Item.Index, Count = itemCount, Info = Info.ItemTasks[i] }; ItemTaskCount.Add(progress); } } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { var flagState = reader.ReadBoolean(); if (Info.FlagTasks.Count >= i) { var progress = new QuestFlagTaskProgress { Number = Info.FlagTasks[i].Number, State = flagState, Info = Info.FlagTasks[i] }; FlagTaskSet.Add(progress); } } } else { int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { var progress = new QuestKillTaskProgress { MonsterID = reader.ReadInt32(), Count = reader.ReadInt32() }; foreach (var task in Info.KillTasks) { if (task.Monster.Index != progress.MonsterID) { continue; } progress.Info = task; KillTaskCount.Add(progress); break; } } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { var progress = new QuestItemTaskProgress { ItemID = reader.ReadInt32(), Count = reader.ReadInt32() }; foreach (var task in Info.ItemTasks) { if (task.Item.Index != progress.ItemID) { continue; } progress.Info = task; ItemTaskCount.Add(progress); break; } } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { var progress = new QuestFlagTaskProgress { Number = reader.ReadInt32(), State = reader.ReadBoolean() }; foreach (var task in Info.FlagTasks) { if (task.Number != progress.Number) { continue; } progress.Info = task; FlagTaskSet.Add(progress); break; } } //Add any new tasks which may have been added foreach (var kill in Info.KillTasks) { if (KillTaskCount.Any(x => x.MonsterID == kill.Monster.Index)) { continue; } KillTaskCount.Add(new QuestKillTaskProgress { MonsterID = kill.Monster.Index, Info = kill }); } foreach (var item in Info.ItemTasks) { if (ItemTaskCount.Any(x => x.ItemID == item.Item.Index)) { continue; } ItemTaskCount.Add(new QuestItemTaskProgress { ItemID = item.Item.Index, Info = item }); } foreach (var flag in Info.FlagTasks) { if (FlagTaskSet.Any(x => x.Number == flag.Number)) { continue; } FlagTaskSet.Add(new QuestFlagTaskProgress { Number = flag.Number, Info = flag }); } } }