Перейти к содержимому


Фотография

Использование GlobalVariable's

global variable variables

  • Авторизуйтесь для ответа в теме

#1 Ссылка на это сообщение Keiron

Keiron
  • Авантюрист
  • 178 сообщений

Отправлено

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

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

 

Что нужно:

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



  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#2 Ссылка на это сообщение Keiron

Keiron
  • Авантюрист
  • 178 сообщений

Отправлено

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: 15 июля 2014 - 11:59

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


#3 Ссылка на это сообщение YourBunnyWrote

YourBunnyWrote
  • Рабочий лень
  • 3 268 сообщений
  •    

Отправлено

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


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


#4 Ссылка на это сообщение Keiron

Keiron
  • Авантюрист
  • 178 сообщений

Отправлено

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

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

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

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


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


#5 Ссылка на это сообщение YourBunnyWrote

YourBunnyWrote
  • Рабочий лень
  • 3 268 сообщений
  •    

Отправлено

Может быть, тебе бы было проще скинуть сюда свой плагин, а то так можно долго гадать, почему у тебя не работает?


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


#6 Ссылка на это сообщение Keiron

Keiron
  • Авантюрист
  • 178 сообщений

Отправлено

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


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


#7 Ссылка на это сообщение YourBunnyWrote

YourBunnyWrote
  • Рабочий лень
  • 3 268 сообщений
  •    

Отправлено

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


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


#8 Ссылка на это сообщение Keiron

Keiron
  • Авантюрист
  • 178 сообщений

Отправлено

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

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


Сообщение отредактировал Keiron: 15 июля 2014 - 19:35

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


#9 Ссылка на это сообщение YourBunnyWrote

YourBunnyWrote
  • Рабочий лень
  • 3 268 сообщений
  •    

Отправлено

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

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


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





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых