Chat
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
บริการ แชท เป็นที่เก็บรหัส Luau ที่รับผิดชอบในการดำเนินการระบบ แชทเก่าคล้ายกับ StarterPlayerScripts วัตถุเริ่มต้นเช่น Scripts และ ModuleScripts จะถูกสอดเข้าไปในบริการ
สรุป
คุณสมบัติ
อวาตาร์
สลับว่ากรอบแชทเริ่มต้นควรโหลดอัตโนมัติเมื่อเกมทำงาน
วิธีการ
เปิดใช้งานอีเวนต์ Chat.Chatted ด้วยพารามิเตอร์ที่ระบุไว้ในวิธีนี้
เรียกฟังก์ชันการโทรกลับแชทที่ลงทะเบียนโดย RegisterChatCallback ใช้โดยระบบแชท Luau
ลงทะเบียนฟังก์ชันที่จะเรียกในการเรียกร้องของบางอีเวนต์ระบบแชท ( InvokeChatCallback ).
ปรับแต่งตั้งค่าต่างๆ ของฟองแชทในเกม
จะส่งคืนค่าเท็จหากผู้เล่นที่มี Player.UserId ที่กำหนดไว้ไม่สามารถแชทได้เนื่องจากการตั้งค่าบัญชีของพวกเขา
จะส่งคืนค่าเท็จหากผู้ใช้ทั้งสองไม่สามารถสื่อสารได้เนื่องจากการตั้งค่าบัญชีของพวกเขาไม่อนุญาต
กรองสตริงที่ส่งจากผู้เล่นไปยังผู้เล่นอีกคนโดยใช้การกรองที่เหมาะสมกับการตั้งค่าบัญชีผู้เล่น
กรองสตริงที่ส่งจากผู้เล่นที่มีจุดประสงค์เพื่อการออกอากาศไปยังเป้าหมายเฉพาะไม่ จำกัด มากกว่า Chat:FilterStringAsync()
อีเวนต์
จะเกิดไฟไหม้เมื่อ Chat:Chat() ถูกเรียก
คุณสมบัติ
BubbleChatEnabled
หากเป็นจริง การส่งข้อความในแชทจะทำให้ฟองแชทปรากฏขึ้นเหนือผู้เล่น Player.Characterพฤติกรรมนี้สามารถเปิดใช้งานได้โดยการกดเลือกช่องนี้โดยตรงใน Studio หรือโดยใช้ LocalScript :
local ChatService = game:GetService("Chat")ChatService.BubbleChatEnabled = true
ต้องทำบนไคลเอนต์เท่านั้น การสลับค่านี้ในด้านเซิร์ฟเวอร์ Script จะไม่มีผล
วิธีการ
Chat
ฟังก์ชันการแชทจะเรียกการเหตุการณ์ Chat.Chatted ด้วยพารามิเตอร์ที่ระบุไว้ในวิธีนี้
โดยค่าเริ่มต้นมี ภายในวัตถุของผู้เล่นแต่ละคนชื่อ BubbleChat ซึ่งทำให้ป้ายโฆษณาที่คล้ายกับการสนทนาปรากฏขึ้นเหนือส่วนหรือตัวอักษร เมื่อเหตุการณ์การสนทนาถูกกระตุ้น
หมายเหตุ: เนื่องจากกล่องโต้ตอบถูกควบคุมโดยสคริปท์ท้องถิ่นคุณจะไม่สามารถเห็นกล่องโต้ตอบใด ๆ ที่สร้างขึ้นจากวิธีนี้ได้หากคุณไม่ได้ทำงานในโหมด เล่นเดี่ยว
พารามิเตอร์
ตัวอย่างที่เป็นส่วนหรือตัวละครที่กล่องโต้ตอบ BubbleChat ควรปรากฏข้างบน
สตริงข้อความที่กำลังแชท
An Enum.ChatColor ระบุสีของข้อความแชท
ส่งค่ากลับ
ตัวอย่างโค้ด
The below example would create a part in Workspace and cause it to exclaim "Blame John!"
local ChatService = game:GetService("Chat")
local part = Instance.new("Part")
part.Anchored = true
part.Parent = workspace
ChatService:Chat(part, "Blame John!", "Red")
InvokeChatCallback
การเรียกใช้ ChatCallback จะเรียกฟังก์ชันที่ลงทะเบียนโดย RegisterChatCallback โดยให้ตัวเลือกฟังก์ชันและอาร์กิวเมนต์ที่จะส่งฟังก์ชันจะส่งคืนผลลัพธ์ของฟังก์ชันที่ลงทะเบียน หรือเสนอข้อผิดพลาดหากไม่มีฟังก์ชันที่ลงทะเบียนแล้ว
ฟังก์ชันนี้เรียกโดยระบบแชท Luau เพื่อให้การโทรกลับแชทสามารถลงทะเบียนได้เพื่อเปลี่ยนพฤติกรรมของคุณสมบัติบางอย่างยกเว้นที่คุณกำลังแทนที่ระบบแชท Luau เริ่มต้นด้วยระบบแชทของคุณเองคุณไม่ควรต้องเรียกฟังก์ชันนี้คุณสามารถอ่านเกี่ยวกับฟังก์ชันการโทรกลับที่แตกต่างกันได้ที่ Chat:RegisterChatCallback()
พารามิเตอร์
ประเภทของการโทรกลับที่จะเรียก
อาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชัน callback ที่ลงทะเบียน
ส่งค่ากลับ
ค่าที่ส่งกลับโดยฟังก์ชันที่ลงทะเบียนกับ ChatCallbackType ที่กำหนด
RegisterChatCallback
การลงทะเบียนสายเรียกแชทจะผูกฟังก์ชันกับอีเวนต์ของระบบแชทบางอย่างเพื่อมีผลต่อพฤติกรรมของระบบแชท Luauอาร์กิวเมนต์แรกกำหนดเหตุการณ์ (โดยใช้ enum Enum.ChatCallbackType) ที่อาร์กิวเมนต์ที่สอง, ฟังก์ชัน, จะผูกไว้ระบบแชท Luau เริ่มต้นใช้ InvokeChatCallback เพื่อเรียกใช้ฟังก์ชันที่ลงทะเบียนไว้การลงทะเบียนคอลเลกชันการโทรกลับเฉพาะเซิร์ฟเวอร์หรือเฉพาะไคลเอนต์บนเพื่อนที่ไม่ใช่เซิร์ฟเวอร์หรือไคลเอนต์จะทำให้เกิดข้อผิดพลาดส่วนต่อไปอธิบายถึงวิธีที่ฟังก์ชันที่ลงทะเบียนจะถูกใช้
ในการสร้างหน้าต่างแชทOnCreatingChatWindow
สำหรับลูกค้าเท่านั้นเรียกก่อนที่ไคลเอนต์จะสร้างหน้าต่างแชทต้องส่งกลับตารางการตั้งค่าที่จะรวมเข้ากับข้อมูลที่ส่งคืนโดยโมดูล ChatSettings
บนแบบฟอร์มรูปแบบข้อความลูกค้า
สำหรับลูกค้าเท่านั้นเรียกก่อนที่ไคลเอนต์จะแสดงข้อความ (ไม่ว่าจะเป็นข้อความแชทผู้เล่น ข้อความระบบ หรือคำสั่ง /me)ฟังก์ชันนี้ถูกเรียกด้วยวัตถุข้อความและอาจ (หรืออาจไม่) คืนตารางที่จะรวมเข้ากับ message.ExtraData
บนไคลเอนต์ส่งข้อความ
ไม่ได้เรียกใช้ในเวลานี้
บนเซิร์ฟเวอร์ที่ได้รับข้อความ
เฉพาะเซิร์ฟเวอร์เท่านั้นเรียกเมื่อเซิร์ฟเวอร์ได้รับข้อความจากลำโพง (โปรดทราบว่าลำโพงอาจไม่จำเป็นต้องเป็นการแชท Player )คอลเลกชันนี้เรียกกับวัตถุข้อความฟังก์ชันสามารถทำการเปลี่ยนแปลงต่อวัตถุข้อความเพื่อเปลี่ยนวิธีการที่ข้อความจะถูกประมวลผล ต้องส่งคืนวัตถุข้อความเพื่อให้การโทรกลับนี้ทำอะไรได้: การตั้งค่าคอลเลกชันนี้สามารถอนุญาตให้เซิร์ฟเวอร์สามารถทำได้เช่น:
- ตั้ง message.ShouldDeliver เป็น false เพื่อยกเลิกการส่งข้อความไปยังผู้เล่น (มีประโยชน์สำหรับการใช้รายการห้ามแชท)
- รับ/ตั้งชื่อสีของลำโพง ( message.ExtraData.NameColor , Color3) บนพื้นฐานของข้อความต่อข้อความ
พารามิเตอร์
การเรียกคืนที่ฟังก์ชันจะลงทะเบียน (สิ่งนี้กำหนดวิธีที่ฟังก์ชันถูกเรียก)
ฟังก์ชันที่จะเรียกเมื่อ callback ถูกเรียกโดยใช้ แชท:InvokeChatCallback
ส่งค่ากลับ
SetBubbleChatSettings
ฟังก์ชันนี้ปรับแต่งการตั้งค่าต่างๆ ของบับเบิ้ลแชทในเกม
ก่อนที่จะใช้สิ่งนี้ ตรวจสอบให้แน่ใจว่าแชทฟองอากาศถูกเปิดใช้งานโดยการตั้งค่า Chat.BubbleChatEnabled เป็นจริง
อาร์กิวเมนต์การตั้งค่าเป็นตารางที่มีกุญแจเป็นชื่อการตั้งค่าที่คุณต้องการแก้ไขและค่าเป็นสิ่งที่คุณต้องการเปลี่ยนการตั้งค่าเหล่านี้โปรดทราบว่าคุณไม่จำเป็นต้องรวมทั้งหมดในอาร์กิวเมนต์การตั้งค่าโดยการขาดบางอย่างจะทำให้พวกเขาเก็บค่าเริ่มต้นไว้
ฟังก์ชันนี้เป็นเฉพาะด้านไคลเอนต์เท่านั้น การพยายามเรียกใช้บนเซิร์ฟเวอร์จะทำให้เกิดข้อผิดพลาด
พารามิเตอร์
ตารางการตั้งค่า
ส่งค่ากลับ
ตัวอย่างโค้ด
When run from a LocalScript, this snippet will make all the chat bubbles appear with bigger text under a different font and a light blue background. Note that all the other settings will keep their default value.
local ChatService = game:GetService("Chat")
ChatService:SetBubbleChatSettings({
BackgroundColor3 = Color3.fromRGB(180, 210, 228),
TextSize = 20,
Font = Enum.Font.Cartoon,
})
If you want to reset the bubble chat to its default look, you can call this function with an empty table, because any setting you omit from the argument will result in it returning to its default value:
local ChatService = game:GetService("Chat")
ChatService:SetBubbleChatSettings({})
CanUserChatAsync
จะส่งคืนค่าเท็จหากผู้เล่นที่มี Player.UserId ที่กำหนดไว้ไม่สามารถแชทได้เนื่องจากการตั้งค่าบัญชีของพวกเขา
พารามิเตอร์
ส่งค่ากลับ
CanUsersChatAsync
จะส่งคืนค่าเท็จหากผู้ใช้ทั้งสองไม่สามารถสื่อสารได้เนื่องจากการตั้งค่าบัญชีของพวกเขาไม่อนุญาต
พารามิเตอร์
ส่งค่ากลับ
FilterStringAsync
คําเตือนการลดลงบางส่วน : เรียกฟังก์ชันนี้จากไคลเอนต์โดยใช้ LocalScript จะถูกลบออกในอนาคตการกรองข้อความควรทำจาก Script บนเซิร์ฟเวอร์โดยใช้ TextService:FilterStringAsync() พิมพ์
เกมที่ไม่ได้กรองข้อความที่สร้างโดยผู้เล่นอย่างถูกต้องอาจต้องเผชิญกับการดำเนินการการควบคุมโปรดตรวจสอบให้แน่ใจว่าเกมกรองข้อความอย่างถูกต้องก่อนเผยแพร่
FilterStringAsync กรองสตริงโดยใช้การกรองที่เหมาะสมสำหรับการส่งและรับผู้เล่นหากสตริงที่กรองจะใช้สำหรับข้อความถาวร เช่น ชื่อร้านค้า เขียนบนแผ่นจารึก ฯลฯ ควรเรียกฟังก์ชันด้วยผู้เขียนทั้งส่งและรับ
ฟังก์ชันนี้ควรใช้ทุกครั้ง ที่ผู้เล่นสามารถใส่ข้อความที่กําหนดเองใน บริบทใดก็ได้ โดยใช้ มากที่สุด ตัวอย่างข้อความที่จะถูกกรอง:
- ข้อความแชทที่กําหนดเอง
- ชื่อตัวละครที่กำหนดเอง
- ชื่อสำหรับร้านค้าในเกมสไตล์ไทคูน
พารามิเตอร์
สตริงดิบที่จะถูกกรองตามที่ผู้เล่นป้อนไว้อย่างถูกต้อง
ผู้เขียนของข้อความ
ผู้รับที่ตั้งใจไว้ของข้อความที่ให้ไว้; ใช้ผู้เขียนหากข้อความยังคงอยู่ (ดูคำอธิบาย)
ส่งค่ากลับ
FilterStringForBroadcast
กรองสตริงที่ส่งจาก playerFrom เพื่อออกอากาศไปยังเป้าหมายโดยเฉพาะ ข้อความที่กรองมีข้อจำกัดมากกว่า Chat:FilterStringAsync()
ตัวอย่างบางส่วนของสถานที่ที่วิธีนี้สามารถใช้ได้:
- ผนังข้อความ
- การกรี๊ดข้ามเซิร์ฟเวอร์
- ป้ายที่สร้างโดยผู้ใช้
การเรียก FilterString จาก LocalScripts จะถูกละทิ้งและจะถูกปิดใช้งานในอนาคตการกรองข้อความควรทำจากด้านเซิร์ฟเวอร์ Scripts โดยใช้ FilterStringAsync
หมายเหตุ: เกมที่ไม่ใช้ฟังก์ชันการกรองนี้สำหรับการแชทที่กําหนดเองหรือข้อความที่ผู้ใช้สร้างขึ้นอาจได้รับการดําเนินการการควบคุม
พารามิเตอร์
สตริงข้อความถูกกรอง
ตัวอย่างของผู้เล่นที่ส่งข้อความ
ส่งค่ากลับ
สตริงข้อความที่กรองแล้ว
ตัวอย่างโค้ด
ตัวอย่างต่อไปนี้แสดงวิธีง่ายๆ ในการใช้ฟังก์ชัน FilterStringForBroadcastตัวอย่างใช้ตัวแปรข้อความเป็นอาร์กิวเมนต์ stringToFilter และผู้เล่นท้องถิ่นเป็นอาร์กิวเมนต์ playerFrom
ตัวอย่างจะพิมพ์ผลลัพธ์ของฟังก์ชันการกรอง, FilteredString
local Players = game:GetService("Players")
local Chat = game:GetService("Chat")
local playerFrom = Players.LocalPlayer
local message = "Hello world!"
-- กรองสตริงและบันทึกผลลัพธ์ในตัวแปร 'FilteredString'
local filteredString = Chat:FilterStringForBroadcast(message, playerFrom)
print(filteredString)