 |
Структура инвентаря 1.4.5 - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
15.10.2013, 18:06
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 07.10.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Структура инвентаря 1.4.5
Дайте пожалуйста адрес структуры инвентаря на клиент версии 1.4.5! Чет не могу найти
Добавлено через 7 минут
А все нашел, думаю от 1.4.4 подойдет к 1.4.5
Добавлено через 29 минут
Не верно определяет ID предмета в ячейке, в чем проблема? Вот код:
const
BA = $A571E0;
var
buff: dword;
inv: cardinal;
Window:= FindWindow(nil, 'Perfect World');
GetWindowThreadProcessID(Window, @ProcessID);
hProcess:= OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID);
ReadProcessMemory(hProcess, ptr(BA), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $1C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $34), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $D18), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $1C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $4), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $8), @buff, sizeof(buff), INV);
Последний раз редактировалось xOmGLoLx; 15.10.2013 в 18:37.
Причина: Добавлено сообщение
|
|
|
15.10.2013, 20:19
|
#2
|
|
|
|
Рыцарь
|
 Регистрация: 19.11.2008
 Сообщений: 385
 Популярность: 13343
 Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
|
Re: Структура инвентаря 1.4.5
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
15.10.2013, 21:07
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 07.10.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Структура инвентаря 1.4.5
|
|
|
15.10.2013, 21:29
|
#4
|
|
|
|
Рыцарь
|
 Регистрация: 19.11.2008
 Сообщений: 385
 Популярность: 13343
 Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
|
Re: Структура инвентаря 1.4.5
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
15.10.2013, 21:43
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 07.10.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Структура инвентаря 1.4.5
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Я не намекаю ни на что, я прямо говорю. Посмотрел в старые исходники под китайскую фришку и в новый исходник под руоф, заметил одну деталь, у тебя перед Column*4 идёт $1C, а судя по моим исходникам, там должно быть $0C.
|
|
 |
|
 |
|
Хех, в этом то и заключалась моя ошибка ($1C нужно было заменить на $0C).
Спасибо за помощь)!
Добавлено через 10 минут
Еще вопрос, что бы узнать в какой ячейке находится предмет к примеру его ид = 200, нужно 63 раза прописать этот код?
Window:= FindWindow(nil, 'Perfect World');
GetWindowThreadProcessID(Window, @ProcessID);
hProcess:= OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID);
ReadProcessMemory(hProcess, ptr(BA), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $1C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $34), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $D18), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $0C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + 2*$4), @buff, sizeof(buff), INV); //-------63
ReadProcessMemory(hProcess, ptr(buff + $8), @buff, sizeof(buff), INV);
Добавлено через 16 минут
А, все понял, про цикл забыл
for i:=0 to 63 do
Последний раз редактировалось xOmGLoLx; 15.10.2013 в 21:59.
Причина: Добавлено сообщение
|
|
|
15.10.2013, 22:00
|
#6
|
|
|
|
Рыцарь
|
 Регистрация: 19.11.2008
 Сообщений: 385
 Популярность: 13343
 Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
|
Re: Структура инвентаря 1.4.5
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
15.10.2013, 22:43
|
#7
|
|
|
|
Разведчик
|
 Регистрация: 07.10.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Структура инвентаря 1.4.5
Странно но почему не работает код открытия предмета??? Сам код:
procedure TForm1.Timer2Timer(Sender: TObject);
var
buff: dword;
i: integer;
begin
for i:=0 to 63 do begin
ReadProcessMemory(hProcess, ptr(PW_BASE_ADDRESS), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $1C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $34), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $D18), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $0C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + i*$4), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $8), @buff, sizeof(buff), INV);
if buff = 19122 then begin
IntToHex(i,2);
packet('28000001'+inttostr(i)+'506B0000'); // Пробовал packet('28000001'+inttostr(i)+'4АB2'); но писало тип фатальная ошибка, когда со способом 1 - никакой реакции.
break;
end;
end;
end;
|
|
|
15.10.2013, 23:10
|
#8
|
|
|
|
Разведчик
|
 Регистрация: 23.10.2010
 Сообщений: 7
 Популярность: 12
 Сказал(а) спасибо: 0
Поблагодарили 7 раз(а) в 5 сообщениях
|
Re: Структура инвентаря 1.4.5
пакет на использование предмета: "28000001 XXXX YYYYYYYY"
где:
хххх - номер ячейки инвентаря (инвертирован 4 байта)
yyyyyyyy- Id предмета (инвертирован 8 байт вместо пустых 00)
в вашем случае:
28000001 XXXX B24A0000
где ХХХХ инвертированный номер ячейки
Последний раз редактировалось Simyr; 15.10.2013 в 23:23.
Причина: примерно так, хотя в инвертировании байтов могу ошибатся)
|
|
|
15.10.2013, 23:16
|
#9
|
|
|
|
Рыцарь
|
 Регистрация: 19.11.2008
 Сообщений: 385
 Популярность: 13343
 Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
|
Re: Структура инвентаря 1.4.5
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
15.10.2013, 23:28
|
#10
|
|
|
|
Разведчик
|
 Регистрация: 07.10.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Структура инвентаря 1.4.5
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Буду в курсе. Ты намекаешь на то, что структура инвентаря не подходит? Т.к. в результате всегда выбивает 1176255488 (оО), хрен пойми что это!
|
|
 |
|
 |
|
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
пакет на использование предмета: "28000001 XXXX YYYYYYYY"
где:
хххх - номер ячейки инвентаря (инвертирован 4 байта)
yyyyyyyy- Id предмета (инвертирован 8 байт вместо пустых 00)
в вашем случае:
28000001 XXXX B24A0000
где ХХХХ инвертированный номер ячейки
|
|
 |
|
 |
|
Все равно не пашет.
Добавлено через 5 минут
 |
Цитата: |
 |
|
|
|
|
|
Вот это поворот. Сейчас перепроверю.
Добавлено через 12 минут
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Все равно не пашет.
Добавлено через 5 минут
Вот это поворот. Сейчас перепроверю.
|
|
 |
|
 |
|
Оно походу ID не находит.
var
buff: dword;
i: integer;
begin
for i:=0 to 63 do begin
ReadProcessMemory(hProcess, ptr(PW_BASE_ADDRESS), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $1C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $34), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $D18), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $0C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + i*$4), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $8), @buff, sizeof(buff), INV);
if buff = 21385 then begin
IntToHex(i,2);
showmessage('lol') не выводится сообщение = не находит ID;
packet('28000001'+inttostr(i)+ '00506B0000');
break;
end;
end;
Последний раз редактировалось xOmGLoLx; 15.10.2013 в 23:41.
Причина: Добавлено сообщение
|
|
|
15.10.2013, 23:42
|
#11
|
|
|
|
Разведчик
|
 Регистрация: 23.10.2010
 Сообщений: 7
 Популярность: 12
 Сказал(а) спасибо: 0
Поблагодарили 7 раз(а) в 5 сообщениях
|
Re: Структура инвентаря 1.4.5
Странно, пакет на использование предмета не менялся с 1.4.4 по 1.4.6 точно, пишу на бэйсике функция выглядит так:
Код:
Procedure Useitem(Id,InvNom); получаем Id предмета и номер ячейки
pack$="28000001"
pack$=pack$+Reverse(InvNom,4)
pack$=pack$+Reverse(Id); собираем пакет
sendPacket(Pack$); отправляем пакет
Delay(200); задержка(чтоб было)
EndProcedure
Procedure.s Reverse(Value.q, size=8) ; реверсируем запись адресов и добавляем нули если надо (1a2b3c в памяти выглядит так: 3c2b1a00)
rev1$= RSet(Hex(Value), size, "0") ;добавляем нули
For i = 0 To Len(rev1$) / 2 - 1
rev2$ = rev2$ + Mid(rev1$, Len(rev1$) - 1 - 2 * i, 2) ; пишем задом на перед по 2 символа
Next
ProcedureReturn rev2$
EndProcedure
|
|
|
15.10.2013, 23:43
|
#12
|
|
|
|
Разведчик
|
 Регистрация: 07.10.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Структура инвентаря 1.4.5
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Все равно не пашет.
Добавлено через 5 минут
Вот это поворот. Сейчас перепроверю.
Добавлено через 12 минут
Оно походу ID не находит.
var
buff: dword;
i: integer;
begin
for i:=0 to 63 do begin
ReadProcessMemory(hProcess, ptr(PW_BASE_ADDRESS), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $1C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $34), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $D18), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $0C), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + i*$4), @buff, sizeof(buff), INV);
ReadProcessMemory(hProcess, ptr(buff + $8), @buff, sizeof(buff), INV);
if buff = 21385 then begin
IntToHex(i,2);
showmessage('lol') не выводится сообщение = не находит ID;
packet('28000001'+inttostr(i)+ '00506B0000');
break;
end;
end;
|
|
 |
|
 |
|
Все работает, нашло ID, но НЕ открывается пакетом
Добавлено через 3 минуты
Странным образом заработало. Всем спасибо за помощь! =)
Последний раз редактировалось xOmGLoLx; 15.10.2013 в 23:46.
Причина: Добавлено сообщение
|
|
|
15.10.2013, 23:47
|
#13
|
|
|
|
Разведчик
|
 Регистрация: 23.10.2010
 Сообщений: 7
 Популярность: 12
 Сказал(а) спасибо: 0
Поблагодарили 7 раз(а) в 5 сообщениях
|
Re: Структура инвентаря 1.4.5
ХХХХ первой ячейки в реверсе выглядит так - 0100
не понятно в этой строчке:
packet('28000001'+inttostr(i)+ '00506B0000'); - что за число 00506B0000?
|
|
|
15.10.2013, 23:48
|
#14
|
|
|
|
Разведчик
|
 Регистрация: 07.10.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Структура инвентаря 1.4.5
В чем была моя ошибка:
packet('28000001'+inttostr(i)Место этого надо было прописать IntToHex(i,2)+ '00506B0000');
|
|
|
15.10.2013, 23:50
|
#15
|
|
|
|
Разведчик
|
 Регистрация: 23.10.2010
 Сообщений: 7
 Популярность: 12
 Сказал(а) спасибо: 0
Поблагодарили 7 раз(а) в 5 сообщениях
|
Re: Структура инвентаря 1.4.5
Ясно, Вы просто не инвентировали байты вот откуда в Id предмета взялись лишнии нули в начале) (ну и опять - же пакеты идут в Hex)
|
|
|
-->
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] Структура квестов
|
Simyr |
Общение разработчиков |
6 |
15.10.2013 23:32 |
Структура NPC
|
j091 |
Общение разработчиков |
0 |
26.09.2013 11:08 |
Структура ипб 2.3.6
|
object |
Общение и обсуждение, архив Lineage 2 |
0 |
03.10.2010 21:45 |
Edf файл структура
|
Ivan_32 |
Архив уязвимостей |
5 |
17.05.2008 02:42 |
-->
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 01:49.
|
 |