Тема для вопросов по скриптингу.
Функции папируса:
На английском
На русском (не все, но базис)
#641
Отправлено
- werr, Chesh¡re и Olechkafum нравится это
#642
Отправлено
Ну так и читал бы внимательней, и повторял сразу.
Так бы и делал, проблема в том что сами примеры совершенно другие, следовательно и скрипты не такие как мне нужно. По поводу моментального респавна уже не важно, главное что бы появилось содержимое. Скрипты эти конечно... это тебе не озвучки в неписях ломать что бы напарников делать
P.S. Теперь правильно?
Scriptname ScriptAlchemyCommon extends ObjectReference
Event OnActivate(ObjectReference akActionRef)
self.Reset()
EndEvent
Сообщение отредактировал Enush: 17 июля 2020 - 10:47
#643
Отправлено
Как бы и делал, проблема в том что сами примеры совершенно другие, следовательно и скрипты не такие как мне нужно.
Так в уроках тебя общим принципам учат. Что, как, куда. А дальше ты уже по этим принципам сам свое пишешь, руководствуясь списком доступных функций и прочих штук.
Вот три основных страницы, в которых есть прям почти все, что надо.
https://www.creation...:Script_Objects
https://www.creation...php?title=Event
https://www.creation...yword_Reference
Теперь правильно?
Ну, типа того, да.
#644
Отправлено
Благодарю за подробное толкование скриптинга так такового. Я знаю что это самый банальный и лёгкий вариант, который только можно придумать, но я в этом вообще ни разу не разбирался до этого, и, наверное уже не стану, ибо то чего я хотел получить я и получил. Что касается моей сумки то всё работает безотказно, единственное что я забыл убрать модуль на рандомные зелья каждый определённый уровень, уже исправил, в сумке только три моих ингридиента для яда, которые обновляются каждый раз при открытии контейнера. Ещё раз большое спасибо.
#645
Отправлено
Скрипт из квеста про амулет Бенду,что добавляется убив вора(событие срабатывает при попадании предмета в инвентарь в количестве 1 шт)Как изменить скрипт ,чтоб он переводил на 30 стадию с Проверкой что у игрока есть 2 амулета и только после этой проверки осуществил переход на 30 стадию ,если же у игрока 1 амулет или не одного чтоб оставался так и на 20 стадии.Ниже тело скрипта
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer)
if (newContainer == Game.GetPlayer())
GSQ01.SetObjectivedisplayed(30)
GSQ01.SetStage(30)
endif
EndEvent
#646
Отправлено
Скрипт из квеста про амулет Бенду,что добавляется убив вора(событие срабатывает при попадании предмета в инвентарь в количестве 1 шт)Как изменить скрипт ,чтоб он переводил на 30 стадию с Проверкой что у игрока есть 2 амулета и только после этой проверки осуществил переход на 30 стадию ,если же у игрока 1 амулет или не одного чтоб оставался так и на 20 стадии.Ниже тело скрипта
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer)
if (newContainer == Game.GetPlayer())
GSQ01.SetObjectivedisplayed(30)
GSQ01.SetStage(30)
endif
EndEvent
Добавь еще одно условие if
типа такого:
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer) if (newContainer == Game.GetPlayer()) if (Game.GetPlayer().GetItemCount(SuperSecretAmulet)>= 1) GSQ01.SetObjectivedisplayed(30) GSQ01.SetStage(30) endif endif EndEvent
Только не забудь этот SuperSecretAmulet в список property добавить, и задать, что это за амулет такой.
Цепляешь этот скрипт к двум разным амулетам, каждому определяешь в проперти другой амулет. Сработает только если оба амулета окажутся в инвентаре одновременно.
Это если амулеты разные.
Если одинаковые (один и тот же предмет в количестве двух, типа обычного золотого амулета) - то просто исправь циферку в скрипте с 1 на 2.
- Antares669 это нравится
#647
Отправлено
Добавь еще одно условие if
типа такого:
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer) if (newContainer == Game.GetPlayer()) if (Game.GetPlayer().GetItemCount(SuperSecretAmulet)>= 1) GSQ01.SetObjectivedisplayed(30) GSQ01.SetStage(30) endif endif EndEventТолько не забудь этот SuperSecretAmulet в список property добавить, и задать, что это за амулет такой.
Цепляешь этот скрипт к двум разным амулетам, каждому определяешь в проперти другой амулет. Сработает только если оба амулета окажутся в инвентаре одновременно.
Это если амулеты разные.
Если одинаковые (один и тот же предмет в количестве двух, типа обычного золотого амулета) - то просто исправь циферку в скрипте с 1 на 2.
Спасибо вам за грамотные советы!Хотя в вашем скрипте и ошибочка не компилируется так как выводит -Двойное условие...Вот когда одно удалить ,то все начинает компилироваться,но что интересно при попадании из кузни в инвентарь пишет сразу же на первой броньке что выкованны 2 шт.Хотя и прописал как вы советовали ввел вот это на предмете
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer)
if (newContainer == Game.GetPlayer())
(Game.GetPlayer().GetItemCount(PirateArmor)>= 2)
ReturnQeenPotema.SetObjectivedisplayed(24)
ReturnQeenPotema.SetStage(25)
endif
EndEvent
Armor Property PirateArmor Auto
Сразу автоматом сменилась стадия квеста после попадания первого же одеяния в инвентарь,а нужно по условию что на первой стадия молчит и при добавлении второй срабатывает.А У меня срабатывает скрипт сразу после выплавки как только первый попадает в инвентарь минуя условие(Чудно))Одеяние одно и тоже.
#648
Отправлено
А У меня срабатывает скрипт сразу после выплавки как только первый попадает в инвентарь минуя условие
Потому что у тебя в скрипте нет второго условия.
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer) if (newContainer == Game.GetPlayer()) && (Game.GetPlayer().GetItemCount(PirateArmor)>= 2) GSQ01.SetObjectivedisplayed(30) GSQ01.SetStage(30) endif EndEvent
Можно попробовать так.
- Antares669 это нравится
#649
Отправлено
Все вопрос решился и все заработало все вышеобозначенные скрипты неправильные что исходили от меня и от глубоко уважаемого Azazellz,я просто забыл про Великий и Могучий оператор ELSE)))) в Скрипте банально отраженны только 2 условия это передача вещи в контейнер и смена стадии при ее попадании,но не было Третьего условия что если вещь попадает в инвентарь в количестве <=1,то стадия квеста висит на прежней 24 строке.Естестевенно раз нет третьего условия ,то доминировал скрипт второго условия и сразу после первого предмета переключал на новую стадию.Но Добавив оператор ELSE-мы включили Проверку всем Условиям и как оказалось чего то не хватает а именно задней стадии ,что если у игрока нет 2 бронек то доминирует уже не 25 стадия а именно прописанная оператором ELSE <=1 именно 24 нужная стадия!!Еще раз Благодарю Azazellz за помощь......
#650
Отправлено
Потому что у тебя в скрипте нет второго условия.
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer) if (newContainer == Game.GetPlayer()) && (Game.GetPlayer().GetItemCount(PirateArmor)>= 2) GSQ01.SetObjectivedisplayed(30) GSQ01.SetStage(30) endif EndEventМожно попробовать так.
Спасибо вам большое за помощь и участие Azazellz!Но ваш скрипт как и выше мои все ошибочные,нет они конечно компилируются и работают но неправильно отображают Функциональность в игре,тоесть этакие скриптовые полуфабрикаты.где минимум условий а потому такая трабла!!Добавил третье условие через оператор (else) с ее проверкой двух предыдущих стадий и все выстроилось в одну линию и теперь -Четко и правильно работает скрипт !!Мы имея 2 шмотки переключаемся на стадию 25 а имея всего одну шмотку сидим Принудительно на стадии 24 и даже если попробуем словчить и побежим с одной шмоткой при заявленном операторе 25 типа у нас в инвентаре 2 шмотки то оператор else даже не открывает диалог квестодателя!!А вот выковав еще одну шмотку появляется диалог на передачу 2 одеяний!!Еще раз вас от Души Благодарю Azazellz.
#651
Отправлено
Может кому то когда то и пригодится мое инфо!!и человек сэкономит для себя пол дня поисков!!Вроде бы в простейшем скрипте!!Но посмотрите возможности Оператора ELSE-мы увидим что он контролирует все Процессы с передачей при Условиях
Полноформатный оператор if-else содержит заголовок, включающий условие, тело 1, ключевое слово else и тело 2. Тела оператора могут состоять из одного или нескольких операторов и обрамляются фигурными скобками. if ( Условие ) // Заголовок оператора и условие { Блок операторов 1, // Если условие истинно, то.. составляющих тело1 //..выполняются операторы тела 1 }else // А если условие ложно..
Оператор else
Оператор else выполняется в том случае, если условие указанное в if ложно. В таком случае будет проигнорирован код в блоке if, и программа сражу перейдет к выполнению кода в блоке else.
Данный оператор нужно прописывать после закрывающей фигурной скобки блока кода if или после единственной инструкции оператора if:
if (a < b) {
a = b;
} else {
b = a + 1;
}
// или так
if (c < b)
c = 7;
else
cout << "C >= b" << endl;
if (a < b) {
a = b;
} else {
b = a + 1;
}
// или так
if (c < b)
c = 7;
else
cout << "C >= b" << endl;
Как видите, правила к коду внутри оператора else ровно такие же как и к коду внутри оператора if. Теперь давайте попробуем создать более сложную программу, которая будет использовать конструкцию ветвления.
Пример
В качестве примера давайте напишем программу, которая будет эмулировать поведение продавца магазина. Для создания подобной программы давайте воспользуемся структурой if-else:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
setlocale(0, ""); // устанавливаем локаль
bool b; // создаем переменную типа bool
cout << "Хотите купить машину? "; // выводим сообщение
cin >> b; // узнаем ответ покупателя
if (b) { // проверяем, что ответил пользователь
cout << "Хотите Audi? "; // опять сообщение
cin >> b; // и снова узнаем ответ
if (b) // очередная проверка
cout << "Пройдемте со мной." << endl;
else // предлагаем альтернативное решение
cout << "Тогда вам в соседний отдел." << endl;
} else
cout << "Так зачем вы сюда пришли?" << endl;
return 0;
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
setlocale(0, ""); // устанавливаем локаль
bool b; // создаем переменную типа bool
cout << "Хотите купить машину? "; // выводим сообщение
cin >> b; // узнаем ответ покупателя
if (b) { // проверяем, что ответил пользователь
cout << "Хотите Audi? "; // опять сообщение
cin >> b; // и снова узнаем ответ
if (b) // очередная проверка
cout << "Пройдемте со мной." << endl;
else // предлагаем альтернативное решение
cout << "Тогда вам в соседний отдел." << endl;
} else
cout << "Так зачем вы сюда пришли?" << endl;
return 0;
}
Разбор кода
Здесь все должно быть вам понятным, однако давайте еще разок быстренько пробежимся по написанному нами коду:
В строке 8 мы используем функцию, для вывода русских символов в консоль.
В строке 14 начинается ветвление в C++. Тут у нас стандартный оператор ветвления if, а также оператор else.
Внутри блока if у нас есть дополнительное условие.
Сообщение отредактировал Antares669: 01 октября 2020 - 21:26
#653
Отправлено
Добрый день, уважаемы мастера, помогите пожалуйста с такой проблемой. Хочу сделать так чтобы при испитии зелья у моего ГГ менялся цвет глаз и добавилось несколько пассивных эффектов. Можете подсказать как это сделать?
Какого уровня знания о скриптинге у тебя есть?
Может кому то когда то и пригодится мое инфо!!
Вот только к папирусу как таковому (скриптовый движок игры) отношения это имеет очень опосредованное.
#655
Отправлено
Честно говоря минимальные. Я б изучил, да только Creation Kit на вкладке скриптов вылетает.
Ссылки на туториалы по скриптингу я тут неоднократно выкладывал, там как раз базу показывают. Гуглом переводишь, смотришь на картинки, делаешь так же, учишься. Могу и еще раз выложить.
Ссылки на скриптовые команды, которыми это можно все сделать, я тоже дать могу.
Но как ты это все собрался в кучу собрать, если у тебя СК вылетает?
За тебя этот скрипт с нуля никто не напишет. Если ты хочешь, чтоб тебе помогли, тебе надо сначала основы знать и что-то готовое сюда принести, что можно будет дорабатывать.
#656
Отправлено
Честно говоря минимальные. Я б изучил, да только Creation Kit на вкладке скриптов вылетает.
Привет!!Вылетает-потому что скачал багованную версию (их тут много в инете разных и качать нужно не где попало) К примеру просто прекрасно себя зарекомендовала версия 1.8-это как говорится старый конь борозды не испортит-Прекрасно работает и на версии Скайрим 1.9.Вот ссылка на скачивание :https://yadi.sk/d/8_nSFAvaliNPrg
А как скачаешь не забудь его правильно настроить по этой ссылке:https://tesall.ru/to...i-creation-kit/
Ну и осваивай скриптинг -Да будет тебе Счастье))
Сообщение отредактировал Antares669: 05 октября 2020 - 20:14
#658
Отправлено
Это у меня только нет исходников скриптов DLC Heartfire? Где взять-то их? Может у кого есть, скиньте плиз!
\Skyrim\Data\Scripts\Source\Hearthfire\
Исходники ДЛЦшных скриптов лежат в отдельных папках.
Идут все эти папки (ХФ, ДГ, ДБ) в комлекте с СК обычно. Если у тебя их нет - скачай с другого источника.
И СК их по такому пути не увидит т.е. сурсы из этих папок надо вручную скопировать.
- utac2012 это нравится
#659
Отправлено
\Skyrim\Data\Scripts\Source\Hearthfire\
Исходники ДЛЦшных скриптов лежат в отдельных папках.
Идут все эти папки (ХФ, ДГ, ДБ) в комлекте с СК обычно. Если у тебя их нет - скачай с другого источника.
И СК их по такому пути не увидит т.е. сурсы из этих папок надо вручную скопировать.
Спасибо, нашел.
#660
Отправлено
Ребят, помогите, пожалуйста. Возможно где-то здесь есть ответ, но не заметила.
Ситуация такая. В редакторе создаю дом, с кучей манекенов, полок для книг и т.д. В принципе можно скачать готовый, но в них столько лишнего (для меня) и они какие-то громоздкие.
Застопорилась на создании стойки для конкретного оружия (книги, уникальных предметов). Я понимаю, что нужен, например, даэдрический лук в виде статичного объекта, изначально невидимого в игре. Понимаю что для него нужно создать триггер, у которого указать свои ID и Name (ID обозвала так - aaaDaedricBowTrig, Name - Даэдрический лук) и тут ступор - КАКОЙ СКРИПТ нужен для того, чтобы:
- статичный объект становился видимым при наличии в инвентаре, ну, вот к примеру даэдрического лука
- оружие убиралось из инвентаря
- оружие возвращалось обратно в инвентарь
Предполагаю, что в свойствах у триггера потом нужно поставить активацию игроком, привязать этот триггер к статичному объекту и во вкладке Скрипт в свойствах менять, чем будет активироваться сей объект.
Заранее спасибо
Сообщение отредактировал М.Гасникова: 28 декабря 2020 - 18:53
#661
Отправлено
Застопорилась на создании стойки для конкретного оружия (книги, уникальных предметов).
Если вкратце, то тебе нужен изначально скрытый статик и триггер поверх него.
При активации игроком триггера срабатывает скрипт, который сначала проверяет, есть ли у тебя в инвентаре определенный предмет, и если он есть, то этот предмет переносится в скрытый контейнер, и включается статик.
При повторной активации предмет из контейнера переносится в инвентарь игрока, и статик отключается. Т.е. нужно предусмотреть еще и активацию на тот случай, когда предмет уже размещен.
На нексусе есть несколько моддерских ресурсов как раз для этого. Посмотри лучше там =)
Темы с аналогичным тегами papyrus, help, скрипты, вопросы
Моддинг →
Моддинг Skyrim →
Восстановление на основе Зала ДозораАвтор Alex_andra, 11 дек 2023 mod, help |
|
|||
|
Моддинг →
Моддинг Skyrim →
Отстройка ВинтерхолдаАвтор Alex_andra, 10 авг 2023 bugs, moding, help |
|
||
Моддинг →
Моддинг Oblivion →
Скрипт Для СнаряженияАвтор БесездаБойчик, 07 сен 2022 скрипты, скрипт |
|
|||
Моддинг →
Моддинг Skyrim →
Нужны добровольцы для теста модаАвтор arkadiy111, 11 апр 2022 help |
|
|||
help
Моддинг →
Моддинг Skyrim →
Ram and Skyrim seАвтор Samurai1, 03 апр 2022 help |
|
Количество пользователей, читающих эту тему: 3
0 пользователей, 2 гостей, 0 скрытых
-
Bing (1)