Общие принципы создания миссии
Прислано RunAway 20.08.2005 - 15:44:08
Считается, что написание миссий – это самая сложная часть скриптинга. Я попробовал разобраться в миссиях 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

:PROPUSK_KODA – блок пропуска кода «Миссия провалена»
0050: gosub JUDALENIE_KODA
004E: end_thread

:KOD_MISSII – блок начала кода миссии
0317: increment_mission_attempts
0004: $ON_MISSION = 1 ;; integer values
0110: clear_player $PLAYER_CHAR wanted_level

:ZIKL – цикл миссии: все события миссии пишутся здесь

:UDACHNO – блок кода «Миссия пройдена»
0001: wait 0 ms
01E3: text_1number_styled 'M_PASSS' 200 5000 ms 1
0318: set_latest_mission_passed 'NRG500'
0109: player $PLAYER_CHAR money += 200
030C: set_mission_points += 1
0110: clear_player $PLAYER_CHAR wanted_level
0394: play_music 1
0050: gosub JPROPUSK_KODA
0051: return

: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 с примером моей пробной миссии на основе этого кода можно скачать отсюда.


------
Автор: RunAw@y
E-mail: reflex@onego.ru
ICQ: неизвестно


Любое копирование материалов с данного сайта запрещено без разрешения! Все материалы являются собственностью их авторов. При любой перепечатке ссылка на Missions.GTAMaps.net, как источник информации, обязательна!
Copyright © 2005 - 2022 Missions.GTAMaps.net. All Rights Reserved.