AI Core
API başvurusu

Lib: client

@aicore-fivem/lib/client - imzasıyla her client yardımcısı ve varsa Lua aiLib karşılığı.

TypeScript
import { Points, notify, progress, cache } from "@aicore-fivem/lib/client";

Client girişi /fivem yardımcılarını da yeniden dışa aktarır (every, ByResource, Reasons, caller, onStop, plateOf, export ve dil yardımcıları, state bag sınıfları): bkz. Lib: shared ve fivem. Son sütun aiLib üzerindeki Lua karşılığını verir (Lua için lib).

Sunucuyla konuşmak

YardımcıNeLua
triggerServerCallback(name, args = [], timeoutMs?): Promise<unknown>Sunucuya sorar (orada onClientCallback); cevabı ayrıştır.triggerServerCallback
onServerCallback(name, handler: (...args) => unknown): voidSunucunun triggerClientCallback’ini cevaplar.onServerCallback
onServerEvent(name, handler) / onServerEvent(name, { args }, handler)Sunucudan bir net olayı; sunucudan gelmeyen emit’ler düşer. args payload’u ayrıştırır.onServerEvent
fromServer(): booleanİşlenen olay sunucudan mı geldi.
callAction(name, args = [], { fallback, timeout?, silent? })Bir sunucu eylemi çalıştırır, çevrilmiş reddi kendisi gösterir, ok cevabını ya da null döner.callAction
isActionOk(reply), replyError(reply, fallback)Bir ActionResult’u elle okur.
TypeScript
const reply = await callAction("buy", [itemId], { fallback: "BUY_FAILED" });
if (reply) notify(t("BOUGHT"), "success");

Yerel oyuncu

YardımcıNeLua
cacheped, playerId, serverId, vehicle, seat, weapon (false = yok), ai-core’un tek izleyicisi tutar.cache
onCache(key, handler: (value, old) => void): voidÖnbellekteki bir değer değişince çalışır.cache.onChange
readPlayerState(ped), readWeapon(ped)Bir ped’in şu anki aracı, koltuğu ve silahı.
player.coords(), player.heading(), player.distanceTo(point), player.ped()Konum okumaları (önbellekten).player
player.freeze(state: boolean)Ped’i dondurur.player.freeze
player.teleport(to: { x, y, z? }, { heading?, ground?, fade?, keepVehicle? }): Promise<void>Kararmanın arkasında çarpışma yüklemeli ışınlama; z yoksa yere iner.player.teleport
player.playAnim(dict, clip, options?): Promise<void>, player.stopAnim()Animasyon oynatır ya da durdurur.player.playAnim, player.stopAnim
player.holdAnim(dict, clip, { ...options, while? })stop() ya da while() false olana kadar animasyonu sürdürür.
fadeOut(ms = 300), fadeIn(ms = 400)Ekran kararması; her biri bitince çözülür.fadeOut, fadeIn
getPlayerData(key), onPlayerData(key, handler): () => void, seedPlayerData(data)ai-core’un oyuncu verisi (character, money, jobs, duty, job, gangs, activeGang, metadata).playerData.get, playerData.onChange
hasJob(jobs, minGrade = 0), inGang(gangs, minGrade = 0), onDutyIn(jobs)Üyelik kontrolleri (boş liste = herkes).
onMembershipChange(fn)Meslekler, mesai ya da çeteler değişti.
allows(rule: AccessRule): booleanOyuncu bir yeri kullanabilir mi (sunucunun online.allows’u aynı kararı verir).
playerPed(serverId): numberSunucu id’siyle bir oyuncunun ped’i, kapsam dışında 0.playerPed
nearestPlayer(metres, { from?, filter? }): number | nullEn yakın diğer oyuncunun sunucu id’si.nearestPlayer

Yerler ve dünya

YardımcıNeLua
new Points()Oyuncunun kullandığı her yer: istem ya da hedef (sunucu sahibinin seçimi), NPC, blip.Points.new()
points.add(id, { coords, label, icon?, radius?, height?, canShow?, onPressed, onEnter?, onExit?, ped?, blip?, world?, promptOnly?, preferTarget? })Bir nokta ekler; label bir fonksiyon olabilir.points:add
points.addModel(id, { models, label, icon?, radius?, canShow?(entity), onPressed(entity), vehicles?, inVehicle? })Bazı modellerin her nesnesinde bir nokta (ATM’ler, sandalyeler).points:addModel
points.addVehicle(id, { label, icon?, radius?, canShow?(vehicle), onPressed(vehicle) })Her ağa bağlı araçta bir nokta.points:addVehicle
points.remove(id), clear(), refresh(id?), isInside(id)Noktaları yönetir; refresh, canShow’u yeniden okur.
new Zones(): add(id, options), remove, clear, isInside, sizeEtkileşimsiz alanlar.Zones.new()
new LocalPed({ model, coords, ... }): entity, removeSadece bu client’ın gördüğü, oyuncu yaklaşınca oluşan bir ped.LocalPed.new()
new Blips(): add(id, options), get, remove, clear; createBlip(options)İsimli blip’ler.Blips.new(), Blips.create()
showPrompt(id, text, at?), hidePrompt(id), onPromptPressed(handler)ai-lib’in istemi, elle (Points bunu kullanır).showPrompt, hidePrompt, onPromptPressed
new AdminWorld(files): get, onChange, view, recordsBir script’in sync: "all" panel dosyalarının client kopyası.
TypeScript
const points = new Points();
points.add("shop", {
  coords: { x: 25.7, y: -1347.3, z: 29.5 },
  label: t("OPEN_SHOP"),
  icon: "basket-shopping",
  blip: { sprite: 52, color: 2, scale: 0.8, label: t("SHOP") },
  onPressed: () => openShop(),
});

