在Sourcemod中,如何检查插件是否存在?我尝试了GetFeatureStatus
方法,但它不起作用。有什么想法吗?
如果插件已注册为库,则可以在其注册的名称上使用LibraryExists
命令检查它是否存在。传统上,此名称在所有小写字母中,但是某些插件/扩展程序都使用混合案例,例如Steamtools(使用" Steamtools")。
话虽如此,通常最好地缓存库是否存在而不是不断调用此命令...但是,可以在您的知识的情况下将库在您的情况下卸载或加载。有功能可以抓住。
因此,最好的方法通常是这样做这样的事情(以本地视频插件为例)。
#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检查特定本地。捕获是在意识到此功能不会返回bool,而是 FeatureStatus_
值。
例如,这是我如何检查与上述相同插件的(开发)功能:
if (GetFeatureStatus(FeatureType_Native, "NativeVotes_IsVoteCommandRegistered") == FeatureStatus_Available)
{
// Do something with vote commands.
}