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