Geliştiriciler için ai-fuel
ai-fuel çalışırken yakıtın nasıl okunup ayarlandığı, state bag’leri ve iç event’leri.
ai-fuel’in export’u yoktur. Bir aracın yakıtı, server’ın tuttuğu fuel entity state bag’idir (0-100).
Yakıtı lib’in fuel.get(vehicle) ve fuel.set(vehicle, level) fonksiyonlarıyla oku ve ayarla (server; fuel.get client’ta da var). Bunlar ai-core’un yakıt katmanından geçer (Lua’da ai-core üzerindeki GetVehicleFuel ve SetVehicleFuel export’larını çağır); bu katman ai-fuel çalışırken fuel bag’ini okuyup yazar, server onun yerine başka bir yakıt script’i çalıştırıyorsa o script’le konuşur. Böylece script’in her yakıt script’iyle çalışır.
Yakıtı okuma ve ayarlama
import { fuel } from "@aicore-fivem/lib/server";
// Oyuncunun özel bir istasyonda parasını ödediği aracı doldur.
export function fillUp(vehicle: number): void {
const before = fuel.get(vehicle);
fuel.set(vehicle, 100);
console.log(`fuel ${before} -> 100`);
}fuel bag’ini client’tan yazma: server client yazmalarını reddeder (strict state bag modu), ai-fuel de zaten sürücünün client’ından sadece daha düşük değerleri kabul eder.
State bag’ler
| Bag | Nerede | Tip | Anlamı |
|---|---|---|---|
fuel | araç entity’si | number | Yakıt 0-100. Server ayarlar. ai-vehicles sahipli bir aracı spawn ettiğinde ilk değerini verir. |
aiFuelNozzle | oyuncu | { x, y, z, netId } | undefined | Oyuncunun elinde tuttuğu tabancanın pompası (x, y, z) ve tabancanın takılı olduğu aracın network id’si (netId, eldeyken null). Yakındaki her client tabancayı ve hortumu çizmek için bunu kullanır. |
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local level = Entity(vehicle).state.fuel -- 0-100 arası number, ilk ayarlamadan önce nilEvent’ler
Bunlar ai-fuel’in kendi client’tan server’a event’leridir. Loglarda tanıyabilmen için listelenmiştir; başka script’lerden çağırma.
| Ad | Tür | Ne yapar |
|---|---|---|
ai-fuel:consume | client event’i | (netId, fuel): sürücü daha düşük bir seviye bildirir. Saniyede en fazla 2 kez; sadece daha düşük değerler kabul edilir. |
ai-fuel:takeNozzle | client callback’i | (x, y, z): bir pompanın tabancasını al. Saniyede en fazla 1 kez. |
ai-fuel:plug | client callback’i | (netId | null): tabancayı bir araca tak ya da çıkar. Saniyede en fazla 2 kez. |
ai-fuel:returnNozzle | client event’i | Tabancayı yerine as. Saniyede en fazla 1 kez. |
ai-fuel:refuel | client callback’i | İlerleme çubuğunu çalıştırır, ücreti alır ve depoyu doldurur. |