AI Core
API başvurusuLib: server

Meslekler ve hizmetler

Polis ihbarları, hapis, MDT kayıtları, sağlıkçılar, canlandırma ve iyileştirme, stres, açlık ve susuzluk, meslek ve çete tanımları, prime time.

TypeScript
import { dispatch, prison, mdt, ems, medical, stress, needs, definitions, isPrimeTime } from "@aicore-fivem/lib/server";

Buradaki her nesne ai-core’un katmanlarından biri üzerinden gider: sunucunun o iş için çalıştırdığı script (bir ihbar sistemi, bir hapishane, bir MDT, bir ölüm script’i, bir HUD) cevap verir. Sahip onu değiştirdiğinde script’in çalışmaya devam eder. Böyle bir script çalışmıyorken çağrılar sessizce başarısız olur (false, 0, null).

dispatch

dispatch.alert

Bir polis (ya da başka bir meslek) ihbarı gönderir. İhbar sistemi onu jobs’un görevdeki üyelerine gösterir; varsayılan polis meslekleridir.

Taraf: Server · Bekler: hayır

Signature
dispatch.alert(alert: DispatchAlert): boolean
Lua
local ok = aiLib.dispatch.alert(alert)

DispatchAlert

Prop

Type

Tipi DispatchAlert’tir.

Dönüş değeri

boolean: gönderildiyse true. Hiçbir ihbar sistemi çalışmıyorsa ya da ihbar geçersizse false.

Örnek

import { dispatch, coordsOf, createLocale } from "@aicore-fivem/lib/server";

const Locale = createLocale();

function storeRobbed(source: number, store: string) {
  dispatch.alert({
    code: "10-90",
    title: Locale("ALERT_STORE_ROBBERY"),
    message: store,
    coords: coordsOf(source),
    source,
    icon: "store",
    priority: "high",
  });
}

prison

Hangi hapishane script’i çalışıyorsa onun üzerinden, ai-core ile hapis cezaları.

prison.jail

Yüklü bir oyuncuyu hapse gönderir.

Taraf: Server · Bekler: hayır

Signature
prison.jail(source: number, minutes: number, by?: number): boolean
Lua
local ok = aiLib.prison.jail(source, minutes, by)

Prop

Type

Dönüş değeri: hapse gönderildiyse true, hiçbir hapishane çalışmıyorken false.

if (!prison.jail(target, 15, officer)) return fail("NO_PRISON");

prison.release

Hapisteki bir oyuncuyu serbest bırakır.

Taraf: Server · Bekler: hayır

Signature
prison.release(source: number): boolean
Lua
local ok = aiLib.prison.release(source)

Dönüş değeri: serbest bırakıldıysa true; hapiste değilse ya da hiçbir hapishane çalışmıyorsa false.

prison.release(target);

prison.timeLeft

Taraf: Server · Bekler: hayır

Signature
prison.timeLeft(source: number): number
Lua
local minutes = aiLib.prison.timeLeft(source)

Dönüş değeri: kalan ceza dakikası; özgürse 0.

if (prison.timeLeft(source) > 0) return fail("IN_PRISON");

mdt

ai-core’un MDT katmanı üzerinden polis MDT kayıtları (cezalar, aranma kararları, tutuklamalar, hapis). Hiçbir MDT çalışmıyorken hiçbir şey yazılmaz.

mdt.record

Polis MDT’sine bir kayıt yazar.

Taraf: Server · Bekler: hayır

Signature
mdt.record(record: MdtRecord): boolean
Lua
local ok = aiLib.mdt.record(record)

MdtRecord

Prop

Type

Tipi MdtRecord’dur.

Dönüş değeri: yazıldıysa true; hiçbir MDT çalışmıyorsa ya da MDT böyle bir kayıt almıyorsa false.

if (prison.jail(target, 20, officer)) mdt.record({ kind: "jail", target, by: officer, title: "Armed robbery", minutes: 20 });

mdt.provider

Taraf: Server · Bekler: hayır

Signature
mdt.provider(): string | null
Lua
local name = aiLib.mdt.provider()

Dönüş değeri: kayıtların gittiği MDT ya da null.

if (!mdt.provider()) console.log("no MDT: records are skipped");

ems

ai-core’un EMS katmanı üzerinden sağlıkçılar: bir EMS script’inin kendi sayımı ve yardım çağrıları, yoksa ai-core’un görev sayımları ve ihbarları.

ems.available

Bir çağrıyı almaya müsait kaç sağlıkçı olduğu.

Taraf: Server · Bekler: hayır

Signature
ems.available(jobs: string[]): number
Lua
local count = aiLib.ems.available(jobs)

Prop

Type

Dönüş değeri: jobs içinde görevdeki sağlıkçı sayısı; bir dispatch script’i meşgul olanları biliyorsa onlar dışarıda bırakılır.

// Oyuncuların hastanede yeniden doğmasına yalnızca hiçbir sağlıkçı gelemiyorsa izin ver.
const canRespawn = ems.available(["ambulance"]) === 0;

ems.distress

Bir oyuncu için call.jobs sağlıkçılarına bir yardım çağrısı gönderir.

Taraf: Server · Bekler: hayır

Signature
ems.distress(source: number, call: DistressCall): boolean
Lua
local ok = aiLib.ems.distress(source, call)

Prop

Type

Tipi DistressCall’dur.

Dönüş değeri: bir şey çağrıyı aldıysa true, değilse false.

