Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » CMUD Beta Forum
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Thu Nov 29, 2007 5:15 pm   

[2.13] Output spaces missing? Also alias from alias not working.
 
EDIT: Noticed I forgot to include version in Subject... *WHAPS HIMSELF*

In the cMUD GD darmir and I have been discussing something he wrote for zMUD, I modified, and we both ported to cMUD.
The issue is that when:
@channel @person @emph @input
is used, cMUD sends the values to the MUD without the spaces between the variables. I'm not absolutely sure this is a bug, but in zMUD the above worked.
Now, I posted a fix for this in the GD forum, BUT to me its just a workaround. Unless Zugg says otherwise (ie this is actually proper intended behavior).
However we are having another issue with it.

Here is my enhanced version ported to cMUD. It WORKS if you use the stutter alias. If however you use one of the mood aliases (stex, stconf, and st), it just outputs your text to the channel with a trailing space. Maybe this is a bug, or maybe I'm missing something thats new in cMUD.

Code:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<cmud>
<window name="Allynia.mud" usesession="false">
  <uid>{B458A1E0-B33A-4A86-8F07-3316F4E2CC67}</uid>
  <packages>English Keypad|English Directions|Allynia.mud|Various</packages>
  <class name="Stutter">
    <alias name="stutter">
      <value>#ECHO Stutter Called As: %1 %-2 a
#VARIABLE channel {%1}
#VARIABLE input {%-2}
#VARIABLE output ""
#VARIABLE person ""
#VARIABLE emph ""
#VARIABLE loopcount 0
#VARIABLE s_word ""
#VARIABLE input %replace( @input, " ", "|")
#IF (%ismember( @channel, @sayto)) {
  #VARIABLE input %replace( @input, "|", " ")
  #VARIABLE person %word( @input, 1)
  #VARIABLE input %replace( @input, " ", "|")
  #VARIABLE input %delitem( @person, @input)
  }
#IF (%match( @input.1, ~[|~])) {
  #VARIABLE emph @input.1
  #IF (%match( @emph, "~~(")) {
    #SHOW You used the incorrect format for an emphasis
    #ABORT 1
    }
  #VARIABLE input %replace( @input, " ", "|")
  #VARIABLE input %delitem( @emph, @input)
  #VARIABLE emph %replace( @emph, "|", " ")
  #VARIABLE emph %concat( "(", @emph, ")")
  }
#FORALL @input {
  #ADD loopcount 1
  #FORALL @stutterlist {
    #IF %begins( %i, %j) {
      #IF (%random( 1, @mood)=1) {
        #IF (%i = "I" ) {#SHOW Should make this proper case.}
        #VARIABLE s_word %concat( %j, "..", %j, "..", %i)
        #VARIABLE input %replaceitem( @s_word, @loopcount, @input)
        } //END RANDOM IF
      } // END BEGINS IF
    #IF %begins( %i, %proper( %j)) {
      #IF (%random( 1, @mood)=1) {
        #IF (%i = "I" ) {#SHOW Should make this proper case.}
        #VARIABLE s_word %concat( %proper( %j), "..", %proper( %j), "..", %i)
        #VARIABLE input %replaceitem( @s_word, @loopcount, @input)
        } //END RANDOM IF
      } // END PROPER CHECK IF
    }
  }
#VARIABLE input %replace( @input, "|", " ")
#IF (@person != "") {#VARIABLE output %concat( @output, @person, " ")}
#IF (@emph != "") {#VARIABLE output %concat( @output, @emph, " ")}
#VARIABLE output %concat(" ", @output, @input)
@channel @output
mood = 3</value>
    </alias>
    <alias name="stex">
      <value>mood = 1
stutter %-1</value>
    </alias>
    <alias name="stconf">
      <value>mood = 10
stutter %-1</value>
    </alias>
    <alias name="st">
      <value>mood = 3
