Handy und Aussehen
Das Handy des Spielers über ai-core (Nummern, Mails, SMS, Benachrichtigungen) und das gespeicherte Aussehen von Charakteren über das jeweils laufende Kleidungs-Skript.
import { phone, appearance } from "@aicore-fivem/lib/server";phone
Das Handy des Spielers über ai-core: Das erste laufende Handy-Skript (tgiann-phone, lb-phone...) antwortet. Ohne Handy-Skript antwortet jeder Aufruf mit null oder false. Die Lua-Zwillinge auf aiLib.phone haben dieselben Namen und dieselbe Argumentreihenfolge.
phone.number
Seite: Server · Wartet: nein
phone.number(source: number): string | nulllocal number = aiLib.phone.number(source)Rückgabewert: die Telefonnummer des Spielers, oder null (Lua nil), wenn er keine hat oder kein Handy-Skript läuft.
const number = phone.number(source);
if (!number) return fail("NO_PHONE_NUMBER");phone.sourceOf
Der Online-Spieler, dem eine Telefonnummer gehört.
Seite: Server · Wartet: nein
phone.sourceOf(number: string): number | nulllocal source = aiLib.phone.sourceOf(number)Rückgabewert: die Server-ID, oder null (Lua nil), wenn niemand online diese Nummer hat.
const owner = phone.sourceOf("555-0101");
if (owner !== null) notify(owner, "Your phone is ringing");phone.hasPhone
Ob der Spieler ein Handy dabeihat.
Seite: Server · Wartet: nein
phone.hasPhone(source: number): booleanlocal has = aiLib.phone.hasPhone(source)Rückgabewert: true, wenn er eins hat; false ohne eins oder ohne Handy-Skript.
if (!phone.hasPhone(source)) return fail("NEED_PHONE");phone.mail
Sendet eine Mail an das Handy eines Spielers.
Seite: Server · Wartet: nein
phone.mail(to: number | string, mail: PhoneMail): booleanlocal ok = aiLib.phone.mail(to, mail)Prop
Type
Der Typ ist PhoneMail.
Rückgabewert: true, wenn gesendet, sonst false.
phone.mail(source, {
sender: "Downtown Cab Co.",
subject: "Your shift",
message: "Pick up the taxi at the depot.",
});phone.message
Sendet eine Textnachricht.
Seite: Server · Wartet: nein
phone.message(from: string, to: number | string, text: string): booleanlocal ok = aiLib.phone.message(from, to, text)Prop
Type
Rückgabewert: true, wenn gesendet, sonst false.
phone.message("Dealer", source, "Meet me behind the gas station.");phone.notify
Zeigt eine Benachrichtigung im Handy an.
Seite: Server · Wartet: nein
phone.notify(source: number, notification: PhoneNotification): booleanlocal ok = aiLib.phone.notify(source, notification)Prop
Type
Der Typ ist PhoneNotification.
Rückgabewert: true, wenn angezeigt, sonst false.
phone.notify(source, { title: "Bank", message: "Salary paid: $250", app: "bank" });appearance
Das gespeicherte Aussehen von Charakteren über die Aussehens-Ebene von ai-core, egal welches Kleidungs-Skript läuft (ai-appearance, tgiann-clothing).
appearance.get
Das gespeicherte Aussehen eines Charakters, geladen oder nicht. Nutze es, um einen Ped einzukleiden, der für einen Charakter steht (ein schlafender Körper, eine Schaufensterpuppe): Gib das Ergebnis unverändert an appearance.apply des Clients weiter (Lib: Client).
Seite: Server · Wartet: ja (Promise in TypeScript, hält in Lua den Thread an)
appearance.get(charId: number): Promise<CharacterAppearance | null>local look = aiLib.appearance.get(charId) -- { model, data } oder nil, innerhalb eines Threads aufrufenProp
Type
Rückgabewert
Promise<CharacterAppearance | null>: CharacterAppearance ist { model, data } (der Hash des Ped-Modells und die eigenen Aussehensdaten des Kleidungs-Skripts). null, wenn der Charakter keins hat, kein Kleidungs-Skript läuft oder ai-core gestoppt ist.
Beispiel
import { appearance, online, playersNear } from "@aicore-fivem/lib/server";
async function sendLook(source: number) {
const charId = online.charId(source);
if (charId === undefined) return;
const look = await appearance.get(charId);
if (!look) return;
// Nur die Spieler in der Nähe dieses Charakters brauchen das Aussehen.
for (const other of playersNear(source, 100)) emitNet("my-sleepers:look", other, source, look);
}appearance.provider
Seite: Server · Wartet: nein
appearance.provider(): string | nulllocal name = aiLib.appearance.provider()Rückgabewert: das Kleidungs-Skript, das antwortet, oder null (Lua nil), wenn keins läuft.
console.log(`looks through ${appearance.provider() ?? "nothing"}`);Welt
Zeit und Wetter über das jeweils laufende Wetter-Skript, Routing-Buckets aus dem Allokator von ai-core, Türschlösser und die Spawnpunkte gespeicherter Charaktere.
State Bags
Die Server-Versionen von EntityState, PlayerState, GlobalKey und GlobalGroup: der einzige Weg, auf dem ein ai-*-Skript replizierten Zustand schreibt.