if (!ems.distress(source, { jobs: ["ambulance"], message: "Unconscious" })) return fail("NO_MEDICS");

ems.provider

Taraf: Server · Bekler: hayır

Signature
ems.provider(): string | null
Lua
local name = aiLib.ems.provider()

Dönüş değeri: katmanın kullandığı EMS kaynağı; kendi görev sayımları için "ai-core".

console.log(`medics through ${ems.provider()}`);

medical

Hangi ölüm ya da ambulans script’i çalışıyorsa ai-core’un medical katmanı üzerinden canlandırma, iyileştirme ve yerde olma durumu. Lua karşılığı yok: ai-core’un RevivePlayer, HealPlayer, IsPlayerDead export’larını çağır.

medical.revive

Yerdeki bir oyuncuyu yattığı yerde ayağa kaldırır.

Taraf: Server · Bekler: hayır

Signature
medical.revive(source: number): boolean

Dönüş değeri: canlandırıldıysa true; yerde değilse ya da hiçbir ölüm script’i çalışmıyorsa false.

if (!medical.revive(target)) return fail("NOT_DOWN");

medical.heal

Yerde olmayan bir oyuncuya tam can verir.

Taraf: Server · Bekler: hayır

Signature
medical.heal(source: number): boolean

Dönüş değeri: iyileştirildiyse true, hiçbir ölüm script’i çalışmıyorsa false.

medical.heal(source);

medical.isDead

Oyuncunun yerde olup olmadığı.

Taraf: Server · Bekler: hayır

Signature
medical.isDead(source: number): boolean

Dönüş değeri: yerdeyse true; ölüm script’i yoksa false. Ped’in canını okumak yerine bunu kullan.

if (medical.isDead(source)) return fail("YOU_ARE_DOWN");

medical.provider

Taraf: Server · Bekler: hayır

Signature
medical.provider(): string | null

Dönüş değeri: cevap veren ölüm script’i (ai-death...) ya da hiçbiri çalışmıyorsa null.

console.log(`deaths through ${medical.provider() ?? "nothing"}`);

stress

Stresi hangi HUD tutuyorsa ai-core’un stres katmanı üzerinden oyuncuların stresi (0 ile 100 arası).

stress.gain

Stres puanı ekler.

Taraf: Server · Bekler: hayır

Signature
stress.gain(source: number, amount: number): boolean
Lua
local ok = aiLib.stress.gain(source, amount)

Prop

Type

Dönüş değeri: eklendiyse true, stresli bir HUD çalışmıyorsa false.

stress.gain(source, 5); // bir çatışmadan sonra

stress.relieve

Stres puanı düşürür.

Taraf: Server · Bekler: hayır

Signature
stress.relieve(source: number, amount: number): boolean
Lua
local ok = aiLib.stress.relieve(source, amount)

Dönüş değeri: düşürüldüyse true; stresli bir HUD çalışmıyorsa ya da amount 0 veya daha azsa false.

inventory.registerUsableItem("cigarette", (source) => {
  stress.relieve(source, 10);
});

stress.provider

Taraf: Server · Bekler: hayır

Signature
stress.provider(): string | null
Lua
local name = aiLib.stress.provider()

Dönüş değeri: stresi tutan HUD ya da null.

if (!stress.provider()) console.log("no HUD keeps stress");

needs

needs.refill

Açlığı ve susuzluğu, onları tutan HUD üzerinden ya da HUD yoksa ai-core’un karakter metadata’sı üzerinden tamamen doldurur (admin canlandırması, hastane).

Taraf: Server · Bekler: hayır

Signature
needs.refill(source: number): boolean

Lua karşılığı yok: ai-core’un RefillNeeds(source) export’unu çağır.

Dönüş değeri: doldurulduysa true, oyuncunun karakteri yoksa false.

if (medical.revive(target)) needs.refill(target);

Meslek ve çete tanımları

definitions.job

ai-core’un panelinde ayarlandığı haliyle bir mesleğin tanımı. Her biri ai-core’dan bir kez okunur ve panel onu değiştirene kadar tutulur; bu yüzden bir okuma bellekten bakmaktır.

Taraf: Server · Bekler: hayır

Signature
definitions.job(name: string): JobDefinition | null

Lua karşılığı yok: ai-core’un GetJobDefinition(name) export’unu çağır.

Dönüş değeri: JobDefinition (label, type, defaultDuty, listed?, grades) ya da böyle bir meslek yoksa null.

const label = definitions.job("police")?.label ?? "police";

definitions.gang

Taraf: Server · Bekler: hayır

Signature
definitions.gang(name: string): GangDefinition | null

Lua karşılığı yok: ai-core’un GetGangDefinition(name) export’unu çağır.

Dönüş değeri: GangDefinition (label, grades) ya da null.

const gang = definitions.gang("ballas");
if (!gang) return fail("UNKNOWN_GANG");

Prime time

isPrimeTime

ai-core’un prime time ayarına göre bir meslek için prime time olup olmadığı. Saatler tgiann-policealert çalışıyorken ondan, yoksa ai-core’un panelinde ayarlanan saatlerden gelir.

Taraf: Server · Bekler: hayır

Signature
isPrimeTime(job?: string): boolean

Lua karşılığı yok: ai-core’un IsPrimeTime(job) export’unu çağır.

Prop

Type

Dönüş değeri: prime time sırasında true.

if (!isPrimeTime("police")) return fail("BANK_CLOSED_FOR_HEISTS");

Bu sayfada