Możesz użyć następujący moduły czatu, aby wspierać stronę serwera zachowań z Legacy Chat System włączając w to:
- ChatService : Jeden z singletonów zarządzający wszystkimi innymi modułami czatu.
- ChatSpeaker : Entitas, która może tworzyć wiadomości w Kanałach Czatu; każdy Player będzie automatycznie mieć ChatSpeaker i boty mogą czatować, tworząc ChatSpeakers.
- ChatMessage : Container dla treści, której ChatSpeaker wysyłuje do kanału czatu; zawiera metadane używane do formatowania wiadomości lub dodawania dodatkowych funkcji do komend.
- Kanał czatu : Kanał, przez który można wymieniać wiadomości czatu; używany również do czatu zespołu i czatu wątpliwości.
ChatService
ChatService jest jednym z obiektów singielonowych, które zarządzają zachowaniem strony serwera z systemu czatu Lua, takich jak Kanały czatu i Głośniki czatu.
Wszystkie ModuleScript s w Katalogu Modułów Czatu powinny zwrócić funkcję, a funkcja ta będzie nazywać się z funkcją ChatService.
Metody
Dodaj kanał
- Opis: Stworza obiekt ChatChannel z podanym nazwą i w zwrot.
- Wróca: Kanal czatu
Usuń kanał
- Opis: Usuń kanał z podanym nazwą
- Wynik: void
Zdobądź kanał
- Opis: Wydaje kanał z podanym imieniem lub zero, jeśli nie istnieje.
- Wróca: Kanal czatu
Dodajgłośnik
- Opis: Utwórz i dodaj głośnik do czatu z podanym imieniem, a następnie wróć.
- Wrócić: Głośnik czatu
Usuńgłośnik
- Opis: Usunie głośnik z czatu z podanym imieniem.
- Wynik: void
Zdobądź głośnik
- Opis: Wyprowadza głośnik z podanym imieniem lub zerem, jeśli nie istnieje.
- Wrócić: Głośnik czatu
Zdobądź listę kanałów
- Parametry: żadne
- Opis: Wróci lista imion wszystkich nieprywatnych kanałów w czacie.
- Wyniki: lista< string >
Zdobądź listę kanałów
- Parametry: żadne
- Opis: Wróci lista imion wszystkich kanałów w czacie z ustawionym na prawdę AutoJoin.
- Wyniki: lista< string >
Zarejestruj funkcję MessageFilter
- Opis: Rejestruje funkcję filtra do czatu zidentyfikowanego przez functionId . Wszelkie zmiany w wiadomości będą trwać i wyświetlane, gdy wiadomość dotrze do wszystkich innych funkcji filtra. Ta funkcja jest przekazywana imieniu głośnik, obiektowi wiadomości i kanału, z którego pochodzi wiadomość.
- Wynik: void
- przykład:
-- Wklej ten przykład do MenuScript w katalogu ChatModule.
-- Ten przykład sfiltrowuje kluczowe słowo, a jeśli jest to powodem sukcesu, 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ń (filtr) słowo kluczowe z wiadomość, ustawiając również kolor czatu
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Nie rejestrujFilterMessageFunction
- Opis: Nie rejestruje funkcji filtra (zarejestrowanej przez RegisterFilterMessageFunction) z jego identyfikatorem, functionId .
- Wynik: void
Rejestracja procesu komendy
- Opis: Rejestruje funkcję komendy procesu do czatu zidentyfikowanego przez functionId . Przed wysłaniem wiadomości będzie przetwarzana przez func (i inne funkcje zarejestrowane przez tę). Funkcja 0> func
- Wynik: void
- przykład:
-- Wklej ten przykład do MenuScript w katalogu ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Nóż do 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
Niezarejestrowanie funkcji komendy
- Opis: Od rejestratora usuwa się procesor zeszytu rozkładu (zarejestrowany przez RegisterProcessCommandsFunction ) zidentyfikowanym przez identyfikator, functionId .
- Wynik: void
Wydarzenia
DodanyKanał
- Opis: Ognia się, gdy kanał zostanie dodany do czatu.
Kanał usunięty
- Opis: Ognia się, gdy kanał zostanie usunięty z czatu.
Dodano Głośnik
- Opis: Pojawia się, gdy dodany jest głośnik do czatu.
Głośnik usunięty
- Opis: Wystrzela, gdy głośnik zostanie usunięty z czatu.
Głośnik czatu
A ChatSpeaker jest przedstawieniem jednej entytety, która może mówić w Kanałe채팅. Każdy Player połączony z grą ma automatycznie powiązanegoChatSpeaker. DodatkoweChatSpeakers mogą być zbudowane dla nieużytkowników (takich jak ogłosiciele lub wiadomości na źle) używając 2>ChatService:DodajSpeaker()
Właściwości
Nazwa
- Opis: Imię głośnik, używanej do odniesienia się do tej głośnicy podczas wzywania wielu innych funkcji.
Metody
DołączKanał
- Opis: Dodaje głośnik do kanału z podanym channelName
- Wynik: void
Opuść kanał
- Opis: Usunie głośnik z kanału z podanym channelName
- Wynik: void
Zdobądź listę kanałów
- Parametry: Żaden
- Opis: Wróci lista imion wszystkich kanałów, w których się mówca znajduje.
- Wyniki: lista< string >
Czy w kanałach
- Opis: Wskazuje, czy głośnik jest w kanałze z podanym channelName .
- Wyniki: bułka
Powiedz wiadomość
- Parametry: string : message , 0> Library.ciąg0> : 3> chanネーム3> , słownik< 6> Library.ciąg6> , wariant> 9> extraData 9>
- Wróca: CzatMessage
Wyślij wiadomość
- Parametry: string : message , 0> Library.ciąg0> : 3> kanał3> , 6> Library.ciąg6> : 9> fromSpeaker 9>
- Opis: Wysyłuje wiadomość do ChatSpeaker z podanym imieniem fromSpeaker. Jeśli takiego mówiciela nie ma w kanał, ten metod wygeneruje ostrzeżenie i mówiciel nie zobaczy wiadomości.
- Wynik: void
WyślijSystemMessage
- Opis: Wysyłuje komunikat systemu do Kanału Czatu z podanym channelName . Jeśli głośca nie jest w kanałach, to ten komunikat stworzy ostrzeżenie i inni głoścy w kanałach nie zobaczą tego wiadomość.
- Wynik: void
Zdobądź gracza
- Parametry: Żaden
- Opis: Wrócić obiekt Player z powiązanym ze sprakerem. Jeśli spraker nie jest dla użytkownika (bot), to to zwraca nil .
- Wyniki: Player lub nil
UstawDodatkoweDane
- Opis: Ustawia niektóre dodatkowe dane dla głośnika pod określonym key . Kiedy głośnik wysyła ChatMessage, to dodatkowe dane są przywiązane do wiadomości, jeśli żadna nie jest wyraźnie zapewniona z wiadomość. Na przykład, pozwala to ustawiaćkolor czatu głośnika.
- Wynik: void
Zdobądź dodatkowe dane
- Opis: Wynika dodatkowe dane związane z podanym key , ustawione za pomocą SetExtraData.
- Wrócić: Variant
Ustaw główny kanał
- Opis: Ustawia głośnik, aby rozmawiał w dostępnym kanał. Włącza MainChannelSet.
- Wyniki: nil
Wydarzenia
Powiedziano
Otrzymano wiadomość
OtrzymanoSystemMessage
- Opis: Wystrzelony, gdy głośnik otrzymuje system ChatMessage od Kanału czatu z podanym 0>channelName0> .
Dołączony kanał
Kanał lewy
Zmutowany
- Parametry: string : channelName , 0> Library.ciąg0> : 3> reason = nil3> , 6> int6> : 9> duration 9> = 0
- Opis: Wystrzelono, gdy głośnik jest zmutowany na Kanałe czatu z channelName dla określonej długości (jeśli dotyczy). Może lub nie ma dostarczonego 0> reason0> (dostarczone może lub nie może być).
Niezmutowany
Aktualizacja danych
- Opis: Zainicjowano po aktualizacji domyślnej wartości klucza w dodatkowych danach odtwarzтеля za pomocą SetExtraData.
Zestaw głównych kanałów
- Opis: Wystrzelony, gdy kanał główny głośników zostanie zmieniony na Kanał czatu z daneym channelName .
Wiadomość czatu
A ChatMessage jest strukturą danych przedstawiającą wiadomość wysłaną z ChatSpeaker. zawiera dane o wiadomości, w tym długość tekstu, czy tekst został sfiltrowany przez Roblox, i dodatkowe dane o wyglądzie wiadomości.
Właściwości
identyfikator
- Typ: int
- Opis: Unikalny identyfikator liczbowy dla wiadomość.
Odgłośnik
- Typ:: string :
- Opis: Imię ChatSpeaker, który wysłał wiadomość.
Początkowy kanał
- Typ:: string :
- Opis: Imię kanału czatu, z którego pochodzi wiadomość.
CzyFiltrowane
- Typ: bułka
- Opis: Opisuje czy wiadomość jest filtrowana przez Roblox (jeśli tak, to Message będzie nil )
Długość wiadomości
- Typ: int
- Opis: Długość wiadomości. Możesz użyć tego do generowania zaszyfrowanej wiadomości, jeśli wiadomość została sfiltrowana.
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 rodzaje są opisane w modułach ChatCommands:
- Możliwe wartości: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore"6> , 9> "Whisper" 9>
Czas
Dodatkowe dane
- Typ:: 典< string , Variant>
Kanał czatu
ChatChannel jest obiektem, który przechowuje dane o jednym kanale, który jest środkiem, w jaki sposób wiadomości można wymienić między ChatSpeakers . Ma również właściwości dostępu, które określają widoczność wiadomości wraz z tym, czy użytkownicy mogą dołączyć lub opuścić kanał ręcznie (używając
Domyślnie każdy użytkownik ma Głośnik czatu, który jest automatycznie dodany do kanałów czatu „Wszystko” i „System” (chociaż „System” jest tylko czytany). Jeśli użytkownik jest na Player.Team, będzie on również miał dostęp do kanału tylko dla tej drużyny.
Właściwości
Nazwa
- Typ:: string
- Opis: Imię kanału, używane do odniesienia się do kanału w innych funkcjach.
Witaj
- Typ:: string
- Opis: Wiadomość do wyświetlenia, gdy użytkownik dołącza do kanału.
Dołączalny
- Typ: bułka
- Opis: Determines, czy użytkownik może ręcznie dołączyć do kanału używając komendy /join. Użytkownik może nadal być dodany do kanału używając innych metod, nawet jeśli ta właściwość jest fałszywa.
Wyjściowe
- Typ: bułka
- Opis: Określa, czy użytkownik może ręcznie opuścić kanał używając komendy /leave. Użytkownik nadal może być usunięty z kanału używając innych metod, nawet jeśli ta właściwość jest fałszywa.
Automatyczne dołączanie
- Typ: bułka
- Opis: Determines, czy Głośnik czatu gracza będzie automatycznie dołączony do kanału po dołączeniu do gry. Głośniki nieużytkowników nie będą automatycznie dołączać do kanałów, nawet gdy ta właściwość jest prawdziwa (możesz użyć Głośnik:DołączKanał() , aby to zrobić).
Prywatny
- Typ: bułka
- Opis: Determines, czy kanał będzie znajdować się na liście kanałów zwróconych przez ChatService:GetChannelList() . To dla czatów wątkowych i czatów zespołowych.
Metody
Głośnik
- Opis: Usuwa głośnik z kanału, wysyłając wiadomość do użytkownika i kanału, z którego został wyrzucony. Jeśli zostanie dostarczony speakerName, powod powinien być włączony w wiadomości.
- Wynik: void
Głośnik
- Parametry: string : speakerName , 0> Library.ciąg0> : 3> reason = nil3> , 6> int6> 9> duration = 0 9>
- Opis: Wyłącza głośnik z kanału przez określony czas speakerName w duration długości. Jeśli 0> duration0> jest niewielki lub 0, to wyłączenie jest nieokreślone. Jeśli 3> reason 3> zostanie dostarczony, wysyłka zostanie wysłana na kanał z powodem z
- Wynik: void
Odgłośnienie
- Opis: Odblokowuje głośnik z podanym speakerName w kanał.
- Wynik: void
Zmutowany Głośnik
- Opis: Opisuje czy głośnik z tym podanym speakerName jest obecnie w strefie kanał.
- Wyniki: bułka
Zdobądź listę głośników
- Parametry: Żaden
- Opis: W返uje listę zawierającą wszystkie imiona ChatSpeaker obecnie w kanałach.
- Wyniki: lista< string >
WyślijSystemMessage
- Opis: Wysyłuje wiadomość z "System" ChatSpeaker na kanał.
- Wynik: void
Zarejestruj funkcję MessageFilter
- Opis: Rejestruje funkcję filtra, func , zidentyfikowany przez functionId do kanału. Funkcja filtra będzie wywołana z Library.string : imię kanału, z którego pochodzi wiadomość, i Library.string : imię wiadomości, które będzie wyświetlane
- Wynik: void
- przykład:
-- Wklej ten przykład do MenuScript w katalogu ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Nóż do 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
Nie rejestrujFilterMessageFunction
- Opis: Nie rejestruje funkcji filtra (zarejestrowanej przez RegisterFilterMessageFunction) z jego identyfikatorem, functionId .
- Wynik: void
Rejestracja procesu komendy
- Opis: Rejestruje funkcję komendy procesu, func , zidentyfikowaną przez functionId do czatu. Przed wysłaniem wiadomości zostanie przeprowadzona przez nią 0> func
- Wynik: void
- przykład:
-- Wklej ten przykład do MenuScript w katalogu ChatModule.
-- Ten przykład sfiltrowuje kluczowe słowo, a jeśli jest to powodem sukcesu, 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ń (filtr) słowo kluczowe z wiadomość, ustawiając również kolor czatu
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Utwórz kanał i zarejestruj funkcję filtra
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Niezarejestrowanie funkcji komendy
- Opis: Od rejestratora procesora komend (zarejestrowanego przez RegisterProcessCommandsFunction) otrzymuje identyfikator, functionId .
- Wynik: void
Wydarzenia
Wiadomość opublikowana
- Opis: Pojawia się po wysłaniu wiadomości na kanał.
Dołączony głośnik
- Opis: Ognia się, gdy ChatSpeaker dołącza do kanału.
Głośnik LEFT
- Opis: Ognisty kanał, gdy ChatSpeaker opuści kanał.
GłośnikZmutowany
- Opis: Ognisty kiedy ChatSpeaker zostanie zmutowany w kanał.
GłośnikNieZmutowany
- Opis: Wystrzela, gdy ChatSpeaker nie zostanie zmutowany.