Форум «Лабортории Mod-Tec»

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум «Лабортории Mod-Tec» » Туториалы и статьи » Мини-уроки по скриптам и в картинках (для начинающих)


Мини-уроки по скриптам и в картинках (для начинающих)

Сообщений 1 страница 8 из 8

1

Мини-уроки по скриптам в картинках (для начинающих)

Тема создана для помощи новичкам, делающим первые шаги в освоении редактора G.E.C.K.
Поэтому просьба не засорять её оценками и комментариями. Только вопросы по конкретному мини-уроку.
Договорились? Тогда вперёд!

ОГЛАВЛЕНИЕ
1 Повелитель времени
2 Повелитель света
3 Повелитель неприятностей

ДОПОЛНЕНИЯ

Отредактировано K.A.I.N.48 (25.09.11 23:44:51)

+2

2

Так скажем - Первый мини урок "Повелитель времени"

Вы спросили:
- А как сделать так что бы предмет (Дверь например) появился в игре через 5 секунд после того как Главный герой достиг определённого места?
Вам ответили:
Написать скрипт таймера. Вот такой например.

Код:
scn TimerSCRIPT
short sFlag
float fTimer

Begin OnTriggerEnter Player
if (sFlag == 0)
  Set sFlag to 1
  Set fTimer to 5                                             
endif
End

Begin GameMode
if (fTimer > 0) && (sFlag == 1)
  Set fTimer to (fTimer - GetSecondsPassed)
elseif (sFlag == 1)
  AAAKanBarracksDoor01Ref.Enable                                       
  Set sFlag to 2
endif
End

И "повестить" его на триггер.
И тут вы понимаете, что ничего не понимаете! Давайте разбираться.
Для начала нам нужно выполнить все условия прописанные в скрипте. Их тут не много! Во первых нужна дверь, а во вторых нужен сам триггер.
Начнём с двери.
В окне Редактора Object Window в ветке древовидной структуры папок открываем ветку Wopld Objects и далее ветку Door.
http://savepic.net/1032919.jpg
При этом в левой части окна Object Window появиться список всех дверей из игры. Второй путь - поиск через фильтр, для этого в окне Object Window в маленьком окошке Filter сразу под названием окна напишите door (дверь), а в самом низу списка всех объектов игры выберите *All.
Выбираем там нужную нам дверь - например эту
http://savepic.net/1001175.jpg
И вытаскиваем её в Рабочее окно. Наводим указатель мышки на BarracksDoor и, нажав и удерживая ЛКМ - перетаскиваем дверь из окна Object Window  в окно Render Window и отпускаем кнопку мышки.
Нажимаем клавишу F на клавиатуре и дверь падает вниз до ближайшей поверхности.
Удерживая ЛКМ  - передвигаем дверь вперёд-назад, влево-вправо.
Нажимает, и Удерживаем клавишу Z затем нажимаем и Удерживаем ЛКМ двигаем мышкой вперёд-назад опускаем или поднимает дверь.
Удерживая ПКМ и двигая мышкой - вращаем дверь вокруг своей оси.
При необходимости Удерживайте Shift и вращайте камеру меня вид со стороны на удобный для Вас.
Итак в итоге дверь у нас на месте. Но это дверь из игры и менять в её настройках какие либо параметры мы не можем.
Следовательно на основе игровой двери нам надо создать новую дверь. Для этого для начала сделаем двойной клик на выделенной двери. Откроется окно Reference
http://savepic.net/1005270.jpg
Сразу же нажимаем на кнопку Edit Base и открываем окно Door, в котором меняем ID игровой двери на свой уникальный ID, например AAAKanBarracksDoor01.
И в поле Name пишем название двери по русски.
Закрываем окно Door нажав кнопку Ok. И тут же выскакивает окно с вопросом:
«Старый ID такой то. Новый ID такой то. Вы изменили данные ID. Создать Новую форму
Нажимаем кнопку Да. И создаём новый объект, и несмотря на то, что он выглядит, точно так же, как старый, мы теперь имеем возможность изменять его, не затронув другие такие же двери из игры.
А в открытом окне Reference в поле ввода Reference Editor ID вписываем ID нашей двери с окончанием Ref -AAAKanBarracksDoor01Ref
Ставим галочку Initially Disabled тем самым убирая дверь из игры (отключив). Закрываем окно.
Новая дверь готова.
Переходим к созданию триггера.
Для этого на панели инструментов  нажав на кнопку с рисунком квадрата с буквой Т (создать триггер). Четвёртая кнопка с лева.
http://savepic.net/1025745.jpg
Удерживая ЛКМ растягиваем триггер на поверхности, а затем отпустив - вытягиваем по высоте и снова нажимаем ЛКМ.
После этого появляется окно Activator  в нём отмечаем галочку New, вписываем уникальный ID - в моём случае AAAKainTrigger. Жмём ОК и закрываем окно.
http://savepic.net/1020649.jpg
Вот и триггер готов.
Осталось дело за малым - закрепить на нём предложенный нам ранее скрипт.
Для этого делаем двойной клик ЛКМ на триггере и открываем окно Reference- затем нажав на Edit Base окно Activator, а в нём рядом с полосой прокрутки Script
http://savepic.net/989929.jpg 
Жмём на квадратную кнопку с точками ... Откроется окно Script Edit. Жмём в нём Script, затем New и вписываем (копируем и вставляем) Ctrl C - Ctrl V ранее предложенный нам скрипт
http://savepic.net/1046248.jpg
Сохраняем скрипт и закрываем окно Script Edit, а следом и окно Activator. Затем снова открываем окно Activator и в полосе прокрутки Script находим наш скрипт TimerSCRIPT. Жмём ОК и закрываем все окна.
В рабочем окне Редактора после всех наших манипуляций должна быть такая картина.
http://savepic.net/1031912.jpg
Есть ОБЪЕКТ который, должен появиться через пять секунд после того как ГГ зайдёт в область триггера и есть сам ТРИГГЕР.
Сохраняем плагин и запускаем игру и там видим вначале это (степь да степь кругом...!)
http://savepic.net/1001192.jpg
А через пять секунд  вот это
http://savepic.net/1006312.jpg
Все довольны! Все смеются, а урок закончен.
Послесловие.
Как вы понимаете это только пример - вместо двери у Вас может быть какой угодно объект, любая команда - на установку стадии квеста например, добавление в инвентарь предметов и денег, то же самое и в обратном порядке!
Set fTimer to 5 в этой строке  скрипта устанавливается время, в секундах, до начала события - можете менять на  нужное Вам.
Пробуйте, делайте и всё у Вас получиться.     
Пока.

