From 0a948404193e5f0dfbc5ce456d2a1bcfb4f98f94 Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Mon, 20 Mar 2017 21:51:43 -0400 Subject: [PATCH] Checks and fixes for lua. --- FFXIVClassic Map Server/actors/Actor.cs | 12 ++++++++++++ FFXIVClassic Map Server/actors/chara/npc/Npc.cs | 15 +++++++++------ .../actors/chara/player/Player.cs | 2 +- FFXIVClassic Map Server/lua/LuaEngine.cs | 11 ++++++++--- FFXIVClassic Map Server/lua/LuaUtils.cs | 3 +++ 5 files changed, 33 insertions(+), 10 deletions(-) diff --git a/FFXIVClassic Map Server/actors/Actor.cs b/FFXIVClassic Map Server/actors/Actor.cs index 085fdc65..20882e5d 100644 --- a/FFXIVClassic Map Server/actors/Actor.cs +++ b/FFXIVClassic Map Server/actors/Actor.cs @@ -60,6 +60,18 @@ namespace FFXIVClassic_Map_Server.Actors this.moveSpeeds[3] = SetActorSpeedPacket.DEFAULT_ACTIVE; } + public void SetPushCircleRange(string triggerName, float size) + { + if (eventConditions == null || eventConditions.pushWithCircleEventConditions == null) + return; + + foreach (EventList.PushCircleEventCondition condition in eventConditions.pushWithCircleEventConditions) + { + if (condition.conditionName.Equals(triggerName)) + condition.radius = size; + } + } + public SubPacket CreateAddActorPacket(uint playerActorId, byte val) { return AddActorPacket.BuildPacket(actorId, playerActorId, val); diff --git a/FFXIVClassic Map Server/actors/chara/npc/Npc.cs b/FFXIVClassic Map Server/actors/chara/npc/Npc.cs index 9f0fbede..a63591cc 100644 --- a/FFXIVClassic Map Server/actors/chara/npc/Npc.cs +++ b/FFXIVClassic Map Server/actors/chara/npc/Npc.cs @@ -63,12 +63,6 @@ namespace FFXIVClassic_Map_Server.Actors for (int i = 0; i < 32; i++ ) charaWork.property[i] = (byte)(((int)actorClass.propertyFlags >> i) & 1); - if (className.Equals("JellyfishScenarioLimsaLv00")) - { - charaWork.property[2] = 1; - npcWork.hateType = 1; - } - npcWork.pushCommand = actorClass.pushCommand; npcWork.pushCommandSub = actorClass.pushCommandSub; npcWork.pushCommandPriority = actorClass.pushCommandPriority; @@ -99,6 +93,11 @@ namespace FFXIVClassic_Map_Server.Actors if (lParams != null && lParams.Count >= 3 && lParams[2].typeID == 0 && (int)lParams[2].value == 0) isStatic = true; + else + { + charaWork.property[2] = 1; + npcWork.hateType = 1; + } if (lParams == null) { @@ -140,6 +139,10 @@ namespace FFXIVClassic_Map_Server.Actors { subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, 0xB09, 0x1af)); } + else if (uniqueIdentifier.Equals("closed_gridania_gate")) + { + subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, 0xB79, 0x141)); + } else if (uniqueIdentifier.Equals("uldah_mapshipport_1")) { subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, 0xdc5, 0x1af)); diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index 1f1e914f..c1a0ca26 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -1271,7 +1271,7 @@ namespace FFXIVClassic_Map_Server.Actors public void SendInstanceUpdate() { - Server.GetWorldManager().SeamlessCheck(this); + //Server.GetWorldManager().SeamlessCheck(this); //Update Instance List aroundMe = new List(); diff --git a/FFXIVClassic Map Server/lua/LuaEngine.cs b/FFXIVClassic Map Server/lua/LuaEngine.cs index bfd955ee..f8b0fabb 100644 --- a/FFXIVClassic Map Server/lua/LuaEngine.cs +++ b/FFXIVClassic Map Server/lua/LuaEngine.cs @@ -147,6 +147,11 @@ namespace FFXIVClassic_Map_Server.lua private List CallLuaFunctionNpcForReturn(Player player, Npc target, string funcName, params object[] args) { + object[] args2 = new object[args.Length + 2]; + Array.Copy(args, 0, args2, 2, args.Length); + args2[0] = player; + args2[1] = target; + LuaScript parent = null, child = null; if (File.Exists("./scripts/base/" + target.classPath + ".lua")) @@ -173,9 +178,9 @@ namespace FFXIVClassic_Map_Server.lua DynValue result; if (child != null && child.Globals[funcName] != null) - result = child.Call(child.Globals[funcName], this); + result = child.Call(child.Globals[funcName], args2); else if (parent != null && parent.Globals[funcName] != null) - result = parent.Call(parent.Globals[funcName], this); + result = parent.Call(parent.Globals[funcName], args2); else return null; @@ -218,7 +223,7 @@ namespace FFXIVClassic_Map_Server.lua if (child != null && !child.Globals.Get(funcName).IsNil()) coroutine = child.CreateCoroutine(child.Globals[funcName]).Coroutine; - else if (parent.Globals.Get(funcName) != null && !parent.Globals.Get(funcName).IsNil()) + else if (parent != null && parent.Globals.Get(funcName) != null && !parent.Globals.Get(funcName).IsNil()) coroutine = parent.CreateCoroutine(parent.Globals[funcName]).Coroutine; if (coroutine != null) diff --git a/FFXIVClassic Map Server/lua/LuaUtils.cs b/FFXIVClassic Map Server/lua/LuaUtils.cs index 84a340ab..a0eb86a2 100644 --- a/FFXIVClassic Map Server/lua/LuaUtils.cs +++ b/FFXIVClassic Map Server/lua/LuaUtils.cs @@ -253,6 +253,9 @@ namespace FFXIVClassic_Map_Server { List luaParams = new List(); + if (fromScript == null) + return luaParams; + if (fromScript.Type == DataType.Tuple) { foreach (DynValue d in fromScript.Tuple)