07 Dec, 2009, Runter wrote in the 21st comment:
Votes: 0
Davion said:
Also called autodig! This is a RoM snippet


Have you actually tried viewing that snippet?

It seems to be corrupted.
07 Dec, 2009, David Haley wrote in the 22nd comment:
Votes: 0
Downloading it works, but for some reason it's not recognized as a text file for viewing. Hrm.
07 Dec, 2009, jurdendurden wrote in the 23rd comment:
Votes: 0
Ya that happened to the snippet I uploaded the other day, and it's a .txt file. O_o
07 Dec, 2009, quixadhal wrote in the 24th comment:
Votes: 0
David Haley said:
But, if you moved enough of the "shell" into the MUD itself, then the need for the client is all but obviated. That is, if the MUD itself knew about command history, completion, etc., you'd have less need for a smart client, especially as a builder where you don't necessarily care about things like combat triggers and scripting.

I hate this term because MBA types overuse it, but I honestly feel like this would be a paradigm-shifting change in how we interact with MUDs. Shells have been this sophisticated for a while now; why should MUDs lag so much?


Mostly, it's stubbornness. :)

I posted a while back about the idea of developing a linux distribution specifically designed to work AS a MUD. Instead of a single process that mimics half the OS, you'd use the OS for its strengths. The whole system of accounts, security, telnet/ssh, terminal handling… that's already done and extremely well tested. The "MUD" would boil down to a server process that tracks and manages the game state, and a custom shell which could work much like bash does now, but it also talks to this server process. Admins could use whatever editor they liked, and write commands in any language they wanted to. There would be pie for everyone!

Now, contrast the complexity of that with the struggle I had a year or two back, just trying to convince people to switch from using "\n\r" to the TELNET-compliant "\r\n", which is just a simple global search-and-replace! Pages and pages of "But… BoffoMUD did it that was for 15 years!" and "It can't be wrong, everyone does it!". Even linking the RFC's still didn't convince people.

Soooooo, yeah. I agree. Switching to character-mode would open up a whole new set of abilities for doing cool things without needing custom clients. It should be easy enough to grab a pty and tie it to a socket, then use telnet NAWS to get the terminal type and hook in termcap/termlib to give you full screen control. I'd love to see it. I won't hold my breath, as they nay-sayers will gripe about it breaking tinyfugue or Bubba's MUD Client from 1994.

On another note, thanks for the input guys! Keep it coming! There's at least a couple up there I haven't looked at before, so this thread is being helpful, and hopefully not just for me. :)
07 Dec, 2009, quixadhal wrote in the 25th comment:
Votes: 0
Kayle said:
Now, I've never actually built on a Circle. I've only used the OasisOLC port for Smaug. So I have very little experience with DG Scripts. But I'd venture to say that embedding Lua or Python, or Ruby would be far supierior to anything that we have on the market currently.


Out of curiosity, is there a Smaug port of a recent Oasis and/or DG Scripts system? I saw the old port, but I'm not even sure if that's compatible with a current SmaugFUSS, and replacing mobprogs with DG might be a feasable idea as well, although perhaps a bit more invasive. One assumes the hooks are similar, although perhaps DG has more of them, or wants more data.
07 Dec, 2009, Fizban wrote in the 26th comment:
Votes: 0
Very fond of Oasis OLC DG Scripts.


As for an earlier comment by Kayle:

Quote
Now, I've never actually built on a Circle. I've only used the OasisOLC port for Smaug. So I have very little experience with DG Scripts. But I'd venture to say that embedding Lua or Python, or Ruby would be far supierior to anything that we have on the market currently.


DG can do 'most' anything (and yes I do mean most, not just some things, I could code a class and/or race system in DG if I wished since on tba they are attachable to PC's, not just NPC's, rooms, and objects) the other languages you listed can (in a MUD environment anyway, obviously not anything in general), though admittedly they on the other hand can do anything. The difference though is that one of the main draws of DG is its simplicity. DG is simple enough to use on a basic level for your average builder while being flexible enough for a coder to use for far more complex applications whereas all of the interpreted languages you mentioned are in my eyes entirely out of most builder's comfort zone. Scripts should hands down in my eyes be usable by builders so as to lessen the work load of the coder, if the coder has to write all of the MUDs scripts then I see little reason to not just hard-code all of it.


Kayle said:
There's a snippet for Smaug muds in the code repository here, and I /think/ Circle has it.


Yes, tbaMUD and CWG have buildwalk, stock Circle itself doesn't, but stock Circle doesn't even have OLC so that's not really surprising.
07 Dec, 2009, Runter wrote in the 27th comment:
Votes: 0
In my opinion Lua, Python, or Ruby could all be very simple to accomplish typical operations you'd be able to do in DG scripts or even mprogs. Indeed the ins and outs of the language wouldn't even need to be known. Just a simple understanding of the function calls intended for use within the system itself. The most used ones you can count on one or two hands.


Oh, 1,000th post btw. :)
07 Dec, 2009, Kayle wrote in the 28th comment:
Votes: 0
Fizban said:
The difference though is that one of the main draws of DG is its simplicity. DG is simple enough to use on a basic level for your average builder while being flexible enough for a coder to use for far more complex applications whereas all of the interpreted languages you mentioned are in my eyes entirely out of most builder's comfort zone. Scripts should hands down in my eyes be usable by builders so as to lessen the work load of the coder, if the coder has to write all of the MUDs scripts then I see little reason to not just hard-code all of it.


If some of the idiots that play WoW can work with Lua to customize their UI, I'm pretty sure, with a decent framework and helpfiles, Builder's could work with Lua.

quixadhal said:
Out of curiosity, is there a Smaug port of a recent Oasis and/or DG Scripts system? I saw the old port, but I'm not even sure if that's compatible with a current SmaugFUSS, and replacing mobprogs with DG might be a feasable idea as well, although perhaps a bit more invasive. One assumes the hooks are similar, although perhaps DG has more of them, or wants more data.


Oasis? Not that I'm aware of. DG? I'd thought about it, and then decided Lua would be more fun. Kiasyn's actually working on embedding Lua into a SmaugFUSS base, Which we'll hopefully be able to release and continue to work on as something like SmaugFUSS++ or something. And slowly convert the whole base to use the features of the STL and the like.
07 Dec, 2009, Runter wrote in the 29th comment:
Votes: 0
Quote
If some of the idiots that play WoW can work with Lua to customize their UI, I'm pretty sure, with a decent framework and helpfiles, Builder's could work with Lua.


Eh, just to be factually correct a very small percentage of people who play WoW ever deal with Lua. It's almost universal that people simply use published addons to customize their UI. These addons are actually written by an incredably small population of the whole—unless you mean that actually all WoW players are idiots. In which case I'd think you'd be jaded.
07 Dec, 2009, Kayle wrote in the 30th comment:
Votes: 0
Runter said:
Eh, just to be factually correct a very small percentage of people who play WoW ever deal with Lua. It's almost universal that people simply use published addons to customize their UI. These addons are actually written by an incredably small population of the whole—unless you mean that actually all WoW players are idiots. In which case I'd think you'd be jaded.


Not all of them are idiots. But the majority of the Addon Authors that I met seemed incredibly retarded.
07 Dec, 2009, Fizban wrote in the 31st comment:
Votes: 0
Runter said:
In my opinion Lua, Python, or Ruby could all be very simple to accomplish typical operations you'd be able to do in DG scripts or even mprogs.


Suppose it depends what type of things you'd consider to be typical really. mprogs from everything I have seen are truly very limited in use, but I've seen things done with DG that relatively new coders might have serious problems trying to hardcode even let alone a builder scripting them in luda/python/ruby (an example that comes to mind is a scripted configurable prompt that was written in DG).
07 Dec, 2009, Runter wrote in the 32nd comment:
Votes: 0
Fizban said:
Runter said:
In my opinion Lua, Python, or Ruby could all be very simple to accomplish typical operations you'd be able to do in DG scripts or even mprogs.


Suppose it depends what type of things you'd consider to be typical really. mprogs from everything I have seen are truly very limited in use, but I've seen things done with DG that relatively new coders might have serious problems trying to hardcode even let alone a builder scripting them in luda/python/ruby (an example that comes to mind is a scripted configurable prompt that was written in DG).


I dunno. Give me an example of the DG code to accomplish that if you would. I've never used DG scripts so I can't really say how more or less difficult it would be in other scripting languages.
07 Dec, 2009, Fizban wrote in the 33rd comment:
Votes: 0
Runter said:
Fizban said:
Runter said:
In my opinion Lua, Python, or Ruby could all be very simple to accomplish typical operations you'd be able to do in DG scripts or even mprogs.


Suppose it depends what type of things you'd consider to be typical really. mprogs from everything I have seen are truly very limited in use, but I've seen things done with DG that relatively new coders might have serious problems trying to hardcode even let alone a builder scripting them in luda/python/ruby (an example that comes to mind is a scripted configurable prompt that was written in DG).


I dunno. Give me an example of the DG code to accomplish that if you would. I've never used DG scripts so I can't really say how more or less difficult it would be in other scripting languages.


Configurable prompt:

Name: 'Configurable Prompt (Attached to Player)'
Trigger Intended Assignment: Mobiles
Trigger Type: Command , Numeric Arg: 100, Arg list: *
if %self% != %actor%
halt
return 0
end
if %cmd% == help
set prompt 'prompt
if %prompt.contains('%arg%)% && %arg.contains(pr)%
%send% %self% Syntax:
%send% %self% fprompt <prompt>
%send% %self% fprompt default
%send% %self% prompt default
%send% %self% prompt <prompt>
%send% %self% tcolor
%send% %self% @n
%send% %self% @RImmortal ONLY!:@n
%send% %self% @n
%send% %self% Prompt default will set your prompt to a default setting, with only the
%send% %self% bare minimum of information posted in your prompt.
%send% %self% @n
%send% %self% Tcolor stands for "toggle color". This will automate percentile coloring
%send% %self% for life/mana/move/ and opponent's hp in your fprompt.
%send% %self% @n
%send% %self% Typing prompt with anything following it other than default will alter your
%send% %self% prompt to be whatever follows it. ie. To have <current hp>/<max hp> as your
%send% %self% prompt you would type: 'prompt #H/#MH'.
%send% %self% @n
%send% %self% Valid Fields for the prompt are as follows:
%send% %self% @n
%send% %self% Prompt Commands are:
%send% %self% #H - current hp
%send% %self% #MH - max hp
%send% %self% #MN - current mana
%send% %self% #MM - max mana
%send% %self% #V - current move
%send% %self% #MV - max move
%send% %self% #G - current gold
%send% %self% #EXP - current experience
%send% %self% #S - room sector
%send% %self% #EXIT - displays exits in current room
%send% %self% @n
%send% %self% #N - GOD ONLY displays room vnum
%send% %self% @n
%send% %self% When using the scripted prompt we suggest that you turn off the hard-coded prompt,
%send% %self% this can be done by typing 'display' off.
else
return 0
end
elseif %cmd% == prompt || %cmd% == fprompt
if %cmd% == prompt%
set revcmd fprompt
else
set revcmd prompt
end
if %arg% == default
rdelete s%cmd% %self.id%
%send% %self% %cmd% set to default. Remember that this does not delete the other
%send% %self% your %revcmd%.
else
if %arg.contains(actor)% || %arg.contains(self)%
%teleport% %self% 10 *arbitrary room number, a room with a command script with no script but a * as the arg,
*sole intent is to freeze cheaters
nop %self.title(I was caught attempting to cheat with the prompt, now I'm being punished.)%
halt
end
set s%cmd% %arg%
remote s%cmd% %self.id%
%send% %self% %cmd% has been set.
end
elseif %cmd% == tcolor
if %self.varexists(tcolor)%
rdelete tcolor %self.id%
%send% %self% Tcolor is now off.
else
set tcolor 1
remote tcolor %self.id%
%send% %self% Tcolor is now on!
end
else
return 0
wait 1
if %self.fighting%
set var f
end
if %self.varexists(s%var%prompt)%
eval p %%self.s%var%prompt%%
else
set p #H/#MH >
end
set n %p.strlen%
set i 1
while %i% <= %n%
set c %p.charat(%i%)%
if !%c%
set out @n @n
elseif %c% == #
set in_var 1
unset var
while %in_var%
eval i %i% + 1
set c %p.charat(%i%)%
eval 2 %2% + 1
switch %c%
case #
set out %out%#
set in_var 0
break
case H
set var %var%H
break
case P
set var %var%P
break
case M
set var %var%M
break
case V
set var %var%V
break
case G
set var %var%G
break
case E
set var %var%E
break
case X
set var %var%X
break
case I
set var %var%I
break
case T
set var %var%T
break
case S
set var %var%S
break
case N
set var %var%N
break
case O
set var %var%O
break
done
switch %var%
case H
set out %self.hitp%
set in_var 0
set max %self.maxhitp%
break
case MH
set out %self.maxhitp%
set in_var 0
break
case MN
set out %self.mana%
set max %self.maxmana%
set in_var 0
break
case MM
set out %self.maxmana%
set in_var 0
break
case V
set out %self.move%
set max %self.maxmove%
set in_var 0
break
case MV
set out %self.maxmove%
set in_var 0
break
case G
set out %self.gold%
set in_var 0
break
case EXP
set out %self.exp%
set in_var 0
break
case S
set out %self.room.sector%
set in_var 0
break
case EXIT
set exits Exits:
set 1 north
set 2 east
set 3 south
set 4 west
set 5 up
set 6 down
set d 1
while %d% < 7
eval dir %%%d%%%
eval check %%self.room.%dir%%%
if %check%
eval door %%self.room.%dir%(bits)%% /= closed
if %door%
set exits %exits% (%dir%)
else
set exits %exits% %dir%
end
end
eval d %d% + 1
done
set out %exits%
set in_var 0
break
case N
if %self.level% > 30
set out %self.room.vnum%
else
set out %c%
end
set in_var 0
break
case OH
if %self.fighting%
eval oh ((%self.fighting.hitp% / %self.fighting.maxhitp%) * 100)
set out %oh%
else
set out %c%
end
set in_var 0
break
done
if %self.varexists(tcolor)%
if %max% || %out% == %oh%
if %out% == %oh%
set per %oh%
else
eval per ((%out% / %max%) * 100)
end
unset max
if %per% > 90
set col @W%out%@n
elseif %per% > 70
set col @G%out%@n
elseif %per% > 40
set col @Y%out%@n
elseif %per% > 10
set col @R%out%@n
else
set col @D%out%@n
end
set out %col%
end
end
done
else
set out %c%
end
set prmpt %prmpt%%out%
eval i %i% + 1
done
%send% %self% %prmpt%
end
07 Dec, 2009, David Haley wrote in the 34th comment:
Votes: 0
Fizban said:
but I've seen things done with DG that relatively new coders might have serious problems trying to hardcode even let alone a builder scripting them in luda/python/ruby (an example that comes to mind is a scripted configurable prompt that was written in DG).

If you've not seen people using e.g. Lua, how can you be so sure that a builder wouldn't find it easy to use?

Your configurable prompt's syntax, for example, is almost identical to Lua syntax. (Except that IMO it's uglier with all those '%' lying around.)
07 Dec, 2009, Kayle wrote in the 35th comment:
Votes: 0
David Haley said:
(Except that IMO it's uglier with all those '%' lying around.)


Agreed. I find all the %'s around everything annoying, and difficult to read as well. While Lua, Ruby, and even Python are much easier to read.
07 Dec, 2009, Runter wrote in the 36th comment:
Votes: 0
It certainly is more powerful than mprogs. I'm not absolutely sure that it's more simple than other languages. It seems a bit unintuitive even as an experienced developer for some of the syntax.

That being said, it looks pretty powerful for open ended development from builders.
07 Dec, 2009, Koron wrote in the 37th comment:
Votes: 0
Kayle said:
Buildwalk is basically an automated rdig. In some muds you toggle buildwalk on, and then do something like "n 2305" and it would make an exit to the n to room 2305. Other systems you just walk and it uses the next available vnum in your area.

I find myself disliking buildwalk because it adds an extra step for me in the building process. A lot of areas I'll build, the main feature will be a maze of either shifting exits or where there's a single path through and the wrong way will take you all the way back to the start. Or other mind-wrenching things. Where exits will randomly disappear. There's also the time I build an area where it would make the exits when you entered the room, and it would always be a random direction, but would always lead to the same place. So players who tried to map it, always had different maps, even when they went in a second time. Which was humorous.

That is quite interesting, but how did you handle players following each other?
08 Dec, 2009, Kayle wrote in the 38th comment:
Votes: 0
Wrote a special ifcheck for the room to check if an exit existed. If it existed, It skipped the rest of the prog.
08 Dec, 2009, Scandum wrote in the 39th comment:
Votes: 0
quixadhal said:
Soooooo, yeah. I agree. Switching to character-mode would open up a whole new set of abilities for doing cool things without needing custom clients. It should be easy enough to grab a pty and tie it to a socket, then use telnet NAWS to get the terminal type and hook in termcap/termlib to give you full screen control. I'd love to see it. I won't hold my breath, as they nay-sayers will gripe about it breaking tinyfugue or Bubba's MUD Client from 1994.

On the bright side, tintin++ supports both VT100 and character mode, primarily so it works with BBSes and Roguelikes. There's a ROM mud at ar.static.net 4000 with some decent VT100 and character mode features you might want to take a look at.
08 Dec, 2009, Kayle wrote in the 40th comment:
Votes: 0
Too bad tintin++ apparently has issues with displaying extended characters such as etc. One of my builders reported that my title didn't display properly in her tintin++.

[Edit:] Heh. Helps if I include my title.
Nibelungen () Kayle ()
20.0/46