CounterStrikeSharp 插件无法加载的原因与排查方法
编译成功只能说明代码本身没有问题。服务器能否真正加载插件,取决于服务器自身:Metamod、CounterStrikeSharp 的版本、文件放在了哪里,以及插件运行所需的条件。请按下面的顺序逐项检查,因为靠前的几项最常见。
确认 CounterStrikeSharp 本身在运行
在怀疑插件之前,先确认框架本身是正常的。在服务器控制台输入 meta list,列表中应该能看到 CounterStrikeSharp。如果没有,问题出在 Metamod 或 CounterStrikeSharp 的安装上,而不是你的插件。这一部分在我们的 Metamod 安装指南中有详细说明。
meta list
查看控制台里的报错
插件加载失败时,控制台会显示是哪个插件、为什么失败。插件列表中出现 <ERROR>,表示文件找到了但无法加载。请复制完整的信息,而不仅是第一行,因为真正的原因通常在下面几行。
[META] Failed to load plugin addons/counterstrikesharp/bin/linuxsteamrt64/counterstrikesharp
Listing 1 plugin:
[01] <ERROR>
服务器更新后,所有插件都失效了
Counter-Strike 2 更新之后,CounterStrikeSharp 和 Metamod 往往也需要更新,因为它们所挂接的游戏文件已经变了。如果所有插件同时失效,原因就在这里。请把 CounterStrikeSharp 和 Metamod 更新到最新版本,然后重启服务器。我们的 CounterStrikeSharp 更新指南介绍了稳妥的操作方式。
看看服务器认为装了哪些插件
在控制台运行 css_plugins list,它会列出框架找到的所有插件及其状态。如果你的插件根本没有出现,说明文件放错了位置,或者文件夹名称与 DLL 名称不一致。如果出现了但带有错误,请回到第二步阅读错误信息。
css_plugins list
检查文件夹结构
每个插件都需要在 plugins 目录下有自己的文件夹,并且主 DLL 的名称必须与该文件夹完全相同。旁边的文件,例如 deps.json,要和 DLL 放在一起。
只复制插件文件夹,不要复制 dependencies
我们的编译器会在 zip 中放入两样东西:插件文件夹和 dependencies 文件夹。请只把插件文件夹复制到服务器。dependencies 里是 CounterStrikeSharp 已经提供的文件,复制过去可能引发版本冲突。
使用重型框架或不同 API 版本的插件
为旧版 CounterStrikeSharp.API 编写的插件,可能可以编译,却在较新的服务器上失败,反过来也一样。如果控制台提示找不到某个方法或类型,就说明 API 版本不匹配。选择哪个编译选项,请参考我们的版本不匹配指南。另外请注意,ASP.NET 之类的大型框架不支持在游戏服务器插件中使用。
求助时应该附上什么
如果仍然无法解决,可以向插件作者或 CounterStrikeSharp 社区求助,并附上:meta list 和 css_plugins list 的输出、控制台的完整报错、CounterStrikeSharp 的版本,以及你编译插件的方式。有了这些信息,大多数问题一次回复就能解决。
这篇教程对你有帮助吗?
Barlap 为社区打造。