Difference between revisions of "Talk:Bethesda Tutorial Scenes"

From the CreationKit Wiki
Jump to navigation Jump to search
imported>Lmstearn
imported>Lmstearn
 
(15 intermediate revisions by the same user not shown)
Line 11: Line 11:


Values 0 and 24 would both come back as midnight. Also if you use 25 you get 1am, 26 2am ect. --[[User:SoaringChris137|SoaringChris137]] 16:53, 3 March 2012 (EST)
Values 0 and 24 would both come back as midnight. Also if you use 25 you get 1am, 26 2am ect. --[[User:SoaringChris137|SoaringChris137]] 16:53, 3 March 2012 (EST)
::Using [[http://www.creationkit.com/Function_for_Time_of_Day this]] we can try:
::Thinking of a custom made function using [[http://www.creationkit.com/Function_for_Time_of_Day this]] we try:


  string Function GetGreeting()  
    Scriptname GreetingScript extends Quest
    string Function GetGreeting()  
      
      
     string MornArvo = ""
     string Greet = ""
     float Time = Utility.GetCurrentGameTime()
     float Time = Utility.GetCurrentGameTime()
     Time -= Math.Floor(Time) ; Remove "previous in-game days passed" bit
     Time -= Math.Floor(Time) ; Remove "previous in-game days passed" bit
    ;From MSDN math.floor returns the largest integer less than or equal to the specified decimal number
     Time *= 24 ; Convert from fraction of a day to number of hours
     Time *= 24 ; Convert from fraction of a day to number of hours
     if Time < 13
     if Time < 13
     MornArvo = "Good Morning"
     Greet = "Good Morning"
     elseif Time > 17
     elseif Time > 17
     MornArvo = "Good Evening"     
     Greet = "Good Evening"     
     else
     else
     MornArvo = "Good Afternoon"
     Greet = "Good Afternoon"
     endif
     endif
     Return MornArvo
     Return Greet
   
   
   EndFunction  
   EndFunction  


but it turned out to be a fruitless foray across the back country of Elsewyr as opposed to using the condition function GetCurrentTime above. We created a variable in the Papyrus script box at the beginning of the scene:
    GreetingScript myvariable = GetOwningQuest() as GreetingScript
    Debug.MessageBox myvariable.getgreeting()
Whoopee. This turns out to be quite useless unless the script is modified with:
    ScriptName Greetingscript extends ObjectReference Conditional
    String Property Greet Auto Conditional
using it as a condition, but we are really jumping ahead as all this stuff is covered in scripting and [[Papyrus_Introduction#Writing_Custom_Functions]]
--[[User:Lmstearn|Lmstearn]] ([[User talk:Lmstearn|talk]]) 2015-01-27T07:21:07 (EST)
--[[User:Lmstearn|Lmstearn]] ([[User talk:Lmstearn|talk]]) 2015-01-27T07:21:07 (EST)
== "Game is smart enough to figure out the necessary voice types" ==
Heh, followed this through so carefully, checked and double checked- but still ended up with 67 extra unwanted sound folders containing ''all'' the scene dialogue from both actors.--[[User:Lmstearn|Lmstearn]] ([[User talk:Lmstearn|talk]]) 2015-01-31T10:20:53 (EST)
== More on Lmstearns Alternative Addition ==
One has to be wary of the pitfalls in adding scripts to scenes. [http://forums.bethsoft.com/topic/1513630-removeitem-additem-npcs/?p=23886073 See here for more info]--[[User:Lmstearn|Lmstearn]] ([[User talk:Lmstearn|talk]]) 2015-02-04T05:29:04 (EST)
== Idle Preview Animation NoGo ==
Edit a scene package, select the Idles tab, click "Use Specific Idles", right click empty list and select "New", select GSQBenduOlo and get a preview of him- motionless, regardless of what idle in the LH pane is. Anyone know how to (hotkey?) an animated preview of the selected idle?--[[User:Lmstearn|Lmstearn]] ([[User talk:Lmstearn|talk]]) 2015-02-04T06:49:59 (EST)
== Waiting After Scene Start ==
Another engine bug where waiting any number of hours in-game just after a scene is started will "extend" the duration of the scene to the number of hours waited. The scene concludes immediately the wait has terminated.--[[User:Lmstearn|Lmstearn]] ([[User talk:Lmstearn|talk]]) 2015-02-04T21:51:13 (EST)

Latest revision as of 21:51, 4 February 2015

Extra Credit[edit source]

Can someone hint without too much spoilers how to make Bendu greet Gilfre different depending on time of day? Guess one way is placing timer check with GetCurrentTime, but would require 3 different phases in the scene which seems wrong? Another way I guess might be with a scene where the greet only trigger if they should come within a specific distance (with package template of some kind). --Nemesis 09:16, 15 February 2012 (EST)

I would like to know this as well. GetCurrentTime does seem like the way to go, but it is unclear to me what the range is of the variable that is returned. Is time a number between 1-24? 0-1? And should the function be ran on Subject? --Mr6 10:22, 16 February 2012 (EST)
GetCurrentTime should return a value between 0 and 24, although I'm not sure which of those two values should be returned at midnight. It's not a reference function, so it doesn't need to be called on anything.
-- Cipscis 15:52, 16 February 2012 (EST)

Values 0 and 24 would both come back as midnight. Also if you use 25 you get 1am, 26 2am ect. --SoaringChris137 16:53, 3 March 2012 (EST)

Thinking of a custom made function using [this] we try:
   Scriptname GreetingScript extends Quest
   string Function GetGreeting() 
   
   string Greet = ""
   float Time = Utility.GetCurrentGameTime()
   Time -= Math.Floor(Time) ; Remove "previous in-game days passed" bit
   ;From MSDN math.floor returns the largest integer less than or equal to the specified decimal number
   Time *= 24 ; Convert from fraction of a day to number of hours
   if Time < 13
   Greet = "Good Morning"
   elseif Time > 17
   Greet = "Good Evening"    
   else
   Greet = "Good Afternoon"
   endif
   Return Greet

 EndFunction 

but it turned out to be a fruitless foray across the back country of Elsewyr as opposed to using the condition function GetCurrentTime above. We created a variable in the Papyrus script box at the beginning of the scene:

   GreetingScript myvariable = GetOwningQuest() as GreetingScript
   Debug.MessageBox myvariable.getgreeting()

Whoopee. This turns out to be quite useless unless the script is modified with:

   ScriptName Greetingscript extends ObjectReference Conditional
   String Property Greet Auto Conditional

using it as a condition, but we are really jumping ahead as all this stuff is covered in scripting and Papyrus_Introduction#Writing_Custom_Functions --Lmstearn (talk) 2015-01-27T07:21:07 (EST)

"Game is smart enough to figure out the necessary voice types"[edit source]

Heh, followed this through so carefully, checked and double checked- but still ended up with 67 extra unwanted sound folders containing all the scene dialogue from both actors.--Lmstearn (talk) 2015-01-31T10:20:53 (EST)

More on Lmstearns Alternative Addition[edit source]

One has to be wary of the pitfalls in adding scripts to scenes. See here for more info--Lmstearn (talk) 2015-02-04T05:29:04 (EST)

Idle Preview Animation NoGo[edit source]

Edit a scene package, select the Idles tab, click "Use Specific Idles", right click empty list and select "New", select GSQBenduOlo and get a preview of him- motionless, regardless of what idle in the LH pane is. Anyone know how to (hotkey?) an animated preview of the selected idle?--Lmstearn (talk) 2015-02-04T06:49:59 (EST)

Waiting After Scene Start[edit source]

Another engine bug where waiting any number of hours in-game just after a scene is started will "extend" the duration of the scene to the number of hours waited. The scene concludes immediately the wait has terminated.--Lmstearn (talk) 2015-02-04T21:51:13 (EST)