|
本帖最后由 日食 于 2021-12-4 04:56 编辑
继续测试NG反馈问题,根据最新版本“11月18日shiqineigua60.rar”。
先反馈几个最棘手的问题
【2021-11-21】
【问题1】
释放变量dim -@a出错的问题
原本assa使用dim -@a可以在类似子函数的label/return中来call,复杂性封装在子函数内部,使得写庞大的脚本比较容易。这个问题使变量的定义都得搬到顶部,子函数的复用成了问题;所有“局部变量”只能改成“全局变量”,全局变量多到混乱,还得小心规避重复定义和值被覆盖。
- cls
- dim @a
- let @a,=,abc
- print @a
- dim -@a
- print cba
复制代码 预期结果 abc cba,测试结果 abc
【问题2】
waitsay和ifsay 说话内容不支持问号的问题
ifsay现在修复了不支持*的问题,但是?匹配单字符这点依然不支持。上代码
ifsay:
- cls
- say abcdefg
- waitsay 1-20,abc,5,err
- ifsay 1-20,a??d*g,yes
- goto no
- end
- label yes
- print yes
- end
- label no
- print no
- end
- label err
- print err
- end
复制代码 预期结果 yes ,测试结果no
waitsay:
- cls
- say abcdefg
- waitsay 1-20,a??d*g,5,err
- print yes
- end
- label err
- print err
- end
复制代码 预期结果 yes,测试结果 err
【问题3】
战斗中check、doffpet、call等多个命令卡顿的问题
这个问题非常严重,在战斗中,很多关键的循环判断没办法做,这个问题使得NG的可用性大打折扣。以下只列举了3个命令的测试,还有很多命令没有详细测试。(其中chname的问题不是卡顿,是终止,在下个问题说)
此外,目前粗略认为OK的(不会战斗卡顿的)命令经大概有如下:dim、let、label、goto、delay、if、print
check战斗卡顿测试:
- cls
- set 自动战斗,0
- set 快速战斗,0
- set 自动逃跑,0
- set 快速遇敌,1
- print 123
- delay 1000
- if @[战斗回合],=,0,-1
- check 人物,LV,=,160,+1
- print ok
复制代码 预期结果:123 ok,测试结果:123(卡至战斗结束)ok
call战斗卡顿测试
- cls
- set 自动战斗,0
- set 快速战斗,0
- set 自动逃跑,0
- set 快速遇敌,1
- print 123
- delay 1000
- if @[战斗回合],=,0,-1
- call ok
- end
- label ok
- print ok
- return
复制代码 预期结果:123 ok,测试结果:123(卡至战斗结束)ok
doffpet战斗卡顿测试:
预期结果:123 扔宠物失败 ok ,测试结果:123(卡至战斗结束)扔宠物成功 ok
【问题4】
战斗中chname错误的问题
ASSA在战斗中随意改,但是这里则终止不报错
- cls
- chname 宠物1,11111
- set 自动战斗,0
- set 快速战斗,0
- set 自动逃跑,0
- set 快速遇敌,1
- delay 1000
- if @[战斗回合],=,0,-1
- print tochname
- chname 宠物1,22222
- print changed
复制代码 预期结果:tochname changed(宠物1:22222),测试结果:tochname(宠物1:11111)
人物称号同样问题
- cls
- chname 人物,11111
- set 自动战斗,0
- set 快速战斗,0
- set 自动逃跑,0
- set 快速遇敌,1
- delay 1000
- if @[战斗回合],=,0,-1
- print tochname
- chname 人物,22222
- print changed
复制代码 预期结果:tochname changed(人物称号:22222),测试结果:tochname(人物称号:11111)
【问题5】
chname 参数1不能识别变量的问题
参数2可以
- dim @a
- let @a,=,宠物1
- chname 宠物1,333333
- chname @a,444444
复制代码 预期结果:(宠物1:444444),测试结果:(宠物1:333333)
【问题6】
ifpet 参数3不能识别变量的问题
- dim @a
- let @a,=,错误宝宝
- chname 宠物1,@a
- print @a
- ifpet 1,=,@a,+3
- print no
- end
- print yes
复制代码 预期结果:错误宝宝 yes,测试结果:错误宝宝 no
==================先前的分割线====================【2021-11-23】
【问题7】
@[人物名称]始终为空的问题
- cls
- chname 人物,
- print @[人物名称]
- chname 人物,333333333
- print @[人物名称]
复制代码 预期结果: 人物名称 人物名称{333333333} 测试结果:(空行)(空行)
【问题8】
@[宠物名称.1|2|3|4|5]无法返回宠物称号的问题
- cls
- chname 宠物1,ccccccc
- print @[宠物名称.1]
复制代码 预期结果: 宠物1原名{ccccccc} 测试结果:宠物1原名
【问题9】(建议)
check 队伍,1|2|3|4|5,=,XXXXX,ok 建议增加判断称号
目前不能判断称号,ASSA也不能。若增加称号判断,可以通过轮询队员称号来传递信息,可以避免说话传递信息被干扰的麻烦。
建议判断格式:人物名称{人物称号}
无称号时只判断人物原名称
【问题10】(问题6更新)
ifpet参数3变量支持问题
两种情况
第一种:判断宠物个数的情况
- cls
- dim @a
- let @a,=,1
- ifpet 手下留情,>=,1,+3
- print <1
- goto +2
- print >=1
- ifpet 手下留情,>=,@a,+3
- print <1
- end
- print >=1
复制代码 预期结果: >=1 >=1 测试结果:>=1(在第二个ifpet终止)
第二种:判断宠物名称的情况
- cls
- dim @a
- let @a,=,手下留情
- ifpet 1,=,@a,+3
- print no
- end
- print yes
复制代码 预期结果: yes 测试结果:no
【问题11】
check 骑宠,职位,=,1不能正常判断是否骑宠的问题
- cls
- chpet -1,1
- delay 1000
- check 骑宠,职位,=,1,+3
- print 未骑宠
- goto +2
- print 骑宠中
- chpet 1,1
- delay 1000
- check 骑宠,职位,=,1,+3
- print 未骑宠
- end
- print 骑宠中
复制代码 预期结果: 未骑宠 骑宠中 测试结果:未骑宠 未骑宠
【问题12】
set参数变量支持的问题
测试了其中两种情况,set指定攻击、set丢弃中为(其他场景并未严格测试)
场景1:set指定攻击
- dim @a
- let @a,=,乌力|绿龟
- set 指定攻击, @a
复制代码 预期结果:设置界面=
攻击效果=按设定顺序优先攻击
测试结果:设置界面=
攻击效果=按从上到下的默认顺序攻击
场景2:丢弃中为
- dim @a
- let @a,=,乌力斯坦的肉|小块肉
- set 丢弃中为,1-15,@a
复制代码 预期结果:设置界面=
,可以正常丢弃
测试结果:设置界面
,不能正常丢弃
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓更新分割线〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
【2021-11-27】
继续更新,抱歉隔了几天没更新,希望不要打乱SO大佬的开发节奏。工作太忙天天加班,精神实在跟不上。
回到正题,这次发系列问题,是关于对话框相关指令。因为几个问题互相关联,有的可能是同一根源。这个系列的问题需要很多测试、梳理,才能准确的表述出来,所以才这么迟放出。
【问题13】(对话框系列问题)
涉及到命令:waitdlg ifdlg @[对话.N] button
系列问题索引:
【索引一】@[对话]夹带奇异内容
【索引二】button导致@[对话]的错配
【索引三】ifdlg 与@[对话]的错配,以及ifldg行参数的失效
【索引四】系统变量@[对话]的奇异分行
【问题13---索引一】
@[对话]夹带奇异内容
因为ifdlg一直有些问题(下面会提到),所以在测试时使用@[对话.N]替代。首先以渔村宠店为例,试着翻页并输出对话框每页的内容。
- dim @d1,@d2,@d3,@d4,@d5
- dim @d6,@d7,@d8,@d9,@d10
- set 脚本延时,0
- '开始
- '以渔村宠店为例
- '---------------宠店欢迎界面
- say hi
- delay 500
- call 打印对话框内容
- pause
- '---------------宠物大仓库1-5选择界面
- lclick 262,284
- delay 500
- call 打印对话框内容
- pause
- '---------------宠物大仓库1选择存/取界面
- lclick 277,200
- delay 500
- call 打印对话框内容
- pause
- '---------------宠物大仓库1取宠选择第一页界面
- lclick 285,226
- delay 500
- call 打印对话框内容
- pause
- '---------------宠物大仓库1取宠选择第二页界面
- lclick 385,315
- delay 500
- call 打印对话框内容
- pause
- '---------------取消回到宠店欢迎界面
- lclick 235,311
- delay 500
- call 打印对话框内容
- end
- label 打印对话框内容
- let @d1,=,对话01=
- let @d2,=,对话02=
- let @d3,=,对话03=
- let @d4,=,对话04=
- let @d5,=,对话05=
- let @d6,=,对话06=
- let @d7,=,对话07=
- let @d8,=,对话08=
- let @d9,=,对话09=
- let @d10,=,对话10=
- let @d1,&,@[对话.1]
- let @d2,&,@[对话.2]
- let @d3,&,@[对话.3]
- let @d4,&,@[对话.4]
- let @d5,&,@[对话.5]
- let @d6,&,@[对话.6]
- let @d7,&,@[对话.7]
- let @d8,&,@[对话.8]
- let @d9,&,@[对话.9]
- let @d10,&,@[对话.10]
- print @d1,1
- print @d2,1
- print @d3,1
- print @d4,1
- print @d5,1
- print @d6,1
- print @d7,1
- print @d8,1
- print @d9,1
- print @d10,1
- print ===============分隔符=============,2
- return
复制代码
点启动,继续
继续,
到这里不用继续了
测试结果:除正常输出外,发现奇异内容。奇异内容当然会影响判断,不过我们往下看。
【问题13---索引二】
button导致@[对话]的错配
先把奇异内容放到一边,刚刚是用lclick来点击按钮的,这回用button,问题出现了。
- dim @d1,@d2,@d3,@d4,@d5
- dim @d6,@d7,@d8,@d9,@d10
- set 脚本延时,0
- '开始
- '以渔村宠店为例
- '---------------宠店欢迎界面
- say hi
- delay 500
- call 打印对话框内容
- pause
- '---------------宠物大仓库1-5选择界面
- button 4
- delay 500
- call 打印对话框内容
- pause
- '---------------宠物大仓库1选择存/取界面
- button 1
- delay 500
- call 打印对话框内容
- pause
- '---------------宠物大仓库1取宠选择第一页界面
- button 2
- delay 500
- call 打印对话框内容
- pause
- '---------------宠物大仓库1取宠选择第二页界面
- button 下一页
- delay 500
- call 打印对话框内容
- pause
- '---------------取消回到宠店欢迎界面
- button CANCEL
- delay 500
- call 打印对话框内容
- end
- label 打印对话框内容
- let @d1,=,对话01=
- let @d2,=,对话02=
- let @d3,=,对话03=
- let @d4,=,对话04=
- let @d5,=,对话05=
- let @d6,=,对话06=
- let @d7,=,对话07=
- let @d8,=,对话08=
- let @d9,=,对话09=
- let @d10,=,对话10=
- let @d1,&,@[对话.1]
- let @d2,&,@[对话.2]
- let @d3,&,@[对话.3]
- let @d4,&,@[对话.4]
- let @d5,&,@[对话.5]
- let @d6,&,@[对话.6]
- let @d7,&,@[对话.7]
- let @d8,&,@[对话.8]
- let @d9,&,@[对话.9]
- let @d10,&,@[对话.10]
- print @d1,1
- print @d2,1
- print @d3,1
- print @d4,1
- print @d5,1
- print @d6,1
- print @d7,1
- print @d8,1
- print @d9,1
- print @d10,1
- print ===============分隔符=============,2
- return
复制代码 点启动,暂时一切正常
继续,正常
继续,这时输出的内容已经不对了,成了欢迎页 此处更正为↓↓ date:20211201继续,正常
继续,到了选宠物界面,输出内容依旧是欢迎页 此处更正为↓↓ date:20211201
继续,到了选宠物界面,这时输出内容已经不对了,成了欢迎页
继续,这时的操作是要翻下一页,脚本卡在button下一页几秒钟后,继续运行然后对话框意外跳回欢迎页,输出内容依然是欢迎页,不用点继续了。
测试结果。用button操作对话时,@[对话]的内容会出现与现实对话框不一致的情况。这也就当然不能用于判断了。
问题出现模式,为了写一个取宠物的脚本,先用button写好,走一遍,哪里的button使得@[对话]货不对版了,就将这个button换成click来规避货不对版的问题,这样可以勉强写出取宠过程。
出现错配的页面后,一般接下来的BUTTON都会卡顿几秒,然后执行过后界面跳错或空界面。但如果在出现这个错配页面前,改用click进入这个页面,那么这时button可能就正常。
其他NPC的对话框没有详细测试,相信也存在类似问题。
【问题13---索引三】ifdlg 与@[对话]的错配,以及ifldg行参数的失效
ifdlg 与@[对话]的错配
接下来使用上面(索引二)的脚本改写,判断@[对话]的同时用ifdlg判断,并输出找到的内容,看下如何
- dim @d1,@d2,@d3,@d4,@d5
- dim @d6,@d7,@d8,@d9,@d10
- set 脚本延时,0
- '开始
- '以渔村宠店为例
- '---------------宠店欢迎界面
- say hi
- delay 500
- call 打印对话框内容
- call 打印ifdlg内容
- pause
- '---------------宠物大仓库1-5选择界面
- button 4
- delay 500
- call 打印对话框内容
- call 打印ifdlg内容
- pause
- '---------------宠物大仓库1选择存/取界面
- button 1
- delay 500
- call 打印对话框内容
- call 打印ifdlg内容
- pause
- '---------------宠物大仓库1取宠选择第一页界面
- button 2
- delay 500
- call 打印对话框内容
- call 打印ifdlg内容
- pause
- '---------------宠物大仓库1取宠选择第二页界面
- button 下一页
- delay 500
- call 打印对话框内容
- call 打印ifdlg内容
- pause
- '---------------取消回到宠店欢迎界面
- button CANCEL
- delay 500
- call 打印对话框内容
- call 打印ifdlg内容
- end
- label 打印对话框内容
- let @d1,=,对话01=
- let @d2,=,对话02=
- let @d3,=,对话03=
- let @d4,=,对话04=
- let @d5,=,对话05=
- let @d6,=,对话06=
- let @d7,=,对话07=
- let @d8,=,对话08=
- let @d9,=,对话09=
- let @d10,=,对话10=
- let @d1,&,@[对话.1]
- let @d2,&,@[对话.2]
- let @d3,&,@[对话.3]
- let @d4,&,@[对话.4]
- let @d5,&,@[对话.5]
- let @d6,&,@[对话.6]
- let @d7,&,@[对话.7]
- let @d8,&,@[对话.8]
- let @d9,&,@[对话.9]
- let @d10,&,@[对话.10]
- print @d1,1
- print @d2,1
- print @d3,1
- print @d4,1
- print @d5,1
- print @d6,1
- print @d7,1
- print @d8,1
- print @d9,1
- print @d10,1
- print ===============分隔符=============,2
- return
- label 打印ifdlg内容
- ifdlg ☆宠物商店☆,?,+2
- goto +2
- print ifdlg已找到 = ☆宠物商店☆
- ifdlg 请选择大仓库,?,+2
- goto +2
- print ifdlg已找到 = 请选择大仓库
- ifdlg 使用宠物仓库,?,+2
- goto +2
- print ifdlg已找到 = 使用宠物仓库
- ifdlg 请选择要从仓库取出的宠物,?,+2
- goto +2
- print ifdlg已找到 = 请选择要从仓库取出的宠物
- ifdlg 手下留情,?,+2
- goto +2
- print ifdlg已找到 = 手下留情
- print ===============以上IFDLG=============,2
- return
复制代码 点击启动脚本,@[对话]内容输出正常,ifdlg内容也输出正常
点继续,@[对话]内容输出正常,ifdlg内容也输出正常
再点继续,依旧正常
再一次点继续,问题出现,@[对话]出现了【索引二】所述的错误。看下ifdlg,ifdlg正确找到了“请选择”和“一个宠物”,但也意外找到了不该找到的内容“宠物商店”
测试结果,ifdlg XXX,?的判断基本正确,但也有不准确的情况,不排除是受到了button翻页的影响
ifldg行参数的失效
如题所示,ifdlg的参数2不起作用。以宠物店欢迎页为例,上代码
- ifdlg ☆宠物商店☆,?,+3
- print ng?
- goto +2
- print ok?
- ifdlg ☆宠物商店☆,1,+3
- print ng1
- goto +2
- print ok1
- ifdlg ☆宠物商店☆,2,+3
- print ng2
- goto +2
- print ok2
- ifdlg ☆宠物商店☆,3,+3
- print ng3
- goto +2
- print ok3
- ifdlg ☆宠物商店☆,4,+3
- print ng4
- goto +2
- print ok4
- ifdlg ☆宠物商店☆,5,+3
- print ng5
- goto +2
- print ok5
- ifdlg ☆宠物商店☆,6,+3
- print ng6
- goto +2
- print ok6
- ifdlg ☆宠物商店☆,7,+3
- print ng7
- goto +2
- print ok7
- ifdlg ☆宠物商店☆,8,+3
- print ng8
- goto +2
- print ok8
- ifdlg ☆宠物商店☆,9,+3
- print ng9
- goto +2
- print ok9
- ifdlg ☆宠物商店☆,10,+3
- print ng10
- goto +2
- print ok10<font color="#ff0000"><b>
- </b></font>
复制代码 预期结果:第一、二行输出ok,然后9个ng 测试结果:11个ok
看来ifdlg参数2完全没有起作用
waitdlg 也有同样问题,参数2不生效
- cls
- print 开始
- waitdlg ☆宠物商店☆,?,3,+3
- print ok?
- goto +2
- print ng?
- waitdlg ☆宠物商店☆,1,3,+3
- print ok1
- goto +2
- print ng1
- waitdlg ☆宠物商店☆,2,3,+3
- print ok2
- goto +2
- print ng2
- waitdlg ☆宠物商店☆,3,3,+3
- print ok3
- goto +2
- print ng3
- waitdlg ☆宠物商店☆,4,3,+3
- print ok4
- goto +2
- print ng4
- waitdlg ☆宠物商店☆,5,3,+3
- print ok5
- goto +2
- print ng5
- waitdlg ☆宠物商店☆,6,3,+3
- print ok6
- goto +2
- print ng6
- waitdlg ☆宠物商店☆,7,3,+3
- print ok7
- goto +2
- print ng7
- waitdlg ☆宠物商店☆,8,3,+3
- print ok8
- goto +2
- print ng8
- waitdlg ☆宠物商店☆,9,3,+3
- print ok9
- goto +2
- print ng9
- waitdlg ☆宠物商店☆,10,3,+3
- print ok10
- goto +2
- print ng10
- end
复制代码 测试结果就不赘述了,和ifdlg一样,参数2完全没有起作用
【问题13---索引四】
系统变量@[对话]的奇异分行
光看标题是看不明白的,上代码,举个例子
- dim @d1,@d2,@d3,@d4,@d5
- dim @d6,@d7,@d8,@d9,@d10
- set 脚本延时,0
- delay 500
- call 打印对话框内容
- pause
- end
- label 打印对话框内容
- let @d1,=,对话01=
- let @d2,=,对话02=
- let @d3,=,对话03=
- let @d4,=,对话04=
- let @d5,=,对话05=
- let @d6,=,对话06=
- let @d7,=,对话07=
- let @d8,=,对话08=
- let @d9,=,对话09=
- let @d10,=,对话10=
- let @d1,&,@[对话.1]
- let @d2,&,@[对话.2]
- let @d3,&,@[对话.3]
- let @d4,&,@[对话.4]
- let @d5,&,@[对话.5]
- let @d6,&,@[对话.6]
- let @d7,&,@[对话.7]
- let @d8,&,@[对话.8]
- let @d9,&,@[对话.9]
- let @d10,&,@[对话.10]
- print @d1,1
- print @d2,1
- print @d3,1
- print @d4,1
- print @d5,1
- print @d6,1
- print @d7,1
- print @d8,1
- print @d9,1
- print @d10,1
- print ===============分隔符=============,2
- return
复制代码
手动点开渔村宠物店欢迎页面,执行脚本:
预期结果:ASSA环境,对话框是啥,对话变量就是,行完全对应
测试结果:NG环境,行与实际对话框显示有一定出入。变量第一行不知道是啥,玛丽娜丝那行还有换行符"\n"
|
|