在Lua中将用户数据存储在表中的暂存库
2017-11-27 10:22:38
收藏:0
阅读:132
评论:0
所以我有一个想法,但是初步考虑似乎不是一个好的想法。我想在外部表中(通过require调用)存储UserData作为脚本生命周期中的暂存库。
我正在寻找实现这一点的方法,但我认为在全局环境中存储UserData可能会有问题。有人能指出这种方法的任何缺陷吗?或提供更好的建议?
外部(集中式)函数-在脚本执行期间使用'require'加载:
--Chat.lua
--位置: 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) --开始脚本
table.insert(TempUserData, User)
table.insert(TempTargetData, "System")
--Stuff
end
我想这样做的原因是:
User:PrintToUser不是我的函数。它可能在某个时候发生变化或者被重命名,由于我有很多文件使用它,在一个地方进行更改并且效果可以影响到我的自定义脚本,这是吸引我的地方。
一些消息可能会很长,在函数调用中将用户和目标行内显示只会不断地添加更多的空间。
最终结果更短更清晰,从而使在大型脚本中更易于阅读。对我来说,也更容易进行调试(我有多少次将PrintToUser拼写为printToUser...)
与此相反:
User:PrintToUser(string.format("消息%s,%s", VAR1, VAR2), 0xD)
它可能更简洁:
Show("消息%s,%s", true, Convo, VAR1, VAR2) -- 带变量
或者
Show("消息",true) -- 默认颜色显示“系统”
Show("消息") -- 不显示“系统”,但仍具有默认颜色
对于此,我有两个问题:
基于上面的代码,如果有多个人同时使用相同的脚本,我会遇到问题吗?(即UserData在某种程度上被混合在一起,或使用全局变量)。
这种方式重新定义函数会有任何性能降低吗?或者因为每次存储、检索、删除UserData表而导致性能降低?(要使用200多人)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
