Пример #1
0
        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);
        }
Пример #2
0
 private void StatisticsMenu_OnListChange(UIMenu sender, UIMenuListItem listItem, int newIndex)
 {
     _selectedIndex = newIndex;
 }
Пример #3
0
        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~.");
                }
            };
        }
Пример #4
0
        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!
        }
Пример #5
0
        /// <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,
Пример #6
0
        private void FaceList_OnListChanged(UIMenuListItem sender, UIMenuListItemItem item)
        {
            var character = CitizenFX.Core.Game.Player.Character;

            character.Style[PedComponents.Face].Index = (int)item.Value;
        }
Пример #7
0
        // 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
        }
Пример #8
0
        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;
                }
            }
        }
Пример #9
0
        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();
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        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;
        }
Пример #12
0
    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);
        };
    }
Пример #13
0
        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();
        }
Пример #14
0
        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);
        }
Пример #15
0
    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 + "...");
            }
        };
    }
Пример #16
0
        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);
        }
Пример #17
0
        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>();
        }
Пример #18
0
        /// <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
        }
Пример #19
0
        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;
        }
Пример #20
0
        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();
                }
            };
        }
Пример #21
0
        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;
                }
            };
        }
Пример #22
0
        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;
        }
Пример #23
0
        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();
        }
Пример #24
0
        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;
        }
Пример #25
0
        /// <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
                        });
                    }
                }
            };
        }
Пример #26
0
        /// <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);
        }
Пример #28
0
        /// <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);
            };
        }
Пример #29
0
        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;
        }
Пример #30
0
        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]);
            };
        }