Allegro.cc - Online Community

Allegro.cc Forums » The Depot » MUD Engine: v0.05 - Online!

This thread is locked; no one can reply to it. rss feed Print
 1   2   3   4 
MUD Engine: v0.05 - Online!
Derezo
Member #1,666
April 2001
avatar

I released version 0.05 of my MUD Engine today.

MUD stands for "Multi User Dungeon" (or other variation). They're basically online text RPGs.
This MUD has been built from the ground up and is completely custom made :)

It's very early in development, but has the basic features of a mud such as players, areas, rooms, NPC's, skills and spells, items and equipment, modifier effects, currency, etc. Even built-in area editing commands have been implemented.
Most of the interface is currently still ugly and usually very lacking in detail, but it's colorful! :)

You can connect to this MUD at telnet://24.141.201.66:4000 by clicking that link or inserting the address/port into your favorite MUD client. :)

Don't be completely surprised if you find a bug, or if you try to connect and it's not up because someone else found a bug. Although there are no known game-crashing bugs, there probably are lots of them hiding around.

If you have any suggestions or comments, I'd love to hear them! :)

This MUD engine uses allegro for Timers, Packfiles and Config Files. :)

[edit: Screenshot]
http://24.141.201.66/mud.gif

"He who controls the stuffing controls the Universe"

Fladimir da Gorf
Member #1,565
October 2001
avatar

Ehh... that was pretty confusing, if you asked me. First, it asked my name and when I pressed 'f' it immediately advanced to the next question, where I pressed 'y'. Now it asked for a password, and after I pressed 'a', it immediately wanted me to confirm it, so I pressed 'a' again.
Then I had no idea what to do next, for every character I pressed it said that I couldn't do something, so I quit... :-/
But maybe the problem is that I've never played a MUD before, just seen someone to play.

OpenLayer has reached a random SVN version number ;) | Online manual | Installation video!| MSVC projects now possible with cmake | Now alvailable as a Dev-C++ Devpack! (Thanks to Kotori)

Derezo
Member #1,666
April 2001
avatar

Forgot to mention, there's a "show commands" command. :)

[edit]
F is still in the game, with 0 clients connected ;)
Gotta add some auto-disconnect code. Thanks for reminding me!

[edit2]
Oh.. and.. I just realized what you were saying.
That's rather odd how it would advance right after the first character... but I see.

I'll need to fix it to work with telnet perhaps.
Telnet must send 1 key at a time.. while MUSHClient (what I use) sends one command at a time.

[edit3]
Got it fixed ingame, but will need to work on the login before I put it over to the server.

"He who controls the stuffing controls the Universe"

CGamesPlay
Member #2,559
July 2002
avatar

unless the yellow room is connected to itself on the east and west, it needs some sort of "ouch, that's a wall" message.

Oh, and I can't find anybody else, mainly because I'm stuck in the yellow room.

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

Radagar
Member #2,768
September 2002
avatar

Derezo, I couldn't connect, must be down right now. I'm a big MUD fun, good luck with it. I'll try it again some time later.

------------
Radagar - So your vote is for A.D.H.D.?
Chris Katko - Well, that was uninten--ooh kitty!

CGamesPlay
Member #2,559
July 2002
avatar

Nope. It's up right now. And don't say "go north" :)

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

Derezo
Member #1,666
April 2001
avatar

I should mention (already did to CGP inside ;)) that you should have a dark default background.. like black. If it's white, it wont show white messages :P

I need a command to disable color. Noted. :)

[edit]
Oh yeah, and it is up.. but, there's an issue with Windows Telnet right now (though it should connect).

