PKSystem-完善的网游红名罪恶值系统丨红名机制丨GUI管理丨排行榜丨死亡物品掉落丨安全区丨

原创 LSE PKSystem-完善的网游红名罪恶值系统丨红名机制丨GUI管理丨排行榜丨死亡物品掉落丨安全区丨 2.0

请登录后获取
版权类型
原创
版权链接
#
语言支持
中文(简体)
适配版本(基岩)
  1. 最新版本
  2. 全版本
PKSystem
一个BDS服务端的网游红名插件

该插件实现了完整的罪恶值系统,包括罪恶值管理、红名机制、罪恶值衰减、死亡掉落经济与物品功能、安全区并提供完善的GUI表单系统,无需使用代码编辑器修改插件配置,方便玩家和管理员使用。

安装
1.下载插件解压到plugins文件夹 此时你的文件夹应该有PKSystem文件夹
2.重启服务端或执行ll load PKSystem


使用
请详细查看插件介绍

/pk打开主表单:
1. 查看罪恶值: 输入 `/pk` 命令打开主菜单,可以查看:
- 当前罪恶值和状态(红名/白名)
- 罪恶值排行榜
- 自己的击杀历史
- 当前红名玩家列表
ScreenShot_2025-12-27_134002_279.webp


2. 罪恶值机制:
- 击杀其他玩家会增加罪恶值
- 击杀红名玩家增加的罪恶值较少(可在配置中设置)
- 罪恶值会随时间自动衰减
- 死亡时会减少少量罪恶值(管理员可自定义)

3. 红名机制:
- 当罪恶值达到阈值时,自动成为红名
- 红名玩家死亡时会掉落金币(如果启用)
- 红名玩家死亡时会概率掉落自身物品(该功能无视游戏死亡不掉落的设置)
- 罪恶值降至阈值以下时,自动恢复白名
/pkadm管理员指令:
ScreenShot_2025-12-27_134026_582.webp

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件)且无视游戏中的死亡不掉落设置
ScreenShot_2025-12-27_133701_200.webp


安全区
红名玩家身处安全区时 (注意这可能会与击杀奖励产生刷取金币的问题 我会在后续版本添加检测)
- 物品保护:死亡时不掉落物品
- 金币保护:死亡时不掉落金币
- 自定义消息:可配置保护提示消息


默认配置(配置可在游戏内自定义)
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导出
  • 基本用法示例
// 导入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个函数)
1.1 获取玩家罪恶值
JavaScript:
const getPKValue = ll.imports("PKSystem", "getPKValue")
const pkValue = getPKValue(xuid)
- 参数: `xuid` (String) - 玩家的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个函数)
2.1 检查玩家是否为红名

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个函数)
3.1 获取玩家完整数据
JavaScript:
const getPlayerData = ll.imports("PKSystem", "getPlayerData")
const playerInfo = getPlayerData(xuid)
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (Object) 玩家数据对象,包含以下字段:

JSON:
{
      pkValue: 100,           // 当前罪恶值
      lastKillTime: 1640995200000, // 最后击杀时间戳
      killCount: 15,          // 总击杀数
      deathCount: 8,          // 死亡次数
      redNameTime: 1640995200000, // 成为红名的时间戳
      isRedName: true,        // 是否为红名
      name: "PlayerName"      // 玩家名称
  }
- 说明: 获取玩家的完整PK数据信息
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)
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (Object) 玩家统计信息

JavaScript:
 {
      pkValue: 100,        // 当前罪恶值
      killCount: 15,       // 击杀数
      deathCount: 8,       // 死亡数
      isRedName: true,     // 是否红名
      kdr: "1.88"         // 击杀死亡比 (字符串格式)
  }
- 说明: 获取玩家的统计数据摘要
---
  • 4. 排行榜API (2个函数)
4.1 获取罪恶值排行榜
JavaScript:
const getPKRankList = ll.imports("PKSystem", "getPKRankList")
const rankList = getPKRankList(limit)
- 参数: `limit` (Integer) - 返回排行数量,默认10名
- 返回值: (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个函数)
5.1 获取系统配置
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)
```
- 参数: `newConfig` (Object) - 新的配置对象(部分更新)
- 返回值: (Boolean) 是否更新成功
- 说明: 更新系统配置,支持部分配置更新
- 示例:

JavaScript:
// 只更新罪恶值相关配置
  updateConfig({
      PKValue: {
          killPlayerPKValue: 150,
          redNameThreshold: 120
      }
  })
  ```
---
  • 6. 工具函数API (2个函数)
6.1 格式化罪恶值显示
JavaScript:
const formatPKValue = ll.imports("PKSystem", "formatPKValue")
const formattedValue = formatPKValue(pkValue)
```
- 参数: `pkValue` (Integer) - 罪恶值
- 返回值: (String) 格式化后的罪恶值字符串
- 说明: 将罪恶值格式化为适合显示的字符串
6.2 格式化玩家状态
JavaScript:
const formatPlayerStatus = ll.imports("PKSystem", "formatPlayerStatus")
const status = formatPlayerStatus(xuid)
```
- 参数: `xuid` (String) - 玩家的XUID标识符
- 返回值: (String) 玩家状态字符串 ("红名" 或 "白名")
- 说明: 获取玩家的状态描述文本
---
  • 7. 安全区域API (3个函数)
7.1 检查玩家是否在安全区域
JavaScript:
const isPlayerInSafeZone = ll.imports("PKSystem", "isPlayerInSafeZone")
const inSafeZone = isPlayerInSafeZone(player)
```
- 参数: `player` (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)
```
- 参数: `safeZone` (Object) - 安全区域配置对象
JavaScript:
  {
      name: "新安全区",
      x1: 100, y1: 60, z1: 100,
      x2: 200, y2: 120, z2: 200,
      dimId: 0
  }
  ```
- 返回值: (Boolean) 是否添加成功
- 说明: 添加新的安全区域
---
  • 8. 奖励系统API (3个函数)
8.1 给予击杀红名奖励
JavaScript:
const giveKillRedNameReward = ll.imports("PKSystem", "giveKillRedNameReward")
giveKillRedNameReward(killer)
```
- 参数: `killer` (Player) - 击杀者玩家对象
- 返回值: 无
- 说明: 为击杀红名的玩家发放奖励
8.2 处理红名死亡金币掉落
JavaScript:
const handleRedNameDeathDropMoney = ll.imports("PKSystem", "handleRedNameDeathDropMoney")
handleRedNameDeathDropMoney(player)
```
- 参数: `player` (Player) - 死亡的红名玩家对象
- 返回值: 无
- 说明: 处理红名玩家死亡时的金币掉落
8.3 处理红名死亡装备掉落
JavaScript:
const handleRedNameEquipmentDrop = ll.imports("PKSystem", "handleRedNameEquipmentDrop")
handleRedNameEquipmentDrop(player)
```
- 参数: `player` (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
}
  • ScreenShot_2025-12-27_134026_582.webp
    ScreenShot_2025-12-27_134026_582.webp
    8.3 KB · 查看: 24
作者
剑下三尺凝霜
价格
15.00金粒
下载
11
查看
507
首次发布
最后更新

评分

0.00 星 0 次评分

最新更新

  1. 导出api 新增大量功能

    1‘导出api供其他插件使用’ 2.增加红名玩家死亡掉落物品 3.美化我的罪恶值信息表单 4.完善管理功能 5.增加安全区功能
后退
顶部 底部