You are not logged in.
Pages: 1
1. нашёл где-то на японско/китайско/корейском сайте скрипт ядерного взрыва
2. скорректировал, улучшил, оптимизировал и дополнил его
3. пытаюсь устранить все нюансы.
{$CLEO .cs}
//-------------MAIN---------------
:start
0000: NOP
:check
wait 0
if and
80DF: not actor $PLAYER_ACTOR driving
Player.Defined($PLAYER_CHAR)
not Actor.Dead($PLAYER_ACTOR)
not wasted_or_busted
0AB0: key_pressed 17
0AB0: key_pressed 78 // ctrl+n
jf @check
:phone
wait 0
Model.Load(#CELLPHONE)
Model.Load(3790)
038B: load_requested_models
if
Model.Available(#CELLPHONE)
Model.Available(3790)
jf @phone
0729: AS_actor $PLAYER_ACTOR hold_cellphone 1
03BF: set_player $PLAYER_CHAR ignored_by_everyone 1
0489: set_actor $PLAYER_ACTOR muted 1
wait 5000
0729: AS_actor $PLAYER_ACTOR hold_cellphone 0
03BF: set_player $PLAYER_CHAR ignored_by_everyone 0
0489: set_actor $PLAYER_ACTOR muted 0
$532 = 30999
014E: set_timer_to $532 type 1
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
Actor.StorePos($PLAYER_ACTOR, 5@, 6@, 7@)
0167: 3@ = create_marker_at 0@ 1@ 2@ flags 0 2
Marker.SetColor(3@, 4)
Marker.SetIconSize(3@, 2)
06D5: 4@ = create_racing_checkpoint_at 0@ 1@ 2@ point_to 0.0 0.0 0.0 type 2 radius 5.0
:abort
wait 0
if and
0AB0: key_pressed 17
0AB0: key_pressed 67 // ctrl+c
jf @timeroff
014F: stop_timer $532
Marker.Disable(3@)
06D6: disable_racing_checkpoint 4@
jump @check
:timeroff
if
not $532 > 10000
jf @abort
0208: 8@ = random_float_in_ranges 0.0 360.0
7@ = 50.0
005B: 7@ += 2@ // (float)
9@ = Object.Create(3790, 0@, 1@, 7@)
Object.SetImmunities(9@, 1, 1, 1, 1, 1)
08D2: object 9@ scale_model 2.5
Object.Angle(9@) = 8@
0400: store_coords_to 5@ 6@ 7@ from_object 9@ with_offset 3000.0 0.0 0.0
Object.PutAt(9@, 5@, 6@, 7@)
0087: 11@ = 5@ // (float)
0087: 12@ = 6@ // (float)
0063: 11@ -= 0@ // (float)
0063: 12@ -= 1@ // (float)
10@ = Marker.CreateAboveObject(9@)
Marker.SetColor(10@, 0)
Marker.SetIconSize(10@, 2)
:incoming
wait 0
if
0471: actor $PLAYER_ACTOR near_object_in_rectangle 9@ radius 100.0 100.0 flag 0
jf @coming
0400: store_coords_to 14@ 15@ 16@ from_object 9@ with_offset 2.5 0.0 0.0
095C: create_smoke_at 14@ 15@ 16@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 1.0 size 10.0 last_factor 0.1
0400: store_coords_to 14@ 15@ 16@ from_object 9@ with_offset 5.0 0.0 0.0
095C: create_smoke_at 14@ 15@ 16@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 1.0 size 10.0 last_factor 0.1
0400: store_coords_to 14@ 15@ 16@ from_object 9@ with_offset 7.5 0.0 0.0
095C: create_smoke_at 14@ 15@ 16@ velocity 0.0 0.0 0.0 RGBA 1.0 1.0 1.0 1.0 size 10.0 last_factor 0.1
:coming
0087: 5@ = 11@ // (float)
0087: 6@ = 12@ // (float)
008F: 13@ = integer $532 to_float
13@ /= 10000.0
006B: 5@ *= 13@ // (float)
006B: 6@ *= 13@ // (float)
005B: 5@ += 0@ // (float)
005B: 6@ += 1@ // (float)
Object.PutAt(9@, 5@, 6@, 7@)
if
not $532 > 0
jf @incoming
03CF: load_wav 14401 as 33@
Marker.Disable(3@)
06D6: disable_racing_checkpoint 4@
0750: set_object 9@ visibility 0
Marker.Disable(10@)
0169: set_fade_color 255 255 255
016A: fade 0 () 500 ms
0001: wait 500 ms
set_weather 0
03D1: play_wav 33@
31@ = 0 // height
016A: fade 1 () 2500 ms
020C: create_explosion_with_radius 0 at 0@ 1@ 2@
020C: create_explosion_with_radius 1 at 0@ 1@ 2@
020C: create_explosion_with_radius 2 at 0@ 1@ 2@
020C: create_explosion_with_radius 3 at 0@ 1@ 2@
020C: create_explosion_with_radius 4 at 0@ 1@ 2@
020C: create_explosion_with_radius 5 at 0@ 1@ 2@
020C: create_explosion_with_radius 6 at 0@ 1@ 2@
020C: create_explosion_with_radius 7 at 0@ 1@ 2@
020C: create_explosion_with_radius 8 at 0@ 1@ 2@
020C: create_explosion_with_radius 9 at 0@ 1@ 2@
08EB: create_sparks_at 0@ 1@ 2@ velocity_direction 0.0 0.0 25.0 density 1000
:firstwave
wait 0
020C: create explosion with radius 100 at 0@ 1@ 31@
09E5: create_flash_light_at 0@ 1@ 25.0 RGB_mask 16383 16383 16383 radius 100.0
09E5: create_flash_light_at 0@ 1@ 7@ RGB_mask 16383 16383 16383 radius 100.0
04D5: create_corona_at 0@ 1@ 7@ radius 25.0 type 1 flare 2 RGB 4095 4095 4095
09E5: create_flash_light_at 0@ 1@ 100.0 RGB_mask 16383 16383 16383 radius 1000.0
04D5: create_corona_at 0@ 1@ 100.0 radius 250.0 type 1 flare 2 RGB 4095 4095 4095
31@ += 1
31@ > 30
jf @firstwave
// 0ABA: end_custom_thread_named 'TRAFFIC'
01EB: set_traffic_density_multiplier_to 0.0
03AD: NOP 1
03C7: set_sensitivity_to_crime 0.0
03DE: set_pedestrians_density_multiplier_to 0.0
06C8: enable_riot 1
06D7: enable_train_traffic 0
31@ = 1
:flashlight
wait 0
0093: 30@ = integer 31@ to_float
30@ *= 2.5
09E5: create_flash_light_at 0@ 1@ 7@ RGB_mask 16383 16383 16383 radius 250.0
30@ *= 8.0
if
30@ > 1000.0
jf @coronalight
30@ = 1000.0
:coronalight
04D5: create_corona_at 0@ 1@ 7@ radius 30@ type 1 flare 2 RGB 4095 4095 4095
0093: 30@ = integer 31@ to_float
30@ *= 2.0
if
31@ > 120
jf @secondwave
29@ = 1
:shockwave
27@ = 720.0
30@ = 240.0
0073: 27@ /= 30@ // (float)
0093: 30@ = integer 31@ to_float
30@ *= 2.0
0093: 28@ = integer 29@ to_float
006B: 27@ *= 28@ // (float)
Object.Angle(9@) = 27@
0400: store_coords_to 5@ 6@ 2@ from_object 9@ with_offset 30@ 0.0 0.0
02CE: 2@ = ground_z_at 5@ 6@ 7@
0565: create_soundless_explosion_at 5@ 6@ 2@ type 7
02CF: 18@ = create_fire_at 5@ 6@ 2@ propagation 10 size 500
0400: store_coords_to 14@ 15@ 16@ from_object 9@ with_offset 20.0 0.0 5.0
0063: 14@ -= 0@ // (float)
0063: 15@ -= 1@ // (float)
0063: 16@ -= 7@ // (float)
2@ += 5.0
14@ *= 25.0
15@ *= 25.0
16@ *= 10.0
073E: get_car_in_sphere 5@ 6@ 2@ radius 100.0 model -1 handle_as 27@
if
056E: car 27@ defined
jf @killer1
0325: 20@ = create_car 27@ fire
020B: explode_car 27@ // versionA
020B: explode_car 27@ //
070C: explode_car 27@ // versionB
070C: explode_car 27@ //
08CB: explode_car 27@ shake 0 effect 8 sound 1
020C: create explosion with radius 100 at 5@ 6@ 2@
0948: create_explosion_at 5@ 6@ 2@ type 11 camera_shake 5.0
Car.RemoveReferences(27@)
:killer1
08E5: get_actor_in_sphere 5@ 6@ 2@ radius 100.0 handle_as 27@
if
056D: actor 27@ defined
jf @smoke1
0321: kill_actor 27@
Actor.RemoveReferences(27@)
:smoke1
14@ *= 0.1
15@ *= 0.1
16@ *= 0.1
095C: create_smoke_at 5@ 6@ 2@ velocity 14@ 15@ 16@ RGBA 1.0 1.0 1.0 1.0 size 50.0 last_factor 0.05
09E5: create_flash_light_at 5@ 6@ 2@ RGB_mask 16383 16383 16383 radius 50.0
Camera.Shake(100)
29@ += 1
29@ > 500
jf @shockwave
jump @nnm1
:secondwave
29@ = 1
03D1: play_wav 33@
0223: set_actor $PLAYER_ACTOR health_to 1
0326: 32@ = create_actor $PLAYER_ACTOR fire
:exploder
27@ = 720.0
0073: 27@ /= 30@ // (float)
0093: 28@ = integer 29@ to_float
006B: 27@ *= 28@ // (float)
Object.Angle(9@) = 27@
0400: store_coords_to 5@ 6@ 2@ from_object 9@ with_offset 30@ 0.0 0.0
02CE: 2@ = ground_z_at 5@ 6@ 7@
02CF: 18@ = create_fire_at 5@ 6@ 2@ propagation 3 size 5
02CF: 19@ = create_fire_at 5@ 6@ 2@ propagation 10 size 5
02CF: 21@ = create_fire_at 5@ 6@ 2@ propagation 50 size 100
0400: store_coords_to 14@ 15@ 16@ from_object 9@ with_offset 20.0 0.0 5.0
0063: 14@ -= 0@ // (float)
0063: 15@ -= 1@ // (float)
0063: 16@ -= 7@ // (float)
2@ += 5.0
14@ *= 25.0
15@ *= 25.0
16@ *= 10.0
073E: get_car_in_sphere 5@ 6@ 2@ radius 50.0 model -1 handle_as 27@
if
056E: car 27@ defined
jf @killer2
0325: 20@ = create_car 27@ fire
08CB: explode_car 27@ shake 0 effect 8 sound 1
020B: explode_car 27@ // versionA
020B: explode_car 27@
070C: explode_car 27@ // versionB
070C: explode_car 27@
Car.RemoveReferences(27@)
:killer2
08E5: get_actor_in_sphere 5@ 6@ 2@ radius 50.0 handle_as 27@
if
056D: actor 27@ defined
jf @smoke2
0321: kill_actor 27@
Actor.RemoveReferences(27@)
:smoke2
14@ *= 0.1
15@ *= 0.1
16@ *= 0.1
095C: create_smoke_at 5@ 6@ 2@ velocity 14@ 15@ 16@ RGBA 1.0 1.0 1.0 1.0 size 25.0 last_factor 0.02
020C: create explosion with radius 10 at 5@ 6@ 2@
0565: create_soundless_explosion_at 5@ 6@ 2@ type 1
2@ += 5.0
095C: create_smoke_at 5@ 6@ 2@ velocity 14@ 15@ 16@ RGBA 1.0 1.0 1.0 1.0 size 50.0 last_factor 0.08
099C: jiggle_camera type 1 timelimit 10000.0 intensity 2.0
29@ += 1
001D: 29@ > 31@ // (int)
jf @exploder
:nnm1
31@ += 1
if and
0039: 31@ == 250
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
jf @nnm2
Actor.StorePos($PLAYER_ACTOR, 22@, 23@, 24@)
0169: set_fade_color 255 255 255
016A: fade 0 () 250 ms
0001: wait 250 ms
03D1: play_wav 33@
016A: fade 1 () 1500 ms
0326: 32@ = create_actor $PLAYER_ACTOR fire
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
wait 1
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
wait 10
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
wait 100
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
0AA5: call 0x00439D80 num_params 0 pop 0
000B: 24@ += 2.0
02CF: 25@ = create_fire_at 22@ 23@ 24@ propagation 3 size 5
09E5: create_flash_light_at 22@ 23@ 24@ RGB_mask 16383 16383 16383 radius 10.0
04D5: create_corona_at 22@ 23@ 24@ radius 15.0 type 10 flare 10 RGB 4095 4095 4095
052C: set_player $PLAYER_CHAR drunk_visuals 100
:nnm2
if
31@ > 500
jf @flashlight
Object.Destroy(9@)
wait 1000
0169: set_fade_color 0 0 0
:zone
wait 0
if
80EC: not actor $PLAYER_ACTOR 0 near_point 0@ 1@ radius 1500.0 1500.0
jf @zone
01EB: set_traffic_density_multiplier_to 1.0
03AD: NOP 0
03C7: set_sensitivity_to_crime 1.0
03DE: set_pedestrians_density_multiplier_to 1.0
01B7: release_weather
06C8: enable_riot 0
06D7: enable_train_traffic 1
052C: set_player $PLAYER_CHAR drunk_visuals 0
040D: unload_wav 33@
jump @check
end_thread
jump @check4. Несколько слов о скрипте:
* Вызываем бомбардировщик по CTRL+N
* Отменяем заказ по CTRL+C
* если есть скрипт траффика, раскоментируйте строку для его остановки
* после взрыва в радиусе 1500 автомобили и люди практически не появляются
* если во время взрыва игрок в самолёте - у него отказывает двигатель (загорается)
5. Совершенствование:
* несколько раз приходится прописывать создание взрывов и взрывы машин, ибо зачастую скрипт какие-то из них пропускает
* почему-то не взрываются самолёты и вертолёты (за редким исключением) - ИСПРАВЛЕНО (почти)
* не удаётся качественно добавить огня и дыма после взрыва - КАК РЕАЛИЗОВАТЬ?
* какие ещё можно здесь добавить эффекты визуальные?
Last edited by AlphaOmega (15-06-2008 11:46)
Offline
Насчет взрыва всех машин я тебе уже ответил
во время взрыва отключается скрипт TRAFFIC (если есть)
это не лучшая идея, на мой взгляд. скрипт-то у разных людей может быть разным
Offline
Насчет взрыва всех машин я тебе уже ответил
Спасибо. Код обновил.
Кстати, если написать их в том виде (с повторами и паузой) то получается прикольный эффект разлетания на части.
во время взрыва отключается скрипт TRAFFIC (если есть)
это не лучшая идея, на мой взгляд. скрипт-то у разных людей может быть разным
Поэтому упомянул это - чтобы кому надо могли убрать эту строку
Кстати, в обновлённом коде, после уничтожения всех машин я прописал появление огня и вспышки, но почему-то при тесте ничего не появляется... почему?
Offline
Поэтому упомянул это - чтобы кому надо могли убрать эту строку
лучше наоборот - чтобы те, кому надо, добавили эту строку 
Offline
Поэтому упомянул это - чтобы кому надо могли убрать эту строку
лучше наоборот - чтобы те, кому надо, добавили эту строку
Обновил.
Так всё же, что же делать с огнём и вспышкой возле актёра при взрыве всех машин? почему не появляются?
Offline
32@, 33@ это таймеры. Это локальные переменные особого типа, их значение постоянно увеличивается. Поэтому совсем неразумно использовать их для хранения данных (в данном случае хендла огня и т.п.)
Offline
32@, 33@ это таймеры. Это локальные переменные особого типа, их значение постоянно увеличивается. Поэтому совсем неразумно использовать их для хранения данных (в данном случае хендла огня и т.п.)
32ой в моём коде нужен только чтобы создать, а не ссылать - и работает он замечательно (если в самолёте летишь, то самолёт как порывом ветра сносит когда сиджей загорается). Меня интересует вот эта чать:
02CF: 25@ = create_fire_at 22@ 23@ 24@ propagation 3 size 5 09E5: create_flash_light_at 22@ 23@ 24@ RGB_mask 16383 16383 16383 radius 10.0 04D5: create_corona_at 22@ 23@ 24@ radius 15.0 type 10 flare 10 RGB 4095 4095 4095
22 23 24 - это x y z положения игрока в данный момент (присваивается чуть выше).....
/offtop/ а нельзя ли в след. версии санни сделать столбец, в котором будет показано какие переменные (от 1 до 33) задействованы в скрипте? а то голову сломить мона пока ищешь свободные 
Last edited by AlphaOmega (15-06-2008 12:37)
Offline
Прям конец света какой-то
Offline
извеняюсь за офф-топ...
@Agenzvell
а ты откуда знаешь, ааа?:D
а вообще - дождь не помешает, да.
Offline
а ты откуда знаешь, ааа?
Посмотри на его аватарку. Вопросы есть?
Offline
Pages: 1