You are not logged in.
Pages: 1
Скрипт минигана, который стреляет сам по полицейским (в первую очередь) и по машинам, вертолётам, пешеходам. Поставить автоминиган - клавиша M.
Миниган разворачивается плавно.
Недостаток - подтормаживание, если прохожих нет поблизости.
На всякий случай скажу, что этот скрипт был написан мной 31 октября 2008 г., 16:11:18.
{$CLEO} const MINIGUN_BASE = 2985 ACTIVATION_KEY = 0x4D //VK_M DAMAGE_1BULLET = 100 TIME_BETWEEN_SHOTS = 0 end var $PLAYER_ACTOR: Actor $PLAYER_CHAR: Player 0@: Object 1@: Float 2@: Float 3@: Float 4@: Float 5@: Float 6@: Float 7@: Float 8@: Float 9@: Float 18@: Float 19@: Float end 0000: :loop while true if $PLAYER_CHAR.Defined then if and 0AB0: key_pressed ACTIVATION_KEY $PLAYER_CHAR.Controllable not $PLAYER_ACTOR.Driving $PLAYER_CHAR.Money > 499999 $ONMISSION == 0 then $PLAYER_CHAR.Money += -500000 // $PLAYER_CHAR.WantedLevel = 6 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 2.0 -1.0 // 02CE: 3@ = ground_z_at 1@ 2@ 3@ 3@-=1.5 0@ = Object.Create(MINIGUN_BASE, 1@, 2@, 3@) 7@ = $PLAYER_ACTOR.Angle 7@ += 90.0 0@.Angle = 7@ {02F6: 18@ = sine 7@ // (float) 02F7: 19@ = cosine 7@ // (float) 18@+=1@ 19@+=2@} 7@ -= 90.0 3@+=1.5 066E: create_particle "gunsmoke" attached_to_object 0@ with_offset 0.95 0.0 1.089 rotation 90.0 0.0 0.0 flag 0 handle_as 11@ // 066E: create_particle "prt_gunshell" attached_to_object 0@ with_offset 0.141034 -0.0554999 1.1 rotation 0.0 100.0 90.0 flag 0 handle_as 12@ Camera.SetBehindPlayer $PLAYER_CHAR.CanMove = false 04EB: AS_actor $PLAYER_ACTOR crouch 1 while 834E: not move_object 0@ to 1@ 2@ 3@ speed 0.0 0.0 0.05 flag 0 wait 0 end 04EB: AS_actor $PLAYER_ACTOR crouch 0 $PLAYER_CHAR.CanMove = true 0400: store_coords_to 1@ 2@ 3@ from_object 0@ with_offset 1.2 0.0 1.087 18@=1@ 19@=2@ while true 0400: store_coords_to 4@ 5@ 6@ from_object 0@ with_offset 100.2 0.0 1.087 0A8D: 12@ = read_memory 0x00C1C964 size 4 virtual_protect 0 if 12@ > 0 then // ищем вертолет 0A8D: 13@ = read_memory 0x00B74494 size 4 virtual_protect 0 0AA8: call_function_method 0x00424160 struct 13@ num_params 1 pop 0 12@ 13@ if 0185: car 13@ health >= 250 then Car.StorePos(13@, 4@, 5@, 6@) 050A: 14@ = distance_between_XYZ 1@ 2@ 3@ and_XYZ 4@ 5@ 6@ if and 14@ <= 75.0 06BD: no_obstacles_between 1@ 2@ 3@ and 4@ 5@ 6@ solid 1 car 0 actor 0 object 0 particle 0 then jump @Shoot end end end 0A8D: 12@ = read_memory 0x00C1C968 size 4 virtual_protect 0 if 12@ > 0 then // ищем вертолет 0A8D: 13@ = read_memory 0x00B74494 size 4 virtual_protect 0 0AA8: call_function_method 0x00424160 struct 13@ num_params 1 pop 0 12@ 13@ if 0185: car 13@ health >= 250 then Car.StorePos(13@, 4@, 5@, 6@) 050A: 14@ = distance_between_XYZ 1@ 2@ 3@ and_XYZ 4@ 5@ 6@ if and 14@ <= 75.0 06BD: no_obstacles_between 1@ 2@ 3@ and 4@ 5@ 6@ solid 1 car 0 actor 0 object 0 particle 0 then jump @Shoot end end end //08E5: get_actor_in_sphere 1@ 2@ 3@ radius 50.0 handle_as 10@ //0AB1: call_scm_func @Func 1 0@ if not Actor.Dead(10@) then Actor.StorePos(10@, 4@, 5@, 6@) 050A: 14@ = distance_between_XYZ 1@ 2@ 3@ and_XYZ 4@ 5@ 6@ end if or Actor.Dead(10@) 14@>60.0 32@>=7000 then 32@=0 0AB1: call_scm_func @FUNC_GETPOLICEACTOR 7 1@ 2@ 3@ 60.0 1@ 2@ 3@ 10@ if 10@<0 then 0AB1: call_scm_func @FUNC_GETBANDITACTOR 7 1@ 2@ 3@ 60.0 1@ 2@ 3@ 10@ if 10@<0 then 0AB1: call_scm_func @FUNC_GETACTOR 7 1@ 2@ 3@ 60.0 1@ 2@ 3@ 10@ if 10@<0 then wait 500 end end end end // 073F: get_actor_in_sphere 1@ 2@ 3@ radius 50.0 with_pedtype_civilian 1 gang 1 criminal/prostitute 1 handle_as 10@ // 0A3E: unknown_get_actor_in_sphere 1@ 2@ 3@ radius 50.0 50.0 5.0 handle_as 10@ // 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 30@ closest_ped_to 10@ if and 10@ > 0 not Actor.Dead(10@) //86EE: not actor 10@ in_group $PLAYER_GROUP then Actor.StorePos(10@, 4@, 5@, 6@) //Actor.RemoveReferences(10@) jump @Shoot // 064C: make_particle 12@ visible end :checks if or 0AB0: key_pressed ACTIVATION_KEY not $PLAYER_CHAR.Defined $ONMISSION == 1 89E7: not player $PLAYER_CHAR not_frozen then Break end 0@.StorePos(20@, 21@, 22@) 0@.StorePos(23@, 24@, 25@) 20@-=2.5 21@-=2.5 22@-=2.5 23@+=2.5 24@+=2.5 25@+=2.5 if 0356: explosion_type -1 in_cube_cornerA 20@ 21@ 22@ cornerB 23@ 24@ 25@ then jump @damage end wait TIME_BETWEEN_SHOTS end 0@.Destroy 0650: destroy_particle 11@ // 0650: destroy_particle 12@ end end wait 0 end {:Func 0400: store_coords_to 1@ 2@ 3@ from_object 0@ with_offset 1.2 0.5 0.587 0400: store_coords_to 4@ 5@ 6@ from_object 0@ with_offset 1.2 -0.5 1.587 03E6: remove_text_box if 05FC: actor $PLAYER_ACTOR in_cube_fll_corner_at 1@ 2@ 3@ fur_corner_at 4@ 5@ 6@ depth 50.0 flag 0 then 0513: show_text_box_1number 'NUMBER' number 777 end 0AB2: ret 0} :Shoot 0AB1: call_scm_func @RotateObjectAtPoint 5 0@ 18@ 19@ 4@ 5@ 18@=4@ 19@=5@ 0400: store_coords_to 1@ 2@ 3@ from_object 0@ with_offset 0.95 0.0 1.087 7@ = Random(-0.5, 0.5) 8@ = Random(-0.5, 0.5) 9@ = Random(-0.5, 0.5) 4@+=7@ 5@+=8@ 6@+=9@ //$PLAYER_ACTOR.SetImmunities(1,0,0,0,0) 06BC: create_M4_shoot_from 1@ 2@ 3@ target 4@ 5@ 6@ energy DAMAGE_1BULLET //$PLAYER_ACTOR.SetImmunities(0,0,0,0,0) 064C: make_particle 11@ visible jump @checks :damage 0@.StorePos(20@, 21@, 22@) 02CF: 26@ = create_fire_at 20@ 21@ 22@ propagation 0 size 2 0@.ToggleInMovingList = true wait 5000 020C: create_explosion_with_radius 12 at 20@ 21@ 22@ 0@.Throw(0.0, 0.0, 10.0) 05A2: set_object 0@ rotation_velocity_about_an_axis 0.0 5.0 0.0 through_center_of_mass wait 500 0@.StorePos(20@, 21@, 22@) 02D1: remove_fire 26@ 020C: create_explosion_with_radius 0 at 20@ 21@ 22@ 020C: create_explosion_with_radius 5 at 20@ 21@ 22@ 0@.Destroy 0650: destroy_particle 11@ //0650: destroy_particle 12@ jump @loop :DrawFloat 008C: 4@ = float_to_integer 0@ 008C: 5@ = float_to_integer 0@ 5@ *= 1000 0@ *= 1000.0 008C: 0@ = float_to_integer 0@ 0062: 0@ -= 5@ 0095: abs( 0@ ) gosub @TextDrawText2Settings 045B: text_draw_2numbers 1@ 2@ '_NUM_F' 4@ 0@ 0AB2: ret 0 :TextDrawTextSettings 0348: set_text_draw_proportional 1 033F: set_text_draw_letter_width_to 0.3 height_to 1.0 0349: set_text_draw_style_to 1 081C: draw_text_outline 1 0 0 0 255 //081C: draw_text_outline 0 0 0 0 0 0340: set_text_draw_color_RGB_mask_to 0x12 0xFF 0 200 0343: set_text_draw_linewidth 640.0 return :TextDrawText2Settings 0348: set_text_draw_proportional 1 033F: set_text_draw_letter_width_to 0.3 height_to 1.0 0349: set_text_draw_style_to 1 081C: draw_text_outline 1 0 0 0 255 0340: set_text_draw_color_RGB_mask_to 0xFC 0xFF 0 200 0343: set_text_draw_linewidth 640.0 return :RotateObjectAtPoint{In_Object,In_XY_Float} var 0@:Object 1@:Float//OldX 2@:Float//OldY 3@:Float//NewX 4@:Float//NewY 5@:Float 6@:Float 7@:Float 8@:Float 9@:Float 10@:Float 11@:Float 12@:Float 13@:Float 14@:Float end Object.StorePos(0@, 13@, 14@, 15@) 1@-=13@ 2@-=14@ 3@-=13@ 4@-=14@ 0509: 5@ = distance_between_XY 0.0 0.0 and_XY 1@ 2@ 1@/=5@ 2@/=5@ 0509: 5@ = distance_between_XY 0.0 0.0 and_XY 3@ 4@ 3@/=5@ 4@/=5@ 6@=3@ 7@=4@ 6@-=1@ 7@-=2@ 0509: 5@ = distance_between_XY 0.0 0.0 and_XY 6@ 7@ 6@/=5@ 7@/=5@ 6@*=0.05 7@*=0.05 while true 1@+=6@ 2@+=7@ 8@=1@ 9@=2@ 8@-=3@ 9@-=4@ 0097: make 8@ absolute_float 0097: make 9@ absolute_float if and 8@<=0.06 9@<=0.06 then Break end 0604: Arctan2( 1@ , 2@ ) store_to 30@ 30@+=90.0 Object.Angle(0@) = 30@ wait 0 end 0604: Arctan2( 3@ , 4@ ) store_to 30@ 30@+=90.0 Object.Angle(0@) = 30@ 0AB2: ret 0 :debug 03F0: enable_text_draw 1 0AB1: @DrawFloat 3 pars fnumber 10@ coords 69.0 200.0 0AB1: @DrawFloat 3 pars fnumber 11@ coords 69.0 210.0 return { The Interceptor 1.1 by PLPynton and Seemann Parameters: 0@ - input coord X 1@ - input coord Y 2@ - input coord Z 3@ - search radius variables 4@..16@ in use 9@ = Result (returns -1 if not found) } jump @Interceptor_end :FUNC_GETACTOR 0087: 17@ = 4@ // (float) 0087: 18@ = 5@ // (float) 0087: 19@ = 6@ // (float) gosub @AIC_GETACTOR 0AB2: ret 1 9@ :FUNC_GETPOLICEACTOR 0087: 17@ = 4@ // (float) 0087: 18@ = 5@ // (float) 0087: 19@ = 6@ // (float) gosub @AIC_GETPOLICEACTOR 0AB2: ret 1 9@ :FUNC_GETBANDITACTOR 0087: 17@ = 4@ // (float) 0087: 18@ = 5@ // (float) 0087: 19@ = 6@ // (float) gosub @AIC_GETBANDITACTOR 0AB2: ret 1 9@ :FUNC_GETVEHICLE gosub @AIC_GETVEHICLE 0AB2: ret 1 9@ :FUNC_GETOBJECT gosub @AIC_GETOBJECT 0AB2: ret 1 9@ :AIC_GETPOLICEACTOR 0006: 16@ = 305868 0006: 5@ = @AIC_TESTPOLICEACTORHANDLE 0006: 6@ = 1988 0002: jump @AIC_STARTSEARCH :AIC_GETBANDITACTOR 0006: 16@ = 305868 0006: 5@ = @AIC_TESTBANDITACTORHANDLE 0006: 6@ = 1988 0002: jump @AIC_STARTSEARCH :AIC_GETACTOR 0006: 16@ = 305868 0006: 5@ = @AIC_TESTACTORHANDLE 0006: 6@ = 1988 0002: jump @AIC_STARTSEARCH :AIC_GETVEHICLE 0006: 16@ = 305869 0006: 5@ = @AIC_TESTVEHICLEHANDLE 0006: 6@ = 2584 0006: 8@ = -1 0256: player $PLAYER_CHAR defined 004D: jump_if_false @AIC_STARTSEARCH 00DF: actor $PLAYER_ACTOR driving 004D: jump_if_false @AIC_STARTSEARCH 03C0: 8@ = actor $PLAYER_ACTOR car 0002: jump @AIC_STARTSEARCH :AIC_GETOBJECT 0006: 16@ = 305871 0006: 5@ = @AIC_TESTOBJECTHANDLE 0006: 6@ = 412 :AIC_STARTSEARCH 008B: 16@ = &0(16@,1i) // CPool* 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 16@ + 8 )^ = 7@ // CPool.Size 0A8D: 11@ = read_memory 16@ size 4 virtual_protect 0 // CPool.pUnits 0006: 9@ = -1 0006: 10@ = 0 :AIC_SEARCHLOOPMAIN 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 11@ + 20 )^ = 4@ // xyz* 8039: not 4@ == 0 004D: jump_if_false @AIC_SEARCHLOOPNEXT 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 48 )^ = 12@ // x 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 52 )^ = 13@ // y 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 56 )^ = 14@ // z 050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@ 0025: 3@ > 15@ // (float) 004D: jump_if_false @AIC_SEARCHLOOPNEXT 0085: 9@ = 10@ // (int) // counter 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 16@ + 4 )^ = 4@ // CPool.flags 005A: 4@ += 9@ // (int) 0A8D: 4@ = read_memory 4@ size 1 virtual_protect 0 0012: 9@ *= 256 005A: 9@ += 4@ // (int) 0002: jump 5@ :AIC_TESTVEHICLEHANDLE 056E: is 9@ valid_vehicle_handle 004D: jump_if_false @AIC_NOHANDLE 00D6: if or 003B: 8@ == 9@ // (int) 0119: car 9@ wrecked 004D: jump_if_false @AIC_NEWSEARCHRADIUS 0002: jump @AIC_NOHANDLE :AIC_TESTACTORHANDLE 056D: is 9@ valid_actor_handle 004D: jump_if_false @AIC_NOHANDLE 00A0: store_actor 9@ position_to 22@ 23@ 24@ 06BD: no_obstacles_between 17@ 18@ 19@ and 22@ 23@ 24@ solid 1 car 0 actor 0 object 0 particle 0 004D: jump_if_false @AIC_NOHANDLE 00D6: if or 02F2: actor 9@ model == #FAM1 02F2: actor 9@ model == #FAM2 02F2: actor 9@ model == #FAM3 06EE: actor 9@ in_group $PLAYER_GROUP then 0002: jump @AIC_NOHANDLE end 00D6: if or 003C: $PLAYER_ACTOR == 9@ // (int) 0118: actor 9@ dead 004D: jump_if_false @AIC_NEWSEARCHRADIUS 0002: jump @AIC_NOHANDLE :AIC_TESTBANDITACTORHANDLE 056D: is 9@ valid_actor_handle 004D: jump_if_false @AIC_NOHANDLE 803C: not $PLAYER_ACTOR == 9@ // (int) 004D: jump_if_false @AIC_NOHANDLE 8118: not actor 9@ dead 004D: jump_if_false @AIC_NOHANDLE 00A0: store_actor 9@ position_to 22@ 23@ 24@ 06BD: no_obstacles_between 17@ 18@ 19@ and 22@ 23@ 24@ solid 1 car 0 actor 0 object 0 particle 0 004D: jump_if_false @AIC_NOHANDLE 02F2: actor 9@ model == #BALLAS1 004D: jump_if_false @001 0002: jump @AIC_NEWSEARCHRADIUS :001 02F2: actor 9@ model == #BALLAS2 004D: jump_if_false @002 0002: jump @AIC_NEWSEARCHRADIUS :002 02F2: actor 9@ model == #BALLAS3 004D: jump_if_false @003 0002: jump @AIC_NEWSEARCHRADIUS :003 02F2: actor 9@ model == #LSV1 004D: jump_if_false @004 0002: jump @AIC_NEWSEARCHRADIUS :004 02F2: actor 9@ model == #LSV2 004D: jump_if_false @005 0002: jump @AIC_NEWSEARCHRADIUS :005 02F2: actor 9@ model == #LSV3 004D: jump_if_false @006 0002: jump @AIC_NEWSEARCHRADIUS :006 02F2: actor 9@ model == #VLA1 004D: jump_if_false @007 0002: jump @AIC_NEWSEARCHRADIUS :007 02F2: actor 9@ model == #VLA2 004D: jump_if_false @008 0002: jump @AIC_NEWSEARCHRADIUS :008 02F2: actor 9@ model == #VLA3 004D: jump_if_false @AIC_NOHANDLE 0002: jump @AIC_NEWSEARCHRADIUS :AIC_TESTPOLICEACTORHANDLE 056D: is 9@ valid_actor_handle 004D: jump_if_false @AIC_NOHANDLE 803C: not $PLAYER_ACTOR == 9@ // (int) 004D: jump_if_false @AIC_NOHANDLE 8118: not actor 9@ dead 004D: jump_if_false @AIC_NOHANDLE 00A0: store_actor 9@ position_to 22@ 23@ 24@ 06BD: no_obstacles_between 17@ 18@ 19@ and 22@ 23@ 24@ solid 1 car 0 actor 0 object 0 particle 0 004D: jump_if_false @AIC_NOHANDLE 02F2: actor 9@ model == #LAPD1 004D: jump_if_false @01 0002: jump @AIC_NEWSEARCHRADIUS :01 02F2: actor 9@ model == #SFPD1 004D: jump_if_false @02 0002: jump @AIC_NEWSEARCHRADIUS :02 02F2: actor 9@ model == #LVPD1 004D: jump_if_false @03 0002: jump @AIC_NEWSEARCHRADIUS :03 02F2: actor 9@ model == #CSHER 004D: jump_if_false @04 0002: jump @AIC_NEWSEARCHRADIUS :04 02F2: actor 9@ model == #DSHER 004D: jump_if_false @05 0002: jump @AIC_NEWSEARCHRADIUS :05 02F2: actor 9@ model == #LAPDM1 004D: jump_if_false @06 0002: jump @AIC_NEWSEARCHRADIUS :06 02F2: actor 9@ model == #SWAT 004D: jump_if_false @07 0002: jump @AIC_NEWSEARCHRADIUS :07 02F2: actor 9@ model == #FBI 004D: jump_if_false @08 0002: jump @AIC_NEWSEARCHRADIUS :08 02F2: actor 9@ model == #ARMY 004D: jump_if_false @AIC_NOHANDLE 0002: jump @AIC_NEWSEARCHRADIUS :AIC_TESTOBJECTHANDLE 83CA: not object 9@ exists 004D: jump_if_false @AIC_NEWSEARCHRADIUS :AIC_NOHANDLE 0006: 9@ = -1 0002: jump @AIC_SEARCHLOOPNEXT :AIC_NEWSEARCHRADIUS { use 0051: return to break the loop immediately when found at least one actor/car/object, does not matter if he's nearest one. } // v EXTRA SEARCH CRITERIA GOES HERE v { 21@ contains the handle of an actor/car/object that should be excluded from the search result (for example a handle found previously). } //803B: 21@ <> 9@ //004D: jump_if_false @AIC_NOHANDLE 0051: return 0085: 3@ = 15@ :AIC_SEARCHLOOPNEXT 005A: 11@ += 6@ // (int) 000A: 10@ += 1 002D: 10@ >= 7@ // (int) 004D: jump_if_false @AIC_SEARCHLOOPMAIN 0051: return :AIC_READMEMOFFSET 0A8E: 0@ = 0@ + 1@ // int 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0AB2: ret 1 0@ :Interceptor_end
[small][/small]
Offline
интересный скрипт. Понравилось решение с арктангенсом:^
Offline
Мобильная версия пушки: прицепляется к Patriot'у.
{$CLEO} const MINIGUN_BASE = 2985 ACTIVATION_KEY = 0x4D //VK_M DAMAGE_1BULLET = 100 TIME_BETWEEN_SHOTS = 0 Y_OFFSET = -2.0 end var $PLAYER_ACTOR: Actor $PLAYER_CHAR: Player 0@: Object 1@: Float 2@: Float 3@: Float 4@: Float 5@: Float 6@: Float 7@: Float 8@: Float 9@: Float 17@: Car 18@: Float 19@: Float end 0000: :loop while true if $PLAYER_CHAR.Defined then if and 0AB0: key_pressed ACTIVATION_KEY not $PLAYER_ACTOR.Driving then fade 0 500 while fading wait 0 end 0AA5: call 0x0043A0B6 num_params 1 pop 1 #PATRIOT fade 1 500 while fading wait 0 end end if and 0AB0: key_pressed ACTIVATION_KEY $PLAYER_ACTOR.Driving 00DD: actor $PLAYER_ACTOR driving_car_with_model #PATRIOT $PLAYER_CHAR.Money > 499999 $ONMISSION == 0 then 03C0: 17@ = actor $PLAYER_ACTOR car $PLAYER_CHAR.Money += -500000 // $PLAYER_CHAR.WantedLevel = 6 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 2.0 -1.0 // 02CE: 3@ = ground_z_at 1@ 2@ 3@ 3@-=1.5 0@ = Object.Create(MINIGUN_BASE, 1@, 2@, 3@) 0@.CollisionDetection=false 7@ = $PLAYER_ACTOR.Angle 7@ += 90.0 0@.Angle = 7@ 0681: attach_object 0@ to_car 17@ with_offset 0.0 Y_OFFSET 0.2 rotation 0.0 0.0 -90.0 {02F6: 18@ = sine 7@ // (float) 02F7: 19@ = cosine 7@ // (float) 18@+=1@ 19@+=2@} 7@ -= 90.0 3@+=1.5 066E: create_particle "gunsmoke" attached_to_object 0@ with_offset 0.95 0.0 1.089 rotation 90.0 0.0 0.0 flag 0 handle_as 11@ // 066E: create_particle "prt_gunshell" attached_to_object 0@ with_offset 0.141034 -0.0554999 1.1 rotation 0.0 100.0 90.0 flag 0 handle_as 12@ 0400: store_coords_to 1@ 2@ 3@ from_object 0@ with_offset 1.2 0.0 1.087 18@=1@ 19@=2@ wait 200 while $PLAYER_ACTOR.InCar(17@) 0400: store_coords_to 1@ 2@ 3@ from_object 0@ with_offset 0.95 0.0 1.087 0400: store_coords_to 4@ 5@ 6@ from_object 0@ with_offset 100.2 0.0 1.087 0A8D: 12@ = read_memory 0x00C1C964 size 4 virtual_protect 0 if 12@ > 0 then // ищем вертолет 0A8D: 13@ = read_memory 0x00B74494 size 4 virtual_protect 0 0AA8: call_function_method 0x00424160 struct 13@ num_params 1 pop 0 12@ 13@ if 0185: car 13@ health >= 250 then Car.StorePos(13@, 4@, 5@, 6@) 050A: 14@ = distance_between_XYZ 1@ 2@ 3@ and_XYZ 4@ 5@ 6@ if and 14@ <= 75.0 06BD: no_obstacles_between 1@ 2@ 3@ and 4@ 5@ 6@ solid 1 car 0 actor 0 object 0 particle 0 then jump @Shoot end end end 0A8D: 12@ = read_memory 0x00C1C968 size 4 virtual_protect 0 if 12@ > 0 then // ищем вертолет 0A8D: 13@ = read_memory 0x00B74494 size 4 virtual_protect 0 0AA8: call_function_method 0x00424160 struct 13@ num_params 1 pop 0 12@ 13@ if 0185: car 13@ health >= 250 then Car.StorePos(13@, 4@, 5@, 6@) 050A: 14@ = distance_between_XYZ 1@ 2@ 3@ and_XYZ 4@ 5@ 6@ if and 14@ <= 75.0 06BD: no_obstacles_between 1@ 2@ 3@ and 4@ 5@ 6@ solid 1 car 0 actor 0 object 0 particle 0 then jump @Shoot end end end //08E5: get_actor_in_sphere 1@ 2@ 3@ radius 50.0 handle_as 10@ //0AB1: call_scm_func @Func 1 0@ if not Actor.Dead(10@) then Actor.StorePos(10@, 4@, 5@, 6@) 050A: 14@ = distance_between_XYZ 1@ 2@ 3@ and_XYZ 4@ 5@ 6@ end if or Actor.Dead(10@) 14@>60.0 32@>=7000 then 32@=0 0AB1: call_scm_func @FUNC_GETPOLICEACTOR 7 1@ 2@ 3@ 60.0 1@ 2@ 3@ 10@ if 10@<0 then 0AB1: call_scm_func @FUNC_GETBANDITACTOR 7 1@ 2@ 3@ 60.0 1@ 2@ 3@ 10@ if 10@<0 then 0AB1: call_scm_func @FUNC_GETACTOR 7 1@ 2@ 3@ 60.0 1@ 2@ 3@ 10@ if 10@<0 then wait 500 end end end end // 073F: get_actor_in_sphere 1@ 2@ 3@ radius 50.0 with_pedtype_civilian 1 gang 1 criminal/prostitute 1 handle_as 10@ // 0A3E: unknown_get_actor_in_sphere 1@ 2@ 3@ radius 50.0 50.0 5.0 handle_as 10@ // 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 30@ closest_ped_to 10@ if and 10@ > 0 not Actor.Dead(10@) //86EE: not actor 10@ in_group $PLAYER_GROUP then Actor.StorePos(10@, 4@, 5@, 6@) //Actor.RemoveReferences(10@) jump @Shoot // 064C: make_particle 12@ visible end :checks if or 0AB0: key_pressed ACTIVATION_KEY not $PLAYER_CHAR.Defined $ONMISSION == 1 89E7: not player $PLAYER_CHAR not_frozen then Break end 0@.StorePos(20@, 21@, 22@) 0@.StorePos(23@, 24@, 25@) 20@-=2.5 21@-=2.5 22@-=2.5 23@+=2.5 24@+=2.5 25@+=2.5 if 0356: explosion_type -1 in_cube_cornerA 20@ 21@ 22@ cornerB 23@ 24@ 25@ then jump @damage end wait TIME_BETWEEN_SHOTS end 0@.Destroy 0650: destroy_particle 11@ // 0650: destroy_particle 12@ end end wait 0 end {:Func 0400: store_coords_to 1@ 2@ 3@ from_object 0@ with_offset 1.2 0.5 0.587 0400: store_coords_to 4@ 5@ 6@ from_object 0@ with_offset 1.2 -0.5 1.587 03E6: remove_text_box if 05FC: actor $PLAYER_ACTOR in_cube_fll_corner_at 1@ 2@ 3@ fur_corner_at 4@ 5@ 6@ depth 50.0 flag 0 then 0513: show_text_box_1number 'NUMBER' number 777 end 0AB2: ret 0} :Shoot 0AB1: call_scm_func @RotateObjectAtPoint 6 0@ 18@ 19@ 4@ 5@ 17@ 18@=4@ 19@=5@ 0400: store_coords_to 1@ 2@ 3@ from_object 0@ with_offset 0.95 0.0 1.087 7@ = Random(-0.5, 0.5) 8@ = Random(-0.5, 0.5) 9@ = Random(-0.5, 0.5) 4@+=7@ 5@+=8@ 6@+=9@ 17@.SetImmunities(1,0,0,0,0) 06BC: create_M4_shoot_from 1@ 2@ 3@ target 4@ 5@ 6@ energy DAMAGE_1BULLET 17@.SetImmunities(0,0,0,0,0) 064C: make_particle 11@ visible jump @checks :damage 0@.StorePos(20@, 21@, 22@) 02CF: 26@ = create_fire_at 20@ 21@ 22@ propagation 0 size 2 0@.ToggleInMovingList = true 0@.CollisionDetection=true 32@=0 while 32@<5000 02D1: remove_fire 26@ 0@.StorePos(20@, 21@, 22@) 02CF: 26@ = create_fire_at 20@ 21@ 22@ propagation 0 size 2 wait 0 end 020C: create_explosion_with_radius 12 at 20@ 21@ 22@ 0682: detach_object 0@ 0.0 0.0 0.0 collision_detection 1 06A2: get_car 17@ velocity_in_direction_XYZ 20@ 21@ 22@ 22@+=15.0 0@.Throw(20@, 21@, 22@) 05A2: set_object 0@ rotation_velocity_about_an_axis 0.0 5.0 0.0 through_center_of_mass wait 500 0@.StorePos(20@, 21@, 22@) 02D1: remove_fire 26@ 020C: create_explosion_with_radius 0 at 20@ 21@ 22@ 020C: create_explosion_with_radius 5 at 20@ 21@ 22@ 0@.Destroy 0650: destroy_particle 11@ //0650: destroy_particle 12@ jump @loop :DrawFloat 008C: 4@ = float_to_integer 0@ 008C: 5@ = float_to_integer 0@ 5@ *= 1000 0@ *= 1000.0 008C: 0@ = float_to_integer 0@ 0062: 0@ -= 5@ 0095: abs( 0@ ) gosub @TextDrawText2Settings 045B: text_draw_2numbers 1@ 2@ '_NUM_F' 4@ 0@ 0AB2: ret 0 :TextDrawTextSettings 0348: set_text_draw_proportional 1 033F: set_text_draw_letter_width_to 0.3 height_to 1.0 0349: set_text_draw_style_to 1 081C: draw_text_outline 1 0 0 0 255 //081C: draw_text_outline 0 0 0 0 0 0340: set_text_draw_color_RGB_mask_to 0x12 0xFF 0 200 0343: set_text_draw_linewidth 640.0 return :TextDrawText2Settings 0348: set_text_draw_proportional 1 033F: set_text_draw_letter_width_to 0.3 height_to 1.0 0349: set_text_draw_style_to 1 081C: draw_text_outline 1 0 0 0 255 0340: set_text_draw_color_RGB_mask_to 0xFC 0xFF 0 200 0343: set_text_draw_linewidth 640.0 return :RotateObjectAtPoint{In_Object,In_XY_Float} var 0@:Object 1@:Float//OldX 2@:Float//OldY 3@:Float//NewX 4@:Float//NewY 5@:Car//CarHandle 17@:Float 16@:Float 6@:Float 7@:Float 8@:Float 9@:Float 10@:Float 11@:Float 12@:Float 13@:Float 14@:Float 30@: Float end 17@=5@.Angle Object.StorePos(0@, 13@, 14@, 15@) 1@-=13@ 2@-=14@ 3@-=13@ 4@-=14@ {0509: 16@ = distance_between_XY 0.0 0.0 and_XY 1@ 2@ 1@/=16@ 2@/=16@ 0509: 16@ = distance_between_XY 0.0 0.0 and_XY 3@ 4@ 3@/=16@ 4@/=16@ 6@=3@ 7@=4@ 6@-=1@ 7@-=2@ 0509: 16@ = distance_between_XY 0.0 0.0 and_XY 6@ 7@ 6@/=16@ 7@/=16@ 6@*=0.05 7@*=0.05 while true 1@+=6@ 2@+=7@ 8@=1@ 9@=2@ 8@-=3@ 9@-=4@ 0097: make 8@ absolute_float 0097: make 9@ absolute_float if and 8@<=0.06 9@<=0.06 then Break end 0604: Arctan2( 1@ , 2@ ) store_to 30@ 30@+=90.0 30@-=17@ if 0685: object 0@ attached then 0682: detach_object 0@ 0.0 0.0 0.0 collision_detection 0 end 0681: attach_object 0@ to_car 5@ with_offset 0.0 Y_OFFSET 0.0 rotation 0.0 0.0 30@ wait 0 end} 0604: Arctan2( 3@ , 4@ ) store_to 30@ 30@+=90.0 30@-=17@ if 0685: object 0@ attached then 0682: detach_object 0@ 0.0 0.0 0.0 collision_detection 0 end 0681: attach_object 0@ to_car 5@ with_offset 0.0 Y_OFFSET 0.2 rotation 0.0 0.0 30@ 0AB2: ret 0 :debug 03F0: enable_text_draw 1 0AB1: @DrawFloat 3 pars fnumber 10@ coords 69.0 200.0 0AB1: @DrawFloat 3 pars fnumber 11@ coords 69.0 210.0 return { The Interceptor 1.1 by PLPynton and Seemann Parameters: 0@ - input coord X 1@ - input coord Y 2@ - input coord Z 3@ - search radius variables 4@..16@ in use 9@ = Result (returns -1 if not found) } jump @Interceptor_end :FUNC_GETACTOR 0087: 17@ = 4@ // (float) 0087: 18@ = 5@ // (float) 0087: 19@ = 6@ // (float) gosub @AIC_GETACTOR 0AB2: ret 1 9@ :FUNC_GETPOLICEACTOR 0087: 17@ = 4@ // (float) 0087: 18@ = 5@ // (float) 0087: 19@ = 6@ // (float) gosub @AIC_GETPOLICEACTOR 0AB2: ret 1 9@ :FUNC_GETBANDITACTOR 0087: 17@ = 4@ // (float) 0087: 18@ = 5@ // (float) 0087: 19@ = 6@ // (float) gosub @AIC_GETBANDITACTOR 0AB2: ret 1 9@ :FUNC_GETVEHICLE gosub @AIC_GETVEHICLE 0AB2: ret 1 9@ :FUNC_GETOBJECT gosub @AIC_GETOBJECT 0AB2: ret 1 9@ :AIC_GETPOLICEACTOR 0006: 16@ = 305868 0006: 5@ = @AIC_TESTPOLICEACTORHANDLE 0006: 6@ = 1988 0002: jump @AIC_STARTSEARCH :AIC_GETBANDITACTOR 0006: 16@ = 305868 0006: 5@ = @AIC_TESTBANDITACTORHANDLE 0006: 6@ = 1988 0002: jump @AIC_STARTSEARCH :AIC_GETACTOR 0006: 16@ = 305868 0006: 5@ = @AIC_TESTACTORHANDLE 0006: 6@ = 1988 0002: jump @AIC_STARTSEARCH :AIC_GETVEHICLE 0006: 16@ = 305869 0006: 5@ = @AIC_TESTVEHICLEHANDLE 0006: 6@ = 2584 0006: 8@ = -1 0256: player $PLAYER_CHAR defined 004D: jump_if_false @AIC_STARTSEARCH 00DF: actor $PLAYER_ACTOR driving 004D: jump_if_false @AIC_STARTSEARCH 03C0: 8@ = actor $PLAYER_ACTOR car 0002: jump @AIC_STARTSEARCH :AIC_GETOBJECT 0006: 16@ = 305871 0006: 5@ = @AIC_TESTOBJECTHANDLE 0006: 6@ = 412 :AIC_STARTSEARCH 008B: 16@ = &0(16@,1i) // CPool* 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 16@ + 8 )^ = 7@ // CPool.Size 0A8D: 11@ = read_memory 16@ size 4 virtual_protect 0 // CPool.pUnits 0006: 9@ = -1 0006: 10@ = 0 :AIC_SEARCHLOOPMAIN 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 11@ + 20 )^ = 4@ // xyz* 8039: not 4@ == 0 004D: jump_if_false @AIC_SEARCHLOOPNEXT 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 48 )^ = 12@ // x 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 52 )^ = 13@ // y 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 4@ + 56 )^ = 14@ // z 050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@ 0025: 3@ > 15@ // (float) 004D: jump_if_false @AIC_SEARCHLOOPNEXT 0085: 9@ = 10@ // (int) // counter 0AB1: call_scm_func @AIC_READMEMOFFSET 2 ( 16@ + 4 )^ = 4@ // CPool.flags 005A: 4@ += 9@ // (int) 0A8D: 4@ = read_memory 4@ size 1 virtual_protect 0 0012: 9@ *= 256 005A: 9@ += 4@ // (int) 0002: jump 5@ :AIC_TESTVEHICLEHANDLE 056E: is 9@ valid_vehicle_handle 004D: jump_if_false @AIC_NOHANDLE 00D6: if or 003B: 8@ == 9@ // (int) 0119: car 9@ wrecked 004D: jump_if_false @AIC_NEWSEARCHRADIUS 0002: jump @AIC_NOHANDLE :AIC_TESTACTORHANDLE 056D: is 9@ valid_actor_handle 004D: jump_if_false @AIC_NOHANDLE 00A0: store_actor 9@ position_to 22@ 23@ 24@ 06BD: no_obstacles_between 17@ 18@ 19@ and 22@ 23@ 24@ solid 1 car 0 actor 0 object 0 particle 0 004D: jump_if_false @AIC_NOHANDLE 00D6: if or 02F2: actor 9@ model == #FAM1 02F2: actor 9@ model == #FAM2 02F2: actor 9@ model == #FAM3 06EE: actor 9@ in_group $PLAYER_GROUP then 0002: jump @AIC_NOHANDLE end 00D6: if or 003C: $PLAYER_ACTOR == 9@ // (int) 0118: actor 9@ dead 004D: jump_if_false @AIC_NEWSEARCHRADIUS 0002: jump @AIC_NOHANDLE :AIC_TESTBANDITACTORHANDLE 056D: is 9@ valid_actor_handle 004D: jump_if_false @AIC_NOHANDLE 803C: not $PLAYER_ACTOR == 9@ // (int) 004D: jump_if_false @AIC_NOHANDLE 8118: not actor 9@ dead 004D: jump_if_false @AIC_NOHANDLE 00A0: store_actor 9@ position_to 22@ 23@ 24@ 06BD: no_obstacles_between 17@ 18@ 19@ and 22@ 23@ 24@ solid 1 car 0 actor 0 object 0 particle 0 004D: jump_if_false @AIC_NOHANDLE 02F2: actor 9@ model == #BALLAS1 004D: jump_if_false @001 0002: jump @AIC_NEWSEARCHRADIUS :001 02F2: actor 9@ model == #BALLAS2 004D: jump_if_false @002 0002: jump @AIC_NEWSEARCHRADIUS :002 02F2: actor 9@ model == #BALLAS3 004D: jump_if_false @003 0002: jump @AIC_NEWSEARCHRADIUS :003 02F2: actor 9@ model == #LSV1 004D: jump_if_false @004 0002: jump @AIC_NEWSEARCHRADIUS :004 02F2: actor 9@ model == #LSV2 004D: jump_if_false @005 0002: jump @AIC_NEWSEARCHRADIUS :005 02F2: actor 9@ model == #LSV3 004D: jump_if_false @006 0002: jump @AIC_NEWSEARCHRADIUS :006 02F2: actor 9@ model == #VLA1 004D: jump_if_false @007 0002: jump @AIC_NEWSEARCHRADIUS :007 02F2: actor 9@ model == #VLA2 004D: jump_if_false @008 0002: jump @AIC_NEWSEARCHRADIUS :008 02F2: actor 9@ model == #VLA3 004D: jump_if_false @AIC_NOHANDLE 0002: jump @AIC_NEWSEARCHRADIUS :AIC_TESTPOLICEACTORHANDLE 056D: is 9@ valid_actor_handle 004D: jump_if_false @AIC_NOHANDLE 803C: not $PLAYER_ACTOR == 9@ // (int) 004D: jump_if_false @AIC_NOHANDLE 8118: not actor 9@ dead 004D: jump_if_false @AIC_NOHANDLE 00A0: store_actor 9@ position_to 22@ 23@ 24@ 06BD: no_obstacles_between 17@ 18@ 19@ and 22@ 23@ 24@ solid 1 car 0 actor 0 object 0 particle 0 004D: jump_if_false @AIC_NOHANDLE 02F2: actor 9@ model == #LAPD1 004D: jump_if_false @01 0002: jump @AIC_NEWSEARCHRADIUS :01 02F2: actor 9@ model == #SFPD1 004D: jump_if_false @02 0002: jump @AIC_NEWSEARCHRADIUS :02 02F2: actor 9@ model == #LVPD1 004D: jump_if_false @03 0002: jump @AIC_NEWSEARCHRADIUS :03 02F2: actor 9@ model == #CSHER 004D: jump_if_false @04 0002: jump @AIC_NEWSEARCHRADIUS :04 02F2: actor 9@ model == #DSHER 004D: jump_if_false @05 0002: jump @AIC_NEWSEARCHRADIUS :05 02F2: actor 9@ model == #LAPDM1 004D: jump_if_false @06 0002: jump @AIC_NEWSEARCHRADIUS :06 02F2: actor 9@ model == #SWAT 004D: jump_if_false @07 0002: jump @AIC_NEWSEARCHRADIUS :07 02F2: actor 9@ model == #FBI 004D: jump_if_false @08 0002: jump @AIC_NEWSEARCHRADIUS :08 02F2: actor 9@ model == #ARMY 004D: jump_if_false @AIC_NOHANDLE 0002: jump @AIC_NEWSEARCHRADIUS :AIC_TESTOBJECTHANDLE 83CA: not object 9@ exists 004D: jump_if_false @AIC_NEWSEARCHRADIUS :AIC_NOHANDLE 0006: 9@ = -1 0002: jump @AIC_SEARCHLOOPNEXT :AIC_NEWSEARCHRADIUS { use 0051: return to break the loop immediately when found at least one actor/car/object, does not matter if he's nearest one. } // v EXTRA SEARCH CRITERIA GOES HERE v { 21@ contains the handle of an actor/car/object that should be excluded from the search result (for example a handle found previously). } //803B: 21@ <> 9@ //004D: jump_if_false @AIC_NOHANDLE 0051: return 0085: 3@ = 15@ :AIC_SEARCHLOOPNEXT 005A: 11@ += 6@ // (int) 000A: 10@ += 1 002D: 10@ >= 7@ // (int) 004D: jump_if_false @AIC_SEARCHLOOPMAIN 0051: return :AIC_READMEMOFFSET 0A8E: 0@ = 0@ + 1@ // int 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0AB2: ret 1 0@ :Interceptor_end
[small][/small]
Offline
Интересно... А что за параметр propagation у create_fire_at?
Last edited by ~AquaZ~ (12-03-2010 19:12)
Offline
Интересно... А что за параметр propagation у create_fire_at?
propagation - распространение (вроде радиус на который будет распростроняться дым)
Элементарно же!
Offline
if and 0AB0: key_pressed ACTIVATION_KEY $PLAYER_ACTOR.Driving 00DD: actor $PLAYER_ACTOR driving_car_with_model #PATRIOT $PLAYER_CHAR.Money > 499999 $ONMISSION == 0 then 03C0: 17@ = actor $PLAYER_ACTOR car $PLAYER_CHAR.Money += -500000
А это для некоего баланса сил?
Offline
Pages: 1