016A

Материал из GTAModding.ru
Перейти к: навигация, поиск

Во многих скриптах Grand Theft Auto: San Andreas используется опкод затемнения экрана(фейд - англ. fade). Фейды используются для плавного перехода от одной сцены к другой и в других целях.

Как используется

В SA(GTA:San Andreas), фейды реализуются всего лишь одним опкодом

016A: fade 0 time 0

Здесь всего 2 параметра, первый 0 - отвечает за затемнение(1 - просветление), второй 0 - это время, в течении которого будет происходить фейд, измеряется и в миллисекундах(1 сек = 1000 мс). Для примера:

016A: fade 0 time 600

Так же существует опкод, который устанавливает цвет для фейда. Данный опкод используется практически везде одинаково, за исключением нескольких миссий. Непосредственно сам опкод:

0169: set_fade_color_RGB 0 0 0

В миссиях:

0169: set_fade_color_RGB 1 0 0
0169: set_fade_color_RGB 0 0 1

Вот пример скрипта с фейдами:

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007
 
{$VERSION 3.1.0027}
{$CLEO .cs}
 
//-------------MAIN---------------
0000: NOP 
wait 2000 
 
:NONAME_7
wait 50  
    0AB0:   key_pressed 120 
else_jump @NONAME_7 
00BF: $TIME_HOURS = current_time_hours, $TIME_MINS = current_time_minutes
Actor.StorePos($PLAYER_ACTOR, 20@, 21@, 22@)  
0169: set_fade_color_RGB 0 0 0
016A: fade 0 time 800 
 
:NONAME_37
wait 0 
    016B:   fading 
else_jump @NONAME_37
wait 800  
00C0: set_current_time_hours_to 0 minutes_to 0 
Player.CanMove($PLAYER_CHAR) = False
Camera.SetPosition(2334.0227, -1392.3112, 23.9027, 0.0, 0.0, 0.0)
Camera.PointAt(2311.1511, -1431.8279, 33.6764, 2)
02A3: enable_widescreen 1
Actor.PutAt($PLAYER_ACTOR, 2309.2354, -1433.0417, 24.0)
0337: set_actor $PLAYER_ACTOR visibility 0 
03CB: set_rendering_origin_at 2316.0071 -1425.2375 30.9384 
0920: point_camera 2311.1511 -1431.8279 33.6764 transverse_to 2316.0071 -1425.2375 30.9384 time 7000 mode 1 
0936: set_camera 2334.0227 -1392.3112 23.9027 position_to 2355.6453 -1407.8623 41.2341 time 7000 drop_mode 1  
wait 100 
016A: fade 1 time 700
wait 6300
Camera.SetPosition(2355.6453, -1407.8623, 41.2341, 0.0, 0.0, 0.0)
Camera.PointAt(2316.0071, -1425.2375, 30.9384, 2)
016A: fade 0 time 700
 
:NONAME_97
wait 0 
    016B:   fading 
else_jump @NONAME_97
wait 700  
Camera.SetPosition(2914.2373, -1888.6031, 1.3604, 0.0, 0.0, 0.0)
Camera.PointAt(2883.1765, -1888.7861, 6.0, 2)
Actor.PutAt($PLAYER_ACTOR, 2896.1211, -1971.4679, 3.9502)
03CB: set_rendering_origin_at 2896.1211 -1971.4679 3.9502
0920: point_camera 2883.1765 -1888.7861 6.0 transverse_to 2896.6204 -2024.0891 4.0 time 7000 mode 1 
0936: set_camera 2914.2373 -1888.6031 1.3604 position_to 2919.8542 -2045.7792 1.1195 time 7000 drop_mode 1 
wait 200 
016A: fade 1 time 700
wait 6300
Camera.SetPosition(2919.8542, -2045.7792, 1.1195, 0.0, 0.0, 0.0)
Camera.PointAt(2896.6204, -2024.0891, 4.0, 2)
016A: fade 0 time 700
 
:NONAME_192
wait 0 
    016B:   fading 
else_jump @NONAME_192 
wait 700
00C0: set_current_time_hours_to $TIME_HOURS minutes_to $TIME_MINS
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
0337: set_actor $PLAYER_ACTOR visibility 1 
Player.CanMove($PLAYER_CHAR) = True
Camera.Restore_WithJumpCut
02A3: enable_widescreen 0
wait 100
016A: fade 1 time 700
jump @NONAME_7