剑网3 苦逼程序猿------天策宏的优化过程

时间:2016-11-01 14:49 作者:Await丶U 手机订阅 神评论

会写宏或者看宏的小伙伴可能会觉得楼主第一句【龙牙】语句判定是不是有问题?如果你会写或者打算自己写宏你,那么请仔仔细细阅读本层,你不会失望的!!!非常重要,这会让你在有限字符内利用率最高!!!  

剑三中的,“&”和“|”。  

按照正常的情况,是与(&)的优先级高于或(|)的。经过多方面研究和测试发现,J3自带宏的优先级是一样的,或者说是【从右到左】的!!!  

比如:  

[条件a&条件b|条件c],正常情况下,是:【条件a】与【条件b】成立,或者【条件c】单独成立则满足;而剑三翻译出来则是:【条件a】&【条件b】,或者【条件a】与【条件c】成立则满足条件!!!J3使用第一个与和后面所有的或分别组合的!  

说得直白一点,“/cast[tbufftime:破血>2&tbuff:致伤=2|bufftime:风虎<2]龙牙”语句中的条件翻译出来就是:【tbufftime:破血>2&tbuff:致伤=2】或【tbufftime:破血>2&bufftime:风虎<2]】  

而如果直接“[tbufftime:破血>2&tbuff:致伤=2|tbufftime:破血>2&bufftime:风虎<2]!”,那么会被翻译成【tbufftime:破血>2&tbuff:致伤=2】或【tbufftime:破血>2&tbufftime:破血>2&bufftime:风虎<2】;对,没有写错,后者有两个“tbufftime:破血>2”,虽然没影响。第二种写法很明显浪费了14个“字节”。  

要测试很简单,直接在宏里单独以下语句:  

/cast[tbuff:破血&tbuff:致伤=2|nobuff:风虎]穿云  

按照正常普通逻辑,只要满足【nobuff:风虎】就会打【穿云】;而实际测试你会发现打不出,必须给目标挂上【破血】,才能打出穿云。  

效果其实跟:  

/cast[tbuff:破血&tbuff:致伤=2|tbuff:破血&nobuff:风虎]穿云”  

是等价的(仅限于J3)。  

实际的例子:  

这是帖子里一个大大提到的一个宏的一部分:  

/cast[distance<8&tnobuff:破血|distance<8&tbuff:破血<3|distance<8&tbufftime:破血<2]战八方  

我的天!这一句差不多占半个宏了,然而其实这么些冗余了!  

在剑三!在剑三!在剑三!其实可以写成:  

/cast[distance<8&tnobuff:破血|tbuff:破血<3|tbufftime:破血<2]战八方  

其实就这个优先级问题,楼主在差不多2年前就已经跟客服说过了,然而到现在似乎还没有修复,不过不修复好像也是一件坏事。

相关阅读:天策宏

剑网三

热点推荐

更多»
  • 剑网三,作为中国最受欢迎的MMORPG游戏之一,其丰富的主线剧情,令无数玩家深陷其中。本文将为您详细介绍《剑网三》主线剧情的精彩之处,包括主线情节的走向、角色人物的设定以及背后隐藏的故事秘密,带您深入探索这个梦幻般的武侠世界。无论您是游戏玩家还是简单的武侠迷,都不容错过这篇关于《剑网三》主线剧情的文章。