Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Runes of Magic hp и mp

-

Школа Читера

- Основы основ - начинаем писать статьи для начинающих с целью создания полноценного раздела

Ответ
 
Опции темы
Старый 25.03.2011, 05:25   #1
 Разведчик
Аватар для eXziiii
 
eXziiii никому не известный тип
Регистрация: 09.02.2011
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Runes of Magic hp и mp

Здравствуйте, нашел baseadress и offset hp и mp
Взял для базы код от Бота для PW который тут лежит.
http://www.zhyk.ru/forum/showthread.php?t=106690
Хочу что бы он мне отобразил мои hp и mp. Подправил код чуть чуть. А он всегда выдает 0\0 и 0\0.
В чем может быть беда?
У меня еще есть 1 offset который я не где не указываю 0x598, может дело в этом?
Спасибо
Вот код.
Код:
        // Объявление события
        public event EventHandler InfoUpdated;
        // Метод, который вызывает событие
        private void OnInfoUpdated(object sender, EventArgs e)
        {
            if (InfoUpdated != null) InfoUpdated(sender, e);
        }

        // Импортируем функцию для чтения памяти чужого процесса 
        // из kernel32
        [DllImport("kernel32.dll")]
        public static extern Int32 ReadProcessMemory(
            IntPtr hProcess,
            IntPtr lpBaseAddress,
            [In, Out] byte[] buffer,
            UInt32 size,
            out IntPtr lpNumberOfBytesRead
            );

        // Определение базового адреса и оффсетов
        // для текущей версии клиента руоффа (130)
        private int baseAddress = 0x5BC394,
                    offsetHP = 0x2C8,
                    offsetMP = 0x2D4,
                    offsetMaxHP = 0x2D0,
                    offsetMaxMP = 0x2D8;

        // Служебная переменная для хранения PID процесса
        private Int32 PID = 0;
        private Timer updateTimer;

        // Свойство, для хранения текущего HP
        public Int32 HP { get; set; }
        // Свойство, для хранения текущего MP
        public Int32 MP { get; set; }
        // по аналогии
        public Int32 MaxHP { get; set; }
        // по аналогии
        public Int32 MaxMP { get; set; }

        public Monitor(int pid)
        {
            this.PID = pid;

            updateTimer = new Timer();
            updateTimer.Enabled = true;
            updateTimer.Interval = 500;
            updateTimer.Tick += new EventHandler(updateTimer_Tick);
        }

        /// <summary>
        /// Данный метод вызывается каждый тик таймера
        /// Здесь происходит чтение из памяти клиента значений
        /// жизни и маны
        /// </summary>
        private void updateTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                if (PID != 0)
                {
                    IntPtr handle = Process.GetProcessById(PID).Handle;

                    HP = HighLevelReadIntFromMemory(handle, offsetHP);
                    MP = HighLevelReadIntFromMemory(handle, offsetMP);
                    MaxHP = HighLevelReadIntFromMemory(handle, offsetMaxHP);
                    MaxMP = HighLevelReadIntFromMemory(handle, offsetMaxMP);

                    OnInfoUpdated(this, new EventArgs());
                }
            }
            catch (Exception ex)
            {
                updateTimer.Enabled = false;
                MessageBox.Show(ex.Message);
            }
        }

        /// <summary>
        /// Читаем Int'овое значение из памяти приложения 
        /// с указанным оффсетом
        /// </summary>
        private Int32 HighLevelReadIntFromMemory(IntPtr handle, int offset)
        {
            byte[] buffer = new byte[0];
            IntPtr read = IntPtr.Zero;
            int temp = 0;
            temp = LowLevelReadIntFromMemory(handle, baseAddress);
            temp = LowLevelReadIntFromMemory(handle, temp + 0x20);
            temp = LowLevelReadIntFromMemory(handle, temp + offset);
            return temp;
        }

        /// <summary>
        /// Читаем из памяти приложения массив байт по указанному адресу
        /// и возвращаем целочисленное его представление
        /// </summary>
        private Int32 LowLevelReadIntFromMemory(IntPtr handle, int address)
        {
            byte[] buffer = new byte[4];
            IntPtr read = IntPtr.Zero;
            ReadProcessMemory(handle, (IntPtr)address, buffer, 4, out read);
            return (int)BitConverter.ToUInt32(buffer, 0);
        }

Последний раз редактировалось eXziiii; 25.03.2011 в 20:06.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Программа] Читы для Runes of Magic!!! Sergey007iv Прочее 7 28.06.2017 07:08
Runes of Magic nybegblya Прочее 2 24.05.2014 16:47
[Помогите!] Runes of Magic Neffas Школа Читера 2 26.12.2010 10:04
[Программа] Runes of Magic Cheats tblpka Прочее 0 24.10.2010 08:34

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 00:02.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net