Docs /Foltone CCTV/Configuration
v1.1.0

Configuration — foltone_cctv

Toute la configuration se fait dans le fichier config.lua.

Framework et Langue

Config.Framework = "esx"       -- "esx", "qbcore" ou "qbx"
Config.Locale = "en"           -- "en" ou "fr"
Config.InteractionType = "ox_target" -- "ox_target", "drawtext" ou "marker"
Config.Debug = false
ParametreTypeDescription
FrameworkstringFramework du serveur
LocalestringLangue des notifications et de l’interface
InteractionTypestringMethode d’interaction avec les PNJ et stations
DebugbooleanActiver les messages de debug en console

Items

Config.TabletItem = "cctv_tablet"
Config.StationItem = "cctv_station"
Config.StationProp = "prop_cctv_unit_01"
ParametreTypeDescription
TabletItemstringNom de l’item tablette dans l’inventaire
StationItemstringNom de l’item station de surveillance
StationPropstringModele du prop GTA pour les stations fixes

Accessoires boutique

Config.ShopAccessories = {
    {
        id = "tablet",
        item = "cctv_tablet",
        label = "CCTV Tablet",
        image = "tablet.png",
        description = "Portable tablet to check your cameras remotely.",
        specs = { "PORTABLE", "WIRELESS" },
        price = 2000,
    },
    {
        id = "station",
        item = "cctv_station",
        label = "CCTV Monitor",
        image = "station.png",
        description = "Fixed control station to monitor all your cameras.",
        specs = { "HD SCREEN", "MULTI-CAM" },
        price = 5000,
    },
}

Les accessoires sont affiches aux cotes des cameras dans la boutique. L’item station peut etre place dans le monde en utilisant l’item.

Types de cameras

Config.MaxCamerasPerPlayer = 10
Config.PlacementDistance = 8.0
ParametreTypeDescription
MaxCamerasPerPlayernumberNombre maximum de cameras par joueur
PlacementDistancenumberDistance maximale (metres) pour placer une camera

Structure d’un type de camera

Chaque entree dans Config.CameraTypes definit un modele de camera :

{
    id = "standard",
    item = "cctv_cam_standard",
    label = "Standard",
    image = "standard.png",
    description = "Classic wall camera. Reliable and discreet.",
    specs = { "FOV 70", "ZOOM x4", "60 FPS" },
    prop = "prop_cctv_cam_03a",
    price = 3000,
    wallOffset = 0.0,
    offset = {
        pos = vector3(0.45, 0.37, 0.35),
        pitch = 1.3,
        yaw = -56.3,
        propPitch = 0.0,
        propRoll = 0.0,
        propYaw = 170.0,
    },
    fov = { default = 70.0, min = 25.0, max = 100.0 },
    zoomStep = 5.0,
    rotationSpeed = 2.0,
    maxVertAngle = 60.0,
},
ParametreTypeDescription
idstringIdentifiant unique (stocke en base de donnees)
itemstringNom de l’item inventaire pour ce type
labelstringNom affiche dans la boutique
descriptionstringDescription affichee dans la boutique
specstableBadges de specs affiches dans la boutique
propstringNom du modele prop GTA
pricenumberPrix d’achat en boutique
imagestringNom du fichier PNG dans client/nui/img/ pour l’affichage boutique
wallOffsetnumberDistance d’offset depuis la surface du mur
offset.posvector3Offset de position de la vue camera (avant, gauche, haut)
offset.pitchnumberOffset de pitch de la vue (degres)
offset.yawnumberOffset de yaw de la vue (degres)
offset.propPitchnumberCorrection de rotation pitch du prop (degres)
offset.propRollnumberCorrection de rotation roll du prop (degres)
offset.propYawnumberOffset de rotation du prop par rapport a la direction de vue (degres)
fov.defaultnumberChamp de vision par defaut (degres)
fov.minnumberFOV minimum (zoom max)
fov.maxnumberFOV maximum (dezoom max)
zoomStepnumberChangement de FOV par cran de scroll
rotationSpeednumberSensibilite de rotation a la souris
maxVertAnglenumberAngle de rotation vertical maximum (degres)

Types par defaut

IDPropPrixFOVDescription
standardprop_cctv_cam_03a$3 00070Camera murale classique
bulletprop_cctv_cam_04b$4 00055Longue portee, zoom puissant
mini_bullethei_prop_bank_cctv_02$3 50055Compacte et discrete
shop_camm24_1_prop_m24_1_carrier_bank_cctv_01$8 00060Camera boutique avec PTZ 360

Calibrer les offsets

Utilisez la commande de debug en jeu pour calibrer les offsets :

/cctv_debug
  1. Approchez-vous d’une camera placee (< 15m)
  2. Lancez la commande — entre en vue camera debug
  3. Ajustez avec les controles :
    • Souris — offset pitch / yaw
    • Scroll — rotation du prop (propYaw)
    • Fleches — offset de position (avant/arriere/gauche/droite)
    • E / Q — offset de position (haut/bas)
    • Backspace — quitter et afficher les valeurs
  4. Copiez les valeurs affichees dans Config.CameraTypes[x].offset

Permissions

Config.AllowedJobs = {
    "police",
    "ambulance",
}
ParametreTypeDescription
AllowedJobstableJobs autorises a poser des cameras. Table vide = tout le monde

Detection de mouvement

Config.MotionDetection = {
    Radius = 15.0,
    Cooldown = 60,
    Default = true,
}
ParametreTypeDescription
RadiusnumberRayon de detection en metres
CooldownnumberSecondes entre les alertes pour la meme camera
DefaultbooleanDetection activee par defaut sur les nouvelles cameras

Destruction

Config.DestructionHits = 3

Config.DestructionWeapons = {
    "WEAPON_CROWBAR",
    "WEAPON_PISTOL",
    -- ...
}
ParametreTypeDescription
DestructionHitsnumberNombre de coups/tirs necessaires pour detruire une camera
DestructionWeaponstableListe des armes pouvant endommager les cameras

Effets visuels

Config.CameraEffect = {
    timecycle = "CAMERA_secuirity",
    strength = 0.6,
    vignette = 1.0,
    grain = 1.0,
    scanline = 1.0,
}
ParametreTypeDescription
timecyclestringNom du timecycle modifier GTA
strengthnumberIntensite du filtre (0.0 = desactive, 1.0 = max)
vignettenumberIntensite du vignetage (0.0 = desactive, 1.0 = max)
grainnumberIntensite du grain (0.0 = desactive, 1.0 = max)
scanlinenumberIntensite de la scanline (0.0 = desactive, 1.0 = max)

Timecycles disponibles : CAMERA_secuirity (defaut), CAMERA_BW (noir et blanc), NG_filmic08 (cinematique), phone_cam3 (look webcam).

Captures

Config.MaxCaptures = 20

Nombre maximum de captures sauvegardees par joueur. Quand la limite est atteinte, la plus ancienne est automatiquement supprimee.

Necessite screenshot-basic et set screenshot_basic_allow_fs_write "true" dans server.cfg.

PNJ vendeur

Config.Ped = {
    model = "s_m_y_ammucity_01",
    scenario = "WORLD_HUMAN_STAND_IMPATIENT",
}

Positions

Boutiques

Config.ShopPositions = {
    {
        pos = vector3(72.25, -1399.10, 29.38),
        heading = 270.0,
        blip = { sprite = 689, color = 3, scale = 0.7, label = "Security Shop" },
    },
}

Ordinateurs fixes

Config.ComputerPositions = {
    { pos = vector3(441.81, -982.08, 30.69), heading = 0.0, label = "computer_label" },
}

Postes de surveillance

Config.StationPositions = {
    { pos = vector3(441.81, -982.08, 30.69), heading = 0.0 },
}

Interaction

Config.InteractionDistance = 2.5

Config.Marker = {
    type = 1,
    scale = vector3(1.0, 1.0, 0.5),
    color = { r = 59, g = 130, b = 246, a = 120 },
}

Notifications

function ClientNotification(message, type)
    exports['ox_inventory']:Notification(message)
end

Surchargez cette fonction dans config.lua pour utiliser votre propre systeme de notification. Le serveur declenche l’event client foltone_cctv:notify qui appelle cette fonction.