STG ScriptsDocumentation
3 in 1 Shop

Configuration

Every option in STG 3 in 1 Shop config.lua, from robberies, rewards and police jobs to blips, clerks, items, store locations, Discord logs and notifications.

All settings live in stg-shop/config.lua. The file stays editable in the escrow version. Restart the resource after a change.

Framework

STG.Framework = "auto"

auto detects qb-core, qbx_core or es_extended, in that order. Set it to esx or qb to force one. QBOX uses qb.

Language

STG.Language = "en"

Available: en, de. To change a text, edit stg-shop/locale/locales.lua.

Weapons as items

STG.weaponWithItem = false

Only used on ESX. When false, weapons are added to the player's loadout. Set it to true when your inventory handles weapons as items, for example ox_inventory. On QBCore and QBOX, weapons are always given as items.

Weapon license

STG.license = false

Set to true to block the weapon shop for players without a weapon license. They get the "You need weapon license!" message instead.

Robberies

STG.robAble = true
STG.minCop = 0
STG.robTime = 60
STG.robRenew = 10000

A robbery starts when a player aims a loaded gun near a store. A countdown runs on screen, then the clerk opens the till, fills a bag with cash and throws it. The robber walks over the bag to claim the reward.

Prop

Type

Police jobs

STG.PoliceJobs = {
    "police",
    "sheriff"
}

Players with one of these jobs count towards STG.minCop and get the robbery alert: a CCTV photo of the robber and the store name. They can press E to set a waypoint to the store or Backspace to close the alert.

Weapon shop blacklist

STG.weaponshopBlackListJobs = {
    "police"
}

Players with one of these jobs cannot buy in the weapon shop and get the "Your job in blacklist!" message. The supermarket and the black market stay open to them.

Robbery rewards

STG.robReward = {
    weaponshop = { minMoney = 3000, maxMoney = 6000 },
    supermarket = { minMoney = 1000, maxMoney = 2000 },
    blackmarket = { minMoney = 5000, maxMoney = 7000 }
}

STG.robItems = {
    weaponshop = {
        [1] = { item = "anker", count = 2, winpercentage = 100 },
        [2] = { item = "water", count = 2, winpercentage = 20 }
    },
    supermarket = { ... },
    blackmarket = { ... },
}

The robber gets a random amount of cash between minMoney and maxMoney for the store type. Each entry in STG.robItems is then rolled on its own.

Prop

Type

Clerks

STG.NPC = {
    weaponshop = "a_m_o_soucent_02",
    supermarket = "mp_m_shopkeep_01"
}

Ped model of the clerk for each shop type. Clerks are frozen and cannot be killed. Every shop type you use in STG.Positions needs a model here. A list of ped models is on the RAGE wiki.

Blips

STG.Blips = {
    weaponshop = { label = "Weapon Shop", sprite = 110, scale = 0.7, color = 5, visible = true },
    supermarket = { label = "Super Market", sprite = 59, scale = 0.7, color = 3, visible = true },
    blackmarket = { label = "BlackMarket", sprite = 59, scale = 0.7, color = 3, visible = false }
}

Every shop type needs an entry here, even a hidden one, because label is also the store name.

Prop

Type

Shop descriptions

STG.description = {
    supermarket = "yes you are right! its a market",
    weaponshop = "just a weaponshop",
    blackmarket = "just a blackmarket"
}

Short text shown under the shop title in the store menu.

Items

STG.Items = {
    ["supermarket"] = {
        ["Essen"] = {
            { name = "coffee", label = "Coffee", price = 10, type = "item" },
            -- ...
        },
    },
    ["weaponshop"] = {
        ["Waffen"] = {
            { name = "weapon_pistol", label = "Pistol", price = 1322, type = "weapon", ammoItem = "pistolammo" },
            -- ...
        },
    },
    ["blackmarket"] = { ... },
}

Items are grouped by shop type, then by category. The category name is the button shown in the supermarket and black market menus.

Prop

Type

Step by step guides for new items and their images are on Shops and items.

Store locations

STG.Positions = {
    {coords = vector3(373.875, 325.896, 103.566), type = "supermarket", npcCoord = vector4(372.507, 326.479, 102.566, 252.06)},
    -- ...
}

The script ships with 17 supermarkets, 8 weapon shops and 1 black market.

Prop

Type

Weapon stats

STG.weaponStats = {
    weapon_pistol = {
        [1] = { name = "damage", label = "Damage", value = 10, tittle = "DS" },
        [2] = { name = "magazine", label = "Magazine", value = 10, tittle = "DS" },
        -- ...
    },
}

Stat bars shown on the right side of the weapon shop for the selected weapon. Weapons without an entry show no stats.

Prop

Type

Discord logs

Webhooks live in stg-shop/webhook.lua:

Settings.Webhook = {
    avatarURL = "https://your-image-url/logo.png",
    username = "STG",
    color = 14552002,
    Webhooks = {
        market = "",
        weaponshop = ""
    }
}

Prop

Type

Each log contains the player name, the cost, the items or weapon and the payment method.

Notifications

Notifications live in stg-shop/notify.lua. By default they use ESX.ShowNotification or QBCore.Functions.Notify. Replace the body of the stg-shop:notify handler to use your own notification system. The police alert is drawn in the same file.

Still having trouble?

Open a ticket on our Discord. Our team answers around 15 hours a day.

Get help on Discord

On this page