Komendy
addCommand: komendy czatu ze sparsowanymi argumentami, uprawnieniami ACE, podpowiedziami na czacie i wierszem w panelu administratora ai-core.
import { addCommand } from "@aicore-fivem/lib/server";addCommand
Rejestruje komendę czatu (i komendę konsoli). Argumenty są parsowane i sprawdzane, zanim zadziała twój handler, uprawnienie jest sprawdzane przez ACE, podpowiedzi na czacie trafiają tylko do graczy, którzy mogą używać komendy, a panel administratora ai-core wymienia ją w zakładce Commands. Używaj jej dla każdej komendy serwera zamiast gołego RegisterCommand.
Strona: Serwer · Czeka: nie
addCommand<P extends readonly CommandParam[]>(
name: string | string[],
options: CommandOptions<P>,
handler: (source: number, args: CommandArgs<P>, raw: string) => unknown,
): voidaiLib.addCommand(name, options, handler) -- handler(source, args, raw)Parametry
Prop
Type
CommandOptions
Prop
Type
CommandParam
Prop
Type
Co widzi gracz przy złym wejściu
Zanim zadziała handler, lib odpowiada powiadomieniem ai-core (albo linią w konsoli dla source 0) z tekstami ai-core:
| Przypadek | Tekst (po angielsku) |
|---|---|
| Brak uprawnienia | You are not allowed to use this command. |
| Brakuje wymaganego argumentu | <name> is missing. |
number / playerId nie jest liczbą | <name> must be a number. |
playerId nie jest graczem online | No player is online with id <value>. |
| Po każdym błędzie argumentu | Usage: /name <required> [optional] |
Zwracana wartość
void. W TypeScript rzuca wyjątek, gdy name jest pustą listą.
Przykład
import { addCommand, medical, notify, createLocale } from "@aicore-fivem/lib/server";
const Locale = createLocale();
addCommand(
["heal", "h"],
{
help: Locale("CMD_HEAL"),
params: [{ name: "id", type: "playerId", help: Locale("CMD_P_ID"), optional: true }],
restricted: true,
},
(source, args) => {
const target = args.id ?? source; // args.id to number | undefined
if (target === 0) return; // konsola musi wskazać gracza
if (medical.heal(target) && source > 0) notify(source, Locale("HEALED"), "success");
},
);
addCommand(
"announce",
{
help: "Sends a message to everyone",
params: [{ name: "text", type: "longString" }],
restricted: ["group.admin", "ai.admin"],
},
(_source, { text }) => {
for (const player of getPlayers()) notify(Number(player), text, "info", 8000);
},
);Nigdy nie sprawdzaj uprawnień ręcznie wewnątrz handlera: robi to restricted, a podpowiedzi na czacie za nim podążają. Dla listy principali ai-core przyznaje command.<name> każdemu z nich, co wymaga add_ace resource.ai-core command.add_ace allow i add_ace resource.ai-core command.remove_ace allow w permission.cfg. Stopnie prac i gangów są principalami (ai.job.police), więc podpowiedzi aktualizują się, gdy zmieni się praca albo gang gracza.
W TypeScript args jest typowany z params: args.id to number albo number | undefined, gdy jest opcjonalny. Lista parametrów wspólna dla kilku komend musi być zadeklarowana as const, bo inaczej nazwy i typy się rozszerzają i args je traci.
Wejście z klienta
Bezpieczne odpowiadanie klientom: onClientCallback, onClientEvent, strażnicy, triggerClientCallback, paski postępu i minigry sprawdzane przez serwer, PendingActions.
Gracze i postacie
online, onCharacter, notify, gracze w pobliżu, pozycje i magazyny na gracza: PlayerMap, Cooldowns, KeyedCooldowns, SourceLock, RateLimit, KeyWatchers.