PDA

Просмотр полной версии : Wall Hack на Delphi (пример)


krysun
17.09.2011, 10:30
Перевел с туташнего автоита, работает стабильно.
Пример только показывает принцип, смещается вверх. Остальное не писал.
unit wallhack;

interface
uses Windows;
procedure TravelUp(_hProcess: DWORD); //Вверх
procedure TravelDown(_hProcess: DWORD); //Вниз
procedure TravelNorth(_hProcess: DWORD); //Север
procedure TravelSouth(_hProcess: DWORD);//Юг
procedure TravelEast(_hProcess: DWORD); //Восток
procedure TravelWest(_hProcess: DWORD); //Запад

implementation
CONST
base_main = $A571E0;
off_jump1 = $34;
off_jump2 = $CD0;
off_cLocX = $3C;
off_cLocY = $44;
off_cLocZ = $40;
off_pLocX = $69C;
off_pLocY = $6A4;
off_pLocZ = $6A0;

travel_ms = 100;
timeleft_ms = 2000;
speed_x = 0.4;
speed_y = 0.4;
speed_z = 1.5;

VAR
p_cc: DWORD;
p_cLocX: SINGLE;
p_cLocY: SINGLE;
p_cLocZ: SINGLE;
p_pLocX: SINGLE;
p_pLocY: SINGLE;
p_pLocZ: SINGLE;
timeleft: integer;

procedure GetCurrCoords(_hProcess: dword);
var
rw: dword;
begin
ReadProcessMemory(_hProcess,ptr(base_main),@p_cc,s izeof(p_cc),rw);
ReadProcessMemory(_hProcess,ptr(p_cc+$20),@p_cc,si zeof(p_cc),rw);
ReadProcessMemory(_hProcess,ptr(p_cc+off_cLocX),@p _cLocX,sizeof(p_cLocX),rw);
ReadProcessMemory(_hProcess,ptr(p_cc+off_cLocY),@p _cLocY,sizeof(p_cLocY),rw);
ReadProcessMemory(_hProcess,ptr(p_cc+off_cLocZ),@p _cLocZ,sizeof(p_cLocZ),rw);
End;

procedure WriteJump(_hProcess:dword);
var
rw:dword;
_flag: byte;
begin
WriteProcessMemory(_hProcess,ptr(p_cc + off_jump2),@_flag,4,rw);
End;

procedure TravelUp(_hProcess: DWORD); //Вверх
var
rw: dword;
temp, final: single;
const
value = 6;
begin
temp:=0;
Sleep(100);
GetCurrCoords(_hProcess);
temp := p_cLocZ;
final := temp + value;
timeleft := timeleft_ms;
While (temp < final) and (timeleft > 0) do
begin
temp := temp + speed_z;
WriteJump(_hProcess);
WriteProcessMemory(_hProcess,ptr(p_cc + off_pLocZ),@temp,sizeof(temp),rw);
WriteProcessMemory(_hProcess,ptr(p_cc + off_cLocZ),@temp,sizeof(temp),rw);
Sleep(travel_ms);
GetCurrCoords(_hProcess);
temp := p_cLocZ;
timeleft := timeleft - travel_ms;
end;
End;

procedure TravelDown(_hProcess: DWORD); // Вниз
var
rw: dword;
temp, final: single;
const
value = 5;
begin
Sleep(100);
GetCurrCoords(_hProcess);
temp := p_cLocZ;
final := temp - value;
timeleft := timeleft_ms;
While temp > final do
begin
temp := temp - speed_z;
WriteJump(_hProcess);
WriteProcessMemory(_hProcess,ptr(p_cc + off_pLocZ),@temp,sizeof(temp),rw);
WriteProcessMemory(_hProcess,ptr(p_cc + off_cLocZ),@temp,sizeof(temp),rw);
Sleep(travel_ms);
GetCurrCoords(_hProcess);
temp := p_cLocZ;
timeleft := timeleft - travel_ms;
end;
End;

procedure TravelNorth(_hProcess: DWORD); //Север
var
rw: dword;
temp, final: single;
const
value = 5;
begin
Sleep(100);
GetCurrCoords(_hProcess);
temp := p_cLocY;
final := temp + value;
timeleft := timeleft_ms;
While temp < final do
begin
temp := temp + speed_y;
WriteJump(_hProcess);
WriteProcessMemory(_hProcess,ptr(p_cc + off_pLocY),@temp,sizeof(temp),rw);
WriteProcessMemory(_hProcess,ptr(p_cc + off_cLocY),@temp,sizeof(temp),rw);
Sleep(travel_ms);
GetCurrCoords(_hProcess);
temp := p_cLocY;
timeleft := timeleft - travel_ms;
end;
End;
procedure TravelSouth(_hProcess: DWORD); //Юг
var
rw: dword;
temp, final: single;
const
value = 5;
begin
Sleep(100);
GetCurrCoords(_hProcess);
temp := p_cLocY;
final := temp - value;
timeleft := timeleft_ms;
While temp > final do
begin
temp := temp - speed_y;
WriteJump(_hProcess);
WriteProcessMemory(_hProcess,ptr(p_cc + off_pLocY),@temp,sizeof(temp),rw);
WriteProcessMemory(_hProcess,ptr(p_cc + off_cLocY),@temp,sizeof(temp),rw);
Sleep(travel_ms);
GetCurrCoords(_hProcess);
temp := p_cLocY;
timeleft := timeleft - travel_ms;
end;
End;
procedure TravelEast(_hProcess: DWORD); // Восток
var
rw: dword;
temp, final: single;
const
value = 5;
begin
Sleep(100);
GetCurrCoords(_hProcess);
temp := p_cLocX;
final := temp + value;
timeleft := timeleft_ms;
While temp < final do
begin
temp := temp + speed_x;
WriteJump(_hProcess);
WriteProcessMemory(_hProcess,ptr(p_cc + off_pLocX),@temp,sizeof(temp),rw);
WriteProcessMemory(_hProcess,ptr(p_cc + off_cLocX),@temp,sizeof(temp),rw);
Sleep(travel_ms);
GetCurrCoords(_hProcess);
temp := p_cLocX;
timeleft := timeleft - travel_ms;
end;
End;
procedure TravelWest(_hProcess: DWORD); // Запад
var
rw: dword;
temp, final: single;
const
value = 5;
begin
Sleep(100);
GetCurrCoords(_hProcess);
temp := p_cLocX;
final := temp - value;
timeleft := timeleft_ms;
While temp > final do
begin
temp := temp - speed_x;
WriteJump(_hProcess);
WriteProcessMemory(_hProcess,ptr(p_cc + off_pLocX),@temp,sizeof(temp),rw);
WriteProcessMemory(_hProcess,ptr(p_cc + off_cLocX),@temp,sizeof(temp),rw);
Sleep(travel_ms);
GetCurrCoords(_hProcess);
temp := p_cLocX;
timeleft := timeleft - travel_ms;
end;
End;
end.

