 |
правильное у меня смещение или нет Delphi - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
11.01.2016, 18:16
|
#1
|
|
|
|
|
|
Разведчик
|
 Регистрация: 17.01.2011
 Сообщений: 1
 Популярность: -290
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
правильное у меня смещение или нет Delphi
подскажите пожалуйста как узнать лвл персонажа
ReadProcessMemory (hProcess, Pointer($00D6F84C), @Lvel, sizeof(Lvel), NoB);
ReadProcessMemory (hProcess, Pointer(Nikname+$1C), @Lvel, sizeof(Lvel), NoB);
ReadProcessMemory (hProcess, Pointer(Nikname+$4C4), @Lvel, sizeof(Lvel), NoB);
LvL:= Integer(Lvel);
sLabel10.caption:= IntToStr(LvL);
правильное у меня смещение или нет
хочу узнать LvL персонажа
|
|
|
|
12.01.2016, 12:54
|
#2
|
|
|
|
|
|
Пехотинец
|
 Регистрация: 03.01.2010
 Сообщений: 95
 Популярность: 1542
 Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
|
Re: правильное у меня смещение или нет Delphi
1C на 28 поменяй
|
|
|
|
12.01.2016, 20:35
|
#3
|
|
|
|
|
|
Разведчик
|
 Регистрация: 23.06.2012
 Сообщений: 43
 Популярность: 427
 Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
|
Re: правильное у меня смещение или нет Delphi
и Nikname вместо Lvel в первой и второй строке поставь
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
|
14.01.2016, 00:20
|
#4
|
|
|
|
|
|
Разведчик
|
 Регистрация: 17.01.2011
 Сообщений: 1
 Популярность: -290
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: правильное у меня смещение или нет Delphi
Кто знает рабочий офсет на :
MaxHP =
MaxMP =
|
|
|
|
14.01.2016, 22:45
|
#6
|
|
|
|
|
|
Разведчик
|
 Регистрация: 17.01.2011
 Сообщений: 1
 Популярность: -290
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: правильное у меня смещение или нет Delphi
ещё один вопрос
читаю из памяти координаты
//---x---------------------------------------------
ReadProcessMemory (hProcess, Pointer($00D6F84C), @WLocX, sizeof(WLocX), NoB);
ReadProcessMemory (hProcess, Pointer(WLocX+$28), @WLocX, sizeof(WLocX), NoB);
ReadProcessMemory (hProcess, Pointer(WLocX+$03C), @WLocX, sizeof(WLocX), NoB);
LocX:= Integer(WLocX);
//=end-------------------------------------------
//---y---------------------------------------------
ReadProcessMemory (hProcess, Pointer($00D6F84C), @WLocY, sizeof(WLocY), NoB);
ReadProcessMemory (hProcess, Pointer(WLocY+$28), @WLocY, sizeof(WLocY), NoB);
ReadProcessMemory (hProcess, Pointer(WLocY+$044), @WLocY, sizeof(WLocY), NoB);
LocY:= Integer(WLocY);
//=end-------------------------------------------
//---z---------------------------------------------
ReadProcessMemory (hProcess, Pointer($D6F0AC), @WLocZ, sizeof(WLocZ), NoB);
ReadProcessMemory (hProcess, Pointer(WLocZ+$28), @WLocZ, sizeof(WLocZ), NoB);
ReadProcessMemory (hProcess, Pointer(WLocZ+$040), @WLocZ, sizeof(WLocZ), NoB);
LocZ:= Integer(WLocZ);
хочу вывести их в привычный вид как в клиенте около карты
пытаюсь через вот это формулу
type point=record
x,y,z  ouble;
end;
function ProcToGame(p  oint)  oint;
begin
ProcToGame.X:=(p.X+4000)/10;
ProcToGame.Y:=(p.Y+5500)/10;
ProcToGame.Z:=p.Z/10;
end;
function GameToProc(g  oint)  oint;
begin
GameToProc.X:=g.X*10-4400;
GameToProc.Y:=g.Y*10-5500;
GameToProc.Z:=g.Z*10;
end;
но не понимаю как мне перевести полученное значение допустим
LocY:= Integer(WLocY); перевести в привычный вид значение оси Y
может кто подскажет как через неё переводить значение
|
|
|
|
16.01.2016, 09:24
|
#7
|
|
|
|
|
|
Сержант
|
 Регистрация: 16.02.2012
 Сообщений: 105
 Популярность: 651
 Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
