Możesz użyć następujących modułów czatu, aby wspierać działania stron serwera w systemie czatu Legacy, w tym:
- Usługa czatu : Singleton, który zarządza wszystkimi innymi modułami czatu.
- Głośnik czatu : Podmiot, który może tworzyć wiadomości w kanale czatu; każdy Player będzie automatycznie miał głośnik czatu, a boty mogą rozmawiać, tworząc boty czatu.
- Wiadomość czatu : Pojemnik na treść, którą ChatSpeaker wysyła do ChatChannel; zawiera metadane używane do formatowania wiadomości lub dodania dodatkowej funkcjonalności do poleceń.
- Kanał czatu : Kanał, przez który ChatSpeakerzy mogą wymieniać wiadomości czatu; używany również do czatu zespołowego i szeptu czatu.
Usługa czatu
ChatService jest jednorazowym obiektem, który obsługuje zachowanie strony serwera systemu czatu Lua, takie jak ChatChannels i ChatSpeakers.
Wszystkie ModuleScript wewnątrz katalogu Moduły czatu powinny zwrócić funkcję, a ta funkcja zostanie wywołana za pomocą jednostki ChatService.
Metody
Dodaj kanał
- Opis: Tworzy obiekt ChatChannel z podaną nazwą i go zwraca.
- Powroty: Kanał czatu
Usuń kanał
- Opis: Usuń kanał z daną nazwą
- Powroty: puste
Zdobądź kanał
- Opis: Powraca kanał z podaną nazwą lub nil jeśli nie istnieje.
- Powroty: Kanał czatu
Dodaj głośnik
- Opis: Twórz i dodaj głośnika do czatu z daną nazwą, a następnie go zwracaj.
- Powroty: Głośnik czatu
Usuń głośnik
- Opis: Usuwa mówcę z czatu z daną nazwą.
- Powroty: puste
Dostań głośnik
- Opis: Powraca mówca z podaną nazwą lub nil jeśli nie istnieje.
- Powroty: Głośnik czatu
Otrzymaj listę kanałów
- Parametry: żadne
- Opis: Zwraca listę nazw wszystkich nieprywatnych kanałów w czacie.
- Powroty: array< string >
Zdobądź listę kanałów dołączania automatycznego
- Parametry: żadne
- Opis: Zwraca listę nazw wszystkich kanałów w czacie z ustawieniem AutoJoin na prawdę.
- Powroty: array< string >
Funkcja rejestrująca filtr wiadomości
- Opis: Rejestruje funkcję filtra do czatu oznaczony przez functionId .Wszelkie zmiany w wiadomości utrzymają się i zostaną wyświetlone, gdy wiadomość przejdzie przez wszystkie inne funkcje filtrowania.Funkcja ta otrzymuje nazwę głośnik, obiekt wiadomości i kanał, z którego pochodzi wiadomość.
- Powroty: puste
- Przykład:
-- Wklej ten przykład do ModulesScript w folderze ChatModule.
-- Ten przykład filtruje słowo kluczowe, a jeśli zakończy się sukcesem, ustawia kolor czatu wiadomość
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- zielony
local function doFilter(speaker, messageObject, channelName)
-- Sprawdź, czy wiadomość zawiera słowo kluczowe
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Usuń (filtruj) słowo kluczowe z wiadomość, ustawiając również 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
Funkcja Niezarejestrowany filtr wiadomości
- Opis: Rejestruje funkcję filtra (zarejestrowaną przez RegisterFilterMessageFunction) podany jej identyfikator, functionId .
- Powroty: puste
Funkcja komend rejestracyjnych procesu
- Opis: Rejestruje funkcję polecenia procesu do czatu zidentyfikowanego przez functionId .Zanim wiadomość zostanie przefiltrowana, przejdzie przez func (i inne funkcje zarejestrowane przez tę)Funkcja func powinna sprawdzić, czy wiadomość wzywa polecenie.Jeśli tak, wykonaj akcję polecenia i zwróć prawdę.Powrót prawdy wskazuje, że wiadomość rzeczywiście była poleceniem i nie powinna być wyświetlana.Funkcję można odinstalować za pomocą funkcji UnregisterProcessCommandsFunction.
- Powroty: puste
- Przykład:
-- Wklej ten przykład do ModulesScript w folderze ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Sprzęt do kawałka pizzy pepperoni
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
Funkcja poleceń niezarejestrowania procesu
- Opis: Rejestruje procesor komend (zarejestrowany przez Rejestrowanie komend funkcji ) podany identyfikator, functionId .
- Powroty: puste
Wydarzenia
Dodano kanał
- Opis: Ogień, gdy kanał zostanie dodany do czatu.
Kanał usunięty
- Opis: Ogień, gdy kanał zostanie usunięty z czatu.
Dodano mówcę
- Opis: Ogień, gdy dodano mówcę do czatu.
Głośnik usunięty
- Opis: Ogień, gdy głośnik zostanie usunięty z czatu.
Głośnik czatu
A ChatSpeaker to reprezentacja jednej jednostki, która może mówić w ChatChannel.Każdy Player połączony z grą automatycznie ma powiązany ChatSpeaker.Dodatkowe głośniki czatu mogą być zbudowane dla nieużytkowników (takich jak ogłoszenia lub wiadomości wskazówek) za pomocą ChatService:AddSpeaker().
Właściwości
Nazwa
- Opis: Nazwa głośnik, używana do odwoływania się do tego mówcy podczas wzywania wielu innych funkcji.
Metody
Dołącz kanał
- Opis: Dodaje mówcę do kanału z podanym channelName
- Powroty: puste
Opuść kanał
- Opis: Usuwa mówcę z kanału za pomocą podanego channelName
- Powroty: puste
Otrzymaj listę kanałów
- Parametry: Żadne
- Opis: Zwraca listę nazw wszystkich kanałów, w których mówca jest.
- Powroty: array< string >
Jest w kanałach
- Opis: Powraca, czy głośnik jest na kanale z podanym channelName .
- Powroty: bool
Powiedz wiadomość
- Powroty: Wiadomość czatu
Wyślij wiadomość
- Parametry: : , : , : , :
- Opis: Wysyła wiadomość do ChatSpeaker z podaną nazwą fromSpeaker.Jeśli nie ma takiego głośnika w kanał, metoda ta tworzy ostrzeżenie, a głośnik nie zobaczy wiadomości.
- Powroty: puste
Wyślij wiadomość systemową
- Opis: Wysyła wiadomość systemową do ChatChannel z podanym channelName .Jeśli głośnik nie jest na kanał, wiadomość ta stworzy ostrzeżenie, a inni głośnicy w kanale nie zobaczą wiadomości.
- Powroty: puste
Zdobądź gracza
- Parametry: Żadne
- Opis: Powraca obiekt Player związany z głośnik.Jeśli mówca nie jest dla użytkownika (bota), to zwraca to nil .
- Powroty: Player lub nil
Ustaw dodatkowe dane
- Opis: Ustawia niektóre dodatkowe dane dla mówcy pod określonym key .Zawsze gdy głośnik wysyła wiadomość czatu, te dodatkowe dane są dołączone do wiadomości, jeśli żadna nie jest wyraźnie dostarczana z wiadomością.Na przykład umożliwia ustawienie koloru czatu mówcy.
- Powroty: puste
Zdobądź dodatkowe dane
- Opis: Powraca dodatkowe dane związane z danym key , ustawione za pomocą SetExtraData.
- Powroty: Variant
Ustaw kanał główny
- Opis: Ustawia mówcę, aby mówił w podanym kanale. Wysyła Ustawienie kanału głównego.
- Powroty: nil
Wydarzenia
Powiedz wiadomość
Otrzymano wiadomość
Otrzymano wiadomość systemową
- Opis: Strzelany, gdy mówca otrzymuje system wiadomość czatu z kanału czatu z danym .
Dołączono do kanału
KanałLewo
Wyciszony
- Opis: Strzelany, gdy mikrofon jest wyciszony na kanale Chat z podanym channelName na określony czas (jeśli dostarczono).Może lub nie może być dostarczony reason .
Odciszony
Dodatkowe dane zaktualizowane
- Opis: Strzelany, gdy domyślna wartość klucza w dodatkowych danych głośnikzostanie zaktualizowana za pomocą SetExtraData.
Główny kanał ustawień
Wiadomość czatu
Wiadomość ChatMessage to struktura danych reprezentująca wiadomość wysłaną z ChatSpeaker.Zawiera dane o wiadomości, w tym długość tekstu, czy tekst został przefiltrowany przez Roblox, oraz dodatkowe dane o wyglądzie wiadomości.
Właściwości
ID
- Typ: int
- Opis: Unikalny numerowy identyfikator wiadomość.
OdGłośnika
- Typ: string :
- Opis: Nazwa ChatSpeaker, który wysłał wiadomość.
Kanał oryginalny
- Typ: string :
- Opis: Nazwa ChatChannel, z którego pochodzi wiadomość.
Jest filtrowany
- Typ: bool
- Opis: Opisuje, czy wiadomość jest filtrowana przez Roblox (jeśli prawda, wiadomość będzie nil )
Długość wiadomości
- Typ: int
- Opis: Długość wiadomości. Możesz użyć tego, aby wygenerować skróconą strunę, jeśli wiadomość została przefiltrowana.
Wiadomość
- Opis: Tekst wiadomość. Ta właściwość będzie nil jeśli IsFiltered jest prawdą.
Typ wiadomości
- Typ: string :
- Opis: Typ wiadomość. Te typy są opisane w module ChatConstants:
- Możliwe wartości: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"
Czas
Dodatkowe dane
- Typ: słownik< string , Variant>
Kanał czatu
Kanał czatu jest obiektem, który przechowuje dane o pojedynczym kanale, który jest sposobem wymiany wiadomości między Głośnikami czatu.Posiada również właściwości uprawnień dostępu, które określają widoczność wiadomości wraz z tym, czy użytkownicy mogą dołączyć lub opuścić kanał ręcznie (za pomocą poleceń /join lub /leave).
Domyślnie każdy użytkownik ma ChatSpeaker, który jest automatycznie dodawany do kanałów czatu "Wszystko" i "System" (choć "System" jest tylko odczytywany).Jeśli użytkownik jest na Player.Team, będzie miał również dostęp do kanału tylko dla tej Drużyny.
Właściwości
Nazwa
- Typ: string
- Opis: Nazwa kanału, używana do odniesienia się do kanału w innych funkcjach.
Wiadomość powitalna
- Typ: string
- Opis: Wiadomość do wyświetlenia, gdy użytkownik dołącza do kanału.
Dołączalny
- Typ: bool
- Opis: Określa, czy użytkownik może ręcznie dołączyć do kanału za pomocą polecenia /join.Użytkownik nadal może zostać dodany do kanału za pomocą ChatSpeaker:JoinChannel() lub innych środków, nawet jeśli ta właściwość jest fałszywa.
Możliwe do opuszczenia
- Typ: bool
- Opis: Określa, czy użytkownik może ręcznie opuścić kanał za pomocą polecenia /leave.Użytkownik nadal może być usunięty z kanału za pomocą ChatSpeaker:LeaveChannel() lub innych środków, nawet jeśli ta właściwość jest fałszywa.
Automatyczne dołączanie
- Typ: bool
- Opis: Określa, czy gracz ChatSpeaker dołączy automatycznie do kanału po dołączeniu do gry.Głośnicy nieużywający nie będą automatycznie dołączać do kanałów, nawet gdy ta właściwość jest prawdą (możesz użyć ChatSpeaker:JoinChannel(), aby to zrobić).
Prywatny
- Typ: bool
- Opis: Określa, czy kanał zostanie włączony do listy kanałów zwrotnych przez ChatService:GetChannelList().To dotyczy czatów szeptanych i czatów zespołowych.
Metody
Głośnik kopnięcia
- Opis: Usuwa głośnik z danym speakerName z kanału, wysyłając wiadomość zarówno do użytkownika, jak i kanału, z którego użytkownik został wyrzucony.Jeśli zostanie podany reason, powód zostanie uwzględniony w wiadomości.
- Powroty: puste
Wycisz głośnik
- Opis: Zamyka mikrofon z danym speakerName na określony czas w sekundach.Jeśli duration jest nil lub 0, cisza jest nieskończona.Jeśli reason zostanie podane, wysłana zostanie wiadomość na kanał z powodem włączonym.
- Powroty: puste
Odcisz mikrofon
- Opis: Odłącza mikrofon z danym speakerName w kanał.
- Powroty: puste
Czy mikrofon jest wyciszony
- Opis: Opisuje, czy głośnik z danym speakerName jest obecnie wyciszony w kanał.
- Powroty: bool
Zdobądź listę mówców
- Parametry: Żadne
- Opis: Zwraca listę zawierającą wszystkie, jeśli nazwy Głośnik czatu znajdują się obecnie w kanał.
- Powroty: array< string >
Wyślij wiadomość systemową
- Opis: Wysyła wiadomość z "Systemu" ChatSpeaker do kanału.
- Powroty: puste
Funkcja rejestrująca filtr wiadomości
- Opis: Rejestruje funkcję filtra, func , oznaczoną przez functionId do kanału.Funkcja filtrowania zostanie wywołana za pomocą ChatSpeaker, ChatMessage i string nazwy kanału, z którego pochodzi wiadomość.Zmiany w wiadomości utrzymają się i zostaną wyświetlone po przefiltrowaniu.
- Powroty: puste
- Przykład:
-- Wklej ten przykład do ModulesScript w folderze ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Sprzęt do kawałka pizzy pepperoni
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
Funkcja Niezarejestrowany filtr wiadomości
- Opis: Rejestruje funkcję filtra (zarejestrowaną przez RegisterFilterMessageFunction) podany jej identyfikator, functionId .
- Powroty: puste
Funkcja komend rejestracyjnych procesu
- Opis: Rejestruje funkcję polecenia procesu, func , oznaczoną przez functionId do czatu.Zanim wiadomość zostanie przefiltrowana, przejdzie przez func (i inne funkcje zarejestrowane przez tę)Funkcja func powinna sprawdzić, czy wiadomość wzywa polecenie.Jeśli tak, wykonaj akcję polecenia i zwróć prawdę.Powrót prawdy wskazuje, że wiadomość rzeczywiście była poleceniem i nie powinna być wyświetlana.Funkcję można odinstalować za pomocą funkcji UnregisterProcessCommandsFunction.
- Powroty: puste
- Przykład:
-- Wklej ten przykład do ModulesScript w folderze ChatModule.
-- Ten przykład filtruje słowo kluczowe, a jeśli zakończy się sukcesem, ustawia kolor czatu wiadomość
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- zielony
local function doFilter(speaker, messageObject, channelName)
-- Sprawdź, czy wiadomość zawiera słowo kluczowe
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Usuń (filtruj) słowo kluczowe z wiadomość, ustawiając również ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Utwórz kanał i zarejestruj funkcję filtrowania
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Funkcja poleceń niezarejestrowania procesu
- Opis: Rejestruje procesor komend (zarejestrowany przez funkcję RegisterProcessCommands) podany identyfikator, functionId .
- Powroty: puste
Wydarzenia
Wiadomość opublikowana
- Opis: Ogień, gdy wiadomość zostanie opublikowana w kanał.
Głośnik dołączony
- Opis: Ogień, gdy ChatSpeaker dołączy do kanału.
GłośnikLeft
- Opis: Ogień, gdy Głośnik czatu opuści kanał.
Głośnik wyciszony
- Opis: Ogień, gdy Głośnik czatu został wyciszony w kanał.
Głośnik wyciszony
- Opis: Ogień, gdy Głośnik czatu jest wyłączony.