Abandoning/Completing GLs now marks them correctly in the Journal.

This commit is contained in:
Filip Maj 2017-06-25 23:02:20 -04:00
parent 573b9a7202
commit b5db036d71
3 changed files with 64 additions and 1 deletions

View File

@ -432,6 +432,42 @@ namespace FFXIVClassic_Map_Server
} }
} }
public static void MarkGuildleve(Player player, uint glId, bool isAbandoned, bool isCompleted)
{
string query;
MySqlCommand cmd;
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_guildleve_regional
SET abandoned = @abandoned, completed = @completed
WHERE characterId = @charaId and guildleveId = @guildleveId
";
cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@charaId", player.actorId);
cmd.Parameters.AddWithValue("@guildleveId", glId);
cmd.Parameters.AddWithValue("@abandoned", isAbandoned);
cmd.Parameters.AddWithValue("@completed", isCompleted);
cmd.ExecuteNonQuery();
}
catch (MySqlException e)
{
Program.Log.Error(e.ToString());
}
finally
{
conn.Dispose();
}
}
}
public static void SaveGuildleve(Player player, uint glId, int slot) public static void SaveGuildleve(Player player, uint glId, int slot)
{ {
string query; string query;

View File

@ -1141,6 +1141,23 @@ namespace FFXIVClassic_Map_Server.Actors
SendGuildleveClientUpdate(freeSlot); SendGuildleveClientUpdate(freeSlot);
} }
public void MarkGuildleve(uint id, bool abandoned, bool completed)
{
if (HasGuildleve(id))
{
for (int i = 0; i < questGuildleve.Length; i++)
{
if (questGuildleve[i] != null && questGuildleve[i] == id)
{
work.guildleveChecked[i] = abandoned;
work.guildleveDone[i] = completed;
Database.MarkGuildleve(this, id, abandoned, completed);
SendGuildleveClientUpdate(i);
}
}
}
}
public void RemoveGuildleve(uint id) public void RemoveGuildleve(uint id)
{ {
if (HasGuildleve(id)) if (HasGuildleve(id))
@ -1409,6 +1426,14 @@ namespace FFXIVClassic_Map_Server.Actors
QueuePackets(propPacketUtil.Done()); QueuePackets(propPacketUtil.Done());
} }
private void SendGuildleveMarkClientUpdate(int slot)
{
ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("work/guildleve", this, actorId);
propPacketUtil.AddProperty(String.Format("work.guildleveDone[{0}]", slot));
propPacketUtil.AddProperty(String.Format("work.guildleveChecked[{0}]", slot));
QueuePackets(propPacketUtil.Done());
}
public void SetLoginDirector(Director director) public void SetLoginDirector(Director director)
{ {
if (ownedDirectors.Contains(director)) if (ownedDirectors.Contains(director))

View File

@ -94,6 +94,7 @@ namespace FFXIVClassic_Map_Server.actors.director
foreach (Actor a in GetPlayerMembers()) foreach (Actor a in GetPlayerMembers())
{ {
Player player = (Player)a; Player player = (Player)a;
player.MarkGuildleve(guildleveId, false, true);
player.PlayAnimation(0x02000002); player.PlayAnimation(0x02000002);
player.ChangeMusic(81); player.ChangeMusic(81);
player.SendGameMessage(Server.GetWorldManager().GetActor(), 50023, 0x20, (object)(int)guildleveId); player.SendGameMessage(Server.GetWorldManager().GetActor(), 50023, 0x20, (object)(int)guildleveId);
@ -129,6 +130,7 @@ namespace FFXIVClassic_Map_Server.actors.director
{ {
Player player = (Player)p; Player player = (Player)p;
player.SendGameMessage(Server.GetWorldManager().GetActor(), 50147, 0x20, (object)guildleveId); player.SendGameMessage(Server.GetWorldManager().GetActor(), 50147, 0x20, (object)guildleveId);
player.MarkGuildleve(guildleveId, true, false);
} }
EndGuildleve(false); EndGuildleve(false);