Trying to get it resolved, but I had to redo my entire buffering code... which is working, but for some reason screws up if you log in more than one person.. >:( I'll get it eventually.

Someone tried to connect as a blank character a minute ago.....

"He who controls the stuffing controls the Universe"

CGamesPlay
Member #2,559
July 2002
avatar

say WHEHE!!! now I can't stop typing say! I do it before I say anything!!!

say am I crashing your server? the login seems to have stopped.
say it quit right after I said kill Derezo with all my stats save INT set to -1.

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

Derezo
Member #1,666
April 2001
avatar

say Yeah, it buggered up with the crazy stats :P
say The log said "You do not have enough HP". Pretty weird.
say I loaded up the new version which was telnet friendly, but apparently it's got other issues.
say Namely, new player login.

say It's back up now... the windows telnet-hating version

:: UPDATE ::
Now supports windows telnet limitedly.
Your backspace wont work, nor will your arrow keys or anything fancy.

Anyway, it's functional in windows telnet now :P
So, all you guys who had one letter names can come back! F, B, A, L.. all of ya's! ;)

:: Another Update ::
Improved the command buffering code BIG TIME. I'll add support for backspace very soon.
It doesn't freak out on you if you don't put in a command and press enter. Command stacking is now fully supported as well, instead of only 2 commadn maximum before it starts eating your commands up (command stacking is sending multiple commands. Usually using a semi;colon to seperate them).

There's also a gossip command which sends your gossip to everyone in the game. Monsters no longer "leave the room" when they die, characters don't "enter the room" when they enter the game, and a few other minor changes (you don't see yourself leave or enter the room anymore :P).

Movin' along quite well. Thanks for all the comments from those who gave them in game! :)
Will work on some of the other stuff shortly.

Ah yes.. someone came in asking how to 'pose'. I was AFK, then came back, and then left again.. Sorry, heh.
The game doesn't quite have a proper social list yet, but you can use emote or /me. :)
/me smiles happily. -> "Derezo smiles happily"
emote stares up at the sky. -> "Derezo stares up at the sky"
Etc. :)

"He who controls the stuffing controls the Universe"

Radagar
Member #2,768
September 2002
avatar

D'oh! I was killed by a Burning X-G Killer!

Btw, I was a builder on a Mud previously. If you need any help with areas (assuming in-game building is implemented) then I'd be happy to help.

Let me know.

------------
Radagar - So your vote is for A.D.H.D.?
Chris Katko - Well, that was uninten--ooh kitty!

DanielH
Member #934
January 2001
avatar

Derezo
Member #1,666
April 2001
avatar

X-G killer was crashing the MUD not long ago.. I gotta bring his stats down, or figure out why it's doing that.

In-game building is implemented, but I'm not quite looking for builders yet. I'll tell you when I am though -- that'd be great :) The more I can get the better.

The area file format is not yet complete, and it will be changing a lot in the next few months. I'd like to get the file formats completed before I start recruiting other people to join in the development. I don't want to be changing formats and losing data while other people are working on area projects.
The time will certainly come though.

I love building areas. One of the things I'm looking forward to. :) I'm going to make the builder as intuitive as possible. It's already somewhat intuitive, but I'd like to make it as simple as possible while also having advanced commands available.

I need to implement some scripting for npc scripts and room scripts still too.. That's going to take some time, as I've never successfully done that.
I may look into LUA.

My current agenda looks something like this:

  • Get most the dormant flags working (mainly npc flags and item flags)

  • Expand modifier functionality and visibility.

  • Fix some of the known bugs like the crazy stats crashes.

  • Add player flags which grant/restrict certain commands, and adjust commands to work with it.

  • Add building stuff so player X can only work on areas that have been assigned to player X.

  • Add Scripting.

The rest I'll get as I come to it.... but I may have forgot some stuff in there. :P

[edit]
Also, one thing I'm noticing.. a lot of people are going on expecting it to be a Diku, Merc or other base-code clone.
It's been created completely from scratch. :)
Some of the command are the same as other base codes, but most are not.

The public channel is 'gossip' (not chat). I'll add the single character abbreviation of . for that soon :)
As well as say... it needs a single character abbreviation. I'll find a character that suits it... I can't use a single quote without some moditications to other code.

"He who controls the stuffing controls the Universe"

Peter Hull
Member #1,136
March 2001

Woo! I'm there, man!

pete

gnolam
Member #2,030
March 2002
avatar

Some MUDs (Circle?) have both a gossip channel and a chat channel that can be enabled and disabled separately...

--
Move to the Democratic People's Republic of Vivendi Universal (formerly known as Sweden) - officially democracy- and privacy-free since 2008-06-18!

Derezo
Member #1,666
April 2001
avatar

Yeah, many have '[ooc]' (out of character) and gossip.. I'll have those two eventually as well.

Right now, gossip just takes a string and sends it to every client connected.. later I'll make some sort of proper channel system.

If you're at the login screen and someone gossips, you'll see it. ;D

Peter: I found out why your frog didn't load. You didn't give it a 'short name' and a 'long time'. 'Name' is just it's keywords for taking it, wearing it, etc.. :)
So, it was there.. we just couldn't see it ;D

"He who controls the stuffing controls the Universe"

Peter Hull
Member #1,136
March 2001

Cool. I could give you a hand with Lua if you need it..

Pete

Derezo
Member #1,666
April 2001
avatar

That would be excellent, when the time comes.

Expect many Lua threads in the not too distant future. :)

I'm hoping Lua is appropriate.
Is it as simple to run a script as "LuaRunScript(script);"?
If the script is edited during gameplay, you wouldn't need to do anything major to keep it working right? :)

"He who controls the stuffing controls the Universe"

CGamesPlay
Member #2,559
July 2002
avatar

Even simpler :)
You can call individual function in Lua, as well as other stuff.

