Halo PC Trainer Help

Post here about scripting and programming for HaloPC (audio, network, ai, etc.)
Post Reply
[users]gamerkd15





Posts: 38
Joined: Wed Mar 23, 2005 3:23 pm

Halo PC Trainer Help

Post by [users]gamerkd15 »

Ok, I want to make a trainer where it has specific functions that I need. I probably will only make it for myself. The functions I want to include are "debug_camera_load", "debug_camera_save", and "cheat_teleport_to_camera".

Now the problem is that when I type these commands in I don't put a "1" or "0" at end to make the command true or false. So how would I find the addresses of these commands if I can't look for a true/false number. Is there an invisible true/false function?

Also another problem I'm running into is the addresses of functions in Halo keep changing. So if it won't remain constant, how can I rely on it? Is there something I can do to make the address constant?

Thanks for your help...
Patrickssj6




Pi Collaborator

Posts: 5426
Joined: Sat Jul 24, 2004 12:12 pm
Location: I'm a Paranoid
Contact:

Post by Patrickssj6 »

1st.The camera thing changes multiple values not only 0 to 1.You have to take the painfull way then(value has changed etc)

2nd.If they values aren't stored in the game engine they are stored on the map so they depend on the map.I'm not sure on this but I think Pointers will work.Pointers show where the adress is located.

http://www.artmoney.ru/manual/english/dma.htm
...left for good
[SK]Yourpain





Posts: 139
Joined: Sun Jul 30, 2006 10:01 pm

Post by [SK]Yourpain »

i'd use tsearch but they are teh same thing..just to be safe cause i heard artmoney has spyware and adware in it.But i have not confirmed this =S
User avatar
xbox7887




Socialist Coagulator Decryptor Advisor
Eureka Commentator Wave Scorched Earth

Posts: 2160
Joined: Mon Dec 27, 2004 6:19 pm
Location: New Lenox, Illinois
Contact:

Re: Halo PC Trainer Help

Post by xbox7887 »

gamerkd15 wrote:Ok, I want to make a trainer where it has specific functions that I need. I probably will only make it for myself. The functions I want to include are "debug_camera_load", "debug_camera_save", and "cheat_teleport_to_camera".

Now the problem is that when I type these commands in I don't put a "1" or "0" at end to make the command true or false. So how would I find the addresses of these commands if I can't look for a true/false number. Is there an invisible true/false function?

Also another problem I'm running into is the addresses of functions in Halo keep changing. So if it won't remain constant, how can I rely on it? Is there something I can do to make the address constant?

Thanks for your help...
1.) You would just be better off coding those features on your own rather than trying to find them in the game itself. I'm assuming the debug cam load and save features will save and load all current shifts and rotations. Just add a buffer big enough to store them, then go between moving them from the buffer or camera array. For halo 2 the debug save/load features would look something like below...

Code: Select all

camstate	db	18h dup(0)		;buffer

		;-----saves camera state-----
		mov	esi, 04E9CF0h		;camera array starting address
		lea	edi, [camstate]	;savestate buffer
		mov	ecx, 6			;number of items to save in our array
		rep	movsd			;save each item (esi->edi)

		;-----loads camera state-----
		lea	esi, [camstate]	;savestate buffer
		mov	edi, 04E9CF0h		;camera array starting address
		mov	ecx, 6			;number of items to load into our array
		rep	movsd			;load each item (esi->edi)
2.) You are experiencing what is called DMA. The easiest way to obtain static references to such addresses would be to set a break on write for the questionable value. Once its tripped, you can go to the disassembly and view what instruction is writing to your address. You will most likely see something similar to below...

Code: Select all

		lea	eax, [esi+E1Ch]		;grabs our static pointer
		mov	[eax+5Ch], 012345678h	;writes to our value (pointer+index)
It's always good practice to code relative to pointers, never assume something is a static address if its being calculated from a register.
Post Reply