โมดูลการแชทข้างเซิร์ฟเวอร์

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

คุณสามารถใช้โมดูลการแชทต่อไปนี้เพื่อสนับสนุนพฤติกรรมข้างเซิร์ฟเวอร์ของ ระบบการแชทมรดก รวมถึง:

  • ChatService : ตัวแปรงที่จัดการโมดูลแชทอื่น ๆ ทั้งหมด
  • ลำโพงการแชท : รุ่นธิงการสร้างข้อความในช่องแชท; สมาชิกแต่ละรายจะได้รับลำโพงการแชทอัตโนมัติและบอทสามารถแชทได้โดยการสร้างลำโพงการแชท
  • ข้อความการแชท : คอนเทนเนอร์สำหรับเนื้อหาที่ ChatSpeaker ส่งไปยัง ChatChannel มีข้อมูลที่ใช้ในการรูปแบบข้อความหรือเพิ่มคุณสมบัติเพิ่มเติมให้กับคำสั่ง
  • ChatChannel : ช่องทางโดยผ่านที่ ChatSpeakers สามารถแลกเปลี่ยนข้อความในการแชท; ใช้สำหรับการแชททีมและการแชทเงียบ

ChatService บริการ

ChatService เป็นวัตถุที่เป็นเดี่ยว ที่จัดการการทำงานด้านเซิร์ฟเวอร์ของ Lua Chat System เช่น ChatChannels และ ChatSpeakers

ModuleScript ทั้งหมดใน โฟลเดอร์ ChatModuleScript ควรจะเป็นระบบอัตโนมัติ และระบบอัตโนมัตินี้จะเรียกใช้ด้วย singleton ของ ChatService

วิธี

เพิ่มช่อง

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: สร้างตัวอุปกรณ์ ChatChannel ด้วยชื่อที่กำหนดและส่งกลับ
  • กลับ: ช่องแชท

ลบช่อง

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: ลบช่องที่มีชื่อที่ให้
  • กลับ: ไม่ถูกต้อง

รับช่อง

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: ส่งช่องกลับด้วยชื่อที่กำหนดหรือไม่มีหากไม่มีให้บริการ
  • กลับ: ช่องแชท

เพิ่มลำโพง

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย: สร้างและเพิ่มลำโพงในการแชทด้วยชื่อที่กำหนดแล้ว แล้วส่งกลับ

ลบลำโพง

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย: ลบผู้พูดออกจากการแชทด้วยชื่อที่กำหนด
  • กลับ: ไม่ถูกต้อง

รับลำโพง

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย: นำกลับคันเสียงด้วยชื่อที่กำหนดหรือไม่มีหากไม่มีคัน

รับ ChannelList

  • ตัวอ้าง: ไม่มี
  • คำอธิบาย: กลับรายชื่อของช่องทุกช่องในชาที่ไม่เป็นส่วนตัว
  • กลับ: แอร์รายการ< string >

รับรายการช่องเข้าร่วมอัตโนมัติ

  • ตัวอ้าง: ไม่มี
  • คำอธิบาย:: กลับรายชื่อของช่องทั้งหมดในการแชทที่การตั้งค่า AutoJoin เป็น true
  • กลับ: แอร์รายการ< string >

ลงทะเบียนFilterMessageFunction

  • ตัวอ้าง: string : functionId , 0> ตัวอ้างฟังก์ชัน:0> : 3> func 3>
  • คำอธิบาย: ลงทะเบียนหน้าฟิลเตอร์สำหรับการแชทที่ระบุโดย 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

  • ตัวอ้าง: string : functionId
  • คำอธิบาย: ไม่ลงทะเบียนฟังก์ชันกรอง (ที่ลงทะเบียนโดย RegisterFilterMessageFunction) ที่มีรหัสประจำตัวผู้ลงทะเบียนของมัน, functionId .
  • กลับ: ไม่ถูกต้อง

ลงทะเบียนการโอนคำสั่งงาน

  • ตัวอ้าง: string : functionId , 0> ตัวอ้างฟังก์ชัน:0> : 3> func 3>
  • คำอธิบาย: ลงทะเบียนคำสั่งงานขั้นต้นสำหรับการแชทที่ระบุโดย 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

  • ตัวอ้าง: string : functionId
  • คำอธิบาย: ไม่ลงทะเบียนเครื่องประมวลผลคำสั่ง (ลงทะเบียนโดย RegisterProcessCommandsFunction ) ที่มีไอเดนติเฟอร์, functionId นี้.
  • กลับ: ไม่ถูกต้อง

เหตุการณ์

ช่องที่เพิ่ม

  • ตัวอ้าง: string : channelName
  • คำอธิบาย:: เปิดเมื่อช่องถูกเพิ่มในการแชท

