|
楼主 |
发表于 2022-8-2 12:48:57
|
显示全部楼层
之前的代码运行起来之后发现,有时因为busy偷学不成功,但table里已经删掉了匹配到的语句导致偷学成功率下降,因此稍微改动了一下
function tx_cp(str)
local tx_str = tostring(str)
local str_i_max = tonumber(string.len(str))
local tx_s = {}
local i = 1
while i <= tonumber(str_i_max - 1) do
table.insert(tx_s,string.sub(str,i,i+1))
i = i + 2
end
for k, v in pairs(tx_pfm) do
if levenshtein(tx_pfm[k],tx_s) < tonumber(GetVariable("tx_xsd")) then
k = k + 1
if tx_pfm[k] == nil then
break
end
elseif levenshtein(tx_pfm[k],tx_s) >= tonumber(GetVariable("tx_xsd")) then
--Note("第"..k.."招匹配成功")
--Send("touxue "..GetVariable("tx_id"))
--table.remove(tx_pfm, k)
--if #tx_pfm == 0 then --table的元素数量为0,说明已经学完,即可结束
--Send("response action 偷学完毕")
Send("touxue "..GetVariable("tx_id"))
SetVariable("tx_k", k) --将匹配成功的语句的key值储存起来,等到偷学成功时再删除
break
end
end
end
再写一个触发:
match:^你从\S+身上偷学到了一招!$
send:
table.remove(tx_pfm, tonumber(GetVariable("tx_k")))
SetVariable("tx_k", 0)
print(#tx_pfm)
if #tx_pfm == 0 then
Send("response action 偷学完毕")
end
------------------------------------------------------------------
|
|