Пример #1
0
        public ItemReader(ProcessMemoryReader reader, D2MemoryTable memory) : base(reader, memory)
        {
            cachedItemData     = new Dictionary <IntPtr, D2ItemData>();
            cachedDescriptions = new Dictionary <int, D2ItemDescription>();

            globals          = reader.Read <D2GlobalData>(reader.ReadAddress32(memory.Address.GlobalData, AddressingMode.Relative));
            lowQualityTable  = reader.Read <D2SafeArray>(memory.Address.LowQualityItems, AddressingMode.Relative);
            descriptionTable = reader.Read <D2SafeArray>(memory.Address.ItemDescriptions, AddressingMode.Relative);
            magicModifiers   = reader.Read <ModifierTable>(memory.Address.MagicModifierTable, AddressingMode.Relative);
            rareModifiers    = reader.Read <ModifierTable>(memory.Address.RareModifierTable, AddressingMode.Relative);
            if (globals != null)
            {
                opNestings = reader.ReadArray <ushort>(globals.OpStatNesting, (int)globals.OpStatNestingCount);

                if (ItemStatCost == null && !globals.ItemStatCost.IsNull)
                {
                    ItemStatCost = reader.ReadArray <D2ItemStatCost>(globals.ItemStatCost, (int)globals.ItemStatCostCount);
                }
            }
        }
Пример #2
0
        public static void Start(Process process)
        {
            if (_running)
            {
                return;
            }

            _running = true;

            AdministrativeRights.Ensure();

            if (process == null)
            {
                throw new ArgumentNullException(nameof(process));
            }

            _reader  = new ProcessMemoryReader(process);
            _process = process;

            _cancellationSource = new CancellationTokenSource();
            _pulseTask          = new Task(async() =>
            {
                while (!_cancellationSource.IsCancellationRequested)
                {
                    try
                    {
                        Pulse();
                        await Task.Delay(new TimeSpan(0, 0, 0, 0, 10));
                    }
                    catch (Exception)
                    {
                        _cancellationSource.Cancel();
                        throw;
                    }
                }
            }, _cancellationSource.Token);

            Pulse();
            _pulseTask.Start();
        }
Пример #3
0
    public bool LinkToDosBOX(int floor, int room, int detectedGame)
    {
        if (!TryGetMemoryReader(out ProcessReader))
        {
            return(false);
        }

        if (!FindActorsAddress(detectedGame))
        {
            ProcessReader.Close();
            ProcessReader = null;
            return(false);
        }

        //force reload
        linkfloor = floor;
        linkroom  = room;

        dosBoxPattern = detectedGame - 1;

        return(true);
    }
Пример #4
0
        public void ReadRootNode()
        {
            try
            {
                var MengeCandidateProcess = System.Diagnostics.Process.GetProcessesByName("exefile");

                var EveProcess = MengeCandidateProcess.FirstOrDefault();

                if (null == EveProcess)
                {
                    return;
                }

                MemoryReader   = new ProcessMemoryReader(EveProcess);
                PyMemoryReader = new PythonMemoryReader(MemoryReader);

                RootNode = EveOnline.UIRoot(PyMemoryReader);
            }
            catch (Exception e)
            {
                RootNode = null;
            }
        }
Пример #5
0
        static void Main(string[] args)
        {
            ProcessMemoryReader p = new ProcessMemoryReader();

            if (p.FindProcess("ffxiv_dx11"))
            {
                p.OpenProcess();
                //not found is 0
                Console.WriteLine(p.handle);

                IntPtr ptr = FindWindow(null, "最终幻想XIV");
                //not found is 0
                Console.WriteLine(ptr);
            }

            else
            {
                Console.WriteLine("Not Found");
            }


            Console.ReadLine();
        }
