Well, most of Vesper! I did leave out a few of the outlying buildings though I may go back and add them in at some point. Full image (10,592x9,312 282mb, in-game level detail): http://xf2m.com/vesper.bmp Preview (2,246x1,976, 9mb):
Did they have to build houses the size of the islands? There is plenty of land next to those islands... strange Vesperians.
Your not the only one. Vesper was done very nicely and I have yet to find him. Serpents hold I found him a few times. Edit: I found waldo in vesper too! If you've made these before you know what to look for. Spoiler Alert:
Hahaha, I admittedly only played for a minute or two. That's a pretty clean edit though to be honest.
I could generate the entire map if admins supplied me with worldfile.dif via this code - reference: http://www.runuo.com/community/threads/uo-screenshot-renderer.24187/page-3 Code: using System; using System.Collections.Generic; using System.Text; using Server; using Server.Items; using System.IO; namespace Server.Commands { public class WriteItems { public static void Initialize() { CommandSystem.Register("WriteItems", AccessLevel.GameMaster, new CommandEventHandler(WriteItems_OnCommand)); } public static void WriteItems_OnCommand(CommandEventArgs e) { Map m = e.Mobile.Map; FileStream m_Stream = new FileStream("worldfile.dif", FileMode.Create); BinaryWriter br = new BinaryWriter(m_Stream); br.Seek(0, SeekOrigin.Begin); string id = "CP#1"; br.Write(id.ToCharArray(), 0, 4); br.Write((int)0); br.Write((int)100); br.Write((int)0); br.Write((int)0); byte[] reserved = new byte[36]; br.Write(reserved, 0, 36); br.Seek(100, SeekOrigin.Begin); IPooledEnumerable eable = m.GetItemsInBounds(new Rectangle2D(0, 0, m.Width, m.Height)); int count = 0; foreach (Item i in eable) { if (i is BaseMulti) { MultiComponentList mcl = MultiData.Load(i.ItemID - 0x4000); for (int x = 0; x < mcl.Width; x++) { for (int y = 0; y < mcl.Height; y++) { if (mcl.Tiles[x][y].Length == 0) continue; for (int t = 0; t < mcl.Tiles[x][y].Length; t++) { int realx = (i.X + mcl.Min.X) + x; int realy = (i.Y + mcl.Min.Y) + y; br.Write((byte)2); br.Write((uint)count + 1); br.Write((ushort)(mcl.Tiles[x][y][t].ID - 0x4000)); br.Write((byte)(realx % 8)); br.Write((byte)(realy % 8)); br.Write((ushort)(realx / 8)); br.Write((ushort)(realy / 8)); br.Write((short)(i.Z + mcl.Tiles[x][y][t].Z)); count++; br.Seek(100 + (count * 15), SeekOrigin.Begin); } } } } else if (i.Visible) { br.Write((byte)2); br.Write((uint)count + 1); br.Write((ushort)i.ItemID); br.Write((byte)(i.X % 8)); br.Write((byte)(i.Y % 8)); br.Write((ushort)(i.X / 8)); br.Write((ushort)(i.Y / 8)); br.Write((short)i.Z); count++; br.Seek(100 + (count * 15), SeekOrigin.Begin); } } eable.Free(); br.Seek(4, SeekOrigin.Begin); br.Write((uint)count); br.Close(); m_Stream.Close(); } } }
Wow that is really cool. I tried it out without the worldfile.dif, missing doors and some stuff but I'm assuming that's why worldfile is needed http://xf2m.com/output.bmp