尝试在Lua中将一个原始文件中的值与另一个原始文件中的值匹配。
首先:我是一个没有经验的程序员,刚开始阅读 PiL。我只知道一两件事,但我很快就能学会和理解。这种方法真的很不必要,但我想给自己一些困难,以便学到更多。
好的,为了测试和更好地了解这种语言,我试图从两个不同的文件中取出两个不同的值,并将它们存储在表格中
local gamemap = file.Read("addons/easymap/data/maplist.txt", "GAME")
local mapname = string.Explode( ",", gamemap )
local mapid = file.Read("addons/easymap/data/mapid.txt", "GAME")
local id = string.Explode( ",", mapid )
我正在获取两个值,最后是mapname和id
一旦我有了它们,我知道使用
for k, v in pairs(mapname)
它将为从文件获取的数据提供特定的值,或者至少分配它们。
但是我需要使用两个表格的方法是,如果服务器中有某个地图,请检查表格中的值,除非地图名称为空,然后一旦有名称,获取该地图的值并将其匹配与另一个文件的id。
例如,我在maplist.txt文件中有gm_construct,它是第一个条目[1],并且对应的id在mapid.txt中,假设它是54321,也是第一个条目[1]。
但现在我必须使用game.GetMap函数检查服务器的当前地图,我已经解决了这个问题,我获取当前地图,将其与mapname表格匹配,然后检查其在id表格中的相应值,这将是gm_construct = 1。
例如,它会像这样:
local mapdl = game.GetMap()
local match = mapname[mapdl]
if( match != nil )then --supposing the match isn't nil and it is in the table
--grab its table value, lets say it is 1 and match it with the one in the id table
这是http://pastebin.com/3652J8Pv的更复杂版本
我知道这是不必要的,但执行此脚本将为我提供更多扩展脚本的选项。
TL;DR:我需要找到一个函数,让我匹配来自不同表格和文件的两个值,但最终它们以相同的顺序([1] = [1])出现在两个文件中。或者从另一个文件获取完整的表。我不知道表格是否可以全局加载,然后被另一个文件抓住以在该文件中使用它。
如果我问太多,我很抱歉,但是在我所在的地方,如果您想学习编程,您必须自己学习,没有学校有课程或任何类似的东西,至少在大学之前没有,我离完成高中还很远。
编辑:这是用于 Garry's mod,string.Explode在这里解释:http://wiki.garrysmod.com/page/string/Explode
它基本上通过指定的字符(在此情况下为逗号)分隔短语。
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
好的。如果我理解正确...你有两个文件,其中一个是地图名称:
另一个是ID、数字或与地图名称文件中相同的位置相关的内容:
1258, 8592, 1354, 2589现在你想要找到当前地图的ID,是吗?
以下是你的函数:
local function GetCurrentMapID() -- 获取当前地图 local cur_map = game.GetMap() -- 读取文件并分割它们 local mapListRaw = file.Read("addons/easymap/data/maplist.txt", "GAME") local mapList= string.Explode(",", mapListRaw) local mapIDsRaw = file.Read("addons/easymap/data/mapid.txt", "GAME") local mapIDs = string.Explode(",", mapIDsRaw) -- 遍历整个地图列表 for k, v in pairs(mapList) do -- 直到找到当前地图 if (v == cur_map) then -- 然后返回位于相同键(k)的mapIDs中的值 return mapIDs[k] end end -- 如果当前地图不在Maplist中,则会抛出一个不可中断的错误 ErrorNoHalt( "当前地图未在地图列表中注册!\n" ) end该代码可能存在错误,因为我无法测试它。如果有错误,请在评论中指出。
来源:我的经验和GMod Wiki