diff --git a/FFXIVClassic Map Server/Database.cs b/FFXIVClassic Map Server/Database.cs index 35acd417..a42e1704 100644 --- a/FFXIVClassic Map Server/Database.cs +++ b/FFXIVClassic Map Server/Database.cs @@ -354,6 +354,31 @@ namespace FFXIVClassic_Map_Server } } } + + public static bool IsQuestCompleted(Player player, string questId) + { + bool isCompleted = false; + 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(); + MySqlCommand cmd = new MySqlCommand("SELECT * FROM characters_quest_completed WHERE characterId = @charaId and questId = @questId", conn); + cmd.Parameters.AddWithValue("@charaId", player.actorId); + cmd.Parameters.AddWithValue("@questId", questId); + isCompleted = (int)cmd.ExecuteScalar() > 0; + } + catch (MySqlException e) + { + Program.Log.Error(e.ToString()); + } + finally + { + conn.Dispose(); + } + } + return isCompleted; + } public static void LoadPlayerCharacter(Player player) { diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index d8849573..0dfaa1de 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -1122,6 +1122,32 @@ namespace FFXIVClassic_Map_Server.Actors } } + public bool CanAcceptQuest(string name) + { + if (!IsQuestCompleted(name) && !HasQuest(name)) + return true; + else + return false; + } + + public bool CanAcceptQuest(uint id) + { + Actor actor = Server.GetStaticActors((0xA0F00000 | id)); + return CanAcceptQuest(actor.actorName); + } + + public bool IsQuestCompleted(string id) + { + bool isCompleted = Database.IsQuestCompleted(this, id); + return isCompleted; + } + + public bool IsQuestCompleted(uint id) + { + Actor actor = Server.GetStaticActors((0xA0F00000 | id)); + return IsQuestCompleted(actor.actorName); + } + public Quest GetQuest(uint id) { for (int i = 0; i < questScenario.Length; i++)