Отредактировано K.A.I.N.48 (20.04.11 18:13:31)

+1

3

Полезная вещь для новичков :) Сам начал понемногу изучать скрипты недавно, наподобие этого только сделать и смогу.

0

4

Так скажем – Второй мини урок  «Повелитель Света»

Вы спросили:
- А как сделать включаемый и выключаемый свет?
Вам ответили:
-Написать скрип выключателя. Вот такой, например:

Код:
scn	AAAKainLightSwitchScript

Short	bLightState

Begin OnActivate

	If bLightState != 1
    AAAKainLight01Ref.Enable
    AAAKainLightSwitchRef.Activate AAAKainLightSwitchRef
    Set bLightState to 1
	Else
    AAAKainLight01Ref.Disable
    AAAKainLightSwitchRef.Activate AAAKainLightSwitchRef
    Set bLightState to 0
	Endif
End

И добавляют:
Скрипт вешается на любой объект, который можно активировать.
Активатор следует связать с лампочкой "LinkedRef" связью.
В настройках копии лампочки нужно выбрать параметр "Initially Disabled".

И тут вы понимаете, что ничего не понимаете! 
Ничего страшного, это явление обычное для всех новичков в любом деле!
Давайте разбираться.
Для начала нам нужно выполнить все условия прописанные в скрипте. Их тут опять не много!
Нам нужны:
- Активатор AAAKainLightSwitchRef
- Лампочка AAAKainLight01Ref
Начнём с лампочки.
В Редакторе в окне Object Window в ветке древовидной структуры папок Wopld Objects и далее ветку Light.
Второй путь - поиск через фильтр, для этого в окне Object Window в маленьком окошке Filter сразу под названием окна напишите light (свет), а в самом низу списка всех объектов игры выберите *All.
http://savepic.net/1062658.jpg
А в правой части окна Object Window возьмите любую лампочку, я выбрал LightViolet
http://savepic.net/1104645.jpg
И как описано в первом мини уроке - переносим её в рабочее окно редактора, и устанавливает в нужном месте. Примерно так.
http://savepic.net/1087238.jpg
Как вы понимаете это только «лампочка – источник света». А сам светильник Вы можете найти по поиску через фильтр, вписав в поле поиска Light отсортировав объекты по типу – нажав кнопку Form Type – вот здесь
http://savepic.net/1054490.jpg***
И прокрутив список до объектов с символом синего домика (наверное это домик!)
Начинаете просмотр с первого – кликнув на нём ПКМ и открыв окно Preview. Если мешает  Ground plane – снимите галочку под этой  надписью (поверхность исчезнет). Навигация в этом окне простая – зажав ЛКМ – вращаем камеру, прокрутив Колёсико мышки приближаем и отдаляем.
Окно Preview при открывании всегда становится активным. Поэтому для прокрутки списка объектов при помощи стрелок на клавиатуре– кликните ЛКМ на окне Object Window -  тем самым сделав активным.
Найдите подходящий Вам светильник
http://savepic.net/1110808.jpg
и установите в рабочем окне Редактора.
Возвращаемся к лампочке.
Так как возможно Вы захотите изменить её яркость и цвет освещения, давайте, как и в случае с дверью из первого мини урока, создадим новый объект.
Последовательность Ваших действий точно такая же – окна вы знаете, поэтому обойдёмся без картинок.
Двойной клик ЛКМ по лампочке - ReferenceEdit Base – поле ввода ID – вписываем собственный ID, например  АААKAINLight01. Закрываем окно, подтверждаем создание нового объекта и в поле Reference Editor ID вписываем АААKAINLight01Ref. (Имя Ref может быть любым, я просто скопировал имя ID и добавил окончание Ref, что не выдумывать)
http://savepic.net/1089306.jpg
И сразу же ставим галочку в поле Persistent Reference – тем самым разрешая объекту участвовать в связях с другими объектами. И в поле Initially Disabled (отключив отображение в игре)
http://savepic.net/1081117.jpg
Небольшое пояснение, зачем мы вписали в поле ввода Reference Editor ID вписали АААKAINLight01Ref.
АААKAINLight01 – это новый созданный нами объект и он имеет  уникальный (неповторимый) ID (идентификатор). Он может быть только один, это понятно по определению – уникальный.
А АААKAINLight01Ref – это копия нашего уникального обьекта – их  может быть сколько угодно много. Например следующий можно назвать АААKAINLight02Ref.
Для чего это нужно и как можно использовать?
Во первых для скриптов.
А во вторых для чистоты мода и стабильности игры.
Вроде всё понятно!
Ну раз понятно – пара сделать следующий шаг и создать активатор (включатель).
Для этого в окне Object Window  переходим к  ветке Wopld Objects  далее  Activator далее открываем ветку Clutter и в левой части окна в списке объектов находим – ElectricalSwitch.
Альтернативный путь поиска – в Filter написать Switch.
Затем перетаскиваем выключатель в рабочее окно и устанавливаем где и как надо.
У меня вот так.
http://savepic.net/1103644.jpg
Лампочка, светильник и выключатель.
На этом этапе мы должны изменить ID выключателя на свой и связать наш активатор и лампочку  LinkedRef связью.
Для этого делаем двойной клик ЛКМ по выключателю и в Edit Base меняем ID на свой.
Я вписал так AAAKainLightSwitch. Закрываем окно и соглашаемся с созданием нового объекта .  А в открытом окне Reference  при помощи двух < > стрелок перелистываем вкладки
http://savepic.net/1113887.jpg
до Linked Ref  и открыв её видим вот такое содержимое. Поля Cell и Reference пока пустые – в них  написано None –наш активатор (выключатель) ни с чем связан.
Затем свдинут окрытые окна таким образом что бы было видно лампочку в рабочем окне редактора, нажимаем на длинную кнопку с надписью Select Reference in Render Windows
При этом Рабочее окно редактора станет активным, а указатель мышки измениться на "прицел" красного цвета.
Перемещаем прицел на лампочку, он меняет цвет на белый  - это сигнал того, что с этим объектом связь может быть установлена. Делаем двойной клик ЛКМ – при этом становится активным окно
Reference, в котором мы видим, что поля Cell и Reference теперь заполнены.
http://savepic.net/1064720.jpg
В первом мы видим место, а во втором нашу лампочку.
А в Рабочем окне Редактора мы видим жёлтую стрелочку, которая протянута от активатора (выключателя) к источнику света (лампочке).
Связь мы установили, все условия необходимые для работы скрипта выполнили.
Пришло время добавить скрипт.
Последовательность Ваших действий по добавлению скрипта – точно такая же как в мини уроке Повелитель времени.
Опишу коротко -двойной клик ЛКМ на активаторе – Reference Edit BaseScript New – вписываете или копируете и вставляете текст скрипта – cохраняете скрипт  и закрываете окно Script Edit.
Затем закрываете окно Activator. Далее вновь нажимаете на EditBase и открываете окно Activator. В поле прокрутки Script находим наш AAAKainLightSwitchScript. Жмём OK – закрываем окно Activator и следом закрываем окно Reference.
Пояснение:  Может показаться, что последние два действия закрыть окно, открыть окно – полная бессмыслица.  Не всё так просто!
Пока окно Activator не будет закрыто созданный скрипт не появиться в поле прокрутки Script. Поэтому только так – закрыть и открыть.
Альтернативный путь поиска, просмотра и создания скриптов - через пункт Cameplay
http://savepic.net/1089310.jpg
главного меню редактора  рассмотрим в следующем уроке.
Ну что пришло время проверить в игре, что у нас получилось.
Запускаем игру и видим сначала вот это – тьма.
http://savepic.net/1104657.jpg
Затем «нажимаем на кнопочку…» и видим – свет.
http://savepic.net/1083153.jpg
Здорово!
Или почти здорово – свет есть, а эффекта свечения нет.
Непорядок. Давайте исправим это!
Но как?
И вот тут в «игру» вступает мой, да и не только мой, играющий тренер, член команды «МодТес» с сайта http://mod-tec.ru (да Вы не ошиблись отсюда)  Sergey_Ros - вот с таким советом:
1. Поставьте флажок в Ref-копии лампочки (луковицы, излучателя) напротив пункта "Persistance Reference".
2. Затем выберите необходимый эффект свечения, откройте его Ref-копию, пройдите во вкладку "Enbale Parent" и с помощью кнопки "Select Reference in Render Window" выберите Ref-копию лампочки.
3. Результатом этого станет наследование эффекта свечения состояния родительского объекта (лампочки). Т.е., если лампочка "Enable", то и эффект будет "Enable". И наоборот.

