Koja Scripts
KOJA-LIB

Points

The points system lets you define coordinate-based trigger zones.

Points

The points system lets you define coordinate-based trigger zones. When a player enters, exits, or stays near a point, callbacks fire automatically.


Creating a Point

local point = KOJA.Client.points.new(properties)

Properties

FieldTypeRequiredDescription
coordsvector3YesCentre of the zone
distancenumberYesRadius in metres
onEnterfunction(self)NoCalled once when the player enters the zone
onExitfunction(self)NoCalled once when the player exits the zone
nearbyfunction(self)NoCalled repeatedly (every ~300 ms) while the player is inside

Any additional fields you add become properties of the point object and are accessible in callbacks via self.

Returns CPoint — the point object.


Point Object

Property / MethodDescription
point.idUnique numeric ID
point.coordsvector3 position
point.distanceRadius
point.currentDistanceDistance from the player right now (only set when nearby)
point.isClosesttrue when this is the closest active point
point:remove()Removes the point and clears all callbacks

Examples

Simple Enter/Exit

local atm = KOJA.Client.points.new({
    coords   = vector3(100.0, 200.0, 30.0),
    distance = 2.0,

    onEnter = function(self)
        print('Near ATM')
    end,

    onExit = function(self)
        print('Left ATM')
    end,
})

Recurring Nearby Check

KOJA.Client.points.new({
    coords   = vector3(100.0, 200.0, 30.0),
    distance = 10.0,

    nearby = function(self)
        -- runs every ~300 ms while the player is within 10 m
        DrawMarker(1, self.coords.x, self.coords.y, self.coords.z, ...)
    end,
})

Custom Properties

local shop = KOJA.Client.points.new({
    coords    = vector3(25.0, -1335.0, 29.5),
    distance  = 3.0,
    shopType  = 'weapons',   -- custom field

    onEnter = function(self)
        print('Entered shop type:', self.shopType)
    end,
})

Removing a Point

local point = KOJA.Client.points.new({ ... })

-- later:
point:remove()

Static Methods

-- All registered points
local all = KOJA.Client.points.getAllPoints()

-- Points within their distance radius of the player right now
local nearby = KOJA.Client.points.getNearbyPoints()

-- The single closest point to the player
local closest = KOJA.Client.points.getClosestPoint()

SetInterval / ClearInterval

The points module also exposes interval helpers for recurring tasks.

local id = SetInterval(function()
    -- runs every 1000 ms
end, 1000)

-- Update the interval without stopping it
SetInterval(id, 2000)

-- Stop it
ClearInterval(id)

Resource Cleanup

Points created by a resource are automatically removed when that resource stops. No manual cleanup is needed.

  • Callbacks — koja-lib provides a callback system that lets client scripts request data from the server and vice versa.
  • Inventory — Client-side inventory functions let you check what items the local player has without a server round-trip.
  • DUI — DUI (Dynamic UI) allows you to render a web page as a texture on any in-game surface — screens, billboards, laptops, phones, etc.
  • Money — Retrieve the local player's money balance from the client side via a server callback.
  • Keybinds — Register persistent key bindings that players can rebind in the GTA V settings menu.
  • Notifications — koja-lib provides two notification interfaces: SendNotify (routes through the configured backend) and LibNotify (built-in koja-lib notification).
  • Client API — back to the section overview