ขายตามเวลา / อีเวนต์
เปิดขายสินค้าตามช่วงเวลา เทศกาล หรืออีเวนต์ พร้อมระบบ Dynamic Stock เพิ่มสต็อกอัตโนมัติ
ระบบ saleSchedule และ Dynamic Stock ช่วยให้คุณเปิดขายสินค้าตามเวลาที่กำหนด เช่น เปิดขายเฉพาะกลางคืน ช่วงเทศกาล หรือเพิ่มสต็อกอัตโนมัติเมื่อมีผู้เล่นเยอะ
สถานการณ์ที่ใช้บ่อย
| สถานการณ์ | วิธีทำ | เหมาะกับ |
|---|---|---|
| เปิดขายเฉพาะกลางคืน | saleSchedule | ร้านค้าที่อยากให้มี "เวลาเปิด-ปิด" |
| สินค้าเทศกาล (Halloween, ปีใหม่) | saleSchedule.saleEndDate | ไอเทมอีเวนต์ที่หายไปหลังวันหมดอายุ |
| เพิ่มสต็อกตอนคนเยอะ | dynamic (player_count) | เซิร์ฟเวอร์ที่มี peak time |
| โบนัสตอนกลางคืน | dynamic (time_based) | โปรโมชั่นช่วงค่ำ |
สถานการณ์ที่ 1: เปิดขายเฉพาะกลางคืน
สมมติต้องการให้ร้าน "ตลาดมืด" เปิดขายเฉพาะ 20:00 - 02:00 ทุกคืน
["black_market_item"] = {
name = "Black Market Item",
currentStock = 50,
maxStock = 50,
resetToMax = true,
category = "item",
saleSchedule = {
enabled = true,
startTime = "20:00", -- เปิดขาย 8 โมงเย็น
endTime = "02:00", -- ปิด 2 ทุ่ม (รองรับข้ามเที่ยงคืน)
restockTime = "20:00", -- เติมสต็อกตอนเปิด
restockDay = "daily",
},
}นอกเวลาที่กำหนด สินค้าจะแสดงว่า "ปิดขายชั่วคราว" และซื้อไม่ได้
สถานการณ์ที่ 2: สินค้าเทศกาล
สินค้า Halloween ที่ขายตั้งแต่ 25 ต.ค. ถึง 1 พ.ย. แล้วหายไปตลอด
["halloween_pumpkin_2026"] = {
name = "Pumpkin Hat (Halloween 2026)",
currentStock = 200,
maxStock = 200,
resetToMax = false, -- ขายครบแล้วจบ
category = "event",
saleSchedule = {
enabled = true,
startTime = "00:00",
endTime = "23:59",
restockDay = "never",
saleEndDate = {
enabled = true,
date = "2026-11-01", -- ปิดขายถาวรวันที่ 1 พ.ย.
showCountdown = true, -- แสดงนับถอยหลังใน UI
}
},
purchaseLimit = {
enabled = true,
maxPerPlayer = 2, -- คนละไม่เกิน 2 ชิ้น
resetType = "never",
expireAfterSeconds = 0
},
}showCountdown
เมื่อเปิด showCountdown = true UI จะแสดงนับถอยหลังวันที่สินค้าจะหายไป สร้างความเร่งด่วนให้ผู้เล่นรีบซื้อ
สถานการณ์ที่ 3: เพิ่มสต็อกตอนผู้เล่นเยอะ (Dynamic Stock)
ระบบ Dynamic Stock เพิ่มสต็อกอัตโนมัติเมื่อตรงเงื่อนไข เช่น ถ้ามีผู้เล่น 30 คนขึ้นไป จะเพิ่มสต็อกเพื่อให้ทุกคนมีโอกาสซื้อ
["popular_item"] = {
name = "Popular Item",
currentStock = 20,
maxStock = 20,
resetToMax = true,
category = "item",
dynamic = {
enabled = true,
conditions = {
{
type = "player_count", -- เพิ่มตามจำนวนผู้เล่น
min_players = 30, -- ถ้ามี 30 คนขึ้นไป
bonus_stock = 15 -- เพิ่มสต็อก 15 ชิ้น
},
{
type = "player_count",
min_players = 50, -- ถ้ามี 50 คนขึ้นไป
bonus_stock = 30 -- เพิ่มอีก 30 (รวมเป็น 45)
}
}
}
}วิธีคำนวณ: bonus_stock ของทุกเงื่อนไขที่ตรงจะรวมกัน ถ้ามี 50 คน จะได้ 15 + 30 = 45 ชิ้นเพิ่ม
สถานการณ์ที่ 4: โบนัสตอนกลางคืน
เพิ่มสต็อกสินค้ายอดนิยมในช่วง peak time (18:00 - 22:00) เพื่อให้ผู้เล่นหลังเลิกงานมีของซื้อ
["dinner_special"] = {
name = "Dinner Special Menu",
currentStock = 30,
maxStock = 30,
resetToMax = true,
category = "item",
dynamic = {
enabled = true,
conditions = {
{
type = "time_based", -- เพิ่มตามเวลา
start_time = "18:00",
end_time = "22:00",
bonus_stock = 50 -- เพิ่ม 50 ชิ้นในช่วง 18-22 โมง
}
}
}
}รูปแบบเวลาทั้งหมด
ระบบใช้รูปแบบเวลา 24 ชั่วโมง (HH:MM):
| รูปแบบ | ตัวอย่าง | หมายถึง |
|---|---|---|
08:00 | 08:00 | 8 โมงเช้า |
12:00 | 12:00 | เที่ยง |
18:30 | 18:30 | 6 โมงครึ่งเย็น |
00:00 | 00:00 | เที่ยงคืน |
ข้ามเที่ยงคืน: ถ้า startTime = "22:00" และ endTime = "02:00" ระบบจะตีความเป็น "22:00 ของวันนี้ ถึง 02:00 ของวันถัดไป" อัตโนมัติ
กำหนดวันขายเฉพาะบางวัน
ถ้าอยากให้สินค้าบางตัวเปิดขายเฉพาะวันหยุดสุดสัปดาห์ ใช้ days:
saleSchedule = {
enabled = true,
startTime = "10:00",
endTime = "22:00",
days = {1, 7} -- เฉพาะอาทิตย์ (1) และเสาร์ (7)
}ค่า days: 1=อาทิตย์, 2=จันทร์, 3=อังคาร, 4=พุธ, 5=พฤหัส, 6=ศุกร์, 7=เสาร์
ถ้าไม่ระบุ days จะเปิดทุกวัน
เช็คสถานะการขาย
ดูว่าสินค้ากำลังเปิดขายอยู่หรือไม่ ด้วยคำสั่งแอดมิน:
/marketstock popular_itemถ้านอกเวลาขาย UI จะแสดงสถานะ "ปิดขายชั่วคราว" และนับถอยหลังถึงเวลาเปิดครั้งถัดไป