AI Core
Suç ve yarışai-drugs

Geliştiriciler için ai-drugs

ai-drugs’ın bitki tablosu, ihbarları ve hesap defteri sebebi, bildiği uyuşturucuları başka bir script’ten nasıl satacağın ve özel event’leri.

ai-drugs’ın hiç export’u yoktur. Satışlara ve hasatlara kendi server’ında karar verilir; eşyalar, para ve ihbarlar AI Core üzerinden gider. Başka bir script’in kullanabileceği şeyler aşağıda listelenmiştir.

Veritabanı tablosu ai_drugs_plants

Dünyadaki her kenevir bitkisi için bir satır. Açılışta oluşturulur (sql/main.sql, ai-core’un tablo kurucusu üzerinden). Tüm satırlar açılışta bir kez yüklenir ve bellekte tutulur; çürüyen bitkileri server siler, bu yüzden tablo küçük kalır.

SütunTipNe tutar
idBIGINT UNSIGNEDBitki id’si (otomatik artan).
ownerINT UNSIGNEDDikenin ai_core_characters.id değeri (karakter başına bitki sayısı buna göre sayılır).
x, y, zFLOATBitkinin durduğu yer.
planted_atDATETIMENe zaman dikildiği; büyüme ve çürüme buradan itibaren sayılır.

ai-drugs tabloyu sadece açılışta okur, sonra bitkilerini bellekte tutar. Çalışırken başka bir resource’un eklediği, değiştirdiği ya da sildiği bir satır bir sonraki yeniden başlatmaya kadar görülmez. Bitkileri sadece ai-drugs durdurulmuşken değiştir.

Polis ihbarları

Bir satış (paneldeki Police alert chance değerine göre) lib’in dispatch.alert fonksiyonu üzerinden bir ihbar gönderebilir: kod 10-31, "Suspicious hand-off reported" metni, satıcının konumunda, ikon cannabis, kırmızı 51 numaralı blip sprite’ı. Hangi ihbar script’i çalışıyorsa ona ulaşır.

Para

Satış parası paneldeki Money account hesabına drugs:sale hesap defteri sebebiyle (ledger reason) gider.

Eşyalar

Yabancıların satın aldığı uyuşturucular paneldeki Drugs listesidir (varsayılan olarak weed_bud, coke_baggy, meth_baggy). Sokak satışlarını kendi uyuşturucu laboratuvarından beslemek için oyuncuya bu eşyalardan birini ver: ai-drugs oyuncunun taşıdığı listedeki her eşyayı satar.

Örnek

5 weed_bud’ı bir coke_baggy’ye çeviren bir laboratuvar script’i (uydurma bir tarif):

import { inventory, notify, onClientCallback, progressFor } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

onClientCallback("mylab:cook", async (source) => {
  if (!inventory.hasItem(source, "weed_bud", 5)) return fail("LAB_ERR_ITEMS");
  const done = await progressFor(source, { label: "Cooking", duration: 10_000 });
  if (!done) return fail("LAB_ERR_CANCELLED");
  if (!inventory.removeItem(source, "weed_bud", 5)) return fail("LAB_ERR_ITEMS");
  inventory.addItem(source, "coke_baggy", 1);
  notify(source, "You made a baggy", "success");
  return { ok: true };
});

Özel event’ler ve callback’ler

Script’in kendi sözleşmesi (resource/common/drugs.ts). Server her çağrıda alıcıyı, mesafeyi ve bekleme sürelerini kontrol eder. Sürümler arasında değişebilirler: başka resource’lardan tetikleme ya da dinleme.

AdYönNe taşır
ai-drugs:sellclient callback’i(buyerNetId): oyuncunun yanındaki yabancıya sat; { ok, count, price } ile cevap verir.
ai-drugs:areaclient -> server(cellX, cellY): oyuncunun bitki hücresi değişti.
ai-drugs:client:plantsserver -> player(reset, puts, removes, serverNow, growMinutes): oyuncunun etrafındaki bitkiler (çevresindeki 128 m’lik 3x3 hücre, ardından değişiklikler).
ai-drugs:harvestclient callback’i(plantId): hazır bir bitkiyi hasat et ya da (polis) yok et.

Bu sayfada