Plague 插件开发文档
📖 概述
Plague 辅助程序提供了一套灵活的 扩展插件系统,允许开发者通过简单的文本配置或获取码机制,
定制悬浮窗的 UI 样式、绘制参数(方框、骨骼、血量、颜色等)以及
布局行为。插件以 .ptr 文件形式存放在 /storage/emulated/0/扩展插件ptr/
目录下,程序启动时自动加载当前激活的插件。
本文档将引导您从零开始创建自己的插件,涵盖 UISettings 所有可配置项、 绘制参数 的调优方法,以及如何通过 获取码 实现云端分享。
/storage/emulated/0/扩展插件ptr/ ·
扩展名: .ptr
🧩 系统架构
插件系统的核心位于 扩展.h 头文件中,主要包含以下组件:
UISettings结构体 —— 存储所有 UI 样式参数(颜色、尺寸、圆角、透明度等)。序列化UISettings()—— 将当前 UI 设置序列化为纯文本字符串。反序列化UISettings()—— 从文本字符串恢复 UI 设置。保存当前插件()—— 将当前设置写入.ptr文件。加载指定插件()—— 从.ptr文件加载设置,支持获取码模式。列出插件文件()—— 枚举插件目录下的所有.ptr文件。
插件文件支持两种模式:
- 普通模式: 文件内容为纯文本键值对,直接存储所有配置。
- 获取码模式: 文件内容为
设备码|获取码,程序会验证设备码后从云端下载实际配置。
⚡ 快速开始
创建一个最简单的插件只需要三步:
- 在
/storage/emulated/0/扩展插件ptr/目录下新建一个.ptr文件,例如my_plugin.ptr。 - 在文件中写入你想要的配置(参考下方参数表)。
- 在程序悬浮窗的「扩展插件」页面中,点击该插件名称即可加载。
一个最简的插件文件示例:
# my_plugin.ptr
window_width=960
window_height=680
window_rounding=24
accent=#eb5050
text_primary=#f0f0f5
card_bg=#2d2d3d
particle_enabled=1
保存后,在悬浮窗中切换到「扩展插件」页面,点击 my_plugin.ptr 即可应用。
📐 UISettings 完整参数表
UISettings 结构体控制着悬浮窗的 外观与交互。
所有参数均可在插件文件中通过 键=值 的形式设置。
| 键名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| window_width | float | 920.0 | 悬浮窗宽度 |
| window_height | float | 640.0 | 悬浮窗高度 |
| window_rounding | float | 20.0 | 窗口圆角半径 |
| window_bg_alpha | float | 0.92 | 背景透明度 (0~1) |
| window_bg_color | RGBA | #202028 | 背景颜色 (十六进制或R,G,B,A) |
| nav_width_ratio | float | 0.28 | 左侧导航栏宽度比例 |
| nav_item_height | float | 60.0 | 导航项高度 |
| nav_item_rounding | float | 20.0 | 导航项圆角 |
| card_bg | hex | #2d2d37 | 卡片背景色 |
| card_hover | hex | #3c3c48 | 卡片悬停色 |
| card_height | float | 180.0 | 卡片高度 |
| text_primary | hex | #f0f0f5 | 主文字颜色 |
| text_secondary | hex | #aaaab4 | 次要文字颜色 |
| accent | hex | #eb5050 | 强调色(按钮、滑块等) |
| track_inactive | hex | #464652 | 滑块轨道未激活色 |
| slider_active | hex | #eb5050 | 滑块激活色 |
| slider_inactive | hex | #8c8c96 | 滑块未激活色 |
| slider_fill | hex | #eb5050b4 | 滑块填充色 |
| slider_height | float | 8.0 | 滑块轨道高度 |
| slider_grab_radius | float | 12.0 | 滑块手柄半径 |
| segment_bg | hex | #3a3a46 | 分段控制器背景 |
| segment_text_unselected | hex | #aaaab9 | 分段未选中文字色 |
| segment_text_selected | hex | #f0f0f5 | 分段选中文字色 |
| dropdown_bg | hex | #32323e | 下拉菜单背景 |
| button_bg | hex | #373743 | 按钮背景 |
| button_hover | hex | #464655 | 按钮悬停色 |
| button_active | hex | #2d2d38 | 按钮按下色 |
| button_rounding | float | 8.0 | 按钮圆角 |
| button_height | float | 44.0 | 按钮高度 |
| separator | hex | #3c3c48 | 分割线颜色 |
| switch_width | float | 50.0 | 开关宽度 |
| switch_height | float | 28.0 | 开关高度 |
| switch_rounding | float | 14.0 | 开关圆角 |
| particle_enabled | float | 1.0 | 粒子效果开关 (0/1) |
#rrggbb 或 #rrggbbaa,
也支持 R,G,B,A 格式(0~255)。示例:accent=#eb5050 或 accent=235,80,80,255。
🎨 绘制参数
除了 UI 样式,插件还可以控制 透视绘制 的各项参数,
包括颜色、粗细、偏移、样式等。这些参数在 扩展.h 的 反序列化UISettings() 中被解析。
📏 粗细 & 样式
| 键名 | 类型 | 默认 | 说明 |
|---|---|---|---|
| draw_方框粗细 | float | 1.0 | 方框边框粗细 |
| draw_射线粗细 | float | 1.0 | 射线粗细 |
| draw_骨骼粗细 | float | 1.0 | 骨骼线条粗细 |
| draw_血条样式 | int | 0 | 0=默认, 1=文字, 2=圆圈 |
| draw_手持绘图样式 | int | 0 | 0=文字, 1=图片 |
| draw_骨骼距离限制 | float | 300.0 | 骨骼绘制最大距离 |
📍 位置偏移
| 键名 | 类型 | 默认 | 说明 |
|---|---|---|---|
| draw_名字偏移X | float | 0.0 | 名字 X 偏移 |
| draw_名字偏移Y | float | 0.0 | 名字 Y 偏移 |
| draw_距离偏移X | float | 0.0 | 距离 X 偏移 |
| draw_距离偏移Y | float | 0.0 | 距离 Y 偏移 |
| draw_血量偏移X | float | 0.0 | 血量 X 偏移 |
| draw_血量偏移Y | float | 0.0 | 血量 Y 偏移 |
| draw_手持偏移X | float | 0.0 | 手持 X 偏移 |
| draw_手持偏移Y | float | 0.0 | 手持 Y 偏移 |
| draw_射线偏移Y | float | 0.0 | 射线 Y 偏移 |
| draw_队伍标识偏移X | float | 0.0 | 队伍标识 X 偏移 |
| draw_队伍标识偏移Y | float | 0.0 | 队伍标识 Y 偏移 |
🎯 颜色配置
颜色值格式为 R,G,B,A(0~255),例如 255,80,80,255。
| 键名 | 说明 |
|---|---|
| draw_方框颜色_人机 | 人机方框颜色 |
| draw_射线颜色_人机 | 人机射线颜色 |
| draw_骨骼颜色_人机 | 人机骨骼颜色 |
| draw_血量颜色_人机 | 人机血量颜色 |
| draw_距离颜色_人机 | 人机距离颜色 |
| draw_名称颜色_人机 | 人机名称颜色 |
| draw_方框颜色_真人 | 真人方框颜色 |
| draw_射线颜色_真人 | 真人射线颜色 |
| draw_骨骼颜色_真人 | 真人骨骼颜色 |
| draw_血量颜色_真人 | 真人血量颜色 |
| draw_距离颜色_真人 | 真人距离颜色 |
| draw_名称颜色_真人 | 真人名称颜色 |
| draw_手持颜色 | 手持文字/图标颜色 |
📄 插件文件格式
普通模式
文件内容为纯文本,每行一个 键=值 对,支持 # 开头的注释。
# 我的插件配置
window_width=1000
window_height=700
accent=#d06060
draw_方框粗细=1.5
draw_方框颜色_真人=255,80,80,255
draw_骨骼颜色_真人=80,200,255,255
获取码模式
文件内容为 设备码|获取码,程序会验证设备码后从云端拉取实际配置。
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6|ABCDEF123456
在悬浮窗的「扩展插件」页面中,您可以直接输入获取码来加载云端插件,无需手动编辑文件。
🧪 教程:悬浮窗插件制作
本教程将指导您从零开始创建一个完整的悬浮窗样式插件,涵盖 颜色主题、 尺寸调整 和 高级样式。
第一步:创建插件文件
在 /storage/emulated/0/扩展插件ptr/ 目录下新建 dark_theme.ptr。
第二步:编写基础配置
# dark_theme.ptr — 暗色主题
window_width=920
window_height=640
window_rounding=24
window_bg_alpha=0.94
window_bg_color=#181822
nav_width_ratio=0.26
nav_item_height=58
nav_item_rounding=18
card_bg=#28283a
card_hover=#3a3a50
card_height=170
text_primary=#eaeaf2
text_secondary=#9a9ab0
accent=#e06060
track_inactive=#3a3a4a
slider_active=#e06060
slider_inactive=#808096
slider_fill=#e06060b4
segment_bg=#2e2e40
segment_text_unselected=#9a9ab0
segment_text_selected=#f0f0f8
button_bg=#2e2e40
button_hover=#404058
button_active=#222236
button_rounding=8
button_height=44
switch_width=48
switch_height=26
switch_rounding=13
particle_enabled=1
第三步:添加绘制参数
# 继续追加绘制参数
draw_方框粗细=1.2
draw_射线粗细=1.0
draw_骨骼粗细=1.0
draw_血条样式=0
draw_手持绘图样式=1
draw_骨骼距离限制=350
draw_名字偏移X=0
draw_名字偏移Y=0
draw_距离偏移X=0
draw_距离偏移Y=6
draw_血量偏移X=0
draw_血量偏移Y=0
draw_手持偏移X=0
draw_手持偏移Y=4
draw_射线偏移Y=0
draw_队伍标识偏移X=0
draw_队伍标识偏移Y=0
draw_方框颜色_人机=80,200,80,200
draw_射线颜色_人机=80,200,80,150
draw_骨骼颜色_人机=80,200,80,180
draw_血量颜色_人机=0,255,0,255
draw_距离颜色_人机=200,200,200,255
draw_名称颜色_人机=200,200,200,255
draw_方框颜色_真人=255,80,80,220
draw_射线颜色_真人=255,80,80,150
draw_骨骼颜色_真人=80,200,255,200
draw_血量颜色_真人=0,255,0,255
draw_距离颜色_真人=255,255,255,255
draw_名称颜色_真人=255,255,255,255
draw_手持颜色=255,255,255,255
第四步:加载插件
- 启动 Plague 辅助程序,打开悬浮窗。
- 切换到「扩展插件」页面。
- 在插件列表中找到
dark_theme.ptr,点击即可加载。 - 悬浮窗样式和绘制参数将立即生效。
👁️ 教程:透视插件配置
透视(ESP)功能是 Plague 的核心能力之一。通过插件,您可以精细控制 方框、骨骼、血量、射线 等元素的显示样式。本教程将帮助您调出清晰、美观的透视效果。
基础透视配置
在插件文件中添加以下参数,开启基础透视:
# 基础透视配置 draw_方框粗细=1.2 draw_射线粗细=1.0 draw_骨骼粗细=1.2 draw_血条样式=0 # 0=默认条, 1=文字, 2=圆圈 draw_手持绘图样式=1 # 1=图片, 0=文字 draw_骨骼距离限制=350 # 人机颜色(绿色系) draw_方框颜色_人机=80,220,80,200 draw_骨骼颜色_人机=80,220,80,180 draw_血量颜色_人机=0,255,0,255 # 真人颜色(红色系) draw_方框颜色_真人=255,80,80,220 draw_骨骼颜色_真人=80,200,255,200 draw_血量颜色_真人=0,255,0,255
进阶视觉优化
方案一:赛博朋克风格
draw_方框颜色_真人=0,255,255,220 # 青蓝 draw_骨骼颜色_真人=255,0,255,200 # 品红 draw_方框颜色_人机=0,200,100,200 # 翠绿 draw_骨骼颜色_人机=0,200,100,180
方案二:极简黑白
draw_方框颜色_真人=255,255,255,200
draw_骨骼颜色_真人=200,200,200,180
draw_方框颜色_人机=180,180,180,180
draw_骨骼颜色_人机=150,150,150,150
draw_血量颜色_真人=255,255,255,255
方案三:高对比度(竞技向)
draw_方框颜色_真人=255,50,50,255
draw_骨骼颜色_真人=255,200,50,255
draw_方框颜色_人机=50,200,50,200
draw_骨骼颜色_人机=50,200,50,180
draw_射线颜色_真人=255,50,50,120
draw_射线颜色_人机=50,200,50,100
微调各元素的屏幕位置,使其在您的设备上显示更协调:
# 偏移调整(单位:像素) draw_名字偏移X=0 draw_名字偏移Y=-6 # 名字上移 draw_距离偏移X=0 draw_距离偏移Y=6 # 距离下移 draw_血量偏移X=0 draw_血量偏移Y=0 draw_手持偏移X=0 draw_手持偏移Y=6 # 手持下移 draw_射线偏移Y=0 draw_队伍标识偏移X=0 draw_队伍标识偏移Y=0
🚀 高级技巧
1. 通过获取码分享插件
您可以将插件上传至云端,生成一个 获取码,其他用户通过输入获取码即可加载您的插件配置。
- 在悬浮窗「扩展插件」页面中,点击「新建插件」创建一个新插件。
- 调整好所有参数后,点击「保存」。
- 在程序主界面选择「工坊内容获取」,输入您从云端获得的获取码。
- 程序会自动下载并保存为插件文件,设备码会自动绑定。
2. 动态切换插件
在「扩展插件」页面中,您可以通过点击不同插件卡片快速切换样式。 程序会立即应用新插件的所有设置,无需重启。
3. 插件与参数配置的协同
插件主要控制 UI 样式 和 绘制外观,
而 参数ptr 目录下的 .cfg 文件则控制 功能开关
和 自瞄参数。两者可以独立管理,互不干扰。
- 插件 (.ptr): 外观、颜色、偏移、样式。
- 参数 (.cfg): 自瞄范围、压枪力度、绘制开关、帧率等。
您可以为不同的使用场景(如不同游戏模式)准备多套插件和参数组合。
4. 自定义粒子效果
通过 particle_enabled=1 开启悬浮窗背景粒子动画,提升视觉体验。
# 开启粒子效果 particle_enabled=1 # 关闭粒子效果 particle_enabled=0
📚 API 参考
核心函数(扩展.h)
| 函数 | 说明 |
|---|---|
std::string 序列化UISettings() |
将 g_uiSettings 转换为纯文本字符串。 |
void 反序列化UISettings(const std::string& data) |
从文本字符串恢复 g_uiSettings 和绘制参数。 |
void 保存当前插件() |
将当前设置保存到 g_当前插件文件名 指定的文件。 |
void 加载指定插件(const std::string& fullpath) |
从指定路径加载插件,支持获取码模式。 |
std::vector<std::string> 列出插件文件() |
返回插件目录下所有 .ptr 文件名。 |
std::string 获取插件完整路径() |
返回当前插件的完整路径。 |
std::string DownloadContentByCode(const std::string& code) |
通过获取码从云端下载配置内容。 |
全局变量
extern UISettings g_uiSettings;— 当前 UI 设置实例。extern std::string g_插件目录;— 插件目录路径,默认/storage/emulated/0/扩展插件ptr。extern std::string g_当前插件文件名;— 当前激活的插件文件名。
在 C++ 代码中使用插件 API
如果您需要在自己的代码中操作插件系统,只需包含 扩展.h:
#include "扩展.h"
// 修改 UI 设置
g_uiSettings.accent = IM_COL32(255, 100, 100, 255);
g_uiSettings.window_width = 1000;
// 保存当前插件
保存当前插件();
// 加载指定插件
加载指定插件("/storage/emulated/0/扩展插件ptr/my_style.ptr");
❓ 常见问题
请检查以下几点:
- 确保插件文件位于正确的目录:
/storage/emulated/0/扩展插件ptr/ - 文件扩展名必须为
.ptr(注意大小写)。 - 检查文件内容格式是否正确(
键=值,每行一个)。 - 在「扩展插件」页面中点击插件卡片,确保已选中(高亮显示)。
- 如果使用获取码模式,确认设备码匹配且网络畅通。
程序内置了一个默认插件 default.ptr,您可以在「扩展插件」页面中点击它来恢复默认样式。
如果 default.ptr 不存在,程序会自动创建一个包含默认设置的插件文件。
插件 (.ptr) 控制 UI 外观和绘制样式(颜色、粗细、偏移、主题等), 属于 视觉层 配置。
参数 (.cfg) 控制功能开关和数值(自瞄范围、压枪力度、绘制开关、帧率等), 属于 功能层 配置。
两者独立管理,互不影响,可以自由组合使用。
获取码模式的工作流程:
- 用户在云端上传插件配置,系统生成一个唯一获取码。
- 用户在程序中输入获取码,程序请求云端获取配置内容。
- 程序将
设备码|获取码写入.ptr文件。 - 下次加载时,程序验证设备码,若匹配则从云端拉取最新配置。
不可以。一次只能加载一个插件,新插件会覆盖之前的设置。
但您可以通过「参数保存」功能保存多套参数配置,与插件配合使用。
Plague 插件开发文档 · 由繁华奚落开源 · 仅供学术研究