Ortak tipler
API sayfalarının bağlantı verdiği her tip; her alanı, tipi ve örnek bir değerle.
API sayfaları tipleri adıyla yazar (Vec3, ActionResult, InventoryRef...). Bu sayfa her birini bir kez açıklar: alanlarını, her alanın ne anlama geldiğini ve örnek bir değeri.
Bir tipin nereden geldiği:
| Paket | Import | Tipler |
|---|---|---|
@aicore-fivem/shared | import type { AiPlayerData } from "@aicore-fivem/shared"; | Başlık başka bir şey söylemedikçe bu sayfadaki her şey. |
@aicore-fivem/lib/shared | import type { Vec3 } from "@aicore-fivem/lib/shared"; | Vec3, Vec4, AccessRule, BlipStyle, ZoneShape, VehicleProps, VehicleSetup, PlacePed. |
@aicore-fivem/lib/client | import type { ProgressOptions } from "@aicore-fivem/lib/client"; | ProgressOptions. |
@aicore-fivem/lib/server | import type { ProgressForOptions } from "@aicore-fivem/lib/server"; | ProgressForOptions. |
Lua’da çalışma anında tip yoktur. Aynı anahtarlara sahip bir Lua tablosu aynı değerdir: { x = 1.0, y = 2.0, z = 3.0 } bir Vec3’tür. Diziler Lua listeleridir ({ 'police', 'sheriff' }), null ise nil’dir. Vektörler için bkz. Lua için lib.
Konumlar
Vec3
Dünyada bir nokta, metre cinsinden. GTA’da x doğu, y kuzey, z yukarıdır.
Prop
Type
const counter: Vec3 = { x: 25.7, y: -1347.3, z: 29.5 };local counter = vector3(25.7, -1347.3, 29.5) -- ya da { x = 25.7, y = -1347.3, z = 29.5 }Vec4
Yönü olan bir nokta: bir ped’in durduğu ya da bir aracın doğduğu yer ve hangi yöne baktığı. Panelin vec4 alanları ve panelin nokta aracı bu şekli kaydeder.
Prop
Type
const spawn: Vec4 = { x: -42.1, y: -1098.4, z: 26.4, heading: 158.0 };Lua’daki vector4 yöne w der. Lib’in okuyucuları (readVec4) hem heading hem w kabul eder.
ZoneShape
Dünyada bir alan. Client Zones ve server alan kontrolleri tarafından kullanılır (bölge geometrisi). type ile seçilen üç şekilden biridir.
Sphere (bir noktanın etrafında bir küre):
Prop
Type
Cylinder (yerde yukarı ve aşağı uzanan bir daire):
Prop
Type
Poly (iki yükseklik arasında yerde bir çokgen):
Prop
Type
const yard: ZoneShape = { type: "sphere", center: { x: 440.1, y: -981.2, z: 30.7 }, radius: 25 };
const lot: ZoneShape = {
type: "poly",
points: [ { x: 210, y: -810 }, { x: 240, y: -800 }, { x: 230, y: -770 }, { x: 200, y: -780 } ],
minZ: 28,
maxZ: 36,
};Sonuçlar
ActionResult
Her server aksiyonunun client’a verdiği cevap: ya başarı ya da client’ın sebep olarak gösterdiği bir dil anahtarı. Başarı dalında ek alanlar taşınabilir (ActionResult<{ id: number }>). Yeni durumun kendisi asla cevapta gitmez: delta olarak gelir.
Başarı:
Prop
Type
Ret:
Prop
Type
const done: ActionResult = { ok: true };
const created: ActionResult<{ id: number }> = { ok: true, id: 42 };
const refused: ActionResult = { ok: false, error: "NOT_ENOUGH_MONEY" };return { ok = true }
return aiLib.fail('NOT_ENOUGH_MONEY') -- { ok = false, error = 'NOT_ENOUGH_MONEY' }Retleri fail ile kur; cevapları isActionOk ve replyError ile oku.
Oyuncular ve karakterler
AiPlayerData
ai-core’un bir oyuncunun kendi client’ına gönderdiği oyuncu verisi: karakter yüklendiğinde bir tam snapshot, sonra yalnızca değişen anahtar. Her iki tarafta da GetPlayerData export’u tarafından döndürülür. Diğer sayfalar ona "oyuncu verisi" diyebilir.
Prop
Type
const data: AiPlayerData = {
character: { id: 12, citizenid: "AB12CD34", slot: 1, firstname: "Jane", lastname: "Doe", birthdate: "1994-05-12", sex: "female", nationality: "American" },
money: { cash: 500, bank: 5000, black_money: 0, crypto: 0 },
jobs: [{ job: "police", grade: 2 }],
duty: "police",
job: { job: "police", grade: 2 },
gangs: [],
activeGang: null,
metadata: { hunger: 80, thirst: 75 },
};CharacterInfo
Diğer resource’ların gördüğü haliyle bir karakter (GetCharacter, playerLoaded ve AiPlayerData.character’daki "character").
Prop
Type
const character: CharacterInfo = {
id: 12, citizenid: "AB12CD34", slot: 1,
firstname: "Jane", lastname: "Doe", birthdate: "1994-05-12",
sex: "female", nationality: "American",
};JobMembership
Bir karakterin sahip olduğu tek bir meslek.
Prop
Type
const membership: JobMembership = { job: "police", grade: 2 };GangMembership
Bir karakterin içinde olduğu tek bir çete.
Prop
Type
const membership: GangMembership = { gang: "ballas", grade: 0 };SpawnPoint
Yüklü bir karakterin dünyada nerede ve nasıl göründüğü (ai-core’un karakteri dünyaya koymak için gönderdiği payload).
Prop
Type
const spawn: SpawnPoint = { x: -1037.6, y: -2737.9, z: 20.2, heading: 330, model: "mp_f_freemode_01", armour: 0, health: 200 };Branding
Tam ekran menülerde sunucunun adı ve görünümü (panelin General ayarları; GetBranding export’u).
Prop
Type
const branding: Branding = { name: "Los Santos RP", subtitle: "Serious roleplay", tagline: "Welcome", taglineSub: "Pick a character", background: "skyline" };PlayerCache
Yerel oyuncunun sık okunan değerleri, ai-core’un tek izleyicisi tarafından güncel tutulur (client’ta lib cache). false "yok" demektir.
Prop
Type
const snapshot: PlayerCache = { ped: 258, playerId: 0, serverId: 7, vehicle: 81922, seat: -1, weapon: false };UnloadReason
Bir karakterin neden bırakıldığı.
| Değer | Anlamı |
|---|---|
"dropped" | Oyuncu sunucudan çıktı. |
"switch" | Oyuncu karakter ekranına döndü. |
Para
Hesap isimleri
Para isimli hesaplarda durur. Hangilerinin var olduğunu panelin Accounts listesi belirler; ai-core bunlarla gelir:
| Ad | Etiket | Başlangıç miktarı |
|---|---|---|
cash | Cash | 500 |
bank | Bank | 5000 |
black_money | Dirty money | 0 |
crypto | Crypto | 0 |
Sunucu sahibi panelde hesap ekleyebilir, yeniden adlandırabilir ya da silebilir; bu yüzden listeyi varsaymak yerine GetAccountTypes export’uyla oku. Liste boşken ai-core tek bir cash hesabı tutar.
core.AddMoney(source, "bank", 250, "Paycheck");AccountTypeDefinition
Panelin Accounts listesinden bir hesap tipi (GetAccountTypes, hesap adına göre anahtarlanmış Record<string, AccountTypeDefinition> döndürür).
Prop
Type
const bank: AccountTypeDefinition = { label: "Bank", start: 5000, allowNegative: false };MoneyRef
Bir para transferinin bir tarafı (TransferMoney): yüklü bir oyuncunun hesabı ya da bir mesleğin veya çetenin ortak hesabı.
Prop
Type
const player: MoneyRef = { source: 7, account: "bank" };
const society: MoneyRef = { owner: "job", id: "mechanic", account: "bank" };Meslekler ve çeteler
GradeDefinition
Bir mesleğin ya da çetenin tek bir rütbesi (panel içeriği).
Prop
Type
const grade: GradeDefinition = { label: "Sergeant", salary: 400, boss: false };JobDefinition
Panelin Jobs listesinden bir meslek (GetJobDefinition). Bir JobMembership kaydının n rütbesi grades[n]’dir.
Prop
Type
const police: JobDefinition = {
label: "Police", type: "leo", defaultDuty: false, listed: false,
grades: [ { label: "Cadet", salary: 200, boss: false }, { label: "Chief", salary: 900, boss: true } ],
};GangDefinition
Panelin Gangs listesinden bir çete (GetGangDefinition).
Prop
Type
const ballas: GangDefinition = { label: "Ballas", grades: [ { label: "Recruit", salary: 0, boss: false } ] };AccessRule
Bir yeri (dükkan, stash, garaj) kimin kullanabileceği: jobs içinden biri ya da gangs içinden biri. İki liste de boşsa herkes. @aicore-fivem/lib/shared’dan gelir; readAccess ile oku.
Prop
Type
const armoury: AccessRule = { jobs: ["police"], gangs: [], grades: { police: 2 }, onDuty: true };Envanter
InventoryRef
Bir çağrının hangi envanter üzerinde çalıştığı.
| Değer | Anlamı |
|---|---|
number | Bir oyuncunun server id’si: o oyuncunun kendi envanteri. |
string | id’siyle başka herhangi bir envanter: bir stash adı, bagaj ya da torpido id’si. |
inventory.addItem(source, "water", 2); // bir oyuncu
inventory.addItem("police_evidence", "phone", 1); // bir stashItemMetadata
Tek bir eşya yığınında saklanan serbest veri (Record<string, unknown>): seri numarası, dayanıklılık, bir not. Her envanter bazı anahtarları kendisi gösterir (çoğunda label, description, image).
const metadata: ItemMetadata = { serial: "AB-1029", durability: 100 };Metadata’yı küçük ve JSON uyumlu tut (string’ler, sayılar, boolean’lar, düz nesneler ve diziler). Farklı metadata’ya sahip iki yığın asla üst üste binmez.
InventoryStack
Bir envanterdeki tek bir yığın (GetItems bunların listesini döndürür).
Prop
Type
const stack: InventoryStack = { name: "water", label: "Water", count: 3, slot: 4, metadata: {} };UsedItem
Bir oyuncu eşya kullandığında kullanılabilir eşya handler’ının aldığı yığın.
Prop
Type
const used: UsedItem = { name: "lockpick", slot: 2, count: 1, metadata: { durability: 80 } };UsableItemHandler
(source: number, item: UsedItem) => unknown: bir oyuncu eşyayı kullandığında çalışır. false döndürmek, kullanılan eşyayı kendisi alan envanterlerde eşyayı yerinde tutar (ai-inventory eşyanın consume miktarını alır); diğer envanterler kendi eşya ayarlarına uyar.
const onUse: UsableItemHandler = (source, item) => {
if (item.metadata.durability === 0) return false; // yerinde tut
return true;
};ItemDefinition
Aktif envanterin tanımladığı haliyle bir eşya (GetItemDefinition). Diğer sayfalar ona "eşya" ya da "eşya tanımı" diyebilir.
Prop
Type
const water: ItemDefinition = { name: "water", label: "Water", weight: 500, unique: false, close: true, description: "Fresh water" };StashDefinition
ai-core’un tuttuğu haliyle bir stash (RegisterStash argümanları).
Prop
Type
const evidence: StashDefinition = { name: "police_evidence", label: "Evidence", slots: 50, maxWeight: 100000, jobs: ["police"] };ShopProduct
Bir script dükkanının tek bir ürünü.
Prop
Type
const product: ShopProduct = { name: "bandage", price: 50 };ShopDefinition
Bir script’in kaydettiği dükkan. Server onu bir oyuncu için açar; kendine ait bir yeri yoktur.
Prop
Type
const shop: ShopDefinition = { name: "police_armoury", label: "Armoury", items: [{ name: "bandage", price: 50 }] };HeldWeapon
Yerel oyuncunun tuttuğu silah eşyası, envanterin bildiği haliyle.
Prop
Type
const held: HeldWeapon = { name: "WEAPON_PISTOL", label: "Pistol" };Araçlar
VehicleProps
Bir aracın görünümü ve modifiyesi düz veri olarak: renkler, modlar, ekstralar, kaplama, jantlar, neon, cam filmi, plaka ve durum. @aicore-fivem/lib/shared’dan gelir. Kaydedilen JSON v: 1 taşır. Gelen veriyi toVehicleProps ile kontrol et.
Prop
Type
const props: VehicleProps = {
v: 1, model: 1032823388, plate: "AI 123", plateIndex: 0,
colors: [12, 12], extraColors: [0, 156], customPrimary: null, customSecondary: null,
wheelType: 0, windowTint: -1, livery: -1, mods: { 11: 2, 18: 1 }, xenonColor: 255,
neon: [false, false, false, false], neonColor: [255, 0, 255], tyreSmoke: [255, 255, 255],
extras: { 1: true }, dirt: 0, engineHealth: 1000, bodyHealth: 1000,
};VehicleSetup
Yeni doğan bir aracın modelin varsayılanlarının üstüne aldığı şeyler (lib spawnVehicle’ın setup’ı, bir dükkanda seçilen renk). @aicore-fivem/lib/shared’dan gelir. Her alan isteğe bağlıdır. Gelen veriyi toVehicleSetup ile kontrol et.
Prop
Type
const setup: VehicleSetup = { colors: [27, 27], windowTint: 1, engineOn: true };KeyPurpose
Bir oyuncunun neden bir aracın anahtarını aldığı. Anahtar script’leri her birini farklı ele alır. Bilinmeyen her şey "temporary" sayılır.
| Değer | Ne zaman kullanılır |
|---|---|
"purchase" | Oyuncu artık aracın sahibi (galeri, admin verdi): yeni bir anahtar, eski kopyalar çalışmayı bırakır. |
"garage" | Sahipli bir araç depodan çıkar: sahibinde anahtar zaten vardır. |
"job" | Vardiya için bir iş aracı. |
"rental" | Kiralama süresi boyunca kiralık bir araç. |
"temporary" | Kısa ömürlü başka her şey (admin spawn’ı, test sürüşü, soygun aracı). Varsayılan. |
vehicleKeys.give(source, vehicle, "rental");VehicleOwner
Bir ai-vehicles aracının sahibi.
Prop
Type
const owner: VehicleOwner = { type: "character", id: "12" };OwnedVehicle
ai-vehicles’ın tuttuğu haliyle sahipli bir araç (GetVehicle).
Prop
Type
const car: OwnedVehicle = {
id: 7, plate: "AI 123", owner: { type: "character", id: "12" }, model: "sultan",
props: null, setup: null, state: "garage", garage: "legion", fuel: 100, engine: 1000, body: 1000,
};Dünya
Weather
qb-weathersync sözleşmesinin bir hava tipi adı, tam büyük harf: "EXTRASUNNY", "CLEAR", "NEUTRAL", "SMOG", "FOGGY", "OVERCAST", "CLOUDS", "CLEARING", "RAIN", "THUNDER", "SNOW", "BLIZZARD", "SNOWLIGHT", "XMAS", "HALLOWEEN". Liste WEATHERS sabitidir; isWeather(value) bir değeri kontrol eder.
import { isWeather, type Weather } from "@aicore-fivem/shared";
const next: Weather = "RAIN";
if (isWeather(input)) world.setWeather(input);BlipStyle
Panelin blip bileşeninin kaydettiği haliyle bir blip’in görünümü. @aicore-fivem/lib/shared’dan gelir; readBlipStyle ile oku.
Prop
Type
const style: BlipStyle = { sprite: 52, color: 2, scale: 0.8 };PlacePed
Bir yerde duran NPC (dükkancı, memur). @aicore-fivem/lib/shared’dan gelir; readPlacePed ile oku.
Prop
Type
const clerk: PlacePed = { model: "mp_m_shopkeep_01", scenario: "WORLD_HUMAN_STAND_IMPATIENT", coords: { x: 24.5, y: -1346.6, z: 29.5, heading: 270 } };Oyuncu arayüzü
NotificationKind
Bir bildirim kartının rengi ve ikonu: "success", "error", "info" ya da "warning". Diğer sayfalar ona "bildirim türü" diyebilir.
notify(source, "Vehicle stored", "success"); // server lib notify(source, text, kind?, duration?)Notification
Bir bildirim kartı. ai-lib onu çizer; metinler gönderen tarafından zaten çevrilmiştir.
Prop
Type
const card: Notification = { text: "Vehicle stored", kind: "success", duration: 3000 };ProgressOptions
Client ilerleme çubuğunun (client’ta lib progress) ne gösterdiği ve çalışırken oyuncunun nasıl hareket edebileceği. @aicore-fivem/lib/client’tan gelir.
Prop
Type
const repair: ProgressOptions = {
label: "Repairing",
duration: 8000,
anim: { dict: "mini@repair", clip: "fixing_a_player" },
canCancel: true,
disable: { move: true, combat: true },
};ServerProgress
Bir server akışının bir oyuncunun client’ında çalıştırdığı çubuk (lib progressFor). ProgressOptions ile aynı alanlar, whileDead hariç. ProgressForOptions (@aicore-fivem/lib/server’dan) bir alan ekler:
Prop
Type
const bar: ProgressForOptions = { label: "Picking the lock", duration: 6000, scenario: "PROP_HUMAN_PARKING_METER", minRatio: 0.9 };MenuItem
Bir menünün tek satırı.
Prop
Type
const row: MenuItem = { id: "water", label: "Water ($5)", icon: "bottle-water" };MenuRequest
Gösterilecek bir menü (lib menu, Lua aiLib.menu.show).
Prop
Type
const shop: MenuRequest = {
title: "24/7",
items: [ { id: "water", label: "Water ($5)" }, { id: "bread", label: "Bread ($3)" } ],
};InputField
Bir girdi diyaloğunun tek alanı. type ile seçilen bir sayı alanı ya da metin alanıdır.
Sayı alanı:
Prop
Type
Metin alanı:
Prop
Type
InputRequest
Gösterilecek bir girdi diyaloğu (lib input, Lua aiLib.input).
Prop
Type
const fine: InputRequest = {
title: "Write a fine",
confirm: "Send",
fields: [
{ name: "amount", label: "Amount", type: "number", min: 1, max: 10000 },
{ name: "reason", label: "Reason", type: "text", maxLength: 80 },
],
};PromptAnchor
Bir dünya isteminin nerede süzüldüğü: sabit bir nokta ya da entity’ler üzerindeki noktalar. Entity ofsetleri entity’nin kendi uzayındadır, böylece istem onunla birlikte hareket eder ve döner (sallanan bir kapı). Birden fazla entity noktası varsa her karede oyuncuya en yakın olanı gösterilir.
Nokta:
Prop
Type
Entity noktaları:
Prop
Type
const atPoint: PromptAnchor = { x: 25.7, y: -1347.3, z: 30.2 };
const onDoor: PromptAnchor = { anchors: [{ entity: door, offset: { x: 0.5, y: 0, z: 0 } }] };ItemPickerRequest
ai-core’un admin araçları için eşya seçicisi: aktif envanterin her eşyası resmiyle, bir arama ve bir adetle.
Prop
Type
const request: ItemPickerRequest = { title: "Give items", target: 7 };PickedItem
Eşya seçicisinin cevapladığı tek satır.
Prop
Type
SkillDifficulty
Bir beceri kontrolü aşamasının ne kadar zor olduğu: "easy", "medium", "hard" ya da ox_lib’in kendi şekli { areaSize: number; speedMultiplier: number }. İsimli aşamalar: easy = saniyede 0.6 turla 50 derecelik yeşil yay, medium = 0.85’te 40, hard = 1’de 25.
const stages: SkillDifficulty[] = ["easy", "medium", { areaSize: 30, speedMultiplier: 1.2 }];LockpickResult
Maymuncuğun cevabı: "opened" (kilit açıldı), "broken" (oyuncu her maymuncuğu kırdı) ya da "cancelled" (oyuncu kapattı).
RadialItem
Radyal tekerleğin tek bir öğesi (lib radial). Fonksiyonları onu ekleyen resource’ta çalışır; o resource durduğunda ai-core öğeyi kaldırır.
Prop
Type
const item: RadialItem = {
id: "engine", label: "Engine", icon: "car", parent: "vehicle",
canShow: () => cache.seat === -1,
onPressed: () => SetVehicleEngineOn(cache.vehicle as number, !GetIsVehicleEngineRunning(cache.vehicle as number), false, true),
};KeyHintRequest
Bir script’in bir süre gösterdiği tuş yardım satırı (admin noclip tuşları). keybind ya da key ver.
Prop
Type
const hint: KeyHintRequest = { label: "Speed up", key: "SHIFT", icon: "gauge-high" };KeyHintWhen
Bir keybind ipucunun HUD’larda ne zaman göründüğü: "foot" (yayayken), "vehicle" (araçtayken) ya da "always". Sunucu sahibi bunu panelde değiştirebilir; bu değeri olmayan bir keybind asla ipucu göstermez.
KeyHintView
Bir HUD’ın gösterdiği tuş ipuçlarının tek satırı (client export’u GetKeyHints, event ai-core:client:keyHints): oyuncunun atadığı haliyle tuş ve ne yaptığı.
Prop
Type
const row: KeyHintView = { id: "noclip_speed", key: "SHIFT", label: "Speed up", icon: "gauge-high" };Loglar, ihbarlar, telefon
LogOptions
Bir log satırının ek ayrıntıları (lib aiLog, export Log).
Prop
Type
aiLog("payments", "Paid a bill", { source, metadata: { amount: 250 } });LogLevel
Bir log satırının önem derecesi: "debug", "info", "warn" ya da "error".
LogChannel
Bir resource’un log kanallarından birini nasıl tanımladığı (lib aiLogChannels, export LogChannels, açılışta bir kez çağrılır). Webhook url’leri asla burada olmaz: sunucu sahibi onları ai-core’un panelinde ayarlar.
Prop
Type
aiLogChannels({ payments: { dataset: "my-shop" }, debug: { active: false } });DispatchAlert
Bir polis (ya da başka bir meslek) ihbarı. Aktif ihbar script’i onu jobs içindeki mesaideki üyelere gösterir. Metinler zaten çevrilmiştir.
Prop
Type
const alert: DispatchAlert = { code: "10-71", title: "Shots fired", source, jobs: ["police"], priority: "high" };PhoneMail
Bir script’in bir oyuncunun telefonuna gönderdiği mail.
Prop
Type
const mail: PhoneMail = { sender: "Los Santos Customs", subject: "Your car is ready", message: "Pick it up at the garage." };PhoneNotification
Bir oyuncunun telefonunda bir bildirim.
Prop
Type
const note: PhoneNotification = { title: "Bank", message: "You received $250", app: "bank" };Faturalar, MDT, EMS, garajlar
BillRequest
Bir script’in gönderdiği fatura (lib billing.send): bir meslekten (cezalar, hizmet ücretleri) ya da bir oyuncudan bir oyuncuya. Metinler zaten çevrilmiştir.
Prop
Type
const bill: BillRequest = { to: 7, amount: 250, label: "Speeding", from: source, job: "police" };UnpaidBill
Bir oyuncunun açık tek bir faturası.
Prop
Type
MdtRecord
Bir script’in polis MDT’sine yazdığı kayıt (lib mdt.record). Metinler zaten çevrilmiştir.
Prop
Type
const record: MdtRecord = { kind: "jail", target: 7, by: source, title: "Armed robbery", minutes: 20 };MdtRecordKind
Bir MDT kaydının ne hakkında olduğu: "fine", "warrant", "arrest" ya da "jail".
DistressCall
Yerdeki bir oyuncunun sağlık ekibine çağrısı (lib ems.distress).
Prop
Type
const call: DistressCall = { jobs: ["ambulance"], message: "Unconscious" };GaragedVehicle
Bir garaj script’inin tuttuğu, oyuncuya ait araçlardan biri.
Prop
Type
Görünümler
CharacterAppearance
ai-core’un görünüm katmanının verdiği haliyle bir görünüm: ped modeli ve kıyafet script’inin kendi verisi. data’yı opak kabul et: tüm nesneyi değiştirmeden ApplyAppearance’a geri ver.
Prop
Type
ClothingMenu
Diğer script’lerin açtığı bir kıyafet script’i menüsü: "clothing" (kıyafet dükkanı), "barber" ya da "outfits" (oyuncunun kayıtlı kıyafetleri).
JobOutfit
Oyuncunun giydiği freemode modeli için bir meslek kıyafeti (üniforma). Yalnızca listelenen parçalar değişir.
Prop
Type
OutfitPiece
Bir meslek kıyafetinin tek parçası.
Prop
Type
const uniform: JobOutfit = {
components: [ { id: 11, collection: "", index: 55, texture: 0 }, { id: 4, collection: "", index: 35, texture: 0 } ],
props: [ { id: 0, collection: "", index: 46, texture: 0 } ],
};Komutlar
CommandInfo
Resource’un ai-core’a bildirdiği haliyle bir lib addCommand komutu (panelin Commands sekmesi onu listeler).
Prop
Type
const info: CommandInfo = { names: ["jail", "prison"], help: "Jails a player", params: [{ name: "id", type: "playerId" }], aces: ["ai.admin"] };CommandParam
Bir lib addCommand komutunun tek argümanı, handler çalışmadan önce ayrıştırılır ve kontrol edilir.
Prop
Type
const params: CommandParam[] = [
{ name: "id", type: "playerId", help: "Player id" },
{ name: "reason", type: "longString", help: "Reason", optional: true },
];Admin paneli
PanelSchema
Bir script’in admin paneli: hangi veri dosyalarına sahip olduğu ve panelin onları nasıl yerleştirdiği. Bir resource onu lib’in AdminPanel’ine verir (bkz. Admin paneli). Her metin alanı resource’un locales/*.json dosyasının bir dil anahtarıdır.
Prop
Type
const schema: PanelSchema = {
title: "ADMIN_TITLE",
icon: "store",
files: { shops: { kind: "records", sync: "all", labelPath: "label", sections: { label: { type: "text", min: 1, max: 48 }, coords: { type: "vec3" } } } },
tabs: [{ id: "shops", file: "shops", icon: "store", label: "ADMIN_TAB_SHOPS", desc: "ADMIN_TAB_SHOPS_DESC", cards: [] }],
};FileSpec
Bir panelin tek veri dosyası.
Prop
Type
TabSpec
Panelin tek sekmesi, tek bir dosyayı gösterir.
Prop
Type
CardSpec
Bir sekmenin içindeki tek bir alan kartı.
Prop
Type
const card: CardSpec = {
icon: "location-dot",
title: "ADMIN_CARD_PLACE",
fields: [{ widget: "point", path: "coords", label: "ADMIN_F_COORDS", hint: "ADMIN_H_COORDS" }],
};LookupSource
Bir panel alanının içinden seçtiği değerler listesi. Bir metin ya da isim alanındaki lookup, server’ın başka her şeyi reddetmesini ve panelin listeyi sunmasını sağlar.
| Değer | Liste |
|---|---|
"item" | Aktif envanterin eşyaları. |
"job" | Panelin Jobs listesindeki meslekler. |
"gang" | Panelin Gangs listesindeki çeteler. |
"account" | Para hesapları. |
"resource" | Başlatılmış resource’lar. |
"player" | Çevrimiçi oyuncular, citizen id ile. |
"vehicle" | Admin’in oyununda olan her araç modeli, addon’lar dahil. Server tarafından asla reddedilmez (modelleri listeleyemez). |
"ped" | GTA’nın ped modelleri. Server tarafından asla reddedilmez. |
AdminDelta
Bir panel dosyasının değişen kaydı, paneli açık olan admin’lere iletilir (export AdminPanelChanged).
Prop
Type
const delta: AdminDelta = { resource: "my-shop", file: "shops", key: "legion", value: { label: "Legion" } };UpdateInfo
GitHub sürümü çalışan sürümden yeni olan bir script (ai-core’un güncelleme kontrolü, export GetUpdates).
Prop
Type
const update: UpdateInfo = { resource: "ai-core", label: "ai-core", current: "1.4.0", latest: "1.5.0", url: "https://github.com/..." };vRP köprüsü
VrpConfig
Panelin vRP yetki eşlemesi (data/vrp.json), ai-core’un vRP köprüsünün okuduğu haliyle (server export’u GetVrpConfig; yerel event ai-core:vrp:config bir değişiklikten sonra aynı şekli taşır).
Prop
Type
VrpPermissionRule: doldurulmuş herhangi bir hedefle eşleşen herkese permission verir.
Prop
Type
VrpGroupAlias: bir meslek ya da çete rütbesi veya admin anlamına gelen bir vRP grup adı ("Coronel" gibi vRPex tarzı rütbeler).
Prop
Type
const config: VrpConfig = {
defaults: { jobPrefix: true, jobOnDuty: true, adminPrefix: true, playerPrefix: true },
permissions: [{ permission: "police.armory", job: "police", gang: "", group: "", grade: 2, onDuty: true, admin: false, everyone: false }],
groups: { Coronel: { job: "police", gang: "", grade: 4, admin: false } },
items: { "edible|tacos": "tacos" },
};