Config = {} --- Debug mode --- --- This feature will enable additional debug views as well as some debug prints --- Should only be used in a development-environment Config.debug = false --- Default keybinds & tooltip look Config.keybinds = { play = { key = 'minus', -- Default keybind - After loading the script once. This keybind will be assigned to your game settings }, style = { -- Whether to show the suggested animation tooltip show = true, -- Positioning of the keybind tooltip (offsets) top = 'auto', left = 'auto', bottom = '16px', right = '16px', -- Size of the tooltip text fontSize = 1.4, -- RGBA value of the tooltip background bgColor = { 194, 207, 204, 0.6 }, -- RGBA value of the tooltip text textColor = { 20, 20, 20, 1 }, -- RGBA value of the keybind background keybindBgColor = { 40, 40, 40, 0.6 }, -- RGBA value of the keybind text keybindTextColor = { 255, 255, 255, 1 }, -- Strength of corner rounding borderRadius = 0.1, } } --- Animation play cooldown in ms Config.cooldown = 1000 --- Controls which will cancel the animation when pressed -- https://docs.fivem.net/docs/game-references/controls/ Config.cancelControls = { 22, 23, 25, 263, 264, } --- Animation lists --- --- Here you can create your own lists of animations which you may want to reuse --- --- Mind that not all pre-configured events use lists. You can also simply input the animations directly into the --- specific events. --- --- Animations can also contain tools, noted under a "tool" attribute. --- these should be a table containing the following values: --- pos = vector3 of the tool offset position --- rot = vector3 of the tool offset rotation --- model = the model name of the tool --- bone = the numerical bone of attachment --- --- e.g. -- tool = { -- pos = vector3(0.08, -0.1, -0.03), -- rot = vector3(-75.0, 0.0, 10.0), -- model = 'prop_tool_pickaxe', -- bone = 28422, -- }, --- --- The animations are able to trigger events as well. Noted under an "event" attribute --- these should contain the following values: --- event = name of the event --- type = "client" or "server" --- ---e.g. -- event = { -- event = "kq_yourscript:random-event", -- type = "client" -- } --- --- You can see the barbeque prop for an example of the "tool" and "event" usage Config.animLists = { ['sitting'] = { { dict = 'timetable@ron@ig_5_p3', anim = 'ig_5_p3_base', flag = 33, offset = vector3(0.0, 0.55, 0.52), }, { dict = 'timetable@reunited@ig_10', anim = 'base_amanda', flag = 33, offset = vector3(0.0, 0.55, 0.52), }, { dict = 'timetable@ron@ig_3_couch', anim = 'base', flag = 33, offset = vector3(0.0, 0.65, 0.52), }, { dict = 'timetable@maid@couch@', anim = 'base', flag = 33, offset = vector3(0.0, 0.45, 0.65), }, }, ['dance'] = { { dict = 'anim@amb@nightclub@dancers@solomun_entourage@', anim = 'mi_dance_facedj_17_v1_female^1', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@nightclub@mini@dance@dance_solo@female@var_a@', anim = 'high_center', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@nightclub@mini@dance@dance_solo@female@var_b@', anim = 'high_center', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@nightclub@mini@dance@dance_solo@male@var_b@', anim = 'high_center_down', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@nightclub@dancers@podium_dancers@', anim = 'hi_dance_facedj_17_v2_male^5', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity', anim = 'hi_dance_facedj_09_v2_female^1', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@nightclub@mini@dance@dance_solo@female@var_a@', anim = 'high_center_up', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, } } --- Animation suggestions for specific props --- --- Define specific props along with their co-responding animations --- Feel free to add or remove these --- --- label: text displayed in the keybind tooltip --- align: whether or not to align the player with the prop (make sure to specify the offset when true) --- offset: offset of the animation from the prop --- models: models of the props on which this action will be possible --- animations: an inline table of animations or an `Config.animList` table of animations Config.propSpecific = { { label = 'aseaza-te', align = true, offset = vector3(0.0, -1.3, 0.45), models = { 'prop_bench_01a', 'prop_bench_01c', 'prop_bench_02', 'prop_bench_03', 'prop_bench_04', 'prop_bench_05', 'prop_bench_06', 'prop_bench_07', 'prop_bench_08', 'prop_bench_09', 'prop_bench_10', 'prop_bench_11', }, animations = Config.animLists['sitting'], }, { label = 'cauta in cos', align = false, models = { 'prop_bin_01a', 'prop_bin_03a', 'prop_bin_05a', }, animations = { { dict = 'mini@repair', anim = 'fixing_a_ped', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, }, }, { -- Complete example with all the options label = 'gratar', align = false, models = { 'prop_bbq_5', }, animations = { { dict = 'amb@prop_human_bbq@male@idle_a', anim = 'idle_b', flag = 33, offset = vector3(0.0, 0.0, 0.0), event = { event = 'your-event:name', type = 'client', -- client or server params = 'bbq-start', -- this could be a table as well. It will be sent as the first attribute of the event }, tool = { pos = vector3(0.0, 0.0, 0.0), rot = vector3(0.0, 0.0, 0.0), model = 'prop_fish_slice_01', bone = 28422, }, }, }, }, } --- Animation suggestions for specific areas --- --- Define specific areas along with their co-responding animations --- Feel free to add or remove these --- --- label: text displayed in the keybind tooltip --- coords: coordinates of the area --- radius: radius of the animation area --- animations: an inline table of animations or an `Config.animList` table of animations Config.areaSpecific = { { -- vanilla unicorn label = 'danseaza', coords = vector3(115.6, -1289.0, 28.2), radius = 13.0, animations = Config.animLists['dance'], }, { -- tequilalala label = 'danseaza', coords = vector3(-557.65, 285.32, 82.2), radius = 10.0, animations = Config.animLists['dance'], }, { -- bahamas mammas label = 'danseaza', coords = vector3(-1386.73, -619.17, 30.8), radius = 10.0, animations = Config.animLists['dance'], }, } --- Main animation suggestion configuration --- --- Available events: --- - lean - Leaning when something is directly behind the player --- - leanBar - Leaning forward when something is directly in front the player but not higher up than their chest (bar etc.) --- - sit - Sitting down when something is located behind the player below their waist (walls, stairs, chairs etc.) --- - idle - May be used anywhere. Active after the player has been stationary for 4 or more seconds --- - intimidate - General intimidation gestures. Active for few seconds after player has been in melee combat --- - showPain - Shows that the player is hurt. Active when player has below 60% of their health --- - inspectCar - Inspects cars engine/trunk. Active when player is looking at an engine bay or trunk which is open --- - cheerBurnout - Cheering/clapping. Active when player is looking at a car performing a burnout or drifting --- - greet - Waving hello. Active when a player is looking at another player whom he hasn't greeted before in the last 15 minutes --- - conversation - Hand motion imitating player talking with others. Active when player is looking at a nearby player --- --- enabled: whether the specific action type should be enabled --- label: text displayed in the keybind tooltip --- animations: an inline table of animations or an `Config.animList` table of animations Config.animations = { lean = { enabled = true, label = 'sprijina-te', animations = { { dict = 'anim@scripted@freemode_npc@fix_agy_ig4_lamar@', anim = 'lean_wall_idle_01_lamar', flag = 33, offset = vector3(0.0, 0.35, 0.0), }, { dict = 'amb@world_human_leaning@male@wall@back@foot_up@idle_a', anim = 'idle_a', flag = 33, offset = vector3(0.0, 0.35, 0.0), }, { dict = 'anim@scripted@freemode_npc@fix_agy_ig4_lamar@', anim = 'lean_wall_idle_01_lamar', flag = 33, offset = vector3(0.0, 0.35, 0.0), }, { dict = 'amb@world_human_leaning@female@wall@back@holding_elbow@idle_a', anim = 'idle_a', flag = 33, offset = vector3(0.0, 0.35, 0.0), } }, }, leanBar = { enabled = true, label = 'apleca-te', animations = { { dict = 'anim@amb@nightclub@lazlow@ig1_vip@', anim = 'clubvip_base_laz', flag = 33, offset = vector3(0.0, -0.55, 0.02), }, { dict = 'amb@prop_human_bum_shopping_cart@male@idle_a', anim = 'idle_c', flag = 33, offset = vector3(0.0, -0.55, 0.02), }, { dict = 'anim@amb@nightclub@lazlow@ig1_vip@', anim = 'clubvip_dlg_jimmyboston_laz', flag = 33, offset = vector3(0.0, -0.45, 0.085), }, }, }, sit = { enabled = true, label = 'aseaza-te', animations = Config.animLists['sitting'], }, idle = { enabled = true, label = 'relaxeaza-te', minimumTime = 4, -- Minimum time in seconds it'll take before the suggestion appears animations = { { dict = 'rcmjosh1', anim = 'idle', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'rcmnigel1a', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'missbigscore2aig_3', anim = 'wait_for_van_c', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'amb@world_human_hang_out_street@female_arms_crossed@idle_a', anim = 'idle_a', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@heists@heist_corona@single_team', anim = 'single_team_loop_boss', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, } }, intimidate = { enabled = true, label = 'intimideaza', animations = { { dict = 'anim@mp_player_intselfiethe_bird', anim = 'idle_a', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@mp_player_intupperfinger', anim = 'idle_a_fp', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'mini@triathlon', anim = 'want_some_of_this', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@mp_player_intcelebrationfemale@knuckle_crunch', anim = 'knuckle_crunch', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'mp_player_int_uppergrab_crotch', anim = 'mp_player_int_grab_crotch', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'misscommon@response', anim = 'bring_it_on', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'misscommon@response', anim = 'screw_you', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, } }, showPain = { enabled = true, label = 'arata durere', animations = { { dict = 'anim@amb@casino@valet_scenario@pose_d@', anim = 'scratch_face_a_m_y_vinewood_01', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@machinery@lathe@', anim = 'scratch_amy_skater_01', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'timetable@gardener@smoking_joint', anim = 'idle_cough', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, } }, inspectCar = { enabled = true, label = 'inspectare vehicul', animations = { { dict = 'anim@amb@carmeet@checkout_engine@male_a@base', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@carmeet@checkout_engine@male_b@base', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@carmeet@checkout_engine@male_c@base', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@carmeet@checkout_engine@male_d@base', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@carmeet@checkout_engine@male_f@base', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@carmeet@checkout_engine@male_g@base', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@carmeet@checkout_engine@male_h@base', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, }, }, cheerBurnout = { enabled = true, label = 'aplauze', animations = { { dict = 'amb@world_human_cheering@male_a', anim = 'base', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'anim@amb@nightclub@peds@', anim = 'amb_world_human_cheering_female_c', flag = 33, offset = vector3(0.0, 0.0, 0.0), }, }, }, greet = { enabled = true, label = 'saluta', animations = { { dict = 'friends@frj@ig_1', anim = 'wave_e', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'gestures@m@standing@casual', anim = 'gesture_hello', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, }, }, conversation = { enabled = true, label = 'vorbeste', animations = { { dict = 'misscarsteal4@vendor', anim = 'idle_a_customer1', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'missfbi3_party_d', anim = 'stand_talk_loop_a_male1', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'missfbi3_party_d', anim = 'stand_talk_loop_a_male2', flag = 48, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'missfbi3_party_d', anim = 'stand_talk_loop_b_male2', flag = 49, offset = vector3(0.0, 0.0, 0.0), }, { dict = 'missfbi3_party_d', anim = 'stand_talk_loop_b_male3', flag = 49, offset = vector3(0.0, 0.0, 0.0), }, }, }, }