コード例 #1
0
        private void GetFaceData()
        {
            int ped = Game.PlayerPed.Handle;

            PedHeadBlendData a = Game.PlayerPed.GetHeadBlendData();

            FaceData.FatherFace   = a.FirstFaceShape;
            FaceData.MotherFace   = a.SecondFaceShape;
            FaceData.FatherSkin   = a.FirstSkinTone;
            FaceData.MotherSkin   = a.SecondSkinTone;
            FaceData.ShapePercent = a.ParentFaceShapePercent;
            FaceData.SkinPercent  = a.ParentSkinTonePercent;

            FaceData.NoseWidth          = GetPedFaceFeature(ped, 0);
            FaceData.NoesPeakHeight     = GetPedFaceFeature(ped, 1);
            FaceData.NosePeakLength     = GetPedFaceFeature(ped, 2);
            FaceData.NoseBoneHeight     = GetPedFaceFeature(ped, 3);
            FaceData.NosePeakLowering   = GetPedFaceFeature(ped, 4);
            FaceData.NoseBoneTwist      = GetPedFaceFeature(ped, 5);
            FaceData.EyebrowsHeight     = GetPedFaceFeature(ped, 6);
            FaceData.EyebrowsDepth      = GetPedFaceFeature(ped, 7);
            FaceData.CheekbonesHeight   = GetPedFaceFeature(ped, 8);
            FaceData.CheekbonesWidth    = GetPedFaceFeature(ped, 9);
            FaceData.CheeksWidth        = GetPedFaceFeature(ped, 10);
            FaceData.EyesOpening        = GetPedFaceFeature(ped, 11);
            FaceData.LipsThickness      = GetPedFaceFeature(ped, 12);
            FaceData.JawBoneWidth       = GetPedFaceFeature(ped, 13);
            FaceData.JawBoneDepthLength = GetPedFaceFeature(ped, 14);
            FaceData.ChinHeight         = GetPedFaceFeature(ped, 15);
            FaceData.ChinDepthLength    = GetPedFaceFeature(ped, 16);
            FaceData.ChinWidth          = GetPedFaceFeature(ped, 17);
            FaceData.ChinHoleSize       = GetPedFaceFeature(ped, 18);
            FaceData.NeckThickness      = GetPedFaceFeature(ped, 19);
        }
コード例 #2
0
 public static CharacterHeritage ConvertHeritage(PedHeadBlendData headBlendData, DateTime created) => new CharacterHeritage
 {
     Created     = created,
     Parent1     = headBlendData.FirstFaceShape,
     Parent2     = headBlendData.SecondFaceShape,
     Resemblance = headBlendData.ParentFaceShapePercent,
     SkinTone    = headBlendData.ParentSkinTonePercent
 };
コード例 #3
0
ファイル: Appereance.cs プロジェクト: Paiji-TH/jrp
        public ISkin GetCurrentSkin()
        {
            PedHeadBlendData blData = Game.PlayerPed.GetHeadBlendData();

            return(new Skin()
            {
                HeadBlendData = new SharedPedHeadBlendData(blData.FirstFaceShape, blData.FirstSkinTone, blData.IsParentInheritance, blData.ParentFaceShapePercent, blData.ParentSkinTonePercent, blData.ParentThirdUnkPercent, blData.SecondFaceShape, blData.SecondSkinTone, blData.ThirdFaceShape, blData.ThirdSkinTone),
                ComponentsData = new PedComponentsData(GetComponent(ComponentID.Face), GetComponent(ComponentID.Mask), GetComponent(ComponentID.Hair), GetComponent(ComponentID.Torso), GetComponent(ComponentID.Leg), GetComponent(ComponentID.Parachute), GetComponent(ComponentID.Shoes), GetComponent(ComponentID.Accessory), GetComponent(ComponentID.Undershirt), GetComponent(ComponentID.Kevlar), GetComponent(ComponentID.Badge), GetComponent(ComponentID.Torso2)),
                OverlaysData = new PedOverlaysData(GetOverlay(OverlayID.Blemishes), GetOverlay(OverlayID.FacialHair), GetOverlay(OverlayID.Eyebrows), GetOverlay(OverlayID.Ageing), GetOverlay(OverlayID.Makeup), GetOverlay(OverlayID.Blush), GetOverlay(OverlayID.Complexion), GetOverlay(OverlayID.SunDamage), GetOverlay(OverlayID.Lipstick), GetOverlay(OverlayID.Freckles), GetOverlay(OverlayID.ChestHair), GetOverlay(OverlayID.BodyBlemishes)),
            });
        }
