summaryrefslogblamecommitdiff
path: root/npc/functions/time.txt
blob: 21b94ac5077d9c4520e78360275a0d9ff7bafaff (plain) (tree)
1
2
 
 














































                                                                                                                  


 
 
 
 
 





































































































                                                                             
 
function	script	time_stamp	{
    // local variables
    // if there is reasonable demand, these might be exported
    // (that is what the builtin is likely to do)
    @ts_year = gettime(7);
    @ts_month = gettime(6);
    @ts_mday = gettime(5);
    //set @ts_wday,       gettime(4);
    @ts_hour = gettime(3);
    @ts_minute = gettime(2);
    @ts_second = gettime(1);

    // locals used to generate leading zeroes
    @ts_month_pad$ = "";
    @ts_mday_pad$ = "";
    @ts_hour_pad$ = "";
    @ts_minute_pad$ = "";
    @ts_second_pad$ = "";

    if (@ts_month < 10)
        @ts_month_pad$ = "0";
    if (@ts_mday < 10)
        @ts_mday_pad$ = "0";
    if (@ts_hour < 10)
        @ts_hour_pad$ = "0";
    if (@ts_minute < 10)
        @ts_minute_pad$ = "0";
    if (@ts_second < 10)
        @ts_second_pad$ = "0";

    @ts_date$ = @ts_year + "-" + @ts_month_pad$ + @ts_month + "-" + @ts_mday_pad$ + @ts_mday;
    @ts_time$ = @ts_hour_pad$ + @ts_hour + ":" + @ts_minute_pad$ + @ts_minute + ":" +@ts_second_pad$ + @ts_second;

    // cleanup
    @ts_year = 0;
    @ts_month = 0;
    @ts_mday = 0;
    @ts_hour = 0;
    @ts_minute = 0;
    @ts_second = 0;
    @ts_month_pad$ = "";
    @ts_mday_pad$ = "";
    @ts_hour_pad$ = "";
    @ts_minute_pad$ = "";
    @ts_second_pad$ = "";

    return;
}






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;
}