Очередная статья о том, как делать стартера для Cleo-миссий. В ней мы научимся делать несколько стартеров, что бы в игрока был выбор миссий. Отличий от предыдущего урока немного, но всё же рассмотрим подробнее.

Что бы добить другой стартер, нам понадобится ini-файл из предыдущего урока. Допустим мы хотим добавить миссии OG-лока, которые можно выполнять параллельно с миссиями CJ. Открываем наш файл "MISSION.ini" и делаем новые сведения(стартовые данные):
Code
[MISSION_CJ]
markerID = 15
MARKER_X_CJ = 2498.2966
MARKER_Y_CJ = -1684.5094
MARKER_Z_CJ = 12.41
MISSION_CJ_TOTAL = 0

[MISSION_OG]
markerID = 28
MARKER_X_OG = 2486.7156
MARKER_Y_OG = -1651.3683
MARKER_Z_OG = 12.4841
MISSION_OG_TOTAL = 0
Дальше мы должны написать сами миссии. Как и в предыдущем уроке мы, рассмотрим код миссии:
Code
{$CLEO .CM}
//------------- mission  ---------------
:mission
thread 'mission'
gosub @mission_29_57
if
wasted_or_busted
jf @mission_29_46
gosub @mission_29_144

:mission_29_46
$ONMISSION = 0
mission_cleanup
end_thread

:mission_29_57
increment_mission_attempts
$ONMISSION = 1
fade 1 1000
wait 1000
gosub @mission_END
00BA: show_text_styled GXT 'M_PASS' time 5000 style 1  // MISSION PASSED
0318: set_latest_mission_passed 'MISS_00' // GXT MISSION name
0AF0: 0@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MISSION_OG_TOTAL"
0@ += 1
0AF1: write_int 0@ to_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MISSION_OG_TOTAL"
return

:mission_29_144
wait 0
gosub @mission_END
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1  // MISSION FAILED
return

:mission_END
wait 0
return
Синим цветом выделено прибавление единицы к общему количеству пройденных миссий. Думаю вы заметили отличия: в место слова CJ написано OG. Значит запись будет происходить в блок с информацией о OG в ini-файле. По аналогии:
Code
//Изменить положение маркера для миссий OG:
0AF3: write_float -1446.6484 to_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MARKER_X_OG"
0AF3: write_float 1502.4534 to_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MARKER_Y_OG"
0AF3: write_float 1.7366 to_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MARKER_Z_OG"
//Изменить номер маркера:
0AF1: write_int 37 to_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "markerID"
Как видите, команды точно те же, что и для миссий CJ. И это стоило только поменять две буквы.

Со стартерами точно так же! Нам нужно так же поменять названия миссий:
Code
{$CLEO}
0000:

:NAME_OG
thread 'NAME_OG'
wait 0
if
0AAB:  file_exists "CLEO\MISSION.ini"
jf @NAME_OG_END
if
$ONMISSION == 0
jf @NAME_OG
if
075C:   marker 0@ enabled
then
marker.Disable(0@)
end
0AF0: 5@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MISSION_OG_TOTAL"
if
5@ > 4
then
jump @NAME_OG_END
end

:NAME_OG_1
wait 0
0AF0: 1@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "markerID"
0AF2: 2@ = get_float_from_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MARKER_X_OG"
0AF2: 3@ = get_float_from_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MARKER_Y_OG"
0AF2: 4@ = get_float_from_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MARKER_Z_OG"
0@ = marker.CreateIconAndSphere(1@, 2@, 3@, 4@)

:NAME_OG_2
wait 0
0AF0: 5@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MISSION_OG_TOTAL"
if AND
not actor.Dead($PLAYER_ACTOR)
not actor.Driving($PLAYER_ACTOR)
8A0C:   not player $PLAYER_CHAR on_jetpack
8741:   not actor $PLAYER_ACTOR busted
then
    if AND
    $ONMISSION == 0
    0102:   actor $PLAYER_ACTOR in_sphere 2@ 3@ 4@ radius 2.0 2.0 2.0 sphere 0 stopped_on_foot
    then
    00BE: text_clear_all
    03E6: remove_text_box
    fade 0 1000
        if
        5@ == 0
        then
        00BA: show_text_styled GXT 'MISS_06' time 1000 style 2
        wait 1000
        0A94: start_custom_mission "MIS_006"
        jump @NAME_OG
        end
        if
        5@ == 1
        then
        00BA: show_text_styled GXT 'MISS_07' time 1000 style 2
        wait 1000
        0A94: start_custom_mission "MIS_007"
        jump @NAME_OG
        end      
        if
        5@ == 2
        then
        00BA: show_text_styled GXT 'MISS_08' time 1000 style 2
        wait 1000
        0A94: start_custom_mission "MIS_008"
        jump @NAME_OG
        end
        if
        5@ == 3
        then
        00BA: show_text_styled GXT 'MISS_09' time 1000 style 2
        wait 1000
        0A94: start_custom_mission "MIS_009"
        jump @NAME_OG
        end
        if
        5@ == 4
        then
        00BA: show_text_styled GXT 'MISS_10' time 1000 style 2
        wait 1000
        0A94: start_custom_mission "MIS_010"
        jump @NAME_OG
        end
    end 
end
jump @NAME_OG_2

:NAME_OG_END
wait 0
0A93: end_custom_thread
Естественно стартер рассчитан на 5 миссий(MIS_006, MIS_007, MIS_008, MIS_009, MIS_010). Компилируем код под названием, например, "ST_OG.CS". Скрипт со стартером для СЖ пусть будет "ST_CJ.CS". Что бы появились оба маркера, нужно что бы эти скрипты были в папке cleo вместе. Если всё правильно сделано, то старетра готовы. Можно выбирать миссию! :)

Но что, если нужно сделать так, что бы при прохождении 2-х миссий СЖ открывались миссии ОГ-лока?. Ответ очень просто. Нам нужно в стартере ОГ считать количество пройденных миссий СЖ и проверить больше ли это количество за нужное. Давайте сделаем написанное:
Code
//...
:NAME_OG
thread 'NAME_OG'
wait 0
if
0AAB:  file_exists "CLEO\MISSION.ini"
jf @NAME_OG_END
if
$ONMISSION == 0
jf @NAME_OG
if
075C:   marker 0@ enabled
then
marker.Disable(0@)
end
0AF0: 6@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_CJ" key "MISSION_CJ_TOTAL"
if
6@ > 2
// проверяем "количество пройденных миссий CJ больше чем две?". Если нет, то прыгаем на начало потока
jf @NAME_OG

0AF0: 5@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_OG" key "MISSION_OG_TOTAL"
if
5@ > 4
then
jump @NAME_OG_END
end
//...
Готово! Теперь пока не будут пройдены две миссии СЖ, маркер OG не будет появляться. Если пройденны, то мы свободно можем проходить миссии Джефри. Вот такой не хитроумный способ. :)

Как добавить в стартер новые миссии читайте в предыдущем уроке. Я напишу ещё один урок по стартерам, он будет не очень большой, но думаю будет полезен каждому новичку.
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Как Вы относитесь к ситуации с OpenIV?
Всего ответов: 1
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
wmysterio
Реклама