Модератор форума: КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » ВОПРОСЫ по моддингу (Спрашиваем и отвечаем на тему как сделать то или это...)

ВОПРОСЫ по моддингу
Defox  Offline  Сообщение №1 написано: 3 ноября 2010, 11:46 | Отредактировано: ApeX - 3 ноября 2018, 10:41


Project Fallout: Wild Wasteland


463
Прежде чем задавать вопрос - посмотрите в
>> КАРТОТЕКЕ <<

Возможно, там уже есть готовый ответ.

Тема предназначена для общих вопросов. Прежде, чем тут что-то написать, посмотрите другие темы этого раздела. Вполне возможно, что они больше соответствуют тематике вашего вопроса.

ivaneOK432  Offline  Сообщение №1801 написано: 27 сентября 2012, 18:05



15
Здравствуйте, уже битый час не могу разобраться что-же не работает. Простая задумка - у нас есть триггер, пока в нем находиться игрок счетчик мотает время, как только станет 10 секунд, то переходим на следующий этап. Но вот что-то не получается, причем если убрать тайминг, то он будет нормально отрабатывать.
Тип скрипта : объект, повешено на триггер.
Code
float timer

begin OnTrigger player

   if timer < 10
       set timer to timer + GetSecondsPassed
    else
        SetStage  myTestQuest 50  
    endif

END

Подскажите пожалуйста

Если вы читаете это, то у вас все будет хорошо.
Spalny_Vagon  Offline  Сообщение №1802 написано: 27 сентября 2012, 18:19


Мастер


Цитата ivaneOK432

что-же не работает


Блок ontrigger не может считать секунды, т.к. срабатывает только ОДИН РАЗ. Счетчик будет нормально работать в блоке gamemode.

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
JupiterJour  Offline  Сообщение №1803 написано: 27 сентября 2012, 18:57


_


Цитата Ipatow

текущий пакет отменяется (в частности, сбрасывается пакет, назначенный экземпляру моба с помощью AddScriptPackage), и активируется первый из пакетов, условия которого выполнены


Точно ли? Ведь если выбирается опять тот же пакет, то результ-скрипт On Begin у него не срабатывает.

RustWays  Offline  Сообщение №1804 написано: 28 сентября 2012, 15:24



Вопрос, может его задавали и меня направят к ответу: как в нифскопе изменить материал объекта?)

Zero_Malkav  Offline  Сообщение №1805 написано: 28 сентября 2012, 16:01



621
Цитата The_Riff

Вопрос, может его задавали и меня направят к ответу: как в нифскопе изменить материал объекта?)


Уточни... Если ты о NiMaterialProperty, то там 3 позиции настраиваются - specukar, emissive, glossiness. Если же о BSShader, то там - shader type, shader flags и unknown Int 2.

RustWays  Offline  Сообщение №1806 написано: 28 сентября 2012, 16:44



Цитата Mercutio

BSShader


Они, только как их найти, остается вопросом)

Samura  Offline  Сообщение №1807 написано: 28 сентября 2012, 18:23


Ронин


966
The_Riff, А что их искать, здесь они и редактируются

ivaneOK432  Offline  Сообщение №1808 написано: 28 сентября 2012, 18:29



15
Доброго времени всем.Буквально маленький вопрос, как уже выяснили, скрывать/удалять персонажей(например после завершенного квеста) можно через Disable.А как сделать чтобы они были невидимые/отсутствовали в игре с самого начала и до определенного квеста? Сформулирую вопрос, есть ли какая нибудь кнопочка которая по дефолтку скрывает персонажа и потом через Disable возвращать в его игру.

Я предположил, что это можно сделать таким быдлокодом:
Code

begin GameMode

if GetQuestRunning  MyTestQuest == 1
MyNPCRef.Disable 0
endif

END

Но у такой реализации есть много минусов, один из них - придется делать большое количество скриптов для каждого объекта(они же будут нужны на разных квестах) или один большой. Так вот есть ли какой нибудь красивый способ?

Если вы читаете это, то у вас все будет хорошо.
Spalny_Vagon  Offline  Сообщение №1809 написано: 28 сентября 2012, 19:00


Мастер


Цитата ivaneOK432

Но у такой реализации есть много минусов, один из них - придется делать большое количество скриптов для каждого объекта(они же будут нужны на разных квестах) или один большой. Так вот есть ли какой нибудь красивый способ?


Разумеется, есть. Однако для его реализации Вам потребуется найти и прочитать учебник по скриптам и несколько туториалов по ГЕККу.

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
tundruck73  Offline  Сообщение №1810 написано: 29 сентября 2012, 01:55



ivaneOK432, отметь у РЕФ-копии персонажа (объекта), который нужно сделать изначально невидимым, чекбокс Initially Disabled:

и он будет невидим до тех пор, пока ты его не "активируешь".

Мосье, же не манж па сис жур...
Умер 23.04.2019
ivaneOK432  Offline  Сообщение №1811 написано: 30 сентября 2012, 08:37



15
tundruck73, спасибо!

Если вы читаете это, то у вас все будет хорошо.
Рыба  Offline  Сообщение №1812 написано: 30 сентября 2012, 12:52


faceless


693
Есть одна небольшая проблемка:
я делаю элеватор, полностью работающий. Т.е., использую скрипт для подъема вверх-вниз + скрипт для подъема ГГ вверх-вниз.
С самим элеватором все в норме - и вверх, и вниз все отлично ездит. А вот с ГГ проблемы: чуть побольше поковырявшись я определил, что ГГ через мой скрипт едет только вниз или только вверх. Для ГГ есть два триггера, с режимом GameMode. Идет изначально проверка на If ( ExampleXMaerkerHeading.GetDisabled == 1 ), тогда... бла-бла, ГГ едет вниз синхронно с элеватором. Для подъема вверх есть другой триггер, с почти таким же скриптом, только для подъема вверх. И проверка идет на другой XMarkerHeading. Однако ГГ все равно отказывается подниматься вверх. С чем это может быть связано?

Galko  Offline  Сообщение №1813 написано: 30 сентября 2012, 13:35


GALAктическая мартышка


Sazans_Theme, Так вроде бы в этой теме обсуждалось движение игрока вместе с каким-либо объектом, в частности - с плитой. Обратись к Rizys - он тебе подробно распишет

Ваше счастье, что я не ваше счастье
Рыба  Offline  Сообщение №1814 написано: 30 сентября 2012, 14:17


faceless


693
Galko, спасибо, я там уже был. Все дело как раз в коллизии - Каин пишет, про типы коллизи, и моя - OL_STATIC. ГГ проваливается. Поэтому я и использую скрипт для подъема ГГ отдельно. Скажем так: это намного тупее, чем (не знаю что, например, просто туповато).
И тут уже суть не в самом движении, а почему ГГ не хочет двигаться?

rizys-mod  Offline  Сообщение №1815 написано: 30 сентября 2012, 14:36


Команда "Rizys-Mod"


250
Sazans_Theme, как это не хочет двигаться?

Сейчас скину в л.с. на полную статью про движение.

Команда "Rizys-mod" - разработка плагинов на Fallout.
Galko  Offline  Сообщение №1816 написано: 30 сентября 2012, 14:49


GALAктическая мартышка


rizys-mod, Мне тоже :) Интересно почитать

Ваше счастье, что я не ваше счастье
Рыба  Offline  Сообщение №1817 написано: 30 сентября 2012, 15:54


faceless


693
Пишу скрипт через телефон. Это смерть:

scn MyScript

float PosZ
Float PosZt
Float FfVar
Float Timer

Begin GameMode
If ( ExamplePlayerMoveMarkerRef.GetDisabled == 1 )
Set FFVar to -1
Set Timer to (Timer + GetSecondsPassed)
Set PosZ to Player.GetPos Z
Set PosZt to PosZ + FFVar
Player.SetPos Z, PosZt
If ( Timer >= 43 )
Return
Set Timer to 0
Endif
endif
end

Скрипт на подъем почти такой же, но только с +1, и другое название переменных.

rizys-mod  Offline  Сообщение №1818 написано: 30 сентября 2012, 16:05 | Отредактировано: rizys-mod - 30 сентября 2012, 16:21


Команда "Rizys-Mod"


250
Sazans_Theme, попробуй делать так:
float PosZ
Float PosZt
Float FfVar
Float Timer

Begin GameMode
If ( ExamplePlayerMoveMarkerRef.GetDisabled == 1 )
Set FFVar to -1
Set Timer to (Timer + GetSecondsPassed)
Set PosZ to Player.GetPos Z
Set PosZt to PosZ +FFVar
Player.SetPos Z PosZt
If ( Timer >= 43 )
ExamplePlayerMoveMarkerRef.enable
Set Timer to 0
Endif
endif
end

желательно двигай гг в том же скрипте, где и двигаешь сам елеватор.

Команда "Rizys-mod" - разработка плагинов на Fallout.
Рыба  Offline  Сообщение №1819 написано: 30 сентября 2012, 17:47


faceless


693
rizys-mod, еще забыл упомянуть, что для подъема-спуска ГГ используется два разных Х-маркера.
ExamplePlayerMoveMarkerRef.enable - этой командой мы просто "заморозим" спуск игрока.

