Keiron Опубликовано 15 июля, 2014 Опубликовано 15 июля, 2014 Подскажите пожалуйста как грамотно использовать глобальный переменные в квестовом скриптинге. Я использовал много вариантов, компилятор выдает какие-то глупые ошибки. Что нужно: Eсть этапы квеста (допустим 1 и 2). Я хочу взять глобальную переменную GameDaysPassed и использовать ее, чтобы второй этап наступил через N-ое время. Но постоянно вылазят ошибки, типа "Эта переменная уже используется" или "Не могу присвоить значение 0 к типу float". Что я делаю не так? Добавляю Propertie с типом GlobalVariable (мы же хотим использовать именно ее глобальное значение), но тут же вылазят ошибки. Ок, пытаюсь назначить ее через тело самого скрипта: GlobalVariable Property GameDaysPassed auto float MyDaysPassed = GameDaysPassed.Getvalue() (взял с туториала) И опять ошибки, при чем туева хуча. Буду признателен за помощь, ошибка скорее всего как всегда в мелочи. «VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»
Keiron Опубликовано 15 июля, 2014 Автор Опубликовано 15 июля, 2014 (изменено) P.S: Ну или тогда временно разложим на вопрос попроще. Есть глобальная переменная GameDaysPassed типа Float. Я в своем скрипте-диалоге должен присвоить переменной значение этой глобальный переменной. То есть по логике я выбираю из списка тип GlobalVeriable и значение даю ей GameDaysPassed. Но компилятор ругается, мол.. Да вот дословно на что он ругается. C:\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__01002E53.psc(12,29): cannot add a globalvariable to a float (cast missing or types unrelated) C:\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__01002E53.psc(12,13): type mismatch on parameter 1 (did you forget a cast?) Спустя пару минут: Попробовал следующий костыль Keiron_DP2.SetValue(Keiron_DP + 1.0) if Keiron_DP.GetValue() > Keiron_DP2 Keiron_WH_Quest. SetObjectiveDisplayed(40) Keiron_WH_Quest. SetStage(40) endIf Где Keiron_DP - глобальная переменная со ссылкой на GameDaysPassed Keiron_DP2 - локальная переменная типа Float и со значением 0.0 И снова борода: float is not a known user-defined type Да что в нем неизвестного то?! Все же объявил. Изменено 15 июля, 2014 пользователем Keiron «VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»
YourBunnyWrote Опубликовано 15 июля, 2014 Опубликовано 15 июля, 2014 Что-то каша какая-то у тебя. Чтобы решить твою задачу, можно всё сделать намного проще, при помощи функции RegisterForSingleUpdateGameTime, и обработчика события OnUpdateGameTime, в котором потом перевести квест в требуемую стадию. Например, такой скрипт повесить на квест: Scriptname aaaMyQuestScript extends Quest State waitForUpdate Event OnUpdateGameTime() ; Переходим к требуемой стадии квеста (в примере - 2) SetStage(2) ; Переводим скрипт в "пустое" состояние GotoState("") EndEvent EndState И в любом другом месте (в результирующем скрипте диалога или стадии квеста) затем зарегистрировать событие OnUpdateGameTime для квестового скрипта. Для примера, я сделал так: ; Инициировать событие OnUpdateGameTime через полчаса thisQuest.RegisterForSingleUpdateGameTime(0.5) ; Перевести скрипт в состояние, в котором определён обработчик события OnUpdateGameTime thisQuest.GotoState("waitForUpdate") Естественно, thisQuest - это свойство, которое определено для фрагмента скрипта выше, который висит на стадии квеста. Свойство thisQuest должно указывать на тот квест, на который мы повесили скрипт для отлавливания события OnUpdateGameTime для перевода его в другое состояние. Всё провисло и болтается.
Keiron Опубликовано 15 июля, 2014 Автор Опубликовано 15 июля, 2014 Возможно это правильный вариант (ну скорее всего, раз работает), но блин у меня не работает((((( Я все в синтаксисе сделал 100% правильно. Но - не работает. Есть у кого какие идеи или другие способы сделать? Это краеугольный камень плагина, без него я не могу продолжить работу над ним. Буду ооооочень признателен. «VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»
YourBunnyWrote Опубликовано 15 июля, 2014 Опубликовано 15 июля, 2014 Может быть, тебе бы было проще скинуть сюда свой плагин, а то так можно долго гадать, почему у тебя не работает? Всё провисло и болтается.
Keiron Опубликовано 15 июля, 2014 Автор Опубликовано 15 июля, 2014 Да, можно. Блин, есть способ все это сохранить отдельно как-то? Не вытаскивать же вручную все скрипты. «VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»
YourBunnyWrote Опубликовано 15 июля, 2014 Опубликовано 15 июля, 2014 В главном окне Creation Kit меню File -> Create Archive -> Pack files и сохраняешь BSA архив, и скидываешь BSA и ESP файлы мода. Всё провисло и болтается.
Keiron Опубликовано 15 июля, 2014 Автор Опубликовано 15 июля, 2014 (изменено) 15.07.2014 18:14:30, YourBunnyWrote сказал(-а): В главном окне Creation Kit меню File -> Create Archive -> Pack files и сохраняешь BSA архив, и скидываешь BSA и ESP файлы мода. Ага, куда там. Я сам уже успел это найти. Только после нажатия "Pack Files" он просит указать уже готовый BSA-архив. Скачал какой-то BSA Commander, какая-то великая шляпа! Агррррх!!! Изменено 15 июля, 2014 пользователем Keiron «VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»
YourBunnyWrote Опубликовано 16 июля, 2014 Опубликовано 16 июля, 2014 15.07.2014 18:32:46, Keiron сказал(-а): Только после нажатия "Pack Files" он просит указать уже готовый BSA-архив. Чудеса... Может быть, ты что-то путаешь? После нажатия Pack Files он спрашивает, куда сохранять архив. Ты вводишь имя архива и нажимаешь "Сохранить", запускается дефолтная утилита Archive.exe, которая пакует архив. Всё. Всё провисло и болтается.
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти