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

Roblox游戏报错:attempt to compare number < Instance 排查求助

解决Roblox报错:attempt to compare number < Instance

问题说明

开发Roblox游戏时,需通过客户端触发RemoteEvent将背包默认容量设为10(当前为0),以此触发事件并避免脚本代码冗余丢失。目前仅遇到报错:attempt to compare number < Instance,其余功能正常。

已做排查

  • 客户端传入值为数字10
  • 服务器端脚本已将参数类型声明为number
  • 尝试修改参数名、移除maxCapacityFC ~= nil判断,错误未消除
  • 查阅Roblox开发者论坛未找到有效解决方案

代码展示

服务器端脚本

remoteEvents:FindFirstChild("FixBackpackCapacity").OnServerEvent:Connect(function(player, maxCapacityFC : number)

   if maxCapacityFC ~= nil and maxCapacityFC > 0 then
      player:FindFirstChild(player.EquippedBackpack.Value):FindFirstChild("MaxCapacity").Value = maxCapacityFC
    
   end

end)

客户端脚本

game:GetService("ReplicatedStorage").RemoteEvents.FixBackpackCapacity:FireServer(player, 10)

错误原因

Roblox的RemoteEvent:FireServer()方法无需手动传入player参数,服务器端OnServerEvent回调的第一个参数会自动填充为触发事件的玩家实例。当前客户端脚本多传了player,导致参数顺序错位:服务器端的maxCapacityFC实际接收的是客户端传入的player实例,而非数字10。在执行maxCapacityFC > 0判断时,出现了「实例与数字比较」的非法操作,触发报错。

解决方案

修改客户端脚本,移除FireServer中的player参数,正确调用方式如下:

修改后的客户端脚本

game:GetService("ReplicatedStorage").RemoteEvents.FixBackpackCapacity:FireServer(10)

可选优化(服务器端)

添加实例存在性判断,避免FindFirstChild返回nil引发后续错误:

remoteEvents:FindFirstChild("FixBackpackCapacity").OnServerEvent:Connect(function(player, maxCapacityFC : number)
    if typeof(maxCapacityFC) == "number" and maxCapacityFC > 0 then
        local backpack = player:FindFirstChild(player.EquippedBackpack.Value)
        if backpack then
            local maxCapacity = backpack:FindFirstChild("MaxCapacity")
            if maxCapacity then
                maxCapacity.Value = maxCapacityFC
            end
        end
    end
end)

补充备注

  • 移除maxCapacityFC ~= nil判断后仍触发错误,是因为参数类型本身错误(为Instance而非number),与是否为nil无关
  • 代码位置正确,问题根源为客户端RemoteEvent调用时参数顺序错误

内容的提问来源于stack exchange,提问作者Error404

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:25:25