MRI Qbox BrasilMRI Qbox
OverextendedOx LibModulesZones

Shared

Alternativa mais rápida ao PolyZone, utilizando glm.polygon.

Atualmente as zones possuem apenas suporte básico no lado do servidor. Algumas funcionalidades não funcionarão, como onEnter, onExit e inside.

lib.zones.poly

lib.zones.poly(data)
  • data: table
    • points: vector3[]
      • Um array de pontos 3D que definem a forma do polígono.
    • thickness?: number
      • A altura do polígono, padrão 4.
    • onEnter?: function(self: table)
    • onExit?: function(self: table)
    • inside?: function(self: table)
    • debug?: boolean

lib.zones.box

lib.zones.box(data)
  • data: table
    • coords: vector3
    • size?: vector3
      • Padrão: vec3(2, 2, 2)
    • rotation?: number
      • Ângulo em graus, padrão 0.
    • onEnter?: function(self: table)
    • onExit?: function(self: table)
    • inside?: function(self: table)
    • debug?: boolean

lib.zones.sphere

lib.zones.sphere(data)
  • data: table
    • coords: vector3
    • radius?: number
      • Padrão: 2
    • onEnter?: function(self: table)
    • onExit?: function(self: table)
    • inside?: function(self: table)
    • debug?: boolean

Métodos

remove

Zones podem ser deletadas usando o método remove. Os dados não serão removidos do script, e podem ser usados para recriar a zone mais tarde.

local zone = lib.zones.box({...})

zone:remove()

SetTimeout(500, function()
    lib.zones.poly(zone)
end)

contains

Testa se um ponto existe dentro da zone, retornando um boolean.

local zone = lib.zones.box({...})

if zone:contains(vec3(1, 1, 1)) then
    print('point is inside zone!')
end

Exemplos de uso

function onEnter(self)
    print('entered zone', self.id)
end

function onExit(self)
    print('exited zone', self.id)
end

function inside(self)
    print('you are inside zone ' .. self.id)
end

local poly = lib.zones.poly({
    points = {
        vec(413.8, -1026.1, 29),
        vec(411.6, -1023.1, 29),
        vec(412.2, -1018.0, 29),
        vec(417.2, -1016.3, 29),
        vec(422.3, -1020.0, 29),
        vec(426.8, -1015.9, 29),
        vec(431.8, -1013.0, 29),
        vec(437.3, -1018.4, 29),
        vec(432.4, -1027.2, 29),
        vec(424.7, -1023.5, 29),
        vec(420.0, -1030.2, 29),
        vec(409.8, -1028.4, 29),
    },
    thickness = 2,
    debug = true,
    inside = inside,
    onEnter = onEnter,
    onExit = onExit
})

local sphere = lib.zones.sphere({
    coords = vec3(442.5363, -1017.666, 28.65637),
    radius = 1,
    debug = true,
    inside = inside,
    onEnter = onEnter,
    onExit = onExit
})

local box = lib.zones.box({
    coords = vec3(442.5363, -1017.666, 28.65637),
    size = vec3(1, 1, 1),
    rotation = 45,
    debug = true,
    inside = inside,
    onEnter = onEnter,
    onExit = onExit
})

Script de criação de Zones

Você pode usar nosso criador de zones embutido com /zone — passando poly, box ou sphere como argumento. Os controles disponíveis serão exibidos no lado direito.

As zones serão salvas em ox_lib/created_zones.lua no formato escolhido.

local poly = lib.zones.poly({
    name = poly,
    points = {
        vec(447.9, -998.8, 25.8),
        vec(450.3, -998.2, 25.8),
        vec(449.9, -995.5, 25.8),
        vec(447.2, -995.6, 25.8),
        vec(446.3, -997.9, 25.8),
    },
    thickness = 2,
})
{
    name = poly,
    points = {
        vec(447.9, -998.8, 25.8),
        vec(450.3, -998.2, 25.8),
        vec(449.9, -995.5, 25.8),
        vec(447.2, -995.6, 25.8),
        vec(446.3, -997.9, 25.8),
    },
    thickness = 2,
},
exports.ox_target:addPolyZone({
    name = poly,
    points = {
        vec(447.9, -998.8, 25.8),
        vec(450.3, -998.2, 25.8),
        vec(449.9, -995.5, 25.8),
        vec(447.2, -995.6, 25.8),
        vec(446.3, -997.9, 25.8),
    },
    thickness = 2,
})

On this page

Usamos cookies para anúncios e métricas. Veja a política de privacidade.