BunBun AllMenu
ติดตั้งและตั้งค่าเมนูรวม ทุกไฟล์ config ทุกระบบ
เมนูรวมปุ่มเดียว: ร้านค้า + เติมเงิน, กล่องจดหมาย, ตลาดเช่ารถ, ของเช่า, แลกโค้ด, เปลี่ยนชื่อ / เบอร์, พรีวิวแฟชั่น
เริ่มต้นใช้งาน
- วางโฟลเดอร์
bunbun-allmenuใน resources แล้วใส่ensure bunbun-allmenuใน server.cfg หลัง es_extended, oxmysql, inventory และระบบกุญแจรถ - ลงทะเบียน IP เซิร์ฟ ที่หน้า License บนเว็บร้าน (ไม่ต้องกรอก key)
- แก้
config/config.luaชื่อร้าน โลโก้ สี ปุ่มเปิดเมนู (ค่าเริ่ม F5 หรือพิมพ์/allmenu) และเปิด / ปิดแต่ละระบบในConfig.Systems - ถ้าเปิดร้านค้า เลือกช่องทางรับเงินใน
config/config.server.lua(PayNoi / SlipOK / โอนเอง ดูหัวข้อร้านค้า) - เปิดเซิร์ฟแล้วดู console ราว 5 วินาทีหลังเปิด สคริปต์บอกเองว่าต้องแก้อะไร (
[ต้องแก้]) แก้ตามแล้วrestart bunbun-allmenu
เคล็ดลับ
ตารางฐานข้อมูลทุกตัวสร้างเองตอนเปิดครั้งแรก ไม่ต้องรัน SQL
อย่าใส่ความลับใน config.lua
ผู้เล่นโหลดไฟล์นี้ได้ คีย์ / webhook / ราคาที่ใช้ตรวจ ให้ใส่ในไฟล์ฝั่ง server (config.server.lua และ config ของแต่ละระบบ)
ไฟล์ config
| ไฟล์ | แก้อะไร |
|---|---|
config.lua | เริ่มที่นี่ ชื่อ โลโก้ สี ปุ่มเปิด ลิงก์ เปิด / ปิดระบบ เหรียญบนหัวเมนู |
config.menu.lua | แถวเมนู ทางลัดหน้าแรก ข่าว กิจกรรม หน้าตั้งค่า |
config.donate.lua | ร้านค้า: สินค้า หมวด โปร โค้ดส่วนลด รางวัลสะสม |
config.server.lua | ช่องทางรับเงิน กลุ่มแอดมิน Discord log |
config.mailbox.lua | กล่องจดหมาย |
config.carmarket.lua | ตลาดเช่ารถ + โอนรถ |
config.rental.lua | ของเช่า |
config.profile.lua | เปลี่ยนเบอร์ / ชื่อ |
config.redeem.lua | แลกโค้ด |
config.fashion.lua | พรีวิวแฟชั่น |
functions/config.framework.*.lua | ต่อกับ ESX |
functions/config.functions.*.lua | ต่อสคริปต์อื่น: กุญแจ การาจ ท้ายรถ กระเป๋า แจ้งเตือน โทรศัพท์ log |
ลำดับโหลดไฟล์ และอัปเดตจากรุ่นเก่า
- client: config.menu → config.fashion → config.lua (ค่าในไฟล์นี้ชนะ) → functions → โค้ดหลัก
- server: config.lua → config ของแต่ละระบบ → config.server →
config/donate/*.lua→ functions → โค้ดหลัก - รุ่นเก่าที่ชื่อ / สี / คำสั่ง / ลิงก์ ยังอยู่ใน config.menu.lua ใช้ต่อได้เลย (console ขึ้น
[ข้อมูล] ใช้ Config.Theme จาก config.menu.lua) ย้ายไป config.lua ตอนไหนก็ได้ - ไม่มี
fashionในConfig.Systems= ใช้Config.Fashion.enabledเดิม
ต่อกับสคริปต์อื่น
ค่าเริ่มต้นต่อกับ nc_inventory nc_vehiclekey nc_garage nc_vehiclestorage nc_notify nc_discordlogs nc_playersname bt_attacher pma-voice Undg_phone
ใช้ตัวอื่นก็แก้ในไฟล์ config/functions/config.functions.*.lua แต่ละหมวดเขียนชื่อสคริปต์กำกับไว้ ไม่ต้องใส่ pcall เอง สคริปต์กันพังให้แล้ว
ตอนเปิด resource สคริปต์ตรวจให้ว่าขาดอะไร (เช็คเฉพาะระบบที่เปิด) แล้วสรุปเป็น [ต้องแก้] / [ควรดู] / [ข้อมูล] ตัวอย่าง:
[ต้องแก้] Car Market เปิดอยู่ แต่ไม่พบ nc_garage — ตรวจ bridge ใน config/functions/config.functions.server.lua
[ต้องแก้] PayNoi ยังตั้งค่าไม่ครบ — ตรวจ Config.Donate.PayNoi.apiKey ใน config/config.server.lua
ใช้ framework อื่นที่ไม่ใช่ ESX
แก้ฟังก์ชันใน config/functions/config.framework.*.lua ให้คืนค่าแบบนี้
| ฟังก์ชัน | คืนค่า |
|---|---|
FrameworkGetJob(xPlayer) | { name, label, grade_label } |
FrameworkGetJobs() | { [name] = { label } } (nil = อ่านตาราง jobs) |
FrameworkGetPhone(xPlayer) | เบอร์ หรือ nil |
FrameworkGetAvatar(xPlayer) | URL รูป ('' = รูปเริ่มต้น) |
FrameworkGetAccounts() | { [name] = { label } } |
FrameworkRemoveAccountMoney(...) | false = หักไม่สำเร็จ |
FrameworkGetItems() | { [name] = { label } } (nil = อ่านตาราง items) |
FrameworkPhoneTaken / FrameworkNameTaken | true = มีคนใช้แล้ว |
FrameworkSetPhone / FrameworkSetName | true = สำเร็จ |
FrameworkApplyName | เปลี่ยนชื่อในเกมทันที (ไม่มี = ได้ตอนเข้าเกมรอบหน้า) |
อาวุธเช่าใช้ FrameworkHasWeapon / AddWeapon / RemoveWeapon ถ้าเซิร์ฟเก็บอาวุธเป็นไอเทม ให้ตั้งของเช่าเป็น type = 'item'
รถเปลี่ยนเจ้าของ / เบอร์โทร / ปิดเอฟเฟค
- รถเปลี่ยนเจ้าของ (โอน / เช่า / คืน / ลงตลาด): ให้กุญแจคนใหม่ → เอากุญแจคนเก่าออก →
GarageChangeOwner→ReloadVehicleKey→StorageChangeOwner→GarageStoreVehicleแต่ละขั้นกันพังแยกกัน - เบอร์โทร: เปิด
Config.PhoneResourceอยู่ = เปลี่ยนผ่านConfig.PhoneChangeNumberไม่มีสคริปต์โทรศัพท์ = เขียนลง users เอง แนะนำให้มี index:ALTER TABLE users ADD UNIQUE INDEX idx_phone_number (phone_number); - ปิดเอฟเฟค ในหน้าตั้งค่า: สคริปต์ตั้ง
LocalPlayer.state.noFx/noScreenFxให้สคริปต์เอฟเฟคของเซิร์ฟเช็คเอง
กล่องราคารับซื้อหน้าแรก (economy)
ค่าเริ่มต้นไม่โชว์ ใส่เองที่ Config.GetEconomyMarket() ให้คืนรายการหมวดแบบนี้ (คืน nil = ไม่โชว์กล่อง)
{
{ key = 'food', label = 'อาหาร', shop = vector3(x, y, z),
items = { { name = 'bread', price = 26, min = 23, max = 28, prev = 25 } } },
}
price ราคาตอนนี้ · min / max ช่วงราคา · prev ราคารอบก่อน (ไม่ใส่ได้) · shop จุดรับซื้อสำหรับปุ่มนำทาง · nc_economy ไม่มี export อ่านราคา ให้ดึงจาก nc_economy/html/js/custom.js
เมนู
ไฟล์ config.menu.lua
| ค่า | ทำอะไร |
|---|---|
Config.Nav | แถวเมนูซ้าย แก้ / ลบ / สลับได้ (หน้าแรก + กิจกรรม มีเสมอ) |
Config.HomeShortcuts | ทางลัด 6 ช่องหน้าแรก |
Config.Activities | การ์ดกิจกรรม 3x3 ตามเวลา |
Config.Settings | หน้าตั้งค่า (เก็บค่าในเครื่องผู้เล่น) |
Config.HomeMarket | สีราคาดี / ราคาตกในกล่องราคารับซื้อ |
แถวเมนู Config.Nav
titleen/titlethชื่ออังกฤษ / ไทย ·icon='./assets/...svg'หรือ Iconify id'mdi:home'pageเปิดหน้าในเมนู (mailbox / car-market / redeem / rental ...) หรือonClickปิดเมนูแล้วรันฟังก์ชัน (เปิด UI สคริปต์อื่น)systemชื่อในConfig.Systemsปิดระบบนั้น = ซ่อนแถว
ทางลัดหน้าแรก Config.HomeShortcuts
ใส่ชื่อหน้า: mailboxcar-marketredeemrentalactivitysettingsprofiletopupdonate-historydonate-storechange-namechange-phone หรือ 'link:<ชื่อใน Config.Links>' หรือ { link = 'discord', label = 'ดิสคอร์ด', icon = 'mdi:...' } หน้าของระบบที่ปิดไม่โชว์
กิจกรรม Config.Activities
schedule = { { start = 'HH:MM', dur = นาที } }การ์ดสีเต็มตอนกิจกรรมเปิด มีนับถอยหลัง 60 วิก่อนเริ่ม / จบthumbรูป ·detail = { tag, title, body }ในปุ่ม (i) ·onClickกดได้ตอนกิจกรรมเปิด- เวลาอ่านจากนาฬิกาเครื่องผู้เล่น
หน้าตั้งค่า Config.Settings
- แถบซ้าย =
Config.SettingsCatsแต่ละกลุ่มมีcatตรงกับenของหมวด kind:button·seg(2–3 ตัวเลือก) ·slider(0–100) ·checkapply(value)ถูกเรียกตอนผู้เล่นเปลี่ยนค่า และตอนเข้าเกม ·buttonเรียกConfig.Actions[id]
ร้านค้า / เติมเงิน
ไฟล์ config.donate.lua (สินค้า) + config.server.lua (ช่องทางรับเงิน) · จ่ายได้ 2 แบบ: เงินสดผ่าน QR หรือเหรียญใน Config.Wallet (หักทันที)
ช่องทางรับเงินสด
เลือก 1 แบบที่ Config.Donate.Payment
| ช่องทาง | ผู้เล่นทำอะไร | ต้องตั้ง |
|---|---|---|
'paynoi' | สแกน QR โอน → ได้ของเอง | Config.Donate.PayNoi (apiKey / account / keyId) |
'slipok' | สแกน QR โอน → ส่งสลิป → ได้ของทันที | Config.Donate.PromptPay + Config.Donate.SlipOK |
'manual' | สแกน QR โอน → กด "โอนแล้ว" → แอดมินอนุมัติ | Config.Donate.PromptPay + manualGroups |
ส่งสลิป (slipok) ได้ 3 ทาง
กด Ctrl+V วางรูปในเกม · วางลิงก์รูป · สแกน QR บนจอด้วยมือถือแล้วเลือกรูปสลิป (ต้องมี web_baseUrl ของเซิร์ฟ ปิดได้ด้วย phone = false)
รายละเอียดช่องทางรับเงิน
PromptPay.id= เบอร์ 10 หลัก / เลขบัตร 13 หลัก / e-Wallet 15 หลัก ·name= ชื่อบัญชีใต้ QR- PayNoi รหัสธนาคาร: 100568 กสิกร · 100569 กรุงศรี · 100570 SCB · 100571 กรุงไทย · 100572 ออมสิน
- SlipOK: บัญชีพร้อมเพย์ต้องผูกกับสาขาใน SlipOK · สคริปต์เช็คยอดไม่น้อยกว่าที่ต้องจ่าย, โอนหลังเปิดรายการ, สลิปใช้ได้ครั้งเดียว
- manual:
satang = trueบวกเศษสตางค์ไม่ซ้ำ (เช่น 100.37) จับคู่ยอดในแอปธนาคารง่าย · อนุมัติที่ REDEEM ADMIN → เงินสด - เปลี่ยนช่องทางตอนมีรายการค้างได้ เลขรายการบอกช่องทางเอง (
MN-manual,SO-slipok) recheckถาม PayNoi ซ้ำกันเคสโอนแล้วไม่ได้ของ ·restartLockปิดการซื้อก่อนรีสตาร์ท txAdmin
เพิ่มสินค้า
{ id = 'vip7', item = 'box_vip_7days', category = 'card', prices = { cash = 99, diamond = 99 } }
| ช่อง | ทำอะไร |
|---|---|
id | รหัสสินค้า ห้ามซ้ำ |
item / count | ของที่ได้ · contains = { { item, count } } = แพ็ค |
prices | ราคาแต่ละเหรียญ (cash = บาท) ใส่หลายเหรียญ = ขายทุกเหรียญนั้น |
category / sub | หมวด / หมวดย่อย (Config.Donate.categories) |
name / img | ไม่ใส่ = ใช้ชื่อ / รูปของไอเทม |
discount / flash | ลด % / ป้าย FLASH SALE |
limitPerPlayer / limitGlobal | คนละกี่ชิ้น / ทั้งเซิร์ฟกี่ชิ้น |
sellStart / sellEnd | ช่วงเวลาขาย 'YYYY-MM-DD HH:MM' |
give | ของที่ไม่ใช่ไอเทม → Config.DonateGive[ชื่อ] |
เคล็ดลับ
สินค้าเยอะแยกไฟล์ได้ ใส่ไฟล์ .lua ใน config/donate/ แล้วเขียน DonateProducts('skin', { {...}, {...} }) (ดูตัวอย่าง config/donate/skin_weapon.lua) เพิ่มไฟล์ใหม่ต้อง refresh แล้ว ensure bunbun-allmenu
ลิมิต สิทธิ์ผู้เล่นใหม่ และการส่งของ
- ลิมิตนับรวมทุกเหรียญ (ซื้อด้วยเงินสดแล้วซื้อด้วยเพชรซ้ำไม่ได้) ·
qtyLocked = true= ซื้อครั้งละชิ้น newbieDays = 7ซื้อได้แค่ 7 วันแรกที่เข้าเซิร์ฟ ·minDays = 30ต้องเล่นครบ 30 วัน (ส่งเป็นของขวัญไม่ได้) ใช้ azael_playpass แทนได้ที่Config.PlayerFirstJoindelivery:'auto'เข้ากระเป๋า (เต็ม / ออฟไลน์ = เข้ากล่องจดหมาย) ·'inventory'·'mailbox'- ของขวัญ: ใส่ ID คนรับ → เขียนข้อความ → จ่าย → ของเข้ากล่องจดหมายคนรับ ·
gift = falseปิด
โปร โค้ดส่วนลด และรางวัลสะสม
topupPromosโบนัสเติมเงิน (+%) ·firstTopupโปรเติมครั้งแรก ·promosโปรร้าน (ลดรวมสูงสุด 90%) — สร้างในเกมได้ที่ REDEEM ADMIN → โปรโมชั่นcodes:type = 'percent' | 'flat',value,start,finish,limitGlobal,limitPerPlayer,minSpend,coin,products,categoriesmilestones:metric = 'count' | 'spend' | 'topup'·reward = { diamond = N } | { give = 'ชื่อ' }· แบบเกณฑ์เดียวneedหรือหลายขั้นtiers- webhook แยกช่องได้:
donate_time_limiteddonate_limit_playerdonate_limit_globaldonate_coin_<เหรียญ>(ว่าง = ส่งช่องdonate)
กล่องจดหมาย
- ผู้เล่นอ่าน / กดรับของ / ลบ ที่หน้า MAIL BOX
- แอดมิน (
Config.AdminGroups) กดปุ่ม ADMIN ส่งเมลให้ทุกคน / คนออนไลน์ / ระบุคน / ตามอาชีพ / สุ่ม - สคริปต์อื่นส่งเมลเข้ามาได้:
exports['bunbun-allmenu']:SendMail(serverId_or_identifier, {
title = 'หัวข้อ', content = 'ข้อความ',
rewards = { { type = 'item', name = 'bread', count = 5 }, { type = 'account', name = 'money', count = 1000 } },
})
ของพิเศษที่แนบเมลได้
Config.MailboxExec ใน config.server.lua → give(src, identifier, xPlayer, count) (count = จำนวนชุดในเมล)
ตลาดเช่ารถ + โอนรถ
- ลงประกาศ ใช้
PostItem1 ชิ้น รถย้ายจากการาจเจ้าของไปอยู่ที่ตลาด - มีคนเช่า หักเงินคนเช่า → รถเข้าการาจคนเช่า → เจ้าของได้เงินหัก
Fee(ออฟไลน์ = ได้ตอนเข้าเกม) - หมดเวลา รถกลับการาจเจ้าของ · ถอนประกาศตอนยังไม่มีคนเช่า = ได้
PostItemคืน
- โอนถาวร กดใช้
TradeItemใกล้รถตัวเอง + ผู้เล่นอีกคน → ใส่ ID คนรับ → ยืนยัน - ทดลองขับ ไปโซน
TestZoneในมิติของตัวเอง หมดเวลา / ลงรถ / สลบ = กลับจุดเดิม
ห้ามเปลี่ยน HoldOwner ตอนมีประกาศค้าง
รถที่อยู่ในตลาดผูกกับค่านี้ เปลี่ยนตอนมีประกาศ = รถหาย · TestBucket ต้องไม่ชนกับมิติของสคริปต์อื่น
ของเช่า
ไอเทม / อาวุธ / รถ แบบมีเวลา ผู้เล่นดูเวลาที่เหลือ + ต่อเวลาได้ที่เมนู > ของเช่า
- เริ่มเช่า กดใช้ไอเทมเช่า (key ใน
Config.Rental.List) หรือexports['bunbun-allmenu']:GiveRental(serverId หรือ identifier, 'key')(คนออฟไลน์ได้ของตอนเข้าเกม) - หมดเวลา รถถูกลบจากการาจ + คันในเมือง · อาวุธ / ไอเทมถูกเอาออก (ออฟไลน์ = ตอนเข้าเกม)
vip_t20 = {
days = 7,
grants = { { type = 'vehicle', model = 't20', label = 'T20', spawn = true, vtype = 'car' } },
extend = { item = 'extra_time', count = 1, days = 1 },
},
| ช่อง | ทำอะไร |
|---|---|
days / hours / minutes / months | เวลาเช่า (รวมกันได้) |
grants | ของที่ได้: item / weapon / vehicle (spawn = true = เสกข้างตัว) |
extend | ปุ่มต่อเวลา: ใช้ไอเทม หรือ { price, account, days } · maxDays เพดาน |
allow | จำกัดอาชีพ / โซน (blacklist / whitelist) |
กันของเช่าหลุดมือ ต้องต่อ export ในสคริปต์อื่น
- nc_inventory ก่อนมอบ / ทิ้ง / ยึด:
exports['bunbun-allmenu']:CanMoveItem(src, itemName, count, itemType, tell) - nc_inventory ฝากของ:
exports['bunbun-allmenu']:RentalMovableCount(src, itemName, count) - nc_vehiclestorage ก่อนเปิดท้ายรถ:
exports['bunbun-allmenu']:RentalStorageBlocked(src, plate)
คำสั่งแอดมิน และตัวเลือกเพิ่ม
/rentgive <id หรือ identifier> <ไอเทมเช่า>·/rentend <เลข>บังคับหมด ·/renttime <เลข> <นาที>·/rentlist <id>PlateFormat:@ตัวอักษรสุ่ม#ตัวเลขสุ่ม เช่น'RENT ###'groupไอเทมหลายตัวให้ของเดียวกัน ·stack = falseใช้ซ้ำได้ชุดใหม่แยกเวลา · เช็ครถเช่า:exports['bunbun-allmenu']:IsRentalPlate(plate)
เปลี่ยนเบอร์ / ชื่อ
อยู่ในหน้าร้านค้า (ต้องเปิด donate) ไฟล์ config.profile.lua
coin= เหรียญที่ใช้จ่าย (หักทันที) หรือ'cash'(QR เบอร์ / ชื่อถูกจองระหว่างรอจ่าย)- ราคาเลขสวย
tiers:allSame(5555) ·sequence(1234) ·triple(12333) ·pair(1223) · ที่เหลือราคาตามplain
แลกโค้ด
- ผู้เล่นกรอกโค้ดที่หน้า REDEEM CODE (โค้ดละครั้งต่อคน)
- แอดมินกด "จัดการโค้ด" สร้างโค้ดในเกมได้ทันที (ชื่อ / จำนวนคน / ช่วงเวลา / ของรางวัล)
- ส่งของเข้ากล่องจดหมาย หรือเข้าตัว (กระเป๋าเต็ม = เข้ากล่องจดหมาย)
พรีวิวแฟชั่น
ลองแฟชั่นของ bt_attacher บนตัวเอง เห็นคนเดียว ปิดหน้าแล้วของหาย รายการมาจาก Config.Attach_Config ของ bt_attacher เอง
ตั้งค่าเพิ่ม
- ชื่อไอเทมทับได้ที่
label· คำอธิบายใช้แท็กแบบ nc_inventory (<highlight><rarity-0..4>...) - กล้อง
sideOffset: 0 = กลางจอ, บวก = ขวา, ลบ = ซ้าย
License
- ลงทะเบียน IP เซิร์ฟที่หน้า License บนเว็บร้าน
restart bunbun-allmenu
ไม่ผ่านต้องทำยังไง
console ขึ้น License: ... IP ที่ร้านเห็น: x.x.x.x เอา IP นั้นไปลงทะเบียน (เซิร์ฟมีหลาย IP ใช้ตัวที่ขึ้นใน console) ระหว่างไม่ผ่าน เมนูเปิดได้แต่ระบบที่คุยกับ server ใช้ไม่ได้ ของที่ซื้อไว้ไม่หาย ส่งให้หลังผ่าน
เคล็ดลับ
เว็บร้านล่ม เซิร์ฟไม่ดับ ใช้ผลตรวจล่าสุดต่อได้ 72 ชั่วโมง · มีเวอร์ชันใหม่ console บอกตอนเปิด resource