; Доделал остальные функции и поставил ограничение выполнения по времени. А то столкнулся с тем, что заклинивает иногда.
; Исправил адреса под "Земли Духов"

Njkzy80
21.09.2011, 15:22
Спс огромное, работает)) но есть несколько но...))
в данжах - Проходит только по прямой если будет не ровный пол начинает откидывать(((
( пробовал в 39, 51 и 59) 51 проходит везде супер! в 39 и 59 надо искать ровные места(((
В холихол проходит и падает в низ( и поднятся неможет - застревает
А так молодчина что непожадничал и поделился

Добавлено через 4 часа 24 минуты
Попробовал с 39 до 69
В 39, 59 и 69 есть несколько мест где спокойно проходит к босам
В 51 можно выйти только за пределы данжа в нутри нельзя пройти сквозь стены откидывает(((
Если

работает стабильно.
может я чтото переделал неправильно(?

krysun
03.10.2011, 13:15
Делал 2 в 1-м. В нужную сторону и вверх. Так вроде норм работает. (Как в Rayden)
procedure TravelNorth(_hProcess: DWORD);
var
rw: dword;
temp,temp2, final: single;
const
value = 11;
begin
Sleep(100);
GetCurrCoords(_hProcess);
temp := p_cLocY;
temp2 :=p_cLocZ;
final := temp + value;
timeleft := timeleft_ms;
While (temp < final) and (timeleft > 0) do
begin
{} temp2 := temp2 + 1;
temp := temp + speed_y;
{} WriteProcessMemory(_hProcess,ptr(p_cc + off_pLocZ),@temp2,sizeof(temp2),rw);
{} WriteProcessMemory(_hProcess,ptr(p_cc + off_cLocZ),@temp2,sizeof(temp2),rw);
WriteProcessMemory(_hProcess,ptr(p_cc + off_pLocY),@temp,sizeof(temp),rw);
WriteProcessMemory(_hProcess,ptr(p_cc + off_cLocY),@temp,sizeof(temp),rw);
WriteJump(_hProcess);
Sleep(travel_ms);
GetCurrCoords(_hProcess);
temp := p_cLocY;
{} temp2 := p_cLocZ;
timeleft := timeleft - travel_ms;
end;
End;

Это как вариант. Двигается линейно по косой. Можно сначала немного вверх, потом в цикле в сторону.
Высоту подбирай сам (я для ХХ писал)

Добавлено через 5 минут
В 51 можно выйти только за пределы данжа в нутри нельзя пройти сквозь стены откидывает(((
С другими ВоллХаками тоже не катит. Стены толще чем возможный "пролет" до отката сервером.
Я там на Тигра справа захожу, Льва слева в "кармане" жду. Драка через лошадь на крышу и скрыши вниз.
Минимум затрат времени. Лучше не придумал ))

Njkzy80
04.10.2011, 12:26
Драка через лошадь на крышу и скрыши вниз.

Сори за идиотский вопрос. А где там крыша, там же небо видно(((
Я в 59 пробовал, поднимаюсь на максимальную высоту до отката и пробую ходить, перс падает((( значит потолка нету???

krysun
10.10.2011, 12:33
Сори за идиотский вопрос. А где там крыша, там же небо видно(((
Я в 59 пробовал, поднимаюсь на максимальную высоту до отката и пробую ходить, перс падает((( значит потолка нету???
Я про 51-й говорил, где стены заканчивают "рости", там и крыша. В 59 другая ситуация, там крыша прозрачная (но она есть).
Там откат интересный, если взобраться на крышу, тебя бросает вниз на начало карты. Я там пользуюсь Jump хаком. Джам зажимаешь и по стенке ползешь вверх, так по стенке под потолком можно "доскользить" и до любого босса. Проверено.

Rusfoxmen
04.11.2011, 09:41
Можно глупый вопрос от школоты?Это код, да?Что с ним делать?:D

VeTaL_UA
04.11.2011, 16:47
Можно глупый вопрос от школоты?Это код, да?Что с ним делать?
Нет, это не код... Не нужно его вставлять в компилятор и нажимать "Run"...

Skid666
11.11.2011, 15:00
Можно глупый вопрос от школоты?Это код, да?Что с ним делать?:D
Это отрывки кода для среды програмирования " delphi " но чтоб из него собрать программу признаюсь чесно у меня опыта не хватит(