Второй триггер и скрипт на него почти аналогичны скрипту выше, только через другой Х-маркер. Вот только ГГ отказывается подниматься. Вот моя проблема.
Через активатор мы "энаблируем" Х-маркер для подъема ГГ + Х-маркер для подъема элеватора. Элеватор уезжает вверх, а ГГ топчется на месте.

rizys-mod  Offline  Сообщение №1820 написано: 30 сентября 2012, 18:25


Команда "Rizys-Mod"


250
Sazans_Theme, лично я, в моде который сейчас делаю сделал так:

Code
Float ZPos
Float ZAchse

Short State

Begin OnTrigger Player
if (State == 0)
  Set State to 1
endif
End

Begin GameMode
if (State == 1)
  Set ZPos to elev01Ref.GetPos Z
  Set ZAchse to ZPos +0.5
  elev01Ref.SetPos Z ZAchse

  Set ZPos to Player.GetPos Z
  Set ZAchse to ZPos +0.5
  Player.SetPos Z ZAchse
endif

if (State == 1)
  if (FinalFightMove01Ref.GetDistance, elevbotFinal01Ref <= 10)
  Set State to 2
  endif
endif
End


Но в твоем случае лучше сделать по другому. Примерно так:
float PosZ
Float PosZt
Float FfVar
Float Timer

Short DoOnce

Begin GameMode

if (DoOnce == 1)
Set FFVar to -1
Set Timer to (Timer + GetSecondsPassed)
Set PosZ to Player.GetPos Z
Set PosZt to PosZ +FFVar
Player.SetPos Z PosZt
endif

if (Timer >= 43)
Set DoOnce to 0
Set Timer to 0
endif
End

А на активаторе просто менял бы переменную в триггере:
Set TriggerRef.DoOnce to 1

Команда "Rizys-mod" - разработка плагинов на Fallout.
Рыба  Offline  Сообщение №1821 написано: 30 сентября 2012, 19:52


faceless


693
rizys-mod, нет, все равно не поднимается.

rizys-mod  Offline  Сообщение №1822 написано: 30 сентября 2012, 20:02 | Отредактировано: rizys-mod - 30 сентября 2012, 20:25


Команда "Rizys-Mod"


250
Sazans_Theme, а почему ты не используешь движение гг в том же скрипте где и двигаешь елеватор? Просто не ясно зачем все усложнять. Можно вобще сделать всего один триггер в котором и будет двигаться все сразу, а можно и вобще было сделать без триггиров. Сейчас попробую по твоему сделать и гляну в игре.

Вот скрипт который работает у меня:

Code
scn aaaTestElevatorSwitch01Script

float PosZ
Float PosZt
Float FfVar
Float Timer

Short DoOnce

Begin OnActivate
Set DoOnce to 1
End

Begin GameMode
if (DoOnce == 1)
Set FFVar to 1
Set Timer to (Timer + GetSecondsPassed)

Set PosZ to Player.GetPos Z
Set PosZt to PosZ +FFVar
Player.SetPos Z PosZt

Set PosZ to aaaTestElevatorMoveRef.GetPos Z
Set PosZt to PosZ +FFVar
aaaTestElevatorMoveRef.SetPos Z PosZt
endif

if (Timer >= 43)
Set DoOnce to 0
Set Timer to 0
endif
End


Скрипт на активаторе. После того как таймер выйдет движение прекратится и можно будет опять использовать активатор. В строчке:
if (Timer >= 43) ;&& (DoOnce == 1) если нужно. У меня и без этой проверки работало но можно и сделать, лишней не будет

Единственная разница в наших скриптах, так это то, что, ты двигаешь елеватор вниз "Set FFVar to -1" (наверно поэтому гг и не двигался у меня, так как внизу у меня ландшафт) а я вверх "Set FFVar to 1".

В общем если и после такого скрипта у тебя не будет движения, тогда я не знаю.

Команда "Rizys-mod" - разработка плагинов на Fallout.
Рыба  Offline  Сообщение №1823 написано: 1 октября 2012, 07:06


faceless


693
rizys-mod, спасибо большое, после последнего скрипта все, наконец-то, заработало.
Так теперь вышло, что один скрипт - на спуск, а другой - на подъем. В общем все очень-очень интересно.

rizys-mod  Offline  Сообщение №1824 написано: 1 октября 2012, 17:10 | Отредактировано: rizys-mod - 1 октября 2012, 17:11


Команда "Rizys-Mod"


250
Цитата Sazans_Theme

float PosZ
Float PosZt
Float FfVar
Float Timer

Short State
Short DoOnce

Begin OnActivate
if (DoOnce == 1)
Set DoOnce to 2
endif

if(State == 1)
Set State to 2
endif
End

