RM-ScriptsRM-SCRIPTS
RM-Interactions

Configuration

Provider, interaction, security, item, and editable-hook reference.

Configuration

Providers

Config.Framework = 'auto' -- auto | qbox | qb | esx | standalone
Config.Inventory = 'auto' -- auto | ox | qb | esx | custom
Config.Notify = 'auto'    -- auto | ox | qbox | qb | esx
Config.Target = 'auto'    -- auto | ox | qb
Config.Appearance = 'illenium' -- illenium | custom
Config.Minigame = 'ox_lib'     -- ox_lib | at-minigames | your_minigame | none
Config.NotificationTitle = 'Interactions'

auto selects the first supported running provider. Use explicit values when multiple compatible resources are running.

Gameplay

Config.PoliceGroups = { 'police' }

Config.Durations = {
    PoliceSearch = 5000,
    Search = 15000,
    PutBagOn = 4000,
    TakeBagOff = 4000,
    TrimHair = 10000,
}

Config.CuffEscapeChance = 50
Config.RestraintAutoReleaseMinutes = 20

Police groups only receive the faster search duration; they do not exclusively own the interactions.

Security

Config.Security = {
    InteractionDistance = 4.0,
    VehicleDistance = 6.0,
    RateLimitMs = 500,
    CarryRequestTimeoutMs = 15000,
    RequireRestrainedForEscort = true,
    RequireRestrainedForVehicle = true,
    RequireRestrainedForBag = true,
    RequireRestrainedForSearch = false,
}

Disabled options and security rules are enforced server-side, not only hidden from target menus.

Interaction toggles

Config.Options = {
    Search = true,
    Cuff = true,
    CuffZipties = true,
    UnlockHandcuffs = true,
    RemoveZipties = true,
    Drag = true,
    ReleaseDrag = true,
    PutIntoCar = true,
    BagOnHead = true,
    BagOffHead = true,
    Carry = true,
    TakeOutOfCar = true,
    PutIntoCarFromCarry = true,
    PutIntoTrunk = false,
    TakeOutOfTrunk = false,
    HairTrim = true,
}

Items

Config.Items = {
    ziptiesItem = 'zipties',
    handcuffsItem = 'handcuffs',
    bagItem = 'blindfold',
    hair_trimmerItem = 'hair_trimmer',
}

Custom minigame

Select a name in Config.Minigame, then edit the single function in client_editable.lua:

function PlayInteractionMinigame()
    if Config.Minigame == 'ox_lib' then
        return lib.skillCheck({ 'medium', 'hard' }, { 'w', 'a', 's', 'd' }) == true
    elseif Config.Minigame == 'at-minigames' then
        return exports['at-minigames']:Play('skillbar', {
            difficulty = 'medium',
        }) == true
    end

    return false
end

Return true only when the restrained player wins and escapes.

Editable hooks

client_editable.lua exposes custom appearance, inventory opening, minigame, phone, progress, carry confirmation, text UI, and medical/death hooks.

server_editable.lua exposes permission checks, interaction logging, restraint lifecycle, medical/death detection, and custom inventory item operations.