Пример #6
0
    void WriteActorPosition(Box actor, Vector3 lowerBound, Vector3 upperBound, Vector3 localPosition, Vector3 worldPosition)
    {
        ProcessMemoryReader processReader = GetComponent <DosBox>().ProcessReader;

        //get object offset
        int address = GetComponent <DosBox>().GetActorMemoryAddress(actor.Slot);

        //update to memory
        //bounds
        byte[] buffer = new byte[12];
        buffer.Write(lowerBound, upperBound, 0);
        processReader.Write(buffer, address + 8, 12);

        //local+world
        buffer.Write(localPosition, 0);
        buffer.Write(worldPosition, 6);
        processReader.Write(buffer, address + 28, 12);

        actor.LocalPosition = localPosition;
        actor.WorldPosition = worldPosition;
        actor.BoundingLower = lowerBound;
        actor.BoundingUpper = upperBound;
    }
Пример #7
0
    private void WriteActorPosition(Box actor, Vector3 lowerBound, Vector3 upperBound, Vector3 localPosition, Vector3 worldPosition)
    {
        ProcessMemoryReader ProcessReader = GetComponent <DosBox>().ProcessReader;

        //get object offset
        int index = Actors.GetComponentsInChildren <Box>(true).ToList().IndexOf(actor);

        if (index != -1)
        {
            long offset = GetComponent <DosBox>().GetActorMemoryAddress(index);

            //update to memory
            //bounds
            byte[] buffer = new byte[12];
            Utils.WriteShort((int)lowerBound.x, buffer, 0);
            Utils.WriteShort((int)upperBound.x, buffer, 2);
            Utils.WriteShort((int)lowerBound.y, buffer, 4);
            Utils.WriteShort((int)upperBound.y, buffer, 6);
            Utils.WriteShort((int)lowerBound.z, buffer, 8);
            Utils.WriteShort((int)upperBound.z, buffer, 10);
            ProcessReader.Write(buffer, offset + 8, 12);

            //local+world
            Utils.WriteShort((int)localPosition.x, buffer, 0);
            Utils.WriteShort((int)localPosition.y, buffer, 2);
            Utils.WriteShort((int)localPosition.z, buffer, 4);
            Utils.WriteShort((int)worldPosition.x, buffer, 6);
            Utils.WriteShort((int)worldPosition.y, buffer, 8);
            Utils.WriteShort((int)worldPosition.z, buffer, 10);
            ProcessReader.Write(buffer, offset + 28, 12);

            warpActor.LocalPosition = localPosition;
            warpActor.WorldPosition = worldPosition;
            warpActor.BoundingLower = lowerBound;
            warpActor.BoundingUpper = upperBound;
        }
    }
