多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
标记的获得已经实现了,但是看看人家神吕布,发动技能都是要用标记的;眼看着自己的标记数目只升不降,也不是个事儿呀!我们又该怎么做到把标记弃掉呢? </br>这时ServerPlayer为我们又提供了另一个两个成员函数,来帮我们解决这个烦恼。第一个函数性格温和,它是:`loseMark`。原型如下: ``` loseMark(mark, n=1) ``` ![](https://img.kancloud.cn/c1/2b/c12b338946b96669807e5dde9ef4d6f9_460x22.png) </br>这个函数可以用来去除指定数目的特定标记。它的参数含义和`gainMark`的那两个参数含义是相同的,`mark`表示标记的名字,`n`表示去除标记的数目。 </br>另一个函数则更暴躁一些,它是:`loseAllMarks`。原型如下: ``` loseAllMarks(mark) ``` ![](https://img.kancloud.cn/0b/31/0b31f3e5c40da2cce7eb0dbf584b7176_443x25.png) </br>这个函数可以用来清除所有指定的标记,而它的参数mark就是标记名了。 </br>下面我们来创建一个使用标记的技能: > 极乐:判定阶段开始时,你可以弃置所有的‘斗胜’标记,令所有其他角色各失去1点体力。 </br>忽然遇到一个问题:怎样得到全场其他所有角色的列表呢? </br>Room老兄站了出来,为我们保举了它的一个成员函数:`getOtherPlayers`。 </br>这个函数的原型是: ``` getOtherPlayers(except) ``` ![](https://img.kancloud.cn/ca/73/ca731812653d862bb5f52d5336d7a4f6_665x24.png) </br>其中`except`表示被排除的那个家伙,在我们这里自然就是孙悟空自己了。 </br>代码方面就是这样了—— ![](https://img.kancloud.cn/26/7e/267e9b713fbb213928d7d79cfd1a4968_692x460.png) </br>哦?那个sgs.qlist是怎么回事? </br>听说那是一个把门的卫士,而我们从`getOtherPlayers`那里得到的列表其实是一个角色的列表,每当我们需要从列表里面点一名角色出来的时候,这个卫士就到列表里面把最靠近门的角色给我们拽出来~ </br>所以在下面的对所有角色进行扫描的时候,sgs.qlist就帮了我们大忙,每次轮到它工作的时候,它就从playerlist列表中拽一个出来,交到前面那个dest那里去,如此反复,直到列表中的所有角色都被检查了个遍!(这个sgs.qlist,好像程序员们称呼它为:迭代算子) </br>暗暗地告诉自己:关于列表的问题,我们是可以在旁边那个extension-doc\Fundamentals.lua文件里面找到许多说明的。 </br>好啦,到游戏中看看效果吧! </br>判定阶段…… ![](https://img.kancloud.cn/c3/a8/c3a83bc502edf1cf47dbb74ece7054d9_836x401.png) </br>果断发动极乐! ![](https://img.kancloud.cn/ae/fa/aefa7f1808c92072fe8bb9f87326dfe9_426x190.png) </br>看到没有?标记没有啦! ![](https://img.kancloud.cn/59/53/5953ae355abc650050c94109169f4791_465x239.png) </br>任务完成!