0
local maps = find.File("maps/*.bsp", "GAME")
map = (maps[math.random( #maps )])
    print("Map randomized to " .. map )

上面的代码适用于 Garry's Mod 上的“ULX”,它使用 find.File 读取 garrysmod/maps 的目录并返回(在 TABLE 中)其中所有以 .bsp 结尾的文件(所有地图),但是我不希望它包含以某些部分开头的地图,例如“arena_”和“gm_”,有没有办法我可以删除它们和/或让它继续检查,直到它得到一个不以那个开头的地图.

我有什么办法可以做到这一点?请更喜欢纯Lua。哦,我用来测试它的网站是MOAIFiddle

4

1 回答 1

1

看起来你的意思是file.Find而不是find.File. http://wiki.garrysmod.com/page/file/Find

以下应该在 Garry's Mod 中工作。

local maps = {}
local ignoredPrefixes = {"gm_","arena_"}

for _,map in ipairs(find.File("maps/*.bsp", "GAME"))do
  local hasPrefix=false
  for _,prefix in ipairs(ignoredPrefixes)do
    if string.Left(map,string.len(prefix)) == prefix then
      hasPrefix=true
      break
    end
  end
  if not hasPrefix then
    table.insert(maps,map)
  end
end

local randomMap = table.Random(maps);

print("Map randomized to "..randomMap)

它所做的是读取所有地图maps/,然后将所有没有特定前缀的地图添加ignoredPrefixesmaps表中。完成后,将从表中随机选择一张地图。

于 2015-05-12T17:47:42.183 回答