пытаюсь получить Id квеста
имеется цепочка оффсетов:
BaseAdress = 00C38B6C
BaseAdress +0x1C +0x34
+1298 QuestArray /Квестовый массив/
+0x8+(i*0x20+0x8) - dword id квеста(от 0 до 19)
пишу на Delphi.
Код:
for i := 0 to $13 do
begin
ReadProcessMemory(hProcess, ptr(BaseAddress), @QuestID, sizeof(QuestID), BytesCount);
ReadProcessMemory(hProcess, ptr(QuestID+$1C), @QuestID, sizeof(QuestID), BytesCount);
ReadProcessMemory(hProcess, ptr(QuestID+$34), @QuestID, sizeof(QuestID), BytesCount);
ReadProcessMemory(hProcess, ptr(QuestID+$1298),@QuestID, sizeof(QuestID), BytesCount);
ReadProcessMemory(hProcess, ptr(QuestID+$8), @QuestID, sizeof(QuestID), BytesCount);
ReadProcessMemory(hProcess, ptr(QuestID+(i*$20+$8) ), @QuestID, sizeof(QuestID), BytesCount);
form2.Memo1.Lines.Add(IntToStr(QuestID)) ;
end;
в итоге получаю вовсе не id квеста(((
+0x8+(i*0x20+0x8) - dword id квеста(от 0 до 19) взял с "RUOFF Земли духов, клиент 1.4.5 версии, сборка 2305, версия обновления 207-221" т. к. больше нигде не упоминается об id квеста.
Правильную ли я цепочка оффсетов взял?
Последний раз редактировалось Morkanus; 30.03.2014 в 19:09.
Причина: пояснение
В работающей программе "Jawq" летающий по ГЕО оффсеты такие:
PlayerQuestList=0x1298 // значит этот оффсет правильный
ItemId=0x08
Получается у меня последняя цепочка не правильная, то есть "+0x8+(i*0x20+0x8)". Если ID это первая +0x8 то значит у меня не верно "(i*0x20+0x8)".
ItemId не относится к этому
Прога проверяет итем в квестовом инвентаре и узнает какой том следующий.
а наличие квеста на гео там вроде с помощью инжекта, если я не ошибаюсь
Добавлено через 6 часов 38 минут
[Ссылки могут видеть только зарегистрированные пользователи. ]
ItemId не относится к этому
Прога проверяет итем в квестовом инвентаре и узнает какой том следующий.
а наличие квеста на гео там вроде с помощью инжекта, если я не ошибаюсь...
Да понял в чём проблема, пытаюсь решить её. Спасибо за подсказку)
(отпишусь и тут) Разобрался, надо было сделать всего лишь так: