Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Получение информации о плагине
Получение информации о плагине
_wS_ Дата: Вторник, 08.05.2012, 14:13:43 | Сообщение # 1
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); - с помощью этой функции можно получать информацию, которая была записана в:

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

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

Code
PluginInfo:info :

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


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

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

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


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

Code
#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);
}
 
_wS_ Дата: Вторник, 08.05.2012, 15:28:42 | Сообщение # 2
Вот так можно получить список всех загруженных скриптов (похоже на sm plugins list):

Code
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 - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Получение информации о плагине
Страница 1 из 11
Поиск: