Общие принципы создания миссии
Считается, что написание миссий – это самая сложная часть скриптинга. Я попробовал разобраться в миссиях San Andreas`a, и увидел, что здесь появилось много новых элементов, но основные принципы их создания (что удивительно), остались почти такими же, как и в Vice City. Можно сказать, точно такими же.
:Third_Segment
0002: jump JJFourth_Segment
DEFINE MISSIONS 1
К последней цифре прибавляете 1, то есть свою миссию. Получится так: DEFINE MISSIONS 2
Дальше надо найти строку DEFINE MISSION 0
и после неё добавить DEFINE MISSION 1 AT JJMISSION1
Миссия была «объявлена». Теперь создаёте thread для старта миссии: 004F: create_thread JJStart
И над ;-------------Mission 0---------------
Прописываете сам код: :Start
0001: wait 0 ms
02A7: $marker = create_icon_marker_and_sphere 36 at x y z – создаете красный маркер со значком S на радаре в нужных координатах
:1
0001: wait 250 ms
00D6: if 1
0256: player $PLAYER_CHAR defined
0102: actor $PLAYER_ACTOR stopped_near_point_on_foot x y z radius 2.0 2.0 1.0 sphere 0 – игрок остановился в этих координатах
004D: jump_if_false ££1
0164: disable_marker $marker – убираем маркер
0417: start_mission 1 – запускаем миссию 1
004E: end_thread
Теперь сама миссия. В самом конце main`a пишите код, который я использую сам. Каждый блок назван своим именем, чтобы всё было понятно.
------
;-------------Mission 1---------------
:MISSION1 – номер миссии
03A4: name_thread 'RUNA'
0050: gosub JKOD_MISSII
00D6: if 0
0112: wasted_or_busted
004D: jump_if_false JPROPUSK_KODA
0050: gosub JKOD_PROVALA
:KOD_PROVALA – блок кода «Миссия провалена»
00BA: text_styled 'M_FAIL' 5000 ms 1
004F: create_thread JStart
0051: return
:UDALENIE_KODA – блок удаления кода из памяти
0004: $ON_MISSION = 0 ;; integer values
00D8: mission_cleanup
0051: return
------
Код тестировался на чистом main`е. Всё должно работать, я сам проверял. Main с примером моей пробной миссии на основе этого кода можно скачать отсюда.