Geliştiriciler için ai-jobs
ai-jobs’un diğer script’lerle paylaştıkları (export’u yoktur): sosisli itibarı, iş aracı plakaları ve anahtarları, hesap defteri sebepleri ve özel event’leri.
ai-jobs’un hiç export’u yoktur. Diğer script’lerin onu çağırması hiç gerekmez: rotalar ve duraklar panel verisidir, bir mesainin yaptığı her şey de AI Core üzerinden gider (para, anahtarlar, envanter). Başka bir script’in okuyabildikleri aşağıda listelenmiştir.
Sosisli itibarı
Sosisli satıcısının itibarı, rep anahtarı altında hotdog alanındaki ai-core karakter metadata’sıdır (QBCore’un PlayerData.metadata.rep değerini tuttuğu yerin aynısı). 0’dan paneldeki Highest reputation değerine kadar bir tam sayıdır. ai-jobs onu bir büfe kiralanırken okur ve pişirilen her sosisliden sonra yazar; rep içindeki diğer alanları olduğu gibi korur.
Taraf: Server · Bekler: hayır
GetMeta(src: number, key: "rep"): { hotdog?: number; [other: string]: unknown } | nulllocal rep = exports['ai-core']:GetMeta(source, 'rep') -- tablo ya da nilDönüş değeri
Karakterin rep tablosu; oyuncunun yüklü bir karakteri yoksa ya da hiç itibar kazanmadıysa null / nil. İlk sosisli yapılana kadar hotdog yoktur.
Örnek
import { addCommand, notify, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// /hotdogrep oyuncuya sosisli itibarını gösterir.
addCommand("hotdogrep", { help: "Show your hot dog reputation" }, (source) => {
if (source === 0) return;
const rep = core.GetMeta(source, "rep") as { hotdog?: number } | null;
notify(source, `Hot dog reputation: ${rep?.hotdog ?? 0}`, "info");
});İtibarı sadece diğer alanları koruyarak SetMeta(source, "rep", { ...old, hotdog = value }) ile yaz. Kiralanmış bir büfe kiralama anında okuduğu değeri tutar ve bir sonraki sosisliden sonra kendi değerini yazar; bu yüzden büfe kiralıyken yapılan bir değişikliğin üzerine yazılır.
İş araçları
- Lib’in
spawnVehiclefonksiyonuylaWORK<source>plakasıyla (çalışanın server id’si) oluşturulur, mesai bitince silinir. - Çalışan anahtarları AI Core’un anahtar katmanı üzerinden (lib
vehicleKeys.give)jobamacıyla alır, bu yüzden hangi anahtar script’i çalışıyorsa onları görür. - Çekici rotasının arızalı aracı kilitli ve anahtarsız oluşturulur; depoda ya da mesai bitince silinir.
Para
Rota ödemesi, work:<routeId> hesap defteri sebebiyle (örneğin work:taxi) rotanın Pay account hesabına gider. Sosisli satışları Sales paid into hesabına gider. İkisi de ai-core’un işlem geçmişinde görünür.
Özel event’ler ve callback’ler
Bunlar script’in kendi client-server sözleşmesidir (resource/common/routes.ts ve resource/common/hotdog.ts). Server her çağrıyı kontrol eder (mesafe, zamanlama, mevcut durak). Sürümler arasında değişebilirler: başka resource’lardan tetikleme ya da dinleme.
| Ad | Yön | Ne taşır |
|---|---|---|
ai-jobs:start | client callback’i | (routeId): depoda bir mesai başlatır, { ok } ile cevap verir. |
ai-jobs:stop | client callback’i | (): mesaiyi bitirir. |
ai-jobs:arrive | client callback’i | (stopId, underwater): duraktaki iş; server ilerleme çubuğunu çalıştırır, sonra öder. |
ai-jobs:client:shift | server -> çalışan | (shift | null): mevcut durak; mesai bittiyse null. |
ai-jobs:client:attach | server -> çekilen aracın sahibi | (carNetId, flatbedNetId): çekilen aracı çekicinin kasasına bağlar. |
ai-jobs
Bir depoda başlayan iş rotaları (taksi, otobüs, tır, çöp, haber, çekici, geri dönüşüm, bağ, dalış) ve sosisli büfesi.
ai-police
Mesaideki memurlar için polis işi: kelepçeleme, eşlik etme, araca bindirme, üst arama, ceza, hapse gönderme ve araç çekme; ayrıca mesai noktaları ve silah sesi ihbarları.