“智乱天下,武逆乾坤,哼哼哼哼……”
</br>限定技和觉醒技的全场信息特效好酷哦,不过只要了解了这个全场特效是怎么来的,我们也可以试着做一个出来~
</br>这次我们要用到的是一个叫做`broadcastInvoke`的函数,别看它长就躲着不出来啊……来给介绍介绍:还记得上文的Room吧?这回用的这个`broadcastInvoke`也是Room的一个成员函数呢。所以依然可以通过源码(可在群文件里搜索 秒沉水 查找到源码)中的src\server\room.h查看它的具体信息。
</br>`broadcastInvoke`的原型是这样的:
![](https://img.kancloud.cn/57/ae/57ae4a528e36fa5c4d150b91396e0fe3_977x49.png)
```
broadcastInvoke(packet, except=NULL)
broadcastInvoke(method, arg=".", except=NULL)
```
</br>有两个原型啊……不过放心好了,我们这次只需要用到其中的第二个原型:
```
broadcastInvoke(method, arg, except)
```
</br>翻译过来就是:
broadcastInvoke(方法名称, 参数, 例外)
</br>让Room帮我们忙,总要告诉它我们要做什么。方法名称,正是用来区分这些可能的行为的。
</br>所有行为的列表,可以在源码(可在群文件里搜索 秒沉水 查找到源码)的doc\protocol.txt中查到(告知式命令)。
</br>而我们要做的全屏信息特效,属于动画类的方法,所以这个`method`参数的值就是`animate`了。
</br>再看`arg`参数,就是具体的执行效果参数了,这里我们用`lightbox`表示全屏特效,然后考虑要显示的话。
</br>但是……要显示什么话啊?“悟空,你还是跟为师西天取经吧……”嗯,就是它了。
</br>于是再次轮到我们多次躺枪的翻译表出场了,上回定义消息输出结构类型就是在这里搞的,这次定义全屏信息也要找它……反正是跟文本有关的事情它就都逃不了干系……
</br>写这么一句:
```
["$tangseng"] = "悟空,你还是跟为师西天取经吧……",
```
![](https://img.kancloud.cn/b4/18/b418245314ff4f1ba169f09767f2dbb3_549x70.png)
</br>用美元符号引导着,定义好了这个信息。
</br>这样,`arg`的值就是:`lightbox:$tangseng`。
</br>`except`是一个例外,表示不参与特效的那个ServerPlayer角色,默认是`NULL`,也就是所有玩游戏的人都能看到这个特效。所以这里直接忽略它吧。
</br>现在真是材料齐全,只待下锅了!
</br>好的,立刻给出实现这个特效的具体代码,为:
```
room:broadcastInvoke("animate", "lightbox:$tangseng")
```
![](https://img.kancloud.cn/fb/92/fb9287ac2a317a9cdd7139623669493c_625x269.png)
</br>快点到游戏里看看吧!
![](https://img.kancloud.cn/ff/84/ff84510b4ccbb54effccae391e1b9ba3_910x544.bmp)
</br>忽然发现,这个特效只持续了2秒种,好像有点短。
</br>没事,再加一个时间参数吧,4秒怎么样?
</br>其实对于全屏特效,arg值的一般格式是:
"lightbox:信息:持续时间"
</br>所以代码如下:
```
room:broadcastInvoke("animate", "lightbox:$tangseng:4000")
```
</br>要知道太阳神三国杀里面表示时间,是以毫秒为单位的,所以想表达4秒钟,就要写4000才对。
</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 立即胜利