Пример #8
0
        public static void StartMemoryManager(uint BasePointer, string BaseProcessName)
        {
            try
            {
                Pointer     = BasePointer;
                ProcessName = BaseProcessName;

                mReader = new ProcessMemoryReader();
                Process process = Process.GetProcessesByName(ProcessName).ToList().FirstOrDefault();
                if (process != null)
                {
                    mReader.ReadProcess = process;
                    mReader.OpenProcess();
                }
                else
                {
                    throw new Exception("Couldn't find process");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("MemoryManager: Constructor: error " + ex.Message);
            }
        }
Пример #9
0
        // StatCostClassId => looks like statcost is in high bits and class is in low bits
        // example:
        // 00AC0000
        // 00AC => statcost idx
        // 0000 => class id
        public static int GetArrayIndexByStatCostClassId(ProcessMemoryReader r, IntPtr addr, int StatCostClassId)
        {
            D2StatArray statArray    = r.Read <D2StatArray>(addr);
            ushort      statArrayLen = statArray.Length;

            if (statArrayLen < 1)
            {
                return(-1);
            }

            for (int i = statArrayLen - 1; i >= 0; i--)
            {
                // read the itemstatcost
                //
                int value = r.ReadInt32(statArray.Address.Address + i * 8);
                if (value == StatCostClassId)
                {
                    return(i);
                }
            }


            return(-1);
        }
Пример #10
0
        public static IList <Player> GetPlayers(ProcessMemoryReader memoryReader)
        {
            IList <Player> players = new List <Player>();

            for (var i = 0; i < Offsets.MaxEntities; i++)
            {
                var heapAddress = GetHeapAddress(GetEntities(memoryReader), i);

                if (heapAddress != 0)
                {
                    players.Add(new Player()
                    {
                        PlayerId = i,
                        TeamId   = ReadInt(memoryReader, heapAddress, Offsets.EntityTeamId),
                        Health   = ReadInt(memoryReader, heapAddress, Offsets.EntityHealth),
                        X        = ReadSingle(memoryReader, heapAddress, Offsets.EntityCoordinateOffset + 0),
                        Y        = ReadSingle(memoryReader, heapAddress, Offsets.EntityCoordinateOffset + 4),
                        Z        = ReadSingle(memoryReader, heapAddress, Offsets.EntityCoordinateOffset + 8)
                    });
                }
            }

            return(players);
        }
Пример #11
0
        /// <summary>
        /// The thread funktion to poll the telemetry data and send TelemetryUpdated events.
        /// </summary>
        private void Run()
        {
            isStopped = false;

            WFSTAPI lastTelemetryData = new WFSTAPI();

            lastTelemetryData.Reset();
            Matrix4x4 lastTransform  = Matrix4x4.Identity;
            bool      lastFrameValid = false;
            Vector3   lastVelocity   = Vector3.Zero;
            float     lastYaw        = 0.0f;
            Stopwatch sw             = new Stopwatch();

            sw.Start();

            NestedSmooth accXSmooth = new NestedSmooth(3, 6, 0.5f);
            NestedSmooth accYSmooth = new NestedSmooth(3, 6, 0.5f);
            NestedSmooth accZSmooth = new NestedSmooth(3, 6, 0.5f);

            KalmanFilter velXFilter = new KalmanFilter(1, 1, 0.02f, 1, 0.02f, 0.0f);
            KalmanFilter velZFilter = new KalmanFilter(1, 1, 0.02f, 1, 0.02f, 0.0f);

            NoiseFilter velXSmooth = new NoiseFilter(6, 0.5f);
            NoiseFilter velZSmooth = new NoiseFilter(6, 0.5f);

            KalmanFilter yawRateFilter = new KalmanFilter(1, 1, 0.02f, 1, 0.02f, 0.0f);
            NoiseFilter  yawRateSmooth = new NoiseFilter(6, 0.5f);

            NoiseFilter pitchFilter = new NoiseFilter(3);
            NoiseFilter rollFilter  = new NoiseFilter(3);
            NoiseFilter yawFilter   = new NoiseFilter(3);

            KalmanFilter posXFilter = new KalmanFilter(1, 1, 0.02f, 1, 0.1f, 0.0f);
            KalmanFilter posYFilter = new KalmanFilter(1, 1, 0.02f, 1, 0.1f, 0.0f);
            KalmanFilter posZFilter = new KalmanFilter(1, 1, 0.02f, 1, 0.1f, 0.0f);

            NestedSmooth posXSmooth = new NestedSmooth(12, 6, 0.5f);
            NestedSmooth posYSmooth = new NestedSmooth(12, 6, 0.5f);
            NestedSmooth posZSmooth = new NestedSmooth(12, 6, 0.5f);



            NoiseFilter slipAngleSmooth = new NoiseFilter(6, 0.25f);

            ProcessMemoryReader reader = new ProcessMemoryReader();

            reader.ReadProcess = wfstProcess;
            uint readSize = 4 * 4 * 4;

            byte[] readBuffer = new byte[readSize];
            reader.OpenProcess();

            while (!isStopped)
            {
                try
                {
                    float dt = (float)sw.ElapsedMilliseconds / 1000.0f;


                    int byteReadSize;
                    reader.ReadProcessMemory((IntPtr)memoryAddress, readSize, out byteReadSize, readBuffer);


                    if (byteReadSize == 0)
                    {
                        continue;
                    }

                    float[] floats = new float[4 * 4];

                    Buffer.BlockCopy(readBuffer, 0, floats, 0, readBuffer.Length);

                    Matrix4x4 transform = new Matrix4x4(floats[0], floats[1], floats[2], floats[3]
                                                        , floats[4], floats[5], floats[6], floats[7]
                                                        , floats[8], floats[9], floats[10], floats[11]
                                                        , floats[12], floats[13], floats[14], floats[15]);



                    Vector3 rht = new Vector3(transform.M11, transform.M12, transform.M13);
                    Vector3 up  = new Vector3(transform.M21, transform.M22, transform.M23);
                    Vector3 fwd = new Vector3(transform.M31, transform.M32, transform.M33);

                    float rhtMag = rht.Length();
                    float upMag  = up.Length();
                    float fwdMag = fwd.Length();

                    //reading garbage
                    if (rhtMag < 0.9f || upMag < 0.9f || fwdMag < 0.9f)
                    {
                        IsConnected = false;
                        IsRunning   = false;
                        TelemetryLost();
                        break;
                    }

                    if (!lastFrameValid)
                    {
                        lastTransform  = transform;
                        lastFrameValid = true;
                        lastVelocity   = Vector3.Zero;
                        lastYaw        = 0.0f;
                        continue;
                    }

                    WFSTAPI telemetryData = new WFSTAPI();

                    if (dt <= 0)
                    {
                        dt = 1.0f;
                    }


                    Vector3 worldVelocity = (transform.Translation - lastTransform.Translation) / dt;
                    lastTransform = transform;

                    Matrix4x4 rotation = new Matrix4x4();
                    rotation     = transform;
                    rotation.M41 = 0.0f;
                    rotation.M42 = 0.0f;
                    rotation.M43 = 0.0f;

                    Matrix4x4 rotInv = new Matrix4x4();
                    Matrix4x4.Invert(rotation, out rotInv);

                    Vector3 localVelocity = Vector3.Transform(worldVelocity, rotInv);

                    telemetryData.velX = worldVelocity.X;
                    telemetryData.velZ = worldVelocity.Z;

                    Vector3 localAcceleration = localVelocity - lastVelocity;
                    lastVelocity = localVelocity;


                    telemetryData.accX = localAcceleration.X * 10.0f;
                    telemetryData.accY = localAcceleration.Y * 100.0f;
                    telemetryData.accZ = localAcceleration.Z * 10.0f;


                    float pitch = (float)Math.Asin(-fwd.Y);
                    float yaw   = (float)Math.Atan2(fwd.X, fwd.Z);

                    float   roll     = 0.0f;
                    Vector3 rhtPlane = rht;
                    rhtPlane.Y = 0;
                    rhtPlane   = Vector3.Normalize(rhtPlane);
                    if (rhtPlane.Length() <= float.Epsilon)
                    {
                        roll = -(float)(Math.Sign(rht.Y) * Math.PI * 0.5f);
                    }
                    else
                    {
                        roll = -(float)Math.Asin(Vector3.Dot(up, rhtPlane));
                    }

                    telemetryData.pitchPos = pitch;
                    telemetryData.yawPos   = yaw;
                    telemetryData.rollPos  = roll;

                    telemetryData.yawRate = CalculateAngularChange(lastYaw, yaw) * (180.0f / (float)Math.PI);
                    lastYaw = yaw;

                    // otherwise we are connected
                    IsConnected = true;

                    if (IsConnected)
                    {
                        IsRunning = true;


                        WFSTAPI telemetryToSend = new WFSTAPI();
                        telemetryToSend.Reset();

                        telemetryToSend.CopyFields(telemetryData);

                        telemetryToSend.accX = accXSmooth.Filter(telemetryData.accX);
                        telemetryToSend.accY = accYSmooth.Filter(telemetryData.accY);
                        telemetryToSend.accZ = accZSmooth.Filter(telemetryData.accZ);


                        telemetryToSend.pitchPos = pitchFilter.Filter(telemetryData.pitchPos);
                        telemetryToSend.rollPos  = rollFilter.Filter(telemetryData.rollPos);
                        telemetryToSend.yawPos   = yawFilter.Filter(telemetryData.yawPos);

                        telemetryToSend.velX = velXSmooth.Filter(velXFilter.Filter(telemetryData.velX));
                        telemetryToSend.velZ = velZSmooth.Filter(velZFilter.Filter(telemetryData.velZ));

                        telemetryToSend.yawRate = yawRateSmooth.Filter(yawRateFilter.Filter(telemetryData.yawRate));

                        telemetryToSend.yawAcc = slipAngleSmooth.Filter(telemetryToSend.CalculateSlipAngle());

                        sw.Restart();

                        TelemetryEventArgs args = new TelemetryEventArgs(
                            new WFSTTelemetryInfo(telemetryToSend, lastTelemetryData));
                        RaiseEvent(OnTelemetryUpdate, args);

                        lastTelemetryData = telemetryToSend;
                        Thread.Sleep(1000 / 100);
                    }
                    else if (sw.ElapsedMilliseconds > 500)
                    {
                        IsRunning = false;
                    }
                }
                catch (Exception e)
                {
                    LogError("WFSTTelemetryProvider Exception while processing data", e);
                    IsConnected = false;
                    IsRunning   = false;
                    Thread.Sleep(1000);
                }
            }

            IsConnected = false;
            IsRunning   = false;
            reader.CloseHandle();
        }
Пример #12
0
 private static float ReadSingle(ProcessMemoryReader memoryReader, int baseaddress, int offset)
 {
     return(BitConverter.ToSingle(memoryReader.ReadProcessMemory((IntPtr)(baseaddress + offset), 4, out int _), 0));
 }
Пример #13
0
 private static int ReadInt(ProcessMemoryReader memoryReader, int baseaddress, int offset)
 {
     return(BitConverter.ToInt32(memoryReader.ReadProcessMemory((IntPtr)(baseaddress + offset), 4, out int _), 0));
 }
Пример #14
0
 private static byte[] GetEntities(ProcessMemoryReader memoryReader)
 {
     return(memoryReader.ReadProcessMemory((IntPtr)(Offsets.ClientBaseAddress + Offsets.EntityListBaseAddress), (uint)(Offsets.MaxEntities * Offsets.EntityLength), out int _));
 }
Пример #15
0
 public void SearchForPatterns(ProcessMemoryReader reader)
 {
     varsMemoryAddress  = reader.SearchForBytePattern(varsMemoryPattern);
     cvarsMemoryAddress = reader.SearchForBytePattern(cvarsMemoryPattern);
 }
Пример #16
0
        public static void SetProcessMemoryReader()
        {
            preader = new ProcessMemoryReader(CampahStatus.Instance.process.Id);
            IntPtr pointer = sigscan(Constants.AH_SIG);//+Constants.AH_OFFSETS[0];

            for (int i = 0; i < Constants.AH_OFFSETS.Length; i++)
                pointer = readPointer(pointer, Constants.AH_OFFSETS[i]);

            AhStructPointer = pointer;
            //            IntPtr pointer2 = sigscan(Constants.MENU_SIG, false);
            //            BidValue = 1000;
            //            String pstr = ((int)pointer2).ToString("X4");
            //            IntPtr pointer3 = sigscan(pstr.Substring(6) + pstr.Substring(4, 2) + pstr.Substring(2, 2) + pstr.Substring(0, 2));
            //            MenuStructPointer = (IntPtr)((int)pointer2 + Constants.MENU_OFFSET);
            BidValPointer = readPointer(readPointer(sigscan(Constants.BIDVAL_SIG),0),0);
        }
Пример #17
0
 internal void hackHealth(ProcessMemoryReader mem)
 {
     mem.WriteInt(base_addr + health_offset, 1000); // 체력 1000으로...
 }
 public FFVIIIMemoryAddresses(IntPtr ProcessAddress, ref ProcessMemoryReader MemReader)
 {
     ProcessBaseAddress = ProcessAddress;
     reader             = MemReader;
 }
Пример #19
0
        public static void SetProcessMemoryReader()
        {
            _preader = new ProcessMemoryReader(CampahStatus.Instance.process.Id);
            var pointer = SigScan(Constants.AH_SIG);//+Constants.AH_OFFSETS[0];

            pointer = Constants.AH_OFFSETS.Aggregate(pointer, ReadPointer);

            AhStructPointer = pointer;
            BidValPointer = ReadPointer(ReadPointer(SigScan(Constants.BIDVAL_SIG), 0), 0);

            MenuStructurePointer = new IntPtr(SigScan(Constants.MENU_SIG).ToInt32() + 10);
        }
Пример #20
0
 public WowObject(ProcessMemoryReader reader, uint objectBaseAddress)
 {
     _reader           = reader;
     BaseAddress       = objectBaseAddress;
     UnitFieldsAddress = _reader.ReadUInt(BaseAddress + (uint)Offsets.WowObjectManager.DESCRIPTOR);
 }
Пример #21
0
        public void UpdateItemStats(ProcessMemoryReader r, D2MemoryTable memory, D2Unit pl)
        {
            InventoryReader inventoryReader = new InventoryReader(r, memory);
            UnitReader      unitReader      = new UnitReader(r, memory);

            // Build filter to get only equipped items.
            Func <D2ItemData, bool> filter = data => data.BodyLoc != BodyLocation.None;

            foreach (D2Unit item in inventoryReader.EnumerateInventory(filter))
            {
                List <D2Stat> itemStats = unitReader.GetStats(item);
                if (itemStats == null)
                {
                    continue;
                }

                StringBuilder statBuilder = new StringBuilder();
                statBuilder.Append(inventoryReader.ItemReader.GetFullItemName(item));

                statBuilder.Append("\n");
                List <string> magicalStrings = inventoryReader.ItemReader.GetMagicalStrings(item);
                foreach (string str in magicalStrings)
                {
                    statBuilder.Append("    ");
                    statBuilder.Append(str);
                    statBuilder.Append("\n");
                }

                Control    c        = null;
                D2ItemData itemData = r.Read <D2ItemData>(item.UnitData);
                switch (itemData.BodyLoc)
                {
                case BodyLocation.Head: c = tabPageHead; break;

                case BodyLocation.Amulet: c = tabPageAmulet; break;

                case BodyLocation.BodyArmor: c = tabPageBody; break;

                case BodyLocation.PrimaryRight: c = tabPageWeaponRight; break;

                case BodyLocation.PrimaryLeft: c = tabPageWeaponLeft; break;

                case BodyLocation.RingRight: c = tabPageRingRight; break;

                case BodyLocation.RingLeft: c = tabPageRingLeft; break;

                //case BodyLocation.SecondaryLeft: c = tabPageRingRight; break;
                //case BodyLocation.SecondaryRight: c = tabPageRingLeft; break;
                case BodyLocation.Belt: c = tabPageBelt; break;

                case BodyLocation.Boots: c = tabPageFeet; break;

                case BodyLocation.Gloves: c = tabPageHand; break;
                }
                if (c != null)
                {
                    if (c.Controls.Count == 0)
                    {
                        c.Invoke(new Action(delegate() {
                            c.Controls.Add(new RichTextBox());
                            c.Controls[0].Dock = DockStyle.Fill;
                        }));
                    }
                    c.Controls[0].Invoke(new Action(() => c.Controls[0].Text = statBuilder.ToString()));
                }
            }
        }
Пример #22
0
 public CommandManager(Process process, ProcessMemoryReader reader)
 {
     _process = process;
     _reader  = reader;
 }
Пример #23
0
        public void Update()
        {
            if (m_GameProcess == null || m_GameProcess.HasExited)
            {
                if (m_SkipUpdates > 0)
                {
                    --m_SkipUpdates;
                    return;
                }

                m_SkipUpdates = 4;

                m_GameProcess = null;
                Active        = false;

                if (Reader != null)
                {
                    Reader.CloseHandle();
                    Reader = null;
                }

                if (m_Injector != null)
                {
                    m_Injector.Dispose();
                    m_Injector = null;
                }

                var s_Processes = Process.GetProcessesByName("HitmanBloodMoney");

                if (s_Processes.Length == 0)
                {
                    return;
                }

                // We always select the first process.
                m_GameProcess = s_Processes[0];

                // Setup our Memory Reader.
                Reader = new ProcessMemoryReader(m_GameProcess);

                try
                {
                    if (Reader.OpenProcess())
                    {
                        m_SkipUpdates = 0;
                        Active        = true;

                        // Create our injector and inject our stat module.
                        m_Injector = new Injector(m_GameProcess, false);
                        m_Injector.InjectLibrary("HM3.dll");

                        // Setup our main control.
                        MainApp.MainWindow.Dispatcher.Invoke(() =>
                        {
                            Control = new MainControl();
                        });

                        // Setup our engine-specific classes.
                        StatTracker = new StatTracker(this);
                        TimeTracker = new TimeTracker(this);

                        // Update level labels.
                        CurrentLevel      = "No Level";
                        CurrentLevelScene = "No Level";
                        InGame            = false;

                        Control.SetCurrentLevel(CurrentLevel);
                        Control.SetCurrentLevelScene(CurrentLevelScene);

                        // Set our control in the main window.
                        InitMenuItems();
                        MainApp.MainWindow.SetEngineControl(Control, m_MenuItems);
                    }
                }
                catch (Exception)
                {
                    m_GameProcess = null;
                    Active        = false;
                }
            }

            if (!Active)
            {
                return;
            }

            // Update our trackers.
            TimeTracker.Update();
            StatTracker.Update();

            // Set game time.
            if (StatTracker.CurrentStats.m_Time > 0 || !InGame)
            {
                Control.SetCurrentTime(StatTracker.CurrentStats.m_Time);
            }
            else
            {
                Control.SetCurrentTime(TimeTracker.CurrentTime);
            }
        }
Пример #24
0
 public UnitReader(ProcessMemoryReader reader, GameMemoryTable memory)
 {
     this.reader  = reader;
     this.memory  = memory;
     stringReader = new StringLookupTable(reader, memory.Address);
 }
Пример #25
0
 public StringLookupTable(ProcessMemoryReader reader, GameMemoryAddressTable memory)
 {
     this.reader = reader;
     this.memory = memory;
 }
Пример #26
0
 internal float getAimErr(ProcessMemoryReader mem, double _x_angle, double _y_angle)
 {
     return(Double2Float(Math.Pow(x_angle - _x_angle, 2) + Math.Pow(y_angle - _y_angle, 2)));
 }
Пример #27
0
 public WowUnit(ProcessMemoryReader reader, uint objectBaseAddress)
     : base(reader, objectBaseAddress)
 {
     _reader            = reader;
     _objectBaseAddress = objectBaseAddress;
 }
Пример #28
0
 public InventoryReader(ProcessMemoryReader reader, ItemReader itemReader)
 {
     processReader = reader;
     ItemReader    = itemReader;
 }
Пример #29
0
 internal void hackAmmo(ProcessMemoryReader mem)
 {
     mem.WriteInt(base_addr + ammo_offset, 1000); // 탄약 1000으로...
 }
Пример #30
0
 public void UnlinkDosBox()
 {
     ProcessReader.Close();
     ProcessReader  = null;
     RightText.text = string.Empty;
 }
Пример #31
0
 public InventoryReader(ProcessMemoryReader reader, D2MemoryTable memory)
 {
     processReader = reader;
     this.memory   = memory;
     itemReader    = new ItemReader(processReader, memory);
 }
Пример #32
0
 public static UIRect TranslateToClientRect(this UIRect rect, ProcessMemoryReader processMemory)
 {
     return(rect.TranslateToClientRect(processMemory.Process.MainWindowHandle));
 }