stutter %-1</value>
    </alias>
    <alias name="DelayStutterTime">
      <value>#VARIABLE st_relay {%1}</value>
    </alias>
    <alias name="stHelp">
      <value><![CDATA[#CLR
#SHOW {""}
#SHOW {~<color red>~<b>This Program was created to be able to stutter in a language.~</b>~</color>}
#SHOW {~<color green>~<b>I hope you find this help file helpful~</b>~</color>}
#SHOW {~<color cyan>---------------------------------------------------~</color>}
#SHOW {~<color lightgreen>Alias: DelayStutterTime~</color>}
#SHOW {~<color cyan>This alias is used to delay the time of your stutter.~</color>}
#SHOW {~<color cyan>The higher the number the less your character will stutter.~</color>}
#SHOW {~<color yellow>------------------- USAGE -------------------~</color>}
#SHOW {~<color cyan>Example:~</color>}
#SHOW {~<color cyan>DelayStutterTime 3~</color>}
#SHOW {~<color cyan>---------------------------------------------------~</color>}
#SHOW {~<color lightgreen>Alias: stutter~</color>}
#SHOW {~<color cyan>This alias is used to make your character stutter. See more information below.~</color>}
#SHOW {~<color yellow>------------------- USAGE -------------------~</color>}
#SHOW {~<color red>~<b>red~</b>~</color> ~<color white>is for the command~</color>}
#SHOW {~<color lightgreen>~<b>green~</b>~</color> ~<color white>is for the channel~</color>}
#SHOW {~<color purple>~<b>purple~</b>~</color> ~<color white>is for the channel~</color>}
#SHOW {~<color yellow>~<b>yellow~</b>~</color> ~<color white>is for the channel emphasis ~</color>}
#SHOW {~<color cyan>~<b>cyan~</b>~</color> ~<color white>is for the channel verbiage~</color>}
#SHOW {""}
#SHOW {~<color cyan>Example 1:~</color>}
#SHOW {~<color red>~<b>stutter~</b>~</color> ~<color lightgreen>~<b>tell~</b>~</color> ~<color purple>~<b>Dave~</b>~</color> ~<color cyan>~<b>My oh my. This is not for you. I will not do it?~</b>~</color>}
#SHOW {~<color cyan>Output 1:~</color>}
#SHOW {~<color cyan>tell Dave My oh my. This i..i..is not for you. I will not do i..i..it?~</color>}
#SHOW {""}
#SHOW {~<color cyan>Example 2:~</color>}
#SHOW {~<color red>~<b>stutter~</b>~</color> ~<color lightgreen>~<b>tell~</b>~</color> ~<color purple>~<b>Dave~</b>~</color> ~<color yellow>~<b>(while smiling) ~</b>~</color> ~<color cyan>~<b>My oh my. This is not for you. I will not do it?~</b>~</color>}
#SHOW {~<color cyan>Output 2:~</color>}
#SHOW {~<color cyan>tell Dave (while smiling) My oh my. This is not for you. I will not do it?~</color>}
#SHOW {""}
#SHOW {~<color cyan>Example 3:~</color>}
#SHOW {~<color red>~<b>stutter~</b>~</color> ~<color lightgreen>~<b>say~</b>~</color> ~<color yellow>~<b>(while smiling)~</b>~</color> ~<color cyan>~<b>My oh my. This is not for you. I will not do it?~</b>~</color>}
#SHOW {~<color cyan>Output 3:~</color>}
#SHOW {~<color cyan>say (while smiling) M..M..My oh my. Th..Th..This is not for you. I will not do it?~</color>}
#SHOW {""}
#SHOW {~<color cyan>Example 4:~</color>}
#SHOW {~<color red>~<b>stutter~</b>~</color> ~<color lightgreen>~<b>say~</b>~</color> ~<color yellow>~<b>~/(while smiling)~</b>~</color> ~<color cyan>~<b>My oh my. This is not for you. I will not do it?~</b>~</color>}
#SHOW {~<color cyan>Output 4:~</color>}
#SHOW {~<color cyan>You used the incorrect format for an emphasis~</color>}
#SHOW {""}
#SHOW {~<color cyan>Example 5:~</color>}
#SHOW {~<color red>~<b>stutter~</b>~</color> ~<color lightgreen>~<b>say~</b>~</color> ~<color cyan>~<b>My oh my. This is not for you. I will not do it?~</b>~</color>}
#SHOW {~<color cyan>Output 4:~</color>}
#SHOW {~<color cyan>say M..M..My oh my. Th..Th..This is not for you. I will not do it?~</color>}
#CR]]></value>
    </alias>
    <var name="stutterlist" type="StringList">m|i|ch|th|st|g|c|l|j|t</var>
    <var name="sayto" type="StringList">tell|whisper|te</var>
    <var name="input"/>
    <var name="inval_emph" type="StringList">/|?|,|.|=|-|#</var>
    <var name="emph" type="Literal"/>
    <var name="loopcount">0</var>
    <var name="s_word" type="Literal"/>
    <var name="ouput"/>
    <var name="mood">3</var>
  </class>
</window>
</cmud>
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Nov 29, 2007 5:33 pm   
 
In CMUD you can't just put a variable on a line and expect it to be sent to the MUD. CMUD doesn't know whether to send it to the MUD or to execute it as a command. If you want to preserve spaces, you need to use the #SEND command:

#SEND {@channel @person @emph @input}

If you want to execute it as a CMUD script, then you would use #EXEC:

#EXEC {@channel @person @emph @input}

Putting variables on their own line to send them to the MUD was one of those weird things that zMUD did even though it wasn't officially documented or supported.

Also, in CMUD the < and > characters are not special characters, so you don't need all of the ~ characters in your #SHOW commands. Just doing something like:
Code:
#SHOW {<color cyan>Example 5:</color>}

will work fine in CMUD and be more readable.

Finally, you no longer need {} around your %1 variables. So you can just do this:
Code:
#VARIABLE channel %1

and it will work fine in CMUD, even if %1 contains spaces or other characters.
Reply with quote
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Thu Nov 29, 2007 5:40 pm   
 
Ok, grin, that isn't the problem we're having.
If you use "stex gt I want to stutter" it should then call: "stutter gt I want to stutter"
Do we need to put EXEC before the stutter call in the stex variable?
ie. instead of:
Code:

#ALIAS stex {mood = 1;stutter %-1}

use:
Code:

#ALIAS stex {mood = 1;#EXE stutter %-1}


Or is it something else entirely?
_________________
CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Reply with quote
Arminas
Wizard


Joined: 11 Jul 2002
Posts: 1265
Location: USA

PostPosted: Thu Nov 29, 2007 7:17 pm   
 
Edit: Embarassed Scratch that...
_________________
Arminas, The Invisible horseman
Windows 7 Pro 32 bit
AMD 64 X2 2.51 Dual Core, 2 GB of Ram

Last edited by Arminas on Thu Nov 29, 2007 8:15 pm; edited 1 time in total
Reply with quote
Fang Xianfu
GURU


Joined: 26 Jan 2004
Posts: 5155
Location: United Kingdom

PostPosted: Thu Nov 29, 2007 8:01 pm   
 
See also this post. Any line beginning with a variable should begin instead with #exec, #send or #sendraw. It's not the "stutter %-1" line you need to change, but the "@channel @person @emph @input" line, as Zugg showed in his post. You said that's the line that was causing the problem in your original post.

Also, you might find better results replacing what variables you can with local variables. You'll still have to use #exec or whatever, but it'll be neater and faster.
_________________
Rorso's syntax colouriser.

- Happy bunny is happy! (1/25)

Last edited by Fang Xianfu on Thu Nov 29, 2007 8:03 pm; edited 1 time in total
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Thu Nov 29, 2007 8:02 pm   
 
No, your first example is fine:
Code:
#ALIAS stex {mood = 1;stutter %-1}

That will still call the "stutter" alias. You only need #EXEC when the name of the alias is in a variable. For example:
Code:
myvar = %concat("stutter ",%-1)
#EXEC @myvar

So you only need #EXEC if the name of the alias is stored within a variable. In your example, you have "stutter" given explicitly, so you don't need #EXEC.

Like I said above, the problem is with your lines like:
Code:
@channel @output

in your script above. If you are trying to send this to the MUD then you need to use #SEND, and if it contains aliases or other CMUD commands, then you need to use #EXEC. There is no way for CMUD to "guess" whether or not the contents of your @channel and @output variables contain CMUD commands or aliases, so you have to tell it.
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Thu Nov 29, 2007 8:14 pm   
 
Ack, Zugg beat me to it and gave the correct answer, which I couldn't. Smile


Last edited by Rahab on Thu Nov 29, 2007 8:33 pm; edited 1 time in total
Reply with quote
Fang Xianfu
GURU


Joined: 26 Jan 2004
Posts: 5155
Location: United Kingdom

PostPosted: Thu Nov 29, 2007 8:24 pm   
 
Look at the penultimate line of the "stutter" alias. It's "@channel @output". As Zugg and I have both explained, CMUD won't like that. The problem isn't how he calls the stutter alias, but the way the stutter alias tries to send the commands to the MUD - that is, it doesn't.
_________________
Rorso's syntax colouriser.

- Happy bunny is happy! (1/25)
Reply with quote
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Thu Nov 29, 2007 8:46 pm   
 
No, I corrected the penultimate line in stutter already,
However in order to get it to work I did try the #EXEC stutter and that made it work
So something isn't right. Another bug for Zugg to work on.

Using
#ALIAS stex {mood = 1;#EXEC stutter %-1}

Was the only way to get it to work.
As I understand it the forces the %-1 to expand prior to sending it with the stutter, and without doing so
stutter was outputting just what I sent it without parsing it. Had absolutely nothing to do with the penultimate line,
but I fixed that anyways.

I'll try it without the #EXEC now that I've corrected the actual stutter alias and see if it works...

Which it does not.
If I use "stex gt test test test"
it is NOT parsed by the stutter alias. Not at ALL. It is simply dropped all the way down and output right back to the mud WITH a trailing space
so result sent to MUD is "gt test test test "
if I use #EXEC stutter %-1
to call stutter, then it works fine.
So, it seems there is a bug there, yes?

Current stutter alias:
Code:

#VARIABLE channel {%1}
#VARIABLE input {%-2}
#VARIABLE output ""
#VARIABLE person ""
#VARIABLE emph ""
#VARIABLE loopcount 0
#VARIABLE s_word ""
#VARIABLE input %replace( @input, " ", "|")
#IF (%ismember( @channel, @sayto)) {
  #VARIABLE input %replace( @input, "|", " ")
  #VARIABLE person %word( @input, 1)
  #VARIABLE input %replace( @input, " ", "|")
  #VARIABLE input %delitem( @person, @input)
  }
#IF (%match( @input.1, ~[|~])) {
  #VARIABLE emph @input.1
  #IF (%match( @emph, "~~(")) {
    #SHOW You used the incorrect format for an emphasis
    #ABORT 1
    }
  #VARIABLE input %replace( @input, " ", "|")
  #VARIABLE input %delitem( @emph, @input)
  #VARIABLE emph %replace( @emph, "|", " ")
  #VARIABLE emph %concat( "(", @emph, ")")
  }
