Geliştiriciler için ai-hud
ai-hud’un ihtiyaçlar (açlık, susuzluk, stres) ve HUD ayarları için export’ları ve diğer script’lerden okudukları.
İhtiyaçlar, karakterin metadata’sında tutulan 0 ile 100 arası sayılardır (hunger, thirst, stress, QB anahtarları). Açlık ve susuzluk geri sayar (100 = tok); stres ileri sayar (0 = sakin). Onları yazan tek script ai-hud’dur.
Script’inden stres eklemek için AI Core’un stres katmanını kullan (lib stress, AddStress export’u); hangi HUD çalışıyorsa onunla çalışır. Yiyecek ve içecek etkileri eşyaya aittir: eşyanın Hunger, Thirst ve Stress değerlerini ai-inventory’nin panelinde ayarla, eşya kullanıldığında ai-hud onları uygular.
Server export’ları
SetNeed ve AddNeed, @aicore-fivem/shared içinde AiHudServerExports olarak tiplenmiştir (TypeScript’te resourceExport("ai-hud")). GetNeeds tiplenmemiştir: lib callExport("ai-hud", "GetNeeds", source) ile çağır.
GetNeeds
Yüklü bir oyuncunun ihtiyaçlarını okur.
Taraf: Server · Bekler: hayır
GetNeeds(source: number): { hunger: number; thirst: number; stress: number } | nulllocal needs = exports['ai-hud']:GetNeeds(source) -- tablo veya nilParametreler
Prop
Type
Dönüş değeri
{ hunger, thirst, stress } | null: her değer 0-100 (ondalıklar korunur). Oyuncunun yüklü karakteri yoksa null.
SetNeed
Bir ihtiyacı bir değere ayarlar.
Taraf: Server · Bekler: hayır
SetNeed(source: number, need: "hunger" | "thirst" | "stress", value: number): voidexports['ai-hud']:SetNeed(source, 'hunger', 100)Parametreler
Prop
Type
Dönüş değeri
Hiçbir şey. Oyuncunun yüklü karakteri yoksa ya da bir argüman geçersizse hiçbir şey yapmaz. Yeni değer karaktere kaydedilir ve yuvarlanmış değeri değiştiğinde oyuncunun HUD’una gönderilir.
AddNeed
Bir ihtiyacı bir miktar kadar değiştirir.
Taraf: Server · Bekler: hayır
AddNeed(source: number, need: "hunger" | "thirst" | "stress", delta: number): voidexports['ai-hud']:AddNeed(source, 'thirst', 25)Parametreler
Prop
Type
Dönüş değeri
Hiçbir şey.
Örnek
import { callExport, resourceExport, onClientCallback } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const hud = resourceExport("ai-hud");
// Bir kola makinesi: susuzluğu biraz doldurur, oyuncu susamamışsa reddeder.
onClientCallback("myscript:soda", (source) => {
const needs = callExport("ai-hud", "GetNeeds", source) as { thirst: number } | null;
if (!needs) return fail("NO_CHARACTER");
if (needs.thirst > 90) return fail("NOT_THIRSTY");
hud.AddNeed(source, "thirst", 20);
return { ok: true };
});Bu export’lar sadece ai-hud çalışırken çalışır. Sunucu sahibi ai-hud’un yerine başka bir HUD koyarsa çağrıların başarısız olur. AI Core’un stres katmanı (AddStress) diğer HUD’larla da çalışmaya devam eder.
Client export’ları
AiHudClientExports olarak tiplenmiştir.
| Export | Ne yapar |
|---|---|
OpenSettings(): void | Oyuncunun HUD ayarlarını açar (/hud ile aynı). Diğer script’ler hangi HUD çalışıyorsa onun ayarlarını AI Core’un OpenHudSettings() fonksiyonuyla açar. |
SetMinimapAlways(on: boolean): void | Bir adminin kendi anahtarı (ai-admin menüsü): panel ne derse desin mini haritayı yayayken açık tutar, sadece bu oyuncu için. |
GetMinimapAlways(): boolean | Bu anahtarın açık olup olmadığı. |
ai-hud neyi okur
| Kaynak | Ne için |
|---|---|
AI Core server event’i itemUsed (source, name, status) | Eşyanın hunger, thirst, stress değerlerini ekler. |
AI Core client event’i CORE.clientHudVisibleEvent (visible) | Tam ekran bir menü açıkken HUD’u gizler (herhangi bir script’ten lib hud.hide(reason)). |
AI Core tuş ipuçları (ai-core:client:keyHints, GetKeyHints()) | Soldaki tuş listesi. |
Araç state bag’i fuel | Yakıt göstergesi. |
Oyuncu state bag’i proximity ve pma-voice:setTalkingMode / pma-voice:radioActive event’leri | Ses mesafesi, konuşma, telsiz. |
Lib seatbelt (AI Core’un emniyet kemeri katmanı) | Emniyet kemeri uyarısı. |
Lib inventory.currentWeapon() | Silah kutusu. |
Event’ler
ai-hud’un kendi event’leri (resource/common/hud.ts) dahilidir. Biri sadece kendi client’ına açıktır: ai-hud:stress (client’tan server’a, 1 ile 5 puan, en fazla saniyede iki). Diğer script’ler stresi server’da AI Core üzerinden ekler.