RoleSystem是一款参考了原神的角色系统,提供大致一样的系统实现。
- GUI:大部分组件都能自定义,提供角色列表、技能信息、装备信息等。
- 角色:角色的创建、技能分配、角色升级、基础属性、武器种类。
- 技能:使用MythicMobs技能释放。多种技能触发方式,左右键、顺序按键(即为按下 右键->左键->左键)、快捷栏按键、DrawBowForce。即将兼容ArcartX以及UnrealCore的客户端按键监听。还提供了技能升级配置,动态技能数值显示。
- 血量/装备隔离:每个角色都将拥有自己的血量存储以及装备存储。
- 角色出战:可配置允许玩家同时上场多个角色,使用指定按键在战斗中进行切换,使用不同的技能和装备。
- 武器提供:支持角色绑定一种武器类型,并且在使用该角色时提供武器到指定槽位。
- 死亡复活:当玩家使用的角色死亡时,将会锁定,无法使用相关功能,需要复活该角色才能正常使用。
- 套装:可配置套装效果,提升属性。或使用mm条件检查套装改变技能。
- 属性:AttributeSystem 后续将兼容AttributePlus。
- 弓箭机制:背包无需箭矢即可拉弓,提供DrawBowForce。
- 存储:默认使用sqlite、支持mysql跨服。
角色需要权限才能解锁 权限节点为 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节点配置
#### MythicMobs:提供大量的内置占位符以及技能
[]为必填 {}为可选 可选的如不填则获取当前角色
<role.a.[属性名称].{角色名称}> 获取角色指定属性
<role.s.[技能名称].[属性名称].{角色名称}> 获取技能指定的属性
<role.sl.[技能名称].{角色名称}> 获取技能等级
<role.id.{顺序}> 获取角色名称 顺序从0开始
<role.h.{角色名称}> 获取角色当前生命值
<role.mh.{角色名称}> 获取角色当前最大生命值
roleId可选 switchCd可选(单位毫秒) 均支持mm本身占位符解析
roleId: 玩家即将切换到的角色。不填则切换到无角色,填写的角色没有将不会切换
switchCd: 切换角色的冷却时间。如不填则按默认时间。
- roleSwitch{roleId=要切换的角色id;switchCd=冷却时间}
health必填 isAll必填 roleId可选 均支持mm本身占位符解析
roleId:指定恢复的角色 如不填则恢复当前角色
- roleHealth{health=恢复的生命值;isAll=是否全队回复;roleId=角色名称}
value:需要的数量 这里支持使用mm的对比符号 例如 > < 1to2
- suitTag{roleId=角色名称,tag=套装id;value=数量}
#### PlaceholderAPI:提供大量的变量支持
[]为必填 {}为可选 可选的如不填则获取当前角色
%role_a_[属性名称]_{角色名称}% 获取角色指定属性
%role_s_[技能名称]_[属性名称]_{角色名称}% 获取技能指定的属性
%role_sl_[技能名称]_{角色名称}% 获取技能等级
%role_id_{顺序}% 获取角色名称 顺序从0开始
%role_h_{角色名称}% 获取角色当前生命值
%role_mh_{角色名称}% 获取角色当前最大生命值
#### QiuhuaItemSpace:更便捷的装备材料操作
允许角色升级、技能升级时使用指定物品空间内的材料,无需再将材料放置在背包内。
允许在gui内显示指定物品空间的物品。例如显示装备空间,快捷拿取装备配装。
<summary>Config</summary>
MoneyTextReplacement: "&f消耗经济"
#替换部分位置的 {isUpgrade} 可以替换的位置有 skill的展示物品 LevelInfo的物品 支持lore和名称
#生命值的属性key 使用as属性插件的情况下 请确保玩家拥有这个属性 哪怕他只有0 因为as如果没有这个属性 会返回null 而不是0
#因为有的属性插件获取生命值属性的时候不会计算默认拥有的20生命值 所以这里给了个自定义数值
#模块 全息文字的技能注册 用于施加buff时的全息文字显示
#自定义拉弓蓄力最大值 相关事件名称BowForceEvent
#关掉后 仅关闭玩家主动释放技能 其他部分的技能不受影响
#是否需要手持武器才能触发 必须开启LockArms模块才能正常工作
#Combo释放时的长度 到这个长度就会尝试释放对应的技能
#这里这个间隔对于其他释放方式也有效 防止高频触发
ComboIntervalMin: 10 #最小连击间隔
#模块 QiuhuaItemSpace兼容 会检查指定仓库的材料 和扣除
#在界面上的部分槽位显示指定仓库的物品列表 并且支持拿取和放入
itemList: [15, 16, 17, 24, 25, 26, 33, 34, 35, 42, 43, 44]
#角色死亡锁定 当玩家当前角色死亡 玩家会自动在当前位置重生 且换成可用角色
#此功能会在开服时开启 立即重生游戏规则 以此来越过死亡界面
#是否启用 关闭后下面功能均失效 需要重启才能生效
#是否启用 套装属性 不管有没有启用都会统计套装 相关占位符也能正常使用
#这里用的是正则 不会去除颜色代码 同id的套装会叠加数量
#即为切换到该角色时提供一把武器在指定槽位 无法丢弃交互等
#是否启用 关闭后下面功能均失效 需要重启才能生效
#如果玩家没有打开过 那将默认打开这个页面 否则将打开玩家上次关闭的页面
Title: "%player_name% 的角色列表"
showSlot: [1, 2, 3, 4, 5, 6, 7]
#技能槽位 技能数量大于设置的栏位 超出的则不显示
name: "&f点击出场/下场 {state}"
name: "&f当前等级 +{level} {isUpgrade}"
format: "{materials} X {value} | 当前{have}"
suitFormat: " {suitId} : {value}"
#该lore末尾会添加需要的材料 如果有一行仅包含该字符串 {roleInfo} 那他将会从这一行插入角色配置文件的InfoLore
type: sqlite #sqlite或者mysql mysql才需要配置下面的部分
dataBaseName: RoleSystem #数据库名称
#当数量达到时触发的 从上往下检查 当套装数量满足后就不会继续检查了
#### role文件夹内是角色配置 文件名称即为角色id
#不可用的角色将无法点击该栏位任意位置 但依旧可以预览界面上的物品信息
name: "&f示例角色 +{level} {state} | {health}/{maxhealth}"
#填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
#扣除经济则为 money 这个不能加颜色代码 代码在config里面加
#超过10级 但未超过20级 就需要消耗这里的材料
#### skill文件夹内是技能配置 文件名称即为技能id
#基础触发 这里是全局性的 不管config设置什么 这里都有效
# 原版单左键 右键 即为只按下了一次 并不是上面的鼠标连击 用于做普通攻击等 Left->左键 Right->右键
# 弓箭蓄力 DrawBow 拉弓射箭后触发的技能 弩也能触发
# 由该插件接管的拉弓蓄力 DrawBowForce 只有弓可以触发
#预计支持三套触发方式 如果不想要触发 随便设置一些字符就行了
# 原版触发 鼠标连击 连续按顺序点击鼠标左右键 例如R->L->L 即为按下 右键->左键->左键 SR->SL->SL 携带S代表是潜行时 关于这玩意的配置在config里面有
# 该按键监听需要注册 client_key 即客户端按键
# 技能那边填写 id 即为配置项内的按键唯一标识符
# 原版触发 使用数字键切换栏位 可以释放对应的技能 第一个快捷栏为0开始
#这里仅在使用DrawBowForce的时候才填写
#这里是从上往下检查的 满足了就触发 所以要时间由大到小
#比如当前蓄力为1.5 没到10 下一个是1.2 那就会触发1.2的技能
#如果没有满足的话 那就触发最上面的 skillName
name: "&f示例角色技能-普通攻击 +{level} {isUpgrade}"
format: "{materials} X {value} | 当前{have}"
- "&f每目标造成 &c{damage} &7伤害"
#指定等级的强化消耗 这个材料支持原版的物品材质类型 需要全大写 优先检查材质 其次才是名字
#填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
#超过10级 但未超过20级 就需要消耗这里的材料
#也可以在mm中使用 <role.skill.技能名称.占位符key>
#### 可选: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
RoleSystem是一款参考了原神的角色系统,提供大致一样的系统实现。
- GUI:大部分组件都能自定义,提供角色列表、技能信息、装备信息等。
- 角色:角色的创建、技能分配、角色升级、基础属性、武器种类。
- 技能:使用MythicMobs技能释放。多种技能触发方式,左右键、顺序按键(即为按下 右键->左键->左键)、快捷栏按键、DrawBowForce。即将兼容ArcartX以及UnrealCore的客户端按键监听。还提供了技能升级配置,动态技能数值显示。
- 血量/装备隔离:每个角色都将拥有自己的血量存储以及装备存储。
- 角色出战:可配置允许玩家同时上场多个角色,使用指定按键在战斗中进行切换,使用不同的技能和装备。
- 武器提供:支持角色绑定一种武器类型,并且在使用该角色时提供武器到指定槽位。
- 死亡复活:当玩家使用的角色死亡时,将会锁定,无法使用相关功能,需要复活该角色才能正常使用。
- 套装:可配置套装效果,提升属性。或使用mm条件检查套装改变技能。
- 属性:AttributeSystem 后续将兼容AttributePlus。
- 弓箭机制:背包无需箭矢即可拉弓,提供DrawBowForce。
- 存储:默认使用sqlite、支持mysql跨服。
角色需要权限才能解锁 权限节点为 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节点配置
#### MythicMobs:提供大量的内置占位符以及技能
[]为必填 {}为可选 可选的如不填则获取当前角色
<role.a.[属性名称].{角色名称}> 获取角色指定属性
<role.s.[技能名称].[属性名称].{角色名称}> 获取技能指定的属性
<role.sl.[技能名称].{角色名称}> 获取技能等级
<role.id.{顺序}> 获取角色名称 顺序从0开始
<role.h.{角色名称}> 获取角色当前生命值
<role.mh.{角色名称}> 获取角色当前最大生命值
roleId可选 switchCd可选(单位毫秒) 均支持mm本身占位符解析
roleId: 玩家即将切换到的角色。不填则切换到无角色,填写的角色没有将不会切换
switchCd: 切换角色的冷却时间。如不填则按默认时间。
- roleSwitch{roleId=要切换的角色id;switchCd=冷却时间}
health必填 isAll必填 roleId可选 均支持mm本身占位符解析
roleId:指定恢复的角色 如不填则恢复当前角色
- roleHealth{health=恢复的生命值;isAll=是否全队回复;roleId=角色名称}
value:需要的数量 这里支持使用mm的对比符号 例如 > < 1to2
- suitTag{roleId=角色名称,tag=套装id;value=数量}
#### PlaceholderAPI:提供大量的变量支持
[]为必填 {}为可选 可选的如不填则获取当前角色
%role_a_[属性名称]_{角色名称}% 获取角色指定属性
%role_s_[技能名称]_[属性名称]_{角色名称}% 获取技能指定的属性
%role_sl_[技能名称]_{角色名称}% 获取技能等级
%role_id_{顺序}% 获取角色名称 顺序从0开始
%role_h_{角色名称}% 获取角色当前生命值
%role_mh_{角色名称}% 获取角色当前最大生命值
#### QiuhuaItemSpace:更便捷的装备材料操作
允许角色升级、技能升级时使用指定物品空间内的材料,无需再将材料放置在背包内。
允许在gui内显示指定物品空间的物品。例如显示装备空间,快捷拿取装备配装。
<summary>Config</summary>
MoneyTextReplacement: "&f消耗经济"
#替换部分位置的 {isUpgrade} 可以替换的位置有 skill的展示物品 LevelInfo的物品 支持lore和名称
#生命值的属性key 使用as属性插件的情况下 请确保玩家拥有这个属性 哪怕他只有0 因为as如果没有这个属性 会返回null 而不是0
#因为有的属性插件获取生命值属性的时候不会计算默认拥有的20生命值 所以这里给了个自定义数值
#模块 全息文字的技能注册 用于施加buff时的全息文字显示
#自定义拉弓蓄力最大值 相关事件名称BowForceEvent
#关掉后 仅关闭玩家主动释放技能 其他部分的技能不受影响
#是否需要手持武器才能触发 必须开启LockArms模块才能正常工作
#Combo释放时的长度 到这个长度就会尝试释放对应的技能
#这里这个间隔对于其他释放方式也有效 防止高频触发
ComboIntervalMin: 10 #最小连击间隔
#模块 QiuhuaItemSpace兼容 会检查指定仓库的材料 和扣除
#在界面上的部分槽位显示指定仓库的物品列表 并且支持拿取和放入
itemList: [15, 16, 17, 24, 25, 26, 33, 34, 35, 42, 43, 44]
#角色死亡锁定 当玩家当前角色死亡 玩家会自动在当前位置重生 且换成可用角色
#此功能会在开服时开启 立即重生游戏规则 以此来越过死亡界面
#是否启用 关闭后下面功能均失效 需要重启才能生效
#是否启用 套装属性 不管有没有启用都会统计套装 相关占位符也能正常使用
#这里用的是正则 不会去除颜色代码 同id的套装会叠加数量
#即为切换到该角色时提供一把武器在指定槽位 无法丢弃交互等
#是否启用 关闭后下面功能均失效 需要重启才能生效
#如果玩家没有打开过 那将默认打开这个页面 否则将打开玩家上次关闭的页面
Title: "%player_name% 的角色列表"
showSlot: [1, 2, 3, 4, 5, 6, 7]
#技能槽位 技能数量大于设置的栏位 超出的则不显示
name: "&f点击出场/下场 {state}"
name: "&f当前等级 +{level} {isUpgrade}"
format: "{materials} X {value} | 当前{have}"
suitFormat: " {suitId} : {value}"
#该lore末尾会添加需要的材料 如果有一行仅包含该字符串 {roleInfo} 那他将会从这一行插入角色配置文件的InfoLore
type: sqlite #sqlite或者mysql mysql才需要配置下面的部分
dataBaseName: RoleSystem #数据库名称
#当数量达到时触发的 从上往下检查 当套装数量满足后就不会继续检查了
#### role文件夹内是角色配置 文件名称即为角色id
#不可用的角色将无法点击该栏位任意位置 但依旧可以预览界面上的物品信息
name: "&f示例角色 +{level} {state} | {health}/{maxhealth}"
#填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
#扣除经济则为 money 这个不能加颜色代码 代码在config里面加
#超过10级 但未超过20级 就需要消耗这里的材料
#### skill文件夹内是技能配置 文件名称即为技能id
#基础触发 这里是全局性的 不管config设置什么 这里都有效
# 原版单左键 右键 即为只按下了一次 并不是上面的鼠标连击 用于做普通攻击等 Left->左键 Right->右键
# 弓箭蓄力 DrawBow 拉弓射箭后触发的技能 弩也能触发
# 由该插件接管的拉弓蓄力 DrawBowForce 只有弓可以触发
#预计支持三套触发方式 如果不想要触发 随便设置一些字符就行了
# 原版触发 鼠标连击 连续按顺序点击鼠标左右键 例如R->L->L 即为按下 右键->左键->左键 SR->SL->SL 携带S代表是潜行时 关于这玩意的配置在config里面有
# 该按键监听需要注册 client_key 即客户端按键
# 技能那边填写 id 即为配置项内的按键唯一标识符
# 原版触发 使用数字键切换栏位 可以释放对应的技能 第一个快捷栏为0开始
#这里仅在使用DrawBowForce的时候才填写
#这里是从上往下检查的 满足了就触发 所以要时间由大到小
#比如当前蓄力为1.5 没到10 下一个是1.2 那就会触发1.2的技能
#如果没有满足的话 那就触发最上面的 skillName
name: "&f示例角色技能-普通攻击 +{level} {isUpgrade}"
format: "{materials} X {value} | 当前{have}"
- "&f每目标造成 &c{damage} &7伤害"
#指定等级的强化消耗 这个材料支持原版的物品材质类型 需要全大写 优先检查材质 其次才是名字
#填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
#超过10级 但未超过20级 就需要消耗这里的材料
#也可以在mm中使用 <role.skill.技能名称.占位符key>
#### 可选: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