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

Структура инвентаря 1.4.5

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 15.10.2013, 18:06   #1
 Разведчик
Аватар для xOmGLoLx
 
xOmGLoLx никому не известный тип
Регистрация: 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
 Рыцарь
Аватар для Sirioga
 
Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(
Регистрация: 19.11.2008
Сообщений: 385
Популярность: 13343
Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
 
По умолчанию Re: Структура инвентаря 1.4.5

Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
ReadProcessMemory(hProcess, ptr(buff + $4), @buff, sizeof(buff), INV);

Возможно ты в курсе, но скажу, что в таком случае определит ID предмета в первой ячейке. Тут нужно множить номер ячейки на 4.
Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
А все нашел, думаю от 1.4.4 подойдет к 1.4.5

Ты думаешь или подходит?))) http://zhyk.ru/forum/showthread.php?t=287321
  Ответить с цитированием
Старый 15.10.2013, 21:07   #3
 Разведчик
Аватар для xOmGLoLx
 
xOmGLoLx никому не известный тип
Регистрация: 07.10.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Структура инвентаря 1.4.5

Цитата:
Сообщение от SiriogaПосмотреть сообщение
Возможно ты в курсе, но скажу, что в таком случае определит ID предмета в первой ячейке.

Буду в курсе. Ты намекаешь на то, что структура инвентаря не подходит? Т.к. в результате всегда выбивает 1176255488 (оО), хрен пойми что это!
  Ответить с цитированием
Старый 15.10.2013, 21:29   #4
 Рыцарь
Аватар для Sirioga
 
Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(
Регистрация: 19.11.2008
Сообщений: 385
Популярность: 13343
Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
 
По умолчанию Re: Структура инвентаря 1.4.5

Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
Ты намекаешь на то, что структура инвентаря не подходит?

Я не намекаю ни на что, я прямо говорю. Посмотрел в старые исходники под китайскую фришку и в новый исходник под руоф, заметил одну деталь, у тебя перед Column*4 идёт $1C, а судя по моим исходникам, там должно быть $0C.
Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
BA = $A571E0;

Найди BA твоего клиента, и тогда поймёшь, подходит ли оффсет инва или нет.
  Ответить с цитированием
Старый 15.10.2013, 21:43   #5
 Разведчик
Аватар для xOmGLoLx
 
xOmGLoLx никому не известный тип
Регистрация: 07.10.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Структура инвентаря 1.4.5

Цитата:
Сообщение от SiriogaПосмотреть сообщение
Я не намекаю ни на что, я прямо говорю. Посмотрел в старые исходники под китайскую фришку и в новый исходник под руоф, заметил одну деталь, у тебя перед 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
 Рыцарь
Аватар для Sirioga
 
Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(
Регистрация: 19.11.2008
Сообщений: 385
Популярность: 13343
Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
 
По умолчанию Re: Структура инвентаря 1.4.5

Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
Еще вопрос, что бы узнать в какой ячейке находится предмет к примеру его ид = 200, нужно 63 раза прописать этот код?

Ой-ё-й, нет конечно... используй цикл, например for
  Ответить с цитированием
Старый 15.10.2013, 22:43   #7
 Разведчик
Аватар для xOmGLoLx
 
xOmGLoLx никому не известный тип
Регистрация: 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
 Разведчик
Аватар для Simyr
 
Simyr никому не известный тип
Регистрация: 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
 Рыцарь
Аватар для Sirioga
 
Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(
Регистрация: 19.11.2008
Сообщений: 385
Популярность: 13343
Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
 
По умолчанию Re: Структура инвентаря 1.4.5

Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
if buff = 19122 then begin

А ты что, открываешь [Ссылки могут видеть только зарегистрированные пользователи. ]? Слови пакет с помощью PW_PacketListener, и посмотри как открывать, что бы ты там не открывал...
  Ответить с цитированием
Старый 15.10.2013, 23:28   #10
 Разведчик
Аватар для xOmGLoLx
 
xOmGLoLx никому не известный тип
Регистрация: 07.10.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Структура инвентаря 1.4.5

Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
Буду в курсе. Ты намекаешь на то, что структура инвентаря не подходит? Т.к. в результате всегда выбивает 1176255488 (оО), хрен пойми что это!

Цитата:
Сообщение от SimyrПосмотреть сообщение
пакет на использование предмета: "28000001 XXXX YYYYYYYY"
где:
хххх - номер ячейки инвентаря (инвертирован 4 байта)
yyyyyyyy- Id предмета (инвертирован 8 байт вместо пустых 00)
в вашем случае:
28000001 XXXX B24A0000
где ХХХХ инвертированный номер ячейки

Все равно не пашет.

Добавлено через 5 минут
Цитата:
Сообщение от SiriogaПосмотреть сообщение
А ты что, открываешь [Ссылки могут видеть только зарегистрированные пользователи. ]? Слови пакет с помощью PW_PacketListener, и посмотри как открывать, что бы ты там не открывал...

Вот это поворот. Сейчас перепроверю.

Добавлено через 12 минут
Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
Все равно не пашет.

Добавлено через 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
 Разведчик
Аватар для Simyr
 
Simyr никому не известный тип
Регистрация: 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
 Разведчик
Аватар для xOmGLoLx
 
xOmGLoLx никому не известный тип
Регистрация: 07.10.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Структура инвентаря 1.4.5

Цитата:
Сообщение от xOmGLoLxПосмотреть сообщение
Все равно не пашет.

Добавлено через 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
 Разведчик
Аватар для Simyr
 
Simyr никому не известный тип
Регистрация: 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
 Разведчик
Аватар для xOmGLoLx
 
xOmGLoLx никому не известный тип
Регистрация: 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
 Разведчик
Аватар для Simyr
 
Simyr никому не известный тип
Регистрация: 23.10.2010
Сообщений: 7
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 7 раз(а) в 5 сообщениях
 
По умолчанию Re: Структура инвентаря 1.4.5

Ясно, Вы просто не инвентировали байты вот откуда в Id предмета взялись лишнии нули в начале) (ну и опять - же пакеты идут в Hex)
  Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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, время: 09:19.

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