public static TriggerXfer FromStream(Stream mstream, short ParsingRule) { TriggerXfer result = GetDefault(); NoxBinaryReader br = new NoxBinaryReader(mstream); // collisionbox result.SizeX = br.ReadInt32(); result.SizeY = br.ReadInt32(); if (result.SizeX > 60) result.SizeX = 60; if (result.SizeY > 60) result.SizeY = 60; // цвета заливки и граней для PressurePlate result.EdgeColor = br.ReadColor(); result.BackColor = br.ReadColor(); result.UnkInt1 = br.ReadInt32(); // обработчики событий result.ScriptOnPressed = br.ReadScriptEventString(); result.ScriptOnReleased = br.ReadScriptEventString(); result.ScriptOnCollided = br.ReadScriptEventString(); // кто может активировать result.AllowedObjClass = br.ReadInt32(); result.IgnoredObjClass = br.ReadInt32(); result.AllowedTeamID = br.ReadByte(); result.IgnoredTeamID = br.ReadByte(); if (ParsingRule >= 61) { result.TriggerState = br.ReadByte(); result.Unk7 = br.ReadByte(); result.UnkInt2 = br.ReadInt32(); } return result; }
public int UnknownVal; // 0x94 #endregion Fields #region Methods public static InvisibleLightXfer FromMapObject(Map.Object obj) { InvisibleLightXfer result = new InvisibleLightXfer(); using (NoxBinaryReader br = new NoxBinaryReader(new MemoryStream(obj.modbuf))) { result.StateMB = br.ReadInt32(); // 2 normally result.LightIntensity = br.ReadSingle(); result.LightRadius = br.ReadInt32(); result.UnknownVal = br.ReadInt32(); // unused? result.BaseColor = br.ReadColor(); // ChangeColors is used normally result.Unknown3 = br.ReadInt16(); // Color Flags? result.Unknown4 = br.ReadInt16(); result.Unknown5 = br.ReadInt32(); // Flags2? result.Unknown6 = br.ReadInt16(); // Some flag result.ChangeColors = new Color[16]; for (int i = 0; i < 16; i++) result.ChangeColors[i] = br.ReadColor(); result.ChangeIntensity = new byte[16]; for (int i = 0; i < 16; i++) result.ChangeIntensity[i] = br.ReadByte(); result.ChangeRadius = new byte[16]; for (int i = 0; i < 16; i++) result.ChangeRadius[i] = br.ReadByte(); result.ColorChangeIndex = br.ReadInt16(); result.IntensityChangeIndex = br.ReadInt16(); result.RadiusChangeIndex = br.ReadInt16(); result.ObjExtentID = br.ReadInt32(); result.Unknown13 = br.ReadInt16(); // some flags result.Unknown14 = br.ReadInt16(); result.Unknown15 = br.ReadByte(); if (obj.ReadRule1 > 40) { if (obj.ReadRule1 < 42) br.ReadByte(); else result.Unknown16 = br.ReadInt32(); // unused? } } return result; }
protected void ReadCharacterInfo(NoxBinaryReader rdr) { long finish = rdr.ReadInt64() + rdr.BaseStream.Position; rdr.ReadBytes(6); //UNKNOWN header seems to always = 0c 00 02 00 00 00 SavePath = rdr.ReadString(System.Type.GetType("System.Int16")); rdr.ReadByte(); //terminating null not included in length //the time this file was written FileTime = new DateTime( rdr.ReadInt16(), //year rdr.ReadInt32() & 0xFFFF, //month --skip the next 16bytes //rdr.ReadInt16(),//day of the week (not needed) rdr.ReadInt16(), //day rdr.ReadInt16(), //hour rdr.ReadInt16(), //minute rdr.ReadInt16(), //seconds rdr.ReadInt16() //milliseconds ); //these colors are RGB HairColor = rdr.ReadColor(); SkinColor = rdr.ReadColor(); MustacheColor = rdr.ReadColor(); BeardColor = rdr.ReadColor(); SideburnsColor = rdr.ReadColor(); PantsColor = rdr.ReadUserColor(); ShirtColor = rdr.ReadUserColor(); ShirtTrimColor = rdr.ReadUserColor(); ShoesColor = rdr.ReadUserColor(); ShoesTrimColor = rdr.ReadUserColor(); Name = rdr.ReadUnicodeString(); Class = (CharacterClass)rdr.ReadByte(); rdr.ReadBytes(2); //UNKNOWN: always 00 0A? LastMapPlayed = rdr.ReadString(); rdr.ReadByte(); //null terminator not included in string length System.Diagnostics.Debug.Assert(rdr.BaseStream.Position == finish, "Bad CharacterInfo length"); }
protected void ReadCharacterInfo(NoxBinaryReader rdr) { long finish = rdr.ReadInt64() + rdr.BaseStream.Position; rdr.ReadBytes(6);//UNKNOWN header seems to always = 0c 00 02 00 00 00 SavePath = rdr.ReadString(System.Type.GetType("System.Int16")); rdr.ReadByte();//terminating null not included in length //the time this file was written FileTime = new DateTime( rdr.ReadInt16(),//year rdr.ReadInt32() & 0xFFFF,//month --skip the next 16bytes //rdr.ReadInt16(),//day of the week (not needed) rdr.ReadInt16(),//day rdr.ReadInt16(),//hour rdr.ReadInt16(),//minute rdr.ReadInt16(),//seconds rdr.ReadInt16()//milliseconds ); //these colors are RGB HairColor = rdr.ReadColor(); SkinColor = rdr.ReadColor(); MustacheColor = rdr.ReadColor(); BeardColor = rdr.ReadColor(); SideburnsColor = rdr.ReadColor(); PantsColor = rdr.ReadUserColor(); ShirtColor = rdr.ReadUserColor(); ShirtTrimColor = rdr.ReadUserColor(); ShoesColor = rdr.ReadUserColor(); ShoesTrimColor = rdr.ReadUserColor(); Name = rdr.ReadUnicodeString(); Class = (CharacterClass) rdr.ReadByte(); rdr.ReadBytes(2);//UNKNOWN: always 00 0A? LastMapPlayed = rdr.ReadString(); rdr.ReadByte();//null terminator not included in string length System.Diagnostics.Debug.Assert(rdr.BaseStream.Position == finish, "Bad CharacterInfo length"); }