Installation

Emote Menus

RP Emotes/DP Emotes, insert these in client > animationlist.lua > RP.Props (DP.Props for dpemotes)

 ["market"] = {
        "missfbi4prepp1",
        AnimationOptions = {
            Prop = "bzzz_prop_shop_basket_a",
            PropBone = 57005,
            PropPlacement = {
                0.34, -0.25, -0.24, -146.0, 115.0, 19.0
            },
            EmoteLoop = true,
            EmoteMoving = true
        }
    },
["market2"] = {
        "missfbi4prepp1",
        AnimationOptions = {
            Prop = "bzzz_prop_shop_basket_b",
            PropBone = 57005,
            PropPlacement = {
                0.34, -0.25, -0.24, -146.0, 115.0, 19.0
            },
            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
        }
    },
["guncase"] = {
        "move_weapon@jerrycan@generic",
        "idle",
        "Guncase",
        AnimationOptions =
        {
            Prop = "prop_gun_case_01",
            PropBone = 57005,
            PropPlacement = {
                0.10,
                0.02,
                -0.02,
                40.0,
                145.0,
                115.0
            },
            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
        }
    },

Scully Emotes

insert these in shared > data > emotes > prop_emotes.lua

{
            Label = 'Market 1',
            Command = 'market',
            Animation = 'idle',
            Dictionary = 'missfbi4prepp1',
            Options = {
                Flags = {
                    Loop = true,
                    Move = true,
                },
                Props = {
                    {
                        Bone = 57005,
                        Name = 'bzzz_prop_shop_basket_a',
                        Placement = {
                            vector3(0.34, -0.25, -0.24),
                            vector3(-146.0, 115.0, 19.0),
                        },
                    },
                },
            },
        },
        {
            Label = 'Market 2',
            Command = 'market2',
            Animation = 'idle',
            Dictionary = 'missfbi4prepp1',
            Options = {
                Flags = {
                    Loop = true,
                    Move = true,
                },
                Props = {
                    {
                        Bone = 57005,
                        Name = 'bzzz_prop_shop_basket_b',
                        Placement = {
                            vector3(0.34, -0.25, -0.24),
                            vector3(-146.0, 115.0, 19.0),
                        },
                    },
                },
            },
        },
{
        Label = 'Duffel Bag',
        Command = 'dufbag',
        Animation = 'idle',
        Dictionary = 'move_weapon@jerrycan@generic',
        Options = {
            Flags = {
                Loop = true,
                Move = true,
            },
            Props = {
                {
                    Bone = 28422,
                    Name = 'bkr_prop_duffel_bag_01a',
                    Placement = {
                        vector3(0.260000, 0.040000, 0.000000),
                        vector3(90.000000, 0.000000, -78.989998),
                    },
                },
            },
        },
    },
{
        Label = 'Guncase',
        Command = 'guncase',
        Animation = 'idle',
        Dictionary = 'move_weapon@jerrycan@generic',
        Options = {
            Flags = {
                Loop = true,
                Move = true,
            },
            Props = {
                {
                    Bone = 57005,
                    Name = 'prop_gun_case_01',
                    Placement = {
                        vector3(0.100000, 0.020000, -0.020000),
                        vector3(40.000000, 145.000000, 115.000000),
                    },
                },
            },
        },
    },
{
        Label = 'Shopping Bag 3',
        Command = 'shopbag3',
        Animation = 'idle',
        Dictionary = 'move_weapon@jerrycan@generic',
        Options = {
            Flags = {
                Loop = true,
                Move = true,
            },
            Props = {
                {
                    Bone = 28422,
                    Name = 'prop_cs_shopping_bag',
                    Placement = {
                        vector3(0.240000, 0.030000, -0.040000),
                        vector3(0.000000, -90.000000, 10.000000),
                    },
                },
            },
        },
    },

PLEASE NOTE YOU MAY ALREADY HAVE THESE EMOTES INSTALLED SO PLEASE CHECK AND MAKE SURE

Making New Shops

The "storeType" value determines the emote you do, so if you wanted to do a grocery store (the basket emote), you would put "storeType = 'Grocery'," as seen below:

