| Max_Rif | Дата: Четверг, 14.04.2011, 23:26 | Сообщение # 1 |
|
Рядовой
Группа: Пользователи
Сообщений: 19
Репутация: 0
Статус:
| В этой главе я расскажу о создании актеров. Перед тем, как создавать актера нужно сначала загрузить соответствующую модель в память, иначе игра повиснет. Делается это так: 0247: request model #модель #модель это id модели в файле default.ide, так же можно использовать номер модели, который является первым параметром в файле default.ide Этой командой мы только дали запрос на загрузку модели, сама загрузка идет после команды 038B: load requested models, правда иногда ее можно опустить, но лучше все же писать. Эта команда идет после запроса на загрузку всех моделей, то есть если вы напишите 0247: request model #модель1 038B: load requested models 0247: request model #модель2 038B: load requested models То это будет не правильно, а вот правильно будет: 0247: request model #модель1 0247: request model #модель2 038B: load requested models Конечно первый вариант тоже может заработать, но игра может подтормаживать или вообще вылететь с ошибкой. Вот мы запросили модель, загрузили ее в память, пора бы уже эту модель использовать! Но перед этим нужно провести дополнительную проверку, загрузилась ли модель или нет: :TestLoad 0001: wait 0 ms 00D6: if 1 0248: model #модель1 available 0248: model #модель2 available 004D: jump_if_false ЈTestLoad ........ То есть полностью конструкция загрузки модели выглядит следубщим образом: 0247: request model #модель1 0247: request model #модель2 038B: load requested models :TestLoad 0001: wait 0 ms 00D6: if 1 0248: model #модель1 available 0248: model #модель2 available 004D: jump_if_false ЈTestLoad Вот теперь уже можно создавать актера. Делается это командой: 009A: $my_act = create_actor 4 #модель1 at x y z Назначение $my_act, #модель1, x, y и z вы уже должны знать, но вот что за непонятная цифра 4? Это как бы тип актера, а типы бывают следующие: pedtypes: 0=player 1=player2 2=player3 3=player4 Вот назначение типов 1,2,3 мне не очень понятно. 4=мужчина 5=женщина 6=полицейский 7=кубинец 8=гаитянец 9=уличный хулиган 10=не известно 11=частный охраник (такой в синей форме, на спине еще P.I.G написано) 12=байкер 13=бандит Версетти 14=игрок в гольф 15=не известно 16=медик 17=пожарный 18=приступник (те, за которых дают 50$ если по лицу дашь) 19=специальный, используется в роликах От типа зависит и поведение актера, то есть если создать актера с моделью копа и поставить ему тип 4, то при нападении на него звездочки не появятся, а вот если поставить тип 6, то появятся. Так же и с бандами. Итак, вот создан актер, а что с ним собственно говоря делать? Для начала разберем, какие параметры можно присвоить актеру: 0223: set_actor $test_act health_to 100 - установить текущий уровень здоровья 035F: set_actor $test_act armour_to 100 - то же для брони 02E2: set actor $my_act weapon accuracy to 80 - установить точность в процентах Так же актеру можно присвоить многие флаги (тоже что то вроде параметров). Все флаги никто не знает, кроме разработчиков игры, но, если порыться в оригинальном main.scm становиться ясно, что есть присвоить актеру флаг 64 то он будет атаковать полицейских и всех, кто нападает на игрока, а также на членов других банд. Этот флаг лучше присваивать актерам с типом 13. А вот если поставить актеру флаги 1 и 16 одновременно, то он будет убивать всех подряд, включая игрока. Так же у актера есть такая вещь, как статы, это тоже таки параметры. Например, чтобы актер защищал игрока, ему нужно поставить стат 6, а чтоб убивал то 16. Флаги ставятся командой: 011A: set_actor $my_act flags 64 а статы командой: 0243: set_actor $my_act ped_stats_to 6 Еще актера можно заставиьт следовать за персонажем, причем аж двумя командами, особой разницы я не заметил: 01DF: tie_actor $my_act to_player $PLAYER_CHAR или 01D2: actor $my_act follow_player $PLAYER_CHAR Также, актерам можно дать оружие, что делается командой 01B2: give_actor $my_act weapon 23 ammo 9999 где 23 - номер модели оружия в default.ide, а 9999 - количество патронов. Модель оружия нужно предварительно загрзить так же, как и модель актера. Ну и еще актеру можно задать угол поворота по оси Z, система та же, что и у парковок машин: 0173: set_actor $my_act z_angle_to $угол Ну вот, теперь, благодаря изученным командам сделаем телохранителя. Создайте thread MyBodyG (как это сделать писалось в предыдущей главе). А вот что нужно написать после :MyBodyG : 0001: wait 0 ms 0247: request model #PGA 0247: request model #M4 038B: load_requested_models :TestLoad 0001: wait 0 ms 00D6: if 1 0248: model #PGA available 0248: model #M4 available 004D: jump_if_false ЈЈTestLoad 009A: $my_act = create_actor 4 #PGA at x y z 01B2: give_actor $my_act weapon 26 ammo 9999 0243: set_actor $my_act ped_stats_to 6 011A: set_actor $my_act flags 64 01DF: tie_actor $my_act to_player $PLAYER_CHAR 004E: end_thread Мы создали актера, который, если к нему подойти, пойдет за игроком и будет стрелять в ментов и в тех, кто атакует игрока. Иногда при выстрелах актеру убегают, чтобы этого не было нужно их флаг not_scared поставить в значение 1: 0350: unknown actor $my_act not scared flag 1 Так, если нужно чтобы актер стоял на месте, его флагу wander_state выставить значение 0: 0319: set actor $my_act wander state to 0 (off) Актерами можно присваивать некоторые из анимаций игры, делаетмя это командой 0372: set actor $my_act anim 24 wait state time 60000000 ms 24 - номер анимации, 60000000 - время, в течениии которого проигрывать анимацию. Если нужно чтобы анимация проигралась до конца, то ставьте побольше. Вот списо анимаций: 1 - стоять 2 - стоять, руки за спину 3 - оглядваться по сторонам 8 - сначала руки за спину, потом почесать голову 9 - как прохожие в игре, когда при беге натолкнулись на стену 10 - разворот на 180 градусов 11 - 9, а затем 8 12 - как устал после бега 14 - как стреляет сидя 15 - удивлен 16 - взмах рукой, как ловит такси 17 - руки вверх 19 - разговаривает 21 - садиться 23 - встает 24 - сидит 25 - как что-то дает из кармана и что-то забирает назад 30 - падает 31 - смотрит на часы 33 - пинок ногой Так же есть анимации, которые требуют загрузку дополнительных анимационных файлов, таких анимаций всего 3: RIOT, LANCE, STRIP, загружаются анимации командой 04ED: load_animation "название анимации". Для этих анимаций тоже есьт номера: 29 - махать руками, выражать недовольство, при желании може потянуть на взмахи болельщиков (анимация RIOT) 32 - танцевать (анимация RIOT) 34 - сидеть на стуле как будто без сознания, как Лэнс в миссии, где его на свалке пытают, поэтому и название у анимации соответствующее - LANCE. Если нужно сделать так, что два актера как будто разговаривают межу собой: 03F9: make actors $act1 $act2 converse in 999999999 ms где 999999999 время, в течении которого они разговаривают. Так же актеров можно заставить передвигать куда-нибудь, причем не только шагом, но и бегом и спринтом: 0211: actor $my_act walk_to x y - идти 0239: actor $my_act run_to x y - бежать 0502: unknown_actor $my_act sprint_to x y- быстро бежать (спринт). Не удивляйтесь, что в этих командах все 2 координаты - так надо. Еще актеру можно выставить иммунитеты на разные типы атак: 02AB: set actor $my_act immunities 1 1 1 1 1 Первая цифра - защита от пуль, вторая - от огня, третья - от взрывов, четвертая - не знаю, похоже от кулаков, про пятую цифру никто ничего не знает. Наверно вы уже поняли что цифра 1 - иммунитет включен, 0 - выключен. Так, вроде бы все про актеров рассказал. Вскоре перейдем к машинам
|
| |
| |