C#:
using Oxide.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Oxide.Plugins
{
[Info("CheckPlugins", "Mystery", "0.0.1")]
[Description("")]
class CheckPlugins : RustPlugin
{
private void OnServerInitialized()
{
timer.Once(10, () => { Check(); });
}
private void Check()
{
string text = $"[{Name}] Произошла ошибка загрузки следующих плагинов:\n";
var loadedPlugins = plugins.GetAll().Where(pl => !pl.IsCorePlugin).ToArray();
var loadedPluginNames = new HashSet<string>(loadedPlugins.Select(pl => pl.Name));
var unloadedPluginErrors = new Dictionary<string, string>();
foreach (var loader in Interface.Oxide.GetPluginLoaders())
{
string msg;
foreach (var name in loader.ScanDirectory(Interface.Oxide.PluginDirectory).Except(loadedPluginNames)) { unloadedPluginErrors[name] = loader.PluginErrors.TryGetValue(name, out msg) ? msg : "Unloaded"; }
}
if (unloadedPluginErrors.Count > 0)
{
foreach (var pluginerror in unloadedPluginErrors) text = text + " " + pluginerror.Key + ".";
ApiError(text);
}
}
void ApiError(string msg)
{
Puts(msg);
}
}
}