สินค้าหายาก / Limited Edition
สร้างสินค้าที่มีจำนวนจำกัด รถหายาก อาวุธ limited พร้อมระบบจำกัดการซื้อต่อคน
สินค้าหายาก (Limited Edition) คือสินค้าที่มีจำนวนจำกัด ซื้อครบแล้วหมดไปเลย (ไม่เติมกลับ) เหมาะสำหรับรถสปอร์ตหายาก อาวุธพิเศษ หรือไอเทมอีเวนต์
หลักการของสินค้าหายาก
3 องค์ประกอบหลักที่ทำให้สินค้าเป็น "หายาก":
- สต็อกจำกัด —
resetToMax = false(ไม่เติมกลับ) +maxStockต่ำ - จำกัดการซื้อต่อคน —
purchaseLimitกำหนดให้ซื้อได้คนละไม่เกินกี่ชิ้น - ครั้งเดียวตลอดชีวิต —
resetType = "never"(ไม่รีเซ็ตยอดซื้อ)
ตัวอย่าง: รถสปอร์ตหายาก "Jester Black Edition"
สร้างรถที่มีแค่ 5 คันในเซิร์ฟเวอร์ แต่ละคนซื้อได้คันเดียว ขายครบแล้วหายไปตลอด
ขั้นตอนที่ 1: เพิ่มสินค้าใน config_main
{
category = "ยานพาหนะหายาก",
items = {
{
label = "Jester Black Edition",
price = 95000,
pointPrice = 65000,
description = "รถสปอร์ต limited เฉพาะ 5 คันแรกของเซิร์ฟเวอร์",
earnPoints = 500,
type = "car",
spawnName = "jester",
limitId = {
enabled = true,
id = "jester_black_limited", -- ต้องตรงกับ config_limit.lua
},
},
},
},ขั้นตอนที่ 2: ตั้งค่าสต็อกและลิมิตใน config_limit
["jester_black_limited"] = {
name = "Jester Black Edition",
currentStock = 5, -- มีแค่ 5 คัน
maxStock = 5,
resetToMax = false, -- ห้ามเติมกลับ
category = "car",
purchaseLimit = {
enabled = true,
maxPerPlayer = 1, -- คนละ 1 คันเท่านั้น
resetType = "never", -- ไม่รีเซ็ต ซื้อครั้งเดียวตลอดชีวิต
expireAfterSeconds = 0, -- 0 = ไม่หมดอายุ
},
-- ทำให้คันนี้เปิดขายเฉพาะช่วงเวลา (ดูเพิ่มในหน้าขายตามเวลา)
saleSchedule = {
enabled = false, -- true = เปิดขายตามเวลาที่กำหนด
},
}ขั้นตอนที่ 3: ทดสอบ
รีสตาร์ทแล้วทดสอบ:
restart devil_marketใช้คำสั่งแอดมินเพื่อตรวจสถานะสต็อก:
/marketstock jester_black_limitedควรเห็นผลลัพธ์:
ข้อมูลสต็อก: Jester Black Edition
สต็อกปัจจุบัน: 5
สต็อกสูงสุด: 5
หมวดหมู่: carรูปแบบสินค้าหายากยอดนิยม
รถหายาก (จำกัดคัน + จำกัดคน)
["rare_adder"] = {
name = "Adder (Bugatti)",
currentStock = 2, -- มีแค่ 2 คันในเซิร์ฟเวอร์
maxStock = 2,
resetToMax = false,
category = "car",
purchaseLimit = {
enabled = true,
maxPerPlayer = 1,
resetType = "never",
expireAfterSeconds = 0
},
}อาวุธ limited (รีเซ็ตรายสัปดาห์)
["rare_rpg"] = {
name = "RPG Limited Edition",
currentStock = 10,
maxStock = 10,
resetToMax = true, -- เติมกลับทุกสัปดาห์
category = "weapon",
purchaseLimit = {
enabled = true,
maxPerPlayer = 1, -- คนละ 1 ชิ้นต่อสัปดาห์
resetType = "weekly",
expireAfterSeconds = 604800 -- 7 วัน (วินาที)
},
}ไอเทมอีเวนต์ (ขายครั้งเดียว ไม่กลับมา)
["christmas_gift_2026"] = {
name = "Christmas Gift 2026",
currentStock = 100,
maxStock = 100,
resetToMax = false, -- ขายครบแล้วจบ
category = "event",
purchaseLimit = {
enabled = true,
maxPerPlayer = 3, -- คนละไม่เกิน 3 ชิ้น
resetType = "never",
expireAfterSeconds = 0
},
}การจัดการสต็อกหลังขาย
เมื่อสินค้าหายากขายหมดแล้ว คุณสามารถเพิ่มสต็อกได้ด้วยคำสั่งแอดมิน:
# เพิ่มสต็อก 3 คัน (จากเดิม 0 → 3)
/addstock jester_black_limited 3
# รีเซ็ตเป็นค่าสูงสุด (กลับเป็น 5)
/resetstock jester_black_limited
# รีเซ็ตยอดซื้อของผู้เล่นคนเดียว (ให้ซื้อได้ใหม่)
/resetplayer 1 jester_black_limited
# รีเซ็ตยอดซื้อของผู้เล่นทุกคน
/resetallplayers jester_black_limitedระวังการรีเซ็ตยอดซื้อ
resetType = "never" หมายถึงผู้เล่นที่ซื้อแล้วจะซื้อซ้ำไม่ได้ ถ้าใช้ /resetallplayers จะทำให้ทุกคนซื้อได้ใหม่ — ควรใช้เฉพาะกรณีพิเศษ เช่น ยกเลิกธุรกรรมที่ผิดพลาด
เทคนิคเพิ่มเติม
ทำให้รู้สึกหายากจริง ๆ
- ตั้ง
maxStockต่ำจริง ๆ — 5-10 ชิ้น ไม่ใช่ 100 - ใช้
purchaseLimit.maxPerPlayer = 1— กันการกักตุน - ราคาสูง —
priceตั้งสูงกว่าสินค้าทั่วไป 5-10 เท่า - ตั้งชื่อที่บอกถึงความพิเศษ — เช่น "Limited Edition", "First Edition", "[Event]"
ประกาศสต็อกผ่าน Discord
เมื่อสินค้าหายากใกล้หมด อยากแจ้งเตือนใน Discord ดูวิธีตั้งค่า webhook ใน บันทึก Log และใช้ Hook OnOutOfStock ใน ฟังก์ชัน Hook:
Config_Function.OnOutOfStock = function(source, itemname, requestedCount)
-- ส่ง webhook แจ้งว่าสินค้าหายากหมดแล้ว
local discord = require('discord-webhook')
discord.send('WEBHOOK_URL', {
title = 'สินค้าหายากหมดสต็อก!',
description = itemname .. ' ถูกซื้อครบทั้งหมดแล้ว',
color = 16711680
})
end