Config Files

The script is fully configurable, enabling you to tailor its behavior and features to your needs. Below is a list of the configuration files included in the resource.

--[[
    Thank you for purchasing from iZAAP STUDIOS
    Documentation: https://izaap-studios.gitbook.io/izaap-studios
    Need support? Join our official Discord: https://discord.gg/kNC9HJeskV

    Configure the values below according to your server.
]]

----------------------------------------
-- Core / Framework
----------------------------------------
Config = {}

-- Framework in use: 'qb' or 'esx'
Config.Framework = 'qb'

----------------------------------------
-- Notifications (Configurable)
----------------------------------------
Config.Notify = {
    -- Escape messages
    PedEscapeText        = "You can't escape your punishment...",
    CleanEscapeText      = "You can't escape the cleaning punishment...",

    -- Other messages
    NoPermissionText     = "You don't have permission to use this command.",
    NoReloadSkinText     = "You can't use this command while punished.",
    SweepCooldownText    = "Wait 5 seconds between sweeps.",
    CommandBlockedText   = "You can't use that command while punished.",

    -- Notify type (qb: 'error'/'success'/'primary', esx ignores type)
    Type = "error",

    -- Anti-spam cooldown (ms). Example: 5000 = max 1 notification every 5 seconds
    Cooldown = 5000
}

----------------------------------------
-- Commands
----------------------------------------
-- Command to open the admin punishment panel
Config.AdminCommand = 'panel'

----------------------------------------
-- Command Blocking (while punished)
-- Notes:
-- - These are command names WITHOUT "/" (e.g. "inventory", "phone", "reloadskin")
-- - Applies only to commands registered through the protected wrapper in this resource.
----------------------------------------
Config.BlockedCommands = {
    -- Blocked during PED punishment (isBanned and NOT cleaning)
    Ped = {
        "reloadskin"
        -- Add more here, example:
        -- "me",
        -- "ooc",
        -- "tweet"
    },

    -- Blocked during Cleaning punishment (isCleaning)
    Clean = {
        "reloadskin"
        -- Add more here if needed
    }
}

----------------------------------------
-- PED Punishment Settings
----------------------------------------
-- PED model used for punishment
Config.BanPedModel = 'a_c_pug'

-- Coordinates where PED-punished players are sent
Config.BanCoords = vector4(-427.8036, 1123.9847, 325.8543, 108.6573)

-- 3D text displayed above punished players (only when nearby)
Config.PunishText = "~r~I misbehaved :("

-- Logo shown in the punishment UI (direct image URL)
Config.BanLogoURL = 'https://r2.fivemanage.com/O7HR68Vs2I3U6tSAHnKJU/logo-izaap.png'

-- Remove entire inventory when punished (true = yes, false = no)
Config.ClearInventoryOnPunish = false

-- If true: player can move during PED punishment (still locked to the radius)
-- If false: player is fully frozen (default behavior)
Config.PedBanAllowMovement = false

-- Max allowed radius around BanCoords (in meters)
Config.PedBanRadius = 5.0

----------------------------------------
-- Cleaning Punishment: General Settings
----------------------------------------
-- Exit location after cleaning punishment ends or is manually removed
Config.CleanExit = vector4(-511.3666, -966.3117, 23.5697, 71.5098)

-- Maximum allowed radius around the spawn point of the cleaning location
Config.CleanLockRadius = 45.0

-- Default cleaning location key if none is specified
-- (Keep the ID names if your panel/server uses them)
Config.DefaultCleanLocation = 'barco'

----------------------------------------
-- Cleaning Punishment: Custom Points (Garage only by default)
-- You can freely modify these vectors if you use a custom mapped area.
----------------------------------------
Config.CleanPoints = {}

Config.CleanPoints.garage = {
    vector3(209.9678, -904.3438, 30.6954),
    vector3(218.8494, -891.7487, 30.7570),
    vector3(231.6635, -892.5304, 30.6920),
    vector3(237.9444, -881.9534, 30.4951),
    vector3(224.0916, -857.8337, 30.1331),
    vector3(227.7316, -867.5107, 30.4695),
    vector3(222.1317, -883.8396, 30.4921),
    vector3(219.0321, -866.2469, 30.7221),
    vector3(227.8282, -899.8823, 30.8646),
    vector3(208.6366, -914.4272, 30.6924),
    vector3(204.8481, -904.3099, 31.0975),
    vector3(186.5199, -891.9644, 31.1167)
}

