About Us
Products
Purchase
Downloads
Support
Forums
Contact Us
Site
 Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » CMUD General Discussion
chris123zugg
Adept


Joined: 23 Aug 2013
Posts: 207

PostPosted: Sun Mar 16, 2025 11:45 pm   

time formatting not working?
 
//GXP:93031026 G2N:18110(99.0977) WPN:Immaculate COF:20/20 MOB: emergency
G2N is where this is pulling the capture from



gxprd=21
//gxp
$wardergxp = %int(%2)
$warderrds = (($wardergxp / @gxprd))
$gxptime = 0
$gxpdays = 0+($warderrds/86400)
$gxphours = 0+%eval(%mod($warderrds/3600,86400)-(24*$gxpdays))
$gxpmins = 0+%eval(%mod($warderrds/60,60))
$gxpsecs = 0+%eval(%mod($warderrds,60))
$gxpprefix = "-- "
$gxpsuffix = " --"
#switch ($gxpdays > 0) {$gxptime = %string($gxpdays)+"d "+%string($gxphours)+"h "+%string($gxpmins)+"m "+%string($gxpsecs)+"s"} ($gxphours > 0) {$gxptime = %string($gxphours)+"h "+%string($gxpmins)+"m "+%string($gxpsecs)+"s"} ($gxpmins > 0) {$gxptime = %string($gxpmins)+"m "+%string($gxpsecs)+"s"}
$gxptime = %string($gxphours)+"h "+%string($gxpmins)+"m "+%string($gxpsecs)+"s"

gxptimenow = $gxptime
gxprds=$warderrds


#print @gxptimenow @gxprds


gxptimenow = $gxptime
gxprds=$warderrds

im confused as heck about this, its accurate to the second but its not mathing right... anyone can point to the part thats broken?


this is the #help file for %mod
mod

Syntax: %mod(a,b)

returns a modulus b. This is the remainder after dividing a by b.

Example:

#SHOW %mod(8,3)
Displays: 2

#SHOW %mod(8,4)
Displays: 0

seconds=3917
#SHOW hours:%eval(@seconds/3600) mins:%mod(@seconds/60,60) secs:%mod(@seconds,60)
Displays: hours:1 mins:5 secs:17


thanks in advance.[/code]
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4735
Location: Pensacola, FL, USA

PostPosted: Mon Mar 17, 2025 12:35 am   
 
pattern might help
_________________
Discord: Shalimarwildcat
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4735
Location: Pensacola, FL, USA

PostPosted: Mon Mar 17, 2025 12:40 am   
 
Instead of cycling things through %string perhaps just use %concat?

$gxptime=%concat($gxpdays, "d ", $gxphours, "h ", "etc", "etc")

and what's with all the 0+ before the function call?
Unnecessary and it won't evaluate without being enclosed in parentheses like any other expression
_________________
Discord: Shalimarwildcat
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4735
Location: Pensacola, FL, USA

PostPosted: Mon Mar 17, 2025 1:46 am   
 
Instead of defining gpxtime as 0 at the start, use the #LOCAL command to declare it with a null value

#LOCAL $gpxTime

this is the preferred method when you just need the variable to exist before something in a subroutine (anything in curly brackets) actually defines it
_________________
Discord: Shalimarwildcat
Reply with quote
chris123zugg
Adept


Joined: 23 Aug 2013
Posts: 207

PostPosted: Mon Mar 17, 2025 2:05 am   
 
hrrrm ok, ill re-draw it all. and the top line is the capture...
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4735
Location: Pensacola, FL, USA

PostPosted: Mon Mar 17, 2025 2:07 am   
 
Code:
#LOCAL $time
$tot=(%2/@gxprd)
$days=($tot/86400)
#IF ($days) {
  $tot=%mod($tot, 86400)
  $time=%concat($days, "d")
  }
$hours=($tot/60)
#IF ($hours) {
  $tot=%mod($tot, 60)
  $time=%trim(%concat($time, " ", $hours, "h"))
  }
$mins=($tot/60)
#IF ($mins) {
  $tot=%mod($tot, 60)
  $time=%trim(%concat($time, " ", $mins, "m"))
  }
$secs=($tot/60)
#IF ($secs) {$time=%trim(%concat($time, " ", $secs, "s"))}
#PRINT $time %eval(%2/@gxprd)
_________________
Discord: Shalimarwildcat
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4735
Location: Pensacola, FL, USA

PostPosted: Mon Mar 17, 2025 2:40 am   
 
This is a better version that prevents erroneous displays, the original is not properly error checking:

Code:
#LOCAL $time
$tot=$cur=(%2/@gxprd)
#while $cur {#SWITCH ($cur)
  (>86400) {
    $days=($cur/86400)
    $cur=%mod( $cur, 86400)
    $time=%concat( $days, "d")
    }
  (>3600) {
    $hours=($cur/3600)
    $cur=%mod( $cur, 3600)
    $time=%trim( %concat( $time, " ", $hours, "h")
    }
  (>60) {
    $mins=($cur/60)
    $cur=%mod( $cur, 60)
    $time=%trim(%concat( $time, " ", $mins, "m")
    }
  {$time=%trim(%concat($time, " ", %pop( $cur), "s")}}
#PRINT $time $tot
_________________
Discord: Shalimarwildcat
Reply with quote
chris123zugg
Adept


Joined: 23 Aug 2013
Posts: 207

PostPosted: Mon Mar 17, 2025 3:36 am   
 
sorry shalimar, wehn i added this in the trigger, it shows error and doesnt work
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4735
Location: Pensacola, FL, USA

PostPosted: Mon Mar 17, 2025 10:57 am   
 
Yea, I was half asleep, i made a few errors

Code:
#LOCAL $time
$tot=(%2/@gxprd)
$cur=$tot
#while $cur {#SWITCH ($cur>86400) {
    $days=($cur/86400)
    $cur=%mod( $cur, 86400)
    $time=%concat( $days, "d")
    }
  ($cur>3600) {
    $hours=($cur/3600)
    $cur=%mod( $cur, 60)
    $time=%trim( %concat( $time, " ", $hours, "h"))
    }
  ($cur>60) {
    $mins=($cur/60)
    $cur=%mod( $cur, 60)
    $time=%trim( %concat( $time, " ", $mins, "m"))
    }
  {$time=%trim( %concat( $time, " ", %pop( $cur), "s"))}}
#PRINT $time $tot
_________________
Discord: Shalimarwildcat

Last edited by shalimar on Mon Mar 17, 2025 5:15 pm; edited 1 time in total
Reply with quote
chris123zugg
Adept


Joined: 23 Aug 2013
Posts: 207

PostPosted: Mon Mar 17, 2025 12:21 pm   
 
3108h 12s 74592 <-- is the output from that script, i think the issue is this mud uses 2 seconds per round, so it's not propgating correctly, do i just change seconds to 30 instead of 60?
and the "H" "M" "S" portion of print in $tot where should i add the mins to separate the output?

and is it also the because the gxprd is "what i get PER rd", then the G2N is the TOTAL required for next glevel.
the math im seeing is g2n/gxprd then its passed through the function you made for establishing and adding math -> mins -> seconds, which is showing 3108h, which im going to just make ag2n up to put this in perspective
1526900/21 = 74423.8
then i would divide the (total rounds needed) 74423/30 (every round is 2 seconds...) 2480
then divide that by hours (60) 41.34
sorry if i've gone about this the wrong way, i just dont now how to correct that function to parse that correctly.

thanks again shalimar:)
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4735
Location: Pensacola, FL, USA

PostPosted: Mon Mar 17, 2025 5:20 pm   
 
No, i had left another typo in
_________________
Discord: Shalimarwildcat
Reply with quote
chris123zugg
Adept


Joined: 23 Aug 2013
Posts: 207

PostPosted: Tue Mar 18, 2025 7:48 pm   
 
**EDIT**
and the hours aren't showing, but i think i broke something when i added a space somewhere ?


#LOCAL $time
$tot=(%2/@gxprd)
$cur=$tot
#while $cur {#SWITCH ($cur > 86400) {
$days=($cur / 86400)
$cur=%mod( $cur, 86400)
$time=%concat( $days, "d")
}
($cur > 3600) {
$hours=($cur/3600)
$cur=%mod( $cur, 60)
$time=%trim( %concat( $time, " ", $hours, "h"))
}
($cur > 60) {
$mins=($cur / 60)
$cur=%mod( $cur, 60)
$time=%trim( %concat( $time, " ", $mins, "m"))
}
{$time=%trim( %concat( $time, " ", %pop( $cur), "s"))}}
//#PRINT $time $tot
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » CMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net