🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
正在我们得意于卡牌转化与传递的顺利完成时,孙悟空报告了一个情况: </br>示范可以无限制使用!运气好可以和队友刷掉几十张牌! ![](https://img.kancloud.cn/47/3c/473c45cf1bdd2713e6f90ccf0eb3275e_240x255.png) </br>这下可不好办了,要赶紧限制一下啊。 </br>镇定!我们太阳神三国杀人才济济,对付如此情况还是有办法的!比如说,使用标记系统,让技能只能在有标记的情况下使用。当然,还有一招,用的更为普遍,那就是——启用标志。 </br>我们可以在一项技能发动时设置一个标志,来表明在本回合中技能的发动情况;如果之后再想发动同样的技能,一看到这个标志,我们就会知道技能已经发动过了,从而阻止了技能的再次发动。 </br>设置标志所用的方法,是Room老师的一位成员函数:`setPlayerFlag`。它的原型是: ``` setPlayerFlag(player, flag) ``` ![](https://img.kancloud.cn/4f/02/4f0238d82ba3e6b6048110d5baaab3a3_619x25.png) </br>其中: 1. `player`是被设置标志的那名角色; 2. `flag`就是我们设置的标志了。 </br>而查看是否拥有一种标志,所用的方法则是Player的一位成员函数:`hasFlag`。它的原型是: ``` hasFlag(flag) ``` ![](https://img.kancloud.cn/26/6b/266bb725034bd9aa1723357b178b24e8_404x23.png) </br>在这里,参数`flag`就是要查看的标志了。 </br>标志是一个字符串,也可以看作是一种文字版的不显示在游戏界面上的标记。我们可以为我们的技能使用我们喜欢的一串文本作为专有的标志,不过通常我们还是用“技能名+状态”的样式打造我们的标志,显得更有规律性。 </br>由于标志不用显示给玩家看,所以就不需要在翻译表里面写它的翻译了。 </br>现在我们把技能示范改成这个样子: > 示范:出牌阶段,你可以弃置一张黑桃牌并选择一名角色,你和该角色各摸两张牌。每回合限一次。 </br>这样就可以用到我们的标志了。 </br>假定我们给技能示范起的标志名字叫做"shifan_used",用来表示这个技能已经发动过了。我们可以在创建示范视为技的`enabled_at_play`部分检查这个标记是否已经存在,从而判断是否可以发动这个技能。而在技能卡的代码中,将设置标志作为技能卡的一个使用效果,写在`on_use`或`on_effect`部分。这样,就可以通过标志控制技能的使用次数了。 </br>代码方面,具体来说是这个样子的: </br>示范技能卡部分:设置"shifan_used"标记。 ![](https://img.kancloud.cn/e4/e3/e4e38de0b193a39ce6f1ac1fe57be46a_469x200.png) </br>示范视为技部分:检查标记。 ![](https://img.kancloud.cn/46/95/4695c2cf34c98eaf6cefcfa68c500ce9_452x88.png) </br>好了,到游戏中看看变化吧! </br>刚进入出牌阶段时,示范技能是可以发动的: ![](https://img.kancloud.cn/45/20/45200ff2e496d7ff27ae723a79907a07_433x169.png) </br>当我们发动完示范技能后,这个按钮就灰掉了,不能再次发动了: ![](https://img.kancloud.cn/4e/35/4e35ab743527731d7b3efa17c2a0fba6_450x173.png) </br>使用标志的一个好处是,回合结束后,标志会自动被清除掉,所以不用担心设置完标志后以后都不能使用这个技能了。而如果使用标记的话,为了下个回合还能用,还要在回合结束时重新把标记加上~ 看吧,这就是事实: ![](https://img.kancloud.cn/ec/bf/ecbfb7c5abf5d790c5149eaa7fb89a8e_452x174.png) </br>新的回合,依然能用! </br>当然了,如果我们想人为地去掉某个标志,也是可以实现的。去掉一个标志同样要通过`setPlayerFlag`函数。不过有一点小变化,就是在标志的前端添上一个负号"-",再使用此函数。负,就是相反的意思嘛。 </br>一般格式:房间对象:setPlayerFlag("-标志") </br>比如我们在技能卡里面再添上这么一条代码: ![](https://img.kancloud.cn/a2/29/a22923a2b6bd983241459f68f58d340b_470x242.png) </br>结果呢?到游戏里看看吧—— ![](https://img.kancloud.cn/2f/00/2f00cd409ccb16e978f1b7688bb04358_241x257.png) </br>刷牌又开始了……