太阳神三国杀lua吧 关注:2,643贴子:73,494
  • 1回复贴,共1

【小白求助】国战AI文件一点效果都没有??!!

取消只看楼主收藏回复

如图,即使只返回一个false,能发动时AI还是照样发动(这个技能的频率是Frequent)
试过把ai文件放到extensions/ai和lua/ai,都没解决。。

技能代码部分


1楼2016-08-20 08:41回复
    然后这里是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的返回值不同)


    5楼2016-08-20 17:17
    收起回复