00024. Модель. Создание актёра
Модель. Создание актёра|Итак, в этом уроке мы научимся создавать пешеходов, они же актёры. Также научимся загружать необходимые модели.|wmysterio|wmysterio||||Любой пешеход в игре является актёром. Начнём с того, что ознакомимся с опкодами, с помощью которых он будет создаваться.
В первую очередь нужно загрузить в память модель актёра. Начинающим скриптерам, да и опытным, очень помогает программа Ped Editor ( вот урок для тех, кто не читал ), в которой можно просмотреть модели всех пешеходов. Давайте найдём нужную модель. Запускаем программу и выберем в списке интересующую нас модель. Вот, например я выбрал такую:

Как видите я хочу создать актёра, модель которого: BMYPOL1, что бы загрузить такую модель, нужно воспользоваться опкодом:
Model.Load(#BMYPOL1)Здесь: #BMYPOL1 - выбранная нами модель
Обратите внимание на то, что перед именем модели всегда пишется знак "диез" или, как в народе говорят, решетки. Также есть возможность загрузки модели по её ID, как видите, в нашем случаи, ID этой модели - 66 ( выделено зелёным цветом ). Написанный нами опкод выше — всё равно, что: Model.Load(66). Если вы будете набирать модель, то вы обязательно можете узнать её ID ( см. картинку ниже ).

Этот опкод перечисляет модели, которые нужно загрузить. Сама загрузка начитается опкодом:
038B: load_requested_modelsТаким образом результат должен быть такой:
Model.Load(#BMYPOL1)
038B: load_requested_modelsПосле этого нам нужно проверять на загрузку модели. Проверка загрузки делается опкодом:
Model.Available(#BMYPOL1)Здесь: #BMYPOL1 - выбранная нами модель× **Примечание:** после использования опкода 038B делать проверку не обязательно, но рекомендую использовать её для предотвращения вылетов на старых компах, которые могут не успеть загрузить модель.
Давайте рассмотрим полный пример загрузки модели:
:MODEL
wait 0
model.Load(#BMYPOL1)
038B: load_requested_models
:MODEL_1
wait 0
if
model.Available(#BMYPOL1)
jf @MODEL_1Если нам необходимо загрузить несколько моделей, то можно использовать такой пример:
Достаточно часто пишут такие варианты:
1-й вариант ещё допустим, но он не рационален. 2-й вариант вовсе бредовый. Почему? Потому, что если мы загружаем одну модель, то она всегда будет хранится в памяти, и мы можем в любой момент использовать её. Вариант 2 дважды загружает одну и туже модель, а этого делать не нужно. Поэтому можете использовать мои примеры, что бы оптимизировать Ваш код.
Если есть загрузка, то есть и удаление ( очищение ). Что бы не грузить память, так же нужно удалять модель после использования. Делается это командой:
Здесь: #BMYPOL1 - выбранная нами модель
Итак, с загрузкой моделей разобрались. Наша цель - создать актёра. Прежде чем приступать, определим координаты. Заходим в игру и ищем нужное место. Далее сворачиваем игру ( клавиша WINDOWS ), и в Sanny Builder нажмём знакомые нам комбинации клавиш <kbd>CTRL+SHIFT+<kbd>C и CTRL+<kbd>SHIFT+E`. Я получил координаты: 2506.8359 -1669.4536 12.3772, а также угол поворота: 88.2883. Создадим нашего первого педа ( актёра )! Воспользуемся такой командой:
Здесь: $IVAN — имя ( хендл ) переменной для нашего актёра, я назвал её человеческим именем, что бы Вам было понятнее 4 — тип актёра ( см. Типы пешеходов ) #BMYPOL1 — как вы уже догадались, модель актёра 2506.8359, -1669.4536, 12.3772 — мои координаты
А так же зададим ему угол поворота:
Здесь: $IVAN — имя ( хендл ) переменной для нашего актёра 88.2883 — угол поворота нашего педа
Обычно эти опкоды пушить в месте:
Совсем не правильным будет такой вариант:
Так, как вначале мы не создавали ранее актёра с именем "$IVAN", то игра вылетит, так как она не знает кого поворачивать. Но если такой актёр существует, то никакой ошибки не будет.
Давайте напишем примитивный скрипт, что бы при нажатии кнопки BACKSPACE`, в наших координатах появлялся актёр. Для этого создадим новый поток с именем "@Model", и добавим код. Должно получится такое:
Компилируем и начинаем новую игру. После нажатия нужной кнопки, я получил такое:

То есть свою задачу я выполнил - создал актёра. Но на этом скрипт и заканчиваться. Так же он одноразовый, то есть больше такой возможности не будет, так, как судя по скрипту, поток заканчивается после создания актёра. Рассмотрим наш код в графическом варианте:
Здесь:
Зелёные стрелки указывают на, что условие выполнилось
Красные стрелки - прыжки когда условие не выполнилось ( или просто прыжки )
Фиолетовые - прыжки с возвратом
В следующих уроках я расскажу о командах, которые можно применить к актёрам.|1220|1|0|15152977jpg640376400235``\|16242540png516304400235\|03258234`png`640`400`400`250|79193594png878598400`272``||model_i_sozdanie_aktjora|1498575327
Last updated
Was this helpful?