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); }
private static void EntityDestroyed(EntityDestroy enty) { //Console.WriteLine("Entity destroyed"); }
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; } } } }
public abstract void OnEntityDestroy(EntityDestroy destroyInfo);
public override void OnEntityDestroy(EntityDestroy destroyInfo) { this.radar.DeleteOthers(destroyInfo.UID); //Console.WriteLine("Entity with UID({0}) got destroyed :'(", destroyInfo.UID); }
//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); }