コード例 #1
0
        public override SubPacket CreateScriptBindPacket()
        {
            List <LuaParam> lParams;

            lParams = LuaUtils.CreateLuaParamList("/System/Debug.prog", false, false, false, false, true, 0xC51F, true, true);
            return(ActorInstantiatePacket.BuildPacket(actorId, actorName, className, lParams));
        }
コード例 #2
0
        public override SubPacket CreateScriptBindPacket()
        {
            List <LuaParam> lParams;

            lParams = LuaUtils.CreateLuaParamList("/World/WorldMaster_event", false, false, false, false, false, null);
            return(ActorInstantiatePacket.BuildPacket(actorId, actorName, className, lParams));
        }
コード例 #3
0
        public override SubPacket CreateScriptBindPacket()
        {
            List <LuaParam> lParams;

            lParams = LuaUtils.CreateLuaParamList(classPath, false, true, zoneName, "/Area/Zone/ZoneDefault", -1, (byte)1, true, false, false, false, false, false, false, false);
            return(ActorInstantiatePacket.BuildPacket(actorId, actorName, "ZoneDefault", lParams));
        }
コード例 #4
0
        public override SubPacket CreateScriptBindPacket()
        {
            bool isEntranceDesion = false;

            List <LuaParam> lParams;

            lParams = LuaUtils.CreateLuaParamList(classPath, false, true, zoneName, "", -1, canRideChocobo ? (byte)1 : (byte)0, canStealth, isInn, false, false, false, true, isInstanceRaid, isEntranceDesion);
            return(ActorInstantiatePacket.BuildPacket(actorId, actorName, className, lParams));
        }
コード例 #5
0
        public override SubPacket CreateScriptBindPacket()
        {
            List <LuaParam> lParams;

            string path = className;

            string realClassName = className.Substring(className.LastIndexOf("/") + 1);

            lParams = LuaUtils.CreateLuaParamList(classPath, false, true, zoneName, privateAreaName, privateAreaType, canRideChocobo ? (byte)1 : (byte)0, canStealth, isInn, false, false, false, false, false, false);
            ActorInstantiatePacket.BuildPacket(actorId, actorName, realClassName, lParams).DebugPrintSubPacket();
            return(ActorInstantiatePacket.BuildPacket(actorId, actorName, realClassName, lParams));
        }
コード例 #6
0
        public List <LuaParam> CallLuaFunctionForReturn(Player player, Actor target, string funcName, bool optional, params object[] args)
        {
            //Need a seperate case for NPCs cause that child/parent thing.
            if (target is Npc)
            {
                return(CallLuaFunctionNpcForReturn(player, (Npc)target, funcName, optional, args));
            }

            object[] args2 = new object[args.Length + (player == null ? 1 : 2)];
            Array.Copy(args, 0, args2, (player == null ? 1 : 2), args.Length);
            if (player != null)
            {
                args2[0] = player;
                args2[1] = target;
            }
            else
            {
                args2[0] = target;
            }

            string    luaPath = GetScriptPath(target);
            LuaScript script  = LoadScript(luaPath);

            if (script != null)
            {
                if (!script.Globals.Get(funcName).IsNil())
                {
                    //Run Script
                    DynValue        result  = script.Call(script.Globals[funcName], args2);
                    List <LuaParam> lparams = LuaUtils.CreateLuaParamList(result);
                    return(lparams);
                }
                else
                {
                    if (!optional)
                    {
                        SendError(player, String.Format("Could not find function '{0}' for actor {1}.", funcName, target.GetName()));
                    }
                }
            }
            else
            {
                if (!optional)
                {
                    SendError(player, String.Format("Could not find script for actor {0}.", target.GetName()));
                }
            }
            return(null);
        }
コード例 #7
0
        public List <LuaParam> CallLuaFunctionForReturn(string path, string funcName, bool optional, params object[] args)
        {
            string    luaPath = path;
            LuaScript script  = LoadScript(luaPath);

            if (script != null)
            {
                if (!script.Globals.Get(funcName).IsNil())
                {
                    //Run Script
                    DynValue        result  = script.Call(script.Globals[funcName], args);
                    List <LuaParam> lparams = LuaUtils.CreateLuaParamList(result);
                    return(lparams);
                }
            }
            return(null);
        }
