Camera: Export ve Event'ler
Kamera izleme ekranını aç, kameraları açıp kapat, soygun sırasında devre dışı bırak ve vurulan kameraları kendi kaynaklarından dinle.
Kaynak adı
Export'lar kaynak adı üzerinden çağrıldığı için klasörün adı hype-camera olarak kalmalı. İsimde tire olduğu için
export'ları exports.hype-camera değil exports["hype-camera"] şeklinde çağır.
| Export | Taraf | Ne işe yarar |
|---|---|---|
Open | İstemci | Kamera listesini açar |
Close | İstemci | İzlemeyi ve listeyi kapatır |
IsOpen | İstemci | Liste veya bir kamera açık mı |
GetViewingCamera | İstemci | O an izlenen kameranın id'si |
SetCameraOnline | Sunucu | Bir kamerayı açar / kapatır |
DestroyCamera | Sunucu | Bir kamerayı hasarlı olarak devre dışı bırakır |
IsCameraOnline | Sunucu | Bir kamera çevrimiçi mi |
GetViewers | Sunucu | Bir kamerayı izleyen oyuncular |
Kamera id'leri
Her kameraya config/cameras.lua içindeki id değeriyle ulaşılır, örn. pacific_vault, fleeca_legion veya
vangelico_1.
İstemci export'ları
Open
Kamera 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 Access kontrolü yapar; yetki yoksa oyuncuya hata bildirimi gider ve
hiçbir şey açılmaz.
exports["hype-camera"]:Open()Önce NUI odağını bırak
Duraklatma menüsü açıkken, kameralar zaten açıkken veya başka bir kaynak NUI odağını tutarken hiçbir şey açılmaz.
Open çağırmadan önce tabletini kapat ya da SetNuiFocus(false, false) çağır.
Close
İzlemeyi ve listeyi kapatır: kamerayı yok eder, görüntü filtresini kaldırır, radarı geri getirir ve sunucudaki izleyici kaydını siler. Oyuncuyu kameralardan zorla çıkarman gerektiğinde (kelepçe, cutscene, başka bir menünün açılması) çağır. Bir kamera izlenirken ölüm ve ragdoll izlemeyi zaten kendiliğinden kapatır.
exports["hype-camera"]:Close()IsOpen
Kamera listesi veya bir kamera ekrandayken true döndürür. Çakışmayı önlemek için kendi menülerini açmadan önce
kontrol et.
local open = exports["hype-camera"]:IsOpen()GetViewingCamera
İzlenen kameranın id'sini döndürür; sadece liste açıksa veya hiçbir şey izlenmiyorsa nil döner.
local id = exports["hype-camera"]:GetViewingCamera() -- "pacific_lobby" veya nilSunucu export'ları
SetCameraOnline
Bir kamerayı çevrimiçi veya çevrimdışı yapar; örneğin soygun sırasında kameraları kesmek için. Kamerayı izleyenler SİNYAL KESİLDİ ekranını görür, listede de çevrimdışı görünür. Bu şekilde kapatılan bir kamera, sen tekrar açana kadar kapalı kalır. Hasarlı bir kamerayı açmak onu hemen geri getirir.
exports["hype-camera"]:SetCameraOnline("pacific_vault", false)Seçenek
Tür
Dönüş boolean: kamera id'si yoksa false.
DestroyCamera
Bir kamerayı, vurulmuş gibi hasarlı olarak devre dışı bırakır. İzleyenler geri sayımla HASARLI ekranını görür,
yakındaki oyuncular kıvılcımları görür (Destroy.effects açıksa) ve cameraDestroyed event'i tetiklenir.
Süre dolunca kamera kendiliğinden geri gelir. Bu export Destroy.enabled false iken de çalışır.
exports["hype-camera"]:DestroyCamera("fleeca_legion", 300)Seçenek
Tür
Dönüş boolean: kamera id'si yoksa veya kamera zaten çevrimdışıysa false.
IsCameraOnline
Kamera varsa ve ne kapatılmış ne de hasarlıysa true döndürür.
if exports["hype-camera"]:IsCameraOnline("vangelico_1") then
-- kuyumcu izleniyor
endSeçenek
Tür
GetViewers
Kamera izleyen oyuncuların sunucu id'lerini döndürür. Id verirsen sadece o kamerayı izleyenleri, vermezsen herhangi bir kamerayı izleyen herkesi döndürür. Sadece listeye bakan oyuncular sayılmaz.
local all = exports["hype-camera"]:GetViewers()
local watchers = exports["hype-camera"]:GetViewers("pacific_vault")Seçenek
Tür
Dönüş number[]: oyuncu sunucu id'lerinin listesi.
Event'ler
hype-camera:server:cameraDestroyed
Bir kamera vurulduğunda veya DestroyCamera ile devre dışı bırakıldığında sunucuda tetiklenir.
Dispatch'e haber vermek veya log yazmak için kullan.
AddEventHandler('hype-camera:server:cameraDestroyed', function(id, source, coords, label)
print(('%s, %s tarafından vuruldu (%s)'):format(label, source or 'script', coords))
end)Seçenek
Tür
Sadece sunucu
Bu yerel bir sunucu event'idir. İstemciden asla tetikleme. Diğer hype-camera:* event'leri ve callback'leri dahili
kullanım içindir ve sunucuda doğrulanır; bunları kendin çağırma.
State bag
Sunucu çevrimdışı kameraları global bir state bag üzerinden paylaşır, yani iki taraf da aynı listeyi okuyabilir. Sadece okunur.
local offline = GlobalState["hype-camera:offline"] or {}
for id, value in pairs(offline) do
if value == true then
print(id, 'kapatıldı')
else
print(id, 'hasarlı, geri geliş:', value) -- os.time
end
end| Değer | Anlamı |
|---|---|
true | SetCameraOnline, yönetici komutu veya online = false ile kapatıldı |
number | Vuruldu veya devre dışı bırakıldı, geri geleceği os.time değeri |
Çevrimiçi kameralar tabloda yer almaz.
Komutlar
| Komut | Kim | Ne işe yarar |
|---|---|---|
Command (varsayılan kapalı) | Yetkili oyuncular | Kamera listesini açar, "cameras" gibi bir isim ver |
/camerastatus [id] [state] | group.admin | 1 = çevrimiçi, 0 = çevrimdışı. İsmi AdminCommand ile ayarlanır |
/camerapos | Herkes, sadece Debug | O anki görüşünün konumunu kamera satırı olarak kopyalar |
/camerastatus pacific_vault 0Köprü export'ları
frameworks/ içindeki framework köprüleri ve modules/ içindeki modüller açık kaynaktır. Karakter sistemin
özelleştirilmişse scriptin oyuncuları nasıl okuduğunu burada değiştirebilirsin. Yüz tanıma verisini
GetCharacterInfo fonksiyonundan okur.
| Export | Taraf | Ne işe yarar |
|---|---|---|
GetCharacterInfo(playerId) | Sunucu | Ad, doğum tarihi, cinsiyet, uyruk, telefon, kimlik ve meslek adı |
GetPlayerJob(playerId) | Sunucu | Meslek adı, etiketi, rütbesi ve mesai durumu; yetki kontrolü kullanır |
GetPlayer(playerId) | Sunucu | Framework oyuncu nesnesi |
GetPlayers() | Sunucu | Yüklenmiş tüm oyuncuların sunucu id'leri |
GetCharacterName(playerId, split?) | Sunucu | Karakter adı, split ile ad ve soyad ayrı |
GetPlayerIdentifier(playerId) | Sunucu | QB/QBox'ta citizenid, ESX'te identifier |
GetPlayerCallsign(playerId) | Sunucu | Oyuncu metadata'sındaki çağrı kodu, yoksa nil |
GetPlayerData() | İstemci | Yerel oyuncunun framework verisi |
GetPlayerJob() | İstemci | Yerel oyuncunun mesleği |
GetFrameworkObject() | İkisi de | Bulunulan tarafın köprü tablosu |
AddSphereZone(name, coords, radius, options) | İstemci | ox_target veya qb-target üzerinden alan oluşturur |
RemoveZone(name) | İstemci | AddSphereZone ile oluşturulan alanı siler |
SendNotify
Notifications ayarındaki kaynakla (okokNotify, ps-ui veya ox_lib) bildirim gösterir. Sunucuda ilk parametre
oyuncudur; herkese göndermek için -1 ver.
exports["hype-camera"]:SendNotify("Güvenlik Kameraları", "Kamera görüntüsü geri geldi.", 5000, "success")exports["hype-camera"]:SendNotify(source, "Güvenlik Kameraları", "Banka kameraları devre dışı!", 5000, "error")Seçenek
Tür
GetModules
Çağrıldığı tarafın modül tablosunu döndürür. İsim verirsen sadece o modülü döndürür: iki tarafta "Notify",
istemcide "Target".
local notify = exports["hype-camera"]:GetModules("Notify")
notify.SendNotify(source, "Güvenlik Kameraları", "Merhaba!", 5000, "success")Seçenek
Tür