public async Task SetManagedScript(string location, string source = default) { var list = ScriptPacks.ToList(); foreach (var pack in ScriptPacks.OfType <PythonScriptPack>()) { if (pack.Name != location) { continue; } await pack.UnloadAsync(); list.Remove(pack); } ScriptPacks = list; location = Path.Combine(Zone.UchuServer.MasterPath, location); if (File.Exists(location)) { source = await File.ReadAllTextAsync(location); } else if (string.IsNullOrEmpty(source)) { return; } var managedScript = new PythonScriptPack(Zone, location, source); ScriptPacks.Add(managedScript); await managedScript.LoadAsync(); }
private async Task <List <ScriptPack> > LoadManagedScriptsAsync() { Logger.Information($"Loading managed scripts..."); var scriptPacks = new List <ScriptPack>(); ManagedScriptEngine.Init(); foreach (var script in Zone.UchuServer.Config.ManagedScriptSources?.Scripts ?? new List <string>()) { Logger.Information($"Loading {script} managed script pack"); string source = default; var location = Path.Combine(Zone.UchuServer.MasterPath, script); if (File.Exists(location)) { source = await File.ReadAllTextAsync(location); } var managedScript = new PythonScriptPack(Zone, location, source); scriptPacks.Add(managedScript); } return(scriptPacks); }