#FORALL @input {
  #ADD loopcount 1
  #FORALL @stutterlist {
    #IF %begins( %i, %j) {
      #IF (%random( 1, @mood)=1) {
        #IF (%i = "I" ) {#SHOW Should make this proper case.}
        #VARIABLE s_word %concat( %j, "..", %j, "..", %i)
        #VARIABLE input %replaceitem( @s_word, @loopcount, @input)
        } //END RANDOM IF
      } // END BEGINS IF
    #IF %begins( %i, %proper( %j)) {
      #IF (%random( 1, @mood)=1) {
        #IF (%i = "I" ) {#SHOW Should make this proper case.}
        #VARIABLE s_word %concat( %proper( %j), "..", %proper( %j), "..", %i)
        #VARIABLE input %replaceitem( @s_word, @loopcount, @input)
        } //END RANDOM IF
      } // END PROPER CHECK IF
    }
  }
#VARIABLE input %replace( @input, "|", " ")
#IF (@person != "") {#VARIABLE output %concat( @output, @person, " ")}
#IF (@emph != "") {#VARIABLE output %concat( @output, @emph, " ")}
#VARIABLE output %concat(@output, @input)
#ECHO @channel @output
#SEND {@channel @output}
mood = 3


Now do:
#ALIAS stex {mood = 1;stutter %-1}
#ALIAS stex2 {mood = 1;#EXEC stutter %-1}

And then try them both. You will SEE that it is NOT right.

#DEBUG Output For stex:
Code:

0.0001 | c  Allynia. |[4] Allynia.mud Comline : start : stex gt test test test
0.0013 | k  Allynia. |  [4] Var "mood" changed from "3" to "1"
0.0012 | k  Allynia. |  [4] Var "channel" changed from "gt test test tes" to "gt test test test"
0.0000 | a  Allynia. |3437hp 3055m 787mv> gt test test test
0.0040 | j  Allynia. >gt test test test
0.0034 | k  Allynia. |  [4] Var "mood" changed from "1" to "3"
0.0029 | d  Allynia. |[4] Allynia.mud Comline : stopped
0.0009 | a  Allynia. |You tell the group, 'test test test '
0.4309 | a  Allynia. |
0.0021 | a  Allynia. ]3437hp 3055m 787mv>


#DEBUG Output for stex2:
Code:

0.0001 | c  Allynia. |[4] Allynia.mud Comline : start : stex2 gt test test test
0.0011 | k  Allynia. |  [4] Var "mood" changed from "3" to "1"
0.0016 | k  Allynia. |  Var "input" changed from "t..t..test t..t..test test t..t..test" to "test test test"
0.0000 | k  Allynia. |  Var "output" changed from "t..t..test t..t..test test t..t..test" to ""
0.0000 | k  Allynia. |  Var "loopcount" changed from "3" to "0"
0.0044 | k  Allynia. |  Var "s_word" changed from "t..t..test" to ""
0.0016 | k  Allynia. |  Var "input" changed from "test test test" to "test|test|test"
0.0000 | k  Allynia. |  Var "loopcount" changed from "0" to "1"
0.0044 | k  Allynia. |  Var "s_word" changed from "" to "t..t..test"
0.0255 | k  Allynia. |  Var "input" changed from "test|test|test" to "t..t..test|test|test"
0.0000 | k  Allynia. |  Var "loopcount" changed from "1" to "2"
0.0035 | k  Allynia. |  Var "input" changed from "t..t..test|test|test" to "t..t..test|t..t..test|test"
0.0000 | k  Allynia. |  Var "loopcount" changed from "2" to "3"
0.0036 | k  Allynia. |  Var "input" changed from "t..t..test|t..t..test|test" to "t..t..test|t..t..test|test|t..t..test"
0.0001 | k  Allynia. |  Var "input" changed from "t..t..test|t..t..test|test|t..t..test" to "t..t..test t..t..test test t..t..test"
0.0000 | k  Allynia. |  Var "output" changed from "" to "t..t..test t..t..test test t..t..test"
0.0000 | a  Allynia. |3437hp 3055m 787mv> gt t..t..test t..t..test test t..t..test
0.0035 | j  Allynia. >gt t..t..test t..t..test test t..t..test
0.0034 | k  Allynia. |  Var "mood" changed from "1" to "3"
0.0014 | d  Allynia. |[4] Allynia.mud Comline : stopped
0.0012 | a  Allynia. |You tell the group, 't..t..test t..t..test test t..t..test'
0.4117 | a  Allynia. |
0.0020 | a  Allynia. ]3437hp 3055m 787mv>


