ai-vehiclekeys dla deweloperów
Eksporty serwera ai-vehiclekeys, API qbx_vehiclekeys, na które odpowiada, i jego zdarzenia.
Aby dawać, zabierać lub sprawdzać klucze z własnego skryptu, używaj vehicleKeys.give(source, vehicle, purpose), vehicleKeys.remove i vehicleKeys.has z biblioteki (serwer). Przechodzą przez warstwę kluczy ai-core i działają z każdym skryptem kluczy, którego używa serwer. Poniższe eksporty to to, co wywołuje ta warstwa, gdy ai-vehiclekeys jest aktywnym systemem kluczy.
Wszystkie eksporty są na serwerze, synchroniczne i odpowiadają zarówno pod ai-vehiclekeys, jak i qbx_vehiclekeys. Pojazd to uchwyt encji po stronie serwera (liczba) albo tablica (tekst). Tablice są porównywane po normalizacji (spacje i wielkość liter nie mają znaczenia).
import { resourceExport, callExport } from "@aicore-fivem/lib/server";
const keys = resourceExport("ai-vehiclekeys"); // typowane: HasKeys, GiveKeys, RemoveKeys
// SetLockState i IsPlayerNearVehicle nie są typowane: callExport("ai-vehiclekeys", "SetLockState", vehicle, "lock")Eksporty serwera
HasKeys
Czy gracz ma klucz do pojazdu: jako jego właściciel, jako członek pracy lub gangu, do których należy pojazd, albo przez klucz dany w tej sesji.
Strona: serwer · Czeka: nie
HasKeys(source: number, vehicle: number | string): booleanlocal has = exports['ai-vehiclekeys']:HasKeys(source, vehicle)Parametry
Prop
Type
Zwraca
true, gdy gracz ma klucz. W przeciwnym razie false, także dla encji, która nie istnieje.
Przykład
import { resourceExport } from "@aicore-fivem/lib/server";
const keys = resourceExport("ai-vehiclekeys");
onNet("myscript:openTrunk", (netId: number) => {
const source = globalThis.source;
const vehicle = NetworkGetEntityFromNetworkId(netId);
if (!keys.HasKeys(source, vehicle)) return;
// ... otwórz bagażnik
});GiveKeys
Daje graczowi klucz na tę sesję. Gracz ma go, dopóki nie wyjdzie z serwera lub nie zmieni postaci. Danie klucza, który gracz już ma, nic nie robi.
Strona: serwer · Czeka: nie
GiveKeys(source: number, vehicle: number | string): voidexports['ai-vehiclekeys']:GiveKeys(source, vehicle)Parametry
Prop
Type
Zwraca
Nic. Jeśli gracz siedzi teraz w tym pojeździe, jego klient jest informowany (ai-vehiclekeys:client:granted): blokada silnika się kończy i silnik startuje.
RemoveKeys
Zabiera graczowi klucz sesyjny. Kluczy własności (właściciel, flota pracy lub gangu) nie można usunąć: podążają za właścicielem pojazdu.
Strona: serwer · Czeka: nie
RemoveKeys(source: number, vehicle: number | string): voidexports['ai-vehiclekeys']:RemoveKeys(source, vehicle)Zwraca
Nic.
SetLockState
Zamyka lub otwiera pojazd na serwerze, bez żadnego sprawdzania klucza.
Strona: serwer · Czeka: nie
SetLockState(vehicle: number, state: "lock" | "unlock" | boolean | number): voidexports['ai-vehiclekeys']:SetLockState(vehicle, 'lock')Parametry
Prop
Type
Zwraca
Nic. Encja, która nie istnieje, nic nie robi.
IsPlayerNearVehicle
Czy gracz stoi w odległości do 5 m od pojazdu.
Strona: serwer · Czeka: nie
IsPlayerNearVehicle(source: number, vehicle: number): booleanlocal near = exports['ai-vehiclekeys']:IsPlayerNearVehicle(source, vehicle)Zwraca
true w odległości do 5 m. false, gdy dalej albo gdy któryś argument nie jest liczbą.
Zdarzenia
Własne zdarzenia ai-vehiclekeys są wewnętrzne (callbacki klienta między jego klientem a serwerem). Nie wywołuj ich z innych skryptów.
| Nazwa | Rodzaj | Co robi |
|---|---|---|
ai-vehiclekeys:check | callback klienta | (netId) -> boolean: czy gracz ma klucz, pytane, gdy zajmuje miejsce. |
ai-vehiclekeys:toggleLock | callback klienta | (netId) -> { ok, locked? }: klawisz zamka. |
ai-vehiclekeys:giveNearest | callback klienta | (netId) -> { ok }: przekaż klucze najbliższemu graczowi. |
ai-vehiclekeys:client:granted | serwer do klienta | (netId): klucz dotarł podczas siedzenia w tym pojeździe; silnik może wystartować. |
Przedmiot do użycia
lockpick jest rejestrowany jako przedmiot do użycia przez warstwę ekwipunku ai-core. Przedmiot jest zużywany tylko wtedy, gdy się złamie.