功能说明
插件本身没有作用,主要用于其他插件调用!这是一个专门用于统一管理X键和F键绑定的API插件,为其他插件提供统一的按键处理接口,避免插件间的钩子冲突和卸载问题。
主要特性
- 统一钩子管理:只有此插件注册swapseats和lighttoggle钩子,避免冲突
- 优先级系统:支持多个插件同时注册,配置文件可以设置按优先级顺序处理
- 权限控制:每个插件可以指定专门的权限要求才生效X/F
- 条件检测:支持自定义检测条件(坐下、蹲下、手电筒等),避免默认按键行为失效
- 自动清理:插件卸载时自动移除相关处理器
API方法
RegisterKeyBinding
注册X/F键处理器参数:
- plugin: 调用插件实例
- methodName: 处理方法名称
- permission: 权限名称(可选,为空则不检查权限)
- enableX: 是否启用X键(默认true)
- enableF: 是否启用F键(默认true)
- checkMounted: X键是否检测坐下状态(默认false)
- checkDucked: F键是否检测蹲下状态(默认true)
- checkFlashlight: F键是否检测武器手电筒(默认true)
UnregisterKeyBinding
注销插件的所有按键绑定参数:
- plugin: 插件实例
优先级说明
JSON:
{
"默认优先级设置": {
"XMPlayerAdmin": 2,//写入插件名和优先级
"XMSwordFly": 1,
"其他插件": 5//没有写入插件名的所有插件默认优先级
}
}
- 配置文件设置
- 数字1为最高优先级,2、3、4...依次降低
- 当玩家拥有多个权限时,按优先级顺序尝试处理
- 第一个成功处理的插件会阻止后续插件处理
- 如果所有插件都未处理,则执行原始游戏功能
权限系统
每个插件可以指定自己的权限要求:- 如果指定了权限,只有拥有该权限的玩家才会触发处理
- 如果未指定权限(null或空字符串),则对所有玩家生效
- 支持玩家同时拥有多个插件的权限,按优先级处理
条件检测
X键条件:
- checkMounted: 是否检测坐下状态,true时坐下的玩家不会触发
F键条件:
- checkDucked: 是否检测蹲下状态,true时蹲下的玩家不会触发
- checkFlashlight: 是否检测武器手电筒,true时持有手电筒/激光瞄具的玩家不会触发
使用示例
C#:
// 在插件的Loaded方法中注册
void Loaded()
{
if (XMKeyBindingAPI != null)
{
// 注册X/F键,只对有admin权限的玩家生效,优先级1(最高)
// X键不检测坐下,F键检测蹲下和手电筒
XMKeyBindingAPI.Call("RegisterKeyBinding", this, "HandleKeyPress", "myplugin.admin", true, true, false, true, true);
}
}
// 处理方法
private bool HandleKeyPress(BasePlayer player)
{
// 处理按键逻辑
// 返回true表示处理成功,false表示未处理
return true;
}
// 在插件卸载时注销(可选,插件会自动清理)
void Unload()
{
if (XMKeyBindingAPI != null)
{
XMKeyBindingAPI.Call("UnregisterKeyBinding", this);
}
}