Beispiel #1
0
        public void LoadScriptInterpreter(GameClient client)
        {
            var parser   = new YamlMenuParser();
            var yamlPath = ServerContext.StoragePath + $@"\Scripts\Menus\{Mundane.Template.Name}.yaml";

            if (File.Exists(yamlPath))
            {
                if (client.MenuInterpter == null)
                {
                    client.MenuInterpter = parser.CreateInterpreterFromFile(yamlPath);

                    client.MenuInterpter.Client = client;

                    client.MenuInterpter.OnMovedToNextStep += MenuInterpreter_OnMovedToNextStep;

                    client.MenuInterpter.RegisterCheckpointHandler("QuestCompleted", (_client, res) =>
                    {
                        if (_client.Aisling.HasQuest(res.Value))
                        {
                            res.Result = _client.Aisling.HasCompletedQuest(res.Value);
                        }
                    });

                    client.MenuInterpter.RegisterCheckpointHandler("HasAForm",
                                                                   (_client, res) => { res.Result = _client.Aisling.AnimalForm != AnimalForm.None; });

                    client.MenuInterpter.RegisterCheckpointHandler("LearnForm1",
                                                                   (_client, res) => { _client.Aisling.AnimalForm = AnimalForm.Draco; });

                    client.MenuInterpter.RegisterCheckpointHandler("LearnForm2",
                                                                   (_client, res) => { _client.Aisling.AnimalForm = AnimalForm.Kelberoth; });

                    client.MenuInterpter.RegisterCheckpointHandler("LearnForm3",
                                                                   (_client, res) => { _client.Aisling.AnimalForm = AnimalForm.WhiteBat; });

                    client.MenuInterpter.RegisterCheckpointHandler("LearnForm4",
                                                                   (_client, res) => { _client.Aisling.AnimalForm = AnimalForm.Scorpion; });

                    client.MenuInterpter.RegisterCheckpointHandler("HasKilled", (_client, res) =>
                    {
                        if (_client.Aisling.HasQuest(quest.Name))
                        {
                            if (_client.Aisling.HasKilled(res.Value, res.Amount))
                            {
                                if (!_client.Aisling.HasCompletedQuest(quest.Name))
                                {
                                    _client.Aisling.CompleteQuest(quest.Name);
                                    quest.OnCompleted(_client.Aisling);
                                }

                                res.Result = true;
                            }
                        }
                    });

                    ServerContext.Logger($"Script Interpreter Created for Mundane: {Mundane.Template.Name}");
                }
            }
        }
Beispiel #2
0
        public void LoadScriptInterpreter(GameClient client)
        {
            var parser   = new YamlMenuParser();
            var yamlPath = ServerContextBase.StoragePath + $@"\Scripts\Menus\{Mundane.Template.Name}.yaml";

            if (File.Exists(yamlPath))
            {
                if (client.MenuInterpter == null)
                {
                    client.MenuInterpter                    = parser.CreateInterpreterFromFile(yamlPath);
                    client.MenuInterpter.Client             = client;
                    client.MenuInterpter.OnMovedToNextStep += MenuInterpreter_OnMovedToNextStep;
                }
            }
        }
