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

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

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

Подскажите пожалуйста как грамотно использовать глобальный переменные в квестовом скриптинге.

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

 

Что нужно:

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!»

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

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

Да что в нем неизвестного то?! Все же объявил.

Изменено пользователем Keiron

«VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»

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

Что-то каша какая-то у тебя. Чтобы решить твою задачу, можно всё сделать намного проще, при помощи функции 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 для перевода его в другое состояние.

s_1405425127_3811333_f9685e5dc4.png

Всё провисло и болтается.

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

Возможно это правильный вариант (ну скорее всего, раз работает), но блин у меня не работает(((((

Я все в синтаксисе сделал 100% правильно. Но - не работает.

Есть у кого какие идеи или другие способы сделать?

Это краеугольный камень плагина, без него я не могу продолжить работу над ним. Буду ооооочень признателен.

«VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»

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

Да, можно. Блин, есть способ все это сохранить отдельно как-то? Не вытаскивать же вручную все скрипты.

«VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»

Опубликовано (изменено)
15.07.2014 18:14:30, YourBunnyWrote сказал(-а):

В главном окне Creation Kit меню File -> Create Archive -> Pack files и сохраняешь BSA архив, и скидываешь BSA и ESP файлы мода.

Ага, куда там. Я сам уже успел это найти. Только после нажатия "Pack Files" он просит указать уже готовый BSA-архив. Скачал какой-то BSA Commander, какая-то великая шляпа! Агррррх!!!

Изменено пользователем Keiron

«VIOLENCE DOESN'T SOLVE ANYTHING EXCEPT FOR ALL THE THINGS IT DOES!»

Опубликовано
15.07.2014 18:32:46, Keiron сказал(-а):

Только после нажатия "Pack Files" он просит указать уже готовый BSA-архив.

Чудеса... Может быть, ты что-то путаешь? После нажатия Pack Files он спрашивает, куда сохранять архив. Ты вводишь имя архива и нажимаешь "Сохранить", запускается дефолтная утилита Archive.exe, которая пакует архив. Всё.

Всё провисло и болтается.

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

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

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

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

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

Войти

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

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...