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/.
Który plik decyduje o czym
Dział zatytułowany „Który plik decyduje o czym”| Plik | O czym decyduje | Otwarty? |
|---|---|---|
config.lua | Język, framework, zdjęcia, komenda kreatora, siatka na żywo, kto może używać tabletu oraz propy kamer | Tak |
bridge/client_bridge.lua | Wykrywanie frameworka, praca gracza, powiadomienia oraz podpowiedzi tekstowe | Tak |
bridge/server_bridge.lua | Wykrywanie frameworka, identyfikatory, prace, używalne przedmioty, dodawanie i usuwanie przedmiotów, powiadomienia | Tak |
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/*.lua | Każdy tekst w grze oraz na tablecie | Zaszyfrowany w tej wersji |
client/, server/ | Główny skrypt | Zaszyfrowany (escrow) |
Ogólne — config.lua
Dział zatytułowany „Ogólne — config.lua”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Locale | Używany język | 'en' |
Config.Framework | esx, 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.EvidenceEnabled | Zdjęcia włączone lub wyłączone. Gdy wyłączone, Spacja w kamerze i przycisk zrzutu na siatce nic nie robią | true |
Config.CreatorCommand | Komenda otwierająca kreator dla administracji | 'camcreator' |
Config.CreatorAce | Uprawnienie ACE wymagane przez kreator | 'mic_cctvcreator.open' |
Config.LiveGridFPS | Jak 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ążenie | 5 |
Config.BlackScreenBehindUI | Rysuje czarne tło za tabletem, aby ukryć przeskoki między kamerami podczas odświeżania siatki | true |
Config.AllowedJobs | Prace uprawnione do otwierania tabletu. Pusta tabela oznacza każdego. Zobacz poniżej | {} |
Config.SpawnDistance | Jak blisko musisz się znajdować, aby prop kamery został zespawnowany | 60.0 |
Config.BreakableCamera | Czy kamery w ogóle można zniszczyć | true |
Config.RepairDistance | Jak daleko sięga laser naprawczy | 20.0 |
Config.RepairTime | Jak długo trwa naprawa, w milisekundach | 5000 |
Kto widzi którą kamerę
Dział zatytułowany „Kto widzi którą kamerę”O tej kwestii warto zdecydować, zanim ktokolwiek postawi pierwszą kamerę.
Puste Config.AllowedJobs (domyślnie)
Dział zatytułowany „Puste Config.AllowedJobs (domyślnie)”- 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.
Kamery z kreatora administracji
Dział zatytułowany „Kamery z kreatora administracji”Zawsze są kamerami frakcyjnymi, widocznymi dla każdej pracy zaznaczonej w kreatorze. Kamera z kreatora bez żadnej zaznaczonej pracy nie jest widoczna dla nikogo.
Dowody i logi
Dział zatytułowany „Dowody i logi”- 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.
Zdejmowanie kamery
Dział zatytułowany „Zdejmowanie kamery”Właściciel może usunąć swoją kamerę z poziomu tabletu i odzyskać przedmiot.
Niszczenie i naprawianie
Dział zatytułowany „Niszczenie i naprawianie”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.
Sterowanie
Dział zatytułowany „Sterowanie”Stawianie kamery (z przedmiotu)
| Klawisz | Co robi |
|---|---|
| Rozglądanie się | Przesuwa podgląd na powierzchnię, na którą patrzysz |
| Kółko myszy | Obraca kamerę |
| E | Stawia kamerę; zostaniesz poproszony o podanie nazwy |
| Prawy przycisk myszy / ESC | Anuluje |
Patrzenie przez kamerę
| Klawisz | Co robi |
|---|---|
| W / S | Przechyla w górę i w dół |
| A / D | Obraca. Kamery ścienne i na słup zatrzymują się na 45° w obie strony; modele 360° obracają się dookoła |
| Kółko myszy | Przybliżenie (zoom) |
| Enter | Przełącza między trybem normalnym, noktowizją a termowizją |
| Spacja | Robi zdjęcie do galerii dowodów |
| Backspace / ESC | Powró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:
| Klawisz | Co robi |
|---|---|
| ← / → | Zmienia model |
| Kółko myszy | Obraca |
| E | Stawia; zostaniesz poproszony o podanie nazwy |
| Prawy przycisk myszy / ESC | Powrót do menu kreatora |
Komendy i uprawnienia
Dział zatytułowany „Komendy i uprawnienia”| Komenda | Kto | Co robi |
|---|---|---|
/camcreator | Gracze z uprawnieniem Config.CreatorAce | Otwiera 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.
Eksporty
Dział zatytułowany „Eksporty”Po stronie klienta (client-side), dla innych zasobów potrzebujących informacji o kamerach:
| Eksport | Argumenty | Zwraca |
|---|---|---|
GetCameraStatus | id kamery | 'online', 'broken' lub 'offline', jeśli id jest nieznane |
GetCameraIdFromEntity | uchwyt encji | ID kamery dla zespawnowanego propa kamery lub nic |
IsPlacing | — | true, gdy gracz jest w trakcie stawiania kamery |
HideNearbyCamera | współrzędne | Ukrywa najbliższy prop kamery w promieniu 2 m i go zwraca |
UnhideCamera | prop | Ponownie 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.
| Plik | Za co odpowiada |
|---|---|
bridge/client_bridge.lua | Wykrywanie frameworka, Bridge.GetPlayerJob, Bridge.Notify oraz Bridge.ShowTextUI / Bridge.HideTextUI dla podpowiedzi naprawy |
bridge/server_bridge.lua | Wykrywanie 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).