帖子

Memorial Edition

查看: 939|回复: 0

[原创插件] RoleSystem-提供仿照原神,鸣潮的角色队伍实现!

[复制链接]

Lv.7 猎手

人气
68 点
金粒
2241 粒
宝石
2 颗
爱心
12 颗
钻石
396 颗
贡献
0 点

Java正版勋章Windows 10正版勋章

发表于 2024-12-15 11:06:07 | 显示全部楼层 |阅读模式
RoleSystem
  • 概要
  • 下载链接
  • 授权信息

适用服务端:Spigot Paper 

插件类型: RPG 

语言支持: 简体中文 

适用版本:

前置插件:

简介: 提供仿照原神,鸣潮的角色队伍实现!

LOGO

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

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

x
本帖最后由 秋华酱鸭 于 2025-2-6 19:27 编辑


## RoleSystem
RoleSystem是一款参考了原神的角色系统,提供大致一样的系统实现。

## 特色功能
- GUI:大部分组件都能自定义,提供角色列表、技能信息、装备信息等。
并且允许查看他人角色信息,开发中角色隐藏。
- 角色:角色的创建、技能分配、角色升级、基础属性、武器种类。
- 技能:使用MythicMobs技能释放。多种技能触发方式,左右键、顺序按键(即为按下 右键->左键->左键)、快捷栏按键、DrawBowForce。即将兼容ArcartX以及UnrealCore的客户端按键监听。还提供了技能升级配置,动态技能数值显示。
- 血量/装备隔离:每个角色都将拥有自己的血量存储以及装备存储。
- 角色出战:可配置允许玩家同时上场多个角色,使用指定按键在战斗中进行切换,使用不同的技能和装备。
- 武器提供:支持角色绑定一种武器类型,并且在使用该角色时提供武器到指定槽位。
- 死亡复活:当玩家使用的角色死亡时,将会锁定,无法使用相关功能,需要复活该角色才能正常使用。
- 套装:可配置套装效果,提升属性。或使用mm条件检查套装改变技能。
- 属性:AttributeSystem 后续将兼容AttributePlus。
- 弓箭机制:背包无需箭矢即可拉弓,提供DrawBowForce。
- 存储:默认使用sqlite、支持mysql跨服。

### 内置占位符以及一些说明
<details>
<summary>展开</summary>

角色需要权限才能解锁 权限节点为 RoleSystem.Role.<角色名称>  扩折号也要删掉  权限为永久解锁
也可以使用指令进行临时解锁 /RoleSystem unlock/lock 玩家名称 角色名称  解锁的角色立即可以使用  锁定的角色如果在出战则将在下次数据刷新时无法使用

技能yml内 {PlaceholderId} 返回指定的占位符   {Level} 返回技能等级 支持lore 支持name
角色yml内 {level} 返回等级 {state} 返回状态 {health} 返回角色血量 {maxhealth} 返回角色最大血量 支持lore 支持name
Config的出战按钮 {state} 返回状态 {roleId_1} 返回第一个场上角色 以此类推  无角色返回空  支持lore 支持name
Config内的LevelInfo按钮  {materials}返回材料名称 {value}返回需要的数量 {have}返回当前拥有  format格式内有效
{level}返回角色等级 {AttributesId} 返回指定的属性值 支持lore 支持name
{isUpgrade}  返回可以是否升级 可以替换的位置有 skill的展示物品    LevelInfo的物品 支持lore和名称
血量的占位符的加载 未加载前 是默认的20生命值 需要使用角色出战 才会加载生命值 因为需要再属性插件那边获取生命值
血量的占位符更新 仅在切换角色 恢复生命值 扣除生命值 关闭角色界面时刷新
最大生命值只有切换角色和关闭角色界面时刷新 会按当时的最大生命值记录  这两的默认值是config内的Attribute.baseHealth节点配置

</details>

## 插件适配
#### MythicMobs:提供大量的内置占位符以及技能
<details>
<summary>展开</summary>

[]为必填 {}为可选 可选的如不填则获取当前角色
<role.a.[属性名称].{角色名称}>  获取角色指定属性
<role.s.[技能名称].[属性名称].{角色名称}>  获取技能指定的属性
<role.al.{角色名称}>  获取角色等级
<role.sl.[技能名称].{角色名称}>  获取技能等级
<role.id.{顺序}>  获取角色名称 顺序从0开始
<role.h.{角色名称}>  获取角色当前生命值
<role.mh.{角色名称}>  获取角色当前最大生命值
切换角色技能
roleId可选 switchCd可选(单位毫秒) 均支持mm本身占位符解析
roleId: 玩家即将切换到的角色。不填则切换到无角色,填写的角色没有将不会切换
switchCd: 切换角色的冷却时间。如不填则按默认时间。
- roleSwitch{roleId=要切换的角色id;switchCd=冷却时间}
生命值恢复技能
health必填 isAll必填 roleId可选 均支持mm本身占位符解析
health:恢复的生命值量
isAll:是否进行全队恢复
roleId:指定恢复的角色 如不填则恢复当前角色
- roleHealth{health=恢复的生命值;isAll=是否全队回复;roleId=角色名称}
套装条件
roleId可选 tag必填 value必填
roleId:检查的角色名称 不填则使用当前角色
tag:套装的名称
value:需要的数量 这里支持使用mm的对比符号 例如 > < 1to2
- suitTag{roleId=角色名称,tag=套装id;value=数量}

