- 196
- 104
CLEO:
{$CLEO .cs}
0000:
31@ = 6.0
WHILE TRUE
WAIT 0
if
0AB0: 2
then
0AB1: @Get_AIM_TARGET_ACTOR 1 IN_RADIUS_FROM_CROSSHAIR 400.0 _STORE_TO 0@
if
056D: actor 0@ defined
then
WHILE TRUE
WAIT 0
if
856D: actor 0@ defined
then
break
end
04C4: store_coords_to 1@ 2@ 3@ from_actor 0@ with_offset 0.0 0.0 0.3
068D: get_camera_position_to 4@ 5@ 6@
if or
00DF: actor 0@ driving
0118: actor 0@ dead
82CB: actor 0@ bounding_sphere_visible
8AB0: 2
86BD: obstacles_between 1@ 2@ 3@ and 4@ 5@ 6@ solid 1 car 1 actor 0 object 1 particle 0
then
break
end
if
0AB0: 1
then
29@ = 55
28@ = 255
27@ = 1.5
else
29@ = 255
28@ = 55
27@ = 1.0
end
if
31@ > 8.0
then
30@ = 1
end
if
31@ < 6.0
then
30@ = 0
end
if
30@ == 0
then
31@ += 0.05
end
if
30@ == 1
then
31@ -= 0.05
end
03F0: enable_text_draw 1
04C4: store_coords_to 1@ 2@ 3@ from_actor 0@ with_offset 0.0 0.0 0.0
0AB1: call_scm_func @getscreenXYFrom3DCoords 3 coords_XYZ 1@ 2@ 3@ store_to 4@ 5@
0087: 1@ = 4@ // (float)
005B: 1@ += 31@ // (float)
038E: draw_box_position 1@ 5@ size 27@ 8.0 RGBA 28@ 29@ 25 255
0087: 1@ = 4@ // (float)
0063: 1@ -= 31@ // (float)
038E: draw_box_position 1@ 5@ size 27@ 8.0 RGBA 28@ 29@ 25 255
0087: 1@ = 5@ // (float)
005B: 1@ += 31@ // (float)
038E: draw_box_position 4@ 1@ size 8.0 27@ RGBA 28@ 29@ 25 255
0087: 1@ = 5@ // (float)
0063: 1@ -= 31@ // (float)
038E: draw_box_position 4@ 1@ size 8.0 27@ RGBA 28@ 29@ 25 255
if
0AB0: 1
then
0AB1: @Get_AIMING_POSITION 0 _STORE_TO 1@ 2@ 3@
3@ -= 0.4
0AB1: @teleport 4 ACTOR 0@ TO 1@ 2@ 3@ WITHOUT RESET
end
END
end
end
END
:TELEPORT
0A96: 4@ = actor 0@ struct
4@ += 20
0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
4@ += 48 // X
0A8C: write_memory 4@ size 4 value 1@ virtual_protect 0 // X
4@ += 4 // Y
0A8C: write_memory 4@ size 4 value 2@ virtual_protect 0 // Y
4@ += 4 // Z
0A8C: write_memory 4@ size 4 value 3@ virtual_protect 0 // Z
0AB2: ret 0
//0AB1: @Get_AIM_TARGET_ACTOR 1 IN_RADIUS_FROM_CROSSHAIR 400.0 _STORE_TO 0@
:GET_AIM_TARGET_ACTOR
FOR 28@ = 0.0 TO 0@ STEP 8.0
0A8D: 29@ = read_memory 0xB74490 size 4 virtual_protect 0
000A: 29@ += 0x4
0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
for 30@ = 0 to 35584 step 0x100
0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
000A: 29@ += 0x1
if and
0029: 31@ >= 0x00
001B: 0x80 > 31@
then
005A: 31@ += 30@
if
056D: actor 31@ defined
then
if
803C: $PLAYER_ACTOR == 31@ // (int)
then
04C4: store_coords_to 27@ 26@ 25@ from_actor 31@ with_offset 0.0 0.0 0.0
068D: get_camera_position_to 24@ 23@ 22@
if and { PUT YOUR CHECKS RIGHT BELOW THIS...}
06BD: no_obstacles_between 27@ 26@ 25@ and 24@ 23@ 22@ solid 1 car 1 actor 0 object 1 particle 0
80DF: actor 31@ driving
8118: actor 31@ dead
02CB: actor 31@ bounding_sphere_visible
then
04C4: store_coords_to 10@ 11@ 12@ from_actor 31@ 0.0 0.0 0.0
0AB1: call_scm_func @getscreenXYFrom3DCoords 3 3D_coords_X 10@ Y 11@ Z 12@ store_screen_X_to 13@ Y_to 14@
0509: 15@ = distance_between_XY 339.1 179.1 and_XY 13@ 14@
if
0035: 28@ >= 15@ // (float)
then
0AB2: 1 31@
end
end
end
end
end
end
END
0AB2: 1 -1
:GET_AIMING_POSITION
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
0A9F: 5@ = current_thread_pointer
5@ += 80
0A8E: 6@ = 5@ + 12 // int
4@ = 2.5
0AA6: call_method 5327216 11989032 num_params 6 pop 0 6@ 5@ 3@ 2@ 1@ 4@
0AB2: ret 3 8@ 9@ 10@
//0AB1: call_scm_func @getscreenXYFrom3DCoords 3 3D_coords_X 0@ Y 1@ Z 2@ store_screen_X_to 3@ Y_to 4@
:getScreenXYFrom3DCoords
0AC7: 14@ = var 0@ offset
0AC7: 15@ = var 3@ offset
0AC7: 16@ = var 6@ offset
0AC7: 17@ = var 9@ offset
0AA5: call 0x70CE30 num_params 6 pop 6 {18@ 18@} 0 0 17@ 16@ 15@ 14@
0007: 12@ = 640.0
0007: 13@ = 448.0
0A8D: 14@ = read_memory 0xC17044 size 4 virtual_protect 0
0A8D: 15@ = read_memory 0xC17048 size 4 virtual_protect 0
0093: 14@ = integer 14@ to_float
0093: 15@ = integer 15@ to_float
0073: 12@ /= 14@
0073: 13@ /= 15@
006B: 3@ *= 12@
006B: 4@ *= 13@
0AB2: ret 2 3@ 4@