Code:public class ZeroLoader : PluginLoader { private Dictionary<string, Type> plugins = new Dictionary<string, Type>(); public ZeroLoader() { this.GetType().Assembly.GetTypes().Where(t => t.Namespace == "Oxide.Ext.Zero.Plugins").ToList().ForEach(t => plugins.Add(t.Name, t)); } public override Plugin Load(string directory, string name) { if (plugins.ContainsKey(name)) { object obj = Activator.CreateInstance(plugins[name], true); if (obj != null) { Plugin plugin = (Plugin) obj; return plugin; } else Interface.Oxide.LogError("Plugin <"+name+"> is not initialized!"); } return null; } public override IEnumerable<string> ScanDirectory(string directory) => plugins.Keys; }Code:public class ZeroExtension : Extension { public ZeroExtension(ExtensionManager manager) : base(manager) { } public override string Name => "Zero"; public override string Author => "TheRyuzaki"; public override VersionNumber Version => new VersionNumber(0,0,1); public override void Load() { SingletonType<ZeroExtension>.Setup(this); Manager.RegisterPluginLoader(SingletonType<ZeroLoader>.Instance); } }ScreenshotCode:public class ZeroPlayer : RustPlugin { public ZeroPlayer() { this.Name = this.GetType().Name; this.Author = SingletonType<ZeroExtension>.Instance.Author; this.Version = new VersionNumber(0,0,1); } private void Unload() => Interface.Oxide.LogWarning("Unload"); private void Loaded() => Interface.Oxide.LogWarning("Loaded"); }
What is it? Need fixed =(
Extension unload problem
Discussion in 'Rust Development' started by TheRyuzaki, Jul 2, 2017.
-
Code:
public override Plugin Load(string directory, string name) { if (plugins.ContainsKey(name)) { object obj = Activator.CreateInstance(plugins[name], true); if (obj != null) { CSharpPlugin plugin = (CSharpPlugin) obj; plugin.Loader = this; plugin.Watcher = new FSWatcher(Interface.Oxide.PluginDirectory, ".zero"); return plugin; } else Interface.Oxide.LogError("Plugin <"+name+"> is not initialized!"); } return null; }