找回密码
 立即注册

QQ登录

只需一步,快速开始

[1.8.x-1.12.2]动态菜单——菜单能这么玩?!动态&聊天交互

像素搬运菌 2024-2-29 02:41:22 综合 阅读 227 来自 中国广西南宁
服务器插件
中文名称: 动态菜单
英文名称: MyInventory
插件来源: 转载
适用服务端: Spigot 
插件类型: 综合
语言支持: 中文 英文 
适用版本: 1.8.x 1.9.x 1.10.x 1.11.x 1.12.x 
前置插件/mod: Vault,PlaceHolderAPI,AudioBuffer,PlayerPoints(均不必要)
下载地址: https://github.com/LocyDragon/MyInventory
原贴地址: https://github.com/LocyDragon/MyInventory

马上登录/注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
MyInventory——国内首个可视性编辑动态菜单插件

· 为什么选择MyInventory插件?
①可视化编辑——直接打开背包画菜单,制作菜单模板的过程根本不需要碰一下配置文件

②动态菜单——在可视化编辑的基础上,你可以连续画几个菜单,使它们连起来,产生动态效果

③交互式——可以与聊天栏进行互动,可塑性更强

④采用线程池优化插件——一半的任务是在异步完成的,优化较强

⑤作者很勤(lan)快(duo)——有问题在下面留言反馈,目前插件还是BETA版的>.<

⑥经测试本插件可以在大部分服务端上运行


本插件是在PCD的名义下发布的
你还可以加PCD的扣扣群来反馈bug:  219412424/546818810


插件下载地址:
开源地址: https://github.com/LocyDragon/MyInventory

插件介绍

① 插件指令及其权限
===================> 所有指令
/miv create [GUI名称] [格子数] [Title名称] ——创建一个新的Gui界面模板
/miv frame [Gui名称] [帧数(从0开始,即这里写0就是第一帧,写1就是第二帧,以此类推)] ——编辑菜单的某一帧
/miv open [GUI名称] [玩家名称] ——打开一个界面给玩家
/miv see [GUI名称] ——查看一个界面的信息
/miv list ——查看所有界面名称
/miv loop [GUI名称] [Y/N] ——设置是否动画循环播放(Y是是,N是否)
/miv music [GUI名称] [音乐名称] ——设置GUI界面背景音乐(需要AudioBuffer插件支持)
/miv period [GUI名称] [间隔(秒,可以是小数,默认0.5)] ——设置每帧的间隔时间
/miv reload ——重载所有脚本
===================> 所有权限
MyInventory.Open —— 使用/miv open的权限


②插件如何安装
1.下载插件,丢入服务器的plugins文件夹内
2.装入后启动服务器,你会发现plugins文件夹内多了一个MyInventory文件夹,这个是插件的目录文件夹
3.装入后插件会自动生成一个默认菜单
4.你只需要使用/miv open test [你的名字] ——就能打开这个测试菜单了.


③安装后如何简单使用
1.输入指令 /miv create [GUI名称] [格子数] [Title名称] ——创建一个新的Gui界面模板
2.输入指令/miv frame [GUI名称] 0 ——编辑第一帧的界面|输入这个指令后他会给你打开一个界面,你往里面放点东西就行

3.输入指令/miv frame [GUI名称] 1 ——编辑第二帧的界面,和第一帧一样。为了您修改方便,第二帧我们已经帮你把第一帧的内容复制过去了,你只需要做一些细小的修改即可

4.当你创造了两帧及两帧以上,它就可以动起来了。使用/miv open [界面名字] [玩家名字] 来打开它吧

5.为了让它更美观,你还能让它动的更快/或者也可以让他不循环播放.试试用以下指令进行美化:

/miv loop [GUI名称] [Y/N] ——设置是否动画循环播放(Y是是,N是否)
/miv music [GUI名称] [音乐名称] ——设置GUI界面背景音乐(需要AudioBuffer插件支持)
/miv period [GUI名称] [间隔(秒,可以是小数,默认0.5)] ——设置每帧的间隔时间

6.试试多做几帧,效果或许会更好哦~
7.如果你手残想改前面的话,可以用/miv frame ,帧数填之前做的,来修改前面的帧
8.配合上面的视频食用更佳
9.试试适当空帧,就是那一帧什么都不放,这样在播放的时候能实现播放到那边停顿一下的效果,和视频里的头颅快要出来之前停顿一下是一个效果。



④脚本的连接
· 我们不难从视频中看到,没有加脚本之前,那个头颅是点不了的,加了脚本之后,头颅就能实现互动了,那么到底怎么做呢?