コード例 #4
0
ファイル: Appereance.cs プロジェクト: Paiji-TH/jrp
        public void LoadDefaultComponentVariation()
        {
            ClearPedDecorations(Game.PlayerPed.Handle);
            ClearPedFacialDecorations(Game.PlayerPed.Handle);
            SetPedDefaultComponentVariation(Game.PlayerPed.Handle);
            SetPedHairColor(Game.PlayerPed.Handle, 0, 0);
            SetPedEyeColor(Game.PlayerPed.Handle, 0);
            ClearAllPedProps(Game.PlayerPed.Handle);

            PedHeadBlendData data = Game.PlayerPed.GetHeadBlendData();

            SetPedHeadBlendData(Game.PlayerPed.Handle, data.FirstFaceShape, data.SecondFaceShape, data.ThirdFaceShape, data.FirstSkinTone, data.SecondSkinTone, data.ThirdSkinTone, data.ParentFaceShapePercent, data.ParentSkinTonePercent, data.ParentThirdUnkPercent, data.IsParentInheritance);
        }
コード例 #5
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public MainMenu()
        {
            PlayersList = Players;

            #region cleanup unused kvps
            int           tmp_kvp_handle        = StartFindKvp("");
            bool          cleanupVersionChecked = false;
            List <string> tmp_kvp_names         = new List <string>();
            while (true)
            {
                string k = FindKvp(tmp_kvp_handle);
                if (string.IsNullOrEmpty(k))
                {
                    break;
                }
                if (k == "vmenu_cleanup_version")
                {
                    if (GetResourceKvpInt("vmenu_cleanup_version") >= currentCleanupVersion)
                    {
                        cleanupVersionChecked = true;
                    }
                }
            }
            EndFindKvp(tmp_kvp_handle);

            if (!cleanupVersionChecked)
            {
                SetResourceKvpInt("vmenu_cleanup_version", currentCleanupVersion);
                foreach (string kvp in tmp_kvp_names)
                {
                    if (currentCleanupVersion == 1)
                    {
                        if (!kvp.StartsWith("settings_") && !kvp.StartsWith("vmenu") && !kvp.StartsWith("veh_") && !kvp.StartsWith("ped_") && !kvp.StartsWith("mp_ped_"))
                        {
                            DeleteResourceKvp(kvp);
                            Debug.WriteLine($"[vMenu] Old unused KVP cleaned up: {kvp}.");
                        }
                    }
                }
                Debug.WriteLine("[vMenu] Cleanup of old unused KVP items completed.");
            }
            #endregion

            if (EnableExperimentalFeatures || DebugMode)
            {
                RegisterCommand("testped", new Action <dynamic, List <dynamic>, string>((dynamic source, List <dynamic> args, string rawCommand) =>
                {
                    PedHeadBlendData data = Game.PlayerPed.GetHeadBlendData();
                    Debug.WriteLine(JsonConvert.SerializeObject(data, Formatting.Indented));
                }), false);

                RegisterCommand("tattoo", new Action <dynamic, List <dynamic>, string>((dynamic source, List <dynamic> args, string rawCommand) =>
                {
                    if (args != null && args[0] != null && args[1] != null)
                    {
                        Debug.WriteLine(args[0].ToString() + " " + args[1].ToString());
                        TattooCollectionData d = Game.GetTattooCollectionData(int.Parse(args[0].ToString()), int.Parse(args[1].ToString()));
                        Debug.WriteLine("check");
                        Debug.Write(JsonConvert.SerializeObject(d, Formatting.Indented) + "\n");
                    }
                }), false);
            }

            RegisterCommand("vmenuclient", new Action <dynamic, List <dynamic>, string>((dynamic source, List <dynamic> args, string rawCommand) =>
            {
                if (args != null)
                {
                    if (args.Count > 0)
                    {
                        if (args[0].ToString().ToLower() == "debug")
                        {
                            DebugMode = !DebugMode;
                            Notify.Custom($"Debug mode is now set to: {DebugMode}.");
                            // Set discord rich precense once, allowing it to be overruled by other resources once those load.
                            if (DebugMode)
                            {
                                SetRichPresence($"Debugging vMenu {Version}!");
                            }
                            else
                            {
                                SetRichPresence($"Enjoying FiveM!");
                            }
                        }
                        else if (args[0].ToString().ToLower() == "gc")
                        {
                            GC.Collect();
                            Debug.Write("Cleared memory.\n");
                        }
                        else if (args[0].ToString().ToLower() == "dump")
                        {
                            Notify.Info("A full config dump will be made to the console. Check the log file. This can cause lag!");
                            Debug.WriteLine("\n\n\n########################### vMenu ###########################");
                            Debug.WriteLine($"Running vMenu Version: {Version}, Experimental features: {EnableExperimentalFeatures}, Debug mode: {DebugMode}.");
                            Debug.WriteLine("\nDumping a list of all KVPs:");
                            int handle          = StartFindKvp("");
                            List <string> names = new List <string>();
                            while (true)
                            {
                                string k = FindKvp(handle);
                                if (string.IsNullOrEmpty(k))
                                {
                                    break;
                                }
                                //if (!k.StartsWith("settings_") && !k.StartsWith("vmenu") && !k.StartsWith("veh_") && !k.StartsWith("ped_") && !k.StartsWith("mp_ped_"))
                                //{
                                //    DeleteResourceKvp(k);
                                //}
                                names.Add(k);
                            }
                            EndFindKvp(handle);

                            Dictionary <string, dynamic> kvps = new Dictionary <string, dynamic>();
                            foreach (var kvp in names)
                            {
                                int type = 0; // 0 = string, 1 = float, 2 = int.
                                if (kvp.StartsWith("settings_"))
                                {
                                    if (kvp == "settings_voiceChatProximity") // float
                                    {
                                        type = 1;
                                    }
                                    else if (kvp == "settings_clothingAnimationType") // int
                                    {
                                        type = 2;
                                    }
                                }
                                else if (kvp == "vmenu_cleanup_version") // int
                                {
                                    type = 2;
                                }
                                switch (type)
                                {
                                case 0:
                                    var s = GetResourceKvpString(kvp);
                                    if (s.StartsWith("{") || s.StartsWith("["))
                                    {
                                        kvps.Add(kvp, JsonConvert.DeserializeObject(s));
                                    }
                                    else
                                    {
                                        kvps.Add(kvp, GetResourceKvpString(kvp));
                                    }
                                    break;

                                case 1:
                                    kvps.Add(kvp, GetResourceKvpFloat(kvp));
                                    break;

                                case 2:
                                    kvps.Add(kvp, GetResourceKvpInt(kvp));
                                    break;
                                }
                            }
                            Debug.WriteLine(@JsonConvert.SerializeObject(kvps, Formatting.None) + "\n");

                            Debug.WriteLine("\n\nDumping a list of allowed permissions:");
                            Debug.WriteLine(@JsonConvert.SerializeObject(Permissions, Formatting.None));

                            Debug.WriteLine("\n\nDumping vmenu server configuration settings:");
                            var settings = new Dictionary <string, string>();
                            foreach (var a in Enum.GetValues(typeof(Setting)))
                            {
                                settings.Add(a.ToString(), GetSettingsString((Setting)a));
                            }
                            Debug.WriteLine(@JsonConvert.SerializeObject(settings, Formatting.None));
                            Debug.WriteLine("\nEnd of vMenu dump!");
                            Debug.WriteLine("\n########################### vMenu ###########################");
                        }
                    }
                    else
                    {
                        Notify.Custom($"vMenu is currently running version: {Version}.");
                    }
                }
            }), false);

            // Set discord rich precense once, allowing it to be overruled by other resources once those load.
            if (DebugMode)
            {
                SetRichPresence($"Debugging vMenu {Version}!");
            }

            if (GetCurrentResourceName() != "vMenu")
            {
                Exception InvalidNameException = new Exception("\r\n\r\n[vMenu] INSTALLATION ERROR!\r\nThe name of the resource is not valid. Please change the folder name from '" + GetCurrentResourceName() + "' to 'vMenu' (case sensitive) instead!\r\n\r\n\r\n");
                try
                {
                    throw InvalidNameException;
                }
                catch (Exception e)
                {
                    Log(e.Message);
                }
                TriggerEvent("chatMessage", "^3IMPORTANT: vMenu IS NOT SETUP CORRECTLY. PLEASE CHECK THE SERVER LOG FOR MORE INFO.");
                MenuController.MainMenu           = null;
                MenuController.DontOpenAnyMenu    = true;
                MenuController.DisableMenuButtons = true;
            }
            else
            {
                Tick += OnTick;
            }
            try
            {
                SetClockDate(DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year);
            }
            catch (InvalidTimeZoneException timeEx)
            {
                Debug.WriteLine($"[vMenu] [Error] Could not set the in-game day, month and year because of an invalid timezone(?).");
                Debug.WriteLine($"[vMenu] [Error] InvalidTimeZoneException: {timeEx.Message}");
                Debug.WriteLine($"[vMenu] [Error] vMenu will continue to work normally.");
            }
        }