Давайте попробуем реализовать этот совет в «жизни»!
Для начала найдём сам эффект. Открываем ветки в дереве папок окна Object Window  по такому пути Wopld Objects  - StaticEffects- Ambient и в левой части окна находим и выбираем FXGlowSimpFillRnd. Перетаскиваем его в Рабочее окно редактора и устанавливаем на место. Примерно так.
http://savepic.net/1078033.jpg
1 пункт у нас уже выполнен.
Приступаем к выполнению второго - двойной клик по FXGlowSimpFillRnd дальше Edit Base – меняем ID на свой например так  AAAKainFXGlow. Соглашаемся на создание нового объекта. И вписываем в поле Reference Editor IDAAAKainFXGlowRef.
Затем выполняем те же самые действия, что и при создании связи между активатором и лампочкой. Только в этот случае делаем это во вкладке Enbale Parent. Если бокс эффекта будет вам мешать установить связь с лампочкой – сдвиньте его в сторону, а после выбора прицелом лампочки и установления связи, верните на место.
Связь установлена – поля Cell и Reference заполнены.
Закрываем окно Reference.
Сохраняем плагин и идём смотреть в игре.
Дело сделано! И снова все рады и смеются.
А мы поздравляем Вас с очередным званием - Повелитель Света.
Послесловие.
Как вы понимаете и это только пример. Вы можете настроить яркость, радиус, цвет по собственному желанию.
В моём случае настройки такие
http://savepic.net/1054481.jpg
А если вы добавите в скрипт после строки
AAAKainLight01Ref.Enable
строку
PlaySound UIPipBoyLightOn.
А после строки
AAAKainLight01Ref.Disable
строку
PlaySound UIPipBoyLightOff
Тогда при активации (включении и выключении) активатора будет проигрываться звук – в этом примере звук включения и выключения подсветки Пипбоя.
Пробуйте, делайте и всё у Вас получиться!
Пока.

