Всё там есть: startquest, stopquest, setstage (тоже выполняет фрагмент). Многие переменные (даже скриптовые) также можно менять через консоль. Предложение было не в том, чтоб легальность предмета подтверждалась фактом крафта в кузне, а чтоб подтверждалась прохождением всех субквестов: 1. Игрок нашел чертеж - поставилась переменная "игрокНашелЧертеж" 2. Игрок собрал ресурсы - поставилась переменная "игрокСобралРесурсы" 3. Игрок выслушал занудную болтовню какого-то скелета, предостерегающего от крафта - поставилась переменная. А потом это всё проверяется.
Или другой вариант. Особый крафт через скрипт, а не стандартными методами. Когда игрок всё собрал и всё выполнил, он активирует кузню (обычную или особую) и ему выскакивает выбор: "обычный крафт" или "скрафтить адскую хрень". Такое можно, например, через временный перк сделать.
Но если кто-то моё мнение спросит, мне идея защиты от читерства вообще не нравится...
Очень нужно чтобы создание персонажа при начале новой игры происходило в строго обозначенном мною месте, в новой локации то бишь. Попытки найти скрипт или нечто подобное в других модах результата мне не дало (Не нашёл короче говоря).
По-моему, игрок вообще нигде не появляется, если не использовать на нем MoveTo. В одном из первых скриптов главного квеста, есть строчка, которая перемещает игрока на стартовую позицию. Если эту строчку закомментировать, то игра вообще не начинается.
Не так, чтоб "вшит"... На одной из стадий игрока просто одевают в одежду заключенного и перемещают на стартовую позицию. Тебе, наверное, нужно: 1) Предотвратить запуск главного квеста. 2) Сделать свой квест, который будет перемещать игрока в нужную тебе позицию. 3) На каком-то этапе запустить таки главный квест, но не с начала, а с той стадии, которая тебе нужна.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №335
| Тема: Вопросы по скриптам Papyrus
написано: 8 октября 2014, 17:14
| Отредактировано: Dsion - 8 октября 2014, 17:15
Если вариант с отключением главного квеста через ini не подходит, можно еще отредактировать стадию 0 на главном квесте (MQ101), чтоб она останавливала ванильный квест и запускала твой. Я оба варианта проверил.
Добавлено (08 Октября 2014, 21:14) --------------------------------------------- После [General]там новая линия начинается. Не знаю, почему чертов форум не дает её поставить.
На creationkit.com написано вот такое: Subsequent calls to ResisterForSingleUpdate will override previous ones - i.e. calling it back to back will result in the second registered update occurring, but not the first. It will not interfere with updates started by RegisterForUpdate however.
То есть, вторая регистрация полностью выбивает первую. По идее, событие сработает через секунду после второго каста...
Ну так давай. Анимацию сложно делать "на глаз" - нужно крутым художником быть. Но если есть пара видеокамер и возможность обклеить кого-то наклейками, то намного проще и веселее.
Может быть, возможно просто взять готовый скрипт с алталя Кинарет. Я его не смотрел, но 90%, что он будет работать и для лавки. Но зачем приделывать к лавке благословение Кинарет? Сделай, лучше ДЫБУ!
Челы, кто-нибудь хоть немного имел дело с анимацией в NIF файле? В мире будет некий активатор. Мне нужно иметь возможность изменять его цвет (или форму) из скрипта. На ObjectReference можно вызвать функцию PlayGamebryoAnimation. Хотелось бы что-то такого типа:
Хочу nif, чтоб посмотреть, как это всё устроено. Какие флаги стоят, как связаны VisController, ControllerManager, ControllerSequence, BoolInterpolator, BoolData итп. Вряд ли есть другой способ мне помочь, кроме как показать пример.
Ну хорошо, расскажу еще конкретную задачу на понятном языке. Стоит такая собачья будка в Фолкрите. Над будкой табличка: "Тузик". А тут я такой, оп: budka.PlayGamebryoAnimation("SwitchDog"). Табличка "Тузик" пропадает и появляется табличка "Владимир". Но будка остается той же.
Зачем заморачиваться? Раз уж ты забил на честность и решил читерить, просто установи себе 100000 хп, маны и выносливости через консоль. И добавь все перки.
Добавлено (23 Октября 2014, 19:01) --------------------------------------------- Можно еще завершить все квесты через консоль... Ну чтоб хвалиться, что прошел Скайрим.
Напишу про любимый мод и заодно пожалуюсь Обидно, когда лучший из твоих модов оказывается наименее популярным из твоих модов. 1. Fixed level - очень простой и маленький мод, который: - Навсегда устанавливает уровень персонажа в 90. С самого начала в игре можно встретить противников любого уровня и в любой экипировке. Хотя топовая броня и оружие все-равно очень редкие. Хотите с непрокачанными умениями и без перков потягаться с бандитом 20 уровня? - Значительно замедляет скорость прокачки всех навыков. Игра растягивается и намного сложнее достичь совершенства. - Позволяет брать любое количество уроков у тренеров, но значительно увеличивает их стоимость. Решает проблему с избытком денег.
Всё максимально просто, но игра очень изменяется. Неприятно, что мои тупые и примитивные моды, написанные "ради фана", стали более популярными.
...или если он выпьет зелье в процессе каста, или если по нему попадет шок-магия, или если на нем закончится бафф или дебафф, изменяющий количество маны.
Но предложить нечего... Можно сделать функцию аналогичную ивенту OnSpellCast, но которая будет вызываться каждую секунду пока персонаж колдует. Но это не надежно и данные получатся только приблизительные...
Добавлено (24 Октября 2014, 00:31) --------------------------------------------- Вспомнил еще про знак атронаха и перк "Ward Absorb", которые тоже запросто могут добавить ману в процессе каста...
Ronolus, все объекты в мире - это ObjectReference, конечно. И сундук, и NPC, и даже какая-нибудь стена. А вот тут методы, которые можно вызвать на ObjectReference: http://www.creationkit.com/ObjectReference_Script
Я бы попробовал метод Reset() для начала.
Если по каким-то причинам Reset не сделает того, что нужно, то есть и другие способы. Например, очистить контейнер методом RemoveAllItems и добавить туда какой-нибудь LeveledList.
Добавлено (29 Октября 2014, 12:15) --------------------------------------------- Arin, там у каждого скрипта две версии: исходник (.psc) и скомпилированный (.pex). Скомпилированные попадают в папку Scripts, а исходники - в Scripts\Source. Может, у тебя в папке Source всё еще осталась исходная версия этого скрипта? А если остался только pex, то надо декомпилировать. Но это не круто... Когда работаешь над модом, нужно беречь и psc и pex.
Самой игре не нужны исходники (.psc). Их запросто может и не быть в работающем моде. Это уж на усмотрение автора: одни их кладут в bsa, но многие - нет. Если в bsa есть папка scripts, в ней есть папка source, а там psc версия скрипта, то её можно открыть блокнотом и скопировать сюда. А если только pex... Ну я знаю, что есть декомпилятор скриптов папируса. Тут даже давали ссылку. Но я им не пользовался и лень начинать.
Февраль, явно, ошибка какая-то совсем простая и глупая. Забыл заполнить проперти или пытаешься добавить перк какому-то NPC, а не игроку... Просто в самом скрипте там особо нечему не работать.
Добавлено (30 Октября 2014, 20:41) --------------------------------------------- Если интересно, то есть, как минимум, 3 способа реализовать это вообще без единого скрипта.
Да забей. Скрипт полностью рабочий. Если перк кастомный, то скрипт вполне сойдет.
Вот если бы кастомное оружие добавляло ванильный перк, тогда имело бы смысл использовать другой способ. Потому что, если пользователь отключит мод с экипированным оружием, перк не удалится. В таком случае было бы немного правильнее обернуть перк в Ability. И использовать AddSpell, RemoveSpell. Или дать игроку эту абилку навсегда, но прописать на эффекте условие, чтоб действовало только тогда, когда экипировано конкретное оружие.
plaqboy, Базовый реген маны (расовый) - это ActorValue MagickaRate. Например, цифра 3 означает, что регенится 3% маны в секунду. Бонус от вещей итп - это ActorValue MagickaRateMult. Например, значение 350 означает 350% базового регена (базовый * 3.5) Замедление регена во время боя - это, скорее всего, GameSetting fCombatMagickaRegenRateMult. По умолчанию, там 0.33 - реген замедляется в три раза.
Добавлено (02 Ноября 2014, 12:28) --------------------------------------------- Ну это всё через консоль можно менять. setactorvalue и setgs.
Создать что-то: ObjectReference MarkerRef = PlayerRef.PlaceAtMe(XMarker)
Но если что-то создал, нужно не забыть удалить. Тебе это действительно надо? Можно ведь просто сохранить координаты игрока, а потом его туда перемещать методом SetPosition. Или хоть не создавать новый маркер каждый раз, а создать один единственный и перемещать его.
Тоже пробовал. Строка:Debug.MessageBox(tgActor.GetLeveledActorBase().GetName() + " предпочитает носить обувь на каблуках") Всё равно выдает кракозябры.
Что-то я не уверен, что Debug функции - крутой способ выводить сообщения пользователю. Разве какие-то ванильные скрипты так делают? Для этого есть Messages. У них никаких проблем с кодировками и их намного легче переводить на другие языки (чем скомпилированный скрипт), если кому-то понадобится. И имя конкретного NPC в них можно вставить без SKSE функций.
Правильно Myprism сказал: забэкапить вылетающий мод, а потом удалять из интерьера объекты группами и проверять, помогло ли. Странно, что я об этом не подумал...