• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
именно все так и сделал, никто так и не сдох, хотя бегали раз по десять через него.
Ты заметь, что у тебя вообще ни один свой созданный триггер не работает, ни на убийство, ни на дверь... Команда Kill() не может не убить простого НПС. У тебя проблема с самими триггерами или с их созданием.
там уже всё облазил смотрел скрипт внизу в той теме, где, вроде, перебор шмоток идёт и они выкидываются, но не так силён в этой среде программирования...
В итоге не могу написать свой скрипт, который бы просто выкинул в цикле всё ВОЗМОЖНОЕ моё добро в некий ящик. В игре камень барензии не выкидывается в ручную, а скрипту почему-то пофиг.
Добавлено (02 Ноября 2013, 17:56) --------------------------------------------- Хотя нашёл выход) Установил в моде, чтобы не терялись шмотки. А после респа в храме - ЧЕСТНО складываю всё возможное добро в ящик)))
Человек - смертный Бог!
Изменение репутации для пользователя DarkVetal
DarkVetal
Сообщение №484
написано: 2 ноября 2013, 14:21
| Отредактировано: DarkVetal - 2 ноября 2013, 14:45
AleksTirex, заработало, только дети, ГГ и квестовые персонажи не дохнут, а остальные вполне с первого раза отправляются в мир иной. Есть ли возможность убивать всех, или это делается только снятием галочки у персонажей? P.S. Дракон тоже не умер.
DarkVetal, да ты читер , если ГГ не дохнет. Или ты не убрал условия в скрипте (там было запрещено убивать ГГ), или играешь с TGM. Чтобы киллить всех и квестовых НПС тоже, надо так:
Event OnTriggerEnter(ObjectReference akActionRef) (akActionRef as Actor).KillEssential() EndEvent
Но если на НПС стоит галочка Invulnerable, то такого НПС ничем не убьёшь (это галочка "неуязвимый").
************* Вот только зачем нужных квестовых НПС убивать, не понятно, ведь квесты встанут/зависнут.
Так постом выше написано, там полный скрипт (событие и одна команда). Вообще никаких условие не надо в скрипте.
KillInvulnerable - такой команды нет.
**************
Event OnTriggerEnter(ObjectReference akActionRef) bool bInvulnerable if (akActionRef as Actor).GetActorBase().IsInvulnerable() (akActionRef as Actor).GetActorBase().SetInvulnerable(false) bInvulnerable = true endIf (akActionRef as Actor).KillEssential() if bInvulnerable Utility.Wait(0.25) (akActionRef as Actor).GetActorBase().SetInvulnerable() endif EndEvent
В одном скрипте мне нужно манипулировать фракциями. Я передаю названия фракций скрипту в виде свойств скрипта. Но, как я понимаю, через свойства надо передавать только переменные, а у меня эти фракции для данного скрипта остаются константами. Как обратиться к названиям фракций внутри скрипта напрямую, не передавая их через свойства? Скрипт висит на магическом эффекте.
Добавлено (05 Ноября 2013, 10:18) --------------------------------------------- Ещё, как из скрипта на магическом эффекте запустить произнесение неписью слов из диалога одного из ванильных квестов? Поясню подробнее. Мы можем установить любой квест на любую стадию. Например, квест женитьбы можно поставить на стадию 10 или 20. Но в промежутке идёт диалог с ГГ с потенциальным супругом. ГГ спрашивает, нравится ли он, получает утвердительный ответ, дальше его очередь отвечать. Вот мне нужно то, что произойдёт дальше в случае отказа ГГ. Т.е. мне нужно перевести квест скриптом вот в эту точку отказа главного героя со всеми вытекающими последствиями, главным из которых является текст произносимый отвергнутой невестой (женихом).
Можно ли без SKSE получить в скрипте список всех предметов в инвентаре актёра/контейнера?
Можно, но геморойно. Для этого надо удалить/переместить все вещи в другой контейнер, и в этот момент отслеживать события (OnItemRemoved) на удаление предметов. При каждом срабатывании этого события ID записывается в массив. Желательно "организовать очередь" из событий. Потом все вещи возвращаются в исходный контейнер. Если это актёр, то одеваются вещи, которые были до этого одеты. Это и муторно и некрасиво смотрится.
Поэтому тот вариант с SKSE на два порядка проще и удобнее.
Потому что мод оказывается к нему привязан, т.е. не будет работать у игрока без SKSE. Это право игрока решать, что ему ставить, а что нет. Если моду что нужно, то оно должно быть включено в мод. А вот с SKSE так поступить нельзя, так как он зависит от версии игры. Так что, его использование - безусловный минус. Неизбежное зло, с которым я смирился.
Это право игрока решать, что ему ставить, а что нет. Если моду что нужно, то оно должно быть включено в мод.
Это бесспорно, что ставить и что нет, решает сам игрок. Но причём тут SKSE? Ведь полная аналогия с этим - использование ресурсов из DLC, в этом случае игрок так же вынужден ставить этот DLC для использования мода. Сам же DLC никто не внедряет в свой мод, а просто пишут в требованиях к моду его наличие. Дальше уже сам игрок решает, есть ли смысл ставить этот DLC (если он не стоит), чтобы использовать данный мод. Точно так же и с SKSE - это простое требование к моду, т.е. это ресурс, которым будет пользоваться мод.
Зависимость SKSE от версии игры - полная аналогия с версиями самой игры. Более свежая версия SKSE будет работать со всеми модами, сделанными на ранних версиях.
Единственный реальный фактор - это для чего именно делается мод. Если для себя, для своего хобби и своего желания заниматься любимым делом, то какая разница автору, поставит ли "Вася и т.д." этот мод или нет, из-за применения в нём SKSE. Главное, чтобы мод работал именно так, как хочет автор. Но если мод делать для кого-то или по другим соображениям, тогда да, надо учитывать желания потребителей.
Я использую элементы DSL, включая их в свой мод полностью. При этом не требую установки самого дополнения. Строго говоря, это нарушает авторские права авторов дополнения, так как игрок использует модели оттуда, не оплачивая самого дополнения. Ну, кто хочет быть честным до конца, может просто оплатить это дополнение.
А вот насчёт, для кого делается, вопрос, конечно интересный. Для меня это тоже игра и я играю в то, что это нужно кому-то помимо меня и делаю так, как если бы это было серьёзной работой, хотя это всего лишь хобби.
Изменение репутации для пользователя Kepper
KepperOffline
Сообщение №498
написано: 11 ноября 2013, 05:40
| Отредактировано: Kepper - 11 ноября 2013, 06:02
Дело в том, что я ставил себе моды(например белуа сангвинаре) использующие SKSE, и через некоторое время сейв грохался. Вполне возможно, что виноваты сами моды, а не SKSE. Но я пока поостерегусь его использовать. П.С. Где можно посмотреть сообщения об ошибках при компиляции скрипта?
Изменение репутации для пользователя Alliria
AlliriaOffline
Сообщение №499
написано: 11 ноября 2013, 07:46
| Отредактировано: Alliria - 11 ноября 2013, 07:49
Ну когда травишься 3 раза подряд с разными модами, то это настораживает. Но раз говорите что SKSE стабильность не снижает, то буду использовать.
Цитата AleksTirex
Поделись идеей (можно и без подробностей, интересна сама идея получения списка инвентаря без его перебора).
Собственно мне нужен был не сам перебор, а проверка какие вещи одеты в момент снятия вещи. Ради эксперимента прикручиваю к своему моду одевание трусов и лифа при снятии вещей с мёртвых НПС. Пока придумал решение: добавить keyword в вещи и проверять наличие этих keyword. Благо НПС используют одежду из моего мода.
Но вопрос все равно оставил, тк это потребуется для еще одной задумки.
Собственно мне нужен был не сам перебор, а проверка какие вещи одеты в момент снятия вещи. Ради эксперимента прикручиваю к своему моду одевание трусов и лифа при снятии вещей с мёртвых НПС. Пока придумал решение: добавить keyword в вещи и проверять наличие этих keyword. Благо НПС используют одежду из моего мода.
Ну так это совсем другой вариант, здесь не надо узнавать содержание инвентаря. Всё гораздо проще: 1. Делаешь перк Activate и даёшь ГГ. Условия: если цель == НПС и цель мертва. 2. В перке скрипт, он передаёт референс НПС алиасу, на котором висит скрипт. 3. В этом скрипте событие на снятие предмета. Когда ГГ снимает с НПС шмотку, то это событие отдаёт ID снятой шмотки. Вот её и можно проверить и при совпадении параметров (типа слот боди) одевает на НПС лифт. И т.д. 4. Чтобы отследить закрытие инвентаря, достаточно после команды на назначение НПС алиасу поставить Utility.Wait(1.0), тогда любая команда отработает только после закрытия инвентаря. Этой командой выключаешь режим слежения за снятием шмоток (алиас.Clear()).
И не надо SKSE.
******** Возможно, и вторая задумка может быть реализована на другом принципе, это уже от самой задумки зависит.
Моды делают с применением SKSE не от удовольствия, а от того, что дефолтными методами добиться желаемых результатов никак. А это значит, что мод уже сложнее простого "добавить-удалить", а грамотно написать такое могут далеко не многие, и ещё меньше - учесть все возможные последствия вносимые своим модом/командами/действиями. Вот такие моды и могут давать наибольшие глюки в игре, а простенькие моды, естественно, и глючат меньше, хоть и не всегда. Надо иметь талант, чтобы сделать меч или броню, которая сможет загубить игру или сохранение. :D
Изменение репутации для пользователя mayor
mayorOffline
Сообщение №503
написано: 12 ноября 2013, 06:22
| Отредактировано: mayor - 12 ноября 2013, 06:24
помогите пожалуйста решить проблему.. у меня есть 24 кнопки (каждая кнопка своя музыка) вот скрипт
MusicType Property myMusic1 auto
MusicType Property myMusic2 auto
MusicType Property myMusic3 auto
MusicType Property myMusic4 auto
MusicType Property myMusic5 auto
MusicType Property myMusic6 auto
MusicType Property myMusic7 auto
MusicType Property myMusic8 auto
MusicType Property myMusic9 auto
MusicType Property myMusic10 auto
MusicType Property myMusic11 auto
MusicType Property myMusic12 auto
MusicType Property myMusic13 auto
MusicType Property myMusic14 auto
MusicType Property myMusic15 auto
MusicType Property myMusic16 auto
MusicType Property myMusic17 auto
MusicType Property myMusic18 auto
MusicType Property myMusic19 auto
MusicType Property myMusic20 auto
MusicType Property myMusic21 auto
MusicType Property myMusic22 auto
MusicType Property myMusic23 auto
MusicType Property myMusic24 auto
bool bDone
Event OnActivate(ObjectReference akActionRef)
myMusic1.Remove()
myMusic2.Remove()
myMusic3.Remove()
myMusic4.Remove()
myMusic5.Remove()
myMusic6.Remove()
myMusic7.Remove()
myMusic8.Remove()
myMusic9.Remove()
myMusic10.Remove()
myMusic11.Remove()
myMusic12.Remove()
myMusic13.Remove()
myMusic14.Remove()
myMusic15.Remove()
myMusic16.Remove()
myMusic17.Remove()
myMusic18.Remove()
myMusic19.Remove()
myMusic20.Remove()
myMusic21.Remove()
myMusic22.Remove()
myMusic23.Remove()
myMusic24.Remove()
if bDone == false
myMusic9.Add()
bDone = true
elseif bDone == true
bDone = false
endif
EndEvent
проблема в том,что музыка не играет при нажатии на кнопку.на каждой кнопке свой скрипт только с измененной добавляемой песней,в свойствах все песни указаны,в music type галочки Abrupt Transition и Plays One Selection выставлены (пробовал разные вариации),песни созданы верно в xwm формате (на другом скрипте они в игре воспроизводились),дефолтную комбат музыку кнопки выключают (как и должно быть),приоритет у всех треков максимальный,пробовал старые сохранения и новую игру.в чем может быть проблема?почему не воспроизводится моя музыка в игре?
Изменение репутации для пользователя Kepper
KepperOffline
Сообщение №504
написано: 12 ноября 2013, 09:19
| Отредактировано: Kepper - 12 ноября 2013, 09:20
1. Делаешь перк Activate и даёшь ГГ. Условия: если цель == НПС и цель мертва. 2. В перке скрипт, он передаёт референс НПС алиасу, на котором висит скрипт.
Пока я повесил перк на расы, так что если другие НПС будут раздевавать моих НПС, то скрипт сработает. Но твой вариант будет лучше тк более универсален и я не припоминаю чтобы другие НПС раздевали мёртвых.
В скрипте можно объявлять хранить переменные. Например
Всем привет! Как проверить есть ли в определенной точке координат пол (твердая поверхность), или там пустота? И еще: есть ли возможность создать глобальный массив типа Actor. И, если массив можно создать, то как его правильно удалить при необходимости, чтоб не портил сейв.
Задавал вопрос, но он остался без ответа, насчет того, как написать скрипт для активатора, открывающего фасттревел только для определенных локаций (точнее, маркеров карты). Сам нашел, что существует команда AddtoMap, с параметрами true и false, то есть она открывает доступный или недоступный для фасттревела маркер. Теперь остается следующее - получается, что фасттревел надо отключать всегда и включать только при активации активатора. Это первое. А второе - пока непонятно, как лучше - отключать возможность фасттревела ко всем маркерам, кроме избранных, скриптом или же изменить их атрибуты в конструкторе, чтобы они были недоступны для фасттревела. В общем, поделитесь мыслями.
При создании в квесте алиаса на уникальный персонаж Грелод Добрая, квест перестаёт работать. Просто от создания Алиаса, который ещё даже нигде в квесте не используется. Почему это может происходить?
При создании в квесте алиаса на уникальный персонаж Грелод Добрая, квест перестаёт работать. Просто от создания Алиаса, который ещё даже нигде в квесте не используется. Почему это может происходить?
При запуске квеста заполняются его алиасы, и если какой-то алиас заполнить не удаётся и на нём нет галочки Optional, то квест запускаться не должен. Поставь галочки Allow Dead, Allow Disabled, Allow Reserved, и проверь квест, возможно, всё заработает.
После релиза мода с "когтями", благодаря отзывам пользователей, у меня появилось два вопроса:
1. А возможно ли сделать так, чтобы надетый предмет невозможно было снять? (цель: когда ГГ попадает например в тюрьму, инвентарь у него отбирают, а вот когти должны остаться) (сейчас когти имеют тип - драгоценность, занимают предпоследний слот (который перед "FX01"))
2. Как поймать момент, когда магический эффект закончился (и пропадёт его АртОбьект) ? Я хотел бы вызвать коготь другой формы, когда полностью скроется предыдущая (а значит закончится маг. эффект её вызвавший). Я написал в спеле для вызова маг. эффекта проверку с "HasMagicEffect", но она не работает. (т.е. если проверять на 0 - новый эффект никогда не вызывается, если на 1 - вызывается всегда, даже если проверяемый маг. эффект ещё не закончен)