Отредактировано K.A.I.N.48 (26.04.11 06:28:40)

+3

5

Отличная задумка и исполнение. Думаю, поможет многим новичкам понять что скрипты это не так страшно, как кажется на первый взгляд, а ещё страшнее.

0

6

С разрешения автора на сайте опубликованы оба мини-урока: Авторские статьи - K.A.I.N.

0

7

МИНИ УРОК - "ПОВЕЛИТЕЛЬ НЕПРИЯТНОСТЕЙ".

ВВЕДЕНИЕ

В данном уроке на примерах скриптов взрыва и телепортации рассказывается, как доставить игроку немного неприятностей. Скрипты взяты из темы форума "Лаборатории ModTec"  Помощь по скриптам Fallot 3 и Fallout New Vegas.

КАК СДЕЛАТЬ ТАК...

Вопрос: Как сделать так, что бы при включении выключателя (активатора) произошёл взрыв в нужном месте?

Ответ: Написать скрипт "Подрыва" использовав функцию "PlaceAtMe" и разместив в нужном месте объект "ХMarker", на который переместить эффект MediumExplosion.
Затем "вешаем" нижеследующий скрипт на ваш активатор (или добавляем в скрипт нужные строки):

Код:
scn aaaModTecAwesomeExplosionSCRIPT

