// Create Game Object on World internal static UpdateObject CreateGameObject(zoneObjeto gameObject) { BinaryWriter writer = new BinaryWriter(new MemoryStream()); writer.Write((byte)ObjectUpdateType.UPDATETYPE_CREATE_OBJECT); GameObjectEntity entity = new GameObjectEntity(gameObject); writer.WritePackedUInt64(entity.ObjectGuid.RawGuid); writer.Write((byte)TypeId.TypeidGameobject); ObjectUpdateFlag updateFlags = ObjectUpdateFlag.UpdateflagTransport | ObjectUpdateFlag.UpdateflagAll | ObjectUpdateFlag.UpdateflagHasPosition; writer.Write((byte)updateFlags); writer.Write(gameObject.map.mapX); writer.Write(gameObject.map.mapY); writer.Write(gameObject.map.mapZ); writer.Write((float)0); writer.Write((uint)0x1); writer.Write((uint)0); entity.WriteUpdateFields(writer); return(new UpdateObject(new List <byte[]> { (writer.BaseStream as MemoryStream)?.ToArray() }, 1)); }
// USO INTERNO Criando OBJETO internal static UpdateObject CreateGameObject(float x, float y, float z) { BinaryWriter writer = new BinaryWriter(new MemoryStream()); writer.Write((byte)ObjectUpdateType.UPDATETYPE_CREATE_OBJECT); var abacate = XmlReader.ObjectsAzeroth.objeto.First(a => a.id == 31000001); Console.WriteLine(abacate.name); GameObjectEntity entity = new GameObjectEntity(abacate); writer.WritePackedUInt64(entity.ObjectGuid.RawGuid); writer.Write((byte)TypeId.TypeidGameobject); ObjectUpdateFlag updateFlags = ObjectUpdateFlag.UpdateflagTransport | ObjectUpdateFlag.UpdateflagAll | ObjectUpdateFlag.UpdateflagHasPosition; writer.Write((byte)updateFlags); // Position writer.Write(x); writer.Write(y); writer.Write(z); writer.Write((float)0); // R writer.Write((uint)0x1); // Unkown... time? writer.Write((uint)0); // Unkown... time? entity.WriteUpdateFields(writer); return(new UpdateObject(new List <byte[]> { (writer.BaseStream as MemoryStream)?.ToArray() }, 1)); }