Geliştiriciler için ai-exitsleeping
ai-exitsleeping’in server ve client export’ları, hook event’leri ve uyuyan beden (sleeper) yapısı.
ai-exitsleeping’in bir server export’u, üç client export’u ve dört yerel hook event’i vardır (orijinal script’in düzenlenebilir hook’ları). Hiçbiri @aicore-fivem/shared içinde tiplenmemiştir: TypeScript’te onları callExport ile çağır.
Server export’ları
AddCreateCheck
Bir oyuncu çıkış yaptığında çalışan bir kontrol ekler. Uyuyan beden bırakmamak için false döndür (bir daire, bir etkinlik bölgesi, bir hapishane). Script’in bir bedenin kalmaması gereken yerleri biliyorsa kullan.
Taraf: Server · Bekler: hayır
AddCreateCheck(id: string, check: (source: number, charId: number, coords: { x: number; y: number; z: number; heading: number }) => boolean): voidexports['ai-exitsleeping']:AddCreateCheck(id, function(source, charId, coords) return true end)Parametreler
Prop
Type
Dönüş değeri
Hiçbir şey. Resource’un durduğunda kontrol kendiliğinden kaldırılır.
Örnek
import { callExport } from "@aicore-fivem/lib/server";
// Etkinlik arenasının içinde uyuyan beden yok (merkezinin 200 m çevresi).
const ARENA = { x: -324.0, y: -1968.0, z: 21.6 };
callExport("ai-exitsleeping", "AddCreateCheck", "arena",
(_source: number, _charId: number, c: { x: number; y: number; z: number }) =>
Math.hypot(c.x - ARENA.x, c.y - ARENA.y) > 200,
);Sabit bir yer için paneldeki bir Hidden area aynı işi kodsuz yapar.
Client export’ları
PlayerLoaded
Yerel oyuncunun bedenini uyandırır ve etraftaki bedenleri göstermeye başlar. Bir doğuş script’inden, onun kendi son doğuşundan sonra ve sadece paneldeki Wake up on değeri PlayerLoaded export (spawn script) olduğunda çağır.
Taraf: Client · Bekler: hayır
PlayerLoaded(): voidexports['ai-exitsleeping']:PlayerLoaded()Dönüş değeri
Hiçbir şey. Bir sonraki karakter değişiminden önceki ikinci çağrı hiçbir şey yapmaz.
SetHidden
Herhangi bir sebep geçerli olduğu sürece bu client’taki her uyuyan bedeni gizler. Oyuncu bedenlerin yanlış görüneceği bir yerdeyken (bir shell iç mekân, bir ara sahne) kullan.
Taraf: Client · Bekler: hayır
SetHidden(reason: string, hidden: boolean): voidexports['ai-exitsleeping']:SetHidden('myshell', true)Parametreler
Prop
Type
Dönüş değeri
Hiçbir şey. Resource’un durduğunda sebeplerin kaldırılır.
Örnek
import { callExport } from "@aicore-fivem/lib/client";
export function enterShell(): void {
callExport("ai-exitsleeping", "SetHidden", "shell", true);
}
export function leaveShell(): void {
callExport("ai-exitsleeping", "SetHidden", "shell", false);
}SetCarryBlocked
Herhangi bir sebep geçerli olduğu sürece bu client’ta taşıma seçeneğini gizler (kendi kuralların: bir mini oyun, bir hapishane).
Taraf: Client · Bekler: hayır
SetCarryBlocked(reason: string, blocked: boolean): voidexports['ai-exitsleeping']:SetCarryBlocked('minigame', true)Dönüş değeri
Hiçbir şey. Sebep kuralları SetHidden ile aynıdır. Taşıma araçtayken, yere düşmüşken ve kelepçeliyken zaten engellidir.
Hook event’leri
Dinleyebileceğin yerel event’ler (ağ üzerinden gönderilmez).
ai-exitsleeping:created
Çıkış yapan bir karakter için uyuyan bir beden oluşturuldu. Taraf: Server.
Prop
Type
ai-exitsleeping:removed
Uyuyan bir beden gitti (uyandı, süresi doldu, kapatıldı). Taraf: Server. Argüman: charId: number.
ai-exitsleeping:positionChanged
Bir bedenin konumu değişti (taşındı, araçla götürüldü, yere bırakıldı). Taraf: Server. Argümanlar: charId: number, coords: { x, y, z, heading }.
ai-exitsleeping:client:pedSpawned
Bu client’ta uyuyan bir ped oluşturuldu. Taraf: Client. Argümanlar: ped: number (yerel, ağa bağlı olmayan bir ped), view: SleeperView.
// Server: beliren ve kaybolan her bedeni logla.
on("ai-exitsleeping:created", (charId: number, view: { x: number; y: number; z: number }) => {
console.log(`character ${charId} fell asleep at ${view.x}, ${view.y}, ${view.z}`);
});
on("ai-exitsleeping:removed", (charId: number) => {
console.log(`character ${charId} woke up`);
});SleeperView
Prop
Type
Dahili event’ler
ai-exitsleeping:wake, area, client:area, look, startCarry, stopCarry, putInVehicle, takeOut kendi client’ı ile server’ı arasındadır; bunları çağırma.