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.