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

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

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


Вы здесь » Форум «Лабортории Mod-Tec» » G.E.C.K. Community » Помощь по скриптам Fallout 3 и Fallout: New Vegas


Помощь по скриптам Fallout 3 и Fallout: New Vegas

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

1

Помощь по скриптам Fallout 3 и Fallout: New Vegas

В этой теме вы можете задавать любые вопросы касательно скриптов в играх Fallout 3 и Fallout: New Vegas.

Внимание!
Вопросы о редакторе G.E.C.K. следует обсуждать в соседней теме - помощь по редактору G.E.C.K.

0

2

To K.A.I.N.48

K.A.I.N.48 написал(а):

Нужно что бы это срабатывало только один раз при входе игрока в триггер.

Скрипт будет выглядеть так:

Код:
scn AAAMGGipnosGreeterActivatorSCRIPT

short sDoOnce

Begin OnTriggerEnter player
if (sDoOnce == 0)
    AAAMGGipnosARef.startconversation player greeting
    Set sDoOnce to 1
endif
End

Скрипт для радиостанции скоро будет.

0

3

Sergey_Ros, Приветствую тебя о великий и ужасный Повелитель неписей! Шутка.
Привет!
Я по аналогии с твоим скриптом сделал скрипт на включение радиостанции

Свернутый текст

scn AAAMGRadioActivatorSCRIPT

short sDoOnce

Begin OnTriggerEnter AAAMGGipnosARef
if (sDoOnce == 0)
    AAAMGRadioFMRef.SetBroadcastState 1
    Set sDoOnce to 1
endif
End

Может меня поздравить Я теперь Повелитель Soundов!
А вот Повелителем времени при помощи этого скрипта стать не могу, как его не курочил.

Свернутый текст

scn TimerSCRIPT

short sFlag
float fTimer

Begin OnActivate    ; срабатывает при активации - здесь менял на Begin OnTriggerEnter AAAMGGipnosARef
       
if (Flag == 0)
    Set sFlag to 1
    Set fTimer to 5 ; это число секунд
    Activate ; чтобы сработала стандартная анимация активации - это убирал
endif
End

Begin GameMode

if (fTimer > 0) && (sFlag == 1)
    Set fTimer to (fTimer - GetSecondsPassed)
elseif (sFlag == 1)
    RewardKarma 100 ; здесь вписывается итоговое событие - здесь менял на  AAAMGRadioFMRef.SetBroadcastState 1
Set sFlag to 2
    endif
End

Это я к тому надо учить OSFM v1.2 что бы понять, что такое блоки и команды, и писать самому начиная с простых - постепенно их усложняя.
Вообще если у тебя со свободным временем напряжённо. Можешь не писать скрипт на таймер - потому что можно попробовать поставить ещё один Idle Маркер и сделать там нужную анимацию с задержкой времени, а потом заставить непися перейти на триггер- чуть в сторону. Заметно практически ни чего не будет.
Так что так сделать наверное проще. Но с таймером - правильней и красивее!
Пока!

Отредактировано K.A.I.N.48 (29.12.10 16:24:29)

0

4

Тут нужно дописать букву

K.A.I.N.48 написал(а):

scn TimerSCRIPT
short sFlag
float fTimer
Begin OnActivate    ; срабатывает при активации - здесь менял на Begin OnTriggerEnter AAAMGGipnosARef
       
if (sFlag == 0)
    Set sFlag to 1
    Set fTimer to 5 ; это число секунд
    Activate ; чтобы сработала стандартная анимация активации - это убирал
endif
End

0

5

K.A.I.N.48 написал(а):

Повелитель неписей!

Если бы я был Повелителем, эти... мхм... ошибки программного кода не съели бы 4 (четыре!) месяца работы над "Надеждами".

K.A.I.N.48 написал(а):

Я теперь Повелитель Soundов!

Хорошее начало. Продолжайте в том же духе.

Собственно, я так и не не понял, нужен ли вам скрипт? Вам нужно добавить задержку времени для скрипта включения радиостанции?

0

6

MuxauJl, Привет! И спасибо тебе за подсказку - действительно это была буква S в sFlag. Но если бы знал, сколько я её искал и каким способом нашёл - упал бы со смеху со стула, если сидишь!
Я скопировал оба скрипта, вычистил от лишнего. А после того, как ничего не нашёл стал сравнивать размеры файлов. Действительно твой был больше на 1 байт. Только тогда я понял, что это не шутка  - сразу увидел. Вот так!
Пока.

0

7

K.A.I.N.48, у вас поистине неординарные методы решения проблем! Мне понравился этот способ.

Так что на счет скрипта?

0

8

Sergey_Ros, Извини! Я там паралельно десять дел делаю. Сегодня надо было выкладывать мод на сайт, оказалось звуковики вместо 15 поздравлений записали только 5. Такая неприятность. Теперь придётся менять диалоги, у нескольких неписей - выдумывать, что нибудь про нападение рейдеров, пропажу записей, похмелье после вчерашнего шефского концерта на базе НКР и т.п. Сейчас в Аське с ними ругаюсь.
А таймер не делай, я ещё не пробывал, тот сверху исправленный Михаилом, но думаю он будет работать. Так как если уж он недостачу буквы нашёл, то уж явную плюху вряд ли просмотрел бы. Да и скрипт таймера я взял у вас на Паноктиуме - уверен вы бы не рабочий не выложили.
Пока! Ещё увидимся.

0

9

Сор за тупой вопрос, но подскажите скрипт на автоматическое добавление предмета в инвертарь. Заранее спасибо :)

0

10

Если речь о единоразовом добавлении предмета в инвентарь после запуска игры с подключённым модом, то нужно создать новый квест (Object Window => Actor Data => Quest => ПКМ по любому из существующих квестов => New, заполнить поля ID, Priority - 100 и поставить галочку Start Game Enabled) и на него повесить скрипт:

Код:
scn aaaNewSCRIPT

short sDoOnce

Begin GameMode

     if (sDoOnce == 0)
          Player.Additem Caps001 1 ;  вот сама строчка, добавляющая игроку 1 крышку
          Set sDoOnce to 1
     endif

End

Важно! В поле Script Type нужно выбрать Quest.

0

11

А я бы еще добавил остановку квеста после добавления нужных предметов (если квест больше ни для чего не требуется), просто на всякий случай, чтобы при отключении мода в сейве не осталось следов незавершенного квеста. Причем тогда, в принципе, не нужна переменная DoOnce, ибо строчки квестового скрипта выполнятся один раз, до его остановки. 
Это выглядело бы так:

Код:
scn DistributionQuestScript

Begin GameMode

     Player.Additem Caps001 1 ;  вот сама строчка, добавляющая игроку 1 крышку
     StopQuest DistributionQuest

End

+1

12

Большое спасибо!
И ещё, мне нужен скрипт прикручивающий эффект кошеглаза к шлему любому. Сделайте плиз :)
Или лучше дайте туториал по скриптам. я в них вообще ничего не понимаю почти :D

Отредактировано collapse (08.01.11 17:08:57)

0

13

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

лучше дайте туториал по скриптам

Могу посоветовать начать с этого: Туториал по скриптингу для начинающих

А дальше, например, как делал я, заниматься практикой и разбором других скриптов, написанных как Bethesda, так и модмейкерами.

0

14

А потом скачать вот это http://www.wiki.rumor.ru/images/9/94/OSFM_v1.2.0.7z
Прочитать и вперёд Сюда
Ну и как сказал Sergey_Ros:

А дальше, например, как делал я, заниматься практикой и разбором других скриптов, написанных как Bethesda, так и модмейкерами.

Отредактировано Wulf (08.01.11 22:22:29)

+1

15

Все привет народ! мне нужна помощь в написании  нескольких скриптов! для начала нужен скрипт для моего прошлого мода bionoids хочу добавить несколько возможностей туда!  Мне нужно чтобы  когда я отдавал приказ одному из своих бионойдов о охране периметра на открытой поверхности то помимо  смены паскейдажа еще и активировался следующий скрипт, а именно нужно чтобы  начался спавн мобов(допустим lvl creters уже подготовленных  стоящих в спец локации  с присвоенным именем 1ref ) в непосредственной близости и чтобы целью были бионойды, а не игрок и только те бионойды что стоят  с нужным паскеджем.

это немного оживит  игру, а то охранять как правило нечего!  да и еще нужно сделать так что если появляются допустим определенные  группировки допустим анклав или наемники когтя то  они начинают увеличивать количество  и частоту спавна своей группировки в данную локацию!

0

16

Мне нужно чтобы  когда я отдавал приказ одному из своих бионойдов о охране периметра на открытой поверхности то помимо  смены паскейдажа еще и активировался следующий скрипт, а именно нужно чтобы  начался спавн мобов(допустим lvl creters уже подготовленных  стоящих в спец локации  с присвоенным именем 1ref ) в непосредственной близости и чтобы целью были бионойды, а не игрок и только те бионойды что стоят  с нужным паскеджем.

Вроде бы не сложно, но что ты имеешь ввиду под пасскейджем? И, кстати, не обязательно спавнить уже заготовленных модов. Можно их создавать в игре и присваивать RefId.
В общем, спавн делается командой (все команды вызываются в скрипте, висящем на бионоиде):

Код:
set placerRef to PlaceAtMe MyPlacer 1 250 0

Если не сработает, нужно будет задать вызывающему бионоиду RefId:

Код:
	if (DoOnce == 0) && ( HasLoaded3D != 0 )
              Set BionoidRef to GetSelf
              Set DoOnce to 1
	endif

и потом использовать:

Код:
set placerRef to BionoidRef.PlaceAtMe MyPlacer 1 250 0

Проверка на наличие определённого пакета:

Код:
if (GetIsCurrentPackage PackageID)
endif

Вопрос агрессии к конкретному бионоиду решается путём создания 2 враждующих фракций: для всех мобов и для нужных бионоидов, в которую они будут помещаться командой:

Код:
BionoidRef.AddToFaction FactionName

0

17

Гм, а зачем проверка пакета? Я так думаю её можно убрать. Достаточно сгенерировать мобов и пихануть бионоида в нужную фракцию. И эта, бионоидов с нужным пакетом нужно будет удалять из фракции бионоидов, а то могут подтянуться софракцовцы с другим пакетом. :) А по окончании пакета вернуть всё назад.
Да и ещё. Я на вики глянул, та конструкция, что у тебя на самом верху, нужна если нужна ссылка на генерящийся объект, а так достаточно "PlaceAtMe MyPlacer 1 250 0" И ещё на вики написано, что параметры расстояния и направления вроде не работают. Мобы ставятся на любую безопасную позицию возле вызывающего.
Да и ещё, по поводу команды PlaceAtMe. Где то читал, не могу найти где, что этой командой можно только один объект за раз сгенерировать. Но вот по поводу этой инфы могу ошибаться, нужно пробовать... :) Кстати, лазая по сайту облы, наткнулся на такую весч, что если пользоваться этой командой, то сгенерированные этой командой мобы сами не исчезают и из-за этого могут быть глюки. Но это для облы, может в Ф3 это пофиксили, нужно опять-же проверять... :)

Отредактировано Wulf (15.01.11 18:47:27)

0

18

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

Гм, а зачем проверка пакета? Я так думаю её можно убрать. Достаточно сгенерировать мобов и пихануть бионоида в нужную фракцию.

Завитит от того, как у Deadellus'а там всё устроено.

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

И эта, бионоидов с нужным пакетом нужно будет удалять из фракции бионоидов, а то могут подтянуться софракцовцы с другим пакетом.

Ну, подтянутся они только если будут поблизости и увидят нападение на товарища. Это вполне логично.

Да и ещё. Я на вики глянул, та конструкция, что у тебя на самом верху, нужна если нужна ссылка на генерящийся объект

Да, это если нужно потом использовать их в скрипте или чтобы удалить:

Код:
; создание 
set placerRef to player.PlaceAtMe 1 50 0 
; ... 
; разрушение 
placerRef.Disable
Wulf написал(а):

И ещё на вики написано, что параметры расстояния и направления вроде не работают.

Насчёт этого не знаю, не слышал. Но хуже от того нуля не будет.

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

Да и ещё, по поводу команды PlaceAtMe. Где то читал, не могу найти где, что этой командой можно только один объект за раз сгенерировать.

Первая цифра после "PlaceAtMe" - это количество мобов. Вторая - расстояние до объекта, возле которого они должны очутиться и третья - с какой стороны (0 - сзади).
Правда, если нужно мобам задавать RefID, то вызывать придётся их по одному, несколько раз повторяя строчку:

Код:
set placer01Ref to PlaceAtMe MyPlacer 1 250 0
set placer02Ref to PlaceAtMe MyPlacer 1 250 0
set placer03Ref to PlaceAtMe MyPlacer 1 250 0
Wulf написал(а):

