Wszystko, co możesz zmienić, jest w dwóch miejscach: config.lua dla zachowania oraz folder bridge/ dla tego, jak lina komunikuje się z twoim frameworkiem, targetem i tekstowym UI. Oba są otwarte (wymienione w escrow_ignore); client/client.lua i server.lua są objęte escrow.
| Plik | O czym decyduje |
|---|
config.lua | Framework, nazwa przedmiotu, system interakcji, etykiety, klawisze, odległości, długość i fizyka liny, znacznik, cooldown, limit czasu |
bridge/server_bridge.lua | Pobieranie frameworka, rejestrowanie przedmiotu rope jako używalnego, sprawdzanie, czy gracz go ma przy sobie |
bridge/client_bridge.lua | Tekst 3D i znacznik rysowane w trybie drawtext oraz zdarzenie klienta, które wyciąga linę |
bridge/target.lua | Opcje ox_target i qb-target oraz powrót do drawtext |
bridge/README.md | Krótkie notatki o bridge (po hiszpańsku) |
inventory/ | Gotowe definicje przedmiotów dla ox_inventory, QBCore i ESX |
stream/ | Model i tekstura propa liny |
Nie ma folderu locales/. Jedyny tekst, który widzą gracze, to etykiety w Config.Labels.
| Opcja | Co robi | Domyślnie |
|---|
Config.Framework | esx lub qbcore. Na QBox użyj qbcore — QBox uruchamia zasoby QBCore przez swoją warstwę kompatybilności. Każda inna wartość zatrzymuje zasób przy starcie | esx |
Config.Item | Przedmiot w ekwipunku, który jest liną | rope |
| Opcja | Co robi | Domyślnie |
|---|
Config.InteractionSystem | ox_target, qb-target lub drawtext. Target, który nie działa, wraca do drawtext, dopóki nie wystartuje | ox_target |
Config.Labels | Tekst każdej akcji: grab (Drag with rope), release (Release player), attach (Tie to vehicle), detach (Untie from vehicle) | Angielski |
Config.KeyLabels | Nazwy klawiszy pokazywane w trybie drawtext: Attach i Vehicle | E, Y |
Config.ShowInteractionMarkers | Rysuje znacznik nad graczem lub pojazdem, na którym możesz wykonać akcję. Tylko tryb drawtext | true |
Co robi każda akcja:
| Akcja | Kto może ją wykonać | Co się dzieje |
|---|
| Drag with rope | Ty, z liną w ręku, przy graczu stojącym na nogach | Ten gracz zostaje przywiązany do twojej dłoni |
| Release player | Ten, kto ciągnie | Lina zostaje zdjęta, a gracz wstaje |
| Tie to vehicle | Ten, kto ciągnie, przy pojeździe | Lina przechodzi z twojej dłoni na tył pojazdu |
| Untie from vehicle | Ten, kto ją przywiązał | Lina wraca do twojej dłoni, gracz nadal jest przywiązany |
| Release player (na pojeździe) | Ten, kto ją przywiązał | Gracz zostaje uwolniony z pojazdu |
Klawisze to numery kontrolek FiveM. Strzałki działają w każdym trybie; E i Y mają znaczenie tylko w trybie drawtext (z targetem wybierasz akcję z menu).
| Opcja | Co robi | Domyślnie |
|---|
Config.AttachKey | Chwyta lub uwalnia gracza | 38 (E) |
Config.AttachToVehicleKey | Przywiązuje do pojazdu lub odwiązuje | 246 (Y) |
Config.AdjustLengthUpKey | Przytrzymaj, aby wydłużyć linę | 172 (Strzałka w górę) |
Config.AdjustLengthDownKey | Przytrzymaj, aby skrócić linę | 173 (Strzałka w dół) |
Jeśli zmienisz AttachKey lub AttachToVehicleKey, zmień też Config.KeyLabels, bo inaczej podpowiedź pokaże stary klawisz.
| Opcja | Co robi | Domyślnie |
|---|
Config.MaxDetectionDistance | Jak blisko (m) musi być gracz, by go chwycić. To także odległość targetu dla graczy | 2.0 |
Config.MaxVehicleAttachDistance | Jak blisko (m) musi być pojazd, by przywiązać do niego linę. To także odległość targetu dla pojazdów | 5.0 |
Config.MarkerVisibilityDistance | Nadal w config.lua, ale nieczytane przez obecną wersję — podpowiedź pokazuje się każdemu w obrębie dwóch powyższych odległości | 20.0 |
| Opcja | Co robi | Domyślnie |
|---|
Config.InitialRopeLength | Długość (m) na początku ciągnięcia | 3.0 |
Config.MinRopeLength | Najkrótsza, jaką mogą ustawić strzałki | 1.0 |
Config.MaxRopeLength | Najdłuższa, jaką mogą ustawić strzałki | 100.0 |
Config.RopeType | Typ liny w grze | 1 |
Config.RopeSlack | Nadal w config.lua, ale nieczytane przez obecną wersję — luz liny wynika z jej długości | 0.5 |
Config.RopePropModel | Prop w dłoni gracza. Domyślny jest streamowany z stream/ | prop_stag_do_rope |
| Opcja | Co robi | Domyślnie |
|---|
Config.MarkerType | Typ znacznika w grze | 2 |
Config.MarkerHeightOffset | Wysokość (m) nad graczem, na której leżą podpowiedź i znacznik | 1.0 |
Config.MarkerScale | Rozmiar znacznika | 0.3 |
Config.MarkerColor | Kolor znacznika, jako czerwony, zielony, niebieski i alfa | czerwony, alfa 150 |
| Opcja | Co robi | Domyślnie |
|---|
Config.DragCooldown | Milisekundy między dwiema akcjami liną | 1000 |
Config.DisableControls | Blokuje wszystkie kontrolki ciągniętego gracza. Po wyłączeniu może nadal używać swoich kontrolek, będąc w ragdollu | true |
Config.EnableMaxDragTime | Zrywa linę samoczynnie po MaxDragTime | false |
Config.MaxDragTime | Sekundy do zerwania liny, gdy powyższa opcja jest włączona | 100 |
Config.NeedItemToRelease | Pieszo uwolnienie wymaga liny w ręku. Właściciel zawsze może uwolnić kogoś przywiązanego do pojazdu | true |
Ciągnięty gracz jest w ragdollu, nie może strzelać i jest nieśmiertelny, dopóki lina nie zostanie zdjęta.
Nie ma pliku lokalizacji. Przetłumacz cztery teksty w Config.Labels oraz Config.KeyLabels, jeśli twoi gracze używają innych nazw klawiszy.
Folder bridge/ jest otwarty, abyś mógł dopasować linę do konfiguracji, której nie zna. Fizyka liny i zdarzenia sieciowe zostają w plikach objętych escrow i nie trzeba ich zmieniać.
server_bridge.lua — framework i ekwipunek. Pobiera ESX lub QBCore, rejestruje Config.Item jako używalny przedmiot i odpowiada na pytanie “czy ten gracz ma linę?”, gdy zaczyna się ciągnięcie. Dla własnego frameworka lub ekwipunku z własnym API przepisz Bridge.GetPlayer, Bridge.HasRope i Bridge.RegisterRopeItem. Rejestruj przedmiot tylko w jednym miejscu — dwie integracje rejestrujące ten sam przedmiot uruchomią go dwukrotnie.
client_bridge.lua — tekst i znacznik. Bridge.DrawText i Bridge.DrawMarker rysują podpowiedź drawtext w każdej klatce, w której jest widoczna. Zastąp je, aby użyć własnego zasobu tekstu 3D lub TextUI. Nasłuchuje też zdarzenia klienta mic_drag:useRope, które wyciąga linę lub ją chowa — wywołaj je z callbacku użycia własnego ekwipunku, jeśli nie używasz używalnych przedmiotów frameworka.
target.lua — menu targetu. Dodaje i usuwa globalne opcje gracza i pojazdu dla ox_target i qb-target oraz przełącza się na drawtext, gdy target przestaje działać. Inny zasób targetu należałoby dodać tutaj.
| Export (klient) | Zwraca |
|---|
GetInteractionState | Tabelę: mode (używana interakcja), hasRope (lina w ręku), targetServerId (kogo ciągniesz), vehicle (pojazd, do którego przywiązano linę), beingDragged, busy |
Jest tylko do odczytu: przydatny dla HUD-a albo by inny skrypt wiedział, że nie należy działać na graczu, który jest na linie.