Я пытаюсь создать чат-пузырь над частью. Это должно быть просто, но устаревший Chat:Chat(), как и ожидалось, не работает, но альтернатива TextChatService:DisplayBubble() также не работает.
local part = game.Workspace.Part
game:GetService("TextChatService"):DisplayBubble(part, "Hello world!")
Я пробовал этот точный код буквально везде, как в локальных, так и в серверных сценариях. В настоящее время это скрипт в ServerScriptStorage.
Извините, вы имеете в виду ServerStorage или ServerScriptService?
Удивительная деталь TextChatService:DisplayBubble заключается в том, что он работает только на клиентских сценариях. Этой маленькой детали не было в документации по функции DisplayBubble , а было небольшое примечание в руководстве по использованию текстового чата для NPC.
Итак, вам нужен LocalScript, расположенный в соответствующем контейнере , или скрипт, для которого RunContext установлено значение Client
.
Но мне удалось заставить его работать примерно так:
Настройте свое рабочее пространство следующим образом:
Затем в вашем скрипте:
local tcs = game:GetService("TextChatService")
local prox = script.Parent.ProximityPrompt
local part = script.Parent
prox.Triggered:Connect(function(playerWhoTriggered : Player)
tcs:DisplayBubble(part, string.format("Hello %s", playerWhoTriggered.Name))
end)
Это сработало. Надеюсь, что благодаря этой информации я смогу и дальше правильно использовать эту функцию.
Вопрос: я никогда не видел, чтобы двоеточие использовалось таким образом. Для чего оно там и что это дает?
Ах, playerWhoTriggered : Player
— это Луау (набрал Lua). Двоеточие рядом с объявлением переменной позволяет линтеру узнать, к какому типу/классу принадлежит переменная.
Это в сценарии? Где он находится?