在 SourceMod 中,如何检查插件是否存在?我尝试了该GetFeatureStatus
方法,但它不起作用。有任何想法吗?
问问题
1645 次
1 回答
4
如果插件已将自己注册为库,您可以使用LibraryExists
其注册名称上的命令检查它是否存在。传统上,这个名称都是小写的,但一些插件/扩展使用混合大小写,例如 SteamTools(它使用“SteamTools”)。
话虽如此,通常最好缓存一个库是否存在,而不是不断地调用这个命令......但是随后可以在您不知情的情况下卸载或加载一个库。有一些功能可以捕捉到这一点。
所以,最好的方法通常是做这样的事情(以NativeVotes插件为例)。
#undef REQUIRE_PLUGIN
#include <nativevotes>
//global variable
new bool:g_bNativeVotes = false;
public OnAllPluginsLoaded()
{
g_bNativeVotes = LibraryExists("nativevotes");
}
public OnLibraryAdded(const String:name[])
{
if (StrEqual(name, "nativevotes"))
{
g_bNativeVotes = true;
}
}
public OnLibraryRemoved(const String:name[])
{
if (StrEqual(name, "nativevotes"))
{
g_bNativeVotes = false;
}
}
如果插件未注册为库,您可以使用 GetFeatureStatus 来检查特定的原生。关键在于意识到这个函数不返回布尔值,而是一个FeatureStatus_
值。
例如,这是我如何检查上述相同插件的(开发中)功能:
if (GetFeatureStatus(FeatureType_Native, "NativeVotes_IsVoteCommandRegistered") == FeatureStatus_Available)
{
// Do something with vote commands.
}
于 2014-01-24T15:42:33.663 回答