#1 12-12-2009 08:28

DimP
Registered: 23-03-2009
Posts: 51

Нацеленный пед

У меня еще один вопрос по адресам, помогите пожалуйста.
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

#2 12-12-2009 13:12

Alien
Registered: 12-10-2008
Posts: 564

Re: Нацеленный пед

Если совсем уж в лоб, то можно так (Код для 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

#3 12-12-2009 13:24

DimP
Registered: 23-03-2009
Posts: 51

Re: Нацеленный пед

Спасибо smile ,круто даже на ассемблере вставка smile

hTargetedPed в эту переменную будет записываться пойнтер игрока(и хэндл это и есть пойнтер) ?

Аlien, скажи пожалуйста ,какая у тебя версия VC++ ? ,а то у меня  VC6 не находит функцию __thiscall

Last edited by DimP (12-12-2009 13:43)

Offline

#4 12-12-2009 17:11

Alien
Registered: 12-10-2008
Posts: 564

Re: Нацеленный пед

у меня 9.0
Возможно, у тебя просто экспресс версия?
hTargetedPed  - это хэндл (актер), TargetedPed - это поинтер на структуру педа.
Про __thiscall вот тут почитай...

Offline

#5 12-12-2009 17:41

DimP
Registered: 23-03-2009
Posts: 51

Re: Нацеленный пед

Ну я дурак smile, мне нужно было только понять что (0xB6F3B8)+0x79C это пойнтер нацеленного педа smile.
Спасибо огромное, заодно я стал понимать и функции smile

Offline

Board footer

Powered by FluxBB