# 3.1 - 实战：权限组的安排

## 经验：LuckPerms 的简易使用教程

### /lp editor —— 打开权限组网页编辑器

使用该指令后插件会发给你一个链接，你可以在网页内可视化管理你的权限组和权限节点，非常方便。

### /lp user 玩家名称 parent add 组英文ID —— 给予玩家一个权限组

这个指令代表给玩家新的一个权限组，旧的权限组同时也在。同样是上面这个指令，将 add 改为 set 则代表将这个玩家设置到新的权限组，玩家旧的权限组不复存在。

由于本端设置了 parentGroup 功能，并且很好发挥了 weight 规则：weight 越高，也就是上面那个表越往下的组，它一定会携带上面所有权限组的权限，因此本端 add 和 set 给予玩家权限组没有什么区别，但是在其他制作不严谨的服务端或者专门利用这个特性制作一些规则的服务端，如果你权限组指令没打对，会出大问题。

### /lp user 玩家名称 parent addtemp 组英文ID 时间数 —— **给予一个玩家临时的权限组**

时间数如何表示？1d = 1天，30d = 30天，1mo = 1月，1h = 1小时... 还不懂建议看一下脑科。如果你一不小心给错了玩家权限组，怎么撤回？千万不能说直接把玩家权限组删了，否则玩家权限组没了啥也干不了。用上面的 set 指令，引导玩家到他原来的组里面。

### /lp group 组英文ID permission set 权限节点 true —— **给一个组添加一个权限节点**

将 **true** 替换为 **false**，则代表这个权限组一定没有这个权限，尽管插件设置了所有玩家默认都有这个权限节点的权限，如果这里是 **false**，也会被强制替换为 没有权限。

## 经验：修改 LuckPerms 的数据储存方式

由于 `/lp editor` 指令在国内容易无法连接，因此建议修改数据库模式更改为 `yaml`，方便修改各个组的权限节点。

修改各个组的权限节点有如下几种方式：

* 通过 `/lp editor` 指令在网页在线编辑，优点是直观，缺点是容易连接不上，对于老手来说效率也不高。
* 如果使用 `yaml` 方式储存，那么直接按照 **2.1** 节所教教程，编辑各个组的权限节点，可以几秒内通过复制插件文档一次性就添加几百个权限节点，方便简单，缺点是对于大型服务器来说，这种储存方式可能造成一些性能问题。**如果你是新来的，不用想这么多，而且 LuckPerms 也支持数据转换，无脑选它！**
* 通过上面教你的指令一个个打，效率低，指令长不好记。**LuckPerms** 默认使用 **h2** 储存方式，如果你连接不上网页在线编辑，那就悲催了，你只能通过这些指令一个个敲，所以我推荐你用 **yaml**，**yaml** 大家伙电脑都有记事本可以改，而 h2 的数据库文件需要下载额外的软件。

如何修改？如果你想给自己一个挑战，到此为止，自己去看插件文档。如果找不到，可以看我给的教程：

在 **LuckPerms** 的 `config.yml` 文件中找到 `storage-method` 选项，将其改为 `yaml`。

## 经验：使用 Notepad++ 搜索结果

**LuckPerms** 的配置文件长的要死，就算我给了你这个选项你也很容易找不到，这时候前文叫你安装的文本处理软件就用上用场了，我们可以点击软件上方工具栏的“搜索”选项卡，然后点击“查找”，再在文本框输入查找内容即可。

