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



Сообщение: 5136
Настроение: Ииииихаааааа! Бам балада тара-рада!
Зарегистрирован: 25.06.08
Откуда: Республика Башкортостан, Салават
Репутация: 40
ссылка на сообщение  Отправлено: 08.08.10 15:37. Заголовок: Урок скриптования № 3 от Никиты. SETTARGETNAME лучше, чем GLOBALVAR's


Какой вариант самый оптимальный и работоспособный? Конечно же SETTARGETNAME=X! В этом уроке я расскажу вам все "прелести" этой команды.

Итак. SETTARGETNAME переводится как "установить цель с именем Х". Этой командой можно активировать что угодно, а главное когда угодно. Рассмотрим простой пример: персонаж доходит до конца вейпоинта и открывается дверь. Все сразу же вскрикнут: "Да как!?!? Как такое сделать?? Это не возможно разве, что через глобальные переменные". Однако, это возможно и намного лучше, чем глобальные переменные. Теперь рассмотрим сам скрипт:

:state=0,waypointstate=0:waypointstart
:state=0,waypointstate=3:waypointnext
:state=0,waypointstate=5:waypointstop,state=1

:state=1:settargetname=doorremote,activatetarget=1

Обратим особое внимание на синюю строчку. В ней мы видим команду SETTARGETNAME=doorremote. После знака "=" написано имя двери, которая открывается после нажатия на кнопку, входа в триггер-зону неважно. После того как мы установили цель компоненту, нужно же с ней что-то дальше сделать, верно? А нужно её активировать. И вот еще один момент. Активировать можно любой цифрой 1, 2, 3, 5, 10. Главное, чтобы тот скрипт, который активируется должен:

1. Носить имя прописанное в SETTARGETNAME=X
2. Иметь такое же значение в условии ACTIVATED=Х, как и у ACTIVATETARGET=X


Вернемся к скрипту. После ACTIVATETARGET=doorremote следует команда ACTIVATETARGET=1. Она как раз и активирует цель с именем doorremote. А что происходит с дверью? Глянем на стандартный скрипт двери dooremote.fpi:

:state=0,activated=1:state=1,setframe=0,sound=$0
:state=1:incframe=0
:state=1,frameatend=0:state=2,coloff
:state=2,activated=0:state=3,sound=$1,colon
:state=3:decframe=0
:state=3,frameatstart=0:state=0,setframe=0

Выделенная синем цветом команда работает точно по такому же принципу, как и varequal=X с глобальными переменами. Если значения с activated=x и activatetarget=x совпадают, то наша дверь откроется.

А можно ли после этого "как-то" закрыть дверь таким же способом? Можно! Для этого дополним наш первый скрипт для персонажа:

:state=0,waypointstate=0:waypointstart
:state=0,waypointstate=3:waypointnext
:state=0,waypointstate=5:waypointstop,state=1
:state=1:settargetname=doorremote,activatetargetname=1,state=2

:state=2,plrdistwithin=100:settargetname=doorremote,activatetarget=0,state=3

Опять обращаем наше внимание на синюю строчку. Замете, что прежде чем активировать цель, нужно заново задать имя для цели. Итак, что мы добавили в этой строчке? А добавили мы одно условие plrdistwithin=100, которое звучит как "Если игрок ближе чем на 100 (см, мм не знаю в общем :) )" , то после него активируется цель. Так же обратите внимание на значение activatetarget=0, оно теперь равно не 1, а 0. А почему именно так, а не по-другому? Вернемся к скрипту двери:

:state=0,activated=1:state=1,setframe=0,sound=$0
:state=1:incframe=0
:state=1,frameatend=0:state=2,coloff
:state=2,activated=0:state=3,sound=$1,colon
:state=3:decframe=0
:state=3,frameatstart=0:state=0,setframe=0

Теперь обращаем внимание на выделенное зеленным цветом условие, которое также равно нулю, как и activatetarget. Опять же здесь работает принцип глобальных переменных.

На этом мой урок завершается, но прежде чем я напишу The end, отмечу ОСОБО ВАЖНЫЕ пункты:

1. Компоненты с такими командами может активировать только один компонент! Поясню: если вы на карте создали более одного компонента с одним и тем же именем, то они у вас не активируются! Для того, что бы они все активировались назовите их по-разному, например: entity1 и entity2 и соответственно пропишите в скрипте по очереди их активацию следующим образом (на примере из первого скрипта):
:state=0,waypointstate=0:waypointstart
:state=0,waypointstate=3:waypointnext
:state=0,waypointstate=5:waypointstop,state=1

:state=1:settargetname=entity1,activatetarget=1,settargetname=entity2,activatetarget=1,state=2

2. Активировать другие компоненты этими командами можно любым компонентом т.е. триггер-зоной, перс-ом, источником света, деколью и т.д.

3. Этот метод работает абсолютно на любой версии FPS Creator'a X9

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

The end.


<\/u><\/a>
<\/u><\/a>
Спасибо: 5 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

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