Roblox中“attempt to index function with 'Connect'”报错含义及代码修复咨询
解决Roblox Lua中
attempt to index function with "Connect"报错 先搞懂报错的意思
attempt to index function with "Connect" 这个错误说白了就是:你把一个普通函数当成了Roblox的事件(Event)来用了。只有Roblox的事件对象才支持用:Connect()绑定回调函数,而你这里调用:Connect()的目标是个函数,所以就触发了报错。
你的代码问题在哪?
看你这段核心代码:
script.Parent.Activate:Connect(function() -- ... end)
问题出在Activate上——这是Tool对象的方法(用来主动触发工具激活的函数),而不是你要找的玩家点击激活事件。Tool的点击激活事件是Activated(注意后缀多了个d)!
另外还有个小笔误:你本来要增加Strength值,但代码里却在修改money的数值,这明显和你的需求不符。
修正后的代码
我帮你把代码改好了,还加了注释方便理解:
local Player = game.Players.LocalPlayer -- 先获取leaderstats和Strength值,变量名更清晰,避免重复查找 local leaderstats = Player:WaitForChild("leaderstats") local strengthValue = leaderstats:WaitForChild("Strength") local amount = 50 -- 使用Tool正确的Activated事件 script.Parent.Activated:Connect(function() -- 直接修改之前获取的strengthValue,代码更简洁 strengthValue.Value += amount -- 如果你其实是想加money,就改成下面这行: -- leaderstats:WaitForChild("money").Value += amount end)
额外注意事项
- 这个脚本必须是放在Tool对象里的
LocalScript,因为用到了LocalPlayer,只能在客户端运行。 - 要确保Player对象下确实存在
leaderstats文件夹,以及里面的Strength(或money)数值对象,不然WaitForChild会一直等待,脚本也不会执行。 - 如果要防止玩家作弊,这种修改数值的逻辑最好放在服务器端(比如
ServerScriptService里的脚本),通过RemoteEvent来触发客户端的点击请求,再由服务器验证后修改数值。
内容的提问来源于stack exchange,提问作者Jackyboy98000
相关产品推荐
相关产品推荐

