然后这里是bug纠错和建议。 @Xusineday 我先复制一下smart-ai末尾的相关代码: local files = table.concat(sgs.GetFileNames("lua/ai"), " ") local LUAExtensions = string.split(string.lower(sgs.GetConfig("LuaPackages", "")), "+") local LUAExtensionFiles = table.concat(sgs.GetFileNames("extensions/ai"), " ") for _, aextension in ipairs(sgs.Sanguosha:getExtensions()) do if table.contains(LUAExtensions, string.lower(aextension)) then if LUAExtensionFiles:match(string.lower(aextension)) then dofile("extensions/ai/" .. string.lower(aextension) .. "-ai.lua") end elseif not loaded:match(aextension) and files:match(string.lower(aextension)) then dofile("lua/ai/" .. string.lower(aextension) .. "-ai.lua") end end Bug: 1. LUAExtensionFiles是个字符串,直接用字符串匹配不能确保找到的就一定是对应这个包的AI。例如LUAExtensionFiles是"yjcm2012-ai.lua",遍历到yjcm这个包时匹配成功,但是下一行就报错了。 不如直接把LUAExtensionFiles做成一个table,然后match的那行用table.contains。 2. 上述的字符串匹配只能匹配小写文件名,需要把LUAExtensionFiles也加上个string.lower。(虽然文件名大写小写都是同一个文件,但是getFileNames的返回值不同)