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