• MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
Resource icon

JE Plugins LSI直播互动插件 —— 礼物、关注、互动触发自定义机制!支持脚本!! 2.0.3

致谢:感谢6幻、籽岷、米神提供的视频里“关注=刷怪”创意。我通过自己的开发也实现了类似功能,并将之加强。经过几天直播之后,发现有些其他主播开始复制此类玩法,所以将本插件公开发布。
公告:
2021/2/8: 1.2-fix4之前由于类加载问题导致插件报错无法加载,现在已经修复。感谢大家支持!
2021/2/17: 2.0修复了之前房间热度更新会报错的bug!但是新功能还未经测试!!!执行器现在默认不发消息了。
2021/2/18: 2.0.1修复了swap-hotbar的数组越界问题,修复了script执行器和filter执行器。修改了js的api。2.0.2修复了2.0以来的执行器调用逻辑错误(bug)。2021/2/22: 2.0.3增加arrow执行器
功能:
1. 高级的事件系统(配置文件即可实现)
2. 关注、特别关注触发事件
3. 投礼物触发事件
4. 多人弹幕召唤(比如10个不同的观众一起发“尸如潮水”)触发
5. 直播观众击杀榜:直播间观众击杀的游戏内玩家数
6. 自定义刷怪位置:弹幕发“打开附近刷怪”可以让怪物出生在附近而不是脸上。
7. 同时监控多个直播间:把room设为一个房间号列表即可!(看示例)
8. 【2.0新】JavaScript表达式、脚本
9. 【2.0新】玩家选择器,只选择符合要求的玩家(权限检测)


前置需求:
1. Essentials插件
2. PlaceholderAPI插件
3. MySQL数据库:记录观众的操作事件和玩家死亡数

原理:发现直播间事件 -> 执行MC游戏动作


执行器:

Code:
执行器名字:参数1|参数2|...|参数N
注意:
1. 触发的多个执行器会按顺序执行!
2. 就算没有参数必须也要有冒号!!

执行器列表:
Code:
heal:治疗点数  -> 治疗玩家
item:物品Material|物品数量  -> 生成物品
spawn:ZOMBIE*5|SKELETON*5  -> 从参数中随机选择一个出生
dropall:    -> 掉落背包所有物品(无参数)
swap-hotbar:次数    -> 随机交换物品栏指定次数
effect:药水效果类型|倍数|tick数    -> 给所有玩家药水效果
drop:      -> 掉落手中物品
rename-hand-item:     -> 给观众重命名物品的机会(之后弹幕里发“改名:要改成的名字”)
feed:数量      -> 增加饥饿值
【2.0+】delay:tick数  -> 延时指定tick数
【2.0+】select:权限节点 -> 选择指定权限的玩家(权限前边加英文叹号!则选择没有这个权限的)
【2.0+】chat:聊天内容|是否发所有人 -> 第二个参数为yes则发给所有人,否则发给选中的玩家
【2.0+】script:脚本   -> 执行脚本(不需要返回数据)
【2.0+】filter:JS表达式(返回true/false) -> 必须先select!脚本会被执行多次,会过滤掉不符合要求的玩家(player变量为当前判断的玩家)
执行器配置举例:
Code:
actions:
  gift-1:
    - "select:some.permission"
    - "script:chat('有some.permissions的会收到这个')"
    - "chat:用执行器发全服聊天|true"
    - "select:!some.permission"
    - "script:chat('没有some.permissions的会收到这个(select权限前加叹号)')"
    - "script:broadcast('所有人都会收到这个')"
    - "delay:20"
    - "select:"
    - "filter:player.getHealth() > 3.0"
    - "script:chat("血量>3 的人可以收到这个")"


安装方法:
1. 安装MySQL数据库
(小白推荐用xampp全家桶)
2. 导入数据库模板
3. 把插件复制到plugins目录种
4. 启动一次服务器,生成默认配置文件
5. 修改你的房间号、礼物触发等
6. 享受吧~

下载地址:

数据库模板 https://gitee.com/czkevin/lsi-release/raw/master/lsi.sql
1.3 https://gitee.com/czkevin/lsi-re ... ct-1.3-SNAPSHOT.jar
2.0.3 https://gitee.com/czkevin/lsi-release/raw/master/LiveStreamInteract-2.0.3-SNAPSHOT.jar


实况视频:BV1nr4y1K74T

效果图:
1.jpg


命令:
/lsi-reload 重新加载所有配置文件并连接直播平台。(OP或 lsi.admin 权限)
/lsi-debug 输出调试信息,调试你的配置文件。(OP 或 lsi.admin 权限)
/lsi-test 测试礼物(省辣条用,233),举例:/lsi-test gift-1(OP 或 lsi.admin 权限)


更新记录:
1.1 允许打开/关闭附近刷怪(而不是刷在脸上)
1.2 允许同时监控多个直播间了!1.2 fix4 修复了类无法加载的问题。(2021/2/8)
1.3 修复了连接问题,修复了配置文件单直播间不能播放的问题(两个配置文件搞混了)。 (2021/2/8)
2.0 增加了JS表达式、脚本引擎和新的执行器 (2021/2/17)
2.0.1 修复了swap-hotbar的数组越界问题,修复了script执行器和filter执行器。修改了js的api。(2021/2/18)

Placeholder
%livekills_X_uname% : 观众用户名
%livekills_X_uid% : 观众uid
%livekills_X_kills% : 观众击杀数


其中X是第几名,从0开始,比如%livekills_0_uid%是第一名!

配置文件示例:
点我打开=>
config.yml (存放事件触发列表)actions中的配置文件节点名字格式为“gift-礼物ID”或“guard-大航海等级”。
礼物ID可以从直播间里giftConfig的API获取(你懂的)。

