SCP: Secret Laboratory 服务器的 等级系统 插件,基于 LabAPI 框架开发。提供完整的经验、等级、统计功能。
- 激活发电机
- 击杀玩家
- 对SCP造成伤害(百分比经验)
- 逃离设施
- 辅助击杀:非最后一击也能获得经验
- 连杀奖励:双杀、三杀、四杀、五杀递增奖励
- 首杀奖励:首次击杀某角色类型额外奖励
- SCP击杀差异化:SCP击杀人类使用不同经验值
- 存活奖励:每2分钟自动奖励存活玩家
- 拘留D级:设施警卫拘留D级获得经验
- 解除手铐:互助解锁给予经验
- 3种升级曲线:线性、指数、自定义
- 等级上限:可配置最高等级
- 等级前缀:玩家名称前显示等级(可配置开关)
- 自动升级:经验满足自动升级并提示
- 实时显示:等级、当前经验、所需经验
- 智能更新:数据变化检测,减少不必要刷新
- 击杀提示:全局击杀广播(数量限制)
- 经验提示:获得经验时的浮动提示
- 完全可配置:位置、大小、字体、显示时长
- 击杀/死亡:总击杀数、总死亡数、K/D比率
- 游戏数据:游戏局数、游戏时长
- 连杀记录:最高连杀记录
- 角色统计:各角色类型击杀统计
- MVP展示:回合结束展示本局MVP
- 命令查询:
.stats命令查看统计
- LabAPI: 1.1.7 或更高版本
- HintServiceMeow: 5.5.0 或更高版本
- 确保服务器已安装 LabAPI 和 HintServiceMeow
- 将
LevelUp.dll放入LabAPI/plugins/目录 - 启动服务器,插件会自动生成配置文件
- 关闭服务器,按需修改配置文件
- 再次启动服务器,插件生效
首次运行会在 LabAPI/plugins/LevelUp/ 目录生成:
config.yml- 主配置文件translations.yml- 翻译文件data.yml- 玩家数据存储
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Debug |
bool | false |
调试模式,输出详细日志 |
EnableNamePrefix |
bool | true |
是否在玩家名称前显示等级前缀 |
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
CurveType |
enum | Linear |
升级曲线类型:Linear(线性)/ Exponential(指数)/ Custom(自定义) |
basic |
int | 100 |
线性公式基础值 |
overflow |
int | 5 |
线性公式每级增长 |
extra |
int | 50 |
线性公式额外值 |
ExponentialRate |
float | 0.1 |
指数公式增长率(例如0.1表示每级增长10%) |
MaxLevel |
int | 0 |
等级上限(0表示无限制) |
线性公式:所需经验 = basic + (当前等级 - 1) × overflow + extra
指数公式:所需经验 = basic × (1 + rate)^当前等级
| 配置项 | 默认值 | 说明 |
|---|---|---|
ActivatingGenerator |
20 |
激活发电机 |
KillingPlayer |
10 |
击杀玩家 |
ScpKillHuman |
15 |
SCP击杀人类 |
times |
1.0 |
SCP伤害经验倍率 |
damageless5 |
5 |
对SCP伤害<5%时的基础经验 |
EscapedFacility |
20 |
逃离设施 |
AssistKill |
5 |
辅助击杀 |
HeadshotBonus |
5 |
爆头击杀额外奖励 |
DoubleKill |
5 |
双杀奖励 |
TripleKill |
10 |
三杀奖励 |
QuadKill |
20 |
四杀奖励 |
PentaKill |
30 |
五杀及以上奖励 |
MultiKillWindow |
10 |
连杀时间窗口(秒) |
HealAlly |
3 |
治疗队友 |
FlashbangHit |
2 |
闪光弹命中敌人(每个) |
GrenadeHit |
5 |
手榴弹命中敌人(每个) |
CuffDClass |
8 |
拘留D级人员 |
FreeCuffed |
5 |
解除手铐 |
FirstKillBonus |
3 |
首次击杀某角色类型奖励 |
SurvivalInterval |
120 |
存活时间奖励间隔(秒) |
SurvivalReward |
2 |
存活时间奖励经验 |
| 配置项 | 默认值 | 说明 |
|---|---|---|
IsEnabled |
true |
是否启用等级显示 |
FontSize |
20 |
字体大小 |
YCoordinate |
1000 |
Y轴坐标(像素) |
XCoordinate |
0 |
X轴坐标(像素) |
| 配置项 | 默认值 | 说明 |
|---|---|---|
IsEnabled |
true |
是否启用击杀提示 |
FontSize |
20 |
字体大小 |
YCoordinate |
300 |
Y轴坐标(像素) |
XCoordinate |
700 |
X轴坐标(像素) |
MaxDisplayMessages |
5 |
最多显示消息数量 |
| 配置项 | 默认值 | 说明 |
|---|---|---|
gotexp |
3.0 |
获得经验提示显示时间(秒) |
lvlUpTip |
3.0 |
升级提示显示时间(秒) |
killmessage |
3.0 |
击杀提示显示时间(秒) |
翻译文件支持自定义所有提示文本,支持以下占位符:
{level}- 当前等级{exp}- 经验值{roleColor}- 角色颜色(Hex){killer}- 击杀者昵称{target}- 被击杀者昵称{atkroleColor}- 击杀者角色颜色{tgtroleColor}- 被击杀者角色颜色{SCP}- SCP角色名称{damagepercent}- 伤害百分比
| 指令 | 别名 | 权限 | 说明 |
|---|---|---|---|
.stats |
.mystats .status |
所有玩家 | 查看自己的统计数据 |
.stats <玩家名> |
- | 所有玩家 | 查看指定玩家的统计数据(支持模糊匹配) |
示例:
.stats # 查看自己的统计
.stats Player # 查看名称包含"Player"的玩家统计
输出内容:
- 等级和经验进度
- 击杀/死亡/K/D比率
- 最高连杀记录
- 游戏局数和时长
- 击杀最多的角色Top 5
对目标造成伤害但非最后一击的玩家也能获得辅助经验。系统会追踪所有对目标造成伤害的玩家,在目标死亡时给予奖励。
在10秒(可配置)时间窗口内连续击杀,可获得额外经验:
- 双杀:5经验
- 三杀:10经验
- 四杀:20经验
- 五杀及以上:30经验
每个玩家首次击杀某种角色类型时,额外获得首杀奖励。例如:首次击杀MTF、首次击杀SCP-173等。
每隔2分钟(可配置),所有存活的玩家自动获得经验奖励。
适合长期游戏,升级难度稳定增长。
- 例:1级→2级需100经验,2级→3级需105经验,3级→4级需110经验...
适合快速初期、困难后期的游戏体验。
- 例(rate=0.1):1级→2级需100经验,2级→3级需110经验,3级→4级需121经验...
所有统计数据持久化保存在 data.yml 中,包括:
- 跨回合累计数据(总击杀、总死亡、总时长等)
- 历史最高记录(最高连杀)
- 详细分类统计(各角色击杀数)
数据在玩家离开服务器时自动保存。
- Visual Studio 2019 或更高版本
- .NET Framework 4.8.1 SDK
- Git
- 克隆仓库
git clone https://github.com/whystars/LevelUp.git
cd LevelUp- 准备依赖项
创建 using/ 目录并放入以下DLL(从游戏服务器获取):
LabApi.dllHintServiceMeow.dllAssembly-CSharp.dllAssembly-CSharp-firstpass.dllMirror.dllPooling.dllUnityEngine.dllUnityEngine.CoreModule.dllUnityEngine.PhysicsModule.dllUnityEngine.UI.dll
- 还原NuGet包
nuget restore LevelUp.sln或在Visual Studio中右键解决方案 → "还原NuGet程序包"
-
选择
Release配置,生成项目 -
产物位于
bin/Release/LevelUp.dll
| 版本 | LabAPI | SCP:SL | 说明 |
|---|---|---|---|
| v1.0.0 | 1.1.7+ | 14.x | 初始发布版本,包含完整的经验、等级、统计系统 |
如果遇到问题或有功能建议,请在 Issues 页面提交。
本项目基于 GPL-3.0 许可证开源,详见 LICENSE。
- LabAPI - 提供框架支持
- HintServiceMeow - 提供Hint服务
- SCP:SL 中文社区的支持和反馈