Wulf
Исключения все же бывают.
Вопросы по скриптам в Fallout 3
Сообщений 121 страница 150 из 418
Поделиться1212010-07-14 00:08:34
Поделиться1222010-07-18 16:47:02
Не знаю, был ли такой вопрос, но все же спрошу:
Всем нам известен маркер двери! Какой нужно к нему присобачить скрипт, чтобы после определенной стадии квеста дверь приводила в другую локацию? Пример такого "ФЕНОМЕНА" представлен в квесте "возвращение в убежище 101" (не помню как называется). Т. Е. После активации квеста данная локация заменяется на другую.
ЗЫ: Амата - догадалась не называть пароль к двери, чтоб рейдеры не зашли погостить))
Поделиться1232010-07-18 17:26:01
Скорее всего в определенной стадии квеста, одна дверь становится Disable (та дверь, которая была активирована с самого начала и приводила в первую локацию), а другая дверь (которая приводит в другую локацию, изначально является Disable и находится точно в той же точке что и первая) становится Enable
Как все это реализовать в скриптах подсказать не смогу, но в целом описал что должно делаться.
Поделиться1242010-07-19 16:54:56
Ща попробую обьяснить.
К примеру в игре мы мы выходим из убежища. Нажимаем на дверь и появляется окно загрузки. Но назад вернуться не выходит. Дверь попросту ни на что не реагирует. При определенной стадии квеста дверь все же открывается, но когда заходиш туда, там уже другая локация. Если это то что нужно, то нужно сделать следующее. Бирем две ячейки, соединяем их дверьми-телепортами и размищаем в ячейках. В первой ячейки ставим дверь так как надо, а во второй засуним дверь в недоступное место, а маркер появления игрока разместим в нормальном месте. Разместим во второй ячейки(в той где спрятана дверь) такую же, но в нормальном месте и делаем так что бы она не реагировала на действия игрока, ну или пускай пишет "недоступно". Двойной клик по этой двери и пишем в ID к примеру aaaDoor1. создаем 3 ячейку и соединяем ее со второй нормальным, доступным способом. Ту дверь которая переносит нас из 2 в 3 ставим на то же место где стоит дверь не реагируящяя на действия игрока. Двойной клик по той двери которая переносит нас из 2 в 3 ячейку. В открывшемся меню пишем ID объекта. К примеру aaaDoor2. Ставим галочки на persistens reference и disable. теперь при определённой стадии квеста в результирующих скриптах пишем следующее.
aaaDoor1. Disable
aaaDoor2. Enable
Кажется все. У меня в данный момент нет возможности всё это перепроверить, так что возможно я где то ошибся Если что не понятно, спрашивай.)))
Поделиться1252010-08-04 10:55:12
Ща попробую обьяснить.К примеру в игре мы мы выходим из убежища. Нажимаем на дверь и появляется окно загрузки. Но назад вернуться не выходит. Дверь попросту ни на что не реагирует. При определенной стадии квеста дверь все же открывается, но когда заходиш туда, там уже другая локация. Если это то что нужно, то нужно сделать следующее. Бирем две ячейки, соединяем их дверьми-телепортами и размищаем в ячейках. В первой ячейки ставим дверь так как надо, а во второй засуним дверь в недоступное место, а маркер появления игрока разместим в нормальном месте. Разместим во второй ячейки(в той где спрятана дверь) такую же, но в нормальном месте и делаем так что бы она не реагировала на действия игрока, ну или пускай пишет "недоступно". Двойной клик по этой двери и пишем в ID к примеру aaaDoor1. создаем 3 ячейку и соединяем ее со второй нормальным, доступным способом. Ту дверь которая переносит нас из 2 в 3 ставим на то же место где стоит дверь не реагируящяя на действия игрока. Двойной клик по той двери которая переносит нас из 2 в 3 ячейку. В открывшемся меню пишем ID объекта. К примеру aaaDoor2. Ставим галочки на persistens reference и disable. теперь при определённой стадии квеста в результирующих скриптах пишем следующее.
aaaDoor1. DisableaaaDoor2. Enable
Кажется все. У меня в данный момент нет возможности всё это перепроверить, так что возможно я где то ошибся Если что не понятно, спрашивай.)))
Я думал про такой расклад, но у меня вот какая вестщ - вход в локацию с двух сторон, то есть по прохождении определенной стадии квеста локация должна измениться (то есть заходишь в локацию а там все нормально, выходишь проходишь опр. стадию квеста, и там все разрушено.), это можно сделать и так как было тобою описано. Однако по прохождении всего квеста, можно будет вернуться к первому входу, и когда перс пройдет через дверь все в локации будет впорядке.
Наверное надо сделать с 1 дверью все наооброт, т.е. когда стадия квеста допустим = 1 то
aaaDoor3(т. е. 1 дверь, не та которая была описана тобой, а 1 вход в локацию). Enable
aaaDoor4(т.е 2 дверь, кот. по выполнении квеста будет образовывать тупик в виде "Недоступно"). Disable
Поделиться1262010-08-04 17:52:02
Ну можно и так.
Поделиться1272010-10-03 19:25:39
Подскажите пожалуйста есть ли где-нибудь список всех(ну или большинства) скриптовых команд fallout 3, а конкретно
можно ли как нибудь заставить персонажа (не игрока) войти в vats ?
Поделиться1282010-10-03 20:14:50
Подскажите пожалуйста есть ли где-нибудь список всех(ну или большинства) скриптовых команд fallout 3
geck.bethsoft.com/index.php/Category:Functions
Поделиться1292010-10-04 15:45:10
Спасибо это то что я искал дальше я уж сам как-нибудь раберусь
Поделиться1302010-12-24 17:34:28
Уже очень долго бьюсь с одной на первый взгляд простой вещью: мне надо, чтобы при наличии у ГГ 150 крышек (или больше) появлялся новый вариант в диалоге с NPC.
Я последовал совету BloodBear и создал скрипт:
scn PlayerCapsSCRIPT Begin GameMode short PlayerCapsCOUNT if ( PlayerCapsCOUNT == 0 ) if ( Caps001 >= 150) Set PlayerCapsCOUNT to 1 endif endif
Затем установил кондицию этого варианта ответа диалога с неписем:
GetQuestVariable Quest: 'PlayerCapsQUEST', PlayerCapsCOUNT == 1.0000
Но при наличии в моем инвентаре более 150 крышек новый вариант диалога почему-то не появляется...
Поделиться1322010-12-24 19:03:22
Не работает...
Поделиться1332010-12-24 19:06:42
Ты присвоил диалог тому с кем говоришь?
Почитай эти туторы в них подробно рассмотрены диалоги и квесты:
http://modder.ucoz.ru/load/7-1-0-83
http://modder.ucoz.ru/load/sozdanie_pol … /7-1-0-128
http://modder.ucoz.ru/load/sozdanie_svo … /7-1-0-119
http://modder.ucoz.ru/load/7-1-0-92
http://modder.ucoz.ru/load/7-1-0-99
Отредактировано BloodBear (2010-12-24 19:09:12)
Поделиться1342010-12-24 22:27:51
Туториалов читал я много и сделал вроде все правильно (в этом диалоге не один вариант и все остальное работает). Ладно, пока пусть будет без проверки - 150 крышек не так уж и много.
Поделиться1352011-01-05 10:45:29
Пожалуй, это последняя проблема, из-за которой я не могу доделать версию 1.2 моего мода. А заключается она вот в чем: при активации объекта игроку выводится окно с 9-ю вариантами (кнопками), каждая кнопка имеет свою функцию, но при нажатии на 9-ю кнопку должно появится другое окно, с другими кнопками и другими функциями, я написал:
scn ABMessageSCRIPT
short Button
short item1
short item2
short item3
short item4
short item5
Begin OnActivate
ShowMessage AMessage1
End
Begin GameMode
set Button to GetButtonPressed
if button == 0
Далее остальные функции первого окна...
elseif button == 9
ShowMessage BMessage2
endif
End
Begin GameMode
set Button to GetButtonPressed
if button == 0
ShowMessage AMessage1
elseif button == 1
Далее остальные функции второго окна...
End
В первом сообщении все работает как надо, при нажатии на 9-ю кнопку открывается второе сообщение, но тут появляется проблема - кнопки второго окна все равно выполняют функции первого окна. Как привязать второй скрипт ко второму окну?
Поделиться1362011-01-05 12:15:25
Ты введи ещё переменную
short Button1
и сделай
short Button2
в первом Message используй Button1 а во втором Button2
Поделиться1372011-01-05 19:41:37
Ну тут можно просто сделать условие в диалоге в Condition сделать условие на проверку количества монет
Ставишь туда такие данные:
http://s016.radikal.ru/i336/1012/93/1bb530fc2f49t.jpg
Тут такое дело. Оно и не будет работать, так как при данных настройках проверяется количество денег у непися, а не у ГГ. Чтобы проверялось у ГГ нужно в поле "Run On" поставить "Target". Тогда будет проверяться у того, кто говорит с неписем.
Опять плохо читаем туторы. Во второй части описан этот момент...
Отредактировано Wulf (2011-01-05 19:49:45)
Поделиться1382011-01-06 19:33:11
BloodBear, не помогло - все-равно все по-прежнему.
Wulf, я кстати уже решил эту проблему только не через Кондиции, а скриптом-проверкой в самом диалоге.
Поделиться1392011-01-08 13:35:36
Progruzovik, нужно сделать примерно так:
short Button1 short Button2 short CurMsg Begin OnActivate ShowMessage YourMessage1 Set CurMsg to 1 End Begin GameMode if (CurMsg == 1) Set Button1 to GetButtonPressed if (Button1 < 0) Return elseif (Button1 == 0) ; действие на кнопке 1 elseif (Button1 == 1) ; действие на кнопке 2 ; так до восьмой кнопки elseif (Button1 == 9) Set CurMsg to 2 ShowMessage YourMessage2 endif endif if (CurMsg == 2) Set Button2 to GetButtonPressed if (Button2 < 0) Return elseif (Button2 == 0) ; действие для кнопки 1 ; и так далее endif endif End
Отредактировано Sergey_Ros (2011-01-08 13:38:44)
Поделиться1402011-01-08 14:24:49
Ответ для Rus-IP
Есть 2 двери, 1 переключатель, нужно, чтобы при активации переключателя обе двери закрывались и блокировались на ключ, а через 8 сек. обе разблокировались и открылась одна из них.
Door1REF - Ref-копия первой двери
Door2REF - Ref-копия второй двери
Скрипт вешать на активатор (переключатель)
short State float Timer Begin OnActivate if (State == 0) Set State to 1 Activate endif End Begin GameMode if (State == 1) if (Door1REF.GetOpenState == 1) ; если дверь открыта Door1REF.SetOpenState 0 ; закрываем ее elseif (Door1REF.GetOpenState == 3) && (Door1REF.GetLockLevel < 255) ; если дверь закрыта и ее можно открыть Door1REF.Lock 255 ; делаем ее недоступной к открытию endif if (Door2REF.GetOpenState == 1) Door2REF.SetOpenState 0 elseif (Door2REF.GetOpenState == 3) && (Door2REF.GetLockLevel < 255) Door2REF.Lock 255 endif if (Door1REF.GetLockLevel == 255) && (Door1REF.GetLockLevel == 255) ; если обе двери недоступны к открытию Set Timer to 8 ; устанавливаем таймер на 8 секунд Set State to 2 endif elseif (State == 2) if (Timer > 0) Set Timer to Timer - GetSecondsPassed else ; по прошествии 8 секунд Door2REF.Unlock ; снимаем замок со второй двери if (Door2REF.GetLocked == 0) ; если дверь не заперта Door2REF.SetOpenState 1 ; открываем ее (проигрывается анимация) Set State to 3 endif endif endif End
Поделиться1412011-01-22 23:51:13
Вот очень полезный сайт в верхнее окно которого пишем скрипт из Fallout 3 или New Vegas а в нижнем окне скрипт сортируеться выделяються нужным цветом в форме дерева всё и выделяються ошибки в этом же окне =)
Отредактировано BloodBear (2011-01-22 23:53:37)
Поделиться1422011-01-25 20:42:58
Народ помогите прочитал все страницы но так и непонял как двигать предмет, можете пожалуйста дать готовый пример ?
Поделиться1432011-01-25 20:49:16
В смысле двигать предмет? С помощью скриптов? Или просто двигать в редакторе?
Поделиться1442011-01-26 02:57:24
BloodBear, Здраствуй, с редактором хорошо знаком, а вот со скриптами нет, и поэтому мой ответ с помошью скриптов.
Поделиться1452011-01-26 12:48:07
Посмори скрипт который висит на лифте памятника в Fallout 3 там где квсет с тридогнйтом типа тарелку на памятник повесить. там есть скрипт передвижения объекта и гг в пространстве.
Потом мож посмореть скрипт который весит на корабле который ездит в Point Lookout когда первый раз приезжаеш туда там есть такое что корабль вместе с игроком движеться.
Поделиться1462011-01-26 15:30:35
BloodBear, Я бы так и сделал был бы у меня Fallout 3 а щас у меня Fallout NV и я немогу посмотреть те скрипты так как Fallout3 немогу установить, можете подсказать что нибудь ?
Поделиться1472011-01-26 15:45:39
поглядим если найду напишу.
Поделиться1482011-01-26 16:09:39
Вот скрипт лифта в монументе Вашингтона:
scn WashingtonMonumentElevatorLowerLevelInnerScript
short Up
short ButtonPress
short MovePlayer
short DoorAnim
float DoorTimer
begin onActivate
if ( ElevatorShaft.isanimplaying == 0 )
if ( WashDoorBase01.isanimplaying == 0 )
if Up == 0
WashDoorCollision.Enable
WashDoorBase01.playgroup Backward 1
set DoorAnim to 1
else
ElevatorShaft.playgroup Backward 1
WashEshaftLight01REF.playgroup Backward 1
WashEshaftLight02REF.playgroup Backward 1
WashEshaftLight03REF.playgroup Backward 1
WashingMonumentElevatorInsidePanel.playgroup Backward 1
PlaySound AMBElevatorMonument2D
REFWashingtonElevatorEnableDisable.Enable
WashDoorBase01.playgroup Right 1
Set ButtonPress to 1
Set MovePlayer to 0
Set Up to 0
endif
endif
endif
End
begin gamemode
if (DoorAnim == 1)
if ( WashDoorBase01.isanimplaying == 0 )
ElevatorShaft.playgroup Forward 1
WashEshaftLight01REF.playgroup Forward 1
WashEshaftLight02REF.playgroup Forward 1
WashEshaftLight03REF.playgroup Forward 1
WashDoorBase01.playgroup Left 1
WashingMonumentElevatorInsidePanel.playgroup Forward 1
PlaySound AMBElevatorMonument2D
REFWashingtonElevatorEnableDisable.Disable
set Up to 1
set DoorAnim to 2
endif
endif
if ( ButtonPress == 1 )
if ( ElevatorShaft.isanimplaying == 0 )
WashDoorBase01.playgroup Forward 1
Set Up to 0
Set DoorAnim to 0
Set ButtonPress to 0
endif
endif
if ( MovePlayer == 0 )
if ( ElevatorShaft.isanimplaying == 0 )
if ( WashDoorBase01.isanimplaying == 0 )
if ( Up == 1 )
WashDoorCollision.Disable
Player.Moveto MQ02ElevatorExit
set MovePlayer to 1
endif
endif
endif
endif
end
Поделиться1492011-01-26 16:10:00
BloodBear, спасибо
Поделиться1502011-01-26 17:29:43
BloodBear, я прчитал его но многое непонял, а можеш скинуть на примере какой нибудь вещи чтоб она просто двигалась вперёд как я понял из точки "а" в точку "б" и так делала например каждый игровой день (время необизатель) ?