Begin GameMode

;=========[Вверх]=========

if (DoOnce == 2)
SetDestroyed 1
Set FFVar to 1
Set Timer to (Timer + GetSecondsPassed)

Set PosZ to Player.GetPos Z
Set PosZt to PosZ +FFVar
Player.SetPos Z PosZt

Set PosZ to aaaTestElevatorMoveRef.GetPos Z
Set PosZt to PosZ +FFVar
aaaTestElevatorMoveRef.SetPos Z PosZt
endif

if (Timer >= 43)
Set DoOnce to 3
SetDestroyed 0
Set State to 1
Set Timer to 0
endif

;=========[Вниз]=========

if (State == 2)
SetDestroyed 1
Set FFVar to -1
Set Timer to (Timer + GetSecondsPassed)

Set PosZ to Player.GetPos Z
Set PosZt to PosZ +FFVar
Player.SetPos Z PosZt

Set PosZ to aaaTestElevatorMoveRef.GetPos Z
Set PosZt to PosZ +FFVar
aaaTestElevatorMoveRef.SetPos Z PosZt
endif

if (Timer >= 43)
Set DoOnce to 1
SetDestroyed 0
Set State to 3
Set Timer to 0
endif

End


Команда "Rizys-mod" - разработка плагинов на Fallout.
Рыба  Offline  Сообщение №1825 написано: 1 октября 2012, 18:31


faceless


693
rizys-mod, изначально скрипт был "воедино", на одном триггере.
Однако потом я решил его "разлепить".

ivaneOK432  Offline  Сообщение №1826 написано: 2 октября 2012, 09:09



15
Всем привет, маленький вопрос. Мне надо создать группу противников , я делаю через LeveledCharacter. Но создается только один противник, в Reference Dialog я не нашел увлечения количества .Пробовал редактировать базу, увеличив Count, но это тоже не до эффект.Что я делаю не так или вообще нельзя по этому методу добавить больше одного противника?

Если вы читаете это, то у вас все будет хорошо.
ar  Offline  Сообщение №1827 написано: 2 октября 2012, 16:52



7
Здравствуйте!
Можете подсказать как создать плагин который заставит игру читать новый bsa архив с текстурами высокого разрешения? Если можно - подробно. Я умею ставить моды, но в Гекке разбираюсь слабо.

Ipatow  Offline  Сообщение №1828 написано: 3 октября 2012, 02:59 | Отредактировано: Ipatow - 3 октября 2012, 03:00



Цитата ivaneOK432

Мне надо создать группу противников , я делаю через LeveledCharacter. Но создается только один противник, в Reference Dialog я не нашел увлечения количества .Пробовал редактировать базу, увеличив Count, но это тоже не до эффект.Что я делаю не так или вообще нельзя по этому методу добавить больше одного противника?

Ты, конечно, посмотрел, как такую задачу решали авторы игры?...

Если ты хочешь группу шалопаев переменного размера - ставишь скриптованый объект, который будет динамически помещать в игровой мир шалопаев при помощи PlaceAtMe (минус - им нельзя будет задать Encounter Zone и вообще всё, что задаётся в свойствах reference). Можно "полудинамически" - статически поместив группу максимального размера в мир (использование leveled actors резонно, хотя "сложность" не очень работает) в позе initially disabled, а твой скриптованный объект будет enable'ить часть группы по обстоятельствам.

Galko  Offline  Сообщение №1829 написано: 4 октября 2012, 12:36 | Отредактировано: Galko - 5 октября 2012, 18:59


GALAктическая мартышка


Цитата ar

как создать плагин который заставит игру читать новый bsa архив


Скрипач плагин не нужен, если твой бса-архив содержит только текстуры, меняющие дефолтные. Распаковываешь архив в папку Дата и все.

Ваше счастье, что я не ваше счастье
ivaneOK432  Offline  Сообщение №1830 написано: 4 октября 2012, 13:50



15
Galko, Спасибо!

Я уже наверно тут всех запарил своими нубскими вопросами =\
В общем в инвентарь НПСу добавил оружие, но в игре он упорно не хочет им пользоваться(причем в инвентаре оно нормально отображается). Как только нападаю на него, то он с кулаками на меня. Я даже насильно его экипировал через MyVragRef.EquipItem 0009073b 0 1 ,но он только достает оружие и сразу же убирает его и опять с кулаками лезет (боксер какой-то( ). Как быть то...

Если вы читаете это, то у вас все будет хорошо.
Форум » Fallout: New Vegas » Мастерская » ВОПРОСЫ по моддингу (Спрашиваем и отвечаем на тему как сделать то или это...)
Поиск:





Ответ на жалобу смотрите в разделе жалоб