Кстати, лазая по сайту облы, наткнулся на такую весч, что если пользоваться этой командой, то сгенерированные этой командой мобы сами не исчезают и из-за этого могут быть глюки. Но это для облы, может в Ф3 это пофиксили, нужно опять-же проверять...

Слышал о таком. Но в данном случае враги же должны быть в итоге убиты бионоидами. Если что, выше есть команда на удаление.

0

19

Свернутый текст

scn BionoidTEMPLATEScript
short oldorder
short doonce
; short menu
; short button
; short customorder
begin gamemode

; if menu == 1
;    set button to getbuttonpressed
;    if button == 0    ; FOLLOW ME!
;    AddScriptPackage BionoidAI
;    RemoveScriptPackage BionoidWait
;    RemoveScriptPackage BionoidAIGUARD
;    set customorder to 1
;    elseif button == 1    ; WAIT
;    AddScriptPackage BionoidWait
;    RemoveScriptPackage BionoidAI
;    RemoveScriptPackage BionoidAIGUARD
;    set customorder to 1
;    elseif button == 2
;    set customorder to 0
;    if BionoidORDER == 1    ; FOLLOW ME!
;        AddScriptPackage BionoidAI
;        RemoveScriptPackage BionoidWait
;        RemoveScriptPackage BionoidAIGUARD
;
;    elseif BionoidORDER == 2    ; WAIT
;        AddScriptPackage BionoidWait
;        RemoveScriptPackage BionoidAI
;        RemoveScriptPackage BionoidAIGUARD
;    endif
;    elseif button == 3    ; TIME TO GO HOME!
;    disable 1
;    markfordelete
;    endif
; endif

;if customorder == 0
if oldorder != BionoidORDER

    if BionoidORDER == 0    ; FOLLOW ME!
    AddScriptPackage BionoidAI
    RemoveScriptPackage BionoidWait
    RemoveScriptPackage BionoidAIGUARD

    elseif BionoidORDER == 1    ; WAIT
    AddScriptPackage BionoidWait
    RemoveScriptPackage BionoidAI
    RemoveScriptPackage BionoidAIGUARD

    elseif BionoidORDER == 2    ; PURGE!
    removeScriptPackage BionoidWait
    RemoveScriptPackage BionoidAI
    AddScriptPackage BionoidAIGUARD

    elseif BionoidORDER == 3    ; GO HOME
    ; set BionoidORDER to 1
    ; TIME TO GO HOME!
    disable 1
    markfordelete
    endif

    set oldorder to BionoidORDER
endif
;endif
end

begin ondeath
;disable
;markfordelete
end

;begin onactivate player
; set menu to 1
; showmessage BionoidSoldierMenu1
;end

вот скрипт бионойдов! что  мне нужно туда вставить? просто год прошел много не помню уже, я  в скриптах всегда плохо разбирался!
скрипт по спавну должен включаться когда включаеться  BionoidAIGUARD и только когда бионойды не в помешении а на открытой площади!

********************* Добавлено *********************

по поводу вражебности фракций это уже есть, они враги  ( я с этим сразу разобрался. еще по обливиону знаю) но в целом скрипты даются плохо! единственый касяк! есть одно но  в моем скрипте  выше, этот скрит стоит у всех призывных бионойдов( bionoidstemplate1, 2, 3)   и их я могу призывать бесконечно и дав команду одному  она действует на всю группу включая даже тех кто уже был призван ранее и стоит где нибудь в локации  охроняют , таким образом он сразу ломится выполнять новое задание, а мне нужно чтобы  для каждой группы было свое задание ,как это сделать? не создовая отдельно кучу нпс и кучу скриптов для каждого  и чтобы не пришлось отдовать приказ каждому,  а одному сказал и вся призваная группа получимла бы такой же приказ( но не те кто уже выполняет другой приказ находясь не в поле зрения! или вызван рание!)

********************* Добавлено *********************

да и кстати вы написали как призвать мобов около бионойдов, но есть но, я их могу по всему миру натыкать тьму таракань и все они будут под одним refid,  конечно на локации у них другой id, но его я в игре не знаю к томуже он меняеться в зависимости от количества и места вызова, от сюда вывод кого будут атакавать вызваные мобы ведь мобов будет не так много, а бионойдов будет тьма и в разных местах под одним id, так вот как сделть так чтобы мобы  атакавали каждую группу? есть мысль задать финальную точку   для мобов это центр охраны бионойдов  от куда получена команда от игрока, но как это место вычеслить и как сделать ее уникальной, чтобы мобы не разрывались между всеми  подобными местами! и еще я так и неувидел как сделать постояный спавн мобов скажем с перодичностью через  2 минуты после гибели последнего из них! да и кстати тела мобов чтобы изчезали скажем через каждые 3 нападения чтобы игрок когда подошел видел что тут реально было сражение!!

Отредактировано Deadellus (16.01.11 15:16:34)

0

20

С этой задумкой очень много проблем будет, даже если довести её до ума. А для этого нужно как минимум разобраться когда и при каких условиях появляются супостаты, какого вида, в каких количествах... ИМХО, лучше уж сделать пару действительно интересны сюжетных нападения мобов, чем кучу однообразных случайных. А ещё лучше - создать жильё/штаб или ещё какую важную точно на местности и организовать на неё регулярные нападения.

0

21

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

нужно как минимум разобраться когда и при каких условиях появляются супостаты

Появляются они спусят несколько минут допустим 2- 3 мунуты  после того когда я отдаю команду бионойду на охрану! 

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

какого вида, в каких количествах...

это не иммет значение можно хоть одного, хоть сотню и  всех видов, я могу затолкать в одит lvlCr  имено там я раставлю их по групировкам и количествам ( уже проверил данный пункт он работает очень хорошо и без проблем можно хоть сотню за раз призвать причем кого угодно!)

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

лучше уж сделать пару действительно интересны сюжетных нападения мобов

это уже есть все в моем дополнение аж самой первой версии, сюжета там обосраться можно сколько с его супостатами. это нужно для того чтобы оживить слегка процес игры,  к тому же наподения будут не всегда  рендом:  могут быть, а могут нет!

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

А ещё лучше - создать жильё/штаб или ещё какую важную точно на местности и организовать на неё регулярные нападения.

такое уже есть тоже аж с певой версии ( только там прописано сколько  народу как правило на 4 -5 аткаках все заканчиваеться потому как скрипт очень длинным становится) и на патрули тоже нападают регулярно! мне нужно чтобы нападали на этих иммено, которым даю команду охранять, так как охранять как правило не от кого даже если есть монстры в округе( как правило через пару минут полный порядок и тишина!) я еще хочу создать мобилный авонпосты сделать, но это другое мне нужно иммено это, вначале сделать!!! идеи у меня есть и в достатке и все логично будет и сюжетно и вообще захлебнись слюной называеться, мне нужно иммено чтобы нападали на бионойдов когда я говарю им охранять, это все что нужно!  и чтобы мобы спавнились постояно с перодичностью в 2 -3 минуты, можете помочь с скриптом?

Вообщем один из вариантов: это использовать глобальную пременую допустим поставим скрит - со смертью одного из спавненых врагов изменить переменую на 1 и в скрипте спавна монсторв поставить  сумонить если  переменая равна 1 и  не суммнить если равна  0, при сумоне она будет  становиться 0

P.S. Не оброщайте внимание на восклицательный знаки! Я люблю их ставить везде где не поподя!

Отредактировано Deadellus (21.01.11 16:07:59)

0

22

Ну, тогда что-то в таком духе:

Скрипт|Скрипт:

