【问题标题】:parsing failed because a } isnt put in?解析失败,因为没有放入}?
【发布时间】:2019-05-21 23:36:16
【问题描述】:

设置一个 Fivem 服务器并尝试在放入自定义 job_grades 后让 esx_policejobs 工作。出现错误并卡了几个小时,我不知道我是否在这里遗漏了什么?

还有一个控制台行说堆栈回溯到不同的 .lua 文件,那么这最终会是那里的问题而不是实际的配置文件吗?

看了一遍又一遍配置,真的找不到问题

    recruit = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 1500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 80 },
    },

    private = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    },

    private-first-class = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 }
    },

    sergeant = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    },

    lieutenant = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    },

    captain = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    },

    inspector = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    },

    deputy-chief = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    },

    assistant-chief = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    },

    chief-of-police = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    },
}

不应该是任何配置错误

控制台错误:

Failed to load script config.lua.
Error loading script server/main.lua in resource esx_policejob: @esx_policejob/server/main.lua:5: attempt to index a nil value (global 'Config')
stack traceback:
        @esx_policejob/server/main.lua:5: in main chunk```

【问题讨论】:

    标签: lua


    【解决方案1】:

    问题在于表键名中的破折号。该手册确实提示了table constructor 的形式:

    name = exp 形式的字段等价于 ["name"] = exp。

    name 必须是:

    Lua 中的名称(也称为标识符)可以是任何由字母、数字和下划线组成的字符串,不能以数字开头,也不能是保留字。标识符用于命名变量、表字段和标签。

    这意味着您必须使用表构造函数["name"] = exp 的第二种形式来处理任何无效标识符。

    ['chief-of-police'] = {
        { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
        { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
        { weapon = 'WEAPON_PUMPSHOTGUN', components = { 2000, 6000, nil }, price = 70000 },
        { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
        { weapon = 'WEAPON_STUNGUN', price = 500 },
        { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
    }
    

    【讨论】:

    • 所以基本上我需要将 'chief-of-police' 重命名为类似于 'chiefofpolice' 的名称?
    • 您可以删除破折号,也可以使用引号和括号(例如['chief-of-police']),两者都可以。
    【解决方案2】:

    您的代码“私人”保留字错误:

    >>>>private = {
            { weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
            { weapon = 'WEAPON_ADVANCEDRIFLE', components = { 0, 6000, 1000, 4000, 8000, nil }, price = 50000 },
            { weapon = 'WEAPON_NIGHTSTICK', price = 0 },
            { weapon = 'WEAPON_STUNGUN', price = 500 },
            { weapon = 'WEAPON_FLASHLIGHT', price = 0 },
        },
    
    
    1. 必须构造表
        myTable = {}
    
    1. 表存在后,可以定义key:
        myTable["some.key"] = {}
    
    1. 如果您需要子键,下一步将是:
        myTable["some.key"]["sub.key"] = {}  
        myTable["some.key"]["sub.key"]["value_1"] = "123"
        myTable["some.key"]["sub.key"]["value_2"] = "456"
    
    

    最后,你可以使用技巧:

        local myTables = {}
        myTables["table_name"] = myTable
    

    【讨论】:

    • “private” 不是 Lua 中的保留字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 2020-10-07
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多