【问题标题】:Lua oop static object valueLua oop 静态对象值
【发布时间】:2021-03-31 19:14:31
【问题描述】:

如何使self.character.data().bank 对类的所有实例都相同 即使使用函数setBank?目前在使用setBank 时,它只会在一个实例上更新self.character.data().bank,如果它有意义的话

_G.GetUser = {
    users = {},
    users_group = {},
    userData = {},
    CurrentCharacter = {}
}

_G.GetUserMethods = {}

GetUserMethods.__call = function(self, source)
    local o = setmetatable({}, {
        __index = self
    })

    o.src = source

    o.id = self.users[o.src]

    o.rank = self.users_group[o.src]

    return o
end

GetUserMethods.__index = {
    getCurrentCharacter = function(self)
        self.character = {}

    self.character.id = self.CurrentCharacter[self.id]

    self.character.data = function()
        return self.userData[self.character.id]
    end

    self.character.setBank = function(v)
        if self.character.data() then
            self.character.data().bank = v
        end
    end
        
    self.character.getBank = function()
        if self.character.data() then
            return self.character.data().bank
        end
        
        return nil
    end

        return self.character
    end
}

setmetatable(GetUser, GetUserMethods)

【问题讨论】:

    标签: oop lua static grand-theft-auto fivem


    【解决方案1】:

    替换

    importClass {'getuser'}
    

    if not _G.GetUser then
       importClass {'getuser'}
    end
    

    在每个文件中。

    【讨论】:

    • 嗯没有用,也没有更聪明的替代方案导致 self.userData 包含现金、银行、饥饿、口渴、压力、库存不喜欢使用 elseif k == "cash" 等..
    • didn't work - 请提供更多详细信息。你能给出你的代码的最小工作示例吗?
    • 好吧,它仍然无法正常工作,就像在类的一个实例上更改银行时它没有将银行更改为在另一个实例上更改的值,与现金、饥饿、口渴、压力和这个相同是有问题的,因为我需要将数据保存到数据库,但是当它不包含相同的数据并且不确定你在想什么工作示例没有按预期工作但这里是一个 pastebin pastebin.com/0ZJ9xZpr 时有点困难
    • 1) 我的回答是错误的。 2)您的原始代码看起来不错。 3) importClass just loads the file 是什么意思?您是否在此“importClass”内的每个文件中创建新的全局表_G.GetUser?您必须使用require 来导入类。提供“importClass”文档的链接
    • pastebin.com/XwXehecA require 不需要,因为这是为了在创建资源时使用 5m,我们添加一个清单,我们可以在其中加载资源包含的文件,但我可以这样做“@fg-base/shared /import.lua" 所以我只加载包含 importClass 的文件,然后我可以从那里加载这些类
    猜你喜欢
    • 2015-06-24
    • 2016-12-20
    • 1970-01-01
    • 2012-05-31
    • 2012-08-26
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多