Закрыть ... [X]

Как сделать миссию

Любая миссия состоит из двух частей: кода для старта и самой миссии.
Найди в VMB слудующую строку
DEFINE MISSIONS 97, где 97 – кол-во миссий и изменит ее на
DEFINE MISSIONS 98- это наша новая миссия
Ищем :
DEFINE MISSION 97 AT JJLabel......

После добавляем :
DEFINE MISSION 98 AT JJMission<номер миссии>
Далее не забудь найти строку со статистикой миссий:
042C: total_missions = 88
030D: total_mission_points = 154

И измените на:
042C: total_missions = 89
030D: total_mission_points = 155

Далее создаем поток, отвечающий за старт миссии:

004F: create_thread JJStartMission98

Код потока:
его нужно писать над --------------Mission 0-------------
----------------------------
:StartMission98
0001: wait 250 ms
00D6: if 0
0256: player $PLAYER_CHAR defined
004D: jump_if_false JJStartMission98
00D6: if 0
0038: $ONMISSION == 0 \ integer values
004D: jump_if_false JJStartMission98
00D6: if 0
00F9: player $PLAYER_CHAR stopped 0 ()near_point_on_foot [X] [Y] [Z] radius
2.0 2.0 2.0 \ Игрок остановился у точки по координатам [X] [Y] [Z] радиусом 2.0 2.0 2.0
004D: jump_if_false JJLabelMission98 \ Если нет, то переходим в начало блока
0417: start_mission 98 \ Если все в порядке, то запускаем миссию 98
004E: end_thread

Этот код работает по принципу: если игрок остановился по определенным координатам, то стартуем нашу миссию, ежели нет, то идем в начало и все проверяем.

Теперь идем в самый конец main.scm и там пишем
;-------------Mission <номер миссии >---------------

:Mission<номер миссии >
0050: gosub Ј<блок, где начинается код миссии >
00D6: if 0
0112: wasted_or_busted
004D: jump_if_false Ј<блок для пропуска кода провала миссии>
0050: gosub Ј< блок для кода провала миссии> Выполняется, если игрок умер или был арестован во время текущей миссии>

:<Блок для пропуска кода провала миссии >
0050: gosub Ј<блок для удаления кода из памяти >
004E: end_thread \ Конец потока

:<Блок, как сделать миссию где начинается код миссии >
0317: increment_mission_attempts
03A4: name_thread "<название цикла >"
0004: $onmission = 1 \ Включить флаг $На миссии
0110: player $PLAYER_CHAR wanted_level = 0 \ Уровень розыска игрока установить на 0

:<Блок для цикла миссии >
<тут описываются все события миссии>

:<Блок, если миссия удачна>
0001: wait 0 ms
01E3: text_1number_styled "M_PASS" 10000 5000 ms 1 ;; MISSION PASSED! \выводим надпись "Миссия выполнена 10000$
030C: set_mission_points += 1 \увеличиваем количество пройденных миссий на 1, для статистики
0109: player $PLAYER_CHAR money += 10000 \даем деньги
0318: set_latest_mission_passed "ASM_1" \какая надпись будет светиться при сейвах
0110: clear_player $PLAYER_CHAR wanted_level \убираем звезды
0050: gosub ЈЈ<Блок для пропуска кода провала миссии> \идем к очищению памяти
0051: return

:<Блок для кода провала миссии. Выполняется, если игрок умер или был арестован во время текущей миссии>
00BA: text_styled "M_FAIL" 4000 ms 1 \На экран выводится текст: «Миссия провалена!»
004F: create_thread JJStartMission98 \повторно создаем поток для начала миссии, так же в этот блок можно поместить все очищения памяти, переменных и тд...
0051: return \ возврат

:<Блок, для удаления кода из памяти >
0004: $ONMISSION = 0 \ Снять флаг $На миссии
00D8: mission_cleanup \ удалить из памяти код миссии
0051: return \ возврат

Вот тебе основные принципы создания миссий для GTA VC а там уж дальше сам разбирайся enjoy/ 023.gif

Сообщение отредактировал SNICKERSMAN - 20.06.2006, 11:35:13


Источник: http://gtamaps.net/forum/index.php?showtopic=5250


Поделись с друзьями



Рекомендуем посмотреть ещё:



Из нашей статьи можно узнать, что необходимо, чтобы создать миссию в ГТА Крючки для штор своими руками

Как сделать миссию Как сделать миссию Как сделать миссию Как сделать миссию Как сделать миссию Как сделать миссию Как сделать миссию Как сделать миссию

ШОКИРУЮЩИЕ НОВОСТИ