Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在表中暂存用户数据-Lua_Lua_Lua Table - Fatal编程技术网

在表中暂存用户数据-Lua

在表中暂存用户数据-Lua,lua,lua-table,Lua,Lua Table,所以我有一个想法,但在最初的想法似乎是一个坏主意。我想将脚本生命周期中的UserData存储在一个外部表中(由require调用) 我正在寻找实现这一点的方法,但我认为在全局环境中存储用户数据可能会很麻烦。有人能指出这种方法的缺陷吗?还是提供更好的建议 外部(集中式)功能-在脚本执行期间使用“require”加载: --Chat.lua --Location: Scripts/Globals/Custom/Functions/Chat Convo = 0xD Special = 0x1

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

我正在寻找实现这一点的方法,但我认为在全局环境中存储用户数据可能会很麻烦。有人能指出这种方法的缺陷吗?还是提供更好的建议

外部(集中式)功能-在脚本执行期间使用“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
我想这样做的原因是:

  • 用户:PrintToUser不是我的功能。它可能会在某个时候更改或重命名,因为我有这么多文件使用它,所以在一个位置更改它并将其效果级联到我自己的自定义脚本对我很有吸引力

  • 有些消息可能很长,让用户和目标与函数调用保持一致只是一次又一次地增加了更多的空间

  • 最终结果更短、更清晰,因此在大型脚本中更具可读性。另外,让调试对我来说更容易(有多少次我把PrintToUser拼错为PrintToUser…)

  • 而不是:

    User:PrintToUser(string.format("Message %s, %s", VAR1, VAR2), 0xD)
    
    它可以更干净:

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

    关于这一点,我有两个问题:

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

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

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