You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Roblox的LocalScript中实现自定义聊天指令功能

Roblox LocalScript 自定义聊天指令编写指南

首先说明:你提供的参考代码默认是服务端Script的写法,如果要放到LocalScript中运行,需要调整部分监听逻辑,两种场景的实现方式如下:

基础逻辑说明

  • 自定义聊天指令核心是监听玩家的Chatted聊天事件,匹配前缀和指令关键字后执行对应逻辑
  • Admins数组用于配置可触发指令的管理员用户名,空的话所有玩家都能使用
  • Prefix为指令前缀,示例中使用/,可自行替换为!、#等符号

参考代码(原服务端版本)

适合放到ServerScriptService下的Script中运行,全服生效:

local Admins = {""} -- 填入管理员用户名,比如{"玩家1","玩家2"}
local Prefix = "/" 

game.Players.PlayerAdded:Connect(function(plr)
    for _,v in pairs(Admins) do
        if plr.Name == v then
            plr.Chatted:Connect(function(msg)
                local loweredString = string.lower(msg)
                local args = string.split(loweredString," ")
                -- 行走速度修改指令,格式:/walkspeed 玩家名前缀 速度值
                if args[1] == Prefix.."walkspeed" then
                    for _,player in pairs(game:GetService("Players"):GetPlayers()) do
                        if string.sub(string.lower(player.Name), 1, string.len(args[2])) == string.lower(args[2]) then
                            -- 增加存在性判断避免报错
                            if player.Character and player.Character:FindFirstChild("Humanoid") then
                                player.Character.Humanoid.WalkSpeed = tonumber(args[3]) or 16
                            end
                        end
                    end
                end
                -- 其他指令可以在这里继续添加if分支扩展
            end)
        end
    end
end)

LocalScript适配版本(仅本地生效/配合远程事件用)

适合放到StarterPlayerScripts下运行,仅对本地玩家生效:

local LocalPlayer = game.Players.LocalPlayer
local Prefix = "/" 

-- 不需要管理员校验可以直接删掉这部分逻辑
local Admins = {""}
local isAdmin = false
for _,v in pairs(Admins) do
    if LocalPlayer.Name == v then
        isAdmin = true
        break
    end
end

if isAdmin then
    LocalPlayer.Chatted:Connect(function(msg)
        local loweredString = string.lower(msg)
        local args = string.split(loweredString," ")
        if args[1] == Prefix.."walkspeed" then
            local targetPlayer
            for _,player in pairs(game.Players:GetPlayers()) do
                if string.sub(string.lower(player.Name), 1, string.len(args[2])) == string.lower(args[2]) then
                    targetPlayer = player
                    break
                end
            end
            if targetPlayer and targetPlayer.Character and targetPlayer.Character:FindFirstChild("Humanoid") then
                targetPlayer.Character.Humanoid.WalkSpeed = tonumber(args[3]) or 16
            end
            -- 如果要实现全服生效,在这里触发RemoteEvent通知服务端做校验和修改即可
        end
    end)
end

注意事项

  • 全服生效的指令不要完全交给LocalScript处理,必须在服务端做权限和参数校验,避免玩家恶意篡改数据
  • 新增指令只需要在Chatted事件回调里加对应的if判断分支即可,比如/kick、/jumpboost之类的指令都可以用相同逻辑扩展

内容的提问来源于stack exchange,提问作者Suno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:12:02