- 版权类型
- 原创
- 版权链接
- #
- 语言支持
- 中文(简体)
- 前置组件
- MG系列插件通用资源包:https://www.minebbs.com/resources/mg.15967/
- 适配版本(基岩)
- 最新版本
MGteam-团队系统
MG系列插件-实用为根本,产研学一体。主要功能&特色
加入团队:- 玩家可通过创建团队、id搜索、排行榜查找三种方式来创建或申请加入团队。
活跃度排行榜:
- 插件内置排行榜,使用“活跃度”来排行团队,活跃度为0则使用积金排行。
- 活跃度取决于该团队内成员近期获取经验的频率,所有团队活跃度每一个小时降低1%。
- 团队管理员可自行设置团队是否在活跃度排行榜上公开团队。
- 陈列所有成员的名称、权限等级、团队活跃度、团队公告,一目了然。
- 团队管理可以设置公告并展示在菜单与详情信息上,让所有成员看见。
- 玩家在查找排行榜时,也能打开查看不同团队的公告,再斟酌是否加入。
- 使用/tmtpa可单独打开。
- 免去同意步骤,支持传送至挂机玩家。
- 使用/tmtp可单独打开。
- 任何团队成员均可添加锚点;普通成员仅能移除自己创建的锚点,管理员可移除所有锚点。
- 存储或取出积金。
- 成员可开启“积金消费”功能,开启后所有消费将自动由团队积金垫付。
- 发布团队留言并让其他成员看见。
- 留言最多存储十条,且有十分钟冷却,确保留言板就是“留言板”而不是被当做私信使用。
- 整合多种功能的团队管理员菜单。
- 十分方便快捷的管理所有团队,op可使用所有团队所有权限级别的功能,留言板留言无冷却限制。
- 简洁清晰的ui风格。
- 附带将orgex数据无缝转换至MGtm的功能,使用与orgex相同名称接口导出数据,原先大部分读取orgex数据的插件(如betterchat、orgex_papi)依旧可以正常获取玩家的团队数据。
- 数据文件内除了存储玩家的XUID以外,单独存了一份RealName,专治手残党升级服务端时忘记复制LL玩家数据库导致名字显示不出来。
- 每人仅限加入一团队。数据迁移后存在多团队冲突的,将自动提醒玩家选择一个团队。避免玩家同时存在于多个团队中造成的部分引用数据插件中团队无法正常显示的现象。
安装
全新安装
- 分别获取本插件资源和MG系列插件通用资源包 (附带资源包,插件中绝大部分UI图标均为自己绘制,包含在这个包里面,不安装会显示成黑紫色方块)
- 分别解压文件,得到两个文件夹;
- 将MGTeam文件夹(插件本体)放入plugins文件夹;
- 根据资源包中文件夹的说明安装资源包本体中的纹理包安装进存档或服务器中(如果无法使用资源包中附带的安装方法,请自行搜索其它安装方法)。
从orgEX(v1/v2)进行迁移
从orgEXv2进行迁移
- 同“全新安装”步骤1-3;
- 获取并使用这个数据迁移脚本得到将orgEXv2数据文件转换为MGteam数据文件(操作说明见该资源介绍);
- 将转换后的数据文件放入plugins\MGTeam文件夹中覆盖空白数据文件;
- 重载服务器或重启插件,在控制台或者游戏内用OP输入tmsync指令,获取同步玩家的RealName名称用于显示;
从orgEXv1进行迁移
- 获取并使用这个数据迁移脚本得到将orgEXv1数据文件转换为orgEXv2数据文件(操作说明见该资源介绍);
- 同“从orgEXv2进行迁移”步骤1-4.
注意事项
- “从orgEXv2进行迁移”第4步中未能同步的玩家名称,可在相关玩家进服时自动同步;
- 对于因为orgEX插件bug导致玩家公会数据重叠的问题(以及多公会情况,本插件仅支持但个团队),会在玩家进服时提供选项,选择进行保留;
- 对于BetterChat等使用orgEX导出接口的插件,可以直接继续使用,本插件提供部分相同的接口。
修改配置
[0.9.5版本新增]在首次启动时会自动生成config,json,内容和注释如下,首次使用请务必根据自身服务器需要来编辑配置:
JSON:
{
"CreateTeamCost": 100000, // 创建团队需要的金钱(使用llmoney,设置为0时为免费创建)
"moneyname": "暮源", // 服务器经济名称(填写你服务器的货币名称,例如“金币”、“积分”等)
"EnablePlaytimeCheck": false, // 创建、加入团队时是否需要满足一定的在线时长(建议关闭。如需使用,需要自行创建名为playtime的计分板并进行数据维护,本插件不提供相关计算功能,如有计算在线时长需要可使用MGStatusBar等插件)
"PlaytimeCheckMinutes": 600, // 如开启上一项配置,则需要多少在线时长
"EnableLogs": true // 全局操作日志开关(建议关闭,后续实装)
}
使用方法
命令
主命令
/tm 主菜单快捷指令
/tmtp 队伍传送点菜单/tmtpa 队伍队员间快捷传送
OP管理
/mgop OP设置权限组介绍
只有两个层级,分为团队普通成员和团队管理员,不区分团队创建者。以下对本插件权限组中可能与一般插件有所区别的地方进行解释。
身份 团队管理员 团队普通成员 设置和修改传送点 可操作团队内所有传送点 只能修改自己创建的传送点 存取团队基金、使用团队基金消费 是 是 编辑成员权限、团队公告、团队名称 全部 否
| 身份 | 团队管理员 | 团队普通成员 |
| 设置和修改传送点 | 可操作团队内所有传送点 | 只能修改自己创建的传送点 |
| 存取团队基金、使用团队基金消费 | 是 | 是 |
| 编辑成员权限、团队公告、团队名称 | 全部 | 否 |
接口
兼容OrgEX(v1/v2)的接口
以下接口名称和用法与OrgEX(v1/v2)相同,相关的对接插件不经修改继续使用
- orgEX_getPlayerOrgName(xuid) : 获取玩家所属团队名称。
- orgEX_getPlayerOrgNum(xuid) : 获取玩家所属团队ID。
- orgEX_playerIsOwner(xuid) : 判断玩家是否为所在团队的创建者/管理员(Role 4)。
- orgEX_orgGetMoney(orgId) : 获取指定团队的积金余额。
- orgEX_orgAddMoney(orgId, count, reason) : 增减团队积金(带流水记账与全员广播)。
- orgEX_getOrgName(orgId) : 获取指定团队名称。orgEXv2 接口 (增强版团队数据接口)
- orgEXv2_getAux(orgId, xuid) : 获取玩家在团队中的权限等级(Aux值)。
- orgEXv2_getAllMembers(orgId) : 获取团队所有成员列表及其权限等级。
- orgEXv2_getAllOrgsByXuid(xuid) : 获取玩家参与的所有团队及其详细信息。
- orgEXv2_getOrgById(orgId) : 通过ID获取团队完整数据(含传送点、资金等)。
- orgEXv2_getOrgByName(name) : 通过名称获取团队完整数据。
- orgEXv2_getOrgByOwner(xuid) : 通过所有者XUID获取团队完整数据。
- orgEXv2_getAllOrg() : 获取服务器所有团队的简要列表。
- orgEXv2_IsOwner(xuid) : 判断玩家是否为所在团队的所有者。
- orgEXv2_getMoney(orgId) : 获取指定团队积金余额(V2版)。
- orgEXv2_pushMoney(orgId, count, reason) : 增减团队积金(V2版,MGteam在原来基础上新增了一条流水原因,向下兼容)。
[MD]
#### [0.9.5版本新增]MGteam 一站式查询接口【一键全部查询】
- `MGteam_queryWalletStatus(xuid)` : 一站式查询玩家的团队钱包状态
- 参数:`xuid` (String) - 玩家XUID
- 返回:`Object` - 包含以下字段:
```javascript
{
inTeam: true, // Boolean - 是否处于一个团队
teamId: "Ab1c", // String|null - 团队ID
teamName: "我的团队", // String|null - 团队名称
walletBalance: 5000, // Number - 团队钱包余额
role: "operator", // String|null - "operator"(管理员) / "member"(普通成员) / null(不在团队)
isOperator: true, // Boolean - 是否为管理员
allowMemberWalletUse: true, // Boolean - 是否允许成员使用钱包消费和取款
memberWalletLimit: 0, // Number - 成员每日使用限额,0表示无限制
todayUsage: 0, // Number - 成员今日已使用金额
fundConsumeEnabled: false // Boolean - 个人是否开启垫付
}
```
**示例代码:**
```javascript
const status = MGteam_queryWalletStatus(player.xuid);
if (!status.inTeam) {
player.tell("§c你不在任何团队中!");
return;
}
player.tell("§e团队:§f" + status.teamName);
player.tell("§e钱包余额:§f" + status.walletBalance);
player.tell("§e身份:§f" + (status.isOperator ? "管理员" : "普通成员"));
player.tell("§e垫付状态:" + (status.fundConsumeEnabled ? "§a已开启" : "§c未开启"));
```
#### [0.9.5版本新增]MGteam 一站式团队钱包权限查询接口【部分查询】
以下接口用于查询团队钱包的成员使用权限和限额设置,供其他插件对接时使用。
**玩家相关查询:**
- `MGteam_isWalletUseAllowed(xuid)` : 查询玩家是否允许使用团队钱包消费
- 参数:`xuid` - 玩家XUID
- 返回:`Boolean` - true表示允许,false表示禁止
- 说明:管理员始终返回true,普通成员取决于团队设置
- `MGteam_getMemberWalletLimit(xuid)` : 获取成员每日钱包使用限额
- 参数:`xuid` - 玩家XUID
- 返回:`Number` - 限额金额
- 说明:管理员返回-1表示无限制,普通成员返回限额金额,0表示禁止使用
- `MGteam_checkWalletAmountLimit(xuid, amount)` : 检查金额是否超过成员每日限额(累计计算)
- 参数:`xuid` - 玩家XUID,`amount` - 本次使用金额
- 返回:`Object` - `{allowed: Boolean, limit: Number, message: String}`
- 说明:`allowed`表示是否允许,`limit`为每日限额(-1无限制),`message`为错误信息
**团队相关查询:**
- `MGteam_isTeamAllowMemberWalletUse(orgId)` : 查询团队是否允许成员使用钱包
- 参数:`orgId` - 团队ID
- 返回:`Boolean` - true表示允许,false表示禁止
- `MGteam_getTeamMemberWalletLimit(orgId)` : 获取团队成员每日钱包使用限额
- 参数:`orgId` - 团队ID
- 返回:`Number` - 限额金额,0表示无限制
#### [0.9.5版本新增]MGteam 一站式付款接口【自动进行所有计算】
直接调用 `MGteam_payFromWallet(xuid, count, reason)` 进行付款,该接口会自动完成所有检查。
```javascript
const result = MGteam_payFromWallet(player.xuid, 1000, "购买道具");
if (result.success) {
player.tell("§a扣款成功!剩余余额:" + result.balanceAfter);
} else {
player.tell("§c扣款失败:" + result.message);
}
```
**MGteam_payFromWallet 参数说明:**
- `xuid` (String) : 玩家XUID(必填)
- `count` (Number) : 扣款金额,必须为正整数(必填)
- `reason` (String) : 扣款原因,用于流水账记录(必填)
**返回值说明:**
成功时返回:
```javascript
{
success: true,
message: "扣款成功",
teamId: "Ab1c", // 团队ID
teamName: "我的团队", // 团队名称
amount: 1000, // 扣款金额
balanceBefore: 5000, // 扣款前余额
balanceAfter: 4000, // 扣款后余额
isOperator: true // 是否为管理员
}
```
失败时返回:
```javascript
{
success: false,
message: "失败原因" // 具体失败原因
}
```
**可能的失败原因:**
- 无效的玩家XUID
- 无效的扣款金额,必须为正整数
- 无效的扣款原因
- 玩家不在线
- 玩家不在任何团队中
- 团队数据异常
- 团队管理员已禁止成员使用团队钱包
- 今日使用金额超过每日限额(累计计算)
- 团队钱包余额不足
**注意:** 管理员身份的玩家会无视「成员使用权限」和「每日限额」限制。每日限额按自然日累计计算,每天0点自动重置。
---
[/MD][0.9.0以及更早版本,新版保留兼容]MGteam 提供的拓展接口
- MGteam_getFundConsumeStatus(xuid) : 查询玩家是否开启团队积金垫付。
- MGteam_setFundConsumeStatus(xuid, enabled) : 开启/关闭玩家团队积金垫付。
- MGteam_reducePlayerMoneyDirect(xuid, amount) : 直接扣除玩家个人余额(无视垫付状态,
- MGteam_payFromWallet(xuid, count, reason) : 【推荐】团队钱包直接付款接口,自动完成所有检查并扣款。
MGteam_queryWalletStatus(xuid) :【推荐】一站式查询团队钱包状态,返回团队信息、余额、身份、权限设置等完整状态。
MGteam_queryWalletStatus(xuid) :【推荐】一站式查询团队钱包状态,返回团队信息、余额、身份、权限设置等完整状态。
UI展示
备注
本插件部分内容借助了AI编写以节省劳动力,且全部代码均经过仔细的人工审核、测试、修改和优化。技术力有限,欢迎各种批评与建议。