1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-25 06:07:46 +00:00

Fixed quest loading

This commit is contained in:
Filip Maj 2022-02-17 21:30:06 -05:00
parent 02cb0a3f43
commit a2c4d077e9
3 changed files with 49 additions and 16 deletions

View file

@ -1436,7 +1436,7 @@ namespace Meteor.Map.Actors
playerWork.questScenario[freeSlot] = instance.Id; playerWork.questScenario[freeSlot] = instance.Id;
questScenario[freeSlot] = instance; questScenario[freeSlot] = instance;
Database.SaveQuest(this, questScenario[freeSlot]); Database.SaveQuest(this, questScenario[freeSlot], freeSlot);
SendQuestClientUpdate(freeSlot); SendQuestClientUpdate(freeSlot);
if (!isSilent) if (!isSilent)
@ -1458,7 +1458,7 @@ namespace Meteor.Map.Actors
{ {
questScenario[i] = newQuestInstance; questScenario[i] = newQuestInstance;
playerWork.questScenario[i] = questScenario[i].Id; playerWork.questScenario[i] = questScenario[i].Id;
Database.SaveQuest(this, questScenario[i]); Database.SaveQuest(this, questScenario[i], i);
SendQuestClientUpdate(i); SendQuestClientUpdate(i);
break; break;
} }
@ -1557,7 +1557,7 @@ namespace Meteor.Map.Actors
if (activeQuest == null) if (activeQuest == null)
questStateManager.ForceAddActiveQuest(questScenario[freeSlot]); questStateManager.ForceAddActiveQuest(questScenario[freeSlot]);
Database.SaveQuest(this, questScenario[freeSlot]); Database.SaveQuest(this, questScenario[freeSlot], freeSlot);
SendQuestClientUpdate(freeSlot); SendQuestClientUpdate(freeSlot);
if (!isSilent) if (!isSilent)

View file

@ -161,7 +161,7 @@ namespace Meteor.Map.Actors.QuestNS
public void Save() public void Save()
{ {
Database.SaveQuest(owner, parent); Database.UpdateQuest(owner, parent);
} }
} }
} }

View file

@ -527,18 +527,6 @@ namespace Meteor.Map
} }
} }
public static void SaveQuest(Player player, Quest quest)
{
int slot = player.GetQuestSlot(quest.Id);
if (slot == -1)
{
Program.Log.Error("Tried saving quest player didn't have: Player: {0:x}, QuestId: {0:x}", player.Id, quest.Id);
return;
}
else
SaveQuest(player, quest, slot);
}
public static void SaveQuest(Player player, Quest quest, int slot) public static void SaveQuest(Player player, Quest quest, int slot)
{ {
string query; string query;
@ -588,6 +576,51 @@ namespace Meteor.Map
} }
} }
public static void UpdateQuest(Player player, Quest quest)
{
string query;
MySqlCommand cmd;
QuestData qData = quest.GetData();
using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD)))
{
try
{
conn.Open();
query = @"
UPDATE characters_quest_scenario
SET sequence = @sequence, flags = @flags, counter1 = @counter1, counter2 = @counter2, counter3 = @counter3
WHERE characterId = @charaId and questId = @questId
";
cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@charaId", player.Id);
cmd.Parameters.AddWithValue("@questId", 0xFFFFF & quest.Id);
cmd.Parameters.AddWithValue("@sequence", quest.GetSequence());
if (qData != null)
{
cmd.Parameters.AddWithValue("@flags", qData.GetFlags());
cmd.Parameters.AddWithValue("@counter1", qData.GetCounter(1));
cmd.Parameters.AddWithValue("@counter2", qData.GetCounter(2));
cmd.Parameters.AddWithValue("@counter3", qData.GetCounter(3));
}
cmd.ExecuteNonQuery();
}
catch (MySqlException e)
{
Program.Log.Error(e.ToString());
}
finally
{
conn.Dispose();
}
}
}
public static void MarkGuildleve(Player player, uint glId, bool isAbandoned, bool isCompleted) public static void MarkGuildleve(Player player, uint glId, bool isAbandoned, bool isCompleted)
{ {
string query; string query;