#1 15-06-2008 10:10

AlphaOmega
Registered: 02-06-2008
Posts: 98

Ядерный взрыв

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 @check

4. Несколько слов о скрипте:
* Вызываем бомбардировщик по CTRL+N
* Отменяем заказ по CTRL+C
* если есть скрипт траффика, раскоментируйте строку для его остановки
* после взрыва в радиусе 1500 автомобили и люди практически не появляются
* если во время взрыва игрок в самолёте - у него отказывает двигатель (загорается)

5. Совершенствование:
* несколько раз приходится прописывать создание взрывов и взрывы машин, ибо зачастую скрипт какие-то из них пропускает
* почему-то не взрываются самолёты и вертолёты (за редким исключением) - ИСПРАВЛЕНО (почти)
* не удаётся качественно добавить огня и дыма после взрыва - КАК РЕАЛИЗОВАТЬ?
* какие ещё можно здесь добавить эффекты визуальные?

Last edited by AlphaOmega (15-06-2008 11:46)

Offline

#2 15-06-2008 10:21

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Ядерный взрыв

Насчет взрыва всех машин я тебе уже ответил

во время взрыва отключается скрипт TRAFFIC (если есть)

это не лучшая идея, на мой взгляд. скрипт-то у разных людей может быть разным

Offline

#3 15-06-2008 11:36

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: Ядерный взрыв

Seemann wrote:

Насчет взрыва всех машин я тебе уже ответил

Спасибо. Код обновил.
Кстати, если написать их в том виде (с повторами и паузой) то получается прикольный эффект разлетания на части.

Seemann wrote:

во время взрыва отключается скрипт TRAFFIC (если есть)

это не лучшая идея, на мой взгляд. скрипт-то у разных людей может быть разным

Поэтому упомянул это - чтобы кому надо могли убрать эту строку

Кстати, в обновлённом коде, после уничтожения всех машин я прописал появление огня и вспышки, но почему-то при тесте ничего не появляется... почему?

Offline

#4 15-06-2008 11:39

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Ядерный взрыв

Поэтому упомянул это - чтобы кому надо могли убрать эту строку

лучше наоборот - чтобы те, кому надо, добавили эту строку wink

Offline

#5 15-06-2008 11:47

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: Ядерный взрыв

Seemann wrote:

Поэтому упомянул это - чтобы кому надо могли убрать эту строку

лучше наоборот - чтобы те, кому надо, добавили эту строку wink

Обновил.
Так всё же, что же делать с огнём и вспышкой возле актёра при взрыве всех машин? почему не появляются?

Offline

#6 15-06-2008 12:29

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Ядерный взрыв

32@, 33@ это таймеры. Это локальные переменные особого типа, их значение постоянно увеличивается. Поэтому совсем неразумно использовать их для хранения данных (в данном случае хендла огня и т.п.)

Offline

#7 15-06-2008 12:36

AlphaOmega
Registered: 02-06-2008
Posts: 98

Re: Ядерный взрыв

Seemann wrote:

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) задействованы в скрипте? а то голову сломить мона пока ищешь свободные wink

Last edited by AlphaOmega (15-06-2008 12:37)

Offline

#8 16-06-2008 13:14

Worm
Registered: 10-06-2008
Posts: 25

Re: Ядерный взрыв

Прям конец света какой-то

Offline

#9 03-08-2008 03:14

Agenzvell
From: Windows/system32
Registered: 28-08-2007
Posts: 109
Website

Re: Ядерный взрыв

Еще надо поставить дождь как погодный эффект. Ведь после ядерного взрыва часто идут дожди.

Offline

#10 03-08-2008 08:54

flashTrash
From: Н.Новгород
Registered: 21-02-2007
Posts: 260
Website

Re: Ядерный взрыв

извеняюсь за офф-топ...
@Agenzvell
а ты откуда знаешь, ааа?:D
а вообще - дождь не помешает, да.

Offline

#11 12-03-2010 11:50

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: Ядерный взрыв

а ты откуда знаешь, ааа?

Посмотри на его аватарку. Вопросы есть?

Offline

Board footer

Powered by FluxBB