private void ToStream(Stream stream, BaseNetworkable.SaveInfo saveInfo) { ProtoBuf.Entity entity = Facepunch.Pool.Get <ProtoBuf.Entity>(); ProtoBuf.Entity entity1 = entity; saveInfo.msg = entity; using (entity1) { this.Save(saveInfo); if (saveInfo.msg.baseEntity == null) { UnityEngine.Debug.LogError(string.Concat(this, ": ToStream - no BaseEntity!?")); } if (saveInfo.msg.baseNetworkable == null) { UnityEngine.Debug.LogError(string.Concat(this, ": ToStream - no baseNetworkable!?")); } saveInfo.msg.ToProto(stream); this.PostSave(saveInfo); } }
private void DrawEntity(WindowRenderTarget device, ProtoBuf.Entity localPlay, ProtoBuf.Entity entity, SharpDX.Vector2 screenMid, SharpDX.Color color) { if (entity != null) { SharpDX.Vector2 pointToRotate = SharpDX.Vector2.op_UnaryPlus(new SharpDX.Vector2(entity.baseEntity.pos.x, entity.baseEntity.pos.z)); pointToRotate.X = localPlay.baseEntity.pos.x - entity.baseEntity.pos.x; pointToRotate.Y = localPlay.baseEntity.pos.z - entity.baseEntity.pos.z; if (pointToRotate.Length() <= 149f) { if (pointToRotate.Length() > 150f) { pointToRotate.Normalize(); pointToRotate = (SharpDX.Vector2)(pointToRotate * 150f); } pointToRotate += screenMid; pointToRotate = RotatePoint(pointToRotate, screenMid, localPlayer.baseEntity.rot.y); this.FillEllipse(device, new SharpDX.Color(0xff, 0xff, 0xff, color.A), pointToRotate.X + 1.5f, pointToRotate.Y + 1.5f, 6f, 6f, true); this.FillEllipse(device, color, pointToRotate.X + 1f, pointToRotate.Y + 1f, 4f, 4f, true); } } }
private void DrawPlayer(WindowRenderTarget device, ProtoBuf.Entity currentPlayer, ProtoBuf.Entity player, SharpDX.Vector2 screenMid, SharpDX.Color color) { if ((player != null) && (player.basePlayer.name != currentPlayer.basePlayer.name)) { SharpDX.Vector2 pointToRotate = SharpDX.Vector2.op_UnaryPlus(new SharpDX.Vector2(player.baseEntity.pos.x, player.baseEntity.pos.z)); pointToRotate.X = currentPlayer.baseEntity.pos.x - player.baseEntity.pos.x; pointToRotate.Y = currentPlayer.baseEntity.pos.z - player.baseEntity.pos.z; if (pointToRotate.Length() <= 400f) { if (pointToRotate.Length() > 150f) { pointToRotate.Normalize(); pointToRotate = (SharpDX.Vector2)(pointToRotate * 150f); } pointToRotate += screenMid; pointToRotate = RotatePoint(pointToRotate, screenMid, currentPlayer.baseEntity.rot.y); if (Radar.Default.drawPlayerNames) { this.DrawText(((int)pointToRotate.X) - player.basePlayer.name.Length, ((int)pointToRotate.Y) + 5, player.basePlayer.name, SharpDX.Color.White, true, this.radarSmall); } this.FillEllipse(device, color, pointToRotate.X + 2f, pointToRotate.Y + 2f, 8f, 8f, true); } } }
public static void ReadRustPackets(string ip, int port) { new External_ESP_base.Menu(); RustInterceptor interceptor = new RustInterceptor(ip, port, 0x162e) { ClientPackets = true, RememberPackets = true, RememberFilteredOnly = false }; interceptor.Start(); while (interceptor.IsAlive) { Packet packet; proxyisAlive = true; interceptor.GetPacket(out packet); switch (((Packet.Rust)packet.packetID)) { case Packet.Rust.EntityPosition: { entityUpdate = Rust_Interceptor.Data.Entity.ParsePositions(packet); ProtoBuf.Entity entity = new ProtoBuf.Entity(); ProtoBuf.Entity entity2 = new ProtoBuf.Entity(); if (playerTable.ContainsKey(entityUpdate[0].UID)) { entity = playerTable[entityUpdate[0].UID]; entity.baseEntity.pos = entityUpdate[0].Position; entity.baseEntity.rot = entityUpdate[0].Rotation; playerTable[entityUpdate[0].UID] = entity; } else if (angryAnimalTable.ContainsKey(entityUpdate[0].UID)) { entity2 = angryAnimalTable[entityUpdate[0].UID]; entity2.baseEntity.pos = entityUpdate[0].Position; entity2.baseEntity.rot = entityUpdate[0].Rotation; angryAnimalTable[entityUpdate[0].UID] = entity2; } else if (niceAnimalTable.ContainsKey(entityUpdate[0].UID)) { entity2 = niceAnimalTable[entityUpdate[0].UID]; entity2.baseEntity.pos = entityUpdate[0].Position; entity2.baseEntity.rot = entityUpdate[0].Rotation; niceAnimalTable[entityUpdate[0].UID] = entity2; } else if (entityTable.ContainsKey(entityUpdate[0].UID)) { entity2 = entityTable[entityUpdate[0].UID]; entity2.baseEntity.pos = entityUpdate[0].Position; entity2.baseEntity.rot = entityUpdate[0].Rotation; entityTable[entityUpdate[0].UID] = entity2; } continue; } case Packet.Rust.Entities: { Rust_Interceptor.Data.Entity.ParseEntity(packet, out Overlay.entity); if (Overlay.entity.basePlayer != null) { if (Overlay.entity.basePlayer.metabolism != null) { playerTable[Overlay.entity.baseNetworkable.uid] = Overlay.entity; localPlayer = Overlay.entity; } else { playerTable[Overlay.entity.baseNetworkable.uid] = Overlay.entity; } } else if (rockIds.Contains <uint>(Overlay.entity.baseNetworkable.prefabID)) { rockTable[Overlay.entity.baseNetworkable.uid] = Overlay.entity; } else if (Overlay.entity.baseNetworkable.prefabID == 0x4f1f0e9b) { tcTable[Overlay.entity.baseNetworkable.uid] = Overlay.entity; } else if (angryAnimalIds.Contains <uint>(Overlay.entity.baseNetworkable.prefabID)) { angryAnimalTable[Overlay.entity.baseNetworkable.uid] = Overlay.entity; } else if (niceAnimalIds.Contains <uint>(Overlay.entity.baseNetworkable.prefabID)) { niceAnimalTable[Overlay.entity.baseNetworkable.uid] = Overlay.entity; } else { entityTable[Overlay.entity.baseNetworkable.uid] = Overlay.entity; } continue; } case Packet.Rust.EntityDestroy: { EntityDestroy destroy = new EntityDestroy(packet); if (playerTable.ContainsKey(destroy.UID)) { playerTable.Remove(destroy.UID); } else if (rockTable.ContainsKey(destroy.UID)) { rockTable.Remove(destroy.UID); } continue; } } } }