Форум » CКРИПТЫ FPI » Урок скриптования № 4 от Никиты. Пишем скрипт для зомби » Ответить

Урок скриптования № 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 Этот скрипт был написан для обучающих целей, что бы показать принцип скриптования "рукопашных" перс-ов. При тесте персонаж может вести себя нелепо и глупо. Автор: Никита

Ответов - 2

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

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



полная версия страницы