游戏事件
本指南将介绍如何在 CounterStrikeSharp 中监听和处理 Source 引擎的游戏事件。
添加事件监听器
自动注册
CounterStrikeSharp 会自动注册在 BasePlugin 类中使用 GameEventHandler 属性标记的事件监听器。这些监听器会在热重载时自动注册和注销。
示例:自动注册事件监听器
在加载时注册
也可以在 OnLoad 方法中(或在您可以访问插件实例的任何位置)绑定事件监听器。
示例:在 OnLoad 装载时注册事件监听器
访问事件参数
具体的 GameEvent 子类将提供事件定义中的强类型参数。例如,event.Timelimit 将是一个 long 值,event.UserId 将是一个 CCSPlayerController。
这些事件属性是可变的,您可以像普通值一样更新它们,并在事件实例中进行更新。
警告
GameEvent 实例及其属性在事件监听函数调用后将不复存在,这意味着在定时器和 Server.NextFrame() 方法中访问属性时会遇到错误。您应在调用 Server.NextFrame() 等函数之前将属性值存储在变量中,以便安全地读取数据。
阻止事件广播
可以通过修改 info.DontBroadcast 属性为 true 来阻止事件广播到客户端。例如:
取消事件
在预事件钩子中,您可以通过返回 HookResult.Handled 或 HookResult.Stop 来阻止事件继续到其他插件。