</details>

#### PlaceholderAPI:提供大量的变量支持
<details>
<summary>展开</summary>

[]为必填 {}为可选 可选的如不填则获取当前角色
%role_a_[属性名称]_{角色名称}%  获取角色指定属性
%role_s_[技能名称]_[属性名称]_{角色名称}%  获取技能指定的属性
%role_al_{角色名称}%  获取角色等级
%role_sl_[技能名称]_{角色名称}%  获取技能等级
%role_id_{顺序}%  获取角色名称 顺序从0开始
%role_h_{角色名称}%  获取角色当前生命值
%role_mh_{角色名称}%  获取角色当前最大生命值

</details>

#### QiuhuaItemSpace:更便捷的装备材料操作
允许角色升级、技能升级时使用指定物品空间内的材料,无需再将材料放置在背包内。
允许在gui内显示指定物品空间的物品。例如显示装备空间,快捷拿取装备配装。
image.png

## 配置说明
<details>
<summary>Config</summary>

Debug: false
#替换材料消耗内的money文本
MoneyTextReplacement: "&f消耗经济"
#替换部分位置的 {isUpgrade}  可以替换的位置有 skill的展示物品    LevelInfo的物品 支持lore和名称
#如果不可升级 那就会返回空白字符
AllowUpgrade: "&6可升级!"
#属性的设置
Attribute:
  #使用的属性插件
  type: "AttributeSystem"
  #生命值的属性key  使用as属性插件的情况下 请确保玩家拥有这个属性 哪怕他只有0  因为as如果没有这个属性 会返回null  而不是0
  baseHealthKey: "生命上限"
  #玩家的基础血量
  #因为有的属性插件获取生命值属性的时候不会计算默认拥有的20生命值 所以这里给了个自定义数值
  baseHealth: 20.0
#角色系统设置
RoleSystem:
  #允许上场的最大数
  MaxPerson: 2
  #两个角色的切换间隔
  SwitchInterval: 500
#状态类型占位符
State:
  notUnlocked: "未解锁"
  activate: "上场"
  rest: "下场"
  activateDeath: "场上死亡"
  restDeath: "场下死亡"
#模块 全息文字的技能注册 用于施加buff时的全息文字显示
#开启后将会注册一个对应的全息文字技能
Hologram:
  #是否启用
  enable: true
  #所使用的全息依赖  Pou 或者 AX
  type: Pou
#模块 拉弓接管 这里只支持1.20.1
#开启后 将无需使用箭也可拉弓
DrawBow:
  #是否启用
  enable: true
  #是否需要手持武器才能触发
  useArms: true
  #自定义拉弓蓄力最大值  相关事件名称BowForceEvent
  maxForce: 10.0
#模块 技能释放
SkillRelease:
  #关掉后 仅关闭玩家主动释放技能 其他部分的技能不受影响
  enable: true
  #是否需要手持武器才能触发  必须开启LockArms模块才能正常工作
  useArms: true
  # 释放的方式 这边在示例技能内有介绍
  # Combo 原版方式
  # Number 原版方式
  # AX  ArcartX 的按键监听
  type: "Combo"
  #Combo释放时的长度 到这个长度就会尝试释放对应的技能
  comboLength: 3
  #一套Combo的最大间隔
  comboIntervalMax: 1000
  #两个动作的最小间隔
  #这里这个间隔对于其他释放方式也有效 防止高频触发
  ComboIntervalMin: 10 #最小连击间隔
#模块 QiuhuaItemSpace兼容 会检查指定仓库的材料 和扣除
#开启后不会检查物品栏
QiuhuaItemSpace:
  #是否启用 关闭后下面功能均失效
  enable: false
  #检查的仓库
  ItemSpaceId: "普通仓库"
  #在界面上的部分槽位显示指定仓库的物品列表 并且支持拿取和放入
  Gui:
    ItemSpaceId: "普通仓库"
    #是否启用 关闭后下面功能均失效
    enable: false
    #slot槽位禁止和已使用的重复
    #显示物品的槽位列表
    itemList: [15, 16, 17, 24, 25, 26, 33, 34, 35, 42, 43, 44]
    #翻页的设定
    Page:
      #上一页
      PreviousPage:
        slot: 51
        name: "&f上一页"
        material: "PAPER"
        model: "-1"
        lore:
          - "&f点击查看上一页"
      #下一页
      NextPage:
        slot: 53
        name: "&f下一页"
        material: "PAPER"
        model: "-1"
        lore:
          - "&f点击查看下一页"
#模块 死亡锁定
#角色死亡锁定 当玩家当前角色死亡 玩家会自动在当前位置重生 且换成可用角色
#死亡的角色无法在切换过去 需要使用指令重新激活
#上下场操作不影响  可以使用指令复活指定角色
#此功能会在开服时开启 立即重生游戏规则 以此来越过死亡界面
DeathLocking:
  #是否启用 关闭后下面功能均失效 需要重启才能生效
  enable: true
  #当死亡后重新激活的默认血量
  health: 20
#模块 套装功能
Suit:
  #是否启用 套装属性 不管有没有启用都会统计套装 相关占位符也能正常使用
  #启用的话 可以在suit文件内添加套装属性效果
  #套装的效果只有在关闭界面时/切换角色时才会触发
  enable: true
  #这里用的是正则 不会去除颜色代码 同id的套装会叠加数量
  condition: "&f套装: (.+)"
#模块 锁定物品槽位
#即为切换到该角色时提供一把武器在指定槽位 无法丢弃交互等
#并且会自动切换主手到该栏位
#如没角色 则提供一个指定物品
LockArms:
  #是否启用 关闭后下面功能均失效 需要重启才能生效
  enable: true
  slot: 8
  #是否移除武器上的lore
  #给的武器是复制品  全部东西一致 包括nbt
  #移除lore可以避免不必要的属性重复添加等
  ArmsLoreRemove: true
  LockItem:
    name: "&f该槽位被禁用"
    material: "PAPER"
    model: "-1"
    lore:
      - "&f未装备武器"
#箱子Gui界面
InventoryGui:
  #点击间隔
  clickInterval: 300
  #如果玩家没有打开过 那将默认打开这个页面 否则将打开玩家上次关闭的页面
  DefaultPage: "示例角色"
  #支持papi解析 支持papi的地方会标明
  Title: "%player_name% 的角色列表"
  #填充的物品 会把其他没涉及到的格子填满
  FillItem:
    #是否启用 关闭后下面功能均失效
    enable: true
    name: "&f此格子无法操作"
    material: "GLASS_PANE"
    model: "-1"
    lore:
  #角色列表
  RoleList:
    #角色列表的槽位  箱子界面第一个格子是0
    showSlot: [1, 2, 3, 4, 5, 6, 7]
    #翻页的设定
    Page:
      #上一页
      PreviousPage:
        slot: 0
        name: "&f上一页"
        material: "PAPER"
        model: "-1"
        lore:
          - "&f点击查看上一页"
      #下一页
      NextPage:
        slot: 8
        name: "&f下一页"
        material: "PAPER"
        model: "-1"
        lore:
          - "&f点击查看下一页"
  #武器系统
  Arms:
    #可以放置的槽位
    slot: 19
    #条件仅支持lore 如有其他特殊情况将会标明
    #这里用的是正则 不会去除颜色代码
    condition: "&f武器: (.+)"
  #饰品
  Accessories:
    #饰品key 自定义的 可按格式无限添加
    饰品1:
      #对应槽位
      slot: 20
      #放入需要的lore 不会去除颜色代码
      condition: "&f饰品: 饰品1"
    饰品2:
      slot: 28
      condition: "&f饰品: 饰品2"
    饰品3:
      slot: 29
      condition: "&f饰品: 饰品3"
    饰品4:
      slot: 37
      condition: "&f饰品: 饰品4"
    饰品5:
      slot: 38
      condition: "&f饰品: 饰品5"
  #技能槽位 技能数量大于设置的栏位 超出的则不显示
  Skill:
    slot: [22, 31, 40]
  #设置出战的槽位
  #点击可切换他的出场状态
  State:
    slot: 48
    #物品展示
    DisplayItems:
      name: "&f点击出场/下场 {state}"
      material: "NETHER_STAR"
      model: "-1"
      lore:
        - ""
        - "&f当前出场列表"
        - "(1) {roleId_1}"
        - "(2) {roleId_2}"
  #升级按钮
  #lore中会在指定行数内插入消耗的材料文本
  LevelInfo:
    slot: 30
    name: "&f当前等级 +{level} {isUpgrade}"
    material: "BOOK"
    model: "-1"
    #材料lore的格式
    format: "{materials} X {value} | 当前{have}"
    #套装的格式
    suitFormat: "  {suitId} : {value}"
    #该lore末尾会添加需要的材料     如果有一行仅包含该字符串 {roleInfo} 那他将会从这一行插入角色配置文件的InfoLore
    #{suitInfo}显示套装数量
    lore:
      - ""
      - "{roleInfo}"
      - ""
#数据库
Database:
  type: sqlite   #sqlite或者mysql   mysql才需要配置下面的部分
  dataBaseName: RoleSystem   #数据库名称
  username: root  #账户名称
  password: root  #密码
  port: 3306  #端口
  ip: 127.0.0.1  #ip
  autoSave: 15 #自动保存间隔 分钟
  loadDelay: 40 #加载延迟tick

</details>

<details>
<summary>Suit</summary>

#套装的名称
套装名称1:
  #当数量达到时触发的 从上往下检查  当套装数量满足后就不会继续检查了
  2:
    - "生命上限: 10"
  4:
    - "生命上限: 20"

</details>

#### role文件夹内是角色配置 文件名称即为角色id
<details>
<summary>展开</summary>

```
#不可用的角色将无法点击该栏位任意位置 但依旧可以预览界面上的物品信息
DisplayItems:
  name: "&f示例角色 +{level} {state} | {health}/{maxhealth}"
  material: "PLAYER_HEAD"
  model: "-1"
  #物品为头颅时可选这个
  #textura:
  lore:
    - ""

#是否隐藏该角色 隐藏的角色只有op可见
Hide: false

#这里是提供一个自定义的角色信息描述
InfoLore:
  - ""
  - "&f生命值: {生命上限}"
  - ""

#等级机制
Level:
  #基础等级
  base: 1
  #指定等级的强化消耗
  Consume:
    #填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
    #扣除经济则为 money 这个不能加颜色代码 代码在config里面加
    10:
      - "&f示例材料1::1"
      - "money::100"
    #超过10级 但未超过20级 就需要消耗这里的材料
    #20以后就没了 那到达20级将不在可以强化
    20:
      - "&f示例材料1::1"
      - "&f示例材料2::1"
      - "money::1000"

ArmsType:
  #是否启用 关闭后下面功能均失效
  enable: true
  #判断是否只能放入指定武器 留空 "" 则不启用
  #这里用的是正则 不会去除颜色代码
  #冒号后面的即为武器类型
  capture: "&f武器: (.+)"
  #武器类型
  type: "单手剑"

#技能列表
Skills:
  #这里的技能会按顺序显示在gui内
  - "示例角色技能-普通攻击"

#和上面的技能列表一样 需要在技能列表添加
TriggerSkill:
  #切换前
  BeforeSwitch:
    - "示例角色技能-普通攻击"
  #切换后
  AfterSwitch:
    - "示例角色技能-普通攻击"
  #定时任务
  Task:
    #间隔
    任务1:
      time: 20
      skill:
        - "示例角色技能-普通攻击"

#属性列表 升级会增加这些属性值
#预计支持as ap
Attributes:
  #属性名称
  生命上限:
    #属性的基础值
    base: 15.0
    #每级增加的值
    per-level: 5.0
    max: 50.0
    min: 10.0
  攻击力:
    base: 5.0
    per-level: 0.7

```

</details>

#### skill文件夹内是技能配置 文件名称即为技能id
<details>
<summary>展开</summary>

```
#mm技能的内部名称
skillName: "示例角色技能-普通攻击"

#基础触发 这里是全局性的 不管config设置什么 这里都有效
# 原版单左键 右键 即为只按下了一次  并不是上面的鼠标连击  用于做普通攻击等 Left->左键  Right->右键
# 弓箭蓄力 DrawBow 拉弓射箭后触发的技能 弩也能触发
# 由该插件接管的拉弓蓄力 DrawBowForce 只有弓可以触发

#预计支持三套触发方式 如果不想要触发 随便设置一些字符就行了
#Combo触发方式
# 原版触发 鼠标连击 连续按顺序点击鼠标左右键 例如R->L->L  即为按下 右键->左键->左键   SR->SL->SL 携带S代表是潜行时  关于这玩意的配置在config里面有
#AX  ArcartX 的按键监听
# 该按键监听需要注册 client_key 即客户端按键
# 技能那边填写 id 即为配置项内的按键唯一标识符
#Number 原版数字释放
# 原版触发 使用数字键切换栏位 可以释放对应的技能 第一个快捷栏为0开始
trigger: "LLR"

#这里仅在使用DrawBowForce的时候才填写
#大概1.3秒是原版的蓄力时间
#这里是从上往下检查的 满足了就触发 所以要时间由大到小
#比如当前蓄力为1.5  没到10  下一个是1.2 那就会触发1.2的技能
#如果没有满足的话 那就触发最上面的 skillName
force:
  "蓄力技能2": 10.0
  "蓄力技能1": 1.2

#展示物品
DisplayItems:
  name: "&f示例角色技能-普通攻击 +{level}  {isUpgrade}"
  material: "ICE"
  model: "-1"
  #材料lore的格式
  format: "{materials} X {value} | 当前{have}"
  #该lore末尾会添加需要的材料
  lore:
    - "&f左键点击鼠标造成一次范围伤害"
    - "&f每目标造成 &c{damage} &7伤害"
    - ''
    - '&e{cooldown} 秒冷却'
    - '&9消耗 {mana} 魔力'
    - ""

#等级机制
Level:
  #基础等级
  base: 1
  #指定等级的强化消耗  这个材料支持原版的物品材质类型 需要全大写 优先检查材质 其次才是名字
  Consume:
    #填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
    #扣除经济则为 money
    10:
      - "&f示例材料1::1"
      - "money::100"
    #超过10级 但未超过20级 就需要消耗这里的材料
    #20以后就没了 那到达20级将不在可以强化
    20:
      - "&f示例材料1::1"
      - "&f示例材料2::1"
      - "money::1000"

#自定义占位符 可在当前技能内的描述中使用
#也可以在mm中使用 <role.skill.技能名称.占位符key>
Placeholder:
  #占位符key
  damage:
    #基础值
    base: 5.0
    #每级提升的
    per-level: 3.0
  mana:
    base: 15.0
    per-level: 2.0
  cooldown:
    base: 5.0
    per-level: -0.1
    max: 5.0
    min: 1.0
```

</details>

## 依赖
暂时仅支持1.20.1版本
#### 可选:AttributeSystem、QiuhuaItemSpace
#### 必须:MythicMobs、PlaceholderAPI、Vault

## 指令
- /RoleSystem reload 重载所有配置 权限RoleSystem.reload
- /RoleSystem gui [玩家名称] 给指定玩家打开gui 权限RoleSystem.gui
- /RoleSystem gui [玩家1名称] [玩家2名称] 给玩家1查看玩家2的gui 权限RoleSystem.gui.targetPlayer
- /RoleSystem respawn [玩家名称] [角色名称] 给玩家复活指定角色 权限RoleSystem.respawn
- /RoleSystem unlock [玩家名称] [角色名称] 给玩家临时解锁一个角色 权限RoleSystem.unlock
- /RoleSystem lock [玩家名称] [角色名称] 给玩家临时锁定一个角色 权限RoleSystem.lock

## 展示
以下内容非默认配置,仅展示使用
image.png
image.png
image.png
image.png
## RoleSystem
RoleSystem是一款参考了原神的角色系统,提供大致一样的系统实现。

## 特色功能
- GUI:大部分组件都能自定义,提供角色列表、技能信息、装备信息等。
并且允许查看他人角色信息,开发中角色隐藏。
- 角色:角色的创建、技能分配、角色升级、基础属性、武器种类。
- 技能:使用MythicMobs技能释放。多种技能触发方式,左右键、顺序按键(即为按下 右键->左键->左键)、快捷栏按键、DrawBowForce。即将兼容ArcartX以及UnrealCore的客户端按键监听。还提供了技能升级配置,动态技能数值显示。
- 血量/装备隔离:每个角色都将拥有自己的血量存储以及装备存储。
- 角色出战:可配置允许玩家同时上场多个角色,使用指定按键在战斗中进行切换,使用不同的技能和装备。
- 武器提供:支持角色绑定一种武器类型,并且在使用该角色时提供武器到指定槽位。
- 死亡复活:当玩家使用的角色死亡时,将会锁定,无法使用相关功能,需要复活该角色才能正常使用。
- 套装:可配置套装效果,提升属性。或使用mm条件检查套装改变技能。
- 属性:AttributeSystem 后续将兼容AttributePlus。
- 弓箭机制:背包无需箭矢即可拉弓,提供DrawBowForce。
- 存储:默认使用sqlite、支持mysql跨服。

### 内置占位符以及一些说明
<details>
<summary>展开</summary>

角色需要权限才能解锁 权限节点为 RoleSystem.Role.<角色名称>  扩折号也要删掉  权限为永久解锁
也可以使用指令进行临时解锁 /RoleSystem unlock/lock 玩家名称 角色名称  解锁的角色立即可以使用  锁定的角色如果在出战则将在下次数据刷新时无法使用

技能yml内 {PlaceholderId} 返回指定的占位符   {Level} 返回技能等级 支持lore 支持name
角色yml内 {level} 返回等级 {state} 返回状态 {health} 返回角色血量 {maxhealth} 返回角色最大血量 支持lore 支持name
Config的出战按钮 {state} 返回状态 {roleId_1} 返回第一个场上角色 以此类推  无角色返回空  支持lore 支持name
Config内的LevelInfo按钮  {materials}返回材料名称 {value}返回需要的数量 {have}返回当前拥有  format格式内有效
{level}返回角色等级 {AttributesId} 返回指定的属性值 支持lore 支持name
{isUpgrade}  返回可以是否升级 可以替换的位置有 skill的展示物品    LevelInfo的物品 支持lore和名称
血量的占位符的加载 未加载前 是默认的20生命值 需要使用角色出战 才会加载生命值 因为需要再属性插件那边获取生命值
血量的占位符更新 仅在切换角色 恢复生命值 扣除生命值 关闭角色界面时刷新
最大生命值只有切换角色和关闭角色界面时刷新 会按当时的最大生命值记录  这两的默认值是config内的Attribute.baseHealth节点配置

</details>

## 插件适配
#### MythicMobs:提供大量的内置占位符以及技能
<details>
<summary>展开</summary>

[]为必填 {}为可选 可选的如不填则获取当前角色
<role.a.[属性名称].{角色名称}>  获取角色指定属性
<role.s.[技能名称].[属性名称].{角色名称}>  获取技能指定的属性
<role.al.{角色名称}>  获取角色等级
<role.sl.[技能名称].{角色名称}>  获取技能等级
<role.id.{顺序}>  获取角色名称 顺序从0开始
<role.h.{角色名称}>  获取角色当前生命值
<role.mh.{角色名称}>  获取角色当前最大生命值
切换角色技能
roleId可选 switchCd可选(单位毫秒) 均支持mm本身占位符解析
roleId: 玩家即将切换到的角色。不填则切换到无角色,填写的角色没有将不会切换
switchCd: 切换角色的冷却时间。如不填则按默认时间。
- roleSwitch{roleId=要切换的角色id;switchCd=冷却时间}
生命值恢复技能
health必填 isAll必填 roleId可选 均支持mm本身占位符解析
health:恢复的生命值量
isAll:是否进行全队恢复
roleId:指定恢复的角色 如不填则恢复当前角色
- roleHealth{health=恢复的生命值;isAll=是否全队回复;roleId=角色名称}
套装条件
roleId可选 tag必填 value必填
roleId:检查的角色名称 不填则使用当前角色
tag:套装的名称
value:需要的数量 这里支持使用mm的对比符号 例如 > < 1to2
- suitTag{roleId=角色名称,tag=套装id;value=数量}

</details>

#### PlaceholderAPI:提供大量的变量支持
<details>
<summary>展开</summary>

[]为必填 {}为可选 可选的如不填则获取当前角色
%role_a_[属性名称]_{角色名称}%  获取角色指定属性
%role_s_[技能名称]_[属性名称]_{角色名称}%  获取技能指定的属性
%role_al_{角色名称}%  获取角色等级
%role_sl_[技能名称]_{角色名称}%  获取技能等级
%role_id_{顺序}%  获取角色名称 顺序从0开始
%role_h_{角色名称}%  获取角色当前生命值
%role_mh_{角色名称}%  获取角色当前最大生命值

</details>

#### QiuhuaItemSpace:更便捷的装备材料操作
允许角色升级、技能升级时使用指定物品空间内的材料,无需再将材料放置在背包内。
允许在gui内显示指定物品空间的物品。例如显示装备空间,快捷拿取装备配装。
image.png

## 配置说明
<details>
<summary>Config</summary>

Debug: false
#替换材料消耗内的money文本
MoneyTextReplacement: "&f消耗经济"
#替换部分位置的 {isUpgrade}  可以替换的位置有 skill的展示物品    LevelInfo的物品 支持lore和名称
#如果不可升级 那就会返回空白字符
AllowUpgrade: "&6可升级!"
#属性的设置
Attribute:
  #使用的属性插件
  type: "AttributeSystem"
  #生命值的属性key  使用as属性插件的情况下 请确保玩家拥有这个属性 哪怕他只有0  因为as如果没有这个属性 会返回null  而不是0
  baseHealthKey: "生命上限"
  #玩家的基础血量
  #因为有的属性插件获取生命值属性的时候不会计算默认拥有的20生命值 所以这里给了个自定义数值
  baseHealth: 20.0
#角色系统设置
RoleSystem:
  #允许上场的最大数
  MaxPerson: 2
  #两个角色的切换间隔
  SwitchInterval: 500
#状态类型占位符
State:
  notUnlocked: "未解锁"
  activate: "上场"
  rest: "下场"
  activateDeath: "场上死亡"
  restDeath: "场下死亡"
#模块 全息文字的技能注册 用于施加buff时的全息文字显示
#开启后将会注册一个对应的全息文字技能
Hologram:
  #是否启用
  enable: true
  #所使用的全息依赖  Pou 或者 AX
  type: Pou
#模块 拉弓接管 这里只支持1.20.1
#开启后 将无需使用箭也可拉弓
DrawBow:
  #是否启用
  enable: true
  #是否需要手持武器才能触发
  useArms: true
  #自定义拉弓蓄力最大值  相关事件名称BowForceEvent
  maxForce: 10.0
#模块 技能释放
SkillRelease:
  #关掉后 仅关闭玩家主动释放技能 其他部分的技能不受影响
  enable: true
  #是否需要手持武器才能触发  必须开启LockArms模块才能正常工作
  useArms: true
  # 释放的方式 这边在示例技能内有介绍
  # Combo 原版方式
  # Number 原版方式
  # AX  ArcartX 的按键监听
  type: "Combo"
  #Combo释放时的长度 到这个长度就会尝试释放对应的技能
  comboLength: 3
  #一套Combo的最大间隔
  comboIntervalMax: 1000
  #两个动作的最小间隔
  #这里这个间隔对于其他释放方式也有效 防止高频触发
  ComboIntervalMin: 10 #最小连击间隔
#模块 QiuhuaItemSpace兼容 会检查指定仓库的材料 和扣除
#开启后不会检查物品栏
QiuhuaItemSpace:
  #是否启用 关闭后下面功能均失效
  enable: false
  #检查的仓库
  ItemSpaceId: "普通仓库"
  #在界面上的部分槽位显示指定仓库的物品列表 并且支持拿取和放入
  Gui:
    ItemSpaceId: "普通仓库"
    #是否启用 关闭后下面功能均失效
    enable: false
    #slot槽位禁止和已使用的重复
    #显示物品的槽位列表
    itemList: [15, 16, 17, 24, 25, 26, 33, 34, 35, 42, 43, 44]
    #翻页的设定
    Page:
      #上一页
      PreviousPage:
        slot: 51
        name: "&f上一页"
        material: "PAPER"
        model: "-1"
        lore:
          - "&f点击查看上一页"
      #下一页
      NextPage:
        slot: 53
        name: "&f下一页"
        material: "PAPER"
        model: "-1"
        lore:
          - "&f点击查看下一页"
#模块 死亡锁定
#角色死亡锁定 当玩家当前角色死亡 玩家会自动在当前位置重生 且换成可用角色
#死亡的角色无法在切换过去 需要使用指令重新激活
#上下场操作不影响  可以使用指令复活指定角色
#此功能会在开服时开启 立即重生游戏规则 以此来越过死亡界面
DeathLocking:
  #是否启用 关闭后下面功能均失效 需要重启才能生效
  enable: true
  #当死亡后重新激活的默认血量
  health: 20
#模块 套装功能
Suit:
  #是否启用 套装属性 不管有没有启用都会统计套装 相关占位符也能正常使用
  #启用的话 可以在suit文件内添加套装属性效果
  #套装的效果只有在关闭界面时/切换角色时才会触发
  enable: true
  #这里用的是正则 不会去除颜色代码 同id的套装会叠加数量
  condition: "&f套装: (.+)"
#模块 锁定物品槽位
#即为切换到该角色时提供一把武器在指定槽位 无法丢弃交互等
#并且会自动切换主手到该栏位
#如没角色 则提供一个指定物品
LockArms:
  #是否启用 关闭后下面功能均失效 需要重启才能生效
  enable: true
  slot: 8
  #是否移除武器上的lore
  #给的武器是复制品  全部东西一致 包括nbt
  #移除lore可以避免不必要的属性重复添加等
  ArmsLoreRemove: true
  LockItem:
    name: "&f该槽位被禁用"
    material: "PAPER"
    model: "-1"
    lore:
      - "&f未装备武器"
#箱子Gui界面
InventoryGui:
  #点击间隔
  clickInterval: 300
  #如果玩家没有打开过 那将默认打开这个页面 否则将打开玩家上次关闭的页面
  DefaultPage: "示例角色"
  #支持papi解析 支持papi的地方会标明
  Title: "%player_name% 的角色列表"
  #填充的物品 会把其他没涉及到的格子填满
  FillItem:
    #是否启用 关闭后下面功能均失效
    enable: true
    name: "&f此格子无法操作"
    material: "GLASS_PANE"
    model: "-1"
    lore:
  #角色列表
  RoleList:
    #角色列表的槽位  箱子界面第一个格子是0
    showSlot: [1, 2, 3, 4, 5, 6, 7]
    #翻页的设定
    Page:
      #上一页
      PreviousPage:
        slot: 0
        name: "&f上一页"
        material: "PAPER"
        model: "-1"
        lore:
          - "&f点击查看上一页"
      #下一页
      NextPage:
        slot: 8
        name: "&f下一页"
        material: "PAPER"
        model: "-1"
        lore:
          - "&f点击查看下一页"
  #武器系统
  Arms:
    #可以放置的槽位
    slot: 19
    #条件仅支持lore 如有其他特殊情况将会标明
    #这里用的是正则 不会去除颜色代码
    condition: "&f武器: (.+)"
  #饰品
  Accessories:
    #饰品key 自定义的 可按格式无限添加
    饰品1:
      #对应槽位
      slot: 20
      #放入需要的lore 不会去除颜色代码
      condition: "&f饰品: 饰品1"
    饰品2:
      slot: 28
      condition: "&f饰品: 饰品2"
    饰品3:
      slot: 29
      condition: "&f饰品: 饰品3"
    饰品4:
      slot: 37
      condition: "&f饰品: 饰品4"
    饰品5:
      slot: 38
      condition: "&f饰品: 饰品5"
  #技能槽位 技能数量大于设置的栏位 超出的则不显示
  Skill:
    slot: [22, 31, 40]
  #设置出战的槽位
  #点击可切换他的出场状态
  State:
    slot: 48
    #物品展示
    DisplayItems:
      name: "&f点击出场/下场 {state}"
      material: "NETHER_STAR"
      model: "-1"
      lore:
        - ""
        - "&f当前出场列表"
        - "(1) {roleId_1}"
        - "(2) {roleId_2}"
  #升级按钮
  #lore中会在指定行数内插入消耗的材料文本
  LevelInfo:
    slot: 30
    name: "&f当前等级 +{level} {isUpgrade}"
    material: "BOOK"
    model: "-1"
    #材料lore的格式
    format: "{materials} X {value} | 当前{have}"
    #套装的格式
    suitFormat: "  {suitId} : {value}"
    #该lore末尾会添加需要的材料     如果有一行仅包含该字符串 {roleInfo} 那他将会从这一行插入角色配置文件的InfoLore
    #{suitInfo}显示套装数量
    lore:
      - ""
      - "{roleInfo}"
      - ""
#数据库
Database:
  type: sqlite   #sqlite或者mysql   mysql才需要配置下面的部分
  dataBaseName: RoleSystem   #数据库名称
  username: root  #账户名称
  password: root  #密码
  port: 3306  #端口
  ip: 127.0.0.1  #ip
  autoSave: 15 #自动保存间隔 分钟
  loadDelay: 40 #加载延迟tick

</details>

<details>
<summary>Suit</summary>

#套装的名称
套装名称1:
  #当数量达到时触发的 从上往下检查  当套装数量满足后就不会继续检查了
  2:
    - "生命上限: 10"
  4:
    - "生命上限: 20"

</details>

#### role文件夹内是角色配置 文件名称即为角色id
<details>
<summary>展开</summary>

```
#不可用的角色将无法点击该栏位任意位置 但依旧可以预览界面上的物品信息
DisplayItems:
  name: "&f示例角色 +{level} {state} | {health}/{maxhealth}"
  material: "PLAYER_HEAD"
  model: "-1"
  #物品为头颅时可选这个
  #textura:
  lore:
    - ""

#是否隐藏该角色 隐藏的角色只有op可见
Hide: false

#这里是提供一个自定义的角色信息描述
InfoLore:
  - ""
  - "&f生命值: {生命上限}"
  - ""

#等级机制
Level:
  #基础等级
  base: 1
  #指定等级的强化消耗
  Consume:
    #填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
    #扣除经济则为 money 这个不能加颜色代码 代码在config里面加
    10:
      - "&f示例材料1::1"
      - "money::100"
    #超过10级 但未超过20级 就需要消耗这里的材料
    #20以后就没了 那到达20级将不在可以强化
    20:
      - "&f示例材料1::1"
      - "&f示例材料2::1"
      - "money::1000"

ArmsType:
  #是否启用 关闭后下面功能均失效
  enable: true
  #判断是否只能放入指定武器 留空 "" 则不启用
  #这里用的是正则 不会去除颜色代码
  #冒号后面的即为武器类型
  capture: "&f武器: (.+)"
  #武器类型
  type: "单手剑"

#技能列表
Skills:
  #这里的技能会按顺序显示在gui内
  - "示例角色技能-普通攻击"

#和上面的技能列表一样 需要在技能列表添加
TriggerSkill:
  #切换前
  BeforeSwitch:
    - "示例角色技能-普通攻击"
  #切换后
  AfterSwitch:
    - "示例角色技能-普通攻击"
  #定时任务
  Task:
    #间隔
    任务1:
      time: 20
      skill:
        - "示例角色技能-普通攻击"

#属性列表 升级会增加这些属性值
#预计支持as ap
Attributes:
  #属性名称
  生命上限:
    #属性的基础值
    base: 15.0
    #每级增加的值
    per-level: 5.0
    max: 50.0
    min: 10.0
  攻击力:
    base: 5.0
    per-level: 0.7

```

