public PlayerMenu(int serverId, PlayerListMenu parent, Client client) : base("Player", parent) { ServerId = serverId; var spec = new MenuItemCheckbox(client, this, "Spectate Player", false, Constants.AceAdminSpec) { IsChecked = () => client.Spectate.CurrentPlayer?.ServerId == ServerId }; spec.Activate += () => { if (client.Spectate.CurrentPlayer == null || client.Spectate.CurrentPlayer.ServerId != ServerId) { client.Spectate.Start(Player); } else { client.Spectate.Stop(); } return(Task.FromResult(0)); }; Add(spec); var tpTo = new MenuItem(client, this, "Teleport To Player", Constants.AceAdminTp); tpTo.Activate += () => { parent.LastTpTarget = ServerId; BaseScript.TriggerServerEvent("HyperAdmin.TpTo", ServerId); return(Task.FromResult(0)); }; Add(tpTo); var bring = new MenuItem(client, this, "Bring Player", Constants.AceAdminBring); bring.Activate += () => { BaseScript.TriggerServerEvent("HyperAdmin.Bring", ServerId, JsonConvert.SerializeObject(Game.PlayerPed.Position)); return(Task.FromResult(0)); }; Add(bring); var freeze = new MenuItemCheckbox(client, this, "Freeze Player", Player.Character.IsPositionFrozen, Constants.AceAdminFreeze) { IsChecked = () => API.DecorGetBool(Player.Character.Handle, "Player.Frozen") }; freeze.Activate += () => { BaseScript.TriggerServerEvent("HyperAdmin.Freeze", ServerId); return(Task.FromResult(0)); }; Add(freeze); var kick = new MenuItemSubMenu(client, this, new KickMenu(client, this), ace: Constants.AceAdminKick); Add(kick); var ban = new MenuItemSubMenu(client, this, new BanMenu(client, this), ace: Constants.AceAdminBan); Add(ban); }
public DevTools(Client client) : base(client) { var menu = new Menu("Mooshe's DevTools"); var playerMenu = new MenuItemSubMenu(client, menu, new PlayerMenu(client, menu), "Player Settings"); menu.Add(playerMenu); var mpMenu = new MenuItemSubMenu(client, menu, new MpMenu(client, menu), "Multiplayer Settings"); menu.Add(mpMenu); var timeMenu = new MenuItemSubMenu(client, menu, new TimeMenu(client, menu), "Time Settings"); menu.Add(timeMenu); var vehMenu = new MenuItemSubMenu(client, menu, new VehicleMenu(client, menu), "Vehicle Settings"); menu.Add(vehMenu); var worldMenu = new MenuItemSubMenu(client, menu, new WorldMenu(client, menu), "World Settings"); menu.Add(worldMenu); var hudMenu = new MenuItemSubMenu(client, menu, new HudMenu(client, menu), "HUD Settings"); menu.Add(hudMenu); var iplMenu = new MenuItemSubMenu(client, menu, new InteriorMenu(client, menu), "Interior Settings"); menu.Add(iplMenu); var keyCode = new MenuItemCheckbox(client, menu, "Keycode Tester") { IsChecked = () => KeyCodeTest }; keyCode.Activate += () => { KeyCodeTest = !KeyCodeTest; return(Task.FromResult(0)); }; menu.Add(keyCode); Client.Menu.RegisterMenuHotkey(Control.ReplayStartStopRecording, menu); // F1 Client.RegisterTickHandler(OnKeyCodeTick); Client.RegisterTickHandler(OnKeyCodeRender); Client.RegisterEventHandler("UI.ShowNotification", new Action <string>(OnNotification)); Client.RegisterEventHandler("Player.Bring", new Action <int, float, float, float>(OnPlayerBring)); }
private void CreateMenuItems() { _root = new MenuItemGrid("roomListGrid", 7, 7); MenuItemText roomText = new MenuItemText("roomText"); roomText.SetText("Room List"); roomText.SetTextColor(Color.black); roomText.SetAlignment(TextAnchor.MiddleCenter); _root.AddChild(0, 0, 2, 1, roomText); MenuItemText searchText = new MenuItemText("searchText"); searchText.SetText("Search:"); searchText.SetAlignment(TextAnchor.LowerLeft); searchText.SetFontSize(5, 7); _root.AddChild(0, 2, 2, 1, searchText); MenuItemInput searchInput = new MenuItemInput("searchInput"); searchInput.SetPlaceholder("Name..."); _root.AddChild(0, 3, 2, 1, searchInput); searchInput.SetPadding(10f, 0f, 10f, 10f); MenuItemCheckbox notEmpty = new MenuItemCheckbox("notEmpty"); notEmpty.SetValue(false); notEmpty.SetText("Filter empty"); _root.AddChild(0, 4, 2, 1, notEmpty); notEmpty.SetPadding(10f, 6f); MenuItemCheckbox notFull = new MenuItemCheckbox("notFull"); notFull.SetValue(false); notFull.SetText("Filter full"); _root.AddChild(0, 5, 2, 1, notFull); notFull.SetPadding(10f, 6f); MenuItemButton filter = new MenuItemButton("filter"); filter.SetText("Filter"); filter.Clicked += () => { List <Room> roomList = GetRoomList(searchInput.GetText(), notEmpty.IsChecked(), notFull.IsChecked()); RenderRoomList(roomList); }; _root.AddChild(0, 6, 2, 1, filter); filter.SetPadding(20f, 4f); _roomListGrid = new MenuItemGrid("roomItems", 6, 10); _root.AddChild(2, 0, 5, 7, _roomListGrid); }
public BanMenu(Client client, PlayerMenu parent) : base($"Ban {parent.Player.Name}", parent) { var reason = new MenuItem(client, this, "Ban Reason") { SubLabel = "None Specified" }; reason.Activate += async() => { _reason = await UiHelper.PromptTextInput("", controller : client.Menu); reason.SubLabel = _reason.Length > 16 ? $"{_reason.Substring( 0, 16 )}..." : _reason; }; Add(reason); var length = new MenuItemSpinnerInt(client, this, "Ban Duration", 60, 1, 8192, 1, true); Add(length); var lengthUnit = new MenuItemSpinnerList <string>(client, this, "Ban Duration (Units)", Units.Keys.ToList(), 0, true); Add(lengthUnit); var perma = new MenuItemCheckbox(client, this, "Permanent Ban"); perma.Activate += () => { _perma = !_perma; lengthUnit.IsVisible = length.IsVisible = _perma; return(Task.FromResult(0)); }; Add(perma); var submit = new MenuItem(client, this, "Execute Ban"); submit.Activate += () => { var time = _perma ? int.MinValue : Units.ElementAt((int)lengthUnit.Value).Value *(int)length.Value; client.Menu.CurrentMenu = parent.Parent; parent.Ban(_reason, time); return(Task.FromResult(0)); }; Add(submit); }
public HudMenu(Client client, Menu parent) : base("HUD Menu", parent) { var radar = new MenuItemCheckbox(client, this, "Hide Minimap") { IsChecked = API.IsRadarHidden }; radar.Activate += () => { API.DisplayRadar(API.IsRadarHidden()); return(Task.FromResult(0)); }; Add(radar); Add(new MenuItemSubMenu(client, this, new HudComponentMenu(client, this), "HUD Components")); var resetTimecycle = new MenuItem(client, this, "Reset Timecycle"); resetTimecycle.Activate += () => { Function.Call(Hash.CLEAR_TIMECYCLE_MODIFIER); return(Task.FromResult(0)); }; Add(resetTimecycle); var multTimecycle = new MenuItemSpinnerF(client, this, "Timecycle Strength", 1f, 0f, 5f, 0.05f, true); multTimecycle.ValueUpdate += (val) => { Function.Call(Hash.SET_TIMECYCLE_MODIFIER_STRENGTH, val); return(val); }; Add(multTimecycle); var timecycles = new MenuItemSubMenu(client, this, new TimeCycleMenu(client, this), "Timecycles"); Add(timecycles); client.RegisterTickHandler(OnTick); }
public HudMenu(Client client, AdminMenu parent) : base("HUD Menu", parent) { client.RegisterTickHandler(OnTick); _overheadNames = new MenuItemCheckbox(client, this, "Overhead Names"); Add(_overheadNames); }
public MenuItemInterior(Client client, Menu owner, InteriorModel interior) : base(interior.Name, owner) { Interior = interior; var tele = new MenuItem(client, owner, "Teleport"); tele.Activate += async() => { API.DoScreenFadeOut(200); await BaseScript.Delay(250); Game.PlayerPed.Position = interior.Position; Game.PlayerPed.IsPositionFrozen = true; await BaseScript.Delay(50); Game.PlayerPed.IsPositionFrozen = false; API.DoScreenFadeIn(200); }; Add(tele); foreach (var inter in interior.Interior) { var label = inter; if (label.Length > 16) { label = inter.Substring(0, 16) + "..."; } var toggle = new MenuItemCheckbox(client, owner, label, interior.IsLoaded) { IsChecked = () => interior.IsLoaded }; toggle.Activate += () => { foreach (var i in InteriorMenu.Interiors) { if (!InteriorMenu.RestrictMultiple.Contains(i.Category) || i.Category != interior.Category || !i.IsLoaded || i.Interior.All(p => p != inter)) { continue; } Function.Call(Hash.REMOVE_IPL, inter); i.IsLoaded = false; } interior.IsLoaded = !interior.IsLoaded; Function.Call(interior.IsLoaded ? Hash.REQUEST_IPL : Hash.REMOVE_IPL, inter); return(Task.FromResult(0)); }; Add(toggle); } if (interior.InteriorProps.Any()) { var propMenu = new Menu("Interior Props", this); foreach (var kvp in interior.InteriorProps) { var label = kvp.Key; if (label.Length > 16) { label = kvp.Key.Substring(0, 16) + "..."; } var prop = new MenuItemCheckbox(client, propMenu, label, kvp.Value) { IsChecked = () => interior.InteriorProps[kvp.Key] }; prop.Activate += () => { var id = Function.Call <int>(Hash.GET_INTERIOR_AT_COORDS, interior.Position.X, interior.Position.Y, interior.Position.Z); interior.InteriorProps[kvp.Key] = !interior.InteriorProps[kvp.Key]; Function.Call(interior.InteriorProps[kvp.Key] ? Hash._ENABLE_INTERIOR_PROP : Hash._DISABLE_INTERIOR_PROP, id, kvp.Key); Function.Call(Hash.REFRESH_INTERIOR, id); return(Task.FromResult(0)); }; propMenu.Add(prop); } Add(new MenuItemSubMenu(client, this, propMenu, "Interior Props")); } }
public PlayerMenu(Client client, Menu parent) : base("Player Menu", parent) { var heal = new MenuItem(client, this, "Heal Player"); heal.Activate += () => { if (Game.PlayerPed.Health < Game.PlayerPed.MaxHealth) { Game.PlayerPed.Health = Math.Min(100, Game.PlayerPed.MaxHealth); } return(Task.FromResult(0)); }; Add(heal); var armor = new MenuItem(client, this, "Give Armor"); armor.Activate += () => { Game.PlayerPed.Armor = 100; return(Task.FromResult(0)); }; Add(armor); var gaw = new MenuItem(client, this, "Give All Weapons"); gaw.Activate += () => { foreach (WeaponHash weapon in Enum.GetValues(typeof(WeaponHash))) { Game.PlayerPed.Weapons.Give(weapon, 250, false, true); } return(Task.FromResult(0)); }; Add(gaw); var pedModel = new MenuItemSubMenu(client, this, new PlayerPedMenu(client, this), "Change Ped Model"); Add(pedModel); _wantedItem = new MenuItemSpinnerInt(client, this, "Wanted Level", Game.Player.WantedLevel, 0, 5, 1); _wantedItem.ValueUpdate += (val) => { Game.Player.WantedLevel = val; return(val); }; Add(_wantedItem); var neverWanted = new MenuItemCheckbox(client, this, "Never Wanted", NeverWanted) { IsChecked = () => NeverWanted }; neverWanted.Activate += () => { NeverWanted = !NeverWanted; return(Task.FromResult(0)); }; Add(neverWanted); var godMode = new MenuItemCheckbox(client, this, "God Mode") { IsChecked = () => Game.PlayerPed.IsInvincible }; godMode.Activate += () => { Game.PlayerPed.IsInvincible = !Game.PlayerPed.IsInvincible; return(Task.FromResult(0)); }; Add(godMode); var ragdoll = new MenuItemCheckbox(client, this, "Can Ragdoll") { IsChecked = () => Game.PlayerPed.CanRagdoll }; ragdoll.Activate += () => { Game.PlayerPed.CanRagdoll = !Game.PlayerPed.CanRagdoll; return(Task.FromResult(0)); }; Add(ragdoll); var stamina = new MenuItemCheckbox(client, this, "Infinite Stamina"); stamina.Activate += () => { InfiniteStamina = !InfiniteStamina; return(Task.FromResult(0)); }; stamina.IsChecked = () => InfiniteStamina; Add(stamina); var speedMult = new MenuItemSpinnerF(client, this, "Sprint Speed", 1f, 1f, 1.5f, 0.05f); speedMult.ValueUpdate += val => { SpeedMultiplier = val; return(val); }; Add(speedMult); client.RegisterTickHandler(OnTick); }
public VehicleMenu(Client client, Menu parent) : base("Vehicle Menu", parent) { Add(new MenuItemSubMenu(client, this, new VehicleSpawnMenu(client, this), "Spawn Vehicle")); var invincible = new MenuItemCheckbox(client, this, "Invincible", IsInvincible) { IsChecked = () => IsInvincible }; invincible.Activate += () => { IsInvincible = !IsInvincible; return(Task.FromResult(0)); }; Add(invincible); var invisible = new MenuItemCheckbox(client, this, "Invisible", IsInvisible) { IsChecked = () => IsInvisible }; invisible.Activate += () => { IsInvisible = !IsInvisible; return(Task.FromResult(0)); }; Add(invisible); var vehicleColors = new List <VehicleColor>(); foreach (VehicleColor color in Enum.GetValues(typeof(VehicleColor))) { vehicleColors.Add(color); } var primary = new MenuItemSpinnerList <VehicleColor>(client, this, "Primary Color", new List <VehicleColor>(vehicleColors), 0, true); primary.ValueUpdate += (idx) => { var color = primary.Data.ElementAt((int)idx); if (Game.PlayerPed.CurrentVehicle != null) { Game.PlayerPed.CurrentVehicle.Mods.PrimaryColor = color; } return(idx); }; Add(primary); var secondary = new MenuItemSpinnerList <VehicleColor>(client, this, "Secondary Color", new List <VehicleColor>(vehicleColors), 0, true); secondary.ValueUpdate += (idx) => { var color = secondary.Data.ElementAt((int)idx); if (Game.PlayerPed.CurrentVehicle != null) { Game.PlayerPed.CurrentVehicle.Mods.SecondaryColor = color; } return(idx); }; Add(secondary); var pearl = new MenuItemSpinnerList <VehicleColor>(client, this, "Pearlescent Color", new List <VehicleColor>(vehicleColors), 0, true); pearl.ValueUpdate += (idx) => { var color = pearl.Data.ElementAt((int)idx); if (Game.PlayerPed.CurrentVehicle != null) { Game.PlayerPed.CurrentVehicle.Mods.PearlescentColor = color; } return(idx); }; Add(pearl); var license = new MenuItem(client, this, "License Plate"); license.Activate += async() => { var text = await UiHelper.PromptTextInput(Game.PlayerPed.CurrentVehicle?.Mods.LicensePlate, 8, client.Menu); if (Game.PlayerPed.CurrentVehicle != null) { Game.PlayerPed.CurrentVehicle.Mods.LicensePlate = text; } }; Add(license); var styles = new List <LicensePlateStyle>(); foreach (LicensePlateStyle s in Enum.GetValues(typeof(LicensePlateStyle))) { styles.Add(s); } var plateStyle = new MenuItemSpinnerList <LicensePlateStyle>(client, this, "License Plate Style", styles, 0, true); plateStyle.ValueUpdate += (idx) => { var style = plateStyle.Data.ElementAt((int)idx); if (Game.PlayerPed.CurrentVehicle != null) { Game.PlayerPed.CurrentVehicle.Mods.LicensePlateStyle = style; } return(idx); }; Add(plateStyle); var hasNeon = new MenuItemCheckbox(client, this, "Neon Lights", HasNeon); hasNeon.IsChecked = () => HasNeon; hasNeon.Activate += () => { HasNeon = !HasNeon; return(Task.FromResult(0)); }; Add(hasNeon); var neonR = new MenuItemSpinnerInt(client, this, "Neon Color (Red)", NeonColor.R, 0, 255, 1, true); neonR.ValueUpdate += (val) => { NeonColor = Color.FromArgb(val, NeonColor.G, NeonColor.B); return(val); }; Add(neonR); var neonG = new MenuItemSpinnerInt(client, this, "Neon Color (Green)", NeonColor.G, 0, 255, 1, true); neonG.ValueUpdate += (val) => { NeonColor = Color.FromArgb(NeonColor.R, val, NeonColor.B); return(val); }; Add(neonG); var neonB = new MenuItemSpinnerInt(client, this, "Neon Color (Blue)", NeonColor.B, 0, 255, 1, true); neonB.ValueUpdate += (val) => { NeonColor = Color.FromArgb(NeonColor.R, NeonColor.G, val); return(val); }; Add(neonB); Add(new MenuItemVehicleLivery(client, this)); client.RegisterTickHandler(OnTick); }