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
Private
Adept


Joined: 10 Jan 2002
Posts: 264
Location: USA

PostPosted: Wed Aug 01, 2012 5:12 pm   

passing a variable to vbscript #MSS [not-solved]
 
t1 is set to "8/01/2012 12:10:53" sans quotes
t2 is set to "8/01/2012 12:44:35" also without quotes


#MSS {MinDiff = DateDiff("n",~"@t1~",~"@t2~")}
min_uptime = %mss(MinDiff)
echo ... @min_uptime ... %mss(MinDiff)

... 0 ... 0

#MSS {MinDiff = DateDiff("n",@t1,@t2)}
min_uptime = %mss(MinDiff)
echo ... @min_uptime ... %mss(MinDiff)

... 0 ... 0

the 1st example returns the correct # of minutes in zmud

also another script... using DSPing.dll as a COM object...

this works as expected in zmud...

Code:
Set cc = CreateObject( "Zmud.Application")
Set ss = cc.CurrentSession

Set Ping = CreateObject( "DSPing.Ping" )
Result = Ping.DoPing("%1")
If Result = 0 then
    ss.ProcessCommand("#VAR ping_result " & Result & " ")
    ss.ProcessCommand("#VAR ping_minimum " & Ping.Minimum & " ")
    ss.ProcessCommand("#VAR ping_average " & Ping.Average & " ")
    ss.ProcessCommand("#VAR ping_maximum " & Ping.Maximum & " ")
'    msgbox("Ping successful to %1." & vbCrLf & "Approximate round trip times in milliseconds:" & vbCrLf & "Minimum = " & Ping.Minimum & "ms" & vbCrLf & "Maximum = " & Ping.Maximum & "ms" & vbCrLf & "Average = " & Ping.Average & "ms")
Else
    ss.ProcessCommand("#VAR ping_result " & Result & " ")
'    msgbox("Ping failed.")
End If

ss.ProcessCommand("ping_results %1 %2")

Set cc = Nothing
Set ss = Nothing
Set Result = Nothing
Set Ping = Nothing


the various double quotes don't play well in cmud, changing to ' quotes makes vbscript puke.

output in zmud:
ping google.com
Ping to google.com) Min: 15 Avg: 20 Max: 31


Last edited by Private on Fri Aug 03, 2012 1:12 am; edited 2 times in total
Reply with quote
Daern
Sorcerer


Joined: 15 Apr 2011
Posts: 809

PostPosted: Wed Aug 01, 2012 7:30 pm   
 
I've never used #MSS, so don't have an answer to your question, but did you know you can use VBScript directly in CMUD now? Just change the language dropdown at the top right in the settings editor. It should list all languages supported by the Windows Scripting Host that you have installed (VBScript comes with Windows of course, so no install required).
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Wed Aug 01, 2012 8:08 pm   
 
I see an error in this line:
#MSS {MinDiff = DateDiff("n",~"@t1",~"@t2~")}

I assume should be:
#MSS {MinDiff = DateDiff("n",~"@t1~",~"@t2~")}

But I don't know anything about MSS, so I can't help any further.
Reply with quote
Private
Adept


Joined: 10 Jan 2002
Posts: 264
Location: USA

PostPosted: Wed Aug 01, 2012 11:07 pm   
 
Daern of course i knew that, you could in zmud as well... you didnt see the second part of my post i assume...

Thanks Rahab, guess i typed that too quick, but yea... double quote hell.. whether usin #MSS, %mss, or VBScript through pulldown.
Reply with quote
Private
Adept


Joined: 10 Jan 2002
Posts: 264
Location: USA

PostPosted: Mon Aug 06, 2012 10:17 pm   
 
Anyone know? running out of time on the cmud trial... gonna stick to zmud if i can't get all my impot issues solved :(
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Mon Aug 06, 2012 11:57 pm   
 
If calculating date differences is the only thing stopping you from buying Cmud, you should be aware that people have already written and shared scripts for doing the calculation in Zscript for Cmud. But if you have other MSS scripts, I don't have anything else to offer.
Reply with quote
Private
Adept


Joined: 10 Jan 2002
Posts: 264
Location: USA

PostPosted: Tue Aug 07, 2012 4:08 pm   
 
I have lots of other perl/vbscript scripts... all currently broken on import to cmud
Reply with quote
Daern
Sorcerer


Joined: 15 Apr 2011
Posts: 809

PostPosted: Tue Aug 07, 2012 4:31 pm   
 
Set your t1 and t2 variables to string literal and it works. Looks like autotype is trying to evaluate it, probably because of the slashes. The problem actually had nothing to do with #mss, the contents of your variables were actually evaluating to 0, you can see that easily by #show-ing them on the command line.

As for the other code segment, this is probably a stupid question, but did you change Zmud.Application to Cmud.Application? I couldn't actually run your code because I don't have your ping dll, but the double quotes don't look to be a problem to me, they don't break the syntax highlighting anyway...
Reply with quote
Private
Adept


Joined: 10 Jan 2002
Posts: 264
Location: USA

PostPosted: Tue Aug 07, 2012 10:40 pm   
 
I set the 2 vars to literal as you said, but every time i ran the script, they reset to auto,

I was able to get it working by using:
#CALL %vartype(t1,3)
#CALL %vartype(t2,3)
AFTER I changed what was in them with:
#IF (%ends(%1,1)) {t1 = $month~/%3~/%4%char(32)%5~:%6~:%7}

the previous if resets those vars to auto type, using the #CALL after sets them to literal and with some other tweaks, it now works


On the ping script, I might mention that in the script posted above, changing %1 to google.com simply works...
there is no Cmud.Application... it is still set to Zmud so
Set cc = CreateObject( "Cmud.Application")
errors with source not found by the vbscript parser

Leaving: Set cc = CreateObject( "Zmud.Application")
Changing: Result = Ping. DoPing("google.com")
^^^^^^^^^ works... but only if i dont need to enter %1 from the command line which i do.

ping google.com gt
(Group) Ozzy: 'Ping to Min: 15 Avg: 15 Max: 16'
should read
(Group) Ozzy: 'Ping to google.com Min: 15 Avg: 15 Max: 16'

google.com is normally in %1 for the script to work with.

p.s. http://dsping-pro.en.softonic.com/ ... put the dll in cmud directory and register it, restart cmud, you know it worked if you get a dsping nag screen as it's a trial. I can't share the paid for version for you to test.
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Tue Aug 07, 2012 11:28 pm   
 
Perhaps the problem is that you are trying to do implicit concatenation. Try explicit concatenation:
Code:
#IF (%ends(%1,1)) {t1 = %concat($month, "/", %3, "/", %4, %char(32), %5, ":", %6, ":", %7)}
Reply with quote
Daern
Sorcerer


Joined: 15 Apr 2011
Posts: 809

PostPosted: Wed Aug 08, 2012 3:21 am   
 
There is definitely a Cmud.Application. I just tested with this:
Code:
Set cc = CreateObject("Cmud.Application")
Set ss = cc.CurrentSession
ss.ProcessCommand("#SHOW test")
Set ss = Nothing
Set cc = Nothing

and it works just fine. Zmud.Application seems to work too though, so I guess there's no harm in using it.

Moving on... it looks like the problem is with your use of %1 in quotes. In zMUD, parameters were substituted in before the code was run. If you did something like Ping.DoPing("%1"), the %1 got filled in right away and the VBScript interpreter only ever saw Ping.DoPing("google.com"). That pre-substitution doesn't happen in CMUD anymore, so the VBScript interpreter never sees google.com. Unfortunately, I can't find a good solution for this. The best I can come up with is to use a zScript alias, store %1 in a variable and call a VBScript function (or use #MSS), referencing your variable with zvar.varname. A simple example:
Code:
testvar = %1
#MSS {msgbox(zvar.testvar)}
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