diff --git a/hypnonema.db b/hypnonema.db index a7e8796f7..a0bbeb059 100644 Binary files a/hypnonema.db and b/hypnonema.db differ diff --git a/resources/EmoteMenu/Client/AnimationList.lua b/resources/EmoteMenu/Client/AnimationList.lua index 45bd49027..e6ab0db46 100644 --- a/resources/EmoteMenu/Client/AnimationList.lua +++ b/resources/EmoteMenu/Client/AnimationList.lua @@ -1,2052 +1,4016 @@ +-- DPEmotes forked by TayMcKenzieNZ requires you to be on the latest FiveM Gamebuild for all emotes to function. +-- If an emote does not work, you may be on an older gamebuild. +-- To get a higher gamebuild, see ReadMe on github repositorty DP = {} +-- EXPRESSIONS -- + DP.Expressions = { - ["Angry"] = {"Expression", "mood_angry_1"}, - ["Drunk"] = {"Expression", "mood_drunk_1"}, - ["Dumb"] = {"Expression", "pose_injured_1"}, - ["Electrocuted"] = {"Expression", "electrocuted_1"}, - ["Grumpy"] = {"Expression", "effort_1"}, - ["Grumpy2"] = {"Expression", "mood_drivefast_1"}, - ["Grumpy3"] = {"Expression", "pose_angry_1"}, - ["Happy"] = {"Expression", "mood_happy_1"}, - ["Injured"] = {"Expression", "mood_injured_1"}, - ["Joyful"] = {"Expression", "mood_dancing_low_1"}, - ["Mouthbreather"] = {"Expression", "smoking_hold_1"}, - ["Never Blink"] = {"Expression", "pose_normal_1"}, - ["One Eye"] = {"Expression", "pose_aiming_1"}, - ["Shocked"] = {"Expression", "shocked_1"}, - ["Shocked2"] = {"Expression", "shocked_2"}, - ["Sleeping"] = {"Expression", "mood_sleeping_1"}, - ["Sleeping2"] = {"Expression", "dead_1"}, - ["Sleeping3"] = {"Expression", "dead_2"}, - ["Smug"] = {"Expression", "mood_smug_1"}, - ["Speculative"] = {"Expression", "mood_aiming_1"}, - ["Stressed"] = {"Expression", "mood_stressed_1"}, - ["Sulking"] = {"Expression", "mood_sulk_1"}, - ["Weird"] = {"Expression", "effort_2"}, - ["Weird2"] = {"Expression", "effort_3"}, + ["Angry"] = { "Expression", "mood_angry_1" }, + ["Drunk"] = { "Expression", "mood_drunk_1" }, + ["Dumb"] = { "Expression", "pose_injured_1" }, + ["Electrocuted"] = { "Expression", "electrocuted_1" }, + ["Grumpy"] = { "Expression", "effort_1" }, + ["Grumpy2"] = { "Expression", "mood_drivefast_1" }, + ["Grumpy3"] = { "Expression", "pose_angry_1" }, + ["Happy"] = { "Expression", "mood_happy_1" }, + ["Injured"] = { "Expression", "mood_injured_1" }, + ["Joyful"] = { "Expression", "mood_dancing_low_1" }, + ["Mouthbreather"] = { "Expression", "smoking_hold_1" }, + ["Never Blink"] = { "Expression", "pose_normal_1" }, + ["One Eye"] = { "Expression", "pose_aiming_1" }, + ["Shocked"] = { "Expression", "shocked_1" }, + ["Shocked2"] = { "Expression", "shocked_2" }, + ["Sleeping"] = { "Expression", "mood_sleeping_1" }, + ["Sleeping2"] = { "Expression", "dead_1" }, + ["Sleeping3"] = { "Expression", "dead_2" }, + ["Smug"] = { "Expression", "mood_smug_1" }, + ["Speculative"] = { "Expression", "mood_aiming_1" }, + ["Stressed"] = { "Expression", "mood_stressed_1" }, + ["Sulking"] = { "Expression", "mood_sulk_1" }, + ["Weird"] = { "Expression", "effort_2" }, + ["Weird2"] = { "Expression", "effort_3" }, } + +--- WALKSTYLES --- + + DP.Walks = { - ["Alien"] = {"move_m@alien"}, - ["Armored"] = {"anim_group_move_ballistic"}, - ["Arrogant"] = {"move_f@arrogant@a"}, - ["Brave"] = {"move_m@brave"}, - ["Casual"] = {"move_m@casual@a"}, - ["Casual2"] = {"move_m@casual@b"}, - ["Casual3"] = {"move_m@casual@c"}, - ["Casual4"] = {"move_m@casual@d"}, - ["Casual5"] = {"move_m@casual@e"}, - ["Casual6"] = {"move_m@casual@f"}, - ["Chichi"] = {"move_f@chichi"}, - ["Confident"] = {"move_m@confident"}, - ["Cop"] = {"move_m@business@a"}, - ["Cop2"] = {"move_m@business@b"}, - ["Cop3"] = {"move_m@business@c"}, - ["Default Female"] = {"move_f@multiplayer"}, - ["Default Male"] = {"move_m@multiplayer"}, - ["Drunk"] = {"move_m@drunk@a"}, - ["Drunk"] = {"move_m@drunk@slightlydrunk"}, - ["Drunk2"] = {"move_m@buzzed"}, - ["Drunk3"] = {"move_m@drunk@verydrunk"}, - ["Femme"] = {"move_f@femme@"}, - ["Fire"] = {"move_characters@franklin@fire"}, - ["Fire2"] = {"move_characters@michael@fire"}, - ["Fire3"] = {"move_m@fire"}, - ["Flee"] = {"move_f@flee@a"}, - ["Franklin"] = {"move_p_m_one"}, - ["Gangster"] = {"move_m@gangster@generic"}, - ["Gangster2"] = {"move_m@gangster@ng"}, - ["Gangster3"] = {"move_m@gangster@var_e"}, - ["Gangster4"] = {"move_m@gangster@var_f"}, - ["Gangster5"] = {"move_m@gangster@var_i"}, - ["Grooving"] = {"anim@move_m@grooving@"}, - ["Guard"] = {"move_m@prison_gaurd"}, - ["Handcuffs"] = {"move_m@prisoner_cuffed"}, - ["Heels"] = {"move_f@heels@c"}, - ["Heels2"] = {"move_f@heels@d"}, - ["Hiking"] = {"move_m@hiking"}, - ["Hipster"] = {"move_m@hipster@a"}, - ["Hobo"] = {"move_m@hobo@a"}, - ["Hurry"] = {"move_f@hurry@a"}, - ["Janitor"] = {"move_p_m_zero_janitor"}, - ["Janitor2"] = {"move_p_m_zero_slow"}, - ["Jog"] = {"move_m@jog@"}, - ["Lemar"] = {"anim_group_move_lemar_alley"}, - ["Lester"] = {"move_heist_lester"}, - ["Lester2"] = {"move_lester_caneup"}, - ["Maneater"] = {"move_f@maneater"}, - ["Michael"] = {"move_ped_bucket"}, - ["Money"] = {"move_m@money"}, - ["Muscle"] = {"move_m@muscle@a"}, - ["Posh"] = {"move_m@posh@"}, - ["Posh2"] = {"move_f@posh@"}, - ["Quick"] = {"move_m@quick"}, - ["Runner"] = {"female_fast_runner"}, - ["Sad"] = {"move_m@sad@a"}, - ["Sassy"] = {"move_m@sassy"}, - ["Sassy2"] = {"move_f@sassy"}, - ["Scared"] = {"move_f@scared"}, - ["Sexy"] = {"move_f@sexy@a"}, - ["Shady"] = {"move_m@shadyped@a"}, - ["Slow"] = {"move_characters@jimmy@slow@"}, - ["Swagger"] = {"move_m@swagger"}, - ["Tough"] = {"move_m@tough_guy@"}, - ["Tough2"] = {"move_f@tough_guy@"}, - ["Trash"] = {"clipset@move@trash_fast_turn"}, - ["Trash2"] = {"missfbi4prepp1_garbageman"}, - ["Trevor"] = {"move_p_m_two"}, - ["Wide"] = {"move_m@bag"}, - -- I cant get these to work for some reason, if anyone knows a fix lmk - --["Caution"] = {"move_m@caution"}, - --["Chubby"] = {"anim@move_m@chubby@a"}, - --["Crazy"] = {"move_m@crazy"}, - --["Joy"] = {"move_m@joy@a"}, - --["Power"] = {"move_m@power"}, - --["Sad2"] = {"anim@move_m@depression@a"}, - --["Sad3"] = {"move_m@depression@b"}, - --["Sad4"] = {"move_m@depression@d"}, - --["Wading"] = {"move_m@wading"}, + ["Alien"] = { "move_m@alien" }, + ["Armored"] = { "anim_group_move_ballistic" }, + ["Arrogant"] = { "move_f@arrogant@a" }, + ["Brave"] = { "move_m@brave" }, + ["Casual"] = { "move_m@casual@a" }, + ["Casual 2"] = { "move_m@casual@b" }, + ["Casual 3"] = { "move_m@casual@c" }, + ["Casual 4"] = { "move_m@casual@d" }, + ["Casual 5"] = { "move_m@casual@e" }, + ["Casual 6"] = { "move_m@casual@f" }, + ["Chichi"] = { "move_f@chichi" }, + ["Confident"] = { "move_m@confident" }, + ["Cop"] = { "move_m@business@a" }, + ["Cop 2"] = { "move_m@business@b" }, + ["Cop 3"] = { "move_m@business@c" }, + ["Default Female"] = { "move_f@multiplayer" }, + ["Default Male"] = { "move_m@multiplayer" }, + ["Drunk"] = { "move_m@drunk@a" }, + ["Drunk"] = { "move_m@drunk@slightlydrunk" }, + ["Drunk 2"] = { "move_m@buzzed" }, + ["Drunk 3"] = { "move_m@drunk@verydrunk" }, + ["Femme"] = { "move_f@femme@" }, + ["Fire"] = { "move_characters@franklin@fire" }, + ["Fire2"] = { "move_characters@michael@fire" }, + ["Fire3"] = { "move_m@fire" }, + ["Flee"] = { "move_f@flee@a" }, + ["Franklin"] = { "move_p_m_one" }, + ["Gangster"] = { "move_m@gangster@generic" }, + ["Gangster 2"] = { "move_m@gangster@ng" }, + ["Gangster 3"] = { "move_m@gangster@var_e" }, + ["Gangster 4"] = { "move_m@gangster@var_f" }, + ["Gangster 5"] = { "move_m@gangster@var_i" }, + ["Grooving"] = { "anim@move_m@grooving@" }, + ["Guard"] = { "move_m@prison_gaurd" }, + ["Handcuffs"] = { "move_m@prisoner_cuffed" }, + ["Heels"] = { "move_f@heels@c" }, + ["Heels 2"] = { "move_f@heels@d" }, + ["Hiking"] = { "move_m@hiking" }, + ["Hipster"] = { "move_m@hipster@a" }, + ["Hobo"] = { "move_m@hobo@a" }, + ["Hurry"] = { "move_f@hurry@a" }, + ["Janitor"] = { "move_p_m_zero_janitor" }, + ["Janitor 2"] = { "move_p_m_zero_slow" }, + ["Jog"] = { "move_m@jog@" }, + ["Lemar"] = { "anim_group_move_lemar_alley" }, + ["Lester"] = { "move_heist_lester" }, + ["Lester 2"] = { "move_lester_caneup" }, + ["Maneater"] = { "move_f@maneater" }, + ["Michael"] = { "move_ped_bucket" }, + ["Money"] = { "move_m@money" }, + ["Muscle"] = { "move_m@muscle@a" }, + ["Posh"] = { "move_m@posh@" }, + ["Posh 2"] = { "move_f@posh@" }, + ["Quick"] = { "move_m@quick" }, + ["Runner"] = { "female_fast_runner" }, + ["Sad"] = { "move_m@sad@a" }, + ["Sassy"] = { "move_m@sassy" }, + ["Sassy 2"] = { "move_f@sassy" }, + ["Scared"] = { "move_f@scared" }, + ["Sexy"] = { "move_f@sexy@a" }, + ["Shady"] = { "move_m@shadyped@a" }, + ["Slow"] = { "move_characters@jimmy@slow@" }, + ["Swagger"] = { "move_m@swagger" }, + ["Tough"] = { "move_m@tough_guy@" }, + ["Tough 2"] = { "move_f@tough_guy@" }, + ["Trash"] = { "clipset@move@trash_fast_turn" }, + ["Trash 2"] = { "missfbi4prepp1_garbageman" }, + ["Trevor"] = { "move_p_m_two" }, + ["Wide"] = { "move_m@bag" }, + ["Chubby Male"] = { "move_chubby" }, --male + ["Chubby Female"] = { "move_f@chubby@a" }, --female + ["Depressed"] = { "move_m@depressed@a" }, + ["Depressed 2"] = { "move_m@depressed@b" }, + + + + + -- I cant get these to work for some reason, if anyone knows a fix, let me know + + + + + -- ["Caution"] = {"move_m@caution"}, -- breaks menu + --["Chubby"] = {"anim@move_m@chubby@a"},-- breaks menu + -- ["Crazy"] = {"move_m@crazy"},-- breaks menu + -- ["Joy"] = {"move_m@joy@a"},-- breaks menu + -- ["Power"] = {"move_m@power"},-- breaks menu + -- ["Wading"] = {"move_m@wading"} -- breaks menu + -- ["Depressed 3"] = { "move_m@depressed@c" }, -- breaks menu + -- ["Depressed 4"] = { "move_m@depressed@d" }, -- breaks menu + -- ["Caution"] = { "move_m@caution" },-- breaks menu + -- ["Crazy"] = { "move_m@crazy" }, -- breaks menu + -- ["Joy"] = { "move_m@joy@a" }, -- breaks menu + -- ["Power"] = { "move_m@power" }, -- breaks menu + -- ["Power Walk"] = { "move_m@powerwalk" }, -- breaks menu + -- ["Tired"] = { "move_m@tired" }, -- breaks menu + -- --["Wading"] = {"move_m@wading"},-- breaks menu } + +--- SHARED EMOTES --- I can not figue these out and would love to get custom emotes shared. DullPear doesn't answer his DMs. RIP. + DP.Shared = { - --[emotename] = {dictionary, animation, displayname, targetemotename, additionalanimationoptions} - -- you dont have to specify targetemoteanem, if you do dont it will just play the same animation on both. - -- targetemote is used for animations that have a corresponding animation to the other player. - ["handshake"] = {"mp_ped_interaction", "handshake_guy_a", "Handshake", "handshake2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000, - SyncOffsetFront = 0.9 - }}, - ["handshake2"] = {"mp_ped_interaction", "handshake_guy_b", "Handshake 2", "handshake", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000 - }}, - ["hug"] = {"mp_ped_interaction", "kisses_guy_a", "Hug", "hug2", AnimationOptions = - { - EmoteMoving = false, - EmoteDuration = 5000, - SyncOffsetFront = 1.05, - }}, - ["hug2"] = {"mp_ped_interaction", "kisses_guy_b", "Hug 2", "hug", AnimationOptions = - { - EmoteMoving = false, - EmoteDuration = 5000, - SyncOffsetFront = 1.13 - }}, - ["bro"] = {"mp_ped_interaction", "hugs_guy_a", "Bro", "bro2", AnimationOptions = - { + --[emotename] = {dictionary, animation, displayname, targetemotename, additionalanimationoptions} + -- you dont have to specify targetemoteanem, if you do dont it will just play the same animation on both. + -- targetemote is used for animations that have a corresponding animation to the other player. + ["handshake"] = { "mp_ped_interaction", "handshake_guy_a", "Handshake", "Handshake2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3000, + SyncOffsetFront = 0.9 + }}, + ["handshake2"] = { "mp_ped_interaction", "handshake_guy_b", "Handshake 2", "handshake", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3000 + }}, + ["hug"] = { "mp_ped_interaction", "kisses_guy_a", "Hug", "hug2", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 5000, + SyncOffsetFront = 1.05, + }}, + ["hug2"] = { "mp_ped_interaction", "kisses_guy_b", "Hug 2", "hug", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 5000, + SyncOffsetFront = 1.13 + }}, + ["hug3"] = { "misscarsteal2chad_goodbye", "chad_armsaround_chad", "Hug 3", "hug4", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + SyncOffsetFront = 0.05, + }}, + ["hug4"] = { "misscarsteal2chad_goodbye", "chad_armsaround_girl", "Hug 4", "hug3", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + SyncOffsetFront = 0.13 + }}, + ["kiss"] = { "mp_ped_interaction", "kisses_guy_a", "Kiss", "kiss2", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 5000, + SyncOffsetFront = 1.05, + }}, + ["kiss2"] = { "mp_ped_interaction", "kisses_guy_b", "Kiss 2", "kiss", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 5000, + SyncOffsetFront = 1.13 + }}, + ["bro"] = { "mp_ped_interaction", "hugs_guy_a", "Bro", "bro2", AnimationOptions = { SyncOffsetFront = 1.14 - }}, - ["bro2"] = {"mp_ped_interaction", "hugs_guy_b", "Bro 2", "bro", AnimationOptions = - { + }}, + ["bro2"] = { "mp_ped_interaction", "hugs_guy_b", "Bro 2", "bro", AnimationOptions = { SyncOffsetFront = 1.14 - }}, - ["give"] = {"mp_common", "givetake1_a", "Give", "give2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 2000 - }}, - ["give2"] = {"mp_common", "givetake1_b", "Give 2", "give", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 2000 - }}, - ["baseball"] = {"anim@arena@celeb@flat@paired@no_props@", "baseball_a_player_a", "Baseball", "baseballthrow"}, - ["baseballthrow"] = {"anim@arena@celeb@flat@paired@no_props@", "baseball_a_player_b", "Baseball Throw", "baseball"}, - ["stickup"] = {"random@countryside_gang_fight", "biker_02_stickup_loop", "Stick Up", "stickupscared", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["stickupscared"] = {"missminuteman_1ig_2", "handsup_base", "Stickup Scared", "stickup", AnimationOptions = - { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["punch"] = {"melee@unarmed@streamed_variations", "plyr_takedown_rear_lefthook", "Punch", "punched"}, - ["punched"] = {"melee@unarmed@streamed_variations", "victim_takedown_front_cross_r", "Punched", "punch"}, - ["headbutt"] = {"melee@unarmed@streamed_variations", "plyr_takedown_front_headbutt", "Headbutt", "headbutted"}, - ["headbutted"] = {"melee@unarmed@streamed_variations", "victim_takedown_front_headbutt", "Headbutted", "headbutt"}, - ["slap2"] = {"melee@unarmed@streamed_variations", "plyr_takedown_front_backslap", "Slap 2", "slapped2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["slap"] = {"melee@unarmed@streamed_variations", "plyr_takedown_front_slap", "Slap", "slapped", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["slapped"] = {"melee@unarmed@streamed_variations", "victim_takedown_front_slap", "Slapped", "slap"}, - ["slapped2"] = {"melee@unarmed@streamed_variations", "victim_takedown_front_backslap", "Slapped 2", "slap2"}, + }}, + ["give"] = { "mp_common", "givetake1_a", "Give", "give2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 2000 + }}, + ["give2"] = { "mp_common", "givetake1_b", "Give 2", "give", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 2000 + }}, + ["baseball"] = { "anim@arena@celeb@flat@paired@no_props@", "baseball_a_player_a", "Baseball", "baseballthrow" }, + ["baseballthrow"] = { "anim@arena@celeb@flat@paired@no_props@", "baseball_a_player_b", "Baseball Throw", "baseball" }, + ["stickup"] = { "random@countryside_gang_fight", "biker_02_stickup_loop", "Stick Up", "stickupscared", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["stickupscared"] = { "missminuteman_1ig_2", "handsup_base", "Stickup Scared", "stickup", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["punch"] = { "melee@unarmed@streamed_variations", "plyr_takedown_rear_lefthook", "Punch", "punched" }, + ["punched"] = { "melee@unarmed@streamed_variations", "victim_takedown_front_cross_r", "Punched", "punch" }, + ["headbutt"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_headbutt", "Headbutt", "headbutted" }, + ["headbutted"] = { "melee@unarmed@streamed_variations", "victim_takedown_front_headbutt", "Headbutted", "headbutt" }, + ["slap2"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_backslap", "Slap 2", "slapped2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + EmoteDuration = 2000, + }}, + ["slap"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_slap", "Slap", "slapped", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + EmoteDuration = 2000, + }}, + ["slapped"] = { "melee@unarmed@streamed_variations", "victim_takedown_front_slap", "Slapped", "slap" }, + ["slapped2"] = { "melee@unarmed@streamed_variations", "victim_takedown_front_backslap", "Slapped 2", "slap2" }, + ["receiveblowjob"] = { "misscarsteal2pimpsex", "pimpsex_punter", "Receive Blowjob", "giveblowjob", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 30000, + SyncOffsetFront = 0.63 + }}, + ["giveblowjob"] = { "misscarsteal2pimpsex", "pimpsex_hooker", "Give Blowjob", "receiveblowjob", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 30000, + SyncOffsetFront = 0.63 + }}, + ["streetsexmale"] = { "misscarsteal2pimpsex", "shagloop_pimp", "Street Sex Male", "streetsexfemale", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + SyncOffsetFront = 0.50 + }}, + ["streetsexfemale"] = { "misscarsteal2pimpsex", "shagloop_hooker", "Street Sex Female", "streetsexmale", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + SyncOffsetFront = 0.50 + }}, + ["carry"] = { "missfinale_c2mcs_1", "fin_c2_mcs_1_camman", "Carry", "carry2", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + } }, + ["carry2"] = { "nm", "firemans_carry", "Be carried", "carry", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + Attachto = true, + bone = 0, + xPos = 0.27, + yPos = 0.10, + zPos = 0.60, + xRot = 0.0, + yRot = 0.0, + zRot = 10.0, + } }, } + +--- DANCING EMOTES, SOME WITH PROPS --- + + DP.Dances = { - ["dancef"] = {"anim@amb@nightclub@dancers@solomun_entourage@", "mi_dance_facedj_17_v1_female^1", "Dance F", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancef2"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center", "Dance F2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancef3"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center_up", "Dance F3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancef4"] = {"anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity", "hi_dance_facedj_09_v2_female^1", "Dance F4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancef5"] = {"anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity", "hi_dance_facedj_09_v2_female^3", "Dance F5", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancef6"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center_up", "Dance F6", AnimationOptions = - { - EmoteLoop = true, - }}, - ["danceslow2"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "low_center", "Dance Slow 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["danceslow3"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "low_center_down", "Dance Slow 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["danceslow4"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "low_center", "Dance Slow 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dance"] = {"anim@amb@nightclub@dancers@podium_dancers@", "hi_dance_facedj_17_v2_male^5", "Dance", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dance2"] = {"anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "high_center_down", "Dance 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dance3"] = {"anim@amb@nightclub@mini@dance@dance_solo@male@var_a@", "high_center", "Dance 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dance4"] = {"anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "high_center_up", "Dance 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["danceupper"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "high_center", "Dance Upper", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["danceupper2"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "high_center_up", "Dance Upper 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["danceshy"] = {"anim@amb@nightclub@mini@dance@dance_solo@male@var_a@", "low_center", "Dance Shy", AnimationOptions = - { - EmoteLoop = true, - }}, - ["danceshy2"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "low_center_down", "Dance Shy 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["danceslow"] = {"anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "low_center", "Dance Slow", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancesilly9"] = {"rcmnigel1bnmt_1b", "dance_loop_tyler", "Dance Silly 9", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dance6"] = {"misschinese2_crystalmazemcs1_cs", "dance_loop_tao", "Dance 6", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dance7"] = {"misschinese2_crystalmazemcs1_ig", "dance_loop_tao", "Dance 7", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dance8"] = {"missfbi3_sniping", "dance_m_default", "Dance 8", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancesilly"] = {"special_ped@mountain_dancer@monologue_3@monologue_3a", "mnt_dnc_buttwag", "Dance Silly", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancesilly2"] = {"move_clown@p_m_zero_idles@", "fidget_short_dance", "Dance Silly 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancesilly3"] = {"move_clown@p_m_two_idles@", "fidget_short_dance", "Dance Silly 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancesilly4"] = {"anim@amb@nightclub@lazlow@hi_podium@", "danceidle_hi_11_buttwiggle_b_laz", "Dance Silly 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancesilly5"] = {"timetable@tracy@ig_5@idle_a", "idle_a", "Dance Silly 5", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancesilly6"] = {"timetable@tracy@ig_8@idle_b", "idle_d", "Dance Silly 6", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dance9"] = {"anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "med_center_up", "Dance 9", AnimationOptions = - { - EmoteLoop = true, - }}, - ["dancesilly8"] = {"anim@mp_player_intcelebrationfemale@the_woogie", "the_woogie", "Dance Silly 8", AnimationOptions = - { - EmoteLoop = true - }}, - ["dancesilly7"] = {"anim@amb@casino@mini@dance@dance_solo@female@var_b@", "high_center", "Dance Silly 7", AnimationOptions = - { - EmoteLoop = true - }}, - ["dance5"] = {"anim@amb@casino@mini@dance@dance_solo@female@var_a@", "med_center", "Dance 5", AnimationOptions = - { - EmoteLoop = true - }}, - ["danceglowstick"] = {"anim@amb@nightclub@lazlow@hi_railing@", "ambclub_13_mi_hi_sexualgriding_laz", "Dance Glowsticks", AnimationOptions = - { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 28422, - PropPlacement = {0.0700,0.1400,0.0,-80.0,20.0}, - SecondProp = 'ba_prop_battle_glowstick_01', - SecondPropBone = 60309, - SecondPropPlacement = {0.0700,0.0900,0.0,-120.0,-20.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["danceglowstick2"] = {"anim@amb@nightclub@lazlow@hi_railing@", "ambclub_12_mi_hi_bootyshake_laz", "Dance Glowsticks 2", AnimationOptions = - { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 28422, - PropPlacement = {0.0700,0.1400,0.0,-80.0,20.0}, - SecondProp = 'ba_prop_battle_glowstick_01', - SecondPropBone = 60309, - SecondPropPlacement = {0.0700,0.0900,0.0,-120.0,-20.0}, - EmoteLoop = true, - }}, - ["danceglowstick3"] = {"anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Glowsticks 3", AnimationOptions = - { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 28422, - PropPlacement = {0.0700,0.1400,0.0,-80.0,20.0}, - SecondProp = 'ba_prop_battle_glowstick_01', - SecondPropBone = 60309, - SecondPropPlacement = {0.0700,0.0900,0.0,-120.0,-20.0}, - EmoteLoop = true, - }}, - ["dancehorse"] = {"anim@amb@nightclub@lazlow@hi_dancefloor@", "dancecrowd_li_15_handup_laz", "Dance Horse", AnimationOptions = - { - Prop = "ba_prop_battle_hobby_horse", - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["dancehorse2"] = {"anim@amb@nightclub@lazlow@hi_dancefloor@", "crowddance_hi_11_handup_laz", "Dance Horse 2", AnimationOptions = - { - Prop = "ba_prop_battle_hobby_horse", - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - }}, - ["dancehorse3"] = {"anim@amb@nightclub@lazlow@hi_dancefloor@", "dancecrowd_li_11_hu_shimmy_laz", "Dance Horse 3", AnimationOptions = - { - Prop = "ba_prop_battle_hobby_horse", - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - }}, + ["dance"] = { "anim@amb@nightclub@dancers@podium_dancers@", "hi_dance_facedj_17_v2_male^5", "Dance", AnimationOptions = { + EmoteLoop = true, + }}, + ["dance2"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "high_center_down", "Dance 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["dance3"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_a@", "high_center", "Dance 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["dance4"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "high_center_up", "Dance 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["dance5"] = { "anim@amb@casino@mini@dance@dance_solo@female@var_a@", "med_center", "Dance 5", AnimationOptions = { + EmoteLoop = true + }}, + ["dance6"] = { "misschinese2_crystalmazemcs1_cs", "dance_loop_tao", "Dance 6", AnimationOptions = { + EmoteLoop = true, + }}, + ["dance7"] = { "misschinese2_crystalmazemcs1_ig", "dance_loop_tao", "Dance 7", AnimationOptions = { + EmoteLoop = true, + }}, + ["dance8"] = { "missfbi3_sniping", "dance_m_default", "Dance 8", AnimationOptions = { + EmoteLoop = true, + }}, + ["dance9"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "med_center_up", "Dance 9", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancef"] = { "anim@amb@nightclub@dancers@solomun_entourage@", "mi_dance_facedj_17_v1_female^1", "Dance F", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancef2"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center", "Dance F2", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancef3"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center_up", "Dance F3", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancef4"] = { "anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity", "hi_dance_facedj_09_v2_female^1", "Dance F4", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancef5"] = { "anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity", "hi_dance_facedj_09_v2_female^3", "Dance F5", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancef6"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center_up", "Dance F6", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclub"] = { "anim@amb@nightclub_island@dancers@beachdance@", "hi_idle_a_m03", "Dance Club", AnimationOptions = { + EmoteLoop = true + }}, + ["danceclubb"] = { "anim@amb@nightclub_island@dancers@beachdance@", "hi_idle_a_m05", "Dance Club 2", AnimationOptions = { + EmoteLoop = true + }}, + ["danceclubc"] = { "anim@amb@nightclub_island@dancers@beachdance@", "hi_idle_a_m02", "Dance Club 3", AnimationOptions = { + EmoteLoop = true + }}, + ["danceclubd"] = { "anim@amb@nightclub_island@dancers@beachdance@", "hi_idle_b_f01", "Dance Club 4", AnimationOptions = { + EmoteLoop = true + }}, + ["danceclube"] = { "anim@amb@nightclub_island@dancers@club@", "hi_idle_a_f02", "Dance Club 5", AnimationOptions = { + EmoteLoop = true + }}, + ["danceclubf"] = { "anim@amb@nightclub_island@dancers@club@", "hi_idle_b_m03", "Dance Club 6", AnimationOptions = { + EmoteLoop = true + }}, + ["danceclubg"] = { "anim@amb@nightclub_island@dancers@club@", "hi_idle_d_f01", "Dance Club 7", AnimationOptions = { + EmoteLoop = true + }}, + ["danceclubh"] = { "anim@amb@nightclub_island@dancers@crowddance_facedj@", "mi_dance_facedj_17_v2_male^4", "Dance Club 8 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclubi"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "mi_dance_prop_13_v1_male^3", "Dance Club 9 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclubj"] = { "anim@amb@nightclub_island@dancers@crowddance_groups@groupd@", "mi_dance_crowd_13_v2_male^1", "Dance Club 10 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclubk"] = { "anim@amb@nightclub_island@dancers@crowddance_facedj@", "mi_dance_facedj_15_v2_male^4", "Dance Club 11 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclubl"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center_up", "Dance Club 12", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclubm"] = { "anim@amb@nightclub_island@dancers@crowddance_facedj@", "hi_dance_facedj_hu_15_v2_male^5", "Dance Club 13 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclubn"] = { "anim@amb@nightclub_island@dancers@crowddance_facedj@", "hi_dance_facedj_hu_17_male^5", "Dance Club 14 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclubo"] = { "anim@amb@nightclub@mini@dance@dance_solo@shuffle@", "high_center", "Dance Club 15 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceclubp"] = { "anim@amb@nightclub@mini@dance@dance_solo@shuffle@", "high_left_down", "Dance Club 16 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancedrink"] = { "anim@amb@nightclub_island@dancers@beachdanceprop@", "mi_idle_c_m01", "Dance Drink (Beer)", AnimationOptions = { + Prop = 'prop_beer_amopen', + PropBone = 28422, + PropPlacement = { 0.0, 0.00, 0.0, 0.0, 0.0, 20.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancedrink2"] = { "anim@amb@nightclub_island@dancers@beachdanceprop@", "mi_loop_f1", "Dance Drink 2 (Wine)", AnimationOptions = { + Prop = 'p_wine_glass_s', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.0900, 0.0, 0.0, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancedrink3"] = { "anim@amb@nightclub_island@dancers@beachdanceprop@", "mi_loop_m04", "Dance Drink 3 (Whiskey)", AnimationOptions = { + Prop = 'ba_prop_battle_whiskey_opaque_s', + PropBone = 28422, + PropPlacement = { -0.0100, 0.00, 0.0, 0.0, 0.0, 10.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancedrink4"] = { "anim@amb@nightclub_island@dancers@beachdanceprops@male@", "mi_idle_b_m04", "Dance Drink 4 (Whiskey)", AnimationOptions = { + Prop = 'ba_prop_battle_whiskey_opaque_s', + PropBone = 28422, + PropPlacement = { -0.0100, 0.00, 0.0, 0.0, 0.0, 10.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancedrink5"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "hi_dance_prop_09_v1_female^3", "Dance Drink 5 (Wine)", AnimationOptions = { + Prop = 'p_wine_glass_s', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.0900, 0.0, 0.0, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancedrink6"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "hi_dance_prop_09_v1_male^3", "Dance Drink 6 (Beer)", AnimationOptions = { + Prop = 'prop_beer_logopen', + PropBone = 28422, + PropPlacement = { 0.0090, 0.0010, -0.0310, 180.0, 180.0, -69.99 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancedrink7"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "hi_dance_prop_11_v1_female^3", "Dance Drink 7 (Wine)", AnimationOptions = { + Prop = 'p_wine_glass_s', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.0900, 0.0, 0.0, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancedrink8"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "hi_dance_prop_11_v1_female^1", "Dance Drink 8 (Wine)", AnimationOptions = { + Prop = 'p_wine_glass_s', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.0900, 0.0, 0.0, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["danceslow2"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "low_center", "Dance Slow 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceslow3"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "low_center_down", "Dance Slow 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceslow4"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "low_center", "Dance Slow 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceupper"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "high_center", "Dance Upper", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["danceupper2"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "high_center_up", "Dance Upper 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["danceshy"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_a@", "low_center", "Dance Shy", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceshy2"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "low_center_down", "Dance Shy 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["danceslow"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "low_center", "Dance Slow", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancesilly9"] = { "rcmnigel1bnmt_1b", "dance_loop_tyler", "Dance Silly 9", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancesilly"] = { "special_ped@mountain_dancer@monologue_3@monologue_3a", "mnt_dnc_buttwag", "Dance Silly", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancesilly2"] = { "move_clown@p_m_zero_idles@", "fidget_short_dance", "Dance Silly 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancesilly3"] = { "move_clown@p_m_two_idles@", "fidget_short_dance", "Dance Silly 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancesilly4"] = { "anim@amb@nightclub@lazlow@hi_podium@", "danceidle_hi_11_buttwiggle_b_laz", "Dance Silly 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancesilly5"] = { "timetable@tracy@ig_5@idle_a", "idle_a", "Dance Silly 5", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancesilly6"] = { "timetable@tracy@ig_8@idle_b", "idle_d", "Dance Silly 6", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancesilly7"] = { "anim@amb@casino@mini@dance@dance_solo@female@var_b@", "med_center", "Dance Silly 7", AnimationOptions = { + EmoteLoop = true + }}, + ["dancesilly8"] = { "anim@amb@casino@mini@dance@dance_solo@female@var_b@", "high_center", "Dance Silly 8", AnimationOptions = { + EmoteLoop = true + }}, + ["dancesilly9"] = { "anim@mp_player_intcelebrationfemale@the_woogie", "the_woogie", "Dance Silly 9", AnimationOptions = { + EmoteLoop = true + }}, + ["danceglowstick"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_13_mi_hi_sexualgriding_laz", "Dance Glowsticks", AnimationOptions = { + Prop = 'ba_prop_battle_glowstick_01', + PropBone = 28422, + PropPlacement = { 0.0700, 0.1400, 0.0, -80.0, 20.0 }, + SecondProp = 'ba_prop_battle_glowstick_01', + SecondPropBone = 60309, + SecondPropPlacement = { 0.0700, 0.0900, 0.0, -120.0, -20.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["danceglowstick2"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_12_mi_hi_bootyshake_laz", "Dance Glowsticks 2", AnimationOptions = { + Prop = 'ba_prop_battle_glowstick_01', + PropBone = 28422, + PropPlacement = { 0.0700, 0.1400, 0.0, -80.0, 20.0 }, + SecondProp = 'ba_prop_battle_glowstick_01', + SecondPropBone = 60309, + SecondPropPlacement = { 0.0700, 0.0900, 0.0, -120.0, -20.0 }, + EmoteLoop = true, + }}, + ["danceglowstick3"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Glowsticks 3", AnimationOptions = { + Prop = 'ba_prop_battle_glowstick_01', + PropBone = 28422, + PropPlacement = { 0.0700, 0.1400, 0.0, -80.0, 20.0 }, + SecondProp = 'ba_prop_battle_glowstick_01', + SecondPropBone = 60309, + SecondPropPlacement = { 0.0700, 0.0900, 0.0, -120.0, -20.0 }, + EmoteLoop = true, + }}, + ["dancehorse"] = { "anim@amb@nightclub@lazlow@hi_dancefloor@", "dancecrowd_li_15_handup_laz", "Dance Horse", AnimationOptions = { + Prop = "ba_prop_battle_hobby_horse", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["dancehorse2"] = { "anim@amb@nightclub@lazlow@hi_dancefloor@", "crowddance_hi_11_handup_laz", "Dance Horse 2", AnimationOptions = { + Prop = "ba_prop_battle_hobby_horse", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["dancehorse3"] = { "anim@amb@nightclub@lazlow@hi_dancefloor@", "dancecrowd_li_11_hu_shimmy_laz", "Dance Horse 3", AnimationOptions = { + Prop = "ba_prop_battle_hobby_horse", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["dj"] = { "anim@amb@nightclub@djs@dixon@", "dixn_dance_cntr_open_dix", "DJ", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["dj2"] = { "anim@amb@nightclub@djs@solomun@", "sol_idle_ctr_mid_a_sol", "DJ 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dj3"] = { "anim@amb@nightclub@djs@solomun@", "sol_dance_l_sol", "DJ 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dj4"] = { "anim@amb@nightclub@djs@black_madonna@", "dance_b_idle_a_blamadon", "DJ 4", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dj5"] = { "anim@amb@nightclub@djs@dixon@", "dixn_end_dix", "DJ 5", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dj5"] = { "anim@amb@nightclub@djs@dixon@", "dixn_idle_cntr_a_dix", "DJ 5", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dj6"] = { "anim@amb@nightclub@djs@dixon@", "dixn_idle_cntr_b_dix", "DJ 6", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dj7"] = { "anim@amb@nightclub@djs@dixon@", "dixn_idle_cntr_g_dix", "DJ 7", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dj8"] = { "anim@amb@nightclub@djs@dixon@", "dixn_idle_cntr_gb_dix", "DJ 8", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dj9"] = { "anim@amb@nightclub@djs@dixon@", "dixn_sync_cntr_j_dix", "DJ 9", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["twerk"] = { "switch@trevor@mocks_lapdance", "001443_01_trvs_28_idle_stripper", "Twerk", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapdance"] = { "mp_safehouse", "lap_dance_girl", "Lapdance" }, + ["lapdance2"] = { "mini@strip_club@private_dance@idle", "priv_dance_idle", "Lapdance 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapdance3"] = { "mini@strip_club@private_dance@part1", "priv_dance_p1", "Lapdance 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapdance4"] = { "mini@strip_club@private_dance@part2", "priv_dance_p2", "Lapdance 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapdance5"] = { "mini@strip_club@private_dance@part3", "priv_dance_p3", "Lapdance 5", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapdance6"] = { "oddjobs@assassinate@multi@yachttarget@lapdance", "yacht_ld_f", "Lapdance 6", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapdancewith"] = { "mini@strip_club@lap_dance_2g@ld_2g_p3", "ld_2g_p3_s2", "Lapdance With", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapdancewith2"] = { "mini@strip_club@lap_dance_2g@ld_2g_p2", "ld_2g_p2_s2", "Lapdance With2", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapdancewith3"] = { "mini@strip_club@lap_dance_2g@ld_2g_p1", "ld_2g_p1_s2", "Lapdance With3", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapchair"] = { "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", "ld_girl_a_song_a_p1_f", "Lap Chair", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapchair2"] = { "mini@strip_club@lap_dance@ld_girl_a_song_a_p2", "ld_girl_a_song_a_p2_f", "Lap Chair2", AnimationOptions = { + EmoteLoop = true, + }}, + ["lapchair3"] = { "mini@strip_club@lap_dance@ld_girl_a_song_a_p3", "ld_girl_a_song_a_p3_f", "Lap Chair3", AnimationOptions = { + EmoteLoop = true, + }}, + ["salsa"] = { "anim@mp_player_intuppersalsa_roll", "idle_a", "Salso Roll", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancecrankdat"] = { "anim@amb@nightclub@mini@dance@dance_solo@shuffle@", "high_right_up", "Dance Crank Dat", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancecrankdat2"] = { "anim@amb@nightclub@mini@dance@dance_solo@shuffle@", "high_right_down", "Dance Crank Dat 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancemonkey"] = { "anim@amb@nightclub@mini@dance@dance_solo@techno_monkey@", "high_center", "Monkey Dance ", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancemonkey2"] = { "anim@amb@nightclub@mini@dance@dance_solo@techno_monkey@", "high_center_down", "Monkey Dance 2 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancemonkey3"] = { "anim@amb@nightclub@mini@dance@dance_solo@techno_monkey@", "med_center_down", "Monkey Dance 3 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["boxdance"] = { "anim@amb@nightclub@mini@dance@dance_solo@beach_boxing@", "med_right_down", "Boxing Dance Solo ", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancehiphop"] = { "anim@amb@nightclub@mini@dance@dance_paired@dance_d@", "ped_a_dance_idle", "Hip Hop Dance ", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancehiphop2"] = { "anim@amb@nightclub@mini@dance@dance_paired@dance_b@", "ped_a_dance_idle", "Hip Hop Dance 2 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancehiphop3"] = { "anim@amb@nightclub@mini@dance@dance_paired@dance_a@", "ped_a_dance_idle", "Hip Hop Dance 3 ", AnimationOptions = { + EmoteLoop = true, + }}, + ["dancepride"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride A", AnimationOptions = { + Prop = 'lilprideflag1', --- Rainbow + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag1', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["danceprideb"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride B - LGBTQIA", AnimationOptions = { + Prop = 'lilprideflag2', --- LGBTQIA + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag2', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancepridec"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride C - Bisexual", AnimationOptions = { + Prop = 'lilprideflag3', --- Bisexual + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag3', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancepridec"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride C - Lesbian", AnimationOptions = { + Prop = 'lilprideflag4', --- Lesbian + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag4', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["danceprided"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride D - Pansexual", AnimationOptions = { + Prop = 'lilprideflag5', --- Pansexual + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag5', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancepridee"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride E - Transexual", AnimationOptions = { + Prop = 'lilprideflag6', --- Transexual + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag6', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dancepridef"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride F - Non Binary", AnimationOptions = { + Prop = 'lilprideflag7', --- Lesbian + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag7', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["danceprideg"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride G - Asexual", AnimationOptions = { + Prop = 'lilprideflag8', --- Asexual + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag8', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["danceprideh"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride H - Straight Ally", AnimationOptions = { + Prop = 'lilprideflag9', --- Straight Ally + PropBone = 18905, + PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, + SecondProp = 'lilprideflag9', + SecondPropBone = 57005, + SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, + EmoteLoop = true, + EmoteMoving = false, + }}, } + +---- ANIMAL EMOTES ---- +---- BIG DOG ---- + +DP.AnimalEmotes = { + ["bdogbark"] = { "creatures@rottweiler@amb@world_dog_barking@idle_a", "idle_a", "Bark (big dog)", AnimationOptions = { + EmoteLoop = true + }}, + ["bdogbeg"] = { "creatures@rottweiler@tricks@", "beg_loop", "Beg (big dog)", AnimationOptions = { + EmoteLoop = true + }}, + ["bdogbeg2"] = { "creatures@rottweiler@tricks@", "paw_right_loop", "Beg 2 (big dog)", AnimationOptions = { + EmoteLoop = true + }}, + ["bdogdump"] = { "creatures@rottweiler@move", "dump_loop", "Dump (big dog)", AnimationOptions = { + Prop = 'prop_big_shit_02', + PropBone = 51826, + PropPlacement = { 0.0, 0.2000, -0.4600, 0.0, -20.00, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogitch"] = { "creatures@rottweiler@amb@world_dog_sitting@idle_a", "idle_a", "Itch (big dog)", AnimationOptions = { + EmoteDuration = 2000 + }}, + ["bdogsleep"] = { "creatures@rottweiler@amb@sleep_in_kennel@", "sleep_in_kennel", "Sleep (big dog)", AnimationOptions = { + EmoteLoop = true + }}, + ["bdogsit"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit (big dog)", AnimationOptions = { + EmoteLoop = true + }}, + ["bdogpee"] = { "creatures@rottweiler@move", "pee_left_idle", "Pee (big dog)", AnimationOptions = { + EmoteLoop = false + }}, + ["bdogpee2"] = { "creatures@rottweiler@move", "pee_right_idle", "Pee 2 (big dog)", AnimationOptions = { + EmoteLoop = false + }}, + ["sdogbark"] = { "creatures@pug@amb@world_dog_barking@idle_a", "idle_a", "Bark (small dog)", AnimationOptions = { + EmoteLoop = true + }}, + ["bdogglowa"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "nill", "Glow Stick (big dog)", AnimationOptions = { + Prop = 'ba_prop_battle_glowstick_01', + PropBone = 31086, + PropPlacement = { 0.2000, 0.000, -0.0600, 90.00, 0.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["bdogglowb"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Glow Stick Sitting (big dog)", AnimationOptions = { + Prop = 'ba_prop_battle_glowstick_01', + PropBone = 31086, + PropPlacement = { 0.2000, 0.000, -0.0600, 90.00, 0.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogpridea"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride A (big dog)", AnimationOptions = { + Prop = 'lilprideflag1', ---Rainbow + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag1', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogprideb"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride B - LGBTQIA (big dog)", AnimationOptions = { + Prop = 'lilprideflag2', --LGBTQIA + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag2', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogpridec"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride C - Bisexual (big dog)", AnimationOptions = { + Prop = 'lilprideflag3', --Bisexual + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag3', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogprided"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride D - Lesbian (big dog)", AnimationOptions = { + Prop = 'lilprideflag4', --Lesbian + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag4', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogpridee"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride E - Pansexual (big dog)", AnimationOptions = { + Prop = 'lilprideflag5', --Pansexual + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag5', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogpridef"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride F - Transexual (big dog)", AnimationOptions = { + Prop = 'lilprideflag6', --Transexual + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag6', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogprideg"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride G - Non Binary (big dog)", AnimationOptions = { + Prop = 'lilprideflag7', --Non Binary + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag7', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogprideh"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride H - Asexual (big dog)", AnimationOptions = { + Prop = 'lilprideflag8', --Non Binary + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag8', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bdogpridei"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride I - Straight Ally (big dog)", AnimationOptions = { + Prop = 'lilprideflag9', --Straight Ally + PropBone = 31086, + PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, + SecondProp = 'lilprideflag9', + SecondPropBone = 31086, + SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + + +---- ANIMAL EMOTES ---- +---- SMALL DOG ---- + + + }}, + ["sdogitch"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_a", "Itch (small dog)", AnimationOptions = { + EmoteDuration = 2000 + }}, + ["sdogsit"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Sit (small dog)", AnimationOptions = { + EmoteLoop = true + }}, + ["sdogld"] = { "misssnowie@little_doggy_lying_down", "base", "Lay Down (small dog)", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogshake"] = { "creatures@pug@amb@world_dog_barking@idle_a", "idle_c", "Shake (small dog)", AnimationOptions = { + EmoteLoop = true + }}, + ["sdogdance"] = { "creatures@pug@move", "idle_turn_0", "Dance (small dog)", AnimationOptions = { + Prop = 'ba_prop_battle_glowstick_01', + PropBone = 31086, + PropPlacement = { 0.1500, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdance2"] = { "creatures@pug@move", "idle_turn_0", "Dance 2 (small dog)", AnimationOptions = { + Prop = 'ba_prop_battle_glowstick_01', + PropBone = 31086, + PropPlacement = { 0.1500, -0.0300, 0.0, 0.0, 0.0 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdancepridea"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride A (small dog)", AnimationOptions = { + Prop = 'lilprideflag1', + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdanceprideb"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride B - LGBTQIA (small dog)", AnimationOptions = { + Prop = 'lilprideflag2', --LGBTQIA + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdancepridec"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride C - Bisexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag3', --Bisexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdanceprided"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride D - Lesbian (small dog)", AnimationOptions = { + Prop = 'lilprideflag4', --Lesbian + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdancepridee"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride E - Pansexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag5', --Pansexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdancepridef"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride F - Transexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag6', --Transexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdanceprideg"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride G - Non Binary (small dog)", AnimationOptions = { + Prop = 'lilprideflag7', --Non Binary + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdanceprideh"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride H - Asexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag8', --Asexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdancepridei"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride I - Straight Ally (small dog)", AnimationOptions = { + Prop = 'lilprideflag9', --Straight Ally + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + SecondProp = 'prop_cs_sol_glasses', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogbb"] = { "creatures@pug@move", "nill", "Baseball (small dog)", AnimationOptions = { + Prop = 'w_am_baseball', + PropBone = 31086, + PropPlacement = { 0.1500, -0.0500, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogburger"] = { "creatures@pug@move", "nill", "Burger (small dog)", AnimationOptions = { + Prop = 'prop_cs_burger_01', + PropBone = 31086, + PropPlacement = { 0.1500, -0.0400, 0.0000, -90.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogcontroller"] = { "creatures@pug@move", "nill", "Controller (small dog)", AnimationOptions = { + Prop = 'prop_controller_01', + PropBone = 31086, + PropPlacement = { 0.1800, -0.0300, 0.0000, -180.000, 90.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdolla"] = { "creatures@pug@move", "nill", "Dollar Bill (small dog)", AnimationOptions = { + Prop = 'p_banknote_onedollar_s', + PropBone = 31086, + PropPlacement = { 0.1700, -0.0100, 0.0000, 90.0000, 0.0000, 0.000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdolla2"] = { "creatures@pug@move", "nill", "Dollar Bill Scrunched (small dog)", AnimationOptions = { + Prop = 'bkr_prop_scrunched_moneypage', + PropBone = 31086, + PropPlacement = { 0.1700, 0.000, 0.0000, 90.0000, 00.0000, 00.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdolla3"] = { "creatures@pug@move", "nill", "Money Stack (small dog)", AnimationOptions = { + Prop = 'bkr_prop_money_wrapped_01', + PropBone = 31086, + PropPlacement = { 0.1700, -0.0100, 0.0000, 90.0000, 0.0000, 0.000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogdolla4"] = { "creatures@pug@move", "nill", "Money Bag (small dog)", AnimationOptions = { + Prop = 'ch_prop_ch_moneybag_01a', + PropBone = 31086, + PropPlacement = { 0.1200, -0.2000, 0.0000, -79.9999997, 90.00, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogmic"] = { "creatures@pug@move", "nill", "Microphone (small dog)", AnimationOptions = { + Prop = 'p_ing_microphonel_01', + PropBone = 31086, + PropPlacement = { 0.1500, -0.0170, 0.0300, 0.000, 0.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogteddy"] = { "creatures@pug@move", "nill", "Teddy (small dog)", AnimationOptions = { + Prop = 'v_ilev_mr_rasberryclean', + PropBone = 31086, + PropPlacement = { 0.1500, -0.1100, -0.23, 0.000, 0.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogteddy2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Teddy 2 (small dog)", AnimationOptions = { + Prop = 'v_ilev_mr_rasberryclean', + PropBone = 31086, + PropPlacement = { 0.1500, -0.1100, -0.23, 0.000, 0.0000, 0.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogtennis"] = { "creatures@pug@move", "nill", "Tennis Ball (small dog)", AnimationOptions = { + Prop = 'prop_tennis_ball', + PropBone = 31086, + PropPlacement = { 0.1500, -0.0600, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogtennisr"] = { "creatures@pug@move", "nill", "Tennis Racket (small dog)", AnimationOptions = { + Prop = 'prop_tennis_rack_01', + PropBone = 31086, + PropPlacement = { 0.1500, -0.0200, 0.00, 0.000, 0.0000, -28.0000 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogrose"] = { "creatures@pug@move", "nill", "Rose (small dog)", AnimationOptions = { + Prop = 'prop_single_rose', + PropBone = 12844, + PropPlacement = { 0.1090, -0.0140, 0.0500, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogrose2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Rose Sit (small dog)", AnimationOptions = { + Prop = 'prop_single_rose', + PropBone = 12844, + PropPlacement = { 0.1090, -0.0140, 0.0500, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogggun"] = { "creatures@pug@move", "nill", "Gun Gold (small dog)", AnimationOptions = { + Prop = 'w_pi_pistol_luxe', + PropBone = 12844, + PropPlacement = { 0.2010, -0.0080, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoggun2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Gun Gold Sit (small dog)", AnimationOptions = { + Prop = 'w_pi_pistol_luxe', + PropBone = 12844, + PropPlacement = { 0.2010, -0.0080, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogstun"] = { "creatures@pug@move", "nill", "Stun Gun (small dog)", AnimationOptions = { + Prop = 'w_pi_stungun', + PropBone = 12844, + PropPlacement = { 0.1400, -0.0100, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + PtfxAsset = "core", + PtfxName = "blood_stungun", + PtfxPlacement = { 0.208, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 }, + PtfxInfo = Config.Languages[Config.MenuLanguage]['stun'], + PtfxWait = 200, + }}, + ["sdoggl1"] = { "creatures@pug@move", "nill", "Aviators (small dog)", AnimationOptions = { + Prop = 'prop_aviators_01', + PropBone = 31086, + PropPlacement = { 0.0500, 0.0400, 0.000, -90.00, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoggl2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Aviators Sitting (small dog)", AnimationOptions = { + Prop = 'prop_aviators_01', + PropBone = 31086, + PropPlacement = { 0.0500, 0.0400, 0.000, -90.00, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoggl3"] = { "creatures@pug@move", "nill", "Sunglasses (small dog)", AnimationOptions = { + Prop = 'prop_cs_sol_glasses', + PropBone = 31086, + PropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoggl4"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Sunglasses Sitting (small dog)", AnimationOptions = { + Prop = 'prop_cs_sol_glasses', + PropBone = 31086, + PropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoghd1"] = { "creatures@pug@move", "nill", "Hot Dog (small dog)", AnimationOptions = { + Prop = 'prop_cs_hotdog_01', + PropBone = 31086, + PropPlacement = { 0.1300, -0.0250, 0.000, -88.272053, -9.8465858, -0.1488562 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoghd2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Hot Dog Sitting (small dog)", AnimationOptions = { + Prop = 'prop_cs_hotdog_01', + PropBone = 31086, + PropPlacement = { 0.1300, -0.0250, 0.000, -88.272053, -9.8465858, -0.1488562 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoghlmt1"] = { "creatures@pug@move", "nill", "Helmet 1 (small dog)", AnimationOptions = { + Prop = 'ba_prop_battle_sports_helmet', + PropBone = 31086, + PropPlacement = { 0.00, -0.0200, 0.000, -90.00, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoghlmt2"] = { "creatures@pug@move", "nill", "Helmet 2 (small dog)", AnimationOptions = { + Prop = 'prop_hard_hat_01', + PropBone = 31086, + PropPlacement = { 0.00, 0.1300, 0.000, -90.00, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoghat"] = { "creatures@pug@move", "nill", "Hat 1 (small dog)", AnimationOptions = { + Prop = 'prop_proxy_hat_01', + PropBone = 31086, + PropPlacement = { 0.0, 0.1200, 0.000, -99.8510766, 80.1489234, 1.7279411 }, + SecondProp = 'prop_aviators_01', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0400, 0.000, -90.00, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdoghat2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Hat 2 Sitting (small dog)", AnimationOptions = { + Prop = 'prop_proxy_hat_01', + PropBone = 31086, + PropPlacement = { 0.0, 0.1200, 0.000, -99.8510766, 80.1489234, 1.7279411 }, + SecondProp = 'prop_aviators_01', + SecondPropBone = 31086, + SecondPropPlacement = { 0.0500, 0.0400, 0.000, -90.00, 90.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogsteak"] = { "creatures@pug@move", "nill", "Steak (small dog)", AnimationOptions = { + Prop = 'prop_cs_steak', + PropBone = 31086, + PropPlacement = { 0.1800, -0.0200, 0.000, 90.00, 0.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogsteak2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_c", "Steak 2 Lay Down (small dog)", AnimationOptions = { + Prop = 'prop_cs_steak', + PropBone = 31086, + PropPlacement = { 0.1800, -0.0200, 0.000, 90.00, 0.00, 0.00 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridea"] = { "creatures@pug@move", "nill", "Pride A (small dog)", AnimationOptions = { + Prop = 'lilprideflag1', + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogprideb"] = { "creatures@pug@move", "nill", "Pride B - LGBTQIA (small dog)", AnimationOptions = { + Prop = 'lilprideflag2',--LGBTQIA + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridec"] = { "creatures@pug@move", "nill", "Pride C - Bisexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag3',--Bisexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogprided"] = { "creatures@pug@move", "nill", "Pride D - Lesbian (small dog)", AnimationOptions = { + Prop = 'lilprideflag4',--Lesbian + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridee"] = { "creatures@pug@move", "nill", "Pride E - Pansexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag5',--Pansexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridef"] = { "creatures@pug@move", "nill", "Pride F - Transexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag6',--Transexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridef"] = { "creatures@pug@move", "nill", "Pride F - Transexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag6',--Transexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogprideg"] = { "creatures@pug@move", "nill", "Pride G - Non Binary (small dog)", AnimationOptions = { + Prop = 'lilprideflag6',--Non Binary + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogprideh"] = { "creatures@pug@move", "nill", "Pride H - Non Binary (small dog)", AnimationOptions = { + Prop = 'lilprideflag7',--Non Binary + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridei"] = { "creatures@pug@move", "nill", "Pride I - Asexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag8',--Asexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesita"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride A Sit (small dog)", AnimationOptions = { + Prop = 'lilprideflag1', + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesitb"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride B Sit LGBTQIA (small dog)", AnimationOptions = { + Prop = 'lilprideflag2', --LGBTQIA + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesitc"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride C Sit Bisexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag3', --Bisexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesitd"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride D Sit Lesbian (small dog)", AnimationOptions = { + Prop = 'lilprideflag4', --Lesbian + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesite"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride E Sit Pansexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag5', --Pansexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesitf"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride F Sit Transexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag6', --Transexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesitg"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride G Sit Non Binary (small dog)", AnimationOptions = { + Prop = 'lilprideflag7', --Non Binary + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesith"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride H Sit Asexual (small dog)", AnimationOptions = { + Prop = 'lilprideflag8', --Asexual + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["sdogpridesiti"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride I Sit Straight Ally (small dog)", AnimationOptions = { + Prop = 'lilprideflag9', --Straight Ally + PropBone = 31086, + PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, + EmoteLoop = true, + EmoteMoving = false, + }}, +} + + + +--- EMOTES NO PROPS --- + DP.Emotes = { - ["drink"] = {"mp_player_inteat@pnq", "loop", "Drink", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 2500, - }}, - ["beast"] = {"anim@mp_fm_event@intro", "beast_transform", "Beast", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 5000, - }}, - ["chill"] = {"switch@trevor@scares_tramp", "trev_scares_tramp_idle_tramp", "Chill", AnimationOptions = - { - EmoteLoop = true, - }}, - ["cloudgaze"] = {"switch@trevor@annoys_sunbathers", "trev_annoys_sunbathers_loop_girl", "Cloudgaze", AnimationOptions = - { - EmoteLoop = true, - }}, - ["cloudgaze2"] = {"switch@trevor@annoys_sunbathers", "trev_annoys_sunbathers_loop_guy", "Cloudgaze 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["prone"] = {"missfbi3_sniping", "prone_dave", "Prone", AnimationOptions = - { - EmoteLoop = true, - }}, - ["pullover"] = {"misscarsteal3pullover", "pull_over_right", "Pullover", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 1300, - }}, - ["idle"] = {"anim@heists@heist_corona@team_idles@male_a", "idle", "Idle", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idle8"] = {"amb@world_human_hang_out_street@male_b@idle_a", "idle_b", "Idle 8"}, - ["idle9"] = {"friends@fra@ig_1", "base_idle", "Idle 9", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idle10"] = {"mp_move@prostitute@m@french", "idle", "Idle 10", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["idle11"] = {"random@countrysiderobbery", "idle_a", "Idle 11", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idle2"] = {"anim@heists@heist_corona@team_idles@female_a", "idle", "Idle 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idle3"] = {"anim@heists@humane_labs@finale@strip_club", "ped_b_celebrate_loop", "Idle 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idle4"] = {"anim@mp_celebration@idles@female", "celebration_idle_f_a", "Idle 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idle5"] = {"anim@mp_corona_idles@female_b@idle_a", "idle_a", "Idle 5", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idle6"] = {"anim@mp_corona_idles@male_c@idle_a", "idle_a", "Idle 6", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idle7"] = {"anim@mp_corona_idles@male_d@idle_a", "idle_a", "Idle 7", AnimationOptions = - { - EmoteLoop = true, - }}, - ["wait3"] = {"amb@world_human_hang_out_street@female_hold_arm@idle_a", "idle_a", "Wait 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idledrunk"] = {"random@drunk_driver_1", "drunk_driver_stand_loop_dd1", "Idle Drunk", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idledrunk2"] = {"random@drunk_driver_1", "drunk_driver_stand_loop_dd2", "Idle Drunk 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["idledrunk3"] = {"missarmenian2", "standing_idle_loop_drunk", "Idle Drunk 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["airguitar"] = {"anim@mp_player_intcelebrationfemale@air_guitar", "air_guitar", "Air Guitar"}, - ["airsynth"] = {"anim@mp_player_intcelebrationfemale@air_synth", "air_synth", "Air Synth"}, - ["argue"] = {"misscarsteal4@actor", "actor_berating_loop", "Argue", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["argue2"] = {"oddjobs@assassinate@vice@hooker", "argue_a", "Argue 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bartender"] = {"anim@amb@clubhouse@bar@drink@idle_a", "idle_a_bartender", "Bartender", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["blowkiss"] = {"anim@mp_player_intcelebrationfemale@blow_kiss", "blow_kiss", "Blow Kiss"}, - ["blowkiss2"] = {"anim@mp_player_intselfieblow_kiss", "exit", "Blow Kiss 2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 2000 - }}, - ["curtsy"] = {"anim@mp_player_intcelebrationpaired@f_f_sarcastic", "sarcastic_left", "Curtsy"}, - ["bringiton"] = {"misscommon@response", "bring_it_on", "Bring It On", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000 - }}, - ["comeatmebro"] = {"mini@triathlon", "want_some_of_this", "Come at me bro", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 2000 - }}, - ["cop2"] = {"anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Cop 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["cop3"] = {"amb@code_human_police_investigate@idle_a", "idle_b", "Cop 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["crossarms"] = {"amb@world_human_hang_out_street@female_arms_crossed@idle_a", "idle_a", "Crossarms", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarms2"] = {"amb@world_human_hang_out_street@male_c@idle_a", "idle_b", "Crossarms 2", AnimationOptions = - { - EmoteMoving = true, - }}, - ["crossarms3"] = {"anim@heists@heist_corona@single_team", "single_team_loop_boss", "Crossarms 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarms4"] = {"random@street_race", "_car_b_lookout", "Crossarms 4", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarms5"] = {"anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Crossarms 5", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foldarms2"] = {"anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Fold Arms 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarms6"] = {"random@shop_gunstore", "_idle", "Crossarms 6", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foldarms"] = {"anim@amb@business@bgen@bgen_no_work@", "stand_phone_phoneputdown_idle_nowork", "Fold Arms", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarmsside"] = {"rcmnigel1a_band_groupies", "base_m2", "Crossarms Side", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["damn"] = {"gestures@m@standing@casual", "gesture_damn", "Damn", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 1000 - }}, - ["damn2"] = {"anim@am_hold_up@male", "shoplift_mid", "Damn 2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 1000 - }}, - ["pointdown"] = {"gestures@f@standing@casual", "gesture_hand_down", "Point Down", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 1000 - }}, - ["surrender"] = {"random@arrests@busted", "idle_a", "Surrender", AnimationOptions = - { - EmoteLoop = true, - }}, - ["facepalm2"] = {"anim@mp_player_intcelebrationfemale@face_palm", "face_palm", "Facepalm 2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 8000 - }}, - ["facepalm"] = {"random@car_thief@agitated@idle_a", "agitated_idle_a", "Facepalm", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 8000 - }}, - ["facepalm3"] = {"missminuteman_1ig_2", "tasered_2", "Facepalm 3", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 8000 - }}, - ["facepalm4"] = {"anim@mp_player_intupperface_palm", "idle_a", "Facepalm 4", AnimationOptions = - { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["fallover"] = {"random@drunk_driver_1", "drunk_fall_over", "Fall Over"}, - ["fallover2"] = {"mp_suicide", "pistol", "Fall Over 2"}, - ["fallover3"] = {"mp_suicide", "pill", "Fall Over 3"}, - ["fallover4"] = {"friends@frf@ig_2", "knockout_plyr", "Fall Over 4"}, - ["fallover5"] = {"anim@gangops@hostage@", "victim_fail", "Fall Over 5"}, - ["fallasleep"] = {"mp_sleep", "sleep_loop", "Fall Asleep", AnimationOptions = - { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["fightme"] = {"anim@deathmatch_intros@unarmed", "intro_male_unarmed_c", "Fight Me"}, - ["fightme2"] = {"anim@deathmatch_intros@unarmed", "intro_male_unarmed_e", "Fight Me 2"}, - ["finger"] = {"anim@mp_player_intselfiethe_bird", "idle_a", "Finger", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["finger2"] = {"anim@mp_player_intupperfinger", "idle_a_fp", "Finger 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["handshake"] = {"mp_ped_interaction", "handshake_guy_a", "Handshake", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000 - }}, - ["handshake2"] = {"mp_ped_interaction", "handshake_guy_b", "Handshake 2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000 - }}, - ["wait4"] = {"amb@world_human_hang_out_street@Female_arm_side@idle_a", "idle_a", "Wait 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["wait5"] = {"missclothing", "idle_storeclerk", "Wait 5", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait6"] = {"timetable@amanda@ig_2", "ig_2_base_amanda", "Wait 6", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait7"] = {"rcmnigel1cnmt_1c", "base", "Wait 7", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait8"] = {"rcmjosh1", "idle", "Wait 8", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait9"] = {"rcmjosh2", "josh_2_intp1_base", "Wait 9", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait10"] = {"timetable@amanda@ig_3", "ig_3_base_tracy", "Wait 10", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait11"] = {"misshair_shop@hair_dressers", "keeper_base", "Wait 11", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["hiking"] = {"move_m@hiking", "idle", "Hiking", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["hug"] = {"mp_ped_interaction", "kisses_guy_a", "Hug"}, - ["hug2"] = {"mp_ped_interaction", "kisses_guy_b", "Hug 2"}, - ["hug3"] = {"mp_ped_interaction", "hugs_guy_a", "Hug 3"}, - ["inspect"] = {"random@train_tracks", "idle_e", "Inspect"}, - ["jazzhands"] = {"anim@mp_player_intcelebrationfemale@jazz_hands", "jazz_hands", "Jazzhands", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 6000, - }}, - ["jog2"] = {"amb@world_human_jog_standing@male@idle_a", "idle_a", "Jog 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jog3"] = {"amb@world_human_jog_standing@female@idle_a", "idle_a", "Jog 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jog4"] = {"amb@world_human_power_walker@female@idle_a", "idle_a", "Jog 4", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jog5"] = {"move_m@joy@a", "walk", "Jog 5", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jumpingjacks"] = {"timetable@reunited@ig_2", "jimmy_getknocked", "Jumping Jacks", AnimationOptions = - { - EmoteLoop = true, - }}, - ["kneel2"] = {"rcmextreme3", "idle", "Kneel 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["kneel3"] = {"amb@world_human_bum_wash@male@low@idle_a", "idle_a", "Kneel 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["knock"] = {"timetable@jimmy@doorknock@", "knockdoor_idle", "Knock", AnimationOptions = - { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["knock2"] = {"missheistfbi3b_ig7", "lift_fibagent_loop", "Knock 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["knucklecrunch"] = {"anim@mp_player_intcelebrationfemale@knuckle_crunch", "knuckle_crunch", "Knuckle Crunch", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["lapdance"] = {"mp_safehouse", "lap_dance_girl", "Lapdance"}, - ["lean2"] = {"amb@world_human_leaning@female@wall@back@hand_up@idle_a", "idle_a", "Lean 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["lean3"] = {"amb@world_human_leaning@female@wall@back@holding_elbow@idle_a", "idle_a", "Lean 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["lean4"] = {"amb@world_human_leaning@male@wall@back@foot_up@idle_a", "idle_a", "Lean 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["lean5"] = {"amb@world_human_leaning@male@wall@back@hands_together@idle_b", "idle_b", "Lean 5", AnimationOptions = - { - EmoteLoop = true, - }}, - ["leanflirt"] = {"random@street_race", "_car_a_flirt_girl", "Lean Flirt", AnimationOptions = - { - EmoteLoop = true, - }}, - ["leanbar2"] = {"amb@prop_human_bum_shopping_cart@male@idle_a", "idle_c", "Lean Bar 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["leanbar3"] = {"anim@amb@nightclub@lazlow@ig1_vip@", "clubvip_base_laz", "Lean Bar 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["leanbar4"] = {"anim@heists@prison_heist", "ped_b_loop_a", "Lean Bar 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["leanhigh"] = {"anim@mp_ferris_wheel", "idle_a_player_one", "Lean High", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanhigh2"] = {"anim@mp_ferris_wheel", "idle_a_player_two", "Lean High 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanside"] = {"timetable@mime@01_gc", "idle_a", "Leanside", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanside2"] = {"misscarstealfinale", "packer_idle_1_trevor", "Leanside 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanside3"] = {"misscarstealfinalecar_5_ig_1", "waitloop_lamar", "Leanside 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanside4"] = {"misscarstealfinalecar_5_ig_1", "waitloop_lamar", "Leanside 4", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["leanside5"] = {"rcmjosh2", "josh_2_intp1_base", "Leanside 5", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["me"] = {"gestures@f@standing@casual", "gesture_me_hard", "Me", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 1000 - }}, - ["mechanic"] = {"mini@repair", "fixing_a_ped", "Mechanic", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["mechanic2"] = {"amb@world_human_vehicle_mechanic@male@base", "idle_a", "Mechanic 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["mechanic3"] = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer", "Mechanic 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["mechanic4"] = {"anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer", "Mechanic 4", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["medic2"] = {"amb@medic@standing@tendtodead@base", "base", "Medic 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["meditate"] = {"rcmcollect_paperleadinout@", "meditiate_idle", "Meditiate", AnimationOptions = -- CHANGE ME - { - EmoteLoop = true, - }}, - ["meditate2"] = {"rcmepsilonism3", "ep_3_rcm_marnie_meditating", "Meditiate 2", AnimationOptions = -- CHANGE ME - { - EmoteLoop = true, - }}, - ["meditate3"] = {"rcmepsilonism3", "base_loop", "Meditiate 3", AnimationOptions = -- CHANGE ME - { - EmoteLoop = true, - }}, - ["metal"] = {"anim@mp_player_intincarrockstd@ps@", "idle_a", "Metal", AnimationOptions = -- CHANGE ME - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["no"] = {"anim@heists@ornate_bank@chat_manager", "fail", "No", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["no2"] = {"mp_player_int_upper_nod", "mp_player_int_nod_no", "No 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["nosepick"] = {"anim@mp_player_intcelebrationfemale@nose_pick", "nose_pick", "Nose Pick", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["noway"] = {"gestures@m@standing@casual", "gesture_no_way", "No Way", AnimationOptions = - { - EmoteDuration = 1500, - EmoteMoving = true, - }}, - ["ok"] = {"anim@mp_player_intselfiedock", "idle_a", "OK", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["outofbreath"] = {"re@construction", "out_of_breath", "Out of Breath", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pickup"] = {"random@domestic", "pickup_low", "Pickup"}, - ["push"] = {"missfinale_c2ig_11", "pushcar_offcliff_f", "Push", AnimationOptions = - { - EmoteLoop = true, - }}, - ["push2"] = {"missfinale_c2ig_11", "pushcar_offcliff_m", "Push 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["point"] = {"gestures@f@standing@casual", "gesture_point", "Point", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pushup"] = {"amb@world_human_push_ups@male@idle_a", "idle_d", "Pushup", AnimationOptions = - { - EmoteLoop = true, - }}, - ["countdown"] = {"random@street_race", "grid_girl_race_start", "Countdown", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pointright"] = {"mp_gun_shop_tut", "indicate_right", "Point Right", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["salute"] = {"anim@mp_player_intincarsalutestd@ds@", "idle_a", "Salute", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["salute2"] = {"anim@mp_player_intincarsalutestd@ps@", "idle_a", "Salute 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["salute3"] = {"anim@mp_player_intuppersalute", "idle_a", "Salute 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["scared"] = {"random@domestic", "f_distressed_loop", "Scared", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["scared2"] = {"random@homelandsecurity", "knees_loop_girl", "Scared 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["screwyou"] = {"misscommon@response", "screw_you", "Screw You", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["shakeoff"] = {"move_m@_idles@shake_off", "shakeoff_1", "Shake Off", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3500, - }}, - ["shot"] = {"random@dealgonewrong", "idle_a", "Shot", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sleep"] = {"timetable@tracy@sleep@", "idle_c", "Sleep", AnimationOptions = - { - EmoteLoop = true, - }}, - ["shrug"] = {"gestures@f@standing@casual", "gesture_shrug_hard", "Shrug", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 1000, - }}, - ["shrug2"] = {"gestures@m@standing@casual", "gesture_shrug_hard", "Shrug 2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 1000, - }}, - ["sit"] = {"anim@amb@business@bgen@bgen_no_work@", "sit_phone_phoneputdown_idle_nowork", "Sit", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sit2"] = {"rcm_barry3", "barry_3_sit_loop", "Sit 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sit3"] = {"amb@world_human_picnic@male@idle_a", "idle_a", "Sit 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sit4"] = {"amb@world_human_picnic@female@idle_a", "idle_a", "Sit 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sit5"] = {"anim@heists@fleeca_bank@ig_7_jetski_owner", "owner_idle", "Sit 5", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sit6"] = {"timetable@jimmy@mics3_ig_15@", "idle_a_jimmy", "Sit 6", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sit7"] = {"anim@amb@nightclub@lazlow@lo_alone@", "lowalone_base_laz", "Sit 7", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sit8"] = {"timetable@jimmy@mics3_ig_15@", "mics3_15_base_jimmy", "Sit 8", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sit9"] = {"amb@world_human_stupor@male@idle_a", "idle_a", "Sit 9", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitlean"] = {"timetable@tracy@ig_14@", "ig_14_base_tracy", "Sit Lean", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitsad"] = {"anim@amb@business@bgen@bgen_no_work@", "sit_phone_phoneputdown_sleeping-noworkfemale", "Sit Sad", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitscared"] = {"anim@heists@ornate_bank@hostages@hit", "hit_loop_ped_b", "Sit Scared", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitscared2"] = {"anim@heists@ornate_bank@hostages@ped_c@", "flinch_loop", "Sit Scared 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitscared3"] = {"anim@heists@ornate_bank@hostages@ped_e@", "flinch_loop", "Sit Scared 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitdrunk"] = {"timetable@amanda@drunk@base", "base", "Sit Drunk", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitchair2"] = {"timetable@ron@ig_5_p3", "ig_5_p3_base", "Sit Chair 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitchair3"] = {"timetable@reunited@ig_10", "base_amanda", "Sit Chair 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitchair4"] = {"timetable@ron@ig_3_couch", "base", "Sit Chair 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitchair5"] = {"timetable@jimmy@mics3_ig_15@", "mics3_15_base_tracy", "Sit Chair 5", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitchair6"] = {"timetable@maid@couch@", "base", "Sit Chair 6", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sitchairside"] = {"timetable@ron@ron_ig_2_alt1", "ig_2_alt1_base", "Sit Chair Side", AnimationOptions = - { - EmoteLoop = true, - }}, - ["situp"] = {"amb@world_human_sit_ups@male@idle_a", "idle_a", "Sit Up", AnimationOptions = - { - EmoteLoop = true, - }}, - ["clapangry"] = {"anim@arena@celeb@flat@solo@no_props@", "angry_clap_a_player_a", "Clap Angry", AnimationOptions = - { - EmoteLoop = true, - }}, - ["slowclap3"] = {"anim@mp_player_intupperslow_clap", "idle_a", "Slow Clap 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["clap"] = {"amb@world_human_cheering@male_a", "base", "Clap", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["slowclap"] = {"anim@mp_player_intcelebrationfemale@slow_clap", "slow_clap", "Slow Clap", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["slowclap2"] = {"anim@mp_player_intcelebrationmale@slow_clap", "slow_clap", "Slow Clap 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["smell"] = {"move_p_m_two_idles@generic", "fidget_sniff_fingers", "Smell", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["stickup"] = {"random@countryside_gang_fight", "biker_02_stickup_loop", "Stick Up", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["stumble"] = {"misscarsteal4@actor", "stumble", "Stumble", AnimationOptions = - { - EmoteLoop = true, - }}, - ["stunned"] = {"stungun@standing", "damage", "Stunned", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sunbathe"] = {"amb@world_human_sunbathe@male@back@base", "base", "Sunbathe", AnimationOptions = - { - EmoteLoop = true, - }}, - ["sunbathe2"] = {"amb@world_human_sunbathe@female@back@base", "base", "Sunbathe 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["t"] = {"missfam5_yoga", "a2_pose", "T", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["t2"] = {"mp_sleep", "bind_pose_180", "T 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["think5"] = {"mp_cp_welcome_tutthink", "b_think", "Think 5", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["think"] = {"misscarsteal4@aliens", "rehearsal_base_idle_director", "Think", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["think3"] = {"timetable@tracy@ig_8@base", "base", "Think 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, + ["beast"] = { "anim@mp_fm_event@intro", "beast_transform", "Beast", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 5000, + }}, + ["chill"] = { "switch@trevor@scares_tramp", "trev_scares_tramp_idle_tramp", "Chill", AnimationOptions = { + EmoteLoop = true, + }}, + ["cloudgaze"] = { "switch@trevor@annoys_sunbathers", "trev_annoys_sunbathers_loop_girl", "Cloudgaze", AnimationOptions = { + EmoteLoop = true, + }}, + ["cloudgaze2"] = { "switch@trevor@annoys_sunbathers", "trev_annoys_sunbathers_loop_guy", "Cloudgaze 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["prone"] = { "missfbi3_sniping", "prone_dave", "Prone", AnimationOptions = { + EmoteLoop = true, + }}, + ["pullover"] = { "misscarsteal3pullover", "pull_over_right", "Pullover", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 1300, + }}, + ["idle"] = { "anim@heists@heist_corona@team_idles@male_a", "idle", "Idle", AnimationOptions = { + EmoteLoop = true, + }}, + ["idle8"] = { "amb@world_human_hang_out_street@male_b@idle_a", "idle_b", "Idle 8" }, + ["idle9"] = { "friends@fra@ig_1", "base_idle", "Idle 9", AnimationOptions = { + EmoteLoop = true, + }}, + ["idle10"] = { "mp_move@prostitute@m@french", "idle", "Idle 10", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["idle11"] = { "random@countrysiderobbery", "idle_a", "Idle 11", AnimationOptions = { + EmoteLoop = true, + }}, + ["idle2"] = { "anim@heists@heist_corona@team_idles@female_a", "idle", "Idle 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["idle3"] = { "anim@heists@humane_labs@finale@strip_club", "ped_b_celebrate_loop", "Idle 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["idle4"] = { "anim@mp_celebration@idles@female", "celebration_idle_f_a", "Idle 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["idle5"] = { "anim@mp_corona_idles@female_b@idle_a", "idle_a", "Idle 5", AnimationOptions = { + EmoteLoop = true, + }}, + ["idle6"] = { "anim@mp_corona_idles@male_c@idle_a", "idle_a", "Idle 6", AnimationOptions = { + EmoteLoop = true, + }}, + ["idle7"] = { "anim@mp_corona_idles@male_d@idle_a", "idle_a", "Idle 7", AnimationOptions = { + EmoteLoop = true, + }}, + ["idledrunk"] = { "random@drunk_driver_1", "drunk_driver_stand_loop_dd1", "Idle Drunk", AnimationOptions = { + EmoteLoop = true, + }}, + ["idledrunk2"] = { "random@drunk_driver_1", "drunk_driver_stand_loop_dd2", "Idle Drunk 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["idledrunk3"] = { "missarmenian2", "standing_idle_loop_drunk", "Idle Drunk 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["airguitar"] = { "anim@mp_player_intcelebrationfemale@air_guitar", "air_guitar", "Air Guitar" }, + ["airsynth"] = { "anim@mp_player_intcelebrationfemale@air_synth", "air_synth", "Air Synth" }, + ["argue"] = { "misscarsteal4@actor", "actor_berating_loop", "Argue", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["argue2"] = { "oddjobs@assassinate@vice@hooker", "argue_a", "Argue 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["bartender"] = { "anim@amb@clubhouse@bar@drink@idle_a", "idle_a_bartender", "Bartender", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["blowkiss"] = { "anim@mp_player_intcelebrationfemale@blow_kiss", "blow_kiss", "Blow Kiss" }, + ["blowkiss2"] = { "anim@mp_player_intselfieblow_kiss", "exit", "Blow Kiss 2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 2000 - ["think2"] = {"missheist_jewelleadinout", "jh_int_outro_loop_a", "Think 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["thumbsup3"] = {"anim@mp_player_intincarthumbs_uplow@ds@", "enter", "Thumbs Up 3", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000, - }}, - ["thumbsup2"] = {"anim@mp_player_intselfiethumbs_up", "idle_a", "Thumbs Up 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["thumbsup"] = {"anim@mp_player_intupperthumbs_up", "idle_a", "Thumbs Up", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["type"] = {"anim@heists@prison_heiststation@cop_reactions", "cop_b_idle", "Type", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["type2"] = {"anim@heists@prison_heistig1_p1_guard_checks_bus", "loop", "Type 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["type3"] = {"mp_prison_break", "hack_loop", "Type 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["type4"] = {"mp_fbi_heist", "loop", "Type 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["warmth"] = {"amb@world_human_stand_fire@male@idle_a", "idle_a", "Warmth", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave4"] = {"random@mugging5", "001445_01_gangintimidation_1_female_idle_b", "Wave 4", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000, - }}, - ["wave2"] = {"anim@mp_player_intcelebrationfemale@wave", "wave", "Wave 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave3"] = {"friends@fra@ig_1", "over_here_idle_a", "Wave 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave"] = {"friends@frj@ig_1", "wave_a", "Wave", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave5"] = {"friends@frj@ig_1", "wave_b", "Wave 5", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave6"] = {"friends@frj@ig_1", "wave_c", "Wave 6", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave7"] = {"friends@frj@ig_1", "wave_d", "Wave 7", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave8"] = {"friends@frj@ig_1", "wave_e", "Wave 8", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave9"] = {"gestures@m@standing@casual", "gesture_hello", "Wave 9", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["whistle"] = {"taxi_hail", "hail_taxi", "Whistle", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 1300, - }}, - ["whistle2"] = {"rcmnigel1c", "hailing_whistle_waive_a", "Whistle 2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["yeah"] = {"anim@mp_player_intupperair_shagging", "idle_a", "Yeah", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["lift"] = {"random@hitch_lift", "idle_f", "Lift", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["lol"] = {"anim@arena@celeb@flat@paired@no_props@", "laugh_a_player_b", "LOL", AnimationOptions = - { - EmoteLoop = true, - }}, - ["lol2"] = {"anim@arena@celeb@flat@solo@no_props@", "giggle_a_player_b", "LOL 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["statue2"] = {"fra_0_int-1", "cs_lamardavis_dual-1", "Statue 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["statue3"] = {"club_intro2-0", "csb_englishdave_dual-0", "Statue 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["gangsign"] = {"mp_player_int_uppergang_sign_a", "mp_player_int_gang_sign_a", "Gang Sign", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["gangsign2"] = {"mp_player_int_uppergang_sign_b", "mp_player_int_gang_sign_b", "Gang Sign 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["passout"] = {"missarmenian2", "drunk_loop", "Passout", AnimationOptions = - { - EmoteLoop = true, - }}, - ["passout2"] = {"missarmenian2", "corpse_search_exit_ped", "Passout 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["passout3"] = {"anim@gangops@morgue@table@", "body_search", "Passout 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["passout4"] = {"mini@cpr@char_b@cpr_def", "cpr_pumpchest_idle", "Passout 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["passout5"] = {"random@mugging4", "flee_backward_loop_shopkeeper", "Passout 5", AnimationOptions = - { - EmoteLoop = true, - }}, - ["petting"] = {"creatures@rottweiler@tricks@", "petting_franklin", "Petting", AnimationOptions = - { - EmoteLoop = true, - }}, - ["crawl"] = {"move_injured_ground", "front_loop", "Crawl", AnimationOptions = - { - EmoteLoop = true, - }}, - ["flip2"] = {"anim@arena@celeb@flat@solo@no_props@", "cap_a_player_a", "Flip 2"}, - ["flip"] = {"anim@arena@celeb@flat@solo@no_props@", "flip_a_player_a", "Flip"}, - ["slide"] = {"anim@arena@celeb@flat@solo@no_props@", "slide_a_player_a", "Slide"}, - ["slide2"] = {"anim@arena@celeb@flat@solo@no_props@", "slide_b_player_a", "Slide 2"}, - ["slide3"] = {"anim@arena@celeb@flat@solo@no_props@", "slide_c_player_a", "Slide 3"}, - ["slugger"] = {"anim@arena@celeb@flat@solo@no_props@", "slugger_a_player_a", "Slugger"}, - ["flipoff"] = {"anim@arena@celeb@podium@no_prop@", "flip_off_a_1st", "Flip Off", AnimationOptions = - { - EmoteMoving = true, - }}, - ["flipoff2"] = {"anim@arena@celeb@podium@no_prop@", "flip_off_c_1st", "Flip Off 2", AnimationOptions = - { - EmoteMoving = true, - }}, - ["bow"] = {"anim@arena@celeb@podium@no_prop@", "regal_c_1st", "Bow", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bow2"] = {"anim@arena@celeb@podium@no_prop@", "regal_a_1st", "Bow 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["keyfob"] = {"anim@mp_player_intmenu@key_fob@", "fob_click", "Key Fob", AnimationOptions = - { - EmoteLoop = false, - EmoteMoving = true, - EmoteDuration = 1000, - }}, - ["golfswing"] = {"rcmnigel1d", "swing_a_mark", "Golf Swing"}, - ["eat"] = {"mp_player_inteat@burger", "mp_player_int_eat_burger", "Eat", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000, - }}, - ["reaching"] = {"move_m@intimidation@cop@unarmed", "idle", "Reaching", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait"] = {"random@shop_tattoo", "_idle_a", "Wait", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait2"] = {"missbigscore2aig_3", "wait_for_van_c", "Wait 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait12"] = {"rcmjosh1", "idle", "Wait 12", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wait13"] = {"rcmnigel1a", "base", "Wait 13", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["lapdance2"] = {"mini@strip_club@private_dance@idle", "priv_dance_idle", "Lapdance 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["lapdance3"] = {"mini@strip_club@private_dance@part2", "priv_dance_p2", "Lapdance 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["lapdance3"] = {"mini@strip_club@private_dance@part3", "priv_dance_p3", "Lapdance 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["twerk"] = {"switch@trevor@mocks_lapdance", "001443_01_trvs_28_idle_stripper", "Twerk", AnimationOptions = - { - EmoteLoop = true, - }}, - ["slap"] = {"melee@unarmed@streamed_variations", "plyr_takedown_front_slap", "Slap", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["headbutt"] = {"melee@unarmed@streamed_variations", "plyr_takedown_front_headbutt", "Headbutt"}, - ["fishdance"] = {"anim@mp_player_intupperfind_the_fish", "idle_a", "Fish Dance", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace"] = {"mp_player_int_upperpeace_sign", "mp_player_int_peace_sign", "Peace", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace2"] = {"anim@mp_player_intupperpeace", "idle_a", "Peace 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cpr"] = {"mini@cpr@char_a@cpr_str", "cpr_pumpchest", "CPR", AnimationOptions = - { - EmoteLoop = true, - }}, - ["cpr2"] = {"mini@cpr@char_a@cpr_str", "cpr_pumpchest", "CPR 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ledge"] = {"missfbi1", "ledge_loop", "Ledge", AnimationOptions = - { - EmoteLoop = true, - }}, - ["airplane"] = {"missfbi1", "ledge_loop", "Air Plane", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peek"] = {"random@paparazzi@peek", "left_peek_a", "Peek", AnimationOptions = - { - EmoteLoop = true, - }}, - ["cough"] = {"timetable@gardener@smoking_joint", "idle_cough", "Cough", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["stretch"] = {"mini@triathlon", "idle_e", "Stretch", AnimationOptions = - { - EmoteLoop = true, - }}, - ["stretch2"] = {"mini@triathlon", "idle_f", "Stretch 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["stretch3"] = {"mini@triathlon", "idle_d", "Stretch 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["stretch4"] = {"rcmfanatic1maryann_stretchidle_b", "idle_e", "Stretch 4", AnimationOptions = - { - EmoteLoop = true, - }}, - ["celebrate"] = {"rcmfanatic1celebrate", "celebrate", "Celebrate", AnimationOptions = - { - EmoteLoop = true, - }}, - ["punching"] = {"rcmextreme2", "loop_punching", "Punching", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["superhero"] = {"rcmbarry", "base", "Superhero", AnimationOptions = - { - EmoteLoop = true, - }}, - ["superhero2"] = {"rcmbarry", "base", "Superhero 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["mindcontrol"] = {"rcmbarry", "mind_control_b_loop", "Mind Control", AnimationOptions = - { - EmoteLoop = true, - }}, - ["mindcontrol2"] = {"rcmbarry", "bar_1_attack_idle_aln", "Mind Control 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["clown"] = {"rcm_barry2", "clown_idle_0", "Clown", AnimationOptions = - { - EmoteLoop = true, - }}, - ["clown2"] = {"rcm_barry2", "clown_idle_1", "Clown 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["clown3"] = {"rcm_barry2", "clown_idle_2", "Clown 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["clown4"] = {"rcm_barry2", "clown_idle_3", "Clown 4", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["clown5"] = {"rcm_barry2", "clown_idle_6", "Clown 5", AnimationOptions = - { - EmoteLoop = true, - }}, - ["tryclothes"] = {"mp_clothing@female@trousers", "try_trousers_neutral_a", "Try Clothes", AnimationOptions = - { - EmoteLoop = true, - }}, - ["tryclothes2"] = {"mp_clothing@female@shirt", "try_shirt_positive_a", "Try Clothes 2", AnimationOptions = - { - EmoteLoop = true, - }}, - ["tryclothes3"] = {"mp_clothing@female@shoes", "try_shoes_positive_a", "Try Clothes 3", AnimationOptions = - { - EmoteLoop = true, - }}, - ["nervous2"] = {"mp_missheist_countrybank@nervous", "nervous_idle", "Nervous 2", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["nervous"] = {"amb@world_human_bum_standing@twitchy@idle_a", "idle_c", "Nervous", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["nervous3"] = {"rcmme_tracey1", "nervous_loop", "Nervous 3", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["uncuff"] = {"mp_arresting", "a_uncuff", "Uncuff", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["namaste"] = {"timetable@amanda@ig_4", "ig_4_base", "Namaste", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["dj"] = {"anim@amb@nightclub@djs@dixon@", "dixn_dance_cntr_open_dix", "DJ", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["threaten"] = {"random@atmrobberygen", "b_atm_mugging", "Threaten", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["radio"] = {"random@arrests", "generic_radio_chatter", "Radio", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pull"] = {"random@mugging4", "struggle_loop_b_thief", "Pull", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bird"] = {"random@peyote@bird", "wakeup", "Bird"}, - ["chicken"] = {"random@peyote@chicken", "wakeup", "Chicken", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bark"] = {"random@peyote@dog", "wakeup", "Bark"}, - ["rabbit"] = {"random@peyote@rabbit", "wakeup", "Rabbit"}, - ["spiderman"] = {"missexile3", "ex03_train_roof_idle", "Spider-Man", AnimationOptions = - { - EmoteLoop = true, - }}, - ["boi"] = {"special_ped@jane@monologue_5@monologue_5c", "brotheradrianhasshown_2", "BOI", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 3000, - }}, - ["adjust"] = {"missmic4", "michael_tux_fidget", "Adjust", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 4000, - }}, - ["handsup"] = {"missminuteman_1ig_2", "handsup_base", "Hands Up", AnimationOptions = - { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["pee"] = {"misscarsteal2peeing", "peeing_loop", "Pee", AnimationOptions = - { - EmoteStuck = true, - PtfxAsset = "scr_amb_chop", - PtfxName = "ent_anim_dog_peeing", - PtfxNoProp = true, - PtfxPlacement = {-0.05, 0.3, 0.0, 0.0, 90.0, 90.0, 1.0}, - PtfxInfo = Config.Languages[Config.MenuLanguage]['pee'], - PtfxWait = 3000, - }}, + }}, + ["curtsy"] = { "anim@mp_player_intcelebrationpaired@f_f_sarcastic", "sarcastic_left", "Curtsy" }, + ["bringiton"] = { "misscommon@response", "bring_it_on", "Bring It On", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3000 + }}, + ["comeatmebro"] = { "mini@triathlon", "want_some_of_this", "Come at me bro", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 2000 + }}, + ["cop2"] = { "anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Cop 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["cop3"] = { "amb@code_human_police_investigate@idle_a", "idle_b", "Cop 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["crossarms"] = { "amb@world_human_hang_out_street@female_arms_crossed@idle_a", "idle_a", "Crossarms", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["crossarms2"] = { "amb@world_human_hang_out_street@male_c@idle_a", "idle_b", "Crossarms 2", AnimationOptions = { + EmoteMoving = true, + }}, + ["crossarms3"] = { "anim@heists@heist_corona@single_team", "single_team_loop_boss", "Crossarms 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["crossarms4"] = { "random@street_race", "_car_b_lookout", "Crossarms 4", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["crossarms5"] = { "anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Crossarms 5", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foldarms2"] = { "anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Fold Arms 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["crossarms6"] = { "random@shop_gunstore", "_idle", "Crossarms 6", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foldarms"] = { "anim@amb@business@bgen@bgen_no_work@", "stand_phone_phoneputdown_idle_nowork", "Fold Arms", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["crossarmsside"] = { "rcmnigel1a_band_groupies", "base_m2", "Crossarms Side", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["damn"] = { "gestures@m@standing@casual", "gesture_damn", "Damn", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 1000 + }}, + ["damn2"] = { "anim@am_hold_up@male", "shoplift_mid", "Damn 2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 1000 + }}, + ["pointdown"] = { "gestures@f@standing@casual", "gesture_hand_down", "Point Down", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 1000 + }}, + ["surrender"] = { "random@arrests@busted", "idle_a", "Surrender", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["surrender2"] = { "mp_bank_heist_1", "f_cower_02", "Surrender 2", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["surrender3"] = { "mp_bank_heist_1", "m_cower_01", "Surrender 3", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["surrender4"] = { "mp_bank_heist_1", "m_cower_02", "Surrender 4", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["surrender5"] = { "random@arrests", "kneeling_arrest_idle", "Surrender 5", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["surrender6"] = { "rcmbarry", "m_cower_01", "Surrender 6", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["facepalm2"] = { "anim@mp_player_intcelebrationfemale@face_palm", "face_palm", "Facepalm 2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 8000 + }}, + ["facepalm"] = { "random@car_thief@agitated@idle_a", "agitated_idle_a", "Facepalm", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 8000 + }}, + ["facepalm3"] = { "missminuteman_1ig_2", "tasered_2", "Facepalm 3", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 8000 + }}, + ["facepalm4"] = { "anim@mp_player_intupperface_palm", "idle_a", "Facepalm 4", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["fallover"] = { "random@drunk_driver_1", "drunk_fall_over", "Fall Over" }, + ["fallover2"] = { "mp_suicide", "pistol", "Fall Over 2" }, + ["fallover3"] = { "mp_suicide", "pill", "Fall Over 3" }, + ["fallover4"] = { "friends@frf@ig_2", "knockout_plyr", "Fall Over 4" }, + ["fallover5"] = { "anim@gangops@hostage@", "victim_fail", "Fall Over 5" }, + ["fallasleep"] = { "mp_sleep", "sleep_loop", "Fall Asleep", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["fightme"] = { "anim@deathmatch_intros@unarmed", "intro_male_unarmed_c", "Fight Me" }, + ["fightme2"] = { "anim@deathmatch_intros@unarmed", "intro_male_unarmed_e", "Fight Me 2" }, + ["finger"] = { "anim@mp_player_intselfiethe_bird", "idle_a", "Finger", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["finger2"] = { "anim@mp_player_intupperfinger", "idle_a_fp", "Finger 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["handshake"] = { "mp_ped_interaction", "handshake_guy_a", "Handshake", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3000 + }}, + ["handshake2"] = { "mp_ped_interaction", "handshake_guy_b", "Handshake 2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3000 + }}, + ["wait"] = { "random@shop_tattoo", "_idle_a", "Wait", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitb"] = { "missbigscore2aig_3", "wait_for_van_c", "Wait B", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitc"] = { "amb@world_human_hang_out_street@female_hold_arm@idle_a", "idle_a", "Wait C", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitd"] = { "amb@world_human_hang_out_street@Female_arm_side@idle_a", "idle_a", "Wait D", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waite"] = { "missclothing", "idle_storeclerk", "Wait E", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitf"] = { "timetable@amanda@ig_2", "ig_2_base_amanda", "Wait F", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitg"] = { "rcmnigel1cnmt_1c", "base", "Wait G", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waith"] = { "rcmjosh1", "idle", "Wait H", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waiti"] = { "rcmjosh2", "josh_2_intp1_base", "Wait I", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitj"] = { "timetable@amanda@ig_3", "ig_3_base_tracy", "Wait J", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitk"] = { "misshair_shop@hair_dressers", "keeper_base", "Wait K", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitl"] = { "rcmjosh1", "keeper_base", "Wait L", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["waitm"] = { "rcmnigel1a", "base", "Wait M", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["hiking"] = { "move_m@hiking", "idle", "Hiking", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["hug"] = { "mp_ped_interaction", "kisses_guy_a", "Hug" }, + ["hug2"] = { "mp_ped_interaction", "kisses_guy_b", "Hug 2" }, + ["hug3"] = { "mp_ped_interaction", "hugs_guy_a", "Hug 3" }, + ["inspect"] = { "random@train_tracks", "idle_e", "Inspect" }, + ["jazzhands"] = { "anim@mp_player_intcelebrationfemale@jazz_hands", "jazz_hands", "Jazzhands", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 6000, + }}, + ["jog2"] = { "amb@world_human_jog_standing@male@idle_a", "idle_a", "Jog 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["jog3"] = { "amb@world_human_jog_standing@female@idle_a", "idle_a", "Jog 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["jog4"] = { "amb@world_human_power_walker@female@idle_a", "idle_a", "Jog 4", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["jog5"] = { "move_m@joy@a", "walk", "Jog 5", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["jumpingjacks"] = { "timetable@reunited@ig_2", "jimmy_getknocked", "Jumping Jacks", AnimationOptions = { + EmoteLoop = true, + }}, + ["kneel2"] = { "rcmextreme3", "idle", "Kneel 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["kneel3"] = { "amb@world_human_bum_wash@male@low@idle_a", "idle_a", "Kneel 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["knock"] = { "timetable@jimmy@doorknock@", "knockdoor_idle", "Knock", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["knock2"] = { "missheistfbi3b_ig7", "lift_fibagent_loop", "Knock 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["knucklecrunch"] = { "anim@mp_player_intcelebrationfemale@knuckle_crunch", "knuckle_crunch", "Knuckle Crunch", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["lean2"] = { "amb@world_human_leaning@female@wall@back@hand_up@idle_a", "idle_a", "Lean 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["lean3"] = { "amb@world_human_leaning@female@wall@back@holding_elbow@idle_a", "idle_a", "Lean 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["lean4"] = { "amb@world_human_leaning@male@wall@back@foot_up@idle_a", "idle_a", "Lean 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["lean5"] = { "amb@world_human_leaning@male@wall@back@hands_together@idle_b", "idle_b", "Lean 5", AnimationOptions = { + EmoteLoop = true, + }}, + ["leanflirt"] = { "random@street_race", "_car_a_flirt_girl", "Lean Flirt", AnimationOptions = { + EmoteLoop = true, + }}, + ["leanbar2"] = { "amb@prop_human_bum_shopping_cart@male@idle_a", "idle_c", "Lean Bar 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["leanbar3"] = { "anim@amb@nightclub@lazlow@ig1_vip@", "clubvip_base_laz", "Lean Bar 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["leanbar4"] = { "anim@heists@prison_heist", "ped_b_loop_a", "Lean Bar 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["leanhigh"] = { "anim@mp_ferris_wheel", "idle_a_player_one", "Lean High", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["leanhigh2"] = { "anim@mp_ferris_wheel", "idle_a_player_two", "Lean High 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["leanside"] = { "timetable@mime@01_gc", "idle_a", "Leanside", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["leanside2"] = { "misscarstealfinale", "packer_idle_1_trevor", "Leanside 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["leanside3"] = { "misscarstealfinalecar_5_ig_1", "waitloop_lamar", "Leanside 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["leanside4"] = { "misscarstealfinalecar_5_ig_1", "waitloop_lamar", "Leanside 4", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["leanside5"] = { "rcmjosh2", "josh_2_intp1_base", "Leanside 5", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["me"] = { "gestures@f@standing@casual", "gesture_me_hard", "Me", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 1000 + }}, + ["mechanic"] = { "mini@repair", "fixing_a_ped", "Mechanic", AnimationOptions = { + EmoteLoop = true, + }}, + ["mechanic2"] = { "mini@repair", "fixing_a_player", "Mechanic 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["mechanic3"] = { "amb@world_human_vehicle_mechanic@male@base", "base", "Mechanic 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["mechanic4"] = { "anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer", "Mechanic 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["mechanic5"] = { "amb@prop_human_movie_bulb@idle_a", "idle_b", "Mechanic 5", AnimationOptions = { + EmoteLoop = true, + }}, + ["medic2"] = { "amb@medic@standing@tendtodead@base", "base", "Medic 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["meditate"] = { "rcmcollect_paperleadinout@", "meditiate_idle", "Meditiate", AnimationOptions = { -- CHANGE ME + EmoteLoop = true, + }}, + ["meditate2"] = { "rcmepsilonism3", "ep_3_rcm_marnie_meditating", "Meditiate 2", AnimationOptions = { -- CHANGE ME + EmoteLoop = true, + }}, + ["meditate3"] = { "rcmepsilonism3", "base_loop", "Meditiate 3", AnimationOptions = { -- CHANGE ME + EmoteLoop = true, + }}, + ["metal"] = { "anim@mp_player_intincarrockstd@ps@", "idle_a", "Metal", AnimationOptions = { -- CHANGE ME + EmoteLoop = true, + EmoteMoving = true, + }}, + ["no"] = { "anim@heists@ornate_bank@chat_manager", "fail", "No", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["no2"] = { "mp_player_int_upper_nod", "mp_player_int_nod_no", "No 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["nosepick"] = { "anim@mp_player_intcelebrationfemale@nose_pick", "nose_pick", "Nose Pick", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["noway"] = { "gestures@m@standing@casual", "gesture_no_way", "No Way", AnimationOptions = { + EmoteDuration = 1500, + EmoteMoving = true, + }}, + ["ok"] = { "anim@mp_player_intselfiedock", "idle_a", "OK", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["dock"] = { "anim@mp_player_intincardockstd@rds@", "idle_a", "Dock", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["outofbreath"] = { "re@construction", "out_of_breath", "Out of Breath", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["pickup"] = { "random@domestic", "pickup_low", "Pickup" }, + ["push"] = { "missfinale_c2ig_11", "pushcar_offcliff_f", "Push", AnimationOptions = { + EmoteLoop = true, + }}, + ["push2"] = { "missfinale_c2ig_11", "pushcar_offcliff_m", "Push 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["point"] = { "gestures@f@standing@casual", "gesture_point", "Point", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["pushup"] = { "amb@world_human_push_ups@male@idle_a", "idle_d", "Pushup", AnimationOptions = { + EmoteLoop = true, + }}, + ["countdown"] = { "random@street_race", "grid_girl_race_start", "Countdown", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["pointright"] = { "mp_gun_shop_tut", "indicate_right", "Point Right", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["salute"] = { "anim@mp_player_intincarsalutestd@ds@", "idle_a", "Salute", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["salute2"] = { "anim@mp_player_intincarsalutestd@ps@", "idle_a", "Salute 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["salute3"] = { "anim@mp_player_intuppersalute", "idle_a", "Salute 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["scared"] = { "random@domestic", "f_distressed_loop", "Scared", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["scared2"] = { "random@homelandsecurity", "knees_loop_girl", "Scared 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["screwyou"] = { "misscommon@response", "screw_you", "Screw You", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["shakeoff"] = { "move_m@_idles@shake_off", "shakeoff_1", "Shake Off", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3500, + }}, + ["shot"] = { "random@dealgonewrong", "idle_a", "Shot", AnimationOptions = { + EmoteLoop = true, + }}, + ["sleep"] = { "timetable@tracy@sleep@", "idle_c", "Sleep", AnimationOptions = { + EmoteLoop = true, + }}, + ["shrug"] = { "gestures@f@standing@casual", "gesture_shrug_hard", "Shrug", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 1000, + }}, + ["shrug2"] = { "gestures@m@standing@casual", "gesture_shrug_hard", "Shrug 2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 1000, + }}, + ["sit"] = { "anim@amb@business@bgen@bgen_no_work@", "sit_phone_phoneputdown_idle_nowork", "Sit", AnimationOptions = { + EmoteLoop = true, + }}, + ["sit2"] = { "rcm_barry3", "barry_3_sit_loop", "Sit 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["sit3"] = { "amb@world_human_picnic@male@idle_a", "idle_a", "Sit 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["sit4"] = { "amb@world_human_picnic@female@idle_a", "idle_a", "Sit 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["sit5"] = { "anim@heists@fleeca_bank@ig_7_jetski_owner", "owner_idle", "Sit 5", AnimationOptions = { + EmoteLoop = true, + }}, + ["sit6"] = { "timetable@jimmy@mics3_ig_15@", "idle_a_jimmy", "Sit 6", AnimationOptions = { + EmoteLoop = true, + }}, + ["sit7"] = { "anim@amb@nightclub@lazlow@lo_alone@", "lowalone_base_laz", "Sit 7", AnimationOptions = { + EmoteLoop = true, + }}, + ["sit8"] = { "timetable@jimmy@mics3_ig_15@", "mics3_15_base_jimmy", "Sit 8", AnimationOptions = { + EmoteLoop = true, + }}, + ["sit9"] = { "amb@world_human_stupor@male@idle_a", "idle_a", "Sit 9", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitlow"] = { "anim@veh@lowrider@std@ds@arm@base", "sit_low_lowdoor", "Sit Lowrider", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitlean"] = { "timetable@tracy@ig_14@", "ig_14_base_tracy", "Sit Lean", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitsad"] = { "anim@amb@business@bgen@bgen_no_work@", "sit_phone_phoneputdown_sleeping-noworkfemale", "Sit Sad", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitscared"] = { "anim@heists@ornate_bank@hostages@hit", "hit_loop_ped_b", "Sit Scared", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitscared2"] = { "anim@heists@ornate_bank@hostages@ped_c@", "flinch_loop", "Sit Scared 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitscared3"] = { "anim@heists@ornate_bank@hostages@ped_e@", "flinch_loop", "Sit Scared 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitdrunk"] = { "timetable@amanda@drunk@base", "base", "Sit Drunk", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitchair2"] = { "timetable@ron@ig_5_p3", "ig_5_p3_base", "Sit Chair 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitchair3"] = { "timetable@reunited@ig_10", "base_amanda", "Sit Chair 3 (Female)", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitchair4"] = { "timetable@ron@ig_3_couch", "base", "Sit Chair 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitchair5"] = { "timetable@jimmy@mics3_ig_15@", "mics3_15_base_tracy", "Sit Chair Legs Crossed", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitchair6"] = { "timetable@maid@couch@", "base", "Sit Chair Lean Back", AnimationOptions = { + EmoteLoop = true, + }}, + ["sitchairside"] = { "timetable@ron@ron_ig_2_alt1", "ig_2_alt1_base", "Sit Chair Side", AnimationOptions = { + EmoteLoop = true, + }}, + ["situp"] = { "amb@world_human_sit_ups@male@idle_a", "idle_a", "Sit Up", AnimationOptions = { + EmoteLoop = true, + }}, + ["clapangry"] = { "anim@arena@celeb@flat@solo@no_props@", "angry_clap_a_player_a", "Clap Angry", AnimationOptions = { + EmoteLoop = true, + }}, + ["slowclap3"] = { "anim@mp_player_intupperslow_clap", "idle_a", "Slow Clap 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["clap"] = { "amb@world_human_cheering@male_a", "base", "Clap", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["slowclap"] = { "anim@mp_player_intcelebrationfemale@slow_clap", "slow_clap", "Slow Clap", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["slowclap2"] = { "anim@mp_player_intcelebrationmale@slow_clap", "slow_clap", "Slow Clap 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["smell"] = { "move_p_m_two_idles@generic", "fidget_sniff_fingers", "Smell", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["stickup"] = { "random@countryside_gang_fight", "biker_02_stickup_loop", "Stick Up", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["stumble"] = { "misscarsteal4@actor", "stumble", "Stumble", AnimationOptions = { + EmoteLoop = true, + }}, + ["stunned"] = { "stungun@standing", "damage", "Stunned", AnimationOptions = { + EmoteLoop = true, + }}, + ["sunbathe"] = { "amb@world_human_sunbathe@male@back@base", "base", "Sunbathe", AnimationOptions = { + EmoteLoop = true, + }}, + ["sunbathe2"] = { "amb@world_human_sunbathe@female@back@base", "base", "Sunbathe 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["t"] = { "missfam5_yoga", "a2_pose", "T", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["t2"] = { "mp_sleep", "bind_pose_180", "T 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["think5"] = { "mp_cp_welcome_tutthink", "b_think", "Think 5", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 2000, + }}, + ["think"] = { "misscarsteal4@aliens", "rehearsal_base_idle_director", "Think", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["think3"] = { "timetable@tracy@ig_8@base", "base", "Think 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, ------------------------------------------------------------------------------------------------------------ ------- These are Scenarios, some of these dont work on women and some other issues, but still good to have. ------------------------------------------------------------------------------------------------------------ + ["think2"] = { "missheist_jewelleadinout", "jh_int_outro_loop_a", "Think 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["thumbsup3"] = { "anim@mp_player_intincarthumbs_uplow@ds@", "enter", "Thumbs Up 3", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3000, + }}, + ["thumbsup2"] = { "anim@mp_player_intselfiethumbs_up", "idle_a", "Thumbs Up 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["thumbsup"] = { "anim@mp_player_intupperthumbs_up", "idle_a", "Thumbs Up", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["type"] = { "anim@heists@prison_heiststation@cop_reactions", "cop_b_idle", "Type", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["type2"] = { "anim@heists@prison_heistig1_p1_guard_checks_bus", "loop", "Type 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["type3"] = { "mp_prison_break", "hack_loop", "Type 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["type4"] = { "mp_fbi_heist", "loop", "Type 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["warmth"] = { "amb@world_human_stand_fire@male@idle_a", "idle_a", "Warmth", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wave4"] = { "random@mugging5", "001445_01_gangintimidation_1_female_idle_b", "Wave 4", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3000, + }}, + ["wave2"] = { "anim@mp_player_intcelebrationfemale@wave", "wave", "Wave 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wave3"] = { "friends@fra@ig_1", "over_here_idle_a", "Wave 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wave"] = { "friends@frj@ig_1", "wave_a", "Wave", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wave5"] = { "friends@frj@ig_1", "wave_b", "Wave 5", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wave6"] = { "friends@frj@ig_1", "wave_c", "Wave 6", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wave7"] = { "friends@frj@ig_1", "wave_d", "Wave 7", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wave8"] = { "friends@frj@ig_1", "wave_e", "Wave 8", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wave9"] = { "gestures@m@standing@casual", "gesture_hello", "Wave 9", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["whistle"] = { "taxi_hail", "hail_taxi", "Whistle", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 1300, + }}, + ["whistle2"] = { "rcmnigel1c", "hailing_whistle_waive_a", "Whistle 2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 2000, + }}, + ["yeah"] = { "anim@mp_player_intupperair_shagging", "idle_a", "Yeah", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["lift"] = { "random@hitch_lift", "idle_f", "Lift", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["lol"] = { "anim@arena@celeb@flat@paired@no_props@", "laugh_a_player_b", "LOL", AnimationOptions = { + EmoteLoop = true, + }}, + ["lol2"] = { "anim@arena@celeb@flat@solo@no_props@", "giggle_a_player_b", "LOL 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["statue2"] = { "fra_0_int-1", "cs_lamardavis_dual-1", "Statue 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["statue3"] = { "club_intro2-0", "csb_englishdave_dual-0", "Statue 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["gangsign"] = { "mp_player_int_uppergang_sign_a", "mp_player_int_gang_sign_a", "Gang Sign", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["gangsign2"] = { "mp_player_int_uppergang_sign_b", "mp_player_int_gang_sign_b", "Gang Sign 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["passout"] = { "missarmenian2", "drunk_loop", "Passout", AnimationOptions = { + EmoteLoop = true, + }}, + ["passout2"] = { "missarmenian2", "corpse_search_exit_ped", "Passout 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["passout3"] = { "anim@gangops@morgue@table@", "body_search", "Passout 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["passout4"] = { "mini@cpr@char_b@cpr_def", "cpr_pumpchest_idle", "Passout 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["passout5"] = { "random@mugging4", "flee_backward_loop_shopkeeper", "Passout 5", AnimationOptions = { + EmoteLoop = true, + }}, + ["petting"] = { "creatures@rottweiler@tricks@", "petting_franklin", "Petting", AnimationOptions = { + EmoteLoop = true, + }}, + ["crawl"] = { "move_injured_ground", "front_loop", "Crawl", AnimationOptions = { + EmoteLoop = true, + }}, + ["flip2"] = { "anim@arena@celeb@flat@solo@no_props@", "cap_a_player_a", "Flip 2" }, + ["flip"] = { "anim@arena@celeb@flat@solo@no_props@", "flip_a_player_a", "Flip" }, + ["slide"] = { "anim@arena@celeb@flat@solo@no_props@", "slide_a_player_a", "Slide" }, + ["slide2"] = { "anim@arena@celeb@flat@solo@no_props@", "slide_b_player_a", "Slide 2" }, + ["slide3"] = { "anim@arena@celeb@flat@solo@no_props@", "slide_c_player_a", "Slide 3" }, + ["slugger"] = { "anim@arena@celeb@flat@solo@no_props@", "slugger_a_player_a", "Slugger" }, + ["flipoff"] = { "anim@arena@celeb@podium@no_prop@", "flip_off_a_1st", "Flip Off", AnimationOptions = { + EmoteMoving = true, + }}, + ["flipoff2"] = { "anim@arena@celeb@podium@no_prop@", "flip_off_c_1st", "Flip Off 2", AnimationOptions = { + EmoteMoving = true, + }}, + ["bow"] = { "anim@arena@celeb@podium@no_prop@", "regal_c_1st", "Bow", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["bow2"] = { "anim@arena@celeb@podium@no_prop@", "regal_a_1st", "Bow 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["keyfob"] = { "anim@mp_player_intmenu@key_fob@", "fob_click", "Key Fob", AnimationOptions = { + EmoteLoop = false, + EmoteMoving = true, + EmoteDuration = 1000, + }}, + ["reaching"] = { "move_m@intimidation@cop@unarmed", "idle", "Reaching", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["slap"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_slap", "Slap", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + EmoteDuration = 2000, + }}, + ["headbutt"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_headbutt", "Headbutt" }, + ["fishdance"] = { "anim@mp_player_intupperfind_the_fish", "idle_a", "Fish Dance", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peace"] = { "mp_player_int_upperpeace_sign", "mp_player_int_peace_sign", "Peace", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peace2"] = { "anim@mp_player_intupperpeace", "idle_a", "Peace 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peace3"] = { "anim@mp_player_intupperpeace", "idle_a_fp", "Peace 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peace4"] = { "anim@mp_player_intincarpeacestd@ds@", "idle_a", "Peace 4", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peace5"] = { "anim@mp_player_intincarpeacestd@ds@", "idle_a_fp", "Peace 5", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peace6"] = { "anim@mp_player_intincarpeacebodhi@ds@", "idle_a", "Peace 6", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peace7"] = { "anim@mp_player_intincarpeacebodhi@ds@", "idle_a_fp", "Peace 7", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peacef"] = { "anim@mp_player_intcelebrationfemale@peace", "peace", "Peace Female", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["cpr"] = { "mini@cpr@char_a@cpr_str", "cpr_pumpchest", "CPR", AnimationOptions = { + EmoteLoop = true, + }}, + ["cpr2"] = { "mini@cpr@char_a@cpr_str", "cpr_pumpchest", "CPR 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ledge"] = { "missfbi1", "ledge_loop", "Ledge", AnimationOptions = { + EmoteLoop = true, + }}, + ["airplane"] = { "missfbi1", "ledge_loop", "Air Plane", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["peek"] = { "random@paparazzi@peek", "left_peek_a", "Peek", AnimationOptions = { + EmoteLoop = true, + }}, + ["cough"] = { "timetable@gardener@smoking_joint", "idle_cough", "Cough", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["stretch"] = { "mini@triathlon", "idle_e", "Stretch", AnimationOptions = { + EmoteLoop = true, + }}, + ["stretch2"] = { "mini@triathlon", "idle_f", "Stretch 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["stretch3"] = { "mini@triathlon", "idle_d", "Stretch 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["stretch4"] = { "rcmfanatic1maryann_stretchidle_b", "idle_e", "Stretch 4", AnimationOptions = { + EmoteLoop = true, + }}, + ["celebrate"] = { "rcmfanatic1celebrate", "celebrate", "Celebrate", AnimationOptions = { + EmoteLoop = true, + }}, + ["punching"] = { "rcmextreme2", "loop_punching", "Punching", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["superhero"] = { "rcmbarry", "base", "Superhero", AnimationOptions = { + EmoteLoop = true, + }}, + ["superhero2"] = { "rcmbarry", "base", "Superhero 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["mindcontrol"] = { "rcmbarry", "mind_control_b_loop", "Mind Control", AnimationOptions = { + EmoteLoop = true, + }}, + ["mindcontrol2"] = { "rcmbarry", "bar_1_attack_idle_aln", "Mind Control 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["clown"] = { "rcm_barry2", "clown_idle_0", "Clown", AnimationOptions = { + EmoteLoop = true, + }}, + ["clown2"] = { "rcm_barry2", "clown_idle_1", "Clown 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["clown3"] = { "rcm_barry2", "clown_idle_2", "Clown 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["clown4"] = { "rcm_barry2", "clown_idle_3", "Clown 4", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["clown5"] = { "rcm_barry2", "clown_idle_6", "Clown 5", AnimationOptions = { + EmoteLoop = true, + }}, + ["tryclothes"] = { "mp_clothing@female@trousers", "try_trousers_neutral_a", "Try Clothes", AnimationOptions = { + EmoteLoop = true, + }}, + ["tryclothes2"] = { "mp_clothing@female@shirt", "try_shirt_positive_a", "Try Clothes 2", AnimationOptions = { + EmoteLoop = true, + }}, + ["tryclothes3"] = { "mp_clothing@female@shoes", "try_shoes_positive_a", "Try Clothes 3", AnimationOptions = { + EmoteLoop = true, + }}, + ["nervous2"] = { "mp_missheist_countrybank@nervous", "nervous_idle", "Nervous 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["nervous"] = { "amb@world_human_bum_standing@twitchy@idle_a", "idle_c", "Nervous", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["nervous3"] = { "rcmme_tracey1", "nervous_loop", "Nervous 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["uncuff"] = { "mp_arresting", "a_uncuff", "Uncuff", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["namaste"] = { "timetable@amanda@ig_4", "ig_4_base", "Namaste", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["threaten"] = { "random@atmrobberygen", "b_atm_mugging", "Threaten", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["radio"] = { "random@arrests", "generic_radio_chatter", "Radio", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["pull"] = { "random@mugging4", "struggle_loop_b_thief", "Pull", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["bird"] = { "random@peyote@bird", "wakeup", "Bird" }, + ["chicken"] = { "random@peyote@chicken", "wakeup", "Chicken", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["bark"] = { "random@peyote@dog", "wakeup", "Bark" }, + ["rabbit"] = { "random@peyote@rabbit", "wakeup", "Rabbit" }, + ["spiderman"] = { "missexile3", "ex03_train_roof_idle", "Spider-Man", AnimationOptions = { + EmoteLoop = true, + }}, + ["boi"] = { "special_ped@jane@monologue_5@monologue_5c", "brotheradrianhasshown_2", "BOI", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 3000, + }}, + ["adjust"] = { "missmic4", "michael_tux_fidget", "Adjust", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 4000, + }}, + ["handsup"] = { "missminuteman_1ig_2", "handsup_base", "Hands Up", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["handsup2"] = { "anim@mp_player_intuppersurrender", "idle_a_fp", "Hands Up 2", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["valet"] = { "anim@amb@casino@valet_scenario@pose_a@", "base_a_m_y_vinewood_01", "Valet", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["valet2"] = { "anim@amb@casino@valet_scenario@pose_b@", "base_a_m_y_vinewood_01", "Valet 2", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = false, + }}, + ["valet3"] = { "anim@amb@casino@valet_scenario@pose_d@", "base_a_m_y_vinewood_01", "Valet 3", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tighten"] = { "timetable@denice@ig_1", "idle_b", "Tigten (Yoga)", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["fspose"] = { "missfam5_yoga", "c2_pose", "F Sex Pose", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["fspose2"] = { "missfam5_yoga", "c6_pose", "F Sex Pose 2", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["fspose4"] = { "anim@amb@carmeet@checkout_car@", "female_c_idle_d", "F Sex Pose 4", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["showerf"] = { "mp_safehouseshower@female@", "shower_enter_into_idle", "Shower Enter Female", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["showerf2"] = { "mp_safehouseshower@female@", "shower_idle_a", "Shower Female", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["showerf3"] = { "mp_safehouseshower@female@", "shower_idle_b", "Shower Female 2", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["showerm"] = { "mp_safehouseshower@male@", "male_shower_idle_a", "Shower Enter Male", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["showerm2"] = { "mp_safehouseshower@male@", "male_shower_idle_b", "Shower Male 2", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["showerm3"] = { "mp_safehouseshower@male@", "male_shower_idle_c", "Shower Male 3", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["showerm4"] = { "mp_safehouseshower@male@", "male_shower_idle_d", "Shower Male 4", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["picklock"] = { "missheistfbisetup1", "hassle_intro_loop_f", "Picklock", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["cleanhands"] = { "missheist_agency3aig_23", "urinal_sink_loop", "Clean Them Filthy Hands", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["cleanface"] = { "switch@michael@wash_face", "loop_michael", "Clean Your Face", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["buzz"] = { "anim@apt_trans@buzzer", "buzz_reg", "Buzz Door", AnimationOptions = { + EmoteLoop = false, + EmoteMoving = false, + }}, + ["piss"] = { "missbigscore1switch_trevor_piss", "piss_loop", "Piss (Male)", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + }}, + ["grieve"] = { "anim@miss@low@fin@vagos@", "idle_ped05", "Grieve The Dead", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true, + }}, + ["respect"] = { "anim@mp_player_intcelebrationmale@respect", "respect", "Respect Male", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = false, + }}, + ["respectf"] = { "anim@mp_player_intcelebrationfemale@respect", "respect", "Respect Female", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = false, + }}, + ["bang"] = { "anim@mp_player_intcelebrationfemale@bang_bang", "bang_bang", "Bang Bang ", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 2500, + }}, + ["checkcar"] = { "anim@amb@carmeet@checkout_car@male_a@idles", "idle_b", "Check Out · Female ", AnimationOptions = { + EmoteLoop = true, + }}, + ["checkcar2"] = { "anim@amb@carmeet@checkout_car@male_c@idles", "idle_a", "Check Out 2 · Male ", AnimationOptions = { + EmoteLoop = true, + }}, + ["showboobs"] = { "mini@strip_club@backroom@", "stripper_b_backroom_idle_b", "Show Boobs ", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 6000, + }}, + ["showboobs2"] = { "mini@strip_club@idles@stripper", "stripper_idle_05", "Show Boobs 2", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 6000, + }}, + ["watchstripper"] = { "amb@world_human_strip_watch_stand@male_c@idle_a", "idle_b", "Watch Stripper ", AnimationOptions = { + EmoteMoving = false, + EmoteDuration = 6000, + }}, + ["hhands"] = { "misssnowie@hearthands", "base", "Heart Hands", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, - ["atm"] = {"Scenario", "PROP_HUMAN_ATM", "ATM"}, - ["bbq"] = {"MaleScenario", "PROP_HUMAN_BBQ", "BBQ"}, - ["bumbin"] = {"Scenario", "PROP_HUMAN_BUM_BIN", "Bum Bin"}, - ["bumsleep"] = {"Scenario", "WORLD_HUMAN_BUM_SLUMPED", "Bum Sleep"}, - ["cheer"] = {"Scenario", "WORLD_HUMAN_CHEERING", "Cheer"}, - ["chinup"] = {"Scenario", "PROP_HUMAN_MUSCLE_CHIN_UPS", "Chinup"}, - ["clipboard2"] = {"MaleScenario", "WORLD_HUMAN_CLIPBOARD", "Clipboard 2"}, - ["cop"] = {"Scenario", "WORLD_HUMAN_COP_IDLES", "Cop"}, - ["copbeacon"] = {"MaleScenario", "WORLD_HUMAN_CAR_PARK_ATTENDANT", "Cop Beacon"}, - ["filmshocking"] = {"Scenario", "WORLD_HUMAN_MOBILE_FILM_SHOCKING", "Film Shocking"}, - ["flex"] = {"Scenario", "WORLD_HUMAN_MUSCLE_FLEX", "Flex"}, - ["guard"] = {"Scenario", "WORLD_HUMAN_GUARD_STAND", "Guard"}, - ["hammer"] = {"Scenario", "WORLD_HUMAN_HAMMERING", "Hammer"}, - ["hangout"] = {"Scenario", "WORLD_HUMAN_HANG_OUT_STREET", "Hangout"}, - ["impatient"] = {"Scenario", "WORLD_HUMAN_STAND_IMPATIENT", "Impatient"}, - ["janitor"] = {"Scenario", "WORLD_HUMAN_JANITOR", "Janitor"}, - ["jog"] = {"Scenario", "WORLD_HUMAN_JOG_STANDING", "Jog"}, - ["kneel"] = {"Scenario", "CODE_HUMAN_MEDIC_KNEEL", "Kneel"}, - ["leafblower"] = {"MaleScenario", "WORLD_HUMAN_GARDENER_LEAF_BLOWER", "Leafblower"}, - ["lean"] = {"Scenario", "WORLD_HUMAN_LEANING", "Lean"}, - ["leanbar"] = {"Scenario", "PROP_HUMAN_BUM_SHOPPING_CART", "Lean Bar"}, - ["lookout"] = {"Scenario", "CODE_HUMAN_CROSS_ROAD_WAIT", "Lookout"}, - ["maid"] = {"Scenario", "WORLD_HUMAN_MAID_CLEAN", "Maid"}, - ["medic"] = {"Scenario", "CODE_HUMAN_MEDIC_TEND_TO_DEAD", "Medic"}, - ["musician"] = {"MaleScenario", "WORLD_HUMAN_MUSICIAN", "Musician"}, - ["notepad2"] = {"Scenario", "CODE_HUMAN_MEDIC_TIME_OF_DEATH", "Notepad 2"}, - ["parkingmeter"] = {"Scenario", "PROP_HUMAN_PARKING_METER", "Parking Meter"}, - ["party"] = {"Scenario", "WORLD_HUMAN_PARTYING", "Party"}, - ["texting"] = {"Scenario", "WORLD_HUMAN_STAND_MOBILE", "Texting"}, - ["prosthigh"] = {"Scenario", "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS", "Prostitue High"}, - ["prostlow"] = {"Scenario", "WORLD_HUMAN_PROSTITUTE_LOW_CLASS", "Prostitue Low"}, - ["puddle"] = {"Scenario", "WORLD_HUMAN_BUM_WASH", "Puddle"}, - ["record"] = {"Scenario", "WORLD_HUMAN_MOBILE_FILM_SHOCKING", "Record"}, - -- Sitchair is a litte special, since you want the player to be seated correctly. - -- So we set it as "ScenarioObject" and do TaskStartScenarioAtPosition() instead of "AtPlace" - ["sitchair"] = {"ScenarioObject", "PROP_HUMAN_SEAT_CHAIR_MP_PLAYER", "Sit Chair"}, - ["smoke"] = {"Scenario", "WORLD_HUMAN_SMOKING", "Smoke"}, - ["smokeweed"] = {"MaleScenario", "WORLD_HUMAN_DRUG_DEALER", "Smoke Weed"}, - ["statue"] = {"Scenario", "WORLD_HUMAN_HUMAN_STATUE", "Statue"}, - ["sunbathe3"] = {"Scenario", "WORLD_HUMAN_SUNBATHE", "Sunbathe 3"}, - ["sunbatheback"] = {"Scenario", "WORLD_HUMAN_SUNBATHE_BACK", "Sunbathe Back"}, - ["weld"] = {"Scenario", "WORLD_HUMAN_WELDING", "Weld"}, - ["windowshop"] = {"Scenario", "WORLD_HUMAN_WINDOW_SHOP_BROWSE", "Window Shop"}, - ["yoga"] = {"Scenario", "WORLD_HUMAN_YOGA", "Yoga"}, - -- CASINO DLC EMOTES (STREAMED) - ["karate"] = {"anim@mp_player_intcelebrationfemale@karate_chops", "karate_chops", "Karate"}, - ["karate2"] = {"anim@mp_player_intcelebrationmale@karate_chops", "karate_chops", "Karate 2"}, - ["cutthroat"] = {"anim@mp_player_intcelebrationmale@cut_throat", "cut_throat", "Cut Throat"}, - ["cutthroat2"] = {"anim@mp_player_intcelebrationfemale@cut_throat", "cut_throat", "Cut Throat 2"}, - ["mindblown"] = {"anim@mp_player_intcelebrationmale@mind_blown", "mind_blown", "Mind Blown", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 4000 - }}, - ["mindblown2"] = {"anim@mp_player_intcelebrationfemale@mind_blown", "mind_blown", "Mind Blown 2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 4000 - }}, - ["boxing"] = {"anim@mp_player_intcelebrationmale@shadow_boxing", "shadow_boxing", "Boxing", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 4000 - }}, - ["boxing2"] = {"anim@mp_player_intcelebrationfemale@shadow_boxing", "shadow_boxing", "Boxing 2", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 4000 - }}, - ["stink"] = {"anim@mp_player_intcelebrationfemale@stinker", "stinker", "Stink", AnimationOptions = - { - EmoteMoving = true, - EmoteLoop = true - }}, - ["think4"] = {"anim@amb@casino@hangout@ped_male@stand@02b@idles", "idle_a", "Think 4", AnimationOptions = - { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["adjusttie"] = {"clothingtie", "try_tie_positive_a", "Adjust Tie", AnimationOptions = - { - EmoteMoving = true, - EmoteDuration = 5000 - }}, + + + ----------------------------------------------------------------------------------------------------------- + ------ The male and female 'interaction menu' emotes from GTA Online can be found under the following animation directories: + ------ + ------ Male: anim@mp_player_intcelebrationmale + ------ + ------ Female: anim@mp_player_intcelebrationfemale + + ----------------------------------------------------------------------------------------------------------- + + + + + ----------------------------------------------------------------------------------------------------------- + ------ These are Scenarios, some of these dont work on women and some other issues, but still good to have. + ----------------------------------------------------------------------------------------------------------- + + + ["atm"] = { "Scenario", "PROP_HUMAN_ATM", "ATM" }, + ["bbq"] = { "MaleScenario", "PROP_HUMAN_BBQ", "BBQ" }, + ["bumbin"] = { "Scenario", "PROP_HUMAN_BUM_BIN", "Bum Bin" }, + ["bumsleep"] = { "Scenario", "WORLD_HUMAN_BUM_SLUMPED", "Bum Sleep" }, + ["cheer"] = { "Scenario", "WORLD_HUMAN_CHEERING", "Cheer" }, + ["chinup"] = { "Scenario", "PROP_HUMAN_MUSCLE_CHIN_UPS", "Chinup" }, + ["cop"] = { "Scenario", "WORLD_HUMAN_COP_IDLES", "Cop" }, + ["drill"] = { "Scenario", "WORLD_HUMAN_CONST_DRILL", "Construction Drilling" }, + ["filmshocking"] = { "Scenario", "WORLD_HUMAN_MOBILE_FILM_SHOCKING", "Film Shocking" }, + ["flex"] = { "Scenario", "WORLD_HUMAN_MUSCLE_FLEX", "Flex" }, + ["guard"] = { "Scenario", "WORLD_HUMAN_GUARD_STAND", "Guard" }, + ["garden"] = { "Scenario", "WORLD_HUMAN_GARDENER_PLANT", "Gardening" }, + ["hammer"] = { "Scenario", "WORLD_HUMAN_HAMMERING", "Hammer" }, + ["hangout"] = { "Scenario", "WORLD_HUMAN_HANG_OUT_STREET", "Hangout" }, + ["impatient"] = { "Scenario", "WORLD_HUMAN_STAND_IMPATIENT", "Impatient" }, + ["janitor"] = { "Scenario", "WORLD_HUMAN_JANITOR", "Janitor" }, + ["jog"] = { "Scenario", "WORLD_HUMAN_JOG_STANDING", "Jog" }, + ["kneel"] = { "Scenario", "CODE_HUMAN_MEDIC_KNEEL", "Kneel" }, + ["lean"] = { "Scenario", "WORLD_HUMAN_LEANING", "Lean" }, + ["leanbar"] = { "Scenario", "PROP_HUMAN_BUM_SHOPPING_CART", "Lean Bar" }, + ["lookout"] = { "Scenario", "CODE_HUMAN_CROSS_ROAD_WAIT", "Lookout" }, + ["maid"] = { "Scenario", "WORLD_HUMAN_MAID_CLEAN", "Maid" }, + ["medic"] = { "Scenario", "CODE_HUMAN_MEDIC_TEND_TO_DEAD", "Medic" }, + ["musician"] = { "MaleScenario", "WORLD_HUMAN_MUSICIAN", "Musician" }, -- Ambient Music Doesn't Seem To Work For Female, Hence It's Male Only + ["notepad2"] = { "Scenario", "CODE_HUMAN_MEDIC_TIME_OF_DEATH", "Notepad 2" }, + ["parkingmeter"] = { "Scenario", "PROP_HUMAN_PARKING_METER", "Parking Meter" }, + ["party"] = { "Scenario", "WORLD_HUMAN_PARTYING", "Party" }, + ["texting"] = { "Scenario", "WORLD_HUMAN_STAND_MOBILE", "Texting" }, + ["prosthigh"] = { "Scenario", "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS", "Prostitue High" }, + ["prostlow"] = { "Scenario", "WORLD_HUMAN_PROSTITUTE_LOW_CLASS", "Prostitue Low" }, + ["puddle"] = { "Scenario", "WORLD_HUMAN_BUM_WASH", "Puddle" }, + ["record"] = { "Scenario", "WORLD_HUMAN_MOBILE_FILM_SHOCKING", "Record" }, + + + -- Sitchair is a litte special, since you want the player to be seated correctly. + -- So we set it as "ScenarioObject" and do TaskStartScenarioAtPosition() instead of "AtPlace" + + ["sitchair"] = { "ScenarioObject", "PROP_HUMAN_SEAT_CHAIR_MP_PLAYER", "Sit Chair" }, + ["smoke"] = { "Scenario", "WORLD_HUMAN_SMOKING", "Smoke" }, + ["smokeweed"] = { "MaleScenario", "WORLD_HUMAN_DRUG_DEALER", "Smoke Weed (Male)" }, -- Male + ["smokepot"] = { "Scenario", "WORLD_HUMAN_SMOKING_POT", "Smoke Weed (Female)" }, -- Female + ["statue"] = { "Scenario", "WORLD_HUMAN_HUMAN_STATUE", "Statue" }, + ["sunbathe3"] = { "Scenario", "WORLD_HUMAN_SUNBATHE", "Sunbathe 3" }, + ["sunbatheback"] = { "Scenario", "WORLD_HUMAN_SUNBATHE_BACK", "Sunbathe Back" }, + ["weld"] = { "Scenario", "WORLD_HUMAN_WELDING", "Weld" }, + ["windowshop"] = { "Scenario", "WORLD_HUMAN_WINDOW_SHOP_BROWSE", "Window Shop" }, + ["yoga"] = { "Scenario", "WORLD_HUMAN_YOGA", "Yoga" }, + + + -- CASINO DLC EMOTES (Requires gamebuild 2060 or higher) + + + ["karate"] = { "anim@mp_player_intcelebrationfemale@karate_chops", "karate_chops", "Karate" }, + ["karate2"] = { "anim@mp_player_intcelebrationmale@karate_chops", "karate_chops", "Karate 2" }, + ["cutthroat"] = { "anim@mp_player_intcelebrationmale@cut_throat", "cut_throat", "Cut Throat" }, + ["cutthroat2"] = { "anim@mp_player_intcelebrationfemale@cut_throat", "cut_throat", "Cut Throat 2" }, + ["mindblown"] = { "anim@mp_player_intcelebrationmale@mind_blown", "mind_blown", "Mind Blown", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 4000 + }}, + ["mindblown2"] = { "anim@mp_player_intcelebrationfemale@mind_blown", "mind_blown", "Mind Blown 2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 4000 + }}, + ["boxing"] = { "anim@mp_player_intcelebrationmale@shadow_boxing", "shadow_boxing", "Boxing", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 4000 + }}, + ["boxing2"] = { "anim@mp_player_intcelebrationfemale@shadow_boxing", "shadow_boxing", "Boxing 2", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 4000 + }}, + ["stink"] = { "anim@mp_player_intcelebrationfemale@stinker", "stinker", "Stink", AnimationOptions = { + EmoteMoving = true, + EmoteLoop = true + }}, + ["think4"] = { "anim@amb@casino@hangout@ped_male@stand@02b@idles", "idle_a", "Think 4", AnimationOptions = { + EmoteLoop = true, + EmoteMoving = true, + }}, + ["adjusttie"] = { "clothingtie", "try_tie_positive_a", "Adjust Tie", AnimationOptions = { + EmoteMoving = true, + EmoteDuration = 5000 + }}, } + +--- EMOTES WITH 1 OR 2 PROPS --- + DP.PropEmotes = { - ["umbrella"] = {"amb@world_human_drinking@coffee@male@base", "base", "Umbrella", AnimationOptions = - { - Prop = "p_amb_brolly_01", - PropBone = 57005, - PropPlacement = {0.15, 0.005, 0.0, 87.0, -20.0, 180.0}, - -- - EmoteLoop = true, - EmoteMoving = true, - }}, + ["umbrella"] = { "amb@world_human_drinking@coffee@male@base", "base", "Umbrella", AnimationOptions = { + Prop = "p_amb_brolly_01", + PropBone = 57005, + PropPlacement = { 0.15, 0.005, 0.0, 87.0, -20.0, 180.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['umbrella2'] = { 'rcmnigel1d', 'base_club_shoulder', 'Umbrella 2', AnimationOptions = { + Prop = 'p_amb_brolly_01', + PropBone = 28422, + PropPlacement = { 0.0700, 0.0100, 0.1100, 2.3402393, -150.9605721, 57.3374916 }, + EmoteLoop = true, + EmoteMoving = true, + }}, ------------------------------------------------------------------------------------------------------ ------- This is an example of an emote with 2 props, pretty simple! ---------------------------------- ------------------------------------------------------------------------------------------------------ + ----------------------------------------------------------------------------------------------------- + ------ This is an example of an emote with 2 props, pretty simple! ---------------------------------- + ----------------------------------------------------------------------------------------------------- - ["notepad"] = {"missheistdockssetup1clipboard@base", "base", "Notepad", AnimationOptions = - { - Prop = 'prop_notepad_01', - PropBone = 18905, - PropPlacement = {0.1, 0.02, 0.05, 10.0, 0.0, 0.0}, - SecondProp = 'prop_pencil_01', - SecondPropBone = 58866, - SecondPropPlacement = {0.11, -0.02, 0.001, -120.0, 0.0, 0.0}, - -- EmoteLoop is used for emotes that should loop, its as simple as that. - -- Then EmoteMoving is used for emotes that should only play on the upperbody. - -- The code then checks both values and sets the MovementType to the correct one - EmoteLoop = true, - EmoteMoving = true, + ["notepad"] = { "missheistdockssetup1clipboard@base", "base", "Notepad", AnimationOptions = { + Prop = 'prop_notepad_01', + PropBone = 18905, + PropPlacement = { 0.1, 0.02, 0.05, 10.0, 0.0, 0.0 }, + SecondProp = 'prop_pencil_01', + SecondPropBone = 58866, + SecondPropPlacement = { 0.11, -0.02, 0.001, -120.0, 0.0, 0.0 }, + -- EmoteLoop is used for emotes that should loop, its as simple as that. + -- Then EmoteMoving is used for emotes that should only play on the upperbody. + -- The code then checks both values and sets the MovementType to the correct one + EmoteLoop = true, + EmoteMoving = true, + }}, + ["box"] = { "anim@heists@box_carry@", "idle", "Box", AnimationOptions = { + Prop = "hei_prop_heist_box", + PropBone = 60309, + PropPlacement = { 0.025, 0.08, 0.255, -145.0, 290.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["rose"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Rose", AnimationOptions = { + Prop = "prop_single_rose", + PropBone = 18905, + PropPlacement = { 0.13, 0.15, 0.0, -100.0, 0.0, -20.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["smoke2"] = { "amb@world_human_aa_smoke@male@idle_a", "idle_c", "Smoke 2", AnimationOptions = { + Prop = 'prop_cs_ciggy_01', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["smoke3"] = { "amb@world_human_aa_smoke@male@idle_a", "idle_b", "Smoke 3", AnimationOptions = { + Prop = 'prop_cs_ciggy_01', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["smoke4"] = { "amb@world_human_smoking@female@idle_a", "idle_b", "Smoke 4", AnimationOptions = { + Prop = 'prop_cs_ciggy_01', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["bong"] = { "anim@safehouse@bong", "bong_stage3", "Bong", AnimationOptions = { + Prop = 'hei_heist_sh_bong_01', + PropBone = 18905, + PropPlacement = { 0.10, -0.25, 0.0, 95.0, 190.0, 180.0 }, + }}, + ["fishing1"] = { "amb@world_human_stand_fishing@idle_a", "idle_a", "Fishing 1", AnimationOptions = { + Prop = 'prop_fishing_rod_01', + PropBone = 60309, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["fishing2"] = { "amb@world_human_stand_fishing@idle_a", "idle_b", "Fishing 2", AnimationOptions = { + Prop = 'prop_fishing_rod_01', + PropBone = 60309, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["fishing3"] = { "amb@world_human_stand_fishing@idle_a", "idle_c", "Fishing 3", AnimationOptions = { + Prop = 'prop_fishing_rod_01', + PropBone = 60309, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["suitcase"] = { "move_weapon@jerrycan@generic", "idle", "Suitcase", AnimationOptions = { + Prop = "prop_ld_suitcase_01", + PropBone = 57005, + PropPlacement = { 0.35, 0.0, 0.0, 0.0, 266.0, 90.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["suitcase2"] = { "move_weapon@jerrycan@generic", "idle", "Suitcase 2", AnimationOptions = { + Prop = "prop_security_case_01", + PropBone = 57005, + PropPlacement = { 0.13, 0.0, -0.01, 0.0, 280.0, 90.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["boombox"] = { "move_weapon@jerrycan@generic", "idle", "Boombox", AnimationOptions = { + Prop = "prop_boombox_01", + PropBone = 57005, + PropPlacement = { 0.27, 0.0, 0.0, 0.0, 263.0, 58.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["toolbox"] = { "move_weapon@jerrycan@generic", "idle", "Toolbox", AnimationOptions = { + Prop = "prop_tool_box_04", + PropBone = 28422, + PropPlacement = { 0.3960, 0.0410, -0.0030, -90.00, 0.0, 90.00 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["toolbox2"] = { "move_weapon@jerrycan@generic", "idle", "Toolbox 2", AnimationOptions = { + Prop = "imp_prop_tool_box_01a", + PropBone = 28422, + PropPlacement = { 0.3700, 0.0200, 0.0, 90.00, 0.0, -90.00 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["gbag"] = { "missfbi4prepp1", "_idle_garbage_man", "Garbage Bag", AnimationOptions = { + Prop = "prop_cs_street_binbag_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0400, -0.0200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["beerbox"] = { "move_weapon@jerrycan@generic", "idle", "Beer Box 1", AnimationOptions = { + Prop = "v_ret_ml_beerdus", + PropBone = 57005, + PropPlacement = { 0.22, 0.0, 0.0, 0.0, 266.0, 48.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["beerbox2"] = { "move_weapon@jerrycan@generic", "idle", "Beer Box 2", AnimationOptions = { + Prop = "v_ret_ml_beeram", + PropBone = 57005, + PropPlacement = { 0.22, 0.0, 0.0, 0.0, 266.0, 48.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["beerbox3"] = { "move_weapon@jerrycan@generic", "idle", "Beer Box 3", AnimationOptions = { + Prop = "v_ret_ml_beerpride", + PropBone = 57005, + PropPlacement = { 0.22, 0.0, 0.0, 0.0, 266.0, 48.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["beerbox4"] = { "move_weapon@jerrycan@generic", "idle", "Beer Box 4", AnimationOptions = { + Prop = "v_ret_ml_beerbar", + PropBone = 57005, + PropPlacement = { 0.22, 0.0, 0.0, 0.0, 266.0, 60.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["mugshot"] = { "mp_character_creation@customise@male_a", "loop", "Mugshot", AnimationOptions = { + Prop = 'prop_police_id_board', + PropBone = 58868, + PropPlacement = { 0.12, 0.24, 0.0, 5.0, 0.0, 70.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["coffee"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Coffee", AnimationOptions = { + Prop = 'p_amb_coffeecup_01', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["whiskey"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Whiskey", AnimationOptions = { + Prop = 'prop_drink_whisky', + PropBone = 28422, + PropPlacement = { 0.01, -0.01, -0.06, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["whiskeyb"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_a", "Whiskey Bottle", AnimationOptions = { + Prop = 'ba_prop_battle_whiskey_bottle_2_s', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.05, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["beer"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_c", "Beer", AnimationOptions = { + Prop = 'prop_amb_beer_bottle', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.06, 0.0, 15.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["whiskeyb2"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_a", "Whiskey Bottle 2", AnimationOptions = { + Prop = 'ba_prop_battle_whiskey_bottle_2_s', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.05, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["beer2"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_c", "Beer 2", AnimationOptions = { + Prop = 'prop_amb_beer_bottle', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.06, 0.0, 15.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["whiskeyb3"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_a", "Whiskey Bottle 3", AnimationOptions = { + Prop = 'ba_prop_battle_whiskey_bottle_2_s', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.05, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["beerf"] = { "amb@world_human_drinking@beer@female@idle_a", "idle_a", "Beer Female", AnimationOptions = { + Prop = 'prop_amb_beer_bottle', + PropBone = 28422, + PropPlacement = { 0.0, -0.0, 0.05, 15.0, 15.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wine2"] = { "amb@world_human_drinking@beer@female@idle_a", "idle_e", "Wine 2 - Bottle", AnimationOptions = { + Prop = 'prop_wine_rose', + PropBone = 28422, + PropPlacement = { -0.0, 0.04, -0.19, 10.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + --- PropPlacement = {-0.0, 0.03, -0.20, 5.0, 0.0, 0.0}, + --- F&B L&R U&D R.F&B + }}, + ["beerf3"] = { "amb@world_human_drinking@beer@female@idle_a", "idle_a", "Beer Female 3", AnimationOptions = { + Prop = 'prop_amb_beer_bottle', + PropBone = 28422, + PropPlacement = { 0.0, -0.0, 0.05, 15.0, 15.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["wine3"] = { "amb@world_human_drinking@beer@female@idle_a", "idle_e", "Wine 3 - Bottle", AnimationOptions = { + Prop = 'prop_wine_rose', + PropBone = 28422, + PropPlacement = { -0.0, 0.04, -0.19, 10.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + --- PropPlacement = {-0.0, 0.03, -0.20, 5.0, 0.0, 0.0}, + --- F&B L&R U&D R.F&B + }}, + ["cup"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Cup", AnimationOptions = { + Prop = 'prop_plastic_cup_02', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["donut"] = { "mp_player_inteat@burger", "mp_player_int_eat_burger", "Donut", AnimationOptions = { + Prop = 'prop_amb_donut', + PropBone = 18905, + PropPlacement = { 0.13, 0.05, 0.02, -50.0, 16.0, 60.0 }, + EmoteMoving = true, + }}, + ["burger"] = { "mp_player_inteat@burger", "mp_player_int_eat_burger", "Burger", AnimationOptions = { + Prop = 'prop_cs_burger_01', + PropBone = 18905, + PropPlacement = { 0.13, 0.05, 0.02, -50.0, 16.0, 60.0 }, + EmoteMoving = true, + }}, + ["sandwich"] = { "mp_player_inteat@burger", "mp_player_int_eat_burger", "Sandwich", AnimationOptions = { + Prop = 'prop_sandwich_01', + PropBone = 18905, + PropPlacement = { 0.13, 0.05, 0.02, -50.0, 16.0, 60.0 }, + EmoteMoving = true, + }}, + ["soda"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Soda", AnimationOptions = { + Prop = 'prop_ecola_can', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 130.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["water"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Water", AnimationOptions = { + Prop = 'ba_prop_club_water_bottle', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.090, 0.0, 0.0, 130.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["egobar"] = { "mp_player_inteat@burger", "mp_player_int_eat_burger", "Ego Bar", AnimationOptions = { + Prop = 'prop_choc_ego', + PropBone = 60309, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteMoving = true, + }}, + ["candy"] = { "mp_player_inteat@pnq", "loop", "Candy", AnimationOptions = { + Prop = 'prop_candy_pqs', + PropBone = 60309, + PropPlacement = { -0.0300, 0.0180, 0.0, 180.0, 180.0, -88.099 }, + EmoteMoving = true, + }}, + ["wine"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Wine", AnimationOptions = { + Prop = 'prop_drink_redwine', + PropBone = 18905, + PropPlacement = { 0.10, -0.03, 0.03, -100.0, 0.0, -10.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["flute"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Flute", AnimationOptions = { + Prop = 'prop_champ_flute', + PropBone = 18905, + PropPlacement = { 0.10, -0.03, 0.03, -100.0, 0.0, -10.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["champagne"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Champagne", AnimationOptions = { + Prop = 'prop_drink_champ', + PropBone = 18905, + PropPlacement = { 0.10, -0.03, 0.03, -100.0, 0.0, -10.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["cigar"] = { "amb@world_human_smoking@male@male_a@enter", "enter", "Cigar", AnimationOptions = { + Prop = 'prop_cigar_02', + PropBone = 47419, + PropPlacement = { 0.010, 0.0, 0.0, 50.0, 0.0, -80.0 }, + EmoteMoving = true, + EmoteDuration = 2600 + }}, + ["cigar2"] = { "amb@world_human_smoking@male@male_a@enter", "enter", "Cigar 2", AnimationOptions = { + Prop = 'prop_cigar_01', + PropBone = 47419, + PropPlacement = { 0.010, 0.0, 0.0, 50.0, 0.0, -80.0 }, + EmoteMoving = true, + EmoteDuration = 2600 + }}, + ["guitar"] = { "amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar", AnimationOptions = { + Prop = 'prop_acc_guitar_01', + PropBone = 24818, + PropPlacement = { -0.1, 0.31, 0.1, 0.0, 20.0, 150.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["guitar2"] = { "switch@trevor@guitar_beatdown", "001370_02_trvs_8_guitar_beatdown_idle_busker", "Guitar 2", AnimationOptions = { + Prop = 'prop_acc_guitar_01', + PropBone = 24818, + PropPlacement = { -0.05, 0.31, 0.1, 0.0, 20.0, 150.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["guitarelectric"] = { "amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar Electric", AnimationOptions = { + Prop = 'prop_el_guitar_01', + PropBone = 24818, + PropPlacement = { -0.1, 0.31, 0.1, 0.0, 20.0, 150.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["guitarelectric2"] = { "amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar Electric 2", AnimationOptions = { + Prop = 'prop_el_guitar_03', + PropBone = 24818, + PropPlacement = { -0.1, 0.31, 0.1, 0.0, 20.0, 150.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["book"] = { "cellphone@", "cellphone_text_read_base", "Book", AnimationOptions = { + Prop = 'prop_novel_01', + PropBone = 6286, + PropPlacement = { 0.15, 0.03, -0.065, 0.0, 180.0, 90.0 }, -- This positioning isnt too great, was to much of a hassle + EmoteMoving = true, + EmoteLoop = true + }}, + ["bouquet"] = { "impexp_int-0", "mp_m_waremech_01_dual-0", "Bouquet", AnimationOptions = { + Prop = 'prop_snow_flower_02', + PropBone = 24817, + PropPlacement = { -0.29, 0.40, -0.02, -90.0, -90.0, 0.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["teddy"] = { "impexp_int-0", "mp_m_waremech_01_dual-0", "Teddy", AnimationOptions = { + Prop = 'v_ilev_mr_rasberryclean', + PropBone = 24817, + PropPlacement = { -0.20, 0.46, -0.016, -180.0, -90.0, 0.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["backpack"] = { "move_p_m_zero_rucksack", "nill", "Backpack", AnimationOptions = { + Prop = 'p_michael_backpack_s', + PropBone = 24818, + PropPlacement = { 0.07, -0.11, -0.05, 0.0, 90.0, 175.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["clipboard"] = { "missfam4", "base", "Clipboard", AnimationOptions = { + Prop = 'p_amb_clipboard_01', + PropBone = 36029, + PropPlacement = { 0.16, 0.08, 0.1, -130.0, -50.0, 0.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["map"] = { "amb@world_human_tourist_map@male@base", "base", "Map", AnimationOptions = { + Prop = 'prop_tourist_map_01', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteMoving = true, + EmoteLoop = true + }}, + ["map2"] = { "amb@code_human_in_bus_passenger_idles@female@tablet@idle_a", "idle_a", "Map 2", AnimationOptions = { + Prop = "prop_tourist_map_01", + PropBone = 28422, + PropPlacement = { -0.05, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["beg"] = { "amb@world_human_bum_freeway@male@base", "base", "Beg", AnimationOptions = { + Prop = 'prop_beggers_sign_03', + PropBone = 58868, + PropPlacement = { 0.19, 0.18, 0.0, 5.0, 0.0, 40.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["makeitrain"] = { "anim@mp_player_intupperraining_cash", "idle_a", "Make It Rain", AnimationOptions = { + Prop = 'prop_anim_cash_pile_01', + PropBone = 60309, + PropPlacement = { 0.0, 0.0, 0.0, 180.0, 0.0, 70.0 }, + EmoteMoving = true, + EmoteLoop = true, + PtfxAsset = "scr_xs_celebration", + PtfxName = "scr_xs_money_rain", + PtfxPlacement = { 0.0, 0.0, -0.09, -80.0, 0.0, 0.0, 1.0 }, + PtfxInfo = Config.Languages[Config.MenuLanguage]['makeitrain'], + PtfxWait = 500, + }}, + ["camera"] = { "amb@world_human_paparazzi@male@base", "base", "Camera", AnimationOptions = { + Prop = 'prop_pap_camera_01', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + PtfxAsset = "scr_bike_business", + PtfxName = "scr_bike_cfid_camera_flash", + PtfxPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 }, + PtfxInfo = Config.Languages[Config.MenuLanguage]['camera'], + PtfxWait = 200, + }}, + ["champagnespray"] = { "anim@mp_player_intupperspray_champagne", "idle_a", "Champagne Spray", AnimationOptions = { + Prop = 'ba_prop_battle_champ_open', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteMoving = true, + EmoteLoop = true, + PtfxAsset = "scr_ba_club", + PtfxName = "scr_ba_club_champagne_spray", + PtfxPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + PtfxInfo = Config.Languages[Config.MenuLanguage]['spraychamp'], + PtfxWait = 500, + }}, + ["joint"] = { "amb@world_human_smoking@male@male_a@enter", "enter", "Joint", AnimationOptions = { + Prop = 'p_cs_joint_02', + PropBone = 47419, + PropPlacement = { 0.015, -0.009, 0.003, 55.0, 0.0, 110.0 }, + EmoteMoving = true, + EmoteDuration = 2600 + }}, + ["cig"] = { "amb@world_human_smoking@male@male_a@enter", "enter", "Cig", AnimationOptions = { + Prop = 'prop_amb_ciggy_01', + PropBone = 47419, + PropPlacement = { 0.015, -0.009, 0.003, 55.0, 0.0, 110.0 }, + EmoteMoving = true, + EmoteDuration = 2600 + }}, + ["brief"] = { "move_weapon@jerrycan@generic", "idle", "Briefcase", AnimationOptions = { + Prop = "prop_ld_case_01", + PropBone = 57005, + PropPlacement = { 0.12, 0.0, 0.0, 0.0, 255.0, 80.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tablet"] = { "amb@world_human_tourist_map@male@base", "base", "Tablet", AnimationOptions = { + Prop = "prop_cs_tablet", + PropBone = 28422, + PropPlacement = { 0.0, -0.03, 0.0, 20.0, -90.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tablet2"] = { "amb@code_human_in_bus_passenger_idles@female@tablet@idle_a", "idle_a", "Tablet 2", AnimationOptions = { + Prop = "prop_cs_tablet", + PropBone = 28422, + PropPlacement = { -0.05, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["phonecall"] = { "cellphone@", "cellphone_call_listen_base", "Phone Call", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["phonecall2"] = { "random@kidnap_girl", "ig_1_girl_on_phone_loop", "Phone Call 2", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["wt"] = { "cellphone@", "cellphone_text_read_base", "Walkie Talkie", AnimationOptions = { + Prop = "prop_cs_hand_radio", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["clean"] = { "timetable@floyd@clean_kitchen@base", "base", "Clean", AnimationOptions = { + Prop = "prop_sponge_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.01, 90.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["clean2"] = { "amb@world_human_maid_clean@", "base", "Clean 2", AnimationOptions = { + Prop = "prop_sponge_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.01, 90.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["protest"] = { "rcmnigel1d", "base_club_shoulder", "Protest", AnimationOptions = { + Prop = "prop_cs_protest_sign_01", + PropBone = 57005, + PropPlacement = { 0.1820, 0.2400, 0.0600, -69.3774235, 5.9142048, -13.9572354 }, + -- + EmoteLoop = true, + EmoteMoving = true, + }}, + ["protest2"] = { "rcmnigel1d", "base_club_shoulder", "Protest 2 - Pride ", AnimationOptions = { + Prop = "pride_sign_01", + PropBone = 57005, + PropPlacement = { 0.1820, 0.2400, 0.0600, -69.3774235, 5.9142048, -13.9572354 }, + -- + EmoteLoop = true, + EmoteMoving = true, + }}, + ["binoculars"] = { "amb@world_human_binoculars@male@idle_b", "idle_f", "Binoculars", AnimationOptions = { + Prop = "prop_binoc_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + -- + EmoteLoop = true, + EmoteMoving = true, + }}, + ["binoculars2"] = { "amb@world_human_binoculars@male@idle_a", "idle_c", "Binoculars 2", AnimationOptions = { + Prop = "prop_binoc_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tennisplay"] = { "move_weapon@jerrycan@generic", "idle", "Tennis Play", AnimationOptions = { + Prop = "prop_tennis_bag_01", + PropBone = 57005, + PropPlacement = { 0.27, 0.0, 0.0, 91.0, 0.0, -82.9999951 }, + SecondProp = 'prop_tennis_rack_01', + SecondPropBone = 60309, + SecondPropPlacement = { 0.0800, 0.0300, 0.0, -130.2907295, 3.8782324, 6.588224 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["weights"] = { "amb@world_human_muscle_free_weights@male@barbell@base", "base", "Weights", AnimationOptions = { + Prop = "prop_curl_bar_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["weights2"] = { "amb@world_human_muscle_free_weights@male@barbell@idle_a", "idle_d", "Weights 2", AnimationOptions = { + Prop = "prop_curl_bar_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["fuel"] = { "weapons@misc@jerrycan@", "fire", "Fuel", AnimationOptions = { + Prop = "w_am_jerrycan", + PropBone = 57005, + PropPlacement = { 0.1800, 0.1300, -0.2400, -165.8693883, -11.2122753, -32.9453021 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["fuel2"] = { "weapons@misc@jerrycan@franklin", "idle", "Fuel 2 (Carry)", AnimationOptions = { + Prop = "w_am_jerrycan", + PropBone = 28422, + PropPlacement = { 0.26, 0.050, 0.0300, 80.00, 180.000, 79.99 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["hitchhike"] = { "random@hitch_lift", "idle_f", "Hitchhike", AnimationOptions = { + Prop = "w_am_jerrycan", + PropBone = 18905, + PropPlacement = { 0.32, -0.0100, 0.0, -162.423, 74.83, 58.79 }, + SecondProp = 'prop_michael_backpack', + SecondPropBone = 40269, + SecondPropPlacement = { -0.07, -0.21, -0.11, -144.93, 117.358, -6.16 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign"] = { "rcmnigel1d", "base_club_shoulder", "Steal Stop Sign ", AnimationOptions = { + Prop = "prop_sign_road_01a", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign2"] = { "rcmnigel1d", "base_club_shoulder", "Steal Yield Sign ", AnimationOptions = { + Prop = "prop_sign_road_02a", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign3"] = { "rcmnigel1d", "base_club_shoulder", "Steal Hospital Sign ", AnimationOptions = { + Prop = "prop_sign_road_03d", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign4"] = { "rcmnigel1d", "base_club_shoulder", "Steal Parking Sign ", AnimationOptions = { + Prop = "prop_sign_road_04a", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign5"] = { "rcmnigel1d", "base_club_shoulder", "Steal Parking Sign 2 ", AnimationOptions = { + Prop = "prop_sign_road_04w", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign6"] = { "rcmnigel1d", "base_club_shoulder", "Steal Pedestrian Sign ", AnimationOptions = { + Prop = "prop_sign_road_05a", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign7"] = { "rcmnigel1d", "base_club_shoulder", "Steal Street Sign ", AnimationOptions = { + Prop = "prop_sign_road_05t", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign8"] = { "rcmnigel1d", "base_club_shoulder", "Steal Freeway Sign ", AnimationOptions = { + Prop = "prop_sign_freewayentrance", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["ssign9"] = { "rcmnigel1d", "base_club_shoulder", "Steal Stop Sign Snow ", AnimationOptions = { + Prop = "prop_snow_sign_road_01a", + PropBone = 60309, + PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["conehead"] = { "move_m@drunk@verydrunk_idles@", "fidget_07", "Cone Head ", AnimationOptions = { + Prop = "prop_roadcone02b", + PropBone = 31086, + PropPlacement = { 0.0500, 0.0200, -0.000, 30.0000004, 90.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtraya"] = { "anim@heists@box_carry@", "idle", "Food Tray", AnimationOptions = { + Prop = "prop_food_bs_tray_03", + PropBone = 28422, + PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayb"] = { "anim@heists@box_carry@", "idle", "Food Tray B", AnimationOptions = { + Prop = "prop_food_bs_tray_02", + PropBone = 28422, + PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayc"] = { "anim@heists@box_carry@", "idle", "Food Tray C", AnimationOptions = { + Prop = "prop_food_cb_tray_02", + PropBone = 28422, + PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayd"] = { "anim@heists@box_carry@", "idle", "Food Tray D", AnimationOptions = { + Prop = "prop_food_tray_02", + PropBone = 28422, + PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtraye"] = { "anim@heists@box_carry@", "idle", "Food Tray E", AnimationOptions = { + Prop = "prop_food_tray_03", + PropBone = 28422, + PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayf"] = { "anim@heists@box_carry@", "idle", "Food Tray F", AnimationOptions = { + Prop = "prop_food_bs_tray_02", + PropBone = 57005, + PropPlacement = { 0.2500, 0.1000, 0.0700, -110.5483936, 73.3529273, -16.338362 }, + SecondProp = 'prop_food_bs_tray_03', + SecondPropBone = 18905, + SecondPropPlacement = { 0.2200, 0.1300, -0.1000, -127.7725487, 110.2074758, -3.5886263 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayg"] = { "anim@heists@box_carry@", "idle", "Food Tray G", AnimationOptions = { + Prop = "prop_food_cb_tray_02", + PropBone = 57005, + PropPlacement = { 0.2500, 0.1000, 0.0700, -110.5483936, 73.3529273, -16.338362 }, + SecondProp = 'prop_food_cb_tray_02', + SecondPropBone = 18905, + SecondPropPlacement = { 0.2200, 0.1300, -0.1000, -127.7725487, 110.2074758, -3.5886263 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayh"] = { "anim@heists@box_carry@", "idle", "Food Tray H", AnimationOptions = { + Prop = "prop_food_tray_02", + PropBone = 57005, + PropPlacement = { 0.2500, 0.1000, 0.0700, -110.5483936, 73.3529273, -16.338362 }, + SecondProp = 'prop_food_tray_03', + SecondPropBone = 18905, + SecondPropPlacement = { 0.2200, 0.1300, -0.1000, -127.7725487, 110.2074758, -3.5886263 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayi"] = { "anim@heists@box_carry@", "idle", "Food Tray I", AnimationOptions = { + Prop = "prop_food_tray_02", + PropBone = 57005, + PropPlacement = { 0.2500, 0.1000, 0.0700, -110.5483936, 73.3529273, -16.338362 }, + SecondProp = 'prop_food_tray_02', + SecondPropBone = 18905, + SecondPropPlacement = { 0.2200, 0.1300, -0.1000, -127.7725487, 110.2074758, -3.5886263 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayj"] = { "anim@move_f@waitress", "idle", "Food Tray J", AnimationOptions = { + Prop = "prop_food_bs_tray_02", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayk"] = { "anim@move_f@waitress", "idle", "Food Tray K", AnimationOptions = { + Prop = "prop_food_bs_tray_02", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayl"] = { "anim@move_f@waitress", "idle", "Food Tray L", AnimationOptions = { + Prop = "prop_food_bs_tray_03", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtraym"] = { "anim@move_f@waitress", "idle", "Food Tray M", AnimationOptions = { + Prop = "prop_food_cb_tray_02", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayn"] = { "anim@move_f@waitress", "idle", "Food Tray N", AnimationOptions = { + Prop = "prop_food_tray_02", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["foodtrayo"] = { "anim@move_f@waitress", "idle", "Food Tray O", AnimationOptions = { + Prop = "prop_food_tray_02", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["carrypizza"] = { "anim@heists@box_carry@", "idle", "Carry Pizza Box", AnimationOptions = { + Prop = "prop_pizza_box_02", + PropBone = 28422, + PropPlacement = { 0.0100, -0.1000, -0.1590, 20.0000007, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["carryfoodbag"] = { "move_weapon@jerrycan@generic", "idle", "Carry Food Bag", AnimationOptions = { + Prop = "prop_food_bs_bag_01", + PropBone = 57005, + PropPlacement = { 0.3300, 0.0, -0.0300, 0.0017365, -79.9999997, 110.0651988 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["carryfoodbag2"] = { "move_weapon@jerrycan@generic", "idle", "Carry Food Bag 2", AnimationOptions = { + Prop = "prop_food_cb_bag_01", + PropBone = 57005, + PropPlacement = { 0.3800, 0.0, -0.0300, 0.0017365, -79.9999997, 110.0651988 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["carryfoodbag3"] = { "move_weapon@jerrycan@generic", "idle", "Carry Food Bag 3", AnimationOptions = { + Prop = "prop_food_bag1", + PropBone = 57005, + PropPlacement = { 0.3800, 0.0, -0.0300, 0.0017365, -79.9999997, 110.0651988 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tag"] = { "anim@scripted@freemode@postertag@graffiti_spray@male@", "shake_can_male", "Tagging Shake Can Male", AnimationOptions = { + Prop = "prop_cs_spray_can", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tag2"] = { "anim@scripted@freemode@postertag@graffiti_spray@heeled@", "shake_can_female", "Tagging Shake Can Female", AnimationOptions = { + Prop = "prop_cs_spray_can", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tag3"] = { "anim@scripted@freemode@postertag@graffiti_spray@male@", "spray_can_var_01_male", "Tagging Male 1", AnimationOptions = { + Prop = "prop_cs_spray_can", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tag4"] = { "anim@scripted@freemode@postertag@graffiti_spray@male@", "spray_can_var_02_male", "Tagging Male 2", AnimationOptions = { + Prop = "prop_cs_spray_can", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tag5"] = { "anim@scripted@freemode@postertag@graffiti_spray@heeled@", "spray_can_var_01_female", "Tagging Female 1", AnimationOptions = { + Prop = "prop_cs_spray_can", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["tag6"] = { "anim@scripted@freemode@postertag@graffiti_spray@heeled@", "spray_can_var_02_female", "Tagging Female 2", AnimationOptions = { + Prop = "prop_cs_spray_can", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["beans"] = { "anim@scripted@island@special_peds@pavel@hs4_pavel_ig5_caviar_p1", "base_idle", "Beans", AnimationOptions = { + Prop = "h4_prop_h4_caviar_tin_01a", + PropBone = 60309, + PropPlacement = { 0.0, 0.0300, 0.0100, 0.0, 0.0, 0.0 }, + SecondProp = 'h4_prop_h4_caviar_spoon_01a', + SecondPropBone = 28422, + SecondPropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["newscam"] = { "missfinale_c2mcs_1", "fin_c2_mcs_1_camman", "News Camera", AnimationOptions = { + Prop = "prop_v_cam_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0300, 0.0100, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["newsmic"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "News Microphone", AnimationOptions = { + Prop = "p_ing_microphonel_01", + PropBone = 4154, + PropPlacement = { -0.00, -0.0200, 0.1100, 0.00, 0.0, 60.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["newsbmic"] = { "missfra1", "mcs2_crew_idle_m_boom", "News Boom Microphone", AnimationOptions = { + Prop = "prop_v_bmike_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["leafblower"] = { "amb@world_human_gardener_leaf_blower@base", "base", "Leaf Blower", AnimationOptions = { + Prop = "prop_leaf_blower_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["bbqf"] = { "amb@prop_human_bbq@male@idle_a", "idle_b", "BBQ (Female)", AnimationOptions = { + Prop = "prop_fish_slice_01", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["pump"] = { "missfbi4prepp1", "idle", "Pumpkin", AnimationOptions = { + Prop = "prop_veg_crop_03_pump", + PropBone = 28422, + PropPlacement = { 0.0200, 0.0600, -0.1200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["pump2"] = { "anim@heists@box_carry@", "idle", "Pumpkin 2", AnimationOptions = { + Prop = "prop_veg_crop_03_pump", + PropBone = 28422, + PropPlacement = { 0.0100, -0.16000, -0.2100, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["mop"] = { "missfbi4prepp1", "idle", "Mop", AnimationOptions = { + Prop = "prop_cs_mop_s", + PropBone = 28422, + PropPlacement = { -0.0200, -0.0600, -0.2000, -13.377, 10.3568, 17.9681 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["mop2"] = { "move_mop", "idle_scrub_small_player", "Mop 2", AnimationOptions = { + Prop = "prop_cs_mop_s", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.1200, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["jerkf"] = { "switch@trevor@jerking_off", "trev_jerking_off_loop", "JerkOff! Female", AnimationOptions = { + Prop = 'prop_cs_dildo_01', + PropBone = 28422, + PropPlacement = { 0.09, 0.05, -0.03, 90.0, 80.0, 30.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["rake"] = { "anim@amb@drug_field_workers@rake@male_a@base", "base", "Rake", AnimationOptions = { + Prop = "prop_tool_rake", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["rake2"] = { "anim@amb@drug_field_workers@rake@male_a@idles", "idle_b", "Rake 2", AnimationOptions = { + Prop = "prop_tool_rake", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["rake3"] = { "anim@amb@drug_field_workers@rake@male_b@base", "base", "Rake 3", AnimationOptions = { + Prop = "prop_tool_rake", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["rake4"] = { "anim@amb@drug_field_workers@rake@male_b@idles", "idle_d", "Rake 4", AnimationOptions = { + Prop = "prop_tool_rake", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["broom"] = { "anim@amb@drug_field_workers@rake@male_a@base", "base", "Broom", AnimationOptions = { + Prop = "prop_tool_broom", + PropBone = 28422, + PropPlacement = { -0.0100, 0.0400, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["broom2"] = { "anim@amb@drug_field_workers@rake@male_a@idles", "idle_b", "Broom 2", AnimationOptions = { + Prop = "prop_tool_broom", + PropBone = 28422, + PropPlacement = { -0.0100, 0.0400, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["broom3"] = { "anim@amb@drug_field_workers@rake@male_b@base", "base", "Broom 3", AnimationOptions = { + Prop = "prop_tool_broom", + PropBone = 28422, + PropPlacement = { -0.0100, 0.0400, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["broom4"] = { "anim@amb@drug_field_workers@rake@male_b@idles", "idle_d", "Broom 4", AnimationOptions = { + Prop = "prop_tool_broom", + PropBone = 28422, + PropPlacement = { -0.0100, 0.0400, -0.0300, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + }}, + ["champw"] = { "anim@move_f@waitress", "idle", "Champagne Waiter", AnimationOptions = { + Prop = "vw_prop_vw_tray_01a", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0100, 0.0, 0.0, 0.0 }, + SecondProp = 'prop_champ_cool', + SecondPropBone = 28422, + SecondPropPlacement = { 0.0, 0.0, 0.010, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["shit"] = { "missfbi3ig_0", "shit_loop_trev", "Shit", AnimationOptions = { + Prop = "prop_toilet_roll_01", + PropBone = 28422, + PropPlacement = { 0.0700, -0.02000, -0.2100, 0, 0, 0.0, 0.0 }, + SecondProp = 'prop_big_shit_01', + SecondPropBone = 0, + SecondPropPlacement = { -0.0100, 0.0600, -0.1550, 101.3015175, 7.3512213, -29.2665794 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["selfie"] = { "anim@mp_player_intuppertake_selfie", "idle_a", "Selfie", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 60309, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["selfie2"] = { "cellphone@self@franklin@", "peace", "Selfie 2", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["selfie3"] = { "cellphone@self@franklin@", "west_coast", "Selfie 3 - West Side", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["selfie4"] = { "cellphone@self@trevor@", "aggressive_finger", "Selfie 4 - Finger", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["selfie5"] = { "cellphone@self@trevor@", "proud_finger", "Selfie 5 - Finger 2", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["selfie6"] = { "cellphone@self@trevor@", "throat_slit", "Selfie 6 - Throat Slit", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["selfie7"] = { "cellphone@self@franklin@", "chest_bump", "Selfie 7 - Chest Bump", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["sittv"] = { "anim@heists@heist_safehouse_intro@variations@male@tv", "tv_part_one_loop", "Sit TV", AnimationOptions = { + Prop = "v_res_tre_remote", + PropBone = 57005, + PropPlacement = { 0.0990, 0.0170, -0.0300, -64.760, -109.544, 18.717 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["dig"] = { "random@burial", "a_burial", "Dig", AnimationOptions = { + Prop = "prop_tool_shovel", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.24, 0, 0, 0.0, 0.0 }, + SecondProp = 'prop_ld_shovel_dirt', + SecondPropBone = 28422, + SecondPropPlacement = { 0.0, 0.0, 0.24, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["bongos"] = { "amb@world_human_musician@bongos@male@base", "base", "Bongo Drums", AnimationOptions = { + Prop = "prop_bongos_01", + PropBone = 60309, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["medbag"] = { "move_weapon@jerrycan@generic", "idle", "Medic Bag", AnimationOptions = { + Prop = "xm_prop_x17_bag_med_01a", + PropBone = 57005, + PropPlacement = { 0.3900, -0.0600, -0.0600, -100.00, -180.00, -78.00 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["dufbag"] = { "move_weapon@jerrycan@generic", "idle", "Duffel Bag", AnimationOptions = { + Prop = "bkr_prop_duffel_bag_01a", + PropBone = 28422, + PropPlacement = { 0.2600, 0.0400, 0.00, 90.00, 0.00, -78.99 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["shopbag"] = { "move_weapon@jerrycan@generic", "idle", "Shopping Bag", AnimationOptions = { + Prop = "vw_prop_casino_shopping_bag_01a", + PropBone = 28422, + PropPlacement = { 0.24, 0.03, -0.04, 0.00, -90.00, 10.00 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["shopbag2"] = { "move_weapon@jerrycan@generic", "idle", "Shopping Bag 2", AnimationOptions = { + Prop = "prop_shopping_bags02", + PropBone = 28422, + PropPlacement = { 0.05, 0.02, 0.00, 178.80, 91.19, 9.97 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["shopbag3"] = { "move_weapon@jerrycan@generic", "idle", "Shopping Bag 3", AnimationOptions = { + Prop = "prop_cs_shopping_bag", + PropBone = 28422, + PropPlacement = { 0.24, 0.03, -0.04, 0.00, -90.00, 10.00 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["idcard"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 1", AnimationOptions = { + Prop = "prop_franklin_dl", + PropBone = 57005, + PropPlacement = { 0.1000, 0.0200, -0.0300, -90.000, 170.000, 78.999 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["idcardb"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 2 - FIB", AnimationOptions = { + Prop = "prop_fib_badge", + PropBone = 28422, + PropPlacement = { 0.0600, 0.0210, -0.0400, -90.00, -180.00, 78.999 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["idcardc"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 3", AnimationOptions = { + Prop = "prop_michael_sec_id", + PropBone = 28422, + PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["idcardd"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 4", AnimationOptions = { + Prop = "prop_trev_sec_id", + PropBone = 28422, + PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["idcarde"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 5", AnimationOptions = { + Prop = "p_ld_id_card_002", + PropBone = 28422, + PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["idcardf"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 6", AnimationOptions = { + Prop = "prop_cs_r_business_card", + PropBone = 28422, + PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["idcardg"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 7", AnimationOptions = { + Prop = "prop_michael_sec_id", + PropBone = 28422, + PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["idcardh"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 8", AnimationOptions = { + Prop = "prop_cop_badge", + PropBone = 28422, + PropPlacement = { 0.0800, -0.0120, -0.0600, -90.00, 180.00, 69.99 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["sms"] = { "cellphone@", "cellphone_text_read_base", "SMS", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["sms2"] = { "cellphone@female", "cellphone_text_read_base", "SMS 2", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.00, 0.00, 0.0301, 0.000, 00.00, 00.00 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["sms3"] = { "cellphone@female", "cellphone_email_read_base", "SMS 3", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { -0.0190, -0.0240, 0.0300, 18.99, -72.07, 6.39 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["sms4"] = { "cellphone@female", "cellphone_text_read_base_cover_low", "SMS 4", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { -0.0190, -0.0250, 0.0400, 19.17, -78.50, 14.97 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["sms5"] = { "amb@code_human_wander_texting_fat@male@base", "static", "SMS 6", AnimationOptions = { + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { -0.0200, -0.0100, 0.00, 2.309, 88.845, 29.979 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["tire"] = { "anim@heists@box_carry@", "idle", "Tire", AnimationOptions = { + Prop = "prop_wheel_tyre", + PropBone = 60309, + PropPlacement = { -0.05, 0.16, 0.32, -130.0, -55.0, 150.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["register"] = { "anim@heists@box_carry@", "idle", "Register", AnimationOptions = { + Prop = "v_ret_gc_cashreg", + PropBone = 60309, + PropPlacement = { 0.138, 0.2, 0.2, -50.0, 290.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["weedbrick"] = { "impexp_int-0", "mp_m_waremech_01_dual-0", "Weed Brick", AnimationOptions = { + Prop = "prop_weed_block_01", + PropBone = 60309, + PropPlacement = { 0.1, 0.1, 0.05, 0.0, -90.0, 90.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["weedbrick2"] = { "anim@heists@box_carry@", "idle", "Weed Brick BIG", AnimationOptions = { + Prop = "bkr_prop_weed_bigbag_01a", + PropBone = 60309, + PropPlacement = { 0.158, -0.05, 0.23, -50.0, 290.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["potplant"] = { "anim@heists@box_carry@", "idle", "Pot Plant (Small)", AnimationOptions = { + Prop = "bkr_prop_weed_01_small_01c", + PropBone = 60309, + PropPlacement = { 0.138, -0.05, 0.23, -50.0, 290.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["potplant2"] = { "anim@heists@box_carry@", "idle", "Pot Plant (Medium)", AnimationOptions = { + Prop = "bkr_prop_weed_01_small_01b", + PropBone = 60309, + PropPlacement = { 0.138, -0.05, 0.23, -50.0, 290.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["potplant3"] = { "anim@heists@box_carry@", "idle", "Pot Plant (Large)", AnimationOptions = { + Prop = "bkr_prop_weed_lrg_01b", + PropBone = 60309, + PropPlacement = { 0.138, -0.05, 0.23, -50.0, 290.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["lawnchair"] = { "timetable@ron@ig_5_p3", "ig_5_p3_base", "Lawnchair", AnimationOptions = { + Prop = "prop_skid_chair_02", + PropBone = 0, + PropPlacement = { 0.025, -0.2, -0.1, 45.0, -5.0, 180.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["lawnchair2"] = { "timetable@reunited@ig_10", "base_amanda", "Lawnchair 2", AnimationOptions = { + Prop = "prop_skid_chair_02", + PropBone = 0, + PropPlacement = { 0.025, -0.15, -0.1, 45.0, 5.0, 180.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["lawnchair3"] = { "timetable@ron@ig_3_couch", "base", "Lawnchair 3", AnimationOptions = { + Prop = "prop_skid_chair_02", + PropBone = 0, + PropPlacement = { -0.05, 0.0, -0.2, 5.0, 0.0, 180.0 }, + EmoteLoop = true, + EmoteMoving = false, + }}, + ["rose2"] = { "missheistdocksprep1hold_cellphone", "static", "Rose 2 (Male)", AnimationOptions = { + Prop = "prop_single_rose", + PropBone = 31086, + PropPlacement = { -0.0140, 0.1030, 0.0620, -2.932, 4.564, 39.910 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["rose3"] = { "missheistdocksprep1hold_cellphone", "static", "Rose 3 (Female)", AnimationOptions = { + Prop = "prop_single_rose", + PropBone = 31086, + PropPlacement = { -0.0140, 0.1070, 0.0720, 0.00, 0.00, 2.99 }, + EmoteLoop = false, + EmoteMoving = true, + }}, + ["cbbox"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box", AnimationOptions = { + Prop = "v_ret_ml_beerben1", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["cbbox2"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 2", AnimationOptions = { + Prop = "v_ret_ml_beerbla1", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["cbbox3"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 3", AnimationOptions = { + Prop = "v_ret_ml_beerjak1", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["cbbox4"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 4", AnimationOptions = { + Prop = "v_ret_ml_beerlog1", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["cbbox5"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 5", AnimationOptions = { + Prop = "v_ret_ml_beerpis1", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["cbbox6"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 6", AnimationOptions = { + Prop = "prop_beer_box_01", + PropBone = 28422, + PropPlacement = { 0.0200, -0.0600, -0.1200, -180.00, -180.00, 1.99 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["gbin"] = { "anim@heists@box_carry@", "idle", "Garbage Bin", AnimationOptions = { + Prop = "prop_bin_08open", + PropBone = 28422, + PropPlacement = { 0.00, -0.420, -1.290, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, }}, - ["box"] = {"anim@heists@box_carry@", "idle", "Box", AnimationOptions = - { - Prop = "hei_prop_heist_box", - PropBone = 60309, - PropPlacement = {0.025, 0.08, 0.255, -145.0, 290.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, + ["gbin2"] = { "anim@heists@box_carry@", "idle", "Garbage Bin 2", AnimationOptions = { + Prop = "prop_cs_bin_01", + PropBone = 28422, + PropPlacement = { 0.00, -0.420, -1.290, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["gbin3"] = { "anim@heists@box_carry@", "idle", "Garbage Bin 3", AnimationOptions = { + Prop = "prop_cs_bin_03", + PropBone = 28422, + PropPlacement = { 0.00, -0.420, -1.290, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["gbin4"] = { "anim@heists@box_carry@", "idle", "Garbage Bin 4", AnimationOptions = { + Prop = "prop_bin_08a", + PropBone = 28422, + PropPlacement = { 0.00, -0.420, -1.290, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ["gbin5"] = { "anim@heists@box_carry@", "idle", "Garbage Bin 5", AnimationOptions = { + Prop = "prop_bin_07d", + PropBone = 28422, + PropPlacement = { -0.0100, -0.2200, -0.8600, 0.0, 0.0, 0.0 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag - Rainbow', AnimationOptions = { + Prop = 'prideflag1', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag2'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 2 - LGBTQ', AnimationOptions = { + Prop = 'prideflag2', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag3'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 3 - Bisexual ', AnimationOptions = { + Prop = 'prideflag3', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag4'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 4 - Lesbian ', AnimationOptions = { + Prop = 'prideflag4', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag5'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 5 - Pansexual ', AnimationOptions = { + Prop = 'prideflag5', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag6'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 6 - Transexual ', AnimationOptions = { + Prop = 'prideflag6', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag7'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 7 - Non Binary ', AnimationOptions = { + Prop = 'prideflag7', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag8'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 8 - Asexual ', AnimationOptions = { + Prop = 'prideflag8', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['pflag9'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 9 - Straight Ally ', AnimationOptions = { + Prop = 'prideflag9', + PropBone = 18905, + PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['old'] = { 'missbigscore2aleadinout@bs_2a_2b_int', 'lester_base_idle', 'Old Man Walking Stick', AnimationOptions = { + Prop = 'prop_cs_walking_stick', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + SecondProp = 'prop_phone_ing', + SecondPropBone = 60309, + SecondPropPlacement = { 0.0800, 0.0300, 0.0100, -107.9999, 0.0, -4.6003 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['digiscan'] = { 'weapons@misc@digi_scanner', 'aim_med_loop', 'Digiscan 1 ', AnimationOptions = { + Prop = 'w_am_digiscanner', + PropBone = 28422, + PropPlacement = { 0.0480, 0.0780, 0.0040, -81.6893, 2.5616, -15.7909 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['digiscan2'] = { 'weapons@misc@digi_scanner', 'aim_low_loop', 'Digiscan 2 ', AnimationOptions = { + Prop = 'w_am_digiscanner', + PropBone = 28422, + PropPlacement = { 0.0480, 0.0780, 0.0040, -81.6893, 2.5616, -15.7909 }, + EmoteLoop = true, + EmoteMoving = true, + }}, + ['digiscan3'] = { 'weapons@misc@digi_scanner', 'aim_high_loop', 'Digiscan 3 ', AnimationOptions = { + Prop = 'w_am_digiscanner', + PropBone = 28422, + PropPlacement = { 0.0480, 0.0780, 0.0040, -81.6893, 2.5616, -15.7909 }, + EmoteLoop = true, + EmoteMoving = true, }}, - ["rose"] = {"anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Rose", AnimationOptions = - { - Prop = "prop_single_rose", - PropBone = 18905, - PropPlacement = {0.13, 0.15, 0.0, -100.0, 0.0, -20.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["smoke2"] = {"amb@world_human_aa_smoke@male@idle_a", "idle_c", "Smoke 2", AnimationOptions = - { - Prop = 'prop_cs_ciggy_01', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["smoke3"] = {"amb@world_human_aa_smoke@male@idle_a", "idle_b", "Smoke 3", AnimationOptions = - { - Prop = 'prop_cs_ciggy_01', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["smoke4"] = {"amb@world_human_smoking@female@idle_a", "idle_b", "Smoke 4", AnimationOptions = - { - Prop = 'prop_cs_ciggy_01', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bong"] = {"anim@safehouse@bong", "bong_stage3", "Bong", AnimationOptions = - { - Prop = 'hei_heist_sh_bong_01', - PropBone = 18905, - PropPlacement = {0.10,-0.25,0.0,95.0,190.0,180.0}, - }}, - ["suitcase"] = {"missheistdocksprep1hold_cellphone", "static", "Suitcase", AnimationOptions = - { - Prop = "prop_ld_suitcase_01", - PropBone = 57005, - PropPlacement = {0.39, 0.0, 0.0, 0.0, 266.0, 60.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["suitcase2"] = {"missheistdocksprep1hold_cellphone", "static", "Suitcase 2", AnimationOptions = - { - Prop = "prop_security_case_01", - PropBone = 57005, - PropPlacement = {0.10, 0.0, 0.0, 0.0, 280.0, 53.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["mugshot"] = {"mp_character_creation@customise@male_a", "loop", "Mugshot", AnimationOptions = - { - Prop = 'prop_police_id_board', - PropBone = 58868, - PropPlacement = {0.12, 0.24, 0.0, 5.0, 0.0, 70.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["coffee"] = {"amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Coffee", AnimationOptions = - { - Prop = 'p_amb_coffeecup_01', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["whiskey"] = {"amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Whiskey", AnimationOptions = - { - Prop = 'prop_drink_whisky', - PropBone = 28422, - PropPlacement = {0.01, -0.01, -0.06, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beer"] = {"amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Beer", AnimationOptions = - { - Prop = 'prop_amb_beer_bottle', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cup"] = {"amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Cup", AnimationOptions = - { - Prop = 'prop_plastic_cup_02', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["donut"] = {"mp_player_inteat@burger", "mp_player_int_eat_burger", "Donut", AnimationOptions = - { - Prop = 'prop_amb_donut', - PropBone = 18905, - PropPlacement = {0.13, 0.05, 0.02, -50.0, 16.0, 60.0}, - EmoteMoving = true, - }}, - ["burger"] = {"mp_player_inteat@burger", "mp_player_int_eat_burger", "Burger", AnimationOptions = - { - Prop = 'prop_cs_burger_01', - PropBone = 18905, - PropPlacement = {0.13, 0.05, 0.02, -50.0, 16.0, 60.0}, - EmoteMoving = true, - }}, - ["sandwich"] = {"mp_player_inteat@burger", "mp_player_int_eat_burger", "Sandwich", AnimationOptions = - { - Prop = 'prop_sandwich_01', - PropBone = 18905, - PropPlacement = {0.13, 0.05, 0.02, -50.0, 16.0, 60.0}, - EmoteMoving = true, - }}, - ["soda"] = {"amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Soda", AnimationOptions = - { - Prop = 'prop_ecola_can', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 130.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["egobar"] = {"mp_player_inteat@burger", "mp_player_int_eat_burger", "Ego Bar", AnimationOptions = - { - Prop = 'prop_choc_ego', - PropBone = 60309, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteMoving = true, - }}, - ["wine"] = {"anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Wine", AnimationOptions = - { - Prop = 'prop_drink_redwine', - PropBone = 18905, - PropPlacement = {0.10, -0.03, 0.03, -100.0, 0.0, -10.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["flute"] = {"anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Flute", AnimationOptions = - { - Prop = 'prop_champ_flute', - PropBone = 18905, - PropPlacement = {0.10, -0.03, 0.03, -100.0, 0.0, -10.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["champagne"] = {"anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Champagne", AnimationOptions = - { - Prop = 'prop_drink_champ', - PropBone = 18905, - PropPlacement = {0.10, -0.03, 0.03, -100.0, 0.0, -10.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["cigar"] = {"amb@world_human_smoking@male@male_a@enter", "enter", "Cigar", AnimationOptions = - { - Prop = 'prop_cigar_02', - PropBone = 47419, - PropPlacement = {0.010, 0.0, 0.0, 50.0, 0.0, -80.0}, - EmoteMoving = true, - EmoteDuration = 2600 - }}, - ["cigar2"] = {"amb@world_human_smoking@male@male_a@enter", "enter", "Cigar 2", AnimationOptions = - { - Prop = 'prop_cigar_01', - PropBone = 47419, - PropPlacement = {0.010, 0.0, 0.0, 50.0, 0.0, -80.0}, - EmoteMoving = true, - EmoteDuration = 2600 - }}, - ["guitar"] = {"amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar", AnimationOptions = - { - Prop = 'prop_acc_guitar_01', - PropBone = 24818, - PropPlacement = {-0.1, 0.31, 0.1, 0.0, 20.0, 150.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["guitar2"] = {"switch@trevor@guitar_beatdown", "001370_02_trvs_8_guitar_beatdown_idle_busker", "Guitar 2", AnimationOptions = - { - Prop = 'prop_acc_guitar_01', - PropBone = 24818, - PropPlacement = {-0.05, 0.31, 0.1, 0.0, 20.0, 150.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["guitarelectric"] = {"amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar Electric", AnimationOptions = - { - Prop = 'prop_el_guitar_01', - PropBone = 24818, - PropPlacement = {-0.1, 0.31, 0.1, 0.0, 20.0, 150.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["guitarelectric2"] = {"amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar Electric 2", AnimationOptions = - { - Prop = 'prop_el_guitar_03', - PropBone = 24818, - PropPlacement = {-0.1, 0.31, 0.1, 0.0, 20.0, 150.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["book"] = {"cellphone@", "cellphone_text_read_base", "Book", AnimationOptions = - { - Prop = 'prop_novel_01', - PropBone = 6286, - PropPlacement = {0.15, 0.03, -0.065, 0.0, 180.0, 90.0}, -- This positioning isnt too great, was to much of a hassle - EmoteMoving = true, - EmoteLoop = true - }}, - ["bouquet"] = {"impexp_int-0", "mp_m_waremech_01_dual-0", "Bouquet", AnimationOptions = - { - Prop = 'prop_snow_flower_02', - PropBone = 24817, - PropPlacement = {-0.29, 0.40, -0.02, -90.0, -90.0, 0.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["teddy"] = {"impexp_int-0", "mp_m_waremech_01_dual-0", "Teddy", AnimationOptions = - { - Prop = 'v_ilev_mr_rasberryclean', - PropBone = 24817, - PropPlacement = {-0.20, 0.46, -0.016, -180.0, -90.0, 0.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["backpack"] = {"move_p_m_zero_rucksack", "idle", "Backpack", AnimationOptions = - { - Prop = 'p_michael_backpack_s', - PropBone = 24818, - PropPlacement = {0.07, -0.11, -0.05, 0.0, 90.0, 175.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["clipboard"] = {"missfam4", "base", "Clipboard", AnimationOptions = - { - Prop = 'p_amb_clipboard_01', - PropBone = 36029, - PropPlacement = {0.16, 0.08, 0.1, -130.0, -50.0, 0.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["map"] = {"amb@world_human_tourist_map@male@base", "base", "Map", AnimationOptions = - { - Prop = 'prop_tourist_map_01', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteMoving = true, - EmoteLoop = true - }}, - ["beg"] = {"amb@world_human_bum_freeway@male@base", "base", "Beg", AnimationOptions = - { - Prop = 'prop_beggers_sign_03', - PropBone = 58868, - PropPlacement = {0.19, 0.18, 0.0, 5.0, 0.0, 40.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["makeitrain"] = {"anim@mp_player_intupperraining_cash", "idle_a", "Make It Rain", AnimationOptions = - { - Prop = 'prop_anim_cash_pile_01', - PropBone = 60309, - PropPlacement = {0.0, 0.0, 0.0, 180.0, 0.0, 70.0}, - EmoteMoving = true, - EmoteLoop = true, - PtfxAsset = "scr_xs_celebration", - PtfxName = "scr_xs_money_rain", - PtfxPlacement = {0.0, 0.0, -0.09, -80.0, 0.0, 0.0, 1.0}, - PtfxInfo = Config.Languages[Config.MenuLanguage]['makeitrain'], - PtfxWait = 500, - }}, - ["camera"] = {"amb@world_human_paparazzi@male@base", "base", "Camera", AnimationOptions = - { - Prop = 'prop_pap_camera_01', - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - PtfxAsset = "scr_bike_business", - PtfxName = "scr_bike_cfid_camera_flash", - PtfxPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}, - PtfxInfo = Config.Languages[Config.MenuLanguage]['camera'], - PtfxWait = 200, - }}, - ["champagnespray"] = {"anim@mp_player_intupperspray_champagne", "idle_a", "Champagne Spray", AnimationOptions = - { - Prop = 'ba_prop_battle_champ_open', - PropBone = 28422, - PropPlacement = {0.0,0.0,0.0,0.0,0.0,0.0}, - EmoteMoving = true, - EmoteLoop = true, - PtfxAsset = "scr_ba_club", - PtfxName = "scr_ba_club_champagne_spray", - PtfxPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - PtfxInfo = Config.Languages[Config.MenuLanguage]['spraychamp'], - PtfxWait = 500, - }}, - ["joint"] = {"amb@world_human_smoking@male@male_a@enter", "enter", "Joint", AnimationOptions = - { - Prop = 'p_cs_joint_02', - PropBone = 47419, - PropPlacement = {0.015, -0.009, 0.003, 55.0, 0.0, 110.0}, - EmoteMoving = true, - EmoteDuration = 2600 - }}, - ["cig"] = {"amb@world_human_smoking@male@male_a@enter", "enter", "Cig", AnimationOptions = - { - Prop = 'prop_amb_ciggy_01', - PropBone = 47419, - PropPlacement = {0.015, -0.009, 0.003, 55.0, 0.0, 110.0}, - EmoteMoving = true, - EmoteDuration = 2600 - }}, - ["brief3"] = {"missheistdocksprep1hold_cellphone", "static", "Brief 3", AnimationOptions = - { - Prop = "prop_ld_case_01", - PropBone = 57005, - PropPlacement = {0.10, 0.0, 0.0, 0.0, 280.0, 53.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tablet"] = {"amb@world_human_tourist_map@male@base", "base", "Tablet", AnimationOptions = - { - Prop = "prop_cs_tablet", - PropBone = 28422, - PropPlacement = {0.0, -0.03, 0.0, 20.0, -90.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tablet2"] = {"amb@code_human_in_bus_passenger_idles@female@tablet@idle_a", "idle_a", "Tablet 2", AnimationOptions = - { - Prop = "prop_cs_tablet", - PropBone = 28422, - PropPlacement = {-0.05, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["phonecall"] = {"cellphone@", "cellphone_call_listen_base", "Phone Call", AnimationOptions = - { - Prop = "prop_npc_phone_02", - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["phone"] = {"cellphone@", "cellphone_text_read_base", "Phone", AnimationOptions = - { - Prop = "prop_npc_phone_02", - PropBone = 28422, - PropPlacement = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["clean"] = {"timetable@floyd@clean_kitchen@base", "base", "Clean", AnimationOptions = - { - Prop = "prop_sponge_01", - PropBone = 28422, - PropPlacement = {0.0, 0.0, -0.01, 90.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["clean2"] = {"amb@world_human_maid_clean@", "base", "Clean 2", AnimationOptions = - { - Prop = "prop_sponge_01", - PropBone = 28422, - PropPlacement = {0.0, 0.0, -0.01, 90.0, 0.0, 0.0}, - EmoteLoop = true, - EmoteMoving = true, - }}, -} \ No newline at end of file + ["cop4"] = { "amb@world_human_car_park_attendant@male@base", "base", "Cop 4", AnimationOptions = { + Prop = "prop_parking_wand_01", + PropBone = 57005, + PropPlacement = { 0.12, 0.05, 0.0, 80.0, -20.0, 180.0 }, + EmoteLoop = true, + EmoteMoving = true, + } }, + ["leanphone"] = { "amb@world_human_leaning@male@wall@back@mobile@base", "base", "Leaning With Phone", AnimationOptions = { + EmoteMoving = false, + EmoteLoop = true, + Prop = "prop_phone_ing", + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + } }, + ["piss"] = { "misscarsteal2peeing", "peeing_loop", "Piss", AnimationOptions = { + EmoteStuck = true, + PtfxAsset = "scr_amb_chop", + PtfxName = "ent_anim_dog_peeing", + PtfxNoProp = true, + PtfxPlacement = { -0.05, 0.3, 0.0, 0.0, 90.0, 90.0, 1.0 }, + PtfxInfo = Config.Languages[Config.MenuLanguage]['pee'], + PtfxWait = 3000, + } }, + ["hump"] = { "timetable@trevor@skull_loving_bear", "skull_loving_bear", "Hump (Bear)", AnimationOptions = { + Prop = 'prop_mr_raspberry_01', + PropBone = 28422, + PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + EmoteMoving = false, + EmoteLoop = true, + } }, +} diff --git a/resources/EmoteMenu/Client/Emote.lua b/resources/EmoteMenu/Client/Emote.lua index dd9720644..3292cc375 100644 --- a/resources/EmoteMenu/Client/Emote.lua +++ b/resources/EmoteMenu/Client/Emote.lua @@ -18,53 +18,54 @@ local PtfxWait = 500 local PtfxNoProp = false Citizen.CreateThread(function() - while true do + while true do + if IsPedShooting(PlayerPedId()) and IsInAnimation then + EmoteCancel() + end - if IsPedShooting(PlayerPedId()) and IsInAnimation then - EmoteCancel() + if PtfxPrompt then + if not PtfxNotif then + SimpleNotify(PtfxInfo) + PtfxNotif = true + end + if IsControlPressed(0, 47) then + PtfxStart() + Wait(PtfxWait) + PtfxStop() + end + end + + if Config.EnableXtoCancel then if IsControlPressed(0, 73) then EmoteCancel() end end + Citizen.Wait(1) end - - if PtfxPrompt then - if not PtfxNotif then - SimpleNotify(PtfxInfo) - PtfxNotif = true - end - if IsControlPressed(0, 47) then - PtfxStart() - Wait(PtfxWait) - PtfxStop() - end - end - - if Config.MenuKeybindEnabled then if IsControlPressed(0, Config.MenuKeybind) then OpenEmoteMenu() end end - if Config.EnableXtoCancel then if IsControlPressed(0, 73) then EmoteCancel() end end - Citizen.Wait(1) - end end) +if Config.MenuKeybindEnabled then + RegisterKeyMapping("emotemenu", "Open dpemotes menu", "keyboard", Config.MenuKeybind) +end + ----------------------------------------------------------------------------------------------------- -- Commands / Events -------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- Citizen.CreateThread(function() - TriggerEvent('chat:addSuggestion', '/e', 'Play an emote', {{ name="emotename", help="dance, camera, sit or any valid emote."}}) - TriggerEvent('chat:addSuggestion', '/e', 'Play an emote', {{ name="emotename", help="dance, camera, sit or any valid emote."}}) - TriggerEvent('chat:addSuggestion', '/emote', 'Play an emote', {{ name="emotename", help="dance, camera, sit or any valid emote."}}) + TriggerEvent('chat:addSuggestion', '/e', 'Play an emote', { { name = "emotename", help = "dance, camera, sit or any valid emote." } }) + TriggerEvent('chat:addSuggestion', '/emote', 'Play an emote', { { name = "emotename", help = "dance, camera, sit or any valid emote." } }) if Config.SqlKeybinding then - TriggerEvent('chat:addSuggestion', '/emotebind', 'Bind an emote', {{ name="key", help="num4, num5, num6, num7. num8, num9. Numpad 4-9!"}, { name="emotename", help="dance, camera, sit or any valid emote."}}) - TriggerEvent('chat:addSuggestion', '/emotebinds', 'Check your currently bound emotes.') + TriggerEvent('chat:addSuggestion', '/emotebind', 'Bind an emote', { { name = "key", help = "num4, num5, num6, num7. num8, num9. Numpad 4-9!" }, { name = "emotename", help = "dance, camera, sit or any valid emote." } }) + TriggerEvent('chat:addSuggestion', '/emotebinds', 'Check your currently bound emotes.') end - TriggerEvent('chat:addSuggestion', '/emotemenu', 'Open dpemotes menu (F6) by default.') + TriggerEvent('chat:addSuggestion', '/emotemenu', 'Open the emote menu.') TriggerEvent('chat:addSuggestion', '/emotes', 'List available emotes.') - TriggerEvent('chat:addSuggestion', '/walk', 'Set your walkingstyle.', {{ name="style", help="/walks for a list of valid styles"}}) + TriggerEvent('chat:addSuggestion', '/walk', 'Set your walkingstyle.', { { name = "style", help = "/walks for a list of valid styles" } }) TriggerEvent('chat:addSuggestion', '/walks', 'List available walking styles.') end) RegisterCommand('e', function(source, args, raw) EmoteCommandStart(source, args, raw) end) RegisterCommand('emote', function(source, args, raw) EmoteCommandStart(source, args, raw) end) if Config.SqlKeybinding then - RegisterCommand('emotebind', function(source, args, raw) EmoteBindStart(source, args, raw) end) - RegisterCommand('emotebinds', function(source, args, raw) EmoteBindsStart(source, args, raw) end) + RegisterCommand('emotebind', function(source, args, raw) EmoteBindStart(source, args, raw) end) + RegisterCommand('emotebinds', function(source, args, raw) EmoteBindsStart(source, args, raw) end) end RegisterCommand('emotemenu', function(source, args, raw) OpenEmoteMenu() end) RegisterCommand('emotes', function(source, args, raw) EmotesOnCommand() end) @@ -72,11 +73,13 @@ RegisterCommand('walk', function(source, args, raw) WalkCommandStart(source, arg RegisterCommand('walks', function(source, args, raw) WalksOnCommand() end) AddEventHandler('onResourceStop', function(resource) - if resource == GetCurrentResourceName() then - DestroyAllProps() - ClearPedTasksImmediately(GetPlayerPed(-1)) - ResetPedMovementClipset(PlayerPedId()) - end + if resource == GetCurrentResourceName() then + local ply = PlayerPedId() + DestroyAllProps() + ClearPedTasksImmediately(ply) + DetachEntity(ply, true, false) + ResetPedMovementClipset(ply) + end end) ----------------------------------------------------------------------------------------------------- @@ -84,47 +87,49 @@ end) ----------------------------------------------------------------------------------------------------- function EmoteCancel() + local ply = PlayerPedId() + if ChosenDict == "MaleScenario" and IsInAnimation then + ClearPedTasksImmediately(ply) + IsInAnimation = false + DebugPrint("Forced scenario exit") + elseif ChosenDict == "Scenario" and IsInAnimation then + ClearPedTasksImmediately(ply) + IsInAnimation = false + DebugPrint("Forced scenario exit") + end - if ChosenDict == "MaleScenario" and IsInAnimation then - ClearPedTasksImmediately(PlayerPedId()) - IsInAnimation = false - DebugPrint("Forced scenario exit") - elseif ChosenDict == "Scenario" and IsInAnimation then - ClearPedTasksImmediately(PlayerPedId()) - IsInAnimation = false - DebugPrint("Forced scenario exit") - end + PtfxNotif = false + PtfxPrompt = false - PtfxNotif = false - PtfxPrompt = false - - if IsInAnimation then - PtfxStop() - ClearPedTasks(GetPlayerPed(-1)) - DestroyAllProps() - IsInAnimation = false - end + if IsInAnimation then + PtfxStop() + ClearPedTasks(ply) + DetachEntity(ply, true, false) + CancelSharedEmote(ply) + DestroyAllProps() + IsInAnimation = false + end end function EmoteChatMessage(args) - if args == display then - TriggerEvent("chatMessage", "^5Help^0", {0,0,0}, string.format("")) - else - TriggerEvent("chatMessage", "^5Help^0", {0,0,0}, string.format(""..args.."")) - end + if args == display then + TriggerEvent("chatMessage", "^5Help^0", { 0, 0, 0 }, string.format("")) + else + TriggerEvent("chatMessage", "^5Help^0", { 0, 0, 0 }, string.format("" .. args .. "")) + end end function DebugPrint(args) - if Config.DebugDisplay then - print(args) - end + if Config.DebugDisplay then + print(args) + end end function PtfxStart() if PtfxNoProp then - PtfxAt = PlayerPedId() + PtfxAt = PlayerPedId() else - PtfxAt = prop + PtfxAt = prop end UseParticleFxAssetNextCall(PtfxAsset) Ptfx = StartNetworkedParticleFxLoopedOnEntityBone(PtfxName, PtfxAt, Ptfx1, Ptfx2, Ptfx3, Ptfx4, Ptfx5, Ptfx6, GetEntityBoneIndexByName(PtfxName, "VFX"), 1065353216, 0, 0, 0, 1065353216, 1065353216, 1065353216, 0) @@ -133,30 +138,30 @@ function PtfxStart() end function PtfxStop() - for a,b in pairs(PlayerParticles) do - DebugPrint("Stopped PTFX: "..b) - StopParticleFxLooped(b, false) - table.remove(PlayerParticles, a) - end + for a, b in pairs(PlayerParticles) do + DebugPrint("Stopped PTFX: " .. b) + StopParticleFxLooped(b, false) + table.remove(PlayerParticles, a) + end end function EmotesOnCommand(source, args, raw) - local EmotesCommand = "" - for a in pairsByKeys(DP.Emotes) do - EmotesCommand = EmotesCommand .. ""..a..", " - end - EmoteChatMessage(EmotesCommand) - EmoteChatMessage(Config.Languages[lang]['emotemenucmd']) + local EmotesCommand = "" + for a in pairsByKeys(DP.Emotes) do + EmotesCommand = EmotesCommand .. "" .. a .. ", " + end + EmoteChatMessage(EmotesCommand) + EmoteChatMessage(Config.Languages[lang]['emotemenucmd']) end -function pairsByKeys (t, f) +function pairsByKeys(t, f) local a = {} for n in pairs(t) do table.insert(a, n) end table.sort(a, f) - local i = 0 -- iterator variable - local iter = function () -- iterator function + local i = 0 -- iterator variable + local iter = function() -- iterator function i = i + 1 if a[i] == nil then return nil @@ -173,94 +178,111 @@ function EmoteMenuStart(args, hard) if etype == "dances" then if DP.Dances[name] ~= nil then - if OnEmotePlay(DP.Dances[name]) then end + if OnEmotePlay(DP.Dances[name]) then end + end + elseif etype == "animals" then + if DP.AnimalEmotes[name] ~= nil then + if OnEmotePlay(DP.AnimalEmotes[name]) then end end elseif etype == "props" then if DP.PropEmotes[name] ~= nil then - if OnEmotePlay(DP.PropEmotes[name]) then end + if OnEmotePlay(DP.PropEmotes[name]) then end end elseif etype == "emotes" then if DP.Emotes[name] ~= nil then - if OnEmotePlay(DP.Emotes[name]) then end + if OnEmotePlay(DP.Emotes[name]) then end else - if name ~= "🕺 Dance Emotes" then end + if name ~= "🕺 Dance Emotes" then end end elseif etype == "expression" then if DP.Expressions[name] ~= nil then - if OnEmotePlay(DP.Expressions[name]) then end + if OnEmotePlay(DP.Expressions[name]) then end end end end function EmoteCommandStart(source, args, raw) if #args > 0 then - local name = string.lower(args[1]) - if name == "c" then - if IsInAnimation then - EmoteCancel() - else - EmoteChatMessage(Config.Languages[lang]['nocancel']) + local name = string.lower(args[1]) + if name == "c" then + if IsInAnimation then + EmoteCancel() + else + EmoteChatMessage(Config.Languages[lang]['nocancel']) + end + return + elseif name == "help" then + EmotesOnCommand() + return end - return - elseif name == "help" then - EmotesOnCommand() - return end - if DP.Emotes[name] ~= nil then - if OnEmotePlay(DP.Emotes[name]) then end return - elseif DP.Dances[name] ~= nil then - if OnEmotePlay(DP.Dances[name]) then end return - elseif DP.PropEmotes[name] ~= nil then - if OnEmotePlay(DP.PropEmotes[name]) then end return - else - EmoteChatMessage("'"..name.."' "..Config.Languages[lang]['notvalidemote'].."") + if DP.Emotes[name] ~= nil then + if OnEmotePlay(DP.Emotes[name]) then end + return + elseif DP.Dances[name] ~= nil then + if OnEmotePlay(DP.Dances[name]) then end + return + elseif DP.AnimalEmotes[name] ~= nil then + if OnEmotePlay(DP.AnimalEmotes[name]) then end + return + elseif DP.PropEmotes[name] ~= nil then + if OnEmotePlay(DP.PropEmotes[name]) then end + return + else + EmoteChatMessage("'" .. name .. "' " .. Config.Languages[lang]['notvalidemote'] .. "") + end end - end end function LoadAnim(dict) - while not HasAnimDictLoaded(dict) do - RequestAnimDict(dict) - Wait(10) - end + if not DoesAnimDictExist(dict) then + return false + end + + while not HasAnimDictLoaded(dict) do + RequestAnimDict(dict) + Wait(10) + end + + return true end function LoadPropDict(model) - while not HasModelLoaded(GetHashKey(model)) do - RequestModel(GetHashKey(model)) - Wait(10) - end + while not HasModelLoaded(GetHashKey(model)) do + RequestModel(GetHashKey(model)) + Wait(10) + end end function PtfxThis(asset) - while not HasNamedPtfxAssetLoaded(asset) do - RequestNamedPtfxAsset(asset) - Wait(10) - end - UseParticleFxAssetNextCall(asset) + while not HasNamedPtfxAssetLoaded(asset) do + RequestNamedPtfxAsset(asset) + Wait(10) + end + UseParticleFxAssetNextCall(asset) end function DestroyAllProps() - for _,v in pairs(PlayerProps) do - DeleteEntity(v) - end - PlayerHasProp = false - DebugPrint("Destroyed Props") + for _, v in pairs(PlayerProps) do + DeleteEntity(v) + end + PlayerHasProp = false + DebugPrint("Destroyed Props") end function AddPropToPlayer(prop1, bone, off1, off2, off3, rot1, rot2, rot3) - local Player = PlayerPedId() - local x,y,z = table.unpack(GetEntityCoords(Player)) + local Player = PlayerPedId() + local x, y, z = table.unpack(GetEntityCoords(Player)) - if not HasModelLoaded(prop1) then - LoadPropDict(prop1) - end + if not HasModelLoaded(prop1) then + LoadPropDict(prop1) + end - prop = CreateObject(GetHashKey(prop1), x, y, z+0.2, true, true, true) - AttachEntityToEntity(prop, Player, GetPedBoneIndex(Player, bone), off1, off2, off3, rot1, rot2, rot3, true, true, false, true, 1, true) - table.insert(PlayerProps, prop) - PlayerHasProp = true - SetModelAsNoLongerNeeded(prop1) + prop = CreateObject(GetHashKey(prop1), x, y, z + 0.2, true, true, true) + AttachEntityToEntity(prop, Player, GetPedBoneIndex(Player, bone), off1, off2, off3, rot1, rot2, rot3, true, true, false, true, 1, true) + table.insert(PlayerProps, prop) + PlayerHasProp = true + SetModelAsNoLongerNeeded(prop1) end ----------------------------------------------------------------------------------------------------- @@ -271,15 +293,15 @@ end ----------------------------------------------------------------------------------------------------- function CheckGender() - local hashSkinMale = GetHashKey("mp_m_freemode_01") - local hashSkinFemale = GetHashKey("mp_f_freemode_01") + local hashSkinMale = GetHashKey("mp_m_freemode_01") + local hashSkinFemale = GetHashKey("mp_f_freemode_01") - if GetEntityModel(PlayerPedId()) == hashSkinMale then - PlayerGender = "male" - elseif GetEntityModel(PlayerPedId()) == hashSkinFemale then - PlayerGender = "female" - end - DebugPrint("Set gender as = ("..PlayerGender..")") + if GetEntityModel(PlayerPedId()) == hashSkinMale then + PlayerGender = "male" + elseif GetEntityModel(PlayerPedId()) == hashSkinFemale then + PlayerGender = "female" + end + DebugPrint("Set gender as = (" .. PlayerGender .. ")") end ----------------------------------------------------------------------------------------------------- @@ -287,139 +309,143 @@ end ----------------------------------------------------------------------------------------------------- function OnEmotePlay(EmoteName) - - InVehicle = IsPedInAnyVehicle(PlayerPedId(), true) - if not Config.AllowedInCars and InVehicle == 1 then - return - end - - if not DoesEntityExist(GetPlayerPed(-1)) then - return false - end - - if Config.DisarmPlayer then - if IsPedArmed(GetPlayerPed(-1), 7) then - SetCurrentPedWeapon(GetPlayerPed(-1), GetHashKey('WEAPON_UNARMED'), true) + InVehicle = IsPedInAnyVehicle(PlayerPedId(), true) + if not Config.AllowedInCars and InVehicle == 1 then + return end - end - ChosenDict,ChosenAnimation,ename = table.unpack(EmoteName) - AnimationDuration = -1 + if not DoesEntityExist(PlayerPedId()) then + return false + end - if PlayerHasProp then - DestroyAllProps() - end + if Config.DisarmPlayer then + if IsPedArmed(PlayerPedId(), 7) then + SetCurrentPedWeapon(PlayerPedId(), GetHashKey('WEAPON_UNARMED'), true) + end + end - if ChosenDict == "Expression" then - SetFacialIdleAnimOverride(PlayerPedId(), ChosenAnimation, 0) - return - end + ChosenDict, ChosenAnimation, ename = table.unpack(EmoteName) + AnimationDuration = -1 - if ChosenDict == "MaleScenario" or "Scenario" then - CheckGender() - if ChosenDict == "MaleScenario" then if InVehicle then return end - if PlayerGender == "male" then - ClearPedTasks(GetPlayerPed(-1)) - TaskStartScenarioInPlace(GetPlayerPed(-1), ChosenAnimation, 0, true) - DebugPrint("Playing scenario = ("..ChosenAnimation..")") - IsInAnimation = true - else - EmoteChatMessage(Config.Languages[lang]['maleonly']) - end return - elseif ChosenDict == "ScenarioObject" then if InVehicle then return end - BehindPlayer = GetOffsetFromEntityInWorldCoords(PlayerPedId(), 0.0, 0 - 0.5, -0.5); - ClearPedTasks(GetPlayerPed(-1)) - TaskStartScenarioAtPosition(GetPlayerPed(-1), ChosenAnimation, BehindPlayer['x'], BehindPlayer['y'], BehindPlayer['z'], GetEntityHeading(PlayerPedId()), 0, 1, false) - DebugPrint("Playing scenario = ("..ChosenAnimation..")") - IsInAnimation = true - return - elseif ChosenDict == "Scenario" then if InVehicle then return end - ClearPedTasks(GetPlayerPed(-1)) - TaskStartScenarioInPlace(GetPlayerPed(-1), ChosenAnimation, 0, true) - DebugPrint("Playing scenario = ("..ChosenAnimation..")") - IsInAnimation = true - return end - end + if PlayerHasProp then + DestroyAllProps() + end - LoadAnim(ChosenDict) + if ChosenDict == "Expression" then + SetFacialIdleAnimOverride(PlayerPedId(), ChosenAnimation, 0) + return + end - if EmoteName.AnimationOptions then - if EmoteName.AnimationOptions.EmoteLoop then - MovementType = 1 - if EmoteName.AnimationOptions.EmoteMoving then - MovementType = 51 - end + if ChosenDict == "MaleScenario" or "Scenario" then + CheckGender() + if ChosenDict == "MaleScenario" then if InVehicle then return end + if PlayerGender == "male" then + ClearPedTasks(PlayerPedId()) + TaskStartScenarioInPlace(PlayerPedId(), ChosenAnimation, 0, true) + DebugPrint("Playing scenario = (" .. ChosenAnimation .. ")") + IsInAnimation = true + else + EmoteChatMessage(Config.Languages[lang]['maleonly']) + end + return + elseif ChosenDict == "ScenarioObject" then if InVehicle then return end + BehindPlayer = GetOffsetFromEntityInWorldCoords(PlayerPedId(), 0.0, 0 - 0.5, -0.5); + ClearPedTasks(PlayerPedId()) + TaskStartScenarioAtPosition(PlayerPedId(), ChosenAnimation, BehindPlayer['x'], BehindPlayer['y'], BehindPlayer['z'], GetEntityHeading(PlayerPedId()), 0, 1, false) + DebugPrint("Playing scenario = (" .. ChosenAnimation .. ")") + IsInAnimation = true + return + elseif ChosenDict == "Scenario" then if InVehicle then return end + ClearPedTasks(PlayerPedId()) + TaskStartScenarioInPlace(PlayerPedId(), ChosenAnimation, 0, true) + DebugPrint("Playing scenario = (" .. ChosenAnimation .. ")") + IsInAnimation = true + return + end + end - elseif EmoteName.AnimationOptions.EmoteMoving then - MovementType = 51 - elseif EmoteName.AnimationOptions.EmoteMoving == false then - MovementType = 0 - elseif EmoteName.AnimationOptions.EmoteStuck then - MovementType = 50 - end + if not LoadAnim(ChosenDict) then + EmoteChatMessage("'" .. ename .. "' " .. Config.Languages[lang]['notvalidemote'] .. "") + return + end - else - MovementType = 0 - end + if EmoteName.AnimationOptions then + if EmoteName.AnimationOptions.EmoteLoop then + MovementType = 1 + if EmoteName.AnimationOptions.EmoteMoving then + MovementType = 51 + end - if InVehicle == 1 then - MovementType = 51 - end + elseif EmoteName.AnimationOptions.EmoteMoving then + MovementType = 51 + elseif EmoteName.AnimationOptions.EmoteMoving == false then + MovementType = 0 + elseif EmoteName.AnimationOptions.EmoteStuck then + MovementType = 50 + end - if EmoteName.AnimationOptions then - if EmoteName.AnimationOptions.EmoteDuration == nil then - EmoteName.AnimationOptions.EmoteDuration = -1 - AttachWait = 0 else - AnimationDuration = EmoteName.AnimationOptions.EmoteDuration - AttachWait = EmoteName.AnimationOptions.EmoteDuration + MovementType = 0 end - if EmoteName.AnimationOptions.PtfxAsset then - PtfxAsset = EmoteName.AnimationOptions.PtfxAsset - PtfxName = EmoteName.AnimationOptions.PtfxName - if EmoteName.AnimationOptions.PtfxNoProp then - PtfxNoProp = EmoteName.AnimationOptions.PtfxNoProp - else - PtfxNoProp = false - end - Ptfx1, Ptfx2, Ptfx3, Ptfx4, Ptfx5, Ptfx6, PtfxScale = table.unpack(EmoteName.AnimationOptions.PtfxPlacement) - PtfxInfo = EmoteName.AnimationOptions.PtfxInfo - PtfxWait = EmoteName.AnimationOptions.PtfxWait - PtfxNotif = false - PtfxPrompt = true - PtfxThis(PtfxAsset) - else - DebugPrint("Ptfx = none") - PtfxPrompt = false + if InVehicle == 1 then + MovementType = 51 end - end - TaskPlayAnim(GetPlayerPed(-1), ChosenDict, ChosenAnimation, 2.0, 2.0, AnimationDuration, MovementType, 0, false, false, false) - RemoveAnimDict(ChosenDict) - IsInAnimation = true - MostRecentDict = ChosenDict - MostRecentAnimation = ChosenAnimation - - if EmoteName.AnimationOptions then - if EmoteName.AnimationOptions.Prop then - PropName = EmoteName.AnimationOptions.Prop - PropBone = EmoteName.AnimationOptions.PropBone - PropPl1, PropPl2, PropPl3, PropPl4, PropPl5, PropPl6 = table.unpack(EmoteName.AnimationOptions.PropPlacement) - if EmoteName.AnimationOptions.SecondProp then - SecondPropName = EmoteName.AnimationOptions.SecondProp - SecondPropBone = EmoteName.AnimationOptions.SecondPropBone - SecondPropPl1, SecondPropPl2, SecondPropPl3, SecondPropPl4, SecondPropPl5, SecondPropPl6 = table.unpack(EmoteName.AnimationOptions.SecondPropPlacement) - SecondPropEmote = true + if EmoteName.AnimationOptions then + if EmoteName.AnimationOptions.EmoteDuration == nil then + EmoteName.AnimationOptions.EmoteDuration = -1 + AttachWait = 0 else - SecondPropEmote = false + AnimationDuration = EmoteName.AnimationOptions.EmoteDuration + AttachWait = EmoteName.AnimationOptions.EmoteDuration end - Wait(AttachWait) - AddPropToPlayer(PropName, PropBone, PropPl1, PropPl2, PropPl3, PropPl4, PropPl5, PropPl6) - if SecondPropEmote then - AddPropToPlayer(SecondPropName, SecondPropBone, SecondPropPl1, SecondPropPl2, SecondPropPl3, SecondPropPl4, SecondPropPl5, SecondPropPl6) + + if EmoteName.AnimationOptions.PtfxAsset then + PtfxAsset = EmoteName.AnimationOptions.PtfxAsset + PtfxName = EmoteName.AnimationOptions.PtfxName + if EmoteName.AnimationOptions.PtfxNoProp then + PtfxNoProp = EmoteName.AnimationOptions.PtfxNoProp + else + PtfxNoProp = false + end + Ptfx1, Ptfx2, Ptfx3, Ptfx4, Ptfx5, Ptfx6, PtfxScale = table.unpack(EmoteName.AnimationOptions.PtfxPlacement) + PtfxInfo = EmoteName.AnimationOptions.PtfxInfo + PtfxWait = EmoteName.AnimationOptions.PtfxWait + PtfxNotif = false + PtfxPrompt = true + PtfxThis(PtfxAsset) + else + DebugPrint("Ptfx = none") + PtfxPrompt = false end end - end - return true -end \ No newline at end of file + + TaskPlayAnim(PlayerPedId(), ChosenDict, ChosenAnimation, 2.0, 2.0, AnimationDuration, MovementType, 0, false, false, false) + RemoveAnimDict(ChosenDict) + IsInAnimation = true + MostRecentDict = ChosenDict + MostRecentAnimation = ChosenAnimation + + if EmoteName.AnimationOptions then + if EmoteName.AnimationOptions.Prop then + PropName = EmoteName.AnimationOptions.Prop + PropBone = EmoteName.AnimationOptions.PropBone + PropPl1, PropPl2, PropPl3, PropPl4, PropPl5, PropPl6 = table.unpack(EmoteName.AnimationOptions.PropPlacement) + if EmoteName.AnimationOptions.SecondProp then + SecondPropName = EmoteName.AnimationOptions.SecondProp + SecondPropBone = EmoteName.AnimationOptions.SecondPropBone + SecondPropPl1, SecondPropPl2, SecondPropPl3, SecondPropPl4, SecondPropPl5, SecondPropPl6 = table.unpack(EmoteName.AnimationOptions.SecondPropPlacement) + SecondPropEmote = true + else + SecondPropEmote = false + end + Wait(AttachWait) + AddPropToPlayer(PropName, PropBone, PropPl1, PropPl2, PropPl3, PropPl4, PropPl5, PropPl6) + if SecondPropEmote then + AddPropToPlayer(SecondPropName, SecondPropBone, SecondPropPl1, SecondPropPl2, SecondPropPl3, SecondPropPl4, SecondPropPl5, SecondPropPl6) + end + end + end + return true +end diff --git a/resources/EmoteMenu/Client/EmoteMenu.lua b/resources/EmoteMenu/Client/EmoteMenu.lua index aaac4654a..60db2f540 100644 --- a/resources/EmoteMenu/Client/EmoteMenu.lua +++ b/resources/EmoteMenu/Client/EmoteMenu.lua @@ -1,30 +1,30 @@ TriggerServerEvent("dp:CheckVersion") -rightPosition = {x = 1450, y = 100} -leftPosition = {x = 0, y = 100} -menuPosition = {x = 0, y = 200} +rightPosition = { x = 1450, y = 100 } +leftPosition = { x = 0, y = 100 } +menuPosition = { x = 0, y = 200 } if Config.MenuPosition then - if Config.MenuPosition == "left" then - menuPosition = leftPosition - elseif Config.MenuPosition == "right" then - menuPosition = rightPosition - end + if Config.MenuPosition == "left" then + menuPosition = leftPosition + elseif Config.MenuPosition == "right" then + menuPosition = rightPosition + end end if Config.CustomMenuEnabled then - local RuntimeTXD = CreateRuntimeTxd('Custom_Menu_Head') - local Object = CreateDui(Config.MenuImage, 512, 128) - _G.Object = Object - local TextureThing = GetDuiHandle(Object) - local Texture = CreateRuntimeTextureFromDuiHandle(RuntimeTXD, 'Custom_Menu_Head', TextureThing) - Menuthing = "Custom_Menu_Head" + local RuntimeTXD = CreateRuntimeTxd('Custom_Menu_Head') + local Object = CreateDui(Config.MenuImage, 512, 128) + _G.Object = Object + local TextureThing = GetDuiHandle(Object) + local Texture = CreateRuntimeTextureFromDuiHandle(RuntimeTXD, 'Custom_Menu_Head', TextureThing) + Menuthing = "Custom_Menu_Head" else - Menuthing = "shopui_title_sm_hangar" + Menuthing = "shopui_title_sm_hangar" end _menuPool = NativeUI.CreatePool() -mainMenu = NativeUI.CreateMenu("dp Emotes", "", menuPosition["x"], menuPosition["y"], Menuthing, Menuthing) +mainMenu = NativeUI.CreateMenu("", "", menuPosition["x"], menuPosition["y"], Menuthing, Menuthing) _menuPool:Add(mainMenu) function ShowNotification(text) @@ -37,159 +37,174 @@ local EmoteTable = {} local FavEmoteTable = {} local KeyEmoteTable = {} local DanceTable = {} +local AnimalTable = {} local PropETable = {} local WalkTable = {} local FaceTable = {} local ShareTable = {} local FavoriteEmote = "" -Citizen.CreateThread(function() - while true do - if Config.FavKeybindEnabled then - if IsControlPressed(0, Config.FavKeybind) then - if not IsPedSittingInAnyVehicle(PlayerPedId()) then - if FavoriteEmote ~= "" then - EmoteCommandStart(nil,{FavoriteEmote, 0}) - Wait(3000) - end +if Config.FavKeybindEnabled then + Citizen.CreateThread(function() + while true do + if IsControlPressed(0, Config.FavKeybind) then + if not IsPedSittingInAnyVehicle(PlayerPedId()) then + if FavoriteEmote ~= "" then + EmoteCommandStart(nil, { FavoriteEmote, 0 }) + Wait(3000) + end + end + end + Citizen.Wait(1) end - end - end - Citizen.Wait(1) - end -end) + end) +end lang = Config.MenuLanguage function AddEmoteMenu(menu) local submenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['emotes'], "", "", Menuthing, Menuthing) local dancemenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['danceemotes'], "", "", Menuthing, Menuthing) + local animalmenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['animalemotes'], "", "", Menuthing, Menuthing) local propmenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['propemotes'], "", "", Menuthing, Menuthing) table.insert(EmoteTable, Config.Languages[lang]['danceemotes']) table.insert(EmoteTable, Config.Languages[lang]['danceemotes']) + table.insert(EmoteTable, Config.Languages[lang]['animalemotes']) if Config.SharedEmotesEnabled then - sharemenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['shareemotes'], Config.Languages[lang]['shareemotesinfo'], "", Menuthing, Menuthing) - shareddancemenu = _menuPool:AddSubMenu(sharemenu, Config.Languages[lang]['sharedanceemotes'], "", "", Menuthing, Menuthing) - table.insert(ShareTable, 'none') - table.insert(EmoteTable, Config.Languages[lang]['shareemotes']) + sharemenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['shareemotes'], Config.Languages[lang]['shareemotesinfo'], "", Menuthing, Menuthing) + shareddancemenu = _menuPool:AddSubMenu(sharemenu, Config.Languages[lang]['sharedanceemotes'], "", "", Menuthing, Menuthing) + table.insert(ShareTable, 'none') + table.insert(EmoteTable, Config.Languages[lang]['shareemotes']) end if not Config.SqlKeybinding then - unbind2item = NativeUI.CreateItem(Config.Languages[lang]['rfavorite'], Config.Languages[lang]['rfavorite']) - unbinditem = NativeUI.CreateItem(Config.Languages[lang]['prop2info'], "") - favmenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['favoriteemotes'], Config.Languages[lang]['favoriteinfo'], "", Menuthing, Menuthing) - favmenu:AddItem(unbinditem) - favmenu:AddItem(unbind2item) - table.insert(FavEmoteTable, Config.Languages[lang]['rfavorite']) - table.insert(FavEmoteTable, Config.Languages[lang]['rfavorite']) - table.insert(EmoteTable, Config.Languages[lang]['favoriteemotes']) + unbind2item = NativeUI.CreateItem(Config.Languages[lang]['rfavorite'], Config.Languages[lang]['rfavorite']) + unbinditem = NativeUI.CreateItem(Config.Languages[lang]['prop2info'], "") + favmenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['favoriteemotes'], Config.Languages[lang]['favoriteinfo'], "", Menuthing, Menuthing) + favmenu:AddItem(unbinditem) + favmenu:AddItem(unbind2item) + table.insert(FavEmoteTable, Config.Languages[lang]['rfavorite']) + table.insert(FavEmoteTable, Config.Languages[lang]['rfavorite']) + table.insert(EmoteTable, Config.Languages[lang]['favoriteemotes']) else - table.insert(EmoteTable, "keybinds") - keyinfo = NativeUI.CreateItem(Config.Languages[lang]['keybinds'], Config.Languages[lang]['keybindsinfo'].." /emotebind [~y~num4-9~w~] [~g~emotename~w~]") - submenu:AddItem(keyinfo) + table.insert(EmoteTable, "keybinds") + keyinfo = NativeUI.CreateItem(Config.Languages[lang]['keybinds'], Config.Languages[lang]['keybindsinfo'] .. " /emotebind [~y~num4-9~w~] [~g~emotename~w~]") + submenu:AddItem(keyinfo) end - for a,b in pairsByKeys(DP.Emotes) do - x,y,z = table.unpack(b) - emoteitem = NativeUI.CreateItem(z, "/e ("..a..")") - submenu:AddItem(emoteitem) - table.insert(EmoteTable, a) - if not Config.SqlKeybinding then - favemoteitem = NativeUI.CreateItem(z, Config.Languages[lang]['set']..z..Config.Languages[lang]['setboundemote']) - favmenu:AddItem(favemoteitem) - table.insert(FavEmoteTable, a) - end + for a, b in pairsByKeys(DP.Emotes) do + x, y, z = table.unpack(b) + emoteitem = NativeUI.CreateItem(z, "/e (" .. a .. ")") + submenu:AddItem(emoteitem) + table.insert(EmoteTable, a) + if not Config.SqlKeybinding then + favemoteitem = NativeUI.CreateItem(z, Config.Languages[lang]['set'] .. z .. Config.Languages[lang]['setboundemote']) + favmenu:AddItem(favemoteitem) + table.insert(FavEmoteTable, a) + end end - for a,b in pairsByKeys(DP.Dances) do - x,y,z = table.unpack(b) - danceitem = NativeUI.CreateItem(z, "/e ("..a..")") - sharedanceitem = NativeUI.CreateItem(z, "") - dancemenu:AddItem(danceitem) - if Config.SharedEmotesEnabled then - shareddancemenu:AddItem(sharedanceitem) - end - table.insert(DanceTable, a) + for a, b in pairsByKeys(DP.Dances) do + x, y, z = table.unpack(b) + danceitem = NativeUI.CreateItem(z, "/e (" .. a .. ")") + sharedanceitem = NativeUI.CreateItem(z, "") + dancemenu:AddItem(danceitem) + if Config.SharedEmotesEnabled then + shareddancemenu:AddItem(sharedanceitem) + end + table.insert(DanceTable, a) + end + + for a, b in pairsByKeys(DP.AnimalEmotes) do + x, y, z = table.unpack(b) + animalitem = NativeUI.CreateItem(z, "/e (" .. a .. ")") + animalmenu:AddItem(animalitem) + table.insert(AnimalTable, a) end if Config.SharedEmotesEnabled then - for a,b in pairsByKeys(DP.Shared) do - x,y,z,otheremotename = table.unpack(b) - if otheremotename == nil then - shareitem = NativeUI.CreateItem(z, "/nearby (~g~"..a.."~w~)") - else - shareitem = NativeUI.CreateItem(z, "/nearby (~g~"..a.."~w~) "..Config.Languages[lang]['makenearby'].." (~y~"..otheremotename.."~w~)") + for a, b in pairsByKeys(DP.Shared) do + x, y, z, otheremotename = table.unpack(b) + if otheremotename == nil then + shareitem = NativeUI.CreateItem(z, "/nearby (~g~" .. a .. "~w~)") + else + shareitem = NativeUI.CreateItem(z, "/nearby (~g~" .. a .. "~w~) " .. Config.Languages[lang]['makenearby'] .. " (~y~" .. otheremotename .. "~w~)") + end + sharemenu:AddItem(shareitem) + table.insert(ShareTable, a) end - sharemenu:AddItem(shareitem) - table.insert(ShareTable, a) - end end - for a,b in pairsByKeys(DP.PropEmotes) do - x,y,z = table.unpack(b) - propitem = NativeUI.CreateItem(z, "/e ("..a..")") - propmenu:AddItem(propitem) - table.insert(PropETable, a) - if not Config.SqlKeybinding then - propfavitem = NativeUI.CreateItem(z, Config.Languages[lang]['set']..z..Config.Languages[lang]['setboundemote']) - favmenu:AddItem(propfavitem) - table.insert(FavEmoteTable, a) - end + for a, b in pairsByKeys(DP.PropEmotes) do + x, y, z = table.unpack(b) + propitem = NativeUI.CreateItem(z, "/e (" .. a .. ")") + propmenu:AddItem(propitem) + table.insert(PropETable, a) + if not Config.SqlKeybinding then + propfavitem = NativeUI.CreateItem(z, Config.Languages[lang]['set'] .. z .. Config.Languages[lang]['setboundemote']) + favmenu:AddItem(propfavitem) + table.insert(FavEmoteTable, a) + end end if not Config.SqlKeybinding then - favmenu.OnItemSelect = function(sender, item, index) - if FavEmoteTable[index] == Config.Languages[lang]['rfavorite'] then - FavoriteEmote = "" - ShowNotification(Config.Languages[lang]['rfavorite'], 2000) - return end - if Config.FavKeybindEnabled then - FavoriteEmote = FavEmoteTable[index] - ShowNotification("~o~"..firstToUpper(FavoriteEmote)..Config.Languages[lang]['newsetemote']) + favmenu.OnItemSelect = function(sender, item, index) + if FavEmoteTable[index] == Config.Languages[lang]['rfavorite'] then + FavoriteEmote = "" + ShowNotification(Config.Languages[lang]['rfavorite'], 2000) + return + end + if Config.FavKeybindEnabled then + FavoriteEmote = FavEmoteTable[index] + ShowNotification("~o~" .. firstToUpper(FavoriteEmote) .. Config.Languages[lang]['newsetemote']) + end end - end end dancemenu.OnItemSelect = function(sender, item, index) - EmoteMenuStart(DanceTable[index], "dances") + EmoteMenuStart(DanceTable[index], "dances") + end + + animalmenu.OnItemSelect = function(sender, item, index) + EmoteMenuStart(AnimalTable[index], "animals") end if Config.SharedEmotesEnabled then - sharemenu.OnItemSelect = function(sender, item, index) - if ShareTable[index] ~= 'none' then - target, distance = GetClosestPlayer() - if(distance ~= -1 and distance < 3) then - _,_,rename = table.unpack(DP.Shared[ShareTable[index]]) - TriggerServerEvent("ServerEmoteRequest", GetPlayerServerId(target), ShareTable[index]) - SimpleNotify(Config.Languages[lang]['sentrequestto']..GetPlayerName(target)) - else - SimpleNotify(Config.Languages[lang]['nobodyclose']) - end + sharemenu.OnItemSelect = function(sender, item, index) + if ShareTable[index] ~= 'none' then + target, distance = GetClosestPlayer() + if (distance ~= -1 and distance < 3) then + _, _, rename = table.unpack(DP.Shared[ShareTable[index]]) + TriggerServerEvent("ServerEmoteRequest", GetPlayerServerId(target), ShareTable[index]) + SimpleNotify(Config.Languages[lang]['sentrequestto'] .. GetPlayerName(target)) + else + SimpleNotify(Config.Languages[lang]['nobodyclose']) + end + end end - end - shareddancemenu.OnItemSelect = function(sender, item, index) - target, distance = GetClosestPlayer() - if(distance ~= -1 and distance < 3) then - _,_,rename = table.unpack(DP.Dances[DanceTable[index]]) - TriggerServerEvent("ServerEmoteRequest", GetPlayerServerId(target), DanceTable[index], 'Dances') - SimpleNotify(Config.Languages[lang]['sentrequestto']..GetPlayerName(target)) - else - SimpleNotify(Config.Languages[lang]['nobodyclose']) + shareddancemenu.OnItemSelect = function(sender, item, index) + target, distance = GetClosestPlayer() + if (distance ~= -1 and distance < 3) then + _, _, rename = table.unpack(DP.Dances[DanceTable[index]]) + TriggerServerEvent("ServerEmoteRequest", GetPlayerServerId(target), DanceTable[index], 'Dances') + SimpleNotify(Config.Languages[lang]['sentrequestto'] .. GetPlayerName(target)) + else + SimpleNotify(Config.Languages[lang]['nobodyclose']) + end end - end end propmenu.OnItemSelect = function(sender, item, index) - EmoteMenuStart(PropETable[index], "props") + EmoteMenuStart(PropETable[index], "props") end submenu.OnItemSelect = function(sender, item, index) - if EmoteTable[index] ~= Config.Languages[lang]['favoriteemotes'] then - EmoteMenuStart(EmoteTable[index], "emotes") + if EmoteTable[index] ~= Config.Languages[lang]['favoriteemotes'] then + EmoteMenuStart(EmoteTable[index], "emotes") + end end - end end function AddCancelEmote(menu) @@ -197,8 +212,8 @@ function AddCancelEmote(menu) menu:AddItem(newitem) menu.OnItemSelect = function(sender, item, checked_) if item == newitem then - EmoteCancel() - DestroyAllProps() + EmoteCancel() + DestroyAllProps() end end end @@ -214,19 +229,19 @@ function AddWalkMenu(menu) submenu:AddItem(WalkInjured) table.insert(WalkTable, "move_m@injured") - for a,b in pairsByKeys(DP.Walks) do - x = table.unpack(b) - walkitem = NativeUI.CreateItem(a, "") - submenu:AddItem(walkitem) - table.insert(WalkTable, x) + for a, b in pairsByKeys(DP.Walks) do + x = table.unpack(b) + walkitem = NativeUI.CreateItem(a, "") + submenu:AddItem(walkitem) + table.insert(WalkTable, x) end submenu.OnItemSelect = function(sender, item, index) - if item ~= walkreset then - WalkMenuStart(WalkTable[index]) - else - ResetPedMovementClipset(PlayerPedId()) - end + if item ~= walkreset then + WalkMenuStart(WalkTable[index]) + else + ResetPedMovementClipset(PlayerPedId()) + end end end @@ -237,34 +252,34 @@ function AddFaceMenu(menu) submenu:AddItem(facereset) table.insert(FaceTable, "") - for a,b in pairsByKeys(DP.Expressions) do - x,y,z = table.unpack(b) - faceitem = NativeUI.CreateItem(a, "") - submenu:AddItem(faceitem) - table.insert(FaceTable, a) + for a, b in pairsByKeys(DP.Expressions) do + x, y, z = table.unpack(b) + faceitem = NativeUI.CreateItem(a, "") + submenu:AddItem(faceitem) + table.insert(FaceTable, a) end submenu.OnItemSelect = function(sender, item, index) - if item ~= facereset then - EmoteMenuStart(FaceTable[index], "expression") - else - ClearFacialIdleAnimOverride(PlayerPedId()) - end + if item ~= facereset then + EmoteMenuStart(FaceTable[index], "expression") + else + ClearFacialIdleAnimOverride(PlayerPedId()) + end end end function AddInfoMenu(menu) if not UpdateAvailable then - infomenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['infoupdate'], "(1.7.3)", "", Menuthing, Menuthing) + infomenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['infoupdate'], "Huge Thank You ❤️", "", Menuthing, Menuthing) else - infomenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['infoupdateav'], Config.Languages[lang]['infoupdateavtext'], "", Menuthing, Menuthing) + infomenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['infoupdateav'], Config.Languages[lang]['infoupdateavtext'], "", Menuthing, Menuthing) end contact = NativeUI.CreateItem(Config.Languages[lang]['suggestions'], Config.Languages[lang]['suggestionsinfo']) - u170 = NativeUI.CreateItem("1.7.0", "Added /emotebind [key] [emote]!") - u165 = NativeUI.CreateItem("1.6.5", "Updated camera/phone/pee/beg, added makeitrain/dance(glowstick/horse).") - u160 = NativeUI.CreateItem("1.6.0", "Added shared emotes /nearby, or in menu, also fixed some emotes!") - u151 = NativeUI.CreateItem("1.5.1", "Added /walk and /walks, for walking styles without menu") - u150 = NativeUI.CreateItem("1.5.0", "Added Facial Expressions menu (if enabled by server owner)") + u170 = NativeUI.CreateItem("Thanks", "DullPear for the original dpemotes ❤️") + u165 = NativeUI.CreateItem("Thanks", "AvaN0x for assisting with the formatting of the code.") + u160 = NativeUI.CreateItem("Thanks", "SMGMissy for the custom pride flags 🏳️‍🌈.") + u151 = NativeUI.CreateItem("Thanks", "Kibook for the addition of Animal Emotes 🐩.") + u150 = NativeUI.CreateItem("Thanks", "To you, the community for helping me keep this menu alive ❤️.") infomenu:AddItem(contact) infomenu:AddItem(u170) infomenu:AddItem(u165) @@ -284,10 +299,10 @@ end AddEmoteMenu(mainMenu) AddCancelEmote(mainMenu) if Config.WalkingStylesEnabled then - AddWalkMenu(mainMenu) + AddWalkMenu(mainMenu) end if Config.ExpressionsEnabled then - AddFaceMenu(mainMenu) + AddFaceMenu(mainMenu) end _menuPool:RefreshIndex() @@ -308,5 +323,5 @@ end) RegisterNetEvent("dp:RecieveMenu") -- For opening the emote menu from another resource. AddEventHandler("dp:RecieveMenu", function() - OpenEmoteMenu() -end) \ No newline at end of file + OpenEmoteMenu() +end) diff --git a/resources/EmoteMenu/Client/Keybinds.lua b/resources/EmoteMenu/Client/Keybinds.lua index 137fd343f..2994d60d5 100644 --- a/resources/EmoteMenu/Client/Keybinds.lua +++ b/resources/EmoteMenu/Client/Keybinds.lua @@ -1,104 +1,126 @@ if Config.SqlKeybinding then -local emob1 = "" -local emob2 = "" -local emob3 = "" -local emob4 = "" -local emob5 = "" -local emob6 = "" -local keyb1 = "" -local keyb2 = "" -local keyb3 = "" -local keyb4 = "" -local keyb5 = "" -local keyb6 = "" -local Initialized = false + local emob1 = "" + local emob2 = "" + local emob3 = "" + local emob4 = "" + local emob5 = "" + local emob6 = "" + local keyb1 = "" + local keyb2 = "" + local keyb3 = "" + local keyb4 = "" + local keyb5 = "" + local keyb6 = "" + local Initialized = false ------------------------------------------------------------------------------------------------------ --- Commands / Events -------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------ + ----------------------------------------------------------------------------------------------------- + -- Commands / Events -------------------------------------------------------------------------------- + ----------------------------------------------------------------------------------------------------- -Citizen.CreateThread(function() - while true do - - if NetworkIsPlayerActive(PlayerId()) and not Initialized then - if not Initialized then - TriggerServerEvent("dp:ServerKeybindExist") - Wait(5000) - end - end - - if not IsPedSittingInAnyVehicle(PlayerPedId()) then - for k, v in pairs(Config.KeybindKeys) do - if IsControlJustReleased(0, v) then - if k == keyb1 then if emob1 ~= "" then EmoteCommandStart(nil,{emob1, 0}) end end - if k == keyb2 then if emob2 ~= "" then EmoteCommandStart(nil,{emob2, 0}) end end - if k == keyb3 then if emob3 ~= "" then EmoteCommandStart(nil,{emob3, 0}) end end - if k == keyb4 then if emob4 ~= "" then EmoteCommandStart(nil,{emob4, 0}) end end - if k == keyb5 then if emob5 ~= "" then EmoteCommandStart(nil,{emob5, 0}) end end - if k == keyb6 then if emob6 ~= "" then EmoteCommandStart(nil,{emob6, 0}) end end - Wait(1000) + Citizen.CreateThread(function() + while true do + if NetworkIsPlayerActive(PlayerId()) and not Initialized then + if not Initialized then + TriggerServerEvent("dp:ServerKeybindExist") + Wait(5000) + end end + + if not IsPedSittingInAnyVehicle(PlayerPedId()) then + for k, v in pairs(Config.KeybindKeys) do + if IsControlJustReleased(0, v) then + if k == keyb1 then if emob1 ~= "" then EmoteCommandStart(nil, { emob1, 0 }) end end + if k == keyb2 then if emob2 ~= "" then EmoteCommandStart(nil, { emob2, 0 }) end end + if k == keyb3 then if emob3 ~= "" then EmoteCommandStart(nil, { emob3, 0 }) end end + if k == keyb4 then if emob4 ~= "" then EmoteCommandStart(nil, { emob4, 0 }) end end + if k == keyb5 then if emob5 ~= "" then EmoteCommandStart(nil, { emob5, 0 }) end end + if k == keyb6 then if emob6 ~= "" then EmoteCommandStart(nil, { emob6, 0 }) end end + Wait(1000) + end + end + end + Citizen.Wait(1) end - end - Citizen.Wait(1) - end -end) + end) -RegisterNetEvent("dp:ClientKeybindExist") -AddEventHandler("dp:ClientKeybindExist", function(does) - if does then - TriggerServerEvent("dp:ServerKeybindGrab") - else - TriggerServerEvent("dp:ServerKeybindCreate") - end -end) - -RegisterNetEvent("dp:ClientKeybindGet") -AddEventHandler("dp:ClientKeybindGet", function(k1, e1, k2, e2, k3, e3, k4, e4, k5, e5, k6, e6) - keyb1 = k1 emob1 = e1 keyb2 = k2 emob2 = e2 keyb3 = k3 emob3 = e3 keyb4 = k4 emob4 = e4 keyb5 = k5 emob5 = e5 keyb6 = k6 emob6 = e6 - Initialized = true -end) - -RegisterNetEvent("dp:ClientKeybindGetOne") -AddEventHandler("dp:ClientKeybindGetOne", function(key, e) - SimpleNotify(Config.Languages[lang]['bound'].."~y~"..e.."~w~ "..Config.Languages[lang]['to'].." ~g~"..firstToUpper(key).."~w~") - if key == "num4" then emob1 = e keyb1 = "num4" elseif key == "num5" then emob2 = e keyb2 = "num5" elseif key == "num6" then emob3 = e keyb3 = "num6" elseif key == "num7" then emob4 = e keyb4 = "num7" elseif key == "num8" then emob5 = e keyb5 = "num8" elseif key == "num9" then emob6 = e keyb6 = "num9" end -end) - ------------------------------------------------------------------------------------------------------ ------- Functions and stuff -------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------ - -function EmoteBindsStart() - EmoteChatMessage(Config.Languages[lang]['currentlyboundemotes'].."\n" - ..firstToUpper(keyb1).." = '^2"..emob1.."^7'\n" - ..firstToUpper(keyb2).." = '^2"..emob2.."^7'\n" - ..firstToUpper(keyb3).." = '^2"..emob3.."^7'\n" - ..firstToUpper(keyb4).." = '^2"..emob4.."^7'\n" - ..firstToUpper(keyb5).." = '^2"..emob5.."^7'\n" - ..firstToUpper(keyb6).." = '^2"..emob6.."^7'\n") -end - -function EmoteBindStart(source, args, raw) - if #args > 0 then - local key = string.lower(args[1]) - local emote = string.lower(args[2]) - if (Config.KeybindKeys[key]) ~= nil then - if DP.Emotes[emote] ~= nil then - TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) - elseif DP.Dances[emote] ~= nil then - TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) - elseif DP.PropEmotes[emote] ~= nil then - TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) - else - EmoteChatMessage("'"..emote.."' "..Config.Languages[lang]['notvalidemote'].."") - end + RegisterNetEvent("dp:ClientKeybindExist") + AddEventHandler("dp:ClientKeybindExist", function(does) + if does then + TriggerServerEvent("dp:ServerKeybindGrab") else - EmoteChatMessage("'"..key.."' "..Config.Languages[lang]['notvalidkey']) + TriggerServerEvent("dp:ServerKeybindCreate") end - else - print("invalid") - end -end + end) -end \ No newline at end of file + RegisterNetEvent("dp:ClientKeybindGet") + AddEventHandler("dp:ClientKeybindGet", function(k1, e1, k2, e2, k3, e3, k4, e4, k5, e5, k6, e6) + keyb1 = k1 + emob1 = e1 + keyb2 = k2 + emob2 = e2 + keyb3 = k3 + emob3 = e3 + keyb4 = k4 + emob4 = e4 + keyb5 = k5 + emob5 = e5 + keyb6 = k6 + emob6 = e6 + Initialized = true + end) + + RegisterNetEvent("dp:ClientKeybindGetOne") + AddEventHandler("dp:ClientKeybindGetOne", function(key, e) + SimpleNotify(Config.Languages[lang]['bound'] .. "~y~" .. e .. "~w~ " .. Config.Languages[lang]['to'] .. " ~g~" .. firstToUpper(key) .. "~w~") + if key == "num4" then emob1 = e + keyb1 = "num4" + elseif key == "num5" then emob2 = e + keyb2 = "num5" + elseif key == "num6" then emob3 = e + keyb3 = "num6" + elseif key == "num7" then emob4 = e + keyb4 = "num7" + elseif key == "num8" then emob5 = e + keyb5 = "num8" + elseif key == "num9" then emob6 = e + keyb6 = "num9" + end + end) + + ----------------------------------------------------------------------------------------------------- + ------ Functions and stuff -------------------------------------------------------------------------- + ----------------------------------------------------------------------------------------------------- + + function EmoteBindsStart() + EmoteChatMessage(Config.Languages[lang]['currentlyboundemotes'] .. "\n" + .. firstToUpper(keyb1) .. " = '^2" .. emob1 .. "^7'\n" + .. firstToUpper(keyb2) .. " = '^2" .. emob2 .. "^7'\n" + .. firstToUpper(keyb3) .. " = '^2" .. emob3 .. "^7'\n" + .. firstToUpper(keyb4) .. " = '^2" .. emob4 .. "^7'\n" + .. firstToUpper(keyb5) .. " = '^2" .. emob5 .. "^7'\n" + .. firstToUpper(keyb6) .. " = '^2" .. emob6 .. "^7'\n") + end + + function EmoteBindStart(source, args, raw) + if #args > 0 then + local key = string.lower(args[1]) + local emote = string.lower(args[2]) + if (Config.KeybindKeys[key]) ~= nil then + if DP.Emotes[emote] ~= nil then + TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) + elseif DP.Dances[emote] ~= nil then + TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) + elseif DP.PropEmotes[emote] ~= nil then + TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) + else + EmoteChatMessage("'" .. emote .. "' " .. Config.Languages[lang]['notvalidemote'] .. "") + end + else + EmoteChatMessage("'" .. key .. "' " .. Config.Languages[lang]['notvalidkey']) + end + else + print("invalid") + end + end + +end diff --git a/resources/EmoteMenu/Client/Ragdoll.lua b/resources/EmoteMenu/Client/Ragdoll.lua index 4dcad9600..8352435f2 100644 --- a/resources/EmoteMenu/Client/Ragdoll.lua +++ b/resources/EmoteMenu/Client/Ragdoll.lua @@ -1,25 +1,24 @@ local isInRagdoll = false Citizen.CreateThread(function() - while true do - Citizen.Wait(10) - if isInRagdoll then - SetPedToRagdoll(GetPlayerPed(-1), 1000, 1000, 0, 0, 0, 0) + while true do + Citizen.Wait(10) + if isInRagdoll then + SetPedToRagdoll(PlayerPedId(), 1000, 1000, 0, 0, 0, 0) + end end - end end) Citizen.CreateThread(function() while true do - Citizen.Wait(0) - if IsControlJustPressed(2, Config.RagdollKeybind) and Config.RagdollEnabled and IsPedOnFoot(PlayerPedId()) then - if isInRagdoll then - isInRagdoll = false - else - isInRagdoll = true - Wait(500) + Citizen.Wait(0) + if IsControlJustPressed(2, Config.RagdollKeybind) and Config.RagdollEnabled and IsPedOnFoot(PlayerPedId()) then + if isInRagdoll then + isInRagdoll = false + else + isInRagdoll = true + Wait(500) + end end end - end end) - diff --git a/resources/EmoteMenu/Client/Syncing.lua b/resources/EmoteMenu/Client/Syncing.lua index b294da97b..f925acd96 100644 --- a/resources/EmoteMenu/Client/Syncing.lua +++ b/resources/EmoteMenu/Client/Syncing.lua @@ -1,5 +1,6 @@ local isRequestAnim = false local requestedemote = '' +local targetPlayerId = '' -- Some of the work here was done by Super.Cool.Ninja / rubbertoe98 -- https://forum.fivem.net/t/release-nanimstarget/876709 @@ -12,19 +13,20 @@ if Config.SharedEmotesEnabled then if #args > 0 then local emotename = string.lower(args[1]) target, distance = GetClosestPlayer() - if(distance ~= -1 and distance < 3) then + if (distance ~= -1 and distance < 3) then if DP.Shared[emotename] ~= nil then dict, anim, ename = table.unpack(DP.Shared[emotename]) TriggerServerEvent("ServerEmoteRequest", GetPlayerServerId(target), emotename) - SimpleNotify(Config.Languages[lang]['sentrequestto']..GetPlayerName(target).." ~w~(~g~"..ename.."~w~)") + SimpleNotify(Config.Languages[lang]['sentrequestto'] .. + GetPlayerName(target) .. " ~w~(~g~" .. ename .. "~w~)") else - EmoteChatMessage("'"..emotename.."' "..Config.Languages[lang]['notvalidsharedemote'].."") + EmoteChatMessage("'" .. emotename .. "' " .. Config.Languages[lang]['notvalidsharedemote'] .. "") end else SimpleNotify(Config.Languages[lang]['nobodyclose']) end else - MearbysOnCommand() + MearbysOnCommand() end end, false) end @@ -33,62 +35,119 @@ RegisterNetEvent("SyncPlayEmote") AddEventHandler("SyncPlayEmote", function(emote, player) EmoteCancel() Wait(300) + targetPlayerId = player -- wait a little to make sure animation shows up right on both clients after canceling any previous emote if DP.Shared[emote] ~= nil then - if OnEmotePlay(DP.Shared[emote]) then end return + if DP.Shared[emote].AnimationOptions and DP.Shared[emote].AnimationOptions.Attachto then + -- We do not want to attach the player if the target emote already is attached to player + -- this would cause issue where both player would be attached to each other and fall under the map + local targetEmote = DP.Shared[emote][4] + if not targetEmote or not DP.Shared[targetEmote] or not DP.Shared[targetEmote].AnimationOptions or + not DP.Shared[targetEmote].AnimationOptions.Attachto then + local plyServerId = GetPlayerFromServerId(player) + local pedInFront = GetPlayerPed(plyServerId ~= 0 and plyServerId or GetClosestPlayer()) + local bone = DP.Shared[emote].AnimationOptions.bone or 11816 -- SKEL_Pelvis + local xPos = DP.Shared[emote].AnimationOptions.xPos or 0.0 + local yPos = DP.Shared[emote].AnimationOptions.yPos or 0.0 + local zPos = DP.Shared[emote].AnimationOptions.zPos or 0.0 + local xRot = DP.Shared[emote].AnimationOptions.xRot or 0.0 + local yRot = DP.Shared[emote].AnimationOptions.yRot or 0.0 + local zRot = DP.Shared[emote].AnimationOptions.zRot or 0.0 + AttachEntityToEntity(PlayerPedId(), pedInFront, bone, xPos, yPos, zPos, xRot, yRot, zRot, false, false, + false, false, 2, false) + end + end + + if OnEmotePlay(DP.Shared[emote]) then end + return elseif DP.Dances[emote] ~= nil then - if OnEmotePlay(DP.Dances[emote]) then end return + if OnEmotePlay(DP.Dances[emote]) then end + return end end) RegisterNetEvent("SyncPlayEmoteSource") AddEventHandler("SyncPlayEmoteSource", function(emote, player) -- Thx to Poggu for this part! - local pedInFront = GetPlayerPed(GetClosestPlayer()) + local ply = PlayerPedId() + local plyServerId = GetPlayerFromServerId(player) + local pedInFront = GetPlayerPed(plyServerId ~= 0 and plyServerId or GetClosestPlayer()) + local heading = GetEntityHeading(pedInFront) local coords = GetOffsetFromEntityInWorldCoords(pedInFront, 0.0, 1.0, 0.0) - if (DP.Shared[emote]) and (DP.Shared[emote].AnimationOptions) then - local SyncOffsetFront = DP.Shared[emote].AnimationOptions.SyncOffsetFront - if SyncOffsetFront then - coords = GetOffsetFromEntityInWorldCoords(pedInFront, 0.0, SyncOffsetFront, 0.0) - end + if (DP.Shared[emote] and DP.Shared[emote].AnimationOptions) then + local SyncOffsetFront = DP.Shared[emote].AnimationOptions.SyncOffsetFront + if SyncOffsetFront then + coords = GetOffsetFromEntityInWorldCoords(pedInFront, 0.0, SyncOffsetFront, 0.0) + end + + -- There is a priority to the source attached, if it is not set, it will use the target + if (DP.Shared[emote].AnimationOptions.Attachto) then + local bone = DP.Shared[emote].AnimationOptions.bone or 11816 -- SKEL_Pelvis + local xPos = DP.Shared[emote].AnimationOptions.xPos or 0.0 + local yPos = DP.Shared[emote].AnimationOptions.yPos or 0.0 + local zPos = DP.Shared[emote].AnimationOptions.zPos or 0.0 + local xRot = DP.Shared[emote].AnimationOptions.xRot or 0.0 + local yRot = DP.Shared[emote].AnimationOptions.yRot or 0.0 + local zRot = DP.Shared[emote].AnimationOptions.zRot or 0.0 + AttachEntityToEntity(ply, pedInFront, bone, xPos, yPos, zPos, xRot, yRot, zRot, false, false, false, false, + 2, false) + end end - SetEntityHeading(PlayerPedId(), heading - 180.1) - SetEntityCoordsNoOffset(PlayerPedId(), coords.x, coords.y, coords.z, 0) + SetEntityHeading(ply, heading - 180.1) + SetEntityCoordsNoOffset(ply, coords.x, coords.y, coords.z, 0) EmoteCancel() Wait(300) + targetPlayerId = player if DP.Shared[emote] ~= nil then - if OnEmotePlay(DP.Shared[emote]) then end return + if OnEmotePlay(DP.Shared[emote]) then end + return elseif DP.Dances[emote] ~= nil then - if OnEmotePlay(DP.Dances[emote]) then end return + if OnEmotePlay(DP.Dances[emote]) then end + return end end) +RegisterNetEvent("SyncCancelEmote") +AddEventHandler("SyncCancelEmote", function(player) + if targetPlayerId and targetPlayerId == player then + targetPlayerId = nil + EmoteCancel() + end +end) + +function CancelSharedEmote(ply) + if targetPlayerId then + TriggerServerEvent("ServerEmoteCancel", targetPlayerId) + targetPlayerId = nil + end +end + RegisterNetEvent("ClientEmoteRequestReceive") AddEventHandler("ClientEmoteRequestReceive", function(emotename, etype) isRequestAnim = true requestedemote = emotename if etype == 'Dances' then - _,_,remote = table.unpack(DP.Dances[requestedemote]) + _, _, remote = table.unpack(DP.Dances[requestedemote]) else - _,_,remote = table.unpack(DP.Shared[requestedemote]) + _, _, remote = table.unpack(DP.Shared[requestedemote]) end PlaySound(-1, "NAV", "HUD_AMMO_SHOP_SOUNDSET", 0, 0, 1) - SimpleNotify(Config.Languages[lang]['doyouwanna']..remote.."~w~)") + SimpleNotify(Config.Languages[lang]['doyouwanna'] .. remote .. "~w~)") end) Citizen.CreateThread(function() while true do Citizen.Wait(5) if IsControlJustPressed(1, 246) and isRequestAnim then - target, distance = GetClosestPlayer() - if(distance ~= -1 and distance < 3) then + target, distance = GetClosestPlayer() + if (distance ~= -1 and distance < 3) then if DP.Shared[requestedemote] ~= nil then - _,_,_,otheremote = table.unpack(DP.Shared[requestedemote]) + _, _, _, otheremote = table.unpack(DP.Shared[requestedemote]) elseif DP.Dances[requestedemote] ~= nil then - _,_,_,otheremote = table.unpack(DP.Dances[requestedemote]) + _, _, _, otheremote = table.unpack(DP.Dances[requestedemote]) end if otheremote == nil then otheremote = requestedemote end TriggerServerEvent("ServerValidEmote", GetPlayerServerId(target), requestedemote, otheremote) @@ -108,7 +167,7 @@ end) ----------------------------------------------------------------------------------------------------- function GetPlayerFromPed(ped) - for _,player in ipairs(GetActivePlayers()) do + for _, player in ipairs(GetActivePlayers()) do if GetPlayerPed(player) == ped then return player end @@ -121,39 +180,41 @@ function GetPedInFront() local plyPed = GetPlayerPed(player) local plyPos = GetEntityCoords(plyPed, false) local plyOffset = GetOffsetFromEntityInWorldCoords(plyPed, 0.0, 1.3, 0.0) - local rayHandle = StartShapeTestCapsule(plyPos.x, plyPos.y, plyPos.z, plyOffset.x, plyOffset.y, plyOffset.z, 10.0, 12, plyPed, 7) + local rayHandle = StartShapeTestCapsule(plyPos.x, plyPos.y, plyPos.z, plyOffset.x, plyOffset.y, plyOffset.z, 10.0, 12 + , plyPed, 7) local _, _, _, _, ped2 = GetShapeTestResult(rayHandle) return ped2 end function MearbysOnCommand(source, args, raw) - local NearbysCommand = "" - for a in pairsByKeys(DP.Shared) do - NearbysCommand = NearbysCommand .. ""..a..", " - end - EmoteChatMessage(NearbysCommand) - EmoteChatMessage(Config.Languages[lang]['emotemenucmd']) + local NearbysCommand = "" + for a in pairsByKeys(DP.Shared) do + NearbysCommand = NearbysCommand .. "" .. a .. ", " + end + EmoteChatMessage(NearbysCommand) + EmoteChatMessage(Config.Languages[lang]['emotemenucmd']) end function SimpleNotify(message) SetNotificationTextEntry("STRING") AddTextComponentString(message) - DrawNotification(0,1) + DrawNotification(0, 1) end function GetClosestPlayer() local players = GetPlayers() local closestDistance = -1 local closestPlayer = -1 - local ply = GetPlayerPed(-1) + local ply = PlayerPedId() local plyCoords = GetEntityCoords(ply, 0) - for index,value in ipairs(players) do + for index, value in ipairs(players) do local target = GetPlayerPed(value) - if(target ~= ply) then + if (target ~= ply) then local targetCoords = GetEntityCoords(GetPlayerPed(value), 0) - local distance = GetDistanceBetweenCoords(targetCoords["x"], targetCoords["y"], targetCoords["z"], plyCoords["x"], plyCoords["y"], plyCoords["z"], true) - if(closestDistance == -1 or closestDistance > distance) then + local distance = GetDistanceBetweenCoords(targetCoords["x"], targetCoords["y"], targetCoords["z"], + plyCoords["x"], plyCoords["y"], plyCoords["z"], true) + if (closestDistance == -1 or closestDistance > distance) then closestPlayer = value closestDistance = distance end @@ -172,4 +233,4 @@ function GetPlayers() end return players -end \ No newline at end of file +end diff --git a/resources/EmoteMenu/Client/Walk.lua b/resources/EmoteMenu/Client/Walk.lua index 3436cf844..e5f1e6750 100644 --- a/resources/EmoteMenu/Client/Walk.lua +++ b/resources/EmoteMenu/Client/Walk.lua @@ -1,36 +1,41 @@ function WalkMenuStart(name) - RequestWalking(name) - SetPedMovementClipset(PlayerPedId(), name, 0.2) - RemoveAnimSet(name) + RequestWalking(name) + SetPedMovementClipset(PlayerPedId(), name, 0.2) + RemoveAnimSet(name) end function RequestWalking(set) - RequestAnimSet(set) - while not HasAnimSetLoaded(set) do - Citizen.Wait(1) - end + RequestAnimSet(set) + while not HasAnimSetLoaded(set) do + Citizen.Wait(1) + end end function WalksOnCommand(source, args, raw) - local WalksCommand = "" - for a in pairsByKeys(DP.Walks) do - WalksCommand = WalksCommand .. ""..string.lower(a)..", " - end - EmoteChatMessage(WalksCommand) - EmoteChatMessage("To reset do /walk reset") + local WalksCommand = "" + for a in pairsByKeys(DP.Walks) do + WalksCommand = WalksCommand .. "" .. string.lower(a) .. ", " + end + EmoteChatMessage(WalksCommand) + EmoteChatMessage("To reset do /walk reset") end function WalkCommandStart(source, args, raw) - local name = firstToUpper(args[1]) + local name = firstToUpper(args[1]) - if name == "Reset" then - ResetPedMovementClipset(PlayerPedId()) return - end + if name == "Reset" then + ResetPedMovementClipset(PlayerPedId()) + return + end - local name2 = table.unpack(DP.Walks[name]) - if name2 ~= nil then - WalkMenuStart(name2) - else - EmoteChatMessage("'"..name.."' is not a valid walk") - end -end \ No newline at end of file + if tableHasKey(DP.Walks, name) then + local name2 = table.unpack(DP.Walks[name]) + WalkMenuStart(name2) + else + EmoteChatMessage("'" .. name .. "' is not a valid walk") + end +end + +function tableHasKey(table, key) + return table[key] ~= nil +end diff --git a/resources/EmoteMenu/Config.lua b/resources/EmoteMenu/Config.lua index 2e1b745a3..513693af5 100644 --- a/resources/EmoteMenu/Config.lua +++ b/resources/EmoteMenu/Config.lua @@ -1,40 +1,44 @@ Config = { --- Change the language of the menu here!. --- Note fr and de are google translated, if you would like to help out with translation / just fix it for your server check below and change translations yourself --- try en, fr, de or sv. - MenuLanguage = 'en', --- Set this to true to enable some extra prints - DebugDisplay = false, --- Set this to false if you have something else on X, and then just use /e c to cancel emotes. - EnableXtoCancel = true, --- Set this to true if you want to disarm the player when they play an emote. - DisarmPlayer= false, --- Set this if you really wanna disable emotes in cars, as of 1.7.2 they only play the upper body part if in vehicle + -- Change the language of the menu here!. + -- Note fr and de are google translated, if you would like to help out with translations, feel free to send me an 'issue' on Github. + -- Thank you to those who provided translations. + -- + + MenuLanguage = 'en', + -- Set this to true to enable some extra prints + DebugDisplay = false, + -- Set this to false if you have something else on X, and then just use /e c to cancel emotes. + EnableXtoCancel = true, + -- Set this to true if you want to disarm the player when they play an emote. + DisarmPlayer = false, + -- Set this if you really wanna disable emotes in cars, as of 1.7.2 they only play the upper body part if in vehicle AllowedInCars = true, --- You can disable the (F3) menu here / change the keybind. - MenuKeybindEnabled = true, - MenuKeybind = 167, -- Get the button number here https://docs.fivem.net/game-references/controls/ --- You can disable the Favorite emote keybinding here. - FavKeybindEnabled = false, - FavKeybind = 171, -- Get the button number here https://docs.fivem.net/game-references/controls/ --- You can change the header image for the f3 menu here --- Use a 512 x 128 image! --- NOte this might cause an issue of the image getting stuck on peoples screens - CustomMenuEnabled = false, - MenuImage = "https://i.imgur.com/kgzvDwQ.png", --- You can change the menu position here - MenuPosition = "right", -- (left, right) --- You can disable the Ragdoll keybinding here. - RagdollEnabled = true, - RagdollKeybind = 303, -- Get the button number here https://docs.fivem.net/game-references/controls/ --- You can disable the Facial Expressions menu here. - ExpressionsEnabled = true, --- You can disable the Walking Styles menu here. - WalkingStylesEnabled = true, --- You can disable the Shared Emotes here. + -- You can disable the menu here / change the keybind. It is currently set to F3 + MenuKeybindEnabled = false, + MenuKeybind = 'DELETE', -- Get the button string here https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ + -- You can disable the Favorite emote keybinding here. + FavKeybindEnabled = false, + FavKeybind = 256, -- Get the button number here https://docs.fivem.net/game-references/controls/ + -- You can change the header image for the menu here + -- Use a 512 x 128 image! + -- Note this might cause an issue of the image getting stuck on peoples screens + CustomMenuEnabled = true, + MenuImage = "https://i.imgur.com/SLuIdBo.png", ----[Custom banner imgur URLs go here ]--- + -- You can change the menu image by pasting a link above. It must be the same width and length + -- + -- You can change the menu position here + MenuPosition = "right", -- (left, right) + -- You can enable or disable the Ragdoll keybinding here. + RagdollEnabled = true, + RagdollKeybind = 303, -- Get the button number here https://docs.fivem.net/game-references/controls/ + -- You can disable the Facial Expressions menu here. + ExpressionsEnabled = true, + -- You can disable the Walking Styles menu here. + WalkingStylesEnabled = true, + -- You can disable the Shared Emotes here. SharedEmotesEnabled = true, - CheckForUpdates = true, --- If you have the SQL imported enable this to turn on keybinding. + CheckForUpdates = false, + -- If you have the SQL imported enable this to turn on keybinding. SqlKeybinding = false, } @@ -48,9 +52,10 @@ Config.KeybindKeys = { } Config.Languages = { - ['en'] = { - ['emotes'] = 'Emotes', + ['en'] = { -- English 🇬🇧 + ['emotes'] = 'Emotes 🎬', ['danceemotes'] = "🕺 Dance Emotes", + ['animalemotes'] = "🐩 Animal Emotes", ['propemotes'] = "📦 Prop Emotes", ['favoriteemotes'] = "🌟 Favorite", ['favoriteinfo'] = "Select an emote here to set it as your favorite.", @@ -59,17 +64,17 @@ Config.Languages = { ['set'] = "Set (", ['setboundemote'] = ") to be your bound emote?", ['newsetemote'] = "~w~ is now your bound emote, press ~g~CapsLock~w~ to use it.", - ['cancelemote'] = "Cancel Emote", + ['cancelemote'] = "Cancel Emote 🚷", ['cancelemoteinfo'] = "~r~X~w~ Cancels the currently playing emote", - ['walkingstyles'] = "Walking Styles", + ['walkingstyles'] = "Walking Styles 🚶🏻‍♂️", ['resetdef'] = "Reset to default", ['normalreset'] = "Normal (Reset)", - ['moods'] = "Moods", - ['infoupdate'] = "Information", + ['moods'] = "Moods 😒", + ['infoupdate'] = "Credits & Suggestions 🙏🏻", ['infoupdateav'] = "Information (Update available)", - ['infoupdateavtext'] = "An update is available, get the latest version from ~y~https://github.com/andristum/dpemotes~w~", + ['infoupdateavtext'] = "An update is available, get the latest version from ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", ['suggestions'] = "Suggestions?", - ['suggestionsinfo'] = "'dullpear_dev' on FiveM forums for any feature/emote suggestions! ✉️", + ['suggestionsinfo'] = "'TayMcKenzieNZ' on FiveM forums for any feature/emote suggestions! ✉️", ['notvaliddance'] = "is not a valid dance.", ['notvalidemote'] = "is not a valid emote.", ['nocancel'] = "No emote to cancel.", @@ -88,63 +93,115 @@ Config.Languages = { ['makeitrain'] = "Press ~y~G~w~ to make it rain.", ['pee'] = "Hold ~y~G~w~ to pee.", ['spraychamp'] = "Hold ~y~G~w~ to spray champagne", + ['stun'] = "Press ~y~G~w~ to 'use' stun gun.", ['bound'] = "Bound ", ['to'] = "to", ['currentlyboundemotes'] = " Currently bound emotes:", ['notvalidkey'] = "is not a valid key.", ['keybinds'] = "🔢 Keybinds", ['keybindsinfo'] = "Use" - }, - ['fr'] = { - ['emotes'] = 'Emotes', - ['danceemotes'] = "🕺 Emotes de danse", - ['propemotes'] = "📦 Em Prop Emotes", + }, + ['cs'] = { -- Czech 🇨🇿 + ['emotes'] = 'Animace 🎬', + ['danceemotes'] = "🕺 Taneční Animace", + ['animalemotes'] = "🐩 zvířecí Animace", + ['propemotes'] = "📦 Animace s předměty", + ['favoriteemotes'] = "🌟 Oblíbené", + ['favoriteinfo'] = "Vyberte si animaci a nastavte ji jako svou oblíbenou.", + ['rfavorite'] = "Obnovit oblíbené", + ['prop2info'] = "❓ Pomůcky se mohou nacházet na konci", + ['set'] = "Nastavit", + ['setboundemote'] = "Nastavit jako vaši animaci?", + ['newsetemote'] = "~w~ je nyní vaší novou nastavenou animací. Chcete-li jej použít, stiskněte ~g~CapsLock~w~.", + ['cancelemote'] = "Zrušit animaci 🚷", + ['cancelemoteinfo'] = "~r~X~w~ Zruší aktuálně přehrávanou animaci", + ['walkingstyles'] = "Styly chůze 🚶🏻‍♂️", + ['resetdef'] = "Obnovit do základního nastavení", + ['normalreset'] = "Neutrální výraz", + ['moods'] = "Výrazy 😒", + ['infoupdate'] = "Kredity a nápady 🙏🏻", + ['infoupdateav'] = "Informace (aktualizace dostupná)", + ['infoupdateavtext'] = "Je k dispozici aktualizace, stáhněte si nejnovější verzi z ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", + ['suggestions'] = "Nápady?", + ['suggestionsinfo'] = "'TayMcKenzieNZ' na FiveM forums je pro jakýkoliv návrh! ✉️", + ['notvaliddance'] = "Není platný tanec.", + ['notvalidemote'] = "Není platná animace.", + ['nocancel'] = "Žádné animace ke zrušení.", + ['maleonly'] = "Tato emoce je pouze pro muže, omlouvám se!", + ['emotemenucmd'] = "Použíj /emotemenu pro otevření menu.", + ['shareemotes'] = "👫 Sdílené animace", + ['shareemotesinfo'] = "Pozvěte osobu v okolí, k tanci", + ['sharedanceemotes'] = "🕺 Sdílený tanece", + ['notvalidsharedemote'] = "Není platný Sdílený tanec.", + ['sentrequestto'] = "Odeslal jsi ~y~ žádost o tanec ", + ['nobodyclose'] = "Nikdo ~r~není~w~ v dostatečné blízkosti.", + ['doyouwanna'] = "~y~Y~w~ pro příjmutí, ~r~L~w~ pro odmitnutí (~g~", + ['refuseemote'] = "Emote odmítnut.", + ['makenearby'] = "nechat hráče poblíž hrát", + ['camera'] = "Stiskni ~y~G~w~ pro použítí blesku u fotoaparátu.", + ['makeitrain'] = "Stiskni ~y~G~w~ pro spuštení deště.", + ['pee'] = "Podrž ~y~G~w~ pro čůraní.", + ['spraychamp'] = "Podrž ~y~G~w~ pro stříkaní šampaňského", + ['stun'] = "Stiskni ~y~G~w~ pro 'použití' paralyzéru.", + ['bound'] = "Bound ", + ['to'] = "na", + ['currentlyboundemotes'] = "Momentálně nastavené animace:", + ['notvalidkey'] = "Není platná klávesa.", + ['keybinds'] = "🔢 Klávesové Zkratky", + ['keybindsinfo'] = "Use" + }, + ['fr'] = { -- French 🇫🇷 + ['emotes'] = 'Emotes 🎬', + ['danceemotes'] = "🕺 Danses", + ['animalemotes'] = "🐩 Emotes d'animaux", + ['propemotes'] = "📦 Emotes objet", ['favoriteemotes'] = "🌟 Favori", - ['favoriteinfo'] = "Définir un emote comme favori.", - ['rfavorite'] = "réinitialiser le favori.", - ['prop2info'] = "❓ Prop Emotes peuvent être situés à la fin", - ['set'] = "Set (", - ['setboundemote'] = ") pour être votre emote lié?", - ['newsetemote'] = "~w~ est maintenant votre emote liée, appuyez sur ~g~CapsLock~w~ pour l'utiliser.", - ['cancelemote'] = "Annuler Emote", - ['cancelemoteinfo'] = "~r~X~w~ Annule l'emote en cours de lecture", - ['walkingstyles'] = "Styles de marche", + ['favoriteinfo'] = "Définir une emote comme favori.", + ['rfavorite'] = "Réinitialiser le favori.", + ['prop2info'] = "❓ Les emotes d'objet peuvent être à la fin", + ['set'] = "Mettre (", + ['setboundemote'] = ") en emote favorite?", + ['newsetemote'] = "~w~ est maintenant votre emote favorite, appuyez sur ~g~CapsLock~w~ pour l'utiliser.", + ['cancelemote'] = "Annuler Emote 🚷", + ['cancelemoteinfo'] = "~r~X~w~ Annule l'emote en cours", + ['walkingstyles'] = "Styles de marche 🚶🏻‍♂️", ['resetdef'] = "Réinitialiser aux valeurs par défaut", ['normalreset'] = "Normal (réinitialiser)", - ['moods'] = "Humeurs", - ['infoupdate'] = "Information", + ['moods'] = "Humeurs 😒", + ['infoupdate'] = "Crédits et suggestions 🙏🏻", ['infoupdateav'] = "Information (Mise à jour disponible)", - ['infoupdateavtext'] = "Une mise à jour est disponible ~y~https://github.com/andristum/dpemotes~w~", + ['infoupdateavtext'] = "Une mise à jour est disponible ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", ['suggestions'] = "Suggestions?", - ['suggestionsinfo'] = "'dullpear_dev' sur les forums FiveM pour toutes les suggestions de fonction / emote! ✉️", - ['notvaliddance'] = "n'est pas une danse valide", - ['notvalidemote'] = "n'est pas un emote valide", + ['suggestionsinfo'] = "'TayMcKenzieNZ' sur les forums FiveM pour toutes les suggestions! ✉️", + ['notvaliddance'] = "n'est pas une danse valide", + ['notvalidemote'] = "n'est pas une emote valide", ['nocancel'] = "Pas d'emote à annuler", ['maleonly'] = "Cet emote est réservé aux hommes, désolé!", - ['emotemenucmd'] = "Do /emotemenu pour un menu", - ['shareemotes'] = "👫 Em Emotes partagées", - ['shareemotesinfo'] = "Inviter une personne proche à emoter", + ['emotemenucmd'] = "Fait /emotemenu pour ouvrir le menu", + ['shareemotes'] = "👫 Emotes partagées", + ['shareemotesinfo'] = "Invite une personne proche à faire une emote avec toi", ['sharedanceemotes'] = "🕺 Dances partagées", - ['notvalidsharedemote'] = "n'est pas un emote partagé valide.", + ['notvalidsharedemote'] = "n'est pas un emote partagée valide.", ['sentrequestto'] = "Demande envoyée à ~g~", - ['nobodyclose'] = "Personne assez proche.", + ['nobodyclose'] = "Personne n'esst assez proche.", ['doyouwanna'] = "~y~Y~w~ accepter, ~r~L~w~ refuser (~g~", ['refuseemote'] = "Emote refusée.", ['makenearby'] = "fait jouer le joueur à proximité", - ['camera'] = "Presse ~y~G~w~ utiliser le flash de l'appareil.", - ['makeitrain'] = "Presse ~y~G~w~ jeter de l'argent.", - ['pee'] = "Tenir ~y~G~w~ faire pipi.", - ['spraychamp'] = "Tenir ~y~G~w~ vaporiser du champagne.", + ['camera'] = "Presse ~y~G~w~ pour utiliser le flash de l'appareil.", + ['makeitrain'] = "Presse ~y~G~w~ pour jeter de l'argent.", + ['pee'] = "Tenir ~y~G~w~ pour faire pipi.", + ['spraychamp'] = "Tenir ~y~G~w~ pour vaporiser du champagne.", ['bound'] = "Liée ", ['to'] = "à", - ['currentlyboundemotes'] = " Emotes actuellement liés:", + ['currentlyboundemotes'] = " Emotes actuellement liées:", ['notvalidkey'] = "n'est pas une clé valide.", - ['keybinds'] = "🔢 Liens Clés", - ['keybindsinfo'] = "Use" - }, - ['de'] = { - ['emotes'] = 'Emotes', + ['keybinds'] = "🔢 Raccourcis clavier", + ['keybindsinfo'] = "Utilise" + }, + ['de'] = { -- German 🇩🇪 + ['emotes'] = 'Emotes 🎬', ['danceemotes'] = "🕺 Tanz-Emotes", + ['animalemotes'] = "🐩 Animal Emotes", ['propemotes'] = "📦 Prop-Emotes", ['favoriteemotes'] = "🌟 Favorit", ['favoriteinfo'] = "Wählen Sie hier ein Emote aus, um es als gebundenes Emote festzulegen.", @@ -153,17 +210,17 @@ Config.Languages = { ['set'] = "Set (", ['setboundemote'] = ") soll dein gebundenes Emote sein?", ['newsetemote'] = "~w~ ist jetzt dein gebundenes Emote, drücke ~g~CapsLock~w~, um es zu verwenden.", - ['cancelemote'] = "Emote abbrechen", + ['cancelemote'] = "Emote abbrechen 🚷", ['cancelemoteinfo'] = "~r~ X ~w~ Bricht das aktuell wiedergegebene Emote ab", - ['walkingstyles'] = "Gehstile", + ['walkingstyles'] = "Gehstile 🚶🏻‍♂️", ['resetdef'] = "Auf Standard zurücksetzen", ['normalreset'] = "Normal (Zurücksetzen)", - ['moods'] = "Stimmungen", - ['infoupdate'] = "Information", + ['moods'] = "Stimmungen 😒", + ['infoupdate'] = "Credits und Dank 🙏🏻", ['infoupdateav'] = "Information (Update verfügbar)", - ['infoupdateavtext'] = "Eine Aktualisierung ist verfügbar ~y~https://github.com/andristum/dpemotes~w~", + ['infoupdateavtext'] = "Eine Aktualisierung ist verfügbar ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", ['suggestions'] = "Vorschläge?", - ['suggestionsinfo'] = "'dullpear_dev' in FiveM-Foren für alle Feature- / Emote-Vorschläge! ✉️", + ['suggestionsinfo'] = "'TayMcKenzieNZ' in FiveM-Foren für alle Feature- / Emote-Vorschläge! ✉️", ['notvaliddance'] = "ist kein gültiger Tanz", ['notvalidemote'] = "ist kein gültiges Emote", ['nocancel'] = "Kein Emote zum Abbrechen", @@ -175,7 +232,7 @@ Config.Languages = { ['notvalidsharedemote'] = "ist kein gültiges geteiltes Emote.", ['sentrequestto'] = "Gesendete Anfrage an ~g~", ['nobodyclose'] = "Niemand ist nah genug dran.", - ['doyouwanna'] = "~y~Y~w~ zu akzeptieren, ~r~L~w~ zu verweigern (~g~", + ['doyouwanna'] = "~y~Z~w~ zu akzeptieren, ~r~L~w~ zu verweigern (~g~", ['refuseemote'] = "Emote abgelehnt.", ['makenearby'] = "Lässt den Spieler in der Nähe spielen", ['camera'] = "Drücken ~y~G~w~ Kamerablitz verwenden.", @@ -188,10 +245,11 @@ Config.Languages = { ['notvalidkey'] = "ist kein gültiger schlüssel.", ['keybinds'] = "🔢 Tastenkombinationen", ['keybindsinfo'] = "verwenden" - }, - ['sv'] = { - ['emotes'] = 'Emotes', + }, + ['sv'] = { -- Swedish 🇸🇪 + ['emotes'] = 'Emotes 🎬', ['danceemotes'] = "🕺 Dans Emotes", + ['animalemotes'] = "🐩 Animal Emotes", ['propemotes'] = "📦 Objekt Emotes", ['favoriteemotes'] = "🌟 Favorit", ['favoriteinfo'] = "Välj en emote här för att ställa in den som din favorit emote.", @@ -200,17 +258,17 @@ Config.Languages = { ['set'] = "Sätt (", ['setboundemote'] = ") till din favorit emote?", ['newsetemote'] = "~w~ är nu din favorit emote, tryck ~g~CapsLock~w~ för att använda den.", - ['cancelemote'] = "Avbryt Emote", + ['cancelemote'] = "Avbryt Emote 🚷", ['cancelemoteinfo'] = "~r~X~w~ Avbryter det emote som för närvarande används.", - ['walkingstyles'] = "Walking Stil", + ['walkingstyles'] = "Walking Stil 🚶🏻‍♂️", ['resetdef'] = "Återställ till standard", ['normalreset'] = "Normal (Återställ)", - ['moods'] = "Humör", - ['infoupdate'] = "Information", + ['moods'] = "Humör 😒", + ['infoupdate'] = "Krediter Och Förslag 🙏🏻", ['infoupdateav'] = "Information (Uppdatering tillgänglig)", - ['infoupdateavtext'] = "En uppdatering är tillgänglig ~y~https://github.com/andristum/dpemotes~w~", + ['infoupdateavtext'] = "En uppdatering är tillgänglig ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", ['suggestions'] = "Förslag?", - ['suggestionsinfo'] = "'dullpear_dev' på FiveM-forum för alla funktioner/emote-förslag! ✉️", + ['suggestionsinfo'] = "'TayMcKenzieNZ' på FiveM-forum för alla funktioner/emote-förslag! ✉️", ['notvaliddance'] = "är inte en giltig dans", ['notvalidemote'] = "är inte en giltig emote", ['nocancel'] = "Ingen emote att avbryta", @@ -235,29 +293,30 @@ Config.Languages = { ['notvalidkey'] = "är inte en giltig tangent.", ['keybinds'] = "🔢 Keybinds", ['keybindsinfo'] = "Använd" - }, - ['es'] = { - ['emotes'] = "Animaciones", + }, + ['es'] = { -- Spanish 🇪🇸 + ['emotes'] = "Animaciones 🎬", ['danceemotes'] = "🕺 Bailes", + ['animalemotes'] = "🐩 Emotes de animales", ['propemotes'] = "📦 Objetos", - ['keybindemotes'] = "🌟 Favorita", - ['keybindinfo'] = "Selecciona una animacion como su favorita.", - ['rkeybind'] = "Reiniciar favorito", - ['prop2info'] = "❓ Animaciones de objetos al final.", + ['favoriteemotes'] = "🌟 Favoritos", + ['favoriteinfo'] = "Seleccione un emoticón aquí para configurarlo como su favorito.", + ['rfavorite'] = "Restablecer favorito", + ['prop2info'] = "❓ Prop Emotes se pueden ubicar al final", ['set'] = "Elegir (", ['setboundemote'] = ") como tu animacion favorita?", ['newsetemote'] = "~w~ es ahora tu animacion favorita, presiona ~g~[CapsLock]~w~ para usarla.", - ['cancelemote'] = "Cancelar animacion", + ['cancelemote'] = "Cancelar animacion 🚷", ['cancelemoteinfo'] = "~r~X~w~ Cancela la animacion actual.", - ['walkingstyles'] = "Formas de caminar", + ['walkingstyles'] = "Formas de caminar 🚶🏻‍♂️", ['resetdef'] = "Reiniciar a por defecto", ['normalreset'] = "Normal (Reiniciar)", - ['moods'] = "Estados de animo", - ['infoupdate'] = "Informacion", + ['moods'] = "Estados de animo 😒", + ['infoupdate'] = "Créditos Y Sugerencias 🙏🏻", ['infoupdateav'] = "Informacion (Actualizacion disponible)", - ['infoupdateavtext'] = "Una actualizacion esta disponible, para conseguir la ultima version ingresa a ~y~https://github.com/andristum/dpemotes~w~", + ['infoupdateavtext'] = "Una actualizacion esta disponible, para conseguir la ultima version ingresa a ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", ['suggestions'] = "Sugerencias?", - ['suggestionsinfo'] = "dullpear_dev' en el foro de FiveM para cualquier sugerencia! ✉️", + ['suggestionsinfo'] = "TayMcKenzieNZ' en el foro de FiveM para cualquier sugerencia! ✉️", ['notvaliddance'] = "no es un baile valido.", ['notvalidemote'] = "no es una animacion valida.", ['nocancel'] = "No hay animacion para cancelar.", @@ -282,5 +341,249 @@ Config.Languages = { ['notvalidkey'] = "no es una clave válida.", ['keybinds'] = "🔢 Keybinds", ['keybindsinfo'] = "Utilizar" - } -} \ No newline at end of file + }, + ['nl'] = { -- Dutch 🇳🇱 + ['emotes'] = 'Animaties 🎬', + ['danceemotes'] = "🕺 Dans Animaties", + ['animalemotes'] = "🐩 Dier Animaties", + ['propemotes'] = "📦 Prop Animaties", + ['favoriteemotes'] = "🌟 Favorieten", + ['favoriteinfo'] = "Selecteer hier een animatie om deze als favoriete in te stellen.", + ['rfavorite'] = "Reset Favorieten", + ['prop2info'] = "❓ Prop animaties staan aan het einde.", + ['set'] = "Maak (", + ['setboundemote'] = ") je toegewezen animatie?", + ['newsetemote'] = "~w~ is nu je toegewezen animatie, druk op ~g~CapsLock~w~ om hem te gebruiken.", + ['cancelemote'] = "Stop Animatie 🚷", + ['cancelemoteinfo'] = "~r~X~w~ Stopt je huidige animatie", + ['walkingstyles'] = "Loopjes 🚶🏻‍♂️", + ['resetdef'] = "Reset naar standaard", + ['normalreset'] = "Normaal (Reset)", + ['moods'] = "Stemmingen 😒", + ['infoupdate'] = "Credits en bedankt 🙏🏻", + ['infoupdateav'] = "Informatie (Update beschikbaar)", + ['infoupdateavtext'] = "Een update is beschikbaar, download de laatste versie via ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", + ['suggestions'] = "Suggesties?", + ['suggestionsinfo'] = "'TayMcKenzieNZ' op de FiveM forums om suggesties in te dienen! ✉️", + ['notvaliddance'] = "Is geen geldige dans.", + ['notvalidemote'] = "Is geen geldige animatie.", + ['nocancel'] = "Er is geen animatie om te annuleren.", + ['maleonly'] = "Deze animatie is alleen voor mannen, sorry!", + ['emotemenucmd'] = "Doe /emotemenu voor het animatiemenu.", + ['shareemotes'] = "👫 Gedeelde Animaties", + ['shareemotesinfo'] = "Nodig een persoon in de buurt uit om een animatie te doen.", + ['sharedanceemotes'] = "🕺 Gedeelde Dansjes", + ['notvalidsharedemote'] = "Is geen geldige gedeelde animatie.", + ['sentrequestto'] = "Verzoek gestuurd naar ~y~", + ['nobodyclose'] = "Er is niemand ~r~dichtbij~w~ genoeg.", + ['doyouwanna'] = "~y~Y~w~ om te accepteren, ~r~L~w~ om te weigeren (~g~", + ['refuseemote'] = "Animatie geweigerd.", + ['makenearby'] = "laat de dichtstbijzijnde persoon de animatie doen", + ['camera'] = "Druk op ~y~G~w~ om de flitser te gebruiken..", + ['makeitrain'] = "Druk op ~y~G~w~ om geld te gooien.", + ['pee'] = "Druk op ~y~G~w~ om te plassen.", + ['spraychamp'] = "Druk op ~y~G~w~ om batra's te spuiten.", + ['stun'] = "Druk op ~y~G~w~ om de taser te 'gebruiken'.", + ['bound'] = "Gebonden ", + ['to'] = "aan", + ['currentlyboundemotes'] = " Huidig gebonden animaties:", + ['notvalidkey'] = "Is geen geldige knop.", + ['keybinds'] = "🔢 Keybinds", + ['keybindsinfo'] = "Gebruik" + }, + ['pt'] = { -- Brazilian Portuguese 🇧🇷 + ['emotes'] = 'Emotes 🎬', + ['danceemotes'] = "🕺 Emotes de Danças", + ['animalemotes'] = "🐩 Emotes de Animais", + ['propemotes'] = "📦 Emotes com Props", + ['favoriteemotes'] = "🌟 Favoritos", + ['favoriteinfo'] = "Selecione um emote para colocá-lo nos seus favoritos", + ['rfavorite'] = "Limpar favoritos", + ['prop2info'] = "❓ Emotes de props podem ser localizados no fim", + ['set'] = "Set (", + ['setboundemote'] = ") para ser seu emote vinculado?", + ['newsetemote'] = "~w~ é o seu emote vinculado, pressione ~g~CapsLock~w~ para usá-lo", + ['cancelemote'] = "Cancelar emote 🚷", + ['cancelemoteinfo'] = "~r~X~w~ Cancela os emotes rodando atualmente", + ['walkingstyles'] = "Estilos de Caminhada 🚶🏻‍♂️", + ['resetdef'] = "Resetar para o padrão", + ['normalreset'] = "Normal (Resetar)", + ['moods'] = "Humores 😒", + ['infoupdate'] = "Crédito e agradecimento 🙏🏻", + ['infoupdateav'] = "Informação (Atualização disponível)", + ['infoupdateavtext'] = "Uma atualização disponível, veja ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~ para pegar", + ['suggestions'] = "Sugestões?", + ['suggestionsinfo'] = "'TayMcKenzieNZ' no fórum do FiveM para qualquer sugestão de recurso/emotes! ✉️", + ['notvaliddance'] = "não é uma dança válida.", + ['notvalidemote'] = "não é um emote válido.", + ['nocancel'] = "Nenhum emote para cancelar", + ['maleonly'] = "Este emote é para homens, desculpe!", + ['emotemenucmd'] = "Faça /emotemenu para abrir o menu.", + ['shareemotes'] = "👫 Emotes compartilhados", + ['shareemotesinfo'] = "Convide uma pessoa próxima para para realizar a animação", + ['sharedanceemotes'] = "🕺 Danças compartilhadas", + ['notvalidsharedemote'] = "não é um emote compartilhado válido.", + ['sentrequestto'] = "Enviar solicitação para ~y~", + ['nobodyclose'] = "Ninguém próximo o ~r~rsuficiente~w~.", + ['doyouwanna'] = "~y~Y~w~ para aceitar, ~r~L~w~ para recursar (~g~", + ['refuseemote'] = "Emote recursado", + ['makenearby'] = "Faz o jogador próximo participar", + ['camera'] = "Pressione ~y~G~w~ para usar o flash da câmera", + ['makeitrain'] = "Pressione ~y~G~w~ para fazer chover.", + ['pee'] = "Mantenha pressionado ~y~G~w~ para fazer xixi.", + ['spraychamp'] = "Mantenha pressionado ~y~G~w~ jogar champagne", + ['stun'] = "Press ~y~G~w~ to 'use' stun gun.", + ['bound'] = "Vinculado ", + ['to'] = "para", + ['currentlyboundemotes'] = "Emotes atualmente vinculados: ", + ['notvalidkey'] = "isto não é uma chave válida", + ['keybinds'] = "🔢 Keybinds", + ['keybindsinfo'] = "Usar" + }, + ['it'] = { -- Italian 🇮🇹 + ['emotes'] = 'Animazioni 🎬', + ['danceemotes'] = "🕺 Animazioni Di Danza", + ['animalemotes'] = "🐩 Animazioni Di Animali", + ['propemotes'] = "📦 Animazioni Prop", + ['favoriteemotes'] = "🌟 Emote preferite", + ['favoriteinfo'] = "Seleziona un'animazione per metterla nei preferiti.", + ['rfavorite'] = "Rimuovi preferito", + ['prop2info'] = "❓ Le animazioni Prop possono essere trovate in fondo.", + ['set'] = "Imposta (", + ['setboundemote'] = ") come tua animazione corrente?", + ['newsetemote'] = "~w~ è ora la tua animazione corrente, premi ~g~CapsLock~w~ per usarla.", + ['cancelemote'] = "Annulla animazione 🚷", + ['cancelemoteinfo'] = "~r~X~w~ Cancella l'animazione in corso.", + ['walkingstyles'] = "Stili di camminata 🚶🏻‍♂️", + ['resetdef'] = "Ripristina predefiniti", + ['normalreset'] = "Normale (Reset)", + ['moods'] = "Umori 😒", + ['infoupdate'] = "Crediti e grazie 🙏🏻", + ['infoupdateav'] = "Informazioni (Aggiornamento disponibile)", + ['infoupdateavtext'] = "Un aggiornamento è disponibile, ottieni l'ulima versione qui ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", + ['suggestions'] = "Suggerimenti?", + ['suggestionsinfo'] = "'TayMcKenzieNZ' nei forum di FiveM per suggerimenti su funzionalitá/animazioni! ✉️", + ['notvaliddance'] = "non è un ballo valido.", + ['notvalidemote'] = "non è un'animazione valida.", + ['nocancel'] = "Nessun'animazione da cancellare.", + ['maleonly'] = "Quest'animazione è solo maschile!", + ['emotemenucmd'] = "Esegui /emotemenu per aprire il menù.", + ['shareemotes'] = "👫 Animazioni di coppia", + ['shareemotesinfo'] = "Invita un giocatore vicino ad un'animazione", + ['sharedanceemotes'] = "🕺 Balli di coppia", + ['notvalidsharedemote'] = "non è un'animazione di coppia valida.", + ['sentrequestto'] = "Richiesta mandata a ~y~", + ['nobodyclose'] = "Nessun giocatore abbastanza ~r~vicino~w~.", + ['doyouwanna'] = "~y~Y~w~ per accettare, ~r~L~w~ per rifiutare (~g~", + ['refuseemote'] = "Animazione rifiutata.", + ['makenearby'] = "fa eseguire l'animazione al giocatore vicino", + ['camera'] = "Premi ~y~G~w~ per usare il flash della fotocamera.", + ['makeitrain'] = "Premi ~y~G~w~ per far piovere.", + ['pee'] = "Tieni premuto ~y~G~w~ per urinare.", + ['spraychamp'] = "Tieni premuto ~y~G~w~ per spruzzare champagne", + ['stun'] = "Premi ~y~G~w~ per 'usare' la pistola stordente.", + ['bound'] = "É stato impostato ", + ['to'] = "per", + ['currentlyboundemotes'] = " Animazioni correnti:", + ['notvalidkey'] = "non è una chiave valida.", + ['keybinds'] = "🔢 Tasti", + ['keybindsinfo'] = "Utilizza" + }, + ['da'] = { -- Danish 🇩🇰 + ['emotes'] = 'Animationer', + ['danceemotes'] = "🕺 Danse Animationer", + ['animalemotes'] = "🐩 Dyr Animationer", + ['propemotes'] = "📦 Rekvisit Animationer", + ['favoriteemotes'] = "🌟 Favorit", + ['favoriteinfo'] = "Vælge en animationer her for at sætte den som din favorit.", + ['rfavorite'] = "Nulstil Favorit", + ['prop2info'] = "❓ Rekvisit emotes findes i slutningen", + ['set'] = "Sæt (", + ['setboundemote'] = ") til din favorit animationer?", + ['newsetemote'] = "~w~ Er nu din favorit animationer, tryk ~g~CapsLock~w~ for at anvende den.", + ['cancelemote'] = "Afbryd animationer", + ['cancelemoteinfo'] = "~r~X~w~ Anullere din igangværende animationer.", + ['walkingstyles'] = "Gågange", + ['resetdef'] = "Nulstil til standard", + ['normalreset'] = "Normal (Nulstil)", + ['moods'] = "Humør 😒", + ['infoupdate'] = "Info / opdateringer", + ['infoupdateav'] = "Information (Opdatering available)", + ['infoupdateavtext'] = "En opdatering er tilgænglig, hent den nyeste version fra ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", + ['suggestions'] = "Forslag?", + ['suggestionsinfo'] = "'TayMcKenzieNZ' på FiveM-forum for alle funktioner/emote-forslag! ✉️", + ['notvaliddance'] = "er ikke en gyldig dans", + ['notvalidemote'] = "er ikke en gyldig emote", + ['nocancel'] = "Ingen animationer afspilles lige nu", + ['maleonly'] = "Denne animationer virker desværre kun til mænd!", + ['emotemenucmd'] = "Skriv /emotemenu for animationer menuen", + ['shareemotes'] = "👫 Delte animationer", + ['shareemotesinfo'] = "Invitere en spillere i nærheden for afspille animationer", + ['sharedanceemotes'] = "🕺 Delete Danse", + ['notvalidsharedemote'] = "er ikke en gyldig delt animationer.", + ['sentrequestto'] = "Anmodning sendt til ~y~", + ['nobodyclose'] = "Ingen ~r~tæt~w~ nok.", + ['doyouwanna'] = "~y~Y~w~ for at acceptere, ~r~L~w~ for at nægte (~g~", + ['refuseemote'] = "Animationer nægtede.", + ['makenearby'] = "får den nærliggende spiller til at spille", + ['camera'] = "Tryk ~y~G~w~ for at bruge kamera kameraets blitz.", + ['makeitrain'] = "Tryk ~y~G~w~ for at regne med penge.", + ['pee'] = "Hold ~y~G~w~ for at tisse.", + ['spraychamp'] = "Hold ~y~G~w~ for at sprøjte med champagnen", + ['stun'] = "tryk på ~y~G~w~ for at bruge elektrisk pistol.", + ['bound'] = "Bundet ", + ['to'] = "til", + ['currentlyboundemotes'] = " Keybind animationer:", + ['notvalidkey'] = "er ikke en gyldigt nøgle.", + ['keybinds'] = "🔢 Keybinds", + ['keybindsinfo'] = "Brug" + }, + ['fi'] = { -- Finnish 🇫🇮 + ['emotes'] = 'Emotet 🎬', + ['danceemotes'] = "🕺 Tanssi Emotet", + ['animalemotes'] = "🐩 Eläin Emotet", + ['propemotes'] = "📦 Esine Emotet", + ['favoriteemotes'] = "🌟 Suosikit", + ['favoriteinfo'] = " Valitse emote täältä laittaaksesi sen suosikiksi.", + ['rfavorite'] = "Resettaa Suosikin.", + ['prop2info'] = "❓ Esine Emotet voivat sijaita lopussa", + ['set'] = "Aseta (", + ['setboundemote'] = ") on sinun bindattu emote ?", + ['newsetemote'] = "w on nyt bindattuna emotesi, paina gCapsLockw käyttääksesi", + ['cancelemote'] = "Peru emote 🚷", + ['cancelemoteinfo'] = "rXw Peruu meneillään olevan emoten ", + ['walkingstyles'] = "Kävelytyylit🚶🏻‍♂️", + ['resetdef'] = "Resettaa oletuksen", + ['normalreset'] = "Normaali (Reseettaa)", + ['moods'] = "Mielitilat😒", + ['infoupdate'] = "Krediitit & Ehdotukset 🙏🏻", + ['infoupdateav'] = "Informaatio (Päivitys Saatavilla)", + ['infoupdateavtext'] = " Uusin versio saatavilla täältä yhttps://github.com/TayMcKenzieNZ/dpemotes~w~", + ['suggestions'] = "Ehdotukset?", + ['suggestionsinfo'] = "'TayMcKenzieNZ' Fivem foormueilta mitä vain fiituria/emote ehdotusta! ✉️", + ['notvaliddance'] = "Ei ole tanssi.", + ['notvalidemote'] = "Ei ole emote.", + ['nocancel'] = "Ei ole emotea peruutettavaksi.", + ['maleonly'] = "Tämä emote on miehille ainostaan, anteeksi!", + ['emotemenucmd'] = "Tee /emotemenu avataksesi emote menun", + ['shareemotes'] = "👫 Yhteiset Emotet", + ['shareemotesinfo'] = "Kutsu lähin hahmo emoteen ", + ['sharedanceemotes'] = "🕺 Yhteiset Tanssit", + ['notvalidsharedemote'] = "Ei ole yhteinen tanssi emote.", + ['sentrequestto'] = "Lähetä kutsu y", + ['nobodyclose'] = "Ei ketään rlähelläw sinua.", + ['doyouwanna'] = "yYw hyväksyyksesi, rLw kieltäytyäksesi (g", + ['refuseemote'] = "Emote peruutettu.", + ['makenearby'] = "tekee lähimmän pelaaja osallistumaan ", + ['camera'] = "Paina yGw käyttääksesi kameran salamaa.", + ['makeitrain'] = "Paina yGw heittääksesi rahaa.", + ['pee'] = "Pidä yGw pissaksesi.", + ['spraychamp'] = "Pidä yGw suihkutaaksesi shamppaniaa", + ['stun'] = "Paina yGw to 'käytä' etälamautinta.", + ['bound'] = "Bindata", + ['to'] = 'lle', + ['currentlyboundemotes'] = " On jo bindattuna emotehin :", + ['notvalidkey'] = "Ei ole käytettävä näppäin.", + ['keybinds'] = "🔢 Pikanäppäimet", + ['keybindsinfo'] = "Käytä", +}} diff --git a/resources/EmoteMenu/NativeUI.lua b/resources/EmoteMenu/NativeUI.lua index a62f2b56d..3fa972771 100644 --- a/resources/EmoteMenu/NativeUI.lua +++ b/resources/EmoteMenu/NativeUI.lua @@ -59,7 +59,7 @@ MenuPool.__index = MenuPool NativeUI = {} -CharacterMap = { [' '] = 6, ['!'] = 6, ['"'] = 6, ['#'] = 11,['$'] = 10, ['%'] = 17,['&'] = 13, ['\\'] = 4,['('] = 6, [')'] = 6,['*'] = 7, ['+'] = 10, [','] = 4, ['-'] = 6, ['.'] = 4, ['/'] = 7, ['0'] = 12, ['1'] = 7, ['2'] = 11, ['3'] = 11, ['4'] = 11, ['5'] = 11, ['6'] = 12, ['7'] = 10, ['8'] = 11, ['9'] = 11, [':'] = 5, [';'] = 4, ['<'] = 9, ['='] = 9, ['>'] = 9, ['?'] = 10, ['@'] = 15, ['A'] = 12, ['B'] = 13, ['C'] = 14, ['D'] = 14, ['E'] = 12, ['F'] = 12, ['G'] = 15, ['H'] = 14, ['I'] = 5, ['J'] = 11, ['K'] = 13, ['L'] = 11, ['M'] = 16, ['N'] = 14, ['O'] = 16, ['P'] = 12, ['Q'] = 15, ['R'] = 13, ['S'] = 12, ['T'] = 11, ['U'] = 13, ['V'] = 12, ['W'] = 18, ['X'] = 11, ['Y'] = 11, ['Z'] = 12, ['['] = 6, [']'] = 6, ['^'] = 9, ['_'] = 18, ['`'] = 8, ['a'] = 11, ['b'] = 12, ['c'] = 11, ['d'] = 12, ['e'] = 12, ['f'] = 5, ['g'] = 13, ['h'] = 11, ['i'] = 4, ['j'] = 4, ['k'] = 10, ['l'] = 4, ['m'] = 18, ['n'] = 11, ['o'] = 12, ['p'] = 12, ['q'] = 12, ['r'] = 7, ['s'] = 9, ['t'] = 5, ['u'] = 11, ['v'] = 10, ['w'] = 14, ['x'] = 9, ['y'] = 10, ['z'] = 9, ['{'] = 6, ['|'] = 3, ['}'] = 6 } +CharacterMap = { [' '] = 6, ['!'] = 6, ['"'] = 6, ['#'] = 11, ['$'] = 10, ['%'] = 17, ['&'] = 13, ['\\'] = 4, ['('] = 6, [')'] = 6, ['*'] = 7, ['+'] = 10, [','] = 4, ['-'] = 6, ['.'] = 4, ['/'] = 7, ['0'] = 12, ['1'] = 7, ['2'] = 11, ['3'] = 11, ['4'] = 11, ['5'] = 11, ['6'] = 12, ['7'] = 10, ['8'] = 11, ['9'] = 11, [':'] = 5, [';'] = 4, ['<'] = 9, ['='] = 9, ['>'] = 9, ['?'] = 10, ['@'] = 15, ['A'] = 12, ['B'] = 13, ['C'] = 14, ['D'] = 14, ['E'] = 12, ['F'] = 12, ['G'] = 15, ['H'] = 14, ['I'] = 5, ['J'] = 11, ['K'] = 13, ['L'] = 11, ['M'] = 16, ['N'] = 14, ['O'] = 16, ['P'] = 12, ['Q'] = 15, ['R'] = 13, ['S'] = 12, ['T'] = 11, ['U'] = 13, ['V'] = 12, ['W'] = 18, ['X'] = 11, ['Y'] = 11, ['Z'] = 12, ['['] = 6, [']'] = 6, ['^'] = 9, ['_'] = 18, ['`'] = 8, ['a'] = 11, ['b'] = 12, ['c'] = 11, ['d'] = 12, ['e'] = 12, ['f'] = 5, ['g'] = 13, ['h'] = 11, ['i'] = 4, ['j'] = 4, ['k'] = 10, ['l'] = 4, ['m'] = 18, ['n'] = 11, ['o'] = 12, ['p'] = 12, ['q'] = 12, ['r'] = 7, ['s'] = 9, ['t'] = 5, ['u'] = 11, ['v'] = 10, ['w'] = 14, ['x'] = 9, ['y'] = 10, ['z'] = 9, ['{'] = 6, ['|'] = 3, ['}'] = 6 } BadgeStyle = { None = 0, BronzeMedal = 1, GoldMedal = 2, SilverMedal = 3, Alert = 4, Crown = 5, Ammo = 6, Armour = 7, Barber = 8, Clothes = 9, Franklin = 10, Bike = 11, Car = 12, Gun = 13, Heart = 14, Makeup = 15, Mask = 16, Michael = 17, Star = 18, Tattoo = 19, Trevor = 20, Lock = 21, Tick = 22 } @@ -72,7 +72,7 @@ BadgeTexture = { [5] = function() return "mp_hostcrown" end, [6] = function(Selected) if Selected then return "shop_ammo_icon_b" else return "shop_ammo_icon_a" end end, [7] = function(Selected) if Selected then return "shop_armour_icon_b" else return "shop_armour_icon_a" end end, - [8] = function(Selected) if Selected then return "shop_barber_icon_b" else return "shop_barber_icon_a" end end, + [8] = function(Selected) if Selected then return "shop_barber_icon_b" else return "shop_barber_icon_a" end end, [9] = function(Selected) if Selected then return "shop_clothing_icon_b" else return "shop_clothing_icon_a" end end, [10] = function(Selected) if Selected then return "shop_franklin_icon_b" else return "shop_franklin_icon_a" end end, [11] = function(Selected) if Selected then return "shop_garage_bike_icon_b" else return "shop_garage_bike_icon_a" end end, @@ -102,226 +102,226 @@ BadgeDictionary = { BadgeColour = { [5] = function(Selected) if Selected then return 0, 0, 0, 255 else return 255, 255, 255, 255 end end, [21] = function(Selected) if Selected then return 0, 0, 0, 255 else return 255, 255, 255, 255 end end, - [22] = function(Selected) if Selected then return 0, 0, 0, 255 else return 255, 255, 255, 255 end end, + [22] = function(Selected) if Selected then return 0, 0, 0, 255 else return 255, 255, 255, 255 end end, } Colours = { - PureWhite = {255, 255, 255, 255}, - White = {240, 240, 240, 255}, - Black = {0, 0, 0, 255}, - Grey = {155, 155, 155, 255}, - GreyLight = {205, 205, 205, 255}, - GreyDark = {77, 77, 77, 255}, - Red = {224, 50, 50, 255}, - RedLight = {240, 153, 153, 255}, - RedDark = {112, 25, 25, 255}, - Blue = {93, 182, 229, 255}, - BlueLight = {174, 219, 242, 255}, - BlueDark = {47, 92, 115, 255}, - Yellow = {240, 200, 80, 255}, - YellowLight = {254, 235, 169, 255}, - YellowDark = {126, 107, 41, 255}, - Orange = {255, 133, 85, 255}, - OrangeLight = {255, 194, 170, 255}, - OrangeDark = {127, 66, 42, 255}, - Green = {114, 204, 114, 255}, - GreenLight = {185, 230, 185, 255}, - GreenDark = {57, 102, 57, 255}, - Purple = {132, 102, 226, 255}, - PurpleLight = {192, 179, 239, 255}, - PurpleDark = {67, 57, 111, 255}, - Pink = {203, 54, 148, 255}, - RadarHealth = {53, 154, 71, 255}, - RadarArmour = {93, 182, 229, 255}, - RadarDamage = {235, 36, 39, 255}, - NetPlayer1 = {194, 80, 80, 255}, - NetPlayer2 = {156, 110, 175, 255}, - NetPlayer3 = {255, 123, 196, 255}, - NetPlayer4 = {247, 159, 123, 255}, - NetPlayer5 = {178, 144, 132, 255}, - NetPlayer6 = {141, 206, 167, 255}, - NetPlayer7 = {113, 169, 175, 255}, - NetPlayer8 = {211, 209, 231, 255}, - NetPlayer9 = {144, 127, 153, 255}, - NetPlayer10 = {106, 196, 191, 255}, - NetPlayer11 = {214, 196, 153, 255}, - NetPlayer12 = {234, 142, 80, 255}, - NetPlayer13 = {152, 203, 234, 255}, - NetPlayer14 = {178, 98, 135, 255}, - NetPlayer15 = {144, 142, 122, 255}, - NetPlayer16 = {166, 117, 94, 255}, - NetPlayer17 = {175, 168, 168, 255}, - NetPlayer18 = {232, 142, 155, 255}, - NetPlayer19 = {187, 214, 91, 255}, - NetPlayer20 = {12, 123, 86, 255}, - NetPlayer21 = {123, 196, 255, 255}, - NetPlayer22 = {171, 60, 230, 255}, - NetPlayer23 = {206, 169, 13, 255}, - NetPlayer24 = {71, 99, 173, 255}, - NetPlayer25 = {42, 166, 185, 255}, - NetPlayer26 = {186, 157, 125, 255}, - NetPlayer27 = {201, 225, 255, 255}, - NetPlayer28 = {240, 240, 150, 255}, - NetPlayer29 = {237, 140, 161, 255}, - NetPlayer30 = {249, 138, 138, 255}, - NetPlayer31 = {252, 239, 166, 255}, - NetPlayer32 = {240, 240, 240, 255}, - SimpleBlipDefault = {159, 201, 166, 255}, - MenuBlue = {140, 140, 140, 255}, - MenuGreyLight = {140, 140, 140, 255}, - MenuBlueExtraDark = {40, 40, 40, 255}, - MenuYellow = {240, 160, 0, 255}, - MenuYellowDark = {240, 160, 0, 255}, - MenuGreen = {240, 160, 0, 255}, - MenuGrey = {140, 140, 140, 255}, - MenuGreyDark = {60, 60, 60, 255}, - MenuHighlight = {30, 30, 30, 255}, - MenuStandard = {140, 140, 140, 255}, - MenuDimmed = {75, 75, 75, 255}, - MenuExtraDimmed = {50, 50, 50, 255}, - BriefTitle = {95, 95, 95, 255}, - MidGreyMp = {100, 100, 100, 255}, - NetPlayer1Dark = {93, 39, 39, 255}, - NetPlayer2Dark = {77, 55, 89, 255}, - NetPlayer3Dark = {124, 62, 99, 255}, - NetPlayer4Dark = {120, 80, 80, 255}, - NetPlayer5Dark = {87, 72, 66, 255}, - NetPlayer6Dark = {74, 103, 83, 255}, - NetPlayer7Dark = {60, 85, 88, 255}, - NetPlayer8Dark = {105, 105, 64, 255}, - NetPlayer9Dark = {72, 63, 76, 255}, - NetPlayer10Dark = {53, 98, 95, 255}, - NetPlayer11Dark = {107, 98, 76, 255}, - NetPlayer12Dark = {117, 71, 40, 255}, - NetPlayer13Dark = {76, 101, 117, 255}, - NetPlayer14Dark = {65, 35, 47, 255}, - NetPlayer15Dark = {72, 71, 61, 255}, - NetPlayer16Dark = {85, 58, 47, 255}, - NetPlayer17Dark = {87, 84, 84, 255}, - NetPlayer18Dark = {116, 71, 77, 255}, - NetPlayer19Dark = {93, 107, 45, 255}, - NetPlayer20Dark = {6, 61, 43, 255}, - NetPlayer21Dark = {61, 98, 127, 255}, - NetPlayer22Dark = {85, 30, 115, 255}, - NetPlayer23Dark = {103, 84, 6, 255}, - NetPlayer24Dark = {35, 49, 86, 255}, - NetPlayer25Dark = {21, 83, 92, 255}, - NetPlayer26Dark = {93, 98, 62, 255}, - NetPlayer27Dark = {100, 112, 127, 255}, - NetPlayer28Dark = {120, 120, 75, 255}, - NetPlayer29Dark = {152, 76, 93, 255}, - NetPlayer30Dark = {124, 69, 69, 255}, - NetPlayer31Dark = {10, 43, 50, 255}, - NetPlayer32Dark = {95, 95, 10, 255}, - Bronze = {180, 130, 97, 255}, - Silver = {150, 153, 161, 255}, - Gold = {214, 181, 99, 255}, - Platinum = {166, 221, 190, 255}, - Gang1 = {29, 100, 153, 255}, - Gang2 = {214, 116, 15, 255}, - Gang3 = {135, 125, 142, 255}, - Gang4 = {229, 119, 185, 255}, - SameCrew = {252, 239, 166, 255}, - Freemode = {45, 110, 185, 255}, - PauseBg = {0, 0, 0, 255}, - Friendly = {93, 182, 229, 255}, - Enemy = {194, 80, 80, 255}, - Location = {240, 200, 80, 255}, - Pickup = {114, 204, 114, 255}, - PauseSingleplayer = {114, 204, 114, 255}, - FreemodeDark = {22, 55, 92, 255}, - InactiveMission = {154, 154, 154, 255}, - Damage = {194, 80, 80, 255}, - PinkLight = {252, 115, 201, 255}, - PmMitemHighlight = {252, 177, 49, 255}, - ScriptVariable = {0, 0, 0, 255}, - Yoga = {109, 247, 204, 255}, - Tennis = {241, 101, 34, 255}, - Golf = {214, 189, 97, 255}, - ShootingRange = {112, 25, 25, 255}, - FlightSchool = {47, 92, 115, 255}, - NorthBlue = {93, 182, 229, 255}, - SocialClub = {234, 153, 28, 255}, - PlatformBlue = {11, 55, 123, 255}, - PlatformGreen = {146, 200, 62, 255}, - PlatformGrey = {234, 153, 28, 255}, - FacebookBlue = {66, 89, 148, 255}, - IngameBg = {0, 0, 0, 255}, - Darts = {114, 204, 114, 255}, - Waypoint = {164, 76, 242, 255}, - Michael = {101, 180, 212, 255}, - Franklin = {171, 237, 171, 255}, - Trevor = {255, 163, 87, 255}, - GolfP1 = {240, 240, 240, 255}, - GolfP2 = {235, 239, 30, 255}, - GolfP3 = {255, 149, 14, 255}, - GolfP4 = {246, 60, 161, 255}, - WaypointLight = {210, 166, 249, 255}, - WaypointDark = {82, 38, 121, 255}, - PanelLight = {0, 0, 0, 255}, - MichaelDark = {72, 103, 116, 255}, - FranklinDark = {85, 118, 85, 255}, - TrevorDark = {127, 81, 43, 255}, - ObjectiveRoute = {240, 200, 80, 255}, - PausemapTint = {0, 0, 0, 255}, - PauseDeselect = {100, 100, 100, 255}, - PmWeaponsPurchasable = {45, 110, 185, 255}, - PmWeaponsLocked = {240, 240, 240, 255}, - ScreenBg = {0, 0, 0, 255}, - Chop = {224, 50, 50, 255}, - PausemapTintHalf = {0, 0, 0, 255}, - NorthBlueOfficial = {0, 71, 133, 255}, - ScriptVariable2 = {0, 0, 0, 255}, - H = {33, 118, 37, 255}, - HDark = {37, 102, 40, 255}, - T = {234, 153, 28, 255}, - TDark = {225, 140, 8, 255}, - HShard = {20, 40, 0, 255}, - ControllerMichael = {48, 255, 255, 255}, - ControllerFranklin = {48, 255, 0, 255}, - ControllerTrevor = {176, 80, 0, 255}, - ControllerChop = {127, 0, 0, 255}, - VideoEditorVideo = {53, 166, 224, 255}, - VideoEditorAudio = {162, 79, 157, 255}, - VideoEditorText = {104, 192, 141, 255}, - HbBlue = {29, 100, 153, 255}, - HbYellow = {234, 153, 28, 255}, - VideoEditorScore = {240, 160, 1, 255}, - VideoEditorAudioFadeout = {59, 34, 57, 255}, - VideoEditorTextFadeout = {41, 68, 53, 255}, - VideoEditorScoreFadeout = {82, 58, 10, 255}, - HeistBackground = {37, 102, 40, 255}, - VideoEditorAmbient = {240, 200, 80, 255}, - VideoEditorAmbientFadeout = {80, 70, 34, 255}, - Gb = {255, 133, 85, 255}, - G = {255, 194, 170, 255}, - B = {255, 133, 85, 255}, - LowFlow = {240, 200, 80, 255}, - LowFlowDark = {126, 107, 41, 255}, - G1 = {247, 159, 123, 255}, - G2 = {226, 134, 187, 255}, - G3 = {239, 238, 151, 255}, - G4 = {113, 169, 175, 255}, - G5 = {160, 140, 193, 255}, - G6 = {141, 206, 167, 255}, - G7 = {181, 214, 234, 255}, - G8 = {178, 144, 132, 255}, - G9 = {0, 132, 114, 255}, - G10 = {216, 85, 117, 255}, - G11 = {30, 100, 152, 255}, - G12 = {43, 181, 117, 255}, - G13 = {233, 141, 79, 255}, - G14 = {137, 210, 215, 255}, - G15 = {134, 125, 141, 255}, - Adversary = {109, 34, 33, 255}, - DegenRed = {255, 0, 0, 255}, - DegenYellow = {255, 255, 0, 255}, - DegenGreen = {0, 255, 0, 255}, - DegenCyan = {0, 255, 255, 255}, - DegenBlue = {0, 0, 255, 255}, - DegenMagenta = {255, 0, 255, 255}, - Stunt1 = {38, 136, 234, 255}, - Stunt2 = {224, 50, 50, 255}, + PureWhite = { 255, 255, 255, 255 }, + White = { 240, 240, 240, 255 }, + Black = { 0, 0, 0, 255 }, + Grey = { 155, 155, 155, 255 }, + GreyLight = { 205, 205, 205, 255 }, + GreyDark = { 77, 77, 77, 255 }, + Red = { 224, 50, 50, 255 }, + RedLight = { 240, 153, 153, 255 }, + RedDark = { 112, 25, 25, 255 }, + Blue = { 93, 182, 229, 255 }, + BlueLight = { 174, 219, 242, 255 }, + BlueDark = { 47, 92, 115, 255 }, + Yellow = { 240, 200, 80, 255 }, + YellowLight = { 254, 235, 169, 255 }, + YellowDark = { 126, 107, 41, 255 }, + Orange = { 255, 133, 85, 255 }, + OrangeLight = { 255, 194, 170, 255 }, + OrangeDark = { 127, 66, 42, 255 }, + Green = { 114, 204, 114, 255 }, + GreenLight = { 185, 230, 185, 255 }, + GreenDark = { 57, 102, 57, 255 }, + Purple = { 132, 102, 226, 255 }, + PurpleLight = { 192, 179, 239, 255 }, + PurpleDark = { 67, 57, 111, 255 }, + Pink = { 203, 54, 148, 255 }, + RadarHealth = { 53, 154, 71, 255 }, + RadarArmour = { 93, 182, 229, 255 }, + RadarDamage = { 235, 36, 39, 255 }, + NetPlayer1 = { 194, 80, 80, 255 }, + NetPlayer2 = { 156, 110, 175, 255 }, + NetPlayer3 = { 255, 123, 196, 255 }, + NetPlayer4 = { 247, 159, 123, 255 }, + NetPlayer5 = { 178, 144, 132, 255 }, + NetPlayer6 = { 141, 206, 167, 255 }, + NetPlayer7 = { 113, 169, 175, 255 }, + NetPlayer8 = { 211, 209, 231, 255 }, + NetPlayer9 = { 144, 127, 153, 255 }, + NetPlayer10 = { 106, 196, 191, 255 }, + NetPlayer11 = { 214, 196, 153, 255 }, + NetPlayer12 = { 234, 142, 80, 255 }, + NetPlayer13 = { 152, 203, 234, 255 }, + NetPlayer14 = { 178, 98, 135, 255 }, + NetPlayer15 = { 144, 142, 122, 255 }, + NetPlayer16 = { 166, 117, 94, 255 }, + NetPlayer17 = { 175, 168, 168, 255 }, + NetPlayer18 = { 232, 142, 155, 255 }, + NetPlayer19 = { 187, 214, 91, 255 }, + NetPlayer20 = { 12, 123, 86, 255 }, + NetPlayer21 = { 123, 196, 255, 255 }, + NetPlayer22 = { 171, 60, 230, 255 }, + NetPlayer23 = { 206, 169, 13, 255 }, + NetPlayer24 = { 71, 99, 173, 255 }, + NetPlayer25 = { 42, 166, 185, 255 }, + NetPlayer26 = { 186, 157, 125, 255 }, + NetPlayer27 = { 201, 225, 255, 255 }, + NetPlayer28 = { 240, 240, 150, 255 }, + NetPlayer29 = { 237, 140, 161, 255 }, + NetPlayer30 = { 249, 138, 138, 255 }, + NetPlayer31 = { 252, 239, 166, 255 }, + NetPlayer32 = { 240, 240, 240, 255 }, + SimpleBlipDefault = { 159, 201, 166, 255 }, + MenuBlue = { 140, 140, 140, 255 }, + MenuGreyLight = { 140, 140, 140, 255 }, + MenuBlueExtraDark = { 40, 40, 40, 255 }, + MenuYellow = { 240, 160, 0, 255 }, + MenuYellowDark = { 240, 160, 0, 255 }, + MenuGreen = { 240, 160, 0, 255 }, + MenuGrey = { 140, 140, 140, 255 }, + MenuGreyDark = { 60, 60, 60, 255 }, + MenuHighlight = { 30, 30, 30, 255 }, + MenuStandard = { 140, 140, 140, 255 }, + MenuDimmed = { 75, 75, 75, 255 }, + MenuExtraDimmed = { 50, 50, 50, 255 }, + BriefTitle = { 95, 95, 95, 255 }, + MidGreyMp = { 100, 100, 100, 255 }, + NetPlayer1Dark = { 93, 39, 39, 255 }, + NetPlayer2Dark = { 77, 55, 89, 255 }, + NetPlayer3Dark = { 124, 62, 99, 255 }, + NetPlayer4Dark = { 120, 80, 80, 255 }, + NetPlayer5Dark = { 87, 72, 66, 255 }, + NetPlayer6Dark = { 74, 103, 83, 255 }, + NetPlayer7Dark = { 60, 85, 88, 255 }, + NetPlayer8Dark = { 105, 105, 64, 255 }, + NetPlayer9Dark = { 72, 63, 76, 255 }, + NetPlayer10Dark = { 53, 98, 95, 255 }, + NetPlayer11Dark = { 107, 98, 76, 255 }, + NetPlayer12Dark = { 117, 71, 40, 255 }, + NetPlayer13Dark = { 76, 101, 117, 255 }, + NetPlayer14Dark = { 65, 35, 47, 255 }, + NetPlayer15Dark = { 72, 71, 61, 255 }, + NetPlayer16Dark = { 85, 58, 47, 255 }, + NetPlayer17Dark = { 87, 84, 84, 255 }, + NetPlayer18Dark = { 116, 71, 77, 255 }, + NetPlayer19Dark = { 93, 107, 45, 255 }, + NetPlayer20Dark = { 6, 61, 43, 255 }, + NetPlayer21Dark = { 61, 98, 127, 255 }, + NetPlayer22Dark = { 85, 30, 115, 255 }, + NetPlayer23Dark = { 103, 84, 6, 255 }, + NetPlayer24Dark = { 35, 49, 86, 255 }, + NetPlayer25Dark = { 21, 83, 92, 255 }, + NetPlayer26Dark = { 93, 98, 62, 255 }, + NetPlayer27Dark = { 100, 112, 127, 255 }, + NetPlayer28Dark = { 120, 120, 75, 255 }, + NetPlayer29Dark = { 152, 76, 93, 255 }, + NetPlayer30Dark = { 124, 69, 69, 255 }, + NetPlayer31Dark = { 10, 43, 50, 255 }, + NetPlayer32Dark = { 95, 95, 10, 255 }, + Bronze = { 180, 130, 97, 255 }, + Silver = { 150, 153, 161, 255 }, + Gold = { 214, 181, 99, 255 }, + Platinum = { 166, 221, 190, 255 }, + Gang1 = { 29, 100, 153, 255 }, + Gang2 = { 214, 116, 15, 255 }, + Gang3 = { 135, 125, 142, 255 }, + Gang4 = { 229, 119, 185, 255 }, + SameCrew = { 252, 239, 166, 255 }, + Freemode = { 45, 110, 185, 255 }, + PauseBg = { 0, 0, 0, 255 }, + Friendly = { 93, 182, 229, 255 }, + Enemy = { 194, 80, 80, 255 }, + Location = { 240, 200, 80, 255 }, + Pickup = { 114, 204, 114, 255 }, + PauseSingleplayer = { 114, 204, 114, 255 }, + FreemodeDark = { 22, 55, 92, 255 }, + InactiveMission = { 154, 154, 154, 255 }, + Damage = { 194, 80, 80, 255 }, + PinkLight = { 252, 115, 201, 255 }, + PmMitemHighlight = { 252, 177, 49, 255 }, + ScriptVariable = { 0, 0, 0, 255 }, + Yoga = { 109, 247, 204, 255 }, + Tennis = { 241, 101, 34, 255 }, + Golf = { 214, 189, 97, 255 }, + ShootingRange = { 112, 25, 25, 255 }, + FlightSchool = { 47, 92, 115, 255 }, + NorthBlue = { 93, 182, 229, 255 }, + SocialClub = { 234, 153, 28, 255 }, + PlatformBlue = { 11, 55, 123, 255 }, + PlatformGreen = { 146, 200, 62, 255 }, + PlatformGrey = { 234, 153, 28, 255 }, + FacebookBlue = { 66, 89, 148, 255 }, + IngameBg = { 0, 0, 0, 255 }, + Darts = { 114, 204, 114, 255 }, + Waypoint = { 164, 76, 242, 255 }, + Michael = { 101, 180, 212, 255 }, + Franklin = { 171, 237, 171, 255 }, + Trevor = { 255, 163, 87, 255 }, + GolfP1 = { 240, 240, 240, 255 }, + GolfP2 = { 235, 239, 30, 255 }, + GolfP3 = { 255, 149, 14, 255 }, + GolfP4 = { 246, 60, 161, 255 }, + WaypointLight = { 210, 166, 249, 255 }, + WaypointDark = { 82, 38, 121, 255 }, + PanelLight = { 0, 0, 0, 255 }, + MichaelDark = { 72, 103, 116, 255 }, + FranklinDark = { 85, 118, 85, 255 }, + TrevorDark = { 127, 81, 43, 255 }, + ObjectiveRoute = { 240, 200, 80, 255 }, + PausemapTint = { 0, 0, 0, 255 }, + PauseDeselect = { 100, 100, 100, 255 }, + PmWeaponsPurchasable = { 45, 110, 185, 255 }, + PmWeaponsLocked = { 240, 240, 240, 255 }, + ScreenBg = { 0, 0, 0, 255 }, + Chop = { 224, 50, 50, 255 }, + PausemapTintHalf = { 0, 0, 0, 255 }, + NorthBlueOfficial = { 0, 71, 133, 255 }, + ScriptVariable2 = { 0, 0, 0, 255 }, + H = { 33, 118, 37, 255 }, + HDark = { 37, 102, 40, 255 }, + T = { 234, 153, 28, 255 }, + TDark = { 225, 140, 8, 255 }, + HShard = { 20, 40, 0, 255 }, + ControllerMichael = { 48, 255, 255, 255 }, + ControllerFranklin = { 48, 255, 0, 255 }, + ControllerTrevor = { 176, 80, 0, 255 }, + ControllerChop = { 127, 0, 0, 255 }, + VideoEditorVideo = { 53, 166, 224, 255 }, + VideoEditorAudio = { 162, 79, 157, 255 }, + VideoEditorText = { 104, 192, 141, 255 }, + HbBlue = { 29, 100, 153, 255 }, + HbYellow = { 234, 153, 28, 255 }, + VideoEditorScore = { 240, 160, 1, 255 }, + VideoEditorAudioFadeout = { 59, 34, 57, 255 }, + VideoEditorTextFadeout = { 41, 68, 53, 255 }, + VideoEditorScoreFadeout = { 82, 58, 10, 255 }, + HeistBackground = { 37, 102, 40, 255 }, + VideoEditorAmbient = { 240, 200, 80, 255 }, + VideoEditorAmbientFadeout = { 80, 70, 34, 255 }, + Gb = { 255, 133, 85, 255 }, + G = { 255, 194, 170, 255 }, + B = { 255, 133, 85, 255 }, + LowFlow = { 240, 200, 80, 255 }, + LowFlowDark = { 126, 107, 41, 255 }, + G1 = { 247, 159, 123, 255 }, + G2 = { 226, 134, 187, 255 }, + G3 = { 239, 238, 151, 255 }, + G4 = { 113, 169, 175, 255 }, + G5 = { 160, 140, 193, 255 }, + G6 = { 141, 206, 167, 255 }, + G7 = { 181, 214, 234, 255 }, + G8 = { 178, 144, 132, 255 }, + G9 = { 0, 132, 114, 255 }, + G10 = { 216, 85, 117, 255 }, + G11 = { 30, 100, 152, 255 }, + G12 = { 43, 181, 117, 255 }, + G13 = { 233, 141, 79, 255 }, + G14 = { 137, 210, 215, 255 }, + G15 = { 134, 125, 141, 255 }, + Adversary = { 109, 34, 33, 255 }, + DegenRed = { 255, 0, 0, 255 }, + DegenYellow = { 255, 255, 0, 255 }, + DegenGreen = { 0, 255, 0, 255 }, + DegenCyan = { 0, 255, 255, 255 }, + DegenBlue = { 0, 0, 255, 255 }, + DegenMagenta = { 255, 0, 255, 255 }, + Stunt1 = { 38, 136, 234, 255 }, + Stunt2 = { 224, 50, 50, 255 }, } --[[ @@ -331,7 +331,7 @@ Colours = { function GetResolution() local W, H = GetActiveScreenResolution() - if (W/H) > 3.5 then + if (W / H) > 3.5 then return GetScreenResolution() else return W, H @@ -339,7 +339,7 @@ function GetResolution() end function FormatXWYH(Value, Value2) - return Value/1920, Value2/1080 + return Value / 1920, Value2 / 1080 end function math.round(num, numDecimalPlaces) @@ -348,20 +348,21 @@ end function tobool(input) if input == "true" or tonumber(input) == 1 or input == true then - return true + return true else - return false + return false end end function string.split(inputstr, sep) if sep == nil then - sep = "%s" + sep = "%s" end - local t={} ; i=1 - for str in string.gmatch(inputstr, "([^"..sep.."]+)") do - t[i] = str - i = i + 1 + local t = {}; + i = 1 + for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do + t[i] = str + i = i + 1 end return t @@ -387,7 +388,7 @@ function GetSafeZoneBounds() local W, H = 1920, 1080 - return {X = math.round(SafeSize * ((W/H) * 5.4)), Y = math.round(SafeSize * 5.4)} + return { X = math.round(SafeSize * ((W / H) * 5.4)), Y = math.round(SafeSize * 5.4) } end function Controller() @@ -405,7 +406,7 @@ function UIResRectangle.New(X, Y, Width, Height, R, G, B, A) Y = tonumber(Y) or 0, Width = tonumber(Width) or 0, Height = tonumber(Height) or 0, - _Colour = {R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255}, + _Colour = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }, } return setmetatable(_UIResRectangle, UIResRectangle) end @@ -415,7 +416,7 @@ function UIResRectangle:Position(X, Y) self.X = tonumber(X) self.Y = tonumber(Y) else - return {X = self.X, Y = self.Y} + return { X = self.X, Y = self.Y } end end @@ -424,7 +425,7 @@ function UIResRectangle:Size(Width, Height) self.Width = tonumber(Width) self.Height = tonumber(Height) else - return {Width = self.Width, Height = self.Height} + return { Width = self.Width, Height = self.Height } end end @@ -474,7 +475,7 @@ function GetByteCount(str) local bytes = 0 for c in str:gmatch("[%z\1-\127\194-\244][\128-\191]*") do - local a,b,c,d = c:byte(1, -1) + local a, b, c, d = c:byte(1, -1) if a ~= nil then bytes = bytes + 1 end @@ -518,7 +519,7 @@ function AddLongStringForUtf8(str) end end AddTextComponentSubstringPlayerName(string.sub(str, startIndex, GetCharacterCount(str) - startIndex)) -end +end function AddLongString(str) local bytecount = GetByteCount(str) @@ -547,7 +548,7 @@ function UIResText.New(Text, X, Y, Scale, R, G, B, A, Font, Alignment, DropShado X = tonumber(X) or 0, Y = tonumber(Y) or 0, Scale = tonumber(Scale) or 0, - _Colour = {R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255}, + _Colour = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }, Font = tonumber(Font) or 0, Alignment = Alignment or nil, DropShadow = Dropshadow or nil, @@ -562,7 +563,7 @@ function UIResText:Position(X, Y) self.X = tonumber(X) self.Y = tonumber(Y) else - return {X = self.X, Y = self.Y} + return { X = self.X, Y = self.Y } end end @@ -666,10 +667,10 @@ function Sprite.New(TxtDictionary, TxtName, X, Y, Width, Height, Heading, R, G, TxtName = tostring(TxtName), X = tonumber(X) or 0, Y = tonumber(Y) or 0, - Width = tonumber(Width) or 0, + Width = tonumber(Width) or 0, Height = tonumber(Height) or 0, Heading = tonumber(Heading) or 0, - _Colour = {R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255}, + _Colour = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }, } return setmetatable(_Sprite, Sprite) end @@ -679,7 +680,7 @@ function Sprite:Position(X, Y) self.X = tonumber(X) self.Y = tonumber(Y) else - return {X = self.X, Y = self.Y} + return { X = self.X, Y = self.Y } end end @@ -688,7 +689,7 @@ function Sprite:Size(Width, Height) self.Width = tonumber(Width) self.Height = tonumber(Height) else - return {Width = self.Width, Height = self.Height} + return { Width = self.Width, Height = self.Height } end end @@ -784,17 +785,17 @@ function UIMenuItem.New(Text, Description) Text = UIResText.New(tostring(Text) or "", 8, 0, 0.33, 245, 245, 245, 255, 0), _Description = tostring(Description) or ""; SelectedSprite = Sprite.New("commonmenu", "gradient_nav", 0, 0, 431, 38), - LeftBadge = { Sprite = Sprite.New("commonmenu", "", 0, 0, 40, 40), Badge = 0}, - RightBadge = { Sprite = Sprite.New("commonmenu", "", 0, 0, 40, 40), Badge = 0}, + LeftBadge = { Sprite = Sprite.New("commonmenu", "", 0, 0, 40, 40), Badge = 0 }, + RightBadge = { Sprite = Sprite.New("commonmenu", "", 0, 0, 40, 40), Badge = 0 }, Label = { Text = UIResText.New("", 0, 0, 0.35, 245, 245, 245, 255, 0, "Right"), - MainColour = {R = 255, G = 255, B = 255, A = 255}, - HighlightColour = {R = 0, G = 0, B = 0, A = 255}, + MainColour = { R = 255, G = 255, B = 255, A = 255 }, + HighlightColour = { R = 0, G = 0, B = 0, A = 255 }, }, _Selected = false, _Hovered = false, _Enabled = true, - _Offset = {X = 0, Y = 0}, + _Offset = { X = 0, Y = 0 }, ParentMenu = nil, Panels = {}, Activated = function(menu, item, panels) end, @@ -1463,8 +1464,8 @@ function UIMenuSliderItem:Draw() self.LeftArrow:Colour(163, 159, 148, 255) self.RightArrow:Colour(163, 159, 148, 255) end - - local Offset = ((self.Background.Width - self.Slider.Width)/(#self.Items - 1)) * (self._Index-1) + + local Offset = ((self.Background.Width - self.Slider.Width) / (#self.Items - 1)) * (self._Index - 1) self.Slider:Position(250 + self.Base._Offset.X + Offset + self.Base.ParentMenu.WidthOffset, self.Slider.Y) @@ -1486,8 +1487,8 @@ end --]] function UIMenuColouredItem.New(Text, Description, MainColour, HighlightColour) - if type(Colour) ~= "table" then Colour = {R = 0, G = 0, B = 0, A = 255} end - if type(HighlightColour) ~= "table" then Colour = {R = 255, G = 255, B = 255, A = 255} end + if type(Colour) ~= "table" then Colour = { R = 0, G = 0, B = 0, A = 255 } end + if type(HighlightColour) ~= "table" then Colour = { R = 255, G = 255, B = 255, A = 255 } end local _UIMenuColouredItem = { Base = UIMenuItem.New(Text or "", Description or ""), Rectangle = UIResRectangle.New(0, 0, 431, 38, MainColour.R, MainColour.G, MainColour.B, MainColour.A), @@ -1625,12 +1626,12 @@ function UIMenuProgressItem.New(Text, Items, Index, Description, Counter) _UIMenuProgressItem.Base.SelectedSprite.Height = 60 if _UIMenuProgressItem.Data.Counter then - _UIMenuProgressItem.Base:RightLabel(_UIMenuProgressItem.Data.Index.."/"..#_UIMenuProgressItem.Data.Items) + _UIMenuProgressItem.Base:RightLabel(_UIMenuProgressItem.Data.Index .. "/" .. #_UIMenuProgressItem.Data.Items) else _UIMenuProgressItem.Base:RightLabel((type(_UIMenuProgressItem.Data.Items[_UIMenuProgressItem.Data.Index]) == "table") and tostring(_UIMenuProgressItem.Data.Items[_UIMenuProgressItem.Data.Index].Name) or tostring(_UIMenuProgressItem.Data.Items[_UIMenuProgressItem.Data.Index])) end - _UIMenuProgressItem.Bar.Width = _UIMenuProgressItem.Data.Index/#_UIMenuProgressItem.Data.Items * _UIMenuProgressItem.Data.Max + _UIMenuProgressItem.Bar.Width = _UIMenuProgressItem.Data.Index / #_UIMenuProgressItem.Data.Items * _UIMenuProgressItem.Data.Max return setmetatable(_UIMenuProgressItem, UIMenuProgressItem) end @@ -1715,12 +1716,12 @@ function UIMenuProgressItem:Index(Index) end if self.Data.Counter then - self.Base:RightLabel(self.Data.Index.."/"..#self.Data.Items) + self.Base:RightLabel(self.Data.Index .. "/" .. #self.Data.Items) else self.Base:RightLabel((type(self.Data.Items[self.Data.Index]) == "table") and tostring(self.Data.Items[self.Data.Index].Name) or tostring(self.Data.Items[self.Data.Index])) end - self.Bar.Width = self.Data.Index/#self.Data.Items * self.Data.Max + self.Bar.Width = self.Data.Index / #self.Data.Items * self.Data.Max else return self.Data.Index end @@ -1759,7 +1760,7 @@ end function UIMenuProgressItem:CalculateProgress(CursorX) local Progress = CursorX - self.Bar.X - self:Index(math.round(#self.Data.Items * (((Progress >= 0 and Progress <= self.Data.Max) and Progress or ((Progress < 0) and 0 or self.Data.Max))/self.Data.Max))) + self:Index(math.round(#self.Data.Items * (((Progress >= 0 and Progress <= self.Data.Max) and Progress or ((Progress < 0) and 0 or self.Data.Max)) / self.Data.Max))) end function UIMenuProgressItem:Draw() @@ -1789,11 +1790,11 @@ function UIMenuHeritageWindow.New(Mum, Dad) if not (Dad >= 0 and Dad <= 23) then Dad = 0 end _UIMenuHeritageWindow = { Background = Sprite.New("pause_menu_pages_char_mom_dad", "mumdadbg", 0, 0, 431, 228), -- Background is required, must be a sprite or a rectangle. - MumSprite = Sprite.New("char_creator_portraits", ((Mum < 21) and "female_"..Mum or "special_female_"..(tonumber(string.sub(Mum, 2, 2)) - 1)), 0, 0, 228, 228), - DadSprite = Sprite.New("char_creator_portraits", ((Dad < 21) and "male_"..Dad or "special_male_"..(tonumber(string.sub(Dad, 2, 2)) - 1)), 0, 0, 228, 228), + MumSprite = Sprite.New("char_creator_portraits", ((Mum < 21) and "female_" .. Mum or "special_female_" .. (tonumber(string.sub(Mum, 2, 2)) - 1)), 0, 0, 228, 228), + DadSprite = Sprite.New("char_creator_portraits", ((Dad < 21) and "male_" .. Dad or "special_male_" .. (tonumber(string.sub(Dad, 2, 2)) - 1)), 0, 0, 228, 228), Mum = Mum, Dad = Dad, - _Offset = {X = 0, Y = 0}, -- required + _Offset = { X = 0, Y = 0 }, -- required ParentMenu = nil, -- required } return setmetatable(_UIMenuHeritageWindow, UIMenuHeritageWindow) @@ -1823,8 +1824,8 @@ end function UIMenuHeritageWindow:Position(Y) -- required if tonumber(Y) then self.Background:Position(self._Offset.X, 144 + Y + self._Offset.Y) - self.MumSprite:Position(self._Offset.X + (self.ParentMenu.WidthOffset/2) + 25, 144 + Y + self._Offset.Y) - self.DadSprite:Position(self._Offset.X + (self.ParentMenu.WidthOffset/2) + 195, 144 + Y + self._Offset.Y) + self.MumSprite:Position(self._Offset.X + (self.ParentMenu.WidthOffset / 2) + 25, 144 + Y + self._Offset.Y) + self.DadSprite:Position(self._Offset.X + (self.ParentMenu.WidthOffset / 2) + 195, 144 + Y + self._Offset.Y) end end @@ -1837,8 +1838,8 @@ function UIMenuHeritageWindow:Index(Mum, Dad) self.Mum = Mum self.Dad = Dad - self.MumSprite.TxtName = ((self.Mum < 21) and "female_"..self.Mum or "special_female_"..(tonumber(string.sub(Mum, 2, 2)) - 1)) - self.DadSprite.TxtName = ((self.Dad < 21) and "male_"..self.Dad or "special_male_"..(tonumber(string.sub(Dad, 2, 2)) - 1)) + self.MumSprite.TxtName = ((self.Mum < 21) and "female_" .. self.Mum or "special_female_" .. (tonumber(string.sub(Mum, 2, 2)) - 1)) + self.DadSprite.TxtName = ((self.Dad < 21) and "male_" .. self.Dad or "special_male_" .. (tonumber(string.sub(Dad, 2, 2)) - 1)) end function UIMenuHeritageWindow:Draw() -- required @@ -1864,8 +1865,8 @@ function UIMenuGridPanel.New(TopText, LeftText, RightText, BottomText) }, Background = Sprite.New("commonmenu", "gradient_bgd", 0, 0, 431, 275), Grid = Sprite.New("pause_menu_pages_char_mom_dad", "nose_grid", 0, 0, 200, 200, 0), - Circle = Sprite.New("mpinventory","in_world_circle", 0, 0, 20, 20, 0), - Audio = {Slider = "CONTINUOUS_SLIDER", Library = "HUD_FRONTEND_DEFAULT_SOUNDSET", Id = nil}, + Circle = Sprite.New("mpinventory", "in_world_circle", 0, 0, 20, 20, 0), + Audio = { Slider = "CONTINUOUS_SLIDER", Library = "HUD_FRONTEND_DEFAULT_SOUNDSET", Id = nil }, ParentItem = nil, Text = { Top = UIResText.New(TopText or "Top", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), @@ -1895,23 +1896,23 @@ end function UIMenuGridPanel:CirclePosition(X, Y) if tonumber(X) and tonumber(Y) then - self.Circle.X = (self.Grid.X + 20) + ((self.Grid.Width - 40) * ((X >= 0.0 and X <= 1.0) and X or 0.0)) - (self.Circle.Width/2) - self.Circle.Y = (self.Grid.Y + 20) + ((self.Grid.Height - 40) * ((Y >= 0.0 and Y <= 1.0) and Y or 0.0)) - (self.Circle.Height/2) + self.Circle.X = (self.Grid.X + 20) + ((self.Grid.Width - 40) * ((X >= 0.0 and X <= 1.0) and X or 0.0)) - (self.Circle.Width / 2) + self.Circle.Y = (self.Grid.Y + 20) + ((self.Grid.Height - 40) * ((Y >= 0.0 and Y <= 1.0) and Y or 0.0)) - (self.Circle.Height / 2) else - return math.round((self.Circle.X - (self.Grid.X + 20) + (self.Circle.Width/2))/(self.Grid.Width - 40), 2), math.round((self.Circle.Y - (self.Grid.Y + 20) + (self.Circle.Height/2))/(self.Grid.Height - 40), 2) + return math.round((self.Circle.X - (self.Grid.X + 20) + (self.Circle.Width / 2)) / (self.Grid.Width - 40), 2), math.round((self.Circle.Y - (self.Grid.Y + 20) + (self.Circle.Height / 2)) / (self.Grid.Height - 40), 2) end end function UIMenuGridPanel:Position(Y) -- required if tonumber(Y) then local ParentOffsetX, ParentOffsetWidth = self.ParentItem:Offset().X, self.ParentItem:SetParentMenu().WidthOffset - + self.Background:Position(ParentOffsetX, Y) - self.Grid:Position(ParentOffsetX + 115.5 + (ParentOffsetWidth/2), 37.5 + Y) - self.Text.Top:Position(ParentOffsetX + 215.5 + (ParentOffsetWidth/2), 5 + Y) - self.Text.Left:Position(ParentOffsetX + 57.75 + (ParentOffsetWidth/2), 120 + Y) - self.Text.Right:Position(ParentOffsetX + 373.25 + (ParentOffsetWidth/2), 120 + Y) - self.Text.Bottom:Position(ParentOffsetX + 215.5 + (ParentOffsetWidth/2), 240 + Y) + self.Grid:Position(ParentOffsetX + 115.5 + (ParentOffsetWidth / 2), 37.5 + Y) + self.Text.Top:Position(ParentOffsetX + 215.5 + (ParentOffsetWidth / 2), 5 + Y) + self.Text.Left:Position(ParentOffsetX + 57.75 + (ParentOffsetWidth / 2), 120 + Y) + self.Text.Right:Position(ParentOffsetX + 373.25 + (ParentOffsetWidth / 2), 120 + Y) + self.Text.Bottom:Position(ParentOffsetX + 215.5 + (ParentOffsetWidth / 2), 240 + Y) if not self.CircleLocked then self.CircleLocked = true @@ -1925,7 +1926,7 @@ function UIMenuGridPanel:UpdateParent(X, Y) if ParentType == "UIMenuListItem" then local PanelItemIndex = self.ParentItem:FindPanelItem() if PanelItemIndex then - self.ParentItem.Items[PanelItemIndex].Value[self.ParentItem:FindPanelIndex(self)] = {X = X, Y = Y} + self.ParentItem.Items[PanelItemIndex].Value[self.ParentItem:FindPanelIndex(self)] = { X = X, Y = Y } self.ParentItem:Index(PanelItemIndex) self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) @@ -1934,23 +1935,23 @@ function UIMenuGridPanel:UpdateParent(X, Y) for Index = 1, #self.ParentItem.Items do if type(self.ParentItem.Items[Index]) == "table" then if not self.ParentItem.Items[Index].Panels then self.ParentItem.Items[Index].Panels = {} end - self.ParentItem.Items[Index].Panels[PanelIndex] = {X = X, Y = Y} + self.ParentItem.Items[Index].Panels[PanelIndex] = { X = X, Y = Y } else - self.ParentItem.Items[Index] = {Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = {[PanelIndex] = {X = X, Y = Y}}} + self.ParentItem.Items[Index] = { Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = { [PanelIndex] = { X = X, Y = Y } } } end end self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) + self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) end elseif ParentType == "UIMenuItem" then - self.ParentItem.ActivatedPanel(self.ParentItem.ParentMenu, self.ParentItem, self, {X = X, Y = Y}) + self.ParentItem.ActivatedPanel(self.ParentItem.ParentMenu, self.ParentItem, self, { X = X, Y = Y }) end end function UIMenuGridPanel:Functions() - local SafeZone = {X = 0, Y = 0} + local SafeZone = { X = 0, Y = 0 } if self.ParentItem:SetParentMenu().Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() + SafeZone = GetSafeZoneBounds() end if IsMouseInBounds(self.Grid.X + 20 + SafeZone.X, self.Grid.Y + 20 + SafeZone.Y, self.Grid.Width - 40, self.Grid.Height - 40) then @@ -1962,9 +1963,9 @@ function UIMenuGridPanel:Functions() PlaySoundFrontend(self.Audio.Id, self.Audio.Slider, self.Audio.Library, 1) while IsDisabledControlPressed(0, 24) and IsMouseInBounds(self.Grid.X + 20 + SafeZone.X, self.Grid.Y + 20 + SafeZone.Y, self.Grid.Width - 40, self.Grid.Height - 40) do Citizen.Wait(0) - local CursorX, CursorY = math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X - (self.Circle.Width/2), math.round(GetControlNormal(0, 240) * 1080) - SafeZone.Y - (self.Circle.Height/2) + local CursorX, CursorY = math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X - (self.Circle.Width / 2), math.round(GetControlNormal(0, 240) * 1080) - SafeZone.Y - (self.Circle.Height / 2) - self.Circle:Position(((CursorX > (self.Grid.X + 10 + self.Grid.Width - 40)) and (self.Grid.X + 10 + self.Grid.Width - 40) or ((CursorX < (self.Grid.X + 20 - (self.Circle.Width/2))) and (self.Grid.X + 20 - (self.Circle.Width/2)) or CursorX)), ((CursorY > (self.Grid.Y + 10 + self.Grid.Height - 40)) and (self.Grid.Y + 10 + self.Grid.Height - 40) or ((CursorY < (self.Grid.Y + 20 - (self.Circle.Height/2))) and (self.Grid.Y + 20 - (self.Circle.Height/2)) or CursorY))) + self.Circle:Position(((CursorX > (self.Grid.X + 10 + self.Grid.Width - 40)) and (self.Grid.X + 10 + self.Grid.Width - 40) or ((CursorX < (self.Grid.X + 20 - (self.Circle.Width / 2))) and (self.Grid.X + 20 - (self.Circle.Width / 2)) or CursorX)), ((CursorY > (self.Grid.Y + 10 + self.Grid.Height - 40)) and (self.Grid.Y + 10 + self.Grid.Height - 40) or ((CursorY < (self.Grid.Y + 20 - (self.Circle.Height / 2))) and (self.Grid.Y + 20 - (self.Circle.Height / 2)) or CursorY))) end StopSound(self.Audio.Id) ReleaseSoundId(self.Audio.Id) @@ -1973,7 +1974,7 @@ function UIMenuGridPanel:Functions() Citizen.CreateThread(function() while IsDisabledControlPressed(0, 24) and IsMouseInBounds(self.Grid.X + 20 + SafeZone.X, self.Grid.Y + 20 + SafeZone.Y, self.Grid.Width - 40, self.Grid.Height - 40) do Citizen.Wait(75) - local ResultX, ResultY = math.round((self.Circle.X - (self.Grid.X + 20) + (self.Circle.Width/2))/(self.Grid.Width - 40), 2), math.round((self.Circle.Y - (self.Grid.Y + 20) + (self.Circle.Height/2))/(self.Grid.Height - 40), 2) + local ResultX, ResultY = math.round((self.Circle.X - (self.Grid.X + 20) + (self.Circle.Width / 2)) / (self.Grid.Width - 40), 2), math.round((self.Circle.Y - (self.Grid.Y + 20) + (self.Circle.Height / 2)) / (self.Grid.Height - 40), 2) self:UpdateParent((((ResultX >= 0.0 and ResultX <= 1.0) and ResultX or ((ResultX <= 0) and 0.0) or 1.0) * 2) - 1, (((ResultY >= 0.0 and ResultY <= 1.0) and ResultY or ((ResultY <= 0) and 0.0) or 1.0) * 2) - 1) end @@ -2026,7 +2027,7 @@ function UIMenuColourPanel.New(Title, Colours) LeftArrow = Sprite.New("commonmenu", "arrowleft", 0, 0, 30, 30), RightArrow = Sprite.New("commonmenu", "arrowright", 0, 0, 30, 30), SelectedRectangle = UIResRectangle.New(0, 0, 44.5, 8), - Text = UIResText.New(Title.." (1 of "..#Colours..")" or "Title".." (1 of "..#Colours..")", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), + Text = UIResText.New(Title .. " (1 of " .. #Colours .. ")" or "Title" .. " (1 of " .. #Colours .. ")", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), ParentItem = nil, } @@ -2068,12 +2069,12 @@ function UIMenuColourPanel:Position(Y) -- required self.Background:Position(ParentOffsetX, Y) for Index = 1, #self.Bar do - self.Bar[Index]:Position(15 + (44.5 * (Index - 1)) + ParentOffsetX + (ParentOffsetWidth/2), 55 + Y) + self.Bar[Index]:Position(15 + (44.5 * (Index - 1)) + ParentOffsetX + (ParentOffsetWidth / 2), 55 + Y) end - self.SelectedRectangle:Position(15 + (44.5 * ((self:CurrentSelection() - self.Data.Pagination.Min) - 1)) + ParentOffsetX + (ParentOffsetWidth/2), 47 + Y) - self.LeftArrow:Position(7.5 + ParentOffsetX + (ParentOffsetWidth/2), 15 + Y) - self.RightArrow:Position(393.5 + ParentOffsetX + (ParentOffsetWidth/2), 15 + Y) - self.Text:Position(215.5 + ParentOffsetX + (ParentOffsetWidth/2), 15 + Y) + self.SelectedRectangle:Position(15 + (44.5 * ((self:CurrentSelection() - self.Data.Pagination.Min) - 1)) + ParentOffsetX + (ParentOffsetWidth / 2), 47 + Y) + self.LeftArrow:Position(7.5 + ParentOffsetX + (ParentOffsetWidth / 2), 15 + Y) + self.RightArrow:Position(393.5 + ParentOffsetX + (ParentOffsetWidth / 2), 15 + Y) + self.Text:Position(215.5 + ParentOffsetX + (ParentOffsetWidth / 2), 15 + Y) end end @@ -2123,11 +2124,11 @@ function UIMenuColourPanel:UpdateParent(Colour) if not self.ParentItem.Items[Index].Panels then self.ParentItem.Items[Index].Panels = {} end self.ParentItem.Items[Index].Panels[PanelIndex] = Colour else - self.ParentItem.Items[Index] = {Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = {[PanelIndex] = Colour}} + self.ParentItem.Items[Index] = { Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = { [PanelIndex] = Colour } } end end self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) + self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) end elseif ParentType == "UIMenuItem" then self.ParentItem.ActivatedPanel(self.ParentItem.ParentMenu, self.ParentItem, self, Colour) @@ -2143,14 +2144,14 @@ function UIMenuColourPanel:UpdateSelection(PreventUpdate) for Index = 1, 9 do self.Bar[Index]:Colour(table.unpack(self.Data.Items[self.Data.Pagination.Min + Index])) end - self.Text:Text(self.Data.Title.." ("..CurrentSelection.." of "..#self.Data.Items..")") + self.Text:Text(self.Data.Title .. " (" .. CurrentSelection .. " of " .. #self.Data.Items .. ")") end function UIMenuColourPanel:Functions() - local SafeZone = {X = 0, Y = 0} + local SafeZone = { X = 0, Y = 0 } if self.ParentItem:SetParentMenu().Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() + SafeZone = GetSafeZoneBounds() end @@ -2254,7 +2255,7 @@ function UIMenuPercentagePanel.New(MinText, MaxText) Max = UIResText.New("100%", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), Title = UIResText.New(MaxText or "Opacity", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), }, - Audio = {Slider = "CONTINUOUS_SLIDER", Library = "HUD_FRONTEND_DEFAULT_SOUNDSET", Id = nil}, + Audio = { Slider = "CONTINUOUS_SLIDER", Library = "HUD_FRONTEND_DEFAULT_SOUNDSET", Id = nil }, ParentItem = nil, } @@ -2281,11 +2282,11 @@ function UIMenuPercentagePanel:Position(Y) -- required if tonumber(Y) then local ParentOffsetX, ParentOffsetWidth = self.ParentItem:Offset().X, self.ParentItem:SetParentMenu().WidthOffset self.Background:Position(ParentOffsetX, Y) - self.ActiveBar:Position(ParentOffsetX + (ParentOffsetWidth/2) + 9, 50 + Y) - self.BackgroundBar:Position(ParentOffsetX + (ParentOffsetWidth/2) + 9, 50 + Y) - self.Text.Min:Position(ParentOffsetX + (ParentOffsetWidth/2) + 25, 15 + Y) - self.Text.Max:Position(ParentOffsetX + (ParentOffsetWidth/2) + 398, 15 + Y) - self.Text.Title:Position(ParentOffsetX + (ParentOffsetWidth/2) + 215.5, 15 + Y) + self.ActiveBar:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 9, 50 + Y) + self.BackgroundBar:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 9, 50 + Y) + self.Text.Min:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 25, 15 + Y) + self.Text.Max:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 398, 15 + Y) + self.Text.Title:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 215.5, 15 + Y) end end @@ -2294,13 +2295,13 @@ function UIMenuPercentagePanel:Percentage(Value) local Percent = ((Value < 0.0) and 0.0) or ((Value > 1.0) and 1.0 or Value) self.ActiveBar:Size(self.BackgroundBar.Width * Percent, self.ActiveBar.Height) else - local SafeZone = {X = 0, Y = 0} + local SafeZone = { X = 0, Y = 0 } if self.ParentItem:SetParentMenu().Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() + SafeZone = GetSafeZoneBounds() end - + local Progress = (math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X) - self.ActiveBar.X - return math.round(((Progress >= 0 and Progress <= 413) and Progress or ((Progress < 0) and 0 or 413))/self.BackgroundBar.Width, 2) + return math.round(((Progress >= 0 and Progress <= 413) and Progress or ((Progress < 0) and 0 or 413)) / self.BackgroundBar.Width, 2) end end @@ -2320,11 +2321,11 @@ function UIMenuPercentagePanel:UpdateParent(Percentage) if not self.ParentItem.Items[Index].Panels then self.ParentItem.Items[Index].Panels = {} end self.ParentItem.Items[Index].Panels[PanelIndex] = Percentage else - self.ParentItem.Items[Index] = {Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = {[PanelIndex] = Percentage}} + self.ParentItem.Items[Index] = { Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = { [PanelIndex] = Percentage } } end end self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) + self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) end elseif ParentType == "UIMenuItem" then self.ParentItem.ActivatedPanel(self.ParentItem.ParentMenu, self.ParentItem, self, Percentage) @@ -2333,9 +2334,9 @@ end function UIMenuPercentagePanel:Functions() - local SafeZone = {X = 0, Y = 0} + local SafeZone = { X = 0, Y = 0 } if self.ParentItem:SetParentMenu().Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() + SafeZone = GetSafeZoneBounds() end if IsMouseInBounds(self.BackgroundBar.X + SafeZone.X, self.BackgroundBar.Y - 4 + SafeZone.Y, self.BackgroundBar.Width, self.BackgroundBar.Height + 8) then @@ -2358,7 +2359,7 @@ function UIMenuPercentagePanel:Functions() while IsDisabledControlPressed(0, 24) and IsMouseInBounds(self.BackgroundBar.X + SafeZone.X, self.BackgroundBar.Y - 4 + SafeZone.Y, self.BackgroundBar.Width, self.BackgroundBar.Height + 8) do Citizen.Wait(75) local Progress = (math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X) - self.ActiveBar.X - self:UpdateParent(math.round(((Progress >= 0 and Progress <= 413) and Progress or ((Progress < 0) and 0 or 413))/self.BackgroundBar.Width, 2)) + self:UpdateParent(math.round(((Progress >= 0 and Progress <= 413) and Progress or ((Progress < 0) and 0 or 413)) / self.BackgroundBar.Width, 2)) end end) end @@ -2394,11 +2395,11 @@ function UIMenu.New(Title, Subtitle, X, Y, TxtDictionary, TxtName) Logo = Sprite.New(TxtDictionary, TxtName, 0 + X, 0 + Y, 431, 107), Banner = nil, Title = UIResText.New(Title, 215 + X, 20 + Y, 1.15, 255, 255, 255, 255, 1, 1), - Subtitle = {ExtraY = 0}, + Subtitle = { ExtraY = 0 }, WidthOffset = 0, - Position = {X = X, Y = Y}, - Pagination = {Min = 0, Max = 9, Total = 9}, - PageCounter = {PreText = ""}, + Position = { X = X, Y = Y }, + Pagination = { Min = 0, Max = 9, Total = 9 }, + PageCounter = { PreText = "" }, Extra = {}, Description = {}, Items = {}, @@ -2461,58 +2462,58 @@ function UIMenu.New(Title, Subtitle, X, Y, TxtDictionary, TxtName) }, EnabledControls = { Controller = { - {0, 2}, -- Look Up and Down - {0, 1}, -- Look Left and Right - {0, 25}, -- Aim - {0, 24}, -- Attack + { 0, 2 }, -- Look Up and Down + { 0, 1 }, -- Look Left and Right + { 0, 25 }, -- Aim + { 0, 24 }, -- Attack }, Keyboard = { - {0, 0}, -- Camera - {0, 1}, -- Look Left and Right - {0, 2}, -- Look Up and Down - {0, 8}, -- Fly Up and Down - {0, 9}, -- Fly Left and Right - {0, 21}, -- Sprint - {0, 22}, -- Jump - {0, 23}, -- Enter - {0, 24}, -- Attack - {0, 25}, -- Aim - {0, 26}, -- C - {0, 30}, -- Move Left and Right - {0, 31}, -- Move Up and Down - {0, 47}, -- G - {0, 59}, -- Move Vehicle Left and Right - {0, 71}, -- Accelerate Vehicle - {0, 72}, -- Vehicle Brake - {0, 73}, -- X - {0, 75}, -- Exit Vehicle - {0, 76}, -- Vehicle Handbrake - {0, 89}, -- Fly Yaw Left - {0, 90}, -- Fly Yaw Right - {0, 108}, -- Num Pad 4 - {0, 109}, -- Num Pad 6 - {0, 110}, -- Num Pad 5 - {0, 111}, -- Num Pad 8 - {0, 117}, -- Num Pad 7 - {0, 118}, -- Num Pad 9 - {0, 171}, -- CAPSLOCK - {0, 187}, -- Down - {0, 188}, -- Up - {0, 189}, -- Left - {0, 190}, -- Right - {0, 195}, -- X axis - {0, 196}, -- Y axis - {0, 201}, -- Select - {0, 202}, -- Back - {0, 203}, -- Spacebar? - {0, 217}, -- Select - {0, 239}, -- Cursor X - {0, 240}, -- Cursor Y - {0, 241}, -- Scroll up - {0, 242}, -- Scroll down - {0, 249}, -- N - {0, 305}, -- B - {0, 306}, -- N + { 0, 0 }, -- Camera + { 0, 1 }, -- Look Left and Right + { 0, 2 }, -- Look Up and Down + { 0, 8 }, -- Fly Up and Down + { 0, 9 }, -- Fly Left and Right + { 0, 21 }, -- Sprint + { 0, 22 }, -- Jump + { 0, 23 }, -- Enter + { 0, 24 }, -- Attack + { 0, 25 }, -- Aim + { 0, 26 }, -- C + { 0, 30 }, -- Move Left and Right + { 0, 31 }, -- Move Up and Down + { 0, 47 }, -- G + { 0, 59 }, -- Move Vehicle Left and Right + { 0, 71 }, -- Accelerate Vehicle + { 0, 72 }, -- Vehicle Brake + { 0, 73 }, -- X + { 0, 75 }, -- Exit Vehicle + { 0, 76 }, -- Vehicle Handbrake + { 0, 89 }, -- Fly Yaw Left + { 0, 90 }, -- Fly Yaw Right + { 0, 108 }, -- Num Pad 4 + { 0, 109 }, -- Num Pad 6 + { 0, 110 }, -- Num Pad 5 + { 0, 111 }, -- Num Pad 8 + { 0, 117 }, -- Num Pad 7 + { 0, 118 }, -- Num Pad 9 + { 0, 171 }, -- CAPSLOCK + { 0, 187 }, -- Down + { 0, 188 }, -- Up + { 0, 189 }, -- Left + { 0, 190 }, -- Right + { 0, 195 }, -- X axis + { 0, 196 }, -- Y axis + { 0, 201 }, -- Select + { 0, 202 }, -- Back + { 0, 203 }, -- Spacebar? + { 0, 217 }, -- Select + { 0, 239 }, -- Cursor X + { 0, 240 }, -- Cursor Y + { 0, 241 }, -- Scroll up + { 0, 242 }, -- Scroll down + { 0, 249 }, -- N + { 0, 305 }, -- B + { 0, 306 }, -- N }, } } @@ -2529,7 +2530,7 @@ function UIMenu.New(Title, Subtitle, X, Y, TxtDictionary, TxtName) _UIMenu.PageCounter.Text = UIResText.New("", 425 + _UIMenu.Position.X, 110 + _UIMenu.Position.Y, 0.35, 245, 245, 245, 255, 0, "Right") _UIMenu.Subtitle.ExtraY = 37 end - + _UIMenu.ArrowSprite = Sprite.New("commonmenu", "shop_arrows_upanddown", 190 + _UIMenu.Position.X, 147 + 37 * (_UIMenu.Pagination.Total + 1) + _UIMenu.Position.Y - 37 + _UIMenu.Subtitle.ExtraY, 50, 50) _UIMenu.Extra.Up = UIResRectangle.New(0 + _UIMenu.Position.X, 144 + 38 * (_UIMenu.Pagination.Total + 1) + _UIMenu.Position.Y - 37 + _UIMenu.Subtitle.ExtraY, 431, 18, 0, 0, 0, 200) _UIMenu.Extra.Down = UIResRectangle.New(0 + _UIMenu.Position.X, 144 + 18 + 38 * (_UIMenu.Pagination.Total + 1) + _UIMenu.Position.Y - 37 + _UIMenu.Subtitle.ExtraY, 431, 18, 0, 0, 0, 200) @@ -2555,9 +2556,9 @@ function UIMenu:SetMenuWidthOffset(Offset) if tonumber(Offset) then self.WidthOffset = math.floor(tonumber(Offset)) self.Logo:Size(431 + self.WidthOffset, 107) - self.Title:Position(((self.WidthOffset + 431)/2) + self.Position.X, 20 + self.Position.Y) + self.Title:Position(((self.WidthOffset + 431) / 2) + self.Position.X, 20 + self.Position.Y) if self.Subtitle.Rectangle ~= nil then - self.Subtitle.Rectangle:Size(431 + self.WidthOffset + 100, 37) + self.Subtitle.Rectangle:Size(431 + self.WidthOffset + 100, 37) self.PageCounter.Text:Position(425 + self.Position.X + self.WidthOffset, 110 + self.Position.Y) end if self.Banner ~= nil then @@ -2643,7 +2644,7 @@ function UIMenu:CurrentSelection(value) elseif self:CurrentSelection() < self.Pagination.Min then self.Pagination.Min = self:CurrentSelection() self.Pagination.Max = self:CurrentSelection() + self.Pagination.Total - end + end else if #self.Items == 0 then return 1 @@ -2880,7 +2881,7 @@ function UIMenu:ProcessControl() if self.Controls.Back.Enabled and (IsDisabledControlJustReleased(0, 177) or IsDisabledControlJustReleased(1, 177) or IsDisabledControlJustReleased(2, 177) or IsDisabledControlJustReleased(0, 199) or IsDisabledControlJustReleased(1, 199) or IsDisabledControlJustReleased(2, 199)) then self:GoBack() end - + if #self.Items == 0 then return end @@ -3029,7 +3030,7 @@ function UIMenu:GoDownOverflow() self.Pagination.Min = self.Pagination.Max - (self.Pagination.Total + 1) self.Items[self:CurrentSelection()]:Selected(false) self.ActiveItem = self.ActiveItem + 1 - self.Items[self:CurrentSelection()]:Selected(true) + self.Items[self:CurrentSelection()]:Selected(true) end else self.Items[self:CurrentSelection()]:Selected(false) @@ -3048,7 +3049,7 @@ function UIMenu:GoDown() self.Items[self:CurrentSelection()]:Selected(false) self.ActiveItem = self.ActiveItem + 1 - self.Items[self:CurrentSelection()]:Selected(true) + self.Items[self:CurrentSelection()]:Selected(true) PlaySoundFrontend(-1, self.Settings.Audio.UpDown, self.Settings.Audio.Library, true) self.OnIndexChange(self, self:CurrentSelection()) self.ReDraw = true @@ -3064,7 +3065,7 @@ function UIMenu:GoLeft() PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) return end - + if subtype == "UIMenuListItem" then local Item = self.Items[self:CurrentSelection()] Item:Index(Item._Index - 1) @@ -3141,7 +3142,7 @@ function UIMenu:SelectItem() elseif subtype == "UIMenuProgressItem" then PlaySoundFrontend(-1, self.Settings.Audio.Select, self.Settings.Audio.Library, true) self.OnProgressSelect(self, Item, Item.Data.Index) - Item.OnProgressSelected(Item.Data.Index) + Item.OnProgressSelected(Item.Data.Index) else PlaySoundFrontend(-1, self.Settings.Audio.Select, self.Settings.Audio.Library, true) self.OnItemSelect(self, Item, self:CurrentSelection()) @@ -3233,8 +3234,8 @@ function UIMenu:Draw() if #self.Windows ~= 0 then local WindowOffset = 0 for index = 1, #self.Windows do - if self.Windows[index - 1] then - WindowOffset = WindowOffset + self.Windows[index - 1].Background:Size().Height + if self.Windows[index - 1] then + WindowOffset = WindowOffset + self.Windows[index - 1].Background:Size().Height end local Window = self.Windows[index] Window:Position(WindowOffset + self.Subtitle.ExtraY - 37) @@ -3262,7 +3263,7 @@ function UIMenu:Draw() if #self.Items[CurrentSelection].Panels ~= 0 then local PanelOffset = self:CaclulatePanelPosition(self.Items[CurrentSelection]:Description() ~= "") for index = 1, #self.Items[CurrentSelection].Panels do - if self.Items[CurrentSelection].Panels[index - 1] then + if self.Items[CurrentSelection].Panels[index - 1] then PanelOffset = PanelOffset + self.Items[CurrentSelection].Panels[index - 1].Background:Size().Height + 5 end self.Items[CurrentSelection].Panels[index]:Position(PanelOffset) @@ -3324,10 +3325,10 @@ function UIMenu:ProcessMouse() return end - local SafeZone = {X = 0, Y = 0} + local SafeZone = { X = 0, Y = 0 } local WindowHeight = self:CalculateWindowHeight() if self.Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() + SafeZone = GetSafeZoneBounds() end local Limit = #self.Items @@ -3344,7 +3345,7 @@ function UIMenu:ProcessMouse() SetCursorSprite(6) elseif IsMouseInBounds(1920 - 30, 0, 30, 1080) and self.Settings.MouseEdgeEnabled then SetGameplayCamRelativeHeading(GetGameplayCamRelativeHeading() - 5) - SetCursorSprite(7) + SetCursorSprite(7) elseif self.Settings.MouseEdgeEnabled then SetCursorSprite(1) end @@ -3397,7 +3398,7 @@ function UIMenu:ProcessMouse() self:SelectItem() end elseif not Item:Selected() then - self:CurrentSelection(i-1) + self:CurrentSelection(i - 1) PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) self.OnIndexChange(self, self:CurrentSelection()) self.ReDraw = true @@ -3432,7 +3433,7 @@ function UIMenu:ProcessMouse() end end elseif not Item:Selected() then - self:CurrentSelection(i-1) + self:CurrentSelection(i - 1) PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) self.OnIndexChange(self, self:CurrentSelection()) self.ReDraw = true @@ -3440,7 +3441,7 @@ function UIMenu:ProcessMouse() elseif not Item:Enabled() and Item:Selected() then PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) end - Citizen.Wait(125) + Citizen.Wait(125) end self.Controls.MousePressed = false end) @@ -3477,7 +3478,7 @@ function UIMenu:ProcessMouse() end Citizen.Wait(125) end - self.Controls.MousePressed = false + self.Controls.MousePressed = false end) end end @@ -3506,7 +3507,7 @@ function UIMenu:ProcessMouse() end Citizen.Wait(125) end - self.Controls.MousePressed = false + self.Controls.MousePressed = false end) end end @@ -3540,7 +3541,7 @@ end function UIMenu:AddEnabledControl(Inputgroup, Control, Controller) if tonumber(Inputgroup) and tonumber(Control) then - table.insert(self.Settings.EnabledControls[(Controller and "Controller" or "Keyboard")], {Inputgroup, Control}) + table.insert(self.Settings.EnabledControls[(Controller and "Controller" or "Keyboard")], { Inputgroup, Control }) end end @@ -3558,7 +3559,7 @@ function UIMenu:UpdateScaleform() if not self._Visible or not self.Settings.InstructionalButtons then return end - + PushScaleformMovieFunction(self.InstructionalScaleform, "CLEAR_ALL") PopScaleformMovieFunction() @@ -3646,13 +3647,13 @@ function MenuPool:Add(Menu) end function MenuPool:Clear() - self = { - Menus = {} - } + self = { + Menus = {} + } end function MenuPool:Remove() - self = nil + self = nil end function MenuPool:MouseEdgeEnabled(bool) @@ -3808,6 +3809,7 @@ function MenuPool:TotalItemsPerPage(Value) end end end + --[[ Wrappers --]] diff --git a/resources/EmoteMenu/README.md b/resources/EmoteMenu/README.md index 5d31cec0d..75a08d9ed 100644 --- a/resources/EmoteMenu/README.md +++ b/resources/EmoteMenu/README.md @@ -1,12 +1,215 @@ -# dpemotes -Emotes / Animations for fiveM with Prop support. +# DpEmotes 🏋️ -Installation Instructions: +Emotes / Animations for FiveM with human, animal and prop support 🐩 -add dpemotes to your server.cfg +# Available in: -start dpemotes +* Brazilian Portuguese 🇧🇷 + +* Czech 🇨🇿 + +* Danish 🇩🇰 + +* Dutch 🇳🇱 + +* English 🇬🇧 + +* Finnish 🇫🇮 + +* French 🇫🇷 + +* German 🇩🇪 + +* Italian 🇮🇹 + +* Spanish 🇪🇸 + +* Swedish 🇸🇪 + +All languages were either translated using Google Translate or contributed by you, the community. + +If you happen to find any incorrect translations or would like to add more languages, please feel free to provide an "issue" with the correct / additional translations. + +Languages can be selected and/or added in config.lua. + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +# Ragdoll 🥴 + +* To enable ragdoll, change `RagdollEnabled = false,` to true in config.lua. + +* To change which key is responsible for ragdoll, `RagdollKeybind = 303` is currently set to `U` by default., -- Get the button number [here](https://docs.fivem.net/game-references/controls/) + +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + +# Menu Keybind 🎛️ + +**Important Note:** + +The keybind uses RegisterKeyMapping. By default, the server owner configured keybind in the *initial* config.lua will be the default key, however once the keybind is set for a user, it'll stay with this new value. Editing the config keybind will change it for new players only. + +* Menu key:* F5 + +F3 and F4 clash with [Menyoo](https://github.com/MAFINS/MenyooSP) and controllers 🎮 + +Server owners can change this in the `config.lua`; + +```lua +MenuKeybind = 'F5', -- Get the button string here https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ +``` + +Alternatively, the player base can set their own menu keybind to open DpEmotes + +```lua +Esc > settings > keybinds > fivem > dpemotes +``` + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +# Keybinds and SQL 🎛️ + +The original dpemotes uses mysql-async which was then changed to ghmattimysql. Unfortunately, they are no longer maintained. + +To use the SQL features, install the [oxmysql](https://github.com/overextended/oxmysql) resource. If you do not want to use the SQL features, comment out the `oxmysql` region in fxmanifest.lua. + + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +# Screenshots 📸 + + + +| | | | +|-|-|-| +| | | | +| | | | +| | | | +| | | +| | + + + +----------------------------------------------------------------------------------------------------------------------------------------------------- + + +# Installation Instructions ⚙️: + +* add DpEmotes to your `server.cfg` + +* [Enforce gamebuild to latest build](https://forum.cfx.re/t/tutorial-forcing-gamebuild-to-casino-cayo-perico-or-tuners-update/4784977) for all emotes and props to work correctly + +* start dpemotes + + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +# Shared emotes 👩🏻‍❤️‍💋‍👨🏼 + +Emotes will work with either `SyncOffsetFront` or `Attachto`. + +- If it is with `SyncOffsetFront`, then the offset used is the one of the emote the player started.
+For example, if player one starts the emote `handshake`, then player one will have the SyncOffsetFront but not the other player. + + +- If it is with `Attachto`, then it'll either be player one's data used for attaching, or the player two's data.
+For example, if player one start the emote carry, then the other player will be attached but not the player one because Attachto is set in `carry2` and not `carry`.
+- If player one starts the emote `carry2`, then player one will be attached and not the other player. +it's the player who start the animation who will in most cases be moved + + +*Special case, if both emote have the `Attachto` then only the player who started the emote will be attached.* + +You can find a list of ped bones to attach the other player here: [Ped Bones](https://wiki.rage.mp/index.php?title=Bones) + +Using the website provided above, enter the bone ID, ie `1356` and not 111, which is the Bone Index. + + + + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------- + + +# Add-Ons 🛠️ + +* Fixed an issue with the clipboard and adds textures to paper (/e clipboard) + +* Changes umbrella texture to black (/e umbrella) + +# Optional Add-Ons 🛠️ + +* Adds textures to the mugshot prop (/e mugshot) + +* Retextured protest sign (can be changed using Texture Toolkit: https://www.gta5-mods.com/tools/texture-toolkit) + +**Grab it here:** + +[Add-Ons For DpEmotes](https://github.com/TayMcKenzieNZ/addonsfordpemotes) + + +-------------------------------------------------------- + + +# Additional Instructions ⚙️ + +[Please check the fivem forum thread](https://forum.fivem.net/t/dpemotes-356ish-emotes-usable-while-walking-props-and-more/843105) + + + +---------------------- + +# Police Badge 👮 + +- Custom LSPD police badge by [LSPDFR member Sam](https://www.lcpdfr.com/downloads/gta5mods/misc/23386-lspd-police-badge/) + +- LSPD reskinned badge by [GTA5Mods user Sladus_Slawonkus](https://www.gta5-mods.com/misc/lspd-police-badge-replace-sladus_slawonkus) + + +---------------------- + +# FAQs 🗨️ + +**Q: Why do some emotes not work with females?** + +**A:** Blame Rockstar Games. I've done my best to replicate animations to work with females, however some male scenarios have sound effects and particles, of which I am unfamiliar with and syncing particles is out of my expertise. + +---------------------- + +**Q: Why do some emotes not work at all?** + +**A:** Check the Installation Instructions above as you need to be on the highest FiveM gamebuild. + +---------------------- + +**Q: Why do I see particle effects but other players don't?** + +**A:** Dullpear and I can't figure out how to sync particles. If you know how, feel free to inform me. + +---------------------- + +**Q: I bought this script off someone and notice it had a lot of the same animations. Can you help me?** + +**A:** You got scammed and that's your fault. Dpemotes is and always will be **FREE**. + +---------------------- + +**Q: Can I add my own emotes to this?** + +**A:** Of course, see my in depth [tutorial](https://forum.cfx.re/t/how-to-menyoo-to-dpemotes-conversion/4775018) for using Menyoo and converting them to work with dpemotes. + +You may sell ***custom made*** animations, however the menu must remain free. + +---------------------- + +**Q: I bought a pack of custom animations, how can I add them to your fork of dpemotes?** + +**A:** Usually the person who created them will provide code snippets for adding animations to dpemotes. If for whatever reason they haven't, you should contact them. + +---------------------- + +**Q: How do I reset the SQL keybinds?** + +**A:** No idea, but apparently only the server owner can 🤷🏻‍♂️ Google exist; Maybe contact the creator. + +---------------------- -Other instructions please check the fivem forum thread -https://forum.fivem.net/t/dpemotes-356ish-emotes-usable-while-walking-props-and-more/843105 diff --git a/resources/EmoteMenu/Server/Server.lua b/resources/EmoteMenu/Server/Server.lua index 42fcbe798..0a3472a0a 100644 --- a/resources/EmoteMenu/Server/Server.lua +++ b/resources/EmoteMenu/Server/Server.lua @@ -1,80 +1,125 @@ - ----------------------------------------------------------------------------------------------------- -- Shared Emotes Syncing --------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- RegisterServerEvent("ServerEmoteRequest") AddEventHandler("ServerEmoteRequest", function(target, emotename, etype) - TriggerClientEvent("ClientEmoteRequestReceive", target, emotename, etype) + TriggerClientEvent("ClientEmoteRequestReceive", target, emotename, etype) end) -RegisterServerEvent("ServerValidEmote") +RegisterServerEvent("ServerValidEmote") AddEventHandler("ServerValidEmote", function(target, requestedemote, otheremote) - TriggerClientEvent("SyncPlayEmote", source, otheremote, source) - TriggerClientEvent("SyncPlayEmoteSource", target, requestedemote) + TriggerClientEvent("SyncPlayEmote", source, otheremote, target) + TriggerClientEvent("SyncPlayEmoteSource", target, requestedemote, source) +end) + +RegisterServerEvent("ServerEmoteCancel") +AddEventHandler("ServerEmoteCancel", function(target) + TriggerClientEvent("SyncCancelEmote", target, source) end) ----------------------------------------------------------------------------------------------------- -- Keybinding -------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- -if Config.SqlKeybinding then - MySQL.ready(function() +local function addKeybindEventHandlers() + RegisterServerEvent("dp:ServerKeybindExist") + AddEventHandler('dp:ServerKeybindExist', function() + local src = source + local srcid = GetPlayerIdentifier(source) + MySQL.query('SELECT * FROM dpkeybinds WHERE `id`=@id;', { id = srcid }, function(dpkeybinds) + if dpkeybinds[1] then + TriggerClientEvent("dp:ClientKeybindExist", src, true) + else + TriggerClientEvent("dp:ClientKeybindExist", src, false) + end + end) + end) - RegisterServerEvent("dp:ServerKeybindExist") - AddEventHandler('dp:ServerKeybindExist', function() - local src = source local srcid = GetPlayerIdentifier(source) - MySQL.Async.fetchAll('SELECT * FROM dpkeybinds WHERE `id`=@id;', {id = srcid}, function(dpkeybinds) - if dpkeybinds[1] then - TriggerClientEvent("dp:ClientKeybindExist", src, true) - else - TriggerClientEvent("dp:ClientKeybindExist", src, false) - end - end) - end) + -- This is my first time doing SQL stuff, and after i finished everything i realized i didnt have to store the keybinds in the database at all. + -- But remaking it now is a little pointless since it does it job just fine! - -- This is my first time doing SQL stuff, and after i finished everything i realized i didnt have to store the keybinds in the database at all. - -- But remaking it now is a little pointless since it does it job just fine! + RegisterServerEvent("dp:ServerKeybindCreate") + AddEventHandler("dp:ServerKeybindCreate", function() + local src = source + local srcid = GetPlayerIdentifier(source) + MySQL.insert('INSERT INTO dpkeybinds (`id`, `keybind1`, `emote1`, `keybind2`, `emote2`, `keybind3`, `emote3`, `keybind4`, `emote4`, `keybind5`, `emote5`, `keybind6`, `emote6`) VALUES (@id, @keybind1, @emote1, @keybind2, @emote2, @keybind3, @emote3, @keybind4, @emote4, @keybind5, @emote5, @keybind6, @emote6);', + { id = srcid, keybind1 = "num4", emote1 = "", keybind2 = "num5", emote2 = "", keybind3 = "num6", emote3 = "", keybind4 = "num7", emote4 = "", keybind5 = "num8", emote5 = "", keybind6 = "num9", emote6 = "" }, function(created) print("[dp] ^2" .. GetPlayerName(src) .. "^7 got created!") TriggerClientEvent("dp:ClientKeybindGet", src, "num4", "", "num5", "", "num6", "", "num7", "", "num8", "", "num8", "") end) + end) - RegisterServerEvent("dp:ServerKeybindCreate") - AddEventHandler("dp:ServerKeybindCreate", function() - local src = source local srcid = GetPlayerIdentifier(source) - MySQL.Async.execute('INSERT INTO dpkeybinds (`id`, `keybind1`, `emote1`, `keybind2`, `emote2`, `keybind3`, `emote3`, `keybind4`, `emote4`, `keybind5`, `emote5`, `keybind6`, `emote6`) VALUES (@id, @keybind1, @emote1, @keybind2, @emote2, @keybind3, @emote3, @keybind4, @emote4, @keybind5, @emote5, @keybind6, @emote6);', - {id = srcid, keybind1 = "num4", emote1 = "", keybind2 = "num5", emote2 = "", keybind3 = "num6", emote3 = "", keybind4 = "num7", emote4 = "", keybind5 = "num8", emote5 = "", keybind6 = "num9", emote6 = ""}, function(created) print("[dp] ^2"..GetPlayerName(src).."^7 got created!") TriggerClientEvent("dp:ClientKeybindGet", src, "num4", "", "num5", "", "num6", "", "num7", "", "num8", "", "num8", "") end) - end) + RegisterServerEvent("dp:ServerKeybindGrab") + AddEventHandler("dp:ServerKeybindGrab", function() + local src = source + local srcid = GetPlayerIdentifier(source) + MySQL.query('SELECT keybind1, emote1, keybind2, emote2, keybind3, emote3, keybind4, emote4, keybind5, emote5, keybind6, emote6 FROM `dpkeybinds` WHERE `id` = @id' + , + { ['@id'] = srcid }, function(kb) + if kb[1].keybind1 ~= nil then + TriggerClientEvent("dp:ClientKeybindGet", src, kb[1].keybind1, kb[1].emote1, kb[1].keybind2, kb[1].emote2 , kb[1].keybind3, kb[1].emote3, kb[1].keybind4, kb[1].emote4, kb[1].keybind5, kb[1].emote5, kb[1].keybind6, kb[1].emote6) + else + TriggerClientEvent("dp:ClientKeybindGet", src, "num4", "", "num5", "", "num6", "", "num7", "", "num8", "", "num8", "") + end + end) + end) - RegisterServerEvent("dp:ServerKeybindGrab") - AddEventHandler("dp:ServerKeybindGrab", function() - local src = source local srcid = GetPlayerIdentifier(source) - MySQL.Async.fetchAll('SELECT keybind1, emote1, keybind2, emote2, keybind3, emote3, keybind4, emote4, keybind5, emote5, keybind6, emote6 FROM `dpkeybinds` WHERE `id` = @id', - {['@id'] = srcid}, function(kb) - if kb[1].keybind1 ~= nil then - TriggerClientEvent("dp:ClientKeybindGet", src, kb[1].keybind1, kb[1].emote1, kb[1].keybind2, kb[1].emote2, kb[1].keybind3, kb[1].emote3, kb[1].keybind4, kb[1].emote4, kb[1].keybind5, kb[1].emote5, kb[1].keybind6, kb[1].emote6) - else - TriggerClientEvent("dp:ClientKeybindGet", src, "num4", "", "num5", "", "num6", "", "num7", "", "num8", "", "num8", "") - end - end) - end) - - RegisterServerEvent("dp:ServerKeybindUpdate") - AddEventHandler("dp:ServerKeybindUpdate", function(key, emote) - local src = source local myid = GetPlayerIdentifier(source) - if key == "num4" then chosenk = "keybind1" elseif key == "num5" then chosenk = "keybind2" elseif key == "num6" then chosenk = "keybind3" elseif key == "num7" then chosenk = "keybind4" elseif key == "num8" then chosenk = "keybind5" elseif key == "num9" then chosenk = "keybind6" end - if chosenk == "keybind1" then - MySQL.Async.execute("UPDATE dpkeybinds SET emote1=@emote WHERE id=@id", {id = myid, emote = emote}, function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind2" then - MySQL.Async.execute("UPDATE dpkeybinds SET emote2=@emote WHERE id=@id", {id = myid, emote = emote}, function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind3" then - MySQL.Async.execute("UPDATE dpkeybinds SET emote3=@emote WHERE id=@id", {id = myid, emote = emote}, function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind4" then - MySQL.Async.execute("UPDATE dpkeybinds SET emote4=@emote WHERE id=@id", {id = myid, emote = emote}, function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind5" then - MySQL.Async.execute("UPDATE dpkeybinds SET emote5=@emote WHERE id=@id", {id = myid, emote = emote}, function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind6" then - MySQL.Async.execute("UPDATE dpkeybinds SET emote6=@emote WHERE id=@id", {id = myid, emote = emote}, function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - end - end) - end) -else - print("[dp] ^3Sql Keybinding^7 is turned ^1off^7, if you want to enable /emotebind, import dpkeybinding.sql and set ^3SqlKeybinding = ^2true^7 in config.lua.") + RegisterServerEvent("dp:ServerKeybindUpdate") + AddEventHandler("dp:ServerKeybindUpdate", function(key, emote) + local src = source + local myid = GetPlayerIdentifier(source) + if key == "num4" then chosenk = "keybind1" + elseif key == "num5" then chosenk = "keybind2" + elseif key == "num6" then chosenk = "keybind3" + elseif key == "num7" then chosenk = "keybind4" + elseif key == "num8" then chosenk = "keybind5" + elseif key == "num9" then chosenk = "keybind6" + end + if chosenk == "keybind1" then + MySQL.update("UPDATE dpkeybinds SET emote1=@emote WHERE id=@id", { id = myid, emote = emote }, + function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) + elseif chosenk == "keybind2" then + MySQL.update("UPDATE dpkeybinds SET emote2=@emote WHERE id=@id", { id = myid, emote = emote }, + function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) + elseif chosenk == "keybind3" then + MySQL.update("UPDATE dpkeybinds SET emote3=@emote WHERE id=@id", { id = myid, emote = emote }, + function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) + elseif chosenk == "keybind4" then + MySQL.update("UPDATE dpkeybinds SET emote4=@emote WHERE id=@id", { id = myid, emote = emote }, + function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) + elseif chosenk == "keybind5" then + MySQL.update("UPDATE dpkeybinds SET emote5=@emote WHERE id=@id", { id = myid, emote = emote }, + function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) + elseif chosenk == "keybind6" then + MySQL.update("UPDATE dpkeybinds SET emote6=@emote WHERE id=@id", { id = myid, emote = emote }, + function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) + end + end) +end + +if Config.SqlKeybinding and MySQL then + MySQL.update( + [[ + CREATE TABLE IF NOT EXISTS `dpkeybinds` ( + `id` varchar(50) NULL DEFAULT NULL, + `keybind1` varchar(50) NULL DEFAULT "num4", + `emote1` varchar(255) NULL DEFAULT "", + `keybind2` varchar(50) NULL DEFAULT "num5", + `emote2` varchar(255) NULL DEFAULT "", + `keybind3` varchar(50) NULL DEFAULT "num6", + `emote3` varchar(255) NULL DEFAULT "", + `keybind4` varchar(50) NULL DEFAULT "num7", + `emote4` varchar(255) NULL DEFAULT "", + `keybind5` varchar(50) NULL DEFAULT "num8", + `emote5` varchar(255) NULL DEFAULT "", + `keybind6` varchar(50) NULL DEFAULT "num9", + `emote6` varchar(255) NULL DEFAULT "" + ) ENGINE=InnoDB COLLATE=latin1_swedish_ci; + ]], {}, function(success) + if success then + addKeybindEventHandlers() + else + print("[dp] ^3Error connecting to DB^7") + end + end) +else + print("[dp] ^3Sql Keybinding^7 is turned ^1off^7, if you want to enable /emotebind, set ^3SqlKeybinding = ^2true^7 in config.lua and uncomment oxmysql lines in fxmanifest.lua.") end diff --git a/resources/EmoteMenu/Server/Updates.lua b/resources/EmoteMenu/Server/Updates.lua index bdb646576..9ae344f1d 100644 --- a/resources/EmoteMenu/Server/Updates.lua +++ b/resources/EmoteMenu/Server/Updates.lua @@ -1,12 +1,12 @@ if Config.CheckForUpdates then - Citizen.CreateThread( function() - updatePath = "/andristum/dpemotes" - resourceName = "dp Emotes ("..GetCurrentResourceName()..")" - PerformHttpRequest("https://raw.githubusercontent.com"..updatePath.."/master/version", checkVersion, "GET") + Citizen.CreateThread(function() + updatePath = "/TayMcKenzieNZ/dpemotes" + resourceName = "dp Emotes (" .. GetCurrentResourceName() .. ")" + PerformHttpRequest("https://raw.githubusercontent.com" .. updatePath .. "/master/version", checkVersion, "GET") end) end -RegisterServerEvent("dp:CheckVersion") +RegisterServerEvent("dp:CheckVersion") AddEventHandler("dp:CheckVersion", function() if updateavail then TriggerClientEvent("dp:Update", source, true) @@ -15,19 +15,19 @@ AddEventHandler("dp:CheckVersion", function() end end) -function checkVersion(err,responseText, headers) +function checkVersion(err, responseText, headers) curVersion = LoadResourceFile(GetCurrentResourceName(), "version") if curVersion ~= responseText and tonumber(curVersion) < tonumber(responseText) then updateavail = true print("\n^1----------------------------------------------------------------------------------^7") - print(resourceName.." is outdated, latest version is: ^2"..responseText.."^7, installed version: ^1"..curVersion.."^7!\nupdate from https://github.com"..updatePath.."") + print(resourceName .. " is outdated, latest version is: ^2" .. responseText .. "^7, installed version: ^1" .. curVersion .. "^7!\nupdate from https://github.com" .. updatePath .. "") print("^1----------------------------------------------------------------------------------^7") elseif tonumber(curVersion) > tonumber(responseText) then print("\n^3----------------------------------------------------------------------------------^7") - print(resourceName.." git version is: ^2"..responseText.."^7, installed version: ^1"..curVersion.."^7!") + print(resourceName .. " git version is: ^2" .. responseText .. "^7, installed version: ^1" .. curVersion .. "^7!") print("^3----------------------------------------------------------------------------------^7") else - print("\n"..resourceName.." is up to date. (^2"..curVersion.."^7)") + print("\n" .. resourceName .. " is up to date. (^2" .. curVersion .. "^7)") end -end \ No newline at end of file +end diff --git a/resources/EmoteMenu/__resource.lua b/resources/EmoteMenu/__resource.lua deleted file mode 100644 index 82e2ac5fd..000000000 --- a/resources/EmoteMenu/__resource.lua +++ /dev/null @@ -1,13 +0,0 @@ -resource_manifest_version '05cfa83c-a124-4cfa-a768-c24a5811d8f9' - -client_scripts { - 'NativeUI.lua', - 'Config.lua', - 'Client/*.lua' -} - -server_scripts { - 'Config.lua', - '@mysql-async/lib/MySQL.lua', - 'Server/*.lua' -} \ No newline at end of file diff --git a/resources/EmoteMenu/dpkeybinds.sql b/resources/EmoteMenu/dpkeybinds.sql deleted file mode 100644 index 08d83189e..000000000 --- a/resources/EmoteMenu/dpkeybinds.sql +++ /dev/null @@ -1,16 +0,0 @@ - -CREATE TABLE IF NOT EXISTS `dpkeybinds` ( - `id` varchar(50) NULL DEFAULT NULL, - `keybind1` varchar(50) NULL DEFAULT "num4", - `emote1` varchar(255) NULL DEFAULT "", - `keybind2` varchar(50) NULL DEFAULT "num5", - `emote2` varchar(255) NULL DEFAULT "", - `keybind3` varchar(50) NULL DEFAULT "num6", - `emote3` varchar(255) NULL DEFAULT "", - `keybind4` varchar(50) NULL DEFAULT "num7", - `emote4` varchar(255) NULL DEFAULT "", - `keybind5` varchar(50) NULL DEFAULT "num8", - `emote5` varchar(255) NULL DEFAULT "", - `keybind6` varchar(50) NULL DEFAULT "num9", - `emote6` varchar(255) NULL DEFAULT "" -) ENGINE=InnoDB COLLATE=latin1_swedish_ci; \ No newline at end of file diff --git a/resources/dpemotes-master/fxmanifest.lua b/resources/EmoteMenu/fxmanifest.lua similarity index 100% rename from resources/dpemotes-master/fxmanifest.lua rename to resources/EmoteMenu/fxmanifest.lua diff --git a/resources/dpemotes-master/printer.lua b/resources/EmoteMenu/printer.lua similarity index 100% rename from resources/dpemotes-master/printer.lua rename to resources/EmoteMenu/printer.lua diff --git a/resources/dpemotes-master/screenshots/boop.jpg b/resources/EmoteMenu/screenshots/boop.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/boop.jpg rename to resources/EmoteMenu/screenshots/boop.jpg diff --git a/resources/dpemotes-master/screenshots/cb_before.jpg b/resources/EmoteMenu/screenshots/cb_before.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/cb_before.jpg rename to resources/EmoteMenu/screenshots/cb_before.jpg diff --git a/resources/dpemotes-master/screenshots/cp_after.jpg b/resources/EmoteMenu/screenshots/cp_after.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/cp_after.jpg rename to resources/EmoteMenu/screenshots/cp_after.jpg diff --git a/resources/dpemotes-master/screenshots/flag1.jpg b/resources/EmoteMenu/screenshots/flag1.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag1.jpg rename to resources/EmoteMenu/screenshots/flag1.jpg diff --git a/resources/dpemotes-master/screenshots/flag2.jpg b/resources/EmoteMenu/screenshots/flag2.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag2.jpg rename to resources/EmoteMenu/screenshots/flag2.jpg diff --git a/resources/dpemotes-master/screenshots/flag3.jpg b/resources/EmoteMenu/screenshots/flag3.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag3.jpg rename to resources/EmoteMenu/screenshots/flag3.jpg diff --git a/resources/dpemotes-master/screenshots/flag4.jpg b/resources/EmoteMenu/screenshots/flag4.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag4.jpg rename to resources/EmoteMenu/screenshots/flag4.jpg diff --git a/resources/dpemotes-master/screenshots/flag5.jpg b/resources/EmoteMenu/screenshots/flag5.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag5.jpg rename to resources/EmoteMenu/screenshots/flag5.jpg diff --git a/resources/dpemotes-master/screenshots/flag6.jpg b/resources/EmoteMenu/screenshots/flag6.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag6.jpg rename to resources/EmoteMenu/screenshots/flag6.jpg diff --git a/resources/dpemotes-master/screenshots/flag7.jpg b/resources/EmoteMenu/screenshots/flag7.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag7.jpg rename to resources/EmoteMenu/screenshots/flag7.jpg diff --git a/resources/dpemotes-master/screenshots/flag8.jpg b/resources/EmoteMenu/screenshots/flag8.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag8.jpg rename to resources/EmoteMenu/screenshots/flag8.jpg diff --git a/resources/dpemotes-master/screenshots/flag9.jpg b/resources/EmoteMenu/screenshots/flag9.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/flag9.jpg rename to resources/EmoteMenu/screenshots/flag9.jpg diff --git a/resources/dpemotes-master/screenshots/menu.jpg b/resources/EmoteMenu/screenshots/menu.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/menu.jpg rename to resources/EmoteMenu/screenshots/menu.jpg diff --git a/resources/dpemotes-master/screenshots/umbrella.jpg b/resources/EmoteMenu/screenshots/umbrella.jpg similarity index 100% rename from resources/dpemotes-master/screenshots/umbrella.jpg rename to resources/EmoteMenu/screenshots/umbrella.jpg diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@bar@special_peds@lauren@01a@base@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@bar@special_peds@lauren@01a@base@.ycd deleted file mode 100644 index 4d3461195..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@bar@special_peds@lauren@01a@base@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@bar@special_peds@taylor@01a@base@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@bar@special_peds@taylor@01a@base@.ycd deleted file mode 100644 index 03a5d53c1..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@bar@special_peds@taylor@01a@base@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@collect@comic_shop@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@collect@comic_shop@.ycd deleted file mode 100644 index 0fcf111dc..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@collect@comic_shop@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@game@slots@male.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@game@slots@male.ycd deleted file mode 100644 index 729bcbc72..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@game@slots@male.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@games@threecardpoker@ped_male@regular_withdrink@01a@trans.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@games@threecardpoker@ped_male@regular_withdrink@01a@trans.ycd deleted file mode 100644 index 442ff40a4..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@games@threecardpoker@ped_male@regular_withdrink@01a@trans.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@games@threecardpoker@ped_male@regular_withdrink@01b@trans.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@games@threecardpoker@ped_male@regular_withdrink@01b@trans.ycd deleted file mode 100644 index a0d1f5ff9..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@games@threecardpoker@ped_male@regular_withdrink@01b@trans.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@.ycd deleted file mode 100644 index 4b0918718..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@base.ycd deleted file mode 100644 index 91c944996..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@enter.ycd deleted file mode 100644 index 1590e2d3a..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@exit.ycd deleted file mode 100644 index c9cd7418b..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@idles.ycd deleted file mode 100644 index 648e41098..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@idles_convo.ycd deleted file mode 100644 index 4b66b5be8..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01a@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@base.ycd deleted file mode 100644 index f9db11f6f..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@enter.ycd deleted file mode 100644 index 7bd36ba54..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@exit.ycd deleted file mode 100644 index 977646323..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@idles.ycd deleted file mode 100644 index a1782a97b..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@idles_convo.ycd deleted file mode 100644 index 94de168ec..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@01b@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@base.ycd deleted file mode 100644 index d802bd7ad..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@enter.ycd deleted file mode 100644 index f88547100..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@exit.ycd deleted file mode 100644 index 7b3b031f9..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@idles.ycd deleted file mode 100644 index e3cb2a0a1..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@idles_convo.ycd deleted file mode 100644 index a776ad765..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02a@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@base.ycd deleted file mode 100644 index b72876ed7..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@enter.ycd deleted file mode 100644 index 9c292a600..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@exit.ycd deleted file mode 100644 index 82a4d6b5c..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@idles.ycd deleted file mode 100644 index bd81113ea..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@idles_convo.ycd deleted file mode 100644 index 1e50f070d..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@02b@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@base.ycd deleted file mode 100644 index f3356b86c..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@enter.ycd deleted file mode 100644 index f134c9580..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@exit.ycd deleted file mode 100644 index 86be9998b..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@idles.ycd deleted file mode 100644 index 82e260c39..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@idles_convo.ycd deleted file mode 100644 index 1c7a61753..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03a@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@base.ycd deleted file mode 100644 index 2c3f0e575..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@enter.ycd deleted file mode 100644 index 514255b12..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@exit.ycd deleted file mode 100644 index 4daf90b42..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@idles.ycd deleted file mode 100644 index 233aba333..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@idles_convo.ycd deleted file mode 100644 index 2ba0cc59e..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand@03b@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@base.ycd deleted file mode 100644 index aecade250..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@enter.ycd deleted file mode 100644 index 708a03c1f..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@exit.ycd deleted file mode 100644 index c6a9e10c0..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@idles.ycd deleted file mode 100644 index 03dca8554..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@idles_convo.ycd deleted file mode 100644 index 643e1d0e5..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01a@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@base.ycd deleted file mode 100644 index ed1fe6475..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@enter.ycd deleted file mode 100644 index 244e3be04..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@exit.ycd deleted file mode 100644 index befcb1fc3..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@idles.ycd deleted file mode 100644 index e6fc3276b..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@idles_convo.ycd deleted file mode 100644 index 099a06e87..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_female@stand_withdrink@01b@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@base.ycd deleted file mode 100644 index 2c8aec7d5..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@enter.ycd deleted file mode 100644 index 5ed4698f0..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@exit.ycd deleted file mode 100644 index 33eacf5cb..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@idles.ycd deleted file mode 100644 index dc859f98d..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@idles_convo.ycd deleted file mode 100644 index a2de76658..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01a@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@base.ycd deleted file mode 100644 index 907bce3b7..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@enter.ycd deleted file mode 100644 index 16672021f..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@exit.ycd deleted file mode 100644 index 590199428..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@idles.ycd deleted file mode 100644 index 7369638d7..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@idles_convo.ycd deleted file mode 100644 index 0c23eeac8..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@01b@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@base.ycd deleted file mode 100644 index 11cf39707..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@enter.ycd deleted file mode 100644 index de4198908..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@exit.ycd deleted file mode 100644 index 0f0df627f..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@idles.ycd deleted file mode 100644 index cee470024..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@idles_convo.ycd deleted file mode 100644 index 0adbf3863..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@trans.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@trans.ycd deleted file mode 100644 index d723c9920..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02a@trans.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@base.ycd deleted file mode 100644 index f43883e75..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@enter.ycd deleted file mode 100644 index c80834bcb..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@exit.ycd deleted file mode 100644 index b81edcf19..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@idles.ycd deleted file mode 100644 index 3d77fa25f..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@idles_convo.ycd deleted file mode 100644 index fb9676c9c..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@trans.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@trans.ycd deleted file mode 100644 index fe745b80f..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@02b@trans.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@base.ycd deleted file mode 100644 index 5b6cc33cb..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@enter.ycd deleted file mode 100644 index f457f67b0..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@exit.ycd deleted file mode 100644 index 45f33483a..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@idles.ycd deleted file mode 100644 index f733de8b8..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@idles_convo.ycd deleted file mode 100644 index 6960749bc..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03a@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@base.ycd deleted file mode 100644 index 45a3790fe..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@enter.ycd deleted file mode 100644 index 4b9093172..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@exit.ycd deleted file mode 100644 index c0b429b2b..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@idles.ycd deleted file mode 100644 index 24e955011..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@idles_convo.ycd deleted file mode 100644 index 4cbbf8305..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand@03b@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@base.ycd deleted file mode 100644 index dc5034de7..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@enter.ycd deleted file mode 100644 index 7e12e5232..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@exit.ycd deleted file mode 100644 index f3bcae825..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@idles.ycd deleted file mode 100644 index db79c0aa1..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@idles_convo.ycd deleted file mode 100644 index f7f4632bb..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01a@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@base.ycd deleted file mode 100644 index bf856dc39..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@enter.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@enter.ycd deleted file mode 100644 index f10df2ebb..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@enter.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@exit.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@exit.ycd deleted file mode 100644 index c60174f8c..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@exit.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@idles.ycd deleted file mode 100644 index ea990f372..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@idles_convo.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@idles_convo.ycd deleted file mode 100644 index 2df87f269..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@hangout@ped_male@stand_withdrink@01b@idles_convo.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@dance@dance_solo@female@var_a@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@dance@dance_solo@female@var_a@.ycd deleted file mode 100644 index b4a6ffe26..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@dance@dance_solo@female@var_a@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@dance@dance_solo@female@var_b@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@dance@dance_solo@female@var_b@.ycd deleted file mode 100644 index 6f1cf9b3e..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@dance@dance_solo@female@var_b@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@base.ycd deleted file mode 100644 index 7a0522858..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@beer.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@beer.ycd deleted file mode 100644 index aed843db3..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@beer.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@four.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@four.ycd deleted file mode 100644 index e90ec6007..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@four.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@idle_a.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@idle_a.ycd deleted file mode 100644 index 40a6e865d..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@idle_a.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@one.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@one.ycd deleted file mode 100644 index a971b340c..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@one.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@three.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@three.ycd deleted file mode 100644 index e5d890c26..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@three.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@two.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@two.ycd deleted file mode 100644 index 871a37f5c..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink@heels@two.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@base.ycd deleted file mode 100644 index e46b6ba15..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@beer.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@beer.ycd deleted file mode 100644 index 82b4ea47d..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@beer.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@idle_a.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@idle_a.ycd deleted file mode 100644 index 0d807bf4f..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@mini@drinking@bar@drink_v2@heels@idle_a.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01a@base.ycd deleted file mode 100644 index 0749b9b27..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01a@idles.ycd deleted file mode 100644 index a4cb85276..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01b@base.ycd deleted file mode 100644 index bb5e1223b..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01b@idles.ycd deleted file mode 100644 index 2bfd46af8..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@01b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02a@base.ycd deleted file mode 100644 index bb62fece3..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02a@idles.ycd deleted file mode 100644 index 079404f10..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02b@base.ycd deleted file mode 100644 index 9b0a9720a..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02b@idles.ycd deleted file mode 100644 index 44234ce78..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_female@02b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01a@base.ycd deleted file mode 100644 index a3cabb7a8..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01a@idles.ycd deleted file mode 100644 index 5e23b65a1..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01b@base.ycd deleted file mode 100644 index ed5b2a567..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01b@idles.ycd deleted file mode 100644 index 6cc833fed..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@01b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02a@base.ycd deleted file mode 100644 index 48f9b9f30..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02a@idles.ycd deleted file mode 100644 index 7458a91bf..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02b@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02b@base.ycd deleted file mode 100644 index bf51e0cc9..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02b@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02b@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02b@idles.ycd deleted file mode 100644 index 8bb165cf1..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@out_of_money@ped_male@02b@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@peds@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@peds@.ycd deleted file mode 100644 index b7564f3a3..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@peds@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_female@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_female@01a@base.ycd deleted file mode 100644 index f84679e6a..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_female@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_female@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_female@01a@idles.ycd deleted file mode 100644 index 675c46bdb..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_female@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_male@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_male@01a@base.ycd deleted file mode 100644 index 02ec2e131..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_male@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_male@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_male@01a@idles.ycd deleted file mode 100644 index 53b54c181..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@ped_male@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@carol@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@carol@01a@base.ycd deleted file mode 100644 index fe76f8b08..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@carol@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@carol@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@carol@01a@idles.ycd deleted file mode 100644 index c9a2f8cb2..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@carol@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@dean@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@dean@01a@base.ycd deleted file mode 100644 index 40fade60e..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@dean@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@dean@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@dean@01a@idles.ycd deleted file mode 100644 index ad1b146c1..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@casino@shop@special_peds@dean@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@stand_withdrink@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@stand_withdrink@01a@base.ycd deleted file mode 100644 index bd66eb489..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@stand_withdrink@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@waving@female.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@waving@female.ycd deleted file mode 100644 index a0690dd89..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@waving@female.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@waving@male.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@waving@male.ycd deleted file mode 100644 index b3a752f9e..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@amb@waving@male.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@move_f@waitress.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@move_f@waitress.ycd deleted file mode 100644 index 62effcee3..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@move_f@waitress.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@cry_baby.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@cry_baby.ycd deleted file mode 100644 index 6e48c5a2c..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@cry_baby.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@cut_throat.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@cut_throat.ycd deleted file mode 100644 index 7d9e86993..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@cut_throat.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@karate_chops.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@karate_chops.ycd deleted file mode 100644 index 2e6fb1a65..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@karate_chops.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@mind_blown.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@mind_blown.ycd deleted file mode 100644 index ddc5f8b31..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@mind_blown.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@shadow_boxing.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@shadow_boxing.ycd deleted file mode 100644 index 3a2087761..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@shadow_boxing.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@stinker.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@stinker.ycd deleted file mode 100644 index 0040e4751..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@stinker.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@the_woogie.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@the_woogie.ycd deleted file mode 100644 index fb78d5322..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationfemale@the_woogie.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@cry_baby.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@cry_baby.ycd deleted file mode 100644 index 4671066fa..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@cry_baby.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@cut_throat.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@cut_throat.ycd deleted file mode 100644 index 351e9ae0e..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@cut_throat.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@karate_chops.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@karate_chops.ycd deleted file mode 100644 index 4b3f79d74..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@karate_chops.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@mind_blown.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@mind_blown.ycd deleted file mode 100644 index 7834262a0..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@mind_blown.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@shadow_boxing.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@shadow_boxing.ycd deleted file mode 100644 index 4231828c7..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@shadow_boxing.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@stinker.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@stinker.ycd deleted file mode 100644 index 805d05eb8..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@stinker.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@the_woogie.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@the_woogie.ycd deleted file mode 100644 index 24ac9eceb..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intcelebrationmale@the_woogie.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppercry_baby.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppercry_baby.ycd deleted file mode 100644 index fe0f4ff9f..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppercry_baby.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppercut_throat.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppercut_throat.ycd deleted file mode 100644 index 639788777..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppercut_throat.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperkarate_chops.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperkarate_chops.ycd deleted file mode 100644 index 0f7bbd52a..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperkarate_chops.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppermind_blown.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppermind_blown.ycd deleted file mode 100644 index 95840cf14..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppermind_blown.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppershadow_boxing.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppershadow_boxing.ycd deleted file mode 100644 index 2dd299e45..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intuppershadow_boxing.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperstinker.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperstinker.ycd deleted file mode 100644 index b6b128045..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperstinker.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperthe_woogie.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperthe_woogie.ycd deleted file mode 100644 index c81b7881a..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mp_player_intupperthe_woogie.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_1h_gun@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_1h_gun@.ycd deleted file mode 100644 index 5775335b9..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_1h_gun@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_2h_gun@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_2h_gun@.ycd deleted file mode 100644 index fd0f39de7..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_2h_gun@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_melee@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_melee@.ycd deleted file mode 100644 index 4bf376291..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@mugger@catch_melee@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@victim@toss_ped@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@victim@toss_ped@.ycd deleted file mode 100644 index 285d5f3fa..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@mugging@victim@toss_ped@.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@alien_landing.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@alien_landing.ycd deleted file mode 100644 index 712e6f6c3..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@alien_landing.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@sit_withdrink@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@sit_withdrink@01a@base.ycd deleted file mode 100644 index 621ce925d..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@sit_withdrink@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@sit_withdrink@01a@idles.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@sit_withdrink@01a@idles.ycd deleted file mode 100644 index f06ac091e..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@sit_withdrink@01a@idles.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@stand_withdrink@01a@base.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@stand_withdrink@01a@base.ycd deleted file mode 100644 index 3c4d00cbf..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@bar@ped_male@stand_withdrink@01a@base.ycd and /dev/null differ diff --git a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@dean@slots@.ycd b/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@dean@slots@.ycd deleted file mode 100644 index 7be9ba830..000000000 Binary files a/resources/EmoteMenu/stream/CasinoEmotes/anim@special_peds@casino@dean@slots@.ycd and /dev/null differ diff --git a/resources/dpemotes-master/stream/[Custom Emotes]/MissSnowieEmotes/misssnowie@hearthands.ycd b/resources/EmoteMenu/stream/[Custom Emotes]/MissSnowieEmotes/misssnowie@hearthands.ycd similarity index 100% rename from resources/dpemotes-master/stream/[Custom Emotes]/MissSnowieEmotes/misssnowie@hearthands.ycd rename to resources/EmoteMenu/stream/[Custom Emotes]/MissSnowieEmotes/misssnowie@hearthands.ycd diff --git a/resources/dpemotes-master/stream/[Custom Emotes]/MissSnowieEmotes/misssnowie@little_doggy_lying_down.ycd b/resources/EmoteMenu/stream/[Custom Emotes]/MissSnowieEmotes/misssnowie@little_doggy_lying_down.ycd similarity index 100% rename from resources/dpemotes-master/stream/[Custom Emotes]/MissSnowieEmotes/misssnowie@little_doggy_lying_down.ycd rename to resources/EmoteMenu/stream/[Custom Emotes]/MissSnowieEmotes/misssnowie@little_doggy_lying_down.ycd diff --git a/resources/dpemotes-master/stream/[Props]/FixedClipboard/p_cs_clipboard.ydr b/resources/EmoteMenu/stream/[Props]/FixedClipboard/p_cs_clipboard.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/FixedClipboard/p_cs_clipboard.ydr rename to resources/EmoteMenu/stream/[Props]/FixedClipboard/p_cs_clipboard.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/_manifestlilflags.ymf b/resources/EmoteMenu/stream/[Props]/Pride Props/_manifestlilflags.ymf similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/_manifestlilflags.ymf rename to resources/EmoteMenu/stream/[Props]/Pride Props/_manifestlilflags.ymf diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/_manifestprideprops.ymf b/resources/EmoteMenu/stream/[Props]/Pride Props/_manifestprideprops.ymf similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/_manifestprideprops.ymf rename to resources/EmoteMenu/stream/[Props]/Pride Props/_manifestprideprops.ymf diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilflags_ytyp.ytyp b/resources/EmoteMenu/stream/[Props]/Pride Props/lilflags_ytyp.ytyp similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilflags_ytyp.ytyp rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilflags_ytyp.ytyp diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag1.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag1.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag1.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag1.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag2.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag2.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag2.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag2.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag3.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag3.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag3.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag3.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag4.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag4.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag4.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag4.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag5.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag5.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag5.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag5.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag6.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag6.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag6.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag6.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag7.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag7.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag7.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag7.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag8.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag8.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag8.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag8.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag9.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag9.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/lilprideflag9.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/lilprideflag9.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/pride_sign_01.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/pride_sign_01.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/pride_sign_01.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/pride_sign_01.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag1.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag1.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag1.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag1.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag2.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag2.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag2.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag2.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag3.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag3.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag3.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag3.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag4.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag4.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag4.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag4.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag5.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag5.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag5.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag5.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag6.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag6.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag6.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag6.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag7.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag7.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag7.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag7.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag8.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag8.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag8.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag8.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideflag9.ydr b/resources/EmoteMenu/stream/[Props]/Pride Props/prideflag9.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideflag9.ydr rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideflag9.ydr diff --git a/resources/dpemotes-master/stream/[Props]/Pride Props/prideprops_ytyp.ytyp b/resources/EmoteMenu/stream/[Props]/Pride Props/prideprops_ytyp.ytyp similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Pride Props/prideprops_ytyp.ytyp rename to resources/EmoteMenu/stream/[Props]/Pride Props/prideprops_ytyp.ytyp diff --git a/resources/dpemotes-master/stream/[Props]/Umbrella/p_amb_brolly_01.ydr b/resources/EmoteMenu/stream/[Props]/Umbrella/p_amb_brolly_01.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/Umbrella/p_amb_brolly_01.ydr rename to resources/EmoteMenu/stream/[Props]/Umbrella/p_amb_brolly_01.ydr diff --git a/resources/dpemotes-master/stream/[Props]/badge1/_manifest.ymf b/resources/EmoteMenu/stream/[Props]/badge1/_manifest.ymf similarity index 100% rename from resources/dpemotes-master/stream/[Props]/badge1/_manifest.ymf rename to resources/EmoteMenu/stream/[Props]/badge1/_manifest.ymf diff --git a/resources/dpemotes-master/stream/[Props]/badge1/badge1.ytyp b/resources/EmoteMenu/stream/[Props]/badge1/badge1.ytyp similarity index 100% rename from resources/dpemotes-master/stream/[Props]/badge1/badge1.ytyp rename to resources/EmoteMenu/stream/[Props]/badge1/badge1.ytyp diff --git a/resources/dpemotes-master/stream/[Props]/badge1/prop_lspd_badge+hidr.ytd b/resources/EmoteMenu/stream/[Props]/badge1/prop_lspd_badge+hidr.ytd similarity index 100% rename from resources/dpemotes-master/stream/[Props]/badge1/prop_lspd_badge+hidr.ytd rename to resources/EmoteMenu/stream/[Props]/badge1/prop_lspd_badge+hidr.ytd diff --git a/resources/dpemotes-master/stream/[Props]/badge1/prop_lspd_badge.ydr b/resources/EmoteMenu/stream/[Props]/badge1/prop_lspd_badge.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/badge1/prop_lspd_badge.ydr rename to resources/EmoteMenu/stream/[Props]/badge1/prop_lspd_badge.ydr diff --git a/resources/dpemotes-master/stream/[Props]/badge2/_manifest.ymf b/resources/EmoteMenu/stream/[Props]/badge2/_manifest.ymf similarity index 100% rename from resources/dpemotes-master/stream/[Props]/badge2/_manifest.ymf rename to resources/EmoteMenu/stream/[Props]/badge2/_manifest.ymf diff --git a/resources/dpemotes-master/stream/[Props]/badge2/copbadge.ytyp b/resources/EmoteMenu/stream/[Props]/badge2/copbadge.ytyp similarity index 100% rename from resources/dpemotes-master/stream/[Props]/badge2/copbadge.ytyp rename to resources/EmoteMenu/stream/[Props]/badge2/copbadge.ytyp diff --git a/resources/dpemotes-master/stream/[Props]/badge2/prop_cop_badge+hidr.ytd b/resources/EmoteMenu/stream/[Props]/badge2/prop_cop_badge+hidr.ytd similarity index 100% rename from resources/dpemotes-master/stream/[Props]/badge2/prop_cop_badge+hidr.ytd rename to resources/EmoteMenu/stream/[Props]/badge2/prop_cop_badge+hidr.ytd diff --git a/resources/dpemotes-master/stream/[Props]/badge2/prop_cop_badge.ydr b/resources/EmoteMenu/stream/[Props]/badge2/prop_cop_badge.ydr similarity index 100% rename from resources/dpemotes-master/stream/[Props]/badge2/prop_cop_badge.ydr rename to resources/EmoteMenu/stream/[Props]/badge2/prop_cop_badge.ydr diff --git a/resources/EmoteMenu/version b/resources/EmoteMenu/version index 7b27b2519..bea0d09c4 100644 --- a/resources/EmoteMenu/version +++ b/resources/EmoteMenu/version @@ -1 +1 @@ -173 \ No newline at end of file +207 \ No newline at end of file diff --git a/resources/dpemotes-master/NativeUI.lua b/resources/dpemotes-master/NativeUI.lua deleted file mode 100644 index 3fa972771..000000000 --- a/resources/dpemotes-master/NativeUI.lua +++ /dev/null @@ -1,3875 +0,0 @@ -UIResRectangle = setmetatable({}, UIResRectangle) -UIResRectangle.__index = UIResRectangle -UIResRectangle.__call = function() return "Rectangle" end - -UIResText = setmetatable({}, UIResText) -UIResText.__index = UIResText -UIResText.__call = function() return "Text" end - -Sprite = setmetatable({}, Sprite) -Sprite.__index = Sprite -Sprite.__call = function() return "Sprite" end - -UIMenuItem = setmetatable({}, UIMenuItem) -UIMenuItem.__index = UIMenuItem -UIMenuItem.__call = function() return "UIMenuItem", "UIMenuItem" end - -UIMenuCheckboxItem = setmetatable({}, UIMenuCheckboxItem) -UIMenuCheckboxItem.__index = UIMenuCheckboxItem -UIMenuCheckboxItem.__call = function() return "UIMenuItem", "UIMenuCheckboxItem" end - -UIMenuListItem = setmetatable({}, UIMenuListItem) -UIMenuListItem.__index = UIMenuListItem -UIMenuListItem.__call = function() return "UIMenuItem", "UIMenuListItem" end - -UIMenuSliderItem = setmetatable({}, UIMenuSliderItem) -UIMenuSliderItem.__index = UIMenuSliderItem -UIMenuSliderItem.__call = function() return "UIMenuItem", "UIMenuSliderItem" end - -UIMenuColouredItem = setmetatable({}, UIMenuColouredItem) -UIMenuColouredItem.__index = UIMenuColouredItem -UIMenuColouredItem.__call = function() return "UIMenuItem", "UIMenuColouredItem" end - -UIMenuProgressItem = setmetatable({}, UIMenuProgressItem) -UIMenuProgressItem.__index = UIMenuProgressItem -UIMenuProgressItem.__call = function() return "UIMenuItem", "UIMenuProgressItem" end - -UIMenuHeritageWindow = setmetatable({}, UIMenuHeritageWindow) -UIMenuHeritageWindow.__index = UIMenuHeritageWindow -UIMenuHeritageWindow.__call = function() return "UIMenuWindow", "UIMenuHeritageWindow" end - -UIMenuGridPanel = setmetatable({}, UIMenuGridPanel) -UIMenuGridPanel.__index = UIMenuGridPanel -UIMenuGridPanel.__call = function() return "UIMenuPanel", "UIMenuGridPanel" end - -UIMenuColourPanel = setmetatable({}, UIMenuColourPanel) -UIMenuColourPanel.__index = UIMenuColourPanel -UIMenuColourPanel.__call = function() return "UIMenuPanel", "UIMenuColourPanel" end - -UIMenuPercentagePanel = setmetatable({}, UIMenuPercentagePanel) -UIMenuPercentagePanel.__index = UIMenuPercentagePanel -UIMenuPercentagePanel.__call = function() return "UIMenuPanel", "UIMenuPercentagePanel" end - -UIMenu = setmetatable({}, UIMenu) -UIMenu.__index = UIMenu -UIMenu.__call = function() return "UIMenu" end - -MenuPool = setmetatable({}, MenuPool) -MenuPool.__index = MenuPool - -NativeUI = {} - -CharacterMap = { [' '] = 6, ['!'] = 6, ['"'] = 6, ['#'] = 11, ['$'] = 10, ['%'] = 17, ['&'] = 13, ['\\'] = 4, ['('] = 6, [')'] = 6, ['*'] = 7, ['+'] = 10, [','] = 4, ['-'] = 6, ['.'] = 4, ['/'] = 7, ['0'] = 12, ['1'] = 7, ['2'] = 11, ['3'] = 11, ['4'] = 11, ['5'] = 11, ['6'] = 12, ['7'] = 10, ['8'] = 11, ['9'] = 11, [':'] = 5, [';'] = 4, ['<'] = 9, ['='] = 9, ['>'] = 9, ['?'] = 10, ['@'] = 15, ['A'] = 12, ['B'] = 13, ['C'] = 14, ['D'] = 14, ['E'] = 12, ['F'] = 12, ['G'] = 15, ['H'] = 14, ['I'] = 5, ['J'] = 11, ['K'] = 13, ['L'] = 11, ['M'] = 16, ['N'] = 14, ['O'] = 16, ['P'] = 12, ['Q'] = 15, ['R'] = 13, ['S'] = 12, ['T'] = 11, ['U'] = 13, ['V'] = 12, ['W'] = 18, ['X'] = 11, ['Y'] = 11, ['Z'] = 12, ['['] = 6, [']'] = 6, ['^'] = 9, ['_'] = 18, ['`'] = 8, ['a'] = 11, ['b'] = 12, ['c'] = 11, ['d'] = 12, ['e'] = 12, ['f'] = 5, ['g'] = 13, ['h'] = 11, ['i'] = 4, ['j'] = 4, ['k'] = 10, ['l'] = 4, ['m'] = 18, ['n'] = 11, ['o'] = 12, ['p'] = 12, ['q'] = 12, ['r'] = 7, ['s'] = 9, ['t'] = 5, ['u'] = 11, ['v'] = 10, ['w'] = 14, ['x'] = 9, ['y'] = 10, ['z'] = 9, ['{'] = 6, ['|'] = 3, ['}'] = 6 } - -BadgeStyle = { None = 0, BronzeMedal = 1, GoldMedal = 2, SilverMedal = 3, Alert = 4, Crown = 5, Ammo = 6, Armour = 7, Barber = 8, Clothes = 9, Franklin = 10, Bike = 11, Car = 12, Gun = 13, Heart = 14, Makeup = 15, Mask = 16, Michael = 17, Star = 18, Tattoo = 19, Trevor = 20, Lock = 21, Tick = 22 } - -BadgeTexture = { - [0] = function() return "" end, - [1] = function() return "mp_medal_bronze" end, - [2] = function() return "mp_medal_gold" end, - [3] = function() return "medal_silver" end, - [4] = function() return "mp_alerttriangle" end, - [5] = function() return "mp_hostcrown" end, - [6] = function(Selected) if Selected then return "shop_ammo_icon_b" else return "shop_ammo_icon_a" end end, - [7] = function(Selected) if Selected then return "shop_armour_icon_b" else return "shop_armour_icon_a" end end, - [8] = function(Selected) if Selected then return "shop_barber_icon_b" else return "shop_barber_icon_a" end end, - [9] = function(Selected) if Selected then return "shop_clothing_icon_b" else return "shop_clothing_icon_a" end end, - [10] = function(Selected) if Selected then return "shop_franklin_icon_b" else return "shop_franklin_icon_a" end end, - [11] = function(Selected) if Selected then return "shop_garage_bike_icon_b" else return "shop_garage_bike_icon_a" end end, - [12] = function(Selected) if Selected then return "shop_garage_icon_b" else return "shop_garage_icon_a" end end, - [13] = function(Selected) if Selected then return "shop_gunclub_icon_b" else return "shop_gunclub_icon_a" end end, - [14] = function(Selected) if Selected then return "shop_health_icon_b" else return "shop_health_icon_a" end end, - [15] = function(Selected) if Selected then return "shop_makeup_icon_b" else return "shop_makeup_icon_a" end end, - [16] = function(Selected) if Selected then return "shop_mask_icon_b" else return "shop_mask_icon_a" end end, - [17] = function(Selected) if Selected then return "shop_michael_icon_b" else return "shop_michael_icon_a" end end, - [18] = function() return "shop_new_star" end, - [19] = function(Selected) if Selected then return "shop_tattoos_icon_b" else return "shop_tattoos_icon_a" end end, - [20] = function(Selected) if Selected then return "shop_trevor_icon_b" else return "shop_trevor_icon_a" end end, - [21] = function() return "shop_lock" end, - [22] = function() return "shop_tick_icon" end, -} - -BadgeDictionary = { - [0] = function(Selected) - if Selected then - return "commonmenu" - else - return "commonmenu" - end - end, -} - -BadgeColour = { - [5] = function(Selected) if Selected then return 0, 0, 0, 255 else return 255, 255, 255, 255 end end, - [21] = function(Selected) if Selected then return 0, 0, 0, 255 else return 255, 255, 255, 255 end end, - [22] = function(Selected) if Selected then return 0, 0, 0, 255 else return 255, 255, 255, 255 end end, -} - -Colours = { - PureWhite = { 255, 255, 255, 255 }, - White = { 240, 240, 240, 255 }, - Black = { 0, 0, 0, 255 }, - Grey = { 155, 155, 155, 255 }, - GreyLight = { 205, 205, 205, 255 }, - GreyDark = { 77, 77, 77, 255 }, - Red = { 224, 50, 50, 255 }, - RedLight = { 240, 153, 153, 255 }, - RedDark = { 112, 25, 25, 255 }, - Blue = { 93, 182, 229, 255 }, - BlueLight = { 174, 219, 242, 255 }, - BlueDark = { 47, 92, 115, 255 }, - Yellow = { 240, 200, 80, 255 }, - YellowLight = { 254, 235, 169, 255 }, - YellowDark = { 126, 107, 41, 255 }, - Orange = { 255, 133, 85, 255 }, - OrangeLight = { 255, 194, 170, 255 }, - OrangeDark = { 127, 66, 42, 255 }, - Green = { 114, 204, 114, 255 }, - GreenLight = { 185, 230, 185, 255 }, - GreenDark = { 57, 102, 57, 255 }, - Purple = { 132, 102, 226, 255 }, - PurpleLight = { 192, 179, 239, 255 }, - PurpleDark = { 67, 57, 111, 255 }, - Pink = { 203, 54, 148, 255 }, - RadarHealth = { 53, 154, 71, 255 }, - RadarArmour = { 93, 182, 229, 255 }, - RadarDamage = { 235, 36, 39, 255 }, - NetPlayer1 = { 194, 80, 80, 255 }, - NetPlayer2 = { 156, 110, 175, 255 }, - NetPlayer3 = { 255, 123, 196, 255 }, - NetPlayer4 = { 247, 159, 123, 255 }, - NetPlayer5 = { 178, 144, 132, 255 }, - NetPlayer6 = { 141, 206, 167, 255 }, - NetPlayer7 = { 113, 169, 175, 255 }, - NetPlayer8 = { 211, 209, 231, 255 }, - NetPlayer9 = { 144, 127, 153, 255 }, - NetPlayer10 = { 106, 196, 191, 255 }, - NetPlayer11 = { 214, 196, 153, 255 }, - NetPlayer12 = { 234, 142, 80, 255 }, - NetPlayer13 = { 152, 203, 234, 255 }, - NetPlayer14 = { 178, 98, 135, 255 }, - NetPlayer15 = { 144, 142, 122, 255 }, - NetPlayer16 = { 166, 117, 94, 255 }, - NetPlayer17 = { 175, 168, 168, 255 }, - NetPlayer18 = { 232, 142, 155, 255 }, - NetPlayer19 = { 187, 214, 91, 255 }, - NetPlayer20 = { 12, 123, 86, 255 }, - NetPlayer21 = { 123, 196, 255, 255 }, - NetPlayer22 = { 171, 60, 230, 255 }, - NetPlayer23 = { 206, 169, 13, 255 }, - NetPlayer24 = { 71, 99, 173, 255 }, - NetPlayer25 = { 42, 166, 185, 255 }, - NetPlayer26 = { 186, 157, 125, 255 }, - NetPlayer27 = { 201, 225, 255, 255 }, - NetPlayer28 = { 240, 240, 150, 255 }, - NetPlayer29 = { 237, 140, 161, 255 }, - NetPlayer30 = { 249, 138, 138, 255 }, - NetPlayer31 = { 252, 239, 166, 255 }, - NetPlayer32 = { 240, 240, 240, 255 }, - SimpleBlipDefault = { 159, 201, 166, 255 }, - MenuBlue = { 140, 140, 140, 255 }, - MenuGreyLight = { 140, 140, 140, 255 }, - MenuBlueExtraDark = { 40, 40, 40, 255 }, - MenuYellow = { 240, 160, 0, 255 }, - MenuYellowDark = { 240, 160, 0, 255 }, - MenuGreen = { 240, 160, 0, 255 }, - MenuGrey = { 140, 140, 140, 255 }, - MenuGreyDark = { 60, 60, 60, 255 }, - MenuHighlight = { 30, 30, 30, 255 }, - MenuStandard = { 140, 140, 140, 255 }, - MenuDimmed = { 75, 75, 75, 255 }, - MenuExtraDimmed = { 50, 50, 50, 255 }, - BriefTitle = { 95, 95, 95, 255 }, - MidGreyMp = { 100, 100, 100, 255 }, - NetPlayer1Dark = { 93, 39, 39, 255 }, - NetPlayer2Dark = { 77, 55, 89, 255 }, - NetPlayer3Dark = { 124, 62, 99, 255 }, - NetPlayer4Dark = { 120, 80, 80, 255 }, - NetPlayer5Dark = { 87, 72, 66, 255 }, - NetPlayer6Dark = { 74, 103, 83, 255 }, - NetPlayer7Dark = { 60, 85, 88, 255 }, - NetPlayer8Dark = { 105, 105, 64, 255 }, - NetPlayer9Dark = { 72, 63, 76, 255 }, - NetPlayer10Dark = { 53, 98, 95, 255 }, - NetPlayer11Dark = { 107, 98, 76, 255 }, - NetPlayer12Dark = { 117, 71, 40, 255 }, - NetPlayer13Dark = { 76, 101, 117, 255 }, - NetPlayer14Dark = { 65, 35, 47, 255 }, - NetPlayer15Dark = { 72, 71, 61, 255 }, - NetPlayer16Dark = { 85, 58, 47, 255 }, - NetPlayer17Dark = { 87, 84, 84, 255 }, - NetPlayer18Dark = { 116, 71, 77, 255 }, - NetPlayer19Dark = { 93, 107, 45, 255 }, - NetPlayer20Dark = { 6, 61, 43, 255 }, - NetPlayer21Dark = { 61, 98, 127, 255 }, - NetPlayer22Dark = { 85, 30, 115, 255 }, - NetPlayer23Dark = { 103, 84, 6, 255 }, - NetPlayer24Dark = { 35, 49, 86, 255 }, - NetPlayer25Dark = { 21, 83, 92, 255 }, - NetPlayer26Dark = { 93, 98, 62, 255 }, - NetPlayer27Dark = { 100, 112, 127, 255 }, - NetPlayer28Dark = { 120, 120, 75, 255 }, - NetPlayer29Dark = { 152, 76, 93, 255 }, - NetPlayer30Dark = { 124, 69, 69, 255 }, - NetPlayer31Dark = { 10, 43, 50, 255 }, - NetPlayer32Dark = { 95, 95, 10, 255 }, - Bronze = { 180, 130, 97, 255 }, - Silver = { 150, 153, 161, 255 }, - Gold = { 214, 181, 99, 255 }, - Platinum = { 166, 221, 190, 255 }, - Gang1 = { 29, 100, 153, 255 }, - Gang2 = { 214, 116, 15, 255 }, - Gang3 = { 135, 125, 142, 255 }, - Gang4 = { 229, 119, 185, 255 }, - SameCrew = { 252, 239, 166, 255 }, - Freemode = { 45, 110, 185, 255 }, - PauseBg = { 0, 0, 0, 255 }, - Friendly = { 93, 182, 229, 255 }, - Enemy = { 194, 80, 80, 255 }, - Location = { 240, 200, 80, 255 }, - Pickup = { 114, 204, 114, 255 }, - PauseSingleplayer = { 114, 204, 114, 255 }, - FreemodeDark = { 22, 55, 92, 255 }, - InactiveMission = { 154, 154, 154, 255 }, - Damage = { 194, 80, 80, 255 }, - PinkLight = { 252, 115, 201, 255 }, - PmMitemHighlight = { 252, 177, 49, 255 }, - ScriptVariable = { 0, 0, 0, 255 }, - Yoga = { 109, 247, 204, 255 }, - Tennis = { 241, 101, 34, 255 }, - Golf = { 214, 189, 97, 255 }, - ShootingRange = { 112, 25, 25, 255 }, - FlightSchool = { 47, 92, 115, 255 }, - NorthBlue = { 93, 182, 229, 255 }, - SocialClub = { 234, 153, 28, 255 }, - PlatformBlue = { 11, 55, 123, 255 }, - PlatformGreen = { 146, 200, 62, 255 }, - PlatformGrey = { 234, 153, 28, 255 }, - FacebookBlue = { 66, 89, 148, 255 }, - IngameBg = { 0, 0, 0, 255 }, - Darts = { 114, 204, 114, 255 }, - Waypoint = { 164, 76, 242, 255 }, - Michael = { 101, 180, 212, 255 }, - Franklin = { 171, 237, 171, 255 }, - Trevor = { 255, 163, 87, 255 }, - GolfP1 = { 240, 240, 240, 255 }, - GolfP2 = { 235, 239, 30, 255 }, - GolfP3 = { 255, 149, 14, 255 }, - GolfP4 = { 246, 60, 161, 255 }, - WaypointLight = { 210, 166, 249, 255 }, - WaypointDark = { 82, 38, 121, 255 }, - PanelLight = { 0, 0, 0, 255 }, - MichaelDark = { 72, 103, 116, 255 }, - FranklinDark = { 85, 118, 85, 255 }, - TrevorDark = { 127, 81, 43, 255 }, - ObjectiveRoute = { 240, 200, 80, 255 }, - PausemapTint = { 0, 0, 0, 255 }, - PauseDeselect = { 100, 100, 100, 255 }, - PmWeaponsPurchasable = { 45, 110, 185, 255 }, - PmWeaponsLocked = { 240, 240, 240, 255 }, - ScreenBg = { 0, 0, 0, 255 }, - Chop = { 224, 50, 50, 255 }, - PausemapTintHalf = { 0, 0, 0, 255 }, - NorthBlueOfficial = { 0, 71, 133, 255 }, - ScriptVariable2 = { 0, 0, 0, 255 }, - H = { 33, 118, 37, 255 }, - HDark = { 37, 102, 40, 255 }, - T = { 234, 153, 28, 255 }, - TDark = { 225, 140, 8, 255 }, - HShard = { 20, 40, 0, 255 }, - ControllerMichael = { 48, 255, 255, 255 }, - ControllerFranklin = { 48, 255, 0, 255 }, - ControllerTrevor = { 176, 80, 0, 255 }, - ControllerChop = { 127, 0, 0, 255 }, - VideoEditorVideo = { 53, 166, 224, 255 }, - VideoEditorAudio = { 162, 79, 157, 255 }, - VideoEditorText = { 104, 192, 141, 255 }, - HbBlue = { 29, 100, 153, 255 }, - HbYellow = { 234, 153, 28, 255 }, - VideoEditorScore = { 240, 160, 1, 255 }, - VideoEditorAudioFadeout = { 59, 34, 57, 255 }, - VideoEditorTextFadeout = { 41, 68, 53, 255 }, - VideoEditorScoreFadeout = { 82, 58, 10, 255 }, - HeistBackground = { 37, 102, 40, 255 }, - VideoEditorAmbient = { 240, 200, 80, 255 }, - VideoEditorAmbientFadeout = { 80, 70, 34, 255 }, - Gb = { 255, 133, 85, 255 }, - G = { 255, 194, 170, 255 }, - B = { 255, 133, 85, 255 }, - LowFlow = { 240, 200, 80, 255 }, - LowFlowDark = { 126, 107, 41, 255 }, - G1 = { 247, 159, 123, 255 }, - G2 = { 226, 134, 187, 255 }, - G3 = { 239, 238, 151, 255 }, - G4 = { 113, 169, 175, 255 }, - G5 = { 160, 140, 193, 255 }, - G6 = { 141, 206, 167, 255 }, - G7 = { 181, 214, 234, 255 }, - G8 = { 178, 144, 132, 255 }, - G9 = { 0, 132, 114, 255 }, - G10 = { 216, 85, 117, 255 }, - G11 = { 30, 100, 152, 255 }, - G12 = { 43, 181, 117, 255 }, - G13 = { 233, 141, 79, 255 }, - G14 = { 137, 210, 215, 255 }, - G15 = { 134, 125, 141, 255 }, - Adversary = { 109, 34, 33, 255 }, - DegenRed = { 255, 0, 0, 255 }, - DegenYellow = { 255, 255, 0, 255 }, - DegenGreen = { 0, 255, 0, 255 }, - DegenCyan = { 0, 255, 255, 255 }, - DegenBlue = { 0, 0, 255, 255 }, - DegenMagenta = { 255, 0, 255, 255 }, - Stunt1 = { 38, 136, 234, 255 }, - Stunt2 = { 224, 50, 50, 255 }, -} - ---[[ - Utils.lua - Utilities ---]] - -function GetResolution() - local W, H = GetActiveScreenResolution() - if (W / H) > 3.5 then - return GetScreenResolution() - else - return W, H - end -end - -function FormatXWYH(Value, Value2) - return Value / 1920, Value2 / 1080 -end - -function math.round(num, numDecimalPlaces) - return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) -end - -function tobool(input) - if input == "true" or tonumber(input) == 1 or input == true then - return true - else - return false - end -end - -function string.split(inputstr, sep) - if sep == nil then - sep = "%s" - end - local t = {}; - i = 1 - for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do - t[i] = str - i = i + 1 - end - - return t -end - -function string.starts(String, Start) - return string.sub(String, 1, string.len(Start)) == Start -end - -function IsMouseInBounds(X, Y, Width, Height) - local MX, MY = math.round(GetControlNormal(0, 239) * 1920), math.round(GetControlNormal(0, 240) * 1080) - MX, MY = FormatXWYH(MX, MY) - X, Y = FormatXWYH(X, Y) - Width, Height = FormatXWYH(Width, Height) - return (MX >= X and MX <= X + Width) and (MY > Y and MY < Y + Height) -end - -function GetSafeZoneBounds() - local SafeSize = GetSafeZoneSize() - SafeSize = math.round(SafeSize, 2) - SafeSize = (SafeSize * 100) - 90 - SafeSize = 10 - SafeSize - - local W, H = 1920, 1080 - - return { X = math.round(SafeSize * ((W / H) * 5.4)), Y = math.round(SafeSize * 5.4) } -end - -function Controller() - return not IsInputDisabled(2) -end - ---[[ - UIResRectangle.lua - Elements ---]] - -function UIResRectangle.New(X, Y, Width, Height, R, G, B, A) - local _UIResRectangle = { - X = tonumber(X) or 0, - Y = tonumber(Y) or 0, - Width = tonumber(Width) or 0, - Height = tonumber(Height) or 0, - _Colour = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }, - } - return setmetatable(_UIResRectangle, UIResRectangle) -end - -function UIResRectangle:Position(X, Y) - if tonumber(X) and tonumber(Y) then - self.X = tonumber(X) - self.Y = tonumber(Y) - else - return { X = self.X, Y = self.Y } - end -end - -function UIResRectangle:Size(Width, Height) - if tonumber(Width) and tonumber(Height) then - self.Width = tonumber(Width) - self.Height = tonumber(Height) - else - return { Width = self.Width, Height = self.Height } - end -end - -function UIResRectangle:Colour(R, G, B, A) - if tonumber(R) or tonumber(G) or tonumber(B) or tonumber(A) then - self._Colour.R = tonumber(R) or 255 - self._Colour.B = tonumber(B) or 255 - self._Colour.G = tonumber(G) or 255 - self._Colour.A = tonumber(A) or 255 - else - return self._Colour - end -end - -function UIResRectangle:Draw() - local Position = self:Position() - local Size = self:Size() - Size.Width, Size.Height = FormatXWYH(Size.Width, Size.Height) - Position.X, Position.Y = FormatXWYH(Position.X, Position.Y) - DrawRect(Position.X + Size.Width * 0.5, Position.Y + Size.Height * 0.5, Size.Width, Size.Height, self._Colour.R, self._Colour.G, self._Colour.B, self._Colour.A) -end - -function DrawRectangle(X, Y, Width, Height, R, G, B, A) - X, Y, Width, Height = X or 0, Y or 0, Width or 0, Height or 0 - X, Y = FormatXWYH(X, Y) - Width, Height = FormatXWYH(Width, Height) - DrawRect(X + Width * 0.5, Y + Height * 0.5, Width, Height, tonumber(R) or 255, tonumber(G) or 255, tonumber(B) or 255, tonumber(A) or 255) -end - ---[[ - UIResText.lua - Elements ---]] - -function GetCharacterCount(str) - local characters = 0 - for c in str:gmatch("[%z\1-\127\194-\244][\128-\191]*") do - local a = c:byte(1, -1) - if a ~= nil then - characters = characters + 1 - end - end - return characters -end - -function GetByteCount(str) - local bytes = 0 - - for c in str:gmatch("[%z\1-\127\194-\244][\128-\191]*") do - local a, b, c, d = c:byte(1, -1) - if a ~= nil then - bytes = bytes + 1 - end - if b ~= nil then - bytes = bytes + 1 - end - if c ~= nil then - bytes = bytes + 1 - end - if d ~= nil then - bytes = bytes + 1 - end - end - return bytes -end - -function AddLongStringForAscii(str) - local maxbytelength = 99 - for i = 0, GetCharacterCount(str), 99 do - AddTextComponentSubstringPlayerName(string.sub(str, i, math.min(maxbytelength, GetCharacterCount(str) - i))) --needs changed - end -end - -function AddLongStringForUtf8(str) - local maxbytelength = 99 - local bytecount = GetByteCount(str) - - if bytecount < maxbytelength then - AddTextComponentSubstringPlayerName(str) - return - end - - local startIndex = 0 - - for i = 0, GetCharacterCount(str), 1 do - local length = i - startIndex - if GetByteCount(string.sub(str, startIndex, length)) > maxbytelength then - AddTextComponentSubstringPlayerName(string.sub(str, startIndex, length - 1)) - i = i - 1 - startIndex = startIndex + (length - 1) - end - end - AddTextComponentSubstringPlayerName(string.sub(str, startIndex, GetCharacterCount(str) - startIndex)) -end - -function AddLongString(str) - local bytecount = GetByteCount(str) - if bytecount == GetCharacterCount(str) then - AddLongStringForAscii(str) - else - AddLongStringForUtf8(str) - end -end - -function MeasureStringWidthNoConvert(str, font, scale) - BeginTextCommandWidth("STRING") - AddLongString(str) - SetTextFont(font or 0) - SetTextScale(1.0, scale or 0) - return EndTextCommandGetWidth(true) -end - -function MeasureStringWidth(str, font, scale) - return MeasureStringWidthNoConvert(str, font, scale) * 1920 -end - -function UIResText.New(Text, X, Y, Scale, R, G, B, A, Font, Alignment, DropShadow, Outline, WordWrap) - local _UIResText = { - _Text = tostring(Text) or "", - X = tonumber(X) or 0, - Y = tonumber(Y) or 0, - Scale = tonumber(Scale) or 0, - _Colour = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }, - Font = tonumber(Font) or 0, - Alignment = Alignment or nil, - DropShadow = Dropshadow or nil, - Outline = Outline or nil, - WordWrap = tonumber(WordWrap) or 0, - } - return setmetatable(_UIResText, UIResText) -end - -function UIResText:Position(X, Y) - if tonumber(X) and tonumber(Y) then - self.X = tonumber(X) - self.Y = tonumber(Y) - else - return { X = self.X, Y = self.Y } - end -end - -function UIResText:Colour(R, G, B, A) - if tonumber(R) and tonumber(G) and tonumber(B) and tonumber(A) then - self._Colour.R = tonumber(R) - self._Colour.B = tonumber(B) - self._Colour.G = tonumber(G) - self._Colour.A = tonumber(A) - else - return self._Colour - end -end - -function UIResText:Text(Text) - if tostring(Text) and Text ~= nil then - self._Text = tostring(Text) - else - return self._Text - end -end - -function UIResText:Draw() - local Position = self:Position() - Position.X, Position.Y = FormatXWYH(Position.X, Position.Y) - - SetTextFont(self.Font) - SetTextScale(1.0, self.Scale) - SetTextColour(self._Colour.R, self._Colour.G, self._Colour.B, self._Colour.A) - - if self.DropShadow then - SetTextDropShadow() - end - if self.Outline then - SetTextOutline() - end - - if self.Alignment ~= nil then - if self.Alignment == 1 or self.Alignment == "Center" or self.Alignment == "Centre" then - SetTextCentre(true) - elseif self.Alignment == 2 or self.Alignment == "Right" then - SetTextRightJustify(true) - SetTextWrap(0, Position.X) - end - end - - if tonumber(self.WordWrap) then - if tonumber(self.WordWrap) ~= 0 then - SetTextWrap(Position.X, Position.X + (tonumber(self.WordWrap) / Resolution.Width)) - end - end - - BeginTextCommandDisplayText("STRING") - AddLongString(self._Text) - EndTextCommandDisplayText(Position.X, Position.Y) -end - -function RenderText(Text, X, Y, Font, Scale, R, G, B, A, Alignment, DropShadow, Outline, WordWrap) - Text = tostring(Text) - X, Y = FormatXWYH(X, Y) - SetTextFont(Font or 0) - SetTextScale(1.0, Scale or 0) - SetTextColour(R or 255, G or 255, B or 255, A or 255) - - if DropShadow then - SetTextDropShadow() - end - if Outline then - SetTextOutline() - end - - if Alignment ~= nil then - if Alignment == 1 or Alignment == "Center" or Alignment == "Centre" then - SetTextCentre(true) - elseif Alignment == 2 or Alignment == "Right" then - SetTextRightJustify(true) - SetTextWrap(0, X) - end - end - - if tonumber(WordWrap) then - if tonumber(WordWrap) ~= 0 then - WordWrap, _ = FormatXWYH(WordWrap, 0) - SetTextWrap(WordWrap, X - WordWrap) - end - end - - BeginTextCommandDisplayText("STRING") - AddLongString(Text) - EndTextCommandDisplayText(X, Y) -end - ---[[ - Sprite.lua - Elements ---]] - -function Sprite.New(TxtDictionary, TxtName, X, Y, Width, Height, Heading, R, G, B, A) - local _Sprite = { - TxtDictionary = tostring(TxtDictionary), - TxtName = tostring(TxtName), - X = tonumber(X) or 0, - Y = tonumber(Y) or 0, - Width = tonumber(Width) or 0, - Height = tonumber(Height) or 0, - Heading = tonumber(Heading) or 0, - _Colour = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }, - } - return setmetatable(_Sprite, Sprite) -end - -function Sprite:Position(X, Y) - if tonumber(X) and tonumber(Y) then - self.X = tonumber(X) - self.Y = tonumber(Y) - else - return { X = self.X, Y = self.Y } - end -end - -function Sprite:Size(Width, Height) - if tonumber(Width) and tonumber(Width) then - self.Width = tonumber(Width) - self.Height = tonumber(Height) - else - return { Width = self.Width, Height = self.Height } - end -end - -function Sprite:Colour(R, G, B, A) - if tonumber(R) or tonumber(G) or tonumber(B) or tonumber(A) then - self._Colour.R = tonumber(R) or 255 - self._Colour.B = tonumber(B) or 255 - self._Colour.G = tonumber(G) or 255 - self._Colour.A = tonumber(A) or 255 - else - return self._Colour - end -end - -function Sprite:Draw() - if not HasStreamedTextureDictLoaded(self.TxtDictionary) then - RequestStreamedTextureDict(self.TxtDictionary, true) - end - local Position = self:Position() - local Size = self:Size() - Size.Width, Size.Height = FormatXWYH(Size.Width, Size.Height) - Position.X, Position.Y = FormatXWYH(Position.X, Position.Y) - DrawSprite(self.TxtDictionary, self.TxtName, Position.X + Size.Width * 0.5, Position.Y + Size.Height * 0.5, Size.Width, Size.Height, self.Heading, self._Colour.R, self._Colour.G, self._Colour.B, self._Colour.A) -end - -function DrawTexture(TxtDictionary, TxtName, X, Y, Width, Height, Heading, R, G, B, A) - if not HasStreamedTextureDictLoaded(tostring(TxtDictionary) or "") then - RequestStreamedTextureDict(tostring(TxtDictionary) or "", true) - end - X, Y, Width, Height = X or 0, Y or 0, Width or 0, Height or 0 - X, Y = FormatXWYH(X, Y) - Width, Height = FormatXWYH(Width, Height) - DrawSprite(tostring(TxtDictionary) or "", tostring(TxtName) or "", X + Width * 0.5, Y + Height * 0.5, Width, Height, tonumber(Heading) or 0, tonumber(R) or 255, tonumber(G) or 255, tonumber(B) or 255, tonumber(A) or 255) -end - ---[[ - StringMeasurer.lua - Elements ---]] - -function MeasureString(str) - local output = 0 - for i = 1, GetCharacterCount(str), 1 do - if CharacterMap[string.sub(str, i, i)] then - output = output + CharacterMap[string.sub(str, i, i)] + 1 - end - end - return output -end - ---[[ - Badge.lua - Elements ---]] - -function GetBadgeTexture(Badge, Selected) - if BadgeTexture[Badge] then - return BadgeTexture[Badge](Selected) - else - return "" - end -end - -function GetBadgeDictionary(Badge, Selected) - if BadgeDictionary[Badge] then - return BadgeDictionary[Badge](Selected) - else - return "commonmenu" - end -end - -function GetBadgeColour(Badge, Selected) - if BadgeColour[Badge] then - return BadgeColour[Badge](Selected) - else - return 255, 255, 255, 255 - end -end - ---[[ - Colours.lua - Elements ---]] - ---[[ - UIMenuItem.lua - Items ---]] - -function UIMenuItem.New(Text, Description) - _UIMenuItem = { - Rectangle = UIResRectangle.New(0, 0, 431, 38, 255, 255, 255, 20), - Text = UIResText.New(tostring(Text) or "", 8, 0, 0.33, 245, 245, 245, 255, 0), - _Description = tostring(Description) or ""; - SelectedSprite = Sprite.New("commonmenu", "gradient_nav", 0, 0, 431, 38), - LeftBadge = { Sprite = Sprite.New("commonmenu", "", 0, 0, 40, 40), Badge = 0 }, - RightBadge = { Sprite = Sprite.New("commonmenu", "", 0, 0, 40, 40), Badge = 0 }, - Label = { - Text = UIResText.New("", 0, 0, 0.35, 245, 245, 245, 255, 0, "Right"), - MainColour = { R = 255, G = 255, B = 255, A = 255 }, - HighlightColour = { R = 0, G = 0, B = 0, A = 255 }, - }, - _Selected = false, - _Hovered = false, - _Enabled = true, - _Offset = { X = 0, Y = 0 }, - ParentMenu = nil, - Panels = {}, - Activated = function(menu, item, panels) end, - ActivatedPanel = function(menu, item, panel, panelvalue) end, - } - return setmetatable(_UIMenuItem, UIMenuItem) -end - -function UIMenuItem:SetParentMenu(Menu) - if Menu ~= nil and Menu() == "UIMenu" then - self.ParentMenu = Menu - else - return self.ParentMenu - end -end - -function UIMenuItem:Selected(bool) - if bool ~= nil then - self._Selected = tobool(bool) - else - return self._Selected - end -end - -function UIMenuItem:Hovered(bool) - if bool ~= nil then - self._Hovered = tobool(bool) - else - return self._Hovered - end -end - -function UIMenuItem:Enabled(bool) - if bool ~= nil then - self._Enabled = tobool(bool) - else - return self._Enabled - end -end - -function UIMenuItem:Description(str) - if tostring(str) and str ~= nil then - self._Description = tostring(str) - else - return self._Description - end -end - -function UIMenuItem:Offset(X, Y) - if tonumber(X) or tonumber(Y) then - if tonumber(X) then - self._Offset.X = tonumber(X) - end - if tonumber(Y) then - self._Offset.Y = tonumber(Y) - end - else - return self._Offset - end -end - -function UIMenuItem:Position(Y) - if tonumber(Y) then - self.Rectangle:Position(self._Offset.X, Y + 144 + self._Offset.Y) - self.SelectedSprite:Position(0 + self._Offset.X, Y + 144 + self._Offset.Y) - self.Text:Position(8 + self._Offset.X, Y + 147 + self._Offset.Y) - self.LeftBadge.Sprite:Position(0 + self._Offset.X, Y + 142 + self._Offset.Y) - self.RightBadge.Sprite:Position(385 + self._Offset.X, Y + 142 + self._Offset.Y) - self.Label.Text:Position(420 + self._Offset.X, Y + 148 + self._Offset.Y) - end -end - -function UIMenuItem:RightLabel(Text, MainColour, HighlightColour) - if tostring(Text) and Text ~= nil then - if type(MainColour) == "table" then - self.Label.MainColour = MainColour - end - if type(HighlightColour) == "table" then - self.Label.HighlightColour = HighlightColour - end - self.Label.Text:Text(tostring(Text)) - else - return self.Label.Text:Text() - end -end - -function UIMenuItem:SetLeftBadge(Badge) - if tonumber(Badge) then - self.LeftBadge.Badge = tonumber(Badge) - end -end - -function UIMenuItem:SetRightBadge(Badge) - if tonumber(Badge) then - self.RightBadge.Badge = tonumber(Badge) - end -end - -function UIMenuItem:Text(Text) - if tostring(Text) and Text ~= nil then - self.Text:Text(tostring(Text)) - else - return self.Text:Text() - end -end - -function UIMenuItem:AddPanel(Panel) - if Panel() == "UIMenuPanel" then - table.insert(self.Panels, Panel) - Panel:SetParentItem(self) - end -end - -function UIMenuItem:RemovePanelAt(Index) - if tonumber(Index) then - if self.Panels[Index] then - table.remove(self.Panels, tonumber(Index)) - end - end -end - -function UIMenuItem:FindPanelIndex(Panel) - if Panel() == "UIMenuPanel" then - for Index = 1, #self.Panels do - if self.Panels[Index] == Panel then - return Index - end - end - end - return nil -end - -function UIMenuItem:FindPanelItem() - for Index = #self.Items, 1, -1 do - if self.Items[Index].Panel then - return Index - end - end - return nil -end - -function UIMenuItem:Draw() - self.Rectangle:Size(431 + self.ParentMenu.WidthOffset, self.Rectangle.Height) - self.SelectedSprite:Size(431 + self.ParentMenu.WidthOffset, self.SelectedSprite.Height) - - if self._Hovered and not self._Selected then - self.Rectangle:Draw() - end - - if self._Selected then - self.SelectedSprite:Draw() - end - - if self._Enabled then - if self._Selected then - self.Text:Colour(0, 0, 0, 255) - self.Label.Text:Colour(self.Label.HighlightColour.R, self.Label.HighlightColour.G, self.Label.HighlightColour.B, self.Label.HighlightColour.A) - else - self.Text:Colour(245, 245, 245, 255) - self.Label.Text:Colour(self.Label.MainColour.R, self.Label.MainColour.G, self.Label.MainColour.B, self.Label.MainColour.A) - end - else - self.Text:Colour(163, 159, 148, 255) - self.Label.Text:Colour(163, 159, 148, 255) - end - - if self.LeftBadge.Badge == BadgeStyle.None then - self.Text:Position(8 + self._Offset.X, self.Text.Y) - else - self.Text:Position(35 + self._Offset.X, self.Text.Y) - self.LeftBadge.Sprite.TxtDictionary = GetBadgeDictionary(self.LeftBadge.Badge, self._Selected) - self.LeftBadge.Sprite.TxtName = GetBadgeTexture(self.LeftBadge.Badge, self._Selected) - self.LeftBadge.Sprite:Colour(GetBadgeColour(self.LeftBadge.Badge, self._Selected)) - self.LeftBadge.Sprite:Draw() - end - - if self.RightBadge.Badge ~= BadgeStyle.None then - self.RightBadge.Sprite:Position(385 + self._Offset.X + self.ParentMenu.WidthOffset, self.RightBadge.Sprite.Y) - self.RightBadge.Sprite.TxtDictionary = GetBadgeDictionary(self.RightBadge.Badge, self._Selected) - self.RightBadge.Sprite.TxtName = GetBadgeTexture(self.RightBadge.Badge, self._Selected) - self.RightBadge.Sprite:Colour(GetBadgeColour(self.RightBadge.Badge, self._Selected)) - self.RightBadge.Sprite:Draw() - end - - if self.Label.Text:Text() ~= "" and string.len(self.Label.Text:Text()) > 0 then - self.Label.Text:Position(420 + self._Offset.X + self.ParentMenu.WidthOffset, self.Label.Text.Y) - self.Label.Text:Draw() - end - - self.Text:Draw() -end - ---[[ - UIMenuCheckboxItem.lua - Items ---]] - -function UIMenuCheckboxItem.New(Text, Check, Description) - local _UIMenuCheckboxItem = { - Base = UIMenuItem.New(Text or "", Description or ""), - CheckedSprite = Sprite.New("commonmenu", "shop_box_blank", 410, 95, 50, 50), - Checked = tobool(Check), - CheckboxEvent = function(menu, item, checked) end, - } - return setmetatable(_UIMenuCheckboxItem, UIMenuCheckboxItem) -end - -function UIMenuCheckboxItem:SetParentMenu(Menu) - if Menu() == "UIMenu" then - self.Base.ParentMenu = Menu - else - return self.Base.ParentMenu - end -end - -function UIMenuCheckboxItem:Position(Y) - if tonumber(Y) then - self.Base:Position(Y) - self.CheckedSprite:Position(380 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, Y + 138 + self.Base._Offset.Y) - end -end - -function UIMenuCheckboxItem:Selected(bool) - if bool ~= nil then - self.Base._Selected = tobool(bool) - else - return self.Base._Selected - end -end - -function UIMenuCheckboxItem:Hovered(bool) - if bool ~= nil then - self.Base._Hovered = tobool(bool) - else - return self.Base._Hovered - end -end - -function UIMenuCheckboxItem:Enabled(bool) - if bool ~= nil then - self.Base._Enabled = tobool(bool) - else - return self.Base._Enabled - end -end - -function UIMenuCheckboxItem:Description(str) - if tostring(str) and str ~= nil then - self.Base._Description = tostring(str) - else - return self.Base._Description - end -end - -function UIMenuCheckboxItem:Offset(X, Y) - if tonumber(X) or tonumber(Y) then - if tonumber(X) then - self.Base._Offset.X = tonumber(X) - end - if tonumber(Y) then - self.Base._Offset.Y = tonumber(Y) - end - else - return self.Base._Offset - end -end - -function UIMenuCheckboxItem:Text(Text) - if tostring(Text) and Text ~= nil then - self.Base.Text:Text(tostring(Text)) - else - return self.Base.Text:Text() - end -end - -function UIMenuCheckboxItem:SetLeftBadge() - error("This item does not support badges") -end - -function UIMenuCheckboxItem:SetRightBadge() - error("This item does not support badges") -end - -function UIMenuCheckboxItem:RightLabel() - error("This item does not support a right label") -end - -function UIMenuCheckboxItem:Draw() - self.Base:Draw() - self.CheckedSprite:Position(380 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, self.CheckedSprite.Y) - if self.Base:Selected() then - if self.Checked then - self.CheckedSprite.TxtName = "shop_box_tickb" - else - self.CheckedSprite.TxtName = "shop_box_blankb" - end - else - if self.Checked then - self.CheckedSprite.TxtName = "shop_box_tick" - else - self.CheckedSprite.TxtName = "shop_box_blank" - end - end - self.CheckedSprite:Draw() -end - ---[[ - UIMenuListItem.lua - Items ---]] - -function UIMenuListItem.New(Text, Items, Index, Description) - if type(Items) ~= "table" then Items = {} end - if Index == 0 then Index = 1 end - local _UIMenuListItem = { - Base = UIMenuItem.New(Text or "", Description or ""), - Items = Items, - LeftArrow = Sprite.New("commonmenu", "arrowleft", 110, 105, 30, 30), - RightArrow = Sprite.New("commonmenu", "arrowright", 280, 105, 30, 30), - ItemText = UIResText.New("", 290, 104, 0.35, 255, 255, 255, 255, 0, "Right"), - _Index = tonumber(Index) or 1, - Panels = {}, - OnListChanged = function(menu, item, newindex) end, - OnListSelected = function(menu, item, newindex) end, - } - return setmetatable(_UIMenuListItem, UIMenuListItem) -end - -function UIMenuListItem:SetParentMenu(Menu) - if Menu ~= nil and Menu() == "UIMenu" then - self.Base.ParentMenu = Menu - else - return self.Base.ParentMenu - end -end - -function UIMenuListItem:Position(Y) - if tonumber(Y) then - self.LeftArrow:Position(300 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 147 + Y + self.Base._Offset.Y) - self.RightArrow:Position(400 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 147 + Y + self.Base._Offset.Y) - self.ItemText:Position(300 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 147 + Y + self.Base._Offset.Y) - self.Base:Position(Y) - end -end - -function UIMenuListItem:Selected(bool) - if bool ~= nil then - self.Base._Selected = tobool(bool) - else - return self.Base._Selected - end -end - -function UIMenuListItem:Hovered(bool) - if bool ~= nil then - self.Base._Hovered = tobool(bool) - else - return self.Base._Hovered - end -end - -function UIMenuListItem:Enabled(bool) - if bool ~= nil then - self.Base._Enabled = tobool(bool) - else - return self.Base._Enabled - end -end - -function UIMenuListItem:Description(str) - if tostring(str) and str ~= nil then - self.Base._Description = tostring(str) - else - return self.Base._Description - end -end - -function UIMenuListItem:Offset(X, Y) - if tonumber(X) or tonumber(Y) then - if tonumber(X) then - self.Base._Offset.X = tonumber(X) - end - if tonumber(Y) then - self.Base._Offset.Y = tonumber(Y) - end - else - return self.Base._Offset - end -end - -function UIMenuListItem:Text(Text) - if tostring(Text) and Text ~= nil then - self.Base.Text:Text(tostring(Text)) - else - return self.Base.Text:Text() - end -end - -function UIMenuListItem:Index(Index) - if tonumber(Index) then - if tonumber(Index) > #self.Items then - self._Index = 1 - elseif tonumber(Index) < 1 then - self._Index = #self.Items - else - self._Index = tonumber(Index) - end - else - return self._Index - end -end - -function UIMenuListItem:ItemToIndex(Item) - for i = 1, #self.Items do - if type(Item) == type(self.Items[i]) and Item == self.Items[i] then - return i - elseif type(self.Items[i]) == "table" and (type(Item) == type(self.Items[i].Name) or type(Item) == type(self.Items[i].Value)) and (Item == self.Items[i].Name or Item == self.Items[i].Value) then - return i - end - end -end - -function UIMenuListItem:IndexToItem(Index) - if tonumber(Index) then - if tonumber(Index) == 0 then Index = 1 end - if self.Items[tonumber(Index)] then - return self.Items[tonumber(Index)] - end - end -end - -function UIMenuListItem:SetLeftBadge() - error("This item does not support badges") -end - -function UIMenuListItem:SetRightBadge() - error("This item does not support badges") -end - -function UIMenuListItem:RightLabel() - error("This item does not support a right label") -end - -function UIMenuListItem:AddPanel(Panel) - if Panel() == "UIMenuPanel" then - table.insert(self.Panels, Panel) - Panel:SetParentItem(self) - end -end - -function UIMenuListItem:RemovePanelAt(Index) - if tonumber(Index) then - if self.Panels[Index] then - table.remove(self.Panels, tonumber(Index)) - end - end -end - -function UIMenuListItem:FindPanelIndex(Panel) - if Panel() == "UIMenuPanel" then - for Index = 1, #self.Panels do - if self.Panels[Index] == Panel then - return Index - end - end - end - return nil -end - -function UIMenuListItem:FindPanelItem() - for Index = #self.Items, 1, -1 do - if self.Items[Index].Panel then - return Index - end - end - return nil -end - -function UIMenuListItem:Draw() - self.Base:Draw() - - if self:Enabled() then - if self:Selected() then - self.ItemText:Colour(0, 0, 0, 255) - self.LeftArrow:Colour(0, 0, 0, 255) - self.RightArrow:Colour(0, 0, 0, 255) - else - self.ItemText:Colour(245, 245, 245, 255) - self.LeftArrow:Colour(245, 245, 245, 255) - self.RightArrow:Colour(245, 245, 245, 255) - end - else - self.ItemText:Colour(163, 159, 148, 255) - self.LeftArrow:Colour(163, 159, 148, 255) - self.RightArrow:Colour(163, 159, 148, 255) - end - - local Text = (type(self.Items[self._Index]) == "table") and tostring(self.Items[self._Index].Name) or tostring(self.Items[self._Index]) - local Offset = MeasureStringWidth(Text, 0, 0.35) - - self.ItemText:Text(Text) - self.LeftArrow:Position(378 - Offset + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, self.LeftArrow.Y) - - if self:Selected() then - self.LeftArrow:Draw() - self.RightArrow:Draw() - self.ItemText:Position(403 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, self.ItemText.Y) - else - self.ItemText:Position(418 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, self.ItemText.Y) - end - - self.ItemText:Draw() -end - ---[[ - UIMenuSliderItem.lua - Items ---]] - -function UIMenuSliderItem.New(Text, Items, Index, Description, Divider) - if type(Items) ~= "table" then Items = {} end - if Index == 0 then Index = 1 end - local _UIMenuSliderItem = { - Base = UIMenuItem.New(Text or "", Description or ""), - Items = Items, - ShowDivider = tobool(Divider), - LeftArrow = Sprite.New("commonmenutu", "arrowleft", 0, 105, 15, 15), - RightArrow = Sprite.New("commonmenutu", "arrowright", 0, 105, 15, 15), - Background = UIResRectangle.New(0, 0, 150, 9, 4, 32, 57, 255), - Slider = UIResRectangle.New(0, 0, 75, 9, 57, 116, 200, 255), - Divider = UIResRectangle.New(0, 0, 2.5, 20, 245, 245, 245, 255), - _Index = tonumber(Index) or 1, - OnSliderChanged = function(menu, item, newindex) end, - OnSliderSelected = function(menu, item, newindex) end, - } - return setmetatable(_UIMenuSliderItem, UIMenuSliderItem) -end - -function UIMenuSliderItem:SetParentMenu(Menu) - if Menu() == "UIMenu" then - self.Base.ParentMenu = Menu - else - return self.Base.ParentMenu - end -end - -function UIMenuSliderItem:Position(Y) - if tonumber(Y) then - self.Background:Position(250 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, Y + 158.5 + self.Base._Offset.Y) - self.Slider:Position(250 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, Y + 158.5 + self.Base._Offset.Y) - self.Divider:Position(323.5 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, Y + 153 + self.Base._Offset.Y) - self.LeftArrow:Position(235 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 155.5 + Y + self.Base._Offset.Y) - self.RightArrow:Position(400 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 155.5 + Y + self.Base._Offset.Y) - self.Base:Position(Y) - end -end - -function UIMenuSliderItem:Selected(bool) - if bool ~= nil then - self.Base._Selected = tobool(bool) - else - return self.Base._Selected - end -end - -function UIMenuSliderItem:Hovered(bool) - if bool ~= nil then - self.Base._Hovered = tobool(bool) - else - return self.Base._Hovered - end -end - -function UIMenuSliderItem:Enabled(bool) - if bool ~= nil then - self.Base._Enabled = tobool(bool) - else - return self.Base._Enabled - end -end - -function UIMenuSliderItem:Description(str) - if tostring(str) and str ~= nil then - self.Base._Description = tostring(str) - else - return self.Base._Description - end -end - -function UIMenuSliderItem:Offset(X, Y) - if tonumber(X) or tonumber(Y) then - if tonumber(X) then - self.Base._Offset.X = tonumber(X) - end - if tonumber(Y) then - self.Base._Offset.Y = tonumber(Y) - end - else - return self.Base._Offset - end -end - -function UIMenuSliderItem:Text(Text) - if tostring(Text) and Text ~= nil then - self.Base.Text:Text(tostring(Text)) - else - return self.Base.Text:Text() - end -end - -function UIMenuSliderItem:Index(Index) - if tonumber(Index) then - if tonumber(Index) > #self.Items then - self._Index = 1 - elseif tonumber(Index) < 1 then - self._Index = #self.Items - else - self._Index = tonumber(Index) - end - else - return self._Index - end -end - -function UIMenuSliderItem:ItemToIndex(Item) - for i = 1, #self.Items do - if type(Item) == type(self.Items[i]) and Item == self.Items[i] then - return i - end - end -end - -function UIMenuSliderItem:IndexToItem(Index) - if tonumber(Index) then - if tonumber(Index) == 0 then Index = 1 end - if self.Items[tonumber(Index)] then - return self.Items[tonumber(Index)] - end - end -end - -function UIMenuSliderItem:SetLeftBadge() - error("This item does not support badges") -end - -function UIMenuSliderItem:SetRightBadge() - error("This item does not support badges") -end - -function UIMenuSliderItem:RightLabel() - error("This item does not support a right label") -end - -function UIMenuSliderItem:Draw() - self.Base:Draw() - - if self:Enabled() then - if self:Selected() then - self.LeftArrow:Colour(0, 0, 0, 255) - self.RightArrow:Colour(0, 0, 0, 255) - else - self.LeftArrow:Colour(245, 245, 245, 255) - self.RightArrow:Colour(245, 245, 245, 255) - end - else - self.LeftArrow:Colour(163, 159, 148, 255) - self.RightArrow:Colour(163, 159, 148, 255) - end - - local Offset = ((self.Background.Width - self.Slider.Width) / (#self.Items - 1)) * (self._Index - 1) - - self.Slider:Position(250 + self.Base._Offset.X + Offset + self.Base.ParentMenu.WidthOffset, self.Slider.Y) - - if self:Selected() then - self.LeftArrow:Draw() - self.RightArrow:Draw() - end - - self.Background:Draw() - self.Slider:Draw() - if self.ShowDivider then - self.Divider:Draw() - end -end - ---[[ - UIMenuColouredItem.lua - Items ---]] - -function UIMenuColouredItem.New(Text, Description, MainColour, HighlightColour) - if type(Colour) ~= "table" then Colour = { R = 0, G = 0, B = 0, A = 255 } end - if type(HighlightColour) ~= "table" then Colour = { R = 255, G = 255, B = 255, A = 255 } end - local _UIMenuColouredItem = { - Base = UIMenuItem.New(Text or "", Description or ""), - Rectangle = UIResRectangle.New(0, 0, 431, 38, MainColour.R, MainColour.G, MainColour.B, MainColour.A), - MainColour = MainColour, - HighlightColour = HighlightColour, - Activated = function(menu, item) end, - } - _UIMenuColouredItem.Base.SelectedSprite:Colour(HighlightColour.R, HighlightColour.G, HighlightColour.B, HighlightColour.A) - return setmetatable(_UIMenuColouredItem, UIMenuColouredItem) -end - -function UIMenuColouredItem:SetParentMenu(Menu) - if Menu() == "UIMenu" then - self.Base.ParentMenu = Menu - else - return self.Base.ParentMenu - end -end - -function UIMenuColouredItem:Position(Y) - if tonumber(Y) then - self.Base:Position(Y) - self.Rectangle:Position(self.Base._Offset.X, Y + 144 + self.Base._Offset.Y) - end -end - -function UIMenuColouredItem:Selected(bool) - if bool ~= nil then - self.Base._Selected = tobool(bool) - else - return self.Base._Selected - end -end - -function UIMenuColouredItem:Hovered(bool) - if bool ~= nil then - self.Base._Hovered = tobool(bool) - else - return self.Base._Hovered - end -end - -function UIMenuColouredItem:Enabled(bool) - if bool ~= nil then - self.Base._Enabled = tobool(bool) - else - return self.Base._Enabled - end -end - -function UIMenuColouredItem:Description(str) - if tostring(str) and str ~= nil then - self.Base._Description = tostring(str) - else - return self.Base._Description - end -end - -function UIMenuColouredItem:Offset(X, Y) - if tonumber(X) or tonumber(Y) then - if tonumber(X) then - self.Base._Offset.X = tonumber(X) - end - if tonumber(Y) then - self.Base._Offset.Y = tonumber(Y) - end - else - return self.Base._Offset - end -end - -function UIMenuColouredItem:Text(Text) - if tostring(Text) and Text ~= nil then - self.Base.Text:Text(tostring(Text)) - else - return self.Base.Text:Text() - end -end - -function UIMenuColouredItem:RightLabel(Text, MainColour, HighlightColour) - if tostring(Text) and Text ~= nil then - if type(MainColour) == "table" then - self.Base.Label.MainColour = MainColour - end - if type(HighlightColour) == "table" then - self.Base.Label.HighlightColour = HighlightColour - end - self.Base.Label.Text:Text(tostring(Text)) - else - return self.Base.Label.Text:Text() - end -end - -function UIMenuColouredItem:SetLeftBadge(Badge) - if tonumber(Badge) then - self.Base.LeftBadge.Badge = tonumber(Badge) - end -end - -function UIMenuColouredItem:SetRightBadge(Badge) - if tonumber(Badge) then - self.Base.RightBadge.Badge = tonumber(Badge) - end -end - -function UIMenuColouredItem:Draw() - self.Rectangle:Size(431 + self.ParentMenu.WidthOffset, self.Rectangle.Height) - self.Rectangle:Draw() - self.Base:Draw() -end - ---[[ - UIMenuProgressItem.lua - Items ---]] - -function UIMenuProgressItem.New(Text, Items, Index, Description, Counter) - if type(Items) ~= "table" then Items = {} end - if Index == 0 then Index = 1 end - local _UIMenuProgressItem = { - Base = UIMenuItem.New(Text or "", Description or ""), - Data = { - Items = Items, - Counter = tobool(Counter), - Max = 407.5, - Index = tonumber(Index) or 1, - }, - Background = UIResRectangle.New(0, 0, 415, 20), - Bar = UIResRectangle.New(0, 0, 407.5, 12.5), - OnProgressChanged = function(menu, item, newindex) end, - OnProgressSelected = function(menu, item, newindex) end, - } - - _UIMenuProgressItem.Base.Rectangle.Height = 60 - _UIMenuProgressItem.Base.SelectedSprite.Height = 60 - - if _UIMenuProgressItem.Data.Counter then - _UIMenuProgressItem.Base:RightLabel(_UIMenuProgressItem.Data.Index .. "/" .. #_UIMenuProgressItem.Data.Items) - else - _UIMenuProgressItem.Base:RightLabel((type(_UIMenuProgressItem.Data.Items[_UIMenuProgressItem.Data.Index]) == "table") and tostring(_UIMenuProgressItem.Data.Items[_UIMenuProgressItem.Data.Index].Name) or tostring(_UIMenuProgressItem.Data.Items[_UIMenuProgressItem.Data.Index])) - end - - _UIMenuProgressItem.Bar.Width = _UIMenuProgressItem.Data.Index / #_UIMenuProgressItem.Data.Items * _UIMenuProgressItem.Data.Max - - return setmetatable(_UIMenuProgressItem, UIMenuProgressItem) -end - -function UIMenuProgressItem:SetParentMenu(Menu) - if Menu() == "UIMenu" then - self.Base.ParentMenu = Menu - else - return self.Base.ParentMenu - end -end - -function UIMenuProgressItem:Position(Y) - if tonumber(Y) then - self.Base:Position(Y) - self.Background:Position(8 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 177 + Y + self.Base._Offset.Y) - self.Bar:Position(11.75 + self.Base._Offset.X + self.Base.ParentMenu.WidthOffset, 180.75 + Y + self.Base._Offset.Y) - end -end - -function UIMenuProgressItem:Selected(bool) - if bool ~= nil then - self.Base._Selected = tobool(bool) - else - return self.Base._Selected - end -end - -function UIMenuProgressItem:Hovered(bool) - if bool ~= nil then - self.Base._Hovered = tobool(bool) - else - return self.Base._Hovered - end -end - -function UIMenuProgressItem:Enabled(bool) - if bool ~= nil then - self.Base._Enabled = tobool(bool) - else - return self.Base._Enabled - end -end - -function UIMenuProgressItem:Description(str) - if tostring(str) and str ~= nil then - self.Base._Description = tostring(str) - else - return self.Base._Description - end -end - -function UIMenuProgressItem:Offset(X, Y) - if tonumber(X) or tonumber(Y) then - if tonumber(X) then - self.Base._Offset.X = tonumber(X) - end - if tonumber(Y) then - self.Base._Offset.Y = tonumber(Y) - end - else - return self.Base._Offset - end -end - -function UIMenuProgressItem:Text(Text) - if tostring(Text) and Text ~= nil then - self.Base.Text:Text(tostring(Text)) - else - return self.Base.Text:Text() - end -end - -function UIMenuProgressItem:Index(Index) - if tonumber(Index) then - if tonumber(Index) > #self.Data.Items then - self.Data.Index = 1 - elseif tonumber(Index) < 1 then - self.Data.Index = #self.Data.Items - else - self.Data.Index = tonumber(Index) - end - - if self.Data.Counter then - self.Base:RightLabel(self.Data.Index .. "/" .. #self.Data.Items) - else - self.Base:RightLabel((type(self.Data.Items[self.Data.Index]) == "table") and tostring(self.Data.Items[self.Data.Index].Name) or tostring(self.Data.Items[self.Data.Index])) - end - - self.Bar.Width = self.Data.Index / #self.Data.Items * self.Data.Max - else - return self.Data.Index - end -end - -function UIMenuProgressItem:ItemToIndex(Item) - for i = 1, #self.Data.Items do - if type(Item) == type(self.Data.Items[i]) and Item == self.Data.Items[i] then - return i - elseif type(self.Data.Items[i]) == "table" and (type(Item) == type(self.Data.Items[i].Name) or type(Item) == type(self.Data.Items[i].Value)) and (Item == self.Data.Items[i].Name or Item == self.Data.Items[i].Value) then - return i - end - end -end - -function UIMenuProgressItem:IndexToItem(Index) - if tonumber(Index) then - if tonumber(Index) == 0 then Index = 1 end - if self.Data.Items[tonumber(Index)] then - return self.Data.Items[tonumber(Index)] - end - end -end - -function UIMenuProgressItem:SetLeftBadge() - error("This item does not support badges") -end - -function UIMenuProgressItem:SetRightBadge() - error("This item does not support badges") -end - -function UIMenuProgressItem:RightLabel() - error("This item does not support a right label") -end - -function UIMenuProgressItem:CalculateProgress(CursorX) - local Progress = CursorX - self.Bar.X - self:Index(math.round(#self.Data.Items * (((Progress >= 0 and Progress <= self.Data.Max) and Progress or ((Progress < 0) and 0 or self.Data.Max)) / self.Data.Max))) -end - -function UIMenuProgressItem:Draw() - self.Base:Draw() - - if self.Base._Selected then - self.Background:Colour(table.unpack(Colours.Black)) - self.Bar:Colour(table.unpack(Colours.White)) - else - self.Background:Colour(table.unpack(Colours.White)) - self.Bar:Colour(table.unpack(Colours.Black)) - end - - self.Background:Draw() - self.Bar:Draw() -end - ---[[ - UIMenuHeritageWindow.lua - Windows ---]] - -function UIMenuHeritageWindow.New(Mum, Dad) - if not tonumber(Mum) then Mum = 0 end - if not (Mum >= 0 and Mum <= 21) then Mum = 0 end - if not tonumber(Dad) then Dad = 0 end - if not (Dad >= 0 and Dad <= 23) then Dad = 0 end - _UIMenuHeritageWindow = { - Background = Sprite.New("pause_menu_pages_char_mom_dad", "mumdadbg", 0, 0, 431, 228), -- Background is required, must be a sprite or a rectangle. - MumSprite = Sprite.New("char_creator_portraits", ((Mum < 21) and "female_" .. Mum or "special_female_" .. (tonumber(string.sub(Mum, 2, 2)) - 1)), 0, 0, 228, 228), - DadSprite = Sprite.New("char_creator_portraits", ((Dad < 21) and "male_" .. Dad or "special_male_" .. (tonumber(string.sub(Dad, 2, 2)) - 1)), 0, 0, 228, 228), - Mum = Mum, - Dad = Dad, - _Offset = { X = 0, Y = 0 }, -- required - ParentMenu = nil, -- required - } - return setmetatable(_UIMenuHeritageWindow, UIMenuHeritageWindow) -end - -function UIMenuHeritageWindow:SetParentMenu(Menu) -- required - if Menu() == "UIMenu" then - self.ParentMenu = Menu - else - return self.ParentMenu - end -end - -function UIMenuHeritageWindow:Offset(X, Y) -- required - if tonumber(X) or tonumber(Y) then - if tonumber(X) then - self._Offset.X = tonumber(X) - end - if tonumber(Y) then - self._Offset.Y = tonumber(Y) - end - else - return self._Offset - end -end - -function UIMenuHeritageWindow:Position(Y) -- required - if tonumber(Y) then - self.Background:Position(self._Offset.X, 144 + Y + self._Offset.Y) - self.MumSprite:Position(self._Offset.X + (self.ParentMenu.WidthOffset / 2) + 25, 144 + Y + self._Offset.Y) - self.DadSprite:Position(self._Offset.X + (self.ParentMenu.WidthOffset / 2) + 195, 144 + Y + self._Offset.Y) - end -end - -function UIMenuHeritageWindow:Index(Mum, Dad) - if not tonumber(Mum) then Mum = self.Mum end - if not (Mum >= 0 and Mum <= 21) then Mum = self.Mum end - if not tonumber(Dad) then Dad = self.Dad end - if not (Dad >= 0 and Dad <= 23) then Dad = self.Dad end - - self.Mum = Mum - self.Dad = Dad - - self.MumSprite.TxtName = ((self.Mum < 21) and "female_" .. self.Mum or "special_female_" .. (tonumber(string.sub(Mum, 2, 2)) - 1)) - self.DadSprite.TxtName = ((self.Dad < 21) and "male_" .. self.Dad or "special_male_" .. (tonumber(string.sub(Dad, 2, 2)) - 1)) -end - -function UIMenuHeritageWindow:Draw() -- required - self.Background:Size(431 + self.ParentMenu.WidthOffset, 228) - self.Background:Draw() - self.DadSprite:Draw() - self.MumSprite:Draw() -end - ---[[ - UIMenuGridPanel.lua - Panels ---]] - -UIMenuGridPanel = setmetatable({}, UIMenuGridPanel) -UIMenuGridPanel.__index = UIMenuGridPanel -UIMenuGridPanel.__call = function() return "UIMenuPanel", "UIMenuGridPanel" end - -function UIMenuGridPanel.New(TopText, LeftText, RightText, BottomText) - _UIMenuGridPanel = { - Data = { - Enabled = true, - }, - Background = Sprite.New("commonmenu", "gradient_bgd", 0, 0, 431, 275), - Grid = Sprite.New("pause_menu_pages_char_mom_dad", "nose_grid", 0, 0, 200, 200, 0), - Circle = Sprite.New("mpinventory", "in_world_circle", 0, 0, 20, 20, 0), - Audio = { Slider = "CONTINUOUS_SLIDER", Library = "HUD_FRONTEND_DEFAULT_SOUNDSET", Id = nil }, - ParentItem = nil, - Text = { - Top = UIResText.New(TopText or "Top", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), - Left = UIResText.New(LeftText or "Left", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), - Right = UIResText.New(RightText or "Right", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), - Bottom = UIResText.New(BottomText or "Bottom", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), - }, - } - return setmetatable(_UIMenuGridPanel, UIMenuGridPanel) -end - -function UIMenuGridPanel:SetParentItem(Item) -- required - if Item() == "UIMenuItem" then - self.ParentItem = Item - else - return self.ParentItem - end -end - -function UIMenuGridPanel:Enabled(Enabled) - if type(Enabled) == "boolean" then - self.Data.Enabled = Enabled - else - return self.Data.Enabled - end -end - -function UIMenuGridPanel:CirclePosition(X, Y) - if tonumber(X) and tonumber(Y) then - self.Circle.X = (self.Grid.X + 20) + ((self.Grid.Width - 40) * ((X >= 0.0 and X <= 1.0) and X or 0.0)) - (self.Circle.Width / 2) - self.Circle.Y = (self.Grid.Y + 20) + ((self.Grid.Height - 40) * ((Y >= 0.0 and Y <= 1.0) and Y or 0.0)) - (self.Circle.Height / 2) - else - return math.round((self.Circle.X - (self.Grid.X + 20) + (self.Circle.Width / 2)) / (self.Grid.Width - 40), 2), math.round((self.Circle.Y - (self.Grid.Y + 20) + (self.Circle.Height / 2)) / (self.Grid.Height - 40), 2) - end -end - -function UIMenuGridPanel:Position(Y) -- required - if tonumber(Y) then - local ParentOffsetX, ParentOffsetWidth = self.ParentItem:Offset().X, self.ParentItem:SetParentMenu().WidthOffset - - self.Background:Position(ParentOffsetX, Y) - self.Grid:Position(ParentOffsetX + 115.5 + (ParentOffsetWidth / 2), 37.5 + Y) - self.Text.Top:Position(ParentOffsetX + 215.5 + (ParentOffsetWidth / 2), 5 + Y) - self.Text.Left:Position(ParentOffsetX + 57.75 + (ParentOffsetWidth / 2), 120 + Y) - self.Text.Right:Position(ParentOffsetX + 373.25 + (ParentOffsetWidth / 2), 120 + Y) - self.Text.Bottom:Position(ParentOffsetX + 215.5 + (ParentOffsetWidth / 2), 240 + Y) - - if not self.CircleLocked then - self.CircleLocked = true - self:CirclePosition(0.5, 0.5) - end - end -end - -function UIMenuGridPanel:UpdateParent(X, Y) - local _, ParentType = self.ParentItem() - if ParentType == "UIMenuListItem" then - local PanelItemIndex = self.ParentItem:FindPanelItem() - if PanelItemIndex then - self.ParentItem.Items[PanelItemIndex].Value[self.ParentItem:FindPanelIndex(self)] = { X = X, Y = Y } - self.ParentItem:Index(PanelItemIndex) - self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - else - local PanelIndex = self.ParentItem:FindPanelIndex(self) - for Index = 1, #self.ParentItem.Items do - if type(self.ParentItem.Items[Index]) == "table" then - if not self.ParentItem.Items[Index].Panels then self.ParentItem.Items[Index].Panels = {} end - self.ParentItem.Items[Index].Panels[PanelIndex] = { X = X, Y = Y } - else - self.ParentItem.Items[Index] = { Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = { [PanelIndex] = { X = X, Y = Y } } } - end - end - self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - end - elseif ParentType == "UIMenuItem" then - self.ParentItem.ActivatedPanel(self.ParentItem.ParentMenu, self.ParentItem, self, { X = X, Y = Y }) - end -end - -function UIMenuGridPanel:Functions() - local SafeZone = { X = 0, Y = 0 } - if self.ParentItem:SetParentMenu().Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() - end - - if IsMouseInBounds(self.Grid.X + 20 + SafeZone.X, self.Grid.Y + 20 + SafeZone.Y, self.Grid.Width - 40, self.Grid.Height - 40) then - if IsDisabledControlJustPressed(0, 24) then - if not self.Pressed then - self.Pressed = true - Citizen.CreateThread(function() - self.Audio.Id = GetSoundId() - PlaySoundFrontend(self.Audio.Id, self.Audio.Slider, self.Audio.Library, 1) - while IsDisabledControlPressed(0, 24) and IsMouseInBounds(self.Grid.X + 20 + SafeZone.X, self.Grid.Y + 20 + SafeZone.Y, self.Grid.Width - 40, self.Grid.Height - 40) do - Citizen.Wait(0) - local CursorX, CursorY = math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X - (self.Circle.Width / 2), math.round(GetControlNormal(0, 240) * 1080) - SafeZone.Y - (self.Circle.Height / 2) - - self.Circle:Position(((CursorX > (self.Grid.X + 10 + self.Grid.Width - 40)) and (self.Grid.X + 10 + self.Grid.Width - 40) or ((CursorX < (self.Grid.X + 20 - (self.Circle.Width / 2))) and (self.Grid.X + 20 - (self.Circle.Width / 2)) or CursorX)), ((CursorY > (self.Grid.Y + 10 + self.Grid.Height - 40)) and (self.Grid.Y + 10 + self.Grid.Height - 40) or ((CursorY < (self.Grid.Y + 20 - (self.Circle.Height / 2))) and (self.Grid.Y + 20 - (self.Circle.Height / 2)) or CursorY))) - end - StopSound(self.Audio.Id) - ReleaseSoundId(self.Audio.Id) - self.Pressed = false - end) - Citizen.CreateThread(function() - while IsDisabledControlPressed(0, 24) and IsMouseInBounds(self.Grid.X + 20 + SafeZone.X, self.Grid.Y + 20 + SafeZone.Y, self.Grid.Width - 40, self.Grid.Height - 40) do - Citizen.Wait(75) - local ResultX, ResultY = math.round((self.Circle.X - (self.Grid.X + 20) + (self.Circle.Width / 2)) / (self.Grid.Width - 40), 2), math.round((self.Circle.Y - (self.Grid.Y + 20) + (self.Circle.Height / 2)) / (self.Grid.Height - 40), 2) - - self:UpdateParent((((ResultX >= 0.0 and ResultX <= 1.0) and ResultX or ((ResultX <= 0) and 0.0) or 1.0) * 2) - 1, (((ResultY >= 0.0 and ResultY <= 1.0) and ResultY or ((ResultY <= 0) and 0.0) or 1.0) * 2) - 1) - end - end) - end - end - end -end - -function UIMenuGridPanel:Draw() -- required - if self.Data.Enabled then - self.Background:Size(431 + self.ParentItem:SetParentMenu().WidthOffset, 275) - - self.Background:Draw() - self.Grid:Draw() - self.Circle:Draw() - self.Text.Top:Draw() - self.Text.Left:Draw() - self.Text.Right:Draw() - self.Text.Bottom:Draw() - self:Functions() - end -end - ---[[ - UIMenuColourPanel.lua - Panels ---]] - -UIMenuColourPanel = setmetatable({}, UIMenuColourPanel) -UIMenuColourPanel.__index = UIMenuColourPanel -UIMenuColourPanel.__call = function() return "UIMenuPanel", "UIMenuColourPanel" end - -function UIMenuColourPanel.New(Title, Colours) - _UIMenuColourPanel = { - Data = { - Pagination = { - Min = 1, - Max = 8, - Total = 8, - }, - Index = 1000, - Items = Colours, - Title = Title or "Title", - Enabled = true, - Value = 1, - }, - Background = Sprite.New("commonmenu", "gradient_bgd", 0, 0, 431, 112), - Bar = {}, - LeftArrow = Sprite.New("commonmenu", "arrowleft", 0, 0, 30, 30), - RightArrow = Sprite.New("commonmenu", "arrowright", 0, 0, 30, 30), - SelectedRectangle = UIResRectangle.New(0, 0, 44.5, 8), - Text = UIResText.New(Title .. " (1 of " .. #Colours .. ")" or "Title" .. " (1 of " .. #Colours .. ")", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), - ParentItem = nil, - } - - for Index = 1, #Colours do - if Index < 10 then - table.insert(_UIMenuColourPanel.Bar, UIResRectangle.New(0, 0, 44.5, 44.5, table.unpack(Colours[Index]))) - else - break - end - end - - if #_UIMenuColourPanel.Data.Items ~= 0 then - _UIMenuColourPanel.Data.Index = 1000 - (1000 % #_UIMenuColourPanel.Data.Items) - _UIMenuColourPanel.Data.Pagination.Max = _UIMenuColourPanel.Data.Pagination.Total + 1 - _UIMenuColourPanel.Data.Pagination.Min = 0 - end - return setmetatable(_UIMenuColourPanel, UIMenuColourPanel) -end - -function UIMenuColourPanel:SetParentItem(Item) -- required - if Item() == "UIMenuItem" then - self.ParentItem = Item - else - return self.ParentItem - end -end - -function UIMenuColourPanel:Enabled(Enabled) - if type(Enabled) == "boolean" then - self.Data.Enabled = Enabled - else - return self.Data.Enabled - end -end - -function UIMenuColourPanel:Position(Y) -- required - if tonumber(Y) then - local ParentOffsetX, ParentOffsetWidth = self.ParentItem:Offset().X, self.ParentItem:SetParentMenu().WidthOffset - - self.Background:Position(ParentOffsetX, Y) - for Index = 1, #self.Bar do - self.Bar[Index]:Position(15 + (44.5 * (Index - 1)) + ParentOffsetX + (ParentOffsetWidth / 2), 55 + Y) - end - self.SelectedRectangle:Position(15 + (44.5 * ((self:CurrentSelection() - self.Data.Pagination.Min) - 1)) + ParentOffsetX + (ParentOffsetWidth / 2), 47 + Y) - self.LeftArrow:Position(7.5 + ParentOffsetX + (ParentOffsetWidth / 2), 15 + Y) - self.RightArrow:Position(393.5 + ParentOffsetX + (ParentOffsetWidth / 2), 15 + Y) - self.Text:Position(215.5 + ParentOffsetX + (ParentOffsetWidth / 2), 15 + Y) - end -end - -function UIMenuColourPanel:CurrentSelection(value, PreventUpdate) - if tonumber(value) then - if #self.Data.Items == 0 then - self.Data.Index = 0 - end - - self.Data.Index = 1000000 - (1000000 % #self.Data.Items) + tonumber(value) - - if self:CurrentSelection() > self.Data.Pagination.Max then - self.Data.Pagination.Min = self:CurrentSelection() - (self.Data.Pagination.Total + 1) - self.Data.Pagination.Max = self:CurrentSelection() - elseif self:CurrentSelection() < self.Data.Pagination.Min then - self.Data.Pagination.Min = self:CurrentSelection() - 1 - self.Data.Pagination.Max = self:CurrentSelection() + (self.Data.Pagination.Total + 1) - end - - self:UpdateSelection(PreventUpdate) - else - if #self.Data.Items == 0 then - return 1 - else - if self.Data.Index % #self.Data.Items == 0 then - return 1 - else - return self.Data.Index % #self.Data.Items + 1 - end - end - end -end - -function UIMenuColourPanel:UpdateParent(Colour) - local _, ParentType = self.ParentItem() - if ParentType == "UIMenuListItem" then - local PanelItemIndex = self.ParentItem:FindPanelItem() - local PanelIndex = self.ParentItem:FindPanelIndex(self) - if PanelItemIndex then - self.ParentItem.Items[PanelItemIndex].Value[PanelIndex] = Colour - self.ParentItem:Index(PanelItemIndex) - self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - else - for Index = 1, #self.ParentItem.Items do - if type(self.ParentItem.Items[Index]) == "table" then - if not self.ParentItem.Items[Index].Panels then self.ParentItem.Items[Index].Panels = {} end - self.ParentItem.Items[Index].Panels[PanelIndex] = Colour - else - self.ParentItem.Items[Index] = { Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = { [PanelIndex] = Colour } } - end - end - self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - end - elseif ParentType == "UIMenuItem" then - self.ParentItem.ActivatedPanel(self.ParentItem.ParentMenu, self.ParentItem, self, Colour) - end -end - -function UIMenuColourPanel:UpdateSelection(PreventUpdate) - local CurrentSelection = self:CurrentSelection() - if not PreventUpdate then - self:UpdateParent(CurrentSelection) - end - self.SelectedRectangle:Position(15 + (44.5 * ((CurrentSelection - self.Data.Pagination.Min) - 1)) + self.ParentItem:Offset().X, self.SelectedRectangle.Y) - for Index = 1, 9 do - self.Bar[Index]:Colour(table.unpack(self.Data.Items[self.Data.Pagination.Min + Index])) - end - self.Text:Text(self.Data.Title .. " (" .. CurrentSelection .. " of " .. #self.Data.Items .. ")") -end - -function UIMenuColourPanel:Functions() - - local SafeZone = { X = 0, Y = 0 } - if self.ParentItem:SetParentMenu().Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() - end - - - if IsMouseInBounds(self.LeftArrow.X + SafeZone.X, self.LeftArrow.Y + SafeZone.Y, self.LeftArrow.Width, self.LeftArrow.Height) then - if IsDisabledControlJustPressed(0, 24) then - if #self.Data.Items > self.Data.Pagination.Total + 1 then - if self:CurrentSelection() <= self.Data.Pagination.Min + 1 then - if self:CurrentSelection() == 1 then - self.Data.Pagination.Min = #self.Data.Items - (self.Data.Pagination.Total + 1) - self.Data.Pagination.Max = #self.Data.Items - self.Data.Index = 1000 - (1000 % #self.Data.Items) - self.Data.Index = self.Data.Index + (#self.Data.Items - 1) - self:UpdateSelection() - else - self.Data.Pagination.Min = self.Data.Pagination.Min - 1 - self.Data.Pagination.Max = self.Data.Pagination.Max - 1 - self.Data.Index = self.Data.Index - 1 - self:UpdateSelection() - end - else - self.Data.Index = self.Data.Index - 1 - self:UpdateSelection() - end - else - self.Data.Index = self.Data.Index - 1 - self:UpdateSelection() - end - end - end - - if IsMouseInBounds(self.RightArrow.X + SafeZone.X, self.RightArrow.Y + SafeZone.Y, self.RightArrow.Width, self.RightArrow.Height) then - if IsDisabledControlJustPressed(0, 24) then - if #self.Data.Items > self.Data.Pagination.Total + 1 then - if self:CurrentSelection() >= self.Data.Pagination.Max then - if self:CurrentSelection() == #self.Data.Items then - self.Data.Pagination.Min = 0 - self.Data.Pagination.Max = self.Data.Pagination.Total + 1 - self.Data.Index = 1000 - (1000 % #self.Data.Items) - self:UpdateSelection() - else - self.Data.Pagination.Max = self.Data.Pagination.Max + 1 - self.Data.Pagination.Min = self.Data.Pagination.Max - (self.Data.Pagination.Total + 1) - self.Data.Index = self.Data.Index + 1 - self:UpdateSelection() - end - else - self.Data.Index = self.Data.Index + 1 - self:UpdateSelection() - end - else - self.Data.Index = self.Data.Index + 1 - self:UpdateSelection() - end - end - end - - for Index = 1, #self.Bar do - if IsMouseInBounds(self.Bar[Index].X + SafeZone.X, self.Bar[Index].Y + SafeZone.Y, self.Bar[Index].Width, self.Bar[Index].Height) then - if IsDisabledControlJustPressed(0, 24) then - self:CurrentSelection(self.Data.Pagination.Min + Index - 1) - end - end - end -end - -function UIMenuColourPanel:Draw() -- required - if self.Data.Enabled then - self.Background:Size(431 + self.ParentItem:SetParentMenu().WidthOffset, 112) - - self.Background:Draw() - self.LeftArrow:Draw() - self.RightArrow:Draw() - self.Text:Draw() - self.SelectedRectangle:Draw() - for Index = 1, #self.Bar do - self.Bar[Index]:Draw() - end - self:Functions() - end -end - ---[[ - UIMenuPercentagePanel.lua - Panels ---]] - -UIMenuPercentagePanel = setmetatable({}, UIMenuPercentagePanel) -UIMenuPercentagePanel.__index = UIMenuPercentagePanel -UIMenuPercentagePanel.__call = function() return "UIMenuPanel", "UIMenuPercentagePanel" end - -function UIMenuPercentagePanel.New(MinText, MaxText) - _UIMenuPercentagePanel = { - Data = { - Enabled = true, - }, - Background = Sprite.New("commonmenu", "gradient_bgd", 0, 0, 431, 76), - ActiveBar = UIResRectangle.New(0, 0, 413, 10, 245, 245, 245, 255), - BackgroundBar = UIResRectangle.New(0, 0, 413, 10, 87, 87, 87, 255), - Text = { - Min = UIResText.New(MinText or "0%", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), - Max = UIResText.New("100%", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), - Title = UIResText.New(MaxText or "Opacity", 0, 0, 0.35, 255, 255, 255, 255, 0, "Centre"), - }, - Audio = { Slider = "CONTINUOUS_SLIDER", Library = "HUD_FRONTEND_DEFAULT_SOUNDSET", Id = nil }, - ParentItem = nil, - } - - return setmetatable(_UIMenuPercentagePanel, UIMenuPercentagePanel) -end - -function UIMenuPercentagePanel:SetParentItem(Item) -- required - if Item() == "UIMenuItem" then - self.ParentItem = Item - else - return self.ParentItem - end -end - -function UIMenuPercentagePanel:Enabled(Enabled) - if type(Enabled) == "boolean" then - self.Data.Enabled = Enabled - else - return self.Data.Enabled - end -end - -function UIMenuPercentagePanel:Position(Y) -- required - if tonumber(Y) then - local ParentOffsetX, ParentOffsetWidth = self.ParentItem:Offset().X, self.ParentItem:SetParentMenu().WidthOffset - self.Background:Position(ParentOffsetX, Y) - self.ActiveBar:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 9, 50 + Y) - self.BackgroundBar:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 9, 50 + Y) - self.Text.Min:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 25, 15 + Y) - self.Text.Max:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 398, 15 + Y) - self.Text.Title:Position(ParentOffsetX + (ParentOffsetWidth / 2) + 215.5, 15 + Y) - end -end - -function UIMenuPercentagePanel:Percentage(Value) - if tonumber(Value) then - local Percent = ((Value < 0.0) and 0.0) or ((Value > 1.0) and 1.0 or Value) - self.ActiveBar:Size(self.BackgroundBar.Width * Percent, self.ActiveBar.Height) - else - local SafeZone = { X = 0, Y = 0 } - if self.ParentItem:SetParentMenu().Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() - end - - local Progress = (math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X) - self.ActiveBar.X - return math.round(((Progress >= 0 and Progress <= 413) and Progress or ((Progress < 0) and 0 or 413)) / self.BackgroundBar.Width, 2) - end -end - -function UIMenuPercentagePanel:UpdateParent(Percentage) - local _, ParentType = self.ParentItem() - if ParentType == "UIMenuListItem" then - local PanelItemIndex = self.ParentItem:FindPanelItem() - if PanelItemIndex then - self.ParentItem.Items[PanelItemIndex].Value[self.ParentItem:FindPanelIndex(self)] = Percentage - self.ParentItem:Index(PanelItemIndex) - self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - else - local PanelIndex = self.ParentItem:FindPanelIndex(self) - for Index = 1, #self.ParentItem.Items do - if type(self.ParentItem.Items[Index]) == "table" then - if not self.ParentItem.Items[Index].Panels then self.ParentItem.Items[Index].Panels = {} end - self.ParentItem.Items[Index].Panels[PanelIndex] = Percentage - else - self.ParentItem.Items[Index] = { Name = tostring(self.ParentItem.Items[Index]), Value = self.ParentItem.Items[Index], Panels = { [PanelIndex] = Percentage } } - end - end - self.ParentItem.Base.ParentMenu.OnListChange(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - self.ParentItem.OnListChanged(self.ParentItem.Base.ParentMenu, self.ParentItem, self.ParentItem._Index) - end - elseif ParentType == "UIMenuItem" then - self.ParentItem.ActivatedPanel(self.ParentItem.ParentMenu, self.ParentItem, self, Percentage) - end -end - -function UIMenuPercentagePanel:Functions() - - local SafeZone = { X = 0, Y = 0 } - if self.ParentItem:SetParentMenu().Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() - end - - if IsMouseInBounds(self.BackgroundBar.X + SafeZone.X, self.BackgroundBar.Y - 4 + SafeZone.Y, self.BackgroundBar.Width, self.BackgroundBar.Height + 8) then - if IsDisabledControlJustPressed(0, 24) then - if not self.Pressed then - self.Pressed = true - Citizen.CreateThread(function() - self.Audio.Id = GetSoundId() - PlaySoundFrontend(self.Audio.Id, self.Audio.Slider, self.Audio.Library, 1) - while IsDisabledControlPressed(0, 24) and IsMouseInBounds(self.BackgroundBar.X + SafeZone.X, self.BackgroundBar.Y - 4 + SafeZone.Y, self.BackgroundBar.Width, self.BackgroundBar.Height + 8) do - Citizen.Wait(0) - local Progress = (math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X) - self.ActiveBar.X - self.ActiveBar:Size(((Progress >= 0 and Progress <= 413) and Progress or ((Progress < 0) and 0 or 413)), self.ActiveBar.Height) - end - StopSound(self.Audio.Id) - ReleaseSoundId(self.Audio.Id) - self.Pressed = false - end) - Citizen.CreateThread(function() - while IsDisabledControlPressed(0, 24) and IsMouseInBounds(self.BackgroundBar.X + SafeZone.X, self.BackgroundBar.Y - 4 + SafeZone.Y, self.BackgroundBar.Width, self.BackgroundBar.Height + 8) do - Citizen.Wait(75) - local Progress = (math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X) - self.ActiveBar.X - self:UpdateParent(math.round(((Progress >= 0 and Progress <= 413) and Progress or ((Progress < 0) and 0 or 413)) / self.BackgroundBar.Width, 2)) - end - end) - end - end - end -end - -function UIMenuPercentagePanel:Draw() -- required - if self.Data.Enabled then - self.Background:Size(431 + self.ParentItem:SetParentMenu().WidthOffset, 76) - self.Background:Draw() - self.BackgroundBar:Draw() - self.ActiveBar:Draw() - self.Text.Min:Draw() - self.Text.Max:Draw() - self.Text.Title:Draw() - self:Functions() - end -end - ---[[ - UIMenu.lua - Menus ---]] - -function UIMenu.New(Title, Subtitle, X, Y, TxtDictionary, TxtName) - local X, Y = tonumber(X) or 0, tonumber(Y) or 0 - if Title ~= nil then Title = tostring(Title) or "" else Title = "" end - if Subtitle ~= nil then Subtitle = tostring(Subtitle) or "" else Subtitle = "" end - if TxtDictionary ~= nil then TxtDictionary = tostring(TxtDictionary) or "commonmenu" else TxtDictionary = "commonmenu" end - if TxtName ~= nil then TxtName = tostring(TxtName) or "interaction_bgd" else TxtName = "interaction_bgd" end - local _UIMenu = { - Logo = Sprite.New(TxtDictionary, TxtName, 0 + X, 0 + Y, 431, 107), - Banner = nil, - Title = UIResText.New(Title, 215 + X, 20 + Y, 1.15, 255, 255, 255, 255, 1, 1), - Subtitle = { ExtraY = 0 }, - WidthOffset = 0, - Position = { X = X, Y = Y }, - Pagination = { Min = 0, Max = 9, Total = 9 }, - PageCounter = { PreText = "" }, - Extra = {}, - Description = {}, - Items = {}, - Windows = {}, - Children = {}, - Controls = { - Back = { - Enabled = true, - }, - Select = { - Enabled = true, - }, - Left = { - Enabled = true, - }, - Right = { - Enabled = true, - }, - Up = { - Enabled = true, - }, - Down = { - Enabled = true, - }, - }, - ParentMenu = nil, - ParentItem = nil, - _Visible = false, - ActiveItem = 1000, - Dirty = false; - ReDraw = true, - InstructionalScaleform = RequestScaleformMovie("INSTRUCTIONAL_BUTTONS"), - InstructionalButtons = {}, - OnIndexChange = function(menu, newindex) end, - OnListChange = function(menu, list, newindex) end, - OnSliderChange = function(menu, slider, newindex) end, - OnProgressChange = function(menu, progress, newindex) end, - OnCheckboxChange = function(menu, item, checked) end, - OnListSelect = function(menu, list, index) end, - OnSliderSelect = function(menu, slider, index) end, - OnProgressSelect = function(menu, progress, index) end, - OnItemSelect = function(menu, item, index) end, - OnMenuChanged = function(menu, newmenu, forward) end, - OnMenuClosed = function(menu) end, - Settings = { - InstructionalButtons = true, - MultilineFormats = true, - ScaleWithSafezone = true, - ResetCursorOnOpen = false, - MouseControlsEnabled = false, - MouseEdgeEnabled = false, - ControlDisablingEnabled = true, - Audio = { - Library = "HUD_FRONTEND_DEFAULT_SOUNDSET", - UpDown = "NAV_UP_DOWN", - LeftRight = "NAV_LEFT_RIGHT", - Select = "SELECT", - Back = "BACK", - Error = "ERROR", - }, - EnabledControls = { - Controller = { - { 0, 2 }, -- Look Up and Down - { 0, 1 }, -- Look Left and Right - { 0, 25 }, -- Aim - { 0, 24 }, -- Attack - }, - Keyboard = { - { 0, 0 }, -- Camera - { 0, 1 }, -- Look Left and Right - { 0, 2 }, -- Look Up and Down - { 0, 8 }, -- Fly Up and Down - { 0, 9 }, -- Fly Left and Right - { 0, 21 }, -- Sprint - { 0, 22 }, -- Jump - { 0, 23 }, -- Enter - { 0, 24 }, -- Attack - { 0, 25 }, -- Aim - { 0, 26 }, -- C - { 0, 30 }, -- Move Left and Right - { 0, 31 }, -- Move Up and Down - { 0, 47 }, -- G - { 0, 59 }, -- Move Vehicle Left and Right - { 0, 71 }, -- Accelerate Vehicle - { 0, 72 }, -- Vehicle Brake - { 0, 73 }, -- X - { 0, 75 }, -- Exit Vehicle - { 0, 76 }, -- Vehicle Handbrake - { 0, 89 }, -- Fly Yaw Left - { 0, 90 }, -- Fly Yaw Right - { 0, 108 }, -- Num Pad 4 - { 0, 109 }, -- Num Pad 6 - { 0, 110 }, -- Num Pad 5 - { 0, 111 }, -- Num Pad 8 - { 0, 117 }, -- Num Pad 7 - { 0, 118 }, -- Num Pad 9 - { 0, 171 }, -- CAPSLOCK - { 0, 187 }, -- Down - { 0, 188 }, -- Up - { 0, 189 }, -- Left - { 0, 190 }, -- Right - { 0, 195 }, -- X axis - { 0, 196 }, -- Y axis - { 0, 201 }, -- Select - { 0, 202 }, -- Back - { 0, 203 }, -- Spacebar? - { 0, 217 }, -- Select - { 0, 239 }, -- Cursor X - { 0, 240 }, -- Cursor Y - { 0, 241 }, -- Scroll up - { 0, 242 }, -- Scroll down - { 0, 249 }, -- N - { 0, 305 }, -- B - { 0, 306 }, -- N - }, - } - } - } - - if Subtitle ~= "" and Subtitle ~= nil then - _UIMenu.Subtitle.Rectangle = UIResRectangle.New(0 + _UIMenu.Position.X, 107 + _UIMenu.Position.Y, 431, 37, 0, 0, 0, 255) - _UIMenu.Subtitle.Text = UIResText.New(Subtitle, 8 + _UIMenu.Position.X, 110 + _UIMenu.Position.Y, 0.35, 245, 245, 245, 255, 0) - _UIMenu.Subtitle.BackupText = Subtitle - _UIMenu.Subtitle.Formatted = false - if string.starts(Subtitle, "~") then - _UIMenu.PageCounter.PreText = string.sub(Subtitle, 1, 3) - end - _UIMenu.PageCounter.Text = UIResText.New("", 425 + _UIMenu.Position.X, 110 + _UIMenu.Position.Y, 0.35, 245, 245, 245, 255, 0, "Right") - _UIMenu.Subtitle.ExtraY = 37 - end - - _UIMenu.ArrowSprite = Sprite.New("commonmenu", "shop_arrows_upanddown", 190 + _UIMenu.Position.X, 147 + 37 * (_UIMenu.Pagination.Total + 1) + _UIMenu.Position.Y - 37 + _UIMenu.Subtitle.ExtraY, 50, 50) - _UIMenu.Extra.Up = UIResRectangle.New(0 + _UIMenu.Position.X, 144 + 38 * (_UIMenu.Pagination.Total + 1) + _UIMenu.Position.Y - 37 + _UIMenu.Subtitle.ExtraY, 431, 18, 0, 0, 0, 200) - _UIMenu.Extra.Down = UIResRectangle.New(0 + _UIMenu.Position.X, 144 + 18 + 38 * (_UIMenu.Pagination.Total + 1) + _UIMenu.Position.Y - 37 + _UIMenu.Subtitle.ExtraY, 431, 18, 0, 0, 0, 200) - - _UIMenu.Description.Bar = UIResRectangle.New(_UIMenu.Position.X, 123, 431, 4, 0, 0, 0, 255) - _UIMenu.Description.Rectangle = Sprite.New("commonmenu", "gradient_bgd", _UIMenu.Position.X, 127, 431, 30) - _UIMenu.Description.Text = UIResText.New("Description", _UIMenu.Position.X + 5, 125, 0.35) - - _UIMenu.Background = Sprite.New("commonmenu", "gradient_bgd", _UIMenu.Position.X, 144 + _UIMenu.Position.Y - 37 + _UIMenu.Subtitle.ExtraY, 290, 25) - - Citizen.CreateThread(function() - if not HasScaleformMovieLoaded(_UIMenu.InstructionalScaleform) then - _UIMenu.InstructionalScaleform = RequestScaleformMovie("INSTRUCTIONAL_BUTTONS") - while not HasScaleformMovieLoaded(_UIMenu.InstructionalScaleform) do - Citizen.Wait(0) - end - end - end) - return setmetatable(_UIMenu, UIMenu) -end - -function UIMenu:SetMenuWidthOffset(Offset) - if tonumber(Offset) then - self.WidthOffset = math.floor(tonumber(Offset)) - self.Logo:Size(431 + self.WidthOffset, 107) - self.Title:Position(((self.WidthOffset + 431) / 2) + self.Position.X, 20 + self.Position.Y) - if self.Subtitle.Rectangle ~= nil then - self.Subtitle.Rectangle:Size(431 + self.WidthOffset + 100, 37) - self.PageCounter.Text:Position(425 + self.Position.X + self.WidthOffset, 110 + self.Position.Y) - end - if self.Banner ~= nil then - self.Banner:Size(431 + self.WidthOffset, 107) - end - end -end - -function UIMenu:DisEnableControls(bool) - if bool then - EnableAllControlActions(2) - else - DisableAllControlActions(2) - end - - if bool then - return - else - if Controller() then - for Index = 1, #self.Settings.EnabledControls.Controller do - EnableControlAction(self.Settings.EnabledControls.Controller[Index][1], self.Settings.EnabledControls.Controller[Index][2], true) - end - else - for Index = 1, #self.Settings.EnabledControls.Keyboard do - EnableControlAction(self.Settings.EnabledControls.Keyboard[Index][1], self.Settings.EnabledControls.Keyboard[Index][2], true) - end - end - end -end - -function UIMenu:InstructionalButtons(bool) - if bool ~= nil then - self.Settings.InstrucitonalButtons = tobool(bool) - end -end - -function UIMenu:SetBannerSprite(Sprite, IncludeChildren) - if Sprite() == "Sprite" then - self.Logo = Sprite - self.Logo:Size(431 + self.WidthOffset, 107) - self.Logo:Position(self.Position.X, self.Position.Y) - self.Banner = nil - if IncludeChildren then - for Item, Menu in pairs(self.Children) do - Menu.Logo = Sprite - Menu.Logo:Size(431 + self.WidthOffset, 107) - Menu.Logo:Position(self.Position.X, self.Position.Y) - Menu.Banner = nil - end - end - end -end - -function UIMenu:SetBannerRectangle(Rectangle, IncludeChildren) - if Rectangle() == "Rectangle" then - self.Banner = Rectangle - self.Banner:Size(431 + self.WidthOffset, 107) - self.Banner:Position(self.Position.X, self.Position.Y) - self.Logo = nil - if IncludeChildren then - for Item, Menu in pairs(self.Children) do - Menu.Banner = Rectangle - Menu.Banner:Size(431 + self.WidthOffset, 107) - Menu:Position(self.Position.X, self.Position.Y) - Menu.Logo = nil - end - end - end -end - -function UIMenu:CurrentSelection(value) - if tonumber(value) then - if #self.Items == 0 then - self.ActiveItem = 0 - end - - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = 1000000 - (1000000 % #self.Items) + tonumber(value) - - if self:CurrentSelection() > self.Pagination.Max then - self.Pagination.Min = self:CurrentSelection() - self.Pagination.Total - self.Pagination.Max = self:CurrentSelection() - elseif self:CurrentSelection() < self.Pagination.Min then - self.Pagination.Min = self:CurrentSelection() - self.Pagination.Max = self:CurrentSelection() + self.Pagination.Total - end - else - if #self.Items == 0 then - return 1 - else - if self.ActiveItem % #self.Items == 0 then - return 1 - else - return self.ActiveItem % #self.Items + 1 - end - end - end -end - -function UIMenu:CalculateWindowHeight() - local Height = 0 - for i = 1, #self.Windows do - Height = Height + self.Windows[i].Background:Size().Height - end - return Height -end - -function UIMenu:CalculateItemHeightOffset(Item) - if Item.Base then - return Item.Base.Rectangle.Height - else - return Item.Rectangle.Height - end -end - -function UIMenu:CalculateItemHeight() - local ItemOffset = 0 + self.Subtitle.ExtraY - 37 - for i = self.Pagination.Min + 1, self.Pagination.Max do - local Item = self.Items[i] - if Item ~= nil then - ItemOffset = ItemOffset + self:CalculateItemHeightOffset(Item) - end - end - return ItemOffset -end - -function UIMenu:RecalculateDescriptionPosition() - local WindowHeight = self:CalculateWindowHeight() - self.Description.Bar:Position(self.Position.X, 149 + self.Position.Y + WindowHeight) - self.Description.Rectangle:Position(self.Position.X, 149 + self.Position.Y + WindowHeight) - self.Description.Text:Position(self.Position.X + 8, 155 + self.Position.Y + WindowHeight) - - self.Description.Bar:Size(431 + self.WidthOffset, 4) - self.Description.Rectangle:Size(431 + self.WidthOffset, 30) - - self.Description.Bar:Position(self.Position.X, self:CalculateItemHeight() + ((#self.Items > (self.Pagination.Total + 1)) and 37 or 0) + self.Description.Bar:Position().Y) - self.Description.Rectangle:Position(self.Position.X, self:CalculateItemHeight() + ((#self.Items > (self.Pagination.Total + 1)) and 37 or 0) + self.Description.Rectangle:Position().Y) - self.Description.Text:Position(self.Position.X + 8, self:CalculateItemHeight() + ((#self.Items > (self.Pagination.Total + 1)) and 37 or 0) + self.Description.Text:Position().Y) -end - -function UIMenu:CaclulatePanelPosition(HasDescription) - local Height = self:CalculateWindowHeight() + 149 + self.Position.Y - - if HasDescription then - Height = Height + self.Description.Rectangle:Size().Height + 5 - end - - return self:CalculateItemHeight() + ((#self.Items > (self.Pagination.Total + 1)) and 37 or 0) + Height -end - -function UIMenu:AddWindow(Window) - if Window() == "UIMenuWindow" then - Window:SetParentMenu(self) - Window:Offset(self.Position.X, self.Position.Y) - table.insert(self.Windows, Window) - self.ReDraw = true - self:RecalculateDescriptionPosition() - end -end - -function UIMenu:RemoveWindowAt(Index) - if tonumber(Index) then - if self.Windows[Index] then - table.remove(self.Windows, Index) - self.ReDraw = true - self:RecalculateDescriptionPosition() - end - end -end - -function UIMenu:AddItem(Item) - if Item() == "UIMenuItem" then - local SelectedItem = self:CurrentSelection() - Item:SetParentMenu(self) - Item:Offset(self.Position.X, self.Position.Y) - Item:Position((#self.Items * 25) - 37 + self.Subtitle.ExtraY) - table.insert(self.Items, Item) - self:RecalculateDescriptionPosition() - self:CurrentSelection(SelectedItem) - end -end - -function UIMenu:RemoveItemAt(Index) - if tonumber(Index) then - if self.Items[Index] then - local SelectedItem = self:CurrentSelection() - if #self.Items > self.Pagination.Total and self.Pagination.Max == #self.Items - 1 then - self.Pagination.Min = self.Pagination.Min - 1 - self.Pagination.Max = self.Pagination.Max + 1 - end - table.remove(self.Items, tonumber(Index)) - self:RecalculateDescriptionPosition() - self:CurrentSelection(SelectedItem) - end - end -end - -function UIMenu:RefreshIndex() - if #self.Items == 0 then - self.ActiveItem = 1000 - self.Pagination.Max = self.Pagination.Total + 1 - self.Pagination.Min = 0 - return - end - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = 1000 - (1000 % #self.Items) - self.Pagination.Max = self.Pagination.Total + 1 - self.Pagination.Min = 0 - self.ReDraw = true -end - -function UIMenu:Clear() - self.Items = {} - self.ReDraw = true - self:RecalculateDescriptionPosition() -end - -function UIMenu:MultilineFormat(str) - if tostring(str) then - - local PixelPerLine = 425 + self.WidthOffset - local AggregatePixels = 0 - local output = "" - local words = string.split(tostring(str), " ") - - for i = 1, #words do - local offset = MeasureStringWidth(words[i], 0, 0.35) - AggregatePixels = AggregatePixels + offset - if AggregatePixels > PixelPerLine then - output = output .. "\n" .. words[i] .. " " - AggregatePixels = offset + MeasureString(" ") - else - output = output .. words[i] .. " " - AggregatePixels = AggregatePixels + MeasureString(" ") - end - end - return output - end -end - -function UIMenu:DrawCalculations() - local WindowHeight = self:CalculateWindowHeight() - - if self.Settings.MultilineFormats then - if self.Subtitle.Rectangle and not self.Subtitle.Formatted then - self.Subtitle.Formatted = true - self.Subtitle.Text:Text(self:MultilineFormat(self.Subtitle.Text:Text())) - - local Linecount = #string.split(self.Subtitle.Text:Text(), "\n") - self.Subtitle.ExtraY = ((Linecount == 1) and 37 or ((Linecount + 1) * 22)) - self.Subtitle.Rectangle:Size(431 + self.WidthOffset, self.Subtitle.ExtraY) - end - elseif self.Subtitle.Formatted then - self.Subtitle.Formatted = false - self.Subtitle.ExtraY = 37 - self.Subtitle.Rectangle:Size(431 + self.WidthOffset, self.Subtitle.ExtraY) - self.Subtitle.Text:Text(self.Subtitle.BackupText) - end - - self.Background:Size(431 + self.WidthOffset, self:CalculateItemHeight() + WindowHeight + ((self.Subtitle.ExtraY > 0) and 0 or 37)) - - self.Extra.Up:Size(431 + self.WidthOffset, 18) - self.Extra.Down:Size(431 + self.WidthOffset, 18) - - self.Extra.Up:Position(self.Position.X, 144 + self:CalculateItemHeight() + self.Position.Y + WindowHeight) - self.Extra.Down:Position(self.Position.X, 144 + 18 + self:CalculateItemHeight() + self.Position.Y + WindowHeight) - - if self.WidthOffset > 0 then - self.ArrowSprite:Position(190 + self.Position.X + (self.WidthOffset / 2), 137 + self:CalculateItemHeight() + self.Position.Y + WindowHeight) - else - self.ArrowSprite:Position(190 + self.Position.X + self.WidthOffset, 137 + self:CalculateItemHeight() + self.Position.Y + WindowHeight) - end - - self.ReDraw = false - - if #self.Items ~= 0 and self.Items[self:CurrentSelection()]:Description() ~= "" then - self:RecalculateDescriptionPosition() - - local description = self.Items[self:CurrentSelection()]:Description() - if self.Settings.MultilineFormats then - self.Description.Text:Text(self:MultilineFormat(description)) - else - self.Description.Text:Text(description) - end - - local Linecount = #string.split(self.Description.Text:Text(), "\n") - self.Description.Rectangle:Size(431 + self.WidthOffset, ((Linecount == 1) and 37 or ((Linecount + 1) * 22))) - end -end - -function UIMenu:Visible(bool) - if bool ~= nil then - self._Visible = tobool(bool) - self.JustOpened = tobool(bool) - self.Dirty = tobool(bool) - self:UpdateScaleform() - if self.ParentMenu ~= nil or tobool(bool) == false then - return - end - if self.Settings.ResetCursorOnOpen then - local W, H = GetScreenResolution() - SetCursorLocation(W / 2, H / 2) - SetCursorSprite(1) - end - else - return self._Visible - end -end - -function UIMenu:ProcessControl() - if not self._Visible then - return - end - - if self.JustOpened then - self.JustOpened = false - return - end - - if self.Controls.Back.Enabled and (IsDisabledControlJustReleased(0, 177) or IsDisabledControlJustReleased(1, 177) or IsDisabledControlJustReleased(2, 177) or IsDisabledControlJustReleased(0, 199) or IsDisabledControlJustReleased(1, 199) or IsDisabledControlJustReleased(2, 199)) then - self:GoBack() - end - - if #self.Items == 0 then - return - end - - if not self.UpPressed then - if self.Controls.Up.Enabled and (IsDisabledControlJustPressed(0, 172) or IsDisabledControlJustPressed(1, 172) or IsDisabledControlJustPressed(2, 172) or IsDisabledControlJustPressed(0, 241) or IsDisabledControlJustPressed(1, 241) or IsDisabledControlJustPressed(2, 241) or IsDisabledControlJustPressed(2, 241)) then - Citizen.CreateThread(function() - self.UpPressed = true - if #self.Items > self.Pagination.Total + 1 then - self:GoUpOverflow() - else - self:GoUp() - end - self:UpdateScaleform() - Citizen.Wait(120) - while self.Controls.Up.Enabled and (IsDisabledControlPressed(0, 172) or IsDisabledControlPressed(1, 172) or IsDisabledControlPressed(2, 172) or IsDisabledControlPressed(0, 241) or IsDisabledControlPressed(1, 241) or IsDisabledControlPressed(2, 241) or IsDisabledControlPressed(2, 241)) do - if #self.Items > self.Pagination.Total + 1 then - self:GoUpOverflow() - else - self:GoUp() - end - self:UpdateScaleform() - Citizen.Wait(50) - end - self.UpPressed = false - end) - end - end - - if not self.DownPressed then - if self.Controls.Down.Enabled and (IsDisabledControlJustPressed(0, 173) or IsDisabledControlJustPressed(1, 173) or IsDisabledControlJustPressed(2, 173) or IsDisabledControlJustPressed(0, 242) or IsDisabledControlJustPressed(1, 242) or IsDisabledControlJustPressed(2, 242)) then - Citizen.CreateThread(function() - self.DownPressed = true - if #self.Items > self.Pagination.Total + 1 then - self:GoDownOverflow() - else - self:GoDown() - end - self:UpdateScaleform() - Citizen.Wait(120) - while self.Controls.Down.Enabled and (IsDisabledControlPressed(0, 173) or IsDisabledControlPressed(1, 173) or IsDisabledControlPressed(2, 173) or IsDisabledControlPressed(0, 242) or IsDisabledControlPressed(1, 242) or IsDisabledControlPressed(2, 242)) do - if #self.Items > self.Pagination.Total + 1 then - self:GoDownOverflow() - else - self:GoDown() - end - self:UpdateScaleform() - Citizen.Wait(50) - end - self.DownPressed = false - end) - end - end - - if not self.LeftPressed then - if self.Controls.Left.Enabled and (IsDisabledControlPressed(0, 174) or IsDisabledControlPressed(1, 174) or IsDisabledControlPressed(2, 174)) then - Citizen.CreateThread(function() - self.LeftPressed = true - self:GoLeft() - Citizen.Wait(175) - while self.Controls.Left.Enabled and (IsDisabledControlPressed(0, 174) or IsDisabledControlPressed(1, 174) or IsDisabledControlPressed(2, 174)) do - self:GoLeft() - Citizen.Wait(125) - end - self.LeftPressed = false - end) - end - end - - if not self.RightPressed then - if self.Controls.Right.Enabled and (IsDisabledControlPressed(0, 175) or IsDisabledControlPressed(1, 175) or IsDisabledControlPressed(2, 175)) then - Citizen.CreateThread(function() - self.RightPressed = true - self:GoRight() - Citizen.Wait(175) - while self.Controls.Right.Enabled and (IsDisabledControlPressed(0, 175) or IsDisabledControlPressed(1, 175) or IsDisabledControlPressed(2, 175)) do - self:GoRight() - Citizen.Wait(125) - end - self.RightPressed = false - end) - end - end - - if self.Controls.Select.Enabled and (IsDisabledControlJustPressed(0, 201) or IsDisabledControlJustPressed(1, 201) or IsDisabledControlJustPressed(2, 201)) then - self:SelectItem() - end -end - -function UIMenu:GoUpOverflow() - if #self.Items <= self.Pagination.Total + 1 then - return - end - - if self:CurrentSelection() <= self.Pagination.Min + 1 then - if self:CurrentSelection() == 1 then - self.Pagination.Min = #self.Items - (self.Pagination.Total + 1) - self.Pagination.Max = #self.Items - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = 1000 - (1000 % #self.Items) - self.ActiveItem = self.ActiveItem + (#self.Items - 1) - self.Items[self:CurrentSelection()]:Selected(true) - else - self.Pagination.Min = self.Pagination.Min - 1 - self.Pagination.Max = self.Pagination.Max - 1 - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = self.ActiveItem - 1 - self.Items[self:CurrentSelection()]:Selected(true) - end - else - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = self.ActiveItem - 1 - self.Items[self:CurrentSelection()]:Selected(true) - end - PlaySoundFrontend(-1, self.Settings.Audio.UpDown, self.Settings.Audio.Library, true) - self.OnIndexChange(self, self:CurrentSelection()) - self.ReDraw = true -end - -function UIMenu:GoUp() - if #self.Items > self.Pagination.Total + 1 then - return - end - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = self.ActiveItem - 1 - self.Items[self:CurrentSelection()]:Selected(true) - PlaySoundFrontend(-1, self.Settings.Audio.UpDown, self.Settings.Audio.Library, true) - self.OnIndexChange(self, self:CurrentSelection()) - self.ReDraw = true -end - -function UIMenu:GoDownOverflow() - if #self.Items <= self.Pagination.Total + 1 then - return - end - - if self:CurrentSelection() >= self.Pagination.Max then - if self:CurrentSelection() == #self.Items then - self.Pagination.Min = 0 - self.Pagination.Max = self.Pagination.Total + 1 - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = 1000 - (1000 % #self.Items) - self.Items[self:CurrentSelection()]:Selected(true) - else - self.Pagination.Max = self.Pagination.Max + 1 - self.Pagination.Min = self.Pagination.Max - (self.Pagination.Total + 1) - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = self.ActiveItem + 1 - self.Items[self:CurrentSelection()]:Selected(true) - end - else - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = self.ActiveItem + 1 - self.Items[self:CurrentSelection()]:Selected(true) - end - PlaySoundFrontend(-1, self.Settings.Audio.UpDown, self.Settings.Audio.Library, true) - self.OnIndexChange(self, self:CurrentSelection()) - self.ReDraw = true -end - -function UIMenu:GoDown() - if #self.Items > self.Pagination.Total + 1 then - return - end - - self.Items[self:CurrentSelection()]:Selected(false) - self.ActiveItem = self.ActiveItem + 1 - self.Items[self:CurrentSelection()]:Selected(true) - PlaySoundFrontend(-1, self.Settings.Audio.UpDown, self.Settings.Audio.Library, true) - self.OnIndexChange(self, self:CurrentSelection()) - self.ReDraw = true -end - -function UIMenu:GoLeft() - local type, subtype = self.Items[self:CurrentSelection()]() - if subtype ~= "UIMenuListItem" and subtype ~= "UIMenuSliderItem" and subtype ~= "UIMenuProgressItem" then - return - end - - if not self.Items[self:CurrentSelection()]:Enabled() then - PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) - return - end - - if subtype == "UIMenuListItem" then - local Item = self.Items[self:CurrentSelection()] - Item:Index(Item._Index - 1) - self.OnListChange(self, Item, Item._Index) - Item.OnListChanged(self, Item, Item._Index) - PlaySoundFrontend(-1, self.Settings.Audio.LeftRight, self.Settings.Audio.Library, true) - elseif subtype == "UIMenuSliderItem" then - local Item = self.Items[self:CurrentSelection()] - Item:Index(Item._Index - 1) - self.OnSliderChange(self, Item, Item:Index()) - Item.OnSliderChanged(self, Item, Item._Index) - PlaySoundFrontend(-1, self.Settings.Audio.LeftRight, self.Settings.Audio.Library, true) - elseif subtype == "UIMenuProgressItem" then - local Item = self.Items[self:CurrentSelection()] - Item:Index(Item.Data.Index - 1) - self.OnProgressChange(self, Item, Item.Data.Index) - Item.OnProgressChanged(self, Item, Item.Data.Index) - PlaySoundFrontend(-1, self.Settings.Audio.LeftRight, self.Settings.Audio.Library, true) - end -end - -function UIMenu:GoRight() - local type, subtype = self.Items[self:CurrentSelection()]() - if subtype ~= "UIMenuListItem" and subtype ~= "UIMenuSliderItem" and subtype ~= "UIMenuProgressItem" then - return - end - - if not self.Items[self:CurrentSelection()]:Enabled() then - PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) - return - end - - if subtype == "UIMenuListItem" then - local Item = self.Items[self:CurrentSelection()] - Item:Index(Item._Index + 1) - self.OnListChange(self, Item, Item._Index) - Item.OnListChanged(self, Item, Item._Index) - PlaySoundFrontend(-1, self.Settings.Audio.LeftRight, self.Settings.Audio.Library, true) - elseif subtype == "UIMenuSliderItem" then - local Item = self.Items[self:CurrentSelection()] - Item:Index(Item._Index + 1) - self.OnSliderChange(self, Item, Item:Index()) - Item.OnSliderChanged(self, Item, Item._Index) - PlaySoundFrontend(-1, self.Settings.Audio.LeftRight, self.Settings.Audio.Library, true) - elseif subtype == "UIMenuProgressItem" then - local Item = self.Items[self:CurrentSelection()] - Item:Index(Item.Data.Index + 1) - self.OnProgressChange(self, Item, Item.Data.Index) - Item.OnProgressChanged(self, Item, Item.Data.Index) - PlaySoundFrontend(-1, self.Settings.Audio.LeftRight, self.Settings.Audio.Library, true) - end -end - -function UIMenu:SelectItem() - if not self.Items[self:CurrentSelection()]:Enabled() then - PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) - return - end - local Item = self.Items[self:CurrentSelection()] - local type, subtype = Item() - if subtype == "UIMenuCheckboxItem" then - Item.Checked = not Item.Checked - PlaySoundFrontend(-1, self.Settings.Audio.Select, self.Settings.Audio.Library, true) - self.OnCheckboxChange(self, Item, Item.Checked) - Item.CheckboxEvent(self, Item, Item.Checked) - elseif subtype == "UIMenuListItem" then - PlaySoundFrontend(-1, self.Settings.Audio.Select, self.Settings.Audio.Library, true) - self.OnListSelect(self, Item, Item._Index) - Item.OnListSelected(self, Item, Item._Index) - elseif subtype == "UIMenuSliderItem" then - PlaySoundFrontend(-1, self.Settings.Audio.Select, self.Settings.Audio.Library, true) - self.OnSliderSelect(self, Item, Item._Index) - Item.OnSliderSelected(Item._Index) - elseif subtype == "UIMenuProgressItem" then - PlaySoundFrontend(-1, self.Settings.Audio.Select, self.Settings.Audio.Library, true) - self.OnProgressSelect(self, Item, Item.Data.Index) - Item.OnProgressSelected(Item.Data.Index) - else - PlaySoundFrontend(-1, self.Settings.Audio.Select, self.Settings.Audio.Library, true) - self.OnItemSelect(self, Item, self:CurrentSelection()) - Item.Activated(self, Item) - if not self.Children[Item] then - return - end - self:Visible(false) - self.Children[Item]:Visible(true) - self.OnMenuChanged(self, self.Children[self.Items[self:CurrentSelection()]], true) - end -end - -function UIMenu:GoBack() - PlaySoundFrontend(-1, self.Settings.Audio.Back, self.Settings.Audio.Library, true) - self:Visible(false) - if self.ParentMenu ~= nil then - self.ParentMenu:Visible(true) - self.OnMenuChanged(self, self.ParentMenu, false) - if self.Settings.ResetCursorOnOpen then - local W, H = GetActiveScreenResolution() - SetCursorLocation(W / 2, H / 2) - end - end - self.OnMenuClosed(self) -end - -function UIMenu:BindMenuToItem(Menu, Item) - if Menu() == "UIMenu" and Item() == "UIMenuItem" then - Menu.ParentMenu = self - Menu.ParentItem = Item - self.Children[Item] = Menu - end -end - -function UIMenu:ReleaseMenuFromItem(Item) - if Item() == "UIMenuItem" then - if not self.Children[Item] then - return false - end - self.Children[Item].ParentMenu = nil - self.Children[Item].ParentItem = nil - self.Children[Item] = nil - return true - end -end - -function UIMenu:Draw() - if not self._Visible then - return - end - - HideHudComponentThisFrame(19) - - if self.Settings.ControlDisablingEnabled then - self:DisEnableControls(false) - end - - if self.Settings.InstructionalButtons then - DrawScaleformMovieFullscreen(self.InstructionalScaleform, 255, 255, 255, 255, 0) - end - - if self.Settings.ScaleWithSafezone then - ScreenDrawPositionBegin(76, 84) - ScreenDrawPositionRatio(0, 0, 0, 0) - end - - if self.ReDraw then - self:DrawCalculations() - end - - if self.Logo then - self.Logo:Draw() - elseif self.Banner then - self.Banner:Draw() - end - - self.Title:Draw() - - if self.Subtitle.Rectangle then - self.Subtitle.Rectangle:Draw() - self.Subtitle.Text:Draw() - end - - if #self.Items ~= 0 or #self.Windows ~= 0 then - self.Background:Draw() - end - - if #self.Windows ~= 0 then - local WindowOffset = 0 - for index = 1, #self.Windows do - if self.Windows[index - 1] then - WindowOffset = WindowOffset + self.Windows[index - 1].Background:Size().Height - end - local Window = self.Windows[index] - Window:Position(WindowOffset + self.Subtitle.ExtraY - 37) - Window:Draw() - end - end - - if #self.Items == 0 then - if self.Settings.ScaleWithSafezone then - ScreenDrawPositionEnd() - end - return - end - - local CurrentSelection = self:CurrentSelection() - self.Items[CurrentSelection]:Selected(true) - - if self.Items[CurrentSelection]:Description() ~= "" then - self.Description.Bar:Draw() - self.Description.Rectangle:Draw() - self.Description.Text:Draw() - end - - if self.Items[CurrentSelection].Panels ~= nil then - if #self.Items[CurrentSelection].Panels ~= 0 then - local PanelOffset = self:CaclulatePanelPosition(self.Items[CurrentSelection]:Description() ~= "") - for index = 1, #self.Items[CurrentSelection].Panels do - if self.Items[CurrentSelection].Panels[index - 1] then - PanelOffset = PanelOffset + self.Items[CurrentSelection].Panels[index - 1].Background:Size().Height + 5 - end - self.Items[CurrentSelection].Panels[index]:Position(PanelOffset) - self.Items[CurrentSelection].Panels[index]:Draw() - end - end - end - - local WindowHeight = self:CalculateWindowHeight() - - if #self.Items <= self.Pagination.Total + 1 then - local ItemOffset = self.Subtitle.ExtraY - 37 + WindowHeight - for index = 1, #self.Items do - Item = self.Items[index] - Item:Position(ItemOffset) - Item:Draw() - ItemOffset = ItemOffset + self:CalculateItemHeightOffset(Item) - end - else - local ItemOffset = self.Subtitle.ExtraY - 37 + WindowHeight - for index = self.Pagination.Min + 1, self.Pagination.Max, 1 do - if self.Items[index] then - Item = self.Items[index] - Item:Position(ItemOffset) - Item:Draw() - ItemOffset = ItemOffset + self:CalculateItemHeightOffset(Item) - end - end - - self.Extra.Up:Draw() - self.Extra.Down:Draw() - self.ArrowSprite:Draw() - - if self.PageCounter.Text ~= nil then - local Caption = self.PageCounter.PreText .. CurrentSelection .. " / " .. #self.Items - self.PageCounter.Text:Text(Caption) - self.PageCounter.Text:Draw() - end - end - - if self.Settings.ScaleWithSafezone then - ScreenDrawPositionEnd() - end -end - -function UIMenu:ProcessMouse() - if not self._Visible or self.JustOpened or #self.Items == 0 or tobool(Controller()) or not self.Settings.MouseControlsEnabled then - EnableControlAction(0, 2, true) - EnableControlAction(0, 1, true) - EnableControlAction(0, 25, true) - EnableControlAction(0, 24, true) - if self.Dirty then - for _, Item in pairs(self.Items) do - if Item:Hovered() then - Item:Hovered(false) - end - end - end - return - end - - local SafeZone = { X = 0, Y = 0 } - local WindowHeight = self:CalculateWindowHeight() - if self.Settings.ScaleWithSafezone then - SafeZone = GetSafeZoneBounds() - end - - local Limit = #self.Items - local ItemOffset = 0 - - ShowCursorThisFrame() - - if #self.Items > self.Pagination.Total + 1 then - Limit = self.Pagination.Max - end - - if IsMouseInBounds(0, 0, 30, 1080) and self.Settings.MouseEdgeEnabled then - SetGameplayCamRelativeHeading(GetGameplayCamRelativeHeading() + 5) - SetCursorSprite(6) - elseif IsMouseInBounds(1920 - 30, 0, 30, 1080) and self.Settings.MouseEdgeEnabled then - SetGameplayCamRelativeHeading(GetGameplayCamRelativeHeading() - 5) - SetCursorSprite(7) - elseif self.Settings.MouseEdgeEnabled then - SetCursorSprite(1) - end - - for i = self.Pagination.Min + 1, Limit, 1 do - local X, Y = self.Position.X + SafeZone.X, self.Position.Y + 144 - 37 + self.Subtitle.ExtraY + ItemOffset + SafeZone.Y + WindowHeight - local Item = self.Items[i] - local Type, SubType = Item() - local Width, Height = 431 + self.WidthOffset, self:CalculateItemHeightOffset(Item) - - if IsMouseInBounds(X, Y, Width, Height) then - Item:Hovered(true) - if not self.Controls.MousePressed then - if IsDisabledControlJustPressed(0, 24) then - Citizen.CreateThread(function() - local _X, _Y, _Width, _Height = X, Y, Width, Height - self.Controls.MousePressed = true - if Item:Selected() and Item:Enabled() then - if SubType == "UIMenuListItem" then - if IsMouseInBounds(Item.LeftArrow.X + SafeZone.X, Item.LeftArrow.Y + SafeZone.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then - self:GoLeft() - elseif not IsMouseInBounds(Item.RightArrow.X + SafeZone.X, Item.RightArrow.Y + SafeZone.Y, Item.RightArrow.Width, Item.RightArrow.Height) then - self:SelectItem() - end - if IsMouseInBounds(Item.RightArrow.X + SafeZone.X, Item.RightArrow.Y + SafeZone.Y, Item.RightArrow.Width, Item.RightArrow.Height) then - self:GoRight() - elseif not IsMouseInBounds(Item.LeftArrow.X + SafeZone.X, Item.LeftArrow.Y + SafeZone.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then - self:SelectItem() - end - elseif SubType == "UIMenuSliderItem" then - if IsMouseInBounds(Item.LeftArrow.X + SafeZone.X, Item.LeftArrow.Y + SafeZone.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then - self:GoLeft() - elseif not IsMouseInBounds(Item.RightArrow.X + SafeZone.X, Item.RightArrow.Y + SafeZone.Y, Item.RightArrow.Width, Item.RightArrow.Height) then - self:SelectItem() - end - if IsMouseInBounds(Item.RightArrow.X + SafeZone.X, Item.RightArrow.Y + SafeZone.Y, Item.RightArrow.Width, Item.RightArrow.Height) then - self:GoRight() - elseif not IsMouseInBounds(Item.LeftArrow.X + SafeZone.X, Item.LeftArrow.Y + SafeZone.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then - self:SelectItem() - end - elseif SubType == "UIMenuProgressItem" then - if IsMouseInBounds(Item.Bar.X + SafeZone.X, Item.Bar.Y + SafeZone.Y - 12, Item.Data.Max, Item.Bar.Height + 24) then - Item:CalculateProgress(math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X) - self.OnProgressChange(self, Item, Item.Data.Index) - Item.OnProgressChanged(self, Item, Item.Data.Index) - else - self:SelectItem() - end - else - self:SelectItem() - end - elseif not Item:Selected() then - self:CurrentSelection(i - 1) - PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) - self.OnIndexChange(self, self:CurrentSelection()) - self.ReDraw = true - self:UpdateScaleform() - elseif not Item:Enabled() and Item:Selected() then - PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) - end - Citizen.Wait(175) - while IsDisabledControlPressed(0, 24) and IsMouseInBounds(_X, _Y, _Width, _Height) do - if Item:Selected() and Item:Enabled() then - if SubType == "UIMenuListItem" then - if IsMouseInBounds(Item.LeftArrow.X + SafeZone.X, Item.LeftArrow.Y + SafeZone.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then - self:GoLeft() - end - if IsMouseInBounds(Item.RightArrow.X + SafeZone.X, Item.RightArrow.Y + SafeZone.Y, Item.RightArrow.Width, Item.RightArrow.Height) then - self:GoRight() - end - elseif SubType == "UIMenuSliderItem" then - if IsMouseInBounds(Item.LeftArrow.X + SafeZone.X, Item.LeftArrow.Y + SafeZone.Y, Item.LeftArrow.Width, Item.LeftArrow.Height) then - self:GoLeft() - end - if IsMouseInBounds(Item.RightArrow.X + SafeZone.X, Item.RightArrow.Y + SafeZone.Y, Item.RightArrow.Width, Item.RightArrow.Height) then - self:GoRight() - end - elseif SubType == "UIMenuProgressItem" then - if IsMouseInBounds(Item.Bar.X + SafeZone.X, Item.Bar.Y + SafeZone.Y - 12, Item.Data.Max, Item.Bar.Height + 24) then - Item:CalculateProgress(math.round(GetControlNormal(0, 239) * 1920) - SafeZone.X) - self.OnProgressChange(self, Item, Item.Data.Index) - Item.OnProgressChanged(self, Item, Item.Data.Index) - else - self:SelectItem() - end - end - elseif not Item:Selected() then - self:CurrentSelection(i - 1) - PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) - self.OnIndexChange(self, self:CurrentSelection()) - self.ReDraw = true - self:UpdateScaleform() - elseif not Item:Enabled() and Item:Selected() then - PlaySoundFrontend(-1, self.Settings.Audio.Error, self.Settings.Audio.Library, true) - end - Citizen.Wait(125) - end - self.Controls.MousePressed = false - end) - end - end - else - Item:Hovered(false) - end - ItemOffset = ItemOffset + self:CalculateItemHeightOffset(Item) - end - - local ExtraX, ExtraY = self.Position.X + SafeZone.X, 144 + self:CalculateItemHeight() + self.Position.Y + SafeZone.Y + WindowHeight - - if #self.Items <= self.Pagination.Total + 1 then return end - - if IsMouseInBounds(ExtraX, ExtraY, 431 + self.WidthOffset, 18) then - self.Extra.Up:Colour(30, 30, 30, 255) - if not self.Controls.MousePressed then - if IsDisabledControlJustPressed(0, 24) then - Citizen.CreateThread(function() - local _ExtraX, _ExtraY = ExtraX, ExtraY - self.Controls.MousePressed = true - if #self.Items > self.Pagination.Total + 1 then - self:GoUpOverflow() - else - self:GoUp() - end - Citizen.Wait(175) - while IsDisabledControlPressed(0, 24) and IsMouseInBounds(_ExtraX, _ExtraY, 431 + self.WidthOffset, 18) do - if #self.Items > self.Pagination.Total + 1 then - self:GoUpOverflow() - else - self:GoUp() - end - Citizen.Wait(125) - end - self.Controls.MousePressed = false - end) - end - end - else - self.Extra.Up:Colour(0, 0, 0, 200) - end - - if IsMouseInBounds(ExtraX, ExtraY + 18, 431 + self.WidthOffset, 18) then - self.Extra.Down:Colour(30, 30, 30, 255) - if not self.Controls.MousePressed then - if IsDisabledControlJustPressed(0, 24) then - Citizen.CreateThread(function() - local _ExtraX, _ExtraY = ExtraX, ExtraY - self.Controls.MousePressed = true - if #self.Items > self.Pagination.Total + 1 then - self:GoDownOverflow() - else - self:GoDown() - end - Citizen.Wait(175) - while IsDisabledControlPressed(0, 24) and IsMouseInBounds(_ExtraX, _ExtraY + 18, 431 + self.WidthOffset, 18) do - if #self.Items > self.Pagination.Total + 1 then - self:GoDownOverflow() - else - self:GoDown() - end - Citizen.Wait(125) - end - self.Controls.MousePressed = false - end) - end - end - else - self.Extra.Down:Colour(0, 0, 0, 200) - end -end - -function UIMenu:AddInstructionButton(button) - if type(button) == "table" and #button == 2 then - table.insert(self.InstructionalButtons, button) - end -end - -function UIMenu:RemoveInstructionButton(button) - if type(button) == "table" then - for i = 1, #self.InstructionalButtons do - if button == self.InstructionalButtons[i] then - table.remove(self.InstructionalButtons, i) - break - end - end - else - if tonumber(button) then - if self.InstructionalButtons[tonumber(button)] then - table.remove(self.InstructionalButtons, tonumber(button)) - end - end - end -end - -function UIMenu:AddEnabledControl(Inputgroup, Control, Controller) - if tonumber(Inputgroup) and tonumber(Control) then - table.insert(self.Settings.EnabledControls[(Controller and "Controller" or "Keyboard")], { Inputgroup, Control }) - end -end - -function UIMenu:RemoveEnabledControl(Inputgroup, Control, Controller) - local Type = (Controller and "Controller" or "Keyboard") - for Index = 1, #self.Settings.EnabledControls[Type] do - if Inputgroup == self.Settings.EnabledControls[Type][Index][1] and Control == self.Settings.EnabledControls[Type][Index][2] then - table.remove(self.Settings.EnabledControls[Type], Index) - break - end - end -end - -function UIMenu:UpdateScaleform() - if not self._Visible or not self.Settings.InstructionalButtons then - return - end - - PushScaleformMovieFunction(self.InstructionalScaleform, "CLEAR_ALL") - PopScaleformMovieFunction() - - PushScaleformMovieFunction(self.InstructionalScaleform, "TOGGLE_MOUSE_BUTTONS") - PushScaleformMovieFunctionParameterInt(0) - PopScaleformMovieFunction() - - PushScaleformMovieFunction(self.InstructionalScaleform, "CREATE_CONTAINER") - PopScaleformMovieFunction() - - PushScaleformMovieFunction(self.InstructionalScaleform, "SET_DATA_SLOT") - PushScaleformMovieFunctionParameterInt(0) - PushScaleformMovieFunctionParameterString(GetControlInstructionalButton(2, 176, 0)) - PushScaleformMovieFunctionParameterString("Select") - PopScaleformMovieFunction() - - if self.Controls.Back.Enabled then - PushScaleformMovieFunction(self.InstructionalScaleform, "SET_DATA_SLOT") - PushScaleformMovieFunctionParameterInt(1) - PushScaleformMovieFunctionParameterString(GetControlInstructionalButton(2, 177, 0)) - PushScaleformMovieFunctionParameterString("Back") - PopScaleformMovieFunction() - end - - local count = 2 - - for i = 1, #self.InstructionalButtons do - if self.InstructionalButtons[i] then - if #self.InstructionalButtons[i] == 2 then - PushScaleformMovieFunction(self.InstructionalScaleform, "SET_DATA_SLOT") - PushScaleformMovieFunctionParameterInt(count) - PushScaleformMovieFunctionParameterString(self.InstructionalButtons[i][1]) - PushScaleformMovieFunctionParameterString(self.InstructionalButtons[i][2]) - PopScaleformMovieFunction() - count = count + 1 - end - end - end - - PushScaleformMovieFunction(self.InstructionalScaleform, "DRAW_INSTRUCTIONAL_BUTTONS") - PushScaleformMovieFunctionParameterInt(-1) - PopScaleformMovieFunction() -end - ---[[ - MenuPool.lua - Menus ---]] - -function MenuPool.New() - local _MenuPool = { - Menus = {} - } - return setmetatable(_MenuPool, MenuPool) -end - -function MenuPool:AddSubMenu(Menu, Text, Description, KeepPosition, KeepBanner) - if Menu() == "UIMenu" then - local Item = UIMenuItem.New(tostring(Text), Description or "") - Menu:AddItem(Item) - local SubMenu - if KeepPosition then - SubMenu = UIMenu.New(Menu.Title:Text(), Text, Menu.Position.X, Menu.Position.Y) - else - SubMenu = UIMenu.New(Menu.Title:Text(), Text) - end - if KeepBanner then - if Menu.Logo ~= nil then - SubMenu.Logo = Menu.Logo - else - SubMenu.Logo = nil - SubMenu.Banner = Menu.Banner - end - end - self:Add(SubMenu) - Menu:BindMenuToItem(SubMenu, Item) - return SubMenu - end -end - -function MenuPool:Add(Menu) - if Menu() == "UIMenu" then - table.insert(self.Menus, Menu) - end -end - -function MenuPool:Clear() - self = { - Menus = {} - } -end - -function MenuPool:Remove() - self = nil -end - -function MenuPool:MouseEdgeEnabled(bool) - if bool ~= nil then - for _, Menu in pairs(self.Menus) do - Menu.Settings.MouseEdgeEnabled = tobool(bool) - end - end -end - -function MenuPool:ControlDisablingEnabled(bool) - if bool ~= nil then - for _, Menu in pairs(self.Menus) do - Menu.Settings.ControlDisablingEnabled = tobool(bool) - end - end -end - -function MenuPool:ResetCursorOnOpen(bool) - if bool ~= nil then - for _, Menu in pairs(self.Menus) do - Menu.Settings.ResetCursorOnOpen = tobool(bool) - end - end -end - -function MenuPool:MultilineFormats(bool) - if bool ~= nil then - for _, Menu in pairs(self.Menus) do - Menu.Settings.MultilineFormats = tobool(bool) - end - end -end - -function MenuPool:Audio(Attribute, Setting) - if Attribute ~= nil and Setting ~= nil then - for _, Menu in pairs(self.Menus) do - if Menu.Settings.Audio[Attribute] then - Menu.Settings.Audio[Attribute] = Setting - end - end - end -end - -function MenuPool:WidthOffset(offset) - if tonumber(offset) then - for _, Menu in pairs(self.Menus) do - Menu:SetMenuWidthOffset(tonumber(offset)) - end - end -end - -function MenuPool:CounterPreText(str) - if str ~= nil then - for _, Menu in pairs(self.Menus) do - Menu.PageCounter.PreText = tostring(str) - end - end -end - -function MenuPool:DisableInstructionalButtons(bool) - if bool ~= nil then - for _, Menu in pairs(self.Menus) do - Menu.Settings.InstructionalButtons = tobool(bool) - end - end -end - -function MenuPool:MouseControlsEnabled(bool) - if bool ~= nil then - for _, Menu in pairs(self.Menus) do - Menu.Settings.MouseControlsEnabled = tobool(bool) - end - end -end - -function MenuPool:RefreshIndex() - for _, Menu in pairs(self.Menus) do - Menu:RefreshIndex() - end -end - -function MenuPool:ProcessMenus() - self:ProcessControl() - self:ProcessMouse() - self:Draw() -end - -function MenuPool:ProcessControl() - for _, Menu in pairs(self.Menus) do - if Menu:Visible() then - Menu:ProcessControl() - end - end -end - -function MenuPool:ProcessMouse() - for _, Menu in pairs(self.Menus) do - if Menu:Visible() then - Menu:ProcessMouse() - end - end -end - -function MenuPool:Draw() - for _, Menu in pairs(self.Menus) do - if Menu:Visible() then - Menu:Draw() - end - end -end - -function MenuPool:IsAnyMenuOpen() - local open = false - for _, Menu in pairs(self.Menus) do - if Menu:Visible() then - open = true - break - end - end - return open -end - -function MenuPool:CloseAllMenus() - for _, Menu in pairs(self.Menus) do - if Menu:Visible() then - Menu:Visible(false) - Menu.OnMenuClosed(Menu) - end - end -end - -function MenuPool:SetBannerSprite(Sprite) - if Sprite() == "Sprite" then - for _, Menu in pairs(self.Menus) do - Menu:SetBannerSprite(Sprite) - end - end -end - -function MenuPool:SetBannerRectangle(Rectangle) - if Rectangle() == "Rectangle" then - for _, Menu in pairs(self.Menus) do - Menu:SetBannerRectangle(Rectangle) - end - end -end - -function MenuPool:TotalItemsPerPage(Value) - if tonumber(Value) then - for _, Menu in pairs(self.Menus) do - Menu.Pagination.Total = Value - 1 - end - end -end - ---[[ - Wrappers ---]] - -function NativeUI.CreatePool() - return MenuPool.New() -end - -function NativeUI.CreateMenu(Title, Subtitle, X, Y, TxtDictionary, TxtName) - return UIMenu.New(Title, Subtitle, X, Y, TxtDictionary, TxtName) -end - -function NativeUI.CreateItem(Text, Description) - return UIMenuItem.New(Text, Description) -end - -function NativeUI.CreateColouredItem(Text, Description, MainColour, HighlightColour) - return UIMenuColouredItem.New(Text, Description, MainColour, HighlightColour) -end - -function NativeUI.CreateCheckboxItem(Text, Check, Description) - return UIMenuCheckboxItem.New(Text, Check, Description) -end - -function NativeUI.CreateListItem(Text, Items, Index, Description) - return UIMenuListItem.New(Text, Items, Index, Description) -end - -function NativeUI.CreateSliderItem(Text, Items, Index, Description, Divider) - return UIMenuSliderItem.New(Text, Items, Index, Description, Divider) -end - -function NativeUI.CreateProgressItem(Text, Items, Index, Description, Counter) - return UIMenuProgressItem.New(Text, Items, Index, Description, Counter) -end - -function NativeUI.CreateHeritageWindow(Mum, Dad) - return UIMenuHeritageWindow.New(Mum, Dad) -end - -function NativeUI.CreateGridPanel(TopText, LeftText, RightText, BottomText) - return UIMenuGridPanel.New(TopText, LeftText, RightText, BottomText) -end - -function NativeUI.CreateColourPanel(Title, Colours) - return UIMenuColourPanel.New(Title, Colours) -end - -function NativeUI.CreatePercentagePanel(MinText, MaxText) - return UIMenuPercentagePanel.New(MinText, MaxText) -end - -function NativeUI.CreateSprite(TxtDictionary, TxtName, X, Y, Width, Height, Heading, R, G, B, A) - return Sprite.New(TxtDictionary, TxtName, X, Y, Width, Height, Heading, R, G, B, A) -end - -function NativeUI.CreateRectangle(X, Y, Width, Height, R, G, B, A) - return UIResRectangle.New(X, Y, Width, Height, R, G, B, A) -end - -function NativeUI.CreateText(Text, X, Y, Scale, R, G, B, A, Font, Alignment, DropShadow, Outline, WordWrap) - return UIResText.New(Text, X, Y, Scale, R, G, B, A, Font, Alignment, DropShadow, Outline, WordWrap) -end diff --git a/resources/dpemotes-master/README.md b/resources/dpemotes-master/README.md deleted file mode 100644 index 75a08d9ed..000000000 --- a/resources/dpemotes-master/README.md +++ /dev/null @@ -1,215 +0,0 @@ -# DpEmotes 🏋️ - -Emotes / Animations for FiveM with human, animal and prop support 🐩 - -# Available in: - -* Brazilian Portuguese 🇧🇷 - -* Czech 🇨🇿 - -* Danish 🇩🇰 - -* Dutch 🇳🇱 - -* English 🇬🇧 - -* Finnish 🇫🇮 - -* French 🇫🇷 - -* German 🇩🇪 - -* Italian 🇮🇹 - -* Spanish 🇪🇸 - -* Swedish 🇸🇪 - -All languages were either translated using Google Translate or contributed by you, the community. - -If you happen to find any incorrect translations or would like to add more languages, please feel free to provide an "issue" with the correct / additional translations. - -Languages can be selected and/or added in config.lua. - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - -# Ragdoll 🥴 - -* To enable ragdoll, change `RagdollEnabled = false,` to true in config.lua. - -* To change which key is responsible for ragdoll, `RagdollKeybind = 303` is currently set to `U` by default., -- Get the button number [here](https://docs.fivem.net/game-references/controls/) - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -# Menu Keybind 🎛️ - -**Important Note:** - -The keybind uses RegisterKeyMapping. By default, the server owner configured keybind in the *initial* config.lua will be the default key, however once the keybind is set for a user, it'll stay with this new value. Editing the config keybind will change it for new players only. - -* Menu key:* F5 - -F3 and F4 clash with [Menyoo](https://github.com/MAFINS/MenyooSP) and controllers 🎮 - -Server owners can change this in the `config.lua`; - -```lua -MenuKeybind = 'F5', -- Get the button string here https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ -``` - -Alternatively, the player base can set their own menu keybind to open DpEmotes - -```lua -Esc > settings > keybinds > fivem > dpemotes -``` - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - -# Keybinds and SQL 🎛️ - -The original dpemotes uses mysql-async which was then changed to ghmattimysql. Unfortunately, they are no longer maintained. - -To use the SQL features, install the [oxmysql](https://github.com/overextended/oxmysql) resource. If you do not want to use the SQL features, comment out the `oxmysql` region in fxmanifest.lua. - - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - -# Screenshots 📸 - - - -| | | | -|-|-|-| -| | | | -| | | | -| | | | -| | | -| | - - - ------------------------------------------------------------------------------------------------------------------------------------------------------ - - -# Installation Instructions ⚙️: - -* add DpEmotes to your `server.cfg` - -* [Enforce gamebuild to latest build](https://forum.cfx.re/t/tutorial-forcing-gamebuild-to-casino-cayo-perico-or-tuners-update/4784977) for all emotes and props to work correctly - -* start dpemotes - - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - -# Shared emotes 👩🏻‍❤️‍💋‍👨🏼 - -Emotes will work with either `SyncOffsetFront` or `Attachto`. - -- If it is with `SyncOffsetFront`, then the offset used is the one of the emote the player started.
-For example, if player one starts the emote `handshake`, then player one will have the SyncOffsetFront but not the other player. - - -- If it is with `Attachto`, then it'll either be player one's data used for attaching, or the player two's data.
-For example, if player one start the emote carry, then the other player will be attached but not the player one because Attachto is set in `carry2` and not `carry`.
-- If player one starts the emote `carry2`, then player one will be attached and not the other player. -it's the player who start the animation who will in most cases be moved - - -*Special case, if both emote have the `Attachto` then only the player who started the emote will be attached.* - -You can find a list of ped bones to attach the other player here: [Ped Bones](https://wiki.rage.mp/index.php?title=Bones) - -Using the website provided above, enter the bone ID, ie `1356` and not 111, which is the Bone Index. - - - - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - - -# Add-Ons 🛠️ - -* Fixed an issue with the clipboard and adds textures to paper (/e clipboard) - -* Changes umbrella texture to black (/e umbrella) - -# Optional Add-Ons 🛠️ - -* Adds textures to the mugshot prop (/e mugshot) - -* Retextured protest sign (can be changed using Texture Toolkit: https://www.gta5-mods.com/tools/texture-toolkit) - -**Grab it here:** - -[Add-Ons For DpEmotes](https://github.com/TayMcKenzieNZ/addonsfordpemotes) - - --------------------------------------------------------- - - -# Additional Instructions ⚙️ - -[Please check the fivem forum thread](https://forum.fivem.net/t/dpemotes-356ish-emotes-usable-while-walking-props-and-more/843105) - - - ----------------------- - -# Police Badge 👮 - -- Custom LSPD police badge by [LSPDFR member Sam](https://www.lcpdfr.com/downloads/gta5mods/misc/23386-lspd-police-badge/) - -- LSPD reskinned badge by [GTA5Mods user Sladus_Slawonkus](https://www.gta5-mods.com/misc/lspd-police-badge-replace-sladus_slawonkus) - - ----------------------- - -# FAQs 🗨️ - -**Q: Why do some emotes not work with females?** - -**A:** Blame Rockstar Games. I've done my best to replicate animations to work with females, however some male scenarios have sound effects and particles, of which I am unfamiliar with and syncing particles is out of my expertise. - ----------------------- - -**Q: Why do some emotes not work at all?** - -**A:** Check the Installation Instructions above as you need to be on the highest FiveM gamebuild. - ----------------------- - -**Q: Why do I see particle effects but other players don't?** - -**A:** Dullpear and I can't figure out how to sync particles. If you know how, feel free to inform me. - ----------------------- - -**Q: I bought this script off someone and notice it had a lot of the same animations. Can you help me?** - -**A:** You got scammed and that's your fault. Dpemotes is and always will be **FREE**. - ----------------------- - -**Q: Can I add my own emotes to this?** - -**A:** Of course, see my in depth [tutorial](https://forum.cfx.re/t/how-to-menyoo-to-dpemotes-conversion/4775018) for using Menyoo and converting them to work with dpemotes. - -You may sell ***custom made*** animations, however the menu must remain free. - ----------------------- - -**Q: I bought a pack of custom animations, how can I add them to your fork of dpemotes?** - -**A:** Usually the person who created them will provide code snippets for adding animations to dpemotes. If for whatever reason they haven't, you should contact them. - ----------------------- - -**Q: How do I reset the SQL keybinds?** - -**A:** No idea, but apparently only the server owner can 🤷🏻‍♂️ Google exist; Maybe contact the creator. - ----------------------- - - diff --git a/resources/dpemotes-master/client/AnimationList.lua b/resources/dpemotes-master/client/AnimationList.lua deleted file mode 100644 index e6ab0db46..000000000 --- a/resources/dpemotes-master/client/AnimationList.lua +++ /dev/null @@ -1,4016 +0,0 @@ --- DPEmotes forked by TayMcKenzieNZ requires you to be on the latest FiveM Gamebuild for all emotes to function. --- If an emote does not work, you may be on an older gamebuild. --- To get a higher gamebuild, see ReadMe on github repositorty -DP = {} - --- EXPRESSIONS -- - -DP.Expressions = { - ["Angry"] = { "Expression", "mood_angry_1" }, - ["Drunk"] = { "Expression", "mood_drunk_1" }, - ["Dumb"] = { "Expression", "pose_injured_1" }, - ["Electrocuted"] = { "Expression", "electrocuted_1" }, - ["Grumpy"] = { "Expression", "effort_1" }, - ["Grumpy2"] = { "Expression", "mood_drivefast_1" }, - ["Grumpy3"] = { "Expression", "pose_angry_1" }, - ["Happy"] = { "Expression", "mood_happy_1" }, - ["Injured"] = { "Expression", "mood_injured_1" }, - ["Joyful"] = { "Expression", "mood_dancing_low_1" }, - ["Mouthbreather"] = { "Expression", "smoking_hold_1" }, - ["Never Blink"] = { "Expression", "pose_normal_1" }, - ["One Eye"] = { "Expression", "pose_aiming_1" }, - ["Shocked"] = { "Expression", "shocked_1" }, - ["Shocked2"] = { "Expression", "shocked_2" }, - ["Sleeping"] = { "Expression", "mood_sleeping_1" }, - ["Sleeping2"] = { "Expression", "dead_1" }, - ["Sleeping3"] = { "Expression", "dead_2" }, - ["Smug"] = { "Expression", "mood_smug_1" }, - ["Speculative"] = { "Expression", "mood_aiming_1" }, - ["Stressed"] = { "Expression", "mood_stressed_1" }, - ["Sulking"] = { "Expression", "mood_sulk_1" }, - ["Weird"] = { "Expression", "effort_2" }, - ["Weird2"] = { "Expression", "effort_3" }, -} - - ---- WALKSTYLES --- - - -DP.Walks = { - ["Alien"] = { "move_m@alien" }, - ["Armored"] = { "anim_group_move_ballistic" }, - ["Arrogant"] = { "move_f@arrogant@a" }, - ["Brave"] = { "move_m@brave" }, - ["Casual"] = { "move_m@casual@a" }, - ["Casual 2"] = { "move_m@casual@b" }, - ["Casual 3"] = { "move_m@casual@c" }, - ["Casual 4"] = { "move_m@casual@d" }, - ["Casual 5"] = { "move_m@casual@e" }, - ["Casual 6"] = { "move_m@casual@f" }, - ["Chichi"] = { "move_f@chichi" }, - ["Confident"] = { "move_m@confident" }, - ["Cop"] = { "move_m@business@a" }, - ["Cop 2"] = { "move_m@business@b" }, - ["Cop 3"] = { "move_m@business@c" }, - ["Default Female"] = { "move_f@multiplayer" }, - ["Default Male"] = { "move_m@multiplayer" }, - ["Drunk"] = { "move_m@drunk@a" }, - ["Drunk"] = { "move_m@drunk@slightlydrunk" }, - ["Drunk 2"] = { "move_m@buzzed" }, - ["Drunk 3"] = { "move_m@drunk@verydrunk" }, - ["Femme"] = { "move_f@femme@" }, - ["Fire"] = { "move_characters@franklin@fire" }, - ["Fire2"] = { "move_characters@michael@fire" }, - ["Fire3"] = { "move_m@fire" }, - ["Flee"] = { "move_f@flee@a" }, - ["Franklin"] = { "move_p_m_one" }, - ["Gangster"] = { "move_m@gangster@generic" }, - ["Gangster 2"] = { "move_m@gangster@ng" }, - ["Gangster 3"] = { "move_m@gangster@var_e" }, - ["Gangster 4"] = { "move_m@gangster@var_f" }, - ["Gangster 5"] = { "move_m@gangster@var_i" }, - ["Grooving"] = { "anim@move_m@grooving@" }, - ["Guard"] = { "move_m@prison_gaurd" }, - ["Handcuffs"] = { "move_m@prisoner_cuffed" }, - ["Heels"] = { "move_f@heels@c" }, - ["Heels 2"] = { "move_f@heels@d" }, - ["Hiking"] = { "move_m@hiking" }, - ["Hipster"] = { "move_m@hipster@a" }, - ["Hobo"] = { "move_m@hobo@a" }, - ["Hurry"] = { "move_f@hurry@a" }, - ["Janitor"] = { "move_p_m_zero_janitor" }, - ["Janitor 2"] = { "move_p_m_zero_slow" }, - ["Jog"] = { "move_m@jog@" }, - ["Lemar"] = { "anim_group_move_lemar_alley" }, - ["Lester"] = { "move_heist_lester" }, - ["Lester 2"] = { "move_lester_caneup" }, - ["Maneater"] = { "move_f@maneater" }, - ["Michael"] = { "move_ped_bucket" }, - ["Money"] = { "move_m@money" }, - ["Muscle"] = { "move_m@muscle@a" }, - ["Posh"] = { "move_m@posh@" }, - ["Posh 2"] = { "move_f@posh@" }, - ["Quick"] = { "move_m@quick" }, - ["Runner"] = { "female_fast_runner" }, - ["Sad"] = { "move_m@sad@a" }, - ["Sassy"] = { "move_m@sassy" }, - ["Sassy 2"] = { "move_f@sassy" }, - ["Scared"] = { "move_f@scared" }, - ["Sexy"] = { "move_f@sexy@a" }, - ["Shady"] = { "move_m@shadyped@a" }, - ["Slow"] = { "move_characters@jimmy@slow@" }, - ["Swagger"] = { "move_m@swagger" }, - ["Tough"] = { "move_m@tough_guy@" }, - ["Tough 2"] = { "move_f@tough_guy@" }, - ["Trash"] = { "clipset@move@trash_fast_turn" }, - ["Trash 2"] = { "missfbi4prepp1_garbageman" }, - ["Trevor"] = { "move_p_m_two" }, - ["Wide"] = { "move_m@bag" }, - ["Chubby Male"] = { "move_chubby" }, --male - ["Chubby Female"] = { "move_f@chubby@a" }, --female - ["Depressed"] = { "move_m@depressed@a" }, - ["Depressed 2"] = { "move_m@depressed@b" }, - - - - - -- I cant get these to work for some reason, if anyone knows a fix, let me know - - - - - -- ["Caution"] = {"move_m@caution"}, -- breaks menu - --["Chubby"] = {"anim@move_m@chubby@a"},-- breaks menu - -- ["Crazy"] = {"move_m@crazy"},-- breaks menu - -- ["Joy"] = {"move_m@joy@a"},-- breaks menu - -- ["Power"] = {"move_m@power"},-- breaks menu - -- ["Wading"] = {"move_m@wading"} -- breaks menu - -- ["Depressed 3"] = { "move_m@depressed@c" }, -- breaks menu - -- ["Depressed 4"] = { "move_m@depressed@d" }, -- breaks menu - -- ["Caution"] = { "move_m@caution" },-- breaks menu - -- ["Crazy"] = { "move_m@crazy" }, -- breaks menu - -- ["Joy"] = { "move_m@joy@a" }, -- breaks menu - -- ["Power"] = { "move_m@power" }, -- breaks menu - -- ["Power Walk"] = { "move_m@powerwalk" }, -- breaks menu - -- ["Tired"] = { "move_m@tired" }, -- breaks menu - -- --["Wading"] = {"move_m@wading"},-- breaks menu -} - - ---- SHARED EMOTES --- I can not figue these out and would love to get custom emotes shared. DullPear doesn't answer his DMs. RIP. - -DP.Shared = { - --[emotename] = {dictionary, animation, displayname, targetemotename, additionalanimationoptions} - -- you dont have to specify targetemoteanem, if you do dont it will just play the same animation on both. - -- targetemote is used for animations that have a corresponding animation to the other player. - ["handshake"] = { "mp_ped_interaction", "handshake_guy_a", "Handshake", "Handshake2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3000, - SyncOffsetFront = 0.9 - }}, - ["handshake2"] = { "mp_ped_interaction", "handshake_guy_b", "Handshake 2", "handshake", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3000 - }}, - ["hug"] = { "mp_ped_interaction", "kisses_guy_a", "Hug", "hug2", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 5000, - SyncOffsetFront = 1.05, - }}, - ["hug2"] = { "mp_ped_interaction", "kisses_guy_b", "Hug 2", "hug", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 5000, - SyncOffsetFront = 1.13 - }}, - ["hug3"] = { "misscarsteal2chad_goodbye", "chad_armsaround_chad", "Hug 3", "hug4", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - SyncOffsetFront = 0.05, - }}, - ["hug4"] = { "misscarsteal2chad_goodbye", "chad_armsaround_girl", "Hug 4", "hug3", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - SyncOffsetFront = 0.13 - }}, - ["kiss"] = { "mp_ped_interaction", "kisses_guy_a", "Kiss", "kiss2", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 5000, - SyncOffsetFront = 1.05, - }}, - ["kiss2"] = { "mp_ped_interaction", "kisses_guy_b", "Kiss 2", "kiss", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 5000, - SyncOffsetFront = 1.13 - }}, - ["bro"] = { "mp_ped_interaction", "hugs_guy_a", "Bro", "bro2", AnimationOptions = { - SyncOffsetFront = 1.14 - }}, - ["bro2"] = { "mp_ped_interaction", "hugs_guy_b", "Bro 2", "bro", AnimationOptions = { - SyncOffsetFront = 1.14 - }}, - ["give"] = { "mp_common", "givetake1_a", "Give", "give2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 2000 - }}, - ["give2"] = { "mp_common", "givetake1_b", "Give 2", "give", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 2000 - }}, - ["baseball"] = { "anim@arena@celeb@flat@paired@no_props@", "baseball_a_player_a", "Baseball", "baseballthrow" }, - ["baseballthrow"] = { "anim@arena@celeb@flat@paired@no_props@", "baseball_a_player_b", "Baseball Throw", "baseball" }, - ["stickup"] = { "random@countryside_gang_fight", "biker_02_stickup_loop", "Stick Up", "stickupscared", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["stickupscared"] = { "missminuteman_1ig_2", "handsup_base", "Stickup Scared", "stickup", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["punch"] = { "melee@unarmed@streamed_variations", "plyr_takedown_rear_lefthook", "Punch", "punched" }, - ["punched"] = { "melee@unarmed@streamed_variations", "victim_takedown_front_cross_r", "Punched", "punch" }, - ["headbutt"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_headbutt", "Headbutt", "headbutted" }, - ["headbutted"] = { "melee@unarmed@streamed_variations", "victim_takedown_front_headbutt", "Headbutted", "headbutt" }, - ["slap2"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_backslap", "Slap 2", "slapped2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["slap"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_slap", "Slap", "slapped", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["slapped"] = { "melee@unarmed@streamed_variations", "victim_takedown_front_slap", "Slapped", "slap" }, - ["slapped2"] = { "melee@unarmed@streamed_variations", "victim_takedown_front_backslap", "Slapped 2", "slap2" }, - ["receiveblowjob"] = { "misscarsteal2pimpsex", "pimpsex_punter", "Receive Blowjob", "giveblowjob", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 30000, - SyncOffsetFront = 0.63 - }}, - ["giveblowjob"] = { "misscarsteal2pimpsex", "pimpsex_hooker", "Give Blowjob", "receiveblowjob", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 30000, - SyncOffsetFront = 0.63 - }}, - ["streetsexmale"] = { "misscarsteal2pimpsex", "shagloop_pimp", "Street Sex Male", "streetsexfemale", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - SyncOffsetFront = 0.50 - }}, - ["streetsexfemale"] = { "misscarsteal2pimpsex", "shagloop_hooker", "Street Sex Female", "streetsexmale", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - SyncOffsetFront = 0.50 - }}, - ["carry"] = { "missfinale_c2mcs_1", "fin_c2_mcs_1_camman", "Carry", "carry2", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - } }, - ["carry2"] = { "nm", "firemans_carry", "Be carried", "carry", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - Attachto = true, - bone = 0, - xPos = 0.27, - yPos = 0.10, - zPos = 0.60, - xRot = 0.0, - yRot = 0.0, - zRot = 10.0, - } }, -} - - ---- DANCING EMOTES, SOME WITH PROPS --- - - -DP.Dances = { - ["dance"] = { "anim@amb@nightclub@dancers@podium_dancers@", "hi_dance_facedj_17_v2_male^5", "Dance", AnimationOptions = { - EmoteLoop = true, - }}, - ["dance2"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "high_center_down", "Dance 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["dance3"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_a@", "high_center", "Dance 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["dance4"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "high_center_up", "Dance 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["dance5"] = { "anim@amb@casino@mini@dance@dance_solo@female@var_a@", "med_center", "Dance 5", AnimationOptions = { - EmoteLoop = true - }}, - ["dance6"] = { "misschinese2_crystalmazemcs1_cs", "dance_loop_tao", "Dance 6", AnimationOptions = { - EmoteLoop = true, - }}, - ["dance7"] = { "misschinese2_crystalmazemcs1_ig", "dance_loop_tao", "Dance 7", AnimationOptions = { - EmoteLoop = true, - }}, - ["dance8"] = { "missfbi3_sniping", "dance_m_default", "Dance 8", AnimationOptions = { - EmoteLoop = true, - }}, - ["dance9"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "med_center_up", "Dance 9", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancef"] = { "anim@amb@nightclub@dancers@solomun_entourage@", "mi_dance_facedj_17_v1_female^1", "Dance F", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancef2"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center", "Dance F2", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancef3"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center_up", "Dance F3", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancef4"] = { "anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity", "hi_dance_facedj_09_v2_female^1", "Dance F4", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancef5"] = { "anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity", "hi_dance_facedj_09_v2_female^3", "Dance F5", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancef6"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center_up", "Dance F6", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclub"] = { "anim@amb@nightclub_island@dancers@beachdance@", "hi_idle_a_m03", "Dance Club", AnimationOptions = { - EmoteLoop = true - }}, - ["danceclubb"] = { "anim@amb@nightclub_island@dancers@beachdance@", "hi_idle_a_m05", "Dance Club 2", AnimationOptions = { - EmoteLoop = true - }}, - ["danceclubc"] = { "anim@amb@nightclub_island@dancers@beachdance@", "hi_idle_a_m02", "Dance Club 3", AnimationOptions = { - EmoteLoop = true - }}, - ["danceclubd"] = { "anim@amb@nightclub_island@dancers@beachdance@", "hi_idle_b_f01", "Dance Club 4", AnimationOptions = { - EmoteLoop = true - }}, - ["danceclube"] = { "anim@amb@nightclub_island@dancers@club@", "hi_idle_a_f02", "Dance Club 5", AnimationOptions = { - EmoteLoop = true - }}, - ["danceclubf"] = { "anim@amb@nightclub_island@dancers@club@", "hi_idle_b_m03", "Dance Club 6", AnimationOptions = { - EmoteLoop = true - }}, - ["danceclubg"] = { "anim@amb@nightclub_island@dancers@club@", "hi_idle_d_f01", "Dance Club 7", AnimationOptions = { - EmoteLoop = true - }}, - ["danceclubh"] = { "anim@amb@nightclub_island@dancers@crowddance_facedj@", "mi_dance_facedj_17_v2_male^4", "Dance Club 8 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclubi"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "mi_dance_prop_13_v1_male^3", "Dance Club 9 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclubj"] = { "anim@amb@nightclub_island@dancers@crowddance_groups@groupd@", "mi_dance_crowd_13_v2_male^1", "Dance Club 10 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclubk"] = { "anim@amb@nightclub_island@dancers@crowddance_facedj@", "mi_dance_facedj_15_v2_male^4", "Dance Club 11 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclubl"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "high_center_up", "Dance Club 12", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclubm"] = { "anim@amb@nightclub_island@dancers@crowddance_facedj@", "hi_dance_facedj_hu_15_v2_male^5", "Dance Club 13 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclubn"] = { "anim@amb@nightclub_island@dancers@crowddance_facedj@", "hi_dance_facedj_hu_17_male^5", "Dance Club 14 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclubo"] = { "anim@amb@nightclub@mini@dance@dance_solo@shuffle@", "high_center", "Dance Club 15 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceclubp"] = { "anim@amb@nightclub@mini@dance@dance_solo@shuffle@", "high_left_down", "Dance Club 16 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancedrink"] = { "anim@amb@nightclub_island@dancers@beachdanceprop@", "mi_idle_c_m01", "Dance Drink (Beer)", AnimationOptions = { - Prop = 'prop_beer_amopen', - PropBone = 28422, - PropPlacement = { 0.0, 0.00, 0.0, 0.0, 0.0, 20.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancedrink2"] = { "anim@amb@nightclub_island@dancers@beachdanceprop@", "mi_loop_f1", "Dance Drink 2 (Wine)", AnimationOptions = { - Prop = 'p_wine_glass_s', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.0900, 0.0, 0.0, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancedrink3"] = { "anim@amb@nightclub_island@dancers@beachdanceprop@", "mi_loop_m04", "Dance Drink 3 (Whiskey)", AnimationOptions = { - Prop = 'ba_prop_battle_whiskey_opaque_s', - PropBone = 28422, - PropPlacement = { -0.0100, 0.00, 0.0, 0.0, 0.0, 10.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancedrink4"] = { "anim@amb@nightclub_island@dancers@beachdanceprops@male@", "mi_idle_b_m04", "Dance Drink 4 (Whiskey)", AnimationOptions = { - Prop = 'ba_prop_battle_whiskey_opaque_s', - PropBone = 28422, - PropPlacement = { -0.0100, 0.00, 0.0, 0.0, 0.0, 10.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancedrink5"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "hi_dance_prop_09_v1_female^3", "Dance Drink 5 (Wine)", AnimationOptions = { - Prop = 'p_wine_glass_s', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.0900, 0.0, 0.0, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancedrink6"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "hi_dance_prop_09_v1_male^3", "Dance Drink 6 (Beer)", AnimationOptions = { - Prop = 'prop_beer_logopen', - PropBone = 28422, - PropPlacement = { 0.0090, 0.0010, -0.0310, 180.0, 180.0, -69.99 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancedrink7"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "hi_dance_prop_11_v1_female^3", "Dance Drink 7 (Wine)", AnimationOptions = { - Prop = 'p_wine_glass_s', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.0900, 0.0, 0.0, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancedrink8"] = { "anim@amb@nightclub_island@dancers@crowddance_single_props@", "hi_dance_prop_11_v1_female^1", "Dance Drink 8 (Wine)", AnimationOptions = { - Prop = 'p_wine_glass_s', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.0900, 0.0, 0.0, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["danceslow2"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "low_center", "Dance Slow 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceslow3"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_a@", "low_center_down", "Dance Slow 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceslow4"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "low_center", "Dance Slow 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceupper"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "high_center", "Dance Upper", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["danceupper2"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "high_center_up", "Dance Upper 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["danceshy"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_a@", "low_center", "Dance Shy", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceshy2"] = { "anim@amb@nightclub@mini@dance@dance_solo@female@var_b@", "low_center_down", "Dance Shy 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["danceslow"] = { "anim@amb@nightclub@mini@dance@dance_solo@male@var_b@", "low_center", "Dance Slow", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancesilly9"] = { "rcmnigel1bnmt_1b", "dance_loop_tyler", "Dance Silly 9", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancesilly"] = { "special_ped@mountain_dancer@monologue_3@monologue_3a", "mnt_dnc_buttwag", "Dance Silly", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancesilly2"] = { "move_clown@p_m_zero_idles@", "fidget_short_dance", "Dance Silly 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancesilly3"] = { "move_clown@p_m_two_idles@", "fidget_short_dance", "Dance Silly 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancesilly4"] = { "anim@amb@nightclub@lazlow@hi_podium@", "danceidle_hi_11_buttwiggle_b_laz", "Dance Silly 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancesilly5"] = { "timetable@tracy@ig_5@idle_a", "idle_a", "Dance Silly 5", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancesilly6"] = { "timetable@tracy@ig_8@idle_b", "idle_d", "Dance Silly 6", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancesilly7"] = { "anim@amb@casino@mini@dance@dance_solo@female@var_b@", "med_center", "Dance Silly 7", AnimationOptions = { - EmoteLoop = true - }}, - ["dancesilly8"] = { "anim@amb@casino@mini@dance@dance_solo@female@var_b@", "high_center", "Dance Silly 8", AnimationOptions = { - EmoteLoop = true - }}, - ["dancesilly9"] = { "anim@mp_player_intcelebrationfemale@the_woogie", "the_woogie", "Dance Silly 9", AnimationOptions = { - EmoteLoop = true - }}, - ["danceglowstick"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_13_mi_hi_sexualgriding_laz", "Dance Glowsticks", AnimationOptions = { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 28422, - PropPlacement = { 0.0700, 0.1400, 0.0, -80.0, 20.0 }, - SecondProp = 'ba_prop_battle_glowstick_01', - SecondPropBone = 60309, - SecondPropPlacement = { 0.0700, 0.0900, 0.0, -120.0, -20.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["danceglowstick2"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_12_mi_hi_bootyshake_laz", "Dance Glowsticks 2", AnimationOptions = { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 28422, - PropPlacement = { 0.0700, 0.1400, 0.0, -80.0, 20.0 }, - SecondProp = 'ba_prop_battle_glowstick_01', - SecondPropBone = 60309, - SecondPropPlacement = { 0.0700, 0.0900, 0.0, -120.0, -20.0 }, - EmoteLoop = true, - }}, - ["danceglowstick3"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Glowsticks 3", AnimationOptions = { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 28422, - PropPlacement = { 0.0700, 0.1400, 0.0, -80.0, 20.0 }, - SecondProp = 'ba_prop_battle_glowstick_01', - SecondPropBone = 60309, - SecondPropPlacement = { 0.0700, 0.0900, 0.0, -120.0, -20.0 }, - EmoteLoop = true, - }}, - ["dancehorse"] = { "anim@amb@nightclub@lazlow@hi_dancefloor@", "dancecrowd_li_15_handup_laz", "Dance Horse", AnimationOptions = { - Prop = "ba_prop_battle_hobby_horse", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["dancehorse2"] = { "anim@amb@nightclub@lazlow@hi_dancefloor@", "crowddance_hi_11_handup_laz", "Dance Horse 2", AnimationOptions = { - Prop = "ba_prop_battle_hobby_horse", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["dancehorse3"] = { "anim@amb@nightclub@lazlow@hi_dancefloor@", "dancecrowd_li_11_hu_shimmy_laz", "Dance Horse 3", AnimationOptions = { - Prop = "ba_prop_battle_hobby_horse", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["dj"] = { "anim@amb@nightclub@djs@dixon@", "dixn_dance_cntr_open_dix", "DJ", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["dj2"] = { "anim@amb@nightclub@djs@solomun@", "sol_idle_ctr_mid_a_sol", "DJ 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dj3"] = { "anim@amb@nightclub@djs@solomun@", "sol_dance_l_sol", "DJ 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dj4"] = { "anim@amb@nightclub@djs@black_madonna@", "dance_b_idle_a_blamadon", "DJ 4", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dj5"] = { "anim@amb@nightclub@djs@dixon@", "dixn_end_dix", "DJ 5", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dj5"] = { "anim@amb@nightclub@djs@dixon@", "dixn_idle_cntr_a_dix", "DJ 5", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dj6"] = { "anim@amb@nightclub@djs@dixon@", "dixn_idle_cntr_b_dix", "DJ 6", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dj7"] = { "anim@amb@nightclub@djs@dixon@", "dixn_idle_cntr_g_dix", "DJ 7", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dj8"] = { "anim@amb@nightclub@djs@dixon@", "dixn_idle_cntr_gb_dix", "DJ 8", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dj9"] = { "anim@amb@nightclub@djs@dixon@", "dixn_sync_cntr_j_dix", "DJ 9", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["twerk"] = { "switch@trevor@mocks_lapdance", "001443_01_trvs_28_idle_stripper", "Twerk", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapdance"] = { "mp_safehouse", "lap_dance_girl", "Lapdance" }, - ["lapdance2"] = { "mini@strip_club@private_dance@idle", "priv_dance_idle", "Lapdance 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapdance3"] = { "mini@strip_club@private_dance@part1", "priv_dance_p1", "Lapdance 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapdance4"] = { "mini@strip_club@private_dance@part2", "priv_dance_p2", "Lapdance 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapdance5"] = { "mini@strip_club@private_dance@part3", "priv_dance_p3", "Lapdance 5", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapdance6"] = { "oddjobs@assassinate@multi@yachttarget@lapdance", "yacht_ld_f", "Lapdance 6", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapdancewith"] = { "mini@strip_club@lap_dance_2g@ld_2g_p3", "ld_2g_p3_s2", "Lapdance With", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapdancewith2"] = { "mini@strip_club@lap_dance_2g@ld_2g_p2", "ld_2g_p2_s2", "Lapdance With2", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapdancewith3"] = { "mini@strip_club@lap_dance_2g@ld_2g_p1", "ld_2g_p1_s2", "Lapdance With3", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapchair"] = { "mini@strip_club@lap_dance@ld_girl_a_song_a_p1", "ld_girl_a_song_a_p1_f", "Lap Chair", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapchair2"] = { "mini@strip_club@lap_dance@ld_girl_a_song_a_p2", "ld_girl_a_song_a_p2_f", "Lap Chair2", AnimationOptions = { - EmoteLoop = true, - }}, - ["lapchair3"] = { "mini@strip_club@lap_dance@ld_girl_a_song_a_p3", "ld_girl_a_song_a_p3_f", "Lap Chair3", AnimationOptions = { - EmoteLoop = true, - }}, - ["salsa"] = { "anim@mp_player_intuppersalsa_roll", "idle_a", "Salso Roll", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancecrankdat"] = { "anim@amb@nightclub@mini@dance@dance_solo@shuffle@", "high_right_up", "Dance Crank Dat", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancecrankdat2"] = { "anim@amb@nightclub@mini@dance@dance_solo@shuffle@", "high_right_down", "Dance Crank Dat 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancemonkey"] = { "anim@amb@nightclub@mini@dance@dance_solo@techno_monkey@", "high_center", "Monkey Dance ", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancemonkey2"] = { "anim@amb@nightclub@mini@dance@dance_solo@techno_monkey@", "high_center_down", "Monkey Dance 2 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancemonkey3"] = { "anim@amb@nightclub@mini@dance@dance_solo@techno_monkey@", "med_center_down", "Monkey Dance 3 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["boxdance"] = { "anim@amb@nightclub@mini@dance@dance_solo@beach_boxing@", "med_right_down", "Boxing Dance Solo ", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancehiphop"] = { "anim@amb@nightclub@mini@dance@dance_paired@dance_d@", "ped_a_dance_idle", "Hip Hop Dance ", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancehiphop2"] = { "anim@amb@nightclub@mini@dance@dance_paired@dance_b@", "ped_a_dance_idle", "Hip Hop Dance 2 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancehiphop3"] = { "anim@amb@nightclub@mini@dance@dance_paired@dance_a@", "ped_a_dance_idle", "Hip Hop Dance 3 ", AnimationOptions = { - EmoteLoop = true, - }}, - ["dancepride"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride A", AnimationOptions = { - Prop = 'lilprideflag1', --- Rainbow - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag1', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["danceprideb"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride B - LGBTQIA", AnimationOptions = { - Prop = 'lilprideflag2', --- LGBTQIA - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag2', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancepridec"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride C - Bisexual", AnimationOptions = { - Prop = 'lilprideflag3', --- Bisexual - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag3', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancepridec"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride C - Lesbian", AnimationOptions = { - Prop = 'lilprideflag4', --- Lesbian - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag4', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["danceprided"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride D - Pansexual", AnimationOptions = { - Prop = 'lilprideflag5', --- Pansexual - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag5', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancepridee"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride E - Transexual", AnimationOptions = { - Prop = 'lilprideflag6', --- Transexual - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag6', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dancepridef"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride F - Non Binary", AnimationOptions = { - Prop = 'lilprideflag7', --- Lesbian - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag7', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["danceprideg"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride G - Asexual", AnimationOptions = { - Prop = 'lilprideflag8', --- Asexual - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag8', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["danceprideh"] = { "anim@amb@nightclub@lazlow@hi_railing@", "ambclub_09_mi_hi_bellydancer_laz", "Dance Pride H - Straight Ally", AnimationOptions = { - Prop = 'lilprideflag9', --- Straight Ally - PropBone = 18905, - PropPlacement = { 0.0900, 0.0000, 0.0300, -39.911, 93.9166, -5.8062 }, - SecondProp = 'lilprideflag9', - SecondPropBone = 57005, - SecondPropPlacement = { 0.0900, -0.0200, -0.0300, -90.2454, 5.7068, -28.7797 }, - EmoteLoop = true, - EmoteMoving = false, - }}, -} - - ----- ANIMAL EMOTES ---- ----- BIG DOG ---- - -DP.AnimalEmotes = { - ["bdogbark"] = { "creatures@rottweiler@amb@world_dog_barking@idle_a", "idle_a", "Bark (big dog)", AnimationOptions = { - EmoteLoop = true - }}, - ["bdogbeg"] = { "creatures@rottweiler@tricks@", "beg_loop", "Beg (big dog)", AnimationOptions = { - EmoteLoop = true - }}, - ["bdogbeg2"] = { "creatures@rottweiler@tricks@", "paw_right_loop", "Beg 2 (big dog)", AnimationOptions = { - EmoteLoop = true - }}, - ["bdogdump"] = { "creatures@rottweiler@move", "dump_loop", "Dump (big dog)", AnimationOptions = { - Prop = 'prop_big_shit_02', - PropBone = 51826, - PropPlacement = { 0.0, 0.2000, -0.4600, 0.0, -20.00, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogitch"] = { "creatures@rottweiler@amb@world_dog_sitting@idle_a", "idle_a", "Itch (big dog)", AnimationOptions = { - EmoteDuration = 2000 - }}, - ["bdogsleep"] = { "creatures@rottweiler@amb@sleep_in_kennel@", "sleep_in_kennel", "Sleep (big dog)", AnimationOptions = { - EmoteLoop = true - }}, - ["bdogsit"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit (big dog)", AnimationOptions = { - EmoteLoop = true - }}, - ["bdogpee"] = { "creatures@rottweiler@move", "pee_left_idle", "Pee (big dog)", AnimationOptions = { - EmoteLoop = false - }}, - ["bdogpee2"] = { "creatures@rottweiler@move", "pee_right_idle", "Pee 2 (big dog)", AnimationOptions = { - EmoteLoop = false - }}, - ["sdogbark"] = { "creatures@pug@amb@world_dog_barking@idle_a", "idle_a", "Bark (small dog)", AnimationOptions = { - EmoteLoop = true - }}, - ["bdogglowa"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "nill", "Glow Stick (big dog)", AnimationOptions = { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 31086, - PropPlacement = { 0.2000, 0.000, -0.0600, 90.00, 0.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bdogglowb"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Glow Stick Sitting (big dog)", AnimationOptions = { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 31086, - PropPlacement = { 0.2000, 0.000, -0.0600, 90.00, 0.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogpridea"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride A (big dog)", AnimationOptions = { - Prop = 'lilprideflag1', ---Rainbow - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag1', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogprideb"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride B - LGBTQIA (big dog)", AnimationOptions = { - Prop = 'lilprideflag2', --LGBTQIA - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag2', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogpridec"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride C - Bisexual (big dog)", AnimationOptions = { - Prop = 'lilprideflag3', --Bisexual - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag3', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogprided"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride D - Lesbian (big dog)", AnimationOptions = { - Prop = 'lilprideflag4', --Lesbian - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag4', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogpridee"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride E - Pansexual (big dog)", AnimationOptions = { - Prop = 'lilprideflag5', --Pansexual - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag5', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogpridef"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride F - Transexual (big dog)", AnimationOptions = { - Prop = 'lilprideflag6', --Transexual - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag6', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogprideg"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride G - Non Binary (big dog)", AnimationOptions = { - Prop = 'lilprideflag7', --Non Binary - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag7', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogprideh"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride H - Asexual (big dog)", AnimationOptions = { - Prop = 'lilprideflag8', --Non Binary - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag8', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bdogpridei"] = { "creatures@rottweiler@amb@world_dog_sitting@base", "base", "Sit Pride I - Straight Ally (big dog)", AnimationOptions = { - Prop = 'lilprideflag9', --Straight Ally - PropBone = 31086, - PropPlacement = { 0.1900, 0.0000, -0.0500, 100.0000, 90.0000, 0.0000 }, - SecondProp = 'lilprideflag9', - SecondPropBone = 31086, - SecondPropPlacement = { 0.1940, 0.020, -0.0500, -90.0000, -90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - - ----- ANIMAL EMOTES ---- ----- SMALL DOG ---- - - - }}, - ["sdogitch"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_a", "Itch (small dog)", AnimationOptions = { - EmoteDuration = 2000 - }}, - ["sdogsit"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Sit (small dog)", AnimationOptions = { - EmoteLoop = true - }}, - ["sdogld"] = { "misssnowie@little_doggy_lying_down", "base", "Lay Down (small dog)", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogshake"] = { "creatures@pug@amb@world_dog_barking@idle_a", "idle_c", "Shake (small dog)", AnimationOptions = { - EmoteLoop = true - }}, - ["sdogdance"] = { "creatures@pug@move", "idle_turn_0", "Dance (small dog)", AnimationOptions = { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 31086, - PropPlacement = { 0.1500, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdance2"] = { "creatures@pug@move", "idle_turn_0", "Dance 2 (small dog)", AnimationOptions = { - Prop = 'ba_prop_battle_glowstick_01', - PropBone = 31086, - PropPlacement = { 0.1500, -0.0300, 0.0, 0.0, 0.0 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdancepridea"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride A (small dog)", AnimationOptions = { - Prop = 'lilprideflag1', - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdanceprideb"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride B - LGBTQIA (small dog)", AnimationOptions = { - Prop = 'lilprideflag2', --LGBTQIA - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdancepridec"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride C - Bisexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag3', --Bisexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdanceprided"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride D - Lesbian (small dog)", AnimationOptions = { - Prop = 'lilprideflag4', --Lesbian - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdancepridee"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride E - Pansexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag5', --Pansexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdancepridef"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride F - Transexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag6', --Transexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdanceprideg"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride G - Non Binary (small dog)", AnimationOptions = { - Prop = 'lilprideflag7', --Non Binary - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdanceprideh"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride H - Asexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag8', --Asexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdancepridei"] = { "creatures@pug@move", "idle_turn_0", "Dance Pride I - Straight Ally (small dog)", AnimationOptions = { - Prop = 'lilprideflag9', --Straight Ally - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - SecondProp = 'prop_cs_sol_glasses', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogbb"] = { "creatures@pug@move", "nill", "Baseball (small dog)", AnimationOptions = { - Prop = 'w_am_baseball', - PropBone = 31086, - PropPlacement = { 0.1500, -0.0500, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogburger"] = { "creatures@pug@move", "nill", "Burger (small dog)", AnimationOptions = { - Prop = 'prop_cs_burger_01', - PropBone = 31086, - PropPlacement = { 0.1500, -0.0400, 0.0000, -90.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogcontroller"] = { "creatures@pug@move", "nill", "Controller (small dog)", AnimationOptions = { - Prop = 'prop_controller_01', - PropBone = 31086, - PropPlacement = { 0.1800, -0.0300, 0.0000, -180.000, 90.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdolla"] = { "creatures@pug@move", "nill", "Dollar Bill (small dog)", AnimationOptions = { - Prop = 'p_banknote_onedollar_s', - PropBone = 31086, - PropPlacement = { 0.1700, -0.0100, 0.0000, 90.0000, 0.0000, 0.000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdolla2"] = { "creatures@pug@move", "nill", "Dollar Bill Scrunched (small dog)", AnimationOptions = { - Prop = 'bkr_prop_scrunched_moneypage', - PropBone = 31086, - PropPlacement = { 0.1700, 0.000, 0.0000, 90.0000, 00.0000, 00.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdolla3"] = { "creatures@pug@move", "nill", "Money Stack (small dog)", AnimationOptions = { - Prop = 'bkr_prop_money_wrapped_01', - PropBone = 31086, - PropPlacement = { 0.1700, -0.0100, 0.0000, 90.0000, 0.0000, 0.000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogdolla4"] = { "creatures@pug@move", "nill", "Money Bag (small dog)", AnimationOptions = { - Prop = 'ch_prop_ch_moneybag_01a', - PropBone = 31086, - PropPlacement = { 0.1200, -0.2000, 0.0000, -79.9999997, 90.00, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogmic"] = { "creatures@pug@move", "nill", "Microphone (small dog)", AnimationOptions = { - Prop = 'p_ing_microphonel_01', - PropBone = 31086, - PropPlacement = { 0.1500, -0.0170, 0.0300, 0.000, 0.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogteddy"] = { "creatures@pug@move", "nill", "Teddy (small dog)", AnimationOptions = { - Prop = 'v_ilev_mr_rasberryclean', - PropBone = 31086, - PropPlacement = { 0.1500, -0.1100, -0.23, 0.000, 0.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogteddy2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Teddy 2 (small dog)", AnimationOptions = { - Prop = 'v_ilev_mr_rasberryclean', - PropBone = 31086, - PropPlacement = { 0.1500, -0.1100, -0.23, 0.000, 0.0000, 0.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogtennis"] = { "creatures@pug@move", "nill", "Tennis Ball (small dog)", AnimationOptions = { - Prop = 'prop_tennis_ball', - PropBone = 31086, - PropPlacement = { 0.1500, -0.0600, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogtennisr"] = { "creatures@pug@move", "nill", "Tennis Racket (small dog)", AnimationOptions = { - Prop = 'prop_tennis_rack_01', - PropBone = 31086, - PropPlacement = { 0.1500, -0.0200, 0.00, 0.000, 0.0000, -28.0000 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogrose"] = { "creatures@pug@move", "nill", "Rose (small dog)", AnimationOptions = { - Prop = 'prop_single_rose', - PropBone = 12844, - PropPlacement = { 0.1090, -0.0140, 0.0500, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogrose2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Rose Sit (small dog)", AnimationOptions = { - Prop = 'prop_single_rose', - PropBone = 12844, - PropPlacement = { 0.1090, -0.0140, 0.0500, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogggun"] = { "creatures@pug@move", "nill", "Gun Gold (small dog)", AnimationOptions = { - Prop = 'w_pi_pistol_luxe', - PropBone = 12844, - PropPlacement = { 0.2010, -0.0080, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoggun2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Gun Gold Sit (small dog)", AnimationOptions = { - Prop = 'w_pi_pistol_luxe', - PropBone = 12844, - PropPlacement = { 0.2010, -0.0080, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogstun"] = { "creatures@pug@move", "nill", "Stun Gun (small dog)", AnimationOptions = { - Prop = 'w_pi_stungun', - PropBone = 12844, - PropPlacement = { 0.1400, -0.0100, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - PtfxAsset = "core", - PtfxName = "blood_stungun", - PtfxPlacement = { 0.208, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 }, - PtfxInfo = Config.Languages[Config.MenuLanguage]['stun'], - PtfxWait = 200, - }}, - ["sdoggl1"] = { "creatures@pug@move", "nill", "Aviators (small dog)", AnimationOptions = { - Prop = 'prop_aviators_01', - PropBone = 31086, - PropPlacement = { 0.0500, 0.0400, 0.000, -90.00, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoggl2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Aviators Sitting (small dog)", AnimationOptions = { - Prop = 'prop_aviators_01', - PropBone = 31086, - PropPlacement = { 0.0500, 0.0400, 0.000, -90.00, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoggl3"] = { "creatures@pug@move", "nill", "Sunglasses (small dog)", AnimationOptions = { - Prop = 'prop_cs_sol_glasses', - PropBone = 31086, - PropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoggl4"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Sunglasses Sitting (small dog)", AnimationOptions = { - Prop = 'prop_cs_sol_glasses', - PropBone = 31086, - PropPlacement = { 0.0500, 0.0300, 0.000, -100.0000003, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoghd1"] = { "creatures@pug@move", "nill", "Hot Dog (small dog)", AnimationOptions = { - Prop = 'prop_cs_hotdog_01', - PropBone = 31086, - PropPlacement = { 0.1300, -0.0250, 0.000, -88.272053, -9.8465858, -0.1488562 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoghd2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Hot Dog Sitting (small dog)", AnimationOptions = { - Prop = 'prop_cs_hotdog_01', - PropBone = 31086, - PropPlacement = { 0.1300, -0.0250, 0.000, -88.272053, -9.8465858, -0.1488562 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoghlmt1"] = { "creatures@pug@move", "nill", "Helmet 1 (small dog)", AnimationOptions = { - Prop = 'ba_prop_battle_sports_helmet', - PropBone = 31086, - PropPlacement = { 0.00, -0.0200, 0.000, -90.00, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoghlmt2"] = { "creatures@pug@move", "nill", "Helmet 2 (small dog)", AnimationOptions = { - Prop = 'prop_hard_hat_01', - PropBone = 31086, - PropPlacement = { 0.00, 0.1300, 0.000, -90.00, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoghat"] = { "creatures@pug@move", "nill", "Hat 1 (small dog)", AnimationOptions = { - Prop = 'prop_proxy_hat_01', - PropBone = 31086, - PropPlacement = { 0.0, 0.1200, 0.000, -99.8510766, 80.1489234, 1.7279411 }, - SecondProp = 'prop_aviators_01', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0400, 0.000, -90.00, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdoghat2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Hat 2 Sitting (small dog)", AnimationOptions = { - Prop = 'prop_proxy_hat_01', - PropBone = 31086, - PropPlacement = { 0.0, 0.1200, 0.000, -99.8510766, 80.1489234, 1.7279411 }, - SecondProp = 'prop_aviators_01', - SecondPropBone = 31086, - SecondPropPlacement = { 0.0500, 0.0400, 0.000, -90.00, 90.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogsteak"] = { "creatures@pug@move", "nill", "Steak (small dog)", AnimationOptions = { - Prop = 'prop_cs_steak', - PropBone = 31086, - PropPlacement = { 0.1800, -0.0200, 0.000, 90.00, 0.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogsteak2"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_c", "Steak 2 Lay Down (small dog)", AnimationOptions = { - Prop = 'prop_cs_steak', - PropBone = 31086, - PropPlacement = { 0.1800, -0.0200, 0.000, 90.00, 0.00, 0.00 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridea"] = { "creatures@pug@move", "nill", "Pride A (small dog)", AnimationOptions = { - Prop = 'lilprideflag1', - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogprideb"] = { "creatures@pug@move", "nill", "Pride B - LGBTQIA (small dog)", AnimationOptions = { - Prop = 'lilprideflag2',--LGBTQIA - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridec"] = { "creatures@pug@move", "nill", "Pride C - Bisexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag3',--Bisexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogprided"] = { "creatures@pug@move", "nill", "Pride D - Lesbian (small dog)", AnimationOptions = { - Prop = 'lilprideflag4',--Lesbian - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridee"] = { "creatures@pug@move", "nill", "Pride E - Pansexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag5',--Pansexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridef"] = { "creatures@pug@move", "nill", "Pride F - Transexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag6',--Transexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridef"] = { "creatures@pug@move", "nill", "Pride F - Transexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag6',--Transexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogprideg"] = { "creatures@pug@move", "nill", "Pride G - Non Binary (small dog)", AnimationOptions = { - Prop = 'lilprideflag6',--Non Binary - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogprideh"] = { "creatures@pug@move", "nill", "Pride H - Non Binary (small dog)", AnimationOptions = { - Prop = 'lilprideflag7',--Non Binary - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridei"] = { "creatures@pug@move", "nill", "Pride I - Asexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag8',--Asexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesita"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride A Sit (small dog)", AnimationOptions = { - Prop = 'lilprideflag1', - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesitb"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride B Sit LGBTQIA (small dog)", AnimationOptions = { - Prop = 'lilprideflag2', --LGBTQIA - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesitc"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride C Sit Bisexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag3', --Bisexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesitd"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride D Sit Lesbian (small dog)", AnimationOptions = { - Prop = 'lilprideflag4', --Lesbian - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesite"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride E Sit Pansexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag5', --Pansexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesitf"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride F Sit Transexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag6', --Transexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesitg"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride G Sit Non Binary (small dog)", AnimationOptions = { - Prop = 'lilprideflag7', --Non Binary - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesith"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride H Sit Asexual (small dog)", AnimationOptions = { - Prop = 'lilprideflag8', --Asexual - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["sdogpridesiti"] = { "creatures@pug@amb@world_dog_sitting@idle_a", "idle_b", "Pride I Sit Straight Ally (small dog)", AnimationOptions = { - Prop = 'lilprideflag9', --Straight Ally - PropBone = 31086, - PropPlacement = { 0.1240, -0.0080, 0.000, 0.0, 0.0, -74.6999 }, - EmoteLoop = true, - EmoteMoving = false, - }}, -} - - - ---- EMOTES NO PROPS --- - -DP.Emotes = { - - ["beast"] = { "anim@mp_fm_event@intro", "beast_transform", "Beast", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 5000, - }}, - ["chill"] = { "switch@trevor@scares_tramp", "trev_scares_tramp_idle_tramp", "Chill", AnimationOptions = { - EmoteLoop = true, - }}, - ["cloudgaze"] = { "switch@trevor@annoys_sunbathers", "trev_annoys_sunbathers_loop_girl", "Cloudgaze", AnimationOptions = { - EmoteLoop = true, - }}, - ["cloudgaze2"] = { "switch@trevor@annoys_sunbathers", "trev_annoys_sunbathers_loop_guy", "Cloudgaze 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["prone"] = { "missfbi3_sniping", "prone_dave", "Prone", AnimationOptions = { - EmoteLoop = true, - }}, - ["pullover"] = { "misscarsteal3pullover", "pull_over_right", "Pullover", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 1300, - }}, - ["idle"] = { "anim@heists@heist_corona@team_idles@male_a", "idle", "Idle", AnimationOptions = { - EmoteLoop = true, - }}, - ["idle8"] = { "amb@world_human_hang_out_street@male_b@idle_a", "idle_b", "Idle 8" }, - ["idle9"] = { "friends@fra@ig_1", "base_idle", "Idle 9", AnimationOptions = { - EmoteLoop = true, - }}, - ["idle10"] = { "mp_move@prostitute@m@french", "idle", "Idle 10", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["idle11"] = { "random@countrysiderobbery", "idle_a", "Idle 11", AnimationOptions = { - EmoteLoop = true, - }}, - ["idle2"] = { "anim@heists@heist_corona@team_idles@female_a", "idle", "Idle 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["idle3"] = { "anim@heists@humane_labs@finale@strip_club", "ped_b_celebrate_loop", "Idle 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["idle4"] = { "anim@mp_celebration@idles@female", "celebration_idle_f_a", "Idle 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["idle5"] = { "anim@mp_corona_idles@female_b@idle_a", "idle_a", "Idle 5", AnimationOptions = { - EmoteLoop = true, - }}, - ["idle6"] = { "anim@mp_corona_idles@male_c@idle_a", "idle_a", "Idle 6", AnimationOptions = { - EmoteLoop = true, - }}, - ["idle7"] = { "anim@mp_corona_idles@male_d@idle_a", "idle_a", "Idle 7", AnimationOptions = { - EmoteLoop = true, - }}, - ["idledrunk"] = { "random@drunk_driver_1", "drunk_driver_stand_loop_dd1", "Idle Drunk", AnimationOptions = { - EmoteLoop = true, - }}, - ["idledrunk2"] = { "random@drunk_driver_1", "drunk_driver_stand_loop_dd2", "Idle Drunk 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["idledrunk3"] = { "missarmenian2", "standing_idle_loop_drunk", "Idle Drunk 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["airguitar"] = { "anim@mp_player_intcelebrationfemale@air_guitar", "air_guitar", "Air Guitar" }, - ["airsynth"] = { "anim@mp_player_intcelebrationfemale@air_synth", "air_synth", "Air Synth" }, - ["argue"] = { "misscarsteal4@actor", "actor_berating_loop", "Argue", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["argue2"] = { "oddjobs@assassinate@vice@hooker", "argue_a", "Argue 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bartender"] = { "anim@amb@clubhouse@bar@drink@idle_a", "idle_a_bartender", "Bartender", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["blowkiss"] = { "anim@mp_player_intcelebrationfemale@blow_kiss", "blow_kiss", "Blow Kiss" }, - ["blowkiss2"] = { "anim@mp_player_intselfieblow_kiss", "exit", "Blow Kiss 2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 2000 - - }}, - ["curtsy"] = { "anim@mp_player_intcelebrationpaired@f_f_sarcastic", "sarcastic_left", "Curtsy" }, - ["bringiton"] = { "misscommon@response", "bring_it_on", "Bring It On", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3000 - }}, - ["comeatmebro"] = { "mini@triathlon", "want_some_of_this", "Come at me bro", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 2000 - }}, - ["cop2"] = { "anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Cop 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["cop3"] = { "amb@code_human_police_investigate@idle_a", "idle_b", "Cop 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["crossarms"] = { "amb@world_human_hang_out_street@female_arms_crossed@idle_a", "idle_a", "Crossarms", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarms2"] = { "amb@world_human_hang_out_street@male_c@idle_a", "idle_b", "Crossarms 2", AnimationOptions = { - EmoteMoving = true, - }}, - ["crossarms3"] = { "anim@heists@heist_corona@single_team", "single_team_loop_boss", "Crossarms 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarms4"] = { "random@street_race", "_car_b_lookout", "Crossarms 4", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarms5"] = { "anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Crossarms 5", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foldarms2"] = { "anim@amb@nightclub@peds@", "rcmme_amanda1_stand_loop_cop", "Fold Arms 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarms6"] = { "random@shop_gunstore", "_idle", "Crossarms 6", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foldarms"] = { "anim@amb@business@bgen@bgen_no_work@", "stand_phone_phoneputdown_idle_nowork", "Fold Arms", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["crossarmsside"] = { "rcmnigel1a_band_groupies", "base_m2", "Crossarms Side", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["damn"] = { "gestures@m@standing@casual", "gesture_damn", "Damn", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 1000 - }}, - ["damn2"] = { "anim@am_hold_up@male", "shoplift_mid", "Damn 2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 1000 - }}, - ["pointdown"] = { "gestures@f@standing@casual", "gesture_hand_down", "Point Down", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 1000 - }}, - ["surrender"] = { "random@arrests@busted", "idle_a", "Surrender", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["surrender2"] = { "mp_bank_heist_1", "f_cower_02", "Surrender 2", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["surrender3"] = { "mp_bank_heist_1", "m_cower_01", "Surrender 3", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["surrender4"] = { "mp_bank_heist_1", "m_cower_02", "Surrender 4", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["surrender5"] = { "random@arrests", "kneeling_arrest_idle", "Surrender 5", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["surrender6"] = { "rcmbarry", "m_cower_01", "Surrender 6", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["facepalm2"] = { "anim@mp_player_intcelebrationfemale@face_palm", "face_palm", "Facepalm 2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 8000 - }}, - ["facepalm"] = { "random@car_thief@agitated@idle_a", "agitated_idle_a", "Facepalm", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 8000 - }}, - ["facepalm3"] = { "missminuteman_1ig_2", "tasered_2", "Facepalm 3", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 8000 - }}, - ["facepalm4"] = { "anim@mp_player_intupperface_palm", "idle_a", "Facepalm 4", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["fallover"] = { "random@drunk_driver_1", "drunk_fall_over", "Fall Over" }, - ["fallover2"] = { "mp_suicide", "pistol", "Fall Over 2" }, - ["fallover3"] = { "mp_suicide", "pill", "Fall Over 3" }, - ["fallover4"] = { "friends@frf@ig_2", "knockout_plyr", "Fall Over 4" }, - ["fallover5"] = { "anim@gangops@hostage@", "victim_fail", "Fall Over 5" }, - ["fallasleep"] = { "mp_sleep", "sleep_loop", "Fall Asleep", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["fightme"] = { "anim@deathmatch_intros@unarmed", "intro_male_unarmed_c", "Fight Me" }, - ["fightme2"] = { "anim@deathmatch_intros@unarmed", "intro_male_unarmed_e", "Fight Me 2" }, - ["finger"] = { "anim@mp_player_intselfiethe_bird", "idle_a", "Finger", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["finger2"] = { "anim@mp_player_intupperfinger", "idle_a_fp", "Finger 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["handshake"] = { "mp_ped_interaction", "handshake_guy_a", "Handshake", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3000 - }}, - ["handshake2"] = { "mp_ped_interaction", "handshake_guy_b", "Handshake 2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3000 - }}, - ["wait"] = { "random@shop_tattoo", "_idle_a", "Wait", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitb"] = { "missbigscore2aig_3", "wait_for_van_c", "Wait B", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitc"] = { "amb@world_human_hang_out_street@female_hold_arm@idle_a", "idle_a", "Wait C", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitd"] = { "amb@world_human_hang_out_street@Female_arm_side@idle_a", "idle_a", "Wait D", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waite"] = { "missclothing", "idle_storeclerk", "Wait E", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitf"] = { "timetable@amanda@ig_2", "ig_2_base_amanda", "Wait F", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitg"] = { "rcmnigel1cnmt_1c", "base", "Wait G", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waith"] = { "rcmjosh1", "idle", "Wait H", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waiti"] = { "rcmjosh2", "josh_2_intp1_base", "Wait I", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitj"] = { "timetable@amanda@ig_3", "ig_3_base_tracy", "Wait J", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitk"] = { "misshair_shop@hair_dressers", "keeper_base", "Wait K", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitl"] = { "rcmjosh1", "keeper_base", "Wait L", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["waitm"] = { "rcmnigel1a", "base", "Wait M", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["hiking"] = { "move_m@hiking", "idle", "Hiking", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["hug"] = { "mp_ped_interaction", "kisses_guy_a", "Hug" }, - ["hug2"] = { "mp_ped_interaction", "kisses_guy_b", "Hug 2" }, - ["hug3"] = { "mp_ped_interaction", "hugs_guy_a", "Hug 3" }, - ["inspect"] = { "random@train_tracks", "idle_e", "Inspect" }, - ["jazzhands"] = { "anim@mp_player_intcelebrationfemale@jazz_hands", "jazz_hands", "Jazzhands", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 6000, - }}, - ["jog2"] = { "amb@world_human_jog_standing@male@idle_a", "idle_a", "Jog 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jog3"] = { "amb@world_human_jog_standing@female@idle_a", "idle_a", "Jog 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jog4"] = { "amb@world_human_power_walker@female@idle_a", "idle_a", "Jog 4", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jog5"] = { "move_m@joy@a", "walk", "Jog 5", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jumpingjacks"] = { "timetable@reunited@ig_2", "jimmy_getknocked", "Jumping Jacks", AnimationOptions = { - EmoteLoop = true, - }}, - ["kneel2"] = { "rcmextreme3", "idle", "Kneel 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["kneel3"] = { "amb@world_human_bum_wash@male@low@idle_a", "idle_a", "Kneel 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["knock"] = { "timetable@jimmy@doorknock@", "knockdoor_idle", "Knock", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["knock2"] = { "missheistfbi3b_ig7", "lift_fibagent_loop", "Knock 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["knucklecrunch"] = { "anim@mp_player_intcelebrationfemale@knuckle_crunch", "knuckle_crunch", "Knuckle Crunch", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["lean2"] = { "amb@world_human_leaning@female@wall@back@hand_up@idle_a", "idle_a", "Lean 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["lean3"] = { "amb@world_human_leaning@female@wall@back@holding_elbow@idle_a", "idle_a", "Lean 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["lean4"] = { "amb@world_human_leaning@male@wall@back@foot_up@idle_a", "idle_a", "Lean 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["lean5"] = { "amb@world_human_leaning@male@wall@back@hands_together@idle_b", "idle_b", "Lean 5", AnimationOptions = { - EmoteLoop = true, - }}, - ["leanflirt"] = { "random@street_race", "_car_a_flirt_girl", "Lean Flirt", AnimationOptions = { - EmoteLoop = true, - }}, - ["leanbar2"] = { "amb@prop_human_bum_shopping_cart@male@idle_a", "idle_c", "Lean Bar 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["leanbar3"] = { "anim@amb@nightclub@lazlow@ig1_vip@", "clubvip_base_laz", "Lean Bar 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["leanbar4"] = { "anim@heists@prison_heist", "ped_b_loop_a", "Lean Bar 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["leanhigh"] = { "anim@mp_ferris_wheel", "idle_a_player_one", "Lean High", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanhigh2"] = { "anim@mp_ferris_wheel", "idle_a_player_two", "Lean High 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanside"] = { "timetable@mime@01_gc", "idle_a", "Leanside", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanside2"] = { "misscarstealfinale", "packer_idle_1_trevor", "Leanside 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanside3"] = { "misscarstealfinalecar_5_ig_1", "waitloop_lamar", "Leanside 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leanside4"] = { "misscarstealfinalecar_5_ig_1", "waitloop_lamar", "Leanside 4", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["leanside5"] = { "rcmjosh2", "josh_2_intp1_base", "Leanside 5", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["me"] = { "gestures@f@standing@casual", "gesture_me_hard", "Me", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 1000 - }}, - ["mechanic"] = { "mini@repair", "fixing_a_ped", "Mechanic", AnimationOptions = { - EmoteLoop = true, - }}, - ["mechanic2"] = { "mini@repair", "fixing_a_player", "Mechanic 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["mechanic3"] = { "amb@world_human_vehicle_mechanic@male@base", "base", "Mechanic 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["mechanic4"] = { "anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer", "Mechanic 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["mechanic5"] = { "amb@prop_human_movie_bulb@idle_a", "idle_b", "Mechanic 5", AnimationOptions = { - EmoteLoop = true, - }}, - ["medic2"] = { "amb@medic@standing@tendtodead@base", "base", "Medic 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["meditate"] = { "rcmcollect_paperleadinout@", "meditiate_idle", "Meditiate", AnimationOptions = { -- CHANGE ME - EmoteLoop = true, - }}, - ["meditate2"] = { "rcmepsilonism3", "ep_3_rcm_marnie_meditating", "Meditiate 2", AnimationOptions = { -- CHANGE ME - EmoteLoop = true, - }}, - ["meditate3"] = { "rcmepsilonism3", "base_loop", "Meditiate 3", AnimationOptions = { -- CHANGE ME - EmoteLoop = true, - }}, - ["metal"] = { "anim@mp_player_intincarrockstd@ps@", "idle_a", "Metal", AnimationOptions = { -- CHANGE ME - EmoteLoop = true, - EmoteMoving = true, - }}, - ["no"] = { "anim@heists@ornate_bank@chat_manager", "fail", "No", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["no2"] = { "mp_player_int_upper_nod", "mp_player_int_nod_no", "No 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["nosepick"] = { "anim@mp_player_intcelebrationfemale@nose_pick", "nose_pick", "Nose Pick", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["noway"] = { "gestures@m@standing@casual", "gesture_no_way", "No Way", AnimationOptions = { - EmoteDuration = 1500, - EmoteMoving = true, - }}, - ["ok"] = { "anim@mp_player_intselfiedock", "idle_a", "OK", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["dock"] = { "anim@mp_player_intincardockstd@rds@", "idle_a", "Dock", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["outofbreath"] = { "re@construction", "out_of_breath", "Out of Breath", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pickup"] = { "random@domestic", "pickup_low", "Pickup" }, - ["push"] = { "missfinale_c2ig_11", "pushcar_offcliff_f", "Push", AnimationOptions = { - EmoteLoop = true, - }}, - ["push2"] = { "missfinale_c2ig_11", "pushcar_offcliff_m", "Push 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["point"] = { "gestures@f@standing@casual", "gesture_point", "Point", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pushup"] = { "amb@world_human_push_ups@male@idle_a", "idle_d", "Pushup", AnimationOptions = { - EmoteLoop = true, - }}, - ["countdown"] = { "random@street_race", "grid_girl_race_start", "Countdown", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pointright"] = { "mp_gun_shop_tut", "indicate_right", "Point Right", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["salute"] = { "anim@mp_player_intincarsalutestd@ds@", "idle_a", "Salute", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["salute2"] = { "anim@mp_player_intincarsalutestd@ps@", "idle_a", "Salute 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["salute3"] = { "anim@mp_player_intuppersalute", "idle_a", "Salute 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["scared"] = { "random@domestic", "f_distressed_loop", "Scared", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["scared2"] = { "random@homelandsecurity", "knees_loop_girl", "Scared 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["screwyou"] = { "misscommon@response", "screw_you", "Screw You", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["shakeoff"] = { "move_m@_idles@shake_off", "shakeoff_1", "Shake Off", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3500, - }}, - ["shot"] = { "random@dealgonewrong", "idle_a", "Shot", AnimationOptions = { - EmoteLoop = true, - }}, - ["sleep"] = { "timetable@tracy@sleep@", "idle_c", "Sleep", AnimationOptions = { - EmoteLoop = true, - }}, - ["shrug"] = { "gestures@f@standing@casual", "gesture_shrug_hard", "Shrug", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 1000, - }}, - ["shrug2"] = { "gestures@m@standing@casual", "gesture_shrug_hard", "Shrug 2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 1000, - }}, - ["sit"] = { "anim@amb@business@bgen@bgen_no_work@", "sit_phone_phoneputdown_idle_nowork", "Sit", AnimationOptions = { - EmoteLoop = true, - }}, - ["sit2"] = { "rcm_barry3", "barry_3_sit_loop", "Sit 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["sit3"] = { "amb@world_human_picnic@male@idle_a", "idle_a", "Sit 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["sit4"] = { "amb@world_human_picnic@female@idle_a", "idle_a", "Sit 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["sit5"] = { "anim@heists@fleeca_bank@ig_7_jetski_owner", "owner_idle", "Sit 5", AnimationOptions = { - EmoteLoop = true, - }}, - ["sit6"] = { "timetable@jimmy@mics3_ig_15@", "idle_a_jimmy", "Sit 6", AnimationOptions = { - EmoteLoop = true, - }}, - ["sit7"] = { "anim@amb@nightclub@lazlow@lo_alone@", "lowalone_base_laz", "Sit 7", AnimationOptions = { - EmoteLoop = true, - }}, - ["sit8"] = { "timetable@jimmy@mics3_ig_15@", "mics3_15_base_jimmy", "Sit 8", AnimationOptions = { - EmoteLoop = true, - }}, - ["sit9"] = { "amb@world_human_stupor@male@idle_a", "idle_a", "Sit 9", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitlow"] = { "anim@veh@lowrider@std@ds@arm@base", "sit_low_lowdoor", "Sit Lowrider", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitlean"] = { "timetable@tracy@ig_14@", "ig_14_base_tracy", "Sit Lean", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitsad"] = { "anim@amb@business@bgen@bgen_no_work@", "sit_phone_phoneputdown_sleeping-noworkfemale", "Sit Sad", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitscared"] = { "anim@heists@ornate_bank@hostages@hit", "hit_loop_ped_b", "Sit Scared", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitscared2"] = { "anim@heists@ornate_bank@hostages@ped_c@", "flinch_loop", "Sit Scared 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitscared3"] = { "anim@heists@ornate_bank@hostages@ped_e@", "flinch_loop", "Sit Scared 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitdrunk"] = { "timetable@amanda@drunk@base", "base", "Sit Drunk", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitchair2"] = { "timetable@ron@ig_5_p3", "ig_5_p3_base", "Sit Chair 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitchair3"] = { "timetable@reunited@ig_10", "base_amanda", "Sit Chair 3 (Female)", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitchair4"] = { "timetable@ron@ig_3_couch", "base", "Sit Chair 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitchair5"] = { "timetable@jimmy@mics3_ig_15@", "mics3_15_base_tracy", "Sit Chair Legs Crossed", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitchair6"] = { "timetable@maid@couch@", "base", "Sit Chair Lean Back", AnimationOptions = { - EmoteLoop = true, - }}, - ["sitchairside"] = { "timetable@ron@ron_ig_2_alt1", "ig_2_alt1_base", "Sit Chair Side", AnimationOptions = { - EmoteLoop = true, - }}, - ["situp"] = { "amb@world_human_sit_ups@male@idle_a", "idle_a", "Sit Up", AnimationOptions = { - EmoteLoop = true, - }}, - ["clapangry"] = { "anim@arena@celeb@flat@solo@no_props@", "angry_clap_a_player_a", "Clap Angry", AnimationOptions = { - EmoteLoop = true, - }}, - ["slowclap3"] = { "anim@mp_player_intupperslow_clap", "idle_a", "Slow Clap 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["clap"] = { "amb@world_human_cheering@male_a", "base", "Clap", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["slowclap"] = { "anim@mp_player_intcelebrationfemale@slow_clap", "slow_clap", "Slow Clap", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["slowclap2"] = { "anim@mp_player_intcelebrationmale@slow_clap", "slow_clap", "Slow Clap 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["smell"] = { "move_p_m_two_idles@generic", "fidget_sniff_fingers", "Smell", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["stickup"] = { "random@countryside_gang_fight", "biker_02_stickup_loop", "Stick Up", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["stumble"] = { "misscarsteal4@actor", "stumble", "Stumble", AnimationOptions = { - EmoteLoop = true, - }}, - ["stunned"] = { "stungun@standing", "damage", "Stunned", AnimationOptions = { - EmoteLoop = true, - }}, - ["sunbathe"] = { "amb@world_human_sunbathe@male@back@base", "base", "Sunbathe", AnimationOptions = { - EmoteLoop = true, - }}, - ["sunbathe2"] = { "amb@world_human_sunbathe@female@back@base", "base", "Sunbathe 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["t"] = { "missfam5_yoga", "a2_pose", "T", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["t2"] = { "mp_sleep", "bind_pose_180", "T 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["think5"] = { "mp_cp_welcome_tutthink", "b_think", "Think 5", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["think"] = { "misscarsteal4@aliens", "rehearsal_base_idle_director", "Think", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["think3"] = { "timetable@tracy@ig_8@base", "base", "Think 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - - ["think2"] = { "missheist_jewelleadinout", "jh_int_outro_loop_a", "Think 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["thumbsup3"] = { "anim@mp_player_intincarthumbs_uplow@ds@", "enter", "Thumbs Up 3", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3000, - }}, - ["thumbsup2"] = { "anim@mp_player_intselfiethumbs_up", "idle_a", "Thumbs Up 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["thumbsup"] = { "anim@mp_player_intupperthumbs_up", "idle_a", "Thumbs Up", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["type"] = { "anim@heists@prison_heiststation@cop_reactions", "cop_b_idle", "Type", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["type2"] = { "anim@heists@prison_heistig1_p1_guard_checks_bus", "loop", "Type 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["type3"] = { "mp_prison_break", "hack_loop", "Type 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["type4"] = { "mp_fbi_heist", "loop", "Type 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["warmth"] = { "amb@world_human_stand_fire@male@idle_a", "idle_a", "Warmth", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave4"] = { "random@mugging5", "001445_01_gangintimidation_1_female_idle_b", "Wave 4", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3000, - }}, - ["wave2"] = { "anim@mp_player_intcelebrationfemale@wave", "wave", "Wave 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave3"] = { "friends@fra@ig_1", "over_here_idle_a", "Wave 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave"] = { "friends@frj@ig_1", "wave_a", "Wave", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave5"] = { "friends@frj@ig_1", "wave_b", "Wave 5", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave6"] = { "friends@frj@ig_1", "wave_c", "Wave 6", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave7"] = { "friends@frj@ig_1", "wave_d", "Wave 7", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave8"] = { "friends@frj@ig_1", "wave_e", "Wave 8", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wave9"] = { "gestures@m@standing@casual", "gesture_hello", "Wave 9", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["whistle"] = { "taxi_hail", "hail_taxi", "Whistle", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 1300, - }}, - ["whistle2"] = { "rcmnigel1c", "hailing_whistle_waive_a", "Whistle 2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["yeah"] = { "anim@mp_player_intupperair_shagging", "idle_a", "Yeah", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["lift"] = { "random@hitch_lift", "idle_f", "Lift", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["lol"] = { "anim@arena@celeb@flat@paired@no_props@", "laugh_a_player_b", "LOL", AnimationOptions = { - EmoteLoop = true, - }}, - ["lol2"] = { "anim@arena@celeb@flat@solo@no_props@", "giggle_a_player_b", "LOL 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["statue2"] = { "fra_0_int-1", "cs_lamardavis_dual-1", "Statue 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["statue3"] = { "club_intro2-0", "csb_englishdave_dual-0", "Statue 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["gangsign"] = { "mp_player_int_uppergang_sign_a", "mp_player_int_gang_sign_a", "Gang Sign", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["gangsign2"] = { "mp_player_int_uppergang_sign_b", "mp_player_int_gang_sign_b", "Gang Sign 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["passout"] = { "missarmenian2", "drunk_loop", "Passout", AnimationOptions = { - EmoteLoop = true, - }}, - ["passout2"] = { "missarmenian2", "corpse_search_exit_ped", "Passout 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["passout3"] = { "anim@gangops@morgue@table@", "body_search", "Passout 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["passout4"] = { "mini@cpr@char_b@cpr_def", "cpr_pumpchest_idle", "Passout 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["passout5"] = { "random@mugging4", "flee_backward_loop_shopkeeper", "Passout 5", AnimationOptions = { - EmoteLoop = true, - }}, - ["petting"] = { "creatures@rottweiler@tricks@", "petting_franklin", "Petting", AnimationOptions = { - EmoteLoop = true, - }}, - ["crawl"] = { "move_injured_ground", "front_loop", "Crawl", AnimationOptions = { - EmoteLoop = true, - }}, - ["flip2"] = { "anim@arena@celeb@flat@solo@no_props@", "cap_a_player_a", "Flip 2" }, - ["flip"] = { "anim@arena@celeb@flat@solo@no_props@", "flip_a_player_a", "Flip" }, - ["slide"] = { "anim@arena@celeb@flat@solo@no_props@", "slide_a_player_a", "Slide" }, - ["slide2"] = { "anim@arena@celeb@flat@solo@no_props@", "slide_b_player_a", "Slide 2" }, - ["slide3"] = { "anim@arena@celeb@flat@solo@no_props@", "slide_c_player_a", "Slide 3" }, - ["slugger"] = { "anim@arena@celeb@flat@solo@no_props@", "slugger_a_player_a", "Slugger" }, - ["flipoff"] = { "anim@arena@celeb@podium@no_prop@", "flip_off_a_1st", "Flip Off", AnimationOptions = { - EmoteMoving = true, - }}, - ["flipoff2"] = { "anim@arena@celeb@podium@no_prop@", "flip_off_c_1st", "Flip Off 2", AnimationOptions = { - EmoteMoving = true, - }}, - ["bow"] = { "anim@arena@celeb@podium@no_prop@", "regal_c_1st", "Bow", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bow2"] = { "anim@arena@celeb@podium@no_prop@", "regal_a_1st", "Bow 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["keyfob"] = { "anim@mp_player_intmenu@key_fob@", "fob_click", "Key Fob", AnimationOptions = { - EmoteLoop = false, - EmoteMoving = true, - EmoteDuration = 1000, - }}, - ["reaching"] = { "move_m@intimidation@cop@unarmed", "idle", "Reaching", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["slap"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_slap", "Slap", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - EmoteDuration = 2000, - }}, - ["headbutt"] = { "melee@unarmed@streamed_variations", "plyr_takedown_front_headbutt", "Headbutt" }, - ["fishdance"] = { "anim@mp_player_intupperfind_the_fish", "idle_a", "Fish Dance", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace"] = { "mp_player_int_upperpeace_sign", "mp_player_int_peace_sign", "Peace", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace2"] = { "anim@mp_player_intupperpeace", "idle_a", "Peace 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace3"] = { "anim@mp_player_intupperpeace", "idle_a_fp", "Peace 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace4"] = { "anim@mp_player_intincarpeacestd@ds@", "idle_a", "Peace 4", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace5"] = { "anim@mp_player_intincarpeacestd@ds@", "idle_a_fp", "Peace 5", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace6"] = { "anim@mp_player_intincarpeacebodhi@ds@", "idle_a", "Peace 6", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peace7"] = { "anim@mp_player_intincarpeacebodhi@ds@", "idle_a_fp", "Peace 7", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peacef"] = { "anim@mp_player_intcelebrationfemale@peace", "peace", "Peace Female", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cpr"] = { "mini@cpr@char_a@cpr_str", "cpr_pumpchest", "CPR", AnimationOptions = { - EmoteLoop = true, - }}, - ["cpr2"] = { "mini@cpr@char_a@cpr_str", "cpr_pumpchest", "CPR 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ledge"] = { "missfbi1", "ledge_loop", "Ledge", AnimationOptions = { - EmoteLoop = true, - }}, - ["airplane"] = { "missfbi1", "ledge_loop", "Air Plane", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["peek"] = { "random@paparazzi@peek", "left_peek_a", "Peek", AnimationOptions = { - EmoteLoop = true, - }}, - ["cough"] = { "timetable@gardener@smoking_joint", "idle_cough", "Cough", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["stretch"] = { "mini@triathlon", "idle_e", "Stretch", AnimationOptions = { - EmoteLoop = true, - }}, - ["stretch2"] = { "mini@triathlon", "idle_f", "Stretch 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["stretch3"] = { "mini@triathlon", "idle_d", "Stretch 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["stretch4"] = { "rcmfanatic1maryann_stretchidle_b", "idle_e", "Stretch 4", AnimationOptions = { - EmoteLoop = true, - }}, - ["celebrate"] = { "rcmfanatic1celebrate", "celebrate", "Celebrate", AnimationOptions = { - EmoteLoop = true, - }}, - ["punching"] = { "rcmextreme2", "loop_punching", "Punching", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["superhero"] = { "rcmbarry", "base", "Superhero", AnimationOptions = { - EmoteLoop = true, - }}, - ["superhero2"] = { "rcmbarry", "base", "Superhero 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["mindcontrol"] = { "rcmbarry", "mind_control_b_loop", "Mind Control", AnimationOptions = { - EmoteLoop = true, - }}, - ["mindcontrol2"] = { "rcmbarry", "bar_1_attack_idle_aln", "Mind Control 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["clown"] = { "rcm_barry2", "clown_idle_0", "Clown", AnimationOptions = { - EmoteLoop = true, - }}, - ["clown2"] = { "rcm_barry2", "clown_idle_1", "Clown 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["clown3"] = { "rcm_barry2", "clown_idle_2", "Clown 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["clown4"] = { "rcm_barry2", "clown_idle_3", "Clown 4", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["clown5"] = { "rcm_barry2", "clown_idle_6", "Clown 5", AnimationOptions = { - EmoteLoop = true, - }}, - ["tryclothes"] = { "mp_clothing@female@trousers", "try_trousers_neutral_a", "Try Clothes", AnimationOptions = { - EmoteLoop = true, - }}, - ["tryclothes2"] = { "mp_clothing@female@shirt", "try_shirt_positive_a", "Try Clothes 2", AnimationOptions = { - EmoteLoop = true, - }}, - ["tryclothes3"] = { "mp_clothing@female@shoes", "try_shoes_positive_a", "Try Clothes 3", AnimationOptions = { - EmoteLoop = true, - }}, - ["nervous2"] = { "mp_missheist_countrybank@nervous", "nervous_idle", "Nervous 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["nervous"] = { "amb@world_human_bum_standing@twitchy@idle_a", "idle_c", "Nervous", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["nervous3"] = { "rcmme_tracey1", "nervous_loop", "Nervous 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["uncuff"] = { "mp_arresting", "a_uncuff", "Uncuff", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["namaste"] = { "timetable@amanda@ig_4", "ig_4_base", "Namaste", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["threaten"] = { "random@atmrobberygen", "b_atm_mugging", "Threaten", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["radio"] = { "random@arrests", "generic_radio_chatter", "Radio", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pull"] = { "random@mugging4", "struggle_loop_b_thief", "Pull", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bird"] = { "random@peyote@bird", "wakeup", "Bird" }, - ["chicken"] = { "random@peyote@chicken", "wakeup", "Chicken", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bark"] = { "random@peyote@dog", "wakeup", "Bark" }, - ["rabbit"] = { "random@peyote@rabbit", "wakeup", "Rabbit" }, - ["spiderman"] = { "missexile3", "ex03_train_roof_idle", "Spider-Man", AnimationOptions = { - EmoteLoop = true, - }}, - ["boi"] = { "special_ped@jane@monologue_5@monologue_5c", "brotheradrianhasshown_2", "BOI", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 3000, - }}, - ["adjust"] = { "missmic4", "michael_tux_fidget", "Adjust", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 4000, - }}, - ["handsup"] = { "missminuteman_1ig_2", "handsup_base", "Hands Up", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["handsup2"] = { "anim@mp_player_intuppersurrender", "idle_a_fp", "Hands Up 2", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["valet"] = { "anim@amb@casino@valet_scenario@pose_a@", "base_a_m_y_vinewood_01", "Valet", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["valet2"] = { "anim@amb@casino@valet_scenario@pose_b@", "base_a_m_y_vinewood_01", "Valet 2", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = false, - }}, - ["valet3"] = { "anim@amb@casino@valet_scenario@pose_d@", "base_a_m_y_vinewood_01", "Valet 3", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tighten"] = { "timetable@denice@ig_1", "idle_b", "Tigten (Yoga)", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["fspose"] = { "missfam5_yoga", "c2_pose", "F Sex Pose", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["fspose2"] = { "missfam5_yoga", "c6_pose", "F Sex Pose 2", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["fspose4"] = { "anim@amb@carmeet@checkout_car@", "female_c_idle_d", "F Sex Pose 4", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["showerf"] = { "mp_safehouseshower@female@", "shower_enter_into_idle", "Shower Enter Female", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["showerf2"] = { "mp_safehouseshower@female@", "shower_idle_a", "Shower Female", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["showerf3"] = { "mp_safehouseshower@female@", "shower_idle_b", "Shower Female 2", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["showerm"] = { "mp_safehouseshower@male@", "male_shower_idle_a", "Shower Enter Male", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["showerm2"] = { "mp_safehouseshower@male@", "male_shower_idle_b", "Shower Male 2", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["showerm3"] = { "mp_safehouseshower@male@", "male_shower_idle_c", "Shower Male 3", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["showerm4"] = { "mp_safehouseshower@male@", "male_shower_idle_d", "Shower Male 4", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["picklock"] = { "missheistfbisetup1", "hassle_intro_loop_f", "Picklock", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["cleanhands"] = { "missheist_agency3aig_23", "urinal_sink_loop", "Clean Them Filthy Hands", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["cleanface"] = { "switch@michael@wash_face", "loop_michael", "Clean Your Face", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["buzz"] = { "anim@apt_trans@buzzer", "buzz_reg", "Buzz Door", AnimationOptions = { - EmoteLoop = false, - EmoteMoving = false, - }}, - ["piss"] = { "missbigscore1switch_trevor_piss", "piss_loop", "Piss (Male)", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - }}, - ["grieve"] = { "anim@miss@low@fin@vagos@", "idle_ped05", "Grieve The Dead", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true, - }}, - ["respect"] = { "anim@mp_player_intcelebrationmale@respect", "respect", "Respect Male", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = false, - }}, - ["respectf"] = { "anim@mp_player_intcelebrationfemale@respect", "respect", "Respect Female", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = false, - }}, - ["bang"] = { "anim@mp_player_intcelebrationfemale@bang_bang", "bang_bang", "Bang Bang ", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 2500, - }}, - ["checkcar"] = { "anim@amb@carmeet@checkout_car@male_a@idles", "idle_b", "Check Out · Female ", AnimationOptions = { - EmoteLoop = true, - }}, - ["checkcar2"] = { "anim@amb@carmeet@checkout_car@male_c@idles", "idle_a", "Check Out 2 · Male ", AnimationOptions = { - EmoteLoop = true, - }}, - ["showboobs"] = { "mini@strip_club@backroom@", "stripper_b_backroom_idle_b", "Show Boobs ", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 6000, - }}, - ["showboobs2"] = { "mini@strip_club@idles@stripper", "stripper_idle_05", "Show Boobs 2", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 6000, - }}, - ["watchstripper"] = { "amb@world_human_strip_watch_stand@male_c@idle_a", "idle_b", "Watch Stripper ", AnimationOptions = { - EmoteMoving = false, - EmoteDuration = 6000, - }}, - ["hhands"] = { "misssnowie@hearthands", "base", "Heart Hands", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - - - - ----------------------------------------------------------------------------------------------------------- - ------ The male and female 'interaction menu' emotes from GTA Online can be found under the following animation directories: - ------ - ------ Male: anim@mp_player_intcelebrationmale - ------ - ------ Female: anim@mp_player_intcelebrationfemale - - ----------------------------------------------------------------------------------------------------------- - - - - - ----------------------------------------------------------------------------------------------------------- - ------ These are Scenarios, some of these dont work on women and some other issues, but still good to have. - ----------------------------------------------------------------------------------------------------------- - - - ["atm"] = { "Scenario", "PROP_HUMAN_ATM", "ATM" }, - ["bbq"] = { "MaleScenario", "PROP_HUMAN_BBQ", "BBQ" }, - ["bumbin"] = { "Scenario", "PROP_HUMAN_BUM_BIN", "Bum Bin" }, - ["bumsleep"] = { "Scenario", "WORLD_HUMAN_BUM_SLUMPED", "Bum Sleep" }, - ["cheer"] = { "Scenario", "WORLD_HUMAN_CHEERING", "Cheer" }, - ["chinup"] = { "Scenario", "PROP_HUMAN_MUSCLE_CHIN_UPS", "Chinup" }, - ["cop"] = { "Scenario", "WORLD_HUMAN_COP_IDLES", "Cop" }, - ["drill"] = { "Scenario", "WORLD_HUMAN_CONST_DRILL", "Construction Drilling" }, - ["filmshocking"] = { "Scenario", "WORLD_HUMAN_MOBILE_FILM_SHOCKING", "Film Shocking" }, - ["flex"] = { "Scenario", "WORLD_HUMAN_MUSCLE_FLEX", "Flex" }, - ["guard"] = { "Scenario", "WORLD_HUMAN_GUARD_STAND", "Guard" }, - ["garden"] = { "Scenario", "WORLD_HUMAN_GARDENER_PLANT", "Gardening" }, - ["hammer"] = { "Scenario", "WORLD_HUMAN_HAMMERING", "Hammer" }, - ["hangout"] = { "Scenario", "WORLD_HUMAN_HANG_OUT_STREET", "Hangout" }, - ["impatient"] = { "Scenario", "WORLD_HUMAN_STAND_IMPATIENT", "Impatient" }, - ["janitor"] = { "Scenario", "WORLD_HUMAN_JANITOR", "Janitor" }, - ["jog"] = { "Scenario", "WORLD_HUMAN_JOG_STANDING", "Jog" }, - ["kneel"] = { "Scenario", "CODE_HUMAN_MEDIC_KNEEL", "Kneel" }, - ["lean"] = { "Scenario", "WORLD_HUMAN_LEANING", "Lean" }, - ["leanbar"] = { "Scenario", "PROP_HUMAN_BUM_SHOPPING_CART", "Lean Bar" }, - ["lookout"] = { "Scenario", "CODE_HUMAN_CROSS_ROAD_WAIT", "Lookout" }, - ["maid"] = { "Scenario", "WORLD_HUMAN_MAID_CLEAN", "Maid" }, - ["medic"] = { "Scenario", "CODE_HUMAN_MEDIC_TEND_TO_DEAD", "Medic" }, - ["musician"] = { "MaleScenario", "WORLD_HUMAN_MUSICIAN", "Musician" }, -- Ambient Music Doesn't Seem To Work For Female, Hence It's Male Only - ["notepad2"] = { "Scenario", "CODE_HUMAN_MEDIC_TIME_OF_DEATH", "Notepad 2" }, - ["parkingmeter"] = { "Scenario", "PROP_HUMAN_PARKING_METER", "Parking Meter" }, - ["party"] = { "Scenario", "WORLD_HUMAN_PARTYING", "Party" }, - ["texting"] = { "Scenario", "WORLD_HUMAN_STAND_MOBILE", "Texting" }, - ["prosthigh"] = { "Scenario", "WORLD_HUMAN_PROSTITUTE_HIGH_CLASS", "Prostitue High" }, - ["prostlow"] = { "Scenario", "WORLD_HUMAN_PROSTITUTE_LOW_CLASS", "Prostitue Low" }, - ["puddle"] = { "Scenario", "WORLD_HUMAN_BUM_WASH", "Puddle" }, - ["record"] = { "Scenario", "WORLD_HUMAN_MOBILE_FILM_SHOCKING", "Record" }, - - - -- Sitchair is a litte special, since you want the player to be seated correctly. - -- So we set it as "ScenarioObject" and do TaskStartScenarioAtPosition() instead of "AtPlace" - - ["sitchair"] = { "ScenarioObject", "PROP_HUMAN_SEAT_CHAIR_MP_PLAYER", "Sit Chair" }, - ["smoke"] = { "Scenario", "WORLD_HUMAN_SMOKING", "Smoke" }, - ["smokeweed"] = { "MaleScenario", "WORLD_HUMAN_DRUG_DEALER", "Smoke Weed (Male)" }, -- Male - ["smokepot"] = { "Scenario", "WORLD_HUMAN_SMOKING_POT", "Smoke Weed (Female)" }, -- Female - ["statue"] = { "Scenario", "WORLD_HUMAN_HUMAN_STATUE", "Statue" }, - ["sunbathe3"] = { "Scenario", "WORLD_HUMAN_SUNBATHE", "Sunbathe 3" }, - ["sunbatheback"] = { "Scenario", "WORLD_HUMAN_SUNBATHE_BACK", "Sunbathe Back" }, - ["weld"] = { "Scenario", "WORLD_HUMAN_WELDING", "Weld" }, - ["windowshop"] = { "Scenario", "WORLD_HUMAN_WINDOW_SHOP_BROWSE", "Window Shop" }, - ["yoga"] = { "Scenario", "WORLD_HUMAN_YOGA", "Yoga" }, - - - -- CASINO DLC EMOTES (Requires gamebuild 2060 or higher) - - - ["karate"] = { "anim@mp_player_intcelebrationfemale@karate_chops", "karate_chops", "Karate" }, - ["karate2"] = { "anim@mp_player_intcelebrationmale@karate_chops", "karate_chops", "Karate 2" }, - ["cutthroat"] = { "anim@mp_player_intcelebrationmale@cut_throat", "cut_throat", "Cut Throat" }, - ["cutthroat2"] = { "anim@mp_player_intcelebrationfemale@cut_throat", "cut_throat", "Cut Throat 2" }, - ["mindblown"] = { "anim@mp_player_intcelebrationmale@mind_blown", "mind_blown", "Mind Blown", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 4000 - }}, - ["mindblown2"] = { "anim@mp_player_intcelebrationfemale@mind_blown", "mind_blown", "Mind Blown 2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 4000 - }}, - ["boxing"] = { "anim@mp_player_intcelebrationmale@shadow_boxing", "shadow_boxing", "Boxing", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 4000 - }}, - ["boxing2"] = { "anim@mp_player_intcelebrationfemale@shadow_boxing", "shadow_boxing", "Boxing 2", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 4000 - }}, - ["stink"] = { "anim@mp_player_intcelebrationfemale@stinker", "stinker", "Stink", AnimationOptions = { - EmoteMoving = true, - EmoteLoop = true - }}, - ["think4"] = { "anim@amb@casino@hangout@ped_male@stand@02b@idles", "idle_a", "Think 4", AnimationOptions = { - EmoteLoop = true, - EmoteMoving = true, - }}, - ["adjusttie"] = { "clothingtie", "try_tie_positive_a", "Adjust Tie", AnimationOptions = { - EmoteMoving = true, - EmoteDuration = 5000 - }}, -} - - ---- EMOTES WITH 1 OR 2 PROPS --- - -DP.PropEmotes = { - ["umbrella"] = { "amb@world_human_drinking@coffee@male@base", "base", "Umbrella", AnimationOptions = { - Prop = "p_amb_brolly_01", - PropBone = 57005, - PropPlacement = { 0.15, 0.005, 0.0, 87.0, -20.0, 180.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['umbrella2'] = { 'rcmnigel1d', 'base_club_shoulder', 'Umbrella 2', AnimationOptions = { - Prop = 'p_amb_brolly_01', - PropBone = 28422, - PropPlacement = { 0.0700, 0.0100, 0.1100, 2.3402393, -150.9605721, 57.3374916 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - - ----------------------------------------------------------------------------------------------------- - ------ This is an example of an emote with 2 props, pretty simple! ---------------------------------- - ----------------------------------------------------------------------------------------------------- - - ["notepad"] = { "missheistdockssetup1clipboard@base", "base", "Notepad", AnimationOptions = { - Prop = 'prop_notepad_01', - PropBone = 18905, - PropPlacement = { 0.1, 0.02, 0.05, 10.0, 0.0, 0.0 }, - SecondProp = 'prop_pencil_01', - SecondPropBone = 58866, - SecondPropPlacement = { 0.11, -0.02, 0.001, -120.0, 0.0, 0.0 }, - -- EmoteLoop is used for emotes that should loop, its as simple as that. - -- Then EmoteMoving is used for emotes that should only play on the upperbody. - -- The code then checks both values and sets the MovementType to the correct one - EmoteLoop = true, - EmoteMoving = true, - }}, - ["box"] = { "anim@heists@box_carry@", "idle", "Box", AnimationOptions = { - Prop = "hei_prop_heist_box", - PropBone = 60309, - PropPlacement = { 0.025, 0.08, 0.255, -145.0, 290.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["rose"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Rose", AnimationOptions = { - Prop = "prop_single_rose", - PropBone = 18905, - PropPlacement = { 0.13, 0.15, 0.0, -100.0, 0.0, -20.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["smoke2"] = { "amb@world_human_aa_smoke@male@idle_a", "idle_c", "Smoke 2", AnimationOptions = { - Prop = 'prop_cs_ciggy_01', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["smoke3"] = { "amb@world_human_aa_smoke@male@idle_a", "idle_b", "Smoke 3", AnimationOptions = { - Prop = 'prop_cs_ciggy_01', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["smoke4"] = { "amb@world_human_smoking@female@idle_a", "idle_b", "Smoke 4", AnimationOptions = { - Prop = 'prop_cs_ciggy_01', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bong"] = { "anim@safehouse@bong", "bong_stage3", "Bong", AnimationOptions = { - Prop = 'hei_heist_sh_bong_01', - PropBone = 18905, - PropPlacement = { 0.10, -0.25, 0.0, 95.0, 190.0, 180.0 }, - }}, - ["fishing1"] = { "amb@world_human_stand_fishing@idle_a", "idle_a", "Fishing 1", AnimationOptions = { - Prop = 'prop_fishing_rod_01', - PropBone = 60309, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["fishing2"] = { "amb@world_human_stand_fishing@idle_a", "idle_b", "Fishing 2", AnimationOptions = { - Prop = 'prop_fishing_rod_01', - PropBone = 60309, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["fishing3"] = { "amb@world_human_stand_fishing@idle_a", "idle_c", "Fishing 3", AnimationOptions = { - Prop = 'prop_fishing_rod_01', - PropBone = 60309, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["suitcase"] = { "move_weapon@jerrycan@generic", "idle", "Suitcase", AnimationOptions = { - Prop = "prop_ld_suitcase_01", - PropBone = 57005, - PropPlacement = { 0.35, 0.0, 0.0, 0.0, 266.0, 90.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["suitcase2"] = { "move_weapon@jerrycan@generic", "idle", "Suitcase 2", AnimationOptions = { - Prop = "prop_security_case_01", - PropBone = 57005, - PropPlacement = { 0.13, 0.0, -0.01, 0.0, 280.0, 90.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["boombox"] = { "move_weapon@jerrycan@generic", "idle", "Boombox", AnimationOptions = { - Prop = "prop_boombox_01", - PropBone = 57005, - PropPlacement = { 0.27, 0.0, 0.0, 0.0, 263.0, 58.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["toolbox"] = { "move_weapon@jerrycan@generic", "idle", "Toolbox", AnimationOptions = { - Prop = "prop_tool_box_04", - PropBone = 28422, - PropPlacement = { 0.3960, 0.0410, -0.0030, -90.00, 0.0, 90.00 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["toolbox2"] = { "move_weapon@jerrycan@generic", "idle", "Toolbox 2", AnimationOptions = { - Prop = "imp_prop_tool_box_01a", - PropBone = 28422, - PropPlacement = { 0.3700, 0.0200, 0.0, 90.00, 0.0, -90.00 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["gbag"] = { "missfbi4prepp1", "_idle_garbage_man", "Garbage Bag", AnimationOptions = { - Prop = "prop_cs_street_binbag_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0400, -0.0200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beerbox"] = { "move_weapon@jerrycan@generic", "idle", "Beer Box 1", AnimationOptions = { - Prop = "v_ret_ml_beerdus", - PropBone = 57005, - PropPlacement = { 0.22, 0.0, 0.0, 0.0, 266.0, 48.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beerbox2"] = { "move_weapon@jerrycan@generic", "idle", "Beer Box 2", AnimationOptions = { - Prop = "v_ret_ml_beeram", - PropBone = 57005, - PropPlacement = { 0.22, 0.0, 0.0, 0.0, 266.0, 48.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beerbox3"] = { "move_weapon@jerrycan@generic", "idle", "Beer Box 3", AnimationOptions = { - Prop = "v_ret_ml_beerpride", - PropBone = 57005, - PropPlacement = { 0.22, 0.0, 0.0, 0.0, 266.0, 48.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beerbox4"] = { "move_weapon@jerrycan@generic", "idle", "Beer Box 4", AnimationOptions = { - Prop = "v_ret_ml_beerbar", - PropBone = 57005, - PropPlacement = { 0.22, 0.0, 0.0, 0.0, 266.0, 60.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["mugshot"] = { "mp_character_creation@customise@male_a", "loop", "Mugshot", AnimationOptions = { - Prop = 'prop_police_id_board', - PropBone = 58868, - PropPlacement = { 0.12, 0.24, 0.0, 5.0, 0.0, 70.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["coffee"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Coffee", AnimationOptions = { - Prop = 'p_amb_coffeecup_01', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["whiskey"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Whiskey", AnimationOptions = { - Prop = 'prop_drink_whisky', - PropBone = 28422, - PropPlacement = { 0.01, -0.01, -0.06, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["whiskeyb"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_a", "Whiskey Bottle", AnimationOptions = { - Prop = 'ba_prop_battle_whiskey_bottle_2_s', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.05, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beer"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_c", "Beer", AnimationOptions = { - Prop = 'prop_amb_beer_bottle', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.06, 0.0, 15.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["whiskeyb2"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_a", "Whiskey Bottle 2", AnimationOptions = { - Prop = 'ba_prop_battle_whiskey_bottle_2_s', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.05, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beer2"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_c", "Beer 2", AnimationOptions = { - Prop = 'prop_amb_beer_bottle', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.06, 0.0, 15.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["whiskeyb3"] = { "amb@world_human_drinking@beer@male@idle_a", "idle_a", "Whiskey Bottle 3", AnimationOptions = { - Prop = 'ba_prop_battle_whiskey_bottle_2_s', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.05, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["beerf"] = { "amb@world_human_drinking@beer@female@idle_a", "idle_a", "Beer Female", AnimationOptions = { - Prop = 'prop_amb_beer_bottle', - PropBone = 28422, - PropPlacement = { 0.0, -0.0, 0.05, 15.0, 15.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wine2"] = { "amb@world_human_drinking@beer@female@idle_a", "idle_e", "Wine 2 - Bottle", AnimationOptions = { - Prop = 'prop_wine_rose', - PropBone = 28422, - PropPlacement = { -0.0, 0.04, -0.19, 10.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - --- PropPlacement = {-0.0, 0.03, -0.20, 5.0, 0.0, 0.0}, - --- F&B L&R U&D R.F&B - }}, - ["beerf3"] = { "amb@world_human_drinking@beer@female@idle_a", "idle_a", "Beer Female 3", AnimationOptions = { - Prop = 'prop_amb_beer_bottle', - PropBone = 28422, - PropPlacement = { 0.0, -0.0, 0.05, 15.0, 15.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["wine3"] = { "amb@world_human_drinking@beer@female@idle_a", "idle_e", "Wine 3 - Bottle", AnimationOptions = { - Prop = 'prop_wine_rose', - PropBone = 28422, - PropPlacement = { -0.0, 0.04, -0.19, 10.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - --- PropPlacement = {-0.0, 0.03, -0.20, 5.0, 0.0, 0.0}, - --- F&B L&R U&D R.F&B - }}, - ["cup"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Cup", AnimationOptions = { - Prop = 'prop_plastic_cup_02', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["donut"] = { "mp_player_inteat@burger", "mp_player_int_eat_burger", "Donut", AnimationOptions = { - Prop = 'prop_amb_donut', - PropBone = 18905, - PropPlacement = { 0.13, 0.05, 0.02, -50.0, 16.0, 60.0 }, - EmoteMoving = true, - }}, - ["burger"] = { "mp_player_inteat@burger", "mp_player_int_eat_burger", "Burger", AnimationOptions = { - Prop = 'prop_cs_burger_01', - PropBone = 18905, - PropPlacement = { 0.13, 0.05, 0.02, -50.0, 16.0, 60.0 }, - EmoteMoving = true, - }}, - ["sandwich"] = { "mp_player_inteat@burger", "mp_player_int_eat_burger", "Sandwich", AnimationOptions = { - Prop = 'prop_sandwich_01', - PropBone = 18905, - PropPlacement = { 0.13, 0.05, 0.02, -50.0, 16.0, 60.0 }, - EmoteMoving = true, - }}, - ["soda"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Soda", AnimationOptions = { - Prop = 'prop_ecola_can', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 130.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["water"] = { "amb@world_human_drinking@coffee@male@idle_a", "idle_c", "Water", AnimationOptions = { - Prop = 'ba_prop_club_water_bottle', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.090, 0.0, 0.0, 130.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["egobar"] = { "mp_player_inteat@burger", "mp_player_int_eat_burger", "Ego Bar", AnimationOptions = { - Prop = 'prop_choc_ego', - PropBone = 60309, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteMoving = true, - }}, - ["candy"] = { "mp_player_inteat@pnq", "loop", "Candy", AnimationOptions = { - Prop = 'prop_candy_pqs', - PropBone = 60309, - PropPlacement = { -0.0300, 0.0180, 0.0, 180.0, 180.0, -88.099 }, - EmoteMoving = true, - }}, - ["wine"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Wine", AnimationOptions = { - Prop = 'prop_drink_redwine', - PropBone = 18905, - PropPlacement = { 0.10, -0.03, 0.03, -100.0, 0.0, -10.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["flute"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Flute", AnimationOptions = { - Prop = 'prop_champ_flute', - PropBone = 18905, - PropPlacement = { 0.10, -0.03, 0.03, -100.0, 0.0, -10.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["champagne"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "Champagne", AnimationOptions = { - Prop = 'prop_drink_champ', - PropBone = 18905, - PropPlacement = { 0.10, -0.03, 0.03, -100.0, 0.0, -10.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["cigar"] = { "amb@world_human_smoking@male@male_a@enter", "enter", "Cigar", AnimationOptions = { - Prop = 'prop_cigar_02', - PropBone = 47419, - PropPlacement = { 0.010, 0.0, 0.0, 50.0, 0.0, -80.0 }, - EmoteMoving = true, - EmoteDuration = 2600 - }}, - ["cigar2"] = { "amb@world_human_smoking@male@male_a@enter", "enter", "Cigar 2", AnimationOptions = { - Prop = 'prop_cigar_01', - PropBone = 47419, - PropPlacement = { 0.010, 0.0, 0.0, 50.0, 0.0, -80.0 }, - EmoteMoving = true, - EmoteDuration = 2600 - }}, - ["guitar"] = { "amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar", AnimationOptions = { - Prop = 'prop_acc_guitar_01', - PropBone = 24818, - PropPlacement = { -0.1, 0.31, 0.1, 0.0, 20.0, 150.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["guitar2"] = { "switch@trevor@guitar_beatdown", "001370_02_trvs_8_guitar_beatdown_idle_busker", "Guitar 2", AnimationOptions = { - Prop = 'prop_acc_guitar_01', - PropBone = 24818, - PropPlacement = { -0.05, 0.31, 0.1, 0.0, 20.0, 150.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["guitarelectric"] = { "amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar Electric", AnimationOptions = { - Prop = 'prop_el_guitar_01', - PropBone = 24818, - PropPlacement = { -0.1, 0.31, 0.1, 0.0, 20.0, 150.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["guitarelectric2"] = { "amb@world_human_musician@guitar@male@idle_a", "idle_b", "Guitar Electric 2", AnimationOptions = { - Prop = 'prop_el_guitar_03', - PropBone = 24818, - PropPlacement = { -0.1, 0.31, 0.1, 0.0, 20.0, 150.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["book"] = { "cellphone@", "cellphone_text_read_base", "Book", AnimationOptions = { - Prop = 'prop_novel_01', - PropBone = 6286, - PropPlacement = { 0.15, 0.03, -0.065, 0.0, 180.0, 90.0 }, -- This positioning isnt too great, was to much of a hassle - EmoteMoving = true, - EmoteLoop = true - }}, - ["bouquet"] = { "impexp_int-0", "mp_m_waremech_01_dual-0", "Bouquet", AnimationOptions = { - Prop = 'prop_snow_flower_02', - PropBone = 24817, - PropPlacement = { -0.29, 0.40, -0.02, -90.0, -90.0, 0.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["teddy"] = { "impexp_int-0", "mp_m_waremech_01_dual-0", "Teddy", AnimationOptions = { - Prop = 'v_ilev_mr_rasberryclean', - PropBone = 24817, - PropPlacement = { -0.20, 0.46, -0.016, -180.0, -90.0, 0.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["backpack"] = { "move_p_m_zero_rucksack", "nill", "Backpack", AnimationOptions = { - Prop = 'p_michael_backpack_s', - PropBone = 24818, - PropPlacement = { 0.07, -0.11, -0.05, 0.0, 90.0, 175.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["clipboard"] = { "missfam4", "base", "Clipboard", AnimationOptions = { - Prop = 'p_amb_clipboard_01', - PropBone = 36029, - PropPlacement = { 0.16, 0.08, 0.1, -130.0, -50.0, 0.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["map"] = { "amb@world_human_tourist_map@male@base", "base", "Map", AnimationOptions = { - Prop = 'prop_tourist_map_01', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteMoving = true, - EmoteLoop = true - }}, - ["map2"] = { "amb@code_human_in_bus_passenger_idles@female@tablet@idle_a", "idle_a", "Map 2", AnimationOptions = { - Prop = "prop_tourist_map_01", - PropBone = 28422, - PropPlacement = { -0.05, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beg"] = { "amb@world_human_bum_freeway@male@base", "base", "Beg", AnimationOptions = { - Prop = 'prop_beggers_sign_03', - PropBone = 58868, - PropPlacement = { 0.19, 0.18, 0.0, 5.0, 0.0, 40.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["makeitrain"] = { "anim@mp_player_intupperraining_cash", "idle_a", "Make It Rain", AnimationOptions = { - Prop = 'prop_anim_cash_pile_01', - PropBone = 60309, - PropPlacement = { 0.0, 0.0, 0.0, 180.0, 0.0, 70.0 }, - EmoteMoving = true, - EmoteLoop = true, - PtfxAsset = "scr_xs_celebration", - PtfxName = "scr_xs_money_rain", - PtfxPlacement = { 0.0, 0.0, -0.09, -80.0, 0.0, 0.0, 1.0 }, - PtfxInfo = Config.Languages[Config.MenuLanguage]['makeitrain'], - PtfxWait = 500, - }}, - ["camera"] = { "amb@world_human_paparazzi@male@base", "base", "Camera", AnimationOptions = { - Prop = 'prop_pap_camera_01', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - PtfxAsset = "scr_bike_business", - PtfxName = "scr_bike_cfid_camera_flash", - PtfxPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 }, - PtfxInfo = Config.Languages[Config.MenuLanguage]['camera'], - PtfxWait = 200, - }}, - ["champagnespray"] = { "anim@mp_player_intupperspray_champagne", "idle_a", "Champagne Spray", AnimationOptions = { - Prop = 'ba_prop_battle_champ_open', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteMoving = true, - EmoteLoop = true, - PtfxAsset = "scr_ba_club", - PtfxName = "scr_ba_club_champagne_spray", - PtfxPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - PtfxInfo = Config.Languages[Config.MenuLanguage]['spraychamp'], - PtfxWait = 500, - }}, - ["joint"] = { "amb@world_human_smoking@male@male_a@enter", "enter", "Joint", AnimationOptions = { - Prop = 'p_cs_joint_02', - PropBone = 47419, - PropPlacement = { 0.015, -0.009, 0.003, 55.0, 0.0, 110.0 }, - EmoteMoving = true, - EmoteDuration = 2600 - }}, - ["cig"] = { "amb@world_human_smoking@male@male_a@enter", "enter", "Cig", AnimationOptions = { - Prop = 'prop_amb_ciggy_01', - PropBone = 47419, - PropPlacement = { 0.015, -0.009, 0.003, 55.0, 0.0, 110.0 }, - EmoteMoving = true, - EmoteDuration = 2600 - }}, - ["brief"] = { "move_weapon@jerrycan@generic", "idle", "Briefcase", AnimationOptions = { - Prop = "prop_ld_case_01", - PropBone = 57005, - PropPlacement = { 0.12, 0.0, 0.0, 0.0, 255.0, 80.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tablet"] = { "amb@world_human_tourist_map@male@base", "base", "Tablet", AnimationOptions = { - Prop = "prop_cs_tablet", - PropBone = 28422, - PropPlacement = { 0.0, -0.03, 0.0, 20.0, -90.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tablet2"] = { "amb@code_human_in_bus_passenger_idles@female@tablet@idle_a", "idle_a", "Tablet 2", AnimationOptions = { - Prop = "prop_cs_tablet", - PropBone = 28422, - PropPlacement = { -0.05, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["phonecall"] = { "cellphone@", "cellphone_call_listen_base", "Phone Call", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["phonecall2"] = { "random@kidnap_girl", "ig_1_girl_on_phone_loop", "Phone Call 2", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["wt"] = { "cellphone@", "cellphone_text_read_base", "Walkie Talkie", AnimationOptions = { - Prop = "prop_cs_hand_radio", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["clean"] = { "timetable@floyd@clean_kitchen@base", "base", "Clean", AnimationOptions = { - Prop = "prop_sponge_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.01, 90.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["clean2"] = { "amb@world_human_maid_clean@", "base", "Clean 2", AnimationOptions = { - Prop = "prop_sponge_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.01, 90.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["protest"] = { "rcmnigel1d", "base_club_shoulder", "Protest", AnimationOptions = { - Prop = "prop_cs_protest_sign_01", - PropBone = 57005, - PropPlacement = { 0.1820, 0.2400, 0.0600, -69.3774235, 5.9142048, -13.9572354 }, - -- - EmoteLoop = true, - EmoteMoving = true, - }}, - ["protest2"] = { "rcmnigel1d", "base_club_shoulder", "Protest 2 - Pride ", AnimationOptions = { - Prop = "pride_sign_01", - PropBone = 57005, - PropPlacement = { 0.1820, 0.2400, 0.0600, -69.3774235, 5.9142048, -13.9572354 }, - -- - EmoteLoop = true, - EmoteMoving = true, - }}, - ["binoculars"] = { "amb@world_human_binoculars@male@idle_b", "idle_f", "Binoculars", AnimationOptions = { - Prop = "prop_binoc_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - -- - EmoteLoop = true, - EmoteMoving = true, - }}, - ["binoculars2"] = { "amb@world_human_binoculars@male@idle_a", "idle_c", "Binoculars 2", AnimationOptions = { - Prop = "prop_binoc_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tennisplay"] = { "move_weapon@jerrycan@generic", "idle", "Tennis Play", AnimationOptions = { - Prop = "prop_tennis_bag_01", - PropBone = 57005, - PropPlacement = { 0.27, 0.0, 0.0, 91.0, 0.0, -82.9999951 }, - SecondProp = 'prop_tennis_rack_01', - SecondPropBone = 60309, - SecondPropPlacement = { 0.0800, 0.0300, 0.0, -130.2907295, 3.8782324, 6.588224 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["weights"] = { "amb@world_human_muscle_free_weights@male@barbell@base", "base", "Weights", AnimationOptions = { - Prop = "prop_curl_bar_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["weights2"] = { "amb@world_human_muscle_free_weights@male@barbell@idle_a", "idle_d", "Weights 2", AnimationOptions = { - Prop = "prop_curl_bar_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["fuel"] = { "weapons@misc@jerrycan@", "fire", "Fuel", AnimationOptions = { - Prop = "w_am_jerrycan", - PropBone = 57005, - PropPlacement = { 0.1800, 0.1300, -0.2400, -165.8693883, -11.2122753, -32.9453021 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["fuel2"] = { "weapons@misc@jerrycan@franklin", "idle", "Fuel 2 (Carry)", AnimationOptions = { - Prop = "w_am_jerrycan", - PropBone = 28422, - PropPlacement = { 0.26, 0.050, 0.0300, 80.00, 180.000, 79.99 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["hitchhike"] = { "random@hitch_lift", "idle_f", "Hitchhike", AnimationOptions = { - Prop = "w_am_jerrycan", - PropBone = 18905, - PropPlacement = { 0.32, -0.0100, 0.0, -162.423, 74.83, 58.79 }, - SecondProp = 'prop_michael_backpack', - SecondPropBone = 40269, - SecondPropPlacement = { -0.07, -0.21, -0.11, -144.93, 117.358, -6.16 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign"] = { "rcmnigel1d", "base_club_shoulder", "Steal Stop Sign ", AnimationOptions = { - Prop = "prop_sign_road_01a", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign2"] = { "rcmnigel1d", "base_club_shoulder", "Steal Yield Sign ", AnimationOptions = { - Prop = "prop_sign_road_02a", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign3"] = { "rcmnigel1d", "base_club_shoulder", "Steal Hospital Sign ", AnimationOptions = { - Prop = "prop_sign_road_03d", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign4"] = { "rcmnigel1d", "base_club_shoulder", "Steal Parking Sign ", AnimationOptions = { - Prop = "prop_sign_road_04a", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign5"] = { "rcmnigel1d", "base_club_shoulder", "Steal Parking Sign 2 ", AnimationOptions = { - Prop = "prop_sign_road_04w", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign6"] = { "rcmnigel1d", "base_club_shoulder", "Steal Pedestrian Sign ", AnimationOptions = { - Prop = "prop_sign_road_05a", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign7"] = { "rcmnigel1d", "base_club_shoulder", "Steal Street Sign ", AnimationOptions = { - Prop = "prop_sign_road_05t", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign8"] = { "rcmnigel1d", "base_club_shoulder", "Steal Freeway Sign ", AnimationOptions = { - Prop = "prop_sign_freewayentrance", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["ssign9"] = { "rcmnigel1d", "base_club_shoulder", "Steal Stop Sign Snow ", AnimationOptions = { - Prop = "prop_snow_sign_road_01a", - PropBone = 60309, - PropPlacement = { -0.1390, -0.9870, 0.4300, -67.3315314, 145.0627869, -4.4318885 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["conehead"] = { "move_m@drunk@verydrunk_idles@", "fidget_07", "Cone Head ", AnimationOptions = { - Prop = "prop_roadcone02b", - PropBone = 31086, - PropPlacement = { 0.0500, 0.0200, -0.000, 30.0000004, 90.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtraya"] = { "anim@heists@box_carry@", "idle", "Food Tray", AnimationOptions = { - Prop = "prop_food_bs_tray_03", - PropBone = 28422, - PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayb"] = { "anim@heists@box_carry@", "idle", "Food Tray B", AnimationOptions = { - Prop = "prop_food_bs_tray_02", - PropBone = 28422, - PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayc"] = { "anim@heists@box_carry@", "idle", "Food Tray C", AnimationOptions = { - Prop = "prop_food_cb_tray_02", - PropBone = 28422, - PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayd"] = { "anim@heists@box_carry@", "idle", "Food Tray D", AnimationOptions = { - Prop = "prop_food_tray_02", - PropBone = 28422, - PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtraye"] = { "anim@heists@box_carry@", "idle", "Food Tray E", AnimationOptions = { - Prop = "prop_food_tray_03", - PropBone = 28422, - PropPlacement = { 0.0100, -0.0400, -0.1390, 20.0000007, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayf"] = { "anim@heists@box_carry@", "idle", "Food Tray F", AnimationOptions = { - Prop = "prop_food_bs_tray_02", - PropBone = 57005, - PropPlacement = { 0.2500, 0.1000, 0.0700, -110.5483936, 73.3529273, -16.338362 }, - SecondProp = 'prop_food_bs_tray_03', - SecondPropBone = 18905, - SecondPropPlacement = { 0.2200, 0.1300, -0.1000, -127.7725487, 110.2074758, -3.5886263 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayg"] = { "anim@heists@box_carry@", "idle", "Food Tray G", AnimationOptions = { - Prop = "prop_food_cb_tray_02", - PropBone = 57005, - PropPlacement = { 0.2500, 0.1000, 0.0700, -110.5483936, 73.3529273, -16.338362 }, - SecondProp = 'prop_food_cb_tray_02', - SecondPropBone = 18905, - SecondPropPlacement = { 0.2200, 0.1300, -0.1000, -127.7725487, 110.2074758, -3.5886263 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayh"] = { "anim@heists@box_carry@", "idle", "Food Tray H", AnimationOptions = { - Prop = "prop_food_tray_02", - PropBone = 57005, - PropPlacement = { 0.2500, 0.1000, 0.0700, -110.5483936, 73.3529273, -16.338362 }, - SecondProp = 'prop_food_tray_03', - SecondPropBone = 18905, - SecondPropPlacement = { 0.2200, 0.1300, -0.1000, -127.7725487, 110.2074758, -3.5886263 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayi"] = { "anim@heists@box_carry@", "idle", "Food Tray I", AnimationOptions = { - Prop = "prop_food_tray_02", - PropBone = 57005, - PropPlacement = { 0.2500, 0.1000, 0.0700, -110.5483936, 73.3529273, -16.338362 }, - SecondProp = 'prop_food_tray_02', - SecondPropBone = 18905, - SecondPropPlacement = { 0.2200, 0.1300, -0.1000, -127.7725487, 110.2074758, -3.5886263 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayj"] = { "anim@move_f@waitress", "idle", "Food Tray J", AnimationOptions = { - Prop = "prop_food_bs_tray_02", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayk"] = { "anim@move_f@waitress", "idle", "Food Tray K", AnimationOptions = { - Prop = "prop_food_bs_tray_02", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayl"] = { "anim@move_f@waitress", "idle", "Food Tray L", AnimationOptions = { - Prop = "prop_food_bs_tray_03", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtraym"] = { "anim@move_f@waitress", "idle", "Food Tray M", AnimationOptions = { - Prop = "prop_food_cb_tray_02", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayn"] = { "anim@move_f@waitress", "idle", "Food Tray N", AnimationOptions = { - Prop = "prop_food_tray_02", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["foodtrayo"] = { "anim@move_f@waitress", "idle", "Food Tray O", AnimationOptions = { - Prop = "prop_food_tray_02", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["carrypizza"] = { "anim@heists@box_carry@", "idle", "Carry Pizza Box", AnimationOptions = { - Prop = "prop_pizza_box_02", - PropBone = 28422, - PropPlacement = { 0.0100, -0.1000, -0.1590, 20.0000007, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["carryfoodbag"] = { "move_weapon@jerrycan@generic", "idle", "Carry Food Bag", AnimationOptions = { - Prop = "prop_food_bs_bag_01", - PropBone = 57005, - PropPlacement = { 0.3300, 0.0, -0.0300, 0.0017365, -79.9999997, 110.0651988 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["carryfoodbag2"] = { "move_weapon@jerrycan@generic", "idle", "Carry Food Bag 2", AnimationOptions = { - Prop = "prop_food_cb_bag_01", - PropBone = 57005, - PropPlacement = { 0.3800, 0.0, -0.0300, 0.0017365, -79.9999997, 110.0651988 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["carryfoodbag3"] = { "move_weapon@jerrycan@generic", "idle", "Carry Food Bag 3", AnimationOptions = { - Prop = "prop_food_bag1", - PropBone = 57005, - PropPlacement = { 0.3800, 0.0, -0.0300, 0.0017365, -79.9999997, 110.0651988 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tag"] = { "anim@scripted@freemode@postertag@graffiti_spray@male@", "shake_can_male", "Tagging Shake Can Male", AnimationOptions = { - Prop = "prop_cs_spray_can", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tag2"] = { "anim@scripted@freemode@postertag@graffiti_spray@heeled@", "shake_can_female", "Tagging Shake Can Female", AnimationOptions = { - Prop = "prop_cs_spray_can", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tag3"] = { "anim@scripted@freemode@postertag@graffiti_spray@male@", "spray_can_var_01_male", "Tagging Male 1", AnimationOptions = { - Prop = "prop_cs_spray_can", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tag4"] = { "anim@scripted@freemode@postertag@graffiti_spray@male@", "spray_can_var_02_male", "Tagging Male 2", AnimationOptions = { - Prop = "prop_cs_spray_can", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tag5"] = { "anim@scripted@freemode@postertag@graffiti_spray@heeled@", "spray_can_var_01_female", "Tagging Female 1", AnimationOptions = { - Prop = "prop_cs_spray_can", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["tag6"] = { "anim@scripted@freemode@postertag@graffiti_spray@heeled@", "spray_can_var_02_female", "Tagging Female 2", AnimationOptions = { - Prop = "prop_cs_spray_can", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0700, 0.0017365, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["beans"] = { "anim@scripted@island@special_peds@pavel@hs4_pavel_ig5_caviar_p1", "base_idle", "Beans", AnimationOptions = { - Prop = "h4_prop_h4_caviar_tin_01a", - PropBone = 60309, - PropPlacement = { 0.0, 0.0300, 0.0100, 0.0, 0.0, 0.0 }, - SecondProp = 'h4_prop_h4_caviar_spoon_01a', - SecondPropBone = 28422, - SecondPropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["newscam"] = { "missfinale_c2mcs_1", "fin_c2_mcs_1_camman", "News Camera", AnimationOptions = { - Prop = "prop_v_cam_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0300, 0.0100, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["newsmic"] = { "anim@heists@humane_labs@finale@keycards", "ped_a_enter_loop", "News Microphone", AnimationOptions = { - Prop = "p_ing_microphonel_01", - PropBone = 4154, - PropPlacement = { -0.00, -0.0200, 0.1100, 0.00, 0.0, 60.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["newsbmic"] = { "missfra1", "mcs2_crew_idle_m_boom", "News Boom Microphone", AnimationOptions = { - Prop = "prop_v_bmike_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["leafblower"] = { "amb@world_human_gardener_leaf_blower@base", "base", "Leaf Blower", AnimationOptions = { - Prop = "prop_leaf_blower_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["bbqf"] = { "amb@prop_human_bbq@male@idle_a", "idle_b", "BBQ (Female)", AnimationOptions = { - Prop = "prop_fish_slice_01", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pump"] = { "missfbi4prepp1", "idle", "Pumpkin", AnimationOptions = { - Prop = "prop_veg_crop_03_pump", - PropBone = 28422, - PropPlacement = { 0.0200, 0.0600, -0.1200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["pump2"] = { "anim@heists@box_carry@", "idle", "Pumpkin 2", AnimationOptions = { - Prop = "prop_veg_crop_03_pump", - PropBone = 28422, - PropPlacement = { 0.0100, -0.16000, -0.2100, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["mop"] = { "missfbi4prepp1", "idle", "Mop", AnimationOptions = { - Prop = "prop_cs_mop_s", - PropBone = 28422, - PropPlacement = { -0.0200, -0.0600, -0.2000, -13.377, 10.3568, 17.9681 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["mop2"] = { "move_mop", "idle_scrub_small_player", "Mop 2", AnimationOptions = { - Prop = "prop_cs_mop_s", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.1200, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["jerkf"] = { "switch@trevor@jerking_off", "trev_jerking_off_loop", "JerkOff! Female", AnimationOptions = { - Prop = 'prop_cs_dildo_01', - PropBone = 28422, - PropPlacement = { 0.09, 0.05, -0.03, 90.0, 80.0, 30.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["rake"] = { "anim@amb@drug_field_workers@rake@male_a@base", "base", "Rake", AnimationOptions = { - Prop = "prop_tool_rake", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["rake2"] = { "anim@amb@drug_field_workers@rake@male_a@idles", "idle_b", "Rake 2", AnimationOptions = { - Prop = "prop_tool_rake", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["rake3"] = { "anim@amb@drug_field_workers@rake@male_b@base", "base", "Rake 3", AnimationOptions = { - Prop = "prop_tool_rake", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["rake4"] = { "anim@amb@drug_field_workers@rake@male_b@idles", "idle_d", "Rake 4", AnimationOptions = { - Prop = "prop_tool_rake", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["broom"] = { "anim@amb@drug_field_workers@rake@male_a@base", "base", "Broom", AnimationOptions = { - Prop = "prop_tool_broom", - PropBone = 28422, - PropPlacement = { -0.0100, 0.0400, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["broom2"] = { "anim@amb@drug_field_workers@rake@male_a@idles", "idle_b", "Broom 2", AnimationOptions = { - Prop = "prop_tool_broom", - PropBone = 28422, - PropPlacement = { -0.0100, 0.0400, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["broom3"] = { "anim@amb@drug_field_workers@rake@male_b@base", "base", "Broom 3", AnimationOptions = { - Prop = "prop_tool_broom", - PropBone = 28422, - PropPlacement = { -0.0100, 0.0400, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["broom4"] = { "anim@amb@drug_field_workers@rake@male_b@idles", "idle_d", "Broom 4", AnimationOptions = { - Prop = "prop_tool_broom", - PropBone = 28422, - PropPlacement = { -0.0100, 0.0400, -0.0300, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - }}, - ["champw"] = { "anim@move_f@waitress", "idle", "Champagne Waiter", AnimationOptions = { - Prop = "vw_prop_vw_tray_01a", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0100, 0.0, 0.0, 0.0 }, - SecondProp = 'prop_champ_cool', - SecondPropBone = 28422, - SecondPropPlacement = { 0.0, 0.0, 0.010, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["shit"] = { "missfbi3ig_0", "shit_loop_trev", "Shit", AnimationOptions = { - Prop = "prop_toilet_roll_01", - PropBone = 28422, - PropPlacement = { 0.0700, -0.02000, -0.2100, 0, 0, 0.0, 0.0 }, - SecondProp = 'prop_big_shit_01', - SecondPropBone = 0, - SecondPropPlacement = { -0.0100, 0.0600, -0.1550, 101.3015175, 7.3512213, -29.2665794 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["selfie"] = { "anim@mp_player_intuppertake_selfie", "idle_a", "Selfie", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 60309, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["selfie2"] = { "cellphone@self@franklin@", "peace", "Selfie 2", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["selfie3"] = { "cellphone@self@franklin@", "west_coast", "Selfie 3 - West Side", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["selfie4"] = { "cellphone@self@trevor@", "aggressive_finger", "Selfie 4 - Finger", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["selfie5"] = { "cellphone@self@trevor@", "proud_finger", "Selfie 5 - Finger 2", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["selfie6"] = { "cellphone@self@trevor@", "throat_slit", "Selfie 6 - Throat Slit", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["selfie7"] = { "cellphone@self@franklin@", "chest_bump", "Selfie 7 - Chest Bump", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["sittv"] = { "anim@heists@heist_safehouse_intro@variations@male@tv", "tv_part_one_loop", "Sit TV", AnimationOptions = { - Prop = "v_res_tre_remote", - PropBone = 57005, - PropPlacement = { 0.0990, 0.0170, -0.0300, -64.760, -109.544, 18.717 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["dig"] = { "random@burial", "a_burial", "Dig", AnimationOptions = { - Prop = "prop_tool_shovel", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.24, 0, 0, 0.0, 0.0 }, - SecondProp = 'prop_ld_shovel_dirt', - SecondPropBone = 28422, - SecondPropPlacement = { 0.0, 0.0, 0.24, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["bongos"] = { "amb@world_human_musician@bongos@male@base", "base", "Bongo Drums", AnimationOptions = { - Prop = "prop_bongos_01", - PropBone = 60309, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["medbag"] = { "move_weapon@jerrycan@generic", "idle", "Medic Bag", AnimationOptions = { - Prop = "xm_prop_x17_bag_med_01a", - PropBone = 57005, - PropPlacement = { 0.3900, -0.0600, -0.0600, -100.00, -180.00, -78.00 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["dufbag"] = { "move_weapon@jerrycan@generic", "idle", "Duffel Bag", AnimationOptions = { - Prop = "bkr_prop_duffel_bag_01a", - PropBone = 28422, - PropPlacement = { 0.2600, 0.0400, 0.00, 90.00, 0.00, -78.99 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["shopbag"] = { "move_weapon@jerrycan@generic", "idle", "Shopping Bag", AnimationOptions = { - Prop = "vw_prop_casino_shopping_bag_01a", - PropBone = 28422, - PropPlacement = { 0.24, 0.03, -0.04, 0.00, -90.00, 10.00 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["shopbag2"] = { "move_weapon@jerrycan@generic", "idle", "Shopping Bag 2", AnimationOptions = { - Prop = "prop_shopping_bags02", - PropBone = 28422, - PropPlacement = { 0.05, 0.02, 0.00, 178.80, 91.19, 9.97 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["shopbag3"] = { "move_weapon@jerrycan@generic", "idle", "Shopping Bag 3", AnimationOptions = { - Prop = "prop_cs_shopping_bag", - PropBone = 28422, - PropPlacement = { 0.24, 0.03, -0.04, 0.00, -90.00, 10.00 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["idcard"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 1", AnimationOptions = { - Prop = "prop_franklin_dl", - PropBone = 57005, - PropPlacement = { 0.1000, 0.0200, -0.0300, -90.000, 170.000, 78.999 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["idcardb"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 2 - FIB", AnimationOptions = { - Prop = "prop_fib_badge", - PropBone = 28422, - PropPlacement = { 0.0600, 0.0210, -0.0400, -90.00, -180.00, 78.999 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["idcardc"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 3", AnimationOptions = { - Prop = "prop_michael_sec_id", - PropBone = 28422, - PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["idcardd"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 4", AnimationOptions = { - Prop = "prop_trev_sec_id", - PropBone = 28422, - PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["idcarde"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 5", AnimationOptions = { - Prop = "p_ld_id_card_002", - PropBone = 28422, - PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["idcardf"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 6", AnimationOptions = { - Prop = "prop_cs_r_business_card", - PropBone = 28422, - PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["idcardg"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 7", AnimationOptions = { - Prop = "prop_michael_sec_id", - PropBone = 28422, - PropPlacement = { 0.1000, 0.0200, -0.0300, -90.00, -180.00, 78.999 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["idcardh"] = { "paper_1_rcm_alt1-8", "player_one_dual-8", "ID Card 8", AnimationOptions = { - Prop = "prop_cop_badge", - PropBone = 28422, - PropPlacement = { 0.0800, -0.0120, -0.0600, -90.00, 180.00, 69.99 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["sms"] = { "cellphone@", "cellphone_text_read_base", "SMS", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["sms2"] = { "cellphone@female", "cellphone_text_read_base", "SMS 2", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.00, 0.00, 0.0301, 0.000, 00.00, 00.00 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["sms3"] = { "cellphone@female", "cellphone_email_read_base", "SMS 3", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { -0.0190, -0.0240, 0.0300, 18.99, -72.07, 6.39 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["sms4"] = { "cellphone@female", "cellphone_text_read_base_cover_low", "SMS 4", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { -0.0190, -0.0250, 0.0400, 19.17, -78.50, 14.97 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["sms5"] = { "amb@code_human_wander_texting_fat@male@base", "static", "SMS 6", AnimationOptions = { - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { -0.0200, -0.0100, 0.00, 2.309, 88.845, 29.979 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["tire"] = { "anim@heists@box_carry@", "idle", "Tire", AnimationOptions = { - Prop = "prop_wheel_tyre", - PropBone = 60309, - PropPlacement = { -0.05, 0.16, 0.32, -130.0, -55.0, 150.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["register"] = { "anim@heists@box_carry@", "idle", "Register", AnimationOptions = { - Prop = "v_ret_gc_cashreg", - PropBone = 60309, - PropPlacement = { 0.138, 0.2, 0.2, -50.0, 290.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["weedbrick"] = { "impexp_int-0", "mp_m_waremech_01_dual-0", "Weed Brick", AnimationOptions = { - Prop = "prop_weed_block_01", - PropBone = 60309, - PropPlacement = { 0.1, 0.1, 0.05, 0.0, -90.0, 90.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["weedbrick2"] = { "anim@heists@box_carry@", "idle", "Weed Brick BIG", AnimationOptions = { - Prop = "bkr_prop_weed_bigbag_01a", - PropBone = 60309, - PropPlacement = { 0.158, -0.05, 0.23, -50.0, 290.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["potplant"] = { "anim@heists@box_carry@", "idle", "Pot Plant (Small)", AnimationOptions = { - Prop = "bkr_prop_weed_01_small_01c", - PropBone = 60309, - PropPlacement = { 0.138, -0.05, 0.23, -50.0, 290.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["potplant2"] = { "anim@heists@box_carry@", "idle", "Pot Plant (Medium)", AnimationOptions = { - Prop = "bkr_prop_weed_01_small_01b", - PropBone = 60309, - PropPlacement = { 0.138, -0.05, 0.23, -50.0, 290.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["potplant3"] = { "anim@heists@box_carry@", "idle", "Pot Plant (Large)", AnimationOptions = { - Prop = "bkr_prop_weed_lrg_01b", - PropBone = 60309, - PropPlacement = { 0.138, -0.05, 0.23, -50.0, 290.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["lawnchair"] = { "timetable@ron@ig_5_p3", "ig_5_p3_base", "Lawnchair", AnimationOptions = { - Prop = "prop_skid_chair_02", - PropBone = 0, - PropPlacement = { 0.025, -0.2, -0.1, 45.0, -5.0, 180.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["lawnchair2"] = { "timetable@reunited@ig_10", "base_amanda", "Lawnchair 2", AnimationOptions = { - Prop = "prop_skid_chair_02", - PropBone = 0, - PropPlacement = { 0.025, -0.15, -0.1, 45.0, 5.0, 180.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["lawnchair3"] = { "timetable@ron@ig_3_couch", "base", "Lawnchair 3", AnimationOptions = { - Prop = "prop_skid_chair_02", - PropBone = 0, - PropPlacement = { -0.05, 0.0, -0.2, 5.0, 0.0, 180.0 }, - EmoteLoop = true, - EmoteMoving = false, - }}, - ["rose2"] = { "missheistdocksprep1hold_cellphone", "static", "Rose 2 (Male)", AnimationOptions = { - Prop = "prop_single_rose", - PropBone = 31086, - PropPlacement = { -0.0140, 0.1030, 0.0620, -2.932, 4.564, 39.910 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["rose3"] = { "missheistdocksprep1hold_cellphone", "static", "Rose 3 (Female)", AnimationOptions = { - Prop = "prop_single_rose", - PropBone = 31086, - PropPlacement = { -0.0140, 0.1070, 0.0720, 0.00, 0.00, 2.99 }, - EmoteLoop = false, - EmoteMoving = true, - }}, - ["cbbox"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box", AnimationOptions = { - Prop = "v_ret_ml_beerben1", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cbbox2"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 2", AnimationOptions = { - Prop = "v_ret_ml_beerbla1", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cbbox3"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 3", AnimationOptions = { - Prop = "v_ret_ml_beerjak1", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cbbox4"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 4", AnimationOptions = { - Prop = "v_ret_ml_beerlog1", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cbbox5"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 5", AnimationOptions = { - Prop = "v_ret_ml_beerpis1", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cbbox6"] = { "anim@heists@box_carry@", "idle", "Carry Beer Box 6", AnimationOptions = { - Prop = "prop_beer_box_01", - PropBone = 28422, - PropPlacement = { 0.0200, -0.0600, -0.1200, -180.00, -180.00, 1.99 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["gbin"] = { "anim@heists@box_carry@", "idle", "Garbage Bin", AnimationOptions = { - Prop = "prop_bin_08open", - PropBone = 28422, - PropPlacement = { 0.00, -0.420, -1.290, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["gbin2"] = { "anim@heists@box_carry@", "idle", "Garbage Bin 2", AnimationOptions = { - Prop = "prop_cs_bin_01", - PropBone = 28422, - PropPlacement = { 0.00, -0.420, -1.290, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["gbin3"] = { "anim@heists@box_carry@", "idle", "Garbage Bin 3", AnimationOptions = { - Prop = "prop_cs_bin_03", - PropBone = 28422, - PropPlacement = { 0.00, -0.420, -1.290, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["gbin4"] = { "anim@heists@box_carry@", "idle", "Garbage Bin 4", AnimationOptions = { - Prop = "prop_bin_08a", - PropBone = 28422, - PropPlacement = { 0.00, -0.420, -1.290, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["gbin5"] = { "anim@heists@box_carry@", "idle", "Garbage Bin 5", AnimationOptions = { - Prop = "prop_bin_07d", - PropBone = 28422, - PropPlacement = { -0.0100, -0.2200, -0.8600, 0.0, 0.0, 0.0 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag - Rainbow', AnimationOptions = { - Prop = 'prideflag1', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag2'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 2 - LGBTQ', AnimationOptions = { - Prop = 'prideflag2', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag3'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 3 - Bisexual ', AnimationOptions = { - Prop = 'prideflag3', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag4'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 4 - Lesbian ', AnimationOptions = { - Prop = 'prideflag4', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag5'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 5 - Pansexual ', AnimationOptions = { - Prop = 'prideflag5', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag6'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 6 - Transexual ', AnimationOptions = { - Prop = 'prideflag6', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag7'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 7 - Non Binary ', AnimationOptions = { - Prop = 'prideflag7', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag8'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 8 - Asexual ', AnimationOptions = { - Prop = 'prideflag8', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['pflag9'] = { 'rcmnigel1d', 'base_club_shoulder', 'Pride Flag 9 - Straight Ally ', AnimationOptions = { - Prop = 'prideflag9', - PropBone = 18905, - PropPlacement = { 0.0800, -0.2090, 0.0900, -82.6677, -141.2988, 12.3308 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['old'] = { 'missbigscore2aleadinout@bs_2a_2b_int', 'lester_base_idle', 'Old Man Walking Stick', AnimationOptions = { - Prop = 'prop_cs_walking_stick', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - SecondProp = 'prop_phone_ing', - SecondPropBone = 60309, - SecondPropPlacement = { 0.0800, 0.0300, 0.0100, -107.9999, 0.0, -4.6003 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['digiscan'] = { 'weapons@misc@digi_scanner', 'aim_med_loop', 'Digiscan 1 ', AnimationOptions = { - Prop = 'w_am_digiscanner', - PropBone = 28422, - PropPlacement = { 0.0480, 0.0780, 0.0040, -81.6893, 2.5616, -15.7909 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['digiscan2'] = { 'weapons@misc@digi_scanner', 'aim_low_loop', 'Digiscan 2 ', AnimationOptions = { - Prop = 'w_am_digiscanner', - PropBone = 28422, - PropPlacement = { 0.0480, 0.0780, 0.0040, -81.6893, 2.5616, -15.7909 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ['digiscan3'] = { 'weapons@misc@digi_scanner', 'aim_high_loop', 'Digiscan 3 ', AnimationOptions = { - Prop = 'w_am_digiscanner', - PropBone = 28422, - PropPlacement = { 0.0480, 0.0780, 0.0040, -81.6893, 2.5616, -15.7909 }, - EmoteLoop = true, - EmoteMoving = true, - }}, - ["cop4"] = { "amb@world_human_car_park_attendant@male@base", "base", "Cop 4", AnimationOptions = { - Prop = "prop_parking_wand_01", - PropBone = 57005, - PropPlacement = { 0.12, 0.05, 0.0, 80.0, -20.0, 180.0 }, - EmoteLoop = true, - EmoteMoving = true, - } }, - ["leanphone"] = { "amb@world_human_leaning@male@wall@back@mobile@base", "base", "Leaning With Phone", AnimationOptions = { - EmoteMoving = false, - EmoteLoop = true, - Prop = "prop_phone_ing", - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - } }, - ["piss"] = { "misscarsteal2peeing", "peeing_loop", "Piss", AnimationOptions = { - EmoteStuck = true, - PtfxAsset = "scr_amb_chop", - PtfxName = "ent_anim_dog_peeing", - PtfxNoProp = true, - PtfxPlacement = { -0.05, 0.3, 0.0, 0.0, 90.0, 90.0, 1.0 }, - PtfxInfo = Config.Languages[Config.MenuLanguage]['pee'], - PtfxWait = 3000, - } }, - ["hump"] = { "timetable@trevor@skull_loving_bear", "skull_loving_bear", "Hump (Bear)", AnimationOptions = { - Prop = 'prop_mr_raspberry_01', - PropBone = 28422, - PropPlacement = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, - EmoteMoving = false, - EmoteLoop = true, - } }, -} diff --git a/resources/dpemotes-master/client/Emote.lua b/resources/dpemotes-master/client/Emote.lua deleted file mode 100644 index cc0164c18..000000000 --- a/resources/dpemotes-master/client/Emote.lua +++ /dev/null @@ -1,451 +0,0 @@ --- You probably shouldnt touch these. -local AnimationDuration = -1 -local ChosenAnimation = "" -local ChosenDict = "" -local IsInAnimation = false -local MostRecentChosenAnimation = "" -local MostRecentChosenDict = "" -local MovementType = 0 -local PlayerGender = "male" -local PlayerHasProp = false -local PlayerProps = {} -local PlayerParticles = {} -local SecondPropEmote = false -local lang = Config.MenuLanguage -local PtfxNotif = false -local PtfxPrompt = false -local PtfxWait = 500 -local PtfxNoProp = false - -Citizen.CreateThread(function() - while true do - if IsPedShooting(PlayerPedId()) and IsInAnimation then - EmoteCancel() - end - - if PtfxPrompt then - if not PtfxNotif then - SimpleNotify(PtfxInfo) - PtfxNotif = true - end - if IsControlPressed(0, 47) then - PtfxStart() - Wait(PtfxWait) - PtfxStop() - end - end - - if Config.EnableXtoCancel then if IsControlPressed(0, 73) then EmoteCancel() end end - Citizen.Wait(1) - end -end) - -if Config.MenuKeybindEnabled then - RegisterKeyMapping("emotemenu", "Open dpemotes menu", "keyboard", Config.MenuKeybind) -end - ------------------------------------------------------------------------------------------------------ --- Commands / Events -------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------ - -Citizen.CreateThread(function() - TriggerEvent('chat:addSuggestion', '/e', 'Play an emote', { { name = "emotename", help = "dance, camera, sit or any valid emote." } }) - TriggerEvent('chat:addSuggestion', '/emote', 'Play an emote', { { name = "emotename", help = "dance, camera, sit or any valid emote." } }) - if Config.SqlKeybinding then - TriggerEvent('chat:addSuggestion', '/emotebind', 'Bind an emote', { { name = "key", help = "num4, num5, num6, num7. num8, num9. Numpad 4-9!" }, { name = "emotename", help = "dance, camera, sit or any valid emote." } }) - TriggerEvent('chat:addSuggestion', '/emotebinds', 'Check your currently bound emotes.') - end - TriggerEvent('chat:addSuggestion', '/emotemenu', 'Open dpemotes menu (F5) by default.') - TriggerEvent('chat:addSuggestion', '/emotes', 'List available emotes.') - TriggerEvent('chat:addSuggestion', '/walk', 'Set your walkingstyle.', { { name = "style", help = "/walks for a list of valid styles" } }) - TriggerEvent('chat:addSuggestion', '/walks', 'List available walking styles.') -end) - -RegisterCommand('e', function(source, args, raw) EmoteCommandStart(source, args, raw) end) -RegisterCommand('emote', function(source, args, raw) EmoteCommandStart(source, args, raw) end) -if Config.SqlKeybinding then - RegisterCommand('emotebind', function(source, args, raw) EmoteBindStart(source, args, raw) end) - RegisterCommand('emotebinds', function(source, args, raw) EmoteBindsStart(source, args, raw) end) -end -RegisterCommand('emotemenu', function(source, args, raw) OpenEmoteMenu() end) -RegisterCommand('emotes', function(source, args, raw) EmotesOnCommand() end) -RegisterCommand('walk', function(source, args, raw) WalkCommandStart(source, args, raw) end) -RegisterCommand('walks', function(source, args, raw) WalksOnCommand() end) - -AddEventHandler('onResourceStop', function(resource) - if resource == GetCurrentResourceName() then - local ply = PlayerPedId() - DestroyAllProps() - ClearPedTasksImmediately(ply) - DetachEntity(ply, true, false) - ResetPedMovementClipset(ply) - end -end) - ------------------------------------------------------------------------------------------------------ ------- Functions and stuff -------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------ - -function EmoteCancel() - local ply = PlayerPedId() - if ChosenDict == "MaleScenario" and IsInAnimation then - ClearPedTasksImmediately(ply) - IsInAnimation = false - DebugPrint("Forced scenario exit") - elseif ChosenDict == "Scenario" and IsInAnimation then - ClearPedTasksImmediately(ply) - IsInAnimation = false - DebugPrint("Forced scenario exit") - end - - PtfxNotif = false - PtfxPrompt = false - - if IsInAnimation then - PtfxStop() - ClearPedTasks(ply) - DetachEntity(ply, true, false) - CancelSharedEmote(ply) - DestroyAllProps() - IsInAnimation = false - end -end - -function EmoteChatMessage(args) - if args == display then - TriggerEvent("chatMessage", "^5Help^0", { 0, 0, 0 }, string.format("")) - else - TriggerEvent("chatMessage", "^5Help^0", { 0, 0, 0 }, string.format("" .. args .. "")) - end -end - -function DebugPrint(args) - if Config.DebugDisplay then - print(args) - end -end - -function PtfxStart() - if PtfxNoProp then - PtfxAt = PlayerPedId() - else - PtfxAt = prop - end - UseParticleFxAssetNextCall(PtfxAsset) - Ptfx = StartNetworkedParticleFxLoopedOnEntityBone(PtfxName, PtfxAt, Ptfx1, Ptfx2, Ptfx3, Ptfx4, Ptfx5, Ptfx6, GetEntityBoneIndexByName(PtfxName, "VFX"), 1065353216, 0, 0, 0, 1065353216, 1065353216, 1065353216, 0) - SetParticleFxLoopedColour(Ptfx, 1.0, 1.0, 1.0) - table.insert(PlayerParticles, Ptfx) -end - -function PtfxStop() - for a, b in pairs(PlayerParticles) do - DebugPrint("Stopped PTFX: " .. b) - StopParticleFxLooped(b, false) - table.remove(PlayerParticles, a) - end -end - -function EmotesOnCommand(source, args, raw) - local EmotesCommand = "" - for a in pairsByKeys(DP.Emotes) do - EmotesCommand = EmotesCommand .. "" .. a .. ", " - end - EmoteChatMessage(EmotesCommand) - EmoteChatMessage(Config.Languages[lang]['emotemenucmd']) -end - -function pairsByKeys(t, f) - local a = {} - for n in pairs(t) do - table.insert(a, n) - end - table.sort(a, f) - local i = 0 -- iterator variable - local iter = function() -- iterator function - i = i + 1 - if a[i] == nil then - return nil - else - return a[i], t[a[i]] - end - end - return iter -end - -function EmoteMenuStart(args, hard) - local name = args - local etype = hard - - if etype == "dances" then - if DP.Dances[name] ~= nil then - if OnEmotePlay(DP.Dances[name]) then end - end - elseif etype == "animals" then - if DP.AnimalEmotes[name] ~= nil then - if OnEmotePlay(DP.AnimalEmotes[name]) then end - end - elseif etype == "props" then - if DP.PropEmotes[name] ~= nil then - if OnEmotePlay(DP.PropEmotes[name]) then end - end - elseif etype == "emotes" then - if DP.Emotes[name] ~= nil then - if OnEmotePlay(DP.Emotes[name]) then end - else - if name ~= "🕺 Dance Emotes" then end - end - elseif etype == "expression" then - if DP.Expressions[name] ~= nil then - if OnEmotePlay(DP.Expressions[name]) then end - end - end -end - -function EmoteCommandStart(source, args, raw) - if #args > 0 then - local name = string.lower(args[1]) - if name == "c" then - if IsInAnimation then - EmoteCancel() - else - EmoteChatMessage(Config.Languages[lang]['nocancel']) - end - return - elseif name == "help" then - EmotesOnCommand() - return - end - - if DP.Emotes[name] ~= nil then - if OnEmotePlay(DP.Emotes[name]) then end - return - elseif DP.Dances[name] ~= nil then - if OnEmotePlay(DP.Dances[name]) then end - return - elseif DP.AnimalEmotes[name] ~= nil then - if OnEmotePlay(DP.AnimalEmotes[name]) then end - return - elseif DP.PropEmotes[name] ~= nil then - if OnEmotePlay(DP.PropEmotes[name]) then end - return - else - EmoteChatMessage("'" .. name .. "' " .. Config.Languages[lang]['notvalidemote'] .. "") - end - end -end - -function LoadAnim(dict) - if not DoesAnimDictExist(dict) then - return false - end - - while not HasAnimDictLoaded(dict) do - RequestAnimDict(dict) - Wait(10) - end - - return true -end - -function LoadPropDict(model) - while not HasModelLoaded(GetHashKey(model)) do - RequestModel(GetHashKey(model)) - Wait(10) - end -end - -function PtfxThis(asset) - while not HasNamedPtfxAssetLoaded(asset) do - RequestNamedPtfxAsset(asset) - Wait(10) - end - UseParticleFxAssetNextCall(asset) -end - -function DestroyAllProps() - for _, v in pairs(PlayerProps) do - DeleteEntity(v) - end - PlayerHasProp = false - DebugPrint("Destroyed Props") -end - -function AddPropToPlayer(prop1, bone, off1, off2, off3, rot1, rot2, rot3) - local Player = PlayerPedId() - local x, y, z = table.unpack(GetEntityCoords(Player)) - - if not HasModelLoaded(prop1) then - LoadPropDict(prop1) - end - - prop = CreateObject(GetHashKey(prop1), x, y, z + 0.2, true, true, true) - AttachEntityToEntity(prop, Player, GetPedBoneIndex(Player, bone), off1, off2, off3, rot1, rot2, rot3, true, true, false, true, 1, true) - table.insert(PlayerProps, prop) - PlayerHasProp = true - SetModelAsNoLongerNeeded(prop1) -end - ------------------------------------------------------------------------------------------------------ --- V -- This could be a whole lot better, i tried messing around with "IsPedMale(ped)" --- V -- But i never really figured it out, if anyone has a better way of gender checking let me know. --- V -- Since this way doesnt work for ped models. --- V -- in most cases its better to replace the scenario with an animation bundled with prop instead. ------------------------------------------------------------------------------------------------------ - -function CheckGender() - local hashSkinMale = GetHashKey("mp_m_freemode_01") - local hashSkinFemale = GetHashKey("mp_f_freemode_01") - - if GetEntityModel(PlayerPedId()) == hashSkinMale then - PlayerGender = "male" - elseif GetEntityModel(PlayerPedId()) == hashSkinFemale then - PlayerGender = "female" - end - DebugPrint("Set gender as = (" .. PlayerGender .. ")") -end - ------------------------------------------------------------------------------------------------------ ------- This is the major function for playing emotes! ----------------------------------------------- ------------------------------------------------------------------------------------------------------ - -function OnEmotePlay(EmoteName) - InVehicle = IsPedInAnyVehicle(PlayerPedId(), true) - if not Config.AllowedInCars and InVehicle == 1 then - return - end - - if not DoesEntityExist(PlayerPedId()) then - return false - end - - if Config.DisarmPlayer then - if IsPedArmed(PlayerPedId(), 7) then - SetCurrentPedWeapon(PlayerPedId(), GetHashKey('WEAPON_UNARMED'), true) - end - end - - ChosenDict, ChosenAnimation, ename = table.unpack(EmoteName) - AnimationDuration = -1 - - if PlayerHasProp then - DestroyAllProps() - end - - if ChosenDict == "Expression" then - SetFacialIdleAnimOverride(PlayerPedId(), ChosenAnimation, 0) - return - end - - if ChosenDict == "MaleScenario" or "Scenario" then - CheckGender() - if ChosenDict == "MaleScenario" then if InVehicle then return end - if PlayerGender == "male" then - ClearPedTasks(PlayerPedId()) - TaskStartScenarioInPlace(PlayerPedId(), ChosenAnimation, 0, true) - DebugPrint("Playing scenario = (" .. ChosenAnimation .. ")") - IsInAnimation = true - else - EmoteChatMessage(Config.Languages[lang]['maleonly']) - end - return - elseif ChosenDict == "ScenarioObject" then if InVehicle then return end - BehindPlayer = GetOffsetFromEntityInWorldCoords(PlayerPedId(), 0.0, 0 - 0.5, -0.5); - ClearPedTasks(PlayerPedId()) - TaskStartScenarioAtPosition(PlayerPedId(), ChosenAnimation, BehindPlayer['x'], BehindPlayer['y'], BehindPlayer['z'], GetEntityHeading(PlayerPedId()), 0, 1, false) - DebugPrint("Playing scenario = (" .. ChosenAnimation .. ")") - IsInAnimation = true - return - elseif ChosenDict == "Scenario" then if InVehicle then return end - ClearPedTasks(PlayerPedId()) - TaskStartScenarioInPlace(PlayerPedId(), ChosenAnimation, 0, true) - DebugPrint("Playing scenario = (" .. ChosenAnimation .. ")") - IsInAnimation = true - return - end - end - - if not LoadAnim(ChosenDict) then - EmoteChatMessage("'" .. ename .. "' " .. Config.Languages[lang]['notvalidemote'] .. "") - return - end - - if EmoteName.AnimationOptions then - if EmoteName.AnimationOptions.EmoteLoop then - MovementType = 1 - if EmoteName.AnimationOptions.EmoteMoving then - MovementType = 51 - end - - elseif EmoteName.AnimationOptions.EmoteMoving then - MovementType = 51 - elseif EmoteName.AnimationOptions.EmoteMoving == false then - MovementType = 0 - elseif EmoteName.AnimationOptions.EmoteStuck then - MovementType = 50 - end - - else - MovementType = 0 - end - - if InVehicle == 1 then - MovementType = 51 - end - - if EmoteName.AnimationOptions then - if EmoteName.AnimationOptions.EmoteDuration == nil then - EmoteName.AnimationOptions.EmoteDuration = -1 - AttachWait = 0 - else - AnimationDuration = EmoteName.AnimationOptions.EmoteDuration - AttachWait = EmoteName.AnimationOptions.EmoteDuration - end - - if EmoteName.AnimationOptions.PtfxAsset then - PtfxAsset = EmoteName.AnimationOptions.PtfxAsset - PtfxName = EmoteName.AnimationOptions.PtfxName - if EmoteName.AnimationOptions.PtfxNoProp then - PtfxNoProp = EmoteName.AnimationOptions.PtfxNoProp - else - PtfxNoProp = false - end - Ptfx1, Ptfx2, Ptfx3, Ptfx4, Ptfx5, Ptfx6, PtfxScale = table.unpack(EmoteName.AnimationOptions.PtfxPlacement) - PtfxInfo = EmoteName.AnimationOptions.PtfxInfo - PtfxWait = EmoteName.AnimationOptions.PtfxWait - PtfxNotif = false - PtfxPrompt = true - PtfxThis(PtfxAsset) - else - DebugPrint("Ptfx = none") - PtfxPrompt = false - end - end - - TaskPlayAnim(PlayerPedId(), ChosenDict, ChosenAnimation, 2.0, 2.0, AnimationDuration, MovementType, 0, false, false, false) - RemoveAnimDict(ChosenDict) - IsInAnimation = true - MostRecentDict = ChosenDict - MostRecentAnimation = ChosenAnimation - - if EmoteName.AnimationOptions then - if EmoteName.AnimationOptions.Prop then - PropName = EmoteName.AnimationOptions.Prop - PropBone = EmoteName.AnimationOptions.PropBone - PropPl1, PropPl2, PropPl3, PropPl4, PropPl5, PropPl6 = table.unpack(EmoteName.AnimationOptions.PropPlacement) - if EmoteName.AnimationOptions.SecondProp then - SecondPropName = EmoteName.AnimationOptions.SecondProp - SecondPropBone = EmoteName.AnimationOptions.SecondPropBone - SecondPropPl1, SecondPropPl2, SecondPropPl3, SecondPropPl4, SecondPropPl5, SecondPropPl6 = table.unpack(EmoteName.AnimationOptions.SecondPropPlacement) - SecondPropEmote = true - else - SecondPropEmote = false - end - Wait(AttachWait) - AddPropToPlayer(PropName, PropBone, PropPl1, PropPl2, PropPl3, PropPl4, PropPl5, PropPl6) - if SecondPropEmote then - AddPropToPlayer(SecondPropName, SecondPropBone, SecondPropPl1, SecondPropPl2, SecondPropPl3, SecondPropPl4, SecondPropPl5, SecondPropPl6) - end - end - end - return true -end diff --git a/resources/dpemotes-master/client/EmoteMenu.lua b/resources/dpemotes-master/client/EmoteMenu.lua deleted file mode 100644 index f405f46e4..000000000 --- a/resources/dpemotes-master/client/EmoteMenu.lua +++ /dev/null @@ -1,327 +0,0 @@ -TriggerServerEvent("dp:CheckVersion") - -rightPosition = { x = 1450, y = 100 } -leftPosition = { x = 0, y = 100 } -menuPosition = { x = 0, y = 200 } - -if Config.MenuPosition then - if Config.MenuPosition == "left" then - menuPosition = leftPosition - elseif Config.MenuPosition == "right" then - menuPosition = rightPosition - end -end - -if Config.CustomMenuEnabled then - local RuntimeTXD = CreateRuntimeTxd('Custom_Menu_Head') - local Object = CreateDui(Config.MenuImage, 512, 128) - _G.Object = Object - local TextureThing = GetDuiHandle(Object) - local Texture = CreateRuntimeTextureFromDuiHandle(RuntimeTXD, 'Custom_Menu_Head', TextureThing) - Menuthing = "Custom_Menu_Head" -else - Menuthing = "shopui_title_sm_hangar" -end - -_menuPool = NativeUI.CreatePool() -mainMenu = NativeUI.CreateMenu("Tay's Emote Menu", "", menuPosition["x"], menuPosition["y"], Menuthing, Menuthing) -_menuPool:Add(mainMenu) - -function ShowNotification(text) - SetNotificationTextEntry("STRING") - AddTextComponentString(text) - DrawNotification(false, false) -end - -local EmoteTable = {} -local FavEmoteTable = {} -local KeyEmoteTable = {} -local DanceTable = {} -local AnimalTable = {} -local PropETable = {} -local WalkTable = {} -local FaceTable = {} -local ShareTable = {} -local FavoriteEmote = "" - -if Config.FavKeybindEnabled then - Citizen.CreateThread(function() - while true do - if IsControlPressed(0, Config.FavKeybind) then - if not IsPedSittingInAnyVehicle(PlayerPedId()) then - if FavoriteEmote ~= "" then - EmoteCommandStart(nil, { FavoriteEmote, 0 }) - Wait(3000) - end - end - end - Citizen.Wait(1) - end - end) -end - -lang = Config.MenuLanguage - -function AddEmoteMenu(menu) - local submenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['emotes'], "", "", Menuthing, Menuthing) - local dancemenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['danceemotes'], "", "", Menuthing, Menuthing) - local animalmenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['animalemotes'], "", "", Menuthing, Menuthing) - local propmenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['propemotes'], "", "", Menuthing, Menuthing) - table.insert(EmoteTable, Config.Languages[lang]['danceemotes']) - table.insert(EmoteTable, Config.Languages[lang]['danceemotes']) - table.insert(EmoteTable, Config.Languages[lang]['animalemotes']) - - if Config.SharedEmotesEnabled then - sharemenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['shareemotes'], Config.Languages[lang]['shareemotesinfo'], "", Menuthing, Menuthing) - shareddancemenu = _menuPool:AddSubMenu(sharemenu, Config.Languages[lang]['sharedanceemotes'], "", "", Menuthing, Menuthing) - table.insert(ShareTable, 'none') - table.insert(EmoteTable, Config.Languages[lang]['shareemotes']) - end - - if not Config.SqlKeybinding then - unbind2item = NativeUI.CreateItem(Config.Languages[lang]['rfavorite'], Config.Languages[lang]['rfavorite']) - unbinditem = NativeUI.CreateItem(Config.Languages[lang]['prop2info'], "") - favmenu = _menuPool:AddSubMenu(submenu, Config.Languages[lang]['favoriteemotes'], Config.Languages[lang]['favoriteinfo'], "", Menuthing, Menuthing) - favmenu:AddItem(unbinditem) - favmenu:AddItem(unbind2item) - table.insert(FavEmoteTable, Config.Languages[lang]['rfavorite']) - table.insert(FavEmoteTable, Config.Languages[lang]['rfavorite']) - table.insert(EmoteTable, Config.Languages[lang]['favoriteemotes']) - else - table.insert(EmoteTable, "keybinds") - keyinfo = NativeUI.CreateItem(Config.Languages[lang]['keybinds'], Config.Languages[lang]['keybindsinfo'] .. " /emotebind [~y~num4-9~w~] [~g~emotename~w~]") - submenu:AddItem(keyinfo) - end - - for a, b in pairsByKeys(DP.Emotes) do - x, y, z = table.unpack(b) - emoteitem = NativeUI.CreateItem(z, "/e (" .. a .. ")") - submenu:AddItem(emoteitem) - table.insert(EmoteTable, a) - if not Config.SqlKeybinding then - favemoteitem = NativeUI.CreateItem(z, Config.Languages[lang]['set'] .. z .. Config.Languages[lang]['setboundemote']) - favmenu:AddItem(favemoteitem) - table.insert(FavEmoteTable, a) - end - end - - for a, b in pairsByKeys(DP.Dances) do - x, y, z = table.unpack(b) - danceitem = NativeUI.CreateItem(z, "/e (" .. a .. ")") - sharedanceitem = NativeUI.CreateItem(z, "") - dancemenu:AddItem(danceitem) - if Config.SharedEmotesEnabled then - shareddancemenu:AddItem(sharedanceitem) - end - table.insert(DanceTable, a) - end - - for a, b in pairsByKeys(DP.AnimalEmotes) do - x, y, z = table.unpack(b) - animalitem = NativeUI.CreateItem(z, "/e (" .. a .. ")") - animalmenu:AddItem(animalitem) - table.insert(AnimalTable, a) - end - - if Config.SharedEmotesEnabled then - for a, b in pairsByKeys(DP.Shared) do - x, y, z, otheremotename = table.unpack(b) - if otheremotename == nil then - shareitem = NativeUI.CreateItem(z, "/nearby (~g~" .. a .. "~w~)") - else - shareitem = NativeUI.CreateItem(z, "/nearby (~g~" .. a .. "~w~) " .. Config.Languages[lang]['makenearby'] .. " (~y~" .. otheremotename .. "~w~)") - end - sharemenu:AddItem(shareitem) - table.insert(ShareTable, a) - end - end - - for a, b in pairsByKeys(DP.PropEmotes) do - x, y, z = table.unpack(b) - propitem = NativeUI.CreateItem(z, "/e (" .. a .. ")") - propmenu:AddItem(propitem) - table.insert(PropETable, a) - if not Config.SqlKeybinding then - propfavitem = NativeUI.CreateItem(z, Config.Languages[lang]['set'] .. z .. Config.Languages[lang]['setboundemote']) - favmenu:AddItem(propfavitem) - table.insert(FavEmoteTable, a) - end - end - - if not Config.SqlKeybinding then - favmenu.OnItemSelect = function(sender, item, index) - if FavEmoteTable[index] == Config.Languages[lang]['rfavorite'] then - FavoriteEmote = "" - ShowNotification(Config.Languages[lang]['rfavorite'], 2000) - return - end - if Config.FavKeybindEnabled then - FavoriteEmote = FavEmoteTable[index] - ShowNotification("~o~" .. firstToUpper(FavoriteEmote) .. Config.Languages[lang]['newsetemote']) - end - end - end - - dancemenu.OnItemSelect = function(sender, item, index) - EmoteMenuStart(DanceTable[index], "dances") - end - - animalmenu.OnItemSelect = function(sender, item, index) - EmoteMenuStart(AnimalTable[index], "animals") - end - - if Config.SharedEmotesEnabled then - sharemenu.OnItemSelect = function(sender, item, index) - if ShareTable[index] ~= 'none' then - target, distance = GetClosestPlayer() - if (distance ~= -1 and distance < 3) then - _, _, rename = table.unpack(DP.Shared[ShareTable[index]]) - TriggerServerEvent("ServerEmoteRequest", GetPlayerServerId(target), ShareTable[index]) - SimpleNotify(Config.Languages[lang]['sentrequestto'] .. GetPlayerName(target)) - else - SimpleNotify(Config.Languages[lang]['nobodyclose']) - end - end - end - - shareddancemenu.OnItemSelect = function(sender, item, index) - target, distance = GetClosestPlayer() - if (distance ~= -1 and distance < 3) then - _, _, rename = table.unpack(DP.Dances[DanceTable[index]]) - TriggerServerEvent("ServerEmoteRequest", GetPlayerServerId(target), DanceTable[index], 'Dances') - SimpleNotify(Config.Languages[lang]['sentrequestto'] .. GetPlayerName(target)) - else - SimpleNotify(Config.Languages[lang]['nobodyclose']) - end - end - end - - propmenu.OnItemSelect = function(sender, item, index) - EmoteMenuStart(PropETable[index], "props") - end - - submenu.OnItemSelect = function(sender, item, index) - if EmoteTable[index] ~= Config.Languages[lang]['favoriteemotes'] then - EmoteMenuStart(EmoteTable[index], "emotes") - end - end -end - -function AddCancelEmote(menu) - local newitem = NativeUI.CreateItem(Config.Languages[lang]['cancelemote'], Config.Languages[lang]['cancelemoteinfo']) - menu:AddItem(newitem) - menu.OnItemSelect = function(sender, item, checked_) - if item == newitem then - EmoteCancel() - DestroyAllProps() - end - end -end - -function AddWalkMenu(menu) - local submenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['walkingstyles'], "", "", Menuthing, Menuthing) - - walkreset = NativeUI.CreateItem(Config.Languages[lang]['normalreset'], Config.Languages[lang]['resetdef']) - submenu:AddItem(walkreset) - table.insert(WalkTable, Config.Languages[lang]['resetdef']) - - WalkInjured = NativeUI.CreateItem("Injured", "") - submenu:AddItem(WalkInjured) - table.insert(WalkTable, "move_m@injured") - - for a, b in pairsByKeys(DP.Walks) do - x = table.unpack(b) - walkitem = NativeUI.CreateItem(a, "") - submenu:AddItem(walkitem) - table.insert(WalkTable, x) - end - - submenu.OnItemSelect = function(sender, item, index) - if item ~= walkreset then - WalkMenuStart(WalkTable[index]) - else - ResetPedMovementClipset(PlayerPedId()) - end - end -end - -function AddFaceMenu(menu) - local submenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['moods'], "", "", Menuthing, Menuthing) - - facereset = NativeUI.CreateItem(Config.Languages[lang]['normalreset'], Config.Languages[lang]['resetdef']) - submenu:AddItem(facereset) - table.insert(FaceTable, "") - - for a, b in pairsByKeys(DP.Expressions) do - x, y, z = table.unpack(b) - faceitem = NativeUI.CreateItem(a, "") - submenu:AddItem(faceitem) - table.insert(FaceTable, a) - end - - submenu.OnItemSelect = function(sender, item, index) - if item ~= facereset then - EmoteMenuStart(FaceTable[index], "expression") - else - ClearFacialIdleAnimOverride(PlayerPedId()) - end - end -end - -function AddInfoMenu(menu) - if not UpdateAvailable then - infomenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['infoupdate'], "Huge Thank You ❤️", "", Menuthing, Menuthing) - else - infomenu = _menuPool:AddSubMenu(menu, Config.Languages[lang]['infoupdateav'], Config.Languages[lang]['infoupdateavtext'], "", Menuthing, Menuthing) - end - contact = NativeUI.CreateItem(Config.Languages[lang]['suggestions'], Config.Languages[lang]['suggestionsinfo']) - u170 = NativeUI.CreateItem("Thanks", "DullPear for the original dpemotes ❤️") - u165 = NativeUI.CreateItem("Thanks", "AvaN0x for assisting with the formatting of the code.") - u160 = NativeUI.CreateItem("Thanks", "SMGMissy for the custom pride flags 🏳️‍🌈.") - u151 = NativeUI.CreateItem("Thanks", "Kibook for the addition of Animal Emotes 🐩.") - u150 = NativeUI.CreateItem("Thanks", "To you, the community for helping me keep this menu alive ❤️.") - infomenu:AddItem(contact) - infomenu:AddItem(u170) - infomenu:AddItem(u165) - infomenu:AddItem(u160) - infomenu:AddItem(u151) - infomenu:AddItem(u150) -end - -function OpenEmoteMenu() - mainMenu:Visible(not mainMenu:Visible()) -end - -function firstToUpper(str) - return (str:gsub("^%l", string.upper)) -end - -AddEmoteMenu(mainMenu) -AddCancelEmote(mainMenu) -if Config.WalkingStylesEnabled then - AddWalkMenu(mainMenu) -end -if Config.ExpressionsEnabled then - AddFaceMenu(mainMenu) -end - -_menuPool:RefreshIndex() - -Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - _menuPool:ProcessMenus() - end -end) - -RegisterNetEvent("dp:Update") -AddEventHandler("dp:Update", function(state) - UpdateAvailable = state - AddInfoMenu(mainMenu) - _menuPool:RefreshIndex() -end) - -RegisterNetEvent("dp:RecieveMenu") -- For opening the emote menu from another resource. -AddEventHandler("dp:RecieveMenu", function() - OpenEmoteMenu() -end) diff --git a/resources/dpemotes-master/client/Keybinds.lua b/resources/dpemotes-master/client/Keybinds.lua deleted file mode 100644 index 2994d60d5..000000000 --- a/resources/dpemotes-master/client/Keybinds.lua +++ /dev/null @@ -1,126 +0,0 @@ -if Config.SqlKeybinding then - local emob1 = "" - local emob2 = "" - local emob3 = "" - local emob4 = "" - local emob5 = "" - local emob6 = "" - local keyb1 = "" - local keyb2 = "" - local keyb3 = "" - local keyb4 = "" - local keyb5 = "" - local keyb6 = "" - local Initialized = false - - ----------------------------------------------------------------------------------------------------- - -- Commands / Events -------------------------------------------------------------------------------- - ----------------------------------------------------------------------------------------------------- - - Citizen.CreateThread(function() - while true do - if NetworkIsPlayerActive(PlayerId()) and not Initialized then - if not Initialized then - TriggerServerEvent("dp:ServerKeybindExist") - Wait(5000) - end - end - - if not IsPedSittingInAnyVehicle(PlayerPedId()) then - for k, v in pairs(Config.KeybindKeys) do - if IsControlJustReleased(0, v) then - if k == keyb1 then if emob1 ~= "" then EmoteCommandStart(nil, { emob1, 0 }) end end - if k == keyb2 then if emob2 ~= "" then EmoteCommandStart(nil, { emob2, 0 }) end end - if k == keyb3 then if emob3 ~= "" then EmoteCommandStart(nil, { emob3, 0 }) end end - if k == keyb4 then if emob4 ~= "" then EmoteCommandStart(nil, { emob4, 0 }) end end - if k == keyb5 then if emob5 ~= "" then EmoteCommandStart(nil, { emob5, 0 }) end end - if k == keyb6 then if emob6 ~= "" then EmoteCommandStart(nil, { emob6, 0 }) end end - Wait(1000) - end - end - end - Citizen.Wait(1) - end - end) - - RegisterNetEvent("dp:ClientKeybindExist") - AddEventHandler("dp:ClientKeybindExist", function(does) - if does then - TriggerServerEvent("dp:ServerKeybindGrab") - else - TriggerServerEvent("dp:ServerKeybindCreate") - end - end) - - RegisterNetEvent("dp:ClientKeybindGet") - AddEventHandler("dp:ClientKeybindGet", function(k1, e1, k2, e2, k3, e3, k4, e4, k5, e5, k6, e6) - keyb1 = k1 - emob1 = e1 - keyb2 = k2 - emob2 = e2 - keyb3 = k3 - emob3 = e3 - keyb4 = k4 - emob4 = e4 - keyb5 = k5 - emob5 = e5 - keyb6 = k6 - emob6 = e6 - Initialized = true - end) - - RegisterNetEvent("dp:ClientKeybindGetOne") - AddEventHandler("dp:ClientKeybindGetOne", function(key, e) - SimpleNotify(Config.Languages[lang]['bound'] .. "~y~" .. e .. "~w~ " .. Config.Languages[lang]['to'] .. " ~g~" .. firstToUpper(key) .. "~w~") - if key == "num4" then emob1 = e - keyb1 = "num4" - elseif key == "num5" then emob2 = e - keyb2 = "num5" - elseif key == "num6" then emob3 = e - keyb3 = "num6" - elseif key == "num7" then emob4 = e - keyb4 = "num7" - elseif key == "num8" then emob5 = e - keyb5 = "num8" - elseif key == "num9" then emob6 = e - keyb6 = "num9" - end - end) - - ----------------------------------------------------------------------------------------------------- - ------ Functions and stuff -------------------------------------------------------------------------- - ----------------------------------------------------------------------------------------------------- - - function EmoteBindsStart() - EmoteChatMessage(Config.Languages[lang]['currentlyboundemotes'] .. "\n" - .. firstToUpper(keyb1) .. " = '^2" .. emob1 .. "^7'\n" - .. firstToUpper(keyb2) .. " = '^2" .. emob2 .. "^7'\n" - .. firstToUpper(keyb3) .. " = '^2" .. emob3 .. "^7'\n" - .. firstToUpper(keyb4) .. " = '^2" .. emob4 .. "^7'\n" - .. firstToUpper(keyb5) .. " = '^2" .. emob5 .. "^7'\n" - .. firstToUpper(keyb6) .. " = '^2" .. emob6 .. "^7'\n") - end - - function EmoteBindStart(source, args, raw) - if #args > 0 then - local key = string.lower(args[1]) - local emote = string.lower(args[2]) - if (Config.KeybindKeys[key]) ~= nil then - if DP.Emotes[emote] ~= nil then - TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) - elseif DP.Dances[emote] ~= nil then - TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) - elseif DP.PropEmotes[emote] ~= nil then - TriggerServerEvent("dp:ServerKeybindUpdate", key, emote) - else - EmoteChatMessage("'" .. emote .. "' " .. Config.Languages[lang]['notvalidemote'] .. "") - end - else - EmoteChatMessage("'" .. key .. "' " .. Config.Languages[lang]['notvalidkey']) - end - else - print("invalid") - end - end - -end diff --git a/resources/dpemotes-master/client/Ragdoll.lua b/resources/dpemotes-master/client/Ragdoll.lua deleted file mode 100644 index 8352435f2..000000000 --- a/resources/dpemotes-master/client/Ragdoll.lua +++ /dev/null @@ -1,24 +0,0 @@ -local isInRagdoll = false - -Citizen.CreateThread(function() - while true do - Citizen.Wait(10) - if isInRagdoll then - SetPedToRagdoll(PlayerPedId(), 1000, 1000, 0, 0, 0, 0) - end - end -end) - -Citizen.CreateThread(function() - while true do - Citizen.Wait(0) - if IsControlJustPressed(2, Config.RagdollKeybind) and Config.RagdollEnabled and IsPedOnFoot(PlayerPedId()) then - if isInRagdoll then - isInRagdoll = false - else - isInRagdoll = true - Wait(500) - end - end - end -end) diff --git a/resources/dpemotes-master/client/Syncing.lua b/resources/dpemotes-master/client/Syncing.lua deleted file mode 100644 index f925acd96..000000000 --- a/resources/dpemotes-master/client/Syncing.lua +++ /dev/null @@ -1,236 +0,0 @@ -local isRequestAnim = false -local requestedemote = '' -local targetPlayerId = '' - --- Some of the work here was done by Super.Cool.Ninja / rubbertoe98 --- https://forum.fivem.net/t/release-nanimstarget/876709 - ------------------------------------------------------------------------------------------------------ --- Commands / Events -------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------ -if Config.SharedEmotesEnabled then - RegisterCommand('nearby', function(source, args, raw) - if #args > 0 then - local emotename = string.lower(args[1]) - target, distance = GetClosestPlayer() - if (distance ~= -1 and distance < 3) then - if DP.Shared[emotename] ~= nil then - dict, anim, ename = table.unpack(DP.Shared[emotename]) - TriggerServerEvent("ServerEmoteRequest", GetPlayerServerId(target), emotename) - SimpleNotify(Config.Languages[lang]['sentrequestto'] .. - GetPlayerName(target) .. " ~w~(~g~" .. ename .. "~w~)") - else - EmoteChatMessage("'" .. emotename .. "' " .. Config.Languages[lang]['notvalidsharedemote'] .. "") - end - else - SimpleNotify(Config.Languages[lang]['nobodyclose']) - end - else - MearbysOnCommand() - end - end, false) -end - -RegisterNetEvent("SyncPlayEmote") -AddEventHandler("SyncPlayEmote", function(emote, player) - EmoteCancel() - Wait(300) - targetPlayerId = player - -- wait a little to make sure animation shows up right on both clients after canceling any previous emote - if DP.Shared[emote] ~= nil then - if DP.Shared[emote].AnimationOptions and DP.Shared[emote].AnimationOptions.Attachto then - -- We do not want to attach the player if the target emote already is attached to player - -- this would cause issue where both player would be attached to each other and fall under the map - local targetEmote = DP.Shared[emote][4] - if not targetEmote or not DP.Shared[targetEmote] or not DP.Shared[targetEmote].AnimationOptions or - not DP.Shared[targetEmote].AnimationOptions.Attachto then - local plyServerId = GetPlayerFromServerId(player) - local pedInFront = GetPlayerPed(plyServerId ~= 0 and plyServerId or GetClosestPlayer()) - local bone = DP.Shared[emote].AnimationOptions.bone or 11816 -- SKEL_Pelvis - local xPos = DP.Shared[emote].AnimationOptions.xPos or 0.0 - local yPos = DP.Shared[emote].AnimationOptions.yPos or 0.0 - local zPos = DP.Shared[emote].AnimationOptions.zPos or 0.0 - local xRot = DP.Shared[emote].AnimationOptions.xRot or 0.0 - local yRot = DP.Shared[emote].AnimationOptions.yRot or 0.0 - local zRot = DP.Shared[emote].AnimationOptions.zRot or 0.0 - AttachEntityToEntity(PlayerPedId(), pedInFront, bone, xPos, yPos, zPos, xRot, yRot, zRot, false, false, - false, false, 2, false) - end - end - - if OnEmotePlay(DP.Shared[emote]) then end - return - elseif DP.Dances[emote] ~= nil then - if OnEmotePlay(DP.Dances[emote]) then end - return - end -end) - -RegisterNetEvent("SyncPlayEmoteSource") -AddEventHandler("SyncPlayEmoteSource", function(emote, player) - -- Thx to Poggu for this part! - local ply = PlayerPedId() - local plyServerId = GetPlayerFromServerId(player) - local pedInFront = GetPlayerPed(plyServerId ~= 0 and plyServerId or GetClosestPlayer()) - - local heading = GetEntityHeading(pedInFront) - local coords = GetOffsetFromEntityInWorldCoords(pedInFront, 0.0, 1.0, 0.0) - if (DP.Shared[emote] and DP.Shared[emote].AnimationOptions) then - local SyncOffsetFront = DP.Shared[emote].AnimationOptions.SyncOffsetFront - if SyncOffsetFront then - coords = GetOffsetFromEntityInWorldCoords(pedInFront, 0.0, SyncOffsetFront, 0.0) - end - - -- There is a priority to the source attached, if it is not set, it will use the target - if (DP.Shared[emote].AnimationOptions.Attachto) then - local bone = DP.Shared[emote].AnimationOptions.bone or 11816 -- SKEL_Pelvis - local xPos = DP.Shared[emote].AnimationOptions.xPos or 0.0 - local yPos = DP.Shared[emote].AnimationOptions.yPos or 0.0 - local zPos = DP.Shared[emote].AnimationOptions.zPos or 0.0 - local xRot = DP.Shared[emote].AnimationOptions.xRot or 0.0 - local yRot = DP.Shared[emote].AnimationOptions.yRot or 0.0 - local zRot = DP.Shared[emote].AnimationOptions.zRot or 0.0 - AttachEntityToEntity(ply, pedInFront, bone, xPos, yPos, zPos, xRot, yRot, zRot, false, false, false, false, - 2, false) - end - end - SetEntityHeading(ply, heading - 180.1) - SetEntityCoordsNoOffset(ply, coords.x, coords.y, coords.z, 0) - EmoteCancel() - Wait(300) - targetPlayerId = player - if DP.Shared[emote] ~= nil then - if OnEmotePlay(DP.Shared[emote]) then end - return - elseif DP.Dances[emote] ~= nil then - if OnEmotePlay(DP.Dances[emote]) then end - return - end -end) - -RegisterNetEvent("SyncCancelEmote") -AddEventHandler("SyncCancelEmote", function(player) - if targetPlayerId and targetPlayerId == player then - targetPlayerId = nil - EmoteCancel() - end -end) - -function CancelSharedEmote(ply) - if targetPlayerId then - TriggerServerEvent("ServerEmoteCancel", targetPlayerId) - targetPlayerId = nil - end -end - -RegisterNetEvent("ClientEmoteRequestReceive") -AddEventHandler("ClientEmoteRequestReceive", function(emotename, etype) - isRequestAnim = true - requestedemote = emotename - - if etype == 'Dances' then - _, _, remote = table.unpack(DP.Dances[requestedemote]) - else - _, _, remote = table.unpack(DP.Shared[requestedemote]) - end - - PlaySound(-1, "NAV", "HUD_AMMO_SHOP_SOUNDSET", 0, 0, 1) - SimpleNotify(Config.Languages[lang]['doyouwanna'] .. remote .. "~w~)") -end) - -Citizen.CreateThread(function() - while true do - Citizen.Wait(5) - if IsControlJustPressed(1, 246) and isRequestAnim then - target, distance = GetClosestPlayer() - if (distance ~= -1 and distance < 3) then - if DP.Shared[requestedemote] ~= nil then - _, _, _, otheremote = table.unpack(DP.Shared[requestedemote]) - elseif DP.Dances[requestedemote] ~= nil then - _, _, _, otheremote = table.unpack(DP.Dances[requestedemote]) - end - if otheremote == nil then otheremote = requestedemote end - TriggerServerEvent("ServerValidEmote", GetPlayerServerId(target), requestedemote, otheremote) - isRequestAnim = false - else - SimpleNotify(Config.Languages[lang]['nobodyclose']) - end - elseif IsControlJustPressed(1, 182) and isRequestAnim then - SimpleNotify(Config.Languages[lang]['refuseemote']) - isRequestAnim = false - end - end -end) - ------------------------------------------------------------------------------------------------------ ------- Functions and stuff -------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------ - -function GetPlayerFromPed(ped) - for _, player in ipairs(GetActivePlayers()) do - if GetPlayerPed(player) == ped then - return player - end - end - return -1 -end - -function GetPedInFront() - local player = PlayerId() - local plyPed = GetPlayerPed(player) - local plyPos = GetEntityCoords(plyPed, false) - local plyOffset = GetOffsetFromEntityInWorldCoords(plyPed, 0.0, 1.3, 0.0) - local rayHandle = StartShapeTestCapsule(plyPos.x, plyPos.y, plyPos.z, plyOffset.x, plyOffset.y, plyOffset.z, 10.0, 12 - , plyPed, 7) - local _, _, _, _, ped2 = GetShapeTestResult(rayHandle) - return ped2 -end - -function MearbysOnCommand(source, args, raw) - local NearbysCommand = "" - for a in pairsByKeys(DP.Shared) do - NearbysCommand = NearbysCommand .. "" .. a .. ", " - end - EmoteChatMessage(NearbysCommand) - EmoteChatMessage(Config.Languages[lang]['emotemenucmd']) -end - -function SimpleNotify(message) - SetNotificationTextEntry("STRING") - AddTextComponentString(message) - DrawNotification(0, 1) -end - -function GetClosestPlayer() - local players = GetPlayers() - local closestDistance = -1 - local closestPlayer = -1 - local ply = PlayerPedId() - local plyCoords = GetEntityCoords(ply, 0) - - for index, value in ipairs(players) do - local target = GetPlayerPed(value) - if (target ~= ply) then - local targetCoords = GetEntityCoords(GetPlayerPed(value), 0) - local distance = GetDistanceBetweenCoords(targetCoords["x"], targetCoords["y"], targetCoords["z"], - plyCoords["x"], plyCoords["y"], plyCoords["z"], true) - if (closestDistance == -1 or closestDistance > distance) then - closestPlayer = value - closestDistance = distance - end - end - end - return closestPlayer, closestDistance -end - -function GetPlayers() - local players = {} - - for i = 0, 255 do - if NetworkIsPlayerActive(i) then - table.insert(players, i) - end - end - - return players -end diff --git a/resources/dpemotes-master/client/Walk.lua b/resources/dpemotes-master/client/Walk.lua deleted file mode 100644 index e5f1e6750..000000000 --- a/resources/dpemotes-master/client/Walk.lua +++ /dev/null @@ -1,41 +0,0 @@ -function WalkMenuStart(name) - RequestWalking(name) - SetPedMovementClipset(PlayerPedId(), name, 0.2) - RemoveAnimSet(name) -end - -function RequestWalking(set) - RequestAnimSet(set) - while not HasAnimSetLoaded(set) do - Citizen.Wait(1) - end -end - -function WalksOnCommand(source, args, raw) - local WalksCommand = "" - for a in pairsByKeys(DP.Walks) do - WalksCommand = WalksCommand .. "" .. string.lower(a) .. ", " - end - EmoteChatMessage(WalksCommand) - EmoteChatMessage("To reset do /walk reset") -end - -function WalkCommandStart(source, args, raw) - local name = firstToUpper(args[1]) - - if name == "Reset" then - ResetPedMovementClipset(PlayerPedId()) - return - end - - if tableHasKey(DP.Walks, name) then - local name2 = table.unpack(DP.Walks[name]) - WalkMenuStart(name2) - else - EmoteChatMessage("'" .. name .. "' is not a valid walk") - end -end - -function tableHasKey(table, key) - return table[key] ~= nil -end diff --git a/resources/dpemotes-master/config.lua b/resources/dpemotes-master/config.lua deleted file mode 100644 index 7cb88fd94..000000000 --- a/resources/dpemotes-master/config.lua +++ /dev/null @@ -1,589 +0,0 @@ -Config = { - -- Change the language of the menu here!. - -- Note fr and de are google translated, if you would like to help out with translations, feel free to send me an 'issue' on Github. - -- Thank you to those who provided translations. - -- - - MenuLanguage = 'en', - -- Set this to true to enable some extra prints - DebugDisplay = false, - -- Set this to false if you have something else on X, and then just use /e c to cancel emotes. - EnableXtoCancel = true, - -- Set this to true if you want to disarm the player when they play an emote. - DisarmPlayer = false, - -- Set this if you really wanna disable emotes in cars, as of 1.7.2 they only play the upper body part if in vehicle - AllowedInCars = true, - -- You can disable the menu here / change the keybind. It is currently set to F3 - MenuKeybindEnabled = true, - MenuKeybind = 'DELETE', -- Get the button string here https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ - -- You can disable the Favorite emote keybinding here. - FavKeybindEnabled = true, - FavKeybind = 256, -- Get the button number here https://docs.fivem.net/game-references/controls/ - -- You can change the header image for the menu here - -- Use a 512 x 128 image! - -- Note this might cause an issue of the image getting stuck on peoples screens - CustomMenuEnabled = true, - MenuImage = "https://i.imgur.com/IRzHWb3.png", ----[Custom banner imgur URLs go here ]--- - -- You can change the menu image by pasting a link above. It must be the same width and length - -- - -- You can change the menu position here - MenuPosition = "right", -- (left, right) - -- You can enable or disable the Ragdoll keybinding here. - RagdollEnabled = false, - RagdollKeybind = 303, -- Get the button number here https://docs.fivem.net/game-references/controls/ - -- You can disable the Facial Expressions menu here. - ExpressionsEnabled = true, - -- You can disable the Walking Styles menu here. - WalkingStylesEnabled = true, - -- You can disable the Shared Emotes here. - SharedEmotesEnabled = true, - CheckForUpdates = true, - -- If you have the SQL imported enable this to turn on keybinding. - SqlKeybinding = false, -} - -Config.KeybindKeys = { - ['num4'] = 108, - ['num5'] = 110, - ['num6'] = 109, - ['num7'] = 117, - ['num8'] = 111, - ['num9'] = 118 -} - -Config.Languages = { - ['en'] = { -- English 🇬🇧 - ['emotes'] = 'Emotes 🎬', - ['danceemotes'] = "🕺 Dance Emotes", - ['animalemotes'] = "🐩 Animal Emotes", - ['propemotes'] = "📦 Prop Emotes", - ['favoriteemotes'] = "🌟 Favorite", - ['favoriteinfo'] = "Select an emote here to set it as your favorite.", - ['rfavorite'] = "Reset favorite", - ['prop2info'] = "❓ Prop Emotes can be located at the end", - ['set'] = "Set (", - ['setboundemote'] = ") to be your bound emote?", - ['newsetemote'] = "~w~ is now your bound emote, press ~g~CapsLock~w~ to use it.", - ['cancelemote'] = "Cancel Emote 🚷", - ['cancelemoteinfo'] = "~r~X~w~ Cancels the currently playing emote", - ['walkingstyles'] = "Walking Styles 🚶🏻‍♂️", - ['resetdef'] = "Reset to default", - ['normalreset'] = "Normal (Reset)", - ['moods'] = "Moods 😒", - ['infoupdate'] = "Credits & Suggestions 🙏🏻", - ['infoupdateav'] = "Information (Update available)", - ['infoupdateavtext'] = "An update is available, get the latest version from ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Suggestions?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' on FiveM forums for any feature/emote suggestions! ✉️", - ['notvaliddance'] = "is not a valid dance.", - ['notvalidemote'] = "is not a valid emote.", - ['nocancel'] = "No emote to cancel.", - ['maleonly'] = "This emote is male only, sorry!", - ['emotemenucmd'] = "Do /emotemenu for a menu.", - ['shareemotes'] = "👫 Shared Emotes", - ['shareemotesinfo'] = "Invite a nearby person to emote", - ['sharedanceemotes'] = "🕺 Shared Dances", - ['notvalidsharedemote'] = "is not a valid shared emote.", - ['sentrequestto'] = "Sent request to ~y~", - ['nobodyclose'] = "Nobody ~r~close~w~ enough.", - ['doyouwanna'] = "~y~Y~w~ to accept, ~r~L~w~ to refuse (~g~", - ['refuseemote'] = "Emote refused.", - ['makenearby'] = "makes the nearby player play", - ['camera'] = "Press ~y~G~w~ to use camera flash.", - ['makeitrain'] = "Press ~y~G~w~ to make it rain.", - ['pee'] = "Hold ~y~G~w~ to pee.", - ['spraychamp'] = "Hold ~y~G~w~ to spray champagne", - ['stun'] = "Press ~y~G~w~ to 'use' stun gun.", - ['bound'] = "Bound ", - ['to'] = "to", - ['currentlyboundemotes'] = " Currently bound emotes:", - ['notvalidkey'] = "is not a valid key.", - ['keybinds'] = "🔢 Keybinds", - ['keybindsinfo'] = "Use" - }, - ['cs'] = { -- Czech 🇨🇿 - ['emotes'] = 'Animace 🎬', - ['danceemotes'] = "🕺 Taneční Animace", - ['animalemotes'] = "🐩 zvířecí Animace", - ['propemotes'] = "📦 Animace s předměty", - ['favoriteemotes'] = "🌟 Oblíbené", - ['favoriteinfo'] = "Vyberte si animaci a nastavte ji jako svou oblíbenou.", - ['rfavorite'] = "Obnovit oblíbené", - ['prop2info'] = "❓ Pomůcky se mohou nacházet na konci", - ['set'] = "Nastavit", - ['setboundemote'] = "Nastavit jako vaši animaci?", - ['newsetemote'] = "~w~ je nyní vaší novou nastavenou animací. Chcete-li jej použít, stiskněte ~g~CapsLock~w~.", - ['cancelemote'] = "Zrušit animaci 🚷", - ['cancelemoteinfo'] = "~r~X~w~ Zruší aktuálně přehrávanou animaci", - ['walkingstyles'] = "Styly chůze 🚶🏻‍♂️", - ['resetdef'] = "Obnovit do základního nastavení", - ['normalreset'] = "Neutrální výraz", - ['moods'] = "Výrazy 😒", - ['infoupdate'] = "Kredity a nápady 🙏🏻", - ['infoupdateav'] = "Informace (aktualizace dostupná)", - ['infoupdateavtext'] = "Je k dispozici aktualizace, stáhněte si nejnovější verzi z ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Nápady?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' na FiveM forums je pro jakýkoliv návrh! ✉️", - ['notvaliddance'] = "Není platný tanec.", - ['notvalidemote'] = "Není platná animace.", - ['nocancel'] = "Žádné animace ke zrušení.", - ['maleonly'] = "Tato emoce je pouze pro muže, omlouvám se!", - ['emotemenucmd'] = "Použíj /emotemenu pro otevření menu.", - ['shareemotes'] = "👫 Sdílené animace", - ['shareemotesinfo'] = "Pozvěte osobu v okolí, k tanci", - ['sharedanceemotes'] = "🕺 Sdílený tanece", - ['notvalidsharedemote'] = "Není platný Sdílený tanec.", - ['sentrequestto'] = "Odeslal jsi ~y~ žádost o tanec ", - ['nobodyclose'] = "Nikdo ~r~není~w~ v dostatečné blízkosti.", - ['doyouwanna'] = "~y~Y~w~ pro příjmutí, ~r~L~w~ pro odmitnutí (~g~", - ['refuseemote'] = "Emote odmítnut.", - ['makenearby'] = "nechat hráče poblíž hrát", - ['camera'] = "Stiskni ~y~G~w~ pro použítí blesku u fotoaparátu.", - ['makeitrain'] = "Stiskni ~y~G~w~ pro spuštení deště.", - ['pee'] = "Podrž ~y~G~w~ pro čůraní.", - ['spraychamp'] = "Podrž ~y~G~w~ pro stříkaní šampaňského", - ['stun'] = "Stiskni ~y~G~w~ pro 'použití' paralyzéru.", - ['bound'] = "Bound ", - ['to'] = "na", - ['currentlyboundemotes'] = "Momentálně nastavené animace:", - ['notvalidkey'] = "Není platná klávesa.", - ['keybinds'] = "🔢 Klávesové Zkratky", - ['keybindsinfo'] = "Use" - }, - ['fr'] = { -- French 🇫🇷 - ['emotes'] = 'Emotes 🎬', - ['danceemotes'] = "🕺 Danses", - ['animalemotes'] = "🐩 Emotes d'animaux", - ['propemotes'] = "📦 Emotes objet", - ['favoriteemotes'] = "🌟 Favori", - ['favoriteinfo'] = "Définir une emote comme favori.", - ['rfavorite'] = "Réinitialiser le favori.", - ['prop2info'] = "❓ Les emotes d'objet peuvent être à la fin", - ['set'] = "Mettre (", - ['setboundemote'] = ") en emote favorite?", - ['newsetemote'] = "~w~ est maintenant votre emote favorite, appuyez sur ~g~CapsLock~w~ pour l'utiliser.", - ['cancelemote'] = "Annuler Emote 🚷", - ['cancelemoteinfo'] = "~r~X~w~ Annule l'emote en cours", - ['walkingstyles'] = "Styles de marche 🚶🏻‍♂️", - ['resetdef'] = "Réinitialiser aux valeurs par défaut", - ['normalreset'] = "Normal (réinitialiser)", - ['moods'] = "Humeurs 😒", - ['infoupdate'] = "Crédits et suggestions 🙏🏻", - ['infoupdateav'] = "Information (Mise à jour disponible)", - ['infoupdateavtext'] = "Une mise à jour est disponible ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Suggestions?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' sur les forums FiveM pour toutes les suggestions! ✉️", - ['notvaliddance'] = "n'est pas une danse valide", - ['notvalidemote'] = "n'est pas une emote valide", - ['nocancel'] = "Pas d'emote à annuler", - ['maleonly'] = "Cet emote est réservé aux hommes, désolé!", - ['emotemenucmd'] = "Fait /emotemenu pour ouvrir le menu", - ['shareemotes'] = "👫 Emotes partagées", - ['shareemotesinfo'] = "Invite une personne proche à faire une emote avec toi", - ['sharedanceemotes'] = "🕺 Dances partagées", - ['notvalidsharedemote'] = "n'est pas un emote partagée valide.", - ['sentrequestto'] = "Demande envoyée à ~g~", - ['nobodyclose'] = "Personne n'esst assez proche.", - ['doyouwanna'] = "~y~Y~w~ accepter, ~r~L~w~ refuser (~g~", - ['refuseemote'] = "Emote refusée.", - ['makenearby'] = "fait jouer le joueur à proximité", - ['camera'] = "Presse ~y~G~w~ pour utiliser le flash de l'appareil.", - ['makeitrain'] = "Presse ~y~G~w~ pour jeter de l'argent.", - ['pee'] = "Tenir ~y~G~w~ pour faire pipi.", - ['spraychamp'] = "Tenir ~y~G~w~ pour vaporiser du champagne.", - ['bound'] = "Liée ", - ['to'] = "à", - ['currentlyboundemotes'] = " Emotes actuellement liées:", - ['notvalidkey'] = "n'est pas une clé valide.", - ['keybinds'] = "🔢 Raccourcis clavier", - ['keybindsinfo'] = "Utilise" - }, - ['de'] = { -- German 🇩🇪 - ['emotes'] = 'Emotes 🎬', - ['danceemotes'] = "🕺 Tanz-Emotes", - ['animalemotes'] = "🐩 Animal Emotes", - ['propemotes'] = "📦 Prop-Emotes", - ['favoriteemotes'] = "🌟 Favorit", - ['favoriteinfo'] = "Wählen Sie hier ein Emote aus, um es als gebundenes Emote festzulegen.", - ['rfavorite'] = "Keybind zurücksetzen", - ['prop2info'] = "❓ Prop-Emotes können am Ende platziert werden", - ['set'] = "Set (", - ['setboundemote'] = ") soll dein gebundenes Emote sein?", - ['newsetemote'] = "~w~ ist jetzt dein gebundenes Emote, drücke ~g~CapsLock~w~, um es zu verwenden.", - ['cancelemote'] = "Emote abbrechen 🚷", - ['cancelemoteinfo'] = "~r~ X ~w~ Bricht das aktuell wiedergegebene Emote ab", - ['walkingstyles'] = "Gehstile 🚶🏻‍♂️", - ['resetdef'] = "Auf Standard zurücksetzen", - ['normalreset'] = "Normal (Zurücksetzen)", - ['moods'] = "Stimmungen 😒", - ['infoupdate'] = "Credits und Dank 🙏🏻", - ['infoupdateav'] = "Information (Update verfügbar)", - ['infoupdateavtext'] = "Eine Aktualisierung ist verfügbar ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Vorschläge?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' in FiveM-Foren für alle Feature- / Emote-Vorschläge! ✉️", - ['notvaliddance'] = "ist kein gültiger Tanz", - ['notvalidemote'] = "ist kein gültiges Emote", - ['nocancel'] = "Kein Emote zum Abbrechen", - ['maleonly'] = "Dieses Emote ist nur männlich, sorry!", - ['emotemenucmd'] = "Do /emotemenu für ein Menü", - ['shareemotes'] = "👫 Geteilte Emotes", - ['shareemotesinfo'] = "Laden Sie eine Person in Ihrer Nähe zum Emoten ein", - ['sharedanceemotes'] = "🕺 Geteilte Tänze", - ['notvalidsharedemote'] = "ist kein gültiges geteiltes Emote.", - ['sentrequestto'] = "Gesendete Anfrage an ~g~", - ['nobodyclose'] = "Niemand ist nah genug dran.", - ['doyouwanna'] = "~y~Z~w~ zu akzeptieren, ~r~L~w~ zu verweigern (~g~", - ['refuseemote'] = "Emote abgelehnt.", - ['makenearby'] = "Lässt den Spieler in der Nähe spielen", - ['camera'] = "Drücken ~y~G~w~ Kamerablitz verwenden.", - ['makeitrain'] = "Drücken ~y~G~w~ Geld werfen.", - ['pee'] = "Halt ~y~G~w~ urinieren.", - ['spraychamp'] = "Halt ~y~G~w~ champagner sprühen", - ['bound'] = "Gebunden ", - ['to'] = "zu", - ['currentlyboundemotes'] = " Derzeit gebundene Emotes:", - ['notvalidkey'] = "ist kein gültiger schlüssel.", - ['keybinds'] = "🔢 Tastenkombinationen", - ['keybindsinfo'] = "verwenden" - }, - ['sv'] = { -- Swedish 🇸🇪 - ['emotes'] = 'Emotes 🎬', - ['danceemotes'] = "🕺 Dans Emotes", - ['animalemotes'] = "🐩 Animal Emotes", - ['propemotes'] = "📦 Objekt Emotes", - ['favoriteemotes'] = "🌟 Favorit", - ['favoriteinfo'] = "Välj en emote här för att ställa in den som din favorit emote.", - ['rfavorite'] = "Återställ favorit.", - ['prop2info'] = "❓ Objekt Emotes finns längst ner i listan.", - ['set'] = "Sätt (", - ['setboundemote'] = ") till din favorit emote?", - ['newsetemote'] = "~w~ är nu din favorit emote, tryck ~g~CapsLock~w~ för att använda den.", - ['cancelemote'] = "Avbryt Emote 🚷", - ['cancelemoteinfo'] = "~r~X~w~ Avbryter det emote som för närvarande används.", - ['walkingstyles'] = "Walking Stil 🚶🏻‍♂️", - ['resetdef'] = "Återställ till standard", - ['normalreset'] = "Normal (Återställ)", - ['moods'] = "Humör 😒", - ['infoupdate'] = "Krediter Och Förslag 🙏🏻", - ['infoupdateav'] = "Information (Uppdatering tillgänglig)", - ['infoupdateavtext'] = "En uppdatering är tillgänglig ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Förslag?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' på FiveM-forum för alla funktioner/emote-förslag! ✉️", - ['notvaliddance'] = "är inte en giltig dans", - ['notvalidemote'] = "är inte en giltig emote", - ['nocancel'] = "Ingen emote att avbryta", - ['maleonly'] = "Den här emoten är endast för män, ledsen!", - ['emotemenucmd'] = "Gör /emotemenu för en meny", - ['shareemotes'] = "👫 Delade Emotes", - ['shareemotesinfo'] = "Bjud in en någon nära för en emote", - ['sharedanceemotes'] = "🕺 Delade Danser", - ['notvalidsharedemote'] = "är inte en giltig delad emote.", - ['sentrequestto'] = "Skickad förfrågan till ~g~", - ['nobodyclose'] = "Ingen ~r~nära~w~ tillräckligt.", - ['doyouwanna'] = "~y~Y~w~ för att acceptera, ~r~L~w~ för att vägra (~g~", - ['refuseemote'] = "Emote vägrades.", - ['makenearby'] = "andra personen spelar", - ['camera'] = "Tryck ~y~G~w~ för att använda blixt.", - ['makeitrain'] = "Tryck ~y~G~w~ för att kasta pengar.", - ['pee'] = "Håll ~y~G~w~ att kissa.", - ['spraychamp'] = "Håll ~y~G~w~ för att spraya champagne.", - ['bound'] = "Bunde ", - ['to'] = "till", - ['currentlyboundemotes'] = " För närvarande bundna emotes:", - ['notvalidkey'] = "är inte en giltig tangent.", - ['keybinds'] = "🔢 Keybinds", - ['keybindsinfo'] = "Använd" - }, - ['es'] = { -- Spanish 🇪🇸 - ['emotes'] = "Animaciones 🎬", - ['danceemotes'] = "🕺 Bailes", - ['animalemotes'] = "🐩 Emotes de animales", - ['propemotes'] = "📦 Objetos", - ['favoriteemotes'] = "🌟 Favoritos", - ['favoriteinfo'] = "Seleccione un emoticón aquí para configurarlo como su favorito.", - ['rfavorite'] = "Restablecer favorito", - ['prop2info'] = "❓ Prop Emotes se pueden ubicar al final", - ['set'] = "Elegir (", - ['setboundemote'] = ") como tu animacion favorita?", - ['newsetemote'] = "~w~ es ahora tu animacion favorita, presiona ~g~[CapsLock]~w~ para usarla.", - ['cancelemote'] = "Cancelar animacion 🚷", - ['cancelemoteinfo'] = "~r~X~w~ Cancela la animacion actual.", - ['walkingstyles'] = "Formas de caminar 🚶🏻‍♂️", - ['resetdef'] = "Reiniciar a por defecto", - ['normalreset'] = "Normal (Reiniciar)", - ['moods'] = "Estados de animo 😒", - ['infoupdate'] = "Créditos Y Sugerencias 🙏🏻", - ['infoupdateav'] = "Informacion (Actualizacion disponible)", - ['infoupdateavtext'] = "Una actualizacion esta disponible, para conseguir la ultima version ingresa a ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Sugerencias?", - ['suggestionsinfo'] = "TayMcKenzieNZ' en el foro de FiveM para cualquier sugerencia! ✉️", - ['notvaliddance'] = "no es un baile valido.", - ['notvalidemote'] = "no es una animacion valida.", - ['nocancel'] = "No hay animacion para cancelar.", - ['maleonly'] = "Esta animacion es solo de hombre!", - ['emotemenucmd'] = "Escribe /emotemenu para abrir el menu.", - ['shareemotes'] = "👫 Animaciones compartidas", - ['shareemotesinfo'] = "Invita a una persona cercana para la animacion.", - ['sharedanceemotes'] = "🕺 Bailes compartidos", - ['notvalidsharedemote'] = "no es una animacion compartida valida.", - ['sentrequestto'] = "Solicitud enviada ~y~", - ['nobodyclose'] = "Nadie ~r~cerca~w~.", - ['doyouwanna'] = "~y~Y~w~ para aceptar, ~r~L~w~ para rechazar (~g~", - ['refuseemote'] = "Animacion rechazada.", - ['makenearby'] = "hacer que el jugador cercano juegue", - ['camera'] = "Presione ~y~G~w~ para usar el flash de la camara.", - ['makeitrain'] = "Presiona ~y~G~w~ para hacer llover.", - ['pee'] = "Mantiene ~y~G~w~ para mear.", - ['spraychamp'] = "Mantiene ~y~G~w~ rociar champán.", - ['bound'] = "Unida ", - ['to'] = "a", - ['currentlyboundemotes'] = " Emotes vinculados actualmente:", - ['notvalidkey'] = "no es una clave válida.", - ['keybinds'] = "🔢 Keybinds", - ['keybindsinfo'] = "Utilizar" - }, - ['nl'] = { -- Dutch 🇳🇱 - ['emotes'] = 'Animaties 🎬', - ['danceemotes'] = "🕺 Dans Animaties", - ['animalemotes'] = "🐩 Dier Animaties", - ['propemotes'] = "📦 Prop Animaties", - ['favoriteemotes'] = "🌟 Favorieten", - ['favoriteinfo'] = "Selecteer hier een animatie om deze als favoriete in te stellen.", - ['rfavorite'] = "Reset Favorieten", - ['prop2info'] = "❓ Prop animaties staan aan het einde.", - ['set'] = "Maak (", - ['setboundemote'] = ") je toegewezen animatie?", - ['newsetemote'] = "~w~ is nu je toegewezen animatie, druk op ~g~CapsLock~w~ om hem te gebruiken.", - ['cancelemote'] = "Stop Animatie 🚷", - ['cancelemoteinfo'] = "~r~X~w~ Stopt je huidige animatie", - ['walkingstyles'] = "Loopjes 🚶🏻‍♂️", - ['resetdef'] = "Reset naar standaard", - ['normalreset'] = "Normaal (Reset)", - ['moods'] = "Stemmingen 😒", - ['infoupdate'] = "Credits en bedankt 🙏🏻", - ['infoupdateav'] = "Informatie (Update beschikbaar)", - ['infoupdateavtext'] = "Een update is beschikbaar, download de laatste versie via ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Suggesties?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' op de FiveM forums om suggesties in te dienen! ✉️", - ['notvaliddance'] = "Is geen geldige dans.", - ['notvalidemote'] = "Is geen geldige animatie.", - ['nocancel'] = "Er is geen animatie om te annuleren.", - ['maleonly'] = "Deze animatie is alleen voor mannen, sorry!", - ['emotemenucmd'] = "Doe /emotemenu voor het animatiemenu.", - ['shareemotes'] = "👫 Gedeelde Animaties", - ['shareemotesinfo'] = "Nodig een persoon in de buurt uit om een animatie te doen.", - ['sharedanceemotes'] = "🕺 Gedeelde Dansjes", - ['notvalidsharedemote'] = "Is geen geldige gedeelde animatie.", - ['sentrequestto'] = "Verzoek gestuurd naar ~y~", - ['nobodyclose'] = "Er is niemand ~r~dichtbij~w~ genoeg.", - ['doyouwanna'] = "~y~Y~w~ om te accepteren, ~r~L~w~ om te weigeren (~g~", - ['refuseemote'] = "Animatie geweigerd.", - ['makenearby'] = "laat de dichtstbijzijnde persoon de animatie doen", - ['camera'] = "Druk op ~y~G~w~ om de flitser te gebruiken..", - ['makeitrain'] = "Druk op ~y~G~w~ om geld te gooien.", - ['pee'] = "Druk op ~y~G~w~ om te plassen.", - ['spraychamp'] = "Druk op ~y~G~w~ om batra's te spuiten.", - ['stun'] = "Druk op ~y~G~w~ om de taser te 'gebruiken'.", - ['bound'] = "Gebonden ", - ['to'] = "aan", - ['currentlyboundemotes'] = " Huidig gebonden animaties:", - ['notvalidkey'] = "Is geen geldige knop.", - ['keybinds'] = "🔢 Keybinds", - ['keybindsinfo'] = "Gebruik" - }, - ['pt'] = { -- Brazilian Portuguese 🇧🇷 - ['emotes'] = 'Emotes 🎬', - ['danceemotes'] = "🕺 Emotes de Danças", - ['animalemotes'] = "🐩 Emotes de Animais", - ['propemotes'] = "📦 Emotes com Props", - ['favoriteemotes'] = "🌟 Favoritos", - ['favoriteinfo'] = "Selecione um emote para colocá-lo nos seus favoritos", - ['rfavorite'] = "Limpar favoritos", - ['prop2info'] = "❓ Emotes de props podem ser localizados no fim", - ['set'] = "Set (", - ['setboundemote'] = ") para ser seu emote vinculado?", - ['newsetemote'] = "~w~ é o seu emote vinculado, pressione ~g~CapsLock~w~ para usá-lo", - ['cancelemote'] = "Cancelar emote 🚷", - ['cancelemoteinfo'] = "~r~X~w~ Cancela os emotes rodando atualmente", - ['walkingstyles'] = "Estilos de Caminhada 🚶🏻‍♂️", - ['resetdef'] = "Resetar para o padrão", - ['normalreset'] = "Normal (Resetar)", - ['moods'] = "Humores 😒", - ['infoupdate'] = "Crédito e agradecimento 🙏🏻", - ['infoupdateav'] = "Informação (Atualização disponível)", - ['infoupdateavtext'] = "Uma atualização disponível, veja ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~ para pegar", - ['suggestions'] = "Sugestões?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' no fórum do FiveM para qualquer sugestão de recurso/emotes! ✉️", - ['notvaliddance'] = "não é uma dança válida.", - ['notvalidemote'] = "não é um emote válido.", - ['nocancel'] = "Nenhum emote para cancelar", - ['maleonly'] = "Este emote é para homens, desculpe!", - ['emotemenucmd'] = "Faça /emotemenu para abrir o menu.", - ['shareemotes'] = "👫 Emotes compartilhados", - ['shareemotesinfo'] = "Convide uma pessoa próxima para para realizar a animação", - ['sharedanceemotes'] = "🕺 Danças compartilhadas", - ['notvalidsharedemote'] = "não é um emote compartilhado válido.", - ['sentrequestto'] = "Enviar solicitação para ~y~", - ['nobodyclose'] = "Ninguém próximo o ~r~rsuficiente~w~.", - ['doyouwanna'] = "~y~Y~w~ para aceitar, ~r~L~w~ para recursar (~g~", - ['refuseemote'] = "Emote recursado", - ['makenearby'] = "Faz o jogador próximo participar", - ['camera'] = "Pressione ~y~G~w~ para usar o flash da câmera", - ['makeitrain'] = "Pressione ~y~G~w~ para fazer chover.", - ['pee'] = "Mantenha pressionado ~y~G~w~ para fazer xixi.", - ['spraychamp'] = "Mantenha pressionado ~y~G~w~ jogar champagne", - ['stun'] = "Press ~y~G~w~ to 'use' stun gun.", - ['bound'] = "Vinculado ", - ['to'] = "para", - ['currentlyboundemotes'] = "Emotes atualmente vinculados: ", - ['notvalidkey'] = "isto não é uma chave válida", - ['keybinds'] = "🔢 Keybinds", - ['keybindsinfo'] = "Usar" - }, - ['it'] = { -- Italian 🇮🇹 - ['emotes'] = 'Animazioni 🎬', - ['danceemotes'] = "🕺 Animazioni Di Danza", - ['animalemotes'] = "🐩 Animazioni Di Animali", - ['propemotes'] = "📦 Animazioni Prop", - ['favoriteemotes'] = "🌟 Emote preferite", - ['favoriteinfo'] = "Seleziona un'animazione per metterla nei preferiti.", - ['rfavorite'] = "Rimuovi preferito", - ['prop2info'] = "❓ Le animazioni Prop possono essere trovate in fondo.", - ['set'] = "Imposta (", - ['setboundemote'] = ") come tua animazione corrente?", - ['newsetemote'] = "~w~ è ora la tua animazione corrente, premi ~g~CapsLock~w~ per usarla.", - ['cancelemote'] = "Annulla animazione 🚷", - ['cancelemoteinfo'] = "~r~X~w~ Cancella l'animazione in corso.", - ['walkingstyles'] = "Stili di camminata 🚶🏻‍♂️", - ['resetdef'] = "Ripristina predefiniti", - ['normalreset'] = "Normale (Reset)", - ['moods'] = "Umori 😒", - ['infoupdate'] = "Crediti e grazie 🙏🏻", - ['infoupdateav'] = "Informazioni (Aggiornamento disponibile)", - ['infoupdateavtext'] = "Un aggiornamento è disponibile, ottieni l'ulima versione qui ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Suggerimenti?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' nei forum di FiveM per suggerimenti su funzionalitá/animazioni! ✉️", - ['notvaliddance'] = "non è un ballo valido.", - ['notvalidemote'] = "non è un'animazione valida.", - ['nocancel'] = "Nessun'animazione da cancellare.", - ['maleonly'] = "Quest'animazione è solo maschile!", - ['emotemenucmd'] = "Esegui /emotemenu per aprire il menù.", - ['shareemotes'] = "👫 Animazioni di coppia", - ['shareemotesinfo'] = "Invita un giocatore vicino ad un'animazione", - ['sharedanceemotes'] = "🕺 Balli di coppia", - ['notvalidsharedemote'] = "non è un'animazione di coppia valida.", - ['sentrequestto'] = "Richiesta mandata a ~y~", - ['nobodyclose'] = "Nessun giocatore abbastanza ~r~vicino~w~.", - ['doyouwanna'] = "~y~Y~w~ per accettare, ~r~L~w~ per rifiutare (~g~", - ['refuseemote'] = "Animazione rifiutata.", - ['makenearby'] = "fa eseguire l'animazione al giocatore vicino", - ['camera'] = "Premi ~y~G~w~ per usare il flash della fotocamera.", - ['makeitrain'] = "Premi ~y~G~w~ per far piovere.", - ['pee'] = "Tieni premuto ~y~G~w~ per urinare.", - ['spraychamp'] = "Tieni premuto ~y~G~w~ per spruzzare champagne", - ['stun'] = "Premi ~y~G~w~ per 'usare' la pistola stordente.", - ['bound'] = "É stato impostato ", - ['to'] = "per", - ['currentlyboundemotes'] = " Animazioni correnti:", - ['notvalidkey'] = "non è una chiave valida.", - ['keybinds'] = "🔢 Tasti", - ['keybindsinfo'] = "Utilizza" - }, - ['da'] = { -- Danish 🇩🇰 - ['emotes'] = 'Animationer', - ['danceemotes'] = "🕺 Danse Animationer", - ['animalemotes'] = "🐩 Dyr Animationer", - ['propemotes'] = "📦 Rekvisit Animationer", - ['favoriteemotes'] = "🌟 Favorit", - ['favoriteinfo'] = "Vælge en animationer her for at sætte den som din favorit.", - ['rfavorite'] = "Nulstil Favorit", - ['prop2info'] = "❓ Rekvisit emotes findes i slutningen", - ['set'] = "Sæt (", - ['setboundemote'] = ") til din favorit animationer?", - ['newsetemote'] = "~w~ Er nu din favorit animationer, tryk ~g~CapsLock~w~ for at anvende den.", - ['cancelemote'] = "Afbryd animationer", - ['cancelemoteinfo'] = "~r~X~w~ Anullere din igangværende animationer.", - ['walkingstyles'] = "Gågange", - ['resetdef'] = "Nulstil til standard", - ['normalreset'] = "Normal (Nulstil)", - ['moods'] = "Humør 😒", - ['infoupdate'] = "Info / opdateringer", - ['infoupdateav'] = "Information (Opdatering available)", - ['infoupdateavtext'] = "En opdatering er tilgænglig, hent den nyeste version fra ~y~https://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Forslag?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' på FiveM-forum for alle funktioner/emote-forslag! ✉️", - ['notvaliddance'] = "er ikke en gyldig dans", - ['notvalidemote'] = "er ikke en gyldig emote", - ['nocancel'] = "Ingen animationer afspilles lige nu", - ['maleonly'] = "Denne animationer virker desværre kun til mænd!", - ['emotemenucmd'] = "Skriv /emotemenu for animationer menuen", - ['shareemotes'] = "👫 Delte animationer", - ['shareemotesinfo'] = "Invitere en spillere i nærheden for afspille animationer", - ['sharedanceemotes'] = "🕺 Delete Danse", - ['notvalidsharedemote'] = "er ikke en gyldig delt animationer.", - ['sentrequestto'] = "Anmodning sendt til ~y~", - ['nobodyclose'] = "Ingen ~r~tæt~w~ nok.", - ['doyouwanna'] = "~y~Y~w~ for at acceptere, ~r~L~w~ for at nægte (~g~", - ['refuseemote'] = "Animationer nægtede.", - ['makenearby'] = "får den nærliggende spiller til at spille", - ['camera'] = "Tryk ~y~G~w~ for at bruge kamera kameraets blitz.", - ['makeitrain'] = "Tryk ~y~G~w~ for at regne med penge.", - ['pee'] = "Hold ~y~G~w~ for at tisse.", - ['spraychamp'] = "Hold ~y~G~w~ for at sprøjte med champagnen", - ['stun'] = "tryk på ~y~G~w~ for at bruge elektrisk pistol.", - ['bound'] = "Bundet ", - ['to'] = "til", - ['currentlyboundemotes'] = " Keybind animationer:", - ['notvalidkey'] = "er ikke en gyldigt nøgle.", - ['keybinds'] = "🔢 Keybinds", - ['keybindsinfo'] = "Brug" - }, - ['fi'] = { -- Finnish 🇫🇮 - ['emotes'] = 'Emotet 🎬', - ['danceemotes'] = "🕺 Tanssi Emotet", - ['animalemotes'] = "🐩 Eläin Emotet", - ['propemotes'] = "📦 Esine Emotet", - ['favoriteemotes'] = "🌟 Suosikit", - ['favoriteinfo'] = " Valitse emote täältä laittaaksesi sen suosikiksi.", - ['rfavorite'] = "Resettaa Suosikin.", - ['prop2info'] = "❓ Esine Emotet voivat sijaita lopussa", - ['set'] = "Aseta (", - ['setboundemote'] = ") on sinun bindattu emote ?", - ['newsetemote'] = "w on nyt bindattuna emotesi, paina gCapsLockw käyttääksesi", - ['cancelemote'] = "Peru emote 🚷", - ['cancelemoteinfo'] = "rXw Peruu meneillään olevan emoten ", - ['walkingstyles'] = "Kävelytyylit🚶🏻‍♂️", - ['resetdef'] = "Resettaa oletuksen", - ['normalreset'] = "Normaali (Reseettaa)", - ['moods'] = "Mielitilat😒", - ['infoupdate'] = "Krediitit & Ehdotukset 🙏🏻", - ['infoupdateav'] = "Informaatio (Päivitys Saatavilla)", - ['infoupdateavtext'] = " Uusin versio saatavilla täältä yhttps://github.com/TayMcKenzieNZ/dpemotes~w~", - ['suggestions'] = "Ehdotukset?", - ['suggestionsinfo'] = "'TayMcKenzieNZ' Fivem foormueilta mitä vain fiituria/emote ehdotusta! ✉️", - ['notvaliddance'] = "Ei ole tanssi.", - ['notvalidemote'] = "Ei ole emote.", - ['nocancel'] = "Ei ole emotea peruutettavaksi.", - ['maleonly'] = "Tämä emote on miehille ainostaan, anteeksi!", - ['emotemenucmd'] = "Tee /emotemenu avataksesi emote menun", - ['shareemotes'] = "👫 Yhteiset Emotet", - ['shareemotesinfo'] = "Kutsu lähin hahmo emoteen ", - ['sharedanceemotes'] = "🕺 Yhteiset Tanssit", - ['notvalidsharedemote'] = "Ei ole yhteinen tanssi emote.", - ['sentrequestto'] = "Lähetä kutsu y", - ['nobodyclose'] = "Ei ketään rlähelläw sinua.", - ['doyouwanna'] = "yYw hyväksyyksesi, rLw kieltäytyäksesi (g", - ['refuseemote'] = "Emote peruutettu.", - ['makenearby'] = "tekee lähimmän pelaaja osallistumaan ", - ['camera'] = "Paina yGw käyttääksesi kameran salamaa.", - ['makeitrain'] = "Paina yGw heittääksesi rahaa.", - ['pee'] = "Pidä yGw pissaksesi.", - ['spraychamp'] = "Pidä yGw suihkutaaksesi shamppaniaa", - ['stun'] = "Paina yGw to 'käytä' etälamautinta.", - ['bound'] = "Bindata", - ['to'] = 'lle', - ['currentlyboundemotes'] = " On jo bindattuna emotehin :", - ['notvalidkey'] = "Ei ole käytettävä näppäin.", - ['keybinds'] = "🔢 Pikanäppäimet", - ['keybindsinfo'] = "Käytä", -}} diff --git a/resources/dpemotes-master/server/Server.lua b/resources/dpemotes-master/server/Server.lua deleted file mode 100644 index 0a3472a0a..000000000 --- a/resources/dpemotes-master/server/Server.lua +++ /dev/null @@ -1,125 +0,0 @@ ------------------------------------------------------------------------------------------------------ --- Shared Emotes Syncing --------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------ - -RegisterServerEvent("ServerEmoteRequest") -AddEventHandler("ServerEmoteRequest", function(target, emotename, etype) - TriggerClientEvent("ClientEmoteRequestReceive", target, emotename, etype) -end) - -RegisterServerEvent("ServerValidEmote") -AddEventHandler("ServerValidEmote", function(target, requestedemote, otheremote) - TriggerClientEvent("SyncPlayEmote", source, otheremote, target) - TriggerClientEvent("SyncPlayEmoteSource", target, requestedemote, source) -end) - -RegisterServerEvent("ServerEmoteCancel") -AddEventHandler("ServerEmoteCancel", function(target) - TriggerClientEvent("SyncCancelEmote", target, source) -end) - ------------------------------------------------------------------------------------------------------ --- Keybinding -------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------ - -local function addKeybindEventHandlers() - RegisterServerEvent("dp:ServerKeybindExist") - AddEventHandler('dp:ServerKeybindExist', function() - local src = source - local srcid = GetPlayerIdentifier(source) - MySQL.query('SELECT * FROM dpkeybinds WHERE `id`=@id;', { id = srcid }, function(dpkeybinds) - if dpkeybinds[1] then - TriggerClientEvent("dp:ClientKeybindExist", src, true) - else - TriggerClientEvent("dp:ClientKeybindExist", src, false) - end - end) - end) - - -- This is my first time doing SQL stuff, and after i finished everything i realized i didnt have to store the keybinds in the database at all. - -- But remaking it now is a little pointless since it does it job just fine! - - RegisterServerEvent("dp:ServerKeybindCreate") - AddEventHandler("dp:ServerKeybindCreate", function() - local src = source - local srcid = GetPlayerIdentifier(source) - MySQL.insert('INSERT INTO dpkeybinds (`id`, `keybind1`, `emote1`, `keybind2`, `emote2`, `keybind3`, `emote3`, `keybind4`, `emote4`, `keybind5`, `emote5`, `keybind6`, `emote6`) VALUES (@id, @keybind1, @emote1, @keybind2, @emote2, @keybind3, @emote3, @keybind4, @emote4, @keybind5, @emote5, @keybind6, @emote6);', - { id = srcid, keybind1 = "num4", emote1 = "", keybind2 = "num5", emote2 = "", keybind3 = "num6", emote3 = "", keybind4 = "num7", emote4 = "", keybind5 = "num8", emote5 = "", keybind6 = "num9", emote6 = "" }, function(created) print("[dp] ^2" .. GetPlayerName(src) .. "^7 got created!") TriggerClientEvent("dp:ClientKeybindGet", src, "num4", "", "num5", "", "num6", "", "num7", "", "num8", "", "num8", "") end) - end) - - RegisterServerEvent("dp:ServerKeybindGrab") - AddEventHandler("dp:ServerKeybindGrab", function() - local src = source - local srcid = GetPlayerIdentifier(source) - MySQL.query('SELECT keybind1, emote1, keybind2, emote2, keybind3, emote3, keybind4, emote4, keybind5, emote5, keybind6, emote6 FROM `dpkeybinds` WHERE `id` = @id' - , - { ['@id'] = srcid }, function(kb) - if kb[1].keybind1 ~= nil then - TriggerClientEvent("dp:ClientKeybindGet", src, kb[1].keybind1, kb[1].emote1, kb[1].keybind2, kb[1].emote2 , kb[1].keybind3, kb[1].emote3, kb[1].keybind4, kb[1].emote4, kb[1].keybind5, kb[1].emote5, kb[1].keybind6, kb[1].emote6) - else - TriggerClientEvent("dp:ClientKeybindGet", src, "num4", "", "num5", "", "num6", "", "num7", "", "num8", "", "num8", "") - end - end) - end) - - RegisterServerEvent("dp:ServerKeybindUpdate") - AddEventHandler("dp:ServerKeybindUpdate", function(key, emote) - local src = source - local myid = GetPlayerIdentifier(source) - if key == "num4" then chosenk = "keybind1" - elseif key == "num5" then chosenk = "keybind2" - elseif key == "num6" then chosenk = "keybind3" - elseif key == "num7" then chosenk = "keybind4" - elseif key == "num8" then chosenk = "keybind5" - elseif key == "num9" then chosenk = "keybind6" - end - if chosenk == "keybind1" then - MySQL.update("UPDATE dpkeybinds SET emote1=@emote WHERE id=@id", { id = myid, emote = emote }, - function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind2" then - MySQL.update("UPDATE dpkeybinds SET emote2=@emote WHERE id=@id", { id = myid, emote = emote }, - function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind3" then - MySQL.update("UPDATE dpkeybinds SET emote3=@emote WHERE id=@id", { id = myid, emote = emote }, - function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind4" then - MySQL.update("UPDATE dpkeybinds SET emote4=@emote WHERE id=@id", { id = myid, emote = emote }, - function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind5" then - MySQL.update("UPDATE dpkeybinds SET emote5=@emote WHERE id=@id", { id = myid, emote = emote }, - function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - elseif chosenk == "keybind6" then - MySQL.update("UPDATE dpkeybinds SET emote6=@emote WHERE id=@id", { id = myid, emote = emote }, - function() TriggerClientEvent("dp:ClientKeybindGetOne", src, key, emote) end) - end - end) -end - -if Config.SqlKeybinding and MySQL then - MySQL.update( - [[ - CREATE TABLE IF NOT EXISTS `dpkeybinds` ( - `id` varchar(50) NULL DEFAULT NULL, - `keybind1` varchar(50) NULL DEFAULT "num4", - `emote1` varchar(255) NULL DEFAULT "", - `keybind2` varchar(50) NULL DEFAULT "num5", - `emote2` varchar(255) NULL DEFAULT "", - `keybind3` varchar(50) NULL DEFAULT "num6", - `emote3` varchar(255) NULL DEFAULT "", - `keybind4` varchar(50) NULL DEFAULT "num7", - `emote4` varchar(255) NULL DEFAULT "", - `keybind5` varchar(50) NULL DEFAULT "num8", - `emote5` varchar(255) NULL DEFAULT "", - `keybind6` varchar(50) NULL DEFAULT "num9", - `emote6` varchar(255) NULL DEFAULT "" - ) ENGINE=InnoDB COLLATE=latin1_swedish_ci; - ]], {}, function(success) - if success then - addKeybindEventHandlers() - else - print("[dp] ^3Error connecting to DB^7") - end - end) -else - print("[dp] ^3Sql Keybinding^7 is turned ^1off^7, if you want to enable /emotebind, set ^3SqlKeybinding = ^2true^7 in config.lua and uncomment oxmysql lines in fxmanifest.lua.") -end diff --git a/resources/dpemotes-master/server/Updates.lua b/resources/dpemotes-master/server/Updates.lua deleted file mode 100644 index 9ae344f1d..000000000 --- a/resources/dpemotes-master/server/Updates.lua +++ /dev/null @@ -1,33 +0,0 @@ -if Config.CheckForUpdates then - Citizen.CreateThread(function() - updatePath = "/TayMcKenzieNZ/dpemotes" - resourceName = "dp Emotes (" .. GetCurrentResourceName() .. ")" - PerformHttpRequest("https://raw.githubusercontent.com" .. updatePath .. "/master/version", checkVersion, "GET") - end) -end - -RegisterServerEvent("dp:CheckVersion") -AddEventHandler("dp:CheckVersion", function() - if updateavail then - TriggerClientEvent("dp:Update", source, true) - else - TriggerClientEvent("dp:Update", source, false) - end -end) - -function checkVersion(err, responseText, headers) - curVersion = LoadResourceFile(GetCurrentResourceName(), "version") - - if curVersion ~= responseText and tonumber(curVersion) < tonumber(responseText) then - updateavail = true - print("\n^1----------------------------------------------------------------------------------^7") - print(resourceName .. " is outdated, latest version is: ^2" .. responseText .. "^7, installed version: ^1" .. curVersion .. "^7!\nupdate from https://github.com" .. updatePath .. "") - print("^1----------------------------------------------------------------------------------^7") - elseif tonumber(curVersion) > tonumber(responseText) then - print("\n^3----------------------------------------------------------------------------------^7") - print(resourceName .. " git version is: ^2" .. responseText .. "^7, installed version: ^1" .. curVersion .. "^7!") - print("^3----------------------------------------------------------------------------------^7") - else - print("\n" .. resourceName .. " is up to date. (^2" .. curVersion .. "^7)") - end -end diff --git a/resources/dpemotes-master/version b/resources/dpemotes-master/version deleted file mode 100644 index bea0d09c4..000000000 --- a/resources/dpemotes-master/version +++ /dev/null @@ -1 +0,0 @@ -207 \ No newline at end of file