00050. Статус-тексты
Статус-тексты|В этом уроке мы рассмотрим статус-тексты.|wmysterio|wmysterio||||Здравствуйте, уважаемые пользователи сайта ru-script.3dn.ru. В оригинальных миссиях можно увидеть полоску жизни дружественной цели и при получении ею урона полоска начинает показывать уровень здоровья. Если полоска станет пустой, то миссия будет считаться проваленной. Сегодня мы напишем миссию с использованием статус-текстов. Но прежде всего рассмотрим необходимые опкоды. Что бы создать статус-текст, используем опкод:
04F7: status_text $Health type 0 line 1 GXT 'BB_18'Здесь: $Health - переменная, которая будет отвечать за движение полоски. Например: она будет хранить жизнь актёра или автомобиля 0 - тип статус-текста. Если поставить 0 - выводит обыкновенные числа. Например: количество пойманных ящиков. Если поставить 1 - то вместо числа будет отображаться полоска ( похожая на жизнь СЖ ) 1 - указываем номер линии ( по-сути мы располагаем текст от места, где выводятся деньги СЖ). Чем больше число, тем ниже относительно денег будет полоска ( число от 0 до 4 ) 'BB_18' - GXT-запись. Она будет выведена возле полоски. Запись должна содержать одно или несколько коротких слов, без использования ~1~
Вот я, например создал такие записи:

Что бы удалить статус-текст, используем опкод:
0151: remove_status_text $HealthТеперь давайте создадим новый стартер:
:STARTER_4
thread 'STARTER_4'
wait 0
$ICON4 = marker.CreateIconAndSphere(22, 2371.0364, -1758.7781, 13.547)
:STARTER_4_1
wait 0
if AND
$ONMISSION == 0
0102: actor $PLAYER_ACTOR in_sphere 2371.0364 -1758.7781 13.547 radius 2.0 2.0 2.0 sphere 0 stopped_on_foot
jf @STARTER_4_1
if AND
8741: not actor $PLAYER_ACTOR busted
not actor.Dead($PLAYER_ACTOR)
jf @STARTER_4_1
if
not actor.Driving($PLAYER_ACTOR)
jf @STARTER_4_1
marker.Disable($ICON4)
player.CanMove($PLAYER_CHAR) = false
actor.SetImmunities($PLAYER_ACTOR, 1, 1, 1, 1, 1)
00BA: show_text_styled GXT 'MIS_04' time 1000 style 2
fade 0 2000
wait 2000
start_mission 3
end_threadПосле этого добавим новую миссию. Прежде всего создадим случайного актёра опкодом:
И зададим ему жизнь в 1000 единиц. После этого создадим статус-текст:
Вот что в нас получилось:

Цель миссии - дойти до точки вместе с рандомным другом. Но чтобы заставить актёра следовать за СЖ, переместим его в группу игрока а так же сделаем, чтобы созданный нами актёр уважал СЖ:
Всё необходимое уже сделано. Теперь нам нужно заставить статус-текст правильно работать, чтобы полоска нормально и без ошибок показывала здоровье друга. Здесь есть некоторая закономерность. Если мы задали актёру 1000 жизни - нужно делить их на 10, если 2000 - нужно делить их на 20, если 3000 - делить на 30 и так дальше. Таким образом делаем цикл:
Теперь жизни у нас считаются, актёр слушается, остаётся написать только условия, при котором миссия будет проиграна или пройдена. Так же добавим маркер над другом. В результате мы получили неплохой скрипт и этот шаблон уже можно использовать для похожих миссий:
Результат кажет сам за себя:

Вы можете усовершенствовать этот скрипт. Добавьте несколько противников, которые будут атаковать СЖ и его друга. Вот и сам исходник: смотреть/скачать.|1344|1|0|52828888jpg600360400240``\|05065016png430316400293\|61518594`png`640`400`400`250||status_teksty|1499072355
Last updated
Was this helpful?