public void StartDirector(bool spawnImmediate, params object[] args)
        {
            object[] args2 = new object[args.Length + 1];
            args2[0] = this;
            Array.Copy(args, 0, args2, 1, args.Length);

            List <LuaParam> lparams = CallLuaScript("init", args2);

            if (lparams != null && lparams.Count >= 1 && lparams[0].value is string)
            {
                classPath = (string)lparams[0].value;
                className = classPath.Substring(classPath.LastIndexOf("/") + 1);
                GenerateActorName((int)directorId);
                isCreated = true;
            }

            if (isCreated && spawnImmediate)
            {
                if (contentGroup != null)
                {
                    contentGroup.Start();
                }

                foreach (Player p in GetPlayerMembers())
                {
                    p.QueuePackets(GetSpawnPackets());
                    p.QueuePackets(GetInitPackets());
                }
            }

            if (this is GuildleveDirector)
            {
                ((GuildleveDirector)this).LoadGuildleve();
            }

            CallLuaScript("main", this, contentGroup);
        }