Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Как узнать название предмета в инвентаре

-

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

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

Ответ
 
Опции темы
Старый 20.07.2012, 11:02   #1
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Как узнать название предмета в инвентаре

Есть функция
Цитата:
var
hProcess,PID,buf,ibuf,BC:size_t;
i,c:Integer;
ex: Integer;
j:array [0..63] of Integer;
begin
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,FID[Form2.sComboBox1.ItemIndex]);
for i:=0 to 63 do
begin
ReadProcessMemory(hProcess,ptr($00A571E0),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$1C),@ibuf,siz eof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$34),@ibuf,siz eof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$D18),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$C),@ibuf,size of(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$4*i),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$8),@buf,sizeo f(buf),BC);
begin
c:=i+1;
end;
j[i]:=buf;
sEdit2.Text:=inttostr(j[тут номер ячейки в которой нужно показать id]);
end;
CloseHandle(hProcess);
end;

Тут я узнаю просто id лежащего предмета в инвентаре , а как можно считать его имя ? (Delphi XE2)
  Ответить с цитированием
Старый 20.07.2012, 11:10   #2
 Пехотинец
Аватар для Nek1t
 
Nek1t на правильном путиNek1t на правильном пути
Регистрация: 31.08.2010
Сообщений: 64
Популярность: 129
Сказал(а) спасибо: 30
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

+0x40 +0x0 Name, char, unicod /описание/
  Ответить с цитированием
Старый 20.07.2012, 11:14   #3
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от Nek1tПосмотреть сообщение
+0x40 +0x0 Name, char, unicod /описание/

Поподробнее если можно
  Ответить с цитированием
Старый 20.07.2012, 11:15   #4
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Если я не ошибаюсь, то в описании вещи по вышеуказанному оффсету будет все - цветовые коды, если шмотка не белая, статы, характеристки итп.

Поэтому, самый простой способ - это спарсить pwdatabase.com и сделать соответствие id:название.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
PW Everyday Helper Bot
  Ответить с цитированием
Старый 20.07.2012, 11:17   #5
 Пехотинец
Аватар для Nek1t
 
Nek1t на правильном путиNek1t на правильном пути
Регистрация: 31.08.2010
Сообщений: 64
Популярность: 129
Сказал(а) спасибо: 30
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от N00bSa1b0tПосмотреть сообщение
Если я не ошибаюсь, то в описании вещи по вышеуказанному оффсету будет все - цветовые коды, если шмотка не белая, статы, характеристки итп.

Поэтому, самый простой способ - это спарсить pwdatabase.com и сделать соответствие id:название.

По мне так проще вынуть нужное из строки
  Ответить с цитированием
Старый 20.07.2012, 11:31   #6
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
var
hProcess,PID,ibuf,BC:size_t;
buf:char;
i,c:Integer;
j:array [0..63] of char;
begin

hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,FID[Form2.sComboBox1.ItemIndex]);
for i:=0 to 63 do
begin
ReadProcessMemory(hProcess,ptr($00A571E0),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$1C),@ibuf,siz eof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$34),@ibuf,siz eof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$D18),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$C),@ibuf,size of(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$4*i),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$40),@buf,size of(buf),BC);
begin
c:=i+1;
end;
j[i]:=buf;

sEdit2.Text:=(j[ячейка]);
end;
CloseHandle(hProcess);
end;

Функция должна принять такой вид ?
  Ответить с цитированием
Старый 20.07.2012, 11:34   #7
 Пехотинец
Аватар для Nek1t
 
Nek1t на правильном путиNek1t на правильном пути
Регистрация: 31.08.2010
Сообщений: 64
Популярность: 129
Сказал(а) спасибо: 30
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от STIL23Посмотреть сообщение
Функция должна принять такой вид ?

+0 ведь ещё.
  Ответить с цитированием
Старый 20.07.2012, 11:36   #8
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от Nek1tПосмотреть сообщение
+0 ведь ещё.

У меня почему то все равно выдает значок в виде точки или какой либо буквы не понимаю почему
Цитата:
var
hProcess,PID,ibuf,BC:size_t;
buf:char;
i,c:Integer;
j:array [0..1] of char;
begin

hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,FID[Form2.sComboBox1.ItemIndex]);
for i:=0 to 1 do
begin
ReadProcessMemory(hProcess,ptr($00A571E0),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$1C),@ibuf,siz eof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$34),@ibuf,siz eof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$D18),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$C),@ibuf,size of(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$4*i),@ibuf,si zeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$40),@ibuf,siz eof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$0),@buf,sizeo f(buf),BC);


begin
c:=i+1;
end;
j[i]:=buf;

sEdit2.Text:=(j[0]);
end;
CloseHandle(hProcess);
end;


Последний раз редактировалось STIL23; 20.07.2012 в 11:38.
  Ответить с цитированием
Старый 20.07.2012, 11:58   #9
 Пехотинец
Аватар для Nek1t
 
Nek1t на правильном путиNek1t на правильном пути
Регистрация: 31.08.2010
Сообщений: 64
Популярность: 129
Сказал(а) спасибо: 30
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от STIL23Посмотреть сообщение
У меня почему то все равно выдает значок в виде точки или какой либо буквы не понимаю почему