YAML:
hotbar-format: "\u00a76房间热度 \u00a7b__HOT__ \u00a7a=> \u00a7d血量加成 \u00a7c__VAL__ HP"

# 弹幕召唤文字格式
summon-format:
  # __USER__ __SUMMON__ __KEYWORD__
  chat: "\u00a7d\u00a7l__USER__\u00a7c开启了\u00a7b\u00a7l__SUMMON__\u00a7c弹幕召唤"
  # __USER__ __SUMMON__ __KEYWORD__
  follow-up-chat: "\u00a7d\u00a7l__USER__\u00a7c助攻了\u00a7b\u00a7l__SUMMON__\u00a7c弹幕召唤"
  # __SUMMON__ __COUNTER__ __REQUIRED__ __USER__ __KEYWORD__
  bossbar: "\u00a7d弹幕召唤 \u00a7b\u00a7l__SUMMON__ \u00a77(\u00a7a__COUNTER__\u00a77/__REQUIRED__\u00a77) \u00a76关键词\u00a77[\u00a7c__KEYWORD__\u00a77] \u00a76最后助攻\u00a77[\u00a7d__USER__\u00a77]"
  # __USER__ __SUMMON__
  complete: "\u00a7b\u00a7l__SUMMON__\u00a7d弹幕召唤成功!\u00a76最后助攻\u00a73__USER__"
  # __SUMMON__
  timeout: "\u00a7b\u00a7l__SUMMON__\u00a7d弹幕召唤失败,没有在10分钟内召唤成功!"

# 弹幕召唤设置
summon:
  # 召唤id
  tnt-here:
    # 显示名
    display: 'TNT惊魂'
    # 弹幕关键词
    keyword: '召唤tnt'
    # 触发次数
    counter: 15
    # 超时时间(毫秒),不填写的话默认是10分钟
    timeout-ms: 600000
    # 具体动作
    actions:
      - 'spawn:PRIMED_TNT'
  # 召唤id
  zombie-horde:
    # 显示名
    display: '尸如潮水'
    # 弹幕关键词
    keyword: '尸如潮水'
    # 触发次数
    counter: 15
    # 具体动作
    actions:
      - 'spawn:ZOMBIE*5'

# 关注直播间
follow:
  - 'spawn:ZOMBIE|SKELETON|SPIDER'
  - 'item:IRON_INGOT|1'

# 特别关注
special-follow:
  - 'spawn:CREEPER'
  - 'item:IRON_INGOT|2'

# 分享直播间
share:
  - 'spawn:CREEPER'

# 上船
actions:
  # 总督
  guard-1:
    - 'effect:LEVITATE|1|200'
  # 提督 = 5 个僵尸 + 钻石护甲
  guard-2:
    - 'spawn:ZOMBIE*30'
    - 'spawn:SKELETON*30'
    - 'item:DIAMOND_CHESTPLATE|1'
    - 'spawn:BAT*100'
    - 'effect:POISON|20|1200'
  # 舰长 = 10个钻石 + 原地升天
  guard-3:
    - 'item:DIAMOND|10'
    - 'spawn:BAT*100'
  # 辣条回饥饿值
  gift-1:
    - 'feed:1'
  gift-20004:
    - 'drop:'
  # 小心心回血
  gift-30607:
    - 'heal:1'
  # B坷垃 = 丢掉背包所有物品
  gift-3:
    - 'dropall:'
  # 冰阔落
  gift-20008:
    - 'effect:CONFUSION|2|200'
  # 礼花:掉落背包所有物品 + 10个怪
  gift-30064:
    - 'dropall:'
    - 'spawn:ZOMBIE*10|SKELETON*10|SPIDER*10'
  # FLAG = 缓慢升天
  gift-20002:
    - 'effect:LEVITATION|10|10'
  # 递茶 = 抗性提升
  gift-30549:
    - 'effect:RESISTANCE|2|200'
  # 凉了
  gift-20010:
    - 'effect:POISON|2|40'
connection.yml (存放网络通信数据)
YAML:
# B站直播间设定
room: 4741556

# 或者
room:
  - 4741556
  - 114514
  - 123456

# 发送弹幕
danmu:
  enabled: false
  rate-limit: 1500
  uuid: ''
  session: ''
  request: ''

threads: 2

database:
  connection: 'jdbc:mysql://localhost/lsi?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai'
  username: 'root'
  password: ''

JavaScript脚本/表达式教程
注意:
1. 可以用英文分号 ; 分隔多个表达式或者脚本代码!
2. 如果需要返回数据,则直接写出数据变量名或表达式即可(比如 var a = 1; a; )
3. 每个执行器可能还有自己独有的变量, 常量!4. 安全性:采用沙箱运行,无法访问任何Java类(除了特别允许的)!
常量:

Code:
UID: 触发观众的uid,负数则为群体召唤
USERNAME: 触发观众的用户名,可能为空(null)!
GIFT_NAME: 礼物名
GIFT_AMOUNT: 发送了的礼物数量
函数:
Code:
chat(聊天字符串) : 给选中的人发聊天信息(如果没调用select则发给所有人,select或filter到0个人不算)。broadcast(聊天字符串) : 广播聊天信息
getRenameCount(观众uid) : 获取指定观众还可以可以重命名玩家物品的次数(触发了几次rename-hand-item执行器但还没使用过)
getSelectedPlayers() : 获取选中了的玩家(没调用select的时候是null)。
  • Like
Reactions: SummerGoro
Author
城主Kevin
Downloads
247
Views
2,218
First release
Last update
Rating
0.00 star(s) 0 ratings

Share this resource