Lua命令启用/禁用

时间:2012-08-03 11:13:01

标签: lua command

我希望尝试启用/禁用使用!commands的功能(此游戏中的命令(命令与征服:Renegade)始终以!为前缀),具体取决于文本文件规定允许用户使用或不使用。我正在寻找Lua中的代码,以实现兼容性和集成。例如:

Harry1被允许使用!spectate
Harry2不允许使用!spectate

但是,这可能适用于无限数量的用户,因为每个用户最多可以选择3个“选项”,其余的这些“选项”不允许未被选中的用户访问他们中的一个。例如:

Harry1选择了!spectate!cookie!pizza
Harry2选择!cookie!icecream!chocolate

因此,Harry1将无法使用!icecream!chocolate而且Harry2无法使用!spectate!pizza

获取玩家ID由Get_Player_ID(pID)使用。

1 个答案:

答案 0 :(得分:0)

最好先设计数据布局。由于Lua也是一种数据描述语言,因此使用本机语法很自然,因此选择文件如下所示:

user {
    name: "Harry1",
    choices: {["spectate"]=true, ["cookie"]=true, ["pizza"]=true},
}

user {
    name: "Harry2",
    choices: {["cookie"]=true, ["icecream"]=true, ["chocolate"]=true},
}

然后,在代码中,您可以执行以下操作:

users = {}

function user_docommand(user, command)
    if users[user].choices[command] == true do
        --- do the command
    end
end

do
    function user(u)
        if users[u.name] == nil then
             users[u.name] = {}
        end
        users[u.name].choices = u.choices
    end
    --- perharps use a safer function than dofile here
    dofile("choices.lua")
end

另见10.1 - Data Description from PIL 1st edition