short DoOnce

Begin OnActivate Player
if (DoOnce == 0)
Activate
aaaModTecAwesomeExplosionREF.PlaceAtMe MediumExplosion 1
set DoOnce to 1
endif
End

Данный скрипт сработает один только один раз из-за условия "if (DoOnce == 0)".
В этом примере скрипт совсем простой, поэтому даже и говорить неудобно традиционное:
- "И тут вы понимаете, что ничего не понимаете". Ну а вдруг!
Давайте разбираться.

РАЗБИРАЕМСЯ.

Для начала давайте рассмотрим сам скрипт и прочитаем его на "человеческом" языке.
В скрипте мы имеем такое.
short DoOnce - непереводимая игра слов! А если серьёзно то short это переменная, в которой будет сохранятся и устанавливаться условие сработал скрипт - 1, или ещё нет - 0. DoOnce это имя этой переменной (можно писать любое, но лучше информативное и понятное для вас).
Дальше командой Begin начинается блок скрипта, а командой End заканчивается.
OnActivate Player - это один из более, чем 30 типов блоков для различных ситуаций.
Например, используемый в этом скрипте тип блока OnActivate - запускается один раз, когда активируется заскриптованный объект (то есть тот объект на котором "висит" скрипт - включается, выключается, обыскивается, берётся  и тп.)
if - (если) эта команда позволяет вам исполнять (или не исполнять) группу скриптовых команд в зависимости от того, истинно ли сравнение, которые вы указываете или нет.
Activate - это команда на активацию объекта
aaaModTecAwesomeExplosionREF - это Ref имя XMarkera (вызывающий объект)
PlaceAtMe - это функция которая помещает указанный объект рядом с вызывающим объектом
MediumExplosion 1 - это указанный объект.
Ну а теперь читаем то что находится в блоке скрипта по русски.
if (DoOnce == 0) ; если переменная DoOnce равна 0 (проверка)
Activate ; активировать объект
aaaModTecAwesomeExplosionREF.PlaceAtMe MediumExplosion 1 ; на маркер переместить эффект, в количестве 1
set DoOnce to 1 ; установить переменную DoOnce в 1
endif ; конец если (проверки).

