|
本帖最后由 faint@tj 于 2018-7-19 09:21 编辑
最初的需求是为了一套脚本能给多个id使用,但是因为每个id的门派功夫不同等原因,必须区别对待,因此有了以下的想法:
设置一个配置文件,然后对应的id通过使用这个配置文件中特定的变量值,同时随时可以导入修改,不需要重载重新运行机器人。
- function file_exists(path) --判断是否存在该文件
- local file = io.open(path, "rb")
- if file then
- file:close()
- end
- return file ~= nil
- end
- function un_ser(str) --反向序列化字串
- str = "return " .. str
- local fun = loadstring(str)
- return fun()
- end
- --[[smy_huaxue = { ["玄阴剑法"] = true,["灵蛇杖法"]= true,["灵蛇拳法"]= true,["打狗棒法"] = true,["金刚降伏轮"] = true}]] --例子,id变量表,这个是当前id如果进入颂摩崖战斗碰到以上功夫用化学攻击
- --
- function import()
- local path=".\\config\"..score.id.."_config.txt"
- if file_exists(path) then
- for line in io.lines(path) do
- local tab_name,tab_value=string.match(line,"(%S*)%s*%=%s*%{(.*)%}")
- --print (tab_name)
- --print (tab_value)
- --print(un_ser(tab_name))
- if tab_name~=nil then --清理空格,增强兼容性
- tab_name=Trim(tab_name)
- end
- if tab_value~=nil then --清理空格,增强兼容性
- tab_value=Trim(tab_value)
- end
- if table.getn(un_ser(tab_name)) then
- print("控制变量【"..tab_name.."】存在,开始导入自定义控制!")
- local insert_val={}
-
- insert_val=utils.split(tab_value,',')
- for k,v in pairs(insert_val) do
- if v~='' then
- --print("k="..k..",v="..v)
- local mini_tab,mini_val=string.match(v,"%s*(%S*)%s*%=%s*(%S*)%s*")
- if mini_tab~=nil then --清理空格,[" "]增强兼容性
- mini_tab=Trim(string.gsub(mini_tab,'%[%"',""))
- mini_tab=string.gsub(mini_tab,'%"%]',"")
- end
- if mini_val~=nil then --清理空格,增强兼容性
- mini_val=Trim(mini_val)
- end
- if mini_tab==nil then --没有 九阴银龙鞭=38 这种格式,那么直接插入
- un_ser(tab_name)[v]=true
- else -- ["九阴银龙鞭"] = 38 带有key,value模式,那么继续细分 这种 ["变量"]=数值 的模式可以认为是一种优先级
- --type返回类型 "number", "string", "boolean", "table", "function", "thread", "userdata"
- --print("mini_tab:"..mini_tab)
- --print("mini_val:"..mini_val)
- if type(mini_val)=='string' then
- if tonumber(mini_val)~=nil then
- --print("判断为数值类型:"..mini_val)
- un_ser(tab_name)[mini_tab]=tonumber(mini_val)
- elseif mini_val=="true" then
- un_ser(tab_name)[mini_tab]=true
- else
- un_ser(tab_name)[mini_tab]=mini_val
- end
- end
-
- end
- end
- end
- print("控制变量【"..tab_name.."】自定义导入完成!")
- else
- print("控制变量【"..tab_name.."】不存在,请先检查变量拼写是否正确!")
- end
-
- end
- else
- print ("id配置文件"..path.."不存在!")
- print ("配置文件应该保存在如下路径:"..GetInfo(64).."config\\score.id_config.txt")
- end
- end
复制代码
抛砖引玉,欢迎大家相互探讨。
- var1 = { ["太极剑法"] = true}
- var2 = { 天山杖法 = true, 玄阴剑法 = true}
- var3 = { ["玄阴剑法"] = true,["灵蛇杖法"]= true,["灵蛇拳法"]= true,["打狗棒法"] = true,["金刚降伏轮"] = true,}
- var4 = {弹指神通}
- var5 = {["太极拳"] = -10,["灵蛇杖法"]= 99,["打狗棒法"] = 95,["慕容剑法"] = 87,}
复制代码 |
评分
-
2
查看全部评分
-
|