static void ExportMapScripts() { Directory.CreateDirectory("noxmaps"); Directory.CreateDirectory("luamaps"); DirectoryInfo di = new DirectoryInfo("noxmaps"); foreach (var dir in di.GetDirectories()) { foreach (var file in dir.GetFiles()) { if (file.Extension == ".map") { Console.WriteLine(file.Name); string code = ""; Map map = new Map(file.FullName, thingdb); var soc = new ScriptObjContainer(map.Scripts); code = code + "_functions = {"; for(int i = 0; i < soc.Functions.Count;i++) { if (i + 1 == soc.Functions.Count) { code = code + "\t" + soc.Functions[i].Name + " = " + i.ToString() + "\r\n"; } else { code = code + "\t" + soc.Functions[i].Name + " = " + i.ToString() + ",\r\n"; } } code = code + "}\r\n"; for(int i = 0; i < soc.Functions.Count;i++) { code = code + "\r\n"; code = code + "function " + soc.Functions[i].Name + "("; for(int j = 0; j < soc.Functions[i].NumArgs;j++) { if(j > 0) code = code + ","; code = code + "arg_" + j.ToString(); } code = code + ")\r\n"; foreach (string line in new LineReader(() => new StringReader(soc.Decompile(i)))) { code = code + "\t" + line + "\r\n"; } code = code + "end"; } System.IO.File.WriteAllText("luamaps/" + file.Name + ".lua", code); } } } }