diff --git a/FFXIVClassic Map Server/PacketProcessor.cs b/FFXIVClassic Map Server/PacketProcessor.cs index 43ac25c8..11777b0c 100644 --- a/FFXIVClassic Map Server/PacketProcessor.cs +++ b/FFXIVClassic Map Server/PacketProcessor.cs @@ -246,12 +246,8 @@ namespace FFXIVClassic_Map_Server */ Actor ownerActor = Server.GetStaticActors(eventStart.scriptOwnerActorID); - if (ownerActor != null && ownerActor is Command) - { - player.GetActor().currentCommand = eventStart.scriptOwnerActorID; - player.GetActor().currentCommandName = eventStart.triggerName; - } - else + + if (ownerActor != null) { player.GetActor().currentEventOwner = eventStart.scriptOwnerActorID; player.GetActor().currentEventName = eventStart.triggerName; diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index 215da839..9df32c67 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -82,9 +82,6 @@ namespace FFXIVClassic_Map_Server.Actors public uint currentEventOwner = 0; public string currentEventName = ""; - public uint currentCommand = 0; - public string currentCommandName = ""; - public Coroutine currentEventRunning; //Player Info @@ -1137,7 +1134,11 @@ namespace FFXIVClassic_Map_Server.Actors currentEventRunning.Resume(objects.ToArray()); } else - LuaEngine.DoActorOnEventStarted(this, owner, start); + { + currentEventRunning = LuaEngine.DoActorOnEventStarted(this, owner, start); + currentEventRunning.Resume(objects.ToArray()); + } + } public void UpdateEvent(EventUpdatePacket update) @@ -1181,18 +1182,9 @@ namespace FFXIVClassic_Map_Server.Actors currentEventOwner = 0; currentEventName = ""; + currentEventRunning = null; } - - public void EndCommand() - { - SubPacket p = EndEventPacket.BuildPacket(actorId, currentCommand, currentCommandName); - p.DebugPrintSubPacket(); - QueuePacket(p); - - currentCommand = 0; - currentCommandName = ""; - } - + public void SendInstanceUpdate() { diff --git a/FFXIVClassic Map Server/lua/LuaEngine.cs b/FFXIVClassic Map Server/lua/LuaEngine.cs index fa1db54c..2de73e97 100644 --- a/FFXIVClassic Map Server/lua/LuaEngine.cs +++ b/FFXIVClassic Map Server/lua/LuaEngine.cs @@ -54,9 +54,9 @@ namespace FFXIVClassic_Map_Server.lua } return null; - } + } - public static void DoActorOnEventStarted(Player player, Actor target, EventStartPacket eventStart) + public static Coroutine DoActorOnEventStarted(Player player, Actor target, EventStartPacket eventStart) { string luaPath; @@ -76,24 +76,17 @@ namespace FFXIVClassic_Map_Server.lua Script script = LoadScript(luaPath); if (script == null) - return; + return null; - //Have to Do this to combine LuaParams - List objects = new List(); - objects.Add(player); - objects.Add(target); - objects.Add(eventStart.triggerName); - - if (eventStart.luaParams != null) - objects.AddRange(LuaUtils.CreateLuaParamObjectList(eventStart.luaParams)); - - //Run Script if (!script.Globals.Get("onEventStarted").IsNil()) - script.Call(script.Globals["onEventStarted"], objects.ToArray()); + return script.CreateCoroutine(script.Globals["onEventStarted"]).Coroutine; + else + return null; } else { SendError(player, String.Format("ERROR: Could not find script for actor {0}.", target.GetName())); + return null; } } diff --git a/data/scripts/base/chara/npc/populace/shop/PopulaceShopSalesman.lua b/data/scripts/base/chara/npc/populace/shop/PopulaceShopSalesman.lua index 067cf001..31ae2c80 100644 --- a/data/scripts/base/chara/npc/populace/shop/PopulaceShopSalesman.lua +++ b/data/scripts/base/chara/npc/populace/shop/PopulaceShopSalesman.lua @@ -39,7 +39,7 @@ function init(npc) return false, false, 0, 0; end -function onEventStarted(player, npc) +function onEventStarted(player, npc, triggerName) require("/unique/".. npc.zone.zoneName .."/PopulaceShopSalesman/" .. npc:GetUniqueId())