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

Как правильно определить ID предмета в ячейке инвентаря

-

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

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

Ответ
 
Опции темы
Старый 20.08.2012, 02:16   #1
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Как правильно определить ID предмета в ячейке инвентаря

Допустим я хочу узнать ид предмета во 2 ячейке... я использую такой код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  hProcess: dword;
  rw: cardinal;

implementation

{$R *.dfm}
procedure connect;
var
  PID: dword;
  WID: Thandle;
begin
  WID:=FindWindow(nil,'Perfect World');
  GetWindowThreadProcessId(WID, @PID);
  hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  addr: dword;
begin
  connect;
  readprocessmemory(hProcess, ptr($00A571E0), @addr, sizeof(addr), rw);
  readprocessmemory(hProcess, ptr(addr + $1c), @addr, sizeof(addr), rw);
  readprocessmemory(hProcess, ptr(addr + $34), @addr, sizeof(addr), rw);
  readprocessmemory(hProcess, ptr(addr + $cac), @addr, sizeof(addr), rw);
  readprocessmemory(hProcess, ptr(addr + $c), @addr, sizeof(addr), rw);
  readprocessmemory(hProcess, ptr(addr + $4), @addr, sizeof(addr), rw);
  readprocessmemory(hProcess, ptr(addr + $8), @addr, sizeof(addr), rw);
end;

end.
но почему-то ид определяется не верно...

Последний раз редактировалось vladoscom93; 20.08.2012 в 03:20.
  Ответить с цитированием
Старый 20.08.2012, 02:20   #2
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

Ну, первое, что бросилось в глаза:
BA от 1.4.5, а адрес структуры инвентаря от 1.4.4

Инвентарь с адреса 0xCAC переехал на 0xD18
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
PW Everyday Helper Bot
  Ответить с цитированием
Пользователь сказал cпасибо:
vladoscom93 (20.08.2012)
Старый 20.08.2012, 03:18   #3
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

спасибо огромное все работает теперь)

Добавлено через 3 минуты
еще встречный вопрос выложен ли список смещений для 1.4.5 версии клиента руоффа? ТУТ только для 1.4.4 руоф(

Последний раз редактировалось vladoscom93; 20.08.2012 в 03:22. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 20.08.2012, 07:08   #4
Заблокирован
 Сержант
Аватар для STIL23
 
STIL23 на правильном пути
Регистрация: 19.12.2009
Сообщений: 130
Популярность: 34
Сказал(а) спасибо: 21
Поблагодарили 86 раз(а) в 32 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
спасибо огромное все работает теперь)