ลบช่อง

  • ตัวอ้าง: string : channelName
  • คำอธิบาย:: เปิดเมื่อช่องถูกลบออกจากการแชท

เพิ่มลำโพง

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย:: เปิดเมื่อผู้พูดถูกเพิ่มในการแชท

ลำโพงถูกลบ

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย:: เปิดเมื่อผู้พูดถูกนำออกจากการแชท

นักพูดคุย

เครื่องพูดคุยแชท เป็นการแทนที่ตัวแทนหนึ่งขององค์กรที่สามารถพูดใน แชทช่องแชท แต่ละ Player ที่เชื่อมต่อกับเกมจะมี 1> เครื่

สมบัติ

ชื่อ

  • ชนิด: string : Name
  • คำอธิบาย: ชื่อของผู้พูด ใช้ในการอ้างอิงผู้พูดนี้ในขณะที่โทรกับหลายหน้าที่อื่น

วิธี

เข้าร่วมช่อง

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: เพิ่มเครื่องเสียงลงในช่องด้วย channelName ที่ให้
  • กลับ: ไม่ถูกต้อง

ออกจากช่อง

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: นำเสียงออกจากช่องด้วย channelName ที่ให้
  • กลับ: ไม่ถูกต้อง

รับ ChannelList

  • ตัวอ้าง: ไม่มี
  • คำอธิบาย: กลับรายชื่อของช่องทั้งหมดที่ผู้พูดอยู่
  • กลับ: แอร์รายการ< string >

อยู่ในช่อง

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: กลับว่าผู้พูดอยู่ในช่องกับ channelName ที่ให้
  • กลับ: คือ:

พูดข้อความ

  • ตัวอ้าง: string : message , 0> Library.สตริง0> : 3> channelName3> , พจนานุกรม< 6> Library.สตริง6> , Variant> 9> extraData 9>
  • คำอธิบาย: ทำให้ผู้พูดพูด message และสร้างวัตถุ ChatMessage ที่สร้างขึ้นในการทำเช่นนี้

ส่งข้อความ

  • ตัวอ้าง: string : message , 0> Library.สตริง0> : 3> ช่อง3> , 6> Library.สตริง6> : 9> fromSpeaker 9>
  • คำอธิบาย: ส่งข้อความไปยัง ผู้แชท ด้วยชื่อ fromSpeaker ที่ให้ไว้ หากไม่มีผู้พูดในช่องนั้น วิธีนี้จะสร้างคำเตือนและผู้พูดจะไม่เห็นข้อความ
  • กลับ: ไม่ถูกต้อง

ส่งข้อความระบบ

  • ตัวอ้าง: string : message , 0> Library.สตริง0> : 3> channelName 3>
  • คำอธิบาย: ส่งข้อความระบบไปยัง ช่องแชท ด้วย channelName ที่ให้ เมื่อผู้พูดไม่อยู่ในช่อง ผู้ฟังจะไม่เห็นข้อความนี้ หากผู้พูดอยู่ในช่อง ผู้ฟังจะไม่เห็น
  • กลับ: ไม่ถูกต้อง

รับผู้เล่น

  • ตัวอ้าง: ไม่มี
  • คำอธิบาย: กลับสิ่งที่เป็น Player วัตถุที่เกี่ยวข้องกับลำโพง หากลำโพงไม่ใช่สำหรับผู้ใช้ (บอท) จะนี่คือ nil
  • กลับ: Player หรือ nil

ตั้งค่าข้อมูลเพิ่มเติม

  • ตัวอ้าง: string : key , ตัวแปร 0> data0>
  • คำอธิบาย: ตั้งค่าข้อมูลบางอย่างสำหรับผู้พูดภายใต้ key เมื่อผู้พูดส่งข้อความ การสนทนา นี้ข้อมูลเพิ่มเติมนี้จะแนบมากับข้อความถ้าไม่มีให้บ
  • กลับ: ไม่ถูกต้อง

รับข้อมูลเพิ่มเติม

  • ตัวอ้าง: string : key
  • คำอธิบาย: กลับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับการให้ key โดยใช้ SetExtraData
  • กลับ: ตัวแปร

ตั้งช่องหลัก

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: ตั้งค่าเครื่องเสียงให้พูดในช่องที่กำหนด เรียกว่า MainChannelSet
  • กลับ: nil

เหตุการณ์

พูดคำ

ได้รับข้อความ

ได้รับข้อความระบบ

ช่องเข้าร่วม

  • ตัวอ้าง: string : channelName , 0> Library.สตริง0> : 3> channelWelcomeMessage 3>
  • คำอธิบาย: ไฟร์เมื่อผู้พูดเข้าร่วม ช่องแชท ด้วย channelName ที่ให้

ช่องทางซ้าย

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: ไฟร์เมื่อผู้พูดออกจาก ช่องแชท ด้วย channelName ที่ให้

