The Elder Scrolls & Fallout 3 Modding

на главную страницу сайта

Форум Oblivion, Skyrim & Fallout 3/4 Modding

Объявление

У нас есть свой сервер Дискорда. Заходите, пообщаемся.
Господа, те кто пользуются фотохостингом http://uploads.ru/ для размещения изображений. Рекомендую воспользоваться для упрощения загрузки вот этой программой.

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

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


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Вопросы по скриптам в Fallout 3


Вопросы по скриптам в Fallout 3

Сообщений 121 страница 150 из 418

121

Wulf
Исключения все же бывают.

0

122

Не знаю, был ли такой вопрос, но все же спрошу:
Всем нам известен маркер двери! Какой нужно к нему присобачить скрипт, чтобы после определенной стадии квеста дверь приводила в другую локацию? Пример такого "ФЕНОМЕНА" представлен в квесте "возвращение в убежище 101" (не помню как называется). Т. Е. После активации квеста данная локация заменяется на другую.
ЗЫ: Амата - догадалась не называть пароль к двери, чтоб рейдеры не зашли погостить))

0

123

Скорее всего в определенной стадии квеста, одна дверь становится Disable (та дверь, которая была активирована с самого начала и приводила в первую локацию), а другая дверь (которая приводит в другую локацию, изначально является Disable и находится точно в той же точке что и первая) становится Enable
Как все это реализовать в скриптах подсказать не смогу, но в целом описал что должно делаться.

+1

124

Ща попробую обьяснить.
К примеру в игре мы мы выходим из убежища. Нажимаем на дверь и появляется окно загрузки. Но назад вернуться не выходит. Дверь попросту ни на что не реагирует. При определенной стадии квеста дверь все же открывается, но когда заходиш туда, там уже другая локация. Если это то что нужно, то нужно сделать следующее. Бирем две ячейки, соединяем их дверьми-телепортами и размищаем в ячейках. В первой ячейки ставим дверь так как надо, а во второй засуним дверь в недоступное место, а маркер появления игрока разместим в нормальном месте. Разместим во второй ячейки(в той где спрятана дверь) такую же, но в нормальном месте и делаем так что бы она не реагировала на действия игрока, ну или пускай пишет "недоступно". Двойной клик по этой двери и пишем в ID к примеру aaaDoor1. создаем 3 ячейку и соединяем ее со второй нормальным, доступным способом. Ту дверь которая переносит нас из 2 в 3 ставим на то же место где стоит дверь не реагируящяя на действия игрока. Двойной клик по той двери которая переносит нас из 2 в 3 ячейку. В открывшемся меню пишем ID объекта. К примеру aaaDoor2. Ставим галочки на persistens reference и disable. теперь при определённой стадии квеста в результирующих скриптах пишем следующее.

aaaDoor1. Disable
aaaDoor2. Enable

Кажется все. У меня в данный момент нет возможности всё это перепроверить, так что возможно я где то ошибся Если что не понятно, спрашивай.)))

0

125

ANDREIT51B написал(а):

Ща попробую обьяснить.К примеру в игре мы мы выходим из убежища. Нажимаем на дверь и появляется окно загрузки. Но назад вернуться не выходит. Дверь попросту ни на что не реагирует. При определенной стадии квеста дверь все же открывается, но когда заходиш туда, там уже другая локация. Если это то что нужно, то нужно сделать следующее. Бирем две ячейки, соединяем их дверьми-телепортами и размищаем в ячейках. В первой ячейки ставим дверь так как надо, а во второй засуним дверь в недоступное место, а маркер появления игрока разместим в нормальном месте. Разместим во второй ячейки(в той где спрятана дверь) такую же, но в нормальном месте и делаем так что бы она не реагировала на действия игрока, ну или пускай пишет "недоступно". Двойной клик по этой двери и пишем в ID к примеру aaaDoor1. создаем 3 ячейку и соединяем ее со второй нормальным, доступным способом. Ту дверь которая переносит нас из 2 в 3 ставим на то же место где стоит дверь не реагируящяя на действия игрока. Двойной клик по той двери которая переносит нас из 2 в 3 ячейку. В открывшемся меню пишем ID объекта. К примеру aaaDoor2. Ставим галочки на persistens reference и disable. теперь при определённой стадии квеста в результирующих скриптах пишем следующее.
            aaaDoor1. DisableaaaDoor2. Enable
            Кажется все. У меня в данный момент нет возможности всё это перепроверить, так что возможно я где то ошибся Если что не понятно, спрашивай.)))

Я думал про такой расклад, но у меня вот какая вестщ - вход в локацию с двух сторон, то есть по прохождении определенной стадии квеста локация должна измениться (то есть заходишь в локацию а там все нормально, выходишь проходишь опр. стадию квеста, и там все разрушено.), это можно сделать и так как было тобою описано. Однако по прохождении всего квеста, можно будет вернуться к первому входу, и когда перс пройдет через дверь все в локации будет впорядке.

