public override void Execute(GameCommandTrigger trigger)
        {
            string[] args = trigger.Get <string[]>("id");

            if (args == null || args.Length <= 1)
            {
                trigger.Session.Send(NoticePacket.Notice("No events provided. Choose 3 events. 1 = OX Quiz \n" +
                                                         "2 = Trap Master \n" +
                                                         "3 = Spring Beach \n" +
                                                         "4 = Crazy Runner \n" +
                                                         "5 = Final Survivor \n" +
                                                         "6 = Ludibrium Escape \n" +
                                                         "7 = Dance Dance Stop \n" +
                                                         "8 = Crazy Runner Shanghai \n" +
                                                         "9 = Hide And Seek \n" +
                                                         "10 = Red Arena \n" +
                                                         "11 = Blood Mine \n" +
                                                         "12 = Treasure Island \n" +
                                                         "13 = Christmas Dance Dance Stop", NoticeType.Chat));
                return;
            }

            GlobalEvent globalEvent = new GlobalEvent();

            byte[] eventIds = Array.ConvertAll(args[1].Split(","), byte.Parse);
            foreach (byte eventId in eventIds)
            {
                if (Enum.IsDefined(typeof(GlobalEventType), eventId))
                {
                    globalEvent.Events.Add((GlobalEventType)eventId);
                }
            }
            GameServer.GlobalEventManager.AddEvent(globalEvent);

            _ = globalEvent.Start();
        }
Пример #2
0
        private void Init()
        {
            Diag.WriteLine("Initializing");
            SetStatus("Initializing", Color.OrangeRed);

            var remoteProc = RemoteProc.Instance();

            if (remoteProc == null)
            {
                MetroMessageBox.Show(this, "Sekiro should be running but was not found..", "Error",
                                     MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            foreach (var flag in Defs.Flags.FastReverse())
            {
                flag.RenderFlag(this);
            }

            GameState = new GameState();
            GameState.Subscribe((sender, e) => {
                var value = e.Value;
                if (value.GetType() != typeof(byte))
                {
                    return;
                }
                var b = (byte)value;

                UpdateCtrl(lblLoading, () => {
                    if (b == 1)
                    {
                        lblLoading.Text = "Loading: no";
                    }
                    else if (b == 0)
                    {
                        lblLoading.Text = "Loading: yes";
                    }
                    else
                    {
                        lblLoading.Text = "Loading: unknown";
                    }
                });
            });
            GameState.Start();

            PlayerPos = new PlayerPos();
            PlayerPos.Subscribe((sender, e) => {
                var pos = (Vector3)e.Value;
                UpdateCtrl(lblPosX, () => lblPosX.Text = $"X: {pos.X}");
                UpdateCtrl(lblPosY, () => lblPosY.Text = $"Y: {pos.Y}");
                UpdateCtrl(lblPosZ, () => lblPosZ.Text = $"Z: {pos.Z}");
            });
            PlayerPos.Start();

            IngameTime = new IngameTime();
            IngameTime.Subscribe((sender, e) => {
                UpdateCtrl(lblIgt, () => lblIgt.Text = $"IGT: {(string)e.Value}");
            });
            IngameTime.Start();

            PlayerStats = new PlayerStats();
            PlayerStats.Subscribe((sender, e) => {
                var player = (Player)e.Value;
                UpdateCtrl(lblHealth, () => lblHealth.Text   = $"Health: {player.CurrentHealth}/{player.MaximumHealth}");
                UpdateCtrl(lblPosture, () => lblPosture.Text = $"Posture: {player.CurrentPosture}/{player.MaximumPosture}");
            });
            PlayerStats.Start();

            LastIdol = new LastIdol();
            LastIdol.Subscribe((sender, e) => {
                var idola = (Idol)e.Value;
                UpdateCtrl(cboxLastIdol, () => cboxLastIdol.SelectedItem = idola.Name);
            });
            LastIdol.Start();

            var lastIdol = remoteProc.Read <int>(Defs.PointerByName("LastCommutedIdol").GetAddress(remoteProc));
            var idol     = Defs.IdolById(lastIdol);

            if (idol == null)
            {
                Diag.WriteLine($"Null Idol? {lastIdol}");
            }
            else
            {
                UpdateCtrl(cboxLastIdol, () => {
                    cboxLastIdol.SelectedItem = idol.Name;
                });
            }

            SetStatus("Ready", Color.LimeGreen);
            Enable();
        }