คุณสามารถใช้โมดูลการแชทต่อไปนี้เพื่อสนับสนุนพฤติกรรมข้างเซิร์ฟเวอร์ของ ระบบการแชทมรดก รวมถึง:
- ChatService : ตัวแปรงที่จัดการโมดูลแชทอื่น ๆ ทั้งหมด
- ลำโพงการแชท : รุ่นธิงการสร้างข้อความในช่องแชท; สมาชิกแต่ละรายจะได้รับลำโพงการแชทอัตโนมัติและบอทสามารถแชทได้โดยการสร้างลำโพงการแชท
- ข้อความการแชท : คอนเทนเนอร์สำหรับเนื้อหาที่ ChatSpeaker ส่งไปยัง ChatChannel มีข้อมูลที่ใช้ในการรูปแบบข้อความหรือเพิ่มคุณสมบัติเพิ่มเติมให้กับคำสั่ง
- ChatChannel : ช่องทางโดยผ่านที่ ChatSpeakers สามารถแลกเปลี่ยนข้อความในการแชท; ใช้สำหรับการแชททีมและการแชทเงียบ
ChatService บริการ
ChatService เป็นวัตถุที่เป็นเดี่ยว ที่จัดการการทำงานด้านเซิร์ฟเวอร์ของ Lua Chat System เช่น ChatChannels และ ChatSpeakers
ModuleScript ทั้งหมดใน โฟลเดอร์ ChatModuleScript ควรจะเป็นระบบอัตโนมัติ และระบบอัตโนมัตินี้จะเรียกใช้ด้วย singleton ของ ChatService
วิธี
เพิ่มช่อง
- คำอธิบาย: สร้างตัวอุปกรณ์ ChatChannel ด้วยชื่อที่กำหนดและส่งกลับ
- กลับ: ช่องแชท
ลบช่อง
- คำอธิบาย: ลบช่องที่มีชื่อที่ให้
- กลับ: ไม่ถูกต้อง
รับช่อง
- คำอธิบาย: ส่งช่องกลับด้วยชื่อที่กำหนดหรือไม่มีหากไม่มีให้บริการ
- กลับ: ช่องแชท
เพิ่มลำโพง
- คำอธิบาย: สร้างและเพิ่มลำโพงในการแชทด้วยชื่อที่กำหนดแล้ว แล้วส่งกลับ
- กลับ: ลำโพงแชท
ลบลำโพง
- คำอธิบาย: ลบผู้พูดออกจากการแชทด้วยชื่อที่กำหนด
- กลับ: ไม่ถูกต้อง
รับลำโพง
- คำอธิบาย: นำกลับคันเสียงด้วยชื่อที่กำหนดหรือไม่มีหากไม่มีคัน
- กลับ: ลำโพงแชท
รับ ChannelList
- ตัวอ้าง: ไม่มี
- คำอธิบาย: กลับรายชื่อของช่องทุกช่องในชาที่ไม่เป็นส่วนตัว
- กลับ: แอร์รายการ< string >
รับรายการช่องเข้าร่วมอัตโนมัติ
- ตัวอ้าง: ไม่มี
- คำอธิบาย:: กลับรายชื่อของช่องทั้งหมดในการแชทที่การตั้งค่า AutoJoin เป็น true
- กลับ: แอร์รายการ< string >
ลงทะเบียนFilterMessageFunction
- คำอธิบาย: ลงทะเบียนหน้าฟิลเตอร์สำหรับการแชทที่ระบุโดย functionId ใด ๆ การเปลี่ยนแปลงใด ๆ ในข้อความจะคงอยู่และปรากฏเมื่อข้อความผ่านผ่านฟิลเตอร
- กลับ: ไม่ถูกต้อง
- ตัวอย่าง:
-- วางตัวอย่างนี้ในโมดูลสคริปท์ภายในโฟลเดอร์ ChatModule
-- ตัวอย่างนี้กรองคำสั่งและหากประสบความสำเร็จก็จะตั้งค่าสีข้อความ
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- สีเขียว
local function doFilter(speaker, messageObject, channelName)
-- ตรวจสอบว่าข้อความมีคำสั่งในส่วนที่เป็นคำแนะนำหรือไม่
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- ลบ (ตัวกรอง) คำสั่งจากข้อความ และตั้งค่า ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
ไม่ลงทะเบียนFilterMessageFunction
- คำอธิบาย: ไม่ลงทะเบียนฟังก์ชันกรอง (ที่ลงทะเบียนโดย RegisterFilterMessageFunction) ที่มีรหัสประจำตัวผู้ลงทะเบียนของมัน, functionId .
- กลับ: ไม่ถูกต้อง
ลงทะเบียนการโอนคำสั่งงาน
- คำอธิบาย: ลงทะเบียนคำสั่งงานขั้นต้นสำหรับการแชทที่ระบุโดย functionId ก่อนที่ข้อความจะถูกกรอง มั
- กลับ: ไม่ถูกต้อง
- ตัวอย่าง:
-- วางตัวอย่างนี้ในโมดูลสคริปท์ภายในโฟลเดอร์ ChatModule
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- อุปกรณ์
local function processCommand(speakerName, message, channelName)
if string.sub(message, 1, command:len()) == command then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
return true
end
return false
end
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionId, processCommand)
end
return runChatModule
ไม่ลงทะเบียนProcessCommandsFunction
- คำอธิบาย: ไม่ลงทะเบียนเครื่องประมวลผลคำสั่ง (ลงทะเบียนโดย RegisterProcessCommandsFunction ) ที่มีไอเดนติเฟอร์, functionId นี้.
- กลับ: ไม่ถูกต้อง
เหตุการณ์
ช่องที่เพิ่ม
- คำอธิบาย:: เปิดเมื่อช่องถูกเพิ่มในการแชท
ลบช่อง
- คำอธิบาย:: เปิดเมื่อช่องถูกลบออกจากการแชท
เพิ่มลำโพง
- คำอธิบาย:: เปิดเมื่อผู้พูดถูกเพิ่มในการแชท
ลำโพงถูกลบ
- คำอธิบาย:: เปิดเมื่อผู้พูดถูกนำออกจากการแชท
นักพูดคุย
เครื่องพูดคุยแชท เป็นการแทนที่ตัวแทนหนึ่งขององค์กรที่สามารถพูดใน แชทช่องแชท แต่ละ Player ที่เชื่อมต่อกับเกมจะมี 1> เครื่
สมบัติ
ชื่อ
- คำอธิบาย: ชื่อของผู้พูด ใช้ในการอ้างอิงผู้พูดนี้ในขณะที่โทรกับหลายหน้าที่อื่น
วิธี
เข้าร่วมช่อง
- คำอธิบาย: เพิ่มเครื่องเสียงลงในช่องด้วย channelName ที่ให้
- กลับ: ไม่ถูกต้อง
ออกจากช่อง
- คำอธิบาย: นำเสียงออกจากช่องด้วย channelName ที่ให้
- กลับ: ไม่ถูกต้อง
รับ ChannelList
- ตัวอ้าง: ไม่มี
- คำอธิบาย: กลับรายชื่อของช่องทั้งหมดที่ผู้พูดอยู่
- กลับ: แอร์รายการ< string >
อยู่ในช่อง
- คำอธิบาย: กลับว่าผู้พูดอยู่ในช่องกับ channelName ที่ให้
- กลับ: คือ:
พูดข้อความ
- ตัวอ้าง: string : message , 0> Library.สตริง0> : 3> channelName3> , พจนานุกรม< 6> Library.สตริง6> , Variant> 9> extraData 9>
- กลับ: ข้อความแชท
ส่งข้อความ
- คำอธิบาย: ส่งข้อความไปยัง ผู้แชท ด้วยชื่อ fromSpeaker ที่ให้ไว้ หากไม่มีผู้พูดในช่องนั้น วิธีนี้จะสร้างคำเตือนและผู้พูดจะไม่เห็นข้อความ
- กลับ: ไม่ถูกต้อง
ส่งข้อความระบบ
- คำอธิบาย: ส่งข้อความระบบไปยัง ช่องแชท ด้วย channelName ที่ให้ เมื่อผู้พูดไม่อยู่ในช่อง ผู้ฟังจะไม่เห็นข้อความนี้ หากผู้พูดอยู่ในช่อง ผู้ฟังจะไม่เห็น
- กลับ: ไม่ถูกต้อง
รับผู้เล่น
- ตัวอ้าง: ไม่มี
- คำอธิบาย: กลับสิ่งที่เป็น Player วัตถุที่เกี่ยวข้องกับลำโพง หากลำโพงไม่ใช่สำหรับผู้ใช้ (บอท) จะนี่คือ nil
- กลับ: Player หรือ nil
ตั้งค่าข้อมูลเพิ่มเติม
- คำอธิบาย: ตั้งค่าข้อมูลบางอย่างสำหรับผู้พูดภายใต้ key เมื่อผู้พูดส่งข้อความ การสนทนา นี้ข้อมูลเพิ่มเติมนี้จะแนบมากับข้อความถ้าไม่มีให้บ
- กลับ: ไม่ถูกต้อง
รับข้อมูลเพิ่มเติม
- คำอธิบาย: กลับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับการให้ key โดยใช้ SetExtraData
- กลับ: ตัวแปร
ตั้งช่องหลัก
- คำอธิบาย: ตั้งค่าเครื่องเสียงให้พูดในช่องที่กำหนด เรียกว่า MainChannelSet
- กลับ: nil
เหตุการณ์
พูดคำ
ได้รับข้อความ
ได้รับข้อความระบบ
ช่องเข้าร่วม
ช่องทางซ้าย
ติดเงียบ
- ตัวอ้าง: string : channelName , 0> Library.สตริง0> : 3> reason = nil3> , 6>int6> : 9> duration 9> = 0
- คำอธิบาย: ไฟร์เมื่อผู้พูดถูกติดตั้งใน ช่องแชท ด้วย channelName สำหรับระยะเวลาที่กำหนด (หากมี) จะมี 0> reason0> ที่ให้ สามารถมีได้
ไม่มีเสียง
ข้อมูลเพิ่มเติมที่ปรับปรุง
- คำอธิบาย:: ไฟร์เมื่อค่าเริ่มต้นของกุญแจในข้อมูลเสริมของผู้พูดถูกปรับปรุงโดยใช้ SetExtraData
ช่องหลัก
ข้อความแชท
ข้อความการแชท เป็นโครงสร้างข้อมูลที่表示ข้อความที่ส่งจาก ผู้พูดแชท มันประกอบด้วยข้อมูลเกี่ยวกับข้อความ รวมถึงความยาวของข้อความว่าข้อความถูกกรองโดย Roblox หรื
สมบัติ
รหัสประจำตัวประชาชน
- ชนิด: int
- คำอธิบาย: รหัสตัวเลขที่ไม่ซ้ำในข้อความ
จากผู้พูด
- ชนิด: string :
- คำอธิบาย: ชื่อของ ผู้พูดสนทนา ที่ส่งข้อความ
ช่องแรก
- ชนิด: string :
- คำอธิบาย:: ชื่อของ ChatChannel จากซึ่งข้อความนี้มา
มีการกรอง
- ชนิด: ตัวอักษร
- คำอธิบาย: อธิบายว่าข้อความนี้ผ่านการกรองโดย Roblox (ถ้าเป็นเช่นนั้น, ข้อความจะเป็น nil )
ความยาวข้อความ
- ชนิด: int
- คำอธิบาย:: ความยาวของข้อความ คุณสามารถใช้สิ่งนี้เพื่อสร้างสตริงที่เรียบเรียงหากข้อความถูกกรอง
ข้อความ
- คำอธิบาย: ข้อความของเมสจริง ค่านี้จะเป็น nil ถ้า IsFiltered เป็นความจริง
ประเภทข้อความ
- ชนิด: string :
- คำอธิบาย:: ประเภทของข้อความ รายละเอียดเหล่านี้อธิบายไว้ในโมดูล ChatCommands:
- ค่าที่อาจเป็นไปได้: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore"6> , 9> "Whisper" 9>
เวลา
ข้อมูลเพิ่มเติม
- ชนิด: พจนานุกรม< string , Variant>
ช่องแชท
ChatChannel เป็นวัตถุที่เก็บข้อมูลเกี่ยวกับช่องเดียวซึ่งเป็นวิธีที่ข้อความสามารถแลกเปลี่ยนระหว่าง ผู้พูดคุย ได้ มีสถานที่ที่เก็บข้
โดยปกติผู้ใช้แต่ละรายจะมี ลำโพงแชท ที่เพิ่มอัตโนมัติในช่องแชท "ทั้งหมด" และ "ระบบ" (แม้ว่า "ระบบ" จะอ่านเท่านั้น) หากผู้ใช้อยู่ใน Player.Team พวกเขาจะมีการ
สมบัติ
ชื่อ
- ชนิด: string
- คำอธิบาย: ชื่อช่อง ใช้เพื่ออ้างอิงช่องในหน้างานอื่น ๆ
ข้อความต้อนรับ
- ชนิด: string
- คำอธิบาย:: ข้อความที่แสดงเมื่อผู้ใช้เข้าร่วมช่อง
เข้าร่วมได้
- ชนิด: ตัวอักษร
- คำอธิบาย: กำหนดว่าผู้ใช้สามารถเข้าร่วมช่องได้โดยใช้คำสั่ง /join หรือวิธีอื่น ๆ แม้ว่าค่านี้จะเป็นปลอม
ออก
- ชนิด: ตัวอักษร
- คำอธิบาย: กำหนดว่าผู้ใช้สามารถออกจากช่องทางใดโดยใช้คำสั่ง /leave หรือวิธีอื่นๆ แม้ว่าค่านี้จะเป็นปลอมก็ตาม
เข้าร่วมอัตโนมัติ
- ชนิด: ตัวอักษร
- คำอธิบาย: กำหนดว่าผู้เล่นของ ChatSpeaker จะเข้าร่วมช่องเมื่อเข้าร่วมเกม ผู้พูดไม่ใช้งานจะไม่เข้าร่วมช่อง แม้ว่าค่านี้จะเป็นค่าจริง (คุณสามารถใช้ ChatSpeaker
ส่วนตัว
- ชนิด: ตัวอักษร
- คำอธิบาย: กำหนดว่าจะมีช่องในรายการช่องที่กลับโดย ChatService:GetChannelList() สำหรับการแชทแบบข้อความและการแชททีม
วิธี
ลำโพงเตะ
- คำอธิบาย: ลบผู้พูดที่มี speakerName ออกจากช่อง ส่งข้อความไปยังผู้ใช้และช่องที่ผู้ใช้ถูกเตะออกจาก หากมี reason จะรวมอยู่ในข้อความ
- กลับ: ไม่ถูกต้อง
ปิดเสียง
- ตัวอ้าง: string : speakerName , 0> Library.สตริง0> : 3> reason = nil3> , 6> int6> 9> duration = 0 9>
- คำอธิบาย: ปิดเสียงผู้พูดด้วย speakerName ในช่องเป็นเวลาระยะเวลาที่กำหนดในวินาที หาก duration เป็นศูนย์หรือ 0 คุณจะได้รับข้อความจ
- กลับ: ไม่ถูกต้อง
ปิดเสียงพูด
- รายละเอียด: ยกเลิกการหุบเสียงของผู้พูดด้วย speakerName ในช่อง
- กลับ: ไม่ถูกต้อง
ปิดเสียง
- คำอธิบาย:: อธิบายว่าผู้พูดที่มี speakerName ปัจจุบันอยู่ในช่องเปิดหรือไม่
- กลับ: คือ:
รับรายการลำโพง
- ตัวอ้าง: ไม่มี
- คำอธิบาย: กลับรายการที่มีชื่อของ ChatSpeaker ทั้งหมดในช่อง
- กลับ: แอร์รายการ< string >
ส่งข้อความระบบ
- คำอธิบาย: ส่งข้อความจาก "ระบบ" ChatSpeaker ไปยังช่อง
- กลับ: ไม่ถูกต้อง
ลงทะเบียนFilterMessageFunction
- คำอธิบาย: ลงทะเบียนหน้าตารางการกรอง, func ตรวจสอบความสามารถของกรอง, functionId สู่ช่อง. ฟังก์ชันการก
- กลับ: ไม่ถูกต้อง
- ตัวอย่าง:
-- วางตัวอย่างนี้ในโมดูลสคริปท์ภายในโฟลเดอร์ ChatModule
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- อุปกรณ์
local function processCommand(speakerName, message, channelName)
if string.sub(message, 1, command:len()) == command then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
return true
end
return false
end
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionId, processCommand)
end
return runChatModule
ไม่ลงทะเบียนFilterMessageFunction
- คำอธิบาย: ไม่ลงทะเบียนฟังก์ชันกรอง (ที่ลงทะเบียนโดย RegisterFilterMessageFunction) ที่มีรหัสประจำตัวผู้ลงทะเบียนของมัน, functionId .
- กลับ: ไม่ถูกต้อง
ลงทะเบียนการโอนคำสั่งงาน
- คำอธิบาย: ลงทะเบียนคำสั่งงาน func ให้กับชาท ก่อนที่ข้อความจะได้รับการกรอง
- กลับ: ไม่ถูกต้อง
- ตัวอย่าง:
-- วางตัวอย่างนี้ในโมดูลสคริปท์ภายในโฟลเดอร์ ChatModule
-- ตัวอย่างนี้กรองคำสั่งและหากประสบความสำเร็จก็จะตั้งค่าสีข้อความ
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- สีเขียว
local function doFilter(speaker, messageObject, channelName)
-- ตรวจสอบว่าข้อความมีคำสั่งในส่วนที่เป็นคำแนะนำหรือไม่
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- ลบ (ตัวกรอง) คำสั่งจากข้อความ และตั้งค่า ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- สร้างช่องและลงทะเบียนตัวกรอง
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
ไม่ลงทะเบียนProcessCommandsFunction
- คำอธิบาย:: ไม่ลงทะเบียนเครื่องประมวลผลคำสั่ง (ลงทะเบียนโดย RegisterProcessCommandsFunction) ด้วยไอดีนตรวจสอบ, functionId .
- กลับ: ไม่ถูกต้อง
เหตุการณ์
โพสต์ข้อความ
- คำอธิบาย:: เปิดเมื่อมีข้อความในช่อง
ผู้เข้าร่วมลำโพง
- คำอธิบาย: เปิดเมื่อ ChatSpeaker เข้าร่วมช่อง
ลำโพงซ้าย
- คำอธิบาย: เปิดเมื่อ ChatSpeaker ออกจากช่อง
ลำโพงปิด
- คำอธิบาย:: เปิดเมื่อ Speaker ในช่อง ถูกปิด
ลำโพงไม่เปิด
- คำอธิบาย: เปิดเมื่อ เครื่องพูดคุย ถูกยกเลิก