คู่มือ Pulse Phone
อินเวนทอรี
4. ไอเทมและอินเวนทอรี
ไอเทมจำเป็นเฉพาะบนเซิร์ฟเวอร์ที่ใช้เฟรมเวิร์ก ไฟล์อยู่ใน config/items/ และรูปภาพอยู่ใน config/items/images/
สิ่งที่โทรศัพท์ทำเอง ตอนเริ่ม มันจะคำนวณว่าฟีเจอร์ที่คุณเปิดไว้ต้องใช้ไอเทมอะไร (ตารางด้านล่าง) แล้ว:
| อินเวนทอรีของคุณ | สิ่งที่เกิดขึ้น |
|---|---|
| ESX กับอินเวนทอรีเริ่มต้น | ไอเทมที่ขาดจะถูกเพิ่มลงในตาราง items ของ ESX แถวที่มีอยู่แล้วจะไม่ถูกเปลี่ยน คอนโซลจะแสดงหนึ่งบรรทัดระบุสิ่งที่เพิ่ม บน ESX รุ่นเก่าที่โหลดไอเทมใหม่ไม่ได้ ให้รีสตาร์ทเซิร์ฟเวอร์หนึ่งครั้ง config/items/esx.sql มีไว้สำหรับเพิ่มด้วยมือเท่านั้น |
| QBCore กับ qb-inventory (รวม ps-, lj-inventory) | ไอเทมที่ขาดจะถูกเพิ่มลงใน shared items ของ QBCore ขณะเซิร์ฟเวอร์ทำงาน ไอเทมที่ qb-core มีอยู่แล้ว เช่น phone ของมันเอง จะถูกปล่อยไว้ตามเดิม คอนโซลจะแสดงหนึ่งบรรทัดระบุสิ่งที่เพิ่ม |
| ox_inventory (ESX, Qbox, ox_core) | ox_inventory อ่านไอเทมจากไฟล์ของตัวเองเท่านั้น การตรวจสอบตอนเริ่มจะแสดงเฉพาะไอเทมที่ขาด และพิมพ์รายการไว้ใต้กล่อง พร้อมวางลงใน ox_inventory/data/items.lua |
| อินเวนทอรีอื่นๆ | การตรวจสอบตอนเริ่มจะระบุชื่อไอเทมที่ขาด ให้เพิ่มตามวิธีที่อินเวนทอรีนั้นใช้เพิ่มไอเทม (ตารางใต้ "สิ่งที่ต้องทำสำหรับอินเวนทอรีของคุณ") |
สำคัญ
รูปภาพไม่เคยถูกคัดลอกให้ การตรวจสอบตอนเริ่มจะระบุรูปที่ขาดแต่ละรูปและโฟลเดอร์ที่ต้องใส่ เช่น copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images
การตรวจสอบตอนเริ่มมีบรรทัด Items หนึ่งบรรทัด: [OK] เมื่อมีไอเทมครบ หรือ [FAIL] พร้อมชื่อที่ขาดและวิธีแก้อยู่ด้านล่าง phone:health จะแสดงอีกครั้งหลังคุณแก้ไข
| ไอเทม | ต้องใช้เมื่อ |
|---|---|
phone |
เฉพาะเมื่อ Config.Item.required = true (ผู้เล่นต้องพกโทรศัพท์) หรือใช้โทรศัพท์แบบไม่ซ้ำกัน |
pulse_phone_box |
ร้านขายโทรศัพท์ในกล่องปิดผนึก เปิดไว้เป็นค่าเริ่มต้น (Config.Store.box) |
pulse_magpack, pulse_magpack_max, pulse_cable |
อุปกรณ์ชาร์จ เปิดไว้เป็นค่าเริ่มต้น (Config.Charging) |
pulse_router |
Pulse Home Wi-Fi เราเตอร์ที่ผู้เล่นวางที่บ้าน เปิดไว้เป็นค่าเริ่มต้น (config/apps.lua) |
pulse_burner |
Pulse Burner โทรศัพท์เติมเงินที่มีเบอร์ของตัวเอง เปิดไว้เป็นค่าเริ่มต้น (config/apps.lua) |
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector |
อุปกรณ์ป้องกันโทรศัพท์: เคส ซองกันน้ำ และฟิล์มกันรอย เปิดไว้เป็นค่าเริ่มต้น (config/apps.lua) |
pulse_buds, pulse_ringlight, pulse_wallet |
Pulse Buds, Pulse Ring Light และ Pulse Card Wallet เปิดไว้เป็นค่าเริ่มต้น (config/apps.lua) |
powerbank |
ไม่บังคับ ไอเทมพาวเวอร์แบงก์แบบเก่า ทำงานเหมือน Reserve |
pulse_phone_box_<finish> |
เฉพาะเมื่อ Config.Store.boxPerFinish = true |
radio (หรือชื่อใดก็ได้) |
เฉพาะเมื่อคุณตั้ง Config.Radio.item (หัวข้อที่ 5, Radio) ox_inventory และ qb-core มีไอเทม radio อยู่แล้ว |
ถ้าขาดไอเทม โทรศัพท์ก็ยังเริ่มทำงาน ร้านจะปิดการขายแบบกล่องหรือเอาไอเทมนั้นออกจากการขาย และคอนโซลจะระบุชื่อไอเทมที่ต้องเพิ่ม
Reserve ซ้อนกันได้ แพ็กที่เต็มไม่มี metadata จึงใช้ช่องเดียวกันได้สูงสุด 20 ชิ้น แพ็กที่ถอดออกระหว่างใช้งานจะกลายเป็นไอเทมแยกที่เก็บประจุไว้ใน metadata (บน ox_inventory, qb-inventory และ qs-inventory) จึงต้องมีช่องว่าง ถ้าไม่มี metadata ของไอเทม (standalone, อินเวนทอรีเริ่มต้นของ ESX) จะติดตามเฉพาะแพ็กที่ใช้อยู่ หนึ่งชิ้นต่อตัวละครต่อขนาด
เมื่อ Config.Item.required = true (หรือโทรศัพท์แบบไม่ซ้ำกัน) เซิร์ฟเวอร์จะตรวจไอเทมโทรศัพท์ผ่านอินเวนทอรีของคุณ และปฏิเสธคำขอจากผู้เล่นที่ไม่มีไอเทม การทำไอเทมหายจะตัดสายของผู้เล่นนั้น รวมถึงสายฉุกเฉิน และปิดโทรศัพท์
การให้กล่องปิดผนึกแก่คนอื่น บน ox_inventory, qb-inventory และ qs-inventory ตัวไอเทมกล่องจะเก็บรุ่นและฟินิชที่ซื้อไว้ ดังนั้นใครที่เปิดกล่องจะได้โทรศัพท์นั้น บนอินเวนทอรีอื่นทั้งหมด กล่องเป็นไอเทมธรรมดา และรุ่นกับฟินิชจะอยู่ในบันทึกการซื้อของผู้ซื้อเอง: กล่องที่ให้คนอื่นไปจะเปิดออกมาเป็นการซื้อครั้งถัดไปของเจ้าของใหม่ หรือเป็นรุ่นและฟินิชเริ่มต้น เมื่อตั้ง Config.Store.boxPerFinish = true ชื่อไอเทมกล่องจะเก็บฟินิชไว้ แต่ไม่เก็บรุ่น
ข้อความที่ต้องวาง สำหรับอินเวนทอรีของคุณ
คุณไม่ต้องคิดรายการไอเทมเองเลย เมื่อมีไอเทมขาด การตรวจสอบตอนเริ่มจะพิมพ์ข้อความที่ตรงกับอินเวนทอรีของคุณไว้ใต้กล่อง และ Settings > Server > Health Check จะแสดงข้อความเดียวกันพร้อมปุ่ม Copy วาง แล้วรีสตาร์ทอินเวนทอรีและโทรศัพท์ จากนั้นรัน phone:health อีกครั้ง
| อินเวนทอรีของคุณ | สิ่งที่แสดง | ต้องใส่ที่ไหน |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core, ND Core) | รายการแบบ ox_inventory | ox_inventory/data/items.lua ภายในตารางของมัน |
| QBCore (qb-, ps-, lj-inventory) | รายการแบบ QBCore (เฉพาะเมื่อโทรศัพท์เพิ่มเองไม่ได้) | qb-core/shared/items.lua |
| qs-inventory | รายการรูปแบบ QBCore | รายการไอเทมของ qs-inventory |
| อินเวนทอรีเริ่มต้นของ ESX | SQL หนึ่งบรรทัด (เฉพาะเมื่อโทรศัพท์เพิ่มเองไม่ได้) | เครื่องมือฐานข้อมูลของคุณ แล้วรีสตาร์ท |
| TMC | รายการแบบ TMC สำหรับทุกไอเทมที่โทรศัพท์ต้องใช้ (ถาม TMC ไม่ได้ว่ามีตัวไหนอยู่แล้ว) | รายการไอเทมของ TMC (ไฟล์ที่มี sim_card) โดยเก็บตัวที่คุณมีอยู่แล้วไว้ |
| อินเวนทอรีอื่นๆ | รายการรูปแบบ QBCore ซึ่งเป็นรูปแบบที่อินเวนทอรีส่วนใหญ่อ่านได้ | รายการไอเทมของอินเวนทอรีนั้น |
หน้าตาของแต่ละแบบ สำหรับ Reserve:
-- ox_inventory/data/items.lua
['pulse_magpack'] = { label = "Pulse Reserve", weight = 110, stack = true, close = true, consume = 0, description = "Magnetic battery pack. Fills 70% of a phone.", client = { export = "phone.usePack", image = "pulse_magpack.png" } },
-- qb-core/shared/items.lua, qs-inventory and similar
['pulse_magpack'] = { name = "pulse_magpack", label = "Pulse Reserve", weight = 110, type = 'item', image = "pulse_magpack.png", unique = false, useable = true, shouldClose = true, description = "Magnetic battery pack. Fills 70% of a phone." },
-- TMC
['pulse_magpack'] = { ['label'] = "Pulse Reserve", ['weight'] = 110, ['type'] = 'item', ['image'] = "pulse_magpack.png", ['unique'] = false, ['stackable'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = "Magnetic battery pack. Fills 70% of a phone." },-- ESX default inventory
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('pulse_magpack', 'Pulse Reserve', 1, 0, 1);ไอเทม phone ของ ox_inventory เอง ox_inventory มาพร้อมรายการ phone ที่ทำมาสำหรับสคริปต์โทรศัพท์อื่น คุณไม่ต้องเปลี่ยน: การใช้ไอเทมนี้จะเปิด Pulse Phone การตรวจสอบตอนเริ่มมีบรรทัด Phone item ที่บอกว่ารายการของคุณเชื่อมไว้อย่างไร จะแสดงรายการแทนที่ก็ต่อเมื่อมันระบุ export ของสคริปต์อื่น ([WARN] หรือ [FAIL] เมื่อบังคับใช้ไอเทมหรือใช้โทรศัพท์แบบไม่ซ้ำกัน) ถ้าสคริปต์โทรศัพท์ที่รายการนั้นทำมาให้ยังทำงานอยู่ ไอเทมจะเปิดตัวนั้นแทน: บรรทัด Phone item จะระบุชื่อ ให้ลบมันออกจาก server.cfg
สิ่งที่ต้องทำสำหรับอินเวนทอรีของคุณ
| อินเวนทอรี | ไอเทมต้องใส่ที่ไหน | รูปภาพต้องใส่ที่ไหน |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core) | วางรายการที่การตรวจสอบตอนเริ่มแสดง (หรือทั้งไฟล์ ox_inventory.lua) ลงใน ox_inventory/data/items.lua ภายในตารางของมัน เก็บรายการ ['phone'] ของ ox_inventory เองไว้ (มันเปิด Pulse Phone) แทนที่ด้วยตัวที่แสดงเฉพาะเมื่อบรรทัด Phone item บอกว่ามันเปิดสคริปต์อื่น |
ox_inventory/web/images/ |
| qb-inventory | ไม่ต้องทำอะไร: เพิ่มให้ตอนเริ่ม ถ้าอยากเพิ่มด้วยมือแทน ให้วาง qb-core.lua ลงใน qb-core/shared/items.lua |
qb-inventory/html/images/ |
| ps-inventory, lj-inventory | ไม่ต้องทำอะไร: เพิ่มให้ตอนเริ่ม เหมือน qb-inventory | โฟลเดอร์รูปภาพของอินเวนทอรีคุณ |
| qs-inventory | วาง qb-core.lua ลงใน qb-core/shared/items.lua หรือลงในรายการไอเทมของ qs-inventory เอง |
โฟลเดอร์รูปภาพของอินเวนทอรีคุณ |
| codem-inventory, core_inventory, tgiann-inventory, origen_inventory | เพิ่มไอเทมลงในรายการไอเทมแบบเดียวกับที่คุณเพิ่มไอเทมทั่วไป โดยใช้ชื่อ ชื่อแสดง และน้ำหนักจาก qb-core.lua (phone, powerbank, pulse_magpack, pulse_magpack_max, pulse_cable, pulse_router, pulse_burner, pulse_buds, pulse_ringlight, pulse_wallet, pulse_phone_box) ใช้ pulse_magpack.png สำหรับ powerbank และ pulse_magpack_max ด้วย |
โฟลเดอร์รูปภาพของอินเวนทอรีคุณ |
| ak47_inventory | เพิ่มไอเทม พร้อมบรรทัด onUse ด้านล่าง |
โฟลเดอร์รูปภาพของอินเวนทอรีคุณ |
| อินเวนทอรีเริ่มต้นของ ESX | ไม่ต้องทำอะไร: เพิ่มให้ตอนเริ่ม esx.sql คือวิธีเพิ่มด้วยมือ |
ไม่ต้องใช้ |
| vRP 2 | ดูหัวข้อ vRP ด้านบน | |
| Standalone | ไม่ต้องทำอะไร |
สำหรับอินเวนทอรีอื่นในตารางนี้ โทรศัพท์จะทำให้ไอเทมใช้งานได้เอง ox_inventory ใช้บรรทัด client = { export = 'phone....' } ที่มีอยู่แล้วในไฟล์ของมัน
ox_inventory: ถ้าคุณเคยใช้โทรศัพท์ตัวอื่นมาก่อน ให้ลบ hook Item('phone', ...) ของมันออกจาก ox_inventory/modules/items/client.lua ด้วย
ak47_inventory เก็บการใช้งานไอเทมไว้ในรายการของแต่ละไอเทม ให้เพิ่มรายการเหล่านี้:
-- powerbank
server = { onUse = function(source) exports.phone:UsePowerbank(source) end },
-- pulse_magpack and pulse_magpack_max
server = { onUse = function(source, item) exports.phone:UseMagPack(source, item and item.slot, item and item.name) end },
-- pulse_cable
server = { onUse = function(source) exports.phone:UseChargingCable(source) end },
-- pulse_phone_box
server = { onUse = function(source, item) exports.phone:UseBox(source, item and item.slot) end },
-- pulse_router
server = { onUse = function(source) exports.phone:UseRouter(source) end },
-- pulse_burner
server = { onUse = function(source, item) exports.phone:UseBurner(source, item and item.slot) end },
-- pulse_case, pulse_case_clear, pulse_pouch, pulse_protector
server = { onUse = function(source, item) exports.phone:FitPhoneProtection(source, item and item.name) end },
-- pulse_buds
server = { onUse = function(source) exports.phone:UseBuds(source) end },
-- pulse_ringlight
server = { onUse = function(source) exports.phone:UseRingLight(source) end },
-- pulse_wallet
server = { onUse = function(source) exports.phone:UseCardWallet(source) end },โทรศัพท์แบบไม่ซ้ำกัน (Config.Item.unique = true) เก็บเบอร์โทรไว้บนไอเทม ดังนั้นการส่งต่อไอเทมคือการส่งต่อโทรศัพท์ ต้องใช้ ox_inventory, qb-inventory, qs-inventory, core_inventory หรือ codem-inventory