Как сделать свой 3д шутер от первого лица Главный форум о конструкторе игр FPS Creator Создай свою игру БЕЗ опыта в программировании
АвторСообщение



Сообщение: 5212
Настроение: Ииииихаааааа! Бам балада тара-рада!
Зарегистрирован: 25.06.08
Откуда: Республика Башкортостан, Салават
Репутация: 40
ссылка на сообщение  Отправлено: 18.08.10 16:08. Заголовок: Урок скриптования № 4 от Никиты. Пишем скрипт для зомби


Я расскажу вам о том, как написать скрипт для "рукопашного" перс-а и что это за такие мистические команды RUNFORE=X, MOVEFORE=X и SHOTDAMAGE=X.

Давайте придумаем поведение нашему будущему монстру\зомби или другими словами как он будет себя вести в разный случаях.
Итак.
1-ый случай это когда наш монстр стоит и никого не трогает. Здесь мы можем прописать ему анимацию стояния, мотание головой и т.д.
2-ой случай, когда в него стреляет игрок.
3-ий случай, когда монстр сам видит игрока и он должен принять какое-то действие.
4-ый случай, когда монстр атакует игрока, проигрывая анимации ударов и т.д.

Что ж, приступим к написанию скрипта.
Возьмем к примеру зомби из пака Зомби Апокалипсис (такой толстый) и начнем писать скрипт. Кстати, в таких сложных скриптах я рекомендую комментировать строчки, что они делают и что они означают.

;===Стоит и смотрит по сторонам===
:state=0:animate=1,rotateheadrandom=35
- вот мы и написали скрипт для 1-го случая. ROTATEHEADRANDOM=35 заставляет перс-а произвольно поворачивать голову на 35 градусов (влево и вправо).

;===Игрок стреляет в зомби===
:state=0,shotdamage=1:state=1
- это все еще первое состояние и здесь написана команда SHOTDAMAGE=1. Для чего она? Это означает, что перс получил урон от игрока равный единице т.е. игрок стрельнул в перс-а. Далее идет переход на другое состояние

;===Видит игрока===
:state=0,plrcanbeseen:state=1
- здесь написан скрипт для 3-го случая, когда перс сам видит игрока. А именно за "видит игрока" отвечает команда PLRCANBESEEN, которая переводится как: Если игрок может быть виден. Затем опять переход на состояние 1.

И так мы написали скрипт для 3-х случаев. Вот он:

;===Стоит и смотрит по сторонам===
:state=0:animate=1,rotateheadrandom=35

;===Игрок стреляет в зомби===
:state=0,shotdamage=1:state=1

;===Видит игрока===
:state=0,plrcanbeseen:state=1


Теперь пропишем анимацию рычания или гнева, когда зомби видит игрока или когда игрок стреляет по зомби.

;===Анимация гнева===
:state=1:animate=96,rotatetoplr
:state=1,animationover=96:state=2
- здесь мы видим, что в первом состоянии проигрывается "вступительная" анимация и зомби при этом поворачивается и смотрит на игрока благодаря команде ROTATETOPLR. Идем дальше теперь самое "вкусное" и интересное.

Анимация движения. Здесь как раз будут использованы команды RUNFORE=X и MOVEFORE=X. Для начала переведем эти команды. RUNFORE - бежать вперед, MOVEFORE - идти вперед. За Х обозначается скорость передвижения. В данном случае мы будем пользоваться командой MOVEFORE, потому что наш зомби передвигается медленно и не умеет бегать :)

;===Игрок далеко===
:state=2,plrdistfurther=100:animate=92,movefore=2,rotatetoplr
- такая комбинация команд позволяет перс-у передвигаться в сторону игрока без вейпоинтов. В данном случае у нас описана ситуация, когда игрок дальше чем на 100 единиц (1 квадрат) и зомби идет к игроку, что бы его покусать и т.д. :)

;===Игрок близко===
:state=2,plrdistwithin=99:state=3
- здесь и все так понятно судя по комментарию. Если игрок ближе на 99 единиц, то перейти на состояние 3, где и будет анимация атаки, кусания и т.д.

;===Атакует игрока===
:state=3:animate=94,rotatetoplr
:state=3,animationover=94:plraddhealth=-10,state=2
- вот здесь уже что-то новое не так ли? В состоянии 3 проигрывается анимация атаки и зомби смотрит на игрока. С такой комбинацией команд мы уже знакомы, а вот во второй строчке третьего состояния мы видим команду PLRADDHEALTH, которая переводится как "дать игроку жизни\здоровье", а сама строчка звучит так: когда анимация 94 закончилась, то отнять у игрока 10 ХП здоровья, затем снова перейти на второе состояние. Ну все. Скрипт готов, осталось его собрать в единое целое:

;===Стоит и смотрит по сторонам===
:state=0:animate=1,rotateheadrandom=35

;===Игрок стреляет в зомби===
:state=0,shotdamage=1:state=1

;===Видит игрока===
:state=0,plrcanbeseen:state=1

;===Анимация гнева===
:state=1:animate=96,rotatetoplr
:state=1,animationover=96:state=2

;===Игрок далеко===
:state=2,plrdistfurther=100:animate=92,movefore=2,rotatetoplr

;===Игрок близко===
:state=2,plrdistwithin=99:state=3

;===Атакует игрока===
:state=3:animate=94,rotatetoplr
:state=3,animationover=94:plraddhealth=-10,state=2



Этот скрипт был написан для обучающих целей, что бы показать принцип скриптования "рукопашных" перс-ов. При тесте персонаж может вести себя нелепо и глупо.

Автор: Никита

<\/u><\/a>
<\/u><\/a>
Спасибо: 3 
ПрофильЦитата Ответить
Ответов - 2 [только новые]





Сообщение: 1
Зарегистрирован: 24.10.10
Репутация: 0
ссылка на сообщение  Отправлено: 24.10.10 19:08. Заголовок: Помогите


Я сделал все правильно прописал скрипт поставил в Main, но не выходит.
Зомби стоит и ничего не делает, потом когда стреляю он движется с анимацией удара, а когда приближается к 99 то останавливается и если подойти ближе без анимации отнимаются жизни.
Помогите

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5560
Настроение: Ииииихаааааа! Бам балада тара-рада!
Зарегистрирован: 25.06.08
Откуда: Республика Башкортостан, Салават
Репутация: 41
ссылка на сообщение  Отправлено: 24.10.10 20:03. Заголовок: Скрипт написанный в ..


Скрипт написанный в шапке это всего лишь пример. Анимации зависят от персонажей. У каждого персонажа своя определенная анимация.

<\/u><\/a>
<\/u><\/a>
Спасибо: 1 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  5 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет