目前正在尝试脚本化一个游戏,但我不明白如何调试这段代码
我正在跟着一个关于脚本编写的Youtube教程制作Roblox游戏,但在跟随的过程中,我用来标识值的变量"Status"在某一行(第39行)停止起作用了。我的输出框中显示如下:
21:16:36.197 - 自动备份文件sword game.rbxl被创建
21:16:36.715 - ServerScriptService.MainScript:39: 预期 ']' (以关闭在第37行处的 '['),但得到了 'Status'
21:16:38.617 - ScriptNavigationHandler : 当前没有可用的脚本。
我还没有学习过关于调试代码的内容,但如果有人能指出出错的地方,对我的脚本编写学习之旅将大有帮助。在这场对无形敌人的战斗中学习脚本编写。
-- 定义变量
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")
local MapsFolder = ServerStorage:WaitForChild("Maps")
local Status = ReplicatedStorage:WaitForChild("Status")
local GameLength = 60
-- 游戏循环
while true do
Status.Value = "Waiting for enoughplayers"
repeat wait(1) until game.Players.NumPlayers >=2
Status.Value = "Intermission"
wait(8)
local plrs = {}
for i, player in pairs(game.Players:GetPlayers()) do
if player then
table.insert(plrs,player) -- Add each player into plrs table
end
end
wait(2)
local AvaliableMaps = MapsFolder:GetChildren()
local ChosenMap = AvaliableMaps[math.random(1,#AvailableMaps)]
Status.Value = ChosenMap.Name .. "Chosen"
local ClonedMap = ChosenMap:Clone()
ClonedMap.Parent = workspace
-- 将玩家传送到地图
local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")
if not SpawnPoints then
print("SpawnPoints not found!")
end
local AvailableSpawnPoints = SpawnPoints:GetChildren()
for i, player in pairs(plrs) do
if player then
character = player.Character
if character then
-- 传送他们
character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame
table.remove(AvailableSpawnPoints,1)
-- 给予剑
local Sword = ServerStorage.Sword:Clone()
Sword.Parent = player.Backpack
local GameTag = Instance.new("BoolValue")
GameTag.Name = "GameTag"
GameTag.Parent = player.Character
else
-- 没有角色
if not player then
table.remove(plrs,i)
end
end
end
end
end
Night94 指出了您破损代码的正确修复方法,但由于您的问题是关于学习调试,我将尝试帮助您理解错误信息。
21:16:36.715 - ServerScriptService.MainScript:39: 预期 ']'(在第37行关闭 '['),但得到了 'Status'
让我们一步一步解释一下: ServerScriptStorage.MainScript:39 这告诉我们文件在哪里,错误出现在哪一行。
那么让我们看看第39(至41)行,您会看到:
local ChosenMap = AvaliableMaps[math.random(1,#AvailableMaps)
Status.Value = ChosenMap.Name "Chosen"
接下来我们有:预期 ']'(在第37行关闭 '['),但得到了 'Status'
这意味着,某个时刻,代码需要一个方括号来关闭在第37行打开的方括号 AvaliableMaps[,但它找到了下一行代码 Status。
因此,凭借这些信息,您应该了解出了什么问题:方括号被打开了,但从未关闭。它应该在下一行代码之前写到某个地方。
local ChosenMap = AvaliableMaps[math.random(1,#AvailableMaps)]
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

在代码中,你缺少了一个闭方括号。
local ChosenMap = AvaliableMaps[math.random(1,#AvailableMaps)]