ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
“智乱天下,武逆乾坤,哼哼哼哼……” </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>好了,现在全屏特效也被我们成功地做出来了,好好欣赏吧~