Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

это не то место где часовой, это при в ходе в локацию, один просто постоянно смотрит в стену. Когда отключаю патч все ходят нормально, больше всего что поражает нигде на форумах не могу найти такой проблемы, как будто только у меня такая хрень.  пробовал переустанавливать игру, удалял все сохранения не помогает. Возможно ли как нибудь проверить аи пакеты персонажей внутри и вручную переделать чтобы были как в оригинале без патча?

23.04.2020 11:01:58, Azazellz сказал(-а):

К скриптам это отношения точно не имеет.

Ну и вроде как у них там на входе в храм пост, где часовой стоять должен.

  • Ответов 840
  • Создана
  • Последний ответ

Топ авторов темы

Опубликовано

Здравствуйте, товарищи, у меня вопрос. Я нуб и юзаю КК по Скайриму методом тыка в игре сапёр, потому как программа постоянно вылетает. При попытки создания квеста в разделе Quest Stages появилась ошибка Starting 1 compile threads for 1 files...

Compiling "QF_aaaDialogueFolloverXavier_090DD8B7"...
<unknown>(0,0): Unable to find flags file: TESV_Papyrus_Flags.flg
F:\Games\TES V - Skyrim\Data\Scripts\Source\temp\QF_aaaDialogueFolloverXavier_090DD8B7.psc(3,0): Unknown user flag Hidden
No output generated for QF_aaaDialogueFolloverXavier_090DD8B7, compilation failed.

Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on QF_aaaDialogueFolloverXavier_090DD8B7

 

Я так понял, дело в том, что нет tesv_papyrus_flags.flag, который искать надобно в архиве scripts.rar в папке Data, но у меня не только в дата, у меня нигде такой папочки нет.
Объясните начинающему - что тут можно поделать и в чём я не прав? Я пытаюсь Ксавьера сделать "говорящим" и более менее оригинальным фолловером.

Я права, потому что я так сказала. Несогласные могут идти на йух вместе с прилетающими туда птичками. Ня.

Опубликовано
29.04.2020 07:28:33, Антенна связи с космосом сказал(-а):

Здравствуйте, товарищи, у меня вопрос. Я нуб и юзаю КК по Скайриму методом тыка в игре сапёр, потому как программа постоянно вылетает. При попытки создания квеста в разделе Quest Stages появилась ошибка Starting 1 compile threads for 1 files...

Compiling "QF_aaaDialogueFolloverXavier_090DD8B7"...
<unknown>(0,0): Unable to find flags file: TESV_Papyrus_Flags.flg
F:\Games\TES V - Skyrim\Data\Scripts\Source\temp\QF_aaaDialogueFolloverXavier_090DD8B7.psc(3,0): Unknown user flag Hidden
No output generated for QF_aaaDialogueFolloverXavier_090DD8B7, compilation failed.

Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on QF_aaaDialogueFolloverXavier_090DD8B7

 

Я так понял, дело в том, что нет tesv_papyrus_flags.flag, который искать надобно в архиве scripts.rar в папке Data, но у меня не только в дата, у меня нигде такой папочки нет.
Объясните начинающему - что тут можно поделать и в чём я не прав? Я пытаюсь Ксавьера сделать "говорящим" и более менее оригинальным фолловером.

Папка со скриптами и исходниками идет в комплекте с СК обычно. Потому что в самом скае скрипты упакованы в bsa (misc.bsa), и исходников к ним нет.

Если для ЛЕ моддишь - скачай с gamer-mods, там была хорошая версия СК со всеми фиксами.

Опубликовано
29.04.2020 09:42:38, Azazellz сказал(-а):

Папка со скриптами и исходниками идет в комплекте с СК обычно. Потому что в самом скае скрипты упакованы в bsa (misc.bsa), и исходников к ним нет.

Если для ЛЕ моддишь - скачай с gamer-mods, там была хорошая версия СК со всеми фиксами.

Спааасибо, скачаю)

Я права, потому что я так сказала. Несогласные могут идти на йух вместе с прилетающими туда птичками. Ня.

Опубликовано
23.02.2018 10:43:17, werr сказал(-а):

Ну так компилятору нужен файл TESV_Papyrus_Flags.flg для работы. Он лежит в архиве с исходниками скриптов.

А если он все равно эту ошибку выдает ?<unknown>(0,0): Unable to find flags file: TESV_Papyrus_Flags.flg  Файл TESV_Papyrus_Flags.flg  есть в папке Papyrus Compilers

Опубликовано
30.04.2020 20:33:52, Stalker11 сказал(-а):

А если он все равно эту ошибку выдает ?<unknown>(0,0): Unable to find flags file: TESV_Papyrus_Flags.flg  Файл TESV_Papyrus_Flags.flg  есть в папке Papyrus Compilers

Это все здорово конечно, но ты не туда распаковал архив Scripts.rar. TESV_Papyrus_Flags.flg должен располагаться в той же папке, откуда СК смотрит на исходники скриптов: Data/Scripts/Source.
Опубликовано (изменено)
01.05.2020 11:49:33, werr сказал(-а):

Это все здорово конечно, но ты не туда распаковал архив Scripts.rar. TESV_Papyrus_Flags.flg должен располагаться в той же папке, откуда СК смотрит на исходники скриптов: Data/Scripts/Source.

 

 

Отбой, нашел причину.7zip архив распаковал не правильно data\script\script

Изменено пользователем Stalker11
  • 2 недели спустя...
Опубликовано

Доброго всем... подскажите ...А есть ли функция в скриптах..на случайные числа? К примеру от 1 до 10? Чтото не могу ничего найти... 


Эт к примеру ..чтобы на локе(или тригер) ...играла музыка случайная из 10...


Да и барда хочу заменить...в доме на грамофон)) 

Опубликовано
14.05.2020 11:38:56, budu200 сказал(-а):

Доброго всем... подскажите ...А есть ли функция в скриптах..на случайные числа? К примеру от 1 до 10? Чтото не могу ничего найти... 


Эт к примеру ..чтобы на локе(или тригер) ...играла музыка случайная из 10...


Да и барда хочу заменить...в доме на грамофон)) 

https://www.creationkit.com/index.php?title=RandomInt_-_Utility

https://www.creationkit.com/index.php?title=RandomFloat_-_Utility

  • 2 месяца спустя...
Опубликовано

Всем привет. Продолжаю свою тему с сумкой из другой темы. Подскажите пожалуйста скрипт для респавна предметов в контейнере, и желательно уточнить куда его нужно прописать, в Reference или в Edit Base ?

Опубликовано
16.07.2020 18:14:54, Enush сказал(-а):

Всем привет. Продолжаю свою тему с сумкой из другой темы. Подскажите пожалуйста скрипт для респавна предметов в контейнере, и желательно уточнить куда его нужно прописать, в Reference или в Edit Base ?

Команда для ресета объекта, включая инвентарь: https://www.creationkit.com/index.php?title=Reset_-_ObjectReference

 

Вообще о скриптинге читай тут.

Ибо команда сама по себе ничего не делает, нужен триггер (Event), который заставит ее сработать.

Опубликовано

Откровенно говоря понял мало чего... не понимаю что именно в скрипте надо заменить на свои данные, а что оставить.

Я так понимаю мой скрипт выглядит примерно таким образом ?

 

Event OnActivate(ObjectReference akActionRef)

      Function ​Reset(ObjectReference akTarget = None) native

EndEvent

Опубликовано
17.07.2020 09:25:36, Enush сказал(-а):
Откровенно говоря понял мало чего... не понимаю что именно в скрипте надо заменить на свои данные, а что оставить.

Ну так и читал бы внимательней, и повторял сразу.

Если с английским плохо - гугл-переводчик бы подключил. Контекст с него словить можно, особенно когда сам по туториалу вещи описаные делаешь, а не просто читаешь.

 

17.07.2020 09:25:36, Enush сказал(-а):
Я так понимаю мой скрипт выглядит примерно таким образом ?

Нет, не так.

То, что ты написал - это описание команды.

Конкретные примеры использования - ниже.

В твоем случае, если будешь прикреплять к уже размещенному контейнеру, команда будет выглядить как-то так.

Event OnActivate(ObjectReference akActionRef)
      self.Reset()
EndEvent

Но учти, что такая вот штука заресетит содержимое моментально. Будет читерский контейнер с бесконечными ресурсами.

И еще учти, что тут нет заголовка скрипта.

Опубликовано (изменено)
17.07.2020 09:36:33, Azazellz сказал(-а):
Ну так и читал бы внимательней, и повторял сразу.

Так бы и делал, проблема в том что сами примеры совершенно другие, следовательно и скрипты не такие как мне нужно. По поводу моментального респавна уже не важно, главное что бы появилось содержимое. Скрипты эти конечно... это тебе не озвучки в неписях ломать что бы напарников делать  :)

 

P.S. Теперь правильно?

Scriptname ScriptAlchemyCommon extends ObjectReference

 

Event OnActivate(ObjectReference akActionRef)
      self.Reset()
EndEvent

Изменено пользователем Enush
Опубликовано
17.07.2020 09:41:36, Enush сказал(-а):
Как бы и делал, проблема в том что сами примеры совершенно другие, следовательно и скрипты не такие как мне нужно.

Так в уроках тебя общим принципам учат. Что, как, куда. А дальше ты уже по этим принципам сам свое пишешь, руководствуясь списком доступных функций и прочих штук.

Вот три основных страницы, в которых есть прям почти все, что надо.

https://www.creationkit.com/index.php?title=Category:Script_Objects

https://www.creationkit.com/index.php?title=Event

https://www.creationkit.com/index.php?title=Keyword_Reference

 

17.07.2020 09:41:36, Enush сказал(-а):
Теперь правильно?

Ну, типа того, да.

Опубликовано

Благодарю за подробное толкование скриптинга так такового. Я знаю что это самый банальный и лёгкий вариант, который только можно придумать, но я в этом вообще ни разу не разбирался до этого, и, наверное уже не стану, ибо то чего я хотел получить я и получил. Что касается моей сумки то всё работает безотказно, единственное что я забыл убрать модуль на рандомные зелья каждый определённый уровень, уже исправил, в сумке только три моих ингридиента для яда, которые обновляются каждый раз при открытии контейнера. Ещё раз большое спасибо.

  • 2 месяца спустя...
Опубликовано

Скрипт из квеста про амулет Бенду,что добавляется убив вора(событие срабатывает при попадании предмета в инвентарь в количестве 1 шт)Как изменить скрипт ,чтоб он переводил на 30 стадию с Проверкой что у игрока есть 2 амулета и только после этой проверки осуществил переход на 30 стадию ,если же у игрока 1 амулет или не одного чтоб оставался так и на 20 стадии.Ниже тело скрипта

 

Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer)
if (newContainer == Game.GetPlayer())
                GSQ01.SetObjectivedisplayed(30)
  GSQ01.SetStage(30)
endif
EndEvent

Опубликовано
01.10.2020 13:06:13, Antares669 сказал(-а):

Скрипт из квеста про амулет Бенду,что добавляется убив вора(событие срабатывает при попадании предмета в инвентарь в количестве 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.

  • Нравится 1
Опубликовано
01.10.2020 15:34:01, Azazellz сказал(-а):

Добавь еще одно условие 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

 

Сразу автоматом сменилась стадия квеста после попадания первого же одеяния в инвентарь,а нужно по условию что на первой стадия молчит и при добавлении второй срабатывает.А У меня срабатывает скрипт сразу после выплавки как только первый попадает в инвентарь минуя условие(Чудно))Одеяние одно и тоже.

Опубликовано
01.10.2020 18:38:09, Antares669 сказал(-а):
А У меня срабатывает скрипт сразу после выплавки как только первый попадает в инвентарь минуя условие

Потому что у тебя в скрипте нет второго условия.

Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer)
if (newContainer == Game.GetPlayer()) && (Game.GetPlayer().GetItemCount(PirateArmor)>= 2)
      GSQ01.SetObjectivedisplayed(30)
      GSQ01.SetStage(30)
endif
EndEvent

Можно попробовать так.

  • Нравится 1
Опубликовано

Все вопрос решился и все заработало все вышеобозначенные скрипты неправильные что исходили от меня и от глубоко уважаемого Azazellz,я просто забыл про Великий и Могучий оператор ELSE)))) :) в Скрипте банально отраженны только 2 условия это передача вещи в контейнер и смена стадии при ее попадании,но не было Третьего условия что если вещь попадает в инвентарь в количестве <=1,то стадия квеста висит на прежней 24 строке.Естестевенно раз нет третьего условия ,то доминировал скрипт второго условия и сразу после первого предмета переключал на новую стадию.Но Добавив оператор ELSE-мы включили Проверку всем Условиям и как оказалось чего то не хватает а именно задней стадии ,что если у игрока нет 2 бронек то доминирует уже не 25 стадия а именно прописанная оператором ELSE <=1  именно 24 нужная стадия!!Еще раз Благодарю Azazellz за помощь...... :bye:

Опубликовано
01.10.2020 19:33:28, Azazellz сказал(-а):

Потому что у тебя в скрипте нет второго условия.

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. :bye:

Опубликовано (изменено)

Может кому то когда то и пригодится мое инфо!!и человек сэкономит для себя пол дня поисков!!Вроде бы в простейшем скрипте!!Но посмотрите возможности Оператора 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;
56b1de5066e2.png.png

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;
7ae2ba09c473.png.png

#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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...