|
Re: правильное у меня смещение или нет Delphi
TLocCoord = record
x: single;
y: single;
z: single;
walkmode: byte;
end;
// преобразование из вычисляемых координат в отображаемые в игре
function CoordX(XPos: Single): Single;
begin
Result := (4000 + XPos) / 10;
end;
function CoordY(YPos: Single): Single;
begin
Result := (5500 + YPos) / 10;
end;
function CoordZ(ZPos: Single): Single;
begin
Result := ZPos / 10;
end;
// преобразование из отображаемых в игре в вычисляемые координаты
function XCoord(XPos: Single): Single;
begin
Result := XPos * 10 - 4000;
end;
function YCoord(YPos: Single): Single;
begin
Result := YPos * 10 - 5500;
end;
function ZCoord(ZPos: Single): Single;
begin
Result := ZPos * 10;
end;
// получить строку с координатами как в игре
function LocCoordToStr(C: TLocCoord; Digits: Integer): String;
begin
Result := FloatToStrF(CoordX(C.X), ffFixed, 7, Digits) + ' ' + FloatToStrF(CoordY(C.Y), ffFixed, 7, Digits) + ' ' + FloatToStrF(CoordZ(C.Z), ffFixed, 7, Digits) + ' ' +
IfThen(C.WalkMode = 2, 'Air', IfThen(C.WalkMode = 1, 'Water', IfThen(C.WalkMode = 0, 'Ground', '')));
end;
________________
backup - акт проявления трусости
|
|
|
|
23.01.2016, 14:36
|
#8
|
|
|
|
|
|
Разведчик
|
 Регистрация: 17.01.2011
 Сообщений: 1
 Популярность: -290
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: правильное у меня смещение или нет Delphi
 |
Цитата: |
 |
|
|
 |
Сообщение от pw.assistant |
 |
|
|
|
|
|
|
|
|
TLocCoord = record
x: single;
y: single;
z: single;
walkmode: byte;
end;
// преобразование из вычисляемых координат в отображаемые в игре
function CoordX(XPos: Single): Single;
begin
Result := (4000 + XPos) / 10;
end;
function CoordY(YPos: Single): Single;
begin
Result := (5500 + YPos) / 10;
end;
function CoordZ(ZPos: Single): Single;
begin
Result := ZPos / 10;
end;
// преобразование из отображаемых в игре в вычисляемые координаты
function XCoord(XPos: Single): Single;
begin
Result := XPos * 10 - 4000;
end;
function YCoord(YPos: Single): Single;
begin
Result := YPos * 10 - 5500;
end;
function ZCoord(ZPos: Single): Single;
begin
Result := ZPos * 10;
end;
// получить строку с координатами как в игре
function LocCoordToStr(C: TLocCoord; Digits: Integer): String;
begin
Result := FloatToStrF(CoordX(C.X), ffFixed, 7, Digits) + ' ' + FloatToStrF(CoordY(C.Y), ffFixed, 7, Digits) + ' ' + FloatToStrF(CoordZ(C.Z), ffFixed, 7, Digits) + ' ' +
IfThen(C.WalkMode = 2, 'Air', IfThen(C.WalkMode = 1, 'Water', IfThen(C.WalkMode = 0, 'Ground', '')));
end;
|
|
 |
|
 |
|
не как не получается вывести значение в listbox как в игре постоянно э
отличаются
пытаюсь так вывести хоть в label
ReadProcessMemory (hProcess, Pointer($00D6F0AC), @z0, 4, NoB);
ReadProcessMemory (hProcess, Pointer(z0+$1C), @z1, 4, NoB);
ReadProcessMemory (hProcess, Pointer(z1+$28), @z2, 4, NoB);
ReadProcessMemory (hProcess, Pointer(z2+$40), @z, 4, NoB);
wz:=Integer(z);
slabel9.caption:= FloatToStr(CoordZ(Z));
где я допустил ошибку
|
|
|
|
24.01.2016, 10:05
|
#9
|
|
|
|
|
|
Пехотинец
|
 Регистрация: 03.01.2010
 Сообщений: 95
 Популярность: 1542
 Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
|
Re: правильное у меня смещение или нет Delphi
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
|
|
wz:=Integer(z);
где я допустил ошибку
|
|
 |
|
 |
|
Почему integer?
Z: single?
ReadProcessMemory (hProcess, Pointer(z2+$40), @z, 4, NoB); здесь почему 4?
Надо читать все что есть, а не 4.
вот рабочий код, только что проверил
Код:
var
WHP, NoB:NativeUint;(у меня ХЕ 10, если делфи 7 то dword)
z: Single;
ReadProcessMemory(hProcess, pointer($D6F0AC), @WHP, SizeOf(WHP), NoB);
ReadProcessMemory(hProcess, pointer(WHP+$1C), @WHP, SizeOf(WHP), NoB);
ReadProcessMemory(hProcess, pointer(WHP+$28), @WHP, SizeOf(WHP), NoB);
ReadProcessMemory(hProcess, pointer(WHP+$40), @Z, SizeOf(Z), NoB);
label4.Caption := FloatToStr(Z/10);
Последний раз редактировалось diagnost; 24.01.2016 в 10:51.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
[Помогите!] Смещение для HP цели
|
Vanko |
Общение и обсуждение Perfect World |
8 |
30.07.2010 18:24 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 02:38.
|
 |