AI Core
API başvurusuAI Core: server export’ları

Bağlantı kontrolleri

Bağlanan her oyuncunun geçmesi gereken kontroller ekle (whitelist’ler, ban’lar) ve script’inin başka birinin yerine geçtiğini bildir.

Bağlanan her oyuncu ai-core’da tek bir kapıdan geçer. Önce ai-core’un kendi kontrolleri gelir: oyuncunun bir FiveM hesabı olmalı ve gereksiz hiçbir script onun yerine geçen script’in yanında çalışmamalı (panelin Refuse players while both run ayarı açıkken). Sonra diğer resource’ların AddConnectionCheck ile eklediği kontroller, eklendikleri sırayla gelir. İlk ret kazanır.

AddConnectionCheck

Bağlanan her oyuncunun geçmesi gereken bir kontrol ekler. Bir whitelist, ban listesi ya da bakım modu için kullan.

Taraf: Server · Bekler: hayır (kontrolün kendisi hemen cevap vermeli) · Lib: yok

İmza
AddConnectionCheck(
  id: string,
  check: (source: number, identifiers: Record<string, string>) => string | null | undefined,
): void
Lua
exports['ai-core']:AddConnectionCheck('myscript:whitelist', function(source, identifiers) end)

Parametreler

Prop

Type

identifiers her tanımlayıcı tipini değeriyle önek olmadan tutar: identifiers.license abc123...’tür, license:abc123... değil. Oyuncuda olmayan tipler bulunmaz.

Dönüş değeri

Hiçbir şey. Metin bir id ya da bir fonksiyon olmadan çağrı hiçbir şey yapmaz. Resource’un durduğunda kontrol kaldırılır.

Örnek

import { resourceExport } from "@aicore-fivem/lib/server";
import { Locale } from "common";

const core = resourceExport("ai-core");
const allowed = new Set<string>(); // açılışta veritabanından doldurulur

core.AddConnectionCheck("myscript:whitelist", (_source, identifiers) => {
  const fivem = identifiers.fivem;
  return fivem && allowed.has(fivem) ? null : Locale("CONNECT_NOT_WHITELISTED");
});

Kontrol oyuncu bağlanırken çalışır ve hemen cevap vermelidir: veritabanı sorgusu yok, await yok, Wait yok. Kontrol ettiğin şeyi bellekte tut (açılışta yükle, değiştiğinde güncelle). Hata fırlatan bir kontrol loglanır ve atlanır, böylece asla herkesi dışarıda bırakmaz.

RegisterReplacement

Bir script’in başkalarını gereksiz kıldığını bildirir (script’in onlarınkiyle aynı işi yapar). İkisi de kuruluyken ai-core konsolda uyarır ve silinecek klasörü söyler; ikisi de başlatılmışken ve panelin Refuse players while both run ayarı açıkken kimse giremez.

Taraf: Server · Bekler: hayır · Lib: yok

İmza
RegisterReplacement(remove: string | string[], keep?: string): void
Lua
exports['ai-core']:RegisterReplacement({ 'qb-banking', 'okokBanking' })

Parametreler

Prop

Type

Dönüş değeri

Hiçbir şey. Çağıran resource durduğunda kural kaldırılır. ai-core herhangi bir resource başladıktan ya da durduktan bir saniye sonra çakışmaları yeniden kontrol eder.

Örnek

import { resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

// Bizim banka script’imiz bunların yaptığını yapar; ikisini birden çalıştırmak banka ekranlarını ikiye katlar.
core.RegisterReplacement(["qb-banking", "okokBanking"]);

Değiştiremediğin bir resource (escrow’lu bir script) aynısını fxmanifest.lua dosyasındaki bir satırla bildirebilir: ai_replaces 'qb-banking'.

GetConflicts

Şu an bulunan her çakışma: onun yerine geçen bir script’in yanına kurulmuş bir script.

Taraf: Server · Bekler: hayır · Lib: yok

İmza
GetConflicts(): { keep: string; remove: string; running: boolean; from: string }[]
Lua
local conflicts = exports['ai-core']:GetConflicts() -- tablo listesi

Parametreler

Yok.

Dönüş değeri

Çakışma başına bir kayıt içeren bir liste:

Prop

Type

Çakışma yoksa boş liste.

Örnek

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

addCommand("conflicts", { help: "Lists scripts to remove", restricted: true }, () => {
  for (const c of core.GetConflicts())
    console.log(`${c.keep} replaces ${c.remove}${c.running ? " (both started!)" : ""} [${c.from}]`);
});

Bu sayfada