示例#1
0
        private void InfoThread()
        {
            // offset
            int controllerOffset, posOffset, healthOffset, nameOffset, teamIDOffset, poseOffset, statusOffset;

            controllerOffset = 96;
            posOffset        = 336;
            healthOffset     = 1928;
            nameOffset       = 1512;
            teamIDOffset     = 1552;
            statusOffset     = 868;
            poseOffset       = 288;
            while (true)
            {
                // Read Basic Offset
                uWorlds          = Mem.ReadMemory <int>(uWorld);
                uLevel           = Mem.ReadMemory <int>(uWorlds + 32);
                gameInstance     = Mem.ReadMemory <int>(uWorlds + 36);
                playerController = Mem.ReadMemory <int>(gameInstance + controllerOffset);
                playerCarry      = Mem.ReadMemory <int>(playerController + 32);
                uMyObject        = Mem.ReadMemory <int>(playerCarry + 792); //788 old value
                //uMyself = Mem.ReadMemory<int>(uLevel + 124);
                //uMyself = Mem.ReadMemory<int>(uMyself + 36);
                //uMyself = Mem.ReadMemory<int>(uMyself + 312);
                //uCamera = Mem.ReadMemory<int>(playerCarry + 804) + 832;
                //uCursor = playerCarry + 732;
                //myWorld = Mem.ReadMemory<int>(uMyObject + 312);
                //myObjectPos = Mem.ReadMemory<Vector3>(myWorld + posOffset);
                entityEntry = Mem.ReadMemory <int>(uLevel + 112);
                entityCount = Mem.ReadMemory <int>(uLevel + 116);
                // Initilize Display Data
                DisplayData        data        = new DisplayData(viewWorld, uMyObject);
                List <PlayerData>  playerList  = new List <PlayerData>();
                List <ItemData>    itemList    = new List <ItemData>();
                List <VehicleData> vehicleList = new List <VehicleData>();
                List <BoxData>     boxList     = new List <BoxData>();
                List <GrenadeData> grenadeList = new List <GrenadeData>();
                for (int i = 0; i < entityCount; i++)
                {
                    long   entityAddv   = Mem.ReadMemory <int>(entityEntry + i * 4);
                    long   entityStruct = Mem.ReadMemory <int>(entityAddv + 16);
                    string entityType   = GameData.GetEntityType(gNames, entityStruct);
                    if (Settings.PlayerESP)
                    {
                        // if entity is player
                        if (GameData.IsPlayer(entityType))
                        {
                            //Console.WriteLine(entityType);
                            long playerWorld = Mem.ReadMemory <int>(entityAddv + 312);
                            // read player info
                            // dead player continue
                            int status = Mem.ReadMemory <int>(playerWorld + statusOffset);

                            if (status == 6)
                            {
                                continue;
                            }
                            // my team player continue
                            //int isTeam = Mem.ReadMemory<int>(Mem.ReadMemory<int>(Mem.ReadMemory<int>(entityAddv + 724 + 4)) + 20);
                            //if (isTeam > 0)
                            //    continue;
                            Mem.WriteMemory <int>(Mem.ReadMemory <int>(uMyObject + 2656) + 352, 300000);

                            string name = Encoding.Unicode.GetString(Mem.ReadMemory(Mem.ReadMemory <int>(entityAddv + nameOffset), 32));
                            name = name.Substring(0, name.IndexOf('\0'));
                            PlayerData playerData = new PlayerData
                            {
                                Type     = entityType,
                                Address  = entityAddv,
                                Position = Mem.ReadMemory <ShpVector3>(playerWorld + posOffset),
                                Status   = status,
                                Pose     = Mem.ReadMemory <int>(playerWorld + poseOffset),
                                IsRobot  = Mem.ReadMemory <int>(entityAddv + 692) == 0 ? true : false,
                                Health   = Mem.ReadMemory <float>(entityAddv + healthOffset),
                                Name     = name,
                                TeamID   = Mem.ReadMemory <int>(entityAddv + teamIDOffset),
                                //IsTeam = isTeam
                            };
                            if (playerData.Address == uMyObject || playerData.Address == uMyself)
                            {
                                myTeamID = playerData.TeamID;
                                continue;
                            }
                            if (playerData.TeamID == myTeamID)
                            {
                                continue;
                            }
                            //Console.WriteLine(entityType);
                            playerList.Add(playerData);
                            continue;
                        }
                    }
                    if (Settings.ItemESP)
                    {
                        // check if this entity is item
                        Item item = GameData.GetItemType(entityType);
                        if (item != Item.Useless)
                        {
                            // Read Item Info
                            ItemData itemData = new ItemData
                            {
                                Name     = item.GetDescription(),
                                Position = Mem.ReadMemory <ShpVector3>(Mem.ReadMemory <int>(entityAddv + 312) + posOffset),
                                Type     = item
                            };
                            itemList.Add(itemData);
                        }
                        // check if this entity is box
                        if (GameData.IsBox(entityType))
                        {
                            // Read Box Info
                            long    boxEntity = Mem.ReadMemory <int>(entityAddv + 312);
                            BoxData boxData   = new BoxData();
                            boxData.Position = Mem.ReadMemory <ShpVector3>(boxEntity + posOffset);
                            boxList.Add(boxData);
                            continue;
                        }
                    }
                    if (Settings.VehicleESP)
                    {
                        Vehicle vehicle = GameData.GetVehicleType(entityType);
                        if (vehicle != Vehicle.Unknown)
                        {
                            // Read Vehicle Info
                            VehicleData vehicleData = new VehicleData
                            {
                                Position = Mem.ReadMemory <ShpVector3>(Mem.ReadMemory <int>(entityAddv + 312) + posOffset),
                                Type     = vehicle,
                                Name     = vehicle.GetDescription()
                            };
                            vehicleList.Add(vehicleData);
                            continue;
                        }
                    }
                    // check if the entity is a grenade
                    Grenade grenade = GameData.GetGrenadeType(entityType);
                    if (grenade != Grenade.Unknown)
                    {
                        long        grenadeEntity = Mem.ReadMemory <int>(entityAddv + 312);
                        GrenadeData greData       = new GrenadeData
                        {
                            Type     = grenade,
                            Position = Mem.ReadMemory <ShpVector3>(grenadeEntity + posOffset)
                        };
                        grenadeList.Add(greData);
                    }
                }
                data.Players  = playerList.ToArray();
                data.Items    = itemList.ToArray();
                data.Vehicles = vehicleList.ToArray();
                data.Boxes    = boxList.ToArray();
                data.Grenades = grenadeList.ToArray();
                espForm.UpdateData(data);
                aimbotForm.UpdateData(data);
                Thread.Sleep(10);
            }
        }