· 从视频中可知,脚本文件全在MyInventory文件夹中的Scripts文件夹,并且插件默认的时候也是和菜单配套地给了你一个的。脚本不分文件,只要是在Scripts文件夹中,无论在哪个yml里,它都会被加载进去。比如我们这个(.//plugins//MyInventory//Scripts//TestScript.yml):

·SlotTest 是脚本的名字,不能重复,但是也没有用处.

· linkToMenu 是脚本连接到的菜单的名称

· location 决定了点击这个菜单中哪个格子里的东西会触发这个脚本,那么为什么这里是13而不是14呢

你看这么数过来,这个头颅应该是在14的位置,然而实际上这里填的位置等于:
数过来的位置 - 1
也就是第一格填 0  第二格 填 1  第三格填2 …… 以此类推

· action 决定了触发方式,可以填的有:
在背包里按ctrl+Q

双击
大概也是Q键
左键
中键
按下键盘上1~9
右键
shift+左键
shift+右键


· script里面填写的是脚本,我们接下来会告诉你这里面填写什么
· out节点未在默认的配置文件中出现,这是非正常退出会发送的信息,比如判断出来玩家的钱不够,或者没有足够的物品之类的。



⑤脚本——上(简单的语句)
· 简单来说,脚本内容代表了点击这个物品会触发什么
· 脚本是依照从上往下的顺序运行的
· 我们先做一个简单的内容吧,就是告诉玩家几条信息;

· 使用/miv reload 重载插件,注意转码,当去触发这个脚本时,你会看到信息

· 我们还可以做一个给玩家一点钱的功能(需要经济插件支持),比如:

当点击时

· 罗列出所有脚本(所有的冒号之类的东西英文状态下的,并且比如tell里的内容是支持papi变量的):

1.player ——以玩家身份执行一条指令,用法: player: %玩家指令%
例子脚本:
tell: &a你的名字是%name%,你输入了/spawn!
player: /spawn


2.op ——输入op指令,用法: op: %指令%
例子:
tell: &a你获得了64个圆石
op: /give %name% 1 64


3.console ——以控制台身份输入指令,用法 console: %指令%
例子同上,就不举了.

4.close ——关闭背包
例子:
tell: &a关闭了背包
close:   #注意这里的结尾有个冒号(英文状态下的)


5.money ——给钱 用法:   money: %钱数% (需要经济插件支持)

6.point ——给点券 用法: point: %点券数% (需要PlayerPoint插件支持)

7.tell ——发送信息 用法: tell: %信息内容%

8.cost ——花费金币 用法: cost: %钱数%
例子:
tell: &a你花费了自己三倍等级的钱数
cost: %level%*3


9.spend ——花费点券, 用法: spend: %点券数%
例子:
tell: &a你花费了自己十倍血量的点券数
spend: %health%*10


10.name_item ——以名字来花费物品, 用法: name_item: %物品花费数量%|%物品名称%
例子:
tell: &a你花费了一个魔王之戒
name_item: 1|&c&l魔王之戒


11.id_item ——以物品英文名来花费物品,用法: id_item: %物品花费数量%|%物品英文名%
例子:
tell: &a你花费了64个钻石
id_item: 64|diamond

12.number ——判断一个内容是否是数字,如果不是,立即中断脚本并发送out节点里的内容.
用法: number: %你要判断的内容%
例子:

13.permission ——判断玩家是否有一个权限,如果没有,立即中断脚本并发送out节点里的内容.
用法:permission: %权限%
例子:
permission: TestMenu.use

14.compare ——比较器,如果比较失败,立即中断脚本并发送out节点里的内容.
例子:
1.字符的比较
compare: %name% = LocyDragon   #比较玩家的名字是否是LocyDragon
2.数字的比较
compare: %level% > 30 #比较玩家级别是否大于30级
3.你还可以更加进阶:
compare: %vault_eco_balance% > 10000 #玩家的金币是否大于1w (需要papi支持)

15.ask ——这个大概是最难理解但是却是最有用的
作用:
问玩家一个内容,请玩家在聊天栏内作出回答,并把玩家的回答存入变量
用法:
ask: %存入的变量名%|%最大回复时间(秒)%|%发送的信息%
例子:
ask: %answer%|5|&a请随便输入一条信息
tell: &a你发送的信息是: %answer%
在上面中,我们把变量存入了%answer%

注:以上东西都是可以用PAPI变量的,当然,插件也自带一些变量:
%frame% ——玩家目前播放到的帧数
%exp% 经验值
%level% 等级
%health% 血量
%name% 名字
%display_name% 显示名
%ip% ip
%last_damage% 上一次受的伤害
%speed% 玩家速度



⑥脚本——中(试试做一个脚本吧)
要求: 当玩家点击一个物品时,问玩家要购买几个苹果,并且一个苹果5块钱,玩家输入后立即扣钱购买
以下的是实现的脚本

效果如下:

我们来逐条分析:
首先是
ask: %apple_number%|5|&7>>> &c你想要几个苹果?(5元一个)
我们给玩家问了一句话,并把他的回答存入占位符(变量) %apple_number%里
number: %apple_number%
我们判断玩家输入的是不是纯数字,如果不是数字不就炸了吗,如果钱不够会跳出脚本,发送out里的信息
cost: %apple_number%*5
扣钱,为五倍的购买数,如果钱不够会跳出脚本,发送out里的信息
op: /give %name% apple %apple_number%
执行op指令,给玩家苹果
tell: &a购买完成(* ̄︶ ̄)!
发送购买完成的信息





最后

· 如果你觉得插件牛皮,你可以在爱发电支持我:

或者,在底下评分,蟹蟹~

已知BUG:
跳转ui时请不要直接使用指令跳转,在指令前加一个close脚本(见"脚本——上(简单的语句)")


本插件所用代码部分来自作品EnchantmentsEnhance

(0)
像素搬运菌板块版主

帖子地址: 

发表回复

使用道具 举报