Devil Store Doc > Payment In Game to Discord > คู่มือระบบ Limit - Devil Market

คู่มือระบบ Limit - Devil Market

mali_devil

📋 คู่มือระบบ Limit - Devil Market

🎯 ระบบ Limit คืออะไร?

ระบบ Limit เป็นระบบที่ใช้ควบคุมการซื้อสินค้าของผู้เล่น มี 2 ประเภทหลัก:

1. Stock Limit (จำกัดจำนวนสินค้าในร้าน)

  • ควบคุมว่าสินค้าแต่ละชิ้นมีจำนวนเท่าไหร่ในร้าน
  • เมื่อขายหมดแล้วจะไม่สามารถซื้อได้จนกว่าจะเติมสต็อก

2. Purchase Limit (จำกัดการซื้อต่อคน)

  • ควบคุมว่าผู้เล่นแต่ละคนสามารถซื้อสินค้าชิ้นนั้นได้กี่ครั้ง
  • มีระบบรีเซ็ตตามเวลาที่กำหนด

🔧 วิธีการตั้งค่าระบบ Limit

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

{
    ["ป้ายชื่อ"] = "ปืนพก",
    ["ราคา"] = 5000,
    ["ประเภท"] = "weapon",
    ["ชื่อเสก"] = "WEAPON_PISTOL",
    ["limit_id"] = "pistol_limited" -- ชื่อ ID สำหรับเชื่อมโยงกับระบบ Limit
}

ขั้นตอนที่ 2: ตั้งค่า Limit ใน config_limit.lua

["pistol_limited"] = {
    name = "ปืนพก จำกัด",
    
    -- การตั้งค่า Stock (จำนวนสินค้าในร้าน)
    currentStock = 50,    -- จำนวนปัจจุบัน
    maxStock = 50,        -- จำนวนสูงสุด
    resetToMax = false,   -- รีเซ็ตสต็อกเป็น maxStock หรือไม่
    category = "weapon",
    
    -- การตั้งค่า Purchase Limit (จำกัดการซื้อต่อคน)
    purchaseLimit = {
        enabled = true,           -- เปิดใช้งานการจำกัดต่อคน
        maxPerPlayer = 2,         -- ซื้อได้สูงสุด 2 กระบอกต่อคน
        resetType = "weekly"      -- รีเซ็ตทุกสัปดาห์
    }
}

⏰ ประเภทการรีเซ็ต (Reset Types)

1. "daily" - รีเซ็ตทุกวัน

  • ผู้เล่นจะสามารถซื้อใหม่ได้ทุกวันเวลา 00:00
  • เหมาะสำหรับสินค้าประจำวัน เช่น อาหาร น้ำ

2. "weekly" - รีเซ็ตทุกสัปดาห์

  • ผู้เล่นจะสามารถซื้อใหม่ได้ทุกวันจันทร์เวลา 00:00
  • เหมาะสำหรับสินค้าพิเศษ เช่น อาวุธ เครื่องมือ

3. "monthly" - รีเซ็ตทุกเดือน

  • ผู้เล่นจะสามารถซื้อใหม่ได้ทุกวันที่ 1 ของเดือนเวลา 00:00
  • เหมาะสำหรับสินค้าแพง เช่น รถยนต์ บ้าน

4. "never" - ไม่รีเซ็ต

  • ผู้เล่นซื้อได้เพียงครั้งเดียวตลอดชีวิต
  • เหมาะสำหรับสินค้าพิเศษ เช่น ไอเทมเอกสิทธิ์

🛠️ วิธีการจัดการระบบสำหรับเจ้าของเซิร์ฟเวอร์

1. การดูสถานะสินค้า

ใน Game (สำหรับ Admin)

/marketstock [limit_id]     - ดูจำนวนสต็อกปัจจุบัน
/marketlimit [player_id] [limit_id] - ดูจำนวนที่ผู้เล่นซื้อไปแล้ว

ใน Database

ข้อมูลจะถูกเก็บในตาราง:

  • devil_market_stock - เก็บจำนวนสต็อกสินค้า
  • devil_market_purchases - เก็บประวัติการซื้อของผู้เล่น

2. การเติมสต็อกสินค้า

วิธีที่ 1: ใช้คำสั่งใน Game

/addstock [limit_id] [จำนวน]    - เติมสต็อกสินค้า
/resetstock [limit_id]          - รีเซ็ตสต็อกเป็น maxStock

วิธีที่ 2: แก้ไขใน config_limit.lua

["pistol_limited"] = {
    currentStock = 100,  -- เปลี่ยนจำนวนตรงนี้
    maxStock = 100,
    -- ...
}

หลังจากแก้ไขแล้วต้อง restart resource

3. การรีเซ็ตข้อมูลผู้เล่น

รีเซ็ตผู้เล่นคนเดียว

/resetplayer [player_id] [limit_id]  - รีเซ็ตการซื้อของผู้เล่นคนนั้น

รีเซ็ตผู้เล่นทั้งหมด

/resetallplayers [limit_id]  - รีเซ็ตการซื้อของผู้เล่นทุกคน

รีเซ็ตผ่าน Database

-- รีเซ็ตผู้เล่นคนเดียว
DELETE FROM devil_market_purchases 
WHERE identifier = 'steam:xxxxxxxxx' AND limit_id = 'pistol_limited';

-- รีเซ็ตทุกคน
DELETE FROM devil_market_purchases WHERE limit_id = 'pistol_limited';

📊 ตัวอย่างการใช้งานจริง

