从lua中提取数组元素

我正在制作一个fivem服务器。但是当我尝试选择 job.grade.name 时,它会出现 No grades 的错误。

QBShared.Jobs = {
["unemployed"] = {
    label = "失业",
    grades = {
        [0] = {
            name = '失业',
            payment = 10,
        },
    },
    defaultDuty = true,
},
["police"] = {
    label = "警察",
    grades = {
        [0] = {
            name = "警察 - 学徒", **想要选择这个**
            payment = 200,
        },

        [1] = {
            name = '前锋',
            payment = 300,
        },

        [2] = {
            name = '警员',
            payment = 400,
        },

        [3] = {
            name = '高级警员',
            payment = 400,
        },

        [4] = {
            name = '警司',
            payment = 400,
        },

        [5] = {
            name = '警督',
            payment = 400,
        },

        [6] = {
            name = '高级警督',
            payment = 400,
        },

        [7] = {
            name = '局长',
            payment = 400,
        },

        [8] = {
            name = '高级局长',
            payment = 400,
        },

        [9] = {
            name = '首席局长',
            isboss = true,
            payment = 400,
        },
    },
    defaultDuty = true,

所以人们可以输入 /baan 然后看到 Baan: 警察 我想要的是:他们必须看到 Baan:警察 - 警察学徒

QBCore.Commands.Add("baan", "查看你的工作", {}, false, function(source, args)
local Player = QBCore.Functions.GetPlayer(source)
TriggerClientEvent('chatMessage', source, "系统", "警告", "Baan: "..Player.PlayerData.job.label .. ' - ' ..Player.PlayerData.job.grade.name)

有人可以帮帮我吗?因为我想学习更多关于lua,但是无法运行这个程序。。

点赞
用户3342050
用户3342050

'Jobs'需要一个字符串键来访问它,而'grades'需要一个数字索引。

Player.PlayerData.Jobs[job].grades[grade].name

TriggerClientEvent('chatMessage', source, "SYSTEM", "warning", "Baan: "..Player.PlayerData.job.label .. ' - ' ..Player.PlayerData.Jobs[job].grades[grade].name)


假设在您的游戏引擎中,这些值以某种方式被解析为PlayerData。这将取决于fivem中包含的函数以及您是否正确使用它们。否则,要访问原始表格数据,更像是这样的:

print( QBShared.Jobs['police'].label )

警察

print( QBShared.Jobs['police'].grades[0].name )

警察-学生

print( QBShared.Jobs['police'].grades[0].payment )

200


如果游戏在导入到PlayerData时重新排列它们,它可能是

Player.PlayerData[job][grade].name

但很可能仍保持原始语法,如上所述。

2020-11-07 06:18:03