В принципе можно, но мне кажется, основная работа тут будет не в ГЭКК. Нужен активатор в виде, скажем, турели вверх ногами. Нужно новое оружие "пулемёт" в разделе Weapon. Нужна модель для пулемёта от первого лица и анимация стрельбы и перезарядки (можно без перезарядки если магазин достаточно велик) - та самая "основная работа".
if GetDisabled==1 if player.GetItemCount [пулемёт]==0 Enable endif endif
End
На пулемёте скрипт типа такого:
Code
scn zzWeaponScript
short Count
Begin OnUnequip
set Count to player.GetItemCount [патроны] player.RemoveItem [патроны] Count 1 player.RemoveItem [пулемёт] 1 1 EnablePlayerControls
End
Таким образом, активироваться будет по клавише "Е", а деактивироваться через пип-бой, горячую клавишу смены оружия или "R". Тут надо следить, чтобы пулемёт не поломался в руках, а то игрок может прирасти к нему, так как блок OnUnequip не сработает. Поэтому он должен быть либо очень прочным, либо самопочиняющимся. Возможен вариант активацией/деактивацией отдельным выключателем. Тогда гейммода можно избежать, но придётся окружить игрока коллизией, чтобы не удрал со стационарным пулемётом в руках. P.S. Здесь предполагается, что патроны у пулемёта свои, особенные.
Категорию предмета менять не надо, надо в категории "Контейнеры" сделать новый внешне один в один. Для этого смотришь в ГЭКК, какую модель использует заменяемый предмет, распаковываешь .bsa с мешами (вот так), назначаешь новому контейнеру ту же модель, что и у заменяемой статики. По желанию можно распаковать звуки и назначить, как контейнер будет скрипеть при открывании-закрывании. Про левел-листы здесь. Когда заменяешь предмет в окне рендера через Ctrl+F, можно поставить галку менять ли только выделенные предметы или все в ячейке или все в мире (уорлд-спейсе).
Насчёт "по бокам" не уверен. Вроде у всего оружия в игре прожектили летят из одной точки. Можно ли сделать больше - вопрос к модельщикам. Если нет, то придётся вместо оружия в руках мастерить какой-то какие-то отдельные объекты по бокам от игрока, отслеживающие его повороты и пуляющие прожектили с помощью функции FireWeapon. А это уже заход в какие-то дебри.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №124
| Тема: Помощь по G.E.C.K.
написано: 3 августа 2012, 13:23
| Отредактировано: Joopeeter - 3 августа 2012, 13:29
Привязать появление каких-то вспышек и каких-то выстрелов, может и не трудно, но в данном случае они должны быть на концах стволов. То есть они либо должны привязываться стандартным способом, но к нескольким точкам (возможно ли это?), либо быть частью модели, но видимой только при стрельбе (опять же, возможно ли это?), либо быть вообще отдельно и тогда придётся громоздить скрипт, "водящий" вспышки за стволами, то есть те же "дебри". Эти то-видимые-то-невидимые части я и подразумевал под "запчастями". Вообще, у оружия вроде должна быть какая-то анимация при стрельбе, типа дёргающегося затвора, распрямляющейся тетивы и т.п. Может быть, можно подвести под это дело и имитацию выстрелов. Не знаю, не моя область. А про ФОСЕ упомянул, потому что он представляется мне чем-то вроде не то чёрной, не то белой магии - кто его знает, что там с его помощью можно.
Сейчас пришло в голову. -1 тоже довольно сильный толчок. Можно попробовать оглоушить игрока SetUnconscious 1 поместить под него фейковый взрыв с маленькой силой player.PlaceAtMe [фейковый взрыв с маленькой силой] (вроде взрывы толкаются послабже, чем PushActorAway), а потом привести в чувство SetUnconscious 0.
Paralysis это эффект, под действием которого актёр падает "как дерево", то есть растительная тематика соблюдена. В Ф3 применяется в перке "Парализующая ладонь", в Н-В вроде тоже есть что-то в этом роде. knockdown так сразу и не вспомню. Это где? Помню, что в настройках непися есть галка No knockdowns. Если отмечена, то он как раз НЕ падает.
Ещё вариант на проверку. Похоже, актёр в полном сознании не может упасть как овощ. Если его оглушить SetUnconscious 1, то он теряет сознание, но стоит, зараза, с закрытыми глазами, не падает. То есть вопрос - как уронить. PushActorAway роняет гарантированно. Вариант со взрывом уже предлагал. Можно ещё попробовать чуть-чуть приподнять над землёй, чтобы падением расшевелить Хавок. Типа такого эффекта:
Code
scn zzScript
float Z
Begin ScriptEffectStart SetUnconscious 1 set Z to GetPos z set Z to Z+5 SetPos z Z End
Begin ScriptEffectFinish SetUnconscious 0 End
Или не эффект, а два результ-скрипта, или скрипт с таймером - без разницы. Смысл - оглушить, приподнять, уроннить, привести в чувство.
Сейчас вспомнил. Можно ещё поэкспериментитовать с SetRigidBodyMass. Применительно к актёру и функции PushActorAway регулирует тряпочность/деревянность роняемой куклы. Натуральнее всего, насколько я помню, выглядят значения 0.5-1.
Извиняюсь, не заметил отредактированного. Всё, что начинается с Get проверяет состояние. Синтаксис соблюдён, естественно, что скрипт скомпилировался. Он же думал, что тебе надо знать валяется ли игрок на земле. Он проверил, вернул 0 (нет, не валяется) или 1 (да, валяется), визуально этого не видно.
The_Riff, по поводу зелёного газа и климата. При взрыве Мегатонны меняются глобальные переменные MegatonNormalWeatherChance и MegatonDestroyedWeatherChance. Может, оно?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №136
| Тема: Помощь по моддингу
написано: 14 августа 2012, 05:55
| Отредактировано: Joopeeter - 13 августа 2012, 22:07
Ранее говорилось, что если имя какого-либо объекта начинается с цифр (т.е. как у Вас в скрипте 000zazaza691 и так далее) то скрипт с таким объектом не скомпилируется
Один раз написал неточно и теперь обречён до конца жизни уточнять. Не компилируются результ-скрипты квестов, ID которых начинается с цифры. Ну и да, любое ID с цифры лучше не начинать, чтоб в привычку не вошло.
Форум глючит. Я вот тоже заметил, что цитаты, бывает, приписываются не тем пользователям. Так что за ним (форумом) глаз да глаз, а то понапишет тут, оправдывайся потом. Джупитер, сам ты глючишь, протри очки и смотри что пишешь. Видали? Я этого не писал!
Немножко добавлю. У этих пакетов должна стоять галка Continue during combat, а то один чёрт всё бросят и убегут драться. А спрыгивание регулируется галкой Allow falls. По идее, если не отмечена, то с опасной высоты сигать не должны.
Приветствия из квестов с высоким приоритетом забивают приветствия с низким. Если после приветствия диалог построен через поле Choices и никогда не возвращается в "корень", то возможна ситуация, когда у других квестов не будет шанса вставить словечко. Тогда надо снижать приоритет и настраивать условия. Если же по каким-то причинам надо обязательно заниматься гемором в виде запусков-остановок квеста, то запуск - StartQuest, а остановка - StopQuest.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №145
| Тема: Скрипты
написано: 23 августа 2012, 22:38
Текущая - в том, что markerRef либо не создан, либо не назначен постоянной ссылкой (Persistent Reference). Грядущая - в том, что каждый дохлый заскриптованный моб не возрождается на маркере каждые две минуты, а рождается на маркере каждые две минуты. Не многовато ли выйдет?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №146
| Тема: Помощь по моддингу
написано: 26 августа 2012, 16:25
| Отредактировано: Joopeeter - 26 августа 2012, 16:32
Вис, ты не уточнил, что и как не работает. В скрипте я вижу, что при достижении переменной AAAzazaza691Medicine значения 10 навык медицины буде повышаться на 1 при каждом прогоне скрипта (для квестового гейммода это по умолчанию каждые 5 сек.). Если навык должен быть повышен один раз за игру, то надо так:
Code
short DoOnce Begin GameMode IF AAAzazaza691Stimpak>=2 Set AAAzazaza691Medicine to AAAzazaza691Medicine + 1 Set AAAzazaza691Stimpak to 0 endif if DoOnce==0 IF AAAzazaza691Medicine>=10 player.ModAV medicine 1 set DoOnce to 1; всё, в следующий раз проверка if DoOnce==0 не даст снова повысить навык endif endif End
Если после повышения надо начать счёт сначала, то short DoOnce надо убрать, а вместо set DoOnce to 1 надо вставить Set AAAzazaza691Medicine to 0. Кстати, неясно, зачем там две переменных.
Если же до повышения вообще не доходит, то проверь флаги в эффекте. В базовом вроде бы должен стоять Self, в стимуляторе - "на себя".
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №147
| Тема: Помощь по моддингу
написано: 26 августа 2012, 16:51
| Отредактировано: Joopeeter - 26 августа 2012, 16:53
Проверь, срабатывает ли эффект вообще. Кольнись стимпаком и введи с консоли ShowQuestVars [ID квеста в виде цифр]. Покажутся квестовые переменные. Повысились?
Цитата Вис
Ну там переменную Medicine повышать должны не только стимуляторы.
Всё равно не ясно, что мешает "не только стимулятору" и стимулятору повысить непосредственно медицинскую переменную. Ну, тебе видней.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №148
| Тема: Помощь по моддингу
написано: 26 августа 2012, 17:13
| Отредактировано: Joopeeter - 26 августа 2012, 17:20
Вис, погоди маленько, квестовый гейммод медленный, работает раз в 5 секунд. Может, в этом и проблема, а? Кстати, чтоб не гонять гейммод, всё можно перенести в скрипт эффекта, а в квестовом оставить только переменные. И срабатывать будет без задержек.
Set AAAzazaza691Naviki.AAAzazaza691StimPak to AAAzazaza691Naviki.AAAzazaza691StimPak + 1
IF AAAzazaza691Naviki.AAAzazaza691Stimpak>=2 Set AAAzazaza691Naviki.AAAzazaza691Medicine to AAAzazaza691Naviki.AAAzazaza691Medicine + 1 Set AAAzazaza691Naviki.AAAzazaza691Stimpak to 0 endif IF AAAzazaza691Naviki.AAAzazaza691Medicine>=10 player.ModAV medicine 1 Set AAAzazaza691Naviki.AAAzazaza691Medicine to 0 endif End
То есть переменные всегда доступны, так как находятся в квесте, а все проверки и изменения происходят однократно после укола.