Bạn có thể sử dụng các mô-đun trò chuyện sau đây để hỗ trợ hành vi bên máy chủ của Hệ thống trò chuyện thừa kế bao gồm:
- ChatService : Một singleton quản lý tất cả các modul trò chuyện khác.
- ChatSpeaker : Một entidad có thể tạo các tin nhắn trong một ChatChannel; mỗi Player sẽ tự động có một ChatSpeaker và các bốt có thể chat bằng cách tạo ChatSpeakers.
- ChatMessage : Một container cho nội dung mà một ChatSpeaker gửi đến một ChatChannel; chứa các thẻ nội quy, được sử dụng để format tin nhắn hoặc thêm các chức năng bổ sung cho các lệnh.
- Kênh trò chuyện : Một kênh mà ChatSpeakers có thể trao đổi Tin nhắn trò chuyện; cũng được sử dụng cho trò chuyện đội và trò chuyện gầm.
ChatService
ChatService là một đối tượng đơn giản để xử lý hành vi bên máy chủ của Hệ thống Chat Lua, như ChatChannels và ChatSpeakers .
Tất cả ModuleScript s within the ChatModule đường dưới nên trả lại một hàm, và hàm đó sẽ được gọi với singleton ChatService.
Phương pháp
Thêm kênh
- Mô tả: Tạo một đối tượng ChatChannel với tên đã được cung cấp và trả lại nó.
- Trở lại: ChatChannel
Loại bỏ kênh
- Mô tả: Xóa một kênh với tên đã được cung cấp
- Trả về: void
Nhận kênh
- Mô tả: Trả lại kênh với tên đã được cung cấp, hoặc nil nếu nó không tồn tại.
- Trở lại: ChatChannel
Thêm Loa
- Mô tả: Tạo và thêm một loa vào cuộc trò chuyện với tên đã được cung cấp, sau đó trả lại nó.
- Trả về: ChatSpeaker
Loại bỏ Speaker
- Mô tả: Loại bỏ người nói chuyện khỏi cuộc hội thoại với cái tên đã được cung cấp.
- Trả về: void
NhậnNgườiNóiChuyện
- Mô tả: Trả lại loa với tên đã được cung cấp, hoặc nil nếu nó không tồn tại.
- Trả về: ChatSpeaker
Lấy danh sách kênh
- Các biến: không có
- Mô tả: Trả lại một danh sách các tên của tất cả các kênh non-private trong trò chuyện.
- Trả về: array< string >
Nhận danh sách kênh tự động tham gia
- Các biến: không có
- Mô tả: Trả lại một danh sách các tên kênh trong trò chuyện với AutoJoin được đặt thành true.
- Trả về: array< string >
Đăng kýFilterMessageFunction
- Mô tả: Đăng nhập một chức năng lọc cho cuộc trò chuyện được xác định bởi functionId . Bất kỳ thay đổi nào trong thông điệp sẽ tồn tại và được hiển thị khi thông điệp đi qua tất cả các chức năng lọc khác. Chứ
- Trả về: void
- Ví dụ:
-- Sao chép ví dụ này vào một ModuleScript trong thư mục ChatModule.
-- Lọc này lọc một từ khóa, và nếu thành công, thiết lập màu chat của tin nhắn
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- màu xanh lá
local function doFilter(speaker, messageObject, channelName)
-- Kiểm tra xem liệu thông điệp có chứa từ khóa
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Loại bỏ (bộ lọc) từ khóa khỏi tin nhắn, cũng như đặt màu 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
Huỷ đăng kýFilterMessageFunction
- Mô tả: Không đăng nhập một chức năng lọc (đăng ký bởi RegisterFilterMessageFunction) có nhận dạng, functionId .
- Trả về: void
Đăng nhập
- Mô tả: Đăng nhập một chức năng chỉ mô tả trong functionId . Trước khi một thông điện được lọc, nó sẽ đi qua func (và các chức
- Trả về: void
- Ví dụ:
-- Sao chép ví dụ này vào một ModuleScript trong thư mục ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Máy cắt lát thịt xông trang bị
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
Huỷ đăng ký quá trình
- Mô tả: Unregisters a command processor (đăng ký bởi RegisterProcessCommandsFunction ) given the identifier, functionId .
- Trả về: void
Sự kiện
Đã thêm kênh
- Mô tả: Khiêu vũ khi một kênh được thêm vào trò chuyện.
Đã xóa kênh
- Mô tả: Khiến lửa khi một kênh được loại bỏ khỏi trò chuyện.
Đã thêm loa
- Mô tả: Khiến lửa nếu một người nói chuyện vào cuộc trò chuyện.
SpeakerLoại bỏ
- Mô tả: Khiến lửa nếu một người nói chuyện bị xóa khỏi cuộc hội thoại.
Người nói chuyện
Một SpeakerChat là đại diện của một entidad nào đó có thể nói trong một Kênh trò chuyện . Mỗi Player kết nối với trò chơi tự động có một SpeakerChat được liên kết. Các Speaker khác có thể được xây dựng cho n
Tính chất
Tên
- Mô tả: Tên của loa, được sử dụng để tham chiếu loa này khi gọi nhiều chức năng khác nhau.
Phương pháp
Tham gia kênh
- Mô tả: Thêm loa vào kênh với các thông số đã được cung cấp channelName
- Trả về: void
Rời kênh
- Mô tả: Loại bỏ loa khỏi kênh với các thông số đã được cung cấp channelName
- Trả về: void
Lấy danh sách kênh
- Các biến: Không có
- Mô tả: Trả lại một danh sách các tên kênh mà người nói chuyện đang ở.
- Trả về: array< string >
Có trong kênh
- Mô tả: Trả lại có phải người nói chuyện ở kênh với channelName đã được cung cấp.
- Trả về: ool
Nói tin nhắn
- Các biến: string : message , 0> Library.chuỗi0> : 3> channelName3> , dictionary< 6> Library.chuỗi6> , Variant> 9> extraData 9>
- Trở lại: Tin nhắn trò chuyện
Gửi tin nhắn
- Các biến: string : message , 0> Library.chuỗi0> : 3> kênh3> , 6> Library.chuỗi6> : 9> fromSpeaker 9>
- Mô tả: Gửi một thông điệp đến ChatSpeaker với cái tên fromSpeaker đã được cung cấp. Nếu không có thông điệp nào trong kênh, phương thức này tạo ra một cảnh báo và thông tin nhắnnày sẽ không được thấy bởi thủ nhà.
- Trả về: void
Gửi tin nhắn hệ thống
- Mô tả: Gửi một thông điệp hệ thống đến ChatChannel với các thông tin đã được cung cấp. Nếu người nói chuyện không ở trong kênh, thì thông điệp này sẽ tạo ra một cảnh báo và các người nói tin nhắnkhác trong kênh sẽ không nhìn thấy
- Trả về: void
NhậnPlayer
- Các biến: Không có
- Mô tả: 返回 Player 对象与 loa. Nếu loa không phải là cho một người (một bot) thì điều này sẽ trả lại nil .
- Trả về: Player hoặc nil
SetExtraData
- Mô tả: Đặt một số dữ liệu bổ sung cho người nói chuyện dưới một key nhất định. Mỗi khi người loachuyện gửi một Tin nhắn trò chuyện này, dữ liệu này được kèm cài đặtvới tin nhắn nếu không có được tin n
- Trả về: void
Nhận thêm dữ liệu
- Mô tả:: Trả lại dữ liệu thêm được gắn với các key đã được cài đặt bằng cách sử dụng SetExtraData.
- Trả về: Biến thể
Cài đặt kênh chính
- Mô tả: Đặt loa để nói trong kênh cung cấp. Kích hoạt MainChannelSet.
- Trả về: nil
Sự kiện
Nói chuyện
Tiến hành nhận tin nhắn
- Mô tả: Bắt đầu khi loa nhận được một Tin nhắn trò chuyện từ một người nói chuyện khác trên một Kênh trò chuyện
Đã nhận được thông điệp hệ thống
- Mô tả:: Lửa khi nào khiến loa nhận được một Tin nhắn hệ thống từ một Kênh trò chuyện với các thông tin đã được cung cấp 0>channelName0> .
Đã tham gia kênh
Cột màn hình bên trái
- Mô tả:: Bắt đầu khi người nói chuyện rời khỏi một Kênh trò chuyện với các thông tin đã được cung cấp channelName .
Đã tắt tiếng
- Các biến: string : channelName , 0> Library.chuỗi0> : 3> reason = nil3> , 6> int6> : 9> duration 9> = 0
- Mô tả:: Khi loa bị tắt trên ChatChannel với channelName được cung cấp trong thời gian cho phép (nếu có). Có thể hoặc không có một 0> reason0> được cung cấp.
Không bị tắt
Cập nhật dữ liệu phụ
- Mô tả:: Bị kích hoạt khi giá trị mặc định của một chìa khóa trong dữ liệu phụ của loa được cập nhật bằng SetExtraData.
MainChannel
- Mô tả:: Bắt đầu khi kênh chính của loa được thay đổi thành ChatChannel với channelName được cho.
Tin nhắn trò chuyện
Một Tin nhắn trò chuyện là một cấu trúc dữ liệu diễn tả một thông điệp đã gửi từ một ChatSpeaker . Nó chứa dữ liệu về tin nhắntin nhắn, bao gồm độ dài của văn bản, có phải văn bản đã được lọc bởi Roblox hoặc không và dữ liệu bổ sung về v
Tính chất
Nhận dạng
- Loại: int
- Mô tả: Một mã số độc đáo cho tin nhắn.
TừSpeaker
- Loại: string :
- Mô tả: Tên của ChatSpeaker người đã gửi tin nhắn.
Kênh gốc
- Loại: string :
- Mô tả: Tên của ChatChannel từ đó tên thông điệp xuất phát.
Đã lọc
- Loại: Boolean
- Mô tả: Mô tả xem xét liệu thông điệp có được lọc bởi Roblox (nếu có, Thông điệp sẽ là nil )
Độ dài tín hiệu
- Loại: int
- Mô tả: Độ dài của thông tin nhắn. Bạn có thể sử dụng này để tạo ra một chuỗi đã được xử lý nếu thông điệp được lọc.
Tin nhắn
- Mô tả: Văn bản của thông tin nhắn. Đặt tính này sẽ là nil nếu đúng.
Kiểu thông điệp
- Loại: string :
- Mô tả: Loại của thông tin nhắn. Các loại này được mô tả trong modul ChatCommands:
- Các giá trị có thể: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore"6> , 9> "Whisper" 9>
Thời gian
Dữ liệu phụ
- Loại: diction< string , Biến thể>
Kênh trò chuyện
ChatChannel là một đối tượng để lưu trữ dữ liệu về một kênh, which là một phương tiện để tin nhắn có thể được trao đổi giữa ChatSpeakers . Nó cũng có các đặc tính quyền truy cập mà xác định sự hiển thị củ
Bởi mặc định, mỗi người dùng có một ChatSpeaker được tự động thêm vào các kênh trò chuyện "All" và "System" (mặc dù, "System" được đọc chỉ). Nếu người dùng đang ở trên một Player.Team , họ cũng sẽ có quyền truy cập vào một kênh cho riêng
Tính chất
Tên
- Loại: string
- Mô tả: Tên kênh, được sử dụng để tham chiếu kênh trong các chức năng khác.
Tin nhắn chào mừng
- Loại: string
- Mô tả:: Một thông điệp để hiển thị khi một người tham gia kênh.
Tham gia được
- Loại: Boolean
- Mô tả: Xác định whether a user may manually join a channel using the /join command. A user can still be added to a channel using ChatSpeaker:JoinChannel() or other means even if this property is false.
Rời được
- Loại: Boolean
- Mô tả: Xác định có thể một người có thể rời khỏi một kênh bằng cách sử dụng lệnh /leave . Một người vẫn có thể bị xóa khỏi một kênh bằng cách sử dụng ChatSpeaker:LeaveChannel() hoặc các phương tiện khác ngay cả khi đó là giả sử.
Tự động tham gia
- Loại: Boolean
- Mô tả: Xác định whether a người chơi's ChatSpeaker will automatically join the channel upon joining the trò chơi. non-user speakers will not automatically join channels, even when this property is true (bạn có thể sử dụng ChatSpeaker:JoinChannel() để làm điều này).
Riêng tư
- Loại: Boolean
- Mô tả: Xác định có phải kênh sẽ được bao gồm trong danh sách kênh được trả lại bởi ChatService:GetChannelList() . Điều này cho những cuộc trò chuyện trong nhóm và cuộc trò chuyện trong nhóm.
Phương pháp
Túi đựng loa
- Mô tả: Loại bỏ loa với các thông số đã được cung cấp speakerName từ kênh, gửi một thông điệp cho người dùng và kênh mà người dùng đã bị kick. Nếu một reason được cung cấp, lý do sẽ được bao gồm trong thông tin nhắn.
- Trả về: void
Tắt tiếng nói
- Các biến: string : speakerName , 0> Library.chuỗi0> : 3> reason = nil3> , 6> int6> 9> duration = 0 9>
- Mô tả: Tắt máy phát âm với speakerName đã được cho trong kênh trong một thời gian nhất định. Nếu duration là nil hoặc 0, máy phát âm sẽ là vô tận. Nếu 0> reason0> được cung cấp, thì một
- Trả về: void
Tắt tiếng nói
- Mô tả: Mở khóa người phát tiếng với speakerName đã được đưa vào kênh.
- Trả về: void
IsSpeakerTắt
- Mô tả:: Mô tả có hiện tại speakerName trong kênh.
- Trả về: ool
Nhận danh sách loa
- Các biến: Không có
- Mô tả: Trả lại một danh sách chứa tất cả nếu tên của ChatSpeaker hiện đang ở trong kênh.
- Trả về: array< string >
Gửi tin nhắn hệ thống
- Mô tả: Gửi một thông điệp từ "System" ChatSpeaker đến kênh.
- Trả về: void
Đăng kýFilterMessageFunction
- Mô tả: Đăng nhập một chức năng lọc, func , được xác định bởi functionId đối với kênh. Chức năng lọc sẽ được gọi với tên functionId , 8
- Trả về: void
- Ví dụ:
-- Sao chép ví dụ này vào một ModuleScript trong thư mục ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Máy cắt lát thịt xông trang bị
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
Huỷ đăng kýFilterMessageFunction
- Mô tả: Không đăng nhập một chức năng lọc (đăng ký bởi RegisterFilterMessageFunction) có nhận dạng, functionId .
- Trả về: void
Đăng nhập
- Mô tả: Đăng nhập một chức năng của hành động, func , được xác định bởi functionId trong trò chuyện. Trước khi
- Trả về: void
- Ví dụ:
-- Sao chép ví dụ này vào một ModuleScript trong thư mục ChatModule.
-- Lọc này lọc một từ khóa, và nếu thành công, thiết lập màu chat của tin nhắn
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- màu xanh lá
local function doFilter(speaker, messageObject, channelName)
-- Kiểm tra xem liệu thông điệp có chứa từ khóa
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Loại bỏ (bộ lọc) từ khóa khỏi tin nhắn, cũng như đặt màu ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Tạo một kênh và đăng ký chức năng lọc
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Huỷ đăng ký quá trình
- Mô tả: Unregisters a command processor (đăng ký bởi RegisterProcessCommandsFunction) given the identifier, functionId .
- Trả về: void
Sự kiện
Tin nhắn đã đăng
- Mô tả:: Khi một thông điệp được đăng trên kênh.
Người bạn đã tham gia
- Mô tả:: Khi một Speaker trò chuyện tham gia kênh.
Loa bên trái
- Mô tả:: Khi một Speaker trò chuyện rời khỏi kênh.
Tắt tiếng nói
- Mô tả:: Khi một Speaker trò chuyện đã bị tắt trong kênh.
Người phát thanh bị tắt
- Mô tả:: Khi một Speaker trò chuyện được bỏ mute.