State Bags
Janto Phone, oyuncu ve cihaz durumlarını senkronize etmek için FiveM State Bags sistemini kullanır. Bu reaktif yapı sayesinde diğer scriptler döngülere (loops) ihtiyaç duymadan telefon durumlarını takip edebilir.
Oyuncu State'leri (Player State Bags)
Bu state'ler her oyuncu/ped objesi üzerinde tutulur ve hem istemci hem sunucu tarafında okunabilir.
isDead
Oyuncunun ölü olup olmadığını belirtir. Janto Phone bu değeri dinleyerek oyuncu öldüğünde telefonu otomatik olarak kapatır.
- Tip:
boolean - Erişim: Okuma (Tüm scriptler), Yazma (Framework/Adapter)
-- Örnek: Ölüm durumunu kontrol etme
local isDead = Player(source).state.isDeadinLastStand
Oyuncunun yaralı veya baygınlık (last stand) modunda olup olmadığını belirtir.
- Tip:
boolean
activePhoneNumber
Oyuncunun o an envanterinde takılı olan ve kullandığı aktif telefon numarasını tutar.
- Tip:
string|nil - Erişim: Okuma (Tüm scriptler), Yazma (Janto Phone Server)
-- Örnek: Yakındaki birinin numarasını öğrenme (Client)
local targetId = 12 -- Server ID
local number = Player(targetId).state.activePhoneNumberCihaz Özellikleri (Feature State Bags)
flashlightActive
Oyuncunun telefon el fenerinin açık olup olmadığını belirtir. Janto Phone bu state'i kullanarak diğer oyunculara ışığı render eder.
- Tip:
boolean - Erişim: Okuma/Yazma
liveLocation_{chatId}
WhatsApp veya Mesajlar üzerinden paylaşılan canlı konum verisini tutar.
- Tip:
object{x: number,y: number,endTime: number } |nil - Açıklama: Sadece konum paylaşımı yapan oyuncu üzerinde, paylaşılan chat ID'si ile dinamik olarak oluşur.
Örnek Kullanım: State Bag İzleme
Bir oyuncu telefonunu açtığında veya numara değiştirdiğinde anlık haberdar olmak için AddStateBagChangeHandler kullanabilirsiniz:
AddStateBagChangeHandler('activePhoneNumber', nil, function(bagName, key, value, _unused, replicated)
if not value then return end
local source = tonumber(bagName:gsub('player:', ''))
print(string.format("Oyuncu %s numarasını güncelledi: %s", source, value))
end)