ติดเงียบ

  • ตัวอ้าง: string : channelName , 0> Library.สตริง0> : 3> reason = nil3> , 6>int6> : 9> duration 9> = 0
  • คำอธิบาย: ไฟร์เมื่อผู้พูดถูกติดตั้งใน ช่องแชท ด้วย channelName สำหรับระยะเวลาที่กำหนด (หากมี) จะมี 0> reason0> ที่ให้ สามารถมีได้

ไม่มีเสียง

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: ไฟร์เมื่อผู้พูดถูกยกเลิกการติดต่อใน ช่องแชท ด้วย channelName ที่ให้

ข้อมูลเพิ่มเติมที่ปรับปรุง

  • ตัวอ้าง: string : key , ตัวแปร 0> data0>
  • คำอธิบาย:: ไฟร์เมื่อค่าเริ่มต้นของกุญแจในข้อมูลเสริมของผู้พูดถูกปรับปรุงโดยใช้ SetExtraData

ช่องหลัก

  • ตัวอ้าง: string : channelName
  • คำอธิบาย: ไฟร์เมื่อช่องเสียงหลักถูกเปลี่ยนเป็น ChatChannel ด้วย channelName ที่ให้

ข้อความแชท

ข้อความการแชท เป็นโครงสร้างข้อมูลที่表示ข้อความที่ส่งจาก ผู้พูดแชท มันประกอบด้วยข้อมูลเกี่ยวกับข้อความ รวมถึงความยาวของข้อความว่าข้อความถูกกรองโดย Roblox หรื

สมบัติ

รหัสประจำตัวประชาชน

  • ชนิด: int
  • คำอธิบาย: รหัสตัวเลขที่ไม่ซ้ำในข้อความ

จากผู้พูด

ช่องแรก

  • ชนิด: string :
  • คำอธิบาย:: ชื่อของ ChatChannel จากซึ่งข้อความนี้มา

มีการกรอง

  • คำอธิบาย: อธิบายว่าข้อความนี้ผ่านการกรองโดย Roblox (ถ้าเป็นเช่นนั้น, ข้อความจะเป็น nil )

ความยาวข้อความ

  • ชนิด: int
  • คำอธิบาย:: ความยาวของข้อความ คุณสามารถใช้สิ่งนี้เพื่อสร้างสตริงที่เรียบเรียงหากข้อความถูกกรอง

ข้อความ

  • ชนิด: string : หรือ nil
  • คำอธิบาย: ข้อความของเมสจริง ค่านี้จะเป็น nil ถ้า IsFiltered เป็นความจริง

ประเภทข้อความ

  • ชนิด: string :
  • คำอธิบาย:: ประเภทของข้อความ รายละเอียดเหล่านี้อธิบายไว้ในโมดูล ChatCommands:
  • ค่าที่อาจเป็นไปได้: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore"6> , 9> "Whisper" 9>

เวลา

  • ชนิด: int
  • คำอธิบาย:: เวลาที่แน่นอน; ค่าของ os.time() การสร้างสรรค์

ข้อมูลเพิ่มเติม

  • ชนิด: พจนานุกรม< string , Variant>
  • คำอธิบาย:: คู่มือเมตาดาต้าสำหรับข้อความนี้ นี่ใช้เพื่อเปลี่ยนรูปลักษณ์ของข้อความ สามารถปรากฏได้สองรายการต่อไปนี้:

ช่องแชท

ChatChannel เป็นวัตถุที่เก็บข้อมูลเกี่ยวกับช่องเดียวซึ่งเป็นวิธีที่ข้อความสามารถแลกเปลี่ยนระหว่าง ผู้พูดคุย ได้ มีสถานที่ที่เก็บข้

โดยปกติผู้ใช้แต่ละรายจะมี ลำโพงแชท ที่เพิ่มอัตโนมัติในช่องแชท "ทั้งหมด" และ "ระบบ" (แม้ว่า "ระบบ" จะอ่านเท่านั้น) หากผู้ใช้อยู่ใน Player.Team พวกเขาจะมีการ

สมบัติ

ชื่อ

  • ชนิด: string
  • คำอธิบาย: ชื่อช่อง ใช้เพื่ออ้างอิงช่องในหน้างานอื่น ๆ

ข้อความต้อนรับ

  • ชนิด: string
  • คำอธิบาย:: ข้อความที่แสดงเมื่อผู้ใช้เข้าร่วมช่อง

เข้าร่วมได้

  • คำอธิบาย: กำหนดว่าผู้ใช้สามารถเข้าร่วมช่องได้โดยใช้คำสั่ง /join หรือวิธีอื่น ๆ แม้ว่าค่านี้จะเป็นปลอม

