X3D Weapon Skins (สกินอาวุธ)
สกินอาวุธแบบสะสม ESX ฟรี สกินเป็นอาวุธ add-on ผูกกับปืนหลัก ใช้ไอเทมปลดล็อกเข้าคลัง ใส่/ถอดได้ ดาเมจเท่าเดิม แปลงกลับเป็นไอเทมไปเทรดได้ มีเอฟเฟกต์ตอนถือ
ซื้อ / รับฟรีตั้งค่า configการติดตั้ง
- วาง
x3d_weaponskinsลงresources/แล้วรันinstall.sql(สร้างตารางx3d_weaponskins) - เพิ่ม
ensure x3d_weaponskinsหลังes_extended(และหลังกระเป๋า) - ใส่สกินของเซิร์ฟ (ด้านล่าง) แล้วรีสตาร์ทเซิร์ฟเวอร์ ผู้เล่นเข้าเกมใหม่ 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)