["ballas247"] = {
        basketLocation = vector3(-54.21, -1754.48, 29.42),
        checkoutLocation = vector3(-48.37, -1757.91, 29.42),
        storeType = 'Grocery', 
        zones = { 
            {
                label = "Fruits",
                location = vector3(-55.44, -1753.16, 29.42),
                items = {
                    { name = "apple", label = "Apple", price = 2, icon = "fa-solid fa-utensils" }, 
                    { name = "orange", label = "Orange", price = 2, icon = "fa-solid fa-utensils" },
                    { name = "banana", label = "Banana", price = 2, icon = "fa-solid fa-utensils" }
                }
            },
            {
                label = "Snacks",
                location = vector3(-49.39, -1758.38, 29.42),
                items = {
                    { name = "airheads", label = "Air Heads", price = 1, icon = "fa-solid fa-utensils" }, 
                    { name = "bzzz_peanuts", label = "Peanuts", price = 2, icon = "fa-solid fa-utensils" },
                    { name = "bzzz_pretzels", label = "Pretzels", price = 3, icon = "fa-solid fa-utensils" }
                }
            },
            {
                label = "Essentials",
                location = vector3(-52.52, -1752.01, 29.42),
                items = {
                    { name = "mdbutter", label = "Butter", price = 2, icon = "fa-solid fa-utensils" }, 
                    { name = "chocolate", label = "Chocolate", price = 2, icon = "fa-solid fa-utensils" },
                    { name = "flour", label = "Flour", price = 3, icon = "fa-solid fa-utensils" },
                    { name = "bakingsoda", label = "Baking Soda", price = 4, icon = "fa-solid fa-utensils" }
                }
            },
            {
                label = "Drinks",
                location = vector3(-54.17, -1747.98, 29.42),
                items = {
                    { name = "water", label = "Water", price = 2, icon = "fa-solid fa-wine-glass" },
                    { name = "ecola", label = "E-Cola", price = 3, icon = "fa-solid fa-wine-glass" },
                    { name = "sprunk", label = "Sprunk", price = 3, icon = "fa-solid fa-wine-glass" }, 
                    { name = "bzzz_energy", label = "Energy Drink", price = 4, icon = "fa-solid fa-wine-glass" },
                }
            }
        }
    },

However, if you wanted to do a gunstore, with the gun case emote, you would put "storeType = 'Gun',", as seen below:

["gunstorelegion"] = {
        basketLocation = vector3(16.75, -1113.02, 29.8),
        checkoutLocation = vector3(22.4, -1106.88, 29.8),
        storeType = 'Gun', 
        zones = { 
            {
                label = "Armor",
                location = vector3(18.37, -1110.02, 29.8),
                items = {
                    { name = "armor", label = "Armor", price = 120, icon = "fa-solid fa-utensils" }, 
                    { name = "heavyarmor", label = "Heavy Armor", price = 2, icon = "fa-solid fa-utensils" }
                }
            },
            {
                label = "Ammo",
                location = vector3(22.62, -1109.62, 29.8),
                items = {
                    { name = "ammo-45", label = ".45 ACP Ammo", price = 25, icon = "fa-solid fa-utensils" }, 
                    { name = "ammo-rifle", label = "Rifle Ammo", price = 45, icon = "fa-solid fa-utensils" },
                    { name = "ammo-shotgun", label = "Shotgun Ammo", price = 60, icon = "fa-solid fa-utensils" }
                }
            },
            {
                label = "Guns",
                location = vector3(20.06, -1106.0, 29.8),
                items = {
                    { name = "weapon_pistol", label = "Pistol", price = 450, icon = "fa-solid fa-utensils" }, 
                    { name = "weapon_assaultrifle", label = "Assault Rifle", price = 3600, icon = "fa-solid fa-utensils" },
                    { name = "weapon_pumpshotgun", label = "Pump Shotgun", price = 4500, icon = "fa-solid fa-utensils" }
                }
            }
        }          
    },

The store types are: Grocery, Gun, Leisure, and Other

If using ps dispatch for "shop lifting"

Add this to ps-dispatch > client > alerts under the custom alert function

local function basketrobbery()
    local coords = GetEntityCoords(cache.ped)
    local vehicle = GetVehicleData(cache.vehicle)

    local dispatchData = {
        message = locale('basketrobbery'), -- add this into your locale
        codeName = 'basketrobbery', -- this should be the same as in config.lua
        code = '10-35',
        icon = 'fas fa-store',
        priority = 2,
        coords = coords,
        street = GetStreetAndZone(coords),
        heading = GetPlayerHeading(),
        jobs = { 'leo' }
    }

    TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('basketrobbery', basketrobbery)

Add this to ps-dispatch > shared > config under the Config.Blips section

['basketrobbery'] = { -- Need to match the codeName in alerts.lua
        radius = 0,
        sprite = 119,
        color = 1,
        scale = 1.5,
        length = 2,
        sound = 'Lose_1st',
        sound2 = 'GTAO_FM_Events_Soundset',
        offset = false,
        flash = false
    },

If you perfer item images over icons

Replace line 283 in client with this

icon = "nui://ox_inventory/web/images/"..item.name..".png",

Enjoy! You can let us know if theres any issues or if you have any questions here

Last updated