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.
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
dispatch.alert(alert: DispatchAlert): booleanlocal 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
prison.jail(source: number, minutes: number, by?: number): booleanlocal 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
prison.release(source: number): booleanlocal 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
prison.timeLeft(source: number): numberlocal 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
mdt.record(record: MdtRecord): booleanlocal 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
mdt.provider(): string | nulllocal 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
ems.available(jobs: string[]): numberlocal 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
ems.distress(source: number, call: DistressCall): booleanlocal 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
ems.provider(): string | nulllocal 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
medical.revive(source: number): booleanDö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
medical.heal(source: number): booleanDö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
medical.isDead(source: number): booleanDö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
medical.provider(): string | nullDö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
stress.gain(source: number, amount: number): booleanlocal 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 sonrastress.relieve
Stres puanı düşürür.
Taraf: Server · Bekler: hayır
stress.relieve(source: number, amount: number): booleanlocal 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
stress.provider(): string | nulllocal 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
needs.refill(source: number): booleanLua 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
definitions.job(name: string): JobDefinition | nullLua 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
definitions.gang(name: string): GangDefinition | nullLua 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
isPrimeTime(job?: string): booleanLua 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");Para ve bankacılık
İki hesap arasında money.transfer, ai-core üzerinden banka script’i ve hangi fatura script’i çalışıyorsa onun üzerinden faturalar.
Dünya
Hangi hava script’i çalışıyorsa onun üzerinden saat ve hava, ai-core’un dağıtıcısından routing bucket’lar, kapı kilitleri ve kayıtlı karakterlerin doğma noktaları.