Suty
Community Service

Installation

Installation

1. Drop the resource

Extract suty-sv_sync into resources/[suty]/suty-sv_sync.

2. Ensure in server.cfg

ensure ox_lib
ensure oxmysql
ensure ox_inventory
ensure suty-sv_sync

3. Database

Config.Database.autoInstall = true (default) creates the tables on first start. If you prefer manual SQL, set it to false and run the SQL in [INSTALL SQL]/ against your DB.

4. Set framework + locations

config.lua:

Config.Framework = 'qbx'    -- 'qbx' | 'qb' | 'esx'

Config.ServiceLocation = vector3(3083.0, -4722.0, 15.26)    -- where players spawn on assignment
Config.ReturnLocation  = vector3(276.72, -346.45, 44.92)    -- where they spawn on release

The default coordinates put players at a remote desert area — change to match wherever you want service to happen.

5. Permissions

Choose Discord roles (recommended) or ACE groups:

Config.Permissions = {
    useDiscordWhitelist = true,         -- true = Discord, false = ACE
    discordRoles = { '1320234519873323082' },   -- Discord role IDs
    discordIDs   = { '878077871443288086' },    -- specific Discord user IDs
    allowedGroups = { 'mod', 'admin', 'god' },  -- used when useDiscordWhitelist = false
}

If using Discord, also fill out:

Config.Discord = {
    botToken = 'YOUR_DISCORD_BOT_TOKEN',
    guildId  = 'YOUR_DISCORD_SERVER_ID',
}

The Discord bot needs View Server Members permission to look up roles.

6. Configure task locations

Config.TaskLocations = {
    vector3(3084.5, -4725.5, 15.26),
    vector3(3092.0, -4722.0, 15.26),
    ...
}

Add as many coordinates as you want — the script picks one randomly per task.

7. Verify

/comserv <serverid> 10 Testing

The target player should teleport to the service location, get a routing bucket, and see the panel with 10 pending tasks.