ตัวอย่างที่ 1: ร้านขายอาหาร (รีเซ็ตรายวัน)

["daily_food"] = {
    name = "อาหารประจำวัน",
    currentStock = 1000,
    maxStock = 1000,
    resetToMax = true,  -- เติมสต็อกเต็มทุกวัน
    
    purchaseLimit = {
        enabled = true,
        maxPerPlayer = 10,      -- ซื้อได้ 10 ชิ้นต่อวัน
        resetType = "daily"
    }
}

ตัวอย่างที่ 2: ร้านขายอาวุธ (รีเซ็ตรายสัปดาห์)

["weekly_weapon"] = {
    name = "อาวุธพิเศษ",
    currentStock = 20,
    maxStock = 20,
    resetToMax = false,  -- ไม่เติมสต็อกอัตโนมัติ
    
    purchaseLimit = {
        enabled = true,
        maxPerPlayer = 1,       -- ซื้อได้ 1 กระบอกต่อสัปดาห์
        resetType = "weekly"
    }
}

ตัวอย่างที่ 3: ร้านขายรถ (ไม่รีเซ็ต)

["exclusive_car"] = {
    name = "รถเอกสิทธิ์",
    currentStock = 5,
    maxStock = 5,
    resetToMax = false,
    
    purchaseLimit = {
        enabled = true,
        maxPerPlayer = 1,       -- ซื้อได้ 1 คันตลอดชีวิต
        resetType = "never"
    }
}

🚨 การแก้ไขปัญหาที่พบบ่อย

ปัญหา: ผู้เล่นซื้อไม่ได้แม้ว่าจะยังไม่ถึง limit

สาเหตุ:

  1. สต็อกสินค้าหมด
  2. ข้อมูลใน database ผิดพลาด
  3. การตั้งค่า limit_id ไม่ตรงกัน

วิธีแก้:

1. ตรวจสอบสต็อก: /marketstock [limit_id]
2. ตรวจสอบการซื้อ: /marketlimit [player_id] [limit_id]
3. รีเซ็ตข้อมูล: /resetplayer [player_id] [limit_id]

ปัญหา: ระบบรีเซ็ตไม่ทำงาน

วิธีแก้:

  1. ตรวจสอบการตั้งค่าใน Config_Limit.Settings.AutoReset
  2. ตรวจสอบ server time
  3. รีสตาร์ท resource

ปัญหา: ข้อมูลหายหลัง restart

วิธีแก้:

  1. ตรวจสอบการตั้งค่า database ใน Config_Limit.Settings.Database
  2. ตรวจสอบว่าตารางถูกสร้างแล้วหรือยัง
  3. ตรวจสอบ permission ของ database

💡 เทคนิคการใช้งานขั้นสูง

1. การตั้งค่าสินค้าแบบไม่จำกัด

-- ไม่ต้องใส่ limit_id ในสินค้า
{
    ["ป้ายชื่อ"] = "น้ำเปล่า",
    ["ราคา"] = 10,
    ["ประเภท"] = "item",
    ["ชื่อเสก"] = "water"
    -- ไม่มี limit_id = ไม่จำกัด
}

2. การตั้งค่าสินค้าแบบจำกัดเฉพาะสต็อก

["stock_only"] = {
    name = "จำกัดเฉพาะสต็อก",
    currentStock = 100,
    maxStock = 100,
    
    purchaseLimit = {
        enabled = false  -- ไม่จำกัดต่อคน
    }
}

3. การตั้งค่าสินค้าแบบจำกัดเฉพาะต่อคน

["player_only"] = {
    name = "จำกัดเฉพาะต่อคน",
    currentStock = -1,  -- -1 = ไม่จำกัดสต็อก
    
    purchaseLimit = {
        enabled = true,
        maxPerPlayer = 5,
        resetType = "daily"
    }
}

📈 การติดตามและรายงาน

1. การดูสถิติการขาย

-- ดูสินค้าที่ขายดีที่สุด
SELECT limit_id, COUNT(*) as total_sales 
FROM devil_market_purchases 
GROUP BY limit_id 
ORDER BY total_sales DESC;

-- ดูผู้เล่นที่ซื้อมากที่สุด
SELECT identifier, COUNT(*) as total_purchases 
FROM devil_market_purchases 
GROUP BY identifier 
ORDER BY total_purchases DESC;

2. การสำรองข้อมูล

-- สำรองข้อมูลสต็อก
CREATE TABLE devil_market_stock_backup AS 
SELECT * FROM devil_market_stock;

-- สำรองข้อมูลการซื้อ
CREATE TABLE devil_market_purchases_backup AS 
SELECT * FROM devil_market_purchases;

✅ สรุป

ระบบ Limit ของ Devil Market ช่วยให้เจ้าของเซิร์ฟเวอร์สามารถ:

  1. ควบคุมเศรษฐกิจ - จำกัดสินค้าที่มีผลต่อ balance ของเกม
  2. สร้างความหายาก - ทำให้สินค้าบางชิ้นมีค่ามากขึ้น
  3. จัดการง่าย - ใช้คำสั่งหรือแก้ไข config ได้
  4. ยืดหยุ่น - รองรับการตั้งค่าแบบต่างๆ
  5. ปลอดภัย - ข้อมูลถูกเก็บใน database

หมายเหตุ: ระบบนี้ทำงานแบบ real-time และ sync กับ database อัตโนมัติ ทำให้ข้อมูลไม่หายแม้เซิร์ฟเวอร์จะ restart


Was this article helpful?

2 out of 5 found this helpful