在表中暂存用户数据 - Lua

时间:2017-11-27 07:45:22

标签: lua lua-table

所以我有一个想法,但最初的想法似乎是一个糟糕的。我想将UserData的脚本生命存储在外部表中(由require调用)。

我正在寻找实现此方法的方法,但我认为将UserData存储在全局环境中可能会很麻烦。有人能指出这种方法的任何陷阱吗?或者提供更好的建议?

外部(集中)功能 - 在脚本执行期间使用'require'加载:

--Chat.lua
--Location: Scripts/Globals/Custom/Functions/Chat

Convo    = 0xD
Special  = 0x1F

TempUserData = {}
TempTargetData = {}

function Show (Message, Display, Color, VAR1, VAR2, VAR3, VAR4, VAR5)

    local User = TempUserData[1]
    local Name = Display and TempTargetData[1]..":  " or "  "
    Color = Color or Convo
    VAR1  = VAR1  or nil
    VAR2  = VAR2  or nil
    VAR3  = VAR3  or nil
    VAR4  = VAR4  or nil
    VAR5  = VAR6  or nil

    if (VAR1) then
        User:PrintToUser(string.format(Name..Message, VAR1, VAR2, VAR3, VAR4, VAR5), Color)
    else
        User:PrintToUser(Name..Message, Color)
    end

end

主要剧本:

---------------------------------------------------------------
package.loaded["Scripts/Globals/Custom/Functions/Chat"] = nil
require("Scripts/Globals/Custom/Functions/Chat")
---------------------------------------------------------------

local function foo (VAR1)

    Show("Message")
    Show("Message",true,Special,VAR1)
    --Stuff

end

local function bar (VAR2)

    Show("Message")
    Show("Message",true,Special,VAR2)
    --Stuff

end

function onTrigger (User, VAR1, VAR2, VAR3) --Start of script

    table.insert(TempUserData, User)
    table.insert(TempTargetData, "System")
    --Stuff

end

我之所以这样做是因为:

  1. 用户:PrintToUser不是我的功能。它可能会在某些时候发生变化或被重命名,因为我有很多文件使用它,在一个位置更改它并将效果级联到我自己的自定义脚本对我很有吸引力。

  2. 有些消息可能很长,而且用户和目标与函数调用一致,只是一遍又一遍地添加空间。

  3. 最终结果更简洁,更清晰,从而使其在大型脚本中更具可读性。另外,让我更容易调试(多少次我拼错PrintToUser作为printToUser ...)

  4. 而不是:

    User:PrintToUser(string.format("Message %s, %s", VAR1, VAR2), 0xD)
    

    它可能更清洁:

    Show("Message %s, %s", true, Convo, VAR1, VAR2) -- With variables
    

    Show("Message",true) -- Display "System" with default color
    Show("Message") -- Don't display "System", still with default color
    

    我有两个问题:

    1. 根据上面的代码,如果有几个人一次使用相同的脚本,我会遇到问题吗? (即用户数据以某种方式混淆,或使用全局变量)。

    2. 以这种方式重新定义函数会不会导致性能下降?或者每次存储,检索,删除用户数据表? (200多人使用此)

0 个答案:

没有答案