Roblox挖矿脚本异常:仅他人挖矿时我获得金币,求技术支援
Roblox挖矿脚本异常排查与修复
问题根源
原脚本存在几个核心逻辑错误:
- 重复绑定点击事件:在
PlayerAdded事件中给同一个岩石反复绑定点击事件,导致每次点击都会触发所有玩家绑定的事件,加钱对象混乱。 - 错误的玩家绑定:未使用
MouseClick事件自带的点击玩家参数,反而固定使用PlayerAdded中的玩家,导致无论谁点击,都给该玩家加钱。 - 未初始化全局共享变量:
health变量未定义初始值,且为全局变量,所有点击共享同一个健康值,逻辑完全混乱。 - 无效的克隆操作:克隆岩石后未将克隆体加入场景,该代码完全无效。
修复后的脚本
将以下脚本直接放置在岩石对象中(作为ServerScript):
-- 初始化岩石的健康值 local health = 10 local rock = script.Parent local clickDetector = rock.ClickDetector local billboard = rock.BillboardGui local billboardText = billboard.TextLabel -- 设置初始状态 billboard.Enabled = false billboardText.Text = health clickDetector.MouseClick:Connect(function(player) -- 检查玩家数据是否存在,避免报错 local leaderstats = player:FindFirstChild("leaderstats") if not leaderstats then return end local money = leaderstats:FindFirstChild("Money") if not money then return end -- 更新岩石健康值 health = health - 1 billboard.Enabled = true billboardText.Text = health if health == 0 then -- 临时禁用岩石交互 clickDetector.Parent = nil rock.Union.Transparency = 1 rock.Union.CanCollide = false billboard.Enabled = false -- 给当前点击的玩家添加金币 money.Value = money.Value + 100 -- 重置岩石状态 wait(5) clickDetector.Parent = rock rock.Union.Transparency = 0 rock.Union.CanCollide = true health = 10 billboardText.Text = health end end)
修复说明
- 移除冗余的
PlayerAdded绑定:岩石作为公共交互对象,只需绑定一次点击事件即可。 - 使用点击事件的玩家参数:确保金币添加给实际点击岩石的玩家。
- 局部化健康值变量:每个岩石实例拥有独立的健康值,避免多玩家点击时的逻辑冲突。
- 添加数据存在性检查:防止因玩家数据未加载完成导致的脚本报错。
- 清理无效克隆代码:移除无意义的岩石克隆操作。
内容的提问来源于stack exchange,提问作者Sippy
相关产品推荐
相关产品推荐

