最近在学习NI,写了一段净化图腾解毒的代码,但是遇到一个非常奇怪的问题,代码片段如下:
[Lua] 纯文本查看 复制代码 ocal function Auto_Detox()
local _,auto_detox_enabled=GetSetting("Detox")
local detox_option_value=GetSetting("Detox_option")
local numDetox=GetSetting("Num_member_detox")
if numDetox=="" then numDetox=0 end
local numMemberPoison=0
local numMemberDisease=0
for i=1,#ni.members do
local member_guid=ni.members[i]["guid"]
if ni.unit.debufftype(member_guid, "Poison") then
numMemberPoison=numMemberPoison+1
elseif ni.unit.debufftype(member_guid, "Disease") then
numMemberDisease=numMemberDisease+1
end
end
local multiplePoison=false
local multipleDisease=false
print("测试1")
if numMemberPoison<=numDetox then
multiplePoison=true
end
print("测试2")
if numMemberDisease>=numDetox then
multipleDisease=true
end
print("测试3")
如上图,这段代码没有贴完整,实际格式都是正确的,进到游戏后按F1,并没有lua报错,但是按F1后,实际只有“测试1”被打印了出来,测试2和测试3并不会打印。我把这段代码赋值粘贴到bee里面(当然auto_detox_enabled,detox_option_value,numDetox原来是读取GUI中的key对应的值,在WBE里面分别直接赋值为true,2,2),神奇的发生了,测试1、测试2和测试3均能打印
然后在游戏里测试下,从if numMemberPoison<=numDetox then multiplePoison=true end 这段代码后,所有print均不能正常运行。于是我在测试1的位置上将print("测试1")更换为print(numMemberPoison<=numDetox),同样不能打印,但是在bee又可以打印。
为了确认会不会是auto_detox_enabled,detox_option_value,numDetox的赋值出了问题,因此我在测试1的位置更换为print(auto_detox_enabled,detox_option_value,numDetox),重载后按F1执行脚本,可以正常显示正确的赋值,即true,2,2,但是测试2和测试3仍然不能打印
WBE和NI脚本里差异只有auto_detox_enabled,detox_option_value,numDetox这3个变量的赋值方式,为了彻底搞清这个问题,我把脚本中auto_detox_enabled,detox_option_value,numDetox这3个变量读取GetSetting的赋值全部改为直接赋值,即true,2,2,结果测试1、测试2和测试3都能打印了
看起来似乎的确是auto_detox_enabled,detox_option_value,numDetox这3个变量读取设置值出了问题,但是我检查了下key,完全没有问题,而且上面红色标记段落的测试也证明了在测试2前的if then end语句前,这3个变量赋值是完全没有问题了
最后我再做了一个测试,在测试1的位置,即将print("测试1")更换为2个print语句:print(numMemberPoison,numDetox)和print(numMemberPoison<=numDetox),重载后按F1执行,print(numMemberPoison,numDetox)可以正确打印出结果即0,2,但是print(numMemberPoison<=numDetox)无法打印,这段代码复制黏贴到魔蜂里面,print(numMemberPoison<=numDetox)可以正确的打印出true
那么可以确定问题出现在条件判断上了,即numMemberPoison<=numDetox或numMemberPoison<=numDetox这2个条件出问题,但是为什么在bee里面能正确运行,NI里面就不行了,百思不得解啊
跪求大佬解惑.gif)
|