粉丝60.1万获赞355.7万
大家好,我是魔兽插件曲啊,我是老胡,今天啊,咱们来开发一个有界面的插件视频,最后也会把这个演示插件的代码分享给大家。这个视频内容超级实用,也超级硬核,建议三年收藏一下, 见面开发,有信誉的朋友一定不要错过。我原本的计划是想把这个视频分为两部分,先说理论,然后再搞实战。 是我整理了很多资料之后啊,发现理论的部分实在是太多太杂了,断断续续的整理了能有一个多月的时间吧,然后把网上能找到的中文的、英文的资料全部看了一个遍,估计能有几百个文章吧,然后 cpu 和内存全都炸了,老人也都裂开了。 说实话呀,我有好几次都想放弃这个选题了,视频也做不了几天了,搁这写论文给谁看呢?水视频他不香吗?但是看着那个二百多个预约呀,我实在是不想让他们失望,咬着牙也要 做下去。但是按照目前这个思路啊,官服之前肯定是搞不定了。所以啊,我采访了几个插件开发方面的朋友,讨论之后啊,我们得出一个结论就是理论虽好,但是其实并不适合入门,如果能直接实战的话,效果会更好。 我恍然大悟,其实我自己在学习插件的时候也曾遇到过这个问题,就是可以参考的插件太少了,像 tsmwadbm 这种插件啊,虽然优秀,但是都太复杂了,看起来根本就无从下手。 如果说能有一个入门级的插件作为参考的话,拿过来抄一抄,改一改,对入门会是很大的帮助。谁的第一个插件不是靠抄呢,只要一个关注和三零啊,那这个插件就随便你抄。 那我们就进入正题,首先演示一下这个插件的功能,然后再说明一下实现这些功能的代码。最上面这个重载按钮, 这种字面意思点击一下就会重载游戏界面,因为咱在开发插件的过程中啊,是要频繁的去重启来重新加载插件的,所以有这么个按钮啊,会方便一些。 接下来的三个功能啊,是跟跟随相关的,第一个呢是跟随目标,第二个是跟随队长,第三个是停止跟随。再往下是一个单人开团的按钮,他的作用跟我们之前发过的单人开团红类似, 就是通过邀请一个不存在的人来进组,然后再转换成团队,从而进入团板去单刷。再往下是一个多选框,勾选上之后他就会开始切换采矿和采药,取消勾选呢就会停止切换。 再往下是一个文本框和一个发送按钮,文本框内啊,可以填写一个物品 id, 点击发送就会发送一个白字的物品链接。这里的四九六二三 对应的呀,就是大家所组织的城府影子哀伤。再再往下是一个灰色的文字,然后最外层呢,我们用一个框体啊,把以上这些内容都包含进去了,这个框体有一个标题栏叫老胡工具栏和一个关闭按钮, 然后按住这个标题栏呢,就可以拖动这个界面了,点击这个关闭按钮就可以关闭这个界面。那如果界面被关闭之后又想打开怎么办呢?我们可以通过一个红斜杠老胡来重新打开这个界面, 那以上就是这个插件的全部内容,然后我们就来看代码插件目录下呀,有一个文件夹叫老胡 to box, 在这个文件夹下面有一个跟文件夹同名的文件,老胡 tobox 点 toc, 这两个名字必须相同啊,另外还有两个 lua 文件文, 打开这个 toc 文件,可以看到在 toc 文件中引入了另外两个 luv 文件,这样一来啊,就会按顺序的加载那两个 luv 文件,其中我们这个视频的代码全部都放在了 ui 点 luv 文件中。 diy 这个 lua 中只有一个没用的函数, 如果说你想要实现一些功能,可以把你的代码放在这个文件中,那么我们就重点介绍我们的 luv 文件。 在这个文件的第一号啊,有一个 fanx, 说明这是一个函数,这个函数啊,是我们用来初始画界面用的,咱先不看这个函数的内部,把这个函数给他折叠起来, 点这个函数前面有一个减号加号,就类似于那个任务折叠一样。这里我插一句啊,这个视频演示用的编辑器是 notice 加加,大家用自己顺手的编辑器就可以了啊,比如 vs code, 撒布莱 mham, 唯一不建议使用的啊,就是 vno, 是自带的那个 第四本,他没有代码着色,而且经常给你搞出一些编码错误。好,咱继续看代码。再往下还有一个函数,这个函数啊,是用来做双彩切换的,那我们也把它折叠起来,然后啊,我们就可以看到这个代码的全貌了。除了上面这两个函数啊,往下是对一个叫爱当 lody 的的事件的监控, 你的每一个插件加载完成之后啊,都会触发一次这个事件,我们对事件做了一个判断,如果说当前触发的是我们这个插件,那么就执行一下上面这两个函数。 最后这一段啊,是一个自定义的红命令,我们定义了一个叫做斜杠老胡的红命令,如这个红命令啊,就会显示出我们的界面。那接下来我们就看一下我们的重头戏,以利的 ui 函数打开它。首先啊,创建了一个主界面这一段, 然后是重载界面,跟随目标的按钮,跟随队长的按钮,跟随停止跟随的按钮,单人开团的按钮,装彩切换的多选框, 然后下面是文本框以及那个发送按钮。然后最后这一块啊,就是一个普通的文字,这个代码的顺序啊,就跟咱界面上看到的那个按钮的顺序是一模一样的,所以说大家配合的这个注视应该很快就能找到对应的代码在哪。那咱来逐句解释一下啊,这个主界面呢, 首先是 christ frame, 然后创建了一个普通的 frame。 第二个参数呢,我们传来一个老胡 main fram, 这个参数啊,可以给你的界面元素定义一个全局的名字,比如说我这个老胡 main fram, 它就会变成一个全局变量,这个全局变量所代表的就是我创建的这个 界面。所以咱刚才输入红的时候啊,执行的命令就是老胡闷夫人冒号秀,也就是说显示出这个界面,当然这个参数啊,他并不是一个必选的, 所以说啊,如果你不需要它是一个全局变量,你也可以把它设置成一个空置物串,或者直接传一个。那然后咱来看第三个参数啊,第三个参数是它的负极分,咱直接传了一个 uipad, 这个 uipanta 呀代表的就是界面元素的顶级对象。最后一个参数我们传的是一个 template, 也就是一个模板,我们用的是 basic frame template, 魔兽世界里面还有很多其他的 template, 你用了哪个 template, 你的这个界面他就有哪个 template 的一些特性,那我们这个特性他就是有一个标题栏和这个关闭按钮,这两个东西是不需要我们自己去加的。然后这个 参数啊,他也是一个非币选的参数,你可以不传,你不传的话,那他就会创建一个空的飞,就啥也没有,然后你就都自己往里添加内容就行了。 封建完成之后啊,这个界面他就已经存在了,但是我们在游戏中啊,还看不见他,因为他还缺少很多必要的属性,因为系统还不知道他比如有多宽多高,以及他应该放在哪个地方。所以呢,我们下面就来设置一下,先设置他的一个宽,然后再设置一下他的高度, 然后还有他的一个标题。除此之外啊,我们还可以设置这个界面是可移动的,把这个幕布设置为处就可以了。 如果你传一个 boss, 或者说压根你不写这一句呢,那他就是不可移动的。然后下面这一句 set clamp to scream, 这一句是表示你在移动的时候,能不能把这个界面移动处理的游戏,如果你加了 这一句,并且传了醋的话,他就只能在你的游戏界面内移动,那后面这两部分啊,他跟这个幕布是配合使用的,那他们的意思啊,就是当你把鼠标按下的时候,这个界面就会跟着你的鼠标走,当你的这个鼠标停下的时候,这个界面就会停下来。那有同学可能会问啊, 这这么低级吗?这玩意还要我自己设置啊?这不就相当于我跟一个人说跟我走,然后还要跟他说抬左脚抬右脚,抬左脚抬右脚停下。 事实上呀,他妈就是这么低级,要不然你说为啥这么多年过去了,这魔兽插剑的界面 他就一直没什么变化?核心原因啊,就是他这个分装太他妈垃圾了。行吧,那咱接着说后面这一句啊,他设置的是这个界面的层级,当同一个位置出现多个界面的时候,那谁显示在前 里面,谁被挡住呢?如果说你是害的话,那你就能显示出来,如果说你是漏或者是 background, 那你就会被挡住。大家可以看到我这个界面啊,现在是可以把这个动作条盖住的,但是如果说我把它设置为漏,那咱再来看一下,它就会跑到这个动作条的后面去。 好,接着说后面这个 sipony 呢,咱来重点说说了,他是用来设置位置的,用过 wa 的人啊,应该对这个东西有一点了解。 皇上,世界中啊,每个界面元素都有几个特殊的位置,假如说这个橙色方块是我们的一个界面元素的话,那么他一共有八个方位,分别是上下左右四条边,以及左上右上、左下右下四个角。那要怎么设置界面的位置呢? 我们可以用一个词来形容,就叫贴贴,那咱这个例子里边啊,就是咱的 top rat 去跟谁贴贴呢?去跟这个迷你妹 贴贴。跟他的哪个位置贴贴呢?跟他的包层 rat, 也就是说把我的右上角贴到他的右下角,通过这种方式啊,就设定了他的一个位置,然后面还有两个指是偏移指, 他对应的是 x 轴和外轴。就是说咱贴完之后啊,我还要挪一挪,那我怎么挪呢? x 等于零,那就证明我水平方向不需要动,那外呢?那等于负二十,那就说明啊,我的垂直方向我要往下挪二十个像素, 然后最后一句,我们就把这个界面显示出来。啊,通过上面这些操作呀,那我们的主界面就有了,那我们就可以往里边去添加我们的按钮了,我们可以看到这个按钮,他的代码跟上面这个基本是类似的,也是 chris frame 来创建这个界面。前面 我们创建的是一个 freem 对象,那这呢?我们创建的是一个八成对象,也就是一个按钮,然后他的名字呢,我们就随便给他一个 freem, 有类似于张三,然后我们后面所有的按钮,哎,其实他都叫张三,所以说这个按钮啊,就相当于没有名字。 他的负界面,我们就不设置这个 uiparent 了,我们就直接设置成我们这个界面,老胡没分我们这样设置之后啊, 那这个界面就相当于是包含在他的里面,注意这里包含啊,他不是一个位置关系,不是说你的界面会自动显示在我的内部, 而是一个逻辑关系,是一个逻辑上的复制关系,你把它包含进去之后,假设说我把这个界面隐藏,那你这个八等就会自动隐藏。如果说他俩是一个并列关系的话,那我要隐藏我的界面的这么多元素,我就需要一个一个隐藏。然后再往后呢,我们就设置了一个 uipanel, 八成 template 也是跟他类似的一个 template, 那这个就是一个最普通的按钮的 template, 大家就跟着设置就好了。如果说你以后你懂得更多了,你可以去看一看个 api, 它使用还有很多其他的 template。 再往后我们用了另外一种设置大小的方式,把它点 sex 带子,然后传入了一个宽和高,它的作用啊,跟这个是类似的, 上面这种我们是 set wides, set heat, 用了两句分别设置宽高,然后下面这句呢,我们是一次性把宽高都设置了。那有人可能会问了,既然有这么一句的,你为啥还要整这种两句的呢?多麻烦呀, 各有各的用处。假设说你这个界面已经设置好了之后,你想要改变它的高,但是不变它的宽度,那么你就可以直接用这个 set heat, 然后再往后就是 satpoint。 跟上面这句类似啊,就是在设置他的位置,那他的位置是啥呢?我们用的是这个 top left, 也就是这个巴腾的左上,那他参考哪呢?参考我们这个负界面,参考他的左上,也就是说左上对齐, 对齐之后,然后我们再设置一个 xy 的偏移,这个 x 等于八,就是向右分移八个像素, 然后外轴呢,向下偏移二十八个像素,然后就设置好了他的位置,再往后我们设置一下这个巴腾的文字,然后把这个巴腾显示出来,这个按钮啊到这他就能显示了,然后但是这个按钮还没有任何的功能,那我们在后面再设置一下 script, 当点击的时候 unclick 点击的时候去执行一段代码,我们这就执行了这么简单的一句,就是 reload ui, 也就是 重在界面,后面还有一句,我们把这个八成啊又复制给了另外一个点亮,这个是方便我们下一个按钮来参考我们当前这个按钮的位置,不是一个必须的写法,大家可以忽略,那我们来看下一个按钮,也就是跟随目标,它的代码跟上一个按钮基本是一模一样的,它也是包含在我们那个大界面里边, 所以这个跟随按钮和我们的重载按钮是一个并列关系。接下来我们也是设置一下他的宽高,然后还有他的位置,这里面我们参考的就不再是我们的附件面了,而是我们的上一个按钮, 因为参考上一个按钮的话,我们的 s 轴是相同的,然后只要稍微调整歪轴就可以了。那大家在写这些界面的时候,你要 你当前这个界面要参考哪个界面,这是没有一个标准答案的,就你觉得参考哪个界面比较方便,那你就参考哪个界面。紧接着我们就设置了这个按钮的文字,然后让它显示出来。接下来再点击这个按钮的时候,我们 执行一段代码,就是 follow you need the target, 就是跟随我们的目标,然后再往后啊,分别是跟随队长和停止跟随的代码,然后只有他执行的代码是不一样的,其他全都一模一样。然后跟随队长呢是 follow you need the party one, 然后停止跟随呢是 follow you need to player。 然后再往后我们创建了一个单人开团的按钮,也都是一模一样的呀,宽高,设置他的位置, 然后单人开团显示,然后这这边呢,我们就执行他的内容啊,就判断了一下,如果说在队伍中,那么就 comford 就转换成团队, 否则呢,就应问他应理他邀请一个人叫做六六六的啊,这就是我们的单人开团的按钮。再往后啊,是一个多选框了,这个有点不一样了,我们可以看到 哪不一样,对比一下 quite frame, 第一个参数就不一样,这个叫 check 八腾,然后它的一个 template 的叫 check config check 八腾 template, 然后我们一样设置了一下它的宽高,因为它是一个正方形嘛,我们就把它设置成三十乘三十,然后这个是设置一个可点击的区域, 他在多大的范围内是可点击的,如果你不设置的话,那你就只能点击这个正方形来勾选,如果说你设置了这个, 你点击后面的文字也是可以勾选上的,对用户来说体验更好一些。然后跟前面一样设置一下他的位置,然后再设置一下他多选框右边的文字, 然后之后设置这个多选框的一个点击事件。当你点击他的时候,然后我去判断这个多选框目前是否是选中状态的,然后同时呢,把这个选中和不选中的值给他放到我们这个变量里面去, 那我们为什么要把它放在变量里面呢?因为我们想下次重载之后仍然保持你上次的勾选或者是不勾选的状态,那为了这个变量啊,在重载之后仍然有效,这个就需要我们把它保存的 wtf 里面。保存的方法也很简单,只需要我们把这个老虎 dbc 在 qc 里面定义一下,之前的一个视频有详细讲解过,咱这就不再发散了。接下来我们判断了一下,如果说这个变量啊,它的值为空,也就是说你还没有做过任何点击, 那么我们就给他一个初始化的值,我们这呢给他初始化为 fos, 也就是默认情况下,我们是不做双彩切换的。然后接下来啊,我们根据这个变量的值 去默认对这个多选框做一个勾选或者不勾选的状态。如果说你之前把这个多选框设置为打勾的状态,在这他出示完这个界面之后,他就会默认把它打上勾,那这个多选框的逻辑啊,显然要比 前面的按钮要稍微复杂一点。咱复盘一下,它可以分为四个部分,第一部分跟按钮一样是设置它应该怎么显示,然后第二部分是设置当它点击的时候,我们把这个值啊保存到一个变量里面去。第三部分呢,是把你之前保存的值,那重新啊给它显示出来。 那第四部分呢,这个其实不是必须的,通常是当你这个多选框需要默认勾选的时候,我们才需要做一个设置,因为我这边默认把它设置为 foss, 其实是不需要的,因为你不设置他也是不勾选的状态,你设置为 boss, 他依然是不勾选的状态。那多选框咱就先介绍到这,然后多选框和按钮啊,这两个是最常用的组件,如果说你觉得还有点与你物理的话,那一定要多试一试。 接下来咱说下一个组件文本框,文本框啊跟前面大差不差,也是先 crate frame 创建完之后,然后设置一下他 他的大小,然后还有他的位置,然后也可以给他设置一个默认显示的文字,然后文本框有一个事件叫 untax 的劝解,也就是说当你在文本框里面输入的时候,只要这个文本框的内容改变了,就会触发这个事件, 这个场景啊,我没有用到这个时间,然后所以说呢,这里面也没有这个内容,那接下来是一个焦点的处理,然后如果说这个文本框它自动获取的焦点,那我们要把这个焦点移除掉, 要不然呢,我们这个界面加载出来之后,你的光标啊,他就会自动定位在这个我们框里面,当用户按下这个 wasd 的时候,这个人物并不会动,而是把这个字母啊输入到这个我们框里面去了。这个图上并不是我们想要的,所以呢,我们就把这个焦点还给游戏本身。 接下来除了这个 pruijit, 我们还把这个八成啊复制给了另外一个变量叫 id tax 的,然后稍后我们会通过 id tax 来获取这个 文本框的内容。这个文本框的旁边啊,我们给他放一个发送按钮,这个发送按钮啊设置的比其他的按钮要小一些,那宽高只有四十乘以三十,同时他的位置呢,我们是用他的左边去参考上一个文本框的右边,也就是说把它放在文本框的右边。 接下来我们设置了一下这个按钮的文本,然后把按钮显示出来,并且设置一下他的点击时间。点击时间的处理第一步啊,还是清空这个文本框的一个焦点,防止用户无操作。那接下来我们用 id tax 点 get a tax 的来获取文本框的内容, 然后根据这个我们获取到的艾特麦地,然后用该的艾特米粉来获取到他的宁可,这个宁可啊就是装备致富串,然后之后呢,我们判断一下这个致富串是否存在,如果说存在,那我们就用这个三大千的麦飞机,然后把它发送出来,如果说不存在, 在呢,那么我们就提示艾特麦丽可能不存在,那我这里为了测试不打扰其他人,我用了一个参数是 c, 也就是白字。如果说你想发到大喊或者是公屏,可以参考前面的几个视频。 接下来看一下最普通的文字类型的写法,用的是一个叫做 crazyfront string 的一篇,那对这种普通的文字,我们需要设置一下它的位置,它的字体以及它的内容,那注意这里面老胡聊聊天,艾特 b 站或抖音,这个是文字的部分,然后前面的这些字母啊是文字的颜色, 那么以上就是这个插线的全部了。这期视频真的是有点长,前面查资料啊,花了半个月,然后录制剪辑,搞了差不多有一周,我这个嗓子大家可以听到都冒烟了好多次了,那希望大家可以给个三连,如果说你完全没跳,看到这里,即使你是零基础,我相信你应该也 了解的差不多了,如果觉得还不熟练啊,这是完全正常的,因为代码这个东西啊,肯定是要靠实践的,多写写,多改改,自然就熟练了。代码呢,大家可以下载过去,然后在本地啊多练一练。如果说你有一些作品想要给老胡,会给大家分享一下,可以发到我的邮箱, 我们可以在后面的视频里面去做一些讨论。对这个视频有任何的建议,也欢迎在评论区留言。以上就是本期视频的全部内容,别忘了关注三点,我们下期再见!拜拜!
十点零自带界面 ui 后,很多朋友都已经抛弃大脚、有爱等整合插件,转而使用单体插件。这里给大家推荐一套单体插件方案插件管理软件,我们可以选择国产的黑盒工坊,也可以使用正版的科四否准, 两者各有利弊,二选一即可。攻略战已经做好了他们的下载超链接。先说七款单体插件,一般玩家有七款插件就足够游玩魔兽了。 dbm 首领技能提醒,真实服打版没有 dbm 寸步难行。 details, 最接近 wcl 的伤害统计插件,可以多开窗口,同时监控多种数据集合时组队插件,不过现在还没更新,上游戏就会报错等更新。 auc 最强拍卖行插件, 小功能合集自动售卖垃圾、自动交接任务等各种小功能。 handle、 notes、 地图显示、稀有宝箱等显示坐标,游戏本身是不显示坐标的。然后是一些进阶差 高级选项设置插件,可以直接设置原本需要红才可以实现的系统设置,比如伤害数字大小,我们原本只能使用红来修改,在这款插件里直接拖动进度条来改变大小即可。 wa 和 tmw 强大且自由度极高的自定义监控, wa 比 tmw 的普及率更高。 exrt 自动邀请自动记录 wcl 日志监控全团团长必备。 tgcd 不但能实时回放自己使用的技能,还能回放队友使用的技能。 omcd 可以监控队友的 cd 技能,包括大招报名和控制技能。 战斗日制记录,单纯的 wcl 日制记录插件只有这一项功能,没有安装 exrt, 又想上传 wcl 的就装这个 misslot 按键保存和导入 mdt, 即将迎接十点零星的大秘境,路线规划将是第一件需要研究的事情。姓名版插件种类繁多, 根据自己的喜好选择,点击巨龙时代攻略战首页的单体插件方案,即可看到整个插件清单,后期有好用的插件也会持续添加到攻略战内。