💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
辞别邓艾的我们依然对田地风光印象深刻,孙悟空不禁回忆起当年在花果山和一帮小弟“寄情山水”的情景,尤其是那一颗颗鲜嫩的桃子和果子,更是难以忘怀。(编者:想不想看孙悟空穿越时空回归美猴王的样子?孙悟空:偶尔回去玩一次也不错……) </br>于是迫不及待的我们创建了一个新的武将: </br>孙悟空(xiaosunwukong),称号"美猴王",5体力上限男性群雄武将。 ![](https://img.kancloud.cn/0c/62/0c62672b1b71c4d60ceb0feb86a7112e_451x104.png) </br>并且为他量身打造了一个这样的技能: > 贪嘴:锁定技,你的红心牌均视为桃。 </br>这个技能一看就应该是一个视为技,毕竟技能里面都直接告诉我们了“视为桃”。不过它又跟之前我们见过的视为技有些区别。一般的视为技是在我们发动技能的时候才将某些卡牌当作其它卡牌;而这个技能要求不论什么时候,我们的红心手牌都锁定地视为了桃。没错,这就是我们曾经提到的锁定视为技了。 </br>还记得创建锁定视为技用的是什么方法吗?sgs.CreateFilterSkill,就是它了。 ``` sgs.CreateFilterSkill{name, view_filter, view_as} ``` ![](https://img.kancloud.cn/be/0f/be0f5965d5387ae9214e39a136124580_515x224.png) </br>其中: 1. name表示技能的名字。 2. `view_filter`表示受这个技能影响的卡牌所应满足的条件,用来判断一张卡牌是否应当被锁定视为其它的卡牌。它是用函数进行传值的,函数原型是: `function(self, to_select)` 其中self表示技能本身,to_select就是等待判断的卡牌了。 3. `view_as`表示被技能影响的卡牌锁定视作的卡牌。它也有一个传值函数,原型是: `function(self, card)` 其中self依然表示技能本身,card就是那张被影响的卡牌了。 </br>在我们的这个贪嘴技能里面,名字就还按照惯例取作"LuaTanzui"了。 </br>`view_filter`方面,由于受到技能影响的牌只有红心牌,所以只需要判断`to_select`的花色就是不是sgs.Card_Heart(红心)就可以了。 </br>而对于`view_as`,与一般视为技的有些区别,第二个传值参数从`cards`变成了`card`,所以我们可以直接拿来用了。在这部分中,我们依然要先创造出一个虚构的桃子卡牌出来: ![](https://img.kancloud.cn/0d/78/0d78186a5ba1ba14a277b62deadf7d84_689x351.png) </br>接下来要干什么? </br>按照一般视为技的思路,应该是通过卡牌编号id,将发动技能的卡牌card填充到这个桃子里去。不过,锁定视为技毕竟不一样,不存在一般视为技“转化”卡牌的过程,只是卡牌本身的内涵变化了,所以处理的方式当然也就不一样了。 </br>为了表达这样的意味,文艺范儿的Card甚至向我们展示了它修炼多年的分身之术。现在它的形象变成了——WrappedCard! </br>据说,小报记者们通过层层挖掘,终于探知Card当年修炼之地,也就是这WrappedCard诞生之所,就在源码(可在群文件里搜索 秒沉水 查找到源码)的src\core\WrappedCard.h里面…… </br>话说回来,锁定视为技对卡牌的处理方式,是直接赋予被影响的卡牌新的涵义,那么首先我们要先获得这张被影响的卡牌。这可不能是传进来的参数`card`哦,要用新形象了! </br>Engine大仙如此神通,早就知道了Card影分身的事情,向我们提供了一个成员函数来欢迎WrappedCard的出现。这个函数是 `getWrappedCard`,它的原型是这样的: ``` getWrappedCard() ``` ![](https://img.kancloud.cn/97/fc/97fc1f4472c71097ad926545e255053c_402x25.png) </br>在这里,参数`cardId`就是卡牌的编号了。 </br>这下通过刚才我们得到的卡牌编号id就能见到新形象下,这张被影响的卡牌了。 </br>至于接下来的事情,正好WrappedCard有一个绝学,是一个叫作`takeOver`的成员函数,可以帮我们赋予一张卡牌以新的内涵。它的原型是: ``` takeOver(card) ``` ![](https://img.kancloud.cn/8f/c7/8fc7977ea853f493795afdbeaa5333f6_264x26.png) </br>其中,参数`card`表示一张虚构的卡牌,那就代表了卡牌新的内涵了。比如说,我们这个技能中的那个虚构的桃子。 于是事情就好办多了。经各方协商,代码应该是这样的: ![](https://img.kancloud.cn/7b/04/7b04c7e3c07b9188f03e335dce4401fc_689x414.png) </br>到游戏中看看效果吧! ![](https://img.kancloud.cn/82/db/82dbcea8b866a4d4539859cdab29f60f_219x156.png) </br>好吧,连判定牌都改了……(神关羽:好可怕的结果。) ![](https://img.kancloud.cn/9b/6e/9b6e6413a58f7b0615ee99bf1292368c_214x62.png) </br>效果不错!(编者:悟空,这下你可以把桃子吃个够了。)