Как исправить ошибку «попытка вызова метода addMoney (нулевое значение)»? - PullRequest
1 голос
/ 14 октября 2019

У меня есть два файла .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 

По неизвестной мне причинеэтот код в economy.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)

1 Ответ

0 голосов
/ 14 октября 2019

Проблема была в том, что economy.lua выполнялся на стороне клиента, а мой код был на стороне сервера.

...