เอกสาร

X3D Inventory (กระเป๋า)

กระเป๋าไอเทม ESX ฟรี ตัวหนังสือไทยใหญ่ ช่องลัด 1–9 บันทึกกับตัวละคร ความจุขยายด้วยคูปอง ต่อตู้เซฟ/ท้ายรถได้ทุกสคริปต์

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

การติดตั้ง

ต้องมี es_extended (ESX Legacy) และ oxmysql · ไม่บังคับ: esx_notify

  1. แตกไฟล์ วางโฟลเดอร์ x3d_inventory ใน resources/ (ห้ามเปลี่ยนชื่อโฟลเดอร์ — รูปไอเทมและ export อ้างชื่อนี้)
  2. รัน install.sql บนฐานข้อมูล ESX — สร้างตารางช่องลัด และเพิ่มไอเทมตัวอย่าง (ไม่ทับไอเทมที่มีอยู่แล้ว)
  3. เพิ่มใน server.cfg ต่อจาก es_extended:
ensure x3d_inventory
  1. ปิดสคริปต์กระเป๋าตัวเดิมของเซิร์ฟเวอร์ให้เหลือตัวเดียว

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

ปุ่ม / คำสั่ง ทำอะไร
T เปิด/ปิดกระเป๋า (Config.OpenKey) — ผู้เล่นเปลี่ยนเองได้ในเมนูปุ่มลัด FiveM
1–9 ใช้ไอเทมในช่องลัด
ดับเบิลคลิก / คลิกขวา ใช้ไอเทม / เมนูไอเทม
/closebag ปิดกระเป๋าเผื่อหน้าจอค้าง (Config.CloseCommand)
/x3dinv <id> แอดมินค้นกระเป๋าผู้เล่นอื่น (Config.AdminSearchCommand, กลุ่มใน Config.SearchGroups)

ไฟล์ตั้งค่า

ไฟล์ เรื่อง
config.lua ภาษา, ปุ่ม/คำสั่ง, เปิด-ปิดระบบ (ความทนทาน, น้ำหนัก, จำนวนช่อง, จำกัดกอง), การส่ง/ทิ้ง/ค้น, เงิน, ช่องลัด, คูลดาวน์
config/catalog.lua ไอเทม: ความหายาก, จำนวนต่อช่อง, กฎใช้/ทิ้ง/มอบ, คำอธิบาย
config/weapons.lua ชื่ออาวุธภาษาไทย, ความหายาก/น้ำหนักอาวุธ, ท่าหยิบ-เก็บ
config/capacity.lua ช่อง/น้ำหนักเริ่มต้น, คูปองขยาย, Value Pack
config/heldobjects.lua วัตถุในมือตอน ส่ง/รับ/เก็บ/ทิ้ง
addons/hooks/*.lua ต่อกับสคริปต์อื่น (ปุ่มขาย, ปุ่มคู่มือ, กุญแจรถ)

เพิ่มไอเทมของเซิร์ฟเวอร์

  1. เพิ่มไอเทมในตาราง items ของ ESX
  2. วางรูป PNG ชื่อเดียวกับไอเทม (ตัวพิมพ์เล็ก) ที่ web/build/img/items/<ชื่อไอเทม>.png แนะนำ 92×92 พื้นใส
  3. (ไม่บังคับ) ใส่ความหายากและคำอธิบายใน config/catalog.lua:
Config.ItemRarity = { ['my_item'] = 2 }
Config.Descriptions = { item = { ['my_item'] = { th = 'ไอเทมของฉัน', en = 'My item' } } }

ตู้เซฟ / ท้ายรถ / คลังของสคริปต์อื่น

สคริปต์คลังเรียก 3 export ฝั่ง client แล้วกระเป๋าจะยิงอีเวนต์ฝั่งเซิร์ฟเวอร์ที่ตั้งชื่อไว้ตอนลากของเข้า/ออก/ปิด การเก็บข้อมูลและตรวจสิทธิ์เป็นหน้าที่ของสคริปต์คลัง:

exports.x3d_inventory:SetCurrentVaultData({
    events = { store = 'myvault:store', take = 'myvault:take', close = 'myvault:close' },
    args = { vaultId },
})
exports.x3d_inventory:UpdateStorageData({ inventory = items, label = 'ตู้เซฟ', weight = 10, maxWeight = 100 })
exports.x3d_inventory:OpenStorage()

ฝั่งเซิร์ฟเวอร์ได้รับ (...args, { name, label, count, weight }) · ไม่ใส่ events = กระเป๋าไม่ยอมให้ลาก (ของไม่หาย)

ความทนทานจากสคริปต์อื่น

exports.x3d_inventory:RegisterDurabilityProvider('pickaxe', function(proxy, raw)
    return { dur = 70, max = 100 }   -- หรือคืนเลข 0–100
end)

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

เปิด X3D Weapon Skins ไว้ กระเป๋าจะรองรับสกินเองโดยไม่ต้องตั้งค่า (อ่าน GlobalState.x3dWeaponSkins ไม่ผูก dependency):

  • คลิกขวาที่ปืนมีเมนู "เปลี่ยนสกิน" และมีปุ่ม "สกิน" ที่หัวกระเป๋า
  • ช่องปืนขึ้นป้ายสกิน tooltip บอกว่าเป็นสกินของปืนอะไร ดาเมจเท่าไหร่
  • เปลี่ยนสกินแล้วปืนยังอยู่ในมือ ช่องลัดตามไปด้วย

ฝั่ง X3D Weapon Skins ตั้ง Config.ImagePath เป็น nui://x3d_inventory/web/build/img/items/%s.png และ Hooks.CanCarry ให้เรียก exports.x3d_inventory:CanCarryItemSrc

Exports

ฝั่ง client: OpenInventory CloseInventory IsInventoryOpen OpenStorage CloseStorage SetCurrentVaultData UpdateStorageData HideQuickSlots ShowQuickSlots Notify

ฝั่ง server: GetPlayerInventory CanCarryItem GetFreeSlots CheckItemFit GetCapacity AddSlots AddWeight GrantValuePack HasValuePack RegisterDurabilityProvider

ดูหน้าสินค้า