Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function readZones(filepath) {
- var doc = new ActiveXObject("Msxml.DOMDocument");
- doc.async = false;
- doc.resolveExternals = false;
- doc.validateOnParse = false;
- doc.load(filepath);
- return doc;
- }
- total_rooms = 0;
- total_zones = 0;
- function loadAMCZonesFile(filepath) {
- var zones = readZones(filepath).selectNodes('Zone');
- if (zones == null || zones.length == 0) {
- jmc.Showme("Can't find any zone in " + filepath);
- return;
- }
- for (var i = 0; i < zones.length; i++) {
- var zone_name = zones[i].getAttribute("Name");
- var rooms = zones[i].selectNodes('Rooms/Room');
- if (rooms == null || rooms.length == 0)
- continue;
- total_zones++;
- total_rooms += rooms.length;
- jmc.Showme("Zone " + zone_name + " [" + filepath + "]: " + rooms.length + " room(s) (" + total_rooms + " total)");
- for (var j = 0; j < rooms.length; j++) {
- var id = rooms[j].getAttribute("Id");
- var name = rooms[j].getAttribute("Name");
- var descr = "";
- //var descr_node = rooms[j].selectSingleNode('Description');
- //if (descr_node != null)
- // descr = descr_node.text;
- jmc.parse(jmc.CommandChar + "mapper add room " + id + " {" + name + "} {" + descr + "} {} {} {}");
- var exits_nodes = rooms[j].selectNodes('Exits/RoomExit');
- if (exits_nodes != null)
- for (var k = 0; k < exits_nodes.length; k++) {
- var to_id = exits_nodes[k].getAttribute("RoomId");
- var cmd = exits_nodes[k].getAttribute("Direction");
- jmc.parse(jmc.CommandChar + "mapper add exit " + id + " {" + cmd.toLowerCase() + "} " + to_id);
- }
- }
- }
- }
- function importAMCMap(dir) {
- total_rooms = 0;
- total_zones = 0;
- jmc.parse(jmc.CommandChar + "mapper clear");
- jmc.parse(jmc.CommandChar + "mapper add direction {север,с,north,n} 0 1 0 {юг,ю,south,s}");
- jmc.parse(jmc.CommandChar + "mapper add direction {восток,в,east,e} 1 0 0 {запад,з,west,w}");
- jmc.parse(jmc.CommandChar + "mapper add direction {вверх,вв,up,u} 1 1 0 {вниз,вн,down,d}");
- FSO = new ActiveXObject("Scripting.FileSystemObject")
- var folder = FSO.GetFolder("./" + dir);
- var it_files = new Enumerator(folder.Files);
- var mask = /(.*\.xml.*)/;
- for (; !it_files.atEnd(); it_files.moveNext()) {
- var match = mask.exec(it_files.item());
- if (match != null) {
- loadAMCZonesFile(match[1]);
- }
- }
- jmc.Showme("Total: " + total_rooms + " room(s) in " + total_zones + " zone(s)");
- }
- /* usage:
- - copy importAMCMap.js to ./settings
- - copy decryptet (A5Ub5T7j5cYg40v) XML-files from MapGenerator/MapResults/ to ./amc
- - execute in jmc:
- #use importAMCMap.js
- #scri importAMCMap("amc")
- #mapper write amc.map
- - in case some zones have names in wrong encoding, correct contents of appropriate xml manually (some could have "windows-1251" at first line, but actual encoding is koi8-r in all cases)
- */
Add Comment
Please, Sign In to add comment