Beispiel #3
0
        public Interpreter LoadScriptInterpreter(GameClient client, OptionsDataItem item)
        {
            var parser   = new YamlMenuParser();
            var yamlPath = ServerContext.StoragePath + $@"\Interactive\Menus\{GetType().Name}\{item.Text}.yaml";

            var globals = new ScriptGlobals
            {
                actor  = Mundane,
                client = client,
                user   = client.Aisling
            };

            if (File.Exists(yamlPath))
            {
                if (client.MenuInterpter == null)
                {
                    client.MenuInterpter = parser.CreateInterpreterFromFile(yamlPath);

                    client.MenuInterpter.Client = client;

                    client.MenuInterpter.OnMovedToNextStep += MenuInterpreter_OnMovedToNextStep;

                    client.MenuInterpter.RegisterCheckpointHandler($"On{item.Text}", (c, res) => { });

                    client.MenuInterpter.RegisterCheckpointHandler("Call", async(c, res) =>
                    {
                        try
                        {
                            await CSharpScript.EvaluateAsync <bool>(res.Value, GameServer.ScriptOptions, globals);
                            res.Result = globals.result;
                            reset      = true;
                        }
                        catch (Exception e)
                        {
                            ServerContext.Logger($"Script Error: {res.Value}.");
                            ServerContext.Error(e);

                            res.Result = false;
                        }
                    });
                }
            }

            return(client.MenuInterpter);
        }
        public void LoadScriptInterpreter(GameClient client)
        {
            var parser   = new YamlMenuParser();
            var yamlPath = ServerContext.StoragePath + string.Format(@"\Scripts\Menus\{0}.yaml", Mundane.Template.Name);

            if (File.Exists(yamlPath))
            {
                if (client.MenuInterpter == null)
                {
                    client.MenuInterpter        = parser.CreateInterpreterFromFile(yamlPath);
                    client.MenuInterpter.Client = client;

                    client.MenuInterpter.OnMovedToNextStep += MenuInterpreter_OnMovedToNextStep;

                    ServerContext.Log("Script Interpreter Created for Mundane: {0}", Mundane.Template.Name);
                }
            }
        }
Beispiel #5
0
        public void LoadScriptInterpreter(GameClient client)
        {
            var parser   = new YamlMenuParser();
            var yamlPath = ServerContext.StoragePath + string.Format(@"\Scripts\Menus\{0}.yaml", Mundane.Template.Name);

            if (File.Exists(yamlPath))
            {
                if (client.MenuInterpter == null)
                {
                    client.MenuInterpter = parser.CreateInterpreterFromFile(yamlPath);

                    client.MenuInterpter.Client = client;

                    client.MenuInterpter.OnMovedToNextStep += MenuInterpreter_OnMovedToNextStep;

                    client.MenuInterpter.RegisterCheckpointHandler("QuestCompleted", (_client, res) =>
                    {
                        if (_client.Aisling.HasQuest(res.Value))
                        {
                            res.Result = _client.Aisling.HasCompletedQuest(res.Value);
                        }
                    });

                    client.MenuInterpter.RegisterCheckpointHandler("HasKilled", (_client, res) =>
                    {
                        if (_client.Aisling.HasQuest(quest.Name))
                        {
                            if (_client.Aisling.HasKilled(res.Value, res.Amount))
                            {
                                if (!_client.Aisling.HasCompletedQuest(quest.Name))
                                {
                                    _client.Aisling.CompleteQuest(quest.Name);
                                    quest.OnCompleted(_client.Aisling);
                                }

                                res.Result = true;
                            }
                        }
                    });

                    ServerContext.Log("Script Interpreter Created for Mundane: {0}", Mundane.Template.Name);
                }
            }
        }
        public void LoadScriptInterpreter(GameClient client,
                                          string name,
                                          Interpreter.MovedToNextStepHandler callbackHandler)
        {
            var parser   = new YamlMenuParser();
            var yamlPath = ServerContext.StoragePath + $@"\Scripts\Menus\{name}.yaml";

            if (!File.Exists(yamlPath))
            {
                return;
            }
            if (client.MenuInterpter != null)
            {
                return;
            }

            client.MenuInterpter                    = parser.CreateInterpreterFromFile(yamlPath);
            client.MenuInterpter.Client             = client;
            client.MenuInterpter.OnMovedToNextStep += callbackHandler;
        }
Beispiel #7
0
        private void SetupInterpreter(GameClient client)
        {
            YamlMenuParser parser = new YamlMenuParser();

            //Client should only be interacting with one menu at a time, so let's check if it's null or finished.
            //if so, give them a new interpreter.
            if (client.MenuInterpter == null)
            {
                var yamlPath = ServerContext.StoragePath + @"\Scripts\Menus\TestMenu.yaml";
                client.MenuInterpter = parser.CreateInterpreterFromFile(yamlPath);
            }

            //register checkpoint function
            client.MenuInterpter.RegisterCheckpointHandler("HasKilled", (sender, a) =>
            {
                a.Result = client.Aisling.HasKilled(a.Value, a.Amount);
            });


            client.MenuInterpter.RegisterCheckpointHandler("Completed", (sender, a) =>
            {
                a.Result = true;
            });
        }