Exemplo n.º 1
0
        internal void internalOnPacket(Packet packet)
        {
            Entity entity;

            switch (packet.rustID)
            {
            case Packet.Rust.Entities:
                ProtoBuf.Entity entityInfo;
                uint            num = Data.Entity.ParseEntity(packet, out entityInfo);
                entity = Entity.CreateOrUpdate(num, entityInfo);
                if (entity != null)
                {
                    OnEntity(entity);
                }
                return;

            case Packet.Rust.EntityPosition:
                List <Data.Entity.EntityUpdate> updates = Data.Entity.ParsePositions(packet);
                List <Entity> entities = null;
                if (updates.Count == 1)
                {
                    entity = Entity.UpdatePosistion(updates[0]);
                    if (entity != null)
                    {
                        (entities = new List <Entity>()).Add(entity);
                    }
                }
                else if (updates.Count > 1)
                {
                    entities = Entity.UpdatePositions(updates);
                }
                if (entities != null)
                {
                    entities.ForEach(item => OnEntity(item));
                }
                return;

            case Packet.Rust.EntityDestroy:
                EntityDestroy destroyInfo = new EntityDestroy(packet);
                Entity.CreateOrUpdate(destroyInfo);
                OnEntityDestroy(destroyInfo);
                return;
            }
            OnPacket(packet);
        }
Exemplo n.º 2
0
 private static void EntityDestroyed(EntityDestroy enty)
 {
     //Console.WriteLine("Entity destroyed");
 }
Exemplo n.º 3
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;
                }
                }
            }
        }
Exemplo n.º 4
0
 public abstract void OnEntityDestroy(EntityDestroy destroyInfo);
Exemplo n.º 5
0
 public override void OnEntityDestroy(EntityDestroy destroyInfo)
 {
     this.radar.DeleteOthers(destroyInfo.UID);
     //Console.WriteLine("Entity with UID({0}) got destroyed :'(", destroyInfo.UID);
 }
Exemplo n.º 6
0
        //public abstract void OnPacket(Packet packet);
        //public abstract void OnEntity(Entity entity);
        //public abstract void OnEntityDestroy(EntityDestroy destroyInfo);

        internal void internalOnPacket(Packet packet)
        {
            Entity entity;

            switch (packet.rustID)
            {
            case Packet.Rust.Entities:
                ProtoBuf.Entity entityInfo;
                uint            num = Entity.ParseEntity(packet, out entityInfo);
                if (entityInfo.autoturret != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.basePlayer != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.resource != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.buildingPrivilege != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.baseNPC != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.sleepingBag != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.miningQuarry != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.plantEntity != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.helicopter != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.landmine != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (entityInfo.autoturret != null)
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                if (Entity.getName(entityInfo.baseNetworkable.prefabID) != "UnKnown")
                {
                    Entity.CreateOrUpdate(num, entityInfo);
                    return;
                }
                //if (entity != null) OnEntity(entity);
                return;

            case Packet.Rust.EntityPosition:
                List <Entity.EntityUpdate> updates = Entity.ParsePositions(packet);
                List <Entity> entities             = null;
                if (updates.Count == 1)
                {
                    entity = Entity.UpdatePosition(updates[0]);
                    if (entity != null)
                    {
                        (entities = new List <Entity>()).Add(entity);
                    }
                }
                else if (updates.Count > 1)
                {
                    entities = Entity.UpdatePositions(updates);
                }
                //if (entities != null) entities.ForEach(item => OnEntity(item));
                return;

            case Packet.Rust.EntityDestroy:
                EntityDestroy destroyInfo = new EntityDestroy(packet);
                Entity.CreateOrUpdate(destroyInfo);
                //OnEntityDestroy(destroyInfo);
                return;
            }
            //OnPacket(packet);
        }