PDA

Просмотр полной версии : [Помогите!] Свойства пустых ячеек инвентаря не равны нулю.


ktulx
14.05.2012, 00:41
И снова всех категорически приветствую!

//читаем кол-во ячеек
ReadProcessMemory (hProcess, Pointer($A57ACC), @A, sizeof(A), NoB);
ReadProcessMemory (hProcess, Pointer(A+$34), @A, sizeof(A), NoB);
ReadProcessMemory (hProcess, Pointer(A+$D18), @A, sizeof(A), NoB);
ReadProcessMemory (hProcess, Pointer(A+$8), @A, sizeof(A), NoB);
count:=A;
//читаем ID итема в ячейке
for x:= 0 to count-1 do begin
ReadProcessMemory (hProcess, Pointer($A57ACC), @A, sizeof(A), NoB);
ReadProcessMemory (hProcess, Pointer(A+$34), @A, sizeof(A), NoB);
ReadProcessMemory (hProcess, Pointer(A+$D18), @A, sizeof(A), NoB);
ReadProcessMemory (hProcess, Pointer(A+$C), @A, sizeof(A), NoB);
ReadProcessMemory (hProcess, Pointer(A+(x*4)), @B, sizeof(A), NoB);
ReadProcessMemory (hProcess, Pointer(B+$58), @A, sizeof(A), NoB);
ShowMessage(IntToString(A));
if A <> 0 then begin //если ячейка не пустая - читаем тип итема
ReadProcessMemory (hProcess, Pointer(B+$4), @A, sizeof(A), NoB);
case A of //и дальше в зависимости от типа, читаем название

Первая пустая ячейка выдаёт странное длинное число по красной строке, а в качестве названия записывается "?". Далее всё нормально, и последние пустые ячейки выдают то же самое число и записываются с именем последнего прочитанного предмета. Например имеем такой инвентарь:

пусто
предмет
предмет1
предмет2
предмет3
пусто
пусто
пусто

код записывает в массив/комбобокс так:

?
предмет
предмет1
предмет2
предмет3
предмет3
предмет3
предмет3

Где ошибка?

Спасибо.

BritishColonist
14.05.2012, 01:54
Здравствуй.



if A <> 0 then

Попробуй так:
if B <> 0 then

Переменная B содержит указатель на структуру предмета. Нет предмета - равен NULL (или просто 0 в памяти).

ktulx
14.05.2012, 02:51
BritishColonist, точно ) я почему-то внушил себе, что В - это указатель на структуру всего инвентаря. Спасибо большое.
Если не затруднит, обрати внимание ещё на тему, что ниже этой.