Showing the Time in A.M. and P.M.
Tools used in this tutorial
Required |
If you use GameHour it prints out 4.5 if the time is 4:30 A.M and if the time is P.M. it prints out 16.5. But with the right script we can make the GameHour print out 4.30 P.M. if the time IS 4:30 P.M.
First of all we need some variables:
float time short hour
Then check the time:
set time to GameHour
Now we need to isolate the hour from the minutes. Assigning a float value to a short var truncates the decimals and that is what we need here (so 4.5 becomes 4, 13.93 becomes 13, etc):
set Hour to time
Then, to check the minute just subtract the Hour from the GameHour, like this:
set time to time - Hour
Now we have the minutes in decimals but we need to translate it to minutes. To that we use this:
set time to ((time / 5) * 3)
Now when the minutes are correct we can add the hours again:
set time to time + Hour
Now we have the right time but we still want to make 4:30 P.M. showing 4.30 P.M not 16.30.
If time < 12 message "%.2f A.M. " time Elseif time < 24 message "%.2f P.M. " time Endif
This part just check if the time is less than 12, if it is call it A.M., Else call it P.M. But it won't work perfectly yet, we need to subtract 12 from the time if it's P.M. (If the time is showing 16.30 we subtract it with 12 and ad P.M. = 4.30 P.M.)
Change it like this:
If time < 12 message "%.2f A.M. " time Elseif time < 24 if time >= 13 ;we still want 12P.M. to be 12 P.M. not 0 P.M. set time to time - 12 endif message "%.2f P.M. " time Endif
Now we just need to do one more thing. As it is now 12 A.M. gives the output 0 and showing 0 A.M.
We need to correct this part once more:
If time < 12 if time < 1 ;Only when the time is something with 12 A.M. set time to time + 12 endif message "%.2f A.M. " time Elseif time < 24 if time >= 13 ;we still want 12P.M. to be 12 P.M. not 0 P.M. set time to time - 12 endif message "%.2f P.M. " time Endif
The whole script can look like this
Scn ClockwithAMandPM float time short Hour begin onActivate set time to GameHour set Hour to time set time to time - Hour set time to ((time / 5) * 3) set time to time + Hour if time < 12 if time < 1 set time to time + 12 endif message "The Current time is %.2f A.M. " time elseif time < 24 if time >= 13 set time to time - 12 endif message "The Current time is %.2f P.M. " time endif end