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.
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.
| Export | Taraf | Ne işe yarar |
|---|---|---|
IsBodycamOn | İstemci | Oyuncunun kendi yaka kamerası kayıtta mı |
Open | İstemci | Yayın listesini açar |
Close | İstemci | İzlemeyi ve listeyi kapatır |
IsOpen | İstemci | İzleme ekranı açık mı |
GetViewingStream | İstemci | O an izlenen yayının id'si |
bodycam | İstemci | ox_inventory eşya kullanımı, elle çağrılmaz |
IsBodycamActive | Sunucu | Bir oyuncunun kamerası kayıtta mı |
SetBodycam | Sunucu | Bir oyuncunun kamerasını açar / kapatır |
GetStreams | Sunucu | Aktif tüm yayınlar |
GetViewers | Sunucu | Bir 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.
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.
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.
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.
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.
local id = exports["hype-bodycam"]:GetViewingStream() -- "b14", "d2188" veya nilbodycam
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.
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.
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.
local streams = exports["hype-bodycam"]:GetStreams()
for id, stream in pairs(streams) do
print(id, stream.type, stream.name, stream.serial)
endSadece 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.
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.
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.
AddEventHandler('hype-bodycam:server:streamStopped', function(stream, reason)
print(('%s kaydı durdu: %s'):format(stream.name, reason))
end)reason | Anlamı |
|---|---|
off | Elle kapatıldı |
invalid | Oyuncu eşyayı kaybetti veya mesaiden çıktı |
dropped | Oyuncu sunucudan çıktı |
export | SetBodycam ile kapatıldı |
vehicle | Araç yok veya hurda |
lights | Araç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.
local streams = GlobalState["hype-bodycam:streams"]