有的武将有时候可以变身成为其他的武将,比如群雄势力的蔡文姬可以在游戏开始时发动技能归乡成为魏势力的SP蔡文姬。说到变身,我们孙悟空当然有话要说了,七十二般变化可不是凭空吹出来的!那么现在,我们就从代码上,找回昔日悟空变身的风采吧。
</br>这一次我们要用到的,依然是Room的一个成员函数,名字唤作`changeHero`。先从源码(可在群文件里搜索 秒沉水 查找到源码)中的src\server\room.h里面看看它的原型吧:
![](https://img.kancloud.cn/8a/07/8a07258b782144b0a86f81a1394b5440_1098x46.png)
```
changeHero(
player,
new_general,
full_state,
invoke_start = true,
isSecondaryHero = false,
sendLog = true
)
```
</br>哇,参数好多啊……
</br>不过仔细一看,似乎也没什么可怕的。先看看第一个参数吧:
哦,又是`player`,刚才我们已经认识它了,表示的是玩游戏的那位,不过现在要称呼它为"要变身"的那位了。
</br>然后接下来:
</br>`new_general`,就应该是变身之后的新武将的名字了,也很好理解。
</br>`full_state`,直译就是"满状态",填true的话就意味着变身之后身体健康、体力满满;填false的话就只是变个脸换个技能而已,原来的什么体力值啊都没有变化。
</br>`invoke_start`,是指是否以开始游戏的状态进行变身。默认值是true,表示需要以开始游戏的状态变身。这是什么意思呢?因为有些武将在开始游戏的时候会做一些游戏准备啦,比如神诸葛亮需要额外发七张牌作为七星、神吕布需要获得两个暴怒标记什么的。假设现在要把武将变更成神诸葛亮了,如果此处填true,那么变身时可以摸七张牌进行七星准备,要是填的是false……那么变成的就只能是一个没有星星的白板诸葛亮了。
</br>`isSecondaryHero`,是指变更的位置。填true就是变更副将,填false就是变更主将,而默认值是false啦。当然,这个参数只有在双将模式下才有效~
</br>`sendLog`,表示是否发送提示信息。默认是填true的,也就是发送信息,而填false自然就是不发送。如果选择发送信息的话,变身之后会在出牌记录那里显示一句:某某 变身为 某某某。是不是很人性化?
</br>现在我们想让我们的武将变更成什么呢?好吧,就变成孙权吧。
</br>借用一下貂蝉脱壳的代码……
![](https://img.kancloud.cn/a3/52/a3522a7db191ed804dfda6f9adcac16a_775x244.png)
</br>变更成孙权的代码则是:
```
room:changeHero(player, "sunquan", true, true, false, true)
```
</br>据此将整个技能的代码修改成我们需要的样子,并把它加到孙悟空身上:
![](https://img.kancloud.cn/bb/fb/bbfbe6395ef6c6b1c9c9cced67075dbc_739x336.png)
</br>当然,不要忘记了翻译。
![](https://img.kancloud.cn/91/8c/918c8daadc20a51f96c0816a79dbf816_588x66.png)
</br>这样就好了!
</br>
到游戏中感受一下吧。
![](https://img.kancloud.cn/09/fd/09fd9a5a22adc6d5bb9a1cb701861af7_825x415.png)
</br>变!
![](https://img.kancloud.cn/a9/b6/a9b694e5c527057b95a171c0c496bd10_1117x713.png)
</br>成功!
</br>别以为是在糊弄人哦,对面那个也是孙悟空只是因为当前玩的是同将模式,看游戏记录就都明白了~
![](https://img.kancloud.cn/9d/09/9d098feeec26be95ee87e6eee01181ea_219x167.png)
</br>That’s exciting!
- 编写说明
- 第一章 创建一个新武将
- 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 立即胜利