Devil HunterDevil Docs
Payment In Game

สินค้าหายาก / Limited Edition

สร้างสินค้าที่มีจำนวนจำกัด รถหายาก อาวุธ limited พร้อมระบบจำกัดการซื้อต่อคน

สินค้าหายาก (Limited Edition) คือสินค้าที่มีจำนวนจำกัด ซื้อครบแล้วหมดไปเลย (ไม่เติมกลับ) เหมาะสำหรับรถสปอร์ตหายาก อาวุธพิเศษ หรือไอเทมอีเวนต์

หลักการของสินค้าหายาก

3 องค์ประกอบหลักที่ทำให้สินค้าเป็น "หายาก":

  1. สต็อกจำกัดresetToMax = false (ไม่เติมกลับ) + maxStock ต่ำ
  2. จำกัดการซื้อต่อคนpurchaseLimit กำหนดให้ซื้อได้คนละไม่เกินกี่ชิ้น
  3. ครั้งเดียวตลอดชีวิตresetType = "never" (ไม่รีเซ็ตยอดซื้อ)

ตัวอย่าง: รถสปอร์ตหายาก "Jester Black Edition"

สร้างรถที่มีแค่ 5 คันในเซิร์ฟเวอร์ แต่ละคนซื้อได้คันเดียว ขายครบแล้วหายไปตลอด

ขั้นตอนที่ 1: เพิ่มสินค้าใน config_main

config_main.lua
{
    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

config_limit.lua
["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

รูปแบบสินค้าหายากยอดนิยม

รถหายาก (จำกัดคัน + จำกัดคน)

config_limit.lua
["rare_adder"] = {
    name = "Adder (Bugatti)",
    currentStock = 2,                    -- มีแค่ 2 คันในเซิร์ฟเวอร์
    maxStock = 2,
    resetToMax = false,
    category = "car",
    purchaseLimit = {
        enabled = true,
        maxPerPlayer = 1,
        resetType = "never",
        expireAfterSeconds = 0
    },
}

อาวุธ limited (รีเซ็ตรายสัปดาห์)

config_limit.lua
["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 วัน (วินาที)
    },
}

ไอเทมอีเวนต์ (ขายครั้งเดียว ไม่กลับมา)

config_limit.lua
["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_server.lua
Config_Function.OnOutOfStock = function(source, itemname, requestedCount)
    -- ส่ง webhook แจ้งว่าสินค้าหายากหมดแล้ว
    local discord = require('discord-webhook')
    discord.send('WEBHOOK_URL', {
        title = 'สินค้าหายากหมดสต็อก!',
        description = itemname .. ' ถูกซื้อครบทั้งหมดแล้ว',
        color = 16711680
    })
end

On this page