在Sourcemod中,如何检查插件是否存在



在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.
}

相关内容

  • 没有找到相关文章

最新更新