Konumlar
distance, flatDistance, headingTo, nearestOf, gridCell ve cellKey: düz { x, y, z } nesneleri üzerinde vektör matematiği.
Düz nesneler olarak yazılmış noktalar üzerinde matematik (Vec3: metre cinsinden { x, y, z }). Native’e ihtiyaç duymazlar; bu yüzden aynı kod server’da, client’ta ve bir NUI sayfasında çalışır.
import { distance, flatDistance, headingTo, nearestOf, gridCell, cellKey } from "@aicore-fivem/lib/shared";Lua’da vektör matematiği yerleşiktir: #(a - b) iki vector3 arasındaki mesafe, #(a.xy - b.xy) zemindeki mesafedir. Yalnızca headingTo’nun bir Lua karşılığı vardır (aiLib.numbers.headingTo).
distance
İki nokta arasındaki düz mesafe, metre cinsinden.
Taraf: Client, server ve NUI · Bekler: hayır
distance(a: Vec3, b: Vec3): numberLua: karşılığı yok; iki vector3 ile #(a - b) kullan.
Parametreler
Prop
Type
Dönüş değeri
number: metre, 0 ya da daha büyük.
Örnek
import { coordsOf } from "@aicore-fivem/lib/server";
import { distance } from "@aicore-fivem/lib/shared";
const counter = { x: 25.7, y: -1347.3, z: 29.5 };
function nearCounter(source: number): boolean {
return distance(coordsOf(source), counter) <= 3;
}flatDistance
Yüksekliği yok sayarak (yalnızca x ve y) zemin düzlemindeki mesafe, metre cinsinden. Yüksekliğin önemli olmadığı alanlar için kullan (eğimli bir otopark, bir blip yarıçapı).
Taraf: Client, server ve NUI · Bekler: hayır
flatDistance(a: { x: number; y: number }, b: { x: number; y: number }): numberLua: karşılığı yok; #(a.xy - b.xy) kullan.
Parametreler
Prop
Type
Dönüş değeri
number: zemin düzleminde metre.
Örnek
import { flatDistance } from "@aicore-fivem/lib/shared";
flatDistance({ x: 0, y: 0, z: 0 }, { x: 3, y: 4, z: 50 }); // 5headingTo
Bir noktadan diğerine bakan heading, GTA’nın kuralıyla: 0-360 derece, 0 = kuzey, saat yönünün tersine. Bir ped’i ya da kamerayı bir şeye doğru çevirmek için kullan.
Taraf: Client, server ve NUI · Bekler: hayır
headingTo(from: { x: number; y: number }, to: { x: number; y: number }): numberlocal heading = aiLib.numbers.headingTo(from, to) -- vector3’ler ya da { x, y } tablolarıParametreler
Prop
Type
Dönüş değeri
number: 0’dan 360’a kadar (360 hariç) bir heading.
Örnek
import { cache, player } from "@aicore-fivem/lib/client";
import { headingTo } from "@aicore-fivem/lib/shared";
const counter = { x: 25.7, y: -1347.3, z: 29.5 };
SetEntityHeading(cache.ped, headingTo(player.coords(), counter));nearestOf
Bir listenin bir noktaya en yakın öğesi (3D mesafe), isteğe bağlı bir menzil içinde. Her listede çalışır: bir öğenin konumunun nasıl okunacağını sen söylersin.
Taraf: Client, server ve NUI · Bekler: hayır
nearestOf<T>(items: Iterable<T>, point: Vec3, pos: (item: T) => Vec3, max?: number): T | undefinedLua: karşılığı yok.
Parametreler
Prop
Type
Dönüş değeri
En yakın öğe ya da liste boşsa veya her öğe max’tan uzaktaysa undefined.
Örnek
import { coordsOf } from "@aicore-fivem/lib/server";
import { nearestOf, type Vec3 } from "@aicore-fivem/lib/shared";
const atms: Array<{ id: string; coords: Vec3 }> = [
{ id: "legion", coords: { x: 147.4, y: -1035.8, z: 29.3 } },
{ id: "pillbox", coords: { x: 296.2, y: -591.6, z: 43.3 } },
];
function atmNear(source: number) {
return nearestOf(atms, coordsOf(source), (atm) => atm.coords, 2);
}gridCell
size metrelik karelerden oluşan bir ızgarada bir noktanın düştüğü tam sayı ızgara hücresi. Lib’in alan yayını (server’da AreaStream, client’ta AreaFollower) bunu kullanır; böylece iki taraf bir noktanın hangi hücrede olduğu konusunda anlaşır. Hücreler artı ya da eksi 16.000’e sıkıştırılır.
Taraf: Client, server ve NUI · Bekler: hayır
gridCell(x: number, y: number, size: number): { cx: number; cy: number }Lua: karşılığı yok.
Parametreler
Prop
Type
Dönüş değeri
{ cx, cy }: hücrenin sütunu ve satırı.
Örnek
import { gridCell, cellKey } from "@aicore-fivem/lib/shared";
const { cx, cy } = gridCell(147.4, -1035.8, 100); // { cx: 1, cy: -11 }
const key = cellKey(cx, cy);cellKey
Bir ızgara hücresi için, hızlı bir Map anahtarı olacak kadar küçük (2^30’un altında) tek bir sayı.
Taraf: Client, server ve NUI · Bekler: hayır
cellKey(cx: number, cy: number): numberLua: karşılığı yok.
Parametreler
Prop
Type
Dönüş değeri
number: her tarafta aynı hücre için aynı sayı.
Örnek
import { gridCell, cellKey } from "@aicore-fivem/lib/shared";
const byCell = new Map<number, string[]>();
function addSign(id: string, x: number, y: number): void {
const { cx, cy } = gridCell(x, y, 100);
const key = cellKey(cx, cy);
byCell.set(key, [...(byCell.get(key) ?? []), id]);
}Metin ve sayılar
formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom ve rollChance, artı ServerClock’un nerede belgelendiği.
Araçlar
plateOf, normalizePlate, vehicleTypeOfClass, toVehicleProps ve toVehicleSetup: anahtar olarak plakalar, spawn tipleri ve güvenilmeyen veriden araç görünümleri.