PKSystem
一个BDS服务端的网游红名插件
该插件实现了完整的罪恶值系统,包括罪恶值管理、红名机制、罪恶值衰减、死亡掉落经济与物品功能、安全区并提供完善的GUI表单系统,无需使用代码编辑器修改插件配置,方便玩家和管理员使用。
安装
1.下载插件解压到plugins文件夹 此时你的文件夹应该有PKSystem文件夹
2.重启服务端或执行ll load PKSystem
使用
请详细查看插件介绍
1. 查看罪恶值: 输入 `/pk` 命令打开主菜单,可以查看:
- 当前罪恶值和状态(红名/白名)
- 罪恶值排行榜
- 自己的击杀历史
- 当前红名玩家列表
2. 罪恶值机制:
- 击杀其他玩家会增加罪恶值
- 击杀红名玩家增加的罪恶值较少(可在配置中设置)
- 罪恶值会随时间自动衰减
- 死亡时会减少少量罪恶值(管理员可自定义)
3. 红名机制:
- 当罪恶值达到阈值时,自动成为红名
- 红名玩家死亡时会掉落金币(如果启用)
- 红名玩家死亡时会概率掉落自身物品(该功能无视游戏死亡不掉落的设置)
- 罪恶值降至阈值以下时,自动恢复白名
1.- 设置玩家罪恶值
- 增加/减少玩家罪恶值
- 查看玩家信息
- 清除玩家罪恶值
- 系统配置管理
- 安全区域设置
2.- 配置管理 在管理员菜单中点击"系统配置管理",可以配置:
- 罪恶值相关设置
- 红名相关设置
- 死亡减少配置:管理红名玩家死亡时减少的罪恶值 可设置固定数值 或百分比扣除
- GUI相关设置
- 死亡掉落配置:配置红名玩家死亡后损失的经济以及死亡后掉落物品的概率
- 击杀奖励配置:玩家击杀红名玩家时给予金币奖励 可自由关闭该功能
管理员命令
`/pkadmin <action> [target] [value]` 或 `/pkadm`
PK值管理命令
权限: OP(游戏管理员)
参数:
- `action`: 操作类型
- `set`: 设置玩家的PK值
- `add`: 增加玩家的PK值
- `reduce`: 减少玩家的PK值
- `view`: 查看玩家的PK值信息
- `clear`: 清除玩家的PK值
- `target`: (可选)目标玩家,不指定则操作自己
- `value`: (可选)PK值数量,`view` 和 `clear` 操作不需要此参数
示例:
/pkadmin set Steve 100 # 设置Steve的PK值为100
/pkadmin add Steve 50 # 给Steve增加50 PK值
/pkadmin reduce Steve 20 # 给Steve减少
20 PK值
/pkadmin view Steve # 查看Steve的PK值信息
/pkadmin clear Steve # 清除Steve的PK值
/pkadmin view # 查看自己的PK值信息
插件数据
插件会在 `plugins/PKSystem/` 目录下生成以下文件:
- `config.json`: 配置文件
- `playerData.json`: 玩家数据文件(存储所有玩家的PK值、击杀记录等)
罪恶值计算(默认参数)
1. 增加罪恶值:
- 击杀普通玩家: +100
- 击杀红名玩家: +50
2. 减少罪恶值:
- 死亡时: 减少当前罪恶值的5%(或固定数值)
- 定时衰减: 每 `60000` 毫秒减1点PK值
3. 红名判定:
- 罪恶值 ≥ 100→ 红名
- 罪恶值 < 100→ 白名
死亡掉落
1.当红名玩家死亡时,会根据配置扣除一定数量的金币:
- 比例模式: 扣除当前金币的指定百分比(例如:5%)
- 固定模式: 扣除固定数量的金币(例如:100金币)
2.当红名玩家死亡时会随机掉落自身物品 (最多5件)且无视游戏中的死亡不掉落设置
安全区
红名玩家身处安全区时 (注意这可能会与击杀奖励产生刷取金币的问题 我会在后续版本添加检测)
- 物品保护:死亡时不掉落物品
- 金币保护:死亡时不掉落金币
- 自定义消息:可配置保护提示消息
默认配置(配置可在游戏内自定义)
API导出
// 使用示例
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (Integer) 玩家的当前罪恶值
- 说明: 获取指定玩家的当前罪恶值
1.2 设置玩家罪恶值
- 参数:
- `xuid` (String) - 玩家的XUID标识符
- `value` (Integer) - 要设置的罪恶值 (0-1000)
- 返回值: (Integer) 设置后的实际罪恶值
- 说明: 设置指定玩家的罪恶值,会自动触发红名状态检查
1.3 增加玩家罪恶值
- 参数:
- `xuid` (String) - 玩家的XUID标识符
- `amount` (Integer) - 要增加的罪恶值
- 返回值: (Integer) 增加后的罪恶值
- 说明: 为指定玩家增加罪恶值,会自动处理红名状态变化
1.4 减少玩家罪恶值
- 参数:
- `xuid` (String) - 玩家的XUID标识符
- `amount` (Integer) - 要减少的罪恶值
- 返回值:(Integer) 减少后的罪恶值
- 说明: 为指定玩家减少罪恶值,会自动处理白名状态恢复
---
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (Boolean) true=红名, false=白名
- 说明: 检查指定玩家是否为红名状态
2.2 获取红名阈值
- 参数: 无
- 返回值: (Integer) 当前的红名阈值
- 说明: 获取成为红名所需的罪恶值阈值
---
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (Object) 玩家数据对象,包含以下字段:
- 说明: 获取玩家的完整PK数据信息
3.2 获取玩家击杀历史
- 参数:
- `xuid` (String) - 玩家的XUID标识符
- `limit` (Integer) - 返回记录数量限制,默认10条
- 返回值: (Array) 击杀历史记录数组
```javascript
- 说明: 获取玩家的击杀历史记录
3.3 获取玩家统计信息
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (Object) 玩家统计信息
- 说明: 获取玩家的统计数据摘要
---
- 参数: `limit` (Integer) - 返回排行数量,默认10名
- 返回值: (Array) 排行榜数组,按罪恶值降序排列
- 说明: 获取服务器罪恶值排行榜
4.2 获取红名玩家列表
- 参数: 无
- 返回值: (Array) 所有红名玩家数组
- 说明: 获取所有红名玩家的列表
---
- 参数: 无
- 返回值: (Object) 完整的系统配置对象
- 说明: 获取系统的完整配置信息
5.2 更新系统配置
- 参数: `newConfig` (Object) - 新的配置对象(部分更新)
- 返回值: (Boolean) 是否更新成功
- 说明: 更新系统配置,支持部分配置更新
- 示例:
---
- 参数: `pkValue` (Integer) - 罪恶值
- 返回值: (String) 格式化后的罪恶值字符串
- 说明: 将罪恶值格式化为适合显示的字符串
6.2 格式化玩家状态
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (String) 玩家状态字符串 ("红名" 或 "白名")
- 说明: 获取玩家的状态描述文本
---
- 参数: `player` (Player) - 玩家对象
- 返回值: (Boolean) 是否在安全区域内
- 说明: 检查玩家当前位置是否在安全区域内
7.2 获取安全区域列表
- 参数: 无
- 返回值: (Array) 安全区域列表
- 说明: 获取所有已配置的安全区域
7.3 添加安全区域
- 参数: `safeZone` (Object) - 安全区域配置对象
- 返回值: (Boolean) 是否添加成功
- 说明: 添加新的安全区域
---
- 参数: `killer` (Player) - 击杀者玩家对象
- 返回值: 无
- 说明: 为击杀红名的玩家发放奖励
8.2 处理红名死亡金币掉落
- 参数: `player` (Player) - 死亡的红名玩家对象
- 返回值: 无
- 说明: 处理红名玩家死亡时的金币掉落
8.3 处理红名死亡装备掉落
- 参数: `player` (Player) - 死亡的红名玩家对象
- 返回值: 无
- 说明: 处理红名玩家死亡时的装备掉落
---
9. 版本信息API (2个函数)
9.1 获取插件版本
- **参数**: 无
- **返回值**: (String) 插件版本号
- **说明**: 获取PKSystem插件的当前版本
9.2 获取插件名称
- **参数**: 无
- **返回值**: (String) 插件名称 ("PKSystem")
- **说明**: 获取插件的名称
---
使用示例
完整示例:创建PK统计插件
一个BDS服务端的网游红名插件
该插件实现了完整的罪恶值系统,包括罪恶值管理、红名机制、罪恶值衰减、死亡掉落经济与物品功能、安全区并提供完善的GUI表单系统,无需使用代码编辑器修改插件配置,方便玩家和管理员使用。
安装
1.下载插件解压到plugins文件夹 此时你的文件夹应该有PKSystem文件夹
2.重启服务端或执行ll load PKSystem
使用
请详细查看插件介绍
/pk打开主表单:1. 查看罪恶值: 输入 `/pk` 命令打开主菜单,可以查看:
- 当前罪恶值和状态(红名/白名)
- 罪恶值排行榜
- 自己的击杀历史
- 当前红名玩家列表
2. 罪恶值机制:
- 击杀其他玩家会增加罪恶值
- 击杀红名玩家增加的罪恶值较少(可在配置中设置)
- 罪恶值会随时间自动衰减
- 死亡时会减少少量罪恶值(管理员可自定义)
3. 红名机制:
- 当罪恶值达到阈值时,自动成为红名
- 红名玩家死亡时会掉落金币(如果启用)
- 红名玩家死亡时会概率掉落自身物品(该功能无视游戏死亡不掉落的设置)
- 罪恶值降至阈值以下时,自动恢复白名
/pkadm管理员指令:1.- 设置玩家罪恶值
- 增加/减少玩家罪恶值
- 查看玩家信息
- 清除玩家罪恶值
- 系统配置管理
- 安全区域设置
2.- 配置管理 在管理员菜单中点击"系统配置管理",可以配置:
- 罪恶值相关设置
- 红名相关设置
- 死亡减少配置:管理红名玩家死亡时减少的罪恶值 可设置固定数值 或百分比扣除
- GUI相关设置
- 死亡掉落配置:配置红名玩家死亡后损失的经济以及死亡后掉落物品的概率
- 击杀奖励配置:玩家击杀红名玩家时给予金币奖励 可自由关闭该功能
管理员命令
`/pkadmin <action> [target] [value]` 或 `/pkadm`
PK值管理命令
权限: OP(游戏管理员)
参数:
- `action`: 操作类型
- `set`: 设置玩家的PK值
- `add`: 增加玩家的PK值
- `reduce`: 减少玩家的PK值
- `view`: 查看玩家的PK值信息
- `clear`: 清除玩家的PK值
- `target`: (可选)目标玩家,不指定则操作自己
- `value`: (可选)PK值数量,`view` 和 `clear` 操作不需要此参数
示例:
/pkadmin set Steve 100 # 设置Steve的PK值为100
/pkadmin add Steve 50 # 给Steve增加50 PK值
/pkadmin reduce Steve 20 # 给Steve减少
20 PK值
/pkadmin view Steve # 查看Steve的PK值信息
/pkadmin clear Steve # 清除Steve的PK值
/pkadmin view # 查看自己的PK值信息
插件数据
插件会在 `plugins/PKSystem/` 目录下生成以下文件:
- `config.json`: 配置文件
- `playerData.json`: 玩家数据文件(存储所有玩家的PK值、击杀记录等)
罪恶值计算(默认参数)
1. 增加罪恶值:
- 击杀普通玩家: +100
- 击杀红名玩家: +50
2. 减少罪恶值:
- 死亡时: 减少当前罪恶值的5%(或固定数值)
- 定时衰减: 每 `60000` 毫秒减1点PK值
3. 红名判定:
- 罪恶值 ≥ 100→ 红名
- 罪恶值 < 100→ 白名
死亡掉落
1.当红名玩家死亡时,会根据配置扣除一定数量的金币:
- 比例模式: 扣除当前金币的指定百分比(例如:5%)
- 固定模式: 扣除固定数量的金币(例如:100金币)
2.当红名玩家死亡时会随机掉落自身物品 (最多5件)且无视游戏中的死亡不掉落设置
安全区
红名玩家身处安全区时 (注意这可能会与击杀奖励产生刷取金币的问题 我会在后续版本添加检测)
- 物品保护:死亡时不掉落物品
- 金币保护:死亡时不掉落金币
- 自定义消息:可配置保护提示消息
默认配置(配置可在游戏内自定义)
JSON:
{
"PKValue": {
"killPlayerPKValue": 100, // 击杀玩家增加的罪恶值
"killRedNamePKValue": 50, // 击杀红名玩家增加的罪恶值(较少)
"redNameThreshold": 100, // 达到此罪恶值成为红名
"maxPKValue": 1000, // 最大罪恶值
"decayInterval": 60000, // 罪恶值衰减间隔(毫秒)
"decayAmount": 1, // 每次衰减的罪恶值
"decayRequireOnline": true, // 是否需要在线才衰减
"deathReduceEnabled": true, // 是否启用死亡减少罪恶值
"deathReduceMode": "percentage", // 死亡减少模式: "percentage"=百分比, "fixed"=固定数值
"deathReducePercentage": 0.05, // 死亡减少罪恶值百分比(0.05=5%)
"deathReduceFixed": 10, // 死亡减少固定罪恶值数量
"deathReduceMin": 1, // 最小减少数量
"deathReduceMax": 50, // 最大减少数量
"deathReduceOnlyPositive": true // 只有罪恶值大于0时才减少
},
"RedName": {
"showTitle": true, // 是否显示Title提示
"titleDuration": 70, // Title显示时长(Tick)
"broadcastOnKill": true, // 击杀时是否全服公告
"broadcastOnRedName": true // 成为红名时是否全服公告
},
"GUI": {
"enabled": true,
"rankListSize": 10 // 排行榜显示数量
},
"DeathDrop": {
"enabled": true, // 是否启用红名死亡掉落经济
"mode": "rate", // 掉落模式: "rate"=比例, "fixed"=固定数值
"dropMoneyRate": 0.05, // 掉落金币比例(0.1=10%)
"dropMoneyFixed": 100, // 固定掉落金币数量
"dropEquipment": false, // 是否掉落物品
"dropEquipmentRate": 0.3 // 物品掉落概率
},
"Rewards": {
"enabled": true, // 是否启用击杀奖励
"killRedNameReward": true, // 击杀红名是否有奖励
"rewardMoney": 100, // 击杀红名奖励金币
"rewardItems": [ // 击杀红名奖励物品
{
"type": "minecraft:diamond",
"count": 1,
"chance": 0.5
}
]
},
"SafeZone": {
"enabled": true, // 是否启用安全区域保护
"safeZones": [], // 安全区域坐标 [{name,x1,y1,z1,x2,y2,z2,dimId}]
"protectItems": true, // 是否保护物品掉落
"protectMoney": true, // 是否保护金币掉落
"protectionMessage": "你在安全区域内死亡,物品和金币已受到保护!" // 自定义保护消息
}
}
API导出
- 基本用法示例
JavaScript:
const getPKValue = ll.imports("PKSystem", "getPKValue")
const setPKValue = ll.imports("PKSystem", "setPKValue")
const isRedName = ll.imports("PKSystem", "isRedName")
JavaScript:
const playerXuid = "1234567890"
const currentPK = getPKValue(playerXuid) // 获取罪恶值
const isRed = isRedName(playerXuid) // 检查是否红名
setPKValue(playerXuid, 150) // 设置罪恶值
- 1. 罪恶值管理API (4个函数)
JavaScript:
const getPKValue = ll.imports("PKSystem", "getPKValue")
const pkValue = getPKValue(xuid)
- 返回值: (Integer) 玩家的当前罪恶值
- 说明: 获取指定玩家的当前罪恶值
1.2 设置玩家罪恶值
JavaScript:
const setPKValue = ll.imports("PKSystem", "setPKValue")
const success = setPKValue(xuid, value)
- `xuid` (String) - 玩家的XUID标识符
- `value` (Integer) - 要设置的罪恶值 (0-1000)
- 返回值: (Integer) 设置后的实际罪恶值
- 说明: 设置指定玩家的罪恶值,会自动触发红名状态检查
1.3 增加玩家罪恶值
JavaScript:
const addPKValue = ll.imports("PKSystem", "addPKValue")
const newPK = addPKValue(xuid, amount)
- `xuid` (String) - 玩家的XUID标识符
- `amount` (Integer) - 要增加的罪恶值
- 返回值: (Integer) 增加后的罪恶值
- 说明: 为指定玩家增加罪恶值,会自动处理红名状态变化
1.4 减少玩家罪恶值
JavaScript:
const reducePKValue = ll.imports("PKSystem", "reducePKValue")
const newPK = reducePKValue(xuid, amount)
- `xuid` (String) - 玩家的XUID标识符
- `amount` (Integer) - 要减少的罪恶值
- 返回值:(Integer) 减少后的罪恶值
- 说明: 为指定玩家减少罪恶值,会自动处理白名状态恢复
---
- 2. 红名状态API (2个函数)
JavaScript:
const isRedName = ll.imports("PKSystem", "isRedName")
const redNameStatus = isRedName(xuid)
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (Boolean) true=红名, false=白名
- 说明: 检查指定玩家是否为红名状态
2.2 获取红名阈值
JavaScript:
const getRedNameThreshold = ll.imports("PKSystem", "getRedNameThreshold")
const threshold = getRedNameThreshold()
- 返回值: (Integer) 当前的红名阈值
- 说明: 获取成为红名所需的罪恶值阈值
---
- 3. 玩家数据API (3个函数)
JavaScript:
const getPlayerData = ll.imports("PKSystem", "getPlayerData")
const playerInfo = getPlayerData(xuid)
- 返回值: (Object) 玩家数据对象,包含以下字段:
JSON:
{
pkValue: 100, // 当前罪恶值
lastKillTime: 1640995200000, // 最后击杀时间戳
killCount: 15, // 总击杀数
deathCount: 8, // 死亡次数
redNameTime: 1640995200000, // 成为红名的时间戳
isRedName: true, // 是否为红名
name: "PlayerName" // 玩家名称
}
3.2 获取玩家击杀历史
JavaScript:
const getKillHistory = ll.imports("PKSystem", "getKillHistory")
const history = getKillHistory(xuid, limit)
- `xuid` (String) - 玩家的XUID标识符
- `limit` (Integer) - 返回记录数量限制,默认10条
- 返回值: (Array) 击杀历史记录数组
```javascript
JavaScript:
[
{
victim: "VictimName", // 被击杀者名称
time: 1640995200000, // 击杀时间戳
pkIncrease: 100 // 此次击杀增加的罪恶值
}
]
3.3 获取玩家统计信息
JavaScript:
const getPlayerStats = ll.imports("PKSystem", "getPlayerStats")
const stats = getPlayerStats(xuid)
- 返回值: (Object) 玩家统计信息
JavaScript:
{
pkValue: 100, // 当前罪恶值
killCount: 15, // 击杀数
deathCount: 8, // 死亡数
isRedName: true, // 是否红名
kdr: "1.88" // 击杀死亡比 (字符串格式)
}
---
- 4. 排行榜API (2个函数)
JavaScript:
const getPKRankList = ll.imports("PKSystem", "getPKRankList")
const rankList = getPKRankList(limit)
- 返回值: (Array) 排行榜数组,按罪恶值降序排列
JavaScript:
[
{
xuid: "1234567890", // 玩家XUID
name: "PlayerName", // 玩家名称
pkValue: 500, // 罪恶值
killCount: 25, // 击杀数
isRedName: true // 是否红名
}
]
4.2 获取红名玩家列表
JavaScript:
const getRedNameList = ll.imports("PKSystem", "getRedNameList")
const redNamePlayers = getRedNameList()
- 返回值: (Array) 所有红名玩家数组
JavaScript:
[
{
xuid: "1234567890", // 玩家XUID
name: "PlayerName", // 玩家名称
pkValue: 500, // 罪恶值
killCount: 25, // 击杀数
redNameTime: 1640995200000 // 成为红名的时间戳
}
]
---
- 5. 配置管理API (2个函数)
JavaScript:
const getConfig = ll.imports("PKSystem", "getConfig")
const config = getConfig()
- 返回值: (Object) 完整的系统配置对象
JavaScript:
{
PKValue: {
killPlayerPKValue: 100, // 击杀玩家增加罪恶值
killRedNamePKValue: 50, // 击杀红名增加罪恶值
redNameThreshold: 100, // 红名阈值
maxPKValue: 1000, // 最大罪恶值
decayInterval: 60000, // 衰减间隔
decayAmount: 1, // 衰减数量
deathReduceEnabled: true, // 启用死亡减少
deathReduceMode: "percentage", // 减少模式
deathReducePercentage: 0.05, // 减少百分比
deathReduceFixed: 10, // 固定减少数量
deathReduceMin: 1, // 最小减少
deathReduceMax: 50, // 最大减少
deathReduceOnlyPositive: true // 只减少正值
},
RedName: {
showTitle: true, // 显示Title
titleDuration: 70, // Title时长
broadcastOnKill: true, // 击杀公告
broadcastOnRedName: true // 红名公告
},
DeathDrop: {
enabled: true, // 启用死亡掉落
mode: "rate", // 掉落模式
dropMoneyRate: 0.05, // 金币掉落比例
dropMoneyFixed: 100, // 固定掉落金币
dropEquipment: false, // 掉落装备
dropEquipmentRate: 0.3 // 装备掉落概率
},
Rewards: {
enabled: true, // 启用奖励
killRedNameReward: true, // 击杀红名奖励
rewardMoney: 100, // 奖励金币
rewardItems: [] // 奖励物品
},
SafeZone: {
enabled: true, // 启用安全区域
safeZones: [], // 安全区域列表
protectItems: true, // 保护物品
protectMoney: true, // 保护金币
protectionMessage: "..." // 保护消息
}
}
5.2 更新系统配置
JavaScript:
const updateConfig = ll.imports("PKSystem", "updateConfig")
const success = updateConfig(newConfig)
```
- 返回值: (Boolean) 是否更新成功
- 说明: 更新系统配置,支持部分配置更新
- 示例:
JavaScript:
// 只更新罪恶值相关配置
updateConfig({
PKValue: {
killPlayerPKValue: 150,
redNameThreshold: 120
}
})
```
- 6. 工具函数API (2个函数)
JavaScript:
const formatPKValue = ll.imports("PKSystem", "formatPKValue")
const formattedValue = formatPKValue(pkValue)
```
- 返回值: (String) 格式化后的罪恶值字符串
- 说明: 将罪恶值格式化为适合显示的字符串
6.2 格式化玩家状态
JavaScript:
const formatPlayerStatus = ll.imports("PKSystem", "formatPlayerStatus")
const status = formatPlayerStatus(xuid)
```
- 返回值: (String) 玩家状态字符串 ("红名" 或 "白名")
- 说明: 获取玩家的状态描述文本
---
- 7. 安全区域API (3个函数)
JavaScript:
const isPlayerInSafeZone = ll.imports("PKSystem", "isPlayerInSafeZone")
const inSafeZone = isPlayerInSafeZone(player)
```
- 返回值: (Boolean) 是否在安全区域内
- 说明: 检查玩家当前位置是否在安全区域内
7.2 获取安全区域列表
JavaScript:
const getSafeZones = ll.imports("PKSystem", "getSafeZones")
const safeZones = getSafeZones()
```
- 返回值: (Array) 安全区域列表
JavaScript:
[
{
name: "出生点安全区", // 区域名称
x1: 100, y1: 60, z1: 100, // 区域坐标1
x2: 200, y2: 120, z2: 200, // 区域坐标2
dimId: 0 // 维度ID
}
]
```
7.3 添加安全区域
JavaScript:
const addSafeZone = ll.imports("PKSystem", "addSafeZone")
const success = addSafeZone(safeZone)
```
JavaScript:
{
name: "新安全区",
x1: 100, y1: 60, z1: 100,
x2: 200, y2: 120, z2: 200,
dimId: 0
}
```
- 说明: 添加新的安全区域
---
- 8. 奖励系统API (3个函数)
JavaScript:
const giveKillRedNameReward = ll.imports("PKSystem", "giveKillRedNameReward")
giveKillRedNameReward(killer)
```
- 返回值: 无
- 说明: 为击杀红名的玩家发放奖励
8.2 处理红名死亡金币掉落
JavaScript:
const handleRedNameDeathDropMoney = ll.imports("PKSystem", "handleRedNameDeathDropMoney")
handleRedNameDeathDropMoney(player)
```
- 返回值: 无
- 说明: 处理红名玩家死亡时的金币掉落
8.3 处理红名死亡装备掉落
JavaScript:
const handleRedNameEquipmentDrop = ll.imports("PKSystem", "handleRedNameEquipmentDrop")
handleRedNameEquipmentDrop(player)
```
- 返回值: 无
- 说明: 处理红名玩家死亡时的装备掉落
---
9. 版本信息API (2个函数)
9.1 获取插件版本
JavaScript:
const getVersion = ll.imports("PKSystem", "getVersion")
const version = getVersion()
```
- **返回值**: (String) 插件版本号
- **说明**: 获取PKSystem插件的当前版本
9.2 获取插件名称
JavaScript:
const getPluginName = ll.imports("PKSystem", "getPluginName")
const name = getPluginName()
```
- **返回值**: (String) 插件名称 ("PKSystem")
- **说明**: 获取插件的名称
---
使用示例
完整示例:创建PK统计插件
JavaScript:
// 导入所需的API
const getPKValue = ll.imports("PKSystem", "getPKValue")
const getPlayerStats = ll.imports("PKSystem", "getPlayerStats")
const getPKRankList = ll.imports("PKSystem", "getPKRankList")
const isRedName = ll.imports("PKSystem", "isRedName")
// 注册查看PK信息命令
mc.regPlayerCmd("pkinfo", "查看PK信息", (player, args) => {
const xuid = player.xuid
const stats = getPlayerStats(xuid)
if (stats) {
const status = isRedName(xuid) ? "§c红名" : "§a白名"
player.tell(`§6=== 你的PK信息 ===`)
player.tell(`§e罪恶值: §f${stats.pkValue}`)
player.tell(`§e状态: ${status}`)
player.tell(`§e击杀数: §f${stats.killCount}`)
player.tell(`§e死亡数: §f${stats.deathCount}`)
player.tell(`§e击杀比: §f${stats.kdr}`)
} else {
player.tell("§c无法获取PK信息")
}
})
// 注册PK排行榜命令
mc.regPlayerCmd("pkrank", "查看PK排行榜", (player, args) => {
const rankList = getPKRankList(10)
player.tell("§6=== PK排行榜 (前10名) ===")
rankList.forEach((entry, index) => {
const rank = index + 1
const status = entry.isRedName ? "§c红名" : "§a白名"
player.tell(`§e${rank}. §f${entry.name} §7- §f${entry.pkValue}PK ${status}`)
})
})
// 监听玩家PK值变化
const originalSetPKValue = ll.imports("PKSystem", "setPKValue")
function monitorPKChange(xuid, newValue) {
const result = originalSetPKValue(xuid, newValue)
// 记录PK值变化日志
const player = mc.getPlayer(xuid)
if (player) {
log(`玩家 ${player.realName} 的PK值变更为: ${result}`)
}
return result
}