如何修复“尝试调用方法‘addMoney’(零值)”错误?

Posted

技术标签:

【中文标题】如何修复“尝试调用方法‘addMoney’(零值)”错误?【英文标题】:How to fix 'attempt to call method 'addMoney' (a nil value)' error? 【发布时间】:2019-10-14 16:10:53 【问题描述】:

我有两个 .lua 文件,一个名为 sv_money.lua,另一个名为 Economy.lua

sv_money.lua 中的代码是:

local meta = FindMetaTable("Player")
local PlayersMoney = 

function meta:addMoney(amount)
    if not amount then return false end

    PlayersMoney[self:SteamID64()] = PlayersMoney[self:SteamID64()] + amount
end

在 Economy.lua 中:

for k, v in pairs(player.GetAll()) do
    v:addMoney(60)
    Notify(v, "You've received 60€.", 5, "Generic" )
end

预期结果是播放器屏幕上的“您已收到...”通知,但实际结果是错误:

Lua Error: [ERROR] addons/economy/lua/autorun/economy.lua:63: attempt to call method 'addMoney' (a nil value)
    1. unknown - addons/economy/lua/autorun/economy.lua:63 

由于我不知道的原因,经济.lua 中的这段代码有效:

hook.Add("PlayerSpawnProp", "Cost", function(ply, class)
        if not ply:canAfford(10) then
            Notify(ply, "You don't have enough money !", 5, "Error" )
            return false
        else
            Notify(ply, "You've spent 10€ to spawn this prop.", 5, "Generic" )
            ply:addMoney(-10)
            return true
        end
end)

【问题讨论】:

您的初始元表是否定义了__index?喜欢meta.__index = meta 【参考方案1】:

问题在于,economy.lua 是在客户端执行的,而我的代码是在服务器端执行的。

【讨论】:

以上是关于如何修复“尝试调用方法‘addMoney’(零值)”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复drv?

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