Как вы видите переменная DoOnce в конце скрипта установлена в 1 и сохранена - следовательно при следующем прочтении скрипта, вот эта проверка if (DoOnce == 0) не будет пройдена и команды Activate и PlaceAtMe выполнены не будут.
Вот таким способом мы ограничили действие скрипта до одного раза.
Прочитали!
Теперь давайте выполним все условия прописанные в скрипте. Их немного - всего три.
Первое - нужен активатор (выключатель.....)
Второе - нужен маркер, точка (место) на которое будет помещён эффект взрыва
Третье - и сам эффект взрыва.
Давайте начнём с места для "неприятностей"! Оно может быть любым и находится, хоть во внешней, хоть во внутренней локации.
Я для ловушки выбрал крыльцо дома, вы можете сделать или выбрать по своему желанию, или исходя из ваших задач в моде.
http://savepic.net/2091634.jpg
И ещё я решил предупредить игрока о том, что пытаясь открыть эту дверь он сильно рискует - повесив плакат "Не влезай - убьёт"
Нам лишней крови не надо! Нам бы только имущество сохранить в целости и сохранности.
Если вы до этого не вносили свои объекты в игру, можете проделать это вместе со мной нажав сейчас на ссылку к дополнению (вставить ссылку, после вставки материала)
"ДЕЛАЕМ ПЛАКАТ".
А если уже умеете, или для вашей ситуации в моде этого не нужно идём дальше!
Для активатора используем тот же самый выключатель из мини урока "Повелитель света" ElectricalSwitch, найдите его используя фильтр окна Object Window и установите в нужном вам месте, а затем измените ID имя на своё.
http://savepic.su/27090.jpg
Маркер находим вписав в Filter слово marker и выбрав внизу писка дерева папок All,
http://savepic.net/2093685.jpg
а затем в списке всех объектов игры со словом marker, выберем xmarker и перенесём в рабочее окно редактора.
Установим где нужно, а затем сделав двойной клик по нему открываем окно Preference
http://savepic.net/2061941.jpg
В котором в поле Reference Editor ID вписываем Ref имя для маркера AAAModTecAwesomeExplosionREF, имя может быть любым, но лучше если оно будет информативным, как в этом примере например
AAA - для удобства поиска
ModTec - кто сделал
AwesomeExplosion - название
ВНИМАНИЕ: В отличие от других объектов менять ID имя у маркера не нужно, просто стандартному маркеру дайте новое Ref имя, так как после смены ID маркера, он перестаёт быть скрытым объектом и становится видимым в игре.
А взрыв нам можно не искать, но для информации - все они расположены в ветке Special Effects -Explosion.
А если всё же вам захочется сделать взрыв посильнее, или изменить сам эффект (свет,звук и тп.) откройте стандартный взрыв, смените ID имя на своё и нажав OK согласитесь на создание нового объекта.
http://savepic.net/2052724.jpg
А уже потом смело меняйте под свои цели.
Ну вот с объектами разобрались, давайте создадим новый скрипт и добавим на активатор. Как это делать через Reference- Edit Base вы знаете из пред идущих мини уроков.
Давайте разберём альтернативный способ через главное меню редактора - тут всё просто Gameplay - Edit Scripts
http://savepic.net/2036340.jpg
Дальше в меню File редактора скриптов выбрать New и вписать, или вставить, предварительно скопированный текст скрипта.
А затем нажать Save.
http://savepic.su/56790.jpg
После этого в рабочем окне сделав двойной клик по активатору (выключателю) в Preference - нажать кнопку Edit Base и в открывшемся окне Activator
http://savepic.su/52617.jpg
В поле прокрутки Script выбрать созданный вами скрипт.
Дело сделано - пришло время проверить вашу работу в игре. Запускаем игру и идёт на место ловушки.
Видим дом выключатель и плакат
http://savepic.su/19789.jpg
"Нажми на кнопку - получишь результат, И твоя мечта осуществится". …(цитата из старинной песни группы Технология). Видимо то же ребята моды делали!
http://savepic.su/42316.jpg
Получили это.
http://savepic.su/29007.jpg
И такой результат - "Вас покалечило, используйте стимулятор, или найдите врача..."
Ну вот и опять все рады и все смеются, или почти все, а урок закончен!
Но...Неприятности какие уж очень маленькие, у нас получились, может всё таки добавим немного!
Добавим!
Добавляем - сначала это
http://savepic.su/61760.jpg
Парочку контейнеров, немножко разного мусора, разбитую машину, дохлого бранимана. и на "сладкое" парочку трупов.
А затем вот это красное...
http://savepic.su/7488.jpg
Ещё один маркер, но только на этот раз XMarkerHeading (отличается от XMarker тем, что задаёт направление расположения NPC) найти можно там же, где и первый.
Нашли, не меняя имя ID вписали имя REF (в моём примере AAAKainXMarkerHeadingRef) поставили на место.
А теперь в скрипт выключателя добавим немного "неприятностей" в виде потери сознания Главным героем и прихода в себя уже на новом, с любовью и заботой, приготовленном нами выше месте. Вот так стал выглядеть скрипт после изменения.

Код:
scn aaaModTecAwesomeExplosionSCRIPT
Short SEnd
short DoOnce
short Stage
float Timer