----------------------------------------
-- Cleaning Punishment: Locations (fully configurable)
--  key   : identifier sent from panel/server (e.g., "barco", "garage")
--  label : pretty name shown in UI/logs
--  spawn : vector4(x, y, z, w) where the player spawns for cleaning
--  points: table of vector3() used as cleaning targets
----------------------------------------
Config.CleanLocations = {
    barco = {
        label = "Ship",
        spawn = vector4(-1392.4845, 6743.6299, 11.9807, 291.6497),
        points = {
            vector3(-1392.9098, 6742.0093, 11.9819), vector3(-1387.0553, 6744.4287, 11.9804),
            vector3(-1382.3003, 6742.9995, 8.9715),  vector3(-1388.7959, 6740.8062, 8.9715),
            vector3(-1399.3112, 6746.9893, 11.9076), vector3(-1401.4144, 6742.6572, 11.9076),
            vector3(-1392.9626, 6741.2837, 11.9496), vector3(-1390.6560, 6749.5449, 11.9131),
            vector3(-1387.2205, 6739.0171, 8.9715),  vector3(-1388.3867, 6744.8193, 8.9715),
            vector3(-1390.1150, 6749.2783, 11.9076), vector3(-1387.8693, 6745.4976, 11.9807)
        }
    },
    garage = {
        label = "Garage",
        spawn  = vector4(200.6078, -899.7336, 31.1206, 54.9348),
        points = Config.CleanPoints.garage
    },
    prision = {
        label = "Prison",
        spawn = vector4(1761.3434, 2489.3982, 45.8449, 125.9976),
        points = {
            vector3(1758.2224, 2483.2534, 45.8473), vector3(1757.7632, 2493.6379, 45.8446),
            vector3(1744.4055, 2481.8389, 45.8455), vector3(1776.8232, 2496.1641, 45.8477),
            vector3(1766.3768, 2494.1265, 49.2358), vector3(1773.7792, 2489.5583, 49.2436),
            vector3(1761.6102, 2482.2244, 49.2765), vector3(1754.2357, 2486.3728, 49.2364),
            vector3(1740.7302, 2478.0225, 45.8463), vector3(1757.7570, 2475.0146, 45.8519),
            vector3(1758.2618, 2500.5354, 45.8459), vector3(1769.5677, 2483.8606, 45.8488)
        }
    }
}

----------------------------------------
-- Skin Reload System (after punishment ends)
-- Options:
-- 'illenium'  -> triggers: 'illenium-appearance:client:reloadSkin'
-- 'qb'        -> triggers: 'qb-clothing:client:loadPlayerClothing'
-- 'esx_skin'  -> uses skinchanger to apply DB-stored skin

-- This script calls ReloadPlayerSkin() when a punishment ends.
-- You can customize how skins/clothing are reloaded by editing:
--   - integrations/client/reloadskin.lua
--   - integrations/server/reloadskin.lua

----------------------------------------
Config.ReloadSkinType = 'qb' -- change based on your clothing system

----------------------------------------
-- Cleaning Outfits
----------------------------------------
-- Male cleaning outfit
Config.CleaningOutfitMale = {
    tshirt_1 = 15, tshirt_2 = 0,
    torso_1 = 363, torso_2 = 0,
    arms = 1,
    pants_1 = 134, pants_2 = 0,
    shoes_1 = 12, shoes_2 = 0,
}

-- Female cleaning outfit
Config.FemaleCleaningOutfit = {
    tshirt_1 = 14, tshirt_2 = 0,
    torso_1 = 59,  torso_2 = 0,
    arms = 2,
    pants_1 = 35,  pants_2 = 0,
    shoes_1 = 10,  shoes_2 = 0
}

----------------------------------------
-- Discord Logging (Embeds)
-- Placeholders: {staffName}, {staffDiscord}, {targetName}, {targetDiscord}, {reason}, {duration}, {sweeps}, {type}
----------------------------------------
Config.LogTitles = {
    PedPunishment   = "PED Punishment Applied",
    CleanPunishment = "Cleaning Punishment Applied",
    PedUnpunish     = "PED Punishment Removed",
    CleanUnpunish   = "Cleaning Punishment Removed"
}

Config.LogTemplates = {
    PedPunishment   = "**Staff:** {staffName} ({staffDiscord})\n**Player:** {targetName} ({targetDiscord})\n**Reason:** {reason}\n**Duration:** {duration} seconds\n**Type:** PED",
    CleanPunishment = "**Staff:** {staffName} ({staffDiscord})\n**Player:** {targetName} ({targetDiscord})\n**Reason:** {reason}\n**Sweeps:** {sweeps}\n**Type:** CLEANING",
    PedUnpunish     = "**Staff:** {staffName} ({staffDiscord})\n**Player:** {targetName} ({targetDiscord})\n**Type:** PED",
    CleanUnpunish   = "**Staff:** {staffName} ({staffDiscord})\n**Player:** {targetName} ({targetDiscord})\n**Type:** CLEANING"
}

Last updated