

Роблокс студио, команда чата изменяет текст неправильно

Сам скрипт работает, но изменяет текст не на то, что написано в команде, а на пробел. Как исправить?
В вашем скрипте на Lua для Roblox Studio есть обработчик событий `Chatted`, который проверяет, начинается ли сообщение в чате с команды "/set diamonds". Если да, то он пытается присвоить значение переменной `v` текстовому полю `Amount.Text`, находящемуся по указанному пути в GUI игрока. Однако вы говорите, что вместо ожидаемого результата текст заменяется пробелом.
Давайте рассмотрим ваш код:
local Command = "/set diamonds "
local plr = script.Parent.Parent.Parent
plr.Chatted:Connect(function(msg)
if msg:sub(1, Command:len()):lower() == Command then
local v = msg:sub(15, Command:len()):lower()
plr.PlayerGui.MainLeft.Currency.Diamonds.Diamonds.Amount.Text = v
end
end)
Проблема кажется связанной с тем, как вы извлекаете значение `v` из сообщения. Вы используете `msg:sub(15, Command:len())`, что берёт подстроку из `msg`, начиная с 15-го символа до длины `Command`. Но поскольку вы добавили пробел после команды в `Command`, его длина на один символ больше, чем нужно, и это может быть частью проблемы.
Чтобы исправить это, нужно корректно извлечь число из сообщения. Если команда начинается с начала строки и идёт до 15-го символа, то число должно начинаться сразу после команды:
local v = msg:sub(Command:len()+1):lower()
Здесь `Command:len()+1` указывает на начало числа, которое следует сразу за командой "/set diamonds ".
Вот исправленный вариант:
local Command = "/set diamonds "
local plr = script.Parent.Parent.Parent
plr.Chatted:Connect(function(msg)
if msg:sub(1, Command:len()):lower() == Command then
local v = msg:sub(Command:len()+1) -- Забираем строку после команды
plr.PlayerGui.MainLeft.Currency.Diamonds.Diamonds.Amount.Text = v
end
end)
Теперь `v` будет содержать подстроку сообщения, следующую сразу за командой, без приведения к нижнему регистру, так как предполагается, что это число, и регистр для чисел не важен.