Appearance
ข้อมูล / การตั้งค่า Giant_skinui
สคริปต์ map ประกอบด้วยไฟล์และโฟลเดอร์ต่างๆ ที่ทำงานร่วมกันเพื่อสร้างและจัดการแผนที่ในเกม ต่อไปนี้คือโครงสร้างพื้นฐานของสคริปต์:
โครงสร้างไฟล์
text
│- Giant_skinui
├── client/
│ ├── main.lua
├── server/
│ ├── main.lua
│ └── config.nui.json
├── dist/
│ └── images/ -- เพิ่มรูปต่างๆ ใน ui ใส่ที่นี้
├── config/
│ ├── config.basic.lua -- การตั้งค่าทั่วไป
│ ├── config.blockcloth.lua -- การบล็อคใส่เสื้อผ้า
│ ├── config.function.client.lua -- ฟังก์ชั่นต่างๆ Client
│ ├── config.function.server.lua -- ฟังก์ชั่นต่างๆ Server
│ └── config.notification.json -- การแจ้งเตือนต่างๆ
├── fxmanifest.luaรายละเอียดแต่ละส่วน
📁 config
INFO
โฟลเดอร์นี้เก็บไฟล์ตั่งค่าต่างๆ ของระบบ
text
│ ├── config.basic.lua -- การตั้งค่าทั่วไป
│ ├── config.blockcloth.lua -- การบล็อคใส่เสื้อผ้า
│ ├── config.function.client.lua -- ฟังก์ชั่นต่างๆ Client
│ ├── config.function.server.lua -- ฟังก์ชั่นต่างๆ Server
│ └── config.notification.json -- การแจ้งเตือนต่างๆการตั่งค่าระบบ
จะรวบรวมเฉพาะที่สำคัญมาอธิบายไว้ในการตั่งค่าระบบ ส่วนที่ไม่ได้อยู่ในนี้จะมีคำอธิบายเพิ่มเติมไว้อยู่
config.basic.lua
INFO
จะนำ Config ที่สำคัญเท่านั้นมาเขียนอธิบายไว้ที่นี้
Config.debug
เป็นการตั้งค่าเปิด debug ในการปรับแต่งหน้าต่างๆ ui หรือเปลี่ยน theme ของระบบ
วิธีใช้งาน Config.debug = true เพื่อเปิดใช้งาน และ Config.debug = false เพื่อปิดเมือตั้งค่าต่างๆ เสร็จสิ้นแล้ว
WARNING
แนะนำให้ทำในเซิฟเทส หรือ devmode ในการใช้งาน debug นี้
Config.TimeReady
การตั่งค่าเวลาที่ Client จะ Ready แนะนำ
lua
Config.TimeReady = 5000Config.wardrobe
lua
Config.wardrobe = {
itemWardrobeUse = true, --เปิดตู้เสื้อผ้าผ่านไอเทม
itemWardrobe = 'petrol', -- ไอเทมที่ใช้เปิดตู้เสื้อผ้า
itemdeleteafterUse = true, -- หลังกดใช้ให้ลบหรือไม่ลบไอเทมนี้
}Config.lightning
การตั่งค่าระบบไฟ ของร้านสกิน UI
lua
Config.lightning = {
['การใช้งาน'] = true, -- เปิดใช้งาน
['ระยะห่างไฟเริ่มต้น'] = 3.0, -- ยิ่งน้อย ยิ่งสว่าง max 15.0
['ระดับความสูงของไฟ'] = 0.5, -- ความสูงของไฟ
['สีไฟเริ่มต้น'] = {255, 253, 240} -- สีของดวงไฟ
}Config['ไม่บันทึกAccesooriesตอนที่Reskin']
หากต้องการแต่งตัวแล้วไม่บันทึก แว่นตา/หมวก/ตุ้มหู/หน้ากาก ในร้านสกินให้เปิดใช้งาน function นี้ หากอยากให้บันทึกเวลาแต่งตัวร้านสกินให้ปรับเป็น false
หากปรับเป็น true จะไม่บันทึกค่า แว่นตา/หมวก/ตุ้มหู/หน้ากาก ลงสกินผู้เล่นแต่จะใส่ default แทน
lua
Config['ไม่บันทึกAccesooriesตอนที่Reskin'] = trueConfig.Blip
การตั่งค่า Blip และ Dynamic Blip หากปรับ UseNearblip = true จะเปิดใช้งานระบบ dynamic ที่จะแสดง Blip เฉพาะที่อยู่ใกล้ที่สุดในแต่ละร้านเท่านั้น
lua
Config.Blip = {
UseNearblip = false,
Range = 5000.0,
tricktime = 3000
}Config.textui / textuiNewPlayerSkin
TEXT UI
มีสองแบบ แบบที่ใช้งานแบบ EveryFrame / แบบที่เข้าและออก
lua
on = true, -- true เปิดใช้งาน textui ของร้านหรือไม่ / false เปิดใช้งานแบบ loop
runningHighLoop = false, -- อธิบายคือ สำหรับใส่กับ textui loop 0 / false คือ ไม่ใช้ -- ต้องปรับ on เป็น false
-- ถ้าจะใช้ textui ของตัวระบบ on = true และ runningHighLoop = false เท่านั้น
-- false เพื่อ เปิดใช้ function ด้านล่าง
-- รองรับเฉพาะ text toggle open or clock
-- ไม่ได้ให้ textui วิ่งใน looptime 0
-- textui เปิดในขณะเดินเข้าโซน
EnterzoneTextui = function(namezone)
if namezone then
exports['Giant_TextUI']:ShowHelpNotification(("กด ~INPUT_CONTEXT~ " .. namezone))
end
end,
-- textui ปิดในขณะเดินออกโซน
ExitzoneTextui = function() -- ถ้า runningHighLoop = true ไม่ต้องใส่อะไร
exports["Giant_TextUI"]:CloseHelpNotification()
endconfig.function.client.lua
Config.itemreskinUse
ตั้งค่าการเปิดใช้งาน ไอเทมบัตรรีสกิน true = เปิดใช้งาน false = ปิดใช้งาน
Config.itemreskin
ตั้งค่าชื่อไอเทมบัตรรีสกินต้องเป็นไอเทมที่มีอยู่ใน sql items
Config.OnChangeCloth
เป็น function ที่จะทำงานเมือมีการเปลี่ยนข้อมูลการแต่งตัวของผู้เล่น เช่นการรีค่าสีกางเกงกลับเป็น 0 เมือเลื่อนเปลี่ยนค่ากางเกง
config.function.server.lua
extranal function นี้ทำงานเมืออัพเดทฐานข้อมูลสำเร็จและเป็นการเพิ่ม accessory เข้าสู่กระเป๋า
lua
--กระเป๋า nc_inventory
Config['อัพเดทชุดเข้าสู่กระเป๋า'] = function(xPlayer, name, Lists, typeAccessory)
--
exports.nc_inventory:AddItem(xPlayer.source, {
name = name,
type = 'accessory',
accessoryData = Lists,
optionType = 'player_' .. typeAccessory
})
endlua
--สำหรับกระเป๋า esx_inventoryhud
Config['อัพเดทชุดเข้าสู่กระเป๋า'] = function(xPlayer, name, Lists, typeAccessory)
TriggerClientEvent("esx_inventoryhud:getOwnerAccessories", _source)
endconfig.blockcloth.lua
Config.blockCloth
true เปิดใช้งาน false ปิดใช้งาน
Config.blockList
คลิกเพื่อดูรายการ List Skinchanger
text
{label = ('เสื้อใน'), name = 'tshirt_1'},
{label = ('เสื้อใน skin'), name = 'tshirt_2'},
{label = ('เสื้อนอก'), name = 'torso_1'},
{label = ('เสื้อนอก skin'), name = 'torso_2'},
{label = ('สติ๊กเกอร์'), name = 'decals_1'},
{label = ('สติ๊กเกอร์ skin'), name = 'decals_2'},
{label = ('แขน'), name = 'arms'},
{label = ('แขน skin'), name = 'arms_2'},
{label = ('กางเกง'), name = 'pants_1'},
{label = ('กางเกง skin'), name = 'pants_2'},
{label = ('รองเท้า'), name = 'shoes_1'},
{label = ('รองเท้า skin'), name = 'shoes_2'},
{label = ('หน้ากาก'), name = 'mask_1'},
{label = ('หน้ากาก skin'), name = 'mask_2'},
{label = ('เกราะ'), name = 'bproof_1'},
{label = ('เกราะ skin'), name = 'bproof_2'},
{label = ('สร้อยคอ'), name = 'chain_1'},
{label = ('สร้อยคอ skin'), name = 'chain_2'},
{label = ('หมวก'), name = 'helmet_1'},
{label = ('หมวก skin'), name = 'helmet_2'},
{label = ('แว่นตา'), name = 'glasses_1'},
{label = ('แว่นตา skin'), name = 'glasses_2'},
{label = ('นาฬิกา'), name = 'watches_1'},
{label = ('นาฬิกา skin'), name = 'watches_2'},
{label = ('bracelets'), name = 'bracelets_1'},
{label = ('bracelets skin'), name = 'bracelets_2'},
{label = ('กระเป๋า'), name = 'bags_1'},
{label = ('กระเป๋า skin'), name = 'bags_2'},
{label = ('ตุ้มหู'), name = 'ears_1'},
{label = ('ตุ้มหู skin'), name = 'ears_2'},lua
Config.blockList = {
-- torso หมายถึง torso_1 ตามรายการที่อยู่ใน skinchanger ตัด _1
-- ออกหากต้องการจะบล็อคอะไรก็สามารถนำชื่อมาใส่ได้
['torso'] = {
[5] = {
['เพศชาย'] = {
['BlockColor'] = false, -- true คือบล็อคทุกสี ยกเว้นที่ใส่ค่าแล้ว มี bypass จะผ่าน / false
['Color'] = {},
['ByPass'] = {}
},
['เพศหญิง'] = {
['BlockColor'] = true, -- true คือบล็อคทุกสี ยกเว้นที่ใส่ค่าแล้ว มี bypass จะผ่าน / false ไม่บล็อคทุกสี
['Color'] = {},
['ByPass'] = {}
},
},
[6] = {
['เพศชาย'] = {
['BlockColor'] = false, -- true คือบล็อคทุกสี ยกเว้นที่ใส่ค่าแล้ว มี bypass จะผ่าน / false
['Color'] = {},
['ByPass'] = {}
},
['เพศหญิง'] = {
['BlockColor'] = true, -- true คือบล็อคทุกสี ยกเว้นที่ใส่ค่าแล้ว มี bypass จะผ่าน / false ไม่บล็อคทุกสี
['Color'] = {},
['ByPass'] = {}
},
},
}
}จากตัวอย่างข้างบนนี้เป็นการ block torso หมายเลข 5 และ 6 / BlockColor = true คือบล็อคทุกสี
lua
ตัวอย่าง ['Color'] ที่เป็นการตั้งค่าการ bypass สีนั้นที่คนไหน
มีไอเทมอะไร หรือ job ไหนจริงจะสามารถบันทึกชุดนี้ได้
['Color'] = {
-- จะบล็อคทุกสียกเว้นที่ ใส่ใน config มี bypass
[0] = {
['Job'] = { 'police' }, -- อาชีพที่อนุญาต {'police', 'ambulance'} // ถ้าไม่ใช้ให้ comment บรรทัดนี้
['Item'] = 'water', -- หากมีไอเทมที่กำหนด จะสามารถใส่ชุดนี้ได้
['anotherFunciton'] = function() -- ฟังก์ชั่นอื่นๆ ที่ต้องการให้ทำงาน
-- กรณีอยากเช็คด้วย Function อื่นๆ เช่นเช็คจาก sql หรือ cache playerdata ก็ใส่ได้เลย
return false -- หากต้องการให้ผ่านให้ return true หากไม่ต้องการให้ผ่านให้ return false
end
},
[1] = {
['Job'] = { 'police' }, -- อาชีพที่อนุญาต {'police', 'ambulance'} // ถ้าไม่ใช้ให้ comment บรรทัดนี้
['Item'] = 'water', -- หากมีไอเทมที่กำหนด จะสามารถใส่ชุดนี้ได้
['anotherFunciton'] = function() -- ฟังก์ชั่นอื่นๆ ที่ต้องการให้ทำงาน
return false -- หากต้องการให้ผ่านให้ return true หากไม่ต้องการให้ผ่านให้ return false
end
},
[2] = {
['Job'] = { 'police' }, -- อาชีพที่อนุญาต {'police', 'ambulance'} // ถ้าไม่ใช้ให้ comment บรรทัดนี้
['Item'] = 'water', -- หากมีไอเทมที่กำหนด จะสามารถใส่ชุดนี้ได้
['anotherFunciton'] = function() -- ฟังก์ชั่นอื่นๆ ที่ต้องการให้ทำงาน
return false -- หากต้องการให้ผ่านให้ return true หากไม่ต้องการให้ผ่านให้ return false
end
},
},lua
-- การ bypass เลขนั้นอันนี้จะ bypass ทุกสีในเลขนั้นๆ
['ByPass'] = {
['Job'] = { 'police' }, -- อาชีพที่อนุญาต {'police', 'ambulance'} // ถ้าไม่ใช้ให้ comment บรรทัดนี้
['Item'] = 'water', -- หากมีไอเทมที่กำหนด จะสามารถใส่ชุดนี้ได้
['anotherFunciton'] = function() -- ฟังก์ชั่นอื่นๆ ที่ต้องการให้ทำงาน
return false -- หากต้องการให้ผ่านให้ return true หากไม่ต้องการให้ผ่านให้ return false
end
}config.notification.lua
Config.ClientNotify
เชื่อมการแจ้งเตือน สำหรับแจ้งเตือนใน ฝั่ง Client
Config.ServerNotify
เชื่อมการแจ้งเตือน สำหรับแจ้งเตือนใน ฝั่ง server
Exports และการนำ function ที่ใช้งานอื่นๆ ที่จำเป็น
เปิดใช้งานร้าน skin ผ่านสคลิปอื่นๆ โดย TriggerEventClient side
lua
TriggerEvent("Giant_skinui:OpenSkin")Server side
lua
TriggerClientEvent("Giant_skinui:OpenSkin", source)Exports function
lua
exports["Giant_skinui"]:OpenSkin()สามารถใช้ esx_skin trigger แบบเดิมๆ ก็ได้Client side
lua
TriggerEvent("esx_skin:openSaveableMenu")Server side
lua
TriggerClientEvent('esx_skin:openSaveableMenu', source)เปิดผ่าน Command > /skin only admin เปลี่ยนที่ config.function.server.lua
การเพิ่ม cooldown ไม่ให้ใช้ร้านค้าเมือมีการติดสถานะต่างๆ ที่ส่งมา
lua
pcall(function()
exports["Giant_skinui"]:getThief(true,10)
end)10 คือจำนวนเวลาติด cd ใช้ร้าน 10 นาที กดปล้นใหม่เวลาก็นับใหม่