我该如何在表格中使用字符串?
2015-11-29 21:45:50
收藏:0
阅读:129
评论:2
我需要将字符串值用作表,以便在玩家重新连接到游戏服务器时为其恢复积分。 此字符串值是其个人资料ID,永远不会更改,我需要在字符串值内放置数据(杀敌数、死亡数、爆头数),以有效恢复这些点数。我在互联网上快速查看了一下,但我没有找到太多信息,因为我不知道这个特定的事物实际上被称为什么。 为了让事情变得更容易,以下是我到目前为止的所做的事情:
如果(未Omega.Playertable)则
Omega.Playertable = {};
System.LogAlways(“在首次连接时设置静态记录表”);
结束
本(ID = g_gameRules.game:GetProfileId(player.id);
如果(未Omega.Playertable.ID)则
table.insert(Omega.Playertable,ID);
Omega.Playertable.g_gameRules.game:GetProfileId(player.id).Kills=0;
Omega.Playertable.g_gameRules.game:GetProfileId(player.id).Deaths=0;
Omega.Playertable.g_gameRules.game:GetProfileId(player.id).Headshots=0;
否则
本(Kills=Omega.Playertable.g_gameRules.game:GetProfileId(player.id).Kills;
死亡=Omega.Playertable.g_gameRules.game:GetProfileId(player.id).Deaths;
爆头=Omega.Playertable.g_gameRules.game:GetProfileId(player.id).Headshots;
g_gameRules.game:SetSynchedEntityValue(playerId, 101, Kills);
g_gameRules.game:SetSynchedEntityValue(playerId, 100, Deaths);
g_gameRules.game:SetSynchedEntityValue(playerId, 102, Headshots);
结束
正如您所看到的,我已经尝试将他们的ID添加到表中,并基于此添加信息。我无法使系统读取我之前设置的“ID”值,因此我尝试添加获取ID的代码,但它不起作用。 ID对于每个玩家都是唯一的,因此我无法对此使用简单的数字系统。
有人可以指出我在这里做错了什么吗?如果我设法解决问题,我会在这里回答自己的问题,以便其他用户有所帮助。
点赞
用户1244588
看起来你正在使用错误的表索引语法。
在 Lua 中,使用变量值对表进行索引可以用 [] 语法。
此外,在 Lua 中,Foo.bar 是 Foo["bar"] 的 _结构性语法糖_,两种格式可以互换使用,但 . 变体有限制,即你不能在其中使用哪些字符。例如,Foo["\n.*#%!"] 是一个有效的表索引,但你肯定不能这样写:Foo.\n.*#%!
另外,table.insert(t, v)会将 v 插入到表的 数组部分 的末尾。意味着如果你这么做:
foo = {};
foo.X = "一些值";
table.insert(foo, "X");
你得到这个:
{
X = "一些值"
[1] = "X"
}
这意味着,如果我将这个用于你给我们的代码,这大概是你想要的:
if (not Omega.Playertable) then
Omega.Playertable = {};
System.LogAlways("在第一次连接时设置静态记录表");
end
local ID = g_gameRules.game:GetProfileId(player.id);
if (not Omega.Playertable[ID]) then
Omega.Playertable[ID] = {};
Omega.Playertable[ID].Kills=0;
Omega.Playertable[ID].Deaths=0;
Omega.Playertable[ID].Headshots=0;
else
local Kills = Omega.Playertable[ID].Kills;
local Deaths = Omega.Playertable[ID].Deaths;
local Headshots = Omega.Playertable[ID].Headshots;
g_gameRules.game:SetSynchedEntityValue(playerId, 101, Kills);
g_gameRules.game:SetSynchedEntityValue(playerId, 100, Deaths);
g_gameRules.game:SetSynchedEntityValue(playerId, 102, Headshots);
end
2013-06-09 16:46:34
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
尝试一下:
s="35638846.12.34.45" id,kills,deaths,headshots=s:match("(.-)%.(.-)%.(.-)%.(.-)$") print(id,kills,deaths,headshots)但是请注意,这些值都是 _字符串_。如果您要将它们用作数字,请使用
tonumber进行转换。