ВНИМАНИЕ!
У всех учебников есть законный правообладатель!
Данный учебник создан нашим скриптером MATIRIST
Чтобы создать миссию нам надо:
1) Находим строку " DEFINE MISSIONS " и к числу миссий прибавляем 1,т.е. всего у вас должно
получиться число равное количеству миссий минус 1 .
2) Снизу идут строчки с командами объявления label'ов миссий,идём в их конец,и после последней
строчки " DEFINE MISSION " добавляем " DEFINE MISSION № @1LabelMissii " .
3) Создаём поток(thread) с любым именем,для удобстав давайте возьмём " Mission1Start "
4) Ищем строчку " //-------------Mission
0--------------- " и перед ней пишем наш поток,в потоке должны
находиться те или иные проверки,которые приведут к началу миссии ,
естествененно это обыкновенный поток и в него можно всунуть что
угодно,ну лично я создаю в нём только маркер,
и если игрок на нём останавливается,то маркер убираем и начинаем миссию.
Вот например:
:Mission1Start
wait 0
if
player.defined($PLAYER_CHAR)
Jf @Mission1Start
wait 3000
Marker.CreateIconAndSphere($Name , $Icon_Number , $X, $Y, $Z ) // номера иконок в гл "Маркеры..."
:Mission1Start_2
wait 0
if and
0101: actor $PLAYER_ACTOR stopped_near_point $X $Y $Z radius 3.0 3.0 3.0 sphere 1
not wasted_or_busted
Jf @Mission1Start _2
00BA: text_styled 'TextString' 1000 ms 2 // ну надо же текст вывести.
start_mission №
end_thread
5) Так,поток создали,теперь остаётся написать миссию...
Вот основа любой миссии:
:MISSION1
gosub @KOD_MISSII
if
wasted_or_busted
Jf @PROPUSK_KODA
gosub @KOD_PROVALA
:PROPUSK_KODA
gosub @UDALENIE_KODA
end_thread
:KOD_MISSII
increment_mission_attempts
$ONMISSION = 1
0110: clear_player $PLAYER_CHAR wanted_level
//------------------------------- Тут пишется сама миссия -----------------------------------
:UDACHNO // ------- Сюда надо делать переход(Jump) , если миссия удалась --------
wait 0
01E3: text_1number_styled 'M_PASS' 25000 5000 ms 4
Player.Money($PLAYER_CHAR) += 25000
0110: clear_player $PLAYER_CHAR wanted_level
0394: play_music 1
gosub @PROPUSK_KODA
return
:KOD_PROVALA // ------- Сюда надо делать переход(Jump) , если миссия провалена --------
00BA: text_styled 'M_FAIL' 5000 ms 1
$ONMISSION = 0
mission_cleanup
create_thread @Start
return
:UDALENIE_KODA
$ONMISSION = 0
mission_cleanup
return
Вот вам для примера моя небольшая миссия:
Вот это пока только поток запуска миссии:
:StartMissii1
wait 0
Marker.CreateIconAndSphere(1@,36, 2490.7676, -1669.8162, 13.3359)
:StartMissii1_2
wait 250
if and
Player.Defined($PLAYER_CHAR)
0102: actor $PLAYER_ACTOR stopped_near_point_on_foot 2490.7 -1669.8 13.4 radius 2.0 2.0 1.0 sphere 1
Jf @StartMissii1_2
Marker.Disable(1@)
start_mission 1
end_thread
А вот это уже сама миссия,смысл в том что появляються 3 балласа с М4 и пытаются вас снять:
:MIS1
gosub @KOD_MISSII
if
wasted_or_busted
Jf @PROPUSK_KODA
gosub @KOD_PROVALA
:PROPUSK_KODA
gosub @UDALENIE_KODA
end_thread
:KOD_MISSII
increment_mission_attempts
$ONMISSION = 1
0110: clear_player $PLAYER_CHAR wanted_level
:LabelMis1_1
wait 0
fade 0 500
model.Load(#BALLAS1)
model.Load(#BALLAS2)
model.Load(#BALLAS3)
model.Load(#M4)
038B: load_requested_models
:LabelMis1_2
wait 0
if and
model.Available(#BALLAS1)
model.Available(#BALLAS2)
model.Available(#BALLAS3)
model.Available(#M4)
Jf @LabelMis1_2
fade 1 500
actor.Create(1@,4,#BALLAS1,2517.8367, -1664.6057, 14.0369)
actor.Create(2@,4,#BALLAS2,2517.1902, -1667.9568, 14.028)
actor.Create(3@,4,#BALLAS3,2516.353, -1671.1974, 13.8478)
01B2: give_actor 1@ weapon 31 ammo 999999
01B2: give_actor 2@ weapon 31 ammo 999999
01B2: give_actor 3@ weapon 31 ammo 999999
wait 500
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 3@ kill_actor $PLAYER_ACTOR
:LabelMis1_3
wait 0
if
wasted_or_busted
jf @LabelMis1_4
jump @KOD_PROVALA
:LabelMis1_4
wait 0
if and
actor.Dead(1@)
actor.Dead(2@)
actor.Dead(3@)
jf @LabelMis1_3
:UDACHNO // ------- Сюда надо делать переход(Jump) , если миссия удалась --------
wait 0
01E3: text_1number_styled 'M_PASS' 25000 5000 ms 4
Player.Money($PLAYER_CHAR) += 25000
0110: clear_player $PLAYER_CHAR wanted_level
0394: play_music 1
gosub @PROPUSK_KODA
return
:KOD_PROVALA // ------- Сюда надо делать переход(Jump) , если миссия провалена --------
00BA: text_styled 'M_FAIL' 5000 ms 1
$ONMISSION = 0
mission_cleanup
model.destroy(#BALLAS1)
model.destroy(#BALLAS2)
model.destroy(#BALLAS3)
model.destroy(#M4)
create_thread @StartMissii1
return
:UDALENIE_KODA
$ONMISSION = 0
mission_cleanup
return
Сейчас я напишу пример простейшей гоночной
миссии,будем использовать за стартовый поток тот же, что и в предыдущем
примере , вот :
:StartMissii1
wait 0
Marker.CreateIconAndSphere(1@,36, 2490.7676, -1669.8162, 13.3359)
:StartMissii1_2
wait 250
if and
Player.Defined($PLAYER_CHAR)
0102: actor $PLAYER_ACTOR stopped_near_point_on_foot 2490.7 -1669.8 13.4 radius 2.0 2.0 1.0 sphere 1
Jf @StartMissii1_2
Marker.Disable(1@)
start_mission 1
end_thread
Вот миссия,в ней те же названия label'ов , что и в предыдущей,поэтому удалите или измините ту...
Смотрим :
:MIS1
gosub @KOD_MISSII
if
wasted_or_busted
Jf @PROPUSK_KODA
gosub @KOD_PROVALA
:PROPUSK_KODA
gosub @UDALENIE_KODA
end_thread
:KOD_MISSII
increment_mission_attempts
$ONMISSION = 1
0110: clear_player $PLAYER_CHAR wanted_level
:LabelMis1_1
wait 0
model.Load(#CHEETAH)
model.Load(#BALLAS1)
038B: load_requested_models
:LabelMis1_2
wait 0
if and
model.Available(#CHEETAH)
model.Available(#BALLAS1)
Jf @LabelMis1_2
car.Create(1@,#CHEETAH,2461.0037, -1657.0515, 13.3047)
car.Angle(1@) = 90.0
wait 100
0129: 2@ = create_actor 4 #BALLAS1 in_car 1@ driverseat
wait 500
marker.CreateIconAndSphere(3@,11,2461.0, -1661.7, 13.3047)
:LabelMis1_3
wait 0
if
0103: actor $PLAYER_ACTOR stopped_near_point_in_car 2461.0 -1661.7 13.3 radius 2.0 2.0 6.0 sphere 1
Jf @LabelMis1_3
03C0: 4@ = actor $PLAYER_ACTOR car
car.LockInCurrentPosition(4@) = true
wait 2000
car.DriveTo(1@,2040.131, -1611.939, 13.3828)
car.SetMaxSpeed(1@,40.0)
car.LockInCurrentPosition(4@) = false
00AE: unknown_set_car 1@ to_ignore_traffic_lights 2
03BC: 5@ = create_sphere 2040.131 -1611.939 13.3828 5.0
marker.Disable(3@)
:LabelMis1_4
wait 0
if
0100: actor 2@ near_point_in_car 2040.131 -1611.939 13.3828 radius 6.0 6.0 6.0 sphere 1
jf @LabelMis1_5
jump @KOD_PROVALA
:LabelMis1_5
wait 0
if
0100: actor $PLAYER_ACTOR near_point_in_car 2040.131 -1611.939 13.3828 radius 6.0 6.0 6.0 sphere 1
jf @LabelMis1_4
:UDACHNO // ------- Сюда надо делать переход(Jump) , если миссия удалась --------
wait 0
01E3: text_1number_styled 'M_PASS' 25000 5000 ms 4
Player.Money($PLAYER_CHAR) += 25000
0110: clear_player $PLAYER_CHAR wanted_level
0394: play_music 1
marker.Disable(5@)
actor.RemoveReferences(2@)
car.RemoveReferences(1@)
car.RemoveReferences(4@)
model.Destroy(#BALLAS1)
model.Destroy(#CHEETAH)
gosub @PROPUSK_KODA
return
:KOD_PROVALA // ------- Сюда надо делать переход(Jump) , если миссия провалена --------
00BA: text_styled 'M_FAIL' 5000 ms 1
$ONMISSION = 0
mission_cleanup
marker.Disable(5@)
actor.RemoveReferences(2@)
car.RemoveReferences(1@)
car.RemoveReferences(4@)
model.Destroy(#BALLAS1)
model.Destroy(#CHEETAH)
create_thread @RADIO
return
:UDALENIE_KODA
$ONMISSION = 0
mission_cleanup
return
Чтобы научиться делать миссии нужно время,поэтому пробуйте и у Вас всегда получиться,если нет,то
Вы знаете где нас найти...