# การตั้งค่า

การตั้งค่าในหน้านี้อยู่ใน `config.lua` แก้ไขฟิลด์ในตารางที่มีอยู่ แล้วรีสตาร์ตรีซอร์สเพื่อให้การเปลี่ยนแปลงมีผล

## ค่าเริ่มต้นและการตั้งค่าที่บันทึกไว้

ร้านค้าและกฎความก้าวหน้าในไฟล์ใช้เป็นการตั้งค่าเริ่มต้น เมื่อบันทึกค่าจากแผงผู้ดูแลแล้ว ค่าที่มีผลจริงจะคงอยู่ระหว่างการรีสตาร์ต การแก้ค่าในไฟล์จะไม่เขียนทับค่าที่บันทึกไว้อัตโนมัติ ให้ใช้แผงควบคุมเพื่ออัปเดตร้านค้า กฎ และตัวเลือกของระบบที่เริ่มใช้งานแล้ว

ภาษา providers, bridges, กล้อง และเสื้อผ้าสำหรับการแสดงตัวอย่างตั้งค่าในไฟล์ ส่วนแหล่งข้อมูลและรอยสักอธิบายไว้ใน [แคตตาล็อกและแพ็ก](https://docs.cxgstudios.com/docs/th/01-cxg-tattoos/04-catalogo.md)

## ภาษาหลัก

```lua
Config.Locale = 'es'
Config.LocaleFallback = 'en'
```

`Locale` กำหนดภาษาของอินเทอร์เฟซและข้อความสำหรับผู้เล่นทุกคน หลังเปลี่ยนค่าให้รีสตาร์ตรีซอร์ส ผู้เล่นเปลี่ยนภาษาจาก NUI ไม่ได้ `LocaleFallback` คือภาษาสำรอง

ภาษาที่มีให้: `en`, `es`, `pt-BR`, `fr`, `de`, `it`, `pl`, `ru`, `tr`, `th` และ `ar` อินเทอร์เฟซภาษาอาหรับใช้ทิศทางการอ่านจากขวาไปซ้าย

## ระบบอัตลักษณ์

`Config.Identity` ตั้งค่าการเชื่อมต่อกับระบบอัตลักษณ์ของเซิร์ฟเวอร์ โดยกำหนดวิธีรับตัวระบุของตัวละครหรือบัญชีที่รีซอร์สใช้บันทึกและเรียกคืนรอยสัก XP และพิมพ์เขียว

```lua
Config.Identity.mode = 'auto'
Config.Identity.qbxResource = 'qbx_core'
```

| โหมด | การใช้งาน |
| --- | --- |
| `auto` | บน Qbox ใช้ตัวระบุของตัวละครที่กำลังใช้งาน (`citizenid`) บนเซิร์ฟเวอร์อื่นใช้ตัวระบุ FiveM ที่คงที่ |
| `qbx_character` | ระบุตัวเลือกให้ใช้ตัวระบุของตัวละคร Qbox (`citizenid`) |
| `license` | ใช้ใบอนุญาต FiveM เป็นตัวระบุบัญชี ตัวละครในบัญชีนั้นใช้รอยสัก XP และพิมพ์เขียวร่วมกัน |

เลือกโหมดก่อนเปิดรีซอร์สให้ผู้เล่นใช้ การเปลี่ยนโหมดภายหลังจะเปลี่ยนอัตลักษณ์ที่ใช้ค้นหาข้อมูล และจะไม่ย้ายข้อมูลระหว่างโหมดให้อัตโนมัติ อย่าเลือก `license` หากต้องการแยกรอยสักของตัวละครแต่ละตัวในบัญชีเดียวกัน

## ข้อความแจ้งการโต้ตอบ

```lua
Config.HelpText.enabled = true
Config.HelpText.provider = 'auto'
Config.HelpText.position = 'left-center'
```

| ฟิลด์ | ค่า หรือผลที่เกิดขึ้น |
| --- | --- |
| `enabled` | แสดงหรือซ่อนข้อความแจ้งการโต้ตอบของร้านที่มี marker |
| `provider` | `auto`, `ox_lib` หรือ `native` ค่า `auto` จะใช้ TextUI หากมี และใช้ข้อความแจ้งแบบ native หากไม่มี |
| `position` | `left-center`, `right-center`, `top-center` หรือ `bottom-center` สำหรับ TextUI |
| `style` | สี เส้นขอบ เงา แบบอักษร และระยะห่างด้านในของ TextUI |

ตัวอย่างการตั้งค่าสไตล์:

```lua
Config.HelpText.style.backgroundColor = '#172328'
Config.HelpText.style.color = '#eef3f3'
Config.HelpText.style.fontSize = '15px'
```

## ร้านค้าเริ่มต้น

`Config.Shops` มีตำแหน่งอยู่หกแห่ง หากต้องการเปลี่ยนรายการเริ่มต้น ให้คงโครงสร้างเดิมไว้:

```lua
{
    label = 'Tattoo Studio',
    coords = vector3(322.62, 180.34, 103.59),
    heading = 156.2,
    drawDistance = 10.0,
    interactDistance = 1.5,
    shopRadius = 4.0,
    marker = {
        type = 1,
        scale = vector3(1.0, 1.0, 1.0),
        color = { r = 255, g = 100, b = 0, a = 100 },
    },
},
```

| ฟิลด์ | การใช้งาน |
| --- | --- |
| `label` | ชื่อร้านค้า |
| `coords`, `heading` | ตำแหน่งและทิศทาง |
| `drawDistance` | ระยะที่จะแสดง marker |
| `interactDistance` | ระยะสำหรับโต้ตอบ |
| `shopRadius` | รัศมีที่อนุญาตให้ดำเนินการของร้านค้า |
| `marker.type`, `scale`, `color` | รูปลักษณ์ของ marker |

กำหนด `interactDistance` ให้อยู่ภายใน `shopRadius` สำหรับร้านที่สร้างไว้แล้ว ให้ใช้ส่วนร้านค้าในแผงผู้ดูแล อย่าคาดหวังว่าการแก้ไฟล์จะสร้างร้านเหล่านั้นใหม่หรือเขียนทับร้านเดิม

## ระดับและ XP

| การตั้งค่าใน `Config.Levels` | ค่าเริ่มต้น | การใช้งาน |
| --- | --- | --- |
| `enabled` | `true` | เปิดใช้ความก้าวหน้า ข้อกำหนด และส่วนลด |
| `maxLevel` | `10` | ระดับสูงสุด |
| `defaultXpPerTattoo` | `10` | XP ที่ได้จากรอยสักซึ่งไม่ได้ระบุ `Xp` |
| `thresholds` | ระดับ 1 ถึง 10 | XP สะสมที่ต้องมีในแต่ละระดับ |
| `formula.base`, `formula.exponent` | `100`, `1.5` | พารามิเตอร์ของสูตรทางเลือกสำหรับคำนวณเกณฑ์ระดับ |
| `zoneRequirements` | `1` สำหรับทุกโซน | ข้อกำหนดของโซนเมื่อไม่มีข้อกำหนดเฉพาะรายการ |
| `discounts` | เปิดใช้ `3` ต่อระดับ สูงสุด `25` | ส่วนลดเป็นเปอร์เซ็นต์ |
| `blueprintSlots` | ค่าเริ่มต้น `5` เพิ่ม `3` | จำนวนช่องพิมพ์เขียวตามระดับ |

เกณฑ์ XP ต้องเริ่มที่ระดับ 1 ด้วย 0 XP ต่อเนื่องกันโดยไม่มีระดับขาด และเพิ่ม XP ที่ต้องใช้:

```lua
Config.Levels.thresholds = {
    { level = 1, xpRequired = 0 },
    { level = 2, xpRequired = 100 },
    { level = 3, xpRequired = 250 },
}
Config.Levels.maxLevel = 3
```

ส่วนลดคำนวณจาก `ระดับ × perLevel` และจำกัดไม่ให้เกิน `maxDiscount` ตามค่าเริ่มต้น ระดับ 5 ได้ส่วนลด 15% และส่วนลดสูงสุดคือ 25%

จำนวนช่องคำนวณจาก `base + (ระดับ - 1) × perLevel` ตามค่าเริ่มต้น ระดับ 1 มี 5 ช่อง และระดับ 5 มี 17 ช่อง

`RequiredLevel` ที่กำหนดเฉพาะรายการในแคตตาล็อกมีลำดับความสำคัญเหนือข้อกำหนดของโซน ดู [ฟิลด์ของแคตตาล็อก](https://docs.cxgstudios.com/docs/th/01-cxg-tattoos/04-catalogo.md)

เมื่อปิดระดับ ระบบจะไม่ใช้ข้อจำกัดตามระดับ XP หรือส่วนลด จำนวนพิมพ์เขียวจะใช้ `Config.Blueprints.maxPerPlayer` แทน การปิดระบบจะเก็บ XP ที่บันทึกไว้ สำหรับการติดตั้งที่เริ่มใช้งานแล้ว ให้อัปเดตสถานะที่มีผลจริงจากแผงควบคุมด้วย

## พิมพ์เขียว

พิมพ์เขียวใช้บันทึกกลุ่มรอยสักและแชร์กันผ่านรหัส ค่าเริ่มต้นของขีดจำกัดอยู่ใน `Config.Blueprints`:

| ฟิลด์ | ค่าเริ่มต้น | การใช้งาน |
| --- | --- | --- |
| `enabled` | `true` | เปิดใช้ระบบ |
| `codePrefix` | `INK` | คำนำหน้ารหัส เช่น `INK-A3X9` |
| `codeLength` | `4` | จำนวนอักขระหลังคำนำหน้า |
| `maxPerPlayer` | `20` | จำนวนช่องที่ใช้เมื่อไม่ได้เปิดความก้าวหน้า |
| `maxTattoosPerBlueprint` | `50` | จำนวนรอยสักสูงสุดต่อกลุ่ม |
| `nameMaxLength` | `60` | ความยาวชื่อสูงสุด |

การแลกรหัสจะเตรียมรอยสักไว้ในขั้นตอนการซื้อ แต่ไม่ได้ทำให้ซื้อได้ฟรี ตั้งค่าระบบเศรษฐกิจใน [การเชื่อมต่อระบบ](https://docs.cxgstudios.com/docs/th/01-cxg-tattoos/05-integraciones.md)

## กล้อง

| ตาราง | ควบคุมอะไร |
| --- | --- |
| `CameraOffsets` | กระดูกเป้าหมาย ระยะ offsets และมุมมองภาพของแต่ละโซน |
| `CameraFraming` | องค์ประกอบภาพโดยรวมและการเลื่อนจุดโฟกัส |
| `CameraFramingBySide` | การตั้งค่าเพิ่มเติมสำหรับมุมมองด้านหน้าและด้านหลัง |
| `CameraManualControls` | การควบคุมด้วยตนเอง ระยะเคลื่อนที่ต่อขั้น การหมุน ซูม และขีดจำกัด |

โซนที่ตั้งค่าไว้คือ `ZONE_HEAD`, `ZONE_TORSO`, `ZONE_LEFT_ARM`, `ZONE_RIGHT_ARM`, `ZONE_LEFT_LEG` และ `ZONE_RIGHT_LEG`

ตัวอย่างการเปลี่ยนค่าเฉพาะจุด:

```lua
Config.CameraOffsets['ZONE_TORSO'].fov = 50.0
Config.CameraFraming.screenOffset = 0.35
Config.CameraManualControls.enabled = true
Config.CameraManualControls.step = 0.035
Config.CameraManualControls.zoomStep = 0.08
```

ค่า `screenOffset` ที่เป็นบวกจะวางตัวละครไว้ทางซ้าย เพื่อเว้นพื้นที่ให้เมนูทางขวา `lookAtOffsetX/Y/Z` เปลี่ยนจุดโฟกัส ส่วน `camOffsetX/Y/Z` ในการตั้งค่าตามด้านจะเปลี่ยนตำแหน่งกล้อง

สำหรับการควบคุมด้วยตนเอง `horizontalDegrees` และ `rotationStepDegrees` ใช้ปรับการหมุน `ranges.y/z`, `radialClamp` และ `maxDistance` ใช้จำกัดการเคลื่อนที่ `zoomCompositionMinBias` ใช้ปรับการจัดกึ่งกลางเมื่อซูมเข้า ปรับทีละค่าและทดสอบทั้งหกโซนกับตัวละครชายและหญิง

## เสื้อผ้าสำหรับการแสดงตัวอย่าง

`Config.PreviewOutfit` ใช้เปิดพื้นที่ที่มีรอยสักให้โล่งขณะที่อินเทอร์เฟซเปิดอยู่:

```lua
Config.PreviewOutfit.enabled = true
Config.PreviewOutfit.useDefaultVariation = false
Config.PreviewOutfit.presets['mp_m_freemode_01'].components[11] = {
    drawable = 15,
    texture = 0,
}
```

preset ที่ให้มาจะแยก `mp_m_freemode_01` และ `mp_f_freemode_01` แต่ละ component ระบุ `drawable` และ `texture`; `clearProps` ใช้ถอดเครื่องประดับระหว่างการแสดงตัวอย่าง ปรับดัชนีให้ตรงกับเสื้อผ้าที่ติดตั้งบนเซิร์ฟเวอร์ หากต้องการใช้เฉพาะ component จาก preset โดยไม่รีเซ็ตรูปลักษณ์ทั้งหมด ให้คง `useDefaultVariation = false` ไว้

## สิทธิ์ ระบบเศรษฐกิจ และ Qbox

อธิบาย `Config.Permissions`, `Config.AdminCommand`, `Config.Purchases` และ `Config.QbxMulticharacterPreview` ไว้ใน [การเชื่อมต่อระบบ](https://docs.cxgstudios.com/docs/th/01-cxg-tattoos/05-integraciones.md) กำหนดชื่อรีซอร์สจริงของคุณหากต่างจากค่าเริ่มต้น

## การวินิจฉัย

`Config.Debug` เปิดการวินิจฉัยทั่วไป `Config.Permissions.debug` ใช้ตรวจสอบการตัดสินใจเรื่องสิทธิ์ ปิดทั้งสองรายการเมื่อเสร็จแล้ว

`Config.DebugCommands.clientTattooCommand` ปิดใช้งานไว้ตามค่าเริ่มต้น เปิดคำสั่งแสดงผลนี้เฉพาะเพื่อทดสอบเท่านั้น: คำสั่งนี้ไม่บันทึกรอยสักและใช้แทนการซื้อไม่ได้

[ไปยังแคตตาล็อก](https://docs.cxgstudios.com/docs/th/01-cxg-tattoos/04-catalogo.md)

