You are not logged in.
Два скрипта, повышающих реалистичность.
Вы заметили, что перекрашивается в pay'n'spray только CJ? Что заходит внутрь здания с дверью может тоже только CJ?
Эти два примера скриптов исправляют эти неточности. Теперь на перекраску pay'n'spray в SF в Doherty возле гаража регулярно ездят разные машины, а в C'Bell (2423.5 -1509.28 24.0411) заходят люди (но никто не выходит, но это тоже можно сделать):
{$CLEO} //{$I Interceptor.txt} var 21@: Actor 9@: Object $Player_Actor: Actor 22@: Float 23@: Float 24@: Float end wait 2000 :begin 03DE: set_pedestrians_density_multiplier_to 99.0 0@ = 2419.3 1@ = -1510.48 2@ = 22.9922 3@ = 0.3 gosub @AIC_GETOBJECT while true if 00A4: actor $Player_Actor sphere 0 in_cube 2413.68 -1507.48 22.96 2419.43 -1510.768 25.46 then $Player_Actor.StorePos(22@, 23@, 24@) 25@ = $Player_Actor.Angle 22@ -= 2419.43 23@ -= -1510.768 24@ -= 25.46 22@ += 366.775 23@ += -14.36 24@ += 1000.81 0860: link_actor $PLAYER_ACTOR to_interior 9 select_interior 9 $Player_Actor.LockInCurrentPosition = true 09BC: put_actor $PLAYER_ACTOR at 22@ 23@ 24@ wait 2000 $Player_Actor.LockInCurrentPosition = false end 073F: get_actor_in_sphere 2423.5 -1509.28 24.0411 radius 1.8 with_pedtype_civilian 1 gang 1 criminal/prostitute 1 handle_as 21@ if //and 056D: actor 21@ defined // 9@>0 // 00FE: actor $Player_Actor sphere 0 in_sphere 2423.5 -1509.28 24.0411 radius 20.0 20.0 10.0 then if 03ca: object 9@ exists jf @begin 0687: clear_actor 21@ task 07FB: set_interior 'FDCHICK' access 0 05D6: clear_scmpath 05D7: add_point_to_scmpath 2419.87 -1509.5475 24.0411 05D7: add_point_to_scmpath 2415.27 -1509.5475 24.0411 05D8: AS_assign_scmpath to_actor 21@ flags 6 0 0905: set_door 9@ openable 0 wait 6000 21@.DestroyWithFade 07FB: set_interior 'FDCHICK' access 1 end wait 0 end :AIC_GETOBJECT 0006: 16@ = 305871 0006: 17@ = @AIC_TESTOBJECTHANDLE 0006: 20@ = 412 :AIC_STARTSEARCH 0085: 4@ = 16@ // (int) 008B: 4@ = &0(4@,1i) // (int) 0085: 19@ = 4@ // (int) 000E: 19@ -= 10787160 0016: 19@ /= 4 008B: 19@ = &0(19@,1i) // (int) 000E: 4@ -= 10787168 0016: 4@ /= 4 008B: 4@ = &0(4@,1i) // (int) 0006: 9@ = -1 0085: 11@ = 4@ // (int) 0006: 10@ = 0 :AIC_SEARCHLOOPMAIN 000A: 4@ += 20 0050: gosub @AIC_READ4B 0085: 4@ = 5@ // (int) 8039: not 4@ == 0 004D: jump_if_false @AIC_SEARCHLOOPNEXT 000A: 4@ += 48 0050: gosub @AIC_READ4B 0085: 12@ = 5@ // (int) 000A: 4@ += 4 0050: gosub @AIC_READ4B 0085: 13@ = 5@ // (int) 000A: 4@ += 4 0050: gosub @AIC_READ4B 0085: 14@ = 5@ // (int) 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) 0085: 4@ = 16@ // (int) 008B: 4@ = &0(4@,1i) // (int) 000A: 4@ += 4 0050: gosub @AIC_READ4B 0085: 4@ = 5@ // (int) 005A: 4@ += 9@ // (int) 0050: gosub @AIC_READ1B 0012: 9@ *= 256 005A: 9@ += 5@ // (int) 0002: jump 17@ :AIC_TESTOBJECTHANDLE //0001: wait 0 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 0085: 3@ = 15@ :AIC_SEARCHLOOPNEXT 005A: 11@ += 20@ // (int) 0085: 4@ = 11@ // (int) 000A: 10@ += 1 002D: 10@ >= 19@ // (int) 004D: jump_if_false @AIC_SEARCHLOOPMAIN 0051: return // --------------------------------- :AIC_READ1B 0085: 6@ = 4@ // (int) 0085: 8@ = 4@ // (int) 0016: 4@ /= 4 0012: 4@ *= 4 0062: 8@ -= 4@ // (int) 0012: 8@ *= 8 000E: 4@ -= 10787168 0016: 4@ /= 4 008B: 7@ = &0(4@,1i) // (int) 0085: 4@ = 6@ // (int) 0006: 5@ = 0 0006: 6@ = 0 :AIC_READ1B_LOOP 08B9: test 7@ bit 8@ 004D: jump_if_false @AIC_READ1B_NEXTBIT 08BF: set 5@ bit 6@ :AIC_READ1B_NEXTBIT 000A: 6@ += 1 000A: 8@ += 1 0039: 6@ == 8 004D: jump_if_false @AIC_READ1B_LOOP 0051: return :AIC_READ4B 0085: 6@ = 4@ // (int) 000E: 4@ -= 10787168 0016: 4@ /= 4 008B: 5@ = &0(4@,1i) // (int) 0085: 4@ = 6@ // (int) 0051: return
{$CLEO} thread 'allspray' var 0@: Car 1@: Actor end while true if and $ONMISSION == 0 09E7: player $PLAYER_CHAR not_frozen then 073E: get_car_in_sphere -2003.8384 227.2971 27.6286 radius 5.0 model -1 handle_as 0@ if 056E: car 0@ defined then 046C: 1@ = car 0@ driver if and 8969: not car 0@ is_noncivilian_vehicle // 82CA: not car 0@ bounding_sphere_visible 056D: actor 1@ defined then //if 88A7: not car 0@ componentA 0 opened_or_not_present //then // 0730: car 0@ damage_component 0 // versionA //end //if 88A7: not car 0@ componentA 1 opened_or_not_present //then // 0730: car 0@ damage_component 1 // versionA //end //if 88A7: not car 0@ componentA 2 opened_or_not_present //then // 0730: car 0@ damage_component 2 // versionA //end //if 88A7: not car 0@ componentA 3 opened_or_not_present //then // 0730: car 0@ damage_component 3 // versionA //end //if 88A7: not car 0@ componentA 4 opened_or_not_present //then // 0730: car 0@ damage_component 4 // versionA //end //if 88A7: not car 0@ componentA 5 opened_or_not_present //then // 0730: car 0@ damage_component 5 // versionA //end 0@.Health = 300 0@.SetDriverBehaviour(Nowhere) 05EC: release_car 0@ from_path 0763: add_car_reference 0@ 04E0: car 0@ abandon_path_radius 255 05D6: clear_scmpath 05D7: add_point_to_scmpath -2003.8384 227.2971 27.6286 05D7: add_point_to_scmpath -1976.7947 225.4384 30.0353 05D7: add_point_to_scmpath -1909.8403 227.9722 34.8952 05D7: add_point_to_scmpath -1905.1957 274.6925 40.5465 05D7: add_point_to_scmpath -1904.9829 283.7856 40.5509 07E7: AS_assign_scmpath_to_actor 1@ in_car 0@ speed 15.0 flags 1 0 1 // 0@.DriveTo(-1904.9829 283.7856 40.5509) while true if {or} 856E: not car 0@ defined // 0@.Wrecked then jump @clr end if 01AF: car 0@ sphere 0 in_sphere -1904.9829 283.7856 40.5509 radius 3.0 3.0 3.0 then Break end wait 0 end Garage.Close('SPRSFSE') 0@.LockInCurrentPosition = True wait 3000 if {or} 856E: not car 0@ defined // 0@.Wrecked then jump @clr end 0A30: repair_car 0@ Garage.Open('SPRSFSE') wait 850 if or 856E: not car 0@ defined // 0@.Wrecked 856D: not actor 1@ defined then jump @clr end 0@.Angle = 0.0 0@.LockInCurrentPosition = False //0@.SetSpeedInstantly(-20.0) 0477: set_car 0@ animation 3 time 2000 wait 2000 if or 856E: not car 0@ defined // 0@.Wrecked 856D: not actor 1@ defined then jump @clr end 05D6: clear_scmpath // 05D7: add_point_to_scmpath -1904.9829 283.7856 40.5509 // 05D7: add_point_to_scmpath -1905.1957 274.6925 40.5465 // 05D7: add_point_to_scmpath -1908.2749 262.5012 40.3984 05D7: add_point_to_scmpath -1910.8593 239.3272 34.8993 05D7: add_point_to_scmpath -1915.2561 231.8239 34.6498 05D7: add_point_to_scmpath -1975.5681 230.8239 29.9494 05D7: add_point_to_scmpath -2003.8384 227.2971 27.6286 07E7: AS_assign_scmpath_to_actor 1@ in_car 0@ speed 5.0 flags 1 0 1 while true if {or} 856E: not car 0@ defined // 0@.Wrecked then jump @clr end if 01AF: car 0@ sphere 0 in_sphere -2003.8384 227.2971 27.6286 radius 5.0 5.0 5.0 then Break end wait 0 end 0@.SetDriverBehaviour(FollowRoad) :clr 0@.RemoveReferences 1@.RemoveReferences wait 10000 end end end wait 0 end
[small][/small]
Offline
Оригинальная идея, класс
Offline