366 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			366 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
constants = {}
 | 
						|
constants.PED_COMPONENTS_IDS = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
 | 
						|
constants.PED_PROPS_IDS = {0, 1, 2, 6, 7}
 | 
						|
 | 
						|
constants.FACE_FEATURES = {
 | 
						|
    "noseWidth",
 | 
						|
    "nosePeakHigh",
 | 
						|
    "nosePeakSize",
 | 
						|
    "noseBoneHigh",
 | 
						|
    "nosePeakLowering",
 | 
						|
    "noseBoneTwist",
 | 
						|
    "eyeBrownHigh",
 | 
						|
    "eyeBrownForward",
 | 
						|
    "cheeksBoneHigh",
 | 
						|
    "cheeksBoneWidth",
 | 
						|
    "cheeksWidth",
 | 
						|
    "eyesOpening",
 | 
						|
    "lipsThickness",
 | 
						|
    "jawBoneWidth",
 | 
						|
    "jawBoneBackSize",
 | 
						|
    "chinBoneLowering",
 | 
						|
    "chinBoneLenght",
 | 
						|
    "chinBoneSize",
 | 
						|
    "chinHole",
 | 
						|
    "neckThickness",
 | 
						|
}
 | 
						|
 | 
						|
constants.HEAD_OVERLAYS = {
 | 
						|
    "blemishes",
 | 
						|
    "beard",
 | 
						|
    "eyebrows",
 | 
						|
    "ageing",
 | 
						|
    "makeUp",
 | 
						|
    "blush",
 | 
						|
    "complexion",
 | 
						|
    "sunDamage",
 | 
						|
    "lipstick",
 | 
						|
    "moleAndFreckles",
 | 
						|
    "chestHair",
 | 
						|
    "bodyBlemishes",
 | 
						|
}
 | 
						|
 | 
						|
-- Thanks to rootcause for the eye colors names and hair decorations hashes.
 | 
						|
constants.EYE_COLORS = {
 | 
						|
    "Green",
 | 
						|
    "Emerald",
 | 
						|
    "Light Blue",
 | 
						|
    "Ocean Blue",
 | 
						|
    "Light Brown",
 | 
						|
    "Dark Brown",
 | 
						|
    "Hazel",
 | 
						|
    "Dark Gray",
 | 
						|
    "Light Gray",
 | 
						|
    "Pink",
 | 
						|
    "Yellow",
 | 
						|
    "Purple",
 | 
						|
    "Blackout",
 | 
						|
    "Shades of Gray",
 | 
						|
    "Tequila Sunrise",
 | 
						|
    "Atomic",
 | 
						|
    "Warp",
 | 
						|
    "ECola",
 | 
						|
    "Space Ranger",
 | 
						|
    "Ying Yang",
 | 
						|
    "Bullseye",
 | 
						|
    "Lizard",
 | 
						|
    "Dragon",
 | 
						|
    "Extra Terrestrial",
 | 
						|
    "Goat",
 | 
						|
    "Smiley",
 | 
						|
    "Possessed",
 | 
						|
    "Demon",
 | 
						|
    "Infected",
 | 
						|
    "Alien",
 | 
						|
    "Undead",
 | 
						|
    "Zombie",
 | 
						|
}
 | 
						|
 | 
						|
constants.HAIR_DECORATIONS = {
 | 
						|
    male = {
 | 
						|
        [0] = { `mpbeach_overlays`, `FM_Hair_Fuzz` },
 | 
						|
        [1] = { `multiplayer_overlays`, `NG_M_Hair_001` },
 | 
						|
        [2] = { `multiplayer_overlays`, `NG_M_Hair_002` },
 | 
						|
        [3] = { `multiplayer_overlays`, `NG_M_Hair_003` },
 | 
						|
        [4] = { `multiplayer_overlays`, `NG_M_Hair_004` },
 | 
						|
        [5] = { `multiplayer_overlays`, `NG_M_Hair_005` },
 | 
						|
        [6] = { `multiplayer_overlays`, `NG_M_Hair_006` },
 | 
						|
        [7] = { `multiplayer_overlays`, `NG_M_Hair_007` },
 | 
						|
        [8] = { `multiplayer_overlays`, `NG_M_Hair_008` },
 | 
						|
        [9] = { `multiplayer_overlays`, `NG_M_Hair_009` },
 | 
						|
        [10] = { `multiplayer_overlays`, `NG_M_Hair_013` },
 | 
						|
        [11] = { `multiplayer_overlays`, `NG_M_Hair_002` },
 | 
						|
        [12] = { `multiplayer_overlays`, `NG_M_Hair_011` },
 | 
						|
        [13] = { `multiplayer_overlays`, `NG_M_Hair_012` },
 | 
						|
        [14] = { `multiplayer_overlays`, `NG_M_Hair_014` },
 | 
						|
        [15] = { `multiplayer_overlays`, `NG_M_Hair_015` },
 | 
						|
        [16] = { `multiplayer_overlays`, `NGBea_M_Hair_000` },
 | 
						|
        [17] = { `multiplayer_overlays`, `NGBea_M_Hair_001` },
 | 
						|
        [18] = { `multiplayer_overlays`, `NGBus_M_Hair_000` },
 | 
						|
        [19] = { `multiplayer_overlays`, `NGBus_M_Hair_001` },
 | 
						|
        [20] = { `multiplayer_overlays`, `NGHip_M_Hair_000` },
 | 
						|
        [21] = { `multiplayer_overlays`, `NGHip_M_Hair_001` },
 | 
						|
        [22] = { `multiplayer_overlays`, `NGInd_M_Hair_000` },
 | 
						|
        [24] = { `mplowrider_overlays`, `LR_M_Hair_000` },
 | 
						|
        [25] = { `mplowrider_overlays`, `LR_M_Hair_001` },
 | 
						|
        [26] = { `mplowrider_overlays`, `LR_M_Hair_002` },
 | 
						|
        [27] = { `mplowrider_overlays`, `LR_M_Hair_003` },
 | 
						|
        [28] = { `mplowrider2_overlays`, `LR_M_Hair_004` },
 | 
						|
        [29] = { `mplowrider2_overlays`, `LR_M_Hair_005` },
 | 
						|
        [30] = { `mplowrider2_overlays`, `LR_M_Hair_006` },
 | 
						|
        [31] = { `mpbiker_overlays`, `MP_Biker_Hair_000_M` },
 | 
						|
        [32] = { `mpbiker_overlays`, `MP_Biker_Hair_001_M` },
 | 
						|
        [33] = { `mpbiker_overlays`, `MP_Biker_Hair_002_M` },
 | 
						|
        [34] = { `mpbiker_overlays`, `MP_Biker_Hair_003_M` },
 | 
						|
        [35] = { `mpbiker_overlays`, `MP_Biker_Hair_004_M` },
 | 
						|
        [36] = { `mpbiker_overlays`, `MP_Biker_Hair_005_M` },
 | 
						|
        [37] = { `multiplayer_overlays`, `NG_M_Hair_001` },
 | 
						|
        [38] = { `multiplayer_overlays`, `NG_M_Hair_002` },
 | 
						|
        [39] = { `multiplayer_overlays`, `NG_M_Hair_003` },
 | 
						|
        [40] = { `multiplayer_overlays`, `NG_M_Hair_004` },
 | 
						|
        [41] = { `multiplayer_overlays`, `NG_M_Hair_005` },
 | 
						|
        [42] = { `multiplayer_overlays`, `NG_M_Hair_006` },
 | 
						|
        [43] = { `multiplayer_overlays`, `NG_M_Hair_007` },
 | 
						|
        [44] = { `multiplayer_overlays`, `NG_M_Hair_008` },
 | 
						|
        [45] = { `multiplayer_overlays`, `NG_M_Hair_009` },
 | 
						|
        [46] = { `multiplayer_overlays`, `NG_M_Hair_013` },
 | 
						|
        [47] = { `multiplayer_overlays`, `NG_M_Hair_002` },
 | 
						|
        [48] = { `multiplayer_overlays`, `NG_M_Hair_011` },
 | 
						|
        [49] = { `multiplayer_overlays`, `NG_M_Hair_012` },
 | 
						|
        [50] = { `multiplayer_overlays`, `NG_M_Hair_014` },
 | 
						|
        [51] = { `multiplayer_overlays`, `NG_M_Hair_015` },
 | 
						|
        [52] = { `multiplayer_overlays`, `NGBea_M_Hair_000` },
 | 
						|
        [53] = { `multiplayer_overlays`, `NGBea_M_Hair_001` },
 | 
						|
        [54] = { `multiplayer_overlays`, `NGBus_M_Hair_000` },
 | 
						|
        [55] = { `multiplayer_overlays`, `NGBus_M_Hair_001` },
 | 
						|
        [56] = { `multiplayer_overlays`, `NGHip_M_Hair_000` },
 | 
						|
        [57] = { `multiplayer_overlays`, `NGHip_M_Hair_001` },
 | 
						|
        [58] = { `multiplayer_overlays`, `NGInd_M_Hair_000` },
 | 
						|
        [59] = { `mplowrider_overlays`, `LR_M_Hair_000` },
 | 
						|
        [60] = { `mplowrider_overlays`, `LR_M_Hair_001` },
 | 
						|
        [61] = { `mplowrider_overlays`, `LR_M_Hair_002` },
 | 
						|
        [62] = { `mplowrider_overlays`, `LR_M_Hair_003` },
 | 
						|
        [63] = { `mplowrider2_overlays`, `LR_M_Hair_004` },
 | 
						|
        [64] = { `mplowrider2_overlays`, `LR_M_Hair_005` },
 | 
						|
        [65] = { `mplowrider2_overlays`, `LR_M_Hair_006` },
 | 
						|
        [66] = { `mpbiker_overlays`, `MP_Biker_Hair_000_M` },
 | 
						|
        [67] = { `mpbiker_overlays`, `MP_Biker_Hair_001_M` },
 | 
						|
        [68] = { `mpbiker_overlays`, `MP_Biker_Hair_002_M` },
 | 
						|
        [69] = { `mpbiker_overlays`, `MP_Biker_Hair_003_M` },
 | 
						|
        [70] = { `mpbiker_overlays`, `MP_Biker_Hair_004_M` },
 | 
						|
        [71] = { `mpbiker_overlays`, `MP_Biker_Hair_005_M` },
 | 
						|
        [72] = { `mpgunrunning_overlays`, `MP_Gunrunning_Hair_M_000_M` },
 | 
						|
        [73] = { `mpgunrunning_overlays`, `MP_Gunrunning_Hair_M_001_M` },
 | 
						|
        [74] = { `mpVinewood_overlays`, `MP_Vinewood_Hair_M_000_M` },
 | 
						|
        [75] = { `mptuner_overlays`, `MP_Tuner_Hair_001_M` },
 | 
						|
        [76] = { `mpsecurity_overlays`, `MP_Security_Hair_001_M` },
 | 
						|
    },
 | 
						|
 | 
						|
    female = {
 | 
						|
        [0] = { `mpbeach_overlays`, `FM_Hair_Fuzz` },
 | 
						|
        [1] = { `multiplayer_overlays`, `NG_F_Hair_001` },
 | 
						|
        [2] = { `multiplayer_overlays`, `NG_F_Hair_002` },
 | 
						|
        [3] = { `multiplayer_overlays`, `NG_F_Hair_003` },
 | 
						|
        [4] = { `multiplayer_overlays`, `NG_F_Hair_004` },
 | 
						|
        [5] = { `multiplayer_overlays`, `NG_F_Hair_005` },
 | 
						|
        [6] = { `multiplayer_overlays`, `NG_F_Hair_006` },
 | 
						|
        [7] = { `multiplayer_overlays`, `NG_F_Hair_007` },
 | 
						|
        [8] = { `multiplayer_overlays`, `NG_F_Hair_008` },
 | 
						|
        [9] = { `multiplayer_overlays`, `NG_F_Hair_009` },
 | 
						|
        [10] = { `multiplayer_overlays`, `NG_F_Hair_010` },
 | 
						|
        [11] = { `multiplayer_overlays`, `NG_F_Hair_011` },
 | 
						|
        [12] = { `multiplayer_overlays`, `NG_F_Hair_012` },
 | 
						|
        [13] = { `multiplayer_overlays`, `NG_F_Hair_013` },
 | 
						|
        [14] = { `multiplayer_overlays`, `NG_M_Hair_014` },
 | 
						|
        [15] = { `multiplayer_overlays`, `NG_M_Hair_015` },
 | 
						|
        [16] = { `multiplayer_overlays`, `NGBea_F_Hair_000` },
 | 
						|
        [17] = { `multiplayer_overlays`, `NGBea_F_Hair_001` },
 | 
						|
        [18] = { `multiplayer_overlays`, `NG_F_Hair_007` },
 | 
						|
        [19] = { `multiplayer_overlays`, `NGBus_F_Hair_000` },
 | 
						|
        [20] = { `multiplayer_overlays`, `NGBus_F_Hair_001` },
 | 
						|
        [21] = { `multiplayer_overlays`, `NGBea_F_Hair_001` },
 | 
						|
        [22] = { `multiplayer_overlays`, `NGHip_F_Hair_000` },
 | 
						|
        [23] = { `multiplayer_overlays`, `NGInd_F_Hair_000` },
 | 
						|
        [25] = { `mplowrider_overlays`, `LR_F_Hair_000` },
 | 
						|
        [26] = { `mplowrider_overlays`, `LR_F_Hair_001` },
 | 
						|
        [27] = { `mplowrider_overlays`, `LR_F_Hair_002` },
 | 
						|
        [28] = { `mplowrider2_overlays`, `LR_F_Hair_003` },
 | 
						|
        [29] = { `mplowrider2_overlays`, `LR_F_Hair_003` },
 | 
						|
        [30] = { `mplowrider2_overlays`, `LR_F_Hair_004` },
 | 
						|
        [31] = { `mplowrider2_overlays`, `LR_F_Hair_006` },
 | 
						|
        [32] = { `mpbiker_overlays`, `MP_Biker_Hair_000_F` },
 | 
						|
        [33] = { `mpbiker_overlays`, `MP_Biker_Hair_001_F` },
 | 
						|
        [34] = { `mpbiker_overlays`, `MP_Biker_Hair_002_F` },
 | 
						|
        [35] = { `mpbiker_overlays`, `MP_Biker_Hair_003_F` },
 | 
						|
        [36] = { `multiplayer_overlays`, `NG_F_Hair_003` },
 | 
						|
        [37] = { `mpbiker_overlays`, `MP_Biker_Hair_006_F` },
 | 
						|
        [38] = { `mpbiker_overlays`, `MP_Biker_Hair_004_F` },
 | 
						|
        [39] = { `multiplayer_overlays`, `NG_F_Hair_001` },
 | 
						|
        [40] = { `multiplayer_overlays`, `NG_F_Hair_002` },
 | 
						|
        [41] = { `multiplayer_overlays`, `NG_F_Hair_003` },
 | 
						|
        [42] = { `multiplayer_overlays`, `NG_F_Hair_004` },
 | 
						|
        [43] = { `multiplayer_overlays`, `NG_F_Hair_005` },
 | 
						|
        [44] = { `multiplayer_overlays`, `NG_F_Hair_006` },
 | 
						|
        [45] = { `multiplayer_overlays`, `NG_F_Hair_007` },
 | 
						|
        [46] = { `multiplayer_overlays`, `NG_F_Hair_008` },
 | 
						|
        [47] = { `multiplayer_overlays`, `NG_F_Hair_009` },
 | 
						|
        [48] = { `multiplayer_overlays`, `NG_F_Hair_010` },
 | 
						|
        [49] = { `multiplayer_overlays`, `NG_F_Hair_011` },
 | 
						|
        [50] = { `multiplayer_overlays`, `NG_F_Hair_012` },
 | 
						|
        [51] = { `multiplayer_overlays`, `NG_F_Hair_013` },
 | 
						|
        [52] = { `multiplayer_overlays`, `NG_M_Hair_014` },
 | 
						|
        [53] = { `multiplayer_overlays`, `NG_M_Hair_015` },
 | 
						|
        [54] = { `multiplayer_overlays`, `NGBea_F_Hair_000` },
 | 
						|
        [55] = { `multiplayer_overlays`, `NGBea_F_Hair_001` },
 | 
						|
        [56] = { `multiplayer_overlays`, `NG_F_Hair_007` },
 | 
						|
        [57] = { `multiplayer_overlays`, `NGBus_F_Hair_000` },
 | 
						|
        [58] = { `multiplayer_overlays`, `NGBus_F_Hair_001` },
 | 
						|
        [59] = { `multiplayer_overlays`, `NGBea_F_Hair_001` },
 | 
						|
        [60] = { `multiplayer_overlays`, `NGHip_F_Hair_000` },
 | 
						|
        [61] = { `multiplayer_overlays`, `NGInd_F_Hair_000` },
 | 
						|
        [62] = { `mplowrider_overlays`, `LR_F_Hair_000` },
 | 
						|
        [63] = { `mplowrider_overlays`, `LR_F_Hair_001` },
 | 
						|
        [64] = { `mplowrider_overlays`, `LR_F_Hair_002` },
 | 
						|
        [65] = { `mplowrider2_overlays`, `LR_F_Hair_003` },
 | 
						|
        [66] = { `mplowrider2_overlays`, `LR_F_Hair_003` },
 | 
						|
        [67] = { `mplowrider2_overlays`, `LR_F_Hair_004` },
 | 
						|
        [68] = { `mplowrider2_overlays`, `LR_F_Hair_006` },
 | 
						|
        [69] = { `mpbiker_overlays`, `MP_Biker_Hair_000_F` },
 | 
						|
        [70] = { `mpbiker_overlays`, `MP_Biker_Hair_001_F` },
 | 
						|
        [71] = { `mpbiker_overlays`, `MP_Biker_Hair_002_F` },
 | 
						|
        [72] = { `mpbiker_overlays`, `MP_Biker_Hair_003_F` },
 | 
						|
        [73] = { `multiplayer_overlays`, `NG_F_Hair_003` },
 | 
						|
        [74] = { `mpbiker_overlays`, `MP_Biker_Hair_006_F` },
 | 
						|
        [75] = { `mpbiker_overlays`, `MP_Biker_Hair_004_F` },
 | 
						|
        [76] = { `mpgunrunning_overlays`, `MP_Gunrunning_Hair_F_000_F` },
 | 
						|
        [77] = { `mpgunrunning_overlays`, `MP_Gunrunning_Hair_F_001_F` },
 | 
						|
        [78] = { `mpVinewood_overlays`, `MP_Vinewood_Hair_F_000_F` },
 | 
						|
        [79] = { `mptuner_overlays`, `MP_Tuner_Hair_000_F` },
 | 
						|
        [80] = { `mpsecurity_overlays`, `MP_Security_Hair_000_F` },
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
constants.DATA_CLOTHES = {
 | 
						|
    head = {
 | 
						|
        animations = {
 | 
						|
            on = {
 | 
						|
                dict = "mp_masks@standard_car@ds@",
 | 
						|
                anim = "put_on_mask",
 | 
						|
                move = 51,
 | 
						|
                duration = 600
 | 
						|
            },
 | 
						|
            off = {
 | 
						|
                dict = "missheist_agency2ahelmet",
 | 
						|
                anim = "take_off_helmet_stand",
 | 
						|
                move = 51,
 | 
						|
                duration = 1200
 | 
						|
            }
 | 
						|
        },
 | 
						|
        components = {
 | 
						|
            male = {
 | 
						|
                {1, 0}
 | 
						|
            },
 | 
						|
            female = {
 | 
						|
                {1, 0}
 | 
						|
            }
 | 
						|
        },
 | 
						|
        props = {
 | 
						|
            male = {
 | 
						|
                {0, -1}
 | 
						|
            },
 | 
						|
            female = {}
 | 
						|
        }
 | 
						|
    },
 | 
						|
    body = {
 | 
						|
        animations = {
 | 
						|
            on = {
 | 
						|
                dict = "clothingtie",
 | 
						|
                anim = "try_tie_negative_a",
 | 
						|
                move = 51,
 | 
						|
                duration = 1200
 | 
						|
            },
 | 
						|
            off = {
 | 
						|
                dict = "clothingtie",
 | 
						|
                anim = "try_tie_negative_a",
 | 
						|
                move = 51,
 | 
						|
                duration = 1200
 | 
						|
            }
 | 
						|
        },
 | 
						|
        components = {
 | 
						|
            male = {
 | 
						|
                {11, 252},
 | 
						|
                {3, 15},
 | 
						|
                {8, 15},
 | 
						|
                {10, 0},
 | 
						|
                {5, 0}
 | 
						|
            },
 | 
						|
            female = {
 | 
						|
                {11, 15},
 | 
						|
                {8, 14},
 | 
						|
                {3, 15},
 | 
						|
                {10, 0},
 | 
						|
                {5, 0}
 | 
						|
            }
 | 
						|
        },
 | 
						|
        props = {
 | 
						|
            male = {},
 | 
						|
            female = {}
 | 
						|
        }
 | 
						|
    },
 | 
						|
    bottom = {
 | 
						|
        animations = {
 | 
						|
            on = {
 | 
						|
                dict = "re@construction",
 | 
						|
                anim = "out_of_breath",
 | 
						|
                move = 51,
 | 
						|
                duration = 1300
 | 
						|
            },
 | 
						|
            off = {
 | 
						|
                dict = "re@construction",
 | 
						|
                anim = "out_of_breath",
 | 
						|
                move = 51,
 | 
						|
                duration = 1300
 | 
						|
            }
 | 
						|
        },
 | 
						|
        components = {
 | 
						|
            male = {
 | 
						|
                {4, 61},
 | 
						|
                {6, 34}
 | 
						|
            },
 | 
						|
            female = {
 | 
						|
                {4, 15},
 | 
						|
                {6, 35}
 | 
						|
            }
 | 
						|
        },
 | 
						|
        props = {
 | 
						|
            male = {},
 | 
						|
            female = {}
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
constants.CAMERAS = {
 | 
						|
    default = {
 | 
						|
        vec3(0, 2.2, 0.2),
 | 
						|
        vec3(0, 0, -0.05),
 | 
						|
    },
 | 
						|
    head = {
 | 
						|
        vec3(0, 0.9, 0.65),
 | 
						|
        vec3(0, 0, 0.6),
 | 
						|
    },
 | 
						|
    body = {
 | 
						|
        vec3(0, 1.2, 0.2),
 | 
						|
        vec3(0, 0, 0.2),
 | 
						|
    },
 | 
						|
    bottom = {
 | 
						|
        vec3(0, 0.98, -0.7),
 | 
						|
        vec3(0, 0, -0.9),
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
constants.OFFSETS = {
 | 
						|
    default = vec2(1.5, -1),
 | 
						|
    head = vec2(0.7, -0.45),
 | 
						|
    body = vec2(1.2, -0.45),
 | 
						|
    bottom = vec2(0.7, -0.45),
 | 
						|
}
 |