# Konfiguracja CXG-GTFAT

Edytuj `config.lua` i uruchom ponownie `CXG_GTFAT`. Wartości wagi podaje się w kilogramach i muszą pasować do skonfigurowanej siatki kroków.

## Język i waga

```lua
Config.Locale = 'pl'

Config.Weight = {
    minKg = 50,
    maxKg = 180,
    defaultKg = 75,
    fatThresholdKg = 100,
    stepKg = 0.5,
}
```

Dostępne języki: en, es, `pt-BR`, fr, de, it, pl, ru, tr, th, ar, sv i br. br zachowuje starsze teksty brazylijskiego portugalskiego; do zwykłego wyboru zalecane jest `pt-BR`.

Początkowy zakres wynosi 50–180 kg, domyślna waga to 75 kg, a Fat włącza się od 100 kg włącznie. `minKg` musi wynosić co najmniej zero, `stepKg` musi być dodatni, a `minKg` <= `defaultKg` <= `maxKg`. Próg musi być wyższy od minimum i nie może przekraczać maksimum. Wartość domyślna, próg i maksimum muszą należeć do siatki zaczynającej się od `minKg`; na przykład przy minimum 50 kg i kroku 0,5 kg prawidłowe są wartości 75 i 100 kg. Nieprawidłowa konfiguracja wyłącza operacje wagi.

LB przelicza wyłącznie wyświetlaną wartość. Serwer zapisuje i sprawdza wartości w kg.

## Komendy i uprawnienia

```lua
Config.Commands = {
    enabled = true,
    access = 'ace',
    ace = 'cxg_gtfat.use',
    job = nil,
    group = nil,
    custom = nil,
    open = 'fatweight',
    control = 'fatdecal',
}
```

Po włączeniu zarejestrowane zostają skonfigurowane komendy. Domyślna komenda otwierania to `/fatweight`, a komenda sterująca to `/fatdecal`. Sterująca przyjmuje on, off, status lub ui. on ustawia wagę co najmniej na progu Fat, a off najwyżej jeden krok poniżej. Nie są to oddzielne przełączniki wyglądu.

| access | Działanie |
| --- | --- |
| ace | Wymaga uprawnienia `ACE` wskazanego w ace. To ustawienie domyślne. |
| everyone | Pozwala użyć funkcji dowolnemu graczowi, który przejdzie kontrole serwera. |
| jobs, groups, custom | Wymaga implementacji polityki w `bridge/server.lua`; połączenie z frameworkiem nie jest automatyczne. |

Aby przyznać administratorom dostęp `ACE`:

```cfg
add_ace group.admin cxg_gtfat.use allow
```

Menu lub target może zażądać otwarcia interfejsu, ale serwer nadal sprawdza uprawnienia. Wyłączenie rejestracji komend nie uniemożliwia innemu zasobowi serwerowemu wywołania eksportu `OpenWeightUI`.

## Stanowiska

Po instalacji żadna fizyczna waga nie jest włączona. Dodaj wpis stacji do `Config.Stations`, użyj unikalnego klucza, podaj rzeczywiste współrzędne i włącz stanowisko.

```lua
Config.Interaction = {
    key = 'E',
    streamDistance = 60.0,
}

Config.Stations = {
    gimnasio = {
        enabled = true,
        coords = { x = 0.0, y = 0.0, z = 0.0 },
        heading = 0.0,
        distance = 1.8,
        bucket = 0,
        access = 'ace',
        ace = 'cxg_gtfat.use',
        job = nil,
        group = nil,
        custom = nil,
        model = false,
        spawnProp = false,
    },
}
```

Zastąp przykładowe współrzędne. Odległość obsługuje maksymalnie 5 metrów. `bucket` musi odpowiadać routing bucketowi stanowiska, zwykle 0. Każde stanowisko ma własną politykę `access`.

| Tryb | Ustawienia | Wynik |
| --- | --- | --- |
| Punkt bez obiektu | model = false, `spawnProp` = false | Niewidoczna interakcja pod skonfigurowanymi współrzędnymi. |
| Istniejący obiekt | model = 'nazwa_modelu', `spawnProp` = false | Wymaga tego modelu w odległości do 1 metra od współrzędnych. Zasób go nie usuwa. |
| Obiekt tworzony lokalnie | model = 'nazwa_modelu', `spawnProp` = true | Tworzy zamrożony lokalny obiekt w pobliżu i usuwa go po odejściu albo zatrzymaniu zasobu. |

Punkt interakcji nie umieszcza obiektu automatycznie na ziemi. Ustaw `coords` na rzeczywisty punkt początkowy obiektu, a `heading` na jego orientację. Podpowiedź domyślnie używa E; gracz może zmienić przypisanie „Użyj wagi” w Ustawienia FiveM > Przypisanie klawiszy.

Domyślny adapter obsługuje ace i everyone. Pozostałe tryby wymagają implementacji serwerowej. Podpowiedź lub obiekt nie nadaje uprawnień; serwer ponownie weryfikuje dostęp i odległość.

## Trwałość dla postaci

```lua
Config.Persistence = { framework = 'none' }
```

| Tryb | Zastosowanie |
| --- | --- |
| none | Domyślny. Tylko bieżąca sesja; po ponownym połączeniu lub restarcie używa `defaultKg`. |
| qb | Ustala postać przez qb-core i jej citizenid. |
| esx | Ustala postać przez es_extended i jej identyfikator. |
| custom | Używa `GTFatCustomCharacterId(source)` w `identity.lua`. |

Zasób nie wykrywa Qbox automatycznie. Na serwerach z wieloma postaciami ustaw stabilny, unikalny identyfikator dla każdej postaci za pomocą zgodnej opcji lub własnego adaptera. Nie współdziel identyfikatorów między postaciami i nie akceptuj tożsamości przesłanej przez klienta. W trybie custom zwracaj nil, dopóki postać się nie załaduje.

Zapisana waga jest przechowywana oddzielnie od ubrań i strojów. Zachowaj nazwę zasobu `CXG_GTFAT` i dołącz serwerowy zapis `KVP` do kopii zapasowych pozostałych trwałych danych.
