专栏/求生之路插件编写入门教程(十)

求生之路插件编写入门教程(十)

2022年07月13日 04:06--浏览 · --点赞 · --评论
粉丝:142文章:11

前言

这节课内容比较多,全是满满的干货,希望各位仔细观看这节课,光写文案就花了我一个多小时。相信大家玩游戏时输入指令都有见过左侧菜单,创建菜单一般分为两种方式,一种方式是使用Panel画上去,这种菜单灵活,可以绘制出各种复杂好看的菜单面板,但是涉及内容较多,而且除了花里胡哨没有实际用处(有兴趣的同学可以自己进行学习),今天讲解的是另一种常用的创建菜单方法。

学习门槛:请确定你掌握了至少一门高级程序设计语言的基础语法,并且拥有开服经验以及掌握了基本的插件安装流程

PS:教程并不一定会长期更新,UP会根据反响来确认后续是否更新,以及更新速度

源码展示

1. 创建菜单函数

RegConsoleCmd函数在第八课已经讲解过,这里就不重复赘述。

这里使用CreateMenu函数创建了一个菜单对象,并没有实际显示,我们需要创建一个Handle类型的变量去接收菜单对象。

第一个参数:菜单响应事件的回调函数,当选择菜单某项时,会默认执行回调函数进行处理。

2. 给菜单对象初始化

SetMenuTitle函数用于设置菜单标题。

第一个参数:菜单对象。

第二个参数:菜单标题。

AddMenuItem函数用于设置菜单选项。

第一个参数:菜单对象。

第二个参数:选项的key,必须唯一,不能重复

第三个参数:选项文本内容。

可以看到这里使用了一个Format函数,该函数用于处理一些动态数据的格式化。例如,插件在玩家打开菜单之前,并不清楚是哪一个玩家打开的菜单,使用Format函数进行格式化,将玩家ID传入,就可以使每个玩家打开时显示的都是自己的信息。这里解释的并不清晰,可以参考C语言中的sprintf函数的使用

Format函数用于格式化字符串。

第一个参数:用于存储格式化后字符串的数组。

第二个参数:存储长度。sizeof函数用于计算出传入参数的长度。

第三个参数:需要格式化的字符串。

第四个参数:该参数为可变参数,具体需要根据第三个参数中的占位符(例如:%N)的个数来确定具体的个数。

SetMenuExitButton函数用于设置菜单退出按钮。与之相同的还有一个SetMenuExitBackButton函数,用于设置菜单退出和返回按钮,一般用于多级菜单。

第一个参数:菜单对象。

第二个参数:为true即可。

3. 显示菜单

DisplayMenu函数用于将菜单对象进行显示,此时才是真正的将菜单显示在游戏界面上。

第一个参数:菜单对象。

第二个参数:显示给哪个玩家看的玩家ID。

第三个参数:设置菜单的显示风格,设置成MENU_TIME_FOREVER即可,表示不做操作就一直显示。

4. 菜单对象回调函数

函数声明方法照图抄写即可,不做解释。

第一个参数:菜单对象。

第二个参数:菜单状态。

第三个参数:操作了菜单的玩家ID。

第四个参数:玩家选择菜单项的下标。

这段照抄即可,表示玩家选中无关选项后自动关闭菜单。(例如,菜单项只有1和2,玩家选择3、4、5、6...)

这段表示如果玩家选择菜单项有效后的处理。

通过switch(item)对玩家菜单选项进行对应处理。

当为0时表示玩家选择第1项(菜单选项从1开始,菜单选项下标从0开始),重新调用Command_MainMenu函数用于,当玩家选择菜单项后菜单会自动关闭,重新调用创建菜单会重新显示一个新的菜单,从游戏方面来看,即是保持菜单不消失的效果,实际上是菜单刷新的太快视觉上看不出来。

当为1时调用PrintToChatAll函数弹出提示。

5. 总结

整个菜单创建的流程如下:

(1)创建菜单对象

(2)初始化设置菜单对象

(3)显示菜单

(4)菜单选项处理

6. 插件测试

可以看到菜单项1的内容,会根据玩家的名字显示不同的内容。当选择1时,菜单会有一声选中的音效但是并未消失,选择2时聊天框弹出提示。

 

 

 

以上为本次课程的全部内容了。转载请注明出处,作者:凌鹿。


投诉或建议