![](https://400373137-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFlP4xP4pRQ4Bt9AMcMkX%2Fuploads%2FJy669vgmsFasGX6ldNDp%2Fimage.png?alt=media\&token=88741775-6895-477b-9c3a-c97f361087c4)

## 经验：组的创建与使用

你想让你的服务器玩家分为哪些组？我把我的想法写给你：

| default  | 普通玩家   | 进服         | 10   |   |   |
| -------- | ------ | ---------- | ---- | - | - |
| gold     | 黄金玩家   | 等级菜单花费金币升级 | 20   |   |   |
| diamond  | 钻石玩家   | 等级菜单花费金币升级 | 30   |   |   |
| emerged  | 绿宝石玩家  | 等级菜单花费金币升级 | 40   |   |   |
| nether   | 下界合金玩家 | 等级菜单花费金币升级 | 50   |   |   |
| amethyst | 水晶玩家   | 等级菜单花费金币升级 | 60   |   |   |
| vip      | VIP    | 等级菜单花费点券购买 | 100  |   |   |
| svip     | SVIP   | 等级菜单花费点券购买 | 200  |   |   |
| owner    | 服主     | 手动给予       | 1000 |   |   |

这里出现了组中文Prefix，其实官方Wiki将其称为 **Prefix**，我们可以理解为其游戏名称前面将会出现的内容。还有一个 **Suffixes**，是在游戏名称后面出现的内容，这两个不会平白无故的显示的，所以放心的在这里添加吧，尽管你不知道具体干什么的。

如何给组添加权限节点我们之前已经说了，那么如何创建组呢？如果前文你已经将数据库改为了 `yaml`，那么很简单，找到 `plugins\LuckPerms\yaml-storage\groups` 目录，创建一个新的文件，名为“组英文id.yml”，例如“vip.yml”。

将下面这段复制进去：

```
name: vip
permissions:
- weight.100
prefixes:
- '&#B0C4DE[&#e9b308VIP玩家&#B0C4DE]':
    priority: 100
suffixes:
- '&#FAEBD7':
    priority: 100
```

`prefixes` 和 `suffixes` 想必你已经知道干什么了，底下的 priority 则是优先值，直接填写和上表权重一样的值即可。

`permissions` 就是这个组有什么权限节点，`name` 就是组的名称。

其他指令和网页编辑的，请自行参考插件文档。

如何添加权重呢？这个参考示例也给了你答案：给予 `weight.值` 的权限节点即可。

在接下来的教程中，**Prefix** 只在计分板显示、聊天显示等位置都会用到。

每个权限组都有一个 **权重** 值，越往下的权限组，其值越高。权重值越高，代表当你同时拥有2个及以上权限组时，在计分板显示等位置时，将会优先显示权重值高的权限组的 **Prefix**。不设置该值的后果就是，当玩家拥有 2 个及以上权限组后，计分板等位置会显示玩家所有的组，例如 **\[普通玩家]\[VIP]**。

最后温馨提示，2.5 节的作业的答案一半这里已经给了哦，后文不再提及这一半了。

## 经验：实战使用

### 会员等级

玩家可以通过 **等级菜单** 提升他们的会员等级。可以不仅需要玩家攒到一定数额的金币，还需要达到一定的任务条件，以增加玩家的粘度。玩家只有解锁上一级的会员等级，才能尝试解锁下一级的会员等级，需要循序渐进，不能跳过。并且，随着会员等级的提升，其需要达到的条件和需要消耗的金币数额也在不断提高，以增加后期升级的挑战性。

如果你想创建自己的会员等级，只需要通过 **LuckPerms** 创建新的权限组即可。你可以通过指令 `/lp creategroup 组名称` 即可创建。组名称是使用 LuckPerms 指令时用到的变量，并不是玩家实际看到的名称，并且只能设置为小写英文、数字组合。这时，参考上文，给这个权限组赋予权限节点，或者通过网页编辑器编辑，即可实现创建新的会员等级。通过参考 **菜单**，编辑等级菜单以给新的会员等级赋予升级页面。我们的会员等级条件是通过 `plugins/CMI/rankup.yml` 文件实现的，这里不再叙述。

### 特权等级

玩家只能通过 **点券购买** 获得特权等级。对特权等级定义是：一切基于最高级的玩家等级之上。这也是方便玩家快速过渡前期的捷径之一。特权等级拥有的权限高于会员等级的最高级别，因此请勿随意给没有充值的玩家特权等级。
