public static void SetQuestStepStatus(ActorPC pc, uint id, uint step, byte status) { SagaDB.Quest.QuestType type; if (id == 0 || step == 0) { return; } SagaDB.Quest.Quest quest; if (pc.QuestTable.ContainsKey(id)) { quest = pc.QuestTable[id]; type = SagaDB.Quest.QuestType.OfficialQuest; } else { if (pc.PersonalQuestTable.ContainsKey(id)) { quest = pc.PersonalQuestTable[id]; type = SagaDB.Quest.QuestType.PersonalQuest; } else { return; } } if (quest.Steps.ContainsKey(step) == false) { return; } SagaDB.Quest.Step step2 = quest.Steps[step]; step2.Status = status; if (status == 2 && step2.nextStep != 0) { quest.Steps[step2.nextStep].Status = 1; } MapServer.charDB.UpdateQuest(pc, type, quest); Packets.Server.UpdateQuest p = new SagaMap.Packets.Server.UpdateQuest(); p.SetQuestID(id); p.SetStep(step2); ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)pc.e; eh.C.netIO.SendPacket(p, eh.C.SessionID); }
public static void SetQuestStepStatus(ActorPC pc, uint id, uint step, byte status) { SagaDB.Quest.QuestType type; if (id == 0 || step == 0) return; SagaDB.Quest.Quest quest; if (pc.QuestTable.ContainsKey(id)) { quest = pc.QuestTable[id]; type = SagaDB.Quest.QuestType.OfficialQuest; } else { if (pc.PersonalQuestTable.ContainsKey(id)) { quest = pc.PersonalQuestTable[id]; type = SagaDB.Quest.QuestType.PersonalQuest; } else return; } if (quest.Steps.ContainsKey(step) == false) return; SagaDB.Quest.Step step2 = quest.Steps[step]; step2.Status = status; if (status == 2 && step2.nextStep != 0) { quest.Steps[step2.nextStep].Status = 1; } MapServer.charDB.UpdateQuest(pc, type, quest); Packets.Server.UpdateQuest p = new SagaMap.Packets.Server.UpdateQuest(); p.SetQuestID(id); p.SetStep(step2); ActorEventHandlers.PC_EventHandler eh = (SagaMap.ActorEventHandlers.PC_EventHandler)pc.e; eh.C.netIO.SendPacket(p, eh.C.SessionID); }