Difference between revisions of "User:Rasikko"
imported>Rasikko m (→Time Functions) |
imported>Rasikko |
||
Line 134: | Line 134: | ||
<br> | <br> | ||
<source lang="papyrus"> | <source lang="papyrus"> | ||
Int Function | Int Function GetGameMonthTotalDays(int aiGameMonth = 0) Global | ||
; returns the number of days for this month. | ; returns the number of days for this month. | ||
Int[] months = new Int[12] | Int[] months = new Int[12] |
Revision as of 14:49, 11 February 2018
Remove from Array
Int[] Function RemoveFromArray(Int[] array, int startIndex, int numOfElementsToRemove = 1) Global
; Removes a number of elements from an array from the starting index.
; Change the return, parameter, and variable type to suit the array type you are using.
int arrayLength = array.length
if (startIndex == 0 && numOfElementstoRemove == 0)
array[startIndex] = 0
return array
elseif numOfElementsToRemove >= arrayLength
; To prevent an error. Returns the array unchanged.
return array
else
while (startIndex < numOfElementsToRemove + 1)
array[startIndex] = 0
startIndex += 1
endwhile
endif
return array
EndFunction
Reverse an Array
Form[] Function ReverseArray(Form[] array) Global
; Reverses the order from the smallest index to the largest and returns the array.
; Change the return, parameter, and variable type to suit the array type you are reversing.
Int index = array.length
Int i = 0
Form temp
while (i < (index / 2))
temp = array[i]
array[i] = array[(index - 1) - i]
array[(index - 1) - i] = temp
i += 1
endwhile
return array
EndFunction
Unit Converions
The Unit page lists the Skyrim Unit to metric/imperial conversions, centimeters to inches is obvious, though it doesn't list the calculations when going to feet, so here it is: FT = Unit * 0.046875 --Rasikko (talk) 2018-01-10T12:18:45 (EST)
Time Functions
Various functions for calculating time in skyrim. Most use GetCurrentGameTime - Utility as it returns the total game days passed. Making it easier for conversions.
This function has GetCurrentGameTime live up to its name. Will return the in-game time, instead of days passed. At least 1 day has to have passed.
Float Function GetCurrentGameTimeExtended() Global
; Returns the time displayed in the game.
; Format is hh.mmssss
Float currentGameTime = Utility.GetCurrentGameTime()
Float fractionOfDay = currentGameTime - currentGameTime as int
Float hour = (fractionOfDay * 24) as int
Float minutes = ((fractionOfDay * 24) - hour) * 60
Float seconds = (minutes - minutes as int) * 60
if currentGameTime >= 1.0
; before adding the hours, we need to turn the minutes into a decimal.
minutes = (minutes as int) / 100.0
; do the same to the seconds
seconds = seconds / 10000.0
return hour + minutes + seconds
endif
return -1.0
EndFunction
This simple function converts days passed into hours passed.
Float Function GetGameHoursPassed()
; Converts the game days passed to game time hours.
return Utility.GetCurrentGameTime() * 24
EndFunction
This function takes the game days passed and converts them into minutes passed.
Float Function GetGameMinutesPassed()
; Converts the game days passed to game minutes passed.
return Utility.GetCurrentGameTime() * 24 * 60
EndFunction
To get the total real minutes passed since the game started, you do the following:
Game.GetRealHoursPassed() * 60
To get the number of seconds that have passed since game start. Note at least 1 day has to have passed:
Float Function GetGameSecondsPassed()
; returns the number of game seconds since game start.
Float gameTime = Utility.GetCurrentGameTime()
if gameTime >= 1.0
return gameTime / 24.0 * 60 * 60
endif
return -1.0
EndFunction
For milliseconds:
Float Function GetGameMillisecondsPassed()
; Returns milliseconds passed since game start.
Float gameTime = Utility.GetCurrentGameTime()
if gameTime >= 1.0
return gameTime / 24.0 * 60.0 * 60.0 * 1000.0
endif
return -1.0
EndFunction
Short note about game time: Game time is paused when in a menu. While this is a well known fact, it can be easily forgotten when working with it along side real time, as real time obviously keeps running.
Skyrim has no leap years, and thus has common years, where the first day and last day of the year are on the same day of the week.
Month Functions
Various functions for dealing with the months. Months in Skyrim are index based. Meaning Morning Star is Month 0, and Evening Star is Month 11.
Int Function GetGameMonthTotalDays(int aiGameMonth = 0) Global
; returns the number of days for this month.
Int[] months = new Int[12]
months[0] = 31
months[1] = 28
months[2] = 31
months[3] = 30
months[4] = 31
months[5] = 30
months[6] = 31
months[7] = 31
months[8] = 30
months[9] = 31
months[10]= 30
months[11]= 31
return months[aiGameMonth]
EndFunction
Self Reminders
- When time permits, add another example concerning the Events OnActivate, OnTriggerEnter and OnTriggerLeave.
- Test out function for acquiring the xp for the next level and add it to the condition function page of the same name as an alternative to it.