AI Core
Meslekler ve hizmetlerai-prison

Geliştiriciler için ai-prison

AI Core’un hapishane katmanı üzerinden hapse atma, tahliye ve kalan süre, ai-prison’ın server export’ları ve tuttuğu karakter metadata’sı.

Script’inden hapse atmak için lib’in prison.jail, prison.release ve prison.timeLeft fonksiyonlarını (TypeScript) ya da aiLib.prison.* (Lua) kullan. Bunlar AI Core’un hapishane katmanından geçer ve hangi hapishane script’i çalışıyorsa ona ulaşır (ai-prison, qb-prison, rcore_prison, xt-prison, tgiann-policejob). Aşağıdaki export’lar, ai-prison çalışırken bu katmanın çağırdıklarıdır.

Lib fonksiyonları (önerilen)

prison.jail

Yüklü bir oyuncuyu birkaç dakikalığına hapse gönderir. ai-prison ile: oyuncu bir hücreye gider, eşyaları alınır (panel anahtarı), ceza Longest sentence değerine kısaltılır ve bir jail MDT kaydı yazılır.

Taraf: Server · Bekler: hayır

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

Parametreler

Prop

Type

Dönüş değeri

Hapishane script’i cezayı aldıysa true. Hiçbir hapishane script’i çalışmıyorsa ya da oyuncunun yüklü bir karakteri yoksa false.

Örnek

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

// /judge <id> <minutes>: judge principal’ı olan oyuncular için.
addCommand(
  "judge",
  {
    help: "Sentence a player",
    restricted: "ai.job.judge",
    params: [
      { name: "id", type: "playerId" },
      { name: "minutes", type: "number" },
    ] as const,
  },
  (source, { id, minutes }) => {
    if (!prison.jail(id, minutes, source))
      notify(source, "No prison is running", "error");
  },
);

Zaten hapisteki bir oyuncuyu hapse atmak cezayı yeni süreye ayarlar (üstüne eklemez). Hapishane script’i tgiann-policejob ise dakikalar bunun yerine eklenir.

prison.release

Hapisteki bir oyuncuyu hemen serbest bırakır. ai-prison ile: tahliye noktasına gider ve alınan eşyalarını geri alır.

Taraf: Server · Bekler: hayır

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

Parametreler

Prop

Type

Dönüş değeri

Oyuncu hapisteydi ve şimdi serbestse true. Hapiste değildiyse ya da hiçbir hapishane script’i çalışmıyorsa false.

prison.timeLeft

Cezadan kalan dakika.

Taraf: Server · Bekler: hayır

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

Dönüş değeri

Kalan dakika; oyuncu serbestse ya da hiçbir hapishane script’i çalışmıyorsa 0.

Örnek

import { inventory, notify, prison } from "@aicore-fivem/lib/server";

inventory.registerUsableItem("phone", (source: number) => {
  if (prison.timeLeft(source) > 0) {
    notify(source, "No phones in prison", "error");
    return;
  }
  // ... telefonu aç
});

Server export’ları

ai-prison çalışırken hapishane katmanı bunları çağırır. @aicore-fivem/shared içinde tipleri yoktur: TypeScript’te callExport("ai-prison", name, ...args) ile çağır. Her export küçük harfli ikiziyle de cevap verir (jailPlayer).

JailPlayer

Signature
JailPlayer(source: number, minutes: number, by?: number): boolean
Lua
local ok = exports['ai-prison']:JailPlayer(source, minutes, by)

prison.jail ile aynı davranış ve dönüş değeri. source ya da minutes bir sayı değilse false ile cevap verir.

ReleasePlayer

Signature
ReleasePlayer(source: number): boolean
Lua
local ok = exports['ai-prison']:ReleasePlayer(source)

Oyuncu hapisteydi ve şimdi tahliye edildiyse true; aksi halde false.

GetJailTime

Signature
GetJailTime(source: number): number
Lua
local minutes = exports['ai-prison']:GetJailTime(source)

Kalan dakika; serbestse 0.

Karakter metadata’sı

ai-prison durumunu ai-core karakter metadata’sında tutar (ai-core’un export’larından GetMeta(source, key) ile ya da QB köprüsü üzerinden PlayerData.metadata ile okunur).

AnahtarTipNe tutar
injailnumberKalan dakika (QBCore’un anahtarı). Başka bir script’ten 0’dan büyük bir sayı yazmak bir ceza başlatır; 0 yazmak tahliye eder.
jailitems{ name: string; count: number; metadata?: object }[] | nullKapıda alınan, tahliyede geri verilen eşyalar.
ai:jailLeftAtnumber | nullOyuncunun hapisteyken çıktığı zaman (1970’ten beri ms); sadece Count time offline açıkken ayarlanır.

injail yazmak yerine prison.jail kullan: o her hapishane script’iyle çalışır, injail ise sadece ai-prison ve QB tarzı hapishaneler tarafından okunur.

Özel event’ler ve callback’ler

Script’in kendi sözleşmesi (resource/common/prison.ts). Sürümler arasında değişebilirler: başka resource’lardan tetikleme ya da dinleme.

AdYönNe taşır
ai-prison:client:stateserver -> hapisteki oyuncu(minutes): kalan dakika, serbestse 0 (yüklenirken, her dakika, tahliyede).
ai-prison:client:moveserver -> hapisteki oyuncu(point): bir hücreye, firardan sonra tekrar içeri ya da tahliyede dışarı ışınla.
ai-prison:workStartclient callback’i(taskId): bir noktada çalış; server ilerleme çubuğunu çalıştırır, sonra dakika düşer.
ai-prison:canteenclient callback’i(): kantinden bir yemek.

Bu sayfada