公告:
功能:
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
效果图:
命令:
/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获取(你懂的)。
connection.yml (存放网络通信数据)
礼物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'
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)。