Example #1
0
        public void UnloadPlugin()
        {
            Logger.Log($"Unloading plugin {Name}...", ConsoleColor.DarkRed);

            PluginState = PluginState.Unloaded;
            CommandManager.DeregisterCommands(Name);
            Unload();
        }
Example #2
0
        public static void Puts(string message, Color color)
        {
            Logger.Log($"Broadcast: {message}", ConsoleColor.Yellow);

            WrapMessage(message).ForEach(s =>
            {
                ChatManager.serverSendMessage(s, color);
            });
        }
Example #3
0
        private static bool DoNext(IPlayer player, string message)
        {
            if (player == null)
            {
                return(false);
            }
            if (!player.IsConsolePlayer())
            {
                return(true);
            }

            Logger.Log($"{player.CharacterName} >> {message}", ConsoleColor.Yellow);
            return(false);
        }
Example #4
0
        public void LoadPlugin()
        {
            Logger.Log($"Loading plugin: {Name}. Author: {Author ?? "UNKNOWN"}. Version: {Version}.", ConsoleColor.Cyan);

            var pluginDir = string.Format(ModuleEnvironment.PluginDir, Name);

            if (!Directory.Exists(pluginDir))
            {
                Directory.CreateDirectory(pluginDir);
            }

            Config = new JsonFileAsset <TConfig>(string.Format(ModuleEnvironment.PluginCfg, Name));

            if (DefaultTranslation != null && DefaultTranslation.Any())
            {
                Translation = new JsonFileAsset <Translation>(string.Format(ModuleEnvironment.PluginTranslation, Name));
                DefaultTranslation.FillTranslation(Translation);
            }

            try
            {
                Load();
            }
            catch (Exception e)
            {
                Logger.LogError($"An error occurred while loading plugin {Name}. Unloading now...");
                Logger.Log(e.Message, ConsoleColor.Red);

                try
                {
                    UnloadPlugin();
                    return;
                }
                catch (Exception)
                {
                    Logger.LogWarning("Failed to unload plugin, it will be destroyed!");
                    PluginManager.Destroy(name);
                    return;
                }
            }

            CommandManager.RegisterCommands(Assembly, GetType());
            PluginState = PluginState.Loaded;
        }
        private static void RegisterPlugins()
        {
            foreach (var path in Directory.GetFiles(ModuleEnvironment.PluginsDir, "*.dll"))
            {
                var assembly = Assembly.LoadFrom(path);

                var name = assembly.GetName().Name;

                if (!PluginUtil.IsPluginValid(assembly, out var pluginType))
                {
                    Logger.LogError($"Invalid or outdated plugin assembly: {name}");
                    continue;
                }

                var gameObject = new GameObject(name, pluginType);
                Object.DontDestroyOnLoad(gameObject);
                Plugins.Add(new PluginData(assembly, gameObject));
            }
        }
        internal static void Init()
        {
            AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
            {
                if (Libraries.TryGetValue(args.Name, out var file))
                {
                    return(Assembly.LoadFrom(file));
                }

                Logger.LogError($"Could not find dependency: {args.Name}");
                return(null);
            };

            RegisterPlugins();

            var advertising = PluginAdvertising.Get();

            advertising.PluginFrameworkName = "rocket";
            advertising.AddPlugins(Plugins.Select(p => p.Name));

            SteamGameServer.SetKeyValue("unturned", Provider.APP_VERSION);
            SteamGameServer.SetKeyValue("rocket", "4.9.3.6");
        }
Example #7
0
 public virtual void Load()
 {
     Logger.LogInfo("Loading with default settings...");
 }