scn BionoidTEMPLATEScript
short oldorder
short doonce
short AttackOccurred                     
float fTimer
; short menu
; short button
; short customorder
begin gamemode
; if menu == 1
;    set button to getbuttonpressed
;    if button == 0    ; FOLLOW ME!
;    AddScriptPackage BionoidAI
;    RemoveScriptPackage BionoidWait
;    RemoveScriptPackage BionoidAIGUARD
;    set customorder to 1
;    elseif button == 1    ; WAIT
;    AddScriptPackage BionoidWait
;    RemoveScriptPackage BionoidAI
;    RemoveScriptPackage BionoidAIGUARD
;    set customorder to 1
;    elseif button == 2
;    set customorder to 0
;    if BionoidORDER == 1    ; FOLLOW ME!
;        AddScriptPackage BionoidAI
;        RemoveScriptPackage BionoidWait
;        RemoveScriptPackage BionoidAIGUARD
;
;    elseif BionoidORDER == 2    ; WAIT
;        AddScriptPackage BionoidWait
;        RemoveScriptPackage BionoidAI
;        RemoveScriptPackage BionoidAIGUARD
;    endif
;    elseif button == 3    ; TIME TO GO HOME!
;    disable 1
;    markfordelete
;    endif
; endif
;if customorder == 0
if oldorder != BionoidORDER

    if BionoidORDER == 0    ; FOLLOW ME!
    AddScriptPackage BionoidAI
    RemoveScriptPackage BionoidWait
    RemoveScriptPackage BionoidAIGUARD
    Set AttackOccurred to 0
    Set fTimer to 0

    elseif BionoidORDER == 1    ; WAIT
    AddScriptPackage BionoidWait
    RemoveScriptPackage BionoidAI
    RemoveScriptPackage BionoidAIGUARD
    Set AttackOccurred to 0
    Set fTimer to 0

    elseif BionoidORDER == 2    ; PURGE!
    removeScriptPackage BionoidWait
    RemoveScriptPackage BionoidAI
    AddScriptPackage BionoidAIGUARD
    Set AttackOccurred to 1 
    Set fTimer to 180 ; 3 минуты. если 2, то заменить на 120

    elseif BionoidORDER == 3    ; GO HOME
    ; set BionoidORDER to 1
    ; TIME TO GO HOME!
    disable 1
    markfordelete
    Set AttackOccurred to 0 ; хз, надо ли здесь эти строчки, но хуже не будет
    Set fTimer to 0
    endif
    set oldorder to BionoidORDER
endif
;endif

if (fTimer > 0) && (AttackOccurred == 1)
    Set fTimer to (fTimer - GetSecondsPassed)
elseif (AttackOccurred == 1)
                set placerRef to PlaceAtMe MyPlacer 1 250 0
                set placerRef to PlaceAtMe MyPlacer 1 250 0
                set placerRef to PlaceAtMe MyPlacer 1 250 0
    Set AttackOccurred to 2
        endif

end

begin ondeath
;disable
;markfordelete
end
;begin onactivate player
; set menu to 1
; showmessage BionoidSoldierMenu1
;end

0

23

Спс за скрипт, но еще кое чего тут не хватает, а именно чтобы когда нпс  враг бионойдов погибал, то таймер с спавном включался заного допустим уже через 4 минуты, и еще вопрос по поводу скрипта placerRef это как я понел атакующие?( извеняюсь за нубский вопрос но лутше перебдеть чем недобдеть как говариться!)

Отредактировано Deadellus (25.01.11 02:14:01)

0

24

placerRef это как я понел атакующие?

Да, но в данном случае это не нужно, поправил. Теперь там PlaceAtMe MyPlacer 3 250 0

Скрипт|Скрипт:

scn BionoidTEMPLATEScript
short oldorder
short doonce
short AttackOccurred                     
float fTimer
; short menu
; short button
; short customorder
begin gamemode
; if menu == 1
;    set button to getbuttonpressed
;    if button == 0    ; FOLLOW ME!
;    AddScriptPackage BionoidAI
;    RemoveScriptPackage BionoidWait
;    RemoveScriptPackage BionoidAIGUARD
;    set customorder to 1
;    elseif button == 1    ; WAIT
;    AddScriptPackage BionoidWait
;    RemoveScriptPackage BionoidAI
;    RemoveScriptPackage BionoidAIGUARD
;    set customorder to 1
;    elseif button == 2
;    set customorder to 0
;    if BionoidORDER == 1    ; FOLLOW ME!
;        AddScriptPackage BionoidAI
;        RemoveScriptPackage BionoidWait
;        RemoveScriptPackage BionoidAIGUARD
;
;    elseif BionoidORDER == 2    ; WAIT
;        AddScriptPackage BionoidWait
;        RemoveScriptPackage BionoidAI
;        RemoveScriptPackage BionoidAIGUARD
;    endif
;    elseif button == 3    ; TIME TO GO HOME!
;    disable 1
;    markfordelete
;    endif
; endif
;if customorder == 0
if oldorder != BionoidORDER

    if BionoidORDER == 0    ; FOLLOW ME!
    AddScriptPackage BionoidAI
    RemoveScriptPackage BionoidWait
    RemoveScriptPackage BionoidAIGUARD
    Set AttackOccurred to 0
    Set fTimer to 0

    elseif BionoidORDER == 1    ; WAIT
    AddScriptPackage BionoidWait
    RemoveScriptPackage BionoidAI
    RemoveScriptPackage BionoidAIGUARD
    Set AttackOccurred to 0
    Set fTimer to 0

    elseif BionoidORDER == 2    ; PURGE!
    removeScriptPackage BionoidWait
    RemoveScriptPackage BionoidAI
    AddScriptPackage BionoidAIGUARD
    Set AttackOccurred to 1 
    Set fTimer to 180 ; 3 минуты. если 2, то заменить на 120

    elseif BionoidORDER == 3    ; GO HOME
    ; set BionoidORDER to 1
    ; TIME TO GO HOME!
    disable 1
    markfordelete
    Set AttackOccurred to 0 ; хз, надо ли здесь эти строчки, но хуже не будет
    Set fTimer to 0
    endif
    set oldorder to BionoidORDER
