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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:10:42