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(); }
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(); }