X3D Inventory (กระเป๋า)
กระเป๋าไอเทม ESX ฟรี ตัวหนังสือไทยใหญ่ ช่องลัด 1–9 บันทึกกับตัวละคร ความจุขยายด้วยคูปอง ต่อตู้เซฟ/ท้ายรถได้ทุกสคริปต์
ซื้อ / รับฟรีตั้งค่า configการติดตั้ง
ต้องมี es_extended (ESX Legacy) และ oxmysql · ไม่บังคับ: esx_notify
- แตกไฟล์ วางโฟลเดอร์
x3d_inventoryในresources/(ห้ามเปลี่ยนชื่อโฟลเดอร์ — รูปไอเทมและ export อ้างชื่อนี้) - รัน
install.sqlบนฐานข้อมูล ESX — สร้างตารางช่องลัด และเพิ่มไอเทมตัวอย่าง (ไม่ทับไอเทมที่มีอยู่แล้ว) - เพิ่มใน
server.cfgต่อจากes_extended:
ensure x3d_inventory
- ปิดสคริปต์กระเป๋าตัวเดิมของเซิร์ฟเวอร์ให้เหลือตัวเดียว
ปุ่มและคำสั่ง
| ปุ่ม / คำสั่ง | ทำอะไร |
|---|---|
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 |
ต่อกับสคริปต์อื่น (ปุ่มขาย, ปุ่มคู่มือ, กุญแจรถ) |
เพิ่มไอเทมของเซิร์ฟเวอร์
- เพิ่มไอเทมในตาราง
itemsของ ESX - วางรูป PNG ชื่อเดียวกับไอเทม (ตัวพิมพ์เล็ก) ที่
web/build/img/items/<ชื่อไอเทม>.pngแนะนำ 92×92 พื้นใส - (ไม่บังคับ) ใส่ความหายากและคำอธิบายใน
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