예제 #1
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;
                }
                }
            }
        }