HWND Hwnd = NULL; //
DWORD Pid = NULL; //
HANDLE Proc = NULL; //
DWORD Buf = NULL; // Буфер (перед чт.зн.памяти Нужно обяз.приравнивать к 0 или к значению)
DWORD Base = 0x0098B47C; // 0098b47c 10007676 (старый 0x009771bc 9925052) Базовый Адрес Данных Клиента
// ПЕРСОНАЖ -----------------------------------------------------------------
DWORD Pers = NULL; // Адр. Начала данных Перса (BASE + 32)
CString ChName = ""; // Имя Перса
DWORD _ChName = 0x5F4; // 1524 Смещение к адр. по кот.лежит Имя Перса от начала данных Перса (PERS)
DWORD CharID = NULL; // ID Перса
DWORD _CharID = 0x450; // 1104 Смещение к адр.ID Перса
BYTE CharLEV = 0; // Значение Уровня Перса в Игре
DWORD _CharLEV = 0x45C; // 1116 Смещение к адр.Уровня Перса
DWORD CharTID = NULL; // ID цели Перса (Прицел)
DWORD _CharTID = 0xADC; // 0x0ADC 2780 (старое 0x0A68 2664) Смещение к адр.Прицела Перса
float CharHP = 0.0; // Значение Жизненной Силы Перса (можно и DWORD - float это для согласования с показанием % прогресс-бара)
DWORD _CharHP = 0x464; // 1124 Смещение к адр.HP Перса
float CharMxHP = 0.0; // Значение Макс.Жизненной Силы Перса
DWORD _CharMxHP = 0x494; // 1172 Смещение к адр.Макс.HP Перса
float CharPrHP = 0.0; // Значение Жизненной Силы Перса в процентах
float CharMP = 0.0; // Значение Магической Энергии Перса
DWORD _CharMP = 0x468; // 1128 Смещение к адр.MP Перса
float CharMxMP = 0.0; // Значение Макс.Магической Энергии Перса
DWORD _CharMxMP = 0x498; // 1176 Смещение к адр.Макс.MP Перса
float CharPrMP = 0.0; // Значение Магической Энергии Перса в процентах
float CharDamage = 0.0; // Значение нанесенного Ущерба Персу в процентах
WORD CharX = 0; // Значение Координаты X Перса в Игре - это координата в Игре - она целое число
float CharXX = 0.0; // Значение Координаты X Перса в Памяти Клиента - Для координат в памяти точно нужен float
DWORD _CharXX = 0x3C; // 60 Смещение к адр.Координаты X Перса
WORD CharY = 0; // Значение Координаты Y Перса в Игре
float CharYY = 0.0; // Значение Координаты Y Перса в Памяти
DWORD _CharYY = 0x44; // 68 Смещение к адр.Координаты Y Перса
WORD CharZ = 0; // Значение Координаты Z Перса в Игре
float CharZZ = 0.0; // Значение Координаты Z Перса в Памяти
DWORD _CharZZ = 0x40; // 64 Смещение к адр.Координаты Z Перса
// МОНСТР -------------------------------------------------------------------
// Base + 8 + 36 + 24 + .. Начало данных Моба из записи => [BA] + 8 + 36 + 24 + (i * 4) + 4 + .. (где i от 0 до 768)
DWORD Mobs = NULL; // Адр. Начала данных Моба
CString MobName = ""; // Имя Моба
DWORD _MobName = 0x23c; // 572 + 0 Смещение к адр. по кот.лежит Имя Моба от начала данных Моба (Mobs)
DWORD MobID = NULL; // ID Моба
DWORD _MobID = 0x11C; // 284 Смещение к адр.ID Моба
BYTE MobTP = 0; // Значение Типа Моба (6-монстр 7-NPS 9-питомец)
DWORD _MobTP = 0xB4; // 180 Смещение к адр.Типа Моба
BYTE MobLEV = 0; // Значение Уровня Моба
DWORD _MobLEV = 0x124; // 292 Смещение к адр.Уровня Моба
DWORD MobTID = 0x0; // ID цели Моба - Занят Монстр - TRUE
DWORD _MobTID = 0x2C4; // 708 Смещение к адр.Прицела Моба
float MobHP = 0.0; // Значение Жизненной Силы Моба
DWORD _MobHP = 0x464; // 1124 ? Смещение к адр.HP Моба
float MobMxHP = 0.0; // Значение Макс.Жизненной Силы Моба
DWORD _MobMxHP = 0x498; // 1176 ? Смещение к адр.Макс.HP Моба
float MobPrHP = 0.0; // Значение Жизненной Силы Моба в процентах
WORD MobX = 0; // Значение Координаты X Моба в Игре
float MobXX = 0.0; // Значение Координаты X Моба в Памяти Клиента
DWORD _MobXX = 0x3C; // 60 Смещение к адр.Координаты X Моба
WORD MobY = 0; // Значение Координаты Y Моба в Игре
float MobYY = 0.0; // Значение Координаты Y Моба в Памяти
DWORD _MobYY = 0x44; // 68 Смещение к адр.Координаты Y Моба
WORD MobZ = 0; // Значение Координаты Z Моба в Игре
float MobZZ = 0.0; // Значение Координаты Z Моба в Памяти
DWORD _MobZZ = 0x40; // 64 Смещение к адр.Координаты Z Моба
WORD MobDIS = 0; // Значение Дистанции до Моба в единицах координат игры
float MobDDD = 0.0; // Значение Дистанции до Моба в Памяти
DWORD _MobDIS = 0x260; // 608 Смещение к адр.Дистанции до Моба
Стартовый Проект на VC++ 6.0 - это не VC++ 2005-2008 - в 6-ом свое правило составления проектов, поэтому если будете пробывать то нужен именно 6-ой Визуал - он небольшой 170 мегов - всюду можно скачать с Инета, к нему еще надо будет библу красивых элементов управления ActivX Control скачать тоже есть в Инете. Тем кто осваивают 8-9 Визуал - нужно будет переводить проект на них
Конечно это не то, что у меня есть в полном объеме, потому-что не все там налажено на 100%, а выложил то что работает и с простыми элементами управления, конечно недоделки - каждый доделает сам, лучше ведь можно сделать и нужно делать лучше - я не специалист какой-нить, но многие не знают с чего начать строить проект - пусть эта моя работа будет им отправной точкой .. надеюсь меня не будут обсуждать, потому-что обсуждать можно любой код, даже если его написал-бы - Профи ..))
..PS.. в папке Release есть EXE-шка проекта - это не готовый Бот - это начальный этап разработки..
Качаю... Может, кому тоже пригодится VC 6.0 -
Не я ложил, поэтому проверяйте. Origmas, если не трудно, обьясни отличия 6-го от 2008. У меня было мнение, что существует совместимость сверху вниз, но ты ее только что опроверг... Стоит 2008, через минут 40 докачаю 6.0, попробую открыть и там и там.
Попробовал открыть в 2008 как проект - пишет файл повлежден, значит, совместимости нет...
... было мнение, что существует совместимость сверху вниз
Язык программирования везде один С++ но существуют разные среды разработки Borland, VC++ 6, VC++ 8 ....
Всюду свое устройство проекта, свои заголовочные файлы - своя компановка рессурсов (панелей, элементов, изображений).
Очень трудно перевести проект из одной среды в другую - нет никакой совместимости ... Только руками ...
Ни Русские, ни Китайцы, ни Англичане - никогда не страдали от того что они разговаривают на своем языке - это никак не портит их жизнь и развитие ... Не унижает, не ограничивает и не мозготрахает ..
Да нп Просто мне для работы над этой задачей пришлось слезть со своего любимого Delphi7. Я-то победил и в нем все проблемы - но это оказалось гораздо неудобнее, чем пользоваться D2010.
а нам всегда или Х... длиннен или рубашка коротка ..))
именно надо работать а не приспосабливаться .. Дельфи рулил и будет рулить - Отличная среда разработки, гибкий Язык, много запчастей нв любой СТО ..
Хочу сказать огромное спасибо всем в этой ветке, а также многим другим людям, которые, выложив свой код в свободный доступ, помогли разобраться с тонкостями взаимодействия с чужими процессами. Эти задачки доставили мне уйму занимательного времени изучения чего-то нового.
В результате выродилось у меня некое чудо.
Что это? Это stand-alone швейцарский ножик для работы с элемент-клиентом. Например:
"Хочу получить окно клиента!"
Code:
var
aPWWindow: TaPWWindow;
CurrentHandle, PreviousHandle : HWND;
begin
aPWT.FindClientWindow(0, '', CurrentHandle, aPWWindow);
ShowMessage(aPWWindow.Name);
Имею всю информацию об окне.
"Хочу знать кто в локе!"
Code:
var
aPlayersArray: TaPlayersArray;
begin
aPlayersArray := aPWT.GetLocationPlayers(aPWWindow.aProcessID);
"Хочу прыгнуть!"
Code:
aPWT.Jump(aPWWindow.aProcessID);
Ну и т.д. и т.п. Файл постарался детально откомментировать.
Главная задача, которая здесь решена - мультиоконность и осутствие предопределенных внутри констант. Все необходимые адреса - в aPWTools.ini
Ну, в общем, работа начата, но еще далека до завершения. У меня тупо нет времени над этим серьезно работать ((( Если кому пригодится - пользуйтесь на здоровье. Все, что буду добавлять в него - буду обновлять и сообщать об этом. Но надеяться на скорые обновления не стоит...
именно надо работать а не приспосабливаться .. Дельфи рулил и будет рулить - Отличная среда разработки, гибкий Язык, много запчастей нв любой СТО ..
Только у него одна проблема - как коммерческая платформа для разработки дельфи давно умер, и будущего у него нет никакого, кроме как для обучения студентов лепить формочки.
Только у него одна проблема - как коммерческая платформа для разработки дельфи давно умер, и будущего у него нет никакого, кроме как для обучения студентов лепить формочки.
Оппа!!! А мужики то и не знают... Пишут себе и пишут на Delphi, себе в удовольствие и на радость клиентов...
Чего в нём такого нет, что таки архи-нужно для современной разработки?
Открывать процессы - умеет - создавать потоки умеет, мозговые извилины моделировать может .. что еще не хватает для Бота ..
А куда денишься если с студенческой скамьи приучают к Паскалю ..
Другое дело если голова не забита еще никакими языками - тут - да лучше с С++ начинать, но опять-же это просто мое мнение и совет тут даст только опытный человек, прошедший через всЁ ..