[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Получение информации о плагине (Взято с world-source.ru)
Получение информации о плагине
rootДата: Воскресенье, 03.02.2013, 01:27 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Handle:GetMyHandle() - возвращает Handle текущего скрипта (ниже он будет как Handle:plugin) 
С его помощью можно будет получать информацию о плагине. 

GetPluginFilename(Handle:plugin, String:buffer[], maxlength) - получить имя скрипта с расширением .smx 

Handle:FindPluginByFile("xz.smx") - позволяет найти плагин по его имени, если он загружен. 
Возвращает Handle плагина, или INVALID_HANDLE в случае неудачи. 

bool:GetPluginInfo(Handle:plugin, PluginInfo:info, String:buffer[], maxlength); - с помощью этой функции можно получать информацию, которая была записана в: 

Код
public Plugin:myinfo =    
{  
      name = "",  
      author = "",  
      description = "",  
      version = "",  
      url = ""  
};

Если удалось получить нужную инфу, будет возвращено true, в противном случае false

Код
PluginInfo:info :  

PlInfo_Name - имя скрипта (xz.smx)  
PlInfo_Author - автор  
PlInfo_Description - описание  
PlInfo_Version - версия  
PlInfo_URL - сайт


PluginStatus:GetPluginStatus(Handle:plugin); - позволяет узнать статус (состояние) плагина 

Код
Plugin_Running = 0  // плагин работает  
Plugin_Paused = 1 // плагин загружен, но на паузе  
Plugin_Error = 2 // плагин загружен, но там какая-то ошибка  

Plugin_Loaded = 3 // готов к загрузке  
Plugin_Failed = 4 // фатальная неудача  
Plugin_Created = 5 // плагин создан, но не инициализируется  
Plugin_Uncompiled = 6 // плагин пока не скомпилирован  
Plugin_BadLoad = 7 // не удалось загрузить


Примеры использования функций: 

Код
#include <sourcemod>  

public Plugin:myinfo =    
{  
      name = "",  
      author = "wS",  
      description = "",  
      version = "",  
      url = ""  
};  

public OnPluginStart()  
{  
      new Handle:h = GetMyHandle();  
      PrintToServer("-> %x", h);  

      decl String:text[45];  
      GetPluginFilename(h, text, 45);  
      PrintToServer("-> %s", text);  

      new Handle:e = FindPluginByFile("b.smx");  
      if (e != INVALID_HANDLE) PrintToServer("-> b.smx Handle = %x", e);  
      else PrintToServer("-> b.smx не включен");  

      if (GetPluginInfo(h, PlInfo_Author, text, 45)) PrintToServer("Автор скрипта: %s", text);  
      else PrintToServer("Автор скрипта: неизвестен");  

      new PluginStatus:status = GetPluginStatus(h);  
      if (status == Plugin_Running) PrintToServer("скрипт загружен и работает");  
      PrintToServer("-> PluginStatus = %d", status);  
}


Вот так можно получить список всех загруженных скриптов (похоже на sm plugins list): 

Код
decl String:plugin_name[125];  
new Handle:iterator = GetPluginIterator(), nuM = 0;  
while (MorePlugins(iterator))  
{  
      GetPluginFilename(ReadPlugin(iterator), plugin_name, 125);  
      PrintToServer("%02d. %s", ++nuM, plugin_name);  
}  
CloseHandle(iterator);


Handle:GetPluginIterator() - возвращает итератор, который может быть использован для поиска плагинов. 
Его обязательно нужно закрыть с помощью CloseHandle(). 

bool:MorePlugins(Handle:iter) - с каждым вызовом этой функции идёт как-бы смещение к другому элементу (плагину). Если плагин найден, то функция вернёт true и мы сможем получить Handle этого плагина с помощью ReadPlugin, в противном случае вернёт false.
 
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Получение информации о плагине (Взято с world-source.ru)
  • Страница 1 из 1
  • 1
Поиск: