#1 29-12-2011 19:49

DreamKiller
Registered: 25-12-2011
Posts: 11

нужна помощь специалиста

недавно сделал несколько миссий. подскажите, как сделать так чтобы миссии шли одна за другой последовательно, чтобы после успешного прохождения миссии 1 откривалась миссия 2. В случае неудачного прохождения миссии 1, миссия 2 была б недоступной до тех пор, пока не будет успешно завершена миссия 2. Буду очень благодарен

Offline

#2 02-01-2012 14:39

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: нужна помощь специалиста

Заведи глобальную переменную, в которую в случае прохождения первой миссии будет записываться какое-то число. В стартере второй миссии проверяй значение этой переменной.

Last edited by Den_spb (02-01-2012 14:40)

Offline

#3 08-05-2012 17:35

JuSskeee*
From: Мариуполь
Registered: 25-11-2011
Posts: 51

Re: нужна помощь специалиста

Можно в конце миссии вставить поток. В потоке создать маркер и переход на нужную миссию. При провале создавать поток, который направляет на начало проваленной миссии.
Скорее всего немного не понятно написал, так что напишу код.

    :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

Board footer

Powered by FluxBB