That is a BIG difference
You can easily see that it is assigning %-1 from stex to %1 for stutter (which is then assigned to the @channel variable,
hence it getting sent to MUD AND the extra space, which is the space between the @channel and @output variables inside
the #SEND at the end of stutter) instead of stutter PARSING it and assigning only the first word to %1.
However when you #EXEC the stutter call it expands %-1 first and thus stutter actually parses it.
Reply with quote
Fang Xianfu
GURU


Joined: 26 Jan 2004
Posts: 5155
Location: United Kingdom

PostPosted: Thu Nov 29, 2007 9:17 pm   
 
Of course! I remember now. This is a behaviour that's changed from zMUD. It works the same way as if you did

#var something %-1

the %-1 in its entirety is always the third parameter, even if it contains spaces. That explains why the "channel" variable is being set to "gt test test test". So what you need to do is this:

stutter %1 %-2

or your #exec there.
_________________
Rorso's syntax colouriser.

- Happy bunny is happy! (1/25)
Reply with quote
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Thu Nov 29, 2007 10:29 pm   
 
That makes absolutely no sense.
When it is passed to stutter, stutter should STILL parse the full argument passed to it, not just automatically dump it into the %1 for itself.
That is WRONG by any common sense at all.
_________________
CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Reply with quote
Vijilante
SubAdmin


Joined: 18 Nov 2001
Posts: 5182

PostPosted: Thu Nov 29, 2007 10:51 pm   
 
Actually it isn't wrong if you understand how CMud and zMud before it handles parameters. I will start from zMud, with a simple alias.
Code:
#ALIAS test {#SHOWP %numparam()" - ";#LOOP %numparam() {#SHOWP {%param(%i)" - "}};#SHOW {};#NOOP}

Now when we use this alias it will display the parameters with " - " as a delimeter, and this alias will also work in CMud without any modification.
test abc def ghi jkl mno pqr stu vwx yz
Displays
9 - abc - def - ghi - jkl - mno - pqr - stu - vwx - yz
test abc def {ghi jkl} mno pqr stu vwx yz
Displays
8 - abc - def - {ghi jkl} - mno - pqr - stu - vwx - yz
test abc def ghi "jkl mno pqr" stu vwx yz
Displays
7 - abc - def - ghi - jkl mno pqr - stu - vwx - yz

These actually should be the same between zMud and CMud for compatibility. First thing to note the braces are included as part of the parameter in the second example. The quotes that you don't see in the 3rd example actually are included as part of the parameter! The display of them is stripped by #SHOW and related commands, in order to detect them you would have to do %ascii(%param(4)) with that example. Since the quotes also tend to remain hidden for return values and parameters of functions you generally don't know they are there.

So what is the difference between CMud and zMud, well simply that %nn references now surround themselves with quotes. Delayed expansion is gone, all hail Zugg. And the flat replacement of such references is gone. So when you have alias 1 call alias 2 with %-1 that has in reality become this
Code:
2 "[i]the contents %-1 for alias 1[i]"
Notice the surrounding quotes make it into 1 parameter as in our examples above.

You can't really have it work both ways. The lack of that set of automatic internal quotes was most of the reason nearly every to %nn had to be specifically put into into quotes with zMud.
_________________
The only good questions are the ones we have never answered before.
Search the Forums
Reply with quote
Fang Xianfu
GURU


Joined: 26 Jan 2004
Posts: 5155
Location: United Kingdom

PostPosted: Thu Nov 29, 2007 11:03 pm   
 
More generally, most other languages work that way too. To use a Lua example:

function dostuff (...)
  whatever(...)
end
string="mackerel,haddock"
dostuff(string)

Just because the string you're passing to the function contains the parameter delimiter, you don't expect it to separate the parameters unless you tell it to. Separating and not separating are both possible using either method, but this one eliminates the need to ever use the potentially confusing syntax "%1", which could either be the literal string %1 or the entire contents of the %1 variable.

If you were to do something similar in zScript:

$string = "red,green"
#call %btncol(btn,$string)

it should be readily obvious that the $string variable shouldn't be automatically separated into two parameters. It works the same with aliases.
_________________
Rorso's syntax colouriser.

- Happy bunny is happy! (1/25)
Reply with quote
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Thu Nov 29, 2007 11:46 pm   
 
That still seems backwards to me, it really does go against common sense to say all of a sudden that when an alias is passed a multiple word reference it should treat it as a single entity automatically. Especially when it only does it when called from within another alias USING the %-n format which is supposed to take all the line starting with n and going on forever. But maybe I never understood how the %-n was supposed to work because of zMUD's bad parser ;)

So I'll just accept that the correct way to do this is to use #EXEC to call stutter with from the stex and other aliases.
_________________
CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Reply with quote
Larkin
Wizard


Joined: 25 Mar 2003
Posts: 1113
Location: USA

PostPosted: Fri Nov 30, 2007 1:47 pm   
 
You can do it that way, but that doesn't necessarily make it the "correct" way. I think you hit the nail on the head when you basically say that zMUD "broke" your way of programming. Heh.
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » CMUD Beta Forum 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