BodycamYeniÜcretsiz

Bodycam: Export ve Event'ler

Yaka kameralarını oku ve yönet, izleme ekranını aç ve yayın event'lerini kendi kaynaklarından dinle.

v1.0.0Açık kaynakÜcretsizQBox · QBCore · ESX

Kaynak adı

Kaynağın adı hype-bodycam olmalı. İsimde tire olduğu için export'ları exports.hype-bodycam değil exports["hype-bodycam"] şeklinde çağır.

ExportTarafNe işe yarar
IsBodycamOnİstemciOyuncunun kendi yaka kamerası kayıtta mı
OpenİstemciYayın listesini açar
Closeİstemciİzlemeyi ve listeyi kapatır
IsOpenİstemciİzleme ekranı açık mı
GetViewingStreamİstemciO an izlenen yayının id'si
bodycamİstemciox_inventory eşya kullanımı, elle çağrılmaz
IsBodycamActiveSunucuBir oyuncunun kamerası kayıtta mı
SetBodycamSunucuBir oyuncunun kamerasını açar / kapatır
GetStreamsSunucuAktif tüm yayınlar
GetViewersSunucuBir yayını izleyen oyuncular

Yayın id'leri

Her yayının bir metin id'si vardır. Yaka kameraları b<server id> (örn. b14), araç kameraları d<netId> (örn. d2188) biçimindedir.

İstemci export'ları

IsBodycamOn

Oyuncunun kendi yaka kamerası kayıttayken true döndürür. Durum sunucudan gelir, istemci kendi başına bir değer tutmaz. Bir HUD'da "kayıtta" ikonu göstermek veya kamera açıkken bir işlemi engellemek için kullanışlıdır.

client.lua
local recording = exports["hype-bodycam"]:IsBodycamOn()

Open

Yayın listesini açar. Terminale bağlı değildir, oyuncu uzaklaşsa bile izleme kapanmaz. Bu yüzden kendi tablet, telefon veya MDT'n için doğru seçimdir. Sunucu önce ViewAccess kontrolü yapar; yetki yoksa oyuncuya hata bildirimi gider ve hiçbir şey açılmaz.

client.lua
exports["hype-bodycam"]:Open()

Close

İzlemeyi ve listeyi kapatır: kamerayı yok eder, HUD ve radarı geri getirir, oyuncunun donmasını kaldırır ve sunucudaki izleyici kaydını siler. Oyuncuyu kameradan zorla çıkarman gerektiğinde (ölüm, kelepçe, cutscene, başka bir menünün açılması) çağır.

client.lua
exports["hype-bodycam"]:Close()

IsOpen

Yayın listesi veya canlı bir yayın ekrandayken true döndürür. Çakışmayı önlemek için kendi menülerini açmadan önce kontrol et.

client.lua
local open = exports["hype-bodycam"]:IsOpen()

GetViewingStream

İzlenen yayının id'sini döndürür; sadece liste açıksa veya hiçbir şey izlenmiyorsa nil döner.

client.lua
local id = exports["hype-bodycam"]:GetViewingStream() -- "b14", "d2188" veya nil

bodycam

ox_inventory'nin eşya kullanımında çağırdığı export; data/items.lua içinde client.export = "hype-bodycam.bodycam" olarak tanımlanır. Diğer envanterler bunun yerine framework'ün usable item sisteminden geçer; iki yol da aynı aç/kapat fonksiyonuna düşer.

Elle çağırma

Kamerayı kod ile açıp kapatmak için sunucu tarafındaki SetBodycam export'unu kullan.

Sunucu export'ları

IsBodycamActive

Belirtilen oyuncunun yaka kamerası kayıttayken true döndürür. Gerçek sunucu durumudur; log, ceza, soruşturma veya "kamera kapalıyken bunu yapamaz" kontrolleri için güvenle kullanılabilir.

server.lua
local recording = exports["hype-bodycam"]:IsBodycamActive(source)

Seçenek

Tür

SetBodycam

Bir oyuncunun yaka kamerasını kod ile açar veya kapatır. Açarken normal kurallar geçerlidir: oyuncu eşyayı taşımalı ve yetkili bir meslekte (gerekiyorsa mesaide) olmalı. Bu şartlar sağlanmazsa veya kamera zaten açıksa false döner ve hiçbir şey değişmez. Kapatma her zaman çalışır ve "export" sebebiyle loglanır. Açılışta normal başlangıç bipi çalar, oyuncu araçtaysa araç kamerası da başlar.

server.lua
local ok = exports["hype-bodycam"]:SetBodycam(source, true)

Seçenek

Tür

Dönüş boolean: işlem yapıldıysa true, açma reddedildiyse false.

GetStreams

Aktif tüm yayınları yayın id'sine göre anahtarlanmış bir tablo olarak döndürür. Yönetici paneli, canlı istatistik veya Discord logları için kullanışlıdır.

server.lua
local streams = exports["hype-bodycam"]:GetStreams()

for id, stream in pairs(streams) do
    print(id, stream.type, stream.name, stream.serial)
end

Sadece okunur

Dönen tablo scriptin kendi tablosudur, kopya değildir. Sadece oku, içeriğini asla değiştirme.

Her yayın şu alanları taşır:

Seçenek

Tür

GetViewers

Yayın izleyen oyuncuların sunucu id'lerini döndürür. Id verilirse sadece o yayını izleyenler, verilmezse herhangi bir yayını izleyen herkes döner.

server.lua
local all = exports["hype-bodycam"]:GetViewers()
local watchers = exports["hype-bodycam"]:GetViewers("b14")

Seçenek

Tür

Dönüş number[]: oyuncu sunucu id'lerinin listesi.

Event'ler

hype-bodycam:server:streamStarted

Bir yayın başladığında sunucuda tetiklenir. stream, GetStreams bölümündeki alanları taşır.

server.lua
AddEventHandler('hype-bodycam:server:streamStarted', function(stream)
    print(('%s kayda başladı (%s, %s)'):format(stream.name, stream.type, stream.trigger))
end)

hype-bodycam:server:streamStopped

Bir yayın bittiğinde sunucuda tetiklenir.

server.lua
AddEventHandler('hype-bodycam:server:streamStopped', function(stream, reason)
    print(('%s kaydı durdu: %s'):format(stream.name, reason))
end)
reasonAnlamı
offElle kapatıldı
invalidOyuncu eşyayı kaybetti veya mesaiden çıktı
droppedOyuncu sunucudan çıktı
exportSetBodycam ile kapatıldı
vehicleAraç yok veya hurda
lightsAraçta kayıttaki memur kalmadı ve çakar kapalı
owner_*Yayın sahibinin yaka kamerası kapandı

Sadece sunucu

Bunlar yerel sunucu event'leridir. İstemciden asla tetikleme.

State bag

Sunucu yayın listesini global bir state bag üzerinden paylaşır, yani istemci de aynı listeyi okuyabilir. Yapısı GetStreams ile aynıdır ve sadece okunur.

client.lua
local streams = GlobalState["hype-bodycam:streams"]

Bu sayfada