public UInt32 GenerateZoneSQL(Action <string> SQLOut) { UInt16 ZoneID = PatchDecoder.GetZoneNumber(); NewZoneStruct NewZone = PatchDecoder.GetZoneData(); SQLOut("--"); SQLOut("-- Zone Config"); SQLOut("--"); string InsertFormat = "UPDATE zone set `short_name` = '{0}', `file_name` = '', `long_name` = '{1}', `safe_x` = {2}, `safe_y` = {3}, `safe_z` = {4}, "; InsertFormat += "`underworld` = {6}, `minclip` = {7}, `maxclip` = {8}, `fog_minclip` = {9}, `fog_maxclip` = {10}, "; InsertFormat += "`fog_blue` = {11}, `fog_red` = {12}, `fog_green` = {13}, `sky` = {14}, `ztype` = {15}, `time_type` = {16}, "; InsertFormat += "`fog_red2` = {17}, `fog_green2` = {18}, `fog_blue2` = {19}, `fog_minclip2` = {20}, `fog_maxclip2` = {21}, "; InsertFormat += "`fog_red3` = {22}, `fog_green3` = {23}, `fog_blue3` = {24}, `fog_minclip3` = {25}, `fog_maxclip3` = {26}, "; InsertFormat += "`fog_red4` = {27}, `fog_green4` = {28}, `fog_blue4` = {29}, `fog_minclip4` = {30}, `fog_maxclip4` = {31} WHERE zoneidnumber = {5};"; SQLOut(String.Format(InsertFormat, NewZone.ShortName2, NewZone.LongName, NewZone.SafeX, NewZone.SafeY, NewZone.SafeZ, ZoneID, NewZone.UnderWorld, NewZone.MinClip, NewZone.MaxClip, NewZone.FogMinClip[0], NewZone.FogMaxClip[0], NewZone.FogBlue[0], NewZone.FogRed[0], NewZone.FogGreen[0], NewZone.Sky, NewZone.Type, NewZone.TimeType, NewZone.FogRed[1], NewZone.FogGreen[1], NewZone.FogBlue[1], NewZone.FogMinClip[1], NewZone.FogMaxClip[1], NewZone.FogRed[2], NewZone.FogGreen[2], NewZone.FogBlue[2], NewZone.FogMinClip[2], NewZone.FogMaxClip[2], NewZone.FogRed[3], NewZone.FogGreen[3], NewZone.FogBlue[3], NewZone.FogMinClip[3], NewZone.FogMaxClip[3])); SQLOut(String.Format("UPDATE zone set fog_density = {0} WHERE zoneidnumber = {1};", NewZone.FogDensity, ZoneID)); SQLOut("--"); return(ZoneID); }
public virtual NewZoneStruct GetZoneData() { NewZoneStruct NewZone = new NewZoneStruct(); return NewZone; }
public override NewZoneStruct GetZoneData() { NewZoneStruct NewZone = new NewZoneStruct(); List<byte[]> ZonePackets = GetPacketsOfType("OP_NewZone", PacketDirection.ServerToClient); if (ZonePackets.Count < 1) return NewZone; // Assume there is only 1 packet and process the first one. ByteStream Buffer = new ByteStream(ZonePackets[0]); string CharName = Buffer.ReadFixedLengthString(64, false); NewZone.ShortName = Buffer.ReadFixedLengthString(32, false); Buffer.SkipBytes(96); // Skip Unknown NewZone.LongName = Buffer.ReadFixedLengthString(278, true); NewZone.Type = Buffer.ReadByte(); NewZone.FogRed = Buffer.ReadBytes(4); NewZone.FogGreen = Buffer.ReadBytes(4); NewZone.FogBlue = Buffer.ReadBytes(4); Buffer.SkipBytes(1); // Unknown for (int i = 0; i < 4; ++i) NewZone.FogMinClip[i] = Buffer.ReadSingle(); for (int i = 0; i < 4; ++i) NewZone.FogMaxClip[i] = Buffer.ReadSingle(); NewZone.Gravity = Buffer.ReadSingle(); NewZone.TimeType = Buffer.ReadByte(); Buffer.SkipBytes(49); // Unknown NewZone.Sky = Buffer.ReadByte(); Buffer.SkipBytes(13); // Unknown NewZone.ZEM = Buffer.ReadSingle(); NewZone.SafeY = Buffer.ReadSingle(); NewZone.SafeX = Buffer.ReadSingle(); NewZone.SafeZ = Buffer.ReadSingle(); NewZone.MinZ = Buffer.ReadSingle(); NewZone.MaxZ = Buffer.ReadSingle(); NewZone.UnderWorld = Buffer.ReadSingle(); NewZone.MinClip = Buffer.ReadSingle(); NewZone.MaxClip = Buffer.ReadSingle(); Buffer.SkipBytes(84); // Unknown NewZone.ShortName2 = Buffer.ReadFixedLengthString(96, false); Buffer.SkipBytes(52); // Unknown NewZone.ZoneID = Buffer.ReadUInt16(); NewZone.InstanceID = Buffer.ReadUInt16(); Buffer.SkipBytes(38); // Unknown NewZone.FallDamage = Buffer.ReadByte(); Buffer.SkipBytes(21); // Unknown NewZone.FogDensity = Buffer.ReadSingle(); // Everything else after this point in the packet is unknown. return NewZone; }