pinky Posted July 8, 2008 Share Posted July 8, 2008 I have currently decided to try some memory address foolery to try and make proper 4 front wheel steering work. Now my current code is as follows, basically just to display the steering angles themselves as a trial to see if I can read the addresses. //-------------MAIN---------------0000: NOP :steer03A4: name_thread 'steer':start0001: wait 0 ms 00D6: if 00DF: actor $PLAYER_ACTOR driving 004D: jump_if_false @start0A8D: [email protected] = read_memory 0xB7CD98 size 4 virtual_protect 0 //CPedPtr = ReadMemory ( 0xB7CD98 ) 00D6: if 1 0A8D: [email protected] = read_memory [email protected] + 0x58C size 4 virtual_protect 0 //CVehiclePtr = ReadMemory ( CPedPtr + 0x58C )00D6: if 1 0A8D: $ANGLE1 = read_memory [email protected] + 0x494 size 4 virtual_protect 0 //SteeringAngle1 = ReadMemory ( CVehiclePtr + 0x494 )00D6: if 1 0A8D: $ANGLE2 = read_memory [email protected] + 0x498 size 4 virtual_protect 0 //SteeringAngle2 = ReadMemory ( CVehiclePtr + 0x498 )00D6: if 1 03F0: enable_text_draw 1 04F7: status_text $ANGLE1 type 0 line 1 GXT 'DUMMY' // global_variable04F7: status_text $ANGLE2 type 0 line 2 GXT 'DUMMY' // global_variable0002: jump @start004E: end_thread My problems so far are that the displayed values don't float and I am unsure how to clear the memory once finished. These values don't particulary make sense to me either as they are quite large, any clues? Is it possible to write to the + 0x494 and the + 0x498 addresses to control the steering angle with keypresses at a later date? I am completely new to the memory handling aspect of SCM coding so put everything in n00b terms please. Link to comment Share on other sites More sharing options...
Wesser Posted July 9, 2008 Share Posted July 9, 2008 As I know you can't add another value to 0A8D even if I didn't try this way. Use 0A8E to store the result of two values or arrays but first convert them to an integer value and then repeat the inverse procedure. See the documentation here. Reply my answer if I'm completely wrong. 012 345 678 9A BCD EFG HIJK LMN OPQR STUV WX YZ Link to comment Share on other sites More sharing options...
spaceeinstein Posted July 9, 2008 Share Posted July 9, 2008 You can look at an example here. Link to comment Share on other sites More sharing options...
pinky Posted July 9, 2008 Author Share Posted July 9, 2008 (edited) You can look at an example here. Cheers Spaceeinstein. Code works now, the reading is still high and I notice there is no data for turning left, only right. :steer03A4: name_thread 'steer':start0001: wait 0 ms 00D6: if 00DF: actor $PLAYER_ACTOR driving 004D: jump_if_false @start 03C0: [email protected] = actor $PLAYER_ACTOR car0A97: [email protected] = car [email protected] struct0A8E: [email protected] = [email protected] + 0x494 // steering angle 10A8E: [email protected] = [email protected] + 0x498 // steering angle 20A8D: $ANGLE1 = read_memory [email protected] size 4 virtual_protect 0 //SteeringAngle1 = ReadMemory ( CVehiclePtr + 0x494 )0A8D: $ANGLE2 = read_memory [email protected] size 4 virtual_protect 0 //SteeringAngle2 = ReadMemory ( CVehiclePtr + 0x498 )03F0: enable_text_draw 1 04F7: status_text $ANGLE1 type 0 line 1 GXT 'DUMMY' // global_variable04F7: status_text $ANGLE2 type 0 line 2 GXT 'DUMMY' // global_variable0002: jump @start004E: end_thread This will help me no end, thanks to you both for helping. Righto, my next problem. Using the code below I attempted to write to the steering to control it, or force a turn angle of some sort. :steer03A4: name_thread 'steer':start0001: wait 0 ms 00D6: if 00DF: actor $PLAYER_ACTOR driving 004D: jump_if_false @start 03C0: [email protected] = actor $PLAYER_ACTOR car0A97: [email protected] = car [email protected] struct0A8E: [email protected] = [email protected] + 0x494 // steering angle 10A8E: [email protected] = [email protected] + 0x498 // steering angle 20A8C: write_memory [email protected] size 10 value 1000000000 virtual_protect 00A8C: write_memory [email protected] size 10 value 500000000 virtual_protect 00002: jump @start004E: end_thread Now all this does is write to memory address but has no effect on the steering whatsoever, I was hoping for at least a crash as an indicator that something treid. These values show up in my display created in the previous reader codes but the steering itself is unaffected. The values are so high as I recorded a max of 1058824617 on full left lock of the steering, only shows 0 for centre or any right movement. Any idea why? My main question, how do I control the steering by inputting back into the addresses.? Edited July 9, 2008 by pinky Link to comment Share on other sites More sharing options...
Seemann Posted July 12, 2008 Share Posted July 12, 2008 0A8C: write_memory [email protected] size 10 value 1000000000 virtual_protect 00A8C: write_memory [email protected] size 10 value 500000000 virtual_protect 0 try floating-point numbers to write in as value. (100.0, -0.5, 0.0, etc). Sanny Builder 3 • SA Memory Handling • OpenIV • gtamodding.com CLEO.li - The CLEO Library - Official site Link to comment Share on other sites More sharing options...
pinky Posted July 14, 2008 Author Share Posted July 14, 2008 0A8C: write_memory [email protected] size 10 value 1000000000 virtual_protect 00A8C: write_memory [email protected] size 10 value 500000000 virtual_protect 0 try floating-point numbers to write in as value. (100.0, -0.5, 0.0, etc). Sorry for the long wait, was away for weekend getting blitzed. Gave those a try, still the same result. It just shows up the number with that first script I made to read the position and stays there without actually altering the steering of the vehicle itself. I have another idea to try and force the steering though, I made a script to give the helis similar crash characteristics as GTA IV and it may be possible to do something that way. Unless someone has the memory way beat? I will try some other ideas too, won't be beat. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now