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);
     }
 }
Esempio n. 2
0
 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);
         }
     }
 }
Esempio n. 3
0
 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);
         }
     }
 }
Esempio n. 4
0
        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;
                }
                }
            }
        }