На с++ на скорую руку сделал:
Код:
	wchar_t name[60];
	DWORD buf;
	HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,bot.client.get.pid);
	ReadProcessMemory(hProcess,(void*)BA,&buf,4,0);
	ReadProcessMemory(hProcess,(void*)(buf+D_GA),&buf,4,0);
	ReadProcessMemory(hProcess,(void*)(buf+0x34),&buf,4,0);
	ReadProcessMemory(hProcess,(void*)(buf+0xD18),&buf,4,0);
	ReadProcessMemory(hProcess,(void*)(buf+0xC),&buf,4,0);
	for(int i = 0; i<=31; i++)
	{
		DWORD tmp;
		ReadProcessMemory(hProcess,(void*)(buf+i*4),&tmp,4,0);
		ReadProcessMemory(hProcess,(void*)(tmp+0x40),&tmp,4,0);
		ReadProcessMemory(hProcess,(void*)(tmp),&name,60,0);
		RichEdit1->Text=RichEdit1->Text+name+"\n";
	}
Выводит названия в таком виде:
Цитата:
^8080ffЯщик с оружием (40 ур.)ꌘ眨⡿㔄
^ffffffОсколок вечного камня (ꌘ眨⡿㔄
^ffffffНебесный божественный кꌘ眨⡿㔄
^ffffffОбычный божественный каꌘ眨⡿㔄

  Ответить с цитированием
Старый 20.07.2012, 12:16   #10
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Так переделал функцию но результат отрицательный вылазиют значки и тд., посмотрите может быть не так что - то . Ищет то что находится в 0 ячейке (ну 1 то есть)
Код:
var
hProcess,PID,ibuf,BC:size_t;
name:wchar;
begin

hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,FID[Form2.sComboBox1.ItemIndex]);
  begin
  ReadProcessMemory(hProcess,ptr($00A571E0),@ibuf,sizeof(ibuf),BC);
  ReadProcessMemory(hProcess,ptr(ibuf+$1C),@ibuf,sizeof(ibuf),BC);
  ReadProcessMemory(hProcess,ptr(ibuf+$34),@ibuf,sizeof(ibuf),BC);
  ReadProcessMemory(hProcess,ptr(ibuf+$D18),@ibuf,sizeof(ibuf),BC);
  ReadProcessMemory(hProcess,ptr(ibuf+$C),@ibuf,sizeof(ibuf),BC);
  ReadProcessMemory(hProcess,ptr(ibuf+$4*0),@ibuf,sizeof(ibuf),BC);
  ReadProcessMemory(hProcess,ptr(ibuf+$40),@ibuf,sizeof(ibuf),BC);
  ReadProcessMemory(hProcess,ptr(ibuf),@name,sizeof(name),BC);
  sEdit2.Text:=name;
  end;
CloseHandle(hProcess);
end;

Последний раз редактировалось STIL23; 20.07.2012 в 12:19.
  Ответить с цитированием
Старый 20.07.2012, 12:21   #11
 Пехотинец
Аватар для Nek1t
 
Nek1t на правильном путиNek1t на правильном пути
Регистрация: 31.08.2010
Сообщений: 64
Популярность: 129
Сказал(а) спасибо: 30
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от STIL23Посмотреть сообщение
ReadProcessMemory(hProcess,ptr(ibuf),@name,sizeof( name),BC);

Как я понял, четвертый параметр - это сколько байт считывать. Попробуй вместо sizeof(name) 40 например поставить.
  Ответить с цитированием
Старый 20.07.2012, 12:30   #12
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от Nek1tПосмотреть сообщение
Как я понял, четвертый параметр - это сколько байт считывать. Попробуй вместо sizeof(name) 40 например поставить.

Теперь вообще ничего не выдает
  Ответить с цитированием
Старый 20.07.2012, 12:32   #13
 Пехотинец
Аватар для Nek1t
 
Nek1t на правильном путиNek1t на правильном пути
Регистрация: 31.08.2010
Сообщений: 64
Популярность: 129
Сказал(а) спасибо: 30
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от STIL23Посмотреть сообщение
Теперь вообще ничего не выдает

Ну тогда хз. Рабочий код тебе дан. Сиди и разбирайся, как оно у вас в вашем Delphi работает.
  Ответить с цитированием
Старый 20.07.2012, 12:33   #14
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Вот файл, которым я пользуюсь.
Обновлял его пару недель назад.
Вложения
Тип файла: rar items.rar (113.9 Кб, 56 просмотров)
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
PW Everyday Helper Bot
  Ответить с цитированием
Старый 20.07.2012, 12:43   #15
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Как узнать название предмета в инвентаре

Цитата:
Сообщение от N00bSa1b0tПосмотреть сообщение
Вот файл, которым я пользуюсь.
Обновлял его пару недель назад.

Ого ты его сам составлял или он с element.data вытаскивается ? И теперь додумать не могу как сделать . Если id = 6 например , то это "Крепкий клинок" . Как так для всех значений сделать то сразу?

Последний раз редактировалось STIL23; 20.07.2012 в 12:52.
  Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Узнать название комнаты написанной русскими буквами Crazydoom Свободное обсуждение 3 11.04.2012 08:53
[Помогите!] Помогите узнать название песни MattGuetta Наше творчество 3 19.10.2011 00:06
Как вставить название предмета в чате с возможностью обзора? Impekon Общение и обсуждение Perfect World 2 15.04.2011 20:36

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 22:17.

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