KuzQuality's Security Systems


Intro | Entity types

Laser

A line between two points. Detects anything which breaks the line between said points. When the line between the points is broken, events or callbacks can be triggered. Lasers can be oscillating between two end points as well. The color and opacity of the lasers can be adjusted dynamically.

Controller

A hackable controller panel which has the ability to temporarily disable defined lasers or trigger a callback function; on both: success and failure.

Alarm

An auditory and visual alarm. Once triggered it will play off an alarm sound and flash lights for a defined duration.


Usage | Basics

To call the exported functions, use the FiveM exports.

Example exports['kq_security']:CreateLaser(name, data)


Basic usage | Lasers

Laser properties

  • origin - vector3*

    • The starting point of the laser

  • endPoint - vector3

    • The end point of the laser

  • endPointA - vector3

    • The primary endpoint of a laser. Used for moving lasers. Always used in combination with endPointB

  • endPointB - vector3

    • The secondary endpoint of a laser. Used for moving lasers. Always used in combination with endPointA

  • color - table

    • A table containing the rgba values of the laser color. e.g {r = 255, g = 0, b = 0, a = 255}

  • speed - float

    • Movement speed of the laser. Only used for moving lasers

  • maxLength - float*

    • Max length of the laser

  • damage - int

    • Amount of damage that the laser should deal

  • ragdoll - boolean

    • Whether the laser should make players ragdoll on hit

  • handler - function/callback

    • Callback function triggered upon laser trigger

  • triggers - table

    • A custom table containing events which will be triggered upon laser trigger

    • See below for an example table

  • alarms - table

    • Table with the names of the alarms which the laser will trigger

  • cooldown - int

    • Cooldown duration in milliseconds; aka, time between each laser trigger event

  • active - boolean

    • Whether the laser should be active upon creation

(* = Required)

Example:

Laser event triggers

As seen above, lasers can trigger events upon trigger. See below to find out more about the structure of these events

Triggers is a table of multiple event triggers. These should contain the following values:

  • event - string

    • the event name which should be triggered

  • type - string - options: server, client

    • The network type of the event

  • parameters - table

    • Parameters which will be sent in the event as its parameters

Example:

Create

Used for creating a new laser

CreateLaser(name, data)

Arguments

  • Name - String - Unique key of the laser

  • Data - Table - Table containing all laser properties

Returns

  • Laser object - This object can be used to manipulate the laser after its creation

Getting the list of all lasers

GetAllLasers()

Returns

  • Table of all laser objects

Getting a laser by its name

GetLaserByName(name)

Arguments

  • Name - String - Name of the laser you're trying to retrieve

Returns

  • Laser object

Getting the nearest laser

GetNearestLaser(coords, maxDistance)

Arguments

  • Coords - vector3 - The location from which you're trying to find the nearest laser

  • MaxDistance - float - The maximum distance in meters in which you're looking for a laser

Returns

  • Laser object

  • Distance to the laser

Returns nil when nothing is found


Basic usage | Controllers

Controller properties

  • coords - vector3*

    • The location of the controller

  • rotation - vector3*

    • The rotation of the controller

  • lasers - table

    • The table containing laser names which will be affected upon hacking

  • hacking - table*

    • A table containing the following values:

      • hackable - boolean*

        • Whether the controller should be hackable

      • disableLasers - boolean*

        • Whether the controller should disable the lasers upon hacking

      • duration - int*

        • Duration of the lasers outage in milliseconds

      • hackItems - table of items*

        • List of item names which are able to be used as the hacking tool

      • successHandler - function/callback

        • The callback which will be called upon a successful hack of the controller

      • failureHandler - function/callback

        • The callback which will be called upon a failure to hack the controller

(* = Required)

Example data

Create

Used for creating a new controller

CreateController(name, data)

Arguments

  • Name - String - Unique key of the controller

  • Data - Table - Table containing all controller properties

Returns

  • Controller object - This object can be used to manipulate the controller after its creation

Getting the list of all controllers

GetAllControllers()

Returns

  • Table of all controller objects

Getting a controller by its name

GetControllerByName(name)

Arguments

  • Name - String - Name of the controller you're trying to retrieve

Returns

  • Controller object

Getting the nearest controller

GetNearestController(coords, maxDistance)

Arguments

  • Coords - vector3 - The location from which you're trying to find the nearest controller

  • MaxDistance - float - The maximum distance in meters in which you're looking for a controller

Returns

  • Controller object

  • Distance to the controller

Returns nil when nothing is fo


Basic usage | Alarms

Alarm properties

  • coords - vector3*

    • The location of the controller

  • rotation - vector3*

    • The rotation of the controller

  • duration - number*

    • Duration of how long the alarm will be going off for in seconds

  • sound - boolean*

    • Whether the alarm should emit sound

  • light - table*

    • A table containing the following values

      • rgb - table

        • A table containing the rgb values of the light. e.g. {100, 0, 0}

      • range - float

        • Range/size of the light in meters

      • intensity - float

        • Intensity of the emitted light

(* = Required)

Example data

Create

Used for creating a new alarm

CreateAlarm(name, data)

Arguments

  • Name - String - Unique key of the alarm

  • Data - Table - Table containing all alarm properties

Returns

  • Alarm object - This object can be used to manipulate the alarm after its creation

Getting the list of all alarms

GetAllAlarms()

Returns

  • Table of all alarm objects

Getting an alarm by its name

GetAlarmByName(name)

Arguments

  • Name - String - Name of the alarm you're trying to retrieve

Returns

  • Alarm object

Getting the nearest alarm

GetNearestAlarm(coords, maxDistance)

Arguments

  • Coords - vector3 - The location from which you're trying to find the nearest alarm

  • MaxDistance - float - The maximum distance in meters in which you're looking for an alarm

Returns

  • Alarm object

  • Distance to the alarm

Returns nil when nothing is found


Advanced usage | Lasers

Once you have created a laser you are able to modify it on the go.

Example:

Laser functions

Delete()

Deletes the laser

SetActive(active)

Sets the lasers active state (true or false)

SetHandler(callback)

Sets the trigger handler to a new callback function

SetTrigger(triggerTable)

Sets the trigger to a new trigger table (see basic usage for table example)

SetColor(colorTable)

Sets a new color. Color table example: {r = 0, g = 255, b = 0, a = 150}

SetOpacity(newOpacity)

Sets the laser opacity to a new value without affecting its color

SetSpeed(newSpeed)

Changes the laser speed. Only affects moving lasers

SetCooldown(newCooldown)

Changes the laser trigger cooldown


Advanced usage | Controllers

Once you have created a controller you are able to modify it on the go.

Example:

Controller functions

Delete()

Deletes the controller


Advanced usage | Alarms

Once you have created an alarm you are able to modify it on the go.

Example:

Alarm functions

Delete()

Deletes the alarm

Trigger()

Triggers the alarm

Full usage example | Laser


Full usage example | Controller


Full usage example | Alarm