正在我们得意于卡牌转化与传递的顺利完成时,孙悟空报告了一个情况:
</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>刷牌又开始了……
- 编写说明
- 第一章 创建一个新武将
- 1.1 开发环境准备
- 1.2 创建一个新的武将扩展包
- 1.3 创建我们的新武将
- 第二章 添加技能
- 第三章 武将美化
- 3.1 美化环境准备
- 3.2 添加武将卡牌
- 3.3 添加武将头像
- 3.4 添加武将标签
- 第四章 创建一个新技能
- 第五章 添加音效
- 5.1 打造自己的声音工作室
- 5.2 添加技能使用音效
- 5.3 添加武将阵亡音效
- 第六章 添加提示信息
- 6.1 添加代码注释
- 6.2 显示提示信息
- 6.3 启动全屏信息特效
- 第七章 武将变更
- 第八章 启用AI
- 8.1 创建我们的AI文件
- 8.2 真实的AI
- 8.3 动手写AI
- 第九章 修改距离
- 第十章 技能管理
- 10.1 技能判定
- 10.2 创建技能
- 10.3 获得技能
- 10.4 失去技能
- 第十一章 修改手牌上限
- 第十二章 体力变更
- 12.1 流失体力
- 12.2 制造伤害
- 13.3 恢复体力
- 12.4 流失体力上限
- 12.5 增长体力上限
- 第十三章 游戏进程的变更
- 13.1 创建阶段触发技能
- 13.2 跳过回合阶段
- 13.3 插入一个额外的回合阶段
- 13.4 启用翻面
- 13.5 获得一个额外的回合
- 第十四章 启用标记(Mark)
- 14.1 添加标记
- 14.2 获得标记
- 14.3 失去标记
- 14.4 查看标记数目
- 第十五章 卡牌转换
- 15.1 主动牌的转换
- 15.2 被动牌的转换
- 第十六章 卡牌传递
- 16.1 创建摸牌技能
- 16.2 游戏中摸牌
- 16.3 游戏中弃牌
- 16.4 从其他武将处获得牌
- 16.5 判断目标区域是否有牌
- 16.6 移动场上的牌
- 第十七章 用牌实现技能效果
- 第十八章 启用标志(Flag)
- 第十九章 涉足判定领域
- 19.1 启用判定
- 19.2 更改判定
- 19.3 获得判定牌
- 第二十章 私家牌堆
- 20.1 向牌堆中添加牌
- 20.2 查看牌堆中牌的数量
- 20.3 从牌堆中移除牌
- 第二十一章 牌的锁定
- 第二十二章 免疫牌
- 第二十三章 让房间提供牌
- 23.1 提供主动牌
- 23.2 提供被动牌
- 第二十四章 启用标签(Tag)
- 第二十五章 濒死结算
- 第二十六章 交换座次
- 第二十七章 创建主公技
- 27.1 创建由主公发起的主公技
- 27.2 创建由他人发起的主公技
- 第二十八章 强力技能
- 28.1 直接死亡
- 28.2 改换身份
- 28.3 原地复活
- 28.4 立即胜利