</details>

#### skill文件夹内是技能配置 文件名称即为技能id
<details>
<summary>展开</summary>

```
#mm技能的内部名称
skillName: "示例角色技能-普通攻击"

#基础触发 这里是全局性的 不管config设置什么 这里都有效
# 原版单左键 右键 即为只按下了一次  并不是上面的鼠标连击  用于做普通攻击等 Left->左键  Right->右键
# 弓箭蓄力 DrawBow 拉弓射箭后触发的技能 弩也能触发
# 由该插件接管的拉弓蓄力 DrawBowForce 只有弓可以触发

#预计支持三套触发方式 如果不想要触发 随便设置一些字符就行了
#Combo触发方式
# 原版触发 鼠标连击 连续按顺序点击鼠标左右键 例如R->L->L  即为按下 右键->左键->左键   SR->SL->SL 携带S代表是潜行时  关于这玩意的配置在config里面有
#AX  ArcartX 的按键监听
# 该按键监听需要注册 client_key 即客户端按键
# 技能那边填写 id 即为配置项内的按键唯一标识符
#Number 原版数字释放
# 原版触发 使用数字键切换栏位 可以释放对应的技能 第一个快捷栏为0开始
trigger: "LLR"

#这里仅在使用DrawBowForce的时候才填写
#大概1.3秒是原版的蓄力时间
#这里是从上往下检查的 满足了就触发 所以要时间由大到小
#比如当前蓄力为1.5  没到10  下一个是1.2 那就会触发1.2的技能
#如果没有满足的话 那就触发最上面的 skillName
force:
  "蓄力技能2": 10.0
  "蓄力技能1": 1.2

#展示物品
DisplayItems:
  name: "&f示例角色技能-普通攻击 +{level}  {isUpgrade}"
  material: "ICE"
  model: "-1"
  #材料lore的格式
  format: "{materials} X {value} | 当前{have}"
  #该lore末尾会添加需要的材料
  lore:
    - "&f左键点击鼠标造成一次范围伤害"
    - "&f每目标造成 &c{damage} &7伤害"
    - ''
    - '&e{cooldown} 秒冷却'
    - '&9消耗 {mana} 魔力'
    - ""

#等级机制
Level:
  #基础等级
  base: 1
  #指定等级的强化消耗  这个材料支持原版的物品材质类型 需要全大写 优先检查材质 其次才是名字
  Consume:
    #填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
    #扣除经济则为 money
    10:
      - "&f示例材料1::1"
      - "money::100"
    #超过10级 但未超过20级 就需要消耗这里的材料
    #20以后就没了 那到达20级将不在可以强化
    20:
      - "&f示例材料1::1"
      - "&f示例材料2::1"
      - "money::1000"

#自定义占位符 可在当前技能内的描述中使用
#也可以在mm中使用 <role.skill.技能名称.占位符key>
Placeholder:
  #占位符key
  damage:
    #基础值
    base: 5.0
    #每级提升的
    per-level: 3.0
  mana:
    base: 15.0
    per-level: 2.0
  cooldown:
    base: 5.0
    per-level: -0.1
    max: 5.0
    min: 1.0
```

</details>

## 依赖
暂时仅支持1.20.1版本
#### 可选:AttributeSystem、QiuhuaItemSpace
#### 必须:MythicMobs、PlaceholderAPI、Vault

## 指令
- /RoleSystem reload 重载所有配置 权限RoleSystem.reload
- /RoleSystem gui [玩家名称] 给指定玩家打开gui 权限RoleSystem.gui
- /RoleSystem gui [玩家1名称] [玩家2名称] 给玩家1查看玩家2的gui 权限RoleSystem.gui.targetPlayer
- /RoleSystem respawn [玩家名称] [角色名称] 给玩家复活指定角色 权限RoleSystem.respawn
- /RoleSystem unlock [玩家名称] [角色名称] 给玩家临时解锁一个角色 权限RoleSystem.unlock
- /RoleSystem lock [玩家名称] [角色名称] 给玩家临时锁定一个角色 权限RoleSystem.lock

## 展示
以下内容非默认配置,仅展示使用
image.png
image.png
image.png
image.png


image.webp
image.webp
image.webp
image.webp
image.webp

[R][角色系统]RoleSystem-1.0.0.jar

125.01 KB, 下载次数: 3

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

孤身一人,去往一个陌生地方,开启一段未知旅程。

Archiver|小黑屋| MCBBS纪念版 ( 新ICP备2024014954号|兵公网安备66010002000149号 )|隐私政策| 手机版

GMT+8, 2025-2-23 03:31 , Processed in 0.109445 second(s), 21 queries , Redis On.

"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

© 2010-2025 MCBBS纪念版 版权所有 本站内原创内容版权属于其原创作者,除作者或版规特别声明外未经许可不得转载

返回顶部