Roblox Lua聊天管理员脚本!kill击杀玩家功能求助
Roblox 聊天!kill管理员指令实现方案
现有代码问题
- 硬编码固定击杀目标为
Woozy,未解析指令携带的玩家名参数 - 匹配规则无边界限制,聊天内容任意位置出现
!kill就会触发,容易误判 - 无管理员权限校验,所有玩家都能触发击杀逻辑
- 缺少目标存在、角色加载状态校验,运行时极易抛出报错
- 使用了已废弃的小写
connect事件绑定写法,兼容性差
完整实现代码
将以下脚本作为服务端脚本放入ServerScriptService目录即可运行,不要放到客户端容器里,否则会受权限限制无法生效:
local Players = game:GetService("Players") -- 管理员白名单,替换为有权限使用指令的玩家UserId local ADMIN_ALLOWLIST = { [000000000] = true -- 示例值,改成你自己的账号UserId } Players.PlayerAdded:Connect(function(joinPlayer) joinPlayer.Chatted:Connect(function(chatContent) -- 非管理员直接拦截 if not ADMIN_ALLOWLIST[joinPlayer.UserId] then return end -- 从消息开头匹配!kill指令,提取后面跟随的目标玩家名,忽略多余空格 local targetInput = chatContent:match("^!kill%s+(.+)$") if not targetInput then return end targetInput = string.lower(targetInput) -- 查找目标玩家:先精确匹配用户名/显示名,再做模糊匹配 local targetPlayer = nil for _, iterPlayer in Players:GetPlayers() do local lowerName = string.lower(iterPlayer.Name) local lowerDisName = string.lower(iterPlayer.DisplayName) if lowerName == targetInput or lowerDisName == targetInput then targetPlayer = iterPlayer break end end if not targetPlayer then for _, iterPlayer in Players:GetPlayers() do local lowerName = string.lower(iterPlayer.Name) local lowerDisName = string.lower(iterPlayer.DisplayName) if string.find(lowerName, targetInput) or string.find(lowerDisName, targetInput) then targetPlayer = iterPlayer break end end end -- 未找到目标直接终止逻辑 if not targetPlayer then return end -- 等待目标角色加载完成,获取Humanoid实例执行击杀 local targetChar = targetPlayer.Character or targetPlayer.CharacterAdded:Wait() local targetHumanoid = targetChar:FindFirstChildOfClass("Humanoid") if not targetHumanoid then return end targetHumanoid.Health = 0 end) end)
可选优化点
- 可以加指令触发反馈,比如找不到目标时给管理员发送聊天提示
- 可以扩展支持多目标、全体击杀等参数逻辑
- 可以加指令冷却,避免短时间重复触发报错
内容的提问来源于stack exchange,提问作者Woozy
相关产品推荐
相关产品推荐