Begin OnActivate Player
set Stage to 1
if (DoOnce == 0)
Activate
aaaModTecAwesomeExplosionREF.PlaceAtMe MediumExplosion 1
set DoOnce to 1
endif
End

Begin GameMode
if (Stage == 1) && (SEnd == 0)
DisablePlayerControls 1 1 1 1 0 1 1
set Timer to 3
set Stage to 2
elseif (Stage >= 2)
if (Timer > 0)
set Timer to Timer - GetSecondsPassed
else
if (Stage == 2)
Player.AddScriptPackage GSPlayerPassesOut
imod FadeToBlack5sISFX
set Timer to 4
set Stage to 3
else
set Stage to 0
Set Send to 1
Player.RemoveScriptPackage
Player.MoveTo AAAKainXMarkerHeadingRef
EnablePlayerControls
endif
endif
endif
End

Вписываем, или копируем Ctrl C и вставляем Ctrl D вместо старого.
Сохраняем и снова идём в игру смотреть, что вышло.
А вышло отлично - Главный герой после взрыва теряет сознание, а какие то "добрые" люди переносят его с крыльца дома в мусорный ящик за домом. Видимо, что бы не продуло на сквознячке!
Принимайте очередные поздравления - теперь вы "Повелитель неприяностей"!
Что и этого мало! Ну как знаете, но дальше вы без меня, я человек добрый и уже давно сижу и пишу сквозь слёзы. Главного героя жалко!
Если вы после команды Player.RemoveScriptPackage
Вставите команду Player.RemoveItem caps001 99999, то ограбите игрока забрав все крышки.
А если ещё добавите Player.RemoveAllItems, то заберёте всё, что есть в инвентаре.
Ну а если там же добавить команду [ActorID.]StartCombat TargetActorID то один из "добрых людей" укрывший от непогоды Главного героя в контейнер, вернётся и постарается накрыть его тёплым одеялом. Шутка! StartCombat - даже знающим английский только по фильмам, говорит о том, что хорошего ждать просто глупо.
Но об этот в следующем мини уроке.
Пока.
Да! Чуть не забыл. Делайте и всё у вас получится!

Отредактировано K.A.I.N.48 (01.10.11 02:48:34)

0

8

K.A.I.N.48, Также, свои взрывы можно улучшить, например так:

Скрипт

scn aaaBombSCRIPT

float Timer
float timerLimit
short step
short timerOn
short doShockwave1x
short doGlassBurst1x
short controlsLocked
float controlsTimer

begin onLoad

set timerLimit to 1

end

begin onActivate
if IsActionRef player == 1
if step == 0
playgroup forward 0
set step to 1
Activate

elseif step == 2
set controlsTimer to 15
set controlsLocked to 1
DisablePlayerControls
playsound FXExplosionNukeSmall3D
playgroup backward 0
set step to 3
endif
endif
end

begin gameMode

if controlsLocked == 1
if controlsTimer <= 0
set controlsLocked to -1
EnablePlayerControls
else
set controlsTimer to controlsTimer - getSecondsPassed
endif
endif

if step == 1 && isAnimPlaying == 0
playgroup left 0
set step to 2
elseif step == 3 && isAnimPlaying == 0
BombExplosionMarkerRef.placeAtMe BombExplosion
imod MegatonNukeISFX
playgroup backward 1
set timerOn to 1
set Timer to 0

set step to 4

endif

if timerOn == 1

if Timer >= timerLimit
set timerOn to 0
player.stoplook

elseif Timer > 3.11 && doGlassburst1x == 0
set doGlassBurst1x to 1
BombExplosionMarkerRef.placeAtMe BombExplosion
playsound FXExplosionNukeSmall3D

elseif Timer > 3.9 && doShockwave1x == 0
BombExplosionMarkerRef.placeAtMe fakeforceball4000
BombExplosionMarkerRef.placeAtMe BombExplosion
playsound FXExplosionNukeSmall3D
set doShockwave1x to 1

elseif Timer > 4

elseif Timer < timerLimit
set Timer to (Timer + getSecondsPassed)
endif

endif

end

Отредактировано Graf (26.09.11 01:01:04)

0


Вы здесь » Форум «Лабортории Mod-Tec» » Туториалы и статьи » Мини-уроки по скриптам и в картинках (для начинающих)