public void SendCompleted() { var completedQuests = CompletedQuests.Values.ToArray(); if (completedQuests.Length <= 200) { Owner.SendPacket(new SCCompletedQuestsPacket(completedQuests)); return; } for (var i = 0; i < completedQuests.Length; i += 20) { var size = completedQuests.Length - i >= 200 ? 200 : completedQuests.Length - i; var result = new CompletedQuest[size]; Array.Copy(completedQuests, i, result, 0, size); Owner.SendPacket(new SCCompletedQuestsPacket(result)); } }
public override void Read(PacketStream stream) { var id = stream.ReadUInt32(); _log.Debug("SaveTutorial, Id: {0}", id); var completeId = (ushort)(id / 64); var quest = Connection.ActiveChar.Quests.GetCompletedQuest(completeId); if (quest == null) { quest = new CompletedQuest(completeId); Connection.ActiveChar.Quests.AddCompletedQuest(quest); } quest.Body.Set((int)id - completeId * 64, true); var body = new byte[8]; quest.Body.CopyTo(body, 0); Connection.SendPacket(new SCTutorialSavedPacket(id, body)); }
public void Load(MySqlConnection connection) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM completed_quests WHERE `owner` = @owner"; command.Parameters.AddWithValue("@owner", Owner.Id); using (var reader = command.ExecuteReader()) { while (reader.Read()) { var quest = new CompletedQuest(); quest.Id = reader.GetUInt16("id"); quest.Body = new BitArray((byte[])reader.GetValue("data")); CompletedQuests.Add(quest.Id, quest); } } } using (var command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM quests WHERE `owner` = @owner"; command.Parameters.AddWithValue("@owner", Owner.Id); using (var reader = command.ExecuteReader()) { while (reader.Read()) { var quest = new Quest(); quest.Id = reader.GetUInt32("id"); quest.TemplateId = reader.GetUInt32("template_id"); quest.Status = (QuestStatus)reader.GetByte("status"); quest.ReadData((byte[])reader.GetValue("data")); quest.Owner = Owner; quest.Template = QuestManager.Instance.GetTemplate(quest.TemplateId); quest.RecalcObjectives(false); Quests.Add(quest.TemplateId, quest); } } } }
public void AddCompletedQuest(CompletedQuest quest) { CompletedQuests.Add(quest.Id, quest); }