コード例 #8
0
 private List <LuaParam> CallLuaScript(string funcName, params object[] args)
 {
     if (directorScript != null)
     {
         if (!directorScript.Globals.Get(funcName).IsNil())
         {
             DynValue        result  = directorScript.Call(directorScript.Globals[funcName], args);
             List <LuaParam> lparams = LuaUtils.CreateLuaParamList(result);
             return(lparams);
         }
         else
         {
             Program.Log.Error("Could not find script for director {0}.", GetName());
         }
     }
     return(null);
 }
コード例 #9
0
        // actorClassId, [], [], numBattleCommon, [battleCommon], numEventCommon, [eventCommon], args for either initForBattle/initForEvent
        public override SubPacket CreateScriptBindPacket(Player player)
        {
            List <LuaParam> lParams;

            lParams = LuaEngine.GetInstance().CallLuaFunctionForReturn(player, this, "init", false);

            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)
            {
                string classPathFake = "/Chara/Npc/Populace/PopulaceStandard";
                string classNameFake = "PopulaceStandard";
                lParams  = LuaUtils.CreateLuaParamList(classPathFake, false, false, false, false, false, 0xF47F6, false, false, 0, 0);
                isStatic = true;
                //ActorInstantiatePacket.BuildPacket(actorId, actorName, classNameFake, lParams).DebugPrintSubPacket();
                return(ActorInstantiatePacket.BuildPacket(actorId, actorName, classNameFake, lParams));
            }
            else
            {
                lParams.Insert(0, new LuaParam(2, classPath));
                lParams.Insert(1, new LuaParam(4, 4));
                lParams.Insert(2, new LuaParam(4, 4));
                lParams.Insert(3, new LuaParam(4, 4));
                lParams.Insert(4, new LuaParam(4, 4));
                lParams.Insert(5, new LuaParam(4, 4));
                lParams.Insert(6, new LuaParam(0, (int)actorClassId));
            }

            //ActorInstantiatePacket.BuildPacket(actorId, actorName, className, lParams).DebugPrintSubPacket();
            return(ActorInstantiatePacket.BuildPacket(actorId, actorName, className, lParams));
        }
コード例 #10
0
        private List <LuaParam> CallLuaFunctionNpcForReturn(Player player, Npc target, string funcName, bool optional, params object[] args)
        {
            object[] args2 = new object[args.Length + (player == null ? 1 : 2)];
            Array.Copy(args, 0, args2, (player == null ? 1 : 2), args.Length);
            if (player != null)
            {
                args2[0] = player;
                args2[1] = target;
            }
            else
            {
                args2[0] = target;
            }

            LuaScript parent = null, child = null;

            if (File.Exists("./scripts/base/" + target.classPath + ".lua"))
            {
                parent = LuaEngine.LoadScript("./scripts/base/" + target.classPath + ".lua");
            }

            Area area = target.zone;

            if (area is PrivateArea)
            {
                if (File.Exists(String.Format("./scripts/unique/{0}/privatearea/{1}_{2}/{3}/{4}.lua", area.zoneName, ((PrivateArea)area).GetPrivateAreaName(), ((PrivateArea)area).GetPrivateAreaType(), target.className, target.GetUniqueId())))
                {
                    child = LuaEngine.LoadScript(String.Format("./scripts/unique/{0}/privatearea/{1}_{2}/{3}/{4}.lua", area.zoneName, ((PrivateArea)area).GetPrivateAreaName(), ((PrivateArea)area).GetPrivateAreaType(), target.className, target.GetUniqueId()));
                }
            }
            else
            {
                if (File.Exists(String.Format("./scripts/unique/{0}/{1}/{2}.lua", area.zoneName, target.className, target.GetUniqueId())))
                {
                    child = LuaEngine.LoadScript(String.Format("./scripts/unique/{0}/{1}/{2}.lua", area.zoneName, target.className, target.GetUniqueId()));
                }
            }

            if (parent == null && child == null)
            {
                LuaEngine.SendError(player, String.Format("ERROR: Could not find script for actor {0}.", target.GetName()));
            }

            //Run Script
            DynValue result;

            if (child != null && child.Globals[funcName] != null)
            {
                result = child.Call(child.Globals[funcName], args2);
            }
            else if (parent != null && parent.Globals[funcName] != null)
            {
                result = parent.Call(parent.Globals[funcName], args2);
            }
            else
            {
                return(null);
            }

            List <LuaParam> lparams = LuaUtils.CreateLuaParamList(result);

            return(lparams);
        }