Готовые скрипты для Fallout 3, Fallout NV
| |
KAIN | Дата: Пятница, 29.07.2011, 07:35 | Сообщение # 1 |
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
| В этой теме буду выкладывать свои скрипты и скрипты людей делавших их мне на других сайтах, естественно "чужие" сложные скрипты с указанием автора. Несколько скриптов ещё не добавлены в Оглавление - сортировщик, серии атак по таймеру ...
ОГЛАВЛЕНИЕ
Таймеры
ДВЕРИ
1. Скрипт открывания и закрывания дверей в зависимости от времени суток. Скрипт 2. Скрипт закрывания двери и атаки ГГ охранником, если у него в руках появилось оружие.Скрипт 3. Скрипт закрывания двери , в зависимости от времени суток на замок (на ключ). Скрипт
ОРУЖИЕ
1. Скрипт начала атаки ГГ если он не выполнить приказ и не уберёт оружие в течении 5 секунд...Скрипт 2 Скрипт атак на ГГ или место или NPC пока ГГ находится в зоне триггера Скрипт
РАДИОСТАНЦИИ И ТП
1. Скрипт включения радиостанции кнопкой активатора Скрипт
БРОНЯ
1. Скрипт запрета одеть шлем, если не одета спец. броня Скрипт
АКТИВАТОРЫ
КВЕСТЫ
1. Скрипт установки стадии квеста, при достижении NPC (Creatures) определённого места. Скрипт 2 Скрипт установки стадии, при наличии предмета в инвентаре игрока Скрипт
|
|
| |
KAIN | Дата: Вторник, 02.08.2011, 08:21 | Сообщение # 2 |
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
| Скрипт атак на ГГ или место или NPC пока ГГ находится в зоне триггера Vren, Привет! Не прошло и полгода! Шутка. Тебе повезло, что я случайно познакомился с Hedge и SpalnyVagon, без их помощи я бы этот скрипт для тебя не смог сделать. Так, что если встретишь их на Пустоши обязательно поделись патронами и едой! Ну или как там в Fallout 3! Вот сам скрипт
Code scn AAAKainAttackScript short StartAttack float fTimer short e1 short e2 short e3 short DoNotEnter
Begin OnTriggerEnter Player Set fTimer to 60 If DoNotEnter == 0 Set DoNotEnter to 1 Set StartAttack to 1 Set e1 to 0 Set e2 to 0 Set e3 to 0 EndIf End
Begin GameMode If Getdistance Player >= 8000 Set DoNotEnter to 0 EndIf if StartAttack == 1 Set fTimer to (fTimer - GetSecondsPassed) if (fTimer < 20) && (e1 == 0) AAAKainXMarkerRef.PlaceAtMe AAAKain188MercA 1 5 0 ;пошла первая группа Set e1 to 1 Endif if (fTimer > 20) && (Ftimer<40) && (e2 == 0) AAAKainXMarkerRef.PlaceAtMe AAAKain188MercB 1 5 0 ;пошла вторая группа Set e2 to 1 Endif if (fTimer > 40) && (e3 == 0) AAAKainXMarkerRef.PlaceAtMe AAAKain188MercC 1 5 0 ;пошла третья группа Set e3 to 1 Endif If (e1+e2+e3) == 3 Set StartAttack to 0 EndIf EndIf End
Для его работы ты должен создать всё что я писал выше. 1 Три группы атакующих (если хочешь, что бы все были в разной одежде и с разным оружием) AAAKainXMarkerRef.PlaceAtMe AAAKain188MercA01 1 5 0 AAAKainXMarkerRef.PlaceAtMe AAAKain188MercA02 1 5 0 AAAKainXMarkerRef.PlaceAtMe AAAKain188MercA03 1 5 0 И так далее И вписать ниже AAAKainXMarkerRef.PlaceAtMe AAAKain188MercA 1 5 0
Либо просто изменить вот здесь первую цифру 1 на нужное количество членов группы AAAKainXMarkerRef.PlaceAtMe AAAKain188MercA 1 5 0 - на 5 например 5 5 0 ( будут все одинаковые) 2 Поставить триггер и маркер появления Лучше всего поставить маркер не в прямой видимости игрока (иначе он будет видеть как из ничего возникают нападающие) За большим камнем наприм, или грузовиком (фурой), забором, домом и тп. Но маркер от триггера ставить далеко нельзя (не будут атаковать пока не увидят) Хотя можешь создать для них пакет AI и там в кондициях ввести команду StartCombat Player - должно сработать. Время появления регулируй установкой таймера Set fTimer to 60 - 60 это всё время до нуля. Минута - можешь сделать 120 и 180 - сам подбирай в зависимости от величины и силы отрядов нападения и охраны. if (fTimer > 40) здесь промежуток когда будет атаковать конкретная группа. В зависимости от величины таймера то же меняй. Например для последней if (fTimer < 20) было if (fTimer < 60) стало последняя группа будет атаковать когда таймер станет мегьше 60 секунд. Для первой if (fTimer > 170) первая начнёт атаку через 10 секунд после входа в триггер. Вроде всё! Пробуй, если что спрашивай. Пока.
|
|
| |
Graf | Дата: Пятница, 12.08.2011, 11:18 | Сообщение # 3 |
Маршал
Группа: Модераторы
Сообщений: 106
Статус: Offline
| Скрипт сортировки предметов:
Реализуется это так: Пример с журналами. Создаем новый Form List с уникальным ID (например aaMagazineFormList). Перетаскиваем все журналы их всего 14 (Editor ID у них начинается с Magazine) сохраняем. Создаем активатор или терминал (aaMagazineSorter). Создаем контейнер с уникальным ID (aaMagazineBox) и помещаем его куда вам надо в мир Вегаса, присваиваем ему Reference Editor ID (aaMagazineBoxREF). Пишем скрипт:
scn aaMagazineSortSCRIPT
short choice short FormListcount
begin OnActivate if ( isActionRef Player ) set choice to 1 ShowMessage aaMagazineSortMsg endif end
begin GameMode if (choice) Set choice to GetButtonPressed if ( choice ==0 )
;Magazine set FormListcount to player.GetItemCount aaMagazineFormList if ( FormListcount > 0) Player.RemoveItem aaMagazineFormList FormListcount 1 aaMagazineBoxREF.AddItem aaMagazineFormList FormListcount set FormListcount to 0 endif endif if choice == 2 ;exit endif endif endif end
Находим в созданом активаторе (aaMagazineSorter) наш Скрипт (aaMagazineSortSCRIPT). Сохраняемся и проверяем в игре. У меня все работает. Если что то не ясно задавайте вопросы, чем могу помогу. Спасибо за внимание.
Сообщение отредактировал Graf - Пятница, 12.08.2011, 11:19 |
|
| |
KAIN | Дата: Четверг, 15.09.2011, 22:11 | Сообщение # 4 |
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
| Скрипт на закрывание и открывание дверей кнопками.
Code scn AAAKainAutoDoor01SwitchScript
short mode ref doorRef begin onActivate if (IsActionRef player == 1 ) if (mode == 0) activate set mode to 1
endif endif end
begin gameMode set doorRef to GetLinkedRef doorRef.activate doorRef end
Скрипт "вешается" на выключатель. Выключатель и дверь должны быть связаны Linked связью.
|
|
| |
Graf | Дата: Среда, 21.09.2011, 01:18 | Сообщение # 5 |
Маршал
Группа: Модераторы
Сообщений: 106
Статус: Offline
| Скрипт на автоматически открываемые/закрываемые двери:
Code ref myLink
Begin onTriggerEnter set myLink to getLinkedRef myLink.setOpenState 1 End
Begin onTriggerLeave set myLink to getLinkedRef myLink.setOpenState 0 End
Делается это через триггер, связываете Linked триггера с дверью, а Linked двери с триггером. Где начинается триггер, от туда дверь начнёт открываться, как только выйдете с триггера, дверь закроется, то есть примерно это должно выглядеть так:
Сообщение отредактировал Graf - Среда, 21.09.2011, 01:19 |
|
| |
KAIN | Дата: Воскресенье, 02.10.2011, 04:34 | Сообщение # 6 |
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
| Скрипт на действие по таймеру В данном случае на включение и выключение лампочки с интервалом в 10 секунд scn AAAKainTimerScript short doOnce float timer
begin gameMode
if ( doOnce == 0 ) Set timer to 20 Set doOnce to 1 elseif ( doOnce == 1 ) if timer > 10 set timer to timer - GetSecondsPassed else Set doOnce to 2 Enable endif elseif ( doOnce == 2 ) if timer > 0 set timer to timer - GetSecondsPassed else Set doOnce to 0 Disable endif endif end Скрипт "висит" на самой лампочке (луковице) В Set timer to 20 - устанавливайте нужное вам общее время А в проверке условия if timer > 10 устанавливайте нужное время переключения
|
|
| |
KAIN | Дата: Воскресенье, 02.10.2011, 15:08 | Сообщение # 7 |
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
| Ещё один скрипт таймера - но здесь событие запускается через промежуток времени после активации объекта (открытие двери, обыскивание трупа, взятие предмета и тп.) Скрипт "вешается" на активируемый предмет scn AAAActivatorTimerScript short doOnce float Timer Begin OnActivate if (doOnce == 0) set doOnce to 1 set Timer to 10 ; это число секунд Activate ; чтобы сработала стандартная анимация активации endif End Begin GameMode if (Timer > 0) && (doOnce == 1) set Timer to (Timer - GetSecondsPassed) elseif (doOnce == 1) Showmessage AAAKainMessage ; это само действие - выдача сообщения set doOnce to 0 endif End
|
|
| |
KAIN | Дата: Понедельник, 03.10.2011, 01:55 | Сообщение # 8 |
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
| Скрипт появления вещи в мире, при добавлении в контейнер игрока предмета.
scn AAAKainTableDDD Short doonce Begin OnActivate Player if (doonce ==0) if (player.GetItemCount AAAKainArmorFiendHelmet > 0) Set doonce to 1 endif endif end
Begin GameMode if (doonce == 1) AAAKainAppleRef.Enable Set doonce to 0 endif end
AAAKainArmorFiendHelmet - шлем AAAKainAppleRef - яблоко, которое появится, там где вы его поставите в редакторе. В Preference яблока галка Initialy Disable (отображение отключено) должна быть включена.
|
|
| |
KAIN | Дата: Понедельник, 03.10.2011, 02:10 | Сообщение # 9 |
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
| Скрипт открывания и закрывания дверей по текущему времени суток
scn AAASOWindowDoorScript
Begin GameMode If GetCurrentTime >= 22.00 || GetCurrentTime <= 8.00 AAASOWindowDoorRef.SetOpenState 0 else GetCurrentTime >= 8.00 || GetCurrentTime <= 22.00 AAASOWindowDoorRef.SetOpenState 1 endif end
В нашем моде этот скрипт был на защитном жалюзи, которое опускалось и закрывало стекло на ночь. Скрипт "вешается" на саму дверь AAASOWindowDoorRef
|
|
| |
KAIN | Дата: Понедельник, 03.10.2011, 02:19 | Сообщение # 10 |
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
| Скрипт на открытие и закрытие двери, если у игрока в руках оружие и расстояние до него меньше 1024 единиц.
scn AAASOTraderTableWindowScript
Begin GameMode If player.IsWeaponOut == 1 && GetDistance player <= 1024 AAASOTraderTableWindowRef.SetOpenState 0 AAASONPCShenRef.StartCombat player else player.IsWeaponOut == 0 AAASOTraderTableWindowRef.SetOpenState 1 endif end
В нашем моде стоял на защитной стеклянной перегородке у торговца. Помимо опускания перегородки, игрок атаковался охранником AAASONPCShenRef.StartCombat player AAASONPCShenRef - Ref копия NPC StartCombat player - команда на атаку. Можете убрать, или отключить - поставив ; перед строчкой ;AAASONPCShenRef.StartCombat player - вот так
|
|
| |
|