ออก

  • คำอธิบาย: กำหนดว่าผู้ใช้สามารถออกจากช่องทางใดโดยใช้คำสั่ง /leave หรือวิธีอื่นๆ แม้ว่าค่านี้จะเป็นปลอมก็ตาม

เข้าร่วมอัตโนมัติ

  • คำอธิบาย: กำหนดว่าผู้เล่นของ ChatSpeaker จะเข้าร่วมช่องเมื่อเข้าร่วมเกม ผู้พูดไม่ใช้งานจะไม่เข้าร่วมช่อง แม้ว่าค่านี้จะเป็นค่าจริง (คุณสามารถใช้ ChatSpeaker

ส่วนตัว

  • คำอธิบาย: กำหนดว่าจะมีช่องในรายการช่องที่กลับโดย ChatService:GetChannelList() สำหรับการแชทแบบข้อความและการแชททีม

วิธี

ลำโพงเตะ

  • ตัวอ้าง: string : speakerName , 0> Library.สตริง0> : 3> reason = nil 3>
  • คำอธิบาย: ลบผู้พูดที่มี speakerName ออกจากช่อง ส่งข้อความไปยังผู้ใช้และช่องที่ผู้ใช้ถูกเตะออกจาก หากมี reason จะรวมอยู่ในข้อความ
  • กลับ: ไม่ถูกต้อง

ปิดเสียง

  • ตัวอ้าง: string : speakerName , 0> Library.สตริง0> : 3> reason = nil3> , 6> int6> 9> duration = 0 9>
  • คำอธิบาย: ปิดเสียงผู้พูดด้วย speakerName ในช่องเป็นเวลาระยะเวลาที่กำหนดในวินาที หาก duration เป็นศูนย์หรือ 0 คุณจะได้รับข้อความจ
  • กลับ: ไม่ถูกต้อง

ปิดเสียงพูด

  • ตัวอ้าง: string : speakerName
  • รายละเอียด: ยกเลิกการหุบเสียงของผู้พูดด้วย speakerName ในช่อง
  • กลับ: ไม่ถูกต้อง

ปิดเสียง

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย:: อธิบายว่าผู้พูดที่มี speakerName ปัจจุบันอยู่ในช่องเปิดหรือไม่
  • กลับ: คือ:

รับรายการลำโพง

  • ตัวอ้าง: ไม่มี
  • คำอธิบาย: กลับรายการที่มีชื่อของ ChatSpeaker ทั้งหมดในช่อง
  • กลับ: แอร์รายการ< string >

ส่งข้อความระบบ

  • ตัวอ้าง: string : message
  • คำอธิบาย: ส่งข้อความจาก "ระบบ" ChatSpeaker ไปยังช่อง
  • กลับ: ไม่ถูกต้อง

ลงทะเบียนFilterMessageFunction

  • ตัวอ้าง: string : functionId , 0> ฟังก์ชัน0> 3> func 3>
  • คำอธิบาย: ลงทะเบียนหน้าตารางการกรอง, 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

  • ตัวอ้าง: string : functionId
  • คำอธิบาย: ไม่ลงทะเบียนฟังก์ชันกรอง (ที่ลงทะเบียนโดย RegisterFilterMessageFunction) ที่มีรหัสประจำตัวผู้ลงทะเบียนของมัน, functionId .
  • กลับ: ไม่ถูกต้อง

ลงทะเบียนการโอนคำสั่งงาน

  • ตัวอ้าง: string : functionId , 0> ฟังก์ชัน0> 3> func 3>
  • คำอธิบาย: ลงทะเบียนคำสั่งงาน 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

  • ตัวอ้าง: string : functionId
  • คำอธิบาย:: ไม่ลงทะเบียนเครื่องประมวลผลคำสั่ง (ลงทะเบียนโดย RegisterProcessCommandsFunction) ด้วยไอดีนตรวจสอบ, functionId .
  • กลับ: ไม่ถูกต้อง

เหตุการณ์

โพสต์ข้อความ

  • ตัวอ้าง: ข้อความแชท : message
  • คำอธิบาย:: เปิดเมื่อมีข้อความในช่อง

ผู้เข้าร่วมลำโพง

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย: เปิดเมื่อ ChatSpeaker เข้าร่วมช่อง

ลำโพงซ้าย

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย: เปิดเมื่อ ChatSpeaker ออกจากช่อง

ลำโพงปิด

  • ตัวอ้าง: string : speakerName , 0> Library.สตริง0> : 3> reason3> , 6> int6> 9> duration = 0 9>
  • คำอธิบาย:: เปิดเมื่อ Speaker ในช่อง ถูกปิด

ลำโพงไม่เปิด

  • ตัวอ้าง: string : speakerName
  • คำอธิบาย: เปิดเมื่อ เครื่องพูดคุย ถูกยกเลิก