Telefon i wygląd
Telefon gracza przez ai-core (numery, maile, SMS-y, powiadomienia) i zapisany wygląd postaci przez dowolny skrypt ubrań, który działa.
import { phone, appearance } from "@aicore-fivem/lib/server";phone
Telefon gracza przez ai-core: odpowiada pierwszy działający skrypt telefonu (tgiann-phone, lb-phone...). Bez skryptu telefonu każde wywołanie odpowiada null albo false. Odpowiedniki w Lua w aiLib.phone mają te same nazwy i kolejność argumentów.
phone.number
Strona: Serwer · Czeka: nie
phone.number(source: number): string | nulllocal number = aiLib.phone.number(source)Zwraca numer telefonu gracza albo null (Lua nil), gdy go nie ma albo nie działa żaden skrypt telefonu.
const number = phone.number(source);
if (!number) return fail("NO_PHONE_NUMBER");phone.sourceOf
Gracz online, który jest właścicielem numeru telefonu.
Strona: Serwer · Czeka: nie
phone.sourceOf(number: string): number | nulllocal source = aiLib.phone.sourceOf(number)Zwraca id serwerowe albo null (Lua nil), gdy nikt online nie ma tego numeru.
const owner = phone.sourceOf("555-0101");
if (owner !== null) notify(owner, "Your phone is ringing");phone.hasPhone
Czy gracz ma przy sobie telefon.
Strona: Serwer · Czeka: nie
phone.hasPhone(source: number): booleanlocal has = aiLib.phone.hasPhone(source)Zwraca true, gdy go ma; false bez niego albo bez skryptu telefonu.
if (!phone.hasPhone(source)) return fail("NEED_PHONE");phone.mail
Wysyła maila na telefon gracza.
Strona: Serwer · Czeka: nie
phone.mail(to: number | string, mail: PhoneMail): booleanlocal ok = aiLib.phone.mail(to, mail)Prop
Type
Typ to PhoneMail.
Zwraca true, gdy wysłano, w przeciwnym razie false.
phone.mail(source, {
sender: "Downtown Cab Co.",
subject: "Your shift",
message: "Pick up the taxi at the depot.",
});phone.message
Wysyła wiadomość tekstową.
Strona: Serwer · Czeka: nie
phone.message(from: string, to: number | string, text: string): booleanlocal ok = aiLib.phone.message(from, to, text)Prop
Type
Zwraca true, gdy wysłano, w przeciwnym razie false.
phone.message("Dealer", source, "Meet me behind the gas station.");phone.notify
Pokazuje powiadomienie w telefonie.
Strona: Serwer · Czeka: nie
phone.notify(source: number, notification: PhoneNotification): booleanlocal ok = aiLib.phone.notify(source, notification)Prop
Type
Typ to PhoneNotification.
Zwraca true, gdy pokazano, w przeciwnym razie false.
phone.notify(source, { title: "Bank", message: "Salary paid: $250", app: "bank" });appearance
Zapisany wygląd postaci przez warstwę wyglądu ai-core, niezależnie od tego, jaki skrypt ubrań działa (ai-appearance, tgiann-clothing).
appearance.get
Zapisany wygląd postaci, wczytanej czy nie. Używaj go, żeby ubrać peda, który zastępuje postać (śpiące ciało, manekin): przekaż wynik bez zmian do appearance.apply klienta (Lib: klient).
Strona: Serwer · Czeka: tak (Promise w TypeScript, w Lua wstrzymuje wątek)
appearance.get(charId: number): Promise<CharacterAppearance | null>local look = aiLib.appearance.get(charId) -- { model, data } albo nil, wywołuj wewnątrz wątkuProp
Type
Zwracana wartość
Promise<CharacterAppearance | null>: CharacterAppearance to { model, data } (hash modelu peda i własne dane wyglądu skryptu ubrań). null, gdy postać go nie ma, nie działa żaden skrypt ubrań albo ai-core jest zatrzymany.
Przykład
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;
// Wygląd potrzebny jest tylko graczom w pobliżu tej postaci.
for (const other of playersNear(source, 100)) emitNet("my-sleepers:look", other, source, look);
}appearance.provider
Strona: Serwer · Czeka: nie
appearance.provider(): string | nulllocal name = aiLib.appearance.provider()Zwraca skrypt ubrań, który odpowiada, albo null (Lua nil), gdy żaden nie działa.
console.log(`looks through ${appearance.provider() ?? "nothing"}`);