2014-01-24 52 views

回答

2

如果插件已將自己註冊爲庫,則可以使用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. 
} 
相關問題