public static bool AddQuest(Client.GameState h, uint questID) { HeroQuest q = new HeroQuest { Identifier = questID }; return AddQuest(h, q); }
public static void Handle(byte[] Data, Client.GameState Client) { QuestInfoPacket info = new QuestInfoPacket(8); ushort num = BitConverter.ToUInt16(Data, 4); if (num == 3) { MySqlCommand cmd = new MySqlCommand(MySqlCommandType.SELECT); cmd.Select("heroquests").Where("hero", Client.Entity.UID).And("quest", 0xb71b2); PhoenixProject.Database.MySqlReader reader = new PhoenixProject.Database.MySqlReader(cmd); if (Client != null) { info.Type = 3; while (reader.Read()) { info.AddQuest(reader.ReadUInt32("quest"), (QuestCompleteTypes)((ushort)reader.ReadUInt32("completeflag"))); HeroQuest quest2 = new HeroQuest { Identifier = reader.ReadUInt32("quest"), DailyFinishes = reader.ReadUInt32("dailyfinishes"), CompleteFlag = (QuestCompleteTypes)((ushort) reader.ReadUInt32("completeflag")) }; DateTime time3 = new DateTime(0x7b2, 1, 1); quest2.CompleteTime = time3.ToLocalTime().AddSeconds(reader.ReadUInt32("completetime")); // quest2.CompleteTime = new DateTime().FromUnix(Convert.ToUInt32(reader["completetime"])); quest2.Step = reader.ReadUInt32("step"); HeroQuest quest = quest2; Client.Quests.GetOrAdd(quest.Identifier, quest); } reader.Close(); reader.Dispose(); } Client.Send((byte[])info); if (Client != null) { cmd.Select("killtargets").Where("hero", Client.Entity.UID); while (reader.Read()) { QuestQuery query = new QuestQuery { Identifier = reader.ReadUInt32("quest"), Unknown2 = reader.ReadUInt32("count") }; Client.Send((byte[])query); } reader.Close(); reader.Dispose(); } } else { Console.WriteLine("Unhandled QuestInfo (1134) Type "+num+""); } }
public static bool AddQuest(Client.GameState h, HeroQuest q) { if (h.Quests.TryAdd(q.Identifier, q)) { MySqlCommand cmd = new MySqlCommand(MySqlCommandType.INSERT); cmd.Insert("heroquests").Insert("hero", h.Entity.UID).Insert("quest", q.Identifier) .Insert("npc", "0").Insert("flag", (uint)q.CompleteFlag).Insert("step", q.Step) .Insert("time", "0") .Insert("daily", "0").Execute(); QuestInfoPacket info = new QuestInfoPacket(0x10) { Type = 1, QuestIdentifier = q.Identifier, QuestType = QuestCompleteTypes.Accepted }; h.Send((byte[])info); } return false; }