Наверное надо сделать с 1 дверью все наооброт, т.е. когда стадия квеста допустим = 1 то

aaaDoor3(т. е. 1 дверь, не та которая была описана тобой, а 1 вход в локацию). Enable
aaaDoor4(т.е 2 дверь, кот. по выполнении квеста будет образовывать тупик в виде "Недоступно"). Disable

0

126

Ну можно и так.

0

127

Подскажите пожалуйста есть ли где-нибудь список всех(ну или большинства) скриптовых команд fallout 3, а конкретно
можно ли как нибудь заставить персонажа (не игрока) войти в vats ?

0

128

Veles написал(а):

Подскажите пожалуйста есть ли где-нибудь список всех(ну или большинства) скриптовых команд fallout 3

geck.bethsoft.com/index.php/Category:Functions

0

129

Спасибо это то что я искал дальше я уж сам как-нибудь раберусь

0

130

Уже очень долго бьюсь с одной на первый взгляд простой вещью: мне надо, чтобы при наличии у ГГ 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 крышек новый вариант диалога почему-то не появляется...

0

131

Ну тут можно просто сделать условие в диалоге в Condition сделать условие на проверку количества монет
Ставишь туда такие данные:
http://s016.radikal.ru/i336/1012/93/1bb530fc2f49t.jpg

0

132

Не работает...

0

133

Ты присвоил диалог тому с кем говоришь?
Почитай эти туторы в них подробно рассмотрены диалоги и квесты:
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)

0

134

Туториалов читал я много и сделал вроде все правильно (в этом диалоге не один вариант и все остальное работает). Ладно, пока пусть будет без проверки - 150 крышек не так уж и много.

0

135

Пожалуй, это последняя проблема, из-за которой я не могу доделать версию 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-ю кнопку открывается второе сообщение, но тут появляется проблема - кнопки второго окна все равно выполняют функции первого окна. Как привязать второй скрипт ко второму окну?

0

136

Ты введи ещё переменную
short Button1
и сделай
short Button2

в первом Message используй Button1 а во втором Button2

0

137

BloodBear написал(а):

Ну тут можно просто сделать условие в диалоге в Condition сделать условие на проверку количества монет
Ставишь туда такие данные:
http://s016.radikal.ru/i336/1012/93/1bb530fc2f49t.jpg

Тут такое дело. Оно и не будет работать, так как при данных настройках проверяется количество денег у непися, а не у ГГ. Чтобы проверялось у ГГ нужно в поле "Run On" поставить "Target". Тогда будет проверяться у того, кто говорит с неписем.

Опять плохо читаем туторы. Во второй части описан этот момент... :)

Отредактировано Wulf (2011-01-05 19:49:45)

0

138

BloodBear, не помогло - все-равно все по-прежнему.
Wulf, я кстати уже решил эту проблему только не через Кондиции, а скриптом-проверкой в самом диалоге.

0

139

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)

0

140

Ответ для Rus-IP

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

0

141

Вот очень полезный сайт в верхнее окно которого пишем скрипт из Fallout 3 или New Vegas а в нижнем окне скрипт сортируеться выделяються нужным цветом в форме дерева всё и выделяються ошибки в этом же окне =)

Отредактировано BloodBear (2011-01-22 23:53:37)

0

142

Народ помогите прочитал все страницы но так и непонял как двигать предмет, можете пожалуйста дать готовый пример ?

0

143

В смысле двигать предмет? С помощью скриптов? Или просто двигать в редакторе?

0

144

BloodBear, Здраствуй, с редактором хорошо знаком, а вот со скриптами нет, и поэтому мой ответ с помошью скриптов.

0

145

Посмори скрипт который висит на лифте памятника в Fallout 3 там где квсет с тридогнйтом типа тарелку на памятник повесить. там есть скрипт передвижения объекта и гг в пространстве.

Потом мож посмореть скрипт который весит на корабле который ездит в Point Lookout когда первый раз приезжаеш туда там есть такое что корабль вместе с игроком движеться.

0

146

BloodBear, Я бы так и сделал был бы у меня Fallout 3 а щас у меня Fallout NV и я немогу посмотреть те скрипты так как Fallout3  немогу установить, можете подсказать что нибудь ?

0

147

поглядим если найду напишу. :)

0

148

Вот скрипт лифта в монументе Вашингтона:

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

0

149

BloodBear, спасибо

0

150

BloodBear, я прчитал его но многое непонял, а можеш скинуть на примере какой нибудь вещи чтоб она просто двигалась вперёд как я понял из точки "а" в точку "б" и так делала например каждый игровой день (время необизатель) ?

0


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Вопросы по скриптам в Fallout 3