เอกสาร

X3D Weapon Skins (สกินอาวุธ)

สกินอาวุธแบบสะสม ESX ฟรี สกินเป็นอาวุธ add-on ผูกกับปืนหลัก ใช้ไอเทมปลดล็อกเข้าคลัง ใส่/ถอดได้ ดาเมจเท่าเดิม แปลงกลับเป็นไอเทมไปเทรดได้ มีเอฟเฟกต์ตอนถือ

ซื้อ / รับฟรีตั้งค่า config

การติดตั้ง

  1. วาง x3d_weaponskins ลง resources/ แล้วรัน install.sql (สร้างตาราง x3d_weaponskins)
  2. เพิ่ม ensure x3d_weaponskins หลัง es_extended (และหลังกระเป๋า)
  3. ใส่สกินของเซิร์ฟ (ด้านล่าง) แล้วรีสตาร์ทเซิร์ฟเวอร์ ผู้เล่นเข้าเกมใหม่ 1 ครั้งเพื่อโหลดโมเดลอาวุธใหม่

ปุ่มและคำสั่ง

/skins เปิดคลังสกิน (Config.Command ว่าง = ปิด)
Config.Key ปุ่มลัดเริ่มต้นของคำสั่งเดียวกัน (ผู้เล่นเปลี่ยนได้)
Config.OpenItem ไอเทมที่ใช้แล้วเปิดคลังสกิน (ไอเทมไม่หาย) ใช้กับกระเป๋าที่รองรับ usable item ของ ESX ได้ทุกตัว (NC, ox, qs…)
Config.Radial true = มีเมนู "สกินอาวุธ" ใน radial menu ของ ox_lib
ไอเทมสกิน ใช้จากกระเป๋า แล้วปลดล็อกสกินและขึ้นการ์ดรางวัล

ตั้งค่า (config.lua)

ตัวเลือก ทำอะไร
Config.Locale th หรือ en
Config.ImagePath ที่อยู่รูปสกิน %s = ชื่ออาวุธตัวเล็ก · ใช้กับ X3D Inventory: nui://x3d_inventory/web/build/img/items/%s.png
Config.WeaponNames ชื่ออาวุธหลัก (ไม่ใส่ = ชื่อจาก ESX)
Config.SweepIntervalMs ทุกกี่ ms เปลี่ยนสกินที่ไม่ได้ปลดล็อกกลับเป็นอาวุธปกติ (0 = ตอนเข้าเกมเท่านั้น)
Config.CloseEvents / Config.RestartLockState ปิดหน้าจอเมื่อมี event ของเซิร์ฟ / ห้ามทำรายการช่วงล็อกรีสตาร์ท

สกิน (config/skins.lua คีย์ = ชื่ออาวุธ ESX ตัวพิมพ์ใหญ่)

สกินแต่ละตัวคืออาวุธ add-on (ไม่ใช่ replace) ที่ผูกกับอาวุธหลักผ่าน base ปืนเดิมไม่ถูกทับ สคริปต์ไม่ได้แถมโมเดล ต้องสตรีมโมเดลอาวุธ add-on เอง

ค่า ทำอะไร
base อาวุธหลัก ดาเมจ น้ำหนัก กระสุน มาจากตัวนี้
item ไอเทมที่ใช้ปลดล็อก
label { th = ..., en = ... }
rarity 0-5 สีกรอบ
tradable false = ใช้แล้วผูกถาวร
vfx เอฟเฟกต์ตอนถือ (ไม่ใส่ = ไม่มี): dict, name, color, scale, alpha, viewDistance, points

config/skins.lua มีรายการตัวอย่าง WEAPON_GOLDPOOLCUE (ไม้คิวทองคำ) เปิดไว้ 1 รายการ ใช้เป็นแม่แบบ ถ้าเซิร์ฟยังไม่มีโมเดลและไอเทมนี้ ให้ลบหรือคอมเมนต์รายการนี้ออก

เพิ่มสกินใหม่: สตรีมโมเดลอาวุธ add-on เอง (weapons.meta ฯลฯ) เพิ่มชื่ออาวุธใน es_extended Config.Weapons (ใส่ components/tints ให้เหมือนอาวุธหลัก ไม่งั้นอาวุธที่ติดอุปกรณ์เสริมจะใส่สกินไม่ได้) เพิ่มไอเทมในตาราง items วางรูป weapon_<ชื่อ>.png ตามที่ Config.ImagePath ชี้ เพิ่มแถวใน config/skins.lua แล้วรีสตาร์ทเซิร์ฟเวอร์

เปิดจากเมนูของคุณเอง

เมนูไหนก็เปิดหน้าคลังได้ (F-menu, esx_context, ox_lib context, radial):

exports.x3d_weaponskins:Open()                  -- อาวุธทั้งหมด
exports.x3d_weaponskins:Open('WEAPON_POOLCUE')  -- เปิดตรงไปที่อาวุธนั้น
-- หรือ: TriggerEvent('x3d_weaponskins:open')

ตัวอย่าง ox_lib context:

{ title = 'สกินอาวุธ', icon = 'gun', onSelect = function() exports.x3d_weaponskins:Open() end }

จุดต่อ (addons/hooks/)

Hooks.BeforeFocus() (client) ทำงานก่อนหน้าคลังหรือการ์ดปลดล็อกจะเอาเมาส์ ปิดกระเป๋าหรือเมนูของคุณที่นี่ (X3D Inventory ปิดตัวเองให้แล้ว) เช่น TriggerEvent('your_inventory:close')

ฝั่งเซิร์ฟเวอร์: Hooks.CanCarry(xPlayer, item, count) กระเป๋ารับไอเทมสกินคืนได้ไหม ค่าเริ่มต้นใช้ ESX canCarryItem · ใช้กับ X3D Inventory: return exports.x3d_inventory:CanCarryItemSrc(xPlayer.source, item, count)

สำหรับสคริปต์อื่น

  • GlobalState.x3dWeaponBase = { [สกิน] = อาวุธหลัก } ใช้นับสกินเป็นอาวุธหลัก (X3D Damage ใช้ให้อัตโนมัติ)
  • GlobalState.x3dWeaponSkins = { [สกิน] = { base, label, rarity } } ให้กระเป๋าแสดงสกิน
  • event ฝั่ง client: TriggerEvent('x3d_weaponskins:open', base) เปิดหน้าจอ · x3d_weaponskins:focus ยิงก่อนเอาโฟกัส (ปิดหน้าจอของคุณ) · x3d_weaponskins:swapped (from, to) หลังเปลี่ยนสกิน
  • export ฝั่ง client: exports.x3d_weaponskins:Open(base)
ดูหน้าสินค้า