Geliştiriciler için ai-robberies
ai-robberies’in soyulan hedefler için GlobalState anahtarları, ev metadata’sı, ihbarları, hesap defteri sebepleri ve özel event’leri.
ai-robberies’in hiç export’u yoktur. Yerler ve hedefler panel verisidir; ödüller, aletler, ihbarlar ve kapılar AI Core üzerinden gider. Başka bir script’in okuyabileceği şeyler aşağıda listelenmiştir.
GlobalState rob:<targetId>
Bir hedef soyulmuş ve yerinin bekleme süresini beklerken true, bekleme süresinden sonra false. Server yazar; her client okuyabilir. Resource başlarken her anahtar sıfırlanır. Hedef id’leri Targets sekmesindeki kayıt id’leridir (store_1_register_1, store_1_safe, vangelico_vitrine_1...).
Taraf: Server ve client (okuma) · Bekler: hayır
GlobalState[`rob:${targetId}`]: boolean | undefinedlocal emptied = GlobalState['rob:' .. targetId] == trueDönüş değeri
Boşaltılmışken true. Bekleme süresi bittikten sonra false; resource başladığından beri hedef soyulmadıysa undefined / nil.
Örnek
Kasa boşaltılmışken kendi market script’inde bir "soyuldu" işareti göster:
// client
const SAFE = "store_1_safe";
AddStateBagChangeHandler(`rob:${SAFE}`, "global", (_bag: string, _key: string, value: unknown) => {
const emptied = value === true;
// ... işaretini göster ya da gizle
});
const emptiedNow = GlobalState[`rob:${SAFE}`] === true;Bu anahtarları oku, asla yazma: sahibi ai-robberies’tir ve onları kendi zamanlayıcılarıyla ayarlar. Başka bir script’in yazdığı bir değer server’ın kontrollerini ve client’ların etiketlerini birbirinden koparır.
Karakter metadata’sı robbery_house
Bir karakterin içinde bulunduğu ev yerinin id’si (house_12), dışarıdayken null. ai-robberies soyguncu içeri girdiğinde ayarlar, çıktığında temizler. Bir evin içindeyken oyundan çıkan karakter bir sonraki yüklemesinde ev kapısına geri konur.
Polis ihbarları
Lib’in dispatch.alert fonksiyonu üzerinden gönderilir, bu yüzden hangi ihbar script’i çalışıyorsa ona ulaşır:
| Ne zaman | Kod | Başlık | İkon | Öncelik |
|---|---|---|---|---|
| Bir ziyaretteki ilk soygun (yerin ihbar ihtimaline göre) | 10-90 | Soygun ihbarı metni; mesaj olarak yerin adı, koordinat olarak yerin ihbar noktası | sack-dollar | high |
| Bir zırhlı araç işi başlar | 10-90 | Zırhlı araç ihbarı metni, soyguncunun konumunda, kırmızı 67 numaralı blip sprite’ı | truck | high |
Para
Çalınan para paneldeki Money account hesabına robbery:<placeId> hesap defteri sebebiyle (ledger reason) gider (örneğin robbery:store_1).
Kapılar
Doorlock door id’si olan bir kapı hedefi AI Core’un kapı katmanı (lib doors.setLocked) üzerinden açılır ve yerin bekleme süresi bitince tekrar kilitlenir.
Özel event’ler ve callback’ler
Script’in kendi sözleşmesi (resource/common/robbery.ts). Server her çağrıda polis sayısını, mesafeyi, eşyaları ve sahiplenmeleri kontrol eder. Sürümler arasında değişebilirler: başka resource’lardan tetikleme ya da dinleme.
| Ad | Yön | Ne taşır |
|---|---|---|
ai-robberies:start | client callback’i | (targetId): bir hedefi soymaya başla; { ok, entered? } ile cevap verir. İlerleme çubuğunu ve ödülü server çalıştırır. |
ai-robberies:exit | client callback’i | (): oyuncunun içinde bulunduğu evden çık. |
ai-robberies:client:inside | server -> player | (placeId | null, to): oyuncu artık bu evin içinde (ya da çıktı); to konumuna ışınla. |
ai-robberies:truckStart | client callback’i | (): iş verende bir zırhlı araç işi için öde. |
ai-robberies:client:truckJob | server -> player | (netId, x, y, z): soyulacak araç ve arka kapıları. |
ai-robberies:truckPlant | client callback’i | (): patlayıcıyı yerleştir (server’ın çalıştırdığı ilerleme çubuğu; kapılar fitilden sonra patlar). |
ai-robberies:client:truckOpen | server -> aracın yakınındaki oyuncular | (netId): arka kapılar açık. |
ai-robberies:truckLoot | client callback’i | (): parayı al (server’ın çalıştırdığı ilerleme çubuğu). |
ai-robberies:client:truckEnd | server -> aracı bilen oyuncular | (): zırhlı araç işi bitti. |