Прежде чем задавать вопрос - посмотрите в >> КАРТОТЕКЕ << Возможно, там уже есть готовый ответ.
Тема предназначена для общих вопросов. Прежде, чем тут что-то написать, посмотрите другие темы этого раздела. Вполне возможно, что они больше соответствуют тематике вашего вопроса.
Здравствуйте, уже битый час не могу разобраться что-же не работает. Простая задумка - у нас есть триггер, пока в нем находиться игрок счетчик мотает время, как только станет 10 секунд, то переходим на следующий этап. Но вот что-то не получается, причем если убрать тайминг, то он будет нормально отрабатывать. Тип скрипта : объект, повешено на триггер.
Code
float timer
begin OnTrigger player
if timer < 10 set timer to timer + GetSecondsPassed else SetStage myTestQuest 50 endif
текущий пакет отменяется (в частности, сбрасывается пакет, назначенный экземпляру моба с помощью AddScriptPackage), и активируется первый из пакетов, условия которого выполнены
Точно ли? Ведь если выбирается опять тот же пакет, то результ-скрипт On Begin у него не срабатывает.
Вопрос, может его задавали и меня направят к ответу: как в нифскопе изменить материал объекта?)
Уточни... Если ты о NiMaterialProperty, то там 3 позиции настраиваются - specukar, emissive, glossiness. Если же о BSShader, то там - shader type, shader flags и unknown Int 2.
Доброго времени всем.Буквально маленький вопрос, как уже выяснили, скрывать/удалять персонажей(например после завершенного квеста) можно через Disable.А как сделать чтобы они были невидимые/отсутствовали в игре с самого начала и до определенного квеста? Сформулирую вопрос, есть ли какая нибудь кнопочка которая по дефолтку скрывает персонажа и потом через Disable возвращать в его игру.
Я предположил, что это можно сделать таким быдлокодом:
Code
begin GameMode
if GetQuestRunning MyTestQuest == 1 MyNPCRef.Disable 0 endif
END
Но у такой реализации есть много минусов, один из них - придется делать большое количество скриптов для каждого объекта(они же будут нужны на разных квестах) или один большой. Так вот есть ли какой нибудь красивый способ?
Но у такой реализации есть много минусов, один из них - придется делать большое количество скриптов для каждого объекта(они же будут нужны на разных квестах) или один большой. Так вот есть ли какой нибудь красивый способ?
Разумеется, есть. Однако для его реализации Вам потребуется найти и прочитать учебник по скриптам и несколько туториалов по ГЕККу.
====================== Мод "Нью-Йорк" на русском: 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
ivaneOK432, отметь у РЕФ-копии персонажа (объекта), который нужно сделать изначально невидимым, чекбокс Initially Disabled: и он будет невидим до тех пор, пока ты его не "активируешь".
Есть одна небольшая проблемка: я делаю элеватор, полностью работающий. Т.е., использую скрипт для подъема вверх-вниз + скрипт для подъема ГГ вверх-вниз. С самим элеватором все в норме - и вверх, и вниз все отлично ездит. А вот с ГГ проблемы: чуть побольше поковырявшись я определил, что ГГ через мой скрипт едет только вниз или только вверх. Для ГГ есть два триггера, с режимом GameMode. Идет изначально проверка на If ( ExampleXMaerkerHeading.GetDisabled == 1 ), тогда... бла-бла, ГГ едет вниз синхронно с элеватором. Для подъема вверх есть другой триггер, с почти таким же скриптом, только для подъема вверх. И проверка идет на другой XMarkerHeading. Однако ГГ все равно отказывается подниматься вверх. С чем это может быть связано?
Sazans_Theme, Так вроде бы в этой теме обсуждалось движение игрока вместе с каким-либо объектом, в частности - с плитой. Обратись к Rizys - он тебе подробно распишет
Galko, спасибо, я там уже был. Все дело как раз в коллизии - Каин пишет, про типы коллизи, и моя - OL_STATIC. ГГ проваливается. Поэтому я и использую скрипт для подъема ГГ отдельно. Скажем так: это намного тупее, чем (не знаю что, например, просто туповато). И тут уже суть не в самом движении, а почему ГГ не хочет двигаться?
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
rizys-modOffline
Сообщение №1818
написано: 30 сентября 2012, 16:05
| Отредактировано: rizys-mod - 30 сентября 2012, 16:21
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.
rizys-mod, еще забыл упомянуть, что для подъема-спуска ГГ используется два разных Х-маркера. ExamplePlayerMoveMarkerRef.enable - этой командой мы просто "заморозим" спуск игрока.
Второй триггер и скрипт на него почти аналогичны скрипту выше, только через другой Х-маркер. Вот только ГГ отказывается подниматься. Вот моя проблема. Через активатор мы "энаблируем" Х-маркер для подъема ГГ + Х-маркер для подъема элеватора. Элеватор уезжает вверх, а ГГ топчется на месте.
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.
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.
rizys-mod, спасибо большое, после последнего скрипта все, наконец-то, заработало. Так теперь вышло, что один скрипт - на спуск, а другой - на подъем. В общем все очень-очень интересно.
Изменение репутации для пользователя rizys-mod
rizys-modOffline
Сообщение №1824
написано: 1 октября 2012, 17:10
| Отредактировано: rizys-mod - 1 октября 2012, 17:11
Всем привет, маленький вопрос. Мне надо создать группу противников , я делаю через LeveledCharacter. Но создается только один противник, в Reference Dialog я не нашел увлечения количества .Пробовал редактировать базу, увеличив Count, но это тоже не до эффект.Что я делаю не так или вообще нельзя по этому методу добавить больше одного противника?
Здравствуйте! Можете подсказать как создать плагин который заставит игру читать новый bsa архив с текстурами высокого разрешения? Если можно - подробно. Я умею ставить моды, но в Гекке разбираюсь слабо.
Изменение репутации для пользователя Ipatow
IpatowOffline
Сообщение №1828
написано: 3 октября 2012, 02:59
| Отредактировано: Ipatow - 3 октября 2012, 03:00
Мне надо создать группу противников , я делаю через LeveledCharacter. Но создается только один противник, в Reference Dialog я не нашел увлечения количества .Пробовал редактировать базу, увеличив Count, но это тоже не до эффект.Что я делаю не так или вообще нельзя по этому методу добавить больше одного противника?
Ты, конечно, посмотрел, как такую задачу решали авторы игры?...
Если ты хочешь группу шалопаев переменного размера - ставишь скриптованый объект, который будет динамически помещать в игровой мир шалопаев при помощи PlaceAtMe (минус - им нельзя будет задать Encounter Zone и вообще всё, что задаётся в свойствах reference). Можно "полудинамически" - статически поместив группу максимального размера в мир (использование leveled actors резонно, хотя "сложность" не очень работает) в позе initially disabled, а твой скриптованный объект будет enable'ить часть группы по обстоятельствам.
Изменение репутации для пользователя Galko
GalkoOffline
Сообщение №1829
написано: 4 октября 2012, 12:36
| Отредактировано: Galko - 5 октября 2012, 18:59
Я уже наверно тут всех запарил своими нубскими вопросами =\ В общем в инвентарь НПСу добавил оружие, но в игре он упорно не хочет им пользоваться(причем в инвентаре оно нормально отображается). Как только нападаю на него, то он с кулаками на меня. Я даже насильно его экипировал через MyVragRef.EquipItem 0009073b 0 1 ,но он только достает оружие и сразу же убирает его и опять с кулаками лезет (боксер какой-то( ). Как быть то...