Napisano dnia: 2011-01-11 14:04:58
witam chce się nauczyć robić save w main. Wszystko spoko ładnie, ale dystkietka do save pojawia się podczas trwania misij. Jak to zmienić?
Robiłem na przykładzie misij z tutoriala.
Kod:
DEFINE OBJECTS 0
DEFINE MISSIONS 1
DEFINE MISSION 0 AT @MISJA
DEFINE EXTERNAL_SCRIPTS 1
DEFINE SCRIPT SAVE AT @SAVE
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0
thread 'MAIN'
var
$PLAYER_CHAR : Player
end
set_weather 3
00C0: set_current_time 21 00
01F0: set_max_wanted_level_to 6
$PLAYER_CHAR = Player.Create(#NULL, 0.0, 0.0, 0.0)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
$PLAYER_CHAR.SetClothes("PLAYER_FACE", "HEAD", Head)
$PLAYER_CHAR.SetClothes("JEANSDENIM", "JEANS", Legs)
$PLAYER_CHAR.SetClothes("SNEAKERBINCBLK", "SNEAKER", Shoes)
$PLAYER_CHAR.SetClothes("VEST", "VEST", Torso)
$PLAYER_CHAR.Build
$PLAYER_CHAR.CanMove(True)
016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0
016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 unknown 0
0180: set_on_mission_flag_to $ONMISSION
0884: 'SAVE' = init_external_script_named_handle 0 (SAVE)
08A9: load_external_script 0 (SAVE)
:MAIN1
wait 10
if
08AB: external_script 0 (SAVE) loaded
jf @MAIN1
0913: run_external_script 0 (SAVE)
fade 1 (out) 0 ms
start_mission 0
while true
wait 250
end
$ONMISSION = 1
:MISJA
thread 'MISJA'
0247: request_model 223 // Ofiara
0247: request_model 217 // Kolega ofiary
0247: request_model #GREENWOO // Samochód Greenwood
0247: request_model #micro_uzi // UZI
0247: request_model #mp5lng // MP5
0247: request_model #tec9 // TEC9
038B: load_requested_models
00A5: $WOZ = create_car #GREENWOO at 2288.7903 -1673.1986 14.3883
0175: set_car $WOZ z_angle_to 358.2751
0229: set_car $WOZ color_to 2 1
072A: put_actor $PLAYER_ACTOR into_car $WOZ driverseat
072A: put_actor $PLAYER_ACTOR into_car $WOZ driverseat
02A7: $CEL = create_icon_marker_and_sphere 56 at 2485.9736 -1670.7662 13.0223 radius 3.0
054C: use_GXT_table 'MISJA'
00BC: show_text_highpriority GXT 'TXT1' time 3000 flag 1
:petla1
wait 10
if
0103: actor $PLAYER_ACTOR in_sphere 2485.9736 -1670.7662 13.0223 radius 3.0 3.0 3.0 sphere 0 stopped_in_car
jf @petla1
$PLAYER_CHAR.CanMove(False)
fade 0 1000
wait 1000
Marker.Disable($CEL)
009A: $OFIARA = create_actor_pedtype 20 model 223 at 2496.8665 -1643.7655 13.7826
009A: $KOLEGA = create_actor_pedtype 4 model 217 at 2498.9758 -1643.5474 13.7826
01B2: give_actor $OFIARA weapon 26 ammo 20
0639: AS_actor $OFIARA rotate_to_actor $KOLEGA
0639: AS_actor $KOLEGA rotate_to_actor $OFIARA
0605: actor $OFIARA perform_animation_sequence "IDLE_CHAT" from_file "PED" 4.0 loop 1 0 0 0 -1 ms
0605: actor $KOLEGA perform_animation_sequence "IDLE_CHAT" from_file "PED" 4.0 loop 1 0 0 0 -1 ms
032B: $UZI = create_weapon_pickup #micro_uzi group 5 ammo 50 at 2489.8123 -1663.3979 13.3359
032B: $MP5 = create_weapon_pickup #mp5lng group 5 ammo 30 at 2488.2542 -1663.2462 13.3359
032B: $TEC9 = create_weapon_pickup #tec9 group 5 ammo 50 at 2486.9492 -1662.6134 13.3359
0187: $CEL2 = create_marker_above_actor $OFIARA
02A3: enable_widescreen 1
fade 1 1000
Camera.SetPosition(2489.7737, -1655.042, 13.3536, 0.0, 0.0, 0.0)
Camera.OnVehicle($WOZ,15,2)
00BC: show_text_highpriority GXT 'TXT2' time 3000 flag 1
wait 3000
Camera.SetPosition(2497.2175, -1649.142, 14.5602, 0.0, 0.0, 0.0)
Camera.OnPed($OFIARA,15,2)
00BC: show_text_highpriority GXT 'TXT3' time 2000 flag 1
wait 2000
02A3: enable_widescreen 0
$PLAYER_CHAR.CanMove(True)
015A: restore_camera
:petla2
wait 10
if
02E0: actor $PLAYER_ACTOR aggressive
jf @petla3
01B9: set_actor $OFIARA armed_weapon_to 26
05E2: AS_actor $OFIARA kill_actor $PLAYER_ACTOR
:petla3
wait 10
if
0118: actor $PLAYER_ACTOR dead
jf @petla4
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1
Marker.Disable($CEL)
Marker.Disable($CEL2)
00A6: destroy_car $WOZ
009B: destroy_actor $OFIARA
009B: destroy_actor $KOLEGA
0215: destroy_pickup $UZI
0215: destroy_pickup $MP5
0215: destroy_pickup $TEC9
start_mission 0
:petla4
wait 10
if
0118: actor $OFIARA dead
jf @petla2
01E3: show_text_1number_styled GXT 'M_PASS' number 100 time 5000 style 1
0109: player $PLAYER_CHAR money += 100
0394: play_music 1
Marker.Disable($CEL2)
$ONMISSION = 0
0318: set_latest_mission_passed 'INTRO_1'
end_thread
:SAVE
thread 'SAVE'
:Save_Check_1
wait 10
if and
Player.Defined($PLAYER_CHAR)
$ONMISSION == 0
jf @Save_Check_1
$SavePickup = Pickup.Create(#PICKUPSAVE, 3, 2522.9409, -1679.2528, 15.497)
:Save_Check_2
wait 10
if
$ONMISSION == 1
jf @Save_Check_3
Pickup.Destroy($SavePickup)
jump @Save_Check_1
:Save_Check_3
wait 10
if and
not Actor.Driving($PLAYER_ACTOR)
Pickup.Picked_up($SavePickup)
jf @Save_Check_2
Player.CanMove($PLAYER_CHAR) = False
fade 0 500
:Save_Fade_Check_1
wait 10
if
816B: not fading
jf @Save_Fade_Check_1
0395: clear_area 1 at 2519.4165 -1679.0637 14.7198 radius 2.0
Actor.PutAt($PLAYER_ACTOR, 2519.4165, -1679.0637, 14.7198)
Actor.Angle($PLAYER_ACTOR) = 90.0
wait 1000
03D8: show_save_screen
:Save_Check_4
wait 10
if
83D9: not save_done
jf @Save_Check_5
jump @Save_Check_4
:Save_Check_5
fade 1 1500
Player.CanMove($PLAYER_CHAR) = True
jump @Save_Check_1
end_thread
DEFINE MISSIONS 1
DEFINE MISSION 0 AT @MISJA
DEFINE EXTERNAL_SCRIPTS 1
DEFINE SCRIPT SAVE AT @SAVE
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0
thread 'MAIN'
var
$PLAYER_CHAR : Player
end
set_weather 3
00C0: set_current_time 21 00
01F0: set_max_wanted_level_to 6
$PLAYER_CHAR = Player.Create(#NULL, 0.0, 0.0, 0.0)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
$PLAYER_CHAR.SetClothes("PLAYER_FACE", "HEAD", Head)
$PLAYER_CHAR.SetClothes("JEANSDENIM", "JEANS", Legs)
$PLAYER_CHAR.SetClothes("SNEAKERBINCBLK", "SNEAKER", Shoes)
$PLAYER_CHAR.SetClothes("VEST", "VEST", Torso)
$PLAYER_CHAR.Build
$PLAYER_CHAR.CanMove(True)
016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0
016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 unknown 0
0180: set_on_mission_flag_to $ONMISSION
0884: 'SAVE' = init_external_script_named_handle 0 (SAVE)
08A9: load_external_script 0 (SAVE)
:MAIN1
wait 10
if
08AB: external_script 0 (SAVE) loaded
jf @MAIN1
0913: run_external_script 0 (SAVE)
fade 1 (out) 0 ms
start_mission 0
while true
wait 250
end
$ONMISSION = 1
:MISJA
thread 'MISJA'
0247: request_model 223 // Ofiara
0247: request_model 217 // Kolega ofiary
0247: request_model #GREENWOO // Samochód Greenwood
0247: request_model #micro_uzi // UZI
0247: request_model #mp5lng // MP5
0247: request_model #tec9 // TEC9
038B: load_requested_models
00A5: $WOZ = create_car #GREENWOO at 2288.7903 -1673.1986 14.3883
0175: set_car $WOZ z_angle_to 358.2751
0229: set_car $WOZ color_to 2 1
072A: put_actor $PLAYER_ACTOR into_car $WOZ driverseat
072A: put_actor $PLAYER_ACTOR into_car $WOZ driverseat
02A7: $CEL = create_icon_marker_and_sphere 56 at 2485.9736 -1670.7662 13.0223 radius 3.0
054C: use_GXT_table 'MISJA'
00BC: show_text_highpriority GXT 'TXT1' time 3000 flag 1
:petla1
wait 10
if
0103: actor $PLAYER_ACTOR in_sphere 2485.9736 -1670.7662 13.0223 radius 3.0 3.0 3.0 sphere 0 stopped_in_car
jf @petla1
$PLAYER_CHAR.CanMove(False)
fade 0 1000
wait 1000
Marker.Disable($CEL)
009A: $OFIARA = create_actor_pedtype 20 model 223 at 2496.8665 -1643.7655 13.7826
009A: $KOLEGA = create_actor_pedtype 4 model 217 at 2498.9758 -1643.5474 13.7826
01B2: give_actor $OFIARA weapon 26 ammo 20
0639: AS_actor $OFIARA rotate_to_actor $KOLEGA
0639: AS_actor $KOLEGA rotate_to_actor $OFIARA
0605: actor $OFIARA perform_animation_sequence "IDLE_CHAT" from_file "PED" 4.0 loop 1 0 0 0 -1 ms
0605: actor $KOLEGA perform_animation_sequence "IDLE_CHAT" from_file "PED" 4.0 loop 1 0 0 0 -1 ms
032B: $UZI = create_weapon_pickup #micro_uzi group 5 ammo 50 at 2489.8123 -1663.3979 13.3359
032B: $MP5 = create_weapon_pickup #mp5lng group 5 ammo 30 at 2488.2542 -1663.2462 13.3359
032B: $TEC9 = create_weapon_pickup #tec9 group 5 ammo 50 at 2486.9492 -1662.6134 13.3359
0187: $CEL2 = create_marker_above_actor $OFIARA
02A3: enable_widescreen 1
fade 1 1000
Camera.SetPosition(2489.7737, -1655.042, 13.3536, 0.0, 0.0, 0.0)
Camera.OnVehicle($WOZ,15,2)
00BC: show_text_highpriority GXT 'TXT2' time 3000 flag 1
wait 3000
Camera.SetPosition(2497.2175, -1649.142, 14.5602, 0.0, 0.0, 0.0)
Camera.OnPed($OFIARA,15,2)
00BC: show_text_highpriority GXT 'TXT3' time 2000 flag 1
wait 2000
02A3: enable_widescreen 0
$PLAYER_CHAR.CanMove(True)
015A: restore_camera
:petla2
wait 10
if
02E0: actor $PLAYER_ACTOR aggressive
jf @petla3
01B9: set_actor $OFIARA armed_weapon_to 26
05E2: AS_actor $OFIARA kill_actor $PLAYER_ACTOR
:petla3
wait 10
if
0118: actor $PLAYER_ACTOR dead
jf @petla4
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1
Marker.Disable($CEL)
Marker.Disable($CEL2)
00A6: destroy_car $WOZ
009B: destroy_actor $OFIARA
009B: destroy_actor $KOLEGA
0215: destroy_pickup $UZI
0215: destroy_pickup $MP5
0215: destroy_pickup $TEC9
start_mission 0
:petla4
wait 10
if
0118: actor $OFIARA dead
jf @petla2
01E3: show_text_1number_styled GXT 'M_PASS' number 100 time 5000 style 1
0109: player $PLAYER_CHAR money += 100
0394: play_music 1
Marker.Disable($CEL2)
$ONMISSION = 0
0318: set_latest_mission_passed 'INTRO_1'
end_thread
:SAVE
thread 'SAVE'
:Save_Check_1
wait 10
if and
Player.Defined($PLAYER_CHAR)
$ONMISSION == 0
jf @Save_Check_1
$SavePickup = Pickup.Create(#PICKUPSAVE, 3, 2522.9409, -1679.2528, 15.497)
:Save_Check_2
wait 10
if
$ONMISSION == 1
jf @Save_Check_3
Pickup.Destroy($SavePickup)
jump @Save_Check_1
:Save_Check_3
wait 10
if and
not Actor.Driving($PLAYER_ACTOR)
Pickup.Picked_up($SavePickup)
jf @Save_Check_2
Player.CanMove($PLAYER_CHAR) = False
fade 0 500
:Save_Fade_Check_1
wait 10
if
816B: not fading
jf @Save_Fade_Check_1
0395: clear_area 1 at 2519.4165 -1679.0637 14.7198 radius 2.0
Actor.PutAt($PLAYER_ACTOR, 2519.4165, -1679.0637, 14.7198)
Actor.Angle($PLAYER_ACTOR) = 90.0
wait 1000
03D8: show_save_screen
:Save_Check_4
wait 10
if
83D9: not save_done
jf @Save_Check_5
jump @Save_Check_4
:Save_Check_5
fade 1 1500
Player.CanMove($PLAYER_CHAR) = True
jump @Save_Check_1
end_thread
Robiłem na przykładzie misij z tutoriala.