public SettingsMenu() : base("~w~Five~g~MapEditor", "~b~SETTINGS") { UIMenuCheckboxItem SM_ShowRadar = new UIMenuCheckboxItem("Show Radar in editor", Settings.ShowRadar); SM_ShowRadar.CheckboxEvent += (_, checkd) => { Settings.ShowRadar = checkd; }; AddItem(SM_ShowRadar); UIMenuCheckboxItem SM_ShowAxis = new UIMenuCheckboxItem("Show XYZ Axes", Settings.ShowXYZAxis); SM_ShowAxis.CheckboxEvent += (_, checkd) => { Settings.ShowXYZAxis = checkd; }; AddItem(SM_ShowAxis); UIMenuCheckboxItem SM_ShowCursor = new UIMenuCheckboxItem("Show 3D Cursor", true); SM_ShowCursor.CheckboxEvent += (_, checkd) => { Settings.Show3DCursor = checkd; }; AddItem(SM_ShowCursor); List <dynamic> numberList = new List <dynamic> { "Very Slow", "Slow", "Normal", "Fast", "Very Fast" }; UIMenuListItem CameraSpeedItem = new UIMenuListItem("Camera Speed", numberList, 2); AddItem(CameraSpeedItem); CameraSpeedItem.OnListChanged += (_, index) => { float camSpeedSetting = (2f * index / (numberList.Count - 1)) + 0.05f; Settings.CameraSpeed = camSpeedSetting; }; //UIMenuCheckboxItem SM_MoveCamToMap = new UIMenuCheckboxItem("Move Cam to Map on load", Settings.MoveCamToMap); //SM_MoveCamToMap.CheckboxEvent += (_, checkd) => //{ // Settings.MoveCamToMap = checkd; //}; //AddItem(SM_MoveCamToMap); UIMenuCheckboxItem SM_ShowInstructionalButtons = new UIMenuCheckboxItem("Show Instructional Buttons", true); SM_ShowInstructionalButtons.CheckboxEvent += (_, checkd) => { Settings.ShowInstructionalButtons = checkd; }; AddItem(SM_ShowInstructionalButtons); UIMenuCheckboxItem SM_ShowEntityCounts = new UIMenuCheckboxItem("Show Entity Counts", true); SM_ShowEntityCounts.CheckboxEvent += (_, checkd) => { Settings.ShowInfoBars = checkd; }; AddItem(SM_ShowEntityCounts); UIMenuCheckboxItem SM_ShowSelectedMarker = new UIMenuCheckboxItem("Show Rotation Axis Markers", true); SM_ShowSelectedMarker.CheckboxEvent += (_, checkd) => { Settings.ShowSelectionMarker = checkd; }; AddItem(SM_ShowSelectedMarker); UIMenuCheckboxItem SM_ShowBoundingBox = new UIMenuCheckboxItem("Show Bounding Box", true); SM_ShowBoundingBox.CheckboxEvent += (_, checkd) => { Settings.ShowBoundingBox = checkd; }; AddItem(SM_ShowBoundingBox); UIMenuCheckboxItem SM_NetwObj = new UIMenuCheckboxItem("Network Loaded Objects", Settings.NetworkObjects, "EXPERIMENTAL: Set if the created map entities should be networked."); SM_NetwObj.SetLeftBadge(UIMenuItem.BadgeStyle.Alert); SM_NetwObj.CheckboxEvent += (_, checkd) => { Settings.NetworkObjects = checkd; }; AddItem(SM_NetwObj); DisableInstructionalButtons(true); }
private void StatisticsMenu_OnListChange(UIMenu sender, UIMenuListItem listItem, int newIndex) { _selectedIndex = newIndex; }
private void CreateMenu() { currentChannel = channels[0]; if (cf.IsAllowed(Permission.VCStaffChannel)) { channels.Add("Staff Channel"); } // Create the menu. menu = new UIMenu(GetPlayerName(PlayerId()), "Voice Chat Settings", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; UIMenuCheckboxItem voiceChatEnabled = new UIMenuCheckboxItem("Enable Voice Chat", EnableVoicechat, "Enable or disable voice chat."); UIMenuCheckboxItem showCurrentSpeaker = new UIMenuCheckboxItem("Show Current Speaker", ShowCurrentSpeaker, "Shows who is currently talking."); UIMenuCheckboxItem showVoiceStatus = new UIMenuCheckboxItem("Show Microphone Status", ShowVoiceStatus, "Shows whether your microphone is open or muted."); List <dynamic> proximity = new List <dynamic>() { "5 m", "10 m", "15 m", "20 m", "100 m", "300 m", "1 km", "2 km", "Global", }; UIMenuListItem voiceChatProximity = new UIMenuListItem("Voice Chat Proximity", proximity, proximityRange.IndexOf(currentProximity), "Set the voice chat receiving proximity in meters."); UIMenuListItem voiceChatChannel = new UIMenuListItem("Voice Chat Channel", channels, channels.IndexOf(currentChannel), "Set the voice chat channel."); if (cf.IsAllowed(Permission.VCEnable)) { menu.AddItem(voiceChatEnabled); // Nested permissions because without voice chat enabled, you wouldn't be able to use these settings anyway. if (cf.IsAllowed(Permission.VCShowSpeaker)) { menu.AddItem(showCurrentSpeaker); } menu.AddItem(voiceChatProximity); menu.AddItem(voiceChatChannel); menu.AddItem(showVoiceStatus); } menu.OnCheckboxChange += (sender, item, _checked) => { if (item == voiceChatEnabled) { EnableVoicechat = _checked; } else if (item == showCurrentSpeaker) { ShowCurrentSpeaker = _checked; } else if (item == showVoiceStatus) { ShowVoiceStatus = _checked; } }; menu.OnListChange += (sender, item, index) => { if (item == voiceChatProximity) { currentProximity = proximityRange[index]; Subtitle.Custom($"New voice chat proximity set to: ~b~{proximity[index]}~s~."); } else if (item == voiceChatChannel) { currentChannel = channels[index]; Subtitle.Custom($"New voice chat channel set to: ~b~{channels[index]}~s~."); } }; }
public void InitMenu() { // First initialize an instance of a MenuPool. // A MenuPool object will manage all the interconnected // menus that you add to it. _menuPool = new MenuPool(); // Initialize a menu, with name "Main Menu" mainMenu = new UIMenu("Be a Tour Guide"); // Add mainMenu to _menuPool _menuPool.AddMenu(mainMenu); // Let's set the colors of the menu before adding other menus // so that submenus will also have the same color scheme. // Requires a reference to System.Drawing mainMenu.TitleColor = Color.FromArgb(255, 90, 210, 237); mainMenu.TitleBackgroundColor = Color.FromArgb(240, 0, 0, 0); mainMenu.TitleUnderlineColor = Color.FromArgb(255, 237, 90, 90); mainMenu.DefaultBoxColor = Color.FromArgb(160, 0, 0, 0); mainMenu.DefaultTextColor = Color.FromArgb(230, 255, 255, 255); mainMenu.HighlightedBoxColor = Color.FromArgb(130, 110, 204, 134); mainMenu.HighlightedItemTextColor = Color.FromArgb(255, 255, 255, 255); mainMenu.DescriptionBoxColor = Color.FromArgb(255, 0, 0, 0); mainMenu.DescriptionTextColor = Color.FromArgb(255, 255, 255, 255); mainMenu.SubsectionDefaultBoxColor = Color.FromArgb(160, 0, 0, 0); mainMenu.SubsectionDefaultTextColor = Color.FromArgb(180, 255, 255, 255); // A string attached to the end of submenu's menu item text // to indicate that the item leads to a submenu. _menuPool.SubmenuItemIndication = " ~r~>"; #region SUBMENU_SETUP // Initialize another menu, with name "Submenu" subMenu = new UIMenu("Submenu"); // Add subMenu to _menuPool as a child menu of mainMenu. // This will create a menu item in mainMenu with the name "Go to Submenu", // and selecting it will bring you to the submenu. //_menuPool.AddSubMenu(subMenu, mainMenu, "Go to Submenu"); // Initialize an item called "Submenu Item 1" // and add it to the submenu. submenuItem1 = new UIMenuItem("Submenu Item 1"); //subMenu.AddMenuItem(submenuItem1); // Same as above submenuItem2 = new UIMenuItem("Submenu Item 2"); //subMenu.AddMenuItem(submenuItem2); #endregion // A UIMenuSubsectionItem is essentially just a splitter. //subsectionItem = new UIMenuSubsectionItem("--- Splitter ---"); // Add subsectionItem to the mainMenu. // It will appear after the subMenu item, // since this is the order we are affecting mainMenu. // Just adding some more items to mainMenu. // Second param is the default value. // Third param is a description that appears at the bottom // of the menu. // UIMenuNumberValueItem is just like UIMenuItem but with "<" and ">" // wrapped around the value. Active_Mod = new UIMenuItem("Activate Mod?", Mod_Activated, "Do you wish to activate the mod?"); mainMenu.AddMenuItem(Active_Mod); itemIntegerControl = new UIMenuNumberValueItem("Integer Item", testInt, "This item controls an integer."); //mainMenu.AddMenuItem(itemIntegerControl); itemFloatControl = new UIMenuNumberValueItem("Float Item", testFloat, "This item controls a float."); //mainMenu.AddMenuItem(itemFloatControl); Job_Type = new UIMenuNumberValueItem("Job Type", Selection_Manager.instance.job_Selection_enum, "Select the job type do you wish to perform"); //mainMenu.AddMenuItem(Job_Type); subsectionItem2 = new UIMenuSubsectionItem("--- List Stuff ---"); //mainMenu.AddMenuItem(subsectionItem2); // the 3rd param must be of type List<dynamic> // or you will get a compile time error. jobTypeList = new UIMenuListItem("Job Type", "Select the job type do you wish to perform", Selection_Manager.instance.Job_Type_Selection_List); UIMenuItem Finalize_Job_Type = new UIMenuItem("Done"); UIMenuItem Cancle_Job_Type = new UIMenuItem("Cancle Current Job"); //itemListControlAdvanced = new UIMenuListItem("People", "A list of people", testListAdvanced); //mainMenu.AddMenuItem(itemListControlAdvanced); itemAddPerson = new UIMenuItem("Add a person"); //mainMenu.AddMenuItem(itemAddPerson); itemRemoveLastPerson = new UIMenuItem("Remove last person"); //mainMenu.AddMenuItem(itemRemoveLastPerson); // Now let's create some events. // All events are in the UIMenu class. // You can create a specific or anonymous method. // Let's subscribe mainMenu's OnItemSelect event to an anonymous method. // This method will be executed whenever you press Enter, Numpad5, or // the Select button on a gamepad while mainMenu is open. UIMenuItem Get_CoOrdinates = new UIMenuItem("Get Current Coordinate"); UIMenuItem Create_New_CheckPoint = new UIMenuItem("Create New Checkpoint"); UIMenuItem Nearest_Job_Location = new UIMenuItem("Nearest Job"); UIMenuItem Select_Nearest_Store = new UIMenuItem("Select Nearest Store"); mainMenu.OnItemSelect += (sender, selectedItem, index) => { // Check which item is selected. //if (selectedItem == itemSelectFunction) //{ // GTA.UI.Screen.ShowSubtitle("Hi! I'm testing SimpleUI's OnItemSelect event!"); //} //else if (selectedItem == Active_Mod) { // ControlBoolValue is an easy way to let a menu item control // a specific bool with one line of code. // In this example, we will control the var "testBool" with // the "itemBoolControl" menu item. mainMenu.ControlBoolValue(ref Mod_Activated, Active_Mod); if (Mod_Activated) { if (!mainMenu.DisabledList.Contains(Get_CoOrdinates)) { //Location details //string path = @"..\Grand Theft Auto V\Scripts\Be A Guide\Locations\Locations.json"; //Import_Details.instance.Import_Locations(true, false); //Store Details //path = @"..\Grand Theft Auto V\Scripts\Be A Guide\Locations\Store-Locations.json"; //Import_Details.instance.Import_Locations(false, true); mainMenu.AddMenuItem(jobTypeList); mainMenu.AddMenuItem(Finalize_Job_Type); } else { mainMenu.ReenableItem(jobTypeList); mainMenu.ReenableItem(Finalize_Job_Type); //mainMenu.ReenableItem(Get_CoOrdinates); //mainMenu.ReenableItem(Nearest_Job_Location); //mainMenu.ReenableItem(Select_Nearest_Store); } } else { mainMenu.DisableItem(jobTypeList); mainMenu.DisableItem(Finalize_Job_Type); //mainMenu.DisableItem(Get_CoOrdinates); //mainMenu.DisableItem(Nearest_Job_Location); //mainMenu.DisableItem(Select_Nearest_Store); } } else if (selectedItem == Finalize_Job_Type) { //_menuPool.CloseAllMenus(); Selection_Manager.instance.SelectedJob = jobTypeList.CurrentListItem.ToString(); GTA.UI.Notification.Show("You have selected " + Selection_Manager.instance.SelectedJob + " as job type, Goodluck!"); GTA.UI.Notification.Show("Make sure you have enough appropriate supplies before you start the job"); subsectionItem2 = new UIMenuSubsectionItem("--- Current Job In Progress : " + Selection_Manager.instance.SelectedJob + " ---"); mainMenu.AddMenuItem(subsectionItem2); if (!mainMenu.DisabledList.Contains(Nearest_Job_Location)) { mainMenu.AddMenuItem(Get_CoOrdinates); mainMenu.AddMenuItem(Create_New_CheckPoint); mainMenu.AddMenuItem(Nearest_Job_Location); mainMenu.AddMenuItem(Select_Nearest_Store); } else { mainMenu.ReenableItem(Get_CoOrdinates); mainMenu.ReenableItem(Create_New_CheckPoint); mainMenu.ReenableItem(Nearest_Job_Location); mainMenu.ReenableItem(Select_Nearest_Store); } mainMenu.AddMenuItem(Cancle_Job_Type); mainMenu.DisableItem(jobTypeList); mainMenu.DisableItem(Finalize_Job_Type); mainMenu.DisableItem(Active_Mod); } else if (selectedItem == Cancle_Job_Type) { GTA.UI.Notification.Show("You have canclled the current job"); if (!mainMenu.DisabledList.Contains(Nearest_Job_Location)) { mainMenu.AddMenuItem(Active_Mod); mainMenu.AddMenuItem(jobTypeList); mainMenu.AddMenuItem(Finalize_Job_Type); } else { mainMenu.ReenableItem(Active_Mod); mainMenu.ReenableItem(jobTypeList); mainMenu.ReenableItem(Finalize_Job_Type); } //Disable Items mainMenu.DisableItem(subsectionItem2); mainMenu.DisableItem(Get_CoOrdinates); mainMenu.DisableItem(Nearest_Job_Location); mainMenu.DisableItem(Create_New_CheckPoint); mainMenu.DisableItem(Select_Nearest_Store); mainMenu.DisableItem(Cancle_Job_Type); } else if (selectedItem == Get_CoOrdinates) { var position = GTA.Game.Player.Character.Position; GTA.UI.Notification.Show(position.ToString()); //Export_Details.instance.ExportFile(position.X, position.Y, position.Z); int _Last_ID = Import_Details.instance.Import(@"..\Grand Theft Auto V\Scripts\Be A Guide\Locations\Locations.json", Export_Details.instance.Job_Locations).Count; Core_Job_Type_Model model = new Core_Job_Type_Model { Difficulty_Type = "Easy", Location = _Last_ID, Mission_Type = Selection_Manager.instance.job_Selection_enum.ToString(), Position_X = GTA.Game.Player.Character.Position.X, Position_Y = GTA.Game.Player.Character.Position.Y, Position_Z = GTA.Game.Player.Character.Position.Z }; Export_Details.instance.Export(ref model, @"..\Grand Theft Auto V\Scripts\Be A Guide\Locations\Locations.json"); _Last_ID = model.Location + 1; } else if (selectedItem == Create_New_CheckPoint) { var position = GTA.Game.Player.Character.Position; GTA.UI.Notification.Show(position.ToString()); GTA.UI.Notification.Show(Selection_Manager.instance.SelectedJob.ToString()); string[] folder = { "Sea Diving Instructor", "Mount Bicycle Guide", "Hiker Guide", "Beach ATV Bike Guide", "Jet Ski Instructor", "Mount ATV Bike Guide", "Mount Dirt Bike Guide", "Parachute Instructor" }; string Parent_Folder = ""; switch (Selection_Manager.instance.job_Selection_enum) { case Selection_Manager.Job_Selection.Sea_Diving_Instructor: Parent_Folder = folder[0]; break; case Selection_Manager.Job_Selection.Mount_Bicycle_Guide: Parent_Folder = folder[1]; break; case Selection_Manager.Job_Selection.Hiker_Guide: Parent_Folder = folder[2]; break; case Selection_Manager.Job_Selection.Beach_ATV_Bike_Guide: Parent_Folder = folder[3]; break; case Selection_Manager.Job_Selection.Jet_Ski_Instructor: Parent_Folder = folder[4]; break; case Selection_Manager.Job_Selection.Mount_ATV_Bike_Guide: Parent_Folder = folder[5]; break; case Selection_Manager.Job_Selection.Mount_Dirt_Bike_Guide: Parent_Folder = folder[6]; break; case Selection_Manager.Job_Selection.Parachute_Instructor: Parent_Folder = folder[7]; break; } if (Checkpoint_List_Handler.Check_Point_List == null) { Checkpoint_List_Handler.Check_Point_List = new List <CheckPoint_Core_Model>(); } int _Last_ID = Import_Details.instance.Import(@"..\Grand Theft Auto V\Scripts\Be A Guide\Mission Checkpoints\" + Parent_Folder + @"\Checkpoints.json", Checkpoint_List_Handler.Check_Point_List).Count; CheckpointManager.instance.checkpoint_Location_Name = Selection_Manager.instance.job_Selection_enum.ToString() + "_" + Import_Details.instance.Location_List_Dictionary.FirstOrDefault(x => x.Value == Selection_Manager.instance.Destination).Key; CheckPoint_Core_Model model = new CheckPoint_Core_Model { Checkpoint_Mission_Location = CheckpointManager.instance.checkpoint_Location_Name, Difficulty_Type = "Hard", Checkpoint = _Last_ID, Mission_Type = Selection_Manager.instance.job_Selection_enum.ToString(), Position_X = GTA.Game.Player.Character.Position.X, Position_Y = GTA.Game.Player.Character.Position.Y, Position_Z = GTA.Game.Player.Character.Position.Z }; Export_Details.instance.Export(ref model, @"..\Grand Theft Auto V\Scripts\Be A Guide\Mission Checkpoints\" + Parent_Folder + @"\" + @"Checkpoints.json"); _Last_ID = model.Checkpoint + 1; } else if (selectedItem == Nearest_Job_Location) { Import_Details.instance.Import_Locations(true, false); Selection_Manager.instance.current_Selection = Selection_Manager.Current_Selection.Job_Selected; Selection_Manager.instance.Destination = World_Manager.instance.Nearest_Location(Import_Details.instance.Location_List_Dictionary, GTA.Game.Player.Character.Position); //Import Checkpoints string[] folder = { "Sea Diving Instructor", "Mount Bicycle Guide", "Hiker Guide", "Beach ATV Bike Guide", "Jet Ski Instructor", "Mount ATV Bike Guide", "Mount Dirt Bike Guide", "Parachute Instructor" }; string Parent_Folder = ""; switch (Selection_Manager.instance.job_Selection_enum) { case Selection_Manager.Job_Selection.Sea_Diving_Instructor: Parent_Folder = folder[0]; break; case Selection_Manager.Job_Selection.Mount_Bicycle_Guide: Parent_Folder = folder[1]; break; case Selection_Manager.Job_Selection.Hiker_Guide: Parent_Folder = folder[2]; break; case Selection_Manager.Job_Selection.Beach_ATV_Bike_Guide: Parent_Folder = folder[3]; break; case Selection_Manager.Job_Selection.Jet_Ski_Instructor: Parent_Folder = folder[4]; break; case Selection_Manager.Job_Selection.Mount_ATV_Bike_Guide: Parent_Folder = folder[5]; break; case Selection_Manager.Job_Selection.Mount_Dirt_Bike_Guide: Parent_Folder = folder[6]; break; case Selection_Manager.Job_Selection.Parachute_Instructor: Parent_Folder = folder[7]; break; } Import_Details.instance.Import(@"..\Grand Theft Auto V\Scripts\Be A Guide\Mission Checkpoints\" + Parent_Folder + @"\Checkpoints.json", Checkpoint_List_Handler.Check_Point_List); CheckpointManager.instance.checkpoint_Location_Name = Selection_Manager.instance.job_Selection_enum.ToString() + "_" + Import_Details.instance.Location_List_Dictionary.FirstOrDefault(x => x.Value == Selection_Manager.instance.Destination).Key; CheckpointManager.instance.Collect_CheckPoints(Checkpoint_List_Handler.Check_Point_List); if (Selection_Manager.instance.Destination != Vector3.Zero) { World_Manager.instance.Activate_Waypoint(Selection_Manager.instance.Destination); } } else if (selectedItem == Select_Nearest_Store) { Import_Details.instance.Import_Locations(false, true); //Selection Selection_Manager.instance.current_Selection = Selection_Manager.Current_Selection.Shop_Selected; Selection_Manager.instance.Destination = World_Manager.instance.Nearest_Location(Import_Details.instance.Shop_List_Dictionary, GTA.Game.Player.Character.Position); //Hiking Shop //{"Location 5":[1733.69177,6415.0376,35.03722]} if (Selection_Manager.instance.Destination != Vector3.Zero) { World_Manager.instance.Activate_Waypoint(Selection_Manager.instance.Destination); } //TODO //Deep Sea Diving Instructor Shop //Export_Details.instance.ExportFile(position.X, position.Y, position.Z); Purchase_Menu.Purchase_Menu.instance.InitMenu(); } else if (selectedItem == itemAddPerson) { string fname = Game.GetUserInput("FirstName"); if (String.IsNullOrWhiteSpace(fname)) { return; } string lname = Game.GetUserInput("LastName"); if (String.IsNullOrWhiteSpace(lname)) { return; } string input = Game.GetUserInput("ID"); if (String.IsNullOrWhiteSpace(lname)) { return; } int id; bool idParsed = int.TryParse(input, out id); if (!idParsed) { return; } //testListAdvanced.Add(new Person(fname, lname, id)); // Call this after modifying your list or you may // get an out of bounds error. itemListControlAdvanced.SaveListUpdateFromOutOfBounds(); GTA.UI.Screen.ShowSubtitle(fname + " " + lname + " added to list!"); } else if (selectedItem == itemRemoveLastPerson) { if (testListAdvanced.Count > 1) { GTA.UI.Screen.ShowSubtitle(testListAdvanced[testListAdvanced.Count - 1].ToString() + " removed from list!"); // Don't want to use LINQ for just this one line.. testListAdvanced.RemoveAt(testListAdvanced.Count - 1); itemListControlAdvanced.SaveListUpdateFromOutOfBounds(); } else { GTA.UI.Screen.ShowSubtitle("There is only one person left!"); } } }; // Let's subscribe subMenu's WhileItemHighlight event to an anonymous method // This method will be executed continuously while subMenu is open. subMenu.WhileItemHighlight += (sender, selectedItem, index) => { // Check which item is selected. if (selectedItem == submenuItem1) { GTA.UI.Screen.ShowSubtitle("Highlighting subMenu's Item 1"); } else if (selectedItem == submenuItem2) { GTA.UI.Screen.ShowSubtitle("Highlighting subMenu's Item 2"); } }; // Let's subscribe mainMenu's OnItemLeftRight event to the method // "MainMenu_OnItemLeftRight" // This method will then be executed whenever you press left or right // while mainMenu is open. mainMenu.OnItemLeftRight += MainMenu_OnItemLeftRight; // That's it for this example setup! // SimpleUI also supports scrolling, so you can add as many items // or submenus as you'd like. // SimpleUI also supports dynamic hiding/showing of menu items, // and Dispose methods for items and menus, allowing easy modification // after the initial setup. Explore using Intellisense! }
/// <summary> /// Refresh/create the ped customization menu. /// </summary> private void RefreshCustomizationMenu() { // Remove any old items. pedTextures.MenuItems.Clear(); #region Loop through all ped drawable variations and all ped props. for (var i = 0; i < 17; i++) { #region Ped Drawable Variations //if (i < 12) if (i < 12) { // Get the drawable information. var currentDrawable = GetPedDrawableVariation(PlayerPedId(), i); var variations = GetNumberOfPedDrawableVariations(PlayerPedId(), i); var textures = GetNumberOfPedTextureVariations(PlayerPedId(), i, currentDrawable); // If there are any variations. if (variations > 0) { // Loop through all of them and add them to the list. var textureList = new List <dynamic>(); for (var x = 0; x < variations; x++) { textureList.Add("Item #" + x.ToString()); } UIMenuListItem listItem = new UIMenuListItem($"{textureNames[i]}", textureList, currentDrawable, $"Use ← & → to select a ~o~{textureNames[i]} Variation~s~, press ~r~enter~s~ to cycle through the available textures."); pedTextures.AddItem(listItem); // Manage list changes. pedTextures.OnListChange += (sender2, item2, index2) => { if (item2 == listItem) { SetPedComponentVariation(PlayerPedId(), sender2.CurrentSelection, index2, 0, 0); } }; // Manage list selections. pedTextures.OnListSelect += (sender2, item2, index2) => { if (item2 == listItem) { var currentTexture = GetPedTextureVariation(PlayerPedId(), sender2.CurrentSelection); currentTexture = currentTexture == -1 ? 0 : currentTexture; var totalTextures = GetNumberOfPedTextureVariations(PlayerPedId(), sender2.CurrentSelection, index2) - 1; SetPedComponentVariation(PlayerPedId(), sender2.CurrentSelection, index2, (currentTexture < totalTextures ? currentTexture + 1 : 0), 0); } }; } else { UIMenuItem placeholder = new UIMenuItem($"{textureNames[i]}"); placeholder.SetRightLabel("None"); placeholder.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); placeholder.Enabled = false; pedTextures.AddItem(placeholder); } } #endregion #region Ped Props else { // Variables setup. var ii = i - 12;// 20; if (ii > 2) { ii += 3; } var currentProp = GetPedPropIndex(PlayerPedId(), ii); var props = GetNumberOfPedPropDrawableVariations(PlayerPedId(), ii); // If there are any props. if (props > 0) { // Loop through all of them and add them to lists. var propsList = new List <dynamic>(); for (var x = 0; x < props; x++) { propsList.Add("Item #" + x.ToString()); } // Add an "off" item to the list to allow the prop to be turned off. propsList.Add("Off"); // Create and add the list item to the menu. UIMenuListItem listItem = new UIMenuListItem($"{propNames[ii > 2 ? ii - 3 : ii]}", propsList, currentProp,
private void FaceList_OnListChanged(UIMenuListItem sender, UIMenuListItemItem item) { var character = CitizenFX.Core.Game.Player.Character; character.Style[PedComponents.Face].Index = (int)item.Value; }
// This is where Menu1 is created public void Menu1(UIMenu menu) { // This is where the submenus and/or buttons are created var sub1 = _menuPool.AddSubMenu(menu, "NativeUI Menu 1"); // the submenu name. To edit the name of it, edit "Menu 1" text. var sub2 = _menuPool.AddSubMenu(sub1, "NativeUI Submenu 1"); var subbtn = new UIMenuItem("Submenu Button 1"); sub2.AddItem(subbtn); sub2.OnItemSelect += (sender, item, index) => { if (item == subbtn) { // Add code here UI.Notify("~w~This is a ~b~Notification ~w~using ~b~NativeUI."); // Puts a notification in the lower left corner in-game UI.ShowSubtitle("~w~This is a ~b~Subtitle ~w~using ~b~NativeUI."); // Puts a subtitle on the lower part of the screen in-game } }; // Variable, button and Item creation (this is where you add the cool buttons and checkboxes) var button1 = new UIMenuItem("Button 1", "Description for ~b~Button 1"); // Creates a button that displays text sub1.AddItem(button1); // Adds the created item onto the menu/submenu button1.Enabled = true; // Enables the variable button sub1.OnItemSelect += (sender, item, index) => // Checks if the button is selected { if (item == button1) // If statement { // Add code here UI.Notify("~w~This is a ~b~Notification ~w~using ~b~NativeUI."); // Puts a notification in the lower left corner in-game UI.ShowSubtitle("~w~This is a ~b~Subtitle ~w~using ~b~NativeUI."); // Puts a subtitle on the lower part of the screen in-game } }; var checkbox1 = new UIMenuCheckboxItem("Checkbox 1", checkbox, "Description for ~b~Checkbox 1"); // Creates checkbox displaying text sub1.AddItem(checkbox1); // Adds the creates item onto the menu/submenu checkbox1.Enabled = true; // Enables the variable button sub1.OnCheckboxChange += (sender, item, checked_) => // Enables the variable checkbox { if (item == checkbox1) // If statement, this checks if the item selected is the variable in the if statement. { if (checked_ == true) // If statement, checks if the item is checked { // Add code here UI.Notify("~b~Checkbox1 ~w~= ~g~Checked ~w~(This is a notification)"); // Puts a notification in the lower left corner in-game UI.ShowSubtitle("~b~Checkbox1 ~w~= ~g~Checked ~w~(This is a subtitle)"); // Puts a subtitle on the lower part of the screen in-game } else if (checked_ == false) // If statement, checks if the item is not checked { // Add code here UI.Notify("~b~Checkbox1 ~w~= ~r~Not Checked ~w~(This is a notification)"); // Puts a notification in the lower left corner in-game UI.ShowSubtitle("~b~Checkbox1 ~w~= ~r~Not Checked ~w~(This is a subtitle)"); // Puts a subtitle on the lower part of the screen in-game } } }; var newlist = new List <dynamic> // Creates list displaying items { "Item 0", "Item 1", // Items in the UI List "Item 2", // "Item 3", // "Item 4", // "Item 5", // }; var list1 = new UIMenuListItem("UI List 1", newlist, 0); // Creates Menu List displaying text sub1.AddItem(list1); // Adds the creates item onto the menu/submenu sub1.OnListChange += (sender, item, index) => // Checks if the list item is selected { if (item == list1) // If statement { if (index == 0) // This is Item 0 in the list { // The code from this index (0) to index 5 enables different wanted levels, and shows a subtitle // which tells you which wanted level you're currently on, you are free to change any code in here UI.ShowSubtitle("~w~Item = ~b~0"); } else if (index == 1) // This is Item 1 in the list { // This is the code on Item 1, you are free to change any code in here UI.ShowSubtitle("~w~Item = ~b~1"); } else if (index == 2) // This is Item 2 in the list { // This is the code on Item 2, you are free to change any code in here UI.ShowSubtitle("~w~Item = ~b~2"); } else if (index == 3) // This is Item 3 in the list { // This is the code on Item 3, you are free to change any code in here UI.ShowSubtitle("~w~Item = ~b~3"); } else if (index == 4) // This is Item 4 in the list { // This is the code on Item 4, you are free to change any code in here UI.ShowSubtitle("~w~Item = ~b~4"); } else if (index == 5) // This is Item 5 in the list { // This is the code on Item 5, you are free to change any code in here UI.ShowSubtitle("~w~Item = ~b~5"); } // This is the code on general list extra = item.IndexToItem(index).ToString(); // Adds to string } }; // This is where Menu1 closes }
private void SpawnMenu_OnListChange(UIMenu sender, UIMenuListItem listItem, int newIndex) { if (listItem == _baseType) { _tempTimeMachine.Mods.DeloreanType = (DeloreanType)(newIndex + 1); } else if (listItem == _powerSource) { _tempTimeMachine.Mods.Reactor = (ReactorType)newIndex; } else if (listItem == _wheelsType) { if (listItem.Enabled == false || _tempTimeMachine.Circuits.IsFlying || _tempTimeMachine.Circuits.FlyingHandler.IsPlayingAnim) { listItem.Index = _wheelIndex; return; } switch (newIndex) { case 0: _tempTimeMachine.Mods.Wheel = WheelType.Stock; _canFly.Enabled = true; break; case 1: _tempTimeMachine.Mods.Wheel = WheelType.Red; _canFly.Enabled = true; break; case 2: { _tempTimeMachine.Mods.Wheel = WheelType.RailroadInvisible; _tempTimeMachine.Mods.HoverUnderbody = ModState.Off; _canFly.Checked = false; _canFly.Enabled = false; break; } } _wheelIndex = newIndex; } else if (listItem == _plate) { _tempTimeMachine.Mods.Plate = (PlateType)(newIndex - 1); } else if (listItem == _exhaust) { _tempTimeMachine.Mods.Exhaust = (ExhaustType)(newIndex - 1); _canFly.Checked = false; } else if (listItem == _suspensions) { _tempTimeMachine.Mods.SuspensionsType = (SuspensionsType)newIndex; if (_tempTimeMachine.Mods.SuspensionsType != SuspensionsType.Stock) { _canFly.Checked = false; } } }
void Setup() { XDocument document = XDocument.Load("scripts/Delivery/Locations.xml"); ReadMissions(document); MainMenu = new UIMenu("LSDeliveries", "Menu"); menuPool.Add(MainMenu); CreateMenu = menuPool.AddSubMenu(MainMenu, "Create Mission"); EditMenu = menuPool.AddSubMenu(MainMenu, "Edit Mission"); #region Create Sub Menu mName = new UIMenuItem("Name: "); mName.Activated += MName_Activated; CreateMenu.AddItem(mName); mStreet = new UIMenuItem("Street: "); CreateMenu.AddItem(mStreet); mArea = new UIMenuItem("Area: "); CreateMenu.AddItem(mArea); List <dynamic> typeList = new List <dynamic>(); foreach (MissionType t in Enum.GetValues(typeof(MissionType))) { typeList.Add(t.ToString()); } mtype = new UIMenuListItem("Type: ", typeList, 0); CreateMenu.AddItem(mtype); List <dynamic> vTypeList = new List <dynamic>(); vTypeList.Add("Any"); foreach (VehicleClass t in Enum.GetValues(typeof(VehicleClass))) { vTypeList.Add(t.ToString()); } mVehicleType = new UIMenuListItem("Vehicle Type:", vTypeList, 0); CreateMenu.AddItem(mVehicleType); mVehicle = new UIMenuItem("Vehcile: None"); mVehicle.Activated += VehicleSelected; CreateMenu.AddItem(mVehicle); mUsePVehicle = new UIMenuCheckboxItem("Use Player Vehicle:", true); CreateMenu.AddItem(mUsePVehicle); List <dynamic> useList = new List <dynamic>(); foreach (UseCase t in Enum.GetValues(typeof(UseCase))) { useList.Add(t.ToString()); } mUseCase = new UIMenuListItem("Use: ", useList, 3); CreateMenu.AddItem(mUseCase); mStartPos = new UIMenuItem("sPos: "); mStartPos.Activated += StartPosSelected; CreateMenu.AddItem(mStartPos); mEndPos = new UIMenuItem("ePos: "); mEndPos.Activated += EndPosSelected; CreateMenu.AddItem(mEndPos); mCount = new UIMenuSliderItem("Peds: "); mCount.Maximum = 4; mCount.Multiplier = 1; mCount.OnSliderChanged += CountSliderChange; CreateMenu.AddItem(mCount); mAccept = new UIMenuItem("Add Mission"); mAccept.Activated += AcceptSelected; CreateMenu.AddItem(mAccept); CreateMenu.OnMenuOpen += CreateMenu_OnMenuOpen; #endregion SetupPlayMenu(menuPool); menuPool.RefreshIndex(); }
private void CreateMenu() { _mainMenu = new UIMenu("Tobii Eye Tracking", "~b~SETTINGS"); _mainMenu.SetMenuWidthOffset(50); //_mainMenu.ControlDisablingEnabled = false; _menuPool.Add(_mainMenu); var values0To1 = new List <dynamic>(); for (var i = 0; i <= 10; i++) { values0To1.Add(i * 0.1); } var valuesMinus1To1 = new List <dynamic>(); for (var i = -10; i <= 10; i++) { valuesMinus1To1.Add(i * 0.1); } var values0To70 = new List <dynamic>(); for (var i = 0; i <= 70; i++) { values0To70.Add((double)i); } var valuesMinus70To0 = new List <dynamic>(); for (var i = -70; i <= 0; i++) { valuesMinus70To0.Add((double)i); } var freelookDevices = new List <dynamic> { "Gamepad", "Mouse" }; _freelookDevice = new UIMenuListItem("Freelook device", freelookDevices, (int)_settings.FreelookDevice, "Device to use for freelook"); _freelookDevice.OnListChanged += (sender, args) => { _settings.FreelookDevice = (FeeelookDevice)_freelookDevice.Index; }; _mainMenu.AddItem(_freelookDevice); var thirdPersonFreelook = new UIMenuCheckboxItem("TPS Freelook", _settings.ThirdPersonFreelookEnabled, "Control camera with gaze"); thirdPersonFreelook.CheckboxEvent += (sender, args) => { _settings.ThirdPersonFreelookEnabled = thirdPersonFreelook.Checked; }; _mainMenu.AddItem(thirdPersonFreelook); var thirdPersonSensitivitySlider = new UIMenuListItem("TPS Freelook Sensitivity", values0To1, (int)Math.Round(_settings.ThirdPersonSensitivity / 0.1), "Freelook sensitivity"); thirdPersonSensitivitySlider.OnListChanged += (sender, args) => { _settings.ThirdPersonSensitivity = thirdPersonSensitivitySlider.IndexToItem(thirdPersonSensitivitySlider.Index); }; _mainMenu.AddItem(thirdPersonSensitivitySlider); { var thirdPersonYOffsetSlider = new UIMenuListItem("TPS Freelook Vertical Offset", valuesMinus1To1, (int)Math.Round((_settings.ThirdPersonYOffset + 1) / 0.1), "Freelook vertical offset"); thirdPersonYOffsetSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonYOffset = thirdPersonYOffsetSlider.IndexToItem(thirdPersonYOffsetSlider.Index); }; _mainMenu.AddItem(thirdPersonYOffsetSlider); var thirdPersonDeadZoneWidthSlider = new UIMenuListItem("TPS Freelook Deadzone Width", values0To1, (int)Math.Round(_settings.ThirdPersonDeadZoneWidth / 0.1), "Freelook deadzone"); thirdPersonDeadZoneWidthSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonDeadZoneWidth = thirdPersonDeadZoneWidthSlider.IndexToItem(thirdPersonDeadZoneWidthSlider.Index); }; _mainMenu.AddItem(thirdPersonDeadZoneWidthSlider); var thirdPersonDeadZoneHeightSlider = new UIMenuListItem("TPS Freelook Deadzone Height", values0To1, (int)Math.Round(_settings.ThirdPersonDeadZoneHeight / 0.1), "Freelook deadzone"); thirdPersonDeadZoneHeightSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonDeadZoneHeight = thirdPersonDeadZoneHeightSlider.IndexToItem(thirdPersonDeadZoneHeightSlider.Index); }; _mainMenu.AddItem(thirdPersonDeadZoneHeightSlider); var thirdPersonMinPitchSlider = new UIMenuListItem("TPS Min Pitch", valuesMinus70To0, (int)Math.Round((_settings.ThirdPersonMinPitchDeg + 70) / 1), "Freelook min pitch angle"); thirdPersonMinPitchSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonMinPitchDeg = thirdPersonMinPitchSlider.IndexToItem(thirdPersonMinPitchSlider.Index); }; _mainMenu.AddItem(thirdPersonMinPitchSlider); var thirdPersonMaxPitchSlider = new UIMenuListItem("TPS Max Pitch", values0To70, (int)Math.Round((_settings.ThirdPersonMaxPitchDeg) / 1), "Freelook max pitch angle"); thirdPersonMaxPitchSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonMaxPitchDeg = thirdPersonMaxPitchSlider.IndexToItem(thirdPersonMaxPitchSlider.Index); }; _mainMenu.AddItem(thirdPersonMaxPitchSlider); } { var thirdPersonYOffsetDrivingSlider = new UIMenuListItem("TPS Freelook Vertical Offset Driving", valuesMinus1To1, (int)Math.Round((_settings.ThirdPersonYOffsetDriving + 1) / 0.1), "Freelook vertical offset"); thirdPersonYOffsetDrivingSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonYOffsetDriving = thirdPersonYOffsetDrivingSlider.IndexToItem(thirdPersonYOffsetDrivingSlider.Index); }; _mainMenu.AddItem(thirdPersonYOffsetDrivingSlider); var thirdPersonDeadZoneWidthDrivingSlider = new UIMenuListItem("TPS Freelook Deadzone Width Driving", values0To1, (int)Math.Round(_settings.ThirdPersonDeadZoneWidthDriving / 0.1), "Freelook deadzone"); thirdPersonDeadZoneWidthDrivingSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonDeadZoneWidthDriving = thirdPersonDeadZoneWidthDrivingSlider.IndexToItem(thirdPersonDeadZoneWidthDrivingSlider.Index); }; _mainMenu.AddItem(thirdPersonDeadZoneWidthDrivingSlider); var thirdPersonDeadZoneHeightDrivingSlider = new UIMenuListItem("TPS Freelook Deadzone Height Driving", values0To1, (int)Math.Round(_settings.ThirdPersonDeadZoneHeightDriving / 0.1), "Freelook deadzone"); thirdPersonDeadZoneHeightDrivingSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonDeadZoneHeightDriving = thirdPersonDeadZoneHeightDrivingSlider.IndexToItem(thirdPersonDeadZoneHeightDrivingSlider.Index); }; _mainMenu.AddItem(thirdPersonDeadZoneHeightDrivingSlider); var thirdPersonMinPitchDrivingSlider = new UIMenuListItem("TPS Min Pitch Driving", valuesMinus70To0, (int)Math.Round((_settings.ThirdPersonMinPitchDrivingDeg + 70) / 1), "Freelook min pitch angle"); thirdPersonMinPitchDrivingSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonMinPitchDrivingDeg = thirdPersonMinPitchDrivingSlider.IndexToItem(thirdPersonMinPitchDrivingSlider.Index); }; _mainMenu.AddItem(thirdPersonMinPitchDrivingSlider); var thirdPersonMaxPitchDrivingSlider = new UIMenuListItem("TPS Max Pitch Driving", values0To70, (int)Math.Round((_settings.ThirdPersonMaxPitchDeg) / 1), "Freelook max pitch angle"); thirdPersonMaxPitchDrivingSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonMaxPitchDrivingDeg = thirdPersonMaxPitchDrivingSlider.IndexToItem(thirdPersonMaxPitchDrivingSlider.Index); }; _mainMenu.AddItem(thirdPersonMaxPitchDrivingSlider); } { var thirdPersonYOffsetPlaneSlider = new UIMenuListItem("TPS Freelook Vertical Offset Plane", valuesMinus1To1, (int)Math.Round((_settings.ThirdPersonYOffsetPlane + 1) / 0.1), "Freelook vertical offset"); thirdPersonYOffsetPlaneSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonYOffsetPlane = thirdPersonYOffsetPlaneSlider.IndexToItem(thirdPersonYOffsetPlaneSlider.Index); }; _mainMenu.AddItem(thirdPersonYOffsetPlaneSlider); var thirdPersonDeadZoneWidthPlaneSlider = new UIMenuListItem("TPS Freelook Deadzone Width Plane", values0To1, (int)Math.Round(_settings.ThirdPersonDeadZoneWidthPlane / 0.1), "Freelook deadzone"); thirdPersonDeadZoneWidthPlaneSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonDeadZoneWidthPlane = thirdPersonDeadZoneWidthPlaneSlider.IndexToItem(thirdPersonDeadZoneWidthPlaneSlider.Index); }; _mainMenu.AddItem(thirdPersonDeadZoneWidthPlaneSlider); var thirdPersonDeadZoneHeightPlaneSlider = new UIMenuListItem("TPS Freelook Deadzone Height Plane", values0To1, (int)Math.Round(_settings.ThirdPersonDeadZoneHeightPlane / 0.1), "Freelook deadzone"); thirdPersonDeadZoneHeightPlaneSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonDeadZoneHeightPlane = thirdPersonDeadZoneHeightPlaneSlider.IndexToItem(thirdPersonDeadZoneHeightPlaneSlider.Index); }; _mainMenu.AddItem(thirdPersonDeadZoneHeightPlaneSlider); var thirdPersonMinPitchPlaneSlider = new UIMenuListItem("TPS Min Pitch Plane", valuesMinus70To0, (int)Math.Round((_settings.ThirdPersonMinPitchPlaneDeg + 70) / 1), "Freelook min pitch angle"); thirdPersonMinPitchPlaneSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonMinPitchPlaneDeg = thirdPersonMinPitchPlaneSlider.IndexToItem(thirdPersonMinPitchPlaneSlider.Index); }; _mainMenu.AddItem(thirdPersonMinPitchPlaneSlider); var thirdPersonMaxPitchPlaneSlider = new UIMenuListItem("TPS Max Pitch Plane", values0To70, (int)Math.Round((_settings.ThirdPersonMaxPitchPlaneDeg) / 1), "Freelook max pitch angle"); thirdPersonMaxPitchPlaneSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonMaxPitchPlaneDeg = thirdPersonMaxPitchPlaneSlider.IndexToItem(thirdPersonMaxPitchPlaneSlider.Index); }; _mainMenu.AddItem(thirdPersonMaxPitchPlaneSlider); } { var thirdPersonYOffsetHeliSlider = new UIMenuListItem("TPS Freelook Vertical Offset Heli", valuesMinus1To1, (int)Math.Round((_settings.ThirdPersonYOffsetHeli + 1) / 0.1), "Freelook vertical offset"); thirdPersonYOffsetHeliSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonYOffsetHeli = thirdPersonYOffsetHeliSlider.IndexToItem(thirdPersonYOffsetHeliSlider.Index); }; _mainMenu.AddItem(thirdPersonYOffsetHeliSlider); var thirdPersonDeadZoneWidthHeliSlider = new UIMenuListItem("TPS Freelook Deadzone Width Heli", values0To1, (int)Math.Round(_settings.ThirdPersonDeadZoneWidthHeli / 0.1), "Freelook deadzone"); thirdPersonDeadZoneWidthHeliSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonDeadZoneWidthHeli = thirdPersonDeadZoneWidthHeliSlider.IndexToItem(thirdPersonDeadZoneWidthHeliSlider.Index); }; _mainMenu.AddItem(thirdPersonDeadZoneWidthHeliSlider); var thirdPersonDeadZoneHeightHeliSlider = new UIMenuListItem("TPS Freelook Deadzone Height Heli", values0To1, (int)Math.Round(_settings.ThirdPersonDeadZoneHeightHeli / 0.1), "Freelook deadzone"); thirdPersonDeadZoneHeightHeliSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonDeadZoneHeightHeli = thirdPersonDeadZoneHeightHeliSlider.IndexToItem(thirdPersonDeadZoneHeightHeliSlider.Index); }; _mainMenu.AddItem(thirdPersonDeadZoneHeightHeliSlider); var thirdPersonMinPitchHeliSlider = new UIMenuListItem("TPS Min Pitch Heli", valuesMinus70To0, (int)Math.Round((_settings.ThirdPersonMinPitchHeliDeg + 70) / 1), "Freelook min pitch angle"); thirdPersonMinPitchHeliSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonMinPitchHeliDeg = thirdPersonMinPitchHeliSlider.IndexToItem(thirdPersonMinPitchHeliSlider.Index); }; _mainMenu.AddItem(thirdPersonMinPitchHeliSlider); var thirdPersonMaxPitchHeliSlider = new UIMenuListItem("TPS Max Pitch Heli", values0To70, (int)Math.Round((_settings.ThirdPersonMaxPitchDeg) / 1), "Freelook max pitch angle"); thirdPersonMaxPitchHeliSlider.OnListChanged += (sender, args) => { _settings.ThirdPersonMaxPitchHeliDeg = thirdPersonMaxPitchHeliSlider.IndexToItem(thirdPersonMaxPitchHeliSlider.Index); }; _mainMenu.AddItem(thirdPersonMaxPitchHeliSlider); } var firstPersonFreelook = new UIMenuCheckboxItem("FPS Freelook", _settings.FirstPersonFreelookEnabled, "Control camera with gaze"); firstPersonFreelook.CheckboxEvent += (sender, args) => { _settings.FirstPersonFreelookEnabled = firstPersonFreelook.Checked; }; _mainMenu.AddItem(firstPersonFreelook); var firstPersonSensitivitySlider = new UIMenuListItem("FPS Freelook Sensitivity", values0To1, (int)Math.Round(_settings.FirstPersonSensitivity / 0.1), "Freelook sensitivity"); firstPersonSensitivitySlider.OnListChanged += (sender, args) => { _settings.FirstPersonSensitivity = firstPersonSensitivitySlider.IndexToItem(firstPersonSensitivitySlider.Index); }; _mainMenu.AddItem(firstPersonSensitivitySlider); { var firstPersonDeadZoneWidthSlider = new UIMenuListItem("FPS Freelook Deadzone Width", values0To1, (int)Math.Round(_settings.FirstPersonDeadZoneWidth / 0.1), "Freelook deadzone"); firstPersonDeadZoneWidthSlider.OnListChanged += (sender, args) => { _settings.FirstPersonDeadZoneWidth = firstPersonDeadZoneWidthSlider.IndexToItem(firstPersonDeadZoneWidthSlider.Index); }; _mainMenu.AddItem(firstPersonDeadZoneWidthSlider); var firstPersonDeadZoneHeightSlider = new UIMenuListItem("FPS Freelook Deadzone Height", values0To1, (int)Math.Round(_settings.FirstPersonDeadZoneHeight / 0.1), "Freelook deadzone"); firstPersonDeadZoneHeightSlider.OnListChanged += (sender, args) => { _settings.FirstPersonDeadZoneHeight = firstPersonDeadZoneHeightSlider.IndexToItem(firstPersonDeadZoneHeightSlider.Index); }; _mainMenu.AddItem(firstPersonDeadZoneHeightSlider); var firstPersonMinPitchSlider = new UIMenuListItem("FPS Min Pitch", valuesMinus70To0, (int)Math.Round((_settings.FirstPersonMinPitchDeg + 70) / 1), "Freelook min pitch angle"); firstPersonMinPitchSlider.OnListChanged += (sender, args) => { _settings.FirstPersonMinPitchDeg = firstPersonMinPitchSlider.IndexToItem(firstPersonMinPitchSlider.Index); }; _mainMenu.AddItem(firstPersonMinPitchSlider); var firstPersonMaxPitchSlider = new UIMenuListItem("FPS Max Pitch", values0To70, (int)Math.Round((_settings.FirstPersonMaxPitchDeg) / 1), "Freelook max pitch angle"); firstPersonMaxPitchSlider.OnListChanged += (sender, args) => { _settings.FirstPersonMaxPitchDeg = firstPersonMaxPitchSlider.IndexToItem(firstPersonMaxPitchSlider.Index); }; _mainMenu.AddItem(firstPersonMaxPitchSlider); } var aimingSensitivitySlider = new UIMenuListItem("Aiming Sensitivity", values0To1, (int)Math.Round(_settings.AimingSensitivity / 0.1), "Freelok sensitivity while aiming"); aimingSensitivitySlider.OnListChanged += (sender, args) => { _settings.AimingSensitivity = aimingSensitivitySlider.IndexToItem(aimingSensitivitySlider.Index); }; _mainMenu.AddItem(aimingSensitivitySlider); var aimWithGaze = new UIMenuCheckboxItem("Aim With Gaze", _settings.AimWithGazeEnabled, "Aim with gaze"); aimWithGaze.CheckboxEvent += (sender, args) => { _settings.AimWithGazeEnabled = aimWithGaze.Checked; }; _mainMenu.AddItem(aimWithGaze); var snapAtPedestrians = new UIMenuCheckboxItem("Snap At Pedestrians", _settings.SnapAtPedestriansEnabled, "Snap aim at pedestrians"); snapAtPedestrians.CheckboxEvent += (sender, args) => { _settings.SnapAtPedestriansEnabled = snapAtPedestrians.Checked; }; _mainMenu.AddItem(snapAtPedestrians); var gazeFilteringSlider = new UIMenuListItem("Gaze Filter", values0To1, (int)Math.Round(_settings.GazeFiltering / 0.1), "Filter gaze data"); gazeFilteringSlider.OnListChanged += (sender, args) => { _settings.GazeFiltering = gazeFilteringSlider.IndexToItem(gazeFilteringSlider.Index); }; _mainMenu.AddItem(gazeFilteringSlider); var incinerateAtGaze = new UIMenuCheckboxItem("Incinerate At Gaze", _settings.IncinerateAtGazeEnabled, "Incinerate at gaze"); incinerateAtGaze.CheckboxEvent += (sender, args) => { _settings.IncinerateAtGazeEnabled = incinerateAtGaze.Checked; }; _mainMenu.AddItem(incinerateAtGaze); var taseAtGaze = new UIMenuCheckboxItem("Tase At Gaze", _settings.TaseAtGazeEnabled, "Tase at gaze"); taseAtGaze.CheckboxEvent += (sender, args) => { _settings.TaseAtGazeEnabled = taseAtGaze.Checked; }; _mainMenu.AddItem(taseAtGaze); var missilesAtGaze = new UIMenuCheckboxItem("Launch Missiles At Gaze", _settings.MissilesAtGazeEnabled, "Launch missiles at gaze"); missilesAtGaze.CheckboxEvent += (sender, args) => { _settings.MissilesAtGazeEnabled = missilesAtGaze.Checked; }; _mainMenu.AddItem(missilesAtGaze); var pedestrianIntreraction = new UIMenuCheckboxItem("Pedestrian Interaction", _settings.PedestrianInteractionEnabled, "Pedestrians talk to you"); pedestrianIntreraction.CheckboxEvent += (sender, args) => { _settings.PedestrianInteractionEnabled = pedestrianIntreraction.Checked; }; _mainMenu.AddItem(pedestrianIntreraction); var dontFallFromBikes = new UIMenuCheckboxItem("Don't Fall From Bikes", _settings.DontFallFromBikesEnabled, "Never fall from bikes"); dontFallFromBikes.CheckboxEvent += (sender, args) => { _settings.DontFallFromBikesEnabled = dontFallFromBikes.Checked; }; _mainMenu.AddItem(dontFallFromBikes); var dedzns = new UIMenuItem("Deadzones"); _mainMenu.AddItem(dedzns); _mainMenu.RefreshIndex(); { DeadzoneMenu = new UIMenu("Tobii Eye Tracking", "~b~DEADZONES"); DeadzoneMenu.SetMenuWidthOffset(50); _mainMenu.BindMenuToItem(DeadzoneMenu, dedzns); DeadzoneMenu.AddItem(new UIMenuItem("Add Deadzone", "Deadzones prevent camera movement when you are looking inside the zone, for example, the minimap.")); DeadzoneMenu.RefreshIndex(); _menuPool.Add(DeadzoneMenu); } }
private static void createRoadSignsMenu() { Game.FrameRender += Process; _menuPool = new MenuPool(); roadManagementMenu = new UIMenu("Road Management", "~b~Select the sign to place"); _menuPool.Add(roadManagementMenu); List <string> availableBarriers = new List <string> { "Police Do Not Cross", "Concrete 1", "Concrete 2", "Roadwork Stripes", "Plain Stripes", "Stopped Vehicles", "Stripes Right", "Stripes Left", }; roadManagementMenu.AddItem(barriersList = new UIMenuListItem("Barriers", "", availableBarriers)); List <string> availableCones = new List <string> { "Large Striped 1", "Large Striped 2", "Large not Striped", "Small Striped 1", "Small Striped 2", "Small not Striped" }; roadManagementMenu.AddItem(conesList = new UIMenuListItem("Cones", "", availableCones)); removeLastDroppedSignItem = new UIMenuItem("Remove Last Sign"); roadManagementMenu.AddItem(removeLastDroppedSignItem); roadManagementMenu.AddItem(RemoveNearestSignItem = new UIMenuItem("Remove Nearest Sign")); removeAllSignsItem = new UIMenuItem("Remove All Signs"); roadManagementMenu.AddItem(removeAllSignsItem); barriersList.OnListChanged += OnListChanged; conesList.OnListChanged += OnListChanged; roadManagementMenu.RefreshIndex(); roadManagementMenu.OnItemSelect += OnItemSelect; roadManagementMenu.MouseControlsEnabled = false; roadManagementMenu.AllowCameraMovement = true; PlaceSignMenu = new UIMenu("Road Management", "~b~Placement options"); PlaceSignMenu.AddItem(PlaceSignItem = new UIMenuItem("Place Sign")); PlaceSignMenu.AddItem(UpdateSignPositionItem = new UIMenuCheckboxItem("Update sign position", true, "If checked, contantly updates the sign's position offset to your character's current position.")); List <string> availableSpawnDirections = new List <string> { "1", "2", "3", "4" }; PlaceSignMenu.AddItem(SpawnDirectionListItem = new UIMenuListItem("Direction", "", availableSpawnDirections)); List <string> availableSpawnMultipliers = new List <string> { "2", "3", "4", "5", "6", "7", "8", "9", "10" }; PlaceSignMenu.AddItem(SpawnMultiplierListItem = new UIMenuListItem("Distance", "", availableSpawnMultipliers)); List <string> AvailableHeadingModifiers = new List <string> { "0", "45", "90", "135", "180", "225", "270", "315", }; PlaceSignMenu.AddItem(HeadingItem = new UIMenuListItem("Rotation in degrees", "", AvailableHeadingModifiers)); PlaceSignMenu.AddItem(EnablePreviewItem = new UIMenuCheckboxItem("Enable Preview", true)); PlaceSignMenu.RefreshIndex(); PlaceSignMenu.OnItemSelect += OnItemSelect; PlaceSignMenu.MouseControlsEnabled = false; PlaceSignMenu.AllowCameraMovement = true; PlaceSignMenu.ParentMenu = roadManagementMenu; _menuPool.Add(PlaceSignMenu); //roadManagementMenu.ResetCursorOnOpen = false; }
public void AddScaleformMenu(UIMenu menu) { var scaleformMenu = _menuPool.AddSubMenu(menu, "Scaleforms Showdown"); UIMenuItem showSimplePopup = new UIMenuItem("Show PopupWarning example", "You can customize it to your needs"); UIMenuItem showPopupButtons = new UIMenuItem("Show PopupWarning with buttons", "It waits until a button has been pressed!"); UIMenuListItem customInstr = new UIMenuListItem("SavingNotification", Enum.GetNames(typeof(LoadingSpinnerType)).Cast <dynamic>().ToList(), 0, "InstructionalButtons now give you the ability to dynamically edit, add, remove, customize your buttons, you can even use them outside the menu ~y~without having to run multiple instances of the same scaleform~w~, aren't you happy??"); UIMenuItem customInstr2 = new UIMenuItem("Add a random InstructionalButton!", "InstructionalButtons now give you the ability to dynamically edit, add, remove, customize your buttons, you can even use them outside the menu ~y~without having to run multiple instances of the same scaleform~w~, aren't you happy??"); scaleformMenu.AddItem(showSimplePopup); scaleformMenu.AddItem(showPopupButtons); scaleformMenu.AddItem(customInstr); scaleformMenu.AddItem(customInstr2); scaleformMenu.OnItemSelect += async(sender, item, index) => { if (item == showSimplePopup) { PopupWarningThread.Warning.ShowWarning("This is the title", "This is the subtitle", "This is the prompt.. you have 6 seconds left", "This is the error message, NativeUI Ver. 3.0"); await Delay(1000); for (int i = 5; i > -1; i--) { PopupWarningThread.Warning.UpdateWarning("This is the title", "This is the subtitle", $"This is the prompt.. you have {i} seconds left", "This is the error message, NativeUI Ver. 3.0"); await Delay(1000); } PopupWarningThread.Warning.Dispose(); } else if (item == showPopupButtons) { List <InstructionalButton> buttons = new List <InstructionalButton>() { new InstructionalButton(Control.FrontendAccept, "Accept only with Keyboard", PadCheck.Keyboard), new InstructionalButton(Control.FrontendY, "Cancel only with GamePad", PadCheck.Controller), new InstructionalButton(Control.FrontendX, Control.Detonate, "This will change button if you're using gamepad or keyboard"), new InstructionalButton(new List <Control> { Control.MoveUpOnly, Control.MoveLeftOnly, Control.MoveDownOnly, Control.MoveRightOnly }, "Woow multiple buttons at once??") }; PopupWarningThread.Warning.ShowWarningWithButtons("This is the title", "This is the subtitle", "This is the prompt, press any button", buttons, "This is the error message, NativeUI Ver. 3.0"); PopupWarningThread.Warning.OnButtonPressed += (button) => { Debug.WriteLine($"You pressed a Button => {button.Text}"); }; } else if (item == customInstr2) { if (InstructionalButtonsHandler.InstructionalButtons.ControlButtons.Count >= 6) { return; } InstructionalButtonsHandler.InstructionalButtons.AddInstructionalButton(new InstructionalButton((Control) new Random().Next(0, 250), "I'm a new button look at me!")); } }; customInstr.OnListSelected += (item, index) => { if (InstructionalButtonsHandler.InstructionalButtons.IsSaving) { return; } InstructionalButtonsHandler.InstructionalButtons.AddSavingText((LoadingSpinnerType)(index + 1), "I'm a saving text", 3000); }; }
public static void InitialiseMenus() { Game.FrameRender += Process; _MenuPool = new MenuPool(); //ChecksMenu = new UIMenu("Checks", ""); //_MenuPool.Add(ChecksMenu); TrafficStopMenu = new UIMenu("Traffic Stop", "LSPDFR+"); _MenuPool.Add(TrafficStopMenu); TicketMenu = new UIMenu("Ticket", ""); _MenuPool.Add(TicketMenu); PursuitTacticsMenu = new UIMenu("Pursuit Tactics", ""); PursuitTacticsMenu.AddItem(AutomaticTacticsCheckboxItem = new UIMenuCheckboxItem("Automatic Tactics", EnhancedPursuitAI.DefaultAutomaticAI)); PursuitTacticsMenu.AddItem(PursuitTacticsListItem = new UIMenuListItem("Current Tactic", "", PursuitTacticsOptionsList)); PursuitTacticsListItem.Enabled = false; PursuitTacticsMenu.RefreshIndex(); PursuitTacticsMenu.OnItemSelect += OnItemSelect; PursuitTacticsMenu.OnCheckboxChange += OnCheckboxChange; //TrafficStopMenu.OnListChange += OnListChange; PursuitTacticsMenu.MouseControlsEnabled = false; PursuitTacticsMenu.AllowCameraMovement = true; _MenuPool.Add(PursuitTacticsMenu); Dictionary <UIMenu, string> UIMenus_Categories = new Dictionary <UIMenu, string>(); foreach (string category in Offence.CategorizedTrafficOffences.Keys) { UIMenu newcategorymenu = new UIMenu(category, "LSPDFR+ offences"); OffenceCategoryMenus.Add(newcategorymenu); UIMenus_Categories.Add(newcategorymenu, category); } OffenceCategorySwitchItem = new UIMenuSwitchMenusItem("Categories", "", OffenceCategoryMenus); foreach (UIMenu newcategorymenu in OffenceCategoryMenus) { newcategorymenu.AddItem(OffenceCategorySwitchItem); string category = UIMenus_Categories[newcategorymenu]; foreach (string reason in Offence.CategorizedTrafficOffences[category].Select(x => x.name)) { UIMenuCheckboxItem newcheckboxitem = new UIMenuCheckboxItem(reason, false); newcategorymenu.AddItem(newcheckboxitem); CheckboxItems_Offences.Add(new Tuple <UIMenuCheckboxItem, Offence>(newcheckboxitem, Offence.CategorizedTrafficOffences[category].FirstOrDefault(x => x.name == reason))); } newcategorymenu.OnMenuClose += OnMenuClose; newcategorymenu.RefreshIndex(); newcategorymenu.AllowCameraMovement = true; newcategorymenu.MouseControlsEnabled = false; _MenuPool.Add(newcategorymenu); } var speech = new List <dynamic>() { "Hello", "Insult", "Kifflom", "Thanks", "Swear", "Warn", "Threaten" }; TrafficStopMenu.AddItem(SpeechItem = new UIMenuListItem("Speech", "", speech)); TrafficStopMenu.AddItem(IDItem = new UIMenuListItem("Ask for identification", "", OccupantSelector)); TrafficStopMenu.AddItem(QuestionDriverItem = new UIMenuItem("Question driver")); TrafficStopMenu.AddItem(PenaltyItem = new UIMenuItem("Issue Penalty")); TrafficStopMenu.AddItem(WarningItem = new UIMenuItem("Issue warning", "Let the driver go with words of advice.")); TrafficStopMenu.AddItem(OutOfVehicleItem = new UIMenuListItem("Order out of vehicle", "", OccupantSelector)); TrafficStopMenu.RefreshIndex(); TrafficStopMenu.OnItemSelect += OnItemSelect; TrafficStopMenu.MouseControlsEnabled = false; TrafficStopMenu.AllowCameraMovement = true; for (int i = 5; i <= Offence.maxFine; i += 5) { FineList.Add(Offence.currency + i.ToString()); } for (int i = Offence.minpoints; i <= Offence.maxpoints; i += Offence.pointincstep) { PointsList.Add(i.ToString()); } TicketMenu.AddItem(TicketOffenceSelectorItem); TicketMenu.AddItem(FineItem = new UIMenuListItem("Fine", "", FineList)); PointsItem = new UIMenuListItem("Points", "", PointsList); if (Offence.enablePoints) { TicketMenu.AddItem(PointsItem); } //TicketMenu.AddItem(TicketReasonsListItem = new UIMenuListItem("Offence", TicketReasonsList, 0)); TicketMenu.AddItem(SeizeVehicleTicketCheckboxItem = new UIMenuCheckboxItem("Seize Vehicle", false)); List <dynamic> PenaltyOptions = new List <dynamic>() { "Ticket", "Court Summons" }; if (LSPDFRPlusHandler.BritishPolicingScriptRunning) { PenaltyOptions = new List <dynamic> { "Traffic Offence Report", "Fixed Penalty Notice", "Court Summons" }; } TicketMenu.AddItem(IssueTicketItem = new UIMenuListItem("~h~Issue ", "", PenaltyOptions)); IssueTicketItem.OnListChanged += OnIndexChange; TicketMenu.ParentMenu = TrafficStopMenu; TicketMenu.RefreshIndex(); TicketMenu.OnItemSelect += OnItemSelect; TicketMenu.MouseControlsEnabled = false; TicketMenu.AllowCameraMovement = true; TicketMenu.SetMenuWidthOffset(80); QuestioningMenu = new UIMenu("Questioning", ""); _MenuPool.Add(QuestioningMenu); QuestioningMenu.AddItem(IllegalInVehQuestionItem = new UIMenuItem("")); QuestioningMenu.AddItem(DrinkingQuestionItem = new UIMenuItem("")); QuestioningMenu.AddItem(DrugsQuestionItem = new UIMenuItem("")); QuestioningMenu.AddItem(SearchPermissionItem = new UIMenuItem("")); QuestioningMenu.ParentMenu = TrafficStopMenu; QuestioningMenu.RefreshIndex(); QuestioningMenu.OnItemSelect += OnItemSelect; QuestioningMenu.MouseControlsEnabled = false; QuestioningMenu.AllowCameraMovement = true; QuestioningMenu.SetMenuWidthOffset(120); CourtsMenu = new TabView("~b~~h~San Andreas Court"); CourtsMenu.AddTab(PendingResultsList = new TabSubmenuItem("Pending Results", EmptyItems)); CourtsMenu.AddTab(PublishedResultsList = new TabSubmenuItem("Results", EmptyItems)); CourtsMenu.RefreshIndex(); MainLogic(); }
public UIMenu GetMenu() { UIMenu vehicleMenu = new UIMenu("Vehicle Menu", "Customize your vehicle."); var saveVehicle = new UIMenuItem("Save current vehicle"); var spawnVehicle = new UIMenuItem("Spawn vehicle 1"); var armorLevels = new List <dynamic>() { "1", "2", "3", "4", "5", "6", "7", "8", "100" }; var armor = new UIMenuListItem("Armor level", armorLevels, 0); vehicleMenu.AddItem(armor); vehicleMenu.AddItem(saveVehicle); vehicleMenu.AddItem(spawnVehicle); vehicleMenu.OnItemSelect += (sender, item, index) => { if (item == saveVehicle) { Game.Player.Character.CurrentVehicle.IsPersistent = true; SaveableVehicle SaveableVehicle = new SaveableVehicle { ArmorLevel = VehicleController.vehicleArmorMultiplier, IsSpawned = true, }; //UI.Notify(Game.Player.Character.CurrentVehicle.GetHashCode().ToString() + "-" + SaveableVehicle.HashCode.ToString()); //UI.Notify(); //var blip = World.CreateBlip(Game.Player.Character.Position); //blip.Sprite = BlipSprite.SportsCar; var veh = World.GetNearbyVehicles(Game.Player.Character.Position, 2000); foreach (var v in veh) { if (v.GetHashCode() == Game.Player.Character.CurrentVehicle.GetHashCode()) { SaveableVehicle.GameVehicle = v; SaveableVehicle.PreviousHealth = v.Health; SaveableVehicle.PreviousBodyHealth = v.BodyHealth; SaveableVehicle.PreviousEngineHealth = v.EngineHealth; SaveableVehicle.PreviousPetrolTankHealth = v.PetrolTankHealth; } } //VehicleTracker.Blips.Add(SaveableVehicle.DisplayName, blip); VehicleController.SaveableVehicles.Add(SaveableVehicle); } else if (item == spawnVehicle) { if (VehicleController.SaveableVehicles.Count > 0) { if (!VehicleController.SaveableVehicles[0].IsSpawned) { VehicleController.SaveableVehicles[0].IsSpawned = true; var vehicle = World.CreateVehicle(VehicleController.SaveableVehicles[0].GameVehicle.Model, Game.Player.Character.Position); vehicle.PlaceOnGround(); VehicleController.SaveableVehicles[0].GameVehicle = vehicle; VehicleController.SaveableVehicles[0].PreviousHealth = vehicle.Health; VehicleController.SaveableVehicles[0].PreviousBodyHealth = vehicle.BodyHealth; VehicleController.SaveableVehicles[0].PreviousEngineHealth = vehicle.EngineHealth; VehicleController.SaveableVehicles[0].PreviousPetrolTankHealth = vehicle.PetrolTankHealth; VehicleController.SaveableVehicles[0].GameVehicle.IsPersistent = true; } } } }; vehicleMenu.OnListChange += (sender, item, index) => { if (item == armor) { VehicleController.vehicleArmorMultiplier = float.Parse(armorLevels.ToArray()[item.Index]); } }; return(vehicleMenu); }
public void AddMenuCook(UIMenu menu) { var newitem = new UIMenuItem("Cook!", "Cook the dish with the appropiate ingredients and ketchup."); newitem.SetLeftBadge(UIMenuItem.BadgeStyle.Star); newitem.SetRightBadge(UIMenuItem.BadgeStyle.Tick); menu.AddItem(newitem); menu.OnItemSelect += (sender, item, index) => { if (item == newitem) { string output = ketchup ? "You have ordered ~b~{0}~w~ ~r~with~w~ ketchup." : "You have ordered ~b~{0}~w~ ~r~without~w~ ketchup."; Screen.ShowSubtitle(String.Format(output, dish)); } }; menu.OnIndexChange += (sender, index) => { if (sender.MenuItems[index] == newitem) { newitem.SetLeftBadge(UIMenuItem.BadgeStyle.None); } }; var colorItem = new UIMenuItem("UIMenuItem with Colors", "~b~Look!!~r~I can be colored ~y~too!!~w~", Color.FromArgb(150, 185, 230, 185), Color.FromArgb(170, 174, 219, 242)); menu.AddItem(colorItem); var foods = new List <dynamic> { "Banana", "Apple", "Pizza", "Quartilicious", 0xF00D, // Dynamic! }; var BlankItem = new UIMenuSeparatorItem(); menu.AddItem(BlankItem); var colorListItem = new UIMenuListItem("Colored ListItem.. Really?", foods, 0, "~b~Look!!~r~I can be colored ~y~too!!~w~", Color.FromArgb(150, 185, 230, 185), Color.FromArgb(170, 174, 219, 242)); menu.AddItem(colorListItem); var SliderProgress = new UIMenuSliderProgressItem("Slider Progress Item", 10, 0); menu.AddItem(SliderProgress); var Progress = new UIMenuProgressItem("Progress Item", "descriptiom", 10, 0, true); menu.AddItem(Progress); var listPanelItem1 = new UIMenuListItem("Change Color", new List <object> { "Example", "example2" }, 0); var ColorPanel = new UIMenuColorPanel("Color Panel Example", UIMenuColorPanel.ColorPanelType.Hair); // you can choose between hair palette or makeup palette menu.AddItem(listPanelItem1); listPanelItem1.AddPanel(ColorPanel); var listPanelItem2 = new UIMenuListItem("Change Percentage", new List <object> { "Example", "example2" }, 0); var PercentagePanel = new UIMenuPercentagePanel("Percentage Panel Example", "0%", "100%"); // You can change every text in this Panel menu.AddItem(listPanelItem2); listPanelItem2.AddPanel(PercentagePanel); var listPanelItem3 = new UIMenuListItem("Change Grid Position", new List <object> { "Example", "example2" }, 0); var GridPanel = new UIMenuGridPanel("Up", "Left", "Right", "Down", new System.Drawing.PointF(.5f, .5f)); // you can choose the text in every position and where to place the starting position of the cirlce // the other 2 grids panel available are not listed as they work the same way but in only 2 direction (horizontally or vertically) // and to use them you must stream the stream folder provided with NativeUI project menu.AddItem(listPanelItem3); listPanelItem3.AddPanel(GridPanel); var listPanelItem4 = new UIMenuListItem("Look at Statistics", new List <object> { "Example", "example2" }, 0); var statistics = new UIMenuStatisticsPanel(); statistics.AddStatistics("Look at this!"); statistics.AddStatistics("I'm a statistic too!"); statistics.AddStatistics("Am i not?!"); //you can add as menu statistics you want statistics.SetPercentage(0, 10f); statistics.SetPercentage(1, 50f); statistics.SetPercentage(2, 100f); //and you can get / set their percentage menu.AddItem(listPanelItem4); listPanelItem4.AddPanel(statistics); // THERE ARE NO EVENTS FOR PANELS.. WHEN YOU CHANGE WHAT IS CHANGABLE THE LISTITEM WILL DO WHATEVER YOU TELL HIM TO DO menu.OnListChange += (sender, item, index) => { if (item == listPanelItem1) { Screen.ShowNotification("Selected color " + ((item.Panels[0] as UIMenuColorPanel).CurrentSelection + 1) + "..."); item.Description = "Selected color " + ((item.Panels[0] as UIMenuColorPanel).CurrentSelection + 1) + "..."; item.Parent.UpdateDescription(); // this is neat.. this will update the description of the item without refresh index.. try it by changing color } else if (item == listPanelItem2) { Screen.ShowSubtitle("Percentage = " + (item.Panels[0] as UIMenuPercentagePanel).Percentage + "..."); } else if (item == listPanelItem3) { Screen.ShowSubtitle("GridPosition = " + (item.Panels[0] as UIMenuGridPanel).CirclePosition + "..."); } }; }
void SetupMenus() { // Create main menu UIMenuListItem btnToggle = new UIMenuListItem("Toggle Display", new List <dynamic>(Enum.GetNames(typeof(SpeedoMode))), 0); btnToggle.OnListChanged += delegate(UIMenuListItem item, int index) { speedoMode = (SpeedoMode)(((int)index) % Enum.GetNames(typeof(SpeedoMode)).Length); }; UIMenuItem btnClear = new UIMenuItem("Reset Trip Meter"); btnClear.Activated += delegate { distanceKm = 0; UI.Notify("Trip meter reset"); }; UIMenuItem btnCore = new UIMenuItem("Core Settings"); btnCore.SetLeftBadge(UIMenuItem.BadgeStyle.Star); UIMenuItem btnDisp = new UIMenuItem("Display Settings"); btnDisp.SetLeftBadge(UIMenuItem.BadgeStyle.Star); UIMenuItem btnExtras = new UIMenuItem("Extras"); btnExtras.SetLeftBadge(UIMenuItem.BadgeStyle.Star); UIMenuItem btnReload = new UIMenuItem("Reload"); btnReload.Activated += delegate { ParseSettings(); SetupUIElements(); UpdateAllMenuButtons(); UI.Notify("Speedometer reloaded"); }; UIMenuItem btnBack = new UIMenuItem("Save & Close"); btnBack.Activated += delegate { SaveSettings(); mainMenu.Visible = false; }; mainMenu = new UIMenu(GetTitle(), "By libertylocked"); foreach (UIMenuItem item in new UIMenuItem[] { btnToggle, btnClear, btnCore, btnDisp, btnExtras, btnReload, btnBack }) { mainMenu.AddItem(item); } mainMenu.OnMenuClose += delegate { SaveSettings(); }; // Create core menu UIMenuListItem btnUseMph = new UIMenuListItem("Speed Unit", new List <dynamic> { "Imperial", "Metric" }, 0, "Sets the unit between KPH and MPH"); btnUseMph.OnListChanged += delegate(UIMenuListItem item, int index) { useMph = index % 2 == 0; UpdateAllMenuButtons();; }; UIMenuCheckboxItem btnEnableSaving = new UIMenuCheckboxItem("Save Trip Meter", false, "Allows trip meter data to be persistent across game sessions"); btnEnableSaving.CheckboxEvent += new ItemCheckboxEvent(delegate(UIMenuCheckboxItem item, bool selected) { enableSaving = selected; }); UIMenuCheckboxItem btnOnfootSpeedo = new UIMenuCheckboxItem("Onfoot Speed", false, "Shows speed when player is on foot"); btnOnfootSpeedo.CheckboxEvent += new ItemCheckboxEvent(delegate(UIMenuCheckboxItem item, bool selected) { onfootSpeedo = selected; }); coreMenu = new UIMenu(GetTitle(), "Core Settings"); foreach (UIMenuItem item in new UIMenuItem[] { btnUseMph, btnEnableSaving, btnOnfootSpeedo }) { coreMenu.AddItem(item); } mainMenu.BindMenuToItem(coreMenu, btnCore); // Create display menu UIMenuListItem btnVAlign = new UIMenuListItem("Vertical Alignment", new List <dynamic>(Enum.GetNames(typeof(VerticalAlignment))), 0, "Determines how speedometer display will be aligned vertically"); btnVAlign.OnListChanged += delegate(UIMenuListItem item, int index) { vAlign = (VerticalAlignment)(((int)index) % 3); posOffset.Y = 0; SetupUIElements(); }; UIMenuListItem btnHAlign = new UIMenuListItem("Horizontal Alignment", new List <dynamic>(Enum.GetNames(typeof(HorizontalAlign))), 0, "Determines how speedometer display will be aligned horizontally"); btnHAlign.OnListChanged += delegate(UIMenuListItem item, int index) { hAlign = (HorizontalAlign)(((int)index) % 3); posOffset.X = 0; SetupUIElements(); }; UIMenuListItem btnFontStyle = new UIMenuListItem("Font Style", new List <dynamic>(Enum.GetNames(typeof(GTA.Font))), 0, "Sets the font on speedometer display"); btnFontStyle.OnListChanged += delegate(UIMenuListItem item, int index) { fontStyle = (int)((GTA.Font[])Enum.GetValues(typeof(GTA.Font)))[index]; SetupUIElements(); }; UIMenuItem btnFontSize = new UIMenuItem("Font Size", "Sets the size of text on speedometer"); btnFontSize.SetLeftBadge(UIMenuItem.BadgeStyle.Star); UIMenuItem btnPanelSize = new UIMenuItem("Panel Size", "Sets the size of the back rectangle"); btnPanelSize.SetLeftBadge(UIMenuItem.BadgeStyle.Star); UIMenuItem btnOffset = new UIMenuItem("Apply Offset", "Applies an offset to speedometer display, to fine tune its position"); btnOffset.SetLeftBadge(UIMenuItem.BadgeStyle.Star); UIMenuItem btnBackcolor = new UIMenuItem("Back Color", "Sets the color of the background panel"); btnBackcolor.SetLeftBadge(UIMenuItem.BadgeStyle.Star); btnBackcolor.Activated += delegate { isChangingBackcolor = true; UpdateAllMenuButtons(); }; UIMenuItem btnForecolor = new UIMenuItem("Fore Color", "Sets the color of the text"); btnForecolor.SetLeftBadge(UIMenuItem.BadgeStyle.Star); btnForecolor.Activated += delegate { isChangingBackcolor = false; UpdateAllMenuButtons(); }; UIMenuItem btnTxt = new UIMenuItem("Speed Unit Text", "Changes the text for speed unit"); btnTxt.Activated += delegate { string input = Game.GetUserInput(WindowTitle.CELL_EMASH_BOD, useMph ? mphText : kphText, 20); if (useMph) { mphText = input; } else { kphText = input; } }; UIMenuItem btnRstDefault = new UIMenuItem("Restore to Default", "Resets UI to default settings"); btnRstDefault.Activated += delegate { ResetUIToDefault(); UpdateAllMenuButtons(); }; dispMenu = new UIMenu(GetTitle(), "Display Settings"); foreach (UIMenuItem item in new UIMenuItem[] { btnVAlign, btnHAlign, btnFontStyle, btnFontSize, btnPanelSize, btnOffset, btnBackcolor, btnForecolor, btnTxt, btnRstDefault }) { dispMenu.AddItem(item); } mainMenu.BindMenuToItem(dispMenu, btnDisp); // Create font size menu UIMenuItem btnAddSize = new UIMenuItem("+ Font Size"); btnAddSize.Activated += delegate { fontSize += 0.02f; SetupUIElements(); }; UIMenuItem btnSubSize = new UIMenuItem("- Font Size"); btnSubSize.Activated += delegate { fontSize -= 0.02f; SetupUIElements(); }; UIMenu sizeMenu = new UIMenu(GetTitle(), "Font Size"); sizeMenu.AddItem(btnAddSize); sizeMenu.AddItem(btnSubSize); dispMenu.BindMenuToItem(sizeMenu, btnFontSize); // Create panel size menu UIMenuItem btnAddWidth = new UIMenuItem("+ Panel Width"); btnAddWidth.Activated += delegate { pWidth += 2; SetupUIElements(); }; UIMenuItem btnSubWidth = new UIMenuItem("- Panel Width"); btnSubWidth.Activated += delegate { pWidth -= 2; SetupUIElements(); }; UIMenuItem btnAddHeight = new UIMenuItem("+ Panel Height"); btnAddHeight.Activated += delegate { pHeight += 2; SetupUIElements(); }; UIMenuItem btnSubHeight = new UIMenuItem("- Panel Height"); btnSubHeight.Activated += delegate { pHeight -= 2; SetupUIElements(); }; UIMenu panelSizeMenu = new UIMenu(GetTitle(), "Panel Size"); panelSizeMenu.AddItem(btnAddWidth); panelSizeMenu.AddItem(btnSubWidth); panelSizeMenu.AddItem(btnAddHeight); panelSizeMenu.AddItem(btnSubHeight); dispMenu.BindMenuToItem(panelSizeMenu, btnPanelSize); // Create offset menu UIMenuItem btnOffsetUp = new UIMenuItem("Move Up"); btnOffsetUp.Activated += delegate { posOffset.Y += -2; SetupUIElements(); }; UIMenuItem btnOffsetDown = new UIMenuItem("Move Down"); btnOffsetDown.Activated += delegate { posOffset.Y += 2; SetupUIElements(); }; UIMenuItem btnOffsetLeft = new UIMenuItem("Move Left"); btnOffsetLeft.Activated += delegate { posOffset.X += -2; SetupUIElements(); }; UIMenuItem btnOffsetRight = new UIMenuItem("Move Right"); btnOffsetRight.Activated += delegate { posOffset.X += 2; SetupUIElements(); }; UIMenuItem btnOffsetClr = new UIMenuItem("Clear Offset"); btnOffsetClr.Activated += delegate { posOffset.X = 0; posOffset.Y = 0; SetupUIElements(); }; UIMenu offsetMenu = new UIMenu(GetTitle(), "Apply Offset"); offsetMenu.AddItem(btnOffsetUp); offsetMenu.AddItem(btnOffsetDown); offsetMenu.AddItem(btnOffsetLeft); offsetMenu.AddItem(btnOffsetRight); offsetMenu.AddItem(btnOffsetClr); dispMenu.BindMenuToItem(offsetMenu, btnOffset); // Create color menu UIMenuItem btnAddR = new UIMenuItem("+ R"); btnAddR.Activated += delegate { if (isChangingBackcolor) { backcolor = Utils.IncrementARGB(backcolor, 0, 5, 0, 0); } else { forecolor = Utils.IncrementARGB(forecolor, 0, 5, 0, 0); } SetupUIElements(); UpdateAllMenuButtons(); }; UIMenuItem btnSubR = new UIMenuItem("- R"); btnSubR.Activated += delegate { if (isChangingBackcolor) { backcolor = Utils.IncrementARGB(backcolor, 0, -5, 0, 0); } else { forecolor = Utils.IncrementARGB(forecolor, 0, -5, 0, 0); } SetupUIElements(); UpdateAllMenuButtons(); }; UIMenuItem btnAddG = new UIMenuItem("+ G"); btnAddG.Activated += delegate { if (isChangingBackcolor) { backcolor = Utils.IncrementARGB(backcolor, 0, 0, 5, 0); } else { forecolor = Utils.IncrementARGB(forecolor, 0, 0, 5, 0); } SetupUIElements(); UpdateAllMenuButtons(); }; UIMenuItem btnSubG = new UIMenuItem("- G"); btnSubG.Activated += delegate { if (isChangingBackcolor) { backcolor = Utils.IncrementARGB(backcolor, 0, 0, -5, 0); } else { forecolor = Utils.IncrementARGB(forecolor, 0, 0, -5, 0); } SetupUIElements(); UpdateAllMenuButtons(); }; UIMenuItem btnAddB = new UIMenuItem("+ B"); btnAddB.Activated += delegate { if (isChangingBackcolor) { backcolor = Utils.IncrementARGB(backcolor, 0, 0, 0, 5); } else { forecolor = Utils.IncrementARGB(forecolor, 0, 0, 0, 5); } SetupUIElements(); UpdateAllMenuButtons(); }; UIMenuItem btnSubB = new UIMenuItem("- B"); btnSubB.Activated += delegate { if (isChangingBackcolor) { backcolor = Utils.IncrementARGB(backcolor, 0, 0, 0, -5); } else { forecolor = Utils.IncrementARGB(forecolor, 0, 0, 0, -5); } SetupUIElements(); UpdateAllMenuButtons(); }; UIMenuItem btnAddA = new UIMenuItem("+ Opacity"); btnAddA.Activated += delegate { if (isChangingBackcolor) { backcolor = Utils.IncrementARGB(backcolor, 5, 0, 0, 0); } else { forecolor = Utils.IncrementARGB(forecolor, 5, 0, 0, 0); } SetupUIElements(); UpdateAllMenuButtons(); }; UIMenuItem btnSubA = new UIMenuItem("- Opacity"); btnSubA.Activated += delegate { if (isChangingBackcolor) { backcolor = Utils.IncrementARGB(backcolor, -5, 0, 0, 0); } else { forecolor = Utils.IncrementARGB(forecolor, -5, 0, 0, 0); } SetupUIElements(); UpdateAllMenuButtons(); }; colorMenu = new UIMenu(GetTitle(), "Set Color"); foreach (UIMenuItem item in new UIMenuItem[] { btnAddR, btnSubR, btnAddG, btnSubG, btnAddB, btnSubB, btnAddA, btnSubA }) { colorMenu.AddItem(item); } dispMenu.BindMenuToItem(colorMenu, btnBackcolor); dispMenu.BindMenuToItem(colorMenu, btnForecolor); // Create extras menu UIMenuListItem btnRainbowMode = new UIMenuListItem("Rainbow Mode", new List <dynamic> { "Off", "1x", "2x", "4x", "8x", "16x", "32x", "64x" }, 0); btnRainbowMode.OnListChanged += delegate(UIMenuListItem item, int index) { rainbowMode = index; SetupUIElements(); }; UIMenuItem btnAccTimer = new UIMenuItem("0-100kph/62mph Timer"); btnAccTimer.Activated += delegate { wid_accTimer.Toggle(); }; UIMenuItem btnMaxSpeed = new UIMenuItem("Top Speed Recorder"); btnMaxSpeed.Activated += delegate { wid_maxSpeed.Toggle(); }; UIMenuItem btnShowCredits = new UIMenuItem("Show Credits"); btnShowCredits.Activated += delegate { ShowCredits(); }; extrasMenu = new UIMenu(GetTitle(), "Extras"); foreach (UIMenuItem item in new UIMenuItem[] { btnRainbowMode, btnAccTimer, btnMaxSpeed, btnShowCredits }) { extrasMenu.AddItem(item); } mainMenu.BindMenuToItem(extrasMenu, btnExtras); menuPool = new MenuPool(); menuPool.Add(mainMenu); menuPool.Add(coreMenu); menuPool.Add(dispMenu); menuPool.Add(extrasMenu); menuPool.Add(sizeMenu); menuPool.Add(panelSizeMenu); menuPool.Add(offsetMenu); menuPool.Add(colorMenu); }
private void resetAll() { mainMenu = new UIMenu("Baby Driver", "~b~SETTINGS"); UIMenuCheckboxItem policeCheckbox = new UIMenuCheckboxItem("Show police blips on minimap?", false); mainMenu.AddItem(policeCheckbox); mainMenu.OnCheckboxChange += (sender, item, isChecked) => { if (item == policeCheckbox) { showPoliceOnMap = isChecked; } }; UIMenuListItem levelList = new UIMenuListItem("Current Level:", new List <dynamic> { 0, 1, 2, 3 }, 1); mainMenu.AddItem(levelList); mainMenu.OnListChange += (sender, item, index) => { if (item == levelList) { currentLevel = (int)item.Items[index]; } }; mainMenu.RefreshIndex(); menuPool = new MenuPool(); menuPool.Add(mainMenu); newJobStartTick = 0; heistEndTick = 0; jobPayout = 0; currentPlayerPosition = Game.Player.Character.GetOffsetInWorldCoords(new Vector3(0, 0, 0)); currentStageLocation = new Vector3(0f, 0f, 0f); currentStageAction = Jobs.Stage.NONE; currentJob = null; foreach (Blip blip in World.GetActiveBlips()) { if (blip.Color == BlipColor.Yellow2 && (blip.Sprite == BlipSprite.Cab || blip.Sprite == BlipSprite.DollarSign || blip.Sprite == BlipSprite.Garage)) { blip.Remove(); } } currentStageBlip = null; foreach (Ped ped in World.GetAllPeds()) { int headComp = Function.Call <int>(Hash.GET_PED_DRAWABLE_VARIATION, ped, 1); int torsoComp = Function.Call <int>(Hash.GET_PED_DRAWABLE_VARIATION, ped, 3); int legsComp = Function.Call <int>(Hash.GET_PED_DRAWABLE_VARIATION, ped, 4); if (ped != Game.Player.Character && ( (ped.Model == PedHash.Michael && headComp == 3 && torsoComp == 30 && legsComp == 4) || (ped.Model == PedHash.Trevor && headComp == 2 && torsoComp == 14 && legsComp == 18) || (ped.Model == PedHash.Franklin && headComp == 2 && torsoComp == 13 && legsComp == 13) )) { ped.Delete(); } } currentCrew = new List <CrewMember>(); heistTargets = new List <Ped>(); eligibleVehicles = new List <Vehicle>(); }
/// <summary> /// Creates the menu. /// </summary> private void CreateMenu() { #region create main weapon options menu and add items // Create the menu. menu = new UIMenu(GetPlayerName(PlayerId()), "Weapon Options", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; UIMenuItem getAllWeapons = new UIMenuItem("Get All Weapons", "Get all weapons."); UIMenuItem removeAllWeapons = new UIMenuItem("Remove All Weapons", "Removes all weapons in your inventory."); UIMenuCheckboxItem unlimitedAmmo = new UIMenuCheckboxItem("Unlimited Ammo", UnlimitedAmmo, "Unlimited ammonition supply."); UIMenuCheckboxItem noReload = new UIMenuCheckboxItem("No Reload", NoReload, "Never reload."); UIMenuItem setAmmo = new UIMenuItem("Set All Ammo Count", "Set the amount of ammo in all your weapons."); UIMenuItem refillMaxAmmo = new UIMenuItem("Refill All Ammo", "Give all your weapons max ammo."); ValidWeapons vw = new ValidWeapons(); UIMenuItem spawnByName = new UIMenuItem("Spawn Weapon By Name", "Enter a weapon mode name to spawn."); // Add items based on permissions if (cf.IsAllowed(Permission.WPGetAll)) { menu.AddItem(getAllWeapons); } if (cf.IsAllowed(Permission.WPRemoveAll)) { menu.AddItem(removeAllWeapons); } if (cf.IsAllowed(Permission.WPUnlimitedAmmo)) { menu.AddItem(unlimitedAmmo); } if (cf.IsAllowed(Permission.WPNoReload)) { menu.AddItem(noReload); } if (cf.IsAllowed(Permission.WPSetAllAmmo)) { menu.AddItem(setAmmo); menu.AddItem(refillMaxAmmo); } if (cf.IsAllowed(Permission.WPSpawn)) { menu.AddItem(spawnByName); } #endregion #region addonweapons submenu UIMenuItem addonWeaponsBtn = new UIMenuItem("Addon Weapons", "Equip / remove addon weapons available on this server."); UIMenu addonWeaponsMenu = new UIMenu("Addon Weapons", "Equip/Remove Addon Weapons", true) { MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false, ScaleWithSafezone = false }; menu.AddItem(addonWeaponsBtn); #region manage creating and accessing addon weapons menu if (cf.IsAllowed(Permission.WPSpawn) && AddonWeapons != null && AddonWeapons.Count > 0) { menu.BindMenuToItem(addonWeaponsMenu, addonWeaponsBtn); foreach (KeyValuePair <string, uint> weapon in AddonWeapons) { string name = weapon.Key.ToString(); uint model = weapon.Value; var item = new UIMenuItem(name, $"Click to add/remove this weapon ({name}) to/from your inventory."); addonWeaponsMenu.AddItem(item); if (!IsWeaponValid(model)) { item.Enabled = false; item.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); item.Description = "This model is not available. Please ask the server owner to verify it's being streamed correctly."; } } addonWeaponsMenu.OnItemSelect += (sender, item, index) => { var weapon = AddonWeapons.ElementAt(index); if (HasPedGotWeapon(PlayerPedId(), weapon.Value, false)) { RemoveWeaponFromPed(PlayerPedId(), weapon.Value); } else { var maxAmmo = 200; GetMaxAmmo(PlayerPedId(), weapon.Value, ref maxAmmo); GiveWeaponToPed(PlayerPedId(), weapon.Value, maxAmmo, false, true); } }; addonWeaponsBtn.SetRightLabel("→→→"); } else { addonWeaponsBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); addonWeaponsBtn.Enabled = false; addonWeaponsBtn.Description = "This option is not available on this server because you don't have permission to use it, or it is not setup correctly."; } #endregion addonWeaponsMenu.RefreshIndex(); addonWeaponsMenu.UpdateScaleform(); #endregion #region parachute options menu #region parachute buttons and submenus UIMenuItem parachuteBtn = new UIMenuItem("Parachute Options", "All parachute related options can be changed here."); UIMenu parachuteMenu = new UIMenu("Parachute Options", "Parachute Options", true) { MouseEdgeEnabled = false, MouseControlsEnabled = false, ControlDisablingEnabled = false, ScaleWithSafezone = false }; UIMenu primaryChute = new UIMenu("Parachute Options", "Select A Primary Parachute", true) { MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false, ScaleWithSafezone = false }; UIMenu secondaryChute = new UIMenu("Parachute Options", "Select A Reserve Parachute", true) { MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false, ScaleWithSafezone = false }; UIMenuItem chute = new UIMenuItem("No Style", "Default parachute."); UIMenuItem chute0 = new UIMenuItem(GetLabelText("PM_TINT0"), GetLabelText("PD_TINT0")); // Rainbow Chute UIMenuItem chute1 = new UIMenuItem(GetLabelText("PM_TINT1"), GetLabelText("PD_TINT1")); // Red Chute UIMenuItem chute2 = new UIMenuItem(GetLabelText("PM_TINT2"), GetLabelText("PD_TINT2")); // Seaside Stripes Chute UIMenuItem chute3 = new UIMenuItem(GetLabelText("PM_TINT3"), GetLabelText("PD_TINT3")); // Window Maker Chute UIMenuItem chute4 = new UIMenuItem(GetLabelText("PM_TINT4"), GetLabelText("PD_TINT4")); // Patriot Chute UIMenuItem chute5 = new UIMenuItem(GetLabelText("PM_TINT5"), GetLabelText("PD_TINT5")); // Blue Chute UIMenuItem chute6 = new UIMenuItem(GetLabelText("PM_TINT6"), GetLabelText("PD_TINT6")); // Black Chute UIMenuItem chute7 = new UIMenuItem(GetLabelText("PM_TINT7"), GetLabelText("PD_TINT7")); // Hornet Chute UIMenuItem chute8 = new UIMenuItem(GetLabelText("PS_CAN_0"), "Air Force parachute."); // Air Force Chute UIMenuItem chute9 = new UIMenuItem(GetLabelText("PM_TINT0"), "Desert parachute."); // Desert Chute UIMenuItem chute10 = new UIMenuItem("Shadow Chute", "Shadow parachute."); // Shadow Chute UIMenuItem chute11 = new UIMenuItem(GetLabelText("UNLOCK_NAME_PSRWD"), "High altitude parachute."); // High Altitude Chute UIMenuItem chute12 = new UIMenuItem("Airborne Chute", "Airborne parachute."); // Airborne Chute UIMenuItem chute13 = new UIMenuItem("Sunrise Chute", "Sunrise parachute."); // Sunrise Chute UIMenuItem rchute = new UIMenuItem("No Style", "Default parachute."); UIMenuItem rchute0 = new UIMenuItem(GetLabelText("PM_TINT0"), GetLabelText("PD_TINT0")); // Rainbow Chute UIMenuItem rchute1 = new UIMenuItem(GetLabelText("PM_TINT1"), GetLabelText("PD_TINT1")); // Red Chute UIMenuItem rchute2 = new UIMenuItem(GetLabelText("PM_TINT2"), GetLabelText("PD_TINT2")); // Seaside Stripes Chute UIMenuItem rchute3 = new UIMenuItem(GetLabelText("PM_TINT3"), GetLabelText("PD_TINT3")); // Window Maker Chute UIMenuItem rchute4 = new UIMenuItem(GetLabelText("PM_TINT4"), GetLabelText("PD_TINT4")); // Patriot Chute UIMenuItem rchute5 = new UIMenuItem(GetLabelText("PM_TINT5"), GetLabelText("PD_TINT5")); // Blue Chute UIMenuItem rchute6 = new UIMenuItem(GetLabelText("PM_TINT6"), GetLabelText("PD_TINT6")); // Black Chute UIMenuItem rchute7 = new UIMenuItem(GetLabelText("PM_TINT7"), GetLabelText("PD_TINT7")); // Hornet Chute UIMenuItem rchute8 = new UIMenuItem(GetLabelText("PS_CAN_0"), "Air Force parachute."); // Air Force Chute UIMenuItem rchute9 = new UIMenuItem(GetLabelText("PM_TINT0"), "Desert parachute."); // Desert Chute UIMenuItem rchute10 = new UIMenuItem("Shadow Chute", "Shadow parachute."); // Shadow Chute UIMenuItem rchute11 = new UIMenuItem(GetLabelText("UNLOCK_NAME_PSRWD"), "High altitude parachute."); // High Altitude Chute UIMenuItem rchute12 = new UIMenuItem("Airborne Chute", "Airborne parachute."); // Airborne Chute UIMenuItem rchute13 = new UIMenuItem("Sunrise Chute", "Sunrise parachute."); // Sunrise Chute primaryChute.AddItem(chute); primaryChute.AddItem(chute0); primaryChute.AddItem(chute1); primaryChute.AddItem(chute2); primaryChute.AddItem(chute3); primaryChute.AddItem(chute4); primaryChute.AddItem(chute5); primaryChute.AddItem(chute6); primaryChute.AddItem(chute7); primaryChute.AddItem(chute8); primaryChute.AddItem(chute9); primaryChute.AddItem(chute10); primaryChute.AddItem(chute11); primaryChute.AddItem(chute12); primaryChute.AddItem(chute13); secondaryChute.AddItem(rchute); secondaryChute.AddItem(rchute0); secondaryChute.AddItem(rchute1); secondaryChute.AddItem(rchute2); secondaryChute.AddItem(rchute3); secondaryChute.AddItem(rchute4); secondaryChute.AddItem(rchute5); secondaryChute.AddItem(rchute6); secondaryChute.AddItem(rchute7); secondaryChute.AddItem(rchute8); secondaryChute.AddItem(rchute9); secondaryChute.AddItem(rchute10); secondaryChute.AddItem(rchute11); secondaryChute.AddItem(rchute12); secondaryChute.AddItem(rchute13); #endregion #region handle events primaryChute.OnItemSelect += (sender, item, index) => { SetPedParachuteTintIndex(PlayerPedId(), index - 1); Subtitle.Custom($"Primary parachute style selected: ~r~{item.Text}~s~."); }; secondaryChute.OnItemSelect += (sender, item, index) => { SetPlayerReserveParachuteTintIndex(PlayerId(), index - 1); Subtitle.Custom($"Reserve parachute style selected: ~r~{item.Text}~s~."); }; #endregion #region create more buttons UIMenuItem primaryChuteBtn = new UIMenuItem("Primary Parachute Style", "Select a primary parachute."); UIMenuItem secondaryChuteBtn = new UIMenuItem("Reserve Parachute Style", "Select a reserve parachute."); parachuteMenu.AddItem(primaryChuteBtn); primaryChuteBtn.SetRightLabel("→→→"); parachuteMenu.AddItem(secondaryChuteBtn); secondaryChuteBtn.SetRightLabel("→→→"); parachuteMenu.BindMenuToItem(primaryChute, primaryChuteBtn); parachuteMenu.BindMenuToItem(secondaryChute, secondaryChuteBtn); UIMenuCheckboxItem autoEquipParachute = new UIMenuCheckboxItem("Auto Equip Parachute", AutoEquipChute, "Automatically equip a parachute whenever you enter a plane/helicopter."); parachuteMenu.AddItem(autoEquipParachute); UIMenuItem togglePrimary = new UIMenuItem("Get / Remove Primary Parachute", "Equip a primary parachute."); UIMenuItem toggleSecondary = new UIMenuItem("Get Reserve Parachute", "Equip a reserve parachute, you need to get a primary parachute first before equipping a reserve parachute."); parachuteMenu.AddItem(togglePrimary); parachuteMenu.AddItem(toggleSecondary); #endregion #region handle parachute menu events parachuteMenu.OnItemSelect += (sender, item, index) => { if (item == togglePrimary) { if (HasPedGotWeapon(PlayerPedId(), (uint)WeaponHash.Parachute, false)) { RemoveWeaponFromPed(PlayerPedId(), (uint)WeaponHash.Parachute); Notify.Success("Primary parachute ~r~removed~s~.", true); } else { GiveWeaponToPed(PlayerPedId(), (uint)WeaponHash.Parachute, 1, false, false); Notify.Success("Primary parachute ~g~equippped~s~.", true); } } else if (item == toggleSecondary) { SetPlayerHasReserveParachute(PlayerId()); Notify.Success("Reserve parachute ~g~equippped~s~.", true); } }; parachuteMenu.OnCheckboxChange += (sender, item, _checked) => { if (item == autoEquipParachute) { AutoEquipChute = _checked; } }; #endregion #region parachute smoke trail colors List <dynamic> smokeColor = new List <dynamic>() { "White", "Yellow", "Red", "Green", "Blue", "Dark Gray", }; UIMenuListItem smokeColors = new UIMenuListItem("Smoke Trail Color", smokeColor, 0, "Select a parachute smoke trail color."); parachuteMenu.AddItem(smokeColors); parachuteMenu.OnListChange += (sender, item, index) => { if (item == smokeColors) { SetPlayerCanLeaveParachuteSmokeTrail(PlayerId(), false); if (index == 0) { SetPlayerParachuteSmokeTrailColor(PlayerId(), 255, 255, 255); } else if (index == 1) { SetPlayerParachuteSmokeTrailColor(PlayerId(), 255, 255, 0); } else if (index == 2) { SetPlayerParachuteSmokeTrailColor(PlayerId(), 255, 0, 0); } else if (index == 3) { SetPlayerParachuteSmokeTrailColor(PlayerId(), 0, 255, 0); } else if (index == 4) { SetPlayerParachuteSmokeTrailColor(PlayerId(), 0, 0, 255); } else if (index == 5) { SetPlayerParachuteSmokeTrailColor(PlayerId(), 1, 1, 1); } SetPlayerCanLeaveParachuteSmokeTrail(PlayerId(), true); } }; #endregion #region misc parachute menu setup menu.AddItem(parachuteBtn); parachuteBtn.SetRightLabel("→→→"); menu.BindMenuToItem(parachuteMenu, parachuteBtn); parachuteMenu.RefreshIndex(); parachuteMenu.UpdateScaleform(); primaryChute.RefreshIndex(); primaryChute.UpdateScaleform(); secondaryChute.RefreshIndex(); secondaryChute.UpdateScaleform(); MainMenu.Mp.Add(addonWeaponsMenu); MainMenu.Mp.Add(parachuteMenu); MainMenu.Mp.Add(primaryChute); MainMenu.Mp.Add(secondaryChute); #endregion #endregion #region Create Weapon Category Submenus UIMenuItem spacer = cf.GetSpacerMenuItem("↓ Weapon Categories ↓"); menu.AddItem(spacer); UIMenu handGuns = new UIMenu("Weapons", "Handguns", true) { ScaleWithSafezone = false, ControlDisablingEnabled = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, }; handGuns.SetMenuWidthOffset(50); UIMenuItem handGunsBtn = new UIMenuItem("Handguns"); UIMenu rifles = new UIMenu("Weapons", "Assault Rifles", true) { ScaleWithSafezone = false, ControlDisablingEnabled = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, }; rifles.SetMenuWidthOffset(50); UIMenuItem riflesBtn = new UIMenuItem("Assault Rifles"); UIMenu shotguns = new UIMenu("Weapons", "Shotguns", true) { ScaleWithSafezone = false, ControlDisablingEnabled = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, }; shotguns.SetMenuWidthOffset(50); UIMenuItem shotgunsBtn = new UIMenuItem("Shotguns"); UIMenu smgs = new UIMenu("Weapons", "Sub-/Light Machine Guns", true) { ScaleWithSafezone = false, ControlDisablingEnabled = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, }; smgs.SetMenuWidthOffset(50); UIMenuItem smgsBtn = new UIMenuItem("Sub-/Light Machine Guns"); UIMenu throwables = new UIMenu("Weapons", "Throwables", true) { ScaleWithSafezone = false, ControlDisablingEnabled = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, }; throwables.SetMenuWidthOffset(50); UIMenuItem throwablesBtn = new UIMenuItem("Throwables"); UIMenu melee = new UIMenu("Weapons", "Melee", true) { ScaleWithSafezone = false, ControlDisablingEnabled = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, }; melee.SetMenuWidthOffset(50); UIMenuItem meleeBtn = new UIMenuItem("Melee"); UIMenu heavy = new UIMenu("Weapons", "Heavy Weapons", true) { ScaleWithSafezone = false, ControlDisablingEnabled = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, }; heavy.SetMenuWidthOffset(50); UIMenuItem heavyBtn = new UIMenuItem("Heavy Weapons"); UIMenu snipers = new UIMenu("Weapons", "Sniper Rifles", true) { ScaleWithSafezone = false, ControlDisablingEnabled = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, }; snipers.SetMenuWidthOffset(50); UIMenuItem snipersBtn = new UIMenuItem("Sniper Rifles"); MainMenu.Mp.Add(handGuns); MainMenu.Mp.Add(rifles); MainMenu.Mp.Add(shotguns); MainMenu.Mp.Add(smgs); MainMenu.Mp.Add(throwables); MainMenu.Mp.Add(melee); MainMenu.Mp.Add(heavy); MainMenu.Mp.Add(snipers); #endregion #region Setup weapon category buttons and submenus. handGunsBtn.SetRightLabel("→→→"); menu.AddItem(handGunsBtn); menu.BindMenuToItem(handGuns, handGunsBtn); riflesBtn.SetRightLabel("→→→"); menu.AddItem(riflesBtn); menu.BindMenuToItem(rifles, riflesBtn); shotgunsBtn.SetRightLabel("→→→"); menu.AddItem(shotgunsBtn); menu.BindMenuToItem(shotguns, shotgunsBtn); smgsBtn.SetRightLabel("→→→"); menu.AddItem(smgsBtn); menu.BindMenuToItem(smgs, smgsBtn); throwablesBtn.SetRightLabel("→→→"); menu.AddItem(throwablesBtn); menu.BindMenuToItem(throwables, throwablesBtn); meleeBtn.SetRightLabel("→→→"); menu.AddItem(meleeBtn); menu.BindMenuToItem(melee, meleeBtn); heavyBtn.SetRightLabel("→→→"); menu.AddItem(heavyBtn); menu.BindMenuToItem(heavy, heavyBtn); snipersBtn.SetRightLabel("→→→"); menu.AddItem(snipersBtn); menu.BindMenuToItem(snipers, snipersBtn); #endregion #region Loop through all weapons, create menus for them and add all menu items and handle events. foreach (ValidWeapon weapon in vw.WeaponList) { uint cat = (uint)GetWeapontypeGroup(weapon.Hash); if (weapon.Name != null && (cf.IsAllowed(weapon.Perm) || cf.IsAllowed(Permission.WPGetAll))) { #region Create menu for this weapon and add buttons UIMenu weaponMenu = new UIMenu("Weapon Options", weapon.Name, true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; UIMenuItem weaponItem = new UIMenuItem(weapon.Name, $"Open the options for ~y~{weapon.Name.ToString()}~s~."); weaponItem.SetRightLabel("→→→"); weaponItem.SetLeftBadge(UIMenuItem.BadgeStyle.Gun); MainMenu.Mp.Add(weaponMenu); weaponInfo.Add(weaponMenu, weapon); UIMenuItem getOrRemoveWeapon = new UIMenuItem("Equip/Remove Weapon", "Add or remove this weapon to/form your inventory."); getOrRemoveWeapon.SetLeftBadge(UIMenuItem.BadgeStyle.Gun); weaponMenu.AddItem(getOrRemoveWeapon); if (!cf.IsAllowed(Permission.WPSpawn)) { getOrRemoveWeapon.Enabled = false; getOrRemoveWeapon.Description = "This option has been disabled by the server owner."; getOrRemoveWeapon.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); } UIMenuItem fillAmmo = new UIMenuItem("Re-fill Ammo", "Get max ammo for this weapon."); fillAmmo.SetLeftBadge(UIMenuItem.BadgeStyle.Ammo); weaponMenu.AddItem(fillAmmo); List <dynamic> tints = new List <dynamic>(); if (weapon.Name.Contains(" Mk II")) { foreach (var tint in ValidWeapons.WeaponTintsMkII) { tints.Add(tint.Key); } } else { foreach (var tint in ValidWeapons.WeaponTints) { tints.Add(tint.Key); } } UIMenuListItem weaponTints = new UIMenuListItem("Tints", tints, 0, "Select a tint for your weapon."); weaponMenu.AddItem(weaponTints); #endregion #region Handle weapon specific list changes weaponMenu.OnListChange += (sender, item, index) => { if (item == weaponTints) { if (HasPedGotWeapon(PlayerPedId(), weaponInfo[sender].Hash, false)) { SetPedWeaponTintIndex(PlayerPedId(), weaponInfo[sender].Hash, index); } else { Notify.Error("You need to get the weapon first!"); } } }; #endregion #region Handle weapon specific button presses weaponMenu.OnItemSelect += (sender, item, index) => { if (item == getOrRemoveWeapon) { var info = weaponInfo[sender]; uint hash = info.Hash; if (HasPedGotWeapon(PlayerPedId(), hash, false)) { RemoveWeaponFromPed(PlayerPedId(), hash); Subtitle.Custom("Weapon removed."); } else { var ammo = 255; GetMaxAmmo(PlayerPedId(), hash, ref ammo); GiveWeaponToPed(PlayerPedId(), hash, ammo, false, true); Subtitle.Custom("Weapon added."); } } else if (item == fillAmmo) { if (HasPedGotWeapon(PlayerPedId(), weaponInfo[sender].Hash, false)) { var ammo = 900; GetMaxAmmo(PlayerPedId(), weaponInfo[sender].Hash, ref ammo); SetAmmoInClip(PlayerPedId(), weaponInfo[sender].Hash, ammo); } else { Notify.Error("You need to get the weapon first before re-filling ammo!"); } } }; #endregion #region load components if (weapon.Components != null) { if (weapon.Components.Count > 0) { foreach (var comp in weapon.Components) { UIMenuItem compItem = new UIMenuItem(comp.Key, "Click to equip or remove this component."); weaponComponents.Add(compItem, comp.Key); weaponMenu.AddItem(compItem); #region Handle component button presses weaponMenu.OnItemSelect += (sender, item, index) => { if (item == compItem) { var Weapon = weaponInfo[sender]; var componentHash = Weapon.Components[weaponComponents[item]]; if (HasPedGotWeapon(PlayerPedId(), Weapon.Hash, false)) { if (HasPedGotWeaponComponent(PlayerPedId(), Weapon.Hash, componentHash)) { RemoveWeaponComponentFromPed(PlayerPedId(), Weapon.Hash, componentHash); Subtitle.Custom("Component removed."); } else { GiveWeaponComponentToPed(PlayerPedId(), Weapon.Hash, componentHash); Subtitle.Custom("Component equiped."); } } else { Notify.Error("You need to get the weapon first before you can modify it."); } } }; #endregion } } } #endregion // refresh and add to menu. weaponMenu.RefreshIndex(); weaponMenu.UpdateScaleform(); if (cat == 970310034) // 970310034 rifles { rifles.AddItem(weaponItem); rifles.BindMenuToItem(weaponMenu, weaponItem); } else if (cat == 416676503 || cat == 690389602) // 416676503 hand guns // 690389602 stun gun { handGuns.AddItem(weaponItem); handGuns.BindMenuToItem(weaponMenu, weaponItem); } else if (cat == 860033945) // 860033945 shotguns { shotguns.AddItem(weaponItem); shotguns.BindMenuToItem(weaponMenu, weaponItem); } else if (cat == 3337201093 || cat == 1159398588) // 3337201093 sub machine guns // 1159398588 light machine guns { smgs.AddItem(weaponItem); smgs.BindMenuToItem(weaponMenu, weaponItem); } else if (cat == 1548507267 || cat == 4257178988 || cat == 1595662460) // 1548507267 throwables // 4257178988 fire extinghuiser // jerry can { throwables.AddItem(weaponItem); throwables.BindMenuToItem(weaponMenu, weaponItem); } else if (cat == 3566412244 || cat == 2685387236) // 3566412244 melee weapons // 2685387236 knuckle duster { melee.AddItem(weaponItem); melee.BindMenuToItem(weaponMenu, weaponItem); } else if (cat == 2725924767) // 2725924767 heavy weapons { heavy.AddItem(weaponItem); heavy.BindMenuToItem(weaponMenu, weaponItem); } else if (cat == 3082541095) // 3082541095 sniper rifles { snipers.AddItem(weaponItem); snipers.BindMenuToItem(weaponMenu, weaponItem); } } } #endregion #region Disable submenus if no weapons in that category are allowed. if (handGuns.MenuItems.Count == 0) { menu.ReleaseMenuFromItem(handGunsBtn); handGunsBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); handGunsBtn.Description = "The server owner removed the permissions for all weapons in this category."; handGunsBtn.Enabled = false; } if (rifles.MenuItems.Count == 0) { menu.ReleaseMenuFromItem(riflesBtn); riflesBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); riflesBtn.Description = "The server owner removed the permissions for all weapons in this category."; riflesBtn.Enabled = false; } if (shotguns.MenuItems.Count == 0) { menu.ReleaseMenuFromItem(shotgunsBtn); shotgunsBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); shotgunsBtn.Description = "The server owner removed the permissions for all weapons in this category."; shotgunsBtn.Enabled = false; } if (smgs.MenuItems.Count == 0) { menu.ReleaseMenuFromItem(smgsBtn); smgsBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); smgsBtn.Description = "The server owner removed the permissions for all weapons in this category."; smgsBtn.Enabled = false; } if (throwables.MenuItems.Count == 0) { menu.ReleaseMenuFromItem(throwablesBtn); throwablesBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); throwablesBtn.Description = "The server owner removed the permissions for all weapons in this category."; throwablesBtn.Enabled = false; } if (melee.MenuItems.Count == 0) { menu.ReleaseMenuFromItem(meleeBtn); meleeBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); meleeBtn.Description = "The server owner removed the permissions for all weapons in this category."; meleeBtn.Enabled = false; } if (heavy.MenuItems.Count == 0) { menu.ReleaseMenuFromItem(heavyBtn); heavyBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); heavyBtn.Description = "The server owner removed the permissions for all weapons in this category."; heavyBtn.Enabled = false; } if (snipers.MenuItems.Count == 0) { menu.ReleaseMenuFromItem(snipersBtn); snipersBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); snipersBtn.Description = "The server owner removed the permissions for all weapons in this category."; snipersBtn.Enabled = false; } #endregion #region Handle button presses menu.OnItemSelect += (sender, item, index) => { Ped ped = new Ped(PlayerPedId()); if (item == getAllWeapons) { foreach (var weapon in ValidWeapons.Weapons) { var ammo = 255; GetMaxAmmo(PlayerPedId(), weapon.Value, ref ammo); ped.Weapons.Give((WeaponHash)weapon.Value, ammo, weapon.Key == "Unarmed", true); } ped.Weapons.Give(WeaponHash.Unarmed, 0, true, true); } else if (item == removeAllWeapons) { ped.Weapons.RemoveAll(); } else if (item == setAmmo) { cf.SetAllWeaponsAmmo(); } else if (item == refillMaxAmmo) { foreach (var wp in ValidWeapons.Weapons) { if (ped.Weapons.HasWeapon((WeaponHash)wp.Value)) { int maxammo = 200; GetMaxAmmo(ped.Handle, wp.Value, ref maxammo); SetPedAmmo(ped.Handle, wp.Value, maxammo); } } } else if (item == spawnByName) { cf.SpawnCustomWeapon(); } }; #endregion #region Handle checkbox changes menu.OnCheckboxChange += (sender, item, _checked) => { if (item == noReload) { NoReload = _checked; } else if (item == unlimitedAmmo) { UnlimitedAmmo = _checked; } }; #endregion }
public static void InitMenus() { _menuPool = new MenuPool(); mainMenu = new UIMenu("RSML MENU", ""); posMenu_street = new UIMenu("RSML MENU", "~b~Configure Position of street element"); posMenu_heading = new UIMenu("RSML MENU", "~b~Configure Position of heading element"); posMenu_time = new UIMenu("RSML MENU", "~b~Configure Position of time element"); posMenu_currspeed = new UIMenu("RSML MENU", "~b~Configure Position of player speed element"); posMenu_speedlimit = new UIMenu("RSML MENU", "~b~Configure Position of speed limit element"); posMenu_coords = new UIMenu("RSML MENU", "~b~Configure Position of player coords element"); font_sizeMenu = new UIMenu("RSML MENU", ""); boolMenuOptions = new UIMenu("RSML MENU", ""); _menuPool.Add(mainMenu); _menuPool.Add(font_sizeMenu); _menuPool.Add(posMenu_street); _menuPool.Add(posMenu_time); _menuPool.Add(posMenu_speedlimit); _menuPool.Add(posMenu_heading); _menuPool.Add(posMenu_currspeed); _menuPool.Add(posMenu_coords); _menuPool.Add(boolMenuOptions); font_sizes = new List <dynamic> { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 24, 26, 30, 0xF00D, // Dynamic! }; mainMenu.AddItem(set_pos_steet_county_zone = new UIMenuItem("Set position of street/county/zone element", "")); mainMenu.AddItem(set_pos_heading = new UIMenuItem("Set position of heading element", "")); mainMenu.AddItem(set_pos_time = new UIMenuItem("Set position of time element", "")); mainMenu.AddItem(set_pos_speedlimit = new UIMenuItem("Set position of speed limit element", "")); mainMenu.AddItem(set_pos_currspeed = new UIMenuItem("Set position of current player speed element", "")); mainMenu.AddItem(set_pos_coords = new UIMenuItem("Set position of player coords element", "")); mainMenu.AddItem(fontsizemenuCaller = new UIMenuItem("Enter to set font size for elements")); mainMenu.AddItem(boolMenuCaller = new UIMenuItem("Set which elements to show")); font_sizeMenu.AddItem(font_size_steet_county_zone = new UIMenuListItem("Set font size of street/county/zone element", font_sizes, 0)); font_sizeMenu.AddItem(font_size_heading = new UIMenuListItem("Set font size of heading element", font_sizes, 0)); font_sizeMenu.AddItem(font_size_time = new UIMenuListItem("Set font size of time element", font_sizes, 0)); font_sizeMenu.AddItem(font_size_speedlimit = new UIMenuListItem("Set font size of speed limit element", font_sizes, 0)); font_sizeMenu.AddItem(font_size_currspeed = new UIMenuListItem("Set font size of player speed element", font_sizes, 0)); font_sizeMenu.AddItem(font_size_coords = new UIMenuListItem("Set font size of player coords element", font_sizes, 0)); posMenu_street.AddItem(set_pos_steet_county_zone_UP = new UIMenuItem("Up", "")); posMenu_street.AddItem(set_pos_steet_county_zone_DOWN = new UIMenuItem("Down", "")); posMenu_street.AddItem(set_pos_steet_county_zone_RIGHT = new UIMenuItem("Right", "")); posMenu_street.AddItem(set_pos_steet_county_zone_LEFT = new UIMenuItem("Left", "")); posMenu_heading.AddItem(set_pos_heading_UP = new UIMenuItem("Up", "")); posMenu_heading.AddItem(set_pos_heading_DOWN = new UIMenuItem("Down", "")); posMenu_heading.AddItem(set_pos_heading_RIGHT = new UIMenuItem("Right", "")); posMenu_heading.AddItem(set_pos_heading_LEFT = new UIMenuItem("Left", "")); posMenu_time.AddItem(set_pos_time_UP = new UIMenuItem("Up", "")); posMenu_time.AddItem(set_pos_time_DOWN = new UIMenuItem("Down", "")); posMenu_time.AddItem(set_pos_time_RIGHT = new UIMenuItem("Right", "")); posMenu_time.AddItem(set_pos_time_LEFT = new UIMenuItem("Left", "")); posMenu_speedlimit.AddItem(set_pos_speedlimit_UP = new UIMenuItem("Up", "")); posMenu_speedlimit.AddItem(set_pos_speedlimit_DOWN = new UIMenuItem("Down", "")); posMenu_speedlimit.AddItem(set_pos_speedlimit_RIGHT = new UIMenuItem("Right", "")); posMenu_speedlimit.AddItem(set_pos_speedlimit_LEFT = new UIMenuItem("Left", "")); posMenu_currspeed.AddItem(set_pos_currspeed_UP = new UIMenuItem("Up", "")); posMenu_currspeed.AddItem(set_pos_currspeed_DOWN = new UIMenuItem("Down", "")); posMenu_currspeed.AddItem(set_pos_currspeed_RIGHT = new UIMenuItem("Right", "")); posMenu_currspeed.AddItem(set_pos_currspeed_LEFT = new UIMenuItem("Left", "")); posMenu_coords.AddItem(set_pos_coords_UP = new UIMenuItem("Up", "")); posMenu_coords.AddItem(set_pos_coords_DOWN = new UIMenuItem("Down", "")); posMenu_coords.AddItem(set_pos_coords_RIGHT = new UIMenuItem("Right", "")); posMenu_coords.AddItem(set_pos_coords_LEFT = new UIMenuItem("Left", "")); boolMenuOptions.AddItem(option_metric = new UIMenuCheckboxItem("Set metric units (kmph)", Convert.ToBoolean(RageShowMyLocationClass.option_metric))); boolMenuOptions.AddItem(option_12hour_clock = new UIMenuCheckboxItem("Set 12 hour clock", Convert.ToBoolean(RageShowMyLocationClass.option_12hourclock))); boolMenuOptions.AddItem(option_box = new UIMenuCheckboxItem("Set black box around text", Convert.ToBoolean(RageShowMyLocationClass.option_rect_aroud_text))); boolMenuOptions.AddItem(option_coords = new UIMenuCheckboxItem("Show coords", Convert.ToBoolean(RageShowMyLocationClass.option_show_cords))); boolMenuOptions.AddItem(option_heading = new UIMenuCheckboxItem("Show heading", Convert.ToBoolean(RageShowMyLocationClass.option_show_heading))); boolMenuOptions.AddItem(option_player_speed = new UIMenuCheckboxItem("Show player speed", Convert.ToBoolean(RageShowMyLocationClass.option_show_player_speed))); boolMenuOptions.AddItem(option_time = new UIMenuCheckboxItem("Show time", Convert.ToBoolean(RageShowMyLocationClass.option_show_time))); boolMenuOptions.AddItem(option_zone = new UIMenuCheckboxItem("Show zone/discrict", Convert.ToBoolean(RageShowMyLocationClass.option_show_zone))); mainMenu.RefreshIndex(); font_sizeMenu.RefreshIndex(); posMenu_street.RefreshIndex(); posMenu_time.RefreshIndex(); posMenu_speedlimit.RefreshIndex(); posMenu_heading.RefreshIndex(); posMenu_currspeed.RefreshIndex(); posMenu_coords.RefreshIndex(); boolMenuOptions.RefreshIndex(); mainMenu.BindMenuToItem(font_sizeMenu, fontsizemenuCaller); mainMenu.BindMenuToItem(posMenu_street, set_pos_steet_county_zone); mainMenu.BindMenuToItem(posMenu_heading, set_pos_heading); mainMenu.BindMenuToItem(posMenu_time, set_pos_time); mainMenu.BindMenuToItem(posMenu_speedlimit, set_pos_speedlimit); mainMenu.BindMenuToItem(posMenu_currspeed, set_pos_currspeed); mainMenu.BindMenuToItem(posMenu_coords, set_pos_coords); mainMenu.BindMenuToItem(boolMenuOptions, boolMenuCaller); mainMenu.OnItemSelect += OnItemSelect; posMenu_street.OnItemSelect += OnItemSelect_posMenu_street; posMenu_heading.OnItemSelect += OnItemSelect_posMenu_heading; posMenu_time.OnItemSelect += OnItemSelect_posMenu_time; posMenu_speedlimit.OnItemSelect += OnItemSelect_posMenu_speedlimit; posMenu_currspeed.OnItemSelect += OnItemSelect_posMenu_currspeed; posMenu_coords.OnItemSelect += OnItemSelect_posMenu_coords; boolMenuOptions.OnCheckboxChange += OnCheckBoxBoolOptionsChange; font_sizeMenu.OnListChange += OnListChange_font_size; }
private static void SetObservations(UIMenu menu) { menu.Title.Caption = "Observations"; menu.Subtitle.Caption = $"Set your observations!"; menu.Subtitle.Centered = true; var setHeartRate = new UIMenuItem("Set Heart Rate:"); var setBloodPressure = new UIMenuItem("Set Blood Pressure:"); var setSpO2 = new UIMenuItem("Set SpO2:"); var setTemperature = new UIMenuItem("Set Temperature:"); var setBloodSugar = new UIMenuItem("Set Blood Sugar:"); UIMenuListItem setPupils = new UIMenuListItem("Set Pupils", pupilTypes, 0); var setRespRate = new UIMenuItem("Set Resp Rate:"); UIMenuListItem setEcgRythm = new UIMenuListItem("Set ECG Rhythm", ecgRythmTypes, 0); UIMenuListItem setLungSounds = new UIMenuListItem("Set Lung Sounds", lungSoundsTypes, 0); var setPatientName = new UIMenuItem("Set Patient Name:"); var resetObservations = new UIMenuItem("Reset Observations"); menu.AddItem(setHeartRate); menu.AddItem(setBloodPressure); menu.AddItem(setSpO2); menu.AddItem(setTemperature); menu.AddItem(setBloodSugar); menu.AddItem(setPupils); menu.AddItem(setRespRate); menu.AddItem(setEcgRythm); menu.AddItem(setLungSounds); menu.AddItem(setPatientName); menu.AddItem(resetObservations); if (Main.ecgRythm != -1) { setEcgRythm.Index = Main.ecgRythm; } if (Main.lungSounds != -1) { setLungSounds.Index = Main.lungSounds; } if (Main.pupils != -1) { setPupils.Index = Main.pupils; } setEcgRythm.OnListSelected += (_arg, _selection) => { var before = Main.ecgRythm; string beforeString; if (before == -1) { beforeString = ""; } else { beforeString = Convert.ToString(ecgRythmTypes[before]); } Main.ListUpdates("ECG Rythm", beforeString, Convert.ToString(ecgRythmTypes[_selection]), Main.ecgRythmUnit); Main.ecgRythm = _selection; }; setPupils.OnListSelected += (_arg, _selection) => { var before = Main.pupils; string beforeString; if (before == -1) { beforeString = ""; } else { beforeString = Convert.ToString(pupilTypes[before]); } Main.ListUpdates("Pupils", beforeString, Convert.ToString(pupilTypes[_selection]), Main.pupilsUnit); Main.pupils = _selection; }; setLungSounds.OnListSelected += (_arg, _selection) => { var before = Main.lungSounds; string beforeString; if (before == -1) { beforeString = ""; } else { beforeString = Convert.ToString(lungSoundsTypes[before]); } Main.ListUpdates("Lung Sounds", beforeString, Convert.ToString(lungSoundsTypes[_selection]), Main.lungSoundsUnit); Main.lungSounds = _selection; }; if (!IsStringNullOrEmpty(Main.heartRate)) { setHeartRate.SetRightBadge(UIMenuItem.BadgeStyle.Tick); setHeartRate.SetRightLabel(Main.heartRate + Main.heartRateUnit); } if (!IsStringNullOrEmpty(Main.bloodPressure)) { setBloodPressure.SetRightBadge(UIMenuItem.BadgeStyle.Tick); setBloodPressure.SetRightLabel(Main.bloodPressure + "/" + Main.bloodPressure2 + Main.bloodPressureUnit); } if (!IsStringNullOrEmpty(Main.spO2)) { setSpO2.SetRightBadge(UIMenuItem.BadgeStyle.Tick); setSpO2.SetRightLabel(Main.spO2 + Main.spO2Unit); } if (!IsStringNullOrEmpty(Main.temperature)) { setTemperature.SetRightBadge(UIMenuItem.BadgeStyle.Tick); setTemperature.SetRightLabel(Main.temperature + Main.temperatureUnit); } if (!IsStringNullOrEmpty(Main.bloodSugar)) { setBloodSugar.SetRightBadge(UIMenuItem.BadgeStyle.Tick); setBloodSugar.SetRightLabel(Main.bloodSugar + Main.bloodSugarUnit); } if (!IsStringNullOrEmpty(Main.respRate)) { setRespRate.SetRightBadge(UIMenuItem.BadgeStyle.Tick); setRespRate.SetRightLabel(Main.respRate + Main.respRateUnit); } if (!IsStringNullOrEmpty(Main.patientName)) { setPatientName.SetRightBadge(UIMenuItem.BadgeStyle.Tick); setPatientName.SetRightLabel(Main.patientName); } menu.OnItemSelect += (sender, item, index) => { if (item == setHeartRate) { Main.InputHandler("Enter Heart Rate:", "heartRate", Main.heartRate); } else if (item == setBloodPressure) { Main.InputHandler("Enter Blood Pressure (First):", "bloodpressure", Main.bloodPressure); } else if (item == setSpO2) { Main.InputHandler("Enter SpO2:", "spO2", Main.spO2); } else if (item == setTemperature) { Main.InputHandler("Enter Temperature:", "temperature", Main.temperature); } else if (item == setRespRate) { Main.InputHandler("Enter Resp Rate:", "respRate", Main.respRate); } else if (item == setBloodSugar) { Main.InputHandler("Enter Blood Sugar:", "bloodsugar", Main.bloodSugar); } else if (item == setPatientName) { Main.InputHandler("Enter Patient Name:", "patientname", Main.patientName); } else if (item == resetObservations) { Main.ResetObservations(); } }; }
private void CreateMenu() { // Create the menu. menu = new UIMenu(GetPlayerName(PlayerId()), "Weapon Options", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; UIMenuItem getAllWeapons = new UIMenuItem("Get All Weapons", "Get all weapons."); UIMenuItem removeAllWeapons = new UIMenuItem("Remove All Weapons", "Removes all weapons in your inventory."); UIMenuCheckboxItem unlimitedAmmo = new UIMenuCheckboxItem("Unlimited Ammo", UnlimitedAmmo, "Unlimited ammonition supply."); UIMenuCheckboxItem noReload = new UIMenuCheckboxItem("No Reload", NoReload, "Never reload."); ValidWeapons vw = new ValidWeapons(); if (cf.IsAllowed(Permission.WPGetAll)) { menu.AddItem(getAllWeapons); } if (cf.IsAllowed(Permission.WPRemoveAll)) { menu.AddItem(removeAllWeapons); } if (cf.IsAllowed(Permission.WPUnlimitedAmmo)) { menu.AddItem(unlimitedAmmo); } if (cf.IsAllowed(Permission.WPNoReload)) { menu.AddItem(noReload); } foreach (ValidWeapon weapon in vw.WeaponList) { if (weapon.Name != null) { UIMenu weaponMenu = new UIMenu("Weapon Options", weapon.Name, true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; UIMenuItem weaponItem = new UIMenuItem(weapon.Name, $"Open the options for ~y~{weapon.Name.ToString()}~s~."); weaponItem.SetRightLabel("→→→"); weaponItem.SetLeftBadge(UIMenuItem.BadgeStyle.Gun); MainMenu.Mp.Add(weaponMenu); weaponInfo.Add(weaponMenu, weapon); UIMenuItem getOrRemoveWeapon = new UIMenuItem("Equip/Remove Weapon"); getOrRemoveWeapon.SetLeftBadge(UIMenuItem.BadgeStyle.Gun); weaponMenu.AddItem(getOrRemoveWeapon); UIMenuItem fillAmmo = new UIMenuItem("Re-fill Ammo", "Get max ammo for this weapon."); fillAmmo.SetLeftBadge(UIMenuItem.BadgeStyle.Ammo); weaponMenu.AddItem(fillAmmo); List <dynamic> tints = new List <dynamic>(); if (weapon.Name.Contains(" Mk II")) { foreach (var tint in ValidWeapons.WeaponTintsMkII) { tints.Add(tint.Key); } } else { foreach (var tint in ValidWeapons.WeaponTints) { tints.Add(tint.Key); } } UIMenuListItem weaponTints = new UIMenuListItem("Tints", tints, 0, "Select a tint for your weapon."); weaponMenu.AddItem(weaponTints); weaponMenu.OnListChange += (sender, item, index) => { if (item == weaponTints) { if (HasPedGotWeapon(PlayerPedId(), weaponInfo[sender].Hash, false)) { SetPedWeaponTintIndex(PlayerPedId(), weaponInfo[sender].Hash, index); } else { Notify.Error("You need to get the weapon first!"); } } }; weaponMenu.OnItemSelect += (sender, item, index) => { if (item == getOrRemoveWeapon) { var info = weaponInfo[sender]; uint hash = info.Hash; if (HasPedGotWeapon(PlayerPedId(), hash, false)) { RemoveWeaponFromPed(PlayerPedId(), hash); Subtitle.Custom("Weapon removed."); } else { var ammo = 255; GetMaxAmmo(PlayerPedId(), hash, ref ammo); GiveWeaponToPed(PlayerPedId(), hash, ammo, false, true); Subtitle.Custom("Weapon added."); } } else if (item == fillAmmo) { if (HasPedGotWeapon(PlayerPedId(), weaponInfo[sender].Hash, false)) { var ammo = 900; GetMaxAmmo(PlayerPedId(), weaponInfo[sender].Hash, ref ammo); SetAmmoInClip(PlayerPedId(), weaponInfo[sender].Hash, ammo); } else { Notify.Error("You need to get the weapon first before re-filling ammo!"); } } }; if (weapon.Components != null) { if (weapon.Components.Count > 0) { foreach (var comp in weapon.Components) { UIMenuItem compItem = new UIMenuItem(comp.Key, "Click to equip or remove this component."); weaponComponents.Add(compItem, comp.Key); weaponMenu.AddItem(compItem); weaponMenu.OnItemSelect += (sender, item, index) => { if (item == compItem) { var Weapon = weaponInfo[sender]; var componentHash = Weapon.Components[weaponComponents[item]]; if (HasPedGotWeapon(PlayerPedId(), Weapon.Hash, false)) { if (HasPedGotWeaponComponent(PlayerPedId(), Weapon.Hash, componentHash)) { RemoveWeaponComponentFromPed(PlayerPedId(), Weapon.Hash, componentHash); Subtitle.Custom("Component removed."); } else { GiveWeaponComponentToPed(PlayerPedId(), Weapon.Hash, componentHash); Subtitle.Custom("Component equiped."); } } else { Notify.Error("You need to get the weapon first before you can modify it."); } } }; } } } weaponMenu.RefreshIndex(); weaponMenu.UpdateScaleform(); menu.AddItem(weaponItem); menu.BindMenuToItem(weaponMenu, weaponItem); } } menu.OnItemSelect += (sender, item, index) => { Ped ped = new Ped(PlayerPedId()); if (item == getAllWeapons) { foreach (var weapon in ValidWeapons.Weapons) { var ammo = 255; GetMaxAmmo(PlayerPedId(), weapon.Value, ref ammo); ped.Weapons.Give((WeaponHash)weapon.Value, ammo, weapon.Key == "Unarmed", true); } //ped.Weapons.Give(WeaponHash.Unarmed, 0, true, true); } else if (item == removeAllWeapons) { ped.Weapons.RemoveAll(); } }; menu.OnCheckboxChange += (sender, item, _checked) => { if (item == noReload) { NoReload = _checked; } else if (item == unlimitedAmmo) { UnlimitedAmmo = _checked; } }; }
private static void createRoadSignsMenu() { Game.FrameRender += Process; _menuPool = new MenuPool(); roadManagementMenu = new UIMenu("道路管理", "~b~配置する標識を選択"); _menuPool.Add(roadManagementMenu); List <string> availableBarriers = new List <string> { "Police Do Not Cross", "Concrete 1", "Concrete 2", "Roadwork Stripes", "Plain Stripes", "Stopped Vehicles", "Stripes Right", "Stripes Left", }; roadManagementMenu.AddItem(barriersList = new UIMenuListItem("Barriers", "", availableBarriers)); List <string> availableCones = new List <string> { "Large Striped 1", "Large Striped 2", "Large not Striped", "Small Striped 1", "Small Striped 2", "Small not Striped" }; roadManagementMenu.AddItem(conesList = new UIMenuListItem("Cones", "", availableCones)); removeLastDroppedSignItem = new UIMenuItem("最後に設置した標識を削除"); roadManagementMenu.AddItem(removeLastDroppedSignItem); roadManagementMenu.AddItem(RemoveNearestSignItem = new UIMenuItem("近くの標識を削除")); removeAllSignsItem = new UIMenuItem("すべての標識を削除"); roadManagementMenu.AddItem(removeAllSignsItem); barriersList.OnListChanged += OnListChanged; conesList.OnListChanged += OnListChanged; roadManagementMenu.RefreshIndex(); roadManagementMenu.OnItemSelect += OnItemSelect; roadManagementMenu.MouseControlsEnabled = false; roadManagementMenu.AllowCameraMovement = true; PlaceSignMenu = new UIMenu("道路管理", "~b~配置オプション"); PlaceSignMenu.AddItem(PlaceSignItem = new UIMenuItem("Place Sign")); PlaceSignMenu.AddItem(UpdateSignPositionItem = new UIMenuCheckboxItem("標識位置を更新", true, "オンにすると、標識が現在の位置に常に更新されます。")); List <string> availableSpawnDirections = new List <string> { "1", "2", "3", "4" }; PlaceSignMenu.AddItem(SpawnDirectionListItem = new UIMenuListItem("方向", "", availableSpawnDirections)); List <string> availableSpawnMultipliers = new List <string> { "2", "3", "4", "5", "6", "7", "8", "9", "10" }; PlaceSignMenu.AddItem(SpawnMultiplierListItem = new UIMenuListItem("距離", "", availableSpawnMultipliers)); List <string> AvailableHeadingModifiers = new List <string> { "0", "45", "90", "135", "180", "225", "270", "315", }; PlaceSignMenu.AddItem(HeadingItem = new UIMenuListItem("度単位の回転", "", AvailableHeadingModifiers)); PlaceSignMenu.AddItem(EnablePreviewItem = new UIMenuCheckboxItem("プレビューを有効", true)); PlaceSignMenu.RefreshIndex(); PlaceSignMenu.OnItemSelect += OnItemSelect; PlaceSignMenu.MouseControlsEnabled = false; PlaceSignMenu.AllowCameraMovement = true; PlaceSignMenu.ParentMenu = roadManagementMenu; _menuPool.Add(PlaceSignMenu); //roadManagementMenu.ResetCursorOnOpen = false; }
public void BuildMenu(Race race) { GUI.MainMenu.Clear(); GUI.MainMenu.SetBannerType(new UIResRectangle()); _raceSettings.Clear(); _raceSettings["TOD"] = "Current"; _raceSettings["Weather"] = "Current"; _raceSettings["Wanted"] = false; _raceSettings["Opponents"] = "Random"; _raceSettings["Traffic"] = true; _raceSettings["Laps"] = 1; _previewVehicle = World.CreateVehicle(Helpers.RequestModel((int)race.AvailableVehicles[0]), race.Trigger); _previewVehicle.IsPersistent = false; List <dynamic> timeList = new List <dynamic> { "Current", "Sunrise", "Day", "Sunset", "Night" }; var timeItem = new UIMenuListItem("Time of Day", timeList, 0); timeItem.OnListChanged += (item, index) => { _raceSettings["TOD"] = item.IndexToItem(index); }; var weatherList = new List <dynamic> { "Current" }; Enum.GetNames(typeof(Weather)).ToList().ForEach(w => weatherList.Add(w)); var weatherItem = new UIMenuListItem("Weather", weatherList, 0); weatherItem.OnListChanged += (item, index) => { _raceSettings["Weather"] = item.IndexToItem(index); }; var copItem = new UIMenuCheckboxItem("Wanted Levels", false); copItem.CheckboxEvent += (i, checkd) => { _raceSettings["Wanted"] = checkd; }; var opponentsList = new List <dynamic> { "Random" }; Enumerable.Range(1, race.SpawnPoints.Length - 1).ToList().ForEach(n => opponentsList.Add(n)); var opponentsItem = new UIMenuListItem("Number of Opponents", opponentsList, 0); opponentsItem.OnListChanged += (item, index) => { _raceSettings["Opponents"] = item.IndexToItem(index); }; var trafficItem = new UIMenuCheckboxItem("Traffic", true); trafficItem.CheckboxEvent += (i, checkd) => { _raceSettings["Traffic"] = checkd; }; List <dynamic> tmpList = new List <dynamic>(); race.AvailableVehicles.ToList().ForEach(x => tmpList.Add(x)); var carItem = new UIMenuListItem("Vehicle", tmpList, 0); carItem.OnListChanged += (item, index) => { VehicleHash outHash; Enum.TryParse(item.IndexToItem(index).ToString(), out outHash); var oldC = _previewVehicle.PrimaryColor; _previewVehicle?.Delete(); _previewVehicle = World.CreateVehicle(Helpers.RequestModel((int)outHash), race.Trigger); if (_previewVehicle == null) { return; } _previewVehicle.PrimaryColor = oldC; _previewVehicle.SecondaryColor = oldC; _previewVehicle.IsPersistent = false; }; List <dynamic> colors = new List <dynamic> { VehicleColor.MatteYellow, VehicleColor.Orange, VehicleColor.MatteRed, VehicleColor.HotPink, VehicleColor.MattePurple, VehicleColor.MatteDarkBlue, VehicleColor.Blue, VehicleColor.EpsilonBlue, VehicleColor.MatteLimeGreen, VehicleColor.Green, }; var colorItem = new UIMenuListItem("Color", colors, 0); colorItem.OnListChanged += (ite, index) => { VehicleColor outHash; Enum.TryParse(ite.IndexToItem(index).ToString(), out outHash); _previewVehicle.PrimaryColor = outHash; _previewVehicle.SecondaryColor = outHash; }; var confimItem = new UIMenuItem("Start Race"); confimItem.Activated += (item, index) => { GUI.MainMenu.Visible = false; GUI.IsInMenu = false; Game.Player.CanControlCharacter = true; World.RenderingCamera = null; StartRace(race); }; GUI.MainMenu.OnMenuClose += menu => { World.RenderingCamera = null; GUI.IsInMenu = false; Game.Player.CanControlCharacter = true; _previewVehicle?.Delete(); }; GUI.MainMenu.AddItem(timeItem); GUI.MainMenu.AddItem(weatherItem); GUI.MainMenu.AddItem(copItem); GUI.MainMenu.AddItem(carItem); GUI.MainMenu.AddItem(colorItem); GUI.MainMenu.AddItem(opponentsItem); GUI.MainMenu.AddItem(trafficItem); if (race.LapsAvailable) { var lapList = new List <dynamic>(); Enumerable.Range(1, 20).ToList().ForEach(n => lapList.Add(n)); var lapItem = new UIMenuListItem("Laps", lapList, 0); lapItem.OnListChanged += (item, index) => { _raceSettings["Laps"] = item.IndexToItem(index); }; GUI.MainMenu.AddItem(lapItem); } GUI.MainMenu.AddItem(confimItem); GUI.MainMenu.RefreshIndex(); }
public static void Initialize() { MainMenu = new UIMenu("BackToTheFutureV", Game.GetLocalizedString("BTTFV_Menu_Description")); MainMenu.SetBannerType("./scripts/BackToTheFutureV/BTTFV.png"); MainMenu.AddItem(spawnDelorean = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_Spawn") + " " + Game.GetLocalizedString("BTTFV_Menu_DMC12"), Game.GetLocalizedString("BTTFV_Menu_SpawnDMC12_Description"))); MainMenu.AddItem(spawnDelorean1 = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_Spawn") + " " + Game.GetLocalizedString("BTTFV_Menu_BTTF1"), Game.GetLocalizedString("BTTFV_Menu_SpawnBTTF1_Description"))); MainMenu.AddItem(spawnDelorean2 = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_Spawn") + " " + Game.GetLocalizedString("BTTFV_Menu_BTTF2"), Game.GetLocalizedString("BTTFV_Menu_SpawnBTTF2_Description"))); MainMenu.AddItem(spawnDelorean3 = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_Spawn") + " " + Game.GetLocalizedString("BTTFV_Menu_BTTF3"), Game.GetLocalizedString("BTTFV_Menu_SpawnBTTF3_Description"))); spawnPresetDelorean = Utils.AttachSubmenu(MainMenu, InteractionMenuManager.PresetsMenu, Game.GetLocalizedString("BTTFV_Menu_Spawn_Preset"), Game.GetLocalizedString("BTTFV_Menu_Spawn_Preset_Description")); spawnCustomDelorean = Utils.AttachSubmenu(MainMenu, InteractionMenuManager.SpawnMenu, Game.GetLocalizedString("BTTFV_Menu_Build_Delorean"), Game.GetLocalizedString("BTTFV_Menu_Build_Delorean_Description")); rcMenu = Utils.AttachSubmenu(MainMenu, InteractionMenuManager.RCMenu, Game.GetLocalizedString("BTTFV_Menu_RCMenu"), Game.GetLocalizedString("BTTFV_Menu_RCMenu_Description")); MainMenu.AddItem(removeDelorean = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_RemoveTimeMachine"), Game.GetLocalizedString("BTTFV_Menu_RemoveTimeMachine_Description"))); MainMenu.AddItem(removeOtherDeloreans = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_RemoveOtherTimeMachines"), Game.GetLocalizedString("BTTFV_Menu_RemoveOtherTimeMachines_Description"))); MainMenu.AddItem(removeAllDeloreans = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_RemoveAllTimeMachines"), Game.GetLocalizedString("BTTFV_Menu_RemoveAllTimeMachines_Description"))); MainMenu.OnMenuOpen += MainMenu_OnMenuOpen; MainMenu.OnItemSelect += MainMenu_OnItemSelect; Main.MenuPool.Add(MainMenu); settingsMenu = Main.MenuPool.AddSubMenu(MainMenu, Game.GetLocalizedString("BTTFV_Menu_Settings"), Game.GetLocalizedString("BTTFV_Menu_Settings_Description")); settingsMenu.SetBannerType("./scripts/BackToTheFutureV/BTTFV.png"); settingsMenu.AddItem(cinematicSpawn = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_CinematicSpawn"), ModSettings.CinematicSpawn, Game.GetLocalizedString("BTTFV_Menu_CinematicSpawn_Description"))); settingsMenu.AddItem(useInputToggle = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_InputToggle"), ModSettings.UseInputToggle, Game.GetLocalizedString("BTTFV_Menu_InputToggle_Description"))); settingsMenu.AddItem(forceFlyMode = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_ForceFlyMode"), ModSettings.ForceFlyMode, Game.GetLocalizedString("BTTFV_Menu_ForceFlyMode_Description"))); settingsMenu.AddItem(LandingSystem = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_LandingSystem"), ModSettings.LandingSystem, Game.GetLocalizedString("BTTFV_Menu_LandingSystem_Description"))); settingsMenu.AddItem(GlowingWormholeEmitter = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_GlowingWormholeEmitter"), ModSettings.GlowingWormholeEmitter, Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_GlowingWormholeEmitter_Description"))); settingsMenu.AddItem(GlowingPlutoniumReactor = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_GlowingPlutoniumReactor"), ModSettings.GlowingPlutoniumReactor, Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_GlowingPlutoniumReactor_Description"))); settingsMenu.OnItemSelect += SettingsMenu_OnItemSelect; settingsMenu.OnCheckboxChange += SettingsMenu_OnCheckboxChange; soundsMenu = Main.MenuPool.AddSubMenu(settingsMenu, Game.GetLocalizedString("BTTFV_Menu_SoundsMenu"), Game.GetLocalizedString("BTTFV_Menu_SoundsMenu_Description")); soundsMenu.SetBannerType("./scripts/BackToTheFutureV/BTTFV.png"); soundsMenu.AddItem(playFluxCapacitorSound = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_FluxCapacitorSound"), ModSettings.PlayFluxCapacitorSound, Game.GetLocalizedString("BTTFV_Menu_FluxCapacitorSound_Description"))); soundsMenu.AddItem(playDiodeSound = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_CircuitsBeep"), ModSettings.PlayDiodeBeep, Game.GetLocalizedString("BTTFV_Menu_CircuitsBeep_Description"))); soundsMenu.AddItem(playSpeedoBeep = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_SpeedoBeep"), ModSettings.PlaySpeedoBeep, Game.GetLocalizedString("BTTFV_Menu_SpeedoBeep_Description"))); soundsMenu.AddItem(playEngineSounds = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_EngineSounds"), ModSettings.PlayEngineSounds, Game.GetLocalizedString("BTTFV_Menu_EngineSounds_Description"))); soundsMenu.OnCheckboxChange += SettingsMenu_OnCheckboxChange; eventsMenu = Main.MenuPool.AddSubMenu(settingsMenu, Game.GetLocalizedString("BTTFV_Menu_EventsMenu"), Game.GetLocalizedString("BTTFV_Menu_EventsMenu_Description")); eventsMenu.SetBannerType("./scripts/BackToTheFutureV/BTTFV.png"); eventsMenu.AddItem(LightningStrikeEvent = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_LightningStrikeEvent"), ModSettings.LightningStrikeEvent, Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_LightningStrikeEvent_Description"))); eventsMenu.AddItem(EngineStallEvent = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_EngineStallEvent"), ModSettings.EngineStallEvent, Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_EngineStallEvent_Description"))); eventsMenu.AddItem(TurbulenceEvent = new UIMenuCheckboxItem(Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_TurbolenceEvent"), ModSettings.TurbulenceEvent, Game.GetLocalizedString("BTTFV_Menu_TimeMachineMenu_TurbolenceEvent_Description"))); eventsMenu.OnCheckboxChange += SettingsMenu_OnCheckboxChange; tcdMenu = Main.MenuPool.AddSubMenu(settingsMenu, Game.GetLocalizedString("BTTFV_Menu_TCDMenu"), Game.GetLocalizedString("BTTFV_Menu_TCDMenu_Description")); tcdMenu.SetBannerType("./scripts/BackToTheFutureV/BTTFV.png"); tcdMenu.AddItem(tcdBackground = new UIMenuListItem(Game.GetLocalizedString("BTTFV_Menu_TCDBackground"), Enum.GetValues(typeof(TCDBackground)).Cast <object>().ToList(), 0, Game.GetLocalizedString("BTTFV_Menu_TCDBackground_Description"))); tcdMenu.AddItem(changeTCD = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_TCDEditMode"), Game.GetLocalizedString("BTTFV_Menu_TCDEditMode_Description"))); tcdMenu.AddItem(resetToDefaultTCD = new UIMenuItem(Game.GetLocalizedString("BTTFV_Menu_TCDReset"), Game.GetLocalizedString("BTTFV_Menu_TCDReset_Description"))); tcdBackground.OnListChanged += TcdBackground_OnListChanged; tcdMenu.OnItemSelect += TcdMenu_OnItemSelect; }
/// <summary> /// Creates the menu(s). /// </summary> private void CreateMenu() { // Create the menu. menu = new UIMenu(GetPlayerName(PlayerId()), "Player Appearance", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; //Create the submenus. spawnSavedPedMenu = new UIMenu("Saved Peds", "Spawn a saved ped", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; deleteSavedPedMenu = new UIMenu("Saved Peds", "Delete a saved ped", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; pedTextures = new UIMenu("Ped Customization", "Customize your ped", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; // Add the (submenus) to the menu pool. MainMenu.Mp.Add(pedTextures); MainMenu.Mp.Add(spawnSavedPedMenu); MainMenu.Mp.Add(deleteSavedPedMenu); // Create the menu items. UIMenuItem pedCustomization = new UIMenuItem("Ped Customization", "Modify your ped's appearance."); pedCustomization.SetRightLabel("→→→"); UIMenuItem savePed = new UIMenuItem("Save Current Ped", "Save your current ped and clothes."); savePed.SetRightBadge(UIMenuItem.BadgeStyle.Tick); UIMenuItem spawnSavedPed = new UIMenuItem("Spawn Saved Ped", "Spawn one of your saved peds."); spawnSavedPed.SetRightLabel("→→→"); UIMenuItem deleteSavedPed = new UIMenuItem("Delete Saved Ped", "Delete one of your saved peds."); deleteSavedPed.SetRightLabel("→→→"); deleteSavedPed.SetLeftBadge(UIMenuItem.BadgeStyle.Alert); UIMenuItem spawnByName = new UIMenuItem("Spawn Ped By Name", "Enter a model name of a custom ped you want to spawn."); List <dynamic> walkstyles = new List <dynamic>() { "Normal", "Injured", "Tough Guy", "Femme", "Gangster", "Posh", "Sexy", "Business", "Drunk", "Hipster" }; UIMenuListItem walkingStyle = new UIMenuListItem("Walking Style", walkstyles, 0, "Change the walking style of your current ped. " + "You need to re-apply this each time you change player model or load a saved ped."); // Add items to the mneu. menu.AddItem(pedCustomization); menu.AddItem(savePed); menu.AddItem(spawnSavedPed); menu.AddItem(deleteSavedPed); menu.AddItem(walkingStyle); // Bind items to the submenus. if (cf.IsAllowed(Permission.PACustomize)) { menu.BindMenuToItem(pedTextures, pedCustomization); } else { pedCustomization.Enabled = false; pedCustomization.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); pedCustomization.Description = "This option has been disabled by the server owner."; } if (cf.IsAllowed(Permission.PASpawnSaved)) { menu.BindMenuToItem(spawnSavedPedMenu, spawnSavedPed); } else { spawnSavedPed.Enabled = false; spawnSavedPed.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); spawnSavedPed.Description = "This option has been disabled by the server owner."; } menu.BindMenuToItem(deleteSavedPedMenu, deleteSavedPed); UIMenu addonPeds = new UIMenu("Model Spawner", "Spawn Addon Ped", true) { MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false, ScaleWithSafezone = false }; UIMenuItem addonPedsBtn = new UIMenuItem("Addon Peds", "Choose a player skin from the addons list available on this server."); menu.AddItem(addonPedsBtn); MainMenu.Mp.Add(addonPeds); if (AddonPeds != null) { if (AddonPeds.Count > 0) { addonPedsBtn.SetRightLabel("→→→"); foreach (KeyValuePair <string, uint> ped in AddonPeds) { var button = new UIMenuItem(ped.Key, "Click to use this ped."); addonPeds.AddItem(button); if (!IsModelAPed(ped.Value) || !IsModelInCdimage(ped.Value)) { button.Enabled = false; button.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); button.Description = "This ped is not available on this server. Are you sure the model is valid?"; } } addonPeds.OnItemSelect += (sender, item, index) => { if (item.Enabled) { cf.SetPlayerSkin(AddonPeds.ElementAt(index).Value, new CommonFunctions.PedInfo() { version = -1 }); } else { Notify.Error("This ped is not available. Please ask the server owner to verify this addon ped."); } }; menu.BindMenuToItem(addonPeds, addonPedsBtn); } else { addonPedsBtn.Enabled = false; addonPedsBtn.Description = "This server does not have any addon peds available."; addonPedsBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); } } else { addonPedsBtn.Enabled = false; addonPedsBtn.Description = "This server does not have any addon peds available."; addonPedsBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); } addonPeds.RefreshIndex(); addonPeds.UpdateScaleform(); // Add the spawn by name button after the addon peds menu item. menu.AddItem(spawnByName); // Handle button presses. menu.OnItemSelect += (sender, item, index) => { if (item == pedCustomization) { RefreshCustomizationMenu(); } else if (item == spawnSavedPed) { RefreshSpawnSavedPedMenu(); } else if (item == deleteSavedPed) { RefreshDeleteSavedPedMenu(); } else if (item == savePed) { cf.SavePed(); } else if (item == spawnByName) { cf.SpawnPedByName(); } }; // Loop through all the modelNames and create lists of max 50 ped names each. for (int i = 0; i < (modelNames.Count / 50) + 1; i++) { List <dynamic> pedList = new List <dynamic>(); for (int ii = 0; ii < 50; ii++) { int index = ((i * 50) + ii); if (index >= modelNames.Count) { break; } int max = ((modelNames.Count / 50) != i) ? 50 : modelNames.Count % 50; pedList.Add(modelNames[index] + $" ({(ii + 1).ToString()}/{max.ToString()})"); } UIMenuListItem pedl = new UIMenuListItem("Peds #" + (i + 1).ToString(), pedList, 0); menu.AddItem(pedl); if (!cf.IsAllowed(Permission.PASpawnNew)) { pedl.Enabled = false; pedl.SetLeftBadge(UIMenuItem.BadgeStyle.Lock); pedl.Description = "This option has been disabled by the server owner."; } } // Handle list selections. menu.OnListSelect += (sender, item, index) => { if (item == walkingStyle) { Subtitle.Custom("Ped is: " + IsPedMale(PlayerPedId())); cf.SetWalkingStyle(walkstyles[index].ToString()); } else { int i = ((sender.CurrentSelection - 7) * 50) + index; string modelName = modelNames[i]; if (cf.IsAllowed(Permission.PASpawnNew)) { cf.SetPlayerSkin(modelName, new CommonFunctions.PedInfo() { version = -1 }); } } }; }
/// <summary> /// Creates the menu. /// </summary> private void CreateMenu() { #region create menu and menu items // Create the menu. menu = new UIMenu(GetPlayerName(PlayerId()), "Player Options", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; // Create all checkboxes. UIMenuCheckboxItem playerGodModeCheckbox = new UIMenuCheckboxItem("Godmode", PlayerGodMode, "Makes you invincible."); UIMenuCheckboxItem invisibleCheckbox = new UIMenuCheckboxItem("Invisible", PlayerInvisible, "Makes you invisible to yourself and others."); UIMenuCheckboxItem unlimitedStaminaCheckbox = new UIMenuCheckboxItem("Unlimited Stamina", PlayerStamina, "Allows you to run forever without slowing down or taking damage."); UIMenuCheckboxItem fastRunCheckbox = new UIMenuCheckboxItem("Fast Run", PlayerFastRun, "Get ~g~Snail~s~ powers and run very fast!"); UIMenuCheckboxItem fastSwimCheckbox = new UIMenuCheckboxItem("Fast Swim", PlayerFastSwim, "Get ~g~Snail 2.0~s~ powers and swim super fast!"); UIMenuCheckboxItem superJumpCheckbox = new UIMenuCheckboxItem("Super Jump", PlayerSuperJump, "Get ~g~Snail 3.0~s~ powers and jump like a champ!"); UIMenuCheckboxItem noRagdollCheckbox = new UIMenuCheckboxItem("No Ragdoll", PlayerNoRagdoll, "Disables player ragdoll, makes you not fall off your bike anymore."); UIMenuCheckboxItem neverWantedCheckbox = new UIMenuCheckboxItem("Never Wanted", PlayerNeverWanted, "Disables all wanted levels."); UIMenuCheckboxItem everyoneIgnoresPlayerCheckbox = new UIMenuCheckboxItem("Everyone Ignore Player", PlayerIsIgnored, "Everyone will leave you alone."); UIMenuCheckboxItem playerFrozenCheckbox = new UIMenuCheckboxItem("Freeze Player", PlayerFrozen, "Freezes your current location, why would you do this...?"); // Wanted level options List <dynamic> wantedLevelList = new List <dynamic> { "No Wanted Level", 1, 2, 3, 4, 5 }; UIMenuListItem setWantedLevel = new UIMenuListItem("Set Wanted Level", wantedLevelList, GetPlayerWantedLevel(PlayerId()), "Set your wanted level by selecting a value, and pressing enter."); // Player options List <dynamic> playerOptionsList = new List <dynamic> { "Max Health", "Max Armor", "Clean Player Clothes", "Player Dry", "Player Wet", "~r~Commit Suicide", "Drive To Waypoint", "Drive Around Randomly" }; UIMenuListItem playerFunctions = new UIMenuListItem("Player Functions", playerOptionsList, 0, "Select an option and press enter to run/stop it."); // Scenarios (list can be found in the PedScenarios class) UIMenuListItem playerScenarios = new UIMenuListItem("Player Scenarios", PedScenarios.Scenarios, 0, "Select a scenario and hit enter to start it. Selecting another scenario will override the current scenario. If you're already playing the selected scenario, selecting it again will stop the scenario."); UIMenuItem stopScenario = new UIMenuItem("Force Stop Scenario", "This will force a playing scenario to stop immediately, without waiting for it to finish it's 'stopping' animation."); #endregion #region add items to menu based on permissions // Add all checkboxes to the menu. (keeping permissions in mind) if (cf.IsAllowed(Permission.POGod)) { menu.AddItem(playerGodModeCheckbox); } if (cf.IsAllowed(Permission.POInvisible)) { menu.AddItem(invisibleCheckbox); } // Always allowed. menu.AddItem(unlimitedStaminaCheckbox); if (cf.IsAllowed(Permission.POFastRun)) { menu.AddItem(fastRunCheckbox); } if (cf.IsAllowed(Permission.POFastSwim)) { menu.AddItem(fastSwimCheckbox); } if (cf.IsAllowed(Permission.POSuperjump)) { menu.AddItem(superJumpCheckbox); } if (cf.IsAllowed(Permission.PONoRagdoll)) { menu.AddItem(noRagdollCheckbox); } if (cf.IsAllowed(Permission.PONeverWanted)) { menu.AddItem(neverWantedCheckbox); } if (cf.IsAllowed(Permission.POSetWanted)) { menu.AddItem(setWantedLevel); } if (cf.IsAllowed(Permission.POIgnored)) { menu.AddItem(everyoneIgnoresPlayerCheckbox); } if (cf.IsAllowed(Permission.POFunctions)) { menu.AddItem(playerFunctions); } if (cf.IsAllowed(Permission.POFreeze)) { menu.AddItem(playerFrozenCheckbox); } if (cf.IsAllowed(Permission.POScenarios)) { menu.AddItem(playerScenarios); menu.AddItem(stopScenario); } #endregion #region handle all events // Checkbox changes. menu.OnCheckboxChange += (sender, item, _checked) => { // God Mode toggled. if (item == playerGodModeCheckbox) { PlayerGodMode = _checked; } // Invisibility toggled. else if (item == invisibleCheckbox) { PlayerInvisible = _checked; } // Unlimited Stamina toggled. else if (item == unlimitedStaminaCheckbox) { PlayerStamina = _checked; } // Fast run toggled. else if (item == fastRunCheckbox) { PlayerFastRun = _checked; SetRunSprintMultiplierForPlayer(PlayerId(), (_checked ? 1.49f : 1f)); } // Fast swim toggled. else if (item == fastSwimCheckbox) { PlayerFastSwim = _checked; SetSwimMultiplierForPlayer(PlayerId(), (_checked ? 1.49f : 1f)); } // Super jump toggled. else if (item == superJumpCheckbox) { PlayerSuperJump = _checked; } // No ragdoll toggled. else if (item == noRagdollCheckbox) { PlayerNoRagdoll = _checked; } // Never wanted toggled. else if (item == neverWantedCheckbox) { PlayerNeverWanted = _checked; } // Everyone ignores player toggled. else if (item == everyoneIgnoresPlayerCheckbox) { PlayerIsIgnored = _checked; } // Freeze player toggled. else if (item == playerFrozenCheckbox) { PlayerFrozen = _checked; if (!_checked) { FreezeEntityPosition(PlayerPedId(), false); } } }; // List selections menu.OnListSelect += (sender, listItem, index) => { // Set wanted Level if (listItem == setWantedLevel) { SetPlayerWantedLevel(PlayerId(), index, false); SetPlayerWantedLevelNow(PlayerId(), false); } // Player options (healing, cleaning, armor, dry/wet, etc) else if (listItem == playerFunctions) { switch (index) { // Max Health case 0: SetEntityHealth(PlayerPedId(), GetEntityMaxHealth(PlayerPedId())); Subtitle.Info("Max ~g~health ~s~applied.", prefix: "Info:"); break; // Max Armor case 1: SetPedArmour(PlayerPedId(), GetPlayerMaxArmour(PlayerId())); Subtitle.Info("Max ~b~armor ~s~applied.", prefix: "Info:"); break; // Clean Player Clothes case 2: ClearPedBloodDamage(PlayerPedId()); Subtitle.Info("Cleaned player clothes.", prefix: "Info:"); break; // Make Player Dry case 3: ClearPedWetness(PlayerPedId()); Subtitle.Info("Player clothes are now ~c~dry~s~.", prefix: "Info:"); break; // Make Player Wet case 4: SetPedWetnessHeight(PlayerPedId(), 2f); SetPedWetnessEnabledThisFrame(PlayerPedId()); Subtitle.Info("Player clothes are now ~b~wet~s~.", prefix: "Info:"); break; // Kill Player case 5: cf.CommitSuicide(); //SetEntityHealth(PlayerPedId(), 0); //Subtitle.Info("You ~r~killed ~s~yourself.", prefix: "Info:"); break; // Drive To Waypoint case 6: if (!Game.IsWaypointActive) { Subtitle.Error("You need to set a ~p~waypoint ~s~first!", prefix: "Error:"); } else if (IsPedInAnyVehicle(PlayerPedId(), false)) { try { cf.DriveToWp(); } catch (NotImplementedException e) { cf.Log("\n\r[vMenu] Exception: " + e.Message + "\r\n"); Notify.Error(CommonErrors.UnknownError, placeholderValue: "This function is not implemented yet."); } } else { Subtitle.Error("You need a ~r~vehicle ~s~first!", prefix: "Error:"); } break; // Drive Around Randomly (wander) case 7: if (IsPedInAnyVehicle(PlayerPedId(), false)) { try { cf.DriveWander(); } catch (NotImplementedException e) { cf.Log("\n\r[vMenu] Exception: " + e.Message + "\r\n"); Notify.Error(CommonErrors.UnknownError, placeholderValue: "This function is not implemented yet."); } } else { Subtitle.Error("You need a ~r~vehicle ~s~first!", prefix: "Error:"); } break; default: break; } } // Player Scenarios else if (listItem == playerScenarios) { cf.PlayScenario(PedScenarios.ScenarioNames[PedScenarios.Scenarios[index]]); } }; // button presses menu.OnItemSelect += (sender, item, index) => { // Force Stop Scenario button if (item == stopScenario) { // Play a new scenario named "forcestop" (this scenario doesn't exist, but the "Play" function checks // for the string "forcestop", if that's provided as th scenario name then it will forcefully clear the player task. cf.PlayScenario("forcestop"); } }; #endregion }
/// <summary> /// Main part of the interaction menu /// </summary> public static void Main() { Game.FrameRender += Process; _menuPool = new MenuPool(); mainMenu = new UIMenu("Interaction Menu", "~b~Random Callouts Interaction Menu"); _menuPool.Add(mainMenu); // Adds our items var armorMenuItem = new UIMenuItem("Armor Menu", "Open up the Armor Menu."); mainMenu.AddItem(armorMenuItem); var weaponsMenuItem = new UIMenuItem("Weapons Menu", "Open up the Weapons Menu."); mainMenu.AddItem(weaponsMenuItem); var devMenuStartCalloutItem = new UIMenuItem("Start Callout Menu", "Open the menu for the testers and the developers."); mainMenu.AddItem(devMenuStartCalloutItem); var devMenuTestDistancesItem = new UIMenuItem("Distance Checking Menu", "Open up the menu that allows you to check how long a ped will spawn away."); mainMenu.AddItem(devMenuTestDistancesItem); var carMenuItem = new UIMenuItem("Car Menu", "Open up the Car Menu"); mainMenu.AddItem(carMenuItem); mainMenu.AddItem(addHealthItem = new UIMenuItem("Use a Med Kit", "Use a med kit and clean your clothes.")); mainMenu.RefreshIndex(); mainMenu.OnItemSelect += OnItemSelectMainMenu; // Car Menu carMenu = new UIMenu("Interaction Menu", "~b~Car Menu"); _menuPool.Add(carMenu); carMenu.AddItem(repairVehicle = new UIMenuItem("Repair your Vehicle", "Repair your current vehicle you are in.")); carMenu.AddItem(cleanVehicle = new UIMenuItem("Clean your Vehicle", "Clean your current vehicle you are in.")); var carsModels = new List <dynamic> { "Police", "Police2", "Police3", "Police4", "Sheriff", "Sheriff2", "PoliceB", "PoliceT", "Riot", "FBI", "FBI2", "PRanger" }; carMenu.AddItem(carList = new UIMenuListItem("Vehicle Models", carsModels, 0)); carMenu.AddItem(spawnVehicle = new UIMenuItem("Spawn the selected Vehicle", "Spawn the selected vehicle from the list above.")); carMenu.RefreshIndex(); carMenu.OnItemSelect += OnItemSelectCarMenu; mainMenu.BindMenuToItem(carMenu, carMenuItem); // Dev distances menu devTestDistancesMenu = new UIMenu("Interaction Menu", "~b~Developer Distance Menu"); _menuPool.Add(devTestDistancesMenu); //distancesList = Enumerable.Range(1, 100).ToList(); //var x = new List<dynamic>(distancesList.Count); //x.AddRange(distancesList.Cast<dynamic>()); //dynamic Offset = x.IndexToItem(distancesList.Index); //var distancesList = Enumerable.Range(1, 100).ToList(); //d = distancesList; //devTestDistancesMenu.AddItem(distancesListItem = new UIMenuListItem("Distances", d, 0)); //devTestDistancesMenu.AddItem(spawnPed = new UIMenuItem("Spawn Ped", "Spawn the Ped at the selected distance.")); devTestDistancesMenu.AddItem(onePed = new UIMenuItem("1 Distance", "1 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(twoPed = new UIMenuItem("2 Distance", "2 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(threePed = new UIMenuItem("3 Distance", "3 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(fourPed = new UIMenuItem("4 Distance", "4 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(fivePed = new UIMenuItem("5 Distance", "5 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(tenPed = new UIMenuItem("10 Distance", "10 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(twentyPed = new UIMenuItem("20 Distance", "20 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(thirtyPed = new UIMenuItem("30 Distance", "30 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(fourtyPed = new UIMenuItem("40 Distance", "40 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(fiftyPed = new UIMenuItem("50 Distance", "50 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(sixtyPed = new UIMenuItem("60 Distance", "60 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(seventyPed = new UIMenuItem("70 Distance", "70 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(eightyPed = new UIMenuItem("80 Distance", "80 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(nintyPed = new UIMenuItem("90 Distance", "90 F distance to spawn a ped.")); devTestDistancesMenu.AddItem(hundredPed = new UIMenuItem("100 Distance", "100 F distance to spawn a ped.")); devTestDistancesMenu.RefreshIndex(); devTestDistancesMenu.OnItemSelect += OnItemSelectDevTestDistances; mainMenu.BindMenuToItem(devTestDistancesMenu, devMenuTestDistancesItem); // Creates our Weapons Menu weaponsMenu = new UIMenu("Interaction Menu", "~b~Weapons Menu"); _menuPool.Add(weaponsMenu); weaponsMenu.AddItem(addBaton = new UIMenuItem("Take a Nightstick", "Take a Nightstick and add it to your inventory.")); weaponsMenu.AddItem(addTaser = new UIMenuItem("Take a Stun Gun", "Take a Stun Gun and add it to your inventory.")); weaponsMenu.AddItem(addPistolItem = new UIMenuItem("Take a Pistol", "Take a pistol with a flashlight.")); weaponsMenu.AddItem(addShotgunItem = new UIMenuItem("Take a Shotgun", "Take a shotgun with a flashlight.")); weaponsMenu.AddItem(addM4 = new UIMenuItem("Take a Carbine Rifle", "Take a Carbine Rifle with a scope, flashlight and a grip")); weaponsMenu.AddItem(dropWeapon = new UIMenuItem("Drop your Current Weapon", "Drop your currently equipped weapon.")); weaponsMenu.RefreshIndex(); weaponsMenu.OnItemSelect += OnItemSelectWeaponsMenu; mainMenu.BindMenuToItem(weaponsMenu, weaponsMenuItem); // Creates our Armor Menu armorMenu = new UIMenu("Interaction Menu", "~b~Armor Menu"); _menuPool.Add(armorMenu); armorMenu.AddItem(addArmorItem = new UIMenuItem("Add Armor", "Put on Armor")); armorMenu.AddItem(removeArmorItem = new UIMenuItem("Remove Armor", "Remove your Armor.")); armorMenu.RefreshIndex(); armorMenu.OnItemSelect += OnItemSelectArmorMenu; // Binds the armor menu to an item in the main menu. mainMenu.BindMenuToItem(armorMenu, armorMenuItem); // Create our Start Callout menu devMenuStartCallout = new UIMenu("Interaction Menu", "~b~Start Callout Menu"); _menuPool.Add(devMenuStartCallout); devMenuStartCallout.AddItem(devMenuStartCalloutBankCarRobberyItem = new UIMenuItem("Don't call this callout", "Don't call this callout as it may result in a crash, it's just a placeholder.")); devMenuStartCallout.AddItem(devMenuStartCalloutFootPursuitItem = new UIMenuItem("Foot Pursuit", "Start the Foot Pursuit callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutGangAttackItem = new UIMenuItem("Gang Attack", "Start the Gang Attack callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutKidnappingCalloutItem = new UIMenuItem("Kidnapping Callout", "Start the Kidnapping Callout callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutLooseLivestockItem = new UIMenuItem("Loose Animal", "Start the Loose Animal callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutCrashedCarItem = new UIMenuItem("Motor Vehicle Accident", "Start the Motor Vehicle Accident callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutMuggingItem = new UIMenuItem("Mugging", "Start the Mugging callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutPublicDisorderItem = new UIMenuItem("Public Disorder", "Start the Public Disorder callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutLorryChaseCalloutItem = new UIMenuItem("Pursuit of a Truck", "Start the Pursuit of a Truck callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutStolenArmoredCarItem = new UIMenuItem("Stolen Armored Car", "Start the Stolen Armored Car callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutStolenMilitaryHardwareItem = new UIMenuItem("Stolen Military Hardware", "Start the Stolen Military Hardware callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutPoliceCarStolenItem = new UIMenuItem("Stolen Police Vehicle", "Start the Stolen Police Vehicle callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutHighPerformanceVehicleItem = new UIMenuItem("Stolen Super Car", "Start the Stolen Super Car callout.")); devMenuStartCallout.AddItem(devMenuStartCalloutTractorCalloutItem = new UIMenuItem("Stolen Tractor", "Start the Stolen Tractor callout.")); devMenuStartCallout.RefreshIndex(); devMenuStartCallout.OnItemSelect += OnItemSelectDevMenuStartCallout; mainMenu.BindMenuToItem(devMenuStartCallout, devMenuStartCalloutItem); }
/// <summary> /// Creates the menu. /// </summary> private void CreateMenu() { // Create the menu. menu = new UIMenu(GetPlayerName(PlayerId()), "Time Options", true) { ScaleWithSafezone = false, MouseControlsEnabled = false, MouseEdgeEnabled = false, ControlDisablingEnabled = false }; // Create all menu items. freezeTimeToggle = new UIMenuItem("Freeze/Unfreeze Time", "Enable or disable time freezing."); UIMenuItem earlymorning = new UIMenuItem("Early Morning", "Set the time to 06:00."); earlymorning.SetRightLabel("06:00"); UIMenuItem morning = new UIMenuItem("Morning", "Set the time to 09:00."); morning.SetRightLabel("09:00"); UIMenuItem noon = new UIMenuItem("Noon", "Set the time to 12:00."); noon.SetRightLabel("12:00"); UIMenuItem earlyafternoon = new UIMenuItem("Early Afternoon", "Set the time to 15:00."); earlyafternoon.SetRightLabel("15:00"); UIMenuItem afternoon = new UIMenuItem("Afternoon", "Set the time to 18:00."); afternoon.SetRightLabel("18:00"); UIMenuItem evening = new UIMenuItem("Evening", "Set the time to 21:00."); evening.SetRightLabel("21:00"); UIMenuItem midnight = new UIMenuItem("Midnight", "Set the time to 00:00."); midnight.SetRightLabel("00:00"); UIMenuItem night = new UIMenuItem("Night", "Set the time to 03:00."); night.SetRightLabel("03:00"); List <dynamic> hours = new List <dynamic>() { "00", "01", "02", "03", "04", "05", "06", "07", "08", "09" }; List <dynamic> minutes = new List <dynamic>() { "00", "01", "02", "03", "04", "05", "06", "07", "08", "09" }; for (var i = 10; i < 60; i++) { if (i < 24) { hours.Add(i.ToString()); } minutes.Add(i.ToString()); } UIMenuListItem manualHour = new UIMenuListItem("Set Custom Hour", hours, 0); UIMenuListItem manualMinute = new UIMenuListItem("Set Custom Minute", minutes, 0); // Add all menu items to the menu. if (cf.IsAllowed(Permission.TOFreezeTime)) { menu.AddItem(freezeTimeToggle); } if (cf.IsAllowed(Permission.TOSetTime)) { menu.AddItem(earlymorning); menu.AddItem(morning); menu.AddItem(noon); menu.AddItem(earlyafternoon); menu.AddItem(afternoon); menu.AddItem(evening); menu.AddItem(midnight); menu.AddItem(night); menu.AddItem(manualHour); menu.AddItem(manualMinute); } // Handle button presses. menu.OnItemSelect += (sender, item, index) => { // If it's the freeze time button. if (item == freezeTimeToggle) { Subtitle.Info($"Time will now {(EventManager.freezeTime ? "~y~continue" : "~o~freeze")}~s~.", prefix: "Info:"); cf.UpdateServerTime(EventManager.currentHours, EventManager.currentMinutes, !EventManager.freezeTime); } else { // Set the time using the index and some math :) // eg: index = 3 (12:00) ---> 3 * 3 (=9) + 3 [= 12] ---> 12:00 // eg: index = 8 (03:00) ---> 8 * 3 (=24) + 3 (=27, >23 so 27-24) [=3] ---> 03:00 var newHour = 0; if (cf.IsAllowed(Permission.TOFreezeTime)) { newHour = (((index * 3) + 3 < 23) ? (index * 3) + 3 : ((index * 3) + 3) - 24); } else { newHour = ((((index + 1) * 3) + 3 < 23) ? ((index + 1) * 3) + 3 : (((index + 1) * 3) + 3) - 24); } var newMinute = 0; Subtitle.Info($"Time set to ~y~{(newHour < 10 ? $"0{newHour.ToString()}" : newHour.ToString())}~s~:~y~" + $"{(newMinute < 10 ? $"0{newMinute.ToString()}" : newMinute.ToString())}~s~.", prefix: "Info:"); cf.UpdateServerTime(newHour, newMinute, EventManager.freezeTime); } }; menu.OnListSelect += (sender, item, index) => { int newHour = EventManager.currentHours; int newMinute = EventManager.currentMinutes; if (item == manualHour) { newHour = item.Index; } else if (item == manualMinute) { newMinute = item.Index; } Subtitle.Info($"Time set to ~y~{(newHour < 10 ? $"0{newHour.ToString()}" : newHour.ToString())}~s~:~y~" + $"{(newMinute < 10 ? $"0{newMinute.ToString()}" : newMinute.ToString())}~s~.", prefix: "Info:"); cf.UpdateServerTime(newHour, newMinute, EventManager.freezeTime); }; }
public PlayerGroupManager() { Instance = this; _pedMenu = new UIMenu("Guard", "SELECT AN OPTION"); MenuConrtoller.MenuPool.Add(_pedMenu); _pedMenu.OnMenuClose += delegate { _selectedPed = null; }; UIMenuListItem tasksItem = new UIMenuListItem("Tasks", Enum.GetNames(typeof(PedTask)).Cast <object>().ToList(), 0, "Give peds a specific task to perform."); tasksItem.Activated += delegate { if (!(_selectedPed == null)) { PedTask index = (PedTask)tasksItem.Index; SetTask(_selectedPed, index); } }; UIMenuItem applyAllItem = new UIMenuItem("Apply To Nearby", "Apply the selected task to nearby peds within 50 meters."); applyAllItem.Activated += delegate { PedTask task2 = (PedTask)tasksItem.Index; List <Ped> list2 = (from ped in (IEnumerable <Ped>)PlayerPed.CurrentPedGroup where ped.Position.VDist(PlayerPosition) < 50f select ped).ToList(); list2.ForEach(delegate(Ped ped) { SetTask(ped, task2); }); }; UIMenuItem giveWeaponItem = new UIMenuItem("Give Weapon", "Give this ped your current weapon."); giveWeaponItem.Activated += delegate { if (!(_selectedPed == null)) { TradeWeapons(PlayerPed, _selectedPed); } }; UIMenuItem takeWeaponItem = new UIMenuItem("Take Weapon", "Take the ped's current weapon."); takeWeaponItem.Activated += delegate { if (!(_selectedPed == null)) { TradeWeapons(_selectedPed, PlayerPed); } }; UIMenuListItem globalTasks = new UIMenuListItem("Guard Tasks", Enum.GetNames(typeof(PedTask)).Cast <object>().ToList(), 0, "Give all gurads a specific task to perform."); globalTasks.Activated += delegate { PedTask task = (PedTask)globalTasks.Index; List <Ped> list = ((IEnumerable <Ped>)PlayerPed.CurrentPedGroup).ToList(); list.ForEach(delegate(Ped ped) { SetTask(ped, task); }); }; _pedMenu.AddItem(tasksItem); _pedMenu.AddItem(applyAllItem); _pedMenu.AddItem(giveWeaponItem); _pedMenu.AddItem(takeWeaponItem); ModController.Instance.MainMenu.AddItem(globalTasks); this.Tick += (EventHandler)OnTick; this.Aborted += (EventHandler)OnAborted; }
public Sandbox() { for (int i = 0; i < 12; i++) { compvars.Add(new compvars()); } RAGE.Game.Graphics.GetScreenResolution(ref ScreenResX, ref ScreenResY); RAGE.Game.Graphics.GetActiveScreenResolution(ref ScreenX, ref ScreenY); Events.Tick += Tick; Events.Add("GetVersion", OnGetVersion); // FlyScript Events.Add("ToggleFlyMode", OnToggleFlyMode); // Chars Events.Add("tpinfront", TeleportInFront); Events.Add("testpos", TestPos); Events.Add("testclothes", TestClothes); Events.Add("test", test); // Boost uint stamina = RAGE.Game.Misc.GetHashKey("SP0_STAMINA"); RAGE.Game.Stats.StatSetInt(stamina, 100, true); uint flying = RAGE.Game.Misc.GetHashKey("SP0_FLYING"); RAGE.Game.Stats.StatSetInt(flying, 100, true); uint driving = RAGE.Game.Misc.GetHashKey("SP0_DRIVING"); RAGE.Game.Stats.StatSetInt(driving, 100, true); uint shooting = RAGE.Game.Misc.GetHashKey("SP0_SHOOTING"); RAGE.Game.Stats.StatSetInt(shooting, 100, true); uint strength = RAGE.Game.Misc.GetHashKey("SP0_STRENGTH"); RAGE.Game.Stats.StatSetInt(strength, 100, true); uint stealth = RAGE.Game.Misc.GetHashKey("SP0_STEALTH"); RAGE.Game.Stats.StatSetInt(stealth, 100, true); uint lungCapacity = RAGE.Game.Misc.GetHashKey("SP0_LUNGCAPACITY"); RAGE.Game.Stats.StatSetInt(lungCapacity, 100, true); _clothespool.Add(menu); var comps = new List <dynamic>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; var drawables = new List <dynamic>(); var textures = new List <dynamic>(); var palletes = new List <dynamic>(); for (int i = 0; i < 300; i++) { drawables.Add(i); textures.Add(i); palletes.Add(i); } var compsMenu = new UIMenuListItem("CompID", comps, 0); menu.AddItem(compsMenu); var drawablesMenu = new UIMenuListItem("DrawableID", drawables, 0); menu.AddItem(drawablesMenu); var texturesMenu = new UIMenuListItem("TextureID", textures, 0); menu.AddItem(texturesMenu); var palletesMenu = new UIMenuListItem("PalleteID", palletes, 0); menu.AddItem(palletesMenu); menu.OnListChange += (sender, item, index) => { if (item == compsMenu) { drawablesMenu.Index = compvars[compsMenu.Index].drawableid[compsMenu.Index]; texturesMenu.Index = compvars[compsMenu.Index].textureid[compsMenu.Index]; palletesMenu.Index = compvars[compsMenu.Index].paletteid[compsMenu.Index]; return; } compvars[compsMenu.Index].drawableid[compsMenu.Index] = drawablesMenu.Index; compvars[compsMenu.Index].textureid[compsMenu.Index] = texturesMenu.Index; compvars[compsMenu.Index].paletteid[compsMenu.Index] = palletesMenu.Index; RAGE.Chat.Output($"{comps[compsMenu.Index]}, {drawables[drawablesMenu.Index]}, {textures[texturesMenu.Index]}, {palletes[palletesMenu.Index]}"); Player.LocalPlayer.SetComponentVariation(comps[compsMenu.Index], drawables[drawablesMenu.Index], textures[texturesMenu.Index], palletes[palletesMenu.Index]); }; }