Arayüz

YardımcıNeLua
notify(text, kind = "info", duration?)Bir bildirim kartı.notify
progress({ label, duration, anim?, scenario?, face?, allowVehicle?, canCancel?, whileDead?, freeze?, disable? }): Promise<boolean>ai-lib’in çubuğuyla süreli bir eylem; iptal edilirse false.progress
cancelProgress(), isProgressRunning()Bu resource’un çubuğunu durdurur ya da kontrol eder.progress.cancel(), progress.isRunning()
menu(request, onHover? | { onHover, onToggle }): Promise<string | null>ai-lib’in menüsü; seçilen id ile çözülür.menu.show
input(request): Promise<Record<string, string | number> | null>ai-lib’in giriş diyaloğu.input
itemPicker({ title, target? }): Promise<PickedItem[] | null>Admin araçları: ai-core’un eşya ızgarası.itemPicker
skillCheck(difficulty | difficulty[], keys = ["e"]): Promise<boolean>Beceri kontrolü ("easy" | "medium" | "hard" ya da { areaSize, speedMultiplier }).skillCheck
lockpick({ difficulty?, pins?, picks? }): Promise<"opened" | "broken" | "cancelled">Maymuncuk mini oyunu.lockpick
new NuiScreen(name, { cursor?, onClose?, closeCallback? }): open, close, send, on, isOpenTam ekran bir NUI: odak, gizlenen HUD’lar, kapanma mesajı, callback’ler.
hud.hide(reason), hud.show(reason), hud.visible(), hud.onChange(fn)Tam ekran arayüz boyunca HUD’ları gizler.hud
keyHints.show(id, { label, keybind?, key?, icon? }), keyHints.hide(id)HUD’da bir tuş yardım satırı.keyHints
radial.add(item), radial.remove(id), radial.refresh()Hangi radyal menü çalışıyorsa ona öğeler.radial
controls.disable(reason, controls, group?), controls.enable(reason), controls.disableAll(reason, except?)Engellenen tuşlar, tek kare başı iş.controls
new Keybind({ name, description, defaultKey, defaultMapper, hint?, icon?, hintLabel?, onPressed, onReleased })Değiştirilebilir bir tuş; varsayılanını panel ayarlayabilir. isPressed(), currentKey(), disable(state).Keybind.new()
TypeScript
const done = await progress({
  label: t("REPAIRING"),
  duration: 8000,
  anim: { dict: "mini@repair", clip: "fixing_a_player" },
  canCancel: true,
});

AI Core üzerinden

YardımcıNeLua
inventory.openInventory(), inventory.hasItem(item, count = 1), inventory.currentWeapon()Aktif envanter.inventory
medical.isDead(), medical.onChange(fn)Yerel oyuncu yerde, hangi ölüm script’i olursa olsun.
gestures.isHandsUp(), isPointing(), provider()Herhangi bir emote script’inin eller yukarı ve işaret etmesi.gestures
appearance.apply(ped, look), appearance.read(ped)Aktif kıyafet script’iyle görünümler.appearance
world.pauseSync(reason), world.resumeSync(reason)Hava ve saat senkronunu duraklatır.world

Araçlar ve entity’ler

YardımcıNeLua
nearestVehicle(metres, { networked?, notOwn?, filter? }): numberEn yakın araç.nearestVehicle
drivenVehicle(): number | falseOyuncunun sürdüğü araç.
waitForEntity(netId, timeoutMs = 5000): Promise<number>Entity burada var olunca o, zaman aşımında 0.waitForEntity
entityFromNetId(netId, type?): numberŞu anki entity ya da 0 (tip 1 ped, 2 araç, 3 nesne).
getVehicleProps(vehicle), setVehicleProps(vehicle, props), setVehicleSetup(vehicle, setup)Bir aracın görünümünü okur ve uygular.
new PreviewVehicle(): show(model, at, setup?), clear()Yerel bir galeri aracı.
vehicleLabel(model | hash | vehicle): stringBir aracın görünen adı.vehicleLabel

Yoklamalar, yükleme, zamanlama

YardımcıNeLua
raycast(from, to, { flags?, ignore?, options? }): RayHit | nullBir çizgi yoklaması: { coords, normal, entity }.raycast
groundZ(x, y, z = 1000): number | nullZemin yüksekliği, çarpışma yüklenmemişken null.groundZ
locationName(coords?): { street, crossing?, zone }Sokak ve bölge adları.locationName
waypoint(): { x, y } | nullHarita işareti.waypoint
pedHeadshot(ped, transparent = false, timeoutMs = 5000)Bir ped’in vesikalık handle’ı ve doku adı.pedHeadshot
onShot(handler: (weapon) => void): () => voidYerel ped’in ateş ettiği kare.onShot
requestModel, requestAnimDict, requestAnimSet, requestPtfxAsset, requestTextureDict, requestWeaponAsset (name, timeoutMs = 10000)Bir oyun varlığını yükler.aynı adlar
attachProp(model, { ped?, bone, offset?, rotation?, collision?, rotationOrder? }): Promise<number>Bir ped kemiğinde tutulan yerel bir prop.
new TickLoop(onFrame, name?): set(active), runningSadece gerektiğinde açılan kare başı iş.
new AreaFollower(event, cellSize = 64): start, stopOyuncunun ızgara hücresini bir sunucu AreaStream’ine bildirir.
new ScriptCamera(type?): start, move, glideTo, attach, pointAt, setFov, shake, blur, stopScript kamerası, durunca oyun kamerasına geri verilir.

Bu sayfada