1
在SourceMod中,如何檢查插件是否存在?我嘗試了GetFeatureStatus
方法,但它不起作用。有任何想法嗎?在SourceMod中,如何檢查插件是否存在?
在SourceMod中,如何檢查插件是否存在?我嘗試了GetFeatureStatus
方法,但它不起作用。有任何想法嗎?在SourceMod中,如何檢查插件是否存在?
如果插件已將自己註冊爲庫,則可以使用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.
}