Fixed work values being totally wrong for guildleves. Added Add/Remove GL command.

This commit is contained in:
Filip Maj 2017-06-25 23:35:55 -04:00
parent b5db036d71
commit fc96dac7c7
5 changed files with 50 additions and 19 deletions

View File

@ -1092,9 +1092,9 @@ namespace FFXIVClassic_Map_Server.Actors
public int GetFreeGuildleveSlot() public int GetFreeGuildleveSlot()
{ {
for (int i = 0; i < questGuildleve.Length; i++) for (int i = 0; i < work.guildleveId.Length; i++)
{ {
if (questGuildleve[i] == 0) if (work.guildleveId[i] == 0)
return i; return i;
} }
@ -1135,8 +1135,7 @@ namespace FFXIVClassic_Map_Server.Actors
if (freeSlot == -1) if (freeSlot == -1)
return; return;
playerWork.questScenario[freeSlot] = id; work.guildleveId[freeSlot] = (ushort)id;
questGuildleve[freeSlot] = id;
Database.SaveGuildleve(this, id, freeSlot); Database.SaveGuildleve(this, id, freeSlot);
SendGuildleveClientUpdate(freeSlot); SendGuildleveClientUpdate(freeSlot);
} }
@ -1145,14 +1144,14 @@ namespace FFXIVClassic_Map_Server.Actors
{ {
if (HasGuildleve(id)) if (HasGuildleve(id))
{ {
for (int i = 0; i < questGuildleve.Length; i++) for (int i = 0; i < work.guildleveId.Length; i++)
{ {
if (questGuildleve[i] != null && questGuildleve[i] == id) if (work.guildleveId[i] == id)
{ {
work.guildleveChecked[i] = abandoned; work.guildleveChecked[i] = completed;
work.guildleveDone[i] = completed; work.guildleveDone[i] = abandoned;
Database.MarkGuildleve(this, id, abandoned, completed); Database.MarkGuildleve(this, id, abandoned, completed);
SendGuildleveClientUpdate(i); SendGuildleveMarkClientUpdate(i);
} }
} }
} }
@ -1162,13 +1161,12 @@ namespace FFXIVClassic_Map_Server.Actors
{ {
if (HasGuildleve(id)) if (HasGuildleve(id))
{ {
for (int i = 0; i < questGuildleve.Length; i++) for (int i = 0; i < work.guildleveId.Length; i++)
{ {
if (questGuildleve[i] != null && questGuildleve[i] == id) if (work.guildleveId[i] == id)
{ {
Database.RemoveGuildleve(this, id); Database.RemoveGuildleve(this, id);
questGuildleve[i] = 0; work.guildleveId[i] = 0;
playerWork.questGuildleve[i] = 0;
SendGuildleveClientUpdate(i); SendGuildleveClientUpdate(i);
break; break;
} }
@ -1351,9 +1349,9 @@ namespace FFXIVClassic_Map_Server.Actors
public bool HasGuildleve(uint id) public bool HasGuildleve(uint id)
{ {
for (int i = 0; i < questGuildleve.Length; i++) for (int i = 0; i < work.guildleveId.Length; i++)
{ {
if (questGuildleve[i] != null && questGuildleve[i] == id) if (work.guildleveId[i] == id)
return true; return true;
} }
@ -1421,8 +1419,8 @@ namespace FFXIVClassic_Map_Server.Actors
private void SendGuildleveClientUpdate(int slot) private void SendGuildleveClientUpdate(int slot)
{ {
ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("playerWork/journal", this, actorId); ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("work/guildleve", this, actorId);
propPacketUtil.AddProperty(String.Format("playerWork.questGuildleve[{0}]", slot)); propPacketUtil.AddProperty(String.Format("work.guildleveId[{0}]", slot));
QueuePackets(propPacketUtil.Done()); QueuePackets(propPacketUtil.Done());
} }

View File

@ -24,6 +24,7 @@ namespace FFXIVClassic_Map_Server.actors.director
public GuildleveWork guildleveWork = new GuildleveWork(); public GuildleveWork guildleveWork = new GuildleveWork();
public bool isEnded = false; public bool isEnded = false;
public uint completionTime = 0;
public GuildleveDirector(uint id, Area zone, string directorPath, uint guildleveId, byte selectedDifficulty, Player guildleveOwner, params object[] args) public GuildleveDirector(uint id, Area zone, string directorPath, uint guildleveId, byte selectedDifficulty, Player guildleveOwner, params object[] args)
: base(id, zone, directorPath, args) : base(id, zone, directorPath, args)
@ -89,12 +90,14 @@ namespace FFXIVClassic_Map_Server.actors.director
return; return;
isEnded = true; isEnded = true;
completionTime = Utils.UnixTimeStampUTC() - guildleveWork.startTime;
if (wasCompleted) if (wasCompleted)
{ {
foreach (Actor a in GetPlayerMembers()) foreach (Actor a in GetPlayerMembers())
{ {
Player player = (Player)a; Player player = (Player)a;
player.MarkGuildleve(guildleveId, false, true); player.MarkGuildleve(guildleveId, true, 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);

View File

@ -20,7 +20,7 @@ function onEventStarted(player, npc, triggerName)
local currentGLDirector = player:GetGuildleveDirector(); local currentGLDirector = player:GetGuildleveDirector();
local glData = currentGLDirector.guildleveData; local glData = currentGLDirector.guildleveData;
callClientFunction(player, "eventGuildleveReward", currentGLDirector.guildleveId, 0x26, 24, 24, 0, 0, 0, 0, 0, 0, 0, 4); callClientFunction(player, "eventGuildleveReward", currentGLDirector.guildleveId, currentGLDirector.completionTime, 24, 24, 0, 0, 0, 0, 0, 0, 0, 4);
local choice = callClientFunction(player, "eventTalkGuildleveWarp", glData.aetheryte, 0); local choice = callClientFunction(player, "eventTalkGuildleveWarp", glData.aetheryte, 0);

View File

@ -0,0 +1,15 @@
require("global");
properties = {
permissions = 0,
parameters = "s",
description = "Adds a guildleve by <id>.",
}
function onTrigger(player, argc, glId)
if player then
player:AddGuildleve(tonumber(glId));
else
print(sender.."unable to add guildleve, ensure player name is valid.");
end;
end;

View File

@ -0,0 +1,15 @@
require("global");
properties = {
permissions = 0,
parameters = "s",
description = "Adds a guildleve by <id>.",
}
function onTrigger(player, argc, glId)
if player then
player:RemoveGuildleve(tonumber(glId));
else
print(sender.."unable to add guildleve, ensure player name is valid.");
end;
end;