URI:
   DIR Return Create A Forum - Home
       ---------------------------------------------------------
       gtaforums
  HTML https://gtamixmods.createaforum.com
       ---------------------------------------------------------
       *****************************************************
   DIR Return to: Tutorials
       *****************************************************
       #Post#: 13--------------------------------------------------
       [TUT|SA]How to create your own cutscenes?
   DIR By: ArijitSen
       Date: October 2, 2012, 7:55 pm
       ---------------------------------------------------------
       The basic method for scripted cutscenes:
       [B]fade in
       load, create and arrange stuff
       enable widescreen
       set camera
       fade out[/B]
       try the simple example below
       press backspace to show player with mobile phone
       [CODE]{$CLEO .cs}
       :CUTSCENE_Template
       03A4: name_thread 'CUTSCEN'
       :CUTSCEN_11
       wait 0
       if
       0256:   player $PLAYER_CHAR defined
       jf @CUTSCEN_11
       if
       0AB0:   key_pressed 8 // press Backspace
       jf @CUTSCEN_11
       0247: load_model #CELLPHONE
       :CUTSCEN_13
       wait 0
       if
       0248:   model #CELLPHONE available
       jf @CUTSCEN_13
       01B4: set_player $PLAYER_CHAR can_move 0
       fade 0 1000
       wait 1000
       0729: AS_actor $PLAYER_ACTOR hold_cellphone 1
       067C: put_camera_on_actor $PLAYER_ACTOR with_offset 0.0 1.5 0.6
       rotation 0.0 0.2 0.6 0.0 2
       02A3: enable_widescreen 1
       wait 250
       fade 1 1500
       33@ = 0 // reset timer
       :CUTSCEN_25
       wait 0
       if
       0256:   player $PLAYER_CHAR defined
       jf @CUTSCEN_25
       if or
       33@ > 5000// check timer if 5 seconds are passed
       00E1:   player 0 pressed_key 14
       00E1:   player 0 pressed_key 15
       00E1:   player 0 pressed_key 17
       00E1:   player 0 pressed_key 6
       jf @CUTSCEN_25
       jump @CUTSCEN_cleanup
       :CUTSCEN_cleanup
       0729: AS_actor $PLAYER_ACTOR hold_cellphone 0
       fade 0 500
       wait 500
       02A3: enable_widescreen 0
       fade 1 1500
       0373: set_camera_directly_behind_player
       02EB: restore_camera_with_jumpcut
       01B4: set_player $PLAYER_CHAR can_move 1
       jump @CUTSCEN_11
       [/CODE]
       the variable 32@ and 33@ are reserved as internal timer
       try the little script below to understand
       press Backspace to reset timer
       [CODE]{$CLEO .cs}
       thread 'timer'
       while true
       wait 0
       03F0: enable_text_draw 1
       045A: draw_text_1number 300.0 200.0 GXT 'NUMBER' number 33@  //
       ~1~
       if
       0AB0:   key_pressed 8 // press Backspace
       then
       33@ = 0
       end
       end[/CODE]
       Example for a cutscene with talking actor
       Go into red marker in Grovestreet
       [CODE]{$CLEO .cs}
       :CUTSCENE_Template
       03A4: name_thread 'CUTSCEN'
       0@ = 0
       :CUTSCEN_11
       wait 0
       if
       0256:   player $PLAYER_CHAR defined
       jf @CUTSCEN_11
       if
       0@ == 0// check for a var to let the cutscene only run for one
       time
       jf @CUTSCEN_11
       if
       00FE:   actor $PLAYER_ACTOR sphere 1 in_sphere 2480.134
       -1665.475 13.3348 radius 3.5 3.5 5.5
       jf @CUTSCEN_11
       00BA: show_text_styled GXT 'LG_37' time 1000 style 2
       023C: load_special_actor 'TRUTH' as 1 // models 290-299
       04ED: load_animation "GHANDS"
       :CUTSCEN_12
       wait 0
       if and
       023D:   special_actor 1 loaded
       04EE:   animation "GHANDS" loaded
       004D: jump_if_false @CUTSCEN_12
       0247: load_model #spraycan
       :CUTSCEN_13
       wait 0
       if
       0248:   model #spraycan available
       jf @CUTSCEN_13
       01B4: set_player $PLAYER_CHAR can_move 0
       fade 0 1000
       wait 1000
       009A: 10@ = create_actor_pedtype 24 model #SPECIAL01 at
       2477.5356 -1663.0228 13.3359
       060B: set_actor 10@ decision_maker_to 32
       01B2: give_actor 10@ weapon  41 ammo  9000  // Load the weapon
       model before using this
       02E2: set_actor 10@ weapon_accuracy_to  100
       0639: AS_actor 10@ rotate_to_actor $PLAYER_ACTOR
       067C: put_camera_on_actor 10@ with_offset 0.0 1.5 0.6 rotation
       0.0 0.2 0.6 0.0 2
       02A3: enable_widescreen 1
       wait 1500
       fade 1 1500
       054C: use_GXT_table 'GARAGE1'
       33@ = 0 // reset timer
       0@ = 1
       :CUTSCEN_25
       wait 0
       if
       0256:   player $PLAYER_CHAR defined
       jf @CUTSCEN_cleanup
       if or
       33@ > 10000// check timer if 10 seconds are passed
       00E1:   player 0 pressed_key 14
       00E1:   player 0 pressed_key 15
       00E1:   player 0 pressed_key 17
       00E1:   player 0 pressed_key 6
       jf @CUTSCEN_31
       jump @CUTSCEN_cleanup
       :CUTSCEN_31
       if
       0@ == 1
       jf @CUTSCEN_33
       0812: AS_actor 10@ perform_animation "gsign1" IFP_file "GHANDS"
       8.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 // versionB
       7@ = 16484
       gosub @CUTSCEN_dialoque_sound_SUB
       0967: actor 10@ move_mouth_for  2000 ms
       00BC: show_text_highpriority GXT 'GAR1_NE' time 5000 flag 1
       33@ = 0 // reset timer
       0@ = 2
       jump @CUTSCEN_25
       :CUTSCEN_33
       if and
       0@ == 2
       33@ > 3000
       jf @CUTSCEN_35
       0812: AS_actor 10@ perform_animation "IDLE_chat" IFP_file "ped"
       8.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 // versionB
       7@ = 16486
       gosub @CUTSCEN_dialoque_sound_SUB
       0967: actor 10@ move_mouth_for  3000 ms
       00BC: show_text_highpriority GXT 'GAR1_NG' time 5000 flag 1
       33@ = 0 // reset timer
       0@ = 3
       jump @CUTSCEN_25
       :CUTSCEN_35
       if and
       0@ == 3
       33@ > 3000
       jf @CUTSCEN_37
       0812: AS_actor 10@ perform_animation "gsign1" IFP_file "GHANDS"
       8.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 // versionB
       7@ = 16487
       gosub @CUTSCEN_dialoque_sound_SUB
       0967: actor 10@ move_mouth_for  5000 ms
       00BC: show_text_highpriority GXT 'GAR1_NH' time 5000 flag 1
       33@ = 0 // reset timer
       0@ = 4
       jump @CUTSCEN_25
       :CUTSCEN_37
       if and
       0@ == 4
       33@ > 5000
       jf @CUTSCEN_39
       04C4: create_coordinate 11@ 12@ 13@ from_actor $PLAYER_ACTOR
       offset 0.0  0.0  0.9
       0668: AS_actor 10@ rotate_and_shoot_at 11@ 12@ 13@ 1000 ms
       33@ = 0 // reset timer
       0@ = 5
       jump @CUTSCEN_25
       :CUTSCEN_39
       if and
       0@ == 5
       33@ > 1000
       jf @CUTSCEN_25
       0@ = 6
       jump @CUTSCEN_cleanup
       :CUTSCEN_cleanup
       fade 0 1000
       wait 1000
       04EF: release_animation "GHANDS"
       02A3: enable_widescreen 0
       0373: set_camera_directly_behind_player
       02EB: restore_camera_with_jumpcut
       009B: destroy_actor 10@
       fade 1 2000
       01B4: set_player $PLAYER_CHAR can_move 1
       jump @CUTSCEN_11
       :CUTSCEN_dialoque_sound_SUB
       040D: unload_wav 1
       03CF: load_wav 7@ as 1
       :CUTSCEN_dialoque_sound_1
       wait 0
       if
       03D0:   wav 1 loaded
       jf @CUTSCEN_dialoque_sound_1
       0949: link_wav 1 to_actor 10@
       03D1: play_wav 1
       return
       [/CODE]
       Subdivide the main loop into sequences
       1. check for a var value
       2. check for timer value
       read the comments
       [CODE]:CUTSCEN_25
       wait 0
       if
       0256:   player $PLAYER_CHAR defined
       jf @CUTSCEN_cleanup
       
       :CUTSCEN_31// sequence 1
       if
       0@ == 1   // check for var value of 0@ to let the code pass to
       read the sequence codes
       jf @CUTSCEN_33
       0812: AS_actor 10@ perform_animation "gsign1" IFP_file "GHANDS"
       8.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 // versionB
       7@ = 16484
       gosub @CUTSCEN_dialoque_sound_SUB
       0967: actor 10@ move_mouth_for  2000 ms
       00BC: show_text_highpriority GXT 'GAR1_NE' time 5000 flag 1
       33@ = 0 // reset timer
       0@ = 2  // change var value
       jump @CUTSCEN_25
       :CUTSCEN_33// sequence 2
       if and
       0@ == 2    // check for var value of 0@ to let the code pass to
       read the sequence codes
       33@ > 3000 // ckeck if 3 seconds are passed, since the previous
       sequence has been started
       jf @CUTSCEN_35
       0812: AS_actor 10@ perform_animation "IDLE_chat" IFP_file "ped"
       8.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 // versionB
       7@ = 16486
       gosub @CUTSCEN_dialoque_sound_SUB
       0967: actor 10@ move_mouth_for  3000 ms
       00BC: show_text_highpriority GXT 'GAR1_NG' time 5000 flag 1
       33@ = 0 // reset timer
       0@ = 3  // change var value
       jump @CUTSCEN_25
       :CUTSCEN_35// sequence 3
       if and
       0@ == 3    // check for var value of 0@ to let the code pass to
       read the sequence codes
       33@ > 3000 // ckeck if 3 seconds are passed, since the previous
       sequence has been started
       jf @CUTSCEN_37
       0812: AS_actor 10@ perform_animation "gsign1" IFP_file "GHANDS"
       8.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 // versionB
       7@ = 16487
       gosub @CUTSCEN_dialoque_sound_SUB
       0967: actor 10@ move_mouth_for  5000 ms
       00BC: show_text_highpriority GXT 'GAR1_NH' time 5000 flag 1
       33@ = 0 // reset timer
       0@ = 4  // change var value
       jump @CUTSCEN_25
       :CUTSCEN_37// sequence 4
       if and
       0@ == 4    // check for var value of 0@ to let the code pass to
       read the sequence codes
       33@ > 5000 // ckeck if 5 seconds are passed, since the previous
       sequence has been started
       jf @CUTSCEN_39
       04C4: create_coordinate 11@ 12@ 13@ from_actor $PLAYER_ACTOR
       offset 0.0  0.0  0.9
       0668: AS_actor 10@ rotate_and_shoot_at 11@ 12@ 13@ 1000 ms
       33@ = 0 // reset timer
       0@ = 5  // change var value
       jump @CUTSCEN_25
       :CUTSCEN_39// sequence 5
       if and
       0@ == 5    // check for var value of 0@ to let the code pass to
       read the sequence codes
       33@ > 1000 // ckeck if 1 seconds are passed, since the previous
       sequence has been started
       jf @CUTSCEN_25
       0@ = 6  // change var value
       jump @CUTSCEN_cleanup[/CODE]
       Instead of manually checking if the keys are pressed for
       cutscene skip, just use the appropriate commands? 0707 0701
       You can make it skip to a different label if you need to do
       extra things in case the cutscene was skipped (e.g. if the
       player was walking somewhere in the cutscene, teleport him
       instantly) and also remember to free any loaded models,
       animations etc. (these should be loaded before the cutscene skip
       and removed after it as the cutscene can be skipped at any time
       during it's progress).
       I hope that it helps you ..
       Remember to give your useful comments guys.. ;D
       #Post#: 38--------------------------------------------------
       Quote : arjitsen[TUT|SA]How to create your own cutscenes?
   DIR By: modexpert
       Date: October 5, 2012, 2:00 am
       ---------------------------------------------------------
       nice tutorial bro ..
       #Post#: 42--------------------------------------------------
       Re: [TUT|SA]How to create your own cutscenes?
   DIR By: ArijitSen
       Date: October 5, 2012, 7:08 am
       ---------------------------------------------------------
       Thanks..
       #Post#: 44--------------------------------------------------
       Re: [TUT|SA]How to create your own cutscenes?
   DIR By: theGTAgangsta
       Date: October 5, 2012, 8:50 am
       ---------------------------------------------------------
       ur the best mod creator and teacher  ;D :D
       #Post#: 45--------------------------------------------------
       Re: [TUT|SA]How to create your own cutscenes?
   DIR By: ArijitSen
       Date: October 5, 2012, 8:23 pm
       ---------------------------------------------------------
       Thanks I feel honoured ..
       #Post#: 128--------------------------------------------------
       Re: [TUT|SA]How to create your own cutscenes?
   DIR By: dreadkiller
       Date: October 29, 2012, 10:19 pm
       ---------------------------------------------------------
       i think you are a nice modder and teacher.  ;D
       #Post#: 130--------------------------------------------------
       Re: [TUT|SA]How to create your own cutscenes?
   DIR By: ArijitSen
       Date: October 30, 2012, 12:47 am
       ---------------------------------------------------------
       Thanks ...
       *****************************************************
       Page 1 of 1