endif
;endif

if (fTimer > 0) && (AttackOccurred == 1)
    Set fTimer to (fTimer - GetSecondsPassed)
elseif (AttackOccurred == 1)
                PlaceAtMe MyPlacer 3 250 0
    Set AttackOccurred to 2
        endif

end

begin ondeath
;disable
;markfordelete
end
;begin onactivate player
; set menu to 1
; showmessage BionoidSoldierMenu1
;end

Спс за скрипт, но еще кое чего тут не хватает, а именно чтобы когда нпс  враг бионойдов погибал, то таймер с спавном включался заного допустим уже через 4 минуты

Чтобы сделать проверку на то, умер ли НПС, нужно знать его RefID. Строчка set placerRef to PlaceAtMe MyPlacer 1 250 0 его присваивала, но в случае срабатывания нескольких таких скриптов, разным НПС задавались бы одинаковые RefID. Без понятия что было бы в это случае, скорее всего что-то вроде вылета. Проще всего сделать скрипт для мобов (только мобы для вызова должны быть специальные, с таким вот скриптом):

Скрипт для мобов|Скрипт для мобов:

scn MobsSCRIPT

short sFlag
float fTimer

Begin OnDeath       
if (sFlag == 0)
    Set sFlag to 1
    Set fTimer to 240
endif

End

Begin GameMode

if (fTimer > 0) && (sFlag == 1)
    Set fTimer to (fTimer - GetSecondsPassed)
elseif (sFlag == 1)
                PlaceAtMe MyPlacer 1 250 0
    Set sFlag to 2
    endif

End

0

25

а разве  PlaceAtMe  а разве это не значит что цель будет игрок! мне жу нужно чтобы цель была бионойды, может для бионойдов нужен еще один скрипт который создовал бы им  своего рода виртуальный refId  при каждой команде охранять,  и для каждой группы оставленой охранять спавн нпс становился бы уникальным или чтото в этом роде!

0

26

Если перед PlaceAtMe не стоит RefID, то целью становится тот, на ком висит скрипт, т.е. бионоид (или убитый моб во втором случае).

0

27

да скрипт работает спс, но есть другая проблема, теперь они спавняться по близости  и это выглядет слегка не горманично! я попоробовал изменить растояние на 2000 и дал им единственый паскейдж следовать за фракцией бионойдов на расстояние 200, но с этим паскейджем они спавняться прямо на головы всем бионойдам и сразу по 2 на каждого бионойда как прописано в скрипте. что делать?

0

28

Попробуй такие значения: 512, 1024, 2048.

0

29

Возник вопросик. Есть такая команда как ShowRepairMenu которая вызывает меню ремонта. Она не предусматривает каких либо параметров. Но вот в игре Ф3 у Мойры она появляется в таком виде ShowRepairMenu 30. Кто знает, что сиё обозначает? Вики такой инфы не даёт... :(
Если судить по смыслу топика, в котором эта команда встречается, то возможно речь идёт о прибавке к скиллу ремонта или скидка на стоимость ремонта...
Какие будут версии?

0

30

Wulf, у меня версий нет. Нужно выяснять опытным путем. Возможно, на момент написания данной строчки команда имела параметры, но потом их убрали.

0


Вы здесь » Форум «Лабортории Mod-Tec» » G.E.C.K. Community » Помощь по скриптам Fallout 3 и Fallout: New Vegas