Добавлено через 3 минуты
еще встречный вопрос выложен ли список смещений для 1.4.5 версии клиента руоффа? ТУТ только для 1.4.4 руоф(

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

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
ТУТ только для 1.4.4 руоф(

"Земли духов, клиент 1.4.5 версии, сборка 2305, версия обновления 207-219" - Это и есть текущий руоф. А всякие структуры инвентаря остались прежними и надо смотреть 1.4.4
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
PW Everyday Helper Bot
  Ответить с цитированием
Старый 20.08.2012, 15:15   #6
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

наковырял пакет для юзания определенного предмета в инвентаре, вроде все ровно работает
Код:
28 00 01 XX 00 XX XX 00 00  // красным номер ячейки начиная с 0, песочным ID предмета
Добавлено через 48 минут
еще у меня вопрос как можно вытянуть имя первого скила? я двигаюсь по этой цепочке BA+1c+34+10e8+0 а дальше куда?

P.S. : когда уже форум будет нормально работать! 5 раз пишу сообщение уже ><

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

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
еще у меня вопрос как можно вытянуть имя первого скила? я двигаюсь по этой цепочке BA+1c+34+10e8+0 а дальше куда?

Можно просто сделать базу "ID скилла <-> Название" и по айди легко получать название скилла.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
PW Everyday Helper Bot
  Ответить с цитированием
Старый 20.08.2012, 16:21   #8
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

это слишком громоздко получается заносить все скилы в программу... в этой теме ТЫК вытаскивали название скила, но как-то слишком запутанно я не могу прощупать саму цепочку дальше чем я описал выше
  Ответить с цитированием
Старый 20.08.2012, 18:06   #9
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
это слишком громоздко получается заносить все скилы в программу

хм, а чего громоздкого то?
есть файл, в начале работы проги прочитал файл занес в ассоциативный массив и все..
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
PW Everyday Helper Bot
  Ответить с цитированием
Старый 20.08.2012, 18:38   #10
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

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

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
вручную заколебаюсь пихать в файл

Файл с названиями скиллов уже есть в пв. Написать софтину по перегону его в более удобный формат - дело 10 минут

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
программа будет при включении тоже лишнюю работы выполнять при занесении этого всего в массив

Ну, ежели Вы программу на калькуляторе запускаете, то да, будет заметно. А на современных компьютерах загнать файл в ассоциативный массив - дело нескольких сотых секунды.

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
потом по 100 раз бегая по массиву в поиске каждого скила

Повторяю - массив ассоциативный, бегать не придется ж.

Я лишь предложил вариант решения проблемы, который использую сам. Простой, удобный для редактирования/обвноления, быстрый и независимый от версии клиента.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
PW Everyday Helper Bot
  Ответить с цитированием
Старый 21.08.2012, 22:56   #12
 Разведчик
Аватар для LORD_MERKE
 
LORD_MERKE никому не известный тип
Регистрация: 15.02.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
hProcess: dword;
rw: cardinal;

implementation

{$R *.dfm}
procedure connect;
var
PID: dword;
WID: Thandle;
begin
WID:=FindWindow(nil,'Perfect World');
GetWindowThreadProcessId(WID, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
addr: dword;
begin
connect;
readprocessmemory(hProcess, ptr($00A571E0), @addr, sizeof(addr), rw);
readprocessmemory(hProcess, ptr(addr + $1c), @addr, sizeof(addr), rw);
readprocessmemory(hProcess, ptr(addr + $34), @addr, sizeof(addr), rw);
readprocessmemory(hProcess, ptr(addr + $cac), @addr, sizeof(addr), rw);
readprocessmemory(hProcess, ptr(addr + $c), @addr, sizeof(addr), rw);
readprocessmemory(hProcess, ptr(addr + $4), @addr, sizeof(addr), rw);
readprocessmemory(hProcess, ptr(addr + $8), @addr, sizeof(addr), rw);
end;

end.

Подскажите нубу а как вывести ид предмета и можно ли определить статы предмета зная ид?
  Ответить с цитированием
Старый 21.08.2012, 23:33   #13
 Разведчик
Аватар для pwthedrot
 
pwthedrot на правильном пути
Регистрация: 03.06.2010
Сообщений: 41
Популярность: 20
Сказал(а) спасибо: 22
Поблагодарили 5 раз(а) в 5 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

Цитата:
Сообщение от LORD_MERKEПосмотреть сообщение
Подскажите нубу а как вывести ид предмета и можно ли определить статы предмета зная ид?

по ID статы вещи ты не узнаешь статы зависят от октетов
  Ответить с цитированием
Старый 02.07.2013, 18:13   #14
 Разведчик
Аватар для Алкен Асет
 
Алкен Асет никому не известный тип
Регистрация: 17.01.2013
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Алкен Асет с помощью Skype™
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

ЛЮДИ!скажите как определить id предметов в пв на руофе я смотрел в базе но ничего не нашел помогите плиз! например id предмета стальное сердце короля льва
  Ответить с цитированием
Старый 03.07.2013, 04:12   #15
 Рыцарь
Аватар для Sirioga
 
Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(Sirioga сломал счётчик популярности :(
Регистрация: 19.11.2008
Сообщений: 385
Популярность: 13343
Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
 
По умолчанию Re: Как правильно определить ID предмета в ячейке инвентаря

Цитата:
Сообщение от Алкен АсетПосмотреть сообщение
ЛЮДИ!скажите как определить id предметов в пв на руофе я смотрел в базе но ничего не нашел помогите плиз! например id предмета стальное сердце короля льва

[Ссылки могут видеть только зарегистрированные пользователи. ]
Если нужно в Hex, используй калькулятор...
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точки в одной ячейке yjksr Вопросы и ответы, обсуждения 0 07.03.2011 16:10
[Руководство] Клетки инвентаря Vlad2891 Статьи, квесты и описания по Perfect World 7 06.01.2011 21:19
[Статья] Расширение инвентаря. TakeToTheSkies Статьи и руководства по Aion 8 22.12.2010 21:42

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

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

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