From ec1d600a09cb6c45d5b7924037039e4c6a003b89 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 9 Jul 2021 14:17:51 -0300 Subject: Fix missing time functions (was causing towel and Kimarr bugs) --- npc/functions/time.txt | 117 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/npc/functions/time.txt b/npc/functions/time.txt index e6e4c70a..9ae2f436 100644 --- a/npc/functions/time.txt +++ b/npc/functions/time.txt @@ -115,3 +115,120 @@ function script FuzzyTime { return .@ret$; } + + + +function script time_stamp { + @ts_date$ = sprintf("%04d-%02d-%02d", gettime(7), gettime(6), gettime(5)); + @ts_time$ = sprintf("%02d:%02d:%02d", gettime(3), gettime(2), gettime(1)); + return (@ts_date$+" "+@ts_time$); +} + + + + + +// FIXME +function script HumanTime { + @time$ = "now"; + if(@seconds) set @ms, @ms + (@seconds * 1000); + if(@minutes) set @ms, @ms + (@minutes * 60000); + if(@days) set @ms, @ms + (@days * 1440000); + if(@ms < 1000) goto L_Millis; // under 1 second we have nothing to count + @seconds = @ms / 1000; + @ms = @ms % 1000; + if(@seconds < 60) goto L_Seconds; + @minutes = @seconds / 60; + @seconds = @seconds % 60; + if(@minutes < 60) goto L_Minutes; + @hours = @minutes / 60; + @minutes = @minutes % 60; + if(@hours < 24) goto L_Hours; + @days = @hours / 24; + @hours = @hours % 24; + if(@days) goto L_Days; + goto L_Clean; + +L_Millis: + @time$ = @ms + "ms"; + return; + +L_Seconds: + @unit$ = "second"; + if(@seconds > 1) set @unit$, "seconds"; + @unit2$ = "millisecond"; + if(@ms > 1) set @unit2$, "milliseconds"; + @time$ = @seconds + " " + @unit$; + if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit2$; + goto L_Clean; + +L_Minutes: + @unit$ = "minute"; + if(@minutes > 1) set @unit$, "minutes"; + @unit2$ = "second"; + if(@seconds > 1) set @unit2$, "seconds"; + @unit3$ = "millisecond"; + if(@ms > 1) set @unit3$, "milliseconds"; + @time$ = @minutes + " " + @unit$; + @separator$ = " and "; + if(@ms) set @separator$, ", "; + if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit2$; + if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit3$; + goto L_Clean; + +L_Hours: + @unit$ = "hour"; + if(@hours > 1) set @unit$, "hours"; + @unit2$ = "minute"; + if(@minutes > 1) set @unit2$, "minutes"; + @unit3$ = "second"; + if(@seconds > 1) set @unit3$, "seconds"; + @unit4$ = "millisecond"; + if(@ms > 1) set @unit4$, "milliseconds"; + @time$ = @hours + " " + @unit$; + @separator$ = " and "; + if(@seconds || @ms) set @separator$, ", "; + if(@minutes) set @time$, @time$ + @separator$ + @minutes + " " + @unit2$; + @separator$ = " and "; + if(@ms) set @separator$, ", "; + if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$; + if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$; + goto L_Clean; + +L_Days: + @unit$ = "day"; + if(@hours > 1) set @unit$, "days"; + @unit2$ = "hour"; + if(@hours > 1) set @unit2$, "hours"; + @unit3$ = "minute"; + if(@minutes > 1) set @unit3$, "minutes"; + @unit4$ = "second"; + if(@seconds > 1) set @unit4$, "seconds"; + @unit5$ = "millisecond"; + if(@ms > 1) set @unit5$, "milliseconds"; + @time$ = @days + " " + @unit$; + @separator$ = " and "; + if(@minutes || @seconds || @ms) set @separator$, ", "; + if(@hours) set @time$, @time$ + @separator$ + @hours + " " + @unit2$; + @separator$ = " and "; + if(@seconds || @ms) set @separator$, ", "; + if(@minutes) set @time$, @time$ + @separator$ + @minutes + " " + @unit3$; + @separator$ = " and "; + if(@ms) set @separator$, ", "; + if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$; + if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$; + goto L_Clean; + +L_Clean: + @unit$ = ""; + @unit2$ = ""; + @unit3$ = ""; + @unit4$ = ""; + @unit5$ = ""; + @seconds = 0; + @minutes = 0; + @hours = 0; + @days = 0; + @separator$ = ""; + return; +} -- cgit v1.2.3-60-g2f50