Форум » CКРИПТЫ FPI » Скриптование. Урок №2 (неофиц. продолжение) » Ответить

Скриптование. Урок №2 (неофиц. продолжение)

Extensive: Скриптование. Урок №2 (неофиц. продолжение) [more]Итак, урок №1 от Никиты дал вам базовые знания о языке сценариев. В моем уроке, неофициальном продолжении, Вы: Научитесь создавать "закольцованные" скрипты Узнаете новые команды Потренеруитесь в написании скриптов Итак, преступим. Стадия №1. Делаем уровень. Создадим стандартную комнату размером 5х5 клеток. Поместим в один из углов маркер Player Start. Установим в его свойствах следующие значения: Теперь добавим парочку столов и поместим на них два объекта: аптечку (small_health_2) и испорченный банан (small_health_1). В итоге у нас должно получиться примерно следующее: На этом стадия №1 закончена. Стадия №2. Пишем скрипты. Создадим новый файл health.fpi, поместим в папку Files/scriptbank/user. В самом же файле напишем след. скрипт: :state=0:timerstart,state=1 :state=1,timergreater=1000:plraddhealth=-1,state=0 Разместим триггер зону в любом месте уровня. Укажем в свойствах зоны в поле Main путь к нашему скрипту. Теперь создадим новый файл medkit.fpi и напишем в нем следующее: :state=0,plrdistwith=50,plrusingaction=1:ambiencered=0,ambiencegreen=255,ambienceblue=0,plraddhealth=100,destroy Поместим этот скрипт аптечке в поле Main. Теперь создадим еще один скрипт death.fpi с след. кодом: :state=0,plrdistwith=50,plrusingaction=1:ambiencered=255,ambiencegreen=0,ambienceblue=0,plraddhealth=-100,destroy Этот скрипт поместим нашему банану в поле Main. Сохраняем наш уровень. На этом стадия №2 закончена. Стадия №3. Пытаемся разобраться. Итак, рассмотрим наш первый скрипт: :state=0:timerstart,state=1 :state=1,timergreater=1000:plraddhealth=-1,state=0 Первое на что надо обратить внимание - в конце скрипта стоит условие state=0. Это значит, что скрипт "закольцованный", т.е. он не единичный, а повторяющийся постоянно. Разберемся, что делает наш скрипт. Первая строка: условие у нас всего одно - state=0, т.е. действие этой строки выполняется всегда, т.к. условие state=0 всегда истинно. Действие первой строки: команда timerstart - запускает таймер. Если же до этого в другом скрипте у вас уже был таймер, то он перезапуститься и начнуться глюки. Во второй строке есть новое условие - timergreater - если прошло х времени от запуска таймера. Само время указывать в миллисекундах. По условию нашего скрипта, когда проходит одна секунда после запуска таймера, то игроку добавляется - 1 ед. здоровья. За добавление здоровья игроку отвечает команда plraddhealth. В конце второй строки, скрипт снова возвращается к началу (state=0). Таймер снова перезапускается и через секунду снова вычитает 1 ед здоровья. А теперь - внимание- задание: Написать скрипт, по которому у игрока будет вычитаться по 2 ед. каждые 4 сек. Как сделаете, можете проверить: :state=0:timerstart,state=1 :state=1,timergreater=4000:plraddhealth=-2,state=0 Теперь разберемся со вторым скриптом и, одновременно третим (они очень похожи): :state=0,plrdistwith=50,plrusingaction=1:ambiencered=0,ambiencegreen=255, ambienceblue=0,plraddhealth=100,destroy Здесь у нас много новых, незнакомых команд. Сначала, условия: plrdistwithin - условие истинно, если расстояние до объекта от игрока меньше или равно Х. Как высчитать Х? Я предпочитаю такой способ - прямо на объект ставим лампу и изменяем ее радиус до нужного вам. Записываем полученную цифру, лампу удаляем. Следующее условие - plrusingaction=x. Истинно, если игрок нажал кнопку USE (x=1). Далее идут команды действия: ambience(red,green,blue)=x. Устанавливает окружающее освещение (цвет вычисляется в системе RGB). Посмотреть значения можно в любом граф. редакторе. Новая команда - действие destroy - уничтожает объект. Что делает скрипт? Когда расстояние до объекта (в данном случае - аптечке) меньше или равно 50 и игрок нажал кнопку USE - окружающее освещение становиться зеленым и игроку прибавляется 100 ед здоровья. Попробуйте разобраться с третьим скриптом - уверен, это будет не очень сложно. Стадия №4. Проверяем уровень. Итак вот,что происходит, когда мы принимает аптечку: А вот, когда кушаем испорченный банан: На этом, мой урок закончен. Оставляем свои комментарии и вопросы. Если вам понравился урок - поставьте "плюс", сделайте автору приятно ![/more]

Ответов - 10

xren4ig: Круто,молодцом

Extensive: Спасибо, урок простенький, но я и сам еще только начинаю разбираться ...

Sudden: Спасибо! Приобрёл с помощью данного урока базовые знания (как новичёк) о скриптинге. Планируете ли вы сделать следующий, более расширенный урок с применением иных функций?


Zepper: Ну урок не плохой, таки хороший ^^ спасибо поставил ^^

Extensive: А галочку мне дадут? Они мне очень нравятся, красиво так...:)

Extensive: Ах, да, в след. уроке по просьбе участников будет задействованно как можно больше новых команд.

hItMaN: Extensive,спасибо,это всем пригодится...Жду второго урока!

Extensive: Это уже будет в третьем уроке, так как с худами у меня нет возможности по-нормальному разобраться (нет конструктора). Сегодня ночью буду думать над вторым уроком...

Никита: Отличный урок!

hilogic: урок супер



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