You are not logged in.
Pages: 1
У меня еще один вопрос по адресам, помогите пожалуйста.
cчитываю этот адрес (0xB6F3B8)+0x79C написано ,что в нем находится нацеленный пед.
Будет ли правильным следующий алгоритм?(при условии что (0xB6F3B8)+0x79C > 0)
n = 0xB74490;
x = (n)+12 //получить количество педов.
от 1 до x
{
Если (n) == (0xB6F3B8)+0x79C то a = (n) //получить пойнтер на нацеленного педа.
n = n + 0x7C4
}
Или надо по другому ?
Вообщем мне надо получить пойнтер на нацеленного педа, только мне не понятно как перенести эти две строки на C или delphi ,и нужно ли это вообще.
0AA8: call_function_method 0x4442D0 struct 2@ num_params 1 pop 0 ped 1@ store_to 0@
0AA6: call_method 0x4637E0 struct 0xA90850 num_params 2 pop 0 type 2 ped 1@
Из кода Alien'a.
Last edited by DimP (12-12-2009 09:18)
Offline
Если совсем уж в лоб, то можно так (Код для Visual C++):
DWORD GetTargetedPedHandle(void)
{
DWORD targetedPed, hTargetedPed;
DWORD Target = *(DWORD*)0xB6F3B8;
if (Target && (targetedPed = *(DWORD*)(Target + 0x79C), targetedPed))
hTargetedPed = ((DWORD (__thiscall*)(DWORD, DWORD))0x4442D0)(*(DWORD*)0xB74490, targetedPed);
else
hTargetedPed = 0;
return hTargetedPed;
}С другими компилерами без асмовставок не обойтись. И не все они имеют встроенный ассемблер.
Приведенный ниже код не проверялся. Могут быть ошибки.
DWORD __declspec(naked) GetTargetedPedHandle(void)
{
__asm
{
mov eax, [0xB6F3B8]
test eax, eax
jz NoTarget
mov eax, [eax + 0x79C]
test eax, eax
jz NoTarget
mov ecx, [0xB74490]
push eax
mov eax, 0x4442D0
call eax
retn
NoTarget:
mov eax, 0
retn
}
}
Offline
Спасибо
,круто даже на ассемблере вставка 
hTargetedPed в эту переменную будет записываться пойнтер игрока(и хэндл это и есть пойнтер) ?
Аlien, скажи пожалуйста ,какая у тебя версия VC++ ? ,а то у меня VC6 не находит функцию __thiscall
Last edited by DimP (12-12-2009 13:43)
Offline
Ну я дурак
, мне нужно было только понять что (0xB6F3B8)+0x79C это пойнтер нацеленного педа
.
Спасибо огромное, заодно я стал понимать и функции 
Offline
Pages: 1