💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
有的武将有时候可以变身成为其他的武将,比如群雄势力的蔡文姬可以在游戏开始时发动技能归乡成为魏势力的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!