Geliştiriciler için ai-streetraces
ai-streetraces’in export’u yoktur. Polis ihbarı, hesap defteri sebepleri ve özel event’leri.
ai-streetraces’in export’u ya da state bag’i yoktur. Yarışlar sadece server’ın belleğinde yaşar; para, ihbarlar ve menü öğesi AI Core üzerinden gider.
Polis ihbarı
Bir yarışın geri sayımı başladığında (paneldeki Alert chance değerine göre) lib’in dispatch.alert fonksiyonu üzerinden bir ihbar gönderebilir: "Street race" başlığı, "(count) vehicles lining up for an illegal race" mesajı, başlangıç çizgisinde, source olarak ilk yarışçı, ikon flag-checkered. Hangi ihbar script’i çalışıyorsa ona ulaşır.
Para
Bütün para paneldeki Money account hesabında şu hesap defteri sebepleriyle (ledger reason) hareket eder:
| Sebep | Ne zaman |
|---|---|
streetrace:<raceId> | Oluştururken ya da katılırken giriş ücreti alınır. |
streetrace:refund | Bir giriş ücreti geri gelir (başlangıçtan önce ayrıldı, iptal edildi, yetersiz yarışçı, resource durdu). |
streetrace:won | Kazanan potu alır. |
streetrace:split | Süre sınırı doldu; hâlâ yarışta olan her yarışçı bir pay alır. |
Menüyü başka bir script’ten açmak
Server yarış menüsünü ai-streetraces:client:openMenu client event’iyle açar (/race bunu yapar). Menüyü kendi telefon uygulamana ya da etkileşim noktana koymak için kullan.
Taraf: Server -> client · Argümanlar: yok
// server
emitNet("ai-streetraces:client:openMenu", source);Menü sadece oyuncunun şu an yapabileceklerini gösterir (harita işaretine yarış oluştur, bir davete katıl, başlat, iptal et, ayrıl ya da pes et) ve her seçim server’da kontrol edilir; bu yüzden menüyü herkes için açmak güvenlidir.
Özel event’ler ve callback’ler
Script’in kendi sözleşmesi (resource/common/race.ts). Server her çağrıda aracı, mesafeyi, parayı ve yarışın durumunu 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-streetraces:create | client callback’i | (buyIn, finishX, finishY): oyuncunun konumundan bitişe bir yarış oluştur. |
ai-streetraces:join | client callback’i | (raceId): oyuncunun davet edildiği bir yarışa katıl (giriş ücretini öder). |
ai-streetraces:leave | client callback’i | (): yarıştan ayrıl; ev sahibi başlangıçtan önce ayrılırsa yarış iptal olur. |
ai-streetraces:begin | client callback’i | (): ev sahibi katılma süresini hemen bitirir. |
ai-streetraces:finish | client callback’i | (): yarışçı bitişe ulaştı. |
ai-streetraces:client:state | server -> yarışçı | (race, serverNow): oyuncunun içinde olduğu yarışın anlık görüntüsü (snapshot). |
ai-streetraces:client:racer | server -> yarışçılar | (racer, pot): bir yarışçı katıldı. |
ai-streetraces:client:racerLeft | server -> yarışçılar | (racerId, pot): bir yarışçı ayrıldı. |
ai-streetraces:client:start | server -> yarışçılar | (startAt, serverNow): geri sayım çalışıyor; startAt anında GO (server saati). |
ai-streetraces:client:ended | server -> yarışçı | (): yarış bu oyuncu için bitti. |
ai-streetraces:client:invite | server -> yeni bir yarışın yakınındaki oyuncular | (invite, serverNow). |
ai-streetraces:client:uninvite | server -> davet edilen oyuncular | (raceId): yarış artık yarışçı almıyor. |