# إعداد CXG-GTFAT

عدّل `config.lua` ثم أعد تشغيل `CXG_GTFAT`. تُحدد قيم الوزن بالكيلوغرام ويجب أن توافق شبكة الخطوات المضبوطة.

## اللغة والوزن

```lua
Config.Locale = 'ar'

Config.Weight = {
    minKg = 50,
    maxKg = 180,
    defaultKg = 75,
    fatThresholdKg = 100,
    stepKg = 0.5,
}
```

اللغات المتاحة: en وes و`pt-BR` وfr وde وit وpl وru وtr وth وar وsv وbr. تحتفظ br بالنصوص القديمة بالبرتغالية البرازيلية؛ ويوصى باستخدام `pt-BR` للاختيار العادي.

يتراوح الوزن الابتدائي بين 50 و180 كغ، والقيمة الافتراضية 75 كغ، ويبدأ Fat عند 100 كغ أو أكثر. يجب أن تكون `minKg` صفراً أو أكثر، وأن تكون `stepKg` موجبة، وأن يتحقق الشرط `minKg` <= `defaultKg` <= `maxKg`. يجب أن تكون العتبة أعلى من الحد الأدنى وألا تتجاوز الحد الأقصى. يجب أن تقع القيمة الافتراضية والعتبة والحد الأقصى على الشبكة التي تبدأ من `minKg`؛ مثلاً، عند حد أدنى قدره 50 كغ وخطوة 0.5 كغ، تكون 75 و100 كغ قيمتين صالحتين. يؤدي الإعداد غير الصالح إلى تعطيل عمليات الوزن.

تحوّل LB القيمة المعروضة فقط. يخزّن الخادم القيم بالكيلوغرام ويتحقق منها بهذه الوحدة.

## الأوامر والصلاحيات

```lua
Config.Commands = {
    enabled = true,
    access = 'ace',
    ace = 'cxg_gtfat.use',
    job = nil,
    group = nil,
    custom = nil,
    open = 'fatweight',
    control = 'fatdecal',
}
```

عند التفعيل، تُسجّل الأوامر المضبوطة. أمر الفتح الافتراضي هو `/fatweight` وأمر التحكم هو `/fatdecal`. يقبل أمر التحكم on أو off أو status أو ui. يرفع on الوزن إلى العتبة على الأقل، ويخفضه off إلى ما لا يزيد على خطوة واحدة دون العتبة. هذه الأوامر ليست مفاتيح مستقلة لتغيير المظهر.

| access | السلوك |
| --- | --- |
| ace | يتطلب صلاحية `ACE` المحددة في ace. وهو الوضع الافتراضي. |
| everyone | يسمح لأي لاعب يجتاز فحوص الخادم بالاستخدام. |
| jobs, groups, custom | يتطلب تنفيذ السياسة في `bridge/server.lua`؛ ولا يتصل تلقائياً بإطار العمل. |

لمنح المسؤولين وصول `ACE`:

```cfg
add_ace group.admin cxg_gtfat.use allow
```

يمكن لقائمة أو target طلب فتح الواجهة، لكن الخادم يظل يتحقق من الصلاحية. لا يمنع إيقاف تسجيل الأوامر مورداً خادمياً آخر من استدعاء export `OpenWeightUI`.

## المحطات

لا يتم تفعيل أي ميزان فعلي بعد التثبيت. أضف سجلاً لمحطة إلى `Config.Stations`، واستخدم مفتاحاً فريداً، وأدخل الإحداثيات الفعلية، ثم فعّله.

```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,
    },
}
```

استبدل الإحداثيات المثالّية. تدعم `distance` مسافة تصل إلى 5 أمتار. يجب أن تطابق `bucket` قيمة routing bucket الخاصة بالمحطة، وعادةً تكون 0. لكل محطة سياسة `access` خاصة بها.

| النمط | الإعدادات | النتيجة |
| --- | --- | --- |
| نقطة بلا كائن | model = false, `spawnProp` = false | تفاعل غير مرئي عند الإحداثيات المحددة. |
| كائن موجود | model = 'اسم_النموذج', `spawnProp` = false | يجب أن يوجد النموذج على بُعد متر واحد من الإحداثيات. لا يزيله المورد. |
| كائن يُنشأ محلياً | model = 'اسم_النموذج', `spawnProp` = true | ينشئ كائناً محلياً ثابتاً عند الاقتراب ويزيله عند الابتعاد أو إيقاف المورد. |

لا تضع نقطة التفاعل الكائن على الأرض تلقائياً. اجعل `coords` نقطة أصل الكائن الفعلية و`heading` اتجاهه. يستخدم التنبيه E افتراضياً؛ ويمكن للاعب إعادة تعيين «استخدام الميزان» في FiveM Settings > Key Bindings.

يدعم المحوّل الافتراضي ace وeveryone. تتطلب الأنماط الأخرى تنفيذاً على الخادم. لا تمنح المطالبة أو الكائن صلاحية؛ إذ يعيد الخادم التحقق من الإذن والقرب.

## الحفظ لكل شخصية

```lua
Config.Persistence = { framework = 'none' }
```

| الوضع | الاستخدام |
| --- | --- |
| none | افتراضي. للجلسة فقط؛ وبعد الاتصال مجدداً أو إعادة التشغيل تُستخدم `defaultKg`. |
| qb | يحدد الشخصية من خلال qb-core وcitizenid الخاص بها. |
| esx | يحدد الشخصية من خلال es_extended والمعرّف الخاص بها. |
| custom | يستخدم `GTFatCustomCharacterId(source)` في `identity.lua`. |

لا يكتشف المورد Qbox تلقائياً. في الخوادم متعددة الشخصيات، أعدّ معرّفاً ثابتاً وفريداً لكل شخصية عبر خيار متوافق أو محوّل خاص. لا تستخدم معرّفاً مشتركاً بين الشخصيات ولا تقبل معرّفاً يرسله العميل. في وضع custom، أعد nil إلى أن يتم تحميل الشخصية.

يُخزّن الوزن الدائم منفصلاً عن الملابس والأزياء. حافظ على اسم المورد `CXG_GTFAT` وانسخ تخزين `KVP` الخاص بالخادم احتياطياً مع بقية البيانات الدائمة.
