2@ 3@ 4@が対象のxyz座標、5@6@が画面上に投影した時の画面上の座標。
{$VERSION 3.1.0023} {$CLEO .cs} thread 'healthhud' { 012 temp 345 678 91011 121314 temp_main
15 the_obj 16 17 18 19
202122 232425 262728 get_actor get_obj get_other... 293031
32 33 } :main wait 0 03F0: enable_text_draw 0 gosub @settei gosub @get_actor if 03CA: (check) object 15@ exists then 0108: destroy_object 15@ end jump @main
//////////////sub/////////////////// :settei if 8248: (check) not model 1582 available then 0247: load_model 1582 038B: load_requested_models while 8248: not model 1582 available wait 0 end end 0107: 15@ = create_object 1582 at 0.0 0.0 0.0 09CA: set_object 15@ immunities BP 1 FP 1 EP 1 CP 1 MP 1 0750: set_object 15@ visibility 0 068E: get_camera_target_point_to 2@ 3@ 4@ 068D: get_camera_position_to 5@ 6@ 7@ 0063: 2@ -= 5@ // (float) 0063: 3@ -= 6@ // (float) 0063: 4@ -= 7@ // (float) 0087: 28@ = 2@ // (float) 0087: 29@ = 3@ // (float) gosub @atan 0509: 28@ = distance_between_XY 2@ 3@ and_XY 0.0 0.0 0087: 29@ = 4@ // (float) 0087: 4@ = 27@ // (float) gosub @atan 0087: 2@ = 27@ // (float) 000B: 2@ += -270.0 0013: 2@ *= -1.0 0453: set_object 15@ XY_rotation 2@ 4@ angle 0.0 return
:atan 0509: 27@ = distance_between_XY 28@ 29@ and_XY 0.0 0.0 0073: 28@ /= 27@ // (float) 0073: 29@ /= 27@ // (float) 0509: 27@ = distance_between_XY 28@ 29@ and_XY 0.0 1.0 for 16@ = 0 to 11 0017: 27@ /= 2.0 006B: 27@ *= 27@ // (float) 0087: 29@ = 27@ // (float) 0013: 27@ *= -1.0 000B: 27@ += 1.0 01FB: 27@ = square_root 27@ 0013: 27@ *= -1.0 000B: 27@ += 1.0 006B: 27@ *= 27@ // (float) 005B: 27@ += 29@ // (float) 01FB: 27@ = square_root 27@ end 0013: 27@ *= 4096.0 0017: 27@ /= 3.141592 0013: 27@ *= 180.0 if 0021: 28@ > 0.0 then 0013: 27@ *= -1.0 000B: 27@ += 360.0 end return
:get_actor 0A8D: 27@ = read_memory 0xB74490 size 4 virtual_protect 0 000A: 27@ += 0x4 0A8D: 27@ = read_memory 27@ size 4 virtual_protect 0 for 28@ = 0 to 35584 step 0x100 0A8D: 26@ = read_memory 27@ size 1 virtual_protect 0 000A: 27@ += 0x1 if and 0029: 26@ >= 0x00 001B: 0x80 > 26@ then 005A: 26@ += 28@ // (int) 0889: store_actor $PLAYER_ACTOR enter_of_body_position_to 5@ 6@ 7@ 0889: store_actor 26@ enter_of_body_position_to 2@ 3@ 4@ 050A: 0@ = distance_between_XYZ 5@ 6@ 7@ and_XYZ 2@ 3@ 4@ 068D: get_camera_position_to 5@ 6@ 7@ if and 255.0 > 0@ 8118: (check) not actor 26@ dead 06BD: (check) no_obstacles_between 5@ 6@ 7@ and 2@ 3@ 4@ solid 1 car 0 actor 0 object 0 particle 0 803C: not $PLAYER_ACTOR == 26@ // (int) then 4@ += 1.0//atama gosub @getgamen //56_xy //----------------size------------------------ 0087: 2@ = 0@ // (float) 0@ = 10.0 0073: 0@ /= 2@ // (float) 0087: 2@ = 0@ // (float) 2@ *= 0.5 if 0@ > 2.0 then 0@ = 2.0 2@ = 1.0 end if 0.5 > 0@ then 0@ = 0.5 2@ = 0.25 end //-----------------color-------------------- gosub @ped_health end end end return
:getgamen 068D: get_camera_position_to 5@ 6@ 7@ 0063: 5@ -= 2@ // (float) 0063: 6@ -= 3@ // (float) 0063: 7@ -= 4@ // (float) 0013: 5@ *= -1.0 0013: 6@ *= -1.0 0400: store_coords_to 5@ 6@ 7@ from_object 15@ with_offset 5@ 7@ 6@ 0073: 5@ /= 7@ // (float) 0073: 6@ /= 7@ // (float) 0801: get_camera_zoom_factor_to 4@ // float 0017: 4@ /= 2.0 02F7: 2@ = sine 4@ // (float) 02F6: 3@ = cosine 4@ // (float) 0073: 2@ /= 3@ // (float) 006B: 5@ *= 2@ // (float) 006B: 6@ *= 2@ // (float) 0013: 5@ *= 324.0 0013: 6@ *= 304.0 if 0023: 0.0 > 7@ then 0007: 5@ = 640.0 0007: 6@ = 480.0 end 000B: 5@ += 320.0 000B: 6@ += 223.0 return
:ped_health 03F0: enable_text_draw 1 0A96: 12@ = actor 26@ struct 000A: 12@ += 0x540 0A8D: 13@ = read_memory 12@ size 4 virtual_protect 0 //now_health 000A: 12@ += 0x4 0A8D: 14@ = read_memory 12@ size 4 virtual_protect 0 //max_health 0073: 13@ /= 14@ // (float) 0@ *= 20.0 2@ *= 5.0 038E: draw_box position 5@ 6@ scale 0@ 2@ color 255 255 255 alpha 40 //kuro_box
0087: 1@ = 0@ // (float) 006B: 1@ *= 13@ // (float) 0063: 0@ -= 1@ // (float) 0@ *= 0.5 0063: 5@ -= 0@ // (float) 038E: draw_box position 5@ 6@ scale 1@ 2@ color 255 0 0 alpha 120 //aka_box return