Przejdź do głównej zawartości

Personalizacja

Ustawienia znajdują się w pliku config.lua. Dwa pliki bridge są otwarte, dzięki czemu możesz dostosować integrację z frameworkiem. Sam tablet to czysty kod HTML w folderze html/.


PlikO czym decydujeOtwarty?
config.luaJęzyk, framework, zdjęcia, komenda kreatora, siatka na żywo, kto może używać tabletu oraz propy kamerTak
bridge/client_bridge.luaWykrywanie frameworka, praca gracza, powiadomienia oraz podpowiedzi tekstoweTak
bridge/server_bridge.luaWykrywanie frameworka, identyfikatory, prace, używalne przedmioty, dodawanie i usuwanie przedmiotów, powiadomieniaTak
items/Definicje przedmiotów dla ox, qb i ESX oraz ikony w items/images/Tak
html/Tablet: index.html, app.js, app.css, mapa (map.js, map.css) i jej kafelki w html/tiles/Niezaszyfrowany (bez escrow)
locales/*.luaKażdy tekst w grze oraz na tablecieZaszyfrowany w tej wersji
client/, server/Główny skryptZaszyfrowany (escrow)

OpcjaCo robiDomyślnie
Config.LocaleUżywany język'en'
Config.Frameworkesx, qbcore lub auto dla automatycznego wykrycia. Na QBox opcja auto wykrywa qbcore przez warstwę kompatybilności; aby przypiąć na stałe, użyj qbcore'auto'
Config.EvidenceEnabledZdjęcia włączone lub wyłączone. Gdy wyłączone, Spacja w kamerze i przycisk zrzutu na siatce nic nie robiątrue
Config.CreatorCommandKomenda otwierająca kreator dla administracji'camcreator'
Config.CreatorAceUprawnienie ACE wymagane przez kreator'mic_cctvcreator.open'
Config.LiveGridFPSJak często siatka odświeża się w ciągu sekundy. Od 1 do 15; wyższa wartość to płynniejszy obraz, ale większe obciążenie5
Config.BlackScreenBehindUIRysuje czarne tło za tabletem, aby ukryć przeskoki między kamerami podczas odświeżania siatkitrue
Config.AllowedJobsPrace uprawnione do otwierania tabletu. Pusta tabela oznacza każdego. Zobacz poniżej{}
Config.SpawnDistanceJak blisko musisz się znajdować, aby prop kamery został zespawnowany60.0
Config.BreakableCameraCzy kamery w ogóle można zniszczyćtrue
Config.RepairDistanceJak daleko sięga laser naprawczy20.0
Config.RepairTimeJak długo trwa naprawa, w milisekundach5000

O tej kwestii warto zdecydować, zanim ktokolwiek postawi pierwszą kamerę.

  • Każdy, kto posiada przedmiot cctv_tablet, może go otworzyć.
  • Kamera postawiona przez gracza jest prywatna: widzi ją tylko on.
  • Właściciel może następnie udostępnić ją swojej pracy — staje się wtedy kamerą frakcyjną dla wszystkich osób w tej pracy — albo nadać jej nazwę dostępu i hasło. Każdy, kto wpisze te dane na swoim tablecie, doda kamerę do swojego widoku.

Ustawione Config.AllowedJobs, na przykład policja i szeryf

Dział zatytułowany „Ustawione Config.AllowedJobs, na przykład policja i szeryf”
  • Tylko wybrane prace mogą otworzyć tablet; pozostali gracze otrzymują komunikat o braku uprawnień.
  • Kamera postawiona przez gracza staje się kamerą frakcyjną dla pracy, w której znajduje się on w momencie jej stawiania.

Zawsze są kamerami frakcyjnymi, widocznymi dla każdej pracy zaznaczonej w kreatorze. Kamera z kreatora bez żadnej zaznaczonej pracy nie jest widoczna dla nikogo.

  • Zdjęcie zrobione z prywatnej kamery jest prywatne dla osoby, która je zrobiła. Zdjęcie z kamery frakcyjnej należy do danej pracy. Jedno i drugie można udostępnić swojej pracy z poziomu galerii.
  • Logi naruszeń wyświetlają się dla każdej kamery, do której masz dostęp — 30 najnowszych wpisów. Naprawienie kamery czyści jej logi.

Właściciel może usunąć swoją kamerę z poziomu tabletu i odzyskać przedmiot.


Gdy opcja Config.BreakableCamera jest włączona, kamera przechodzi w stan offline, gdy pocisk uderzy w odległości około metra od niej albo gdy zostanie trafiona w walce wręcz, eksplozją lub pojazdem. W kreatorze można oznaczyć poszczególne kamery jako niezniszczalne.

Zestaw naprawczy, cctv_repair, włącza laser. Wyceluj go w zepsutą kamerę w zasięgu Config.RepairDistance, naciśnij E i odczekaj czas Config.RepairTime. Zestaw się nie zużywa. Klawisz Backspace lub ESC chowa narzędzie.


Stawianie kamery (z przedmiotu)

KlawiszCo robi
Rozglądanie sięPrzesuwa podgląd na powierzchnię, na którą patrzysz
Kółko myszyObraca kamerę
EStawia kamerę; zostaniesz poproszony o podanie nazwy
Prawy przycisk myszy / ESCAnuluje

Patrzenie przez kamerę

KlawiszCo robi
W / SPrzechyla w górę i w dół
A / DObraca. Kamery ścienne i na słup zatrzymują się na 45° w obie strony; modele 360° obracają się dookoła
Kółko myszyPrzybliżenie (zoom)
EnterPrzełącza między trybem normalnym, noktowizją a termowizją
SpacjaRobi zdjęcie do galerii dowodów
Backspace / ESCPowrót do tabletu

Kreator dla administracji (/camcreator)

Wybierz model (ścienna, ścienna 360, słup, słup 360), nazwę bazową, prace, które mają ją widzieć, oraz czy można ją zniszczyć, a następnie przejdź do trybu rozmieszczania:

KlawiszCo robi
← / →Zmienia model
Kółko myszyObraca
EStawia; zostaniesz poproszony o podanie nazwy
Prawy przycisk myszy / ESCPowrót do menu kreatora

KomendaKtoCo robi
/camcreatorGracze z uprawnieniem Config.CreatorAceOtwiera kreator dla administracji. Zmień nazwę w Config.CreatorCommand

Przyznaj uprawnienie w pliku server.cfg za pomocą linii add_ace dla wybranej grupy, na przykład nadając mic_cctvcreator.open grupie group.admin. Jeśli zmienisz wartość Config.CreatorAce, nadaj uprawnienie dla nowej nazwy.


Po stronie klienta (client-side), dla innych zasobów potrzebujących informacji o kamerach:

EksportArgumentyZwraca
GetCameraStatusid kamery'online', 'broken' lub 'offline', jeśli id jest nieznane
GetCameraIdFromEntityuchwyt encjiID kamery dla zespawnowanego propa kamery lub nic
IsPlacing—true, gdy gracz jest w trakcie stawiania kamery
HideNearbyCamerawspółrzędneUkrywa najbliższy prop kamery w promieniu 2 m i go zwraca
UnhideCamerapropPonownie pokazuje prop ukryty za pomocą HideNearbyCamera

Dostępnych jest jedenaście języków: en, es, fr, de, it, pt, ar, ja, pl, ru, tr. Ustaw odpowiedni kod w Config.Locale. Tablet oraz teksty w grze korzystają z tego samego pliku.

W tej wersji pliki w folderze locales/ są częścią chronionego kodu, więc nie można ich edytować. Jeśli potrzebujesz języka, którego tam nie ma, albo innego sformułowania, napisz na Discordzie.


PlikZa co odpowiada
bridge/client_bridge.luaWykrywanie frameworka, Bridge.GetPlayerJob, Bridge.Notify oraz Bridge.ShowTextUI / Bridge.HideTextUI dla podpowiedzi naprawy
bridge/server_bridge.luaWykrywanie frameworka, Bridge.GetPlayerIdentifier, Bridge.GetPlayerJob, Bridge.RegisterUsableItem, Bridge.AddItem, Bridge.AddItemWithMetadata, Bridge.RemoveItem, Bridge.Notify

Inny zasób powiadomień: zmień funkcję Bridge.Notify w obu plikach.

Inne Text UI (ox_lib, okok…): zmień Bridge.ShowTextUI oraz Bridge.HideTextUI w pliku klienta. Na QBCore korzystają one z wbudowanego DrawText z QBCore; w przeciwnym razie używają domyślnego tekstu pomocy z gry.

Ekwipunek: gdy uruchomiony jest ox_inventory, przedmioty są dodawane i usuwane za jego pośrednictwem na obu frameworkach. W przeciwnym razie używane są natywne funkcje frameworka.

Inny framework: ustaw Config.Framework i uzupełnij blok wykrywania oraz funkcje identyfikatora, pracy i przedmiotów w obu plikach. Bez wykrytego frameworka skrypt przechodzi na identyfikator license: i traktuje wszystkich jako unemployed, jednak przedmioty — w tym tablet — są rejestrowane wyłącznie na ESX i QBCore (wliczając QBox poprzez jego kompatybilność z QBCore).