You are not logged in.
Pages: 1
недавно сделал несколько миссий. подскажите, как сделать так чтобы миссии шли одна за другой последовательно, чтобы после успешного прохождения миссии 1 откривалась миссия 2. В случае неудачного прохождения миссии 1, миссия 2 была б недоступной до тех пор, пока не будет успешно завершена миссия 2. Буду очень благодарен
Offline
Заведи глобальную переменную, в которую в случае прохождения первой миссии будет записываться какое-то число. В стартере второй миссии проверяй значение этой переменной.
Last edited by Den_spb (02-01-2012 14:40)
Offline

Можно в конце миссии вставить поток. В потоке создать маркер и переход на нужную миссию. При провале создавать поток, который направляет на начало проваленной миссии.
Скорее всего немного не понятно написал, так что напишу код.
    :MyOwnMission
    gosub @Main
    if 
    wasted_or_busted
    Jf @Ofeer 
    gosub @Fail
    :Ofeer
    gosub @Del
    end_thread
    :Main
    increment_mission_attempts
    $ONMISSION = 1
    0110: clear_player $PLAYER_CHAR wanted_level
    
    :Label
    
    :Label1
    wait 0
    if 
    wasted_or_busted
    jf @Label2
    jump @Fail  
    
    :Label2
    wait 0
    if and
    actor.Dead($PLAYER_ACTOR)
    jf @Label1
    
   :Succes
    wait 0 
    01E3: text_1number_styled 'M_PASS' 200 5000 ms 1  
    Player.Money($PLAYER_CHAR) += 200
    0110: clear_player $PLAYER_CHAR wanted_level
    create_thread @OwnMissionStartNew /// Вот поток, который направляет на новую миссию.
    0394: play_music 1                                        
    gosub @Ofeer
    return
   :Fail
    00BA: text_styled 'M_FAIL' 5000 ms 1
    $ONMISSION = 0   
    mission_cleanup
    create_thread @OwnMissionStart /// Вот  поток, который направляет на начало проваленной миссии. 
    return
   :Del 
    $ONMISSION = 0
    mission_cleanup
    returnВот поток, который запускает миссию:
 :OwnMissionStart
    wait 0 
    Marker.CreateIconAndSphere(1@,36, x, y, z)
  :OwnMissionStart1_2
   wait 250 
   if and
   Player.Defined($PLAYER_CHAR)
   0102: actor $PLAYER_ACTOR stopped_near_point_on_foot x y z radius r r r sphere 1 
    Jf @OwnMissionStart1_2
    Marker.Disable(1@)
    start_mission 1 /// Если у тебя миссия имеет номер, меняй эту цифру соответственно.
    end_thread[---]
Условные обозначения:
X Y Z - Координаты
r - Числовое значения радиуса.
Your Banny Wrote
Offline
Pages: 1