ai-core sunucu export’ları
ai-core’un her sunucu export’u - imzası ve ne yaptığı, alana göre gruplu.
@aicore-fivem/shared (exports.ts) içinde AiCoreServerExports olarak tiplidir. TypeScript’te dosya başına bir handle al; Lua’da doğrudan exports['ai-core'] çağır.
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");Aşağıda kullanılan tipler: CharacterInfo, AiPlayerData, JobMembership ({ job, grade }), GangMembership ({ gang, grade }), InventoryRef (bir oyuncunun sunucu id’si ya da başka bir envanterin id’si: depo adı, plaka), KeyPurpose (purchase, garage, job, rental, temporary); hepsi @aicore-fivem/shared içinde.
Karakterler ve oyuncular
| Export | Ne |
|---|---|
GetPlayerData(src: number): AiPlayerData | null | ai-core’un yüklü bir oyuncu için tuttuğu her şey: karakter, para, meslekler, mesai, çeteler, metadata. |
GetCharacter(src: number): CharacterInfo | null | Yüklü karakter (id, citizenid, isimler, doğum tarihi, cinsiyet, uyruk). |
GetSourceByCharId(charId: number): number | null | O karakteri oynayan oyuncunun sunucu id’si. |
GetSourceByCitizenId(citizenid: string): number | null | Aynısı, citizen id ile. |
GetLoadedSources(): number[] | Karakteri yüklü her oyuncunun sunucu id’si. |
GetFivemId(src: number): string | null | Oyuncunun FiveM kimliği. |
SwitchCharacter(src: number): boolean | Oyuncuyu karakter ekranına geri gönderir. |
SetOfflinePosition(charId: number, position: { x, y, z, heading? }): boolean | Kayıtlı (yüklü olmayan) bir karakterin doğma noktasını taşır; yüklüyken false. |
GetPlayersInScope(source: number): number[] | Bir oyuncunun OneSync kapsamındaki oyuncular (yaklaşık 424 m). |
const character = core.GetCharacter(source);
if (character) console.log(character.firstname, character.lastname);local character = exports['ai-core']:GetCharacter(source)
if character then print(character.firstname, character.lastname) endPara
Hesaplar panelin Hesaplar listesindekilerdir (varsayılan cash, bank). reason deftere yazılır.
| Export | Ne |
|---|---|
GetMoney(src: number, account: string): number | null | Bir oyuncunun bakiyesi. |
AddMoney(src: number, account: string, amount: number, reason?: string): boolean | Para ekler. |
RemoveMoney(src: number, account: string, amount: number, reason?: string): boolean | Para alır; hesap ödeyemezse false. |
SetMoney(src: number, account: string, amount: number, reason?: string): boolean | Bakiyeyi ayarlar. |
GetSharedMoney(ownerType: "job" | "gang", ownerId: string, account: string): number | null | Bir mesleğin ya da çetenin ortak hesabı. |
AddSharedMoney(ownerType, ownerId, account, amount: number, reason?: string): boolean | Ortak hesaba ekler. |
RemoveSharedMoney(ownerType, ownerId, account, amount: number, reason?: string): boolean | Ortak hesaptan alır. |
TransferMoney(from: MoneyRef, to: MoneyRef, amount: number, reason?: string, fee?: number): boolean | İki hesap arasında tek işlemde, iki defter satırıyla para taşır; fee’yi de from öder. |
GetAccountTypes(): Record<string, AccountTypeDefinition> | Hesap listesi (label, start, allowNegative). |
MoneyRef, yüklü bir oyuncu için { source, account }, ortak hesap için { owner: "job" \| "gang", id, account }.
if (core.RemoveMoney(source, "bank", 500, "fine")) {
core.AddSharedMoney("job", "police", "bank", 500, "fine");
}if exports['ai-core']:RemoveMoney(source, 'bank', 500, 'fine') then
exports['ai-core']:AddSharedMoney('job', 'police', 'bank', 500, 'fine')
endMeslekler ve çeteler
Bir karakter birden çok meslek ve çeteye sahip olabilir; en fazla bir mesaideki meslek ve bir aktif çete.
| Export | Ne |
|---|---|
GetJobs(src: number): JobMembership[] | null | Her meslek üyeliği. |
GetCurrentJob(src: number): JobMembership | null | Diğer script’lerin "meslek" olarak gördüğü: mesaideki, yoksa son mesaideki, yoksa ilki. |
GetDutyJob(src: number): string | null | Oyuncunun mesaide olduğu meslek. |
SetDuty(src: number, job: string | null): boolean | Oyuncuyu bir meslekte mesaiye alır ya da mesaiden çıkarır (null). |
SetJob(src: number, job: string, grade: number): boolean | Meslek ekler ya da rütbesini değiştirir. |
RemoveJob(src: number, job: string): boolean | Bir meslek üyeliğini kaldırır. |
GetOnDutyCount(job: string): number | Bir meslekte kaç oyuncunun mesaide olduğu. |
IsPrimeTime(job?: string): boolean | Bir meslek için yoğun saat mi (tgiann-policealert çalışırken onun saatleri, yoksa panelin saatleri). |
GetGangs(src: number): GangMembership[] | null | Her çete üyeliği. |
GetActiveGang(src: number): string | null | Aktif çete. |
SetGang(src: number, gang: string, grade: number): boolean | Çete ekler ya da rütbesini değiştirir. |
RemoveGang(src: number, gang: string): boolean | Bir çete üyeliğini kaldırır. |
SetActiveGang(src: number, gang: string | null): boolean | Aktif çeteyi seçer. |
GetJobDefinitions(): Record<string, JobDefinition> | Her meslek tanımı (bir kopya: seyrek okumalar için). |
GetJobDefinition(job: string): JobDefinition | null | Tek meslek: label, type, defaultDuty, listed?, grades (label, salary, boss). |
GetGangDefinitions(): Record<string, GangDefinition> | Her çete tanımı. |
GetGangDefinition(gang: string): GangDefinition | null | Tek çete: label, grades. |
if (core.GetDutyJob(source) === "police") {
const officers = core.GetOnDutyCount("police");
}if exports['ai-core']:GetDutyJob(source) == 'police' then
local officers = exports['ai-core']:GetOnDutyCount('police')
endMetadata ve sunucu ayarları
| Export | Ne |
|---|---|
GetMeta(src: number, key: string): unknown | Karakterin metadata çantasından bir değer. |
SetMeta(src: number, key: string, value: unknown): boolean | Bir metadata değeri ayarlar. |
GetBranding(): Branding | Panelin Genel ayarlarındaki sunucu adı, alt başlık, sloganlar ve arka plan. |
GetUpdates(): UpdateInfo[] | GitHub’da çalışan sürümden daha yeni sürümü olan script’ler. |
Eşyalar
ai-core’un envanter katmanı: aktif envanter cevap verir (hiçbiri çalışmıyorken false, 0 ya da boş).
| Export | Ne |
|---|---|
AddItem(inv: InventoryRef, item: string, count?: number, metadata?: ItemMetadata, slot?: number): boolean | Eşya ekler. |
RemoveItem(inv: InventoryRef, item: string, count?: number, metadata?: ItemMetadata, slot?: number): boolean | Eşya alır. |
GetItemCount(inv: InventoryRef, item: string, metadata?: ItemMetadata): number | Bir eşyadan kaç tane. |
HasItem(inv: InventoryRef, item: string, count?: number): boolean | Envanterde en az count tane var mı. |
CanCarryItem(inv: InventoryRef, item: string, count?: number, metadata?: ItemMetadata): boolean | Eşyalar sığar mı. |
GetItems(inv: InventoryRef): InventoryStack[] | Her yığın (name, label, count, slot, metadata). |
ClearInventory(inv: InventoryRef): void | Bir envanteri boşaltır. |
RegisterStash(name: string, label: string, slots: number, maxWeight: number, jobs?: string[]): void | Bir depo; saklanır ve aktif olan her envantere yeniden kaydedilir. |
OpenInventory(source: number, inv: InventoryRef): boolean | Bir depoyu ya da başka bir envanteri oyuncunun ekranında açar. |
RegisterUsableItem(name: string, handler: UsableItemHandler): void | Kullanımda handler(source, item) çalışır; false dönerse eşya kalır. Envanter yeniden başlasa da saklanır. |
GetItemDefinition(name: string): ItemDefinition | null | Tek eşya (name, label, weight, unique, close, description, image?). |
GetItemDefinitions(): Record<string, ItemDefinition> | Her eşya. |
UseItem(source: number, name: string, item?: unknown): unknown | Kayıtlı handler’ı çalıştırır (köprü çağırır). |
IsUsableItem(name: string): boolean | Bir handler kayıtlı mı. |
core.RegisterUsableItem("bandage", (source, item) => {
// heal, then let the inventory take the item
});
if (core.CanCarryItem(source, "water", 2)) core.AddItem(source, "water", 2);exports['ai-core']:RegisterUsableItem('bandage', function(source, item)
-- heal, then let the inventory take the item
end)
if exports['ai-core']:CanCarryItem(source, 'water', 2) then
exports['ai-core']:AddItem(source, 'water', 2)
endAraç anahtarları
Araç, bir sunucu entity handle’ı ya da plakadır; purpose varsayılanı temporary.
| Export | Ne |
|---|---|
GiveVehicleKeys(source: number, vehicle: number | string, purpose?: KeyPurpose): void | Aktif anahtar sistemiyle anahtar verir. |
RemoveVehicleKeys(source: number, vehicle: number | string): void | Anahtarı geri alır. |
HasVehicleKeys(source: number, vehicle: number | string): boolean | Oyuncuda anahtar var mı. |
exports['ai-core']:GiveVehicleKeys(source, 'AB12CDE', 'rental')Sağlık
| Export | Ne |
|---|---|
GetMedicalSystem(): string | null | ai-core’un ilettiği ölüm script’i. |
RevivePlayer(source: number): boolean | Yerde olan oyuncuyu olduğu yerde kaldırır; yerde değilse ya da ölüm script’i yoksa false. |
HealPlayer(source: number): boolean | Yerde olmayan oyuncuya tam can. |
IsPlayerDead(source: number): boolean | Oyuncu yerde mi. |
Görünüm
| Export | Ne |
|---|---|
GetAppearanceSystem(): string | null | ai-core’un görünümleri okuduğu kıyafet script’i. |
GetCharacterAppearance(charId: number, done: (look: CharacterAppearance | null) => void): void | Bir karakterin kayıtlı görünümü (yüklü olsun olmasın); done, { model, data } ya da null alır. |
exports['ai-core']:GetCharacterAppearance(charId, function(look)
if look then TriggerClientEvent('myscript:dress', source, look) end
end)Telefon
Hangi telefon script’i çalışıyorsa o cevap verir (yoksa null ya da false).
| Export | Ne |
|---|---|
GetPhoneNumber(source: number): string | null | Oyuncunun numarası. |
GetSourceByPhone(number: string): number | null | O numaraya sahip oyuncu. |
HasPhone(source: number): boolean | Oyuncunun telefonu var mı. |
SendPhoneMail(to: number | string, mail: PhoneMail): boolean | Bir oyuncuya ya da numaraya e-posta (sender, subject, message). |
SendPhoneMessage(from: string, to: number | string, text: string): boolean | Bir mesaj. |
PhoneNotify(source: number, notification: PhoneNotification): boolean | Bir telefon bildirimi (title, message, app?). |
İhbar
| Export | Ne |
|---|---|
SendDispatchAlert(alert: DispatchAlert): boolean | Aktif ihbar sistemiyle jobs mesleklerindeki mesaidekilere bir ihbar gösterir; hiçbiri çalışmıyorsa false. |
DispatchAlert: title, ve isteğe bağlı code, message, coords, jobs, source (şüpheli), blip (sprite, color?, scale?), duration (saniye), icon, priority (normal ya da high). Metinler zaten çevrilmiş olur.
core.SendDispatchAlert({
code: "10-90",
title: "Store robbery",
jobs: ["police"],
source,
priority: "high",
});exports['ai-core']:SendDispatchAlert({
code = '10-90', title = 'Store robbery', jobs = { 'police' }, source = source, priority = 'high',
})Hapis
| Export | Ne |
|---|---|
JailPlayer(source: number, minutes: number, by?: number): boolean | Çalışan hapis script’iyle oyuncuyu hapse atar. |
ReleasePlayer(source: number): boolean | Oyuncuyu serbest bırakır. |
GetJailTime(source: number): number | Kalan dakika. |
Saat ve hava
Hangi hava script’i çalışıyorsa onun qb-weathersync sözleşmesi (hiçbiri çalışmıyorken null ya da false).
| Export | Ne |
|---|---|
GetWeather(): string | null | Şu anki hava tipi. |
SetWeather(type: string): boolean | Havayı ayarlar (EXTRASUNNY, RAIN...). |
GetTime(): { hour, minute } | null | Oyun saati. |
SetTime(hour: number, minute?: number): boolean | Oyun saatini ayarlar. |
SetBlackout(on: boolean): boolean | Elektrik kesintisi açık ya da kapalı. |
FreezeTime(on: boolean): boolean | Saati dondurur ya da çözer. |
Routing bucket’lar
| Export | Ne |
|---|---|
AcquireBucket(tag: string): number | Çağıran resource için boş bir routing bucket (nüfus yok, katı kilit); resource durunca serbest kalır. |
ReleaseBucket(id: number): boolean | Bucket’ı geri verir (sadece alan resource); önce içindeki oyuncuları çıkar. |
Loglar
| Export | Ne |
|---|---|
Log(channel: string, message: string, options?: LogOptions): void | Çağıran resource’un logunu açık olan her sağlayıcıya gönderir (Discord, Fivemanage, FiveM Stats, konsol). options: level, source, target, metadata. |
LogChannels(channels: Record<string, LogChannel>): void | Çağıran resource’un kanallarını tanımlar (dataset, active); başlangıçta bir kez çağır. |
exports['ai-core']:Log('sales', 'Sold a car', { source = source, metadata = { price = 25000 } })Bağlantı
| Export | Ne |
|---|---|
AddConnectionCheck(id: string, check: (source, identifiers) => string | null | undefined): void | Bağlanan her oyuncunun geçtiği bir kontrol: ret metni döndür, ya da içeri almak için null. |
RegisterReplacement(remove: string | string[], keep?: string): void | keep’in (varsayılan: çağıran) remove’u gereksiz kıldığını bildirir: konsol uyarısı, ikisi birlikte çalışırken girişler reddedilir. |
GetConflicts(): { keep, remove, running, from }[] | Yerini tutan script’in yanına kurulmuş script’ler. |
Admin paneli ve komutlar
| Export | Ne |
|---|---|
RegisterAdminPanel(resource: string): void | Paneli olan bir resource kendini duyurur (lib’in AdminPanel’i yapar). |
AdminPanelChanged(delta: AdminDelta): void | Bir panel resource’u bir kaydı değiştirdi; ai-core bunu paneli açık adminlere iletir. |
RegisterCommands(resource: string, commands: CommandInfo[]): void | Lib’in addCommand’ı bir resource’un komutlarını Komutlar sekmesinde listeler. |
GetLookupValues(source: LookupSource): string[] | Panel doğrulaması için bir arama listesinin değerleri (item, job, gang, account...). |
RegisterExternalPanel(panel: { id?, label, icon?, description?, command?, url? }): void | Başka bir script’in kendi ayar ekranını panoda listeler (command ile ya da gömülü url ile açılır). |
exports['ai-core']:RegisterExternalPanel({
label = 'My script', icon = 'gear', description = 'Its own settings', command = 'myscriptconfig',
})