But... Lua? Come on! Try LScript! :P

Well, it was an idea... :)

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

LSd016
Member #3,561
May 2003

Gee, Derezo. You gotta fix your OneArg() function, if you really want to keep LSD da stoopid script kiddie out. ;)

____________________________________________
[update soon]

Derezo
Member #1,666
April 2001
avatar

OneArg()?

I actually didn't build the whole function.. ripped it from the merc code (that's the ONLY ripped function! :)) and changed it a little.

What's wrong with it? :P

1/*
2 * Pick off one argument from a string and return the rest.
3 * Understands quotes.
4 */
5char *OneArg( char *argument, char *arg_first )
6 {
7 char cEnd;
8 
9 while ( isspace( *argument ) )
10 argument++;
11 
12 cEnd = ' ';
13 if ( *argument == '\'' || *argument == '"' )
14 cEnd = *argument++;
15 
16 while ( *argument != '\0' )
17 {
18 if ( *argument == cEnd )
19 {
20 argument++;
21 break;
22 }
23 *arg_first = *argument;
24 arg_first++;
25 argument++;
26 }
27 *arg_first = '\0';
28 
29 while ( isspace( *argument ) )
30 argument++;
31 
32 return argument;
33 }

Should just fill arg_first with the first word up until a space, right?

Quote:

Try LScript!

I'd give it a try, but it doesn't look very complete. :(

"He who controls the stuffing controls the Universe"

Thomas Fjellstrom
Member #476
June 2000
avatar

um...

moose@natasha vector $ telnet 24.141.201.66 4000
Trying 24.141.201.66...
Connected to 24.141.201.66.
Escape character is '^]'.
Welcome to Derezo's MUD Engine!
Version: 0.06

Name: Tomasu
Character not found. Create a new character? y
Input New Password: ***
Confirm New Password: ***
You must be in a room to look.

>

is that a bad thing? a look after seemed to work.

Oh, another thing:

Also in the room: NOTE : Derezo is currently AFK!, Derezo, LSD

>
take LSD
You cannot find that here.

>

NOW FFS Why? Its in the room >:(

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

Derezo
Member #1,666
April 2001
avatar

The "You must be in a room to look." message is because you start off at room 0. :)

It transfers you to the first room, which is 101, and goes from there. I haven't set it up to do that automatically yet, because the only simple way is hackish.. want to avoid that. :P

Oh, you edited. Two can play at that game.
Well, you can only take objects.. which are shown under the players/characters in the room. ;)
(The note guy is an npc that I named that.. heh)

So, yeah.

"He who controls the stuffing controls the Universe"

Oscar Giner
Member #2,207
April 2002
avatar

Is that normal:

<code>
Welcome to Derezo's MUD Engine!
Version: 0.06

Name: Gin
Names must contain only letters, and must be at last 3 letters long.

Name: Gin
Password: ******
Newbie Training Grounds
Welcome to the Newbie Training Grounds!
...that's all I got so far. Pretty good huh?
</quote>
and I can enter. So it says that the name must be at least 3 letters (Gin has 3 letters), and when I type it the second time it accepts it.

LSd016
Member #3,561
May 2003

Quote:

What's wrong with it?

It doesn't take "max length" argument. Am I the only one who sees a stack-based overflow here? I might be wrong of course, Derezo sounds quite confident.

1CMD_FUN(CmdCast)
2 {
3 char buf[MAX_STR_LEN] = "";
4 char spell[SHORT_LEN];
5 CHARACTER *tgt;
6 
7 if(ch->cooldown)
8 {
9 Output2Ch(ch,"`bCatch your breath, first!`x\r\n");
10 return 0;
11 }
12 
13 if(strlen(args) < 1)
14 {
15 Output2Ch(ch,"Cast what? Where?\r\n");
16 return 1;
17 }
18 
19 // get the spell
20 args = OneArg(args,spell);
21 
22 // then get the target
23 args = OneArg(args,buf);
24(...)

____________________________________________
[update soon]

Derezo
Member #1,666
April 2001
avatar

OG said:

Is that normal:

Nope. I just put that check in. I'll take a look at it, thanks :)

LSD: Yeah, I see. I should get rid of SHORT_LEN and define it as MAX_STR_LEN... Screw memory conservation. ;)

You can currently send more than MAX_STR_LEN to the server and cause an overflow. Once I fix that, it'll be impossible for args not to have a delimeter, since it's cleared to 0's (using memset) every time it gets a new command.

Lots of people comin' on. Many more than expected :P
Here's another screen shot. Most players yet at one time.
http://24.141.201.66/mud2.gif

"He who controls the stuffing controls the Universe"

 1   2   3   4 


Go to: