<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>Dead Souls Admin FAQ</title> <link rel="icon" href="./favicon.ico" type="image/x-icon"> <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon"> </head> <body> <pre style="font-family: monospace;"><big><big><span style="font-weight: bold;">Dead Souls Admin FAQ, v3.4</span></big><br><br>Written by Cratylus @ Frontiers, October 2005<br>Updated June 2006<br><span style="font-weight: bold; text-decoration: underline;"><br></span>Note: commands are displayed in boldface, like this: <span style="font-weight: bold;">ls -a</span><span style="font-weight: bold; text-decoration: underline;"><br><br>What's this FAQ about?</span><br><br> The point of this document is to orient a new admin in<br>Dead Souls 2. Starting a MUD with a lib that is completely new to<br>you can be confusing and discouraging. Hopefully this FAQ will<br>make the experience less difficult.<br><br><br><a href="#0">0 How do I start?</a><br><br><a href="#1">1 Is there a MUD somewhere running Dead Souls I can log into?</a><br><br><a href="#2">2 I like Dead Souls and I want to use it, but I don't want to run a mud.</a><br><br><a href="#3">3 I want to invite my friends to help me code. How do I promote </a><br><a href="#3">them to creator status?<br></a><br><a href="#4">4 What about intermud? How do I talk on that?</a><br><br><a href="#5">5 I talk on intermud but nobody replies. What's up with that?</a><br><br><a href="#6">6 How did you know my mud started up?</a><br><br><a href="#7">7 I heard there's an I3 router included in Dead Souls.<br></a><br><a href="#8">8 What's this about a manual on Frontiers?</a><br><br><a href="#9">9 How do I add limbs to a race?</a><br><br><a href="#10">10 How do I add a race?</a><br><br><a href="#11">11 How do I make my friend an admin?<br></a><br><a href="#12">12 I don't like how the who command output looks! You should change it.<br></a><br><a href="#13">13 Can you please make the FAQ easier to read? It's too long and complicated.<br></a><br><a href="#14">14 Most of the file headers have only Descartes's name on them. </a><br><a href="#14">Did you really develop this lib or did he?<br></a><br><a href="#15">15 How can I change the colors of the channel messages?<br></a><br><a href="#16">16 How do I know what other muds use Dead Souls?</a><br><br><a href="#17">17 I was hanging out in the Arch room and the loudspeaker went off. WTF?</a><br><br><a href="#18">18 I want to test the intermud channel but I don't want to spam the ds line.</a><br><br><a href="#19">19 What's this "Network room"?</a><br><br><a href="#20">20 The web server and FTP server don't work</a><br><br><a href="#21">21 I tried to log in to the FTP server but I can't!</a><br><br><a href="#22">22 I can't do anything with FTP. It just hangs there.<br></a><br><a href="#23">23 The web server gives me a 404 but I know the directory is there.</a><br><br><a href="#24">24 I'm using an external FTP server, but the files I transfer </a><br><a href="#24">become read only!</a><br><br><a href="#25">25 I moved a command from one directory to another. How do I </a><br><a href="#25">get the new location recognized?<br></a><br><a href="#26">26 The mudtime is all wrong!</a><br><br><a href="#27">27 The time of day is all wrong!</a><br><br><a href="#28">28 What happened to the roommaker and thingmaker?<br></a><br><a href="#29">29 I keep getting 'Connection to address server (localhost 9999) refused.' <br></a><br><a href="#30">30 Can I charge players a fee for playing on my mud?</a><br><br><a href="#31">31 Can people donate money to me for the mud?</a><br><br><a href="#32">32 I found a bug. For real. Can you please fix it?<br></a><br><a href="#33">33 Where would I edit to change how long someone can be idle </a><br><a href="#33">before they get disconnected?<br></a><br><a href="#34">34 How do I permit all users who log in to become </a><br><a href="#34">creators automatically?<br></a><br><a href="#35">35 How do I limit the use of intermud channels?</a><br><br><a href="#36">36 How do I get off intermud completely?</a><br><br><a href="#37">37 How do I change the start room for the mud?</a><br><br><a href="#38">38 I don't like having newbies get special treatment.</a><br><br><a href="#39">39 I don't want players to be able to pick non-human races.<br></a><br><a href="#40">40 I want everyone to speak the same language.<br></a><br><a href="#41">41 I made a change to /lib/player.c and updated it, but I'm not </a><br><a href="#41">seeing a difference in my character.<br></a><br><a href="#42">42 How do I change the items new players receive?<br></a><br><a href="#43">43 Hey, there's no <foo> class! What's up with that?<br></a><br><a href="#44">44 Where can I get a Dead Souls mud hosted?<br></a><br><a href="#45">45 Your LIB_MXLPLX system is all screwy. I changed it and it </a><br><a href="#45">works. Wanna see?<br></a><br><a href="#46">46 How are files organized in Dead Souls?<br></a><br><a href="#47">47 What are sefuns and efuns?</a><br><br><a href="#48">48 Whew! Ok now I know where stuff is. What's next?<br></a><br><a href="#49">49 Oh, man, you're kidding! Those are, like, books! Can't I </a><br><a href="#49">just start making stuff?<br></a><br><a href="#50">50 Everything is su-u-u-u-p-e-e-r-r-r s-s-l-o-o-o-o-w-w-w<br></a><br><a href="#51">51 Dude! One of my creators just kicked me off my own mud!<br></a><br><a href="#52">52 Is Dead Souls secure?</a><br> <br><a href="#53">53 I sent you my code a week ago. Is it in or out?<br></a><br><a href="#54">54 Did you finish the bfd() sefun modification I asked you for last night?<br></a><br><a href="#55">55 QUEEG_D is a horrendous mess. It's inefficient and frankly offensive.<br></a><br><a href="#56">56 You implemented my code but didn't give me credit.</a><br><br><a href="#57">57 Intermud mail doesn't work</a><br><br><a href="#58">58 The admintool menus let you pick options that aren't visible</a><br><br><a href="#59">59 What does locking the mud do, exactly?<br></a><br><a href="#60">60 The race help output is inadequate for role-playing. How do I change it?<br></a><br><a href="#61">61 I need to know what features to expect in the next release so </a><br><a href="#61">I don't waste time duplicating effort<br></a><br><a href="#62">62 You need a development roadmap and task tracking<br></a><br><a href="#63">63 How do I update a sefun without rebooting the mud?<br></a><br><a href="#64">64 My new sefun updates but I can't seem to use it.<br></a><br><a href="#65">65 What's the point of the apostrophe-stripping for args in lib/command.c?<br></a><br><a href="#66">66 How does one achieve 'high mortal' or 'ambassador' positions?<br></a><br><a href="#67">67 I would like XYZ and PDQ to happen every time the mud boots<br></a><br><a href="#68">68 I can't login! I keep getting: "It seems some work is being done </a><br><a href="#68">right now, try later."<br></a><br><a href="#69">69 I had a really great idea that revolutionizes ds and you refuse </a><br><a href="#69">to include it. I am forking ds development and making my dream come true.<br></a><br><a href="#70">70 What do the version numbers mean?</a><br><br><a href="#71">71 The Dead Souls router is down. How do I switch back to *gjs?</a><br><br><a href="#72">72 I'm going to totally revamp <insert highly complex system here>.<br>Will that be difficult?</a><br><br><a href="#73">73 I've hired an area coder to make a new domain. I want her<br>to be able to use QCS in /domains/MistyDragonShireMysts.</a><br><br><a href="#74">74 How does player voting work?</a><br><br><a href="#75">75 What are "estates"?</a><br><a href="#76"><br></a></big><big><a href="#76">76 What are "events"?</a><br><br><a href="#77">77 Where does user monitor data go?</a><br><br><a href="#78">78 How would you set a race to be selectable by new players?</a><br><br><a href="#79">79 Where is emote data kept?</a><br><br><a href="#80">80 What are .h and .o files? Where are they kept?</a><br></big><big><br><a href="#81">81 But my friend forgot his password! I *have* to edit his playerfile!</a><br><br><a href="#82">82 How do I change my mud's name?</a><br><br><a href="#83">83 Help! I locked myself out!</a><br><br><a href="#84">84 What are the privileges associated with the groups in groups.cfg?</a></big><br><big><br><a href="#85">85 Why does the documentation refer to LIB_ARMOUR and armour_types.h?</a><br><br><a href="#86">86 Where are read/write restrictions kept?</a><br><br><a href="#87">87 I need to test day/night descriptions, but I can't wait around all day.</a><br><br><a href="#88">88 How can I change the default prompt? Can I make it dynamic?</a><br><br><a href="#89">89 What is "unguarded"?</a><br><br><a href="#90">90 Is intermud communication secure?</a><br><br><a href="#91">100 What should I <span style="font-weight: bold; font-style: italic;">not</span> do?</a><br><br></big><big><br><span style="font-weight: bold; text-decoration: underline;"><a name="0"></a>How do I start?</span><br><br> The first thing to do is follow the <a href="ds-inst-faq.html">installation FAQ</a><br>to get Dead Souls installed. Then log in, and start reading<br>the administrator's guide, by typing these commands:<br><br><span style="font-weight: bold;">read index in guide</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">read chapter 1 in guide</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">read chapter 2 in guide</span><br><br>etc.<br><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="1"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Is there a MUD somewhere running Dead Souls I can log into?</span><br><br>As a convenience to the curious, I have set up a "demo" mud<br>at rugose.com, port 6666. To connect, either click on<br><a href="telnet://rugose.com:6666">this link</a> with your browser, or open a terminal window <br>(or for windows users, Start -> Run ) and <br>type: <span style="font-weight: bold;">telnet</span> </big><big><span style="font-weight: bold;">rugose.com 6666<br><br></span></big><big>When you log in, the system will read your playerfile for<br>a few seconds and then it will turn you into a creator. This<br>is so that you can examine code, try out the QCS, etc. <br><br><span style="font-weight: bold; color: rgb(153, 0, 0);">Please note that in the regular, non-demo version of the</span><br style="font-weight: bold; color: rgb(153, 0, 0);"><span style="font-weight: bold; color: rgb(153, 0, 0);">mud, people are NOT automatically given creator status. </span><br><br> On the regular non-demo version of the mud, Only<br>the admin (basically, the first person to log on to the new mud)<br>gets automatic creatorship.<br><br> After logging in, you will be transported<br>to your workroom. Some useful commands:<br><br style="font-weight: bold;"><span style="font-weight: bold;">look<br>look at me<br>look at chest<br style="font-weight: bold;"></span><span style="font-weight: bold;">open chest<br>look in chest<br style="font-weight: bold;"></span><span style="font-weight: bold;">get tricorder from chest</span><br style="font-weight: bold;"><span style="font-weight: bold;">read index in handbook</span><br style="font-weight: bold;"><span style="font-weight: bold;">read chapter 1 in handbook</span><br style="font-weight: bold;"><span style="font-weight: bold;">who</span><br style="font-weight: bold;"><span style="font-weight: bold;">stat</span><br style="font-weight: bold;"><span style="font-weight: bold;">wiz<br>create new npc generic<br>look at board<br>read 1 on board<br>home<br></span><br></big><big><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="2"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I like Dead Souls and I want to use it, but I don't want to run a mud.</span><br><br>Being a mud admin is very different from being just a coder<br>or builder, and many people just don't feel like dealing with<br>the hassle of running a mud. <br> There are a few Dead Souls muds out there that could<br>use help from you. Telnet to the Dead Souls development mud<br>and type: <span style="font-weight: bold;">mudlist -m dead</span> to see a list of Dead Souls muds<br>that might be hiring.<br> You can also just code on the Dead Souls development<br>mud. You're welcome to create as you please, and if your<br>building gets to the point where you'd like it included in<br>the lib, let me know and I'll inspect it for approval.<br> Please note that anything you code on the Dead Souls<br>development mud becomes property of Dead Souls mudlib <br>distribution, meaning you don't have copyright to it and you<br>can't prevent me from publishing it. So if you want<br>to prevent your code from being used that way, don't code<br>on my mud.<br><br><br style="font-weight: bold; text-decoration: underline;"></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="3"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I want to invite my friends to help me code. How do I</span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">promote them to creator status?</span><br><br> As admin, you have access to the admintool<br>command. This opens a menu-driven admin system you<br>can use to manage some basic aspects of your new MUD.<br><br> Everything on admintool can be done with<br>commands, system calls, or file editing, but until<br>you get the hang of all that stuff, admintool<br>is a convenient shortcut. <br> In this example, you would type: <span style="font-weight: bold;">admintool</span> , <br>then select option <span style="font-weight: bold;">3</span>, then option <span style="font-weight: bold;">l</span> (that's a lowercase "L").<br><br> The oldfashioned way, if the new creator<br>were named dude, would be: <span style="font-weight: bold;">encre dude</span><br><br> I know. But people like menus, so I made it.<br><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="4"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">What about intermud? How do I talk on that?</span><br><br> The intermud3 (or i3) network is available<br>to you, and you are probably already connected to it. Type<br><span style="font-weight: bold;">mudlist</span> to see a list of other muds on the network.<br><br> By default, the "Dead Souls intermud channel" is<br>enabled for creators. Type: <span style="font-weight: bold;">ds blah blah</span><br>and other Dead Souls muds on the i3 network will see<br>your message like this:<br><br><span style="font-weight: bold;">You@YourMud <span style="color: rgb(51, 51, 255);"><ds></span> blah blah</span><br style="font-weight: bold;"><br> Please note that intercre is where you ask coding<br>and technical questions only. Random chatting is not<br>tolerated on that channel. Newbie questions that are<br>Dead Souls specific or that obviously have answers in<br>Dead Souls documentation may meet a hostile reception on <br>intercre.<br><br> Conversely, intergossip is mostly chat. <br><br><span style="font-weight: bold; color: rgb(102, 0, 0);">NOTE:</span><span style="color: rgb(102, 0, 0);"> If you use the </span><span style="font-weight: bold; color: rgb(102, 0, 0);">switchrouter</span><span style="color: rgb(102, 0, 0);"> command to use</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">the *gjs Intermud 3 instead of the default *yatmim, Please</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">be warned that discussions on intergossip there are usually </span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">offensive, argumentative, and generally aggressive. </span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);"> This hostility is </span><span style="font-weight: bold; font-style: italic; color: rgb(102, 0, 0);">especially</span><span style="color: rgb(102, 0, 0);"> sharp when you</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">are identified as a "newbie". You will almost certainly</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">be mocked and insulted no matter what you say, but</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">especially if your first messages betray you as </span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">ignorant of intergossip standards and traditions. I</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">strongly recommend you lurk on this channel for a few</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">days before saying anything. </span><br style="color: rgb(102, 0, 0);"><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">Really, I recommend you avoid the *gjs router entirely.</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">Leave the default router settings alone and you won't</span><br style="color: rgb(102, 0, 0);"><span style="color: rgb(102, 0, 0);">have to worry about this sort of thing.</span><br><br> The lpuni channel is a mix of<br>chat and official <a href="http://lpuni.muddomain.net">LPUniversity</a> business. As of June 5 2006,<br>Blackdawn mud is bridging that channel, so it is accessible<br>from both i3 routers.<br><br><br style="text-decoration: underline; font-weight: bold;"><span style="text-decoration: underline; font-weight: bold;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="5"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">I talk on intermud but nobody replies. What's up with that?</span><br><br>I3 uses a hub topology. All muds communicating on intermud<br>connect to the router to do so. If that router is down all<br>i3 communication stops, until it comes back up. To check<br>network status, ping Frontiers or Dead Souls. If the<br>ping command gets no answer, i3 is probably down, or<br>your connection to it has been interrupted. Your mud will<br>be aware of this and retry to connect to i3 every<br>fifteen minutes or so.<br><br>There's also the possibility that nobody who wants to<br>chat is listening.<br><br>It's also possible that the Dead Souls I3 router has<br>changed address or port. Visit this page to get the<br>latest connection info:<br><a href="http://dead-souls.net/router.html"><br>Dead Souls I3 Router Page</a><br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="6"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How did you know my mud started up?</span><br><br> The same way your mud knows that i3 is up or<br>down. A while ago I noticed that i3 can be very<br>unreliable, and sometimes when it goes down and<br>comes back up, people's muds don't refresh their<br>connection, and they can be off intermud for days<br>without realizing it.<br><br> I implemented a "keepalive" system which<br>uses the intermud "auth" packets as pings. Every <br>fifteen minutes or so, you mud tries to ping Frontiers<br>and Dead Souls. If it gets a reply from at least one,<br>then it's happy. If neither reply, then your mud <br>alerts the Arch room that intermud is down, and it<br>will reload the intermud daemon every 15 minutes<br>in an attempt to reconnect. Once i3 is back up and<br>you are reconnected, you go back to pinging.<br><br> This means that Frontiers and Dead Souls<br>get a bunch of pings all the time. When a mud we've<br>never heard of before pings us, we get a message<br>about it, and so we know a new mud is online.<br><br> If this makes you feel like Big Brother<br>is watching you, you can edit "PINGING_MUDS" in<br>/secure/include/config.h to have the name of<br>your own mud only, so you just ping yourself.<br><br> You can also DISABLE_INTERMUD in that<br>same file. <br><br> Dont' edit that file with a default Windows<br>editor. Back up the file before you edit it. Reboot <br>the mud after making the changes. If it won't reboot,<br>you probably munged the format and need to restore<br>the original.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="7"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I heard there's an I3 router included in Dead Souls.</span><br><br>Please see the <a href="http://dead-souls.net/router.html">router page</a> for details.<br><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="8"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">What's this about a manual on Frontiers?</span><br><br> It's no longer relevant. All the docs<br>we were making available on Frontiers are now included<br>in Dead Souls, starting from version 1.9r9.<br><br> In your workroom is a chest. Open the<br>chest and the new Dead Souls Creators Manual is<br>inside. The text files are in /doc/manual .<br><br> <br><span style="font-weight: bold; text-decoration: underline;"></span><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="9"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I add limbs to a race?</span><br><br>Edit /secure/cfg/races/<race> and make the changes<br>you want. Then use admintool to remove the race from the<br>races daemon, then add re-add the race. <br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="10"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I add a race?</span><br><br>Copy a race in </big><big>/secure/cfg/races/ and edit it.<br>For example:<br><br><span style="font-weight: bold;">cp </span></big><big style="font-weight: bold;">/secure/cfg/races/bear</big><big><span style="font-weight: bold;"> /secure/cfg/races/wampa</span><br><br>Edit the wampa file to reflect what you think a<br>wampa is like. If you want new players to be able<br>to select wampa as their race, make sure the file<br>has this line in it:<br><br>PLAYER_RACE 1<br><br>Make especially sure to change the lines RACE and<br>LANGUAGE. When you're done editing, type:<br><br><span style="font-weight: bold;">addrace wampa</span></big><big><span style="font-weight: bold;"> </span><br><br>For details:<br><span style="font-weight: bold;">help addrace</span><br><br><br style="font-weight: bold; text-decoration: underline;"></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="11"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I make my friend an admin?</span><br><br>Use the groups menu in admintool, and select <br>"Modify a group". Select the ASSIST or SECURE group,<br>and enter the names of all the members it should have. If<br>I wanted to make xyzzy an assistant admin, I would<br>make him a creator, then I would edit the<br>ASSIST group and make the contents look like this:<br><br><span style="font-weight: bold;">cratylus:xyzzy<br><br></span>Xyzzy then needs to log out and log back in.<br><span style="font-weight: bold;"></span><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="12"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I don't like how the who command output looks! You should change it.</span><br><br>Believe it or not, I actually get requests like this. I also<br>get stuff like "the inventory list should be chronological in<br>order of acquisition." Maybe that's a good idea, but it's<br>your mud, not mine. Make it so for yourself.<br><br> If there is something broken about the lib itself, such as<br>an insta-death bug or a command that crashes the mud, I am<br>happy and eager to hear about it, so I can implement the fix<br>in the next lib release. If a normal action causes a runtime<br>error or abnormal behavior, I need to know that. Also typoes, null<br>error messages, etc...in short, tell me what's broken.<br> However, if the problem you're having is that the lib,<br>by design, behaves in a way not to your liking, this isn't something<br>I'm likely to "fix" for you. For example, if you want a "<span style="font-weight: bold;">who</span>"<br>command with a cooler look, that's up to you to make. You're<br>the one coding a mud, so you need to take it upon yourself to<br>understand the code and modify it to suit your tastes.<br> Similarly, "orcs are too strong!" or "advancing levels<br>should increase your eyesight" are issues you need to deal<br>with on your own, using the coding skills learned from reading the<br>Creators Manual.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="13"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Can you please make the FAQ easier to read? It's too long and complicated.</span><br><br>I'm a lib coder, not a web designer. Cut me slack. Or, edit it<br>for me and show me how it's done.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="14"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Most of the file headers have only Descartes's name on them. Did</span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">you really develop this lib or did he?</span><br><br>Both. The lib he released in 1997 was his, and so almost every<br>file on it had his name. I've been working on it since, but<br>I am very lazy about headers. I work on lots of files at the<br>same time, and authorship attribution tends to rank very low<br>on my priority list. Therefore, even though a great majority <br>of the files in the lib have been either heavily modified or<br>created by me, my name is on very few.<br><br>I haven't bothered to go back and revise headers either, <br>because, honestly, what a pain in the butt that would be. I'm<br>satisfied knowing there's little doubt who has made the many<br>changes on the lib.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="15"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How can I change the colors of the channel messages?</span><br><br>The colors are specified in /secure/daemon/chat.c<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="16"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I know what other muds use Dead Souls?</span><br><br><span style="font-weight: bold;"></span><br><span style="font-weight: bold;">mudlist -m dead<br></span></big><big><span style="font-weight: bold;"><br></span>See the <a href="http://dead-souls.net/ds-creator-faq.html">creator's FAQ</a> for more intermud command info.<br><br><span style="font-weight: bold;"><br></span><span style="text-decoration: underline; font-weight: bold;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="17"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">I was hanging out in the Arch room and the loudspeaker went off. WTF?</span><span style="font-weight: bold;"><br></span><br> Your mud receives all sorts of network requests from the <br>intermud network, such are remote who (asking who is logged on),<br>remote finger (info on users), locate (trying to find a user<br>somewhere on i3), etc. Whenever your mud receives such a request,<br>it used to be announced in the Arch room. If that is still happening,<br>you are probably not running a current version of the lib.<br><br> The current behavior is that network messages are<br>announced in the network room (below the arch room) and router<br>messages are announced in the router room (south of the<br>network room).<br><br> Note that these messages are normal,<br>and do not represent an attempt to undermine your security.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="18"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I want to test the intermud channel but I don't want to spam the ds line.</span><br><br>Type: <span style="font-weight: bold;">ds_test test</span><br><br>The ds_test channel is specifically for communication<br>testing so that ds can remain spam free.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="19"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">What's this "Network room"?</span><br><br>There is a room below the Arch room called the network room.<br>It is intended to facilitate troubleshooting of network<br>and intermud problems. Unless you're intimately familiar<br>with Dead Souls network code, I suggest avoiding this<br>room, as it is very messy and very noisy.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="20"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">The web server and FTP server don't work</span><br><br>To enable them at mud boot time, uncomment the "inet" line in<br>/secure/cfg/preload.cfg<br><br>To enable it temporarily, type: <span style="font-weight: bold;">update /secure/daemon/inet</span><br><br>These servers do not use the standard ports. The internet standard<br>http port is 80 and for ftp it is 21. Your mud ftp and web servers<br>do not use these. <br> Instead, the network port for your web server is 5 less<br>than your mud's port, and the ftp port is 1 less.<br> This means that if your mud is reached by telnetting<br>to port <span style="color: rgb(204, 0, 0);">6666</span>, your ftp server will be at <span style="color: rgb(204, 0, 0);">6665</span> and your web server<br>will be at <span style="color: rgb(204, 0, 0);">6661</span>.<br><br>Please note that the web and ftp server are not supported. They work,<br>but whatever security risk they pose is entirely on you.<br><br><br style="text-decoration: underline; font-weight: bold;"><span style="text-decoration: underline; font-weight: bold;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="21"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">I tried to log in to the FTP server but I can't!</span><br><br>Make sure you use your mud name and mud password, not the<br>username and password of the computer you are on.<br><br><br><span style="text-decoration: underline; font-weight: bold;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="22"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">I can't do anything with FTP. It just hangs there.</span><br><br>FTP is a funny sort of protocol. If you don't have a direct<br>connection to an FTP server (for example, you are behind a<br>firewall), you have to use PASV (or passive) mode. Unfortunately,<br>at this time, PASV is not implemented in the mud FTP server. <br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="23"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">The web server gives me a 404 but I know the directory is there.</span><br><br>Like the FTP server, the web server is a very simple program.<br>It does not do directory listings at all. If you request<br>a directory, and it can't find an "index.html" file, it<br>just errors out.<br><br>It will also barf if a file you try to serve is <br>unusually large.<br><br>Let me make this point one final, excruciatingly clear time:<br><span style="font-weight: bold; font-style: italic;">If you need a webserver, use apache.</span> The mud www server is available<br>as a convenience, not as a production-quality standards-compliant<br>intarweb server.<br></big><big><br><span style="font-weight: bold;"></span><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="24"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I'm using an external FTP server, but the files I transfer<br>become read only!<br><br></span></big><big>You need to make sure that the FTP server you use<br>runs as the same user as the mud driver does, otherwise<br>you'll have permissions conflicts.<br></big><big><span style="font-weight: bold;"></span><br> </big><big><br><span style="text-decoration: underline; font-weight: bold;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="25"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">I moved a command from one directory to another. How do I get the new location recognized?</span><br><br>First, run update on the command in question.<br>then:<br>If it's not a verb: <span style="font-weight: bold;">update /daemon/command</span><br>If it's a verb: <span style="font-weight: bold;">update /daemon/verbs<br><br></span><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="26"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">The mudtime is all wrong!</span><br><br>The <span style="font-weight: bold;">mudtime</span> command tells you what time it is in the game, not what time<br>it is in the real world.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="27"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">The time of day is all wrong!</span><br><br>If you used <span style="font-weight: bold;">admintool</span> to change your timezone and the time of day is still<br>wrong, you may be using an OS with timekeeping that Dead Souls doesn't<br>understand. If this is so, figure out how many hours off you are, and<br>enter that value into the EXTRA_TIME_OFFSET parameter in /secure/include/config.h<br><br>Also make sure to change your timezone during daylight saving<br>changes. For example, EDT to EST, and vice versa.<br><br><span style="font-weight: bold; text-decoration: underline;"></span><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="28"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">What happened to the roommaker and thingmaker?</span><br><br>They produced code that was often incompatible with QCS. They are no<br>longer supported.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="29"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I keep getting 'Connection to address server (localhost 9999) refused.' </span><br><br>This is a harmless error. Dead Souls uses a program called addr_server to<br>try to resolve hostnames. However, hostname resolution is not important<br>to running the mud, so it's not automatically configured. If you run<br>addr_server with a specific port as an argument, and edit mudos.cfg to<br>point to that port for the addr_server, then reboot the mud, then you<br>will probably have hostname resolution in your mud.<br><br>However, not all OS'es handle name resolution the same, so this may not<br>work, even if you do everything exactly right. Either way, it doesn't<br>affect the mud.<br><br><span style="text-decoration: underline; font-weight: bold;"></span><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="30"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Can I charge players a fee for playing on my mud?</span><br><br><big><big style="color: rgb(204, 0, 0);"><span style="font-weight: bold;">NO.</span></big></big> <br><br>Dead Souls uses MudOS, and MudOS has a license that specifically<br>and strictly forbids its use in a commercial way. I don't care how<br>you use the lib, but if you use it with MudOS, you need to comply<br>with MudOS licensing. If you were to port Dead Souls to some other<br>driver that allows commercial use, then you'd be all set.<br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="31"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Can people donate money to me for the mud?</span><br><br><big><big><span style="color: rgb(204, 0, 0); font-weight: bold;">Yes.</span></big></big><br style="font-weight: bold;"><br>So long as there is no quid-pro-quo, or anything<br>about the transaction that is legally regarded as "commercial",<br>receiving money from people for the purpose of running the<br>mud is ok. However, I am not a lawyer, so read the MudOS<br>license yourself.<br><br> You should not try to bend the rules. For<br>example, public television channels often give trinkets to<br>donors as a token of their appreciation. If someone donates<br>money to you for your mud and they get a "thank you gift",<br>this is a quid-pro-quo, or "something for something", and<br>it's not right.<br><br> This is a MudOS thing, not a Dead Souls thing.<br>If you can't abide by MudOS licensing, just port Dead<br>Souls to some driver that lets you do commercial stuff.<br>Then please tell me how you did it, so I can pass on the<br>leetness to others.<br><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="32"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I found a bug. For real. Can you please fix it?</span><br><br>Email me: <put my name here>@comcast.net<br><br>Please include a detailed description of the bug, and the exact<br>error text and commands that produced it. A log file or<br>screencap would be helpful.<br><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="33"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Where would I edit to change how long someone can be idle before they get disconnected?</span><br><br>1) Modify IDLE_TIMEOUT in /secure/include/config.h<br></big><big>Don't do this with a Windows editor.<br></big><br><big>2) </big><big>update /secure/daemon/master<br><br>3) update -r /lib/player<br><br>Instead of the updates you can reboot the mud.<br><br></big><big><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="34"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I permit all users who log in to become creators automatically?</span><br style="font-weight: bold; text-decoration: underline;"><br>1) Set AUTO_WIZ </big><big>in /secure/include/config.h to 1<br></big><big>Don't do this with a Windows editor.<br></big><br><big>2) </big><big>update /secure/daemon/master<br><br>3) update /secure/lib/connect<br><br>Instead of the updates you can reboot the mud.<br></big><big><br><br><span style="text-decoration: underline; font-weight: bold;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="35"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">How do I limit the use of intermud channels?</span><br><br></big><big>1) Set RESTRICTED_INTERMUD </big><big>in /secure/include/config.h to 1<br></big><big>Don't do this with a Windows editor.<br></big><br><big>2) Add the players who are allowed to use intermud channels to<br>the intermud group using admintool.<br><br>3) update /secure/daemon/master<br><br>4) update /daemon/services/*<br><br>5) update /daemon/services<br><br>6) update /daemon/intermud<br><br>7) update /secure/daemon/chat<br><br>Instead of these updates, you could just reboot the mud.<br><br></big><big><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="36"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I get off intermud completely?</span><br><br></big><big>1) Set DISABLE_INTERMUD </big><big>in /secure/include/config.h to 1<br></big><big>Don't do this with a Windows editor.<br></big><br><big>2) </big><big>update /secure/daemon/master<br><br>3) update /daemon/intermud<br><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="37"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I change the start room for the mud?</span><br><br>1) change ROOM_START in /secure/include/rooms.h<br></big><big>Don't do this with a Windows editor.<br></big><br><big>2) reboot the mud<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="38"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I don't like having newbies get special treatment.</span><br><br></big><big>1) Set MAX_NEWBIE_LEVEL </big><big>in /secure/include/config.h to 0<br>Don't do this with a Windows editor.<br><br></big><big>2) reboot the mud<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="39"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I don't want players to be able to pick non-human races.</span><br><br>1) Set HUMANS_ONLY in </big><big>/secure/include/config.h to 1<br></big><big>Don't do this with a Windows editor.<br><br></big><big>2) reboot the mud<br><br>* Note that this will not affect players who are <br>already non-human.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="40"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I want everyone to speak the same language.</span><br><br></big><big>1) Set ENGLISH_ONLY in </big><big>/secure/include/config.h to 1<br></big><big>Don't do this with a Windows editor.<br><br></big><big>2) reboot the mud<br><br>* Note that this may not affect players who already<br>are not native English speakers. To change them, <br>type:<br><br><span style="font-weight: bold;">call players_name_here->SetNativeLanguage("English")</span></big><big><br><br></big><big><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="41"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I made a change to /lib/player.c and updated it, but I'm</span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">not seeing a difference in my character.<br><span style="text-decoration: underline;"></span><br></span><br> If an object (you) is loaded into memory, it contains<br>the features and functions of its file and inherited files<br><span style="font-style: italic;">at the time it was loaded</span>.<br><br> Changing those files and updating them doesn't do<br>anything to an object that is already loaded using the<br>old code.<br><br> In a case like this, what you want to do is<br>recursively update the file of the object in question,<br>then reload the object.<br><br> Let's say you modified /lib/npc.c so that<br>npc's sit down by default. Say you want the fighter in<br>your test room to possess this new functionality.<br><br> If you type: <span style="font-weight: bold;">reload -r fighter</span><br><br> then the fighter's file is recursively updated,<br>the current version of the fighter is whisked away, and<br>a new version of the fighter is created, incorporating<br>the new auto-sit feature.<br><br> If the change in question is to lib/player.c<br>or some other file inherited by you, you would<br>type:<br><br><span style="font-weight: bold;">update -r /lib/creator</span><br><br> But you are still using that same old body as<br>before, so you'll need to quit and log back in to <br>get a new body using the new code.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="42"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I change the items new players receive?</span><br><br>Look in /lib/player.c for the function that gives<br>new players jeans and a t-shirt. Modify this<br>function to suit you. Make absolutely sure that<br>the objects you put there actually clone<br>correctly.<br><br>Remember to <span style="font-weight: bold;">bk /lib/player</span> before editing this file,<br>because if you screw it, then log off without <br>restoring a working copy, you will be sad.<br><br><br></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="43"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">Hey, there's no <foo> class! What's up with that?</span><br><br>True, there is no samurai class, and in fact, as of<br>this writing there is no cleric, acrobat, frombotzer,<br>or basketweaver.<br><br> The reason for this is that the Dead Souls<br>mudlib distribution isn't intended to be 100% ready for <br>players to show up and start doing quests.<br><br> What quests there are, what races, classes,<br>areas, objects, rooms, and NPC's you find in the<br>distribution are examples. If you open your mud<br>to players and what you've got is the Orcslayer and<br>newbie mansion quests, you might as well just close down.<br>In fact, please do.<br><br> Dead Souls is a starting point for a mud.<br>I have no way of knowing if you're going to have<br>mermen in an aquatic-theme mud. I have no clue <br>whether your space aliens will have 8 tentacles or<br>16 (they like base2, dontcha know).<br><br> So, no, there's no <foo>, because the<br>responsibility for making the mud in your creative<br>vision is yours, not mine. My job is to give you<br>a lib with enough working examples and enough<br>documentation so that you can code your own<br>basketweaving bugblatter beasts.</big><br><big><br></big><big><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="44"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Where can I get a Dead Souls mud hosted?</span><br><br>That's a heck of a good question. There are many mud hosting services<br>out there. I hear good things about <a href="http://www.muddomain.net/forums/">MudDomain</a>, but that isn't specific<br>to Dead Souls. A good host will have a high level of service, shell<br>and file transfer access, etc, for which you obviously will need<br>to pay money. <br><br> There there used to be one free mud hosting service I<br>was aware of, and that's <a href="http://www.frostmud.com/">FrostMud</a>. It was basically a guy and a Linux<br>server with room on it for muds. However, there's some sort<br>of problem he has and it's going away.<br><br> There's no such thing as a free lunch. If you want<br>a reliably solid, well supported, feature-rich platform for your<br>mud, quit being a cheapskate and cough up the $20/mo. That's<br>like, what, one espresso every couple of days. <br><br> If you have a DSL or cable modem, and your computer is<br>up all the time, you can just use that, too. Your IP may be<br>dynamic, making it tough for people to find you, but there are<br>dynamic-dns services out there that help keep your ip<br>tied to a specific name.<br><br> If you're <span style="font-weight: bold; font-style: italic;">really</span> hard up you can email me and beg for<br>me to host you for free, but you'll get no fancy schmutz like a <br>web page or shell access. And if your mud gets on my nerves <br>(being inactive for a long time is enough to do that) I'll just <br>wipe it. Possibly without even warning you. It's not that I'm <br>a jerk or I like being mean. I just don't have a lot of time <br>for nonsense.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="45"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Your LIB_MXLPLX system is all screwy. I changed it and it works. Wanna see?</span><br><br> Hell yes. I'm not just in this for my health. I want<br>more people coding in LPC so I can look at the fresh ideas and<br>new perspectives of other people (read: swipe code).<br><br> Send me an invitation to your mud by email or <ds>. I'd<br>love to look at your work.<br><br> If it is code you are willing to donate to Dead Souls, I<br>will gladly accept its submission, also by email. There's no<br>guarantee it will make it into any future release, but it just might.<br><br> Please be aware that by doing so, you signal you claim no <br>copyright to the code, allowing me to publish it and <br>preventing you from ever revoking my right to distribute it.<br><br> You also represent that no third party has copyright to <br>the code, and hold me harmless in any subsequent<br>dispute between you and any other third party.<br><br> If you want to email me code but wish to retain <br>copyright, please state so clearly in the body of your email. I<br>will honor that request </big><big>(and it's the law so I don't really <br>have a choice). Just be aware I will not put code into Dead<br>Souls that anyone other than me has copyright to. I can't<br>afford the risk of someone deciding I can't distribute<br>code that DS may eventually rely on.<br><br> Also, I don't want to hear from anyone about my<br>use of legal terms of art. I know damn well it's more complicated<br>than I make it sound. My phrasing is sufficient to make<br>the legal practical transaction of ideas possible here.<br><br></big><big><br></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="46"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How are files organized in Dead Souls?</span><br><br> <span style="font-weight: bold;">cd /</span> and <span style="font-weight: bold;">ls</span> to view the top level directory. The<br>list may be largely meaningless to you, so let's review it here:<br><br><span style="color: rgb(0, 102, 0); font-weight: bold;">cfg/</span><br><br>General configuration files for timezone and such.<br><br><span style="color: rgb(0, 102, 0); font-weight: bold;">cmds/</span><br><br>Main location of commands that don't require special access<br>privileges. Commands are different from verbs in that they tend<br>not to manipulate your environment, but rather deal with <br>the player's relationship to the system and/or files.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">daemon/</span><br><br>Daemons are files that provide access to data files in an<br>organized way. For example, adding an occupational class <br>(like, say, assassin) to the game needs to be done in a<br>precise way in order for it not to break things. By sending<br>the data to the daemon first, you can be sure that the<br>new system configuration is entered properly. Daemons also<br>provide a means to access data, like "how much is silver<br>worth compared to gold", that is uniform across the mud, and <br>prevents accidental overwrites of data files by multiple<br>editors.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">doc/</span><br><br>General documentation. <br><br><br style="font-weight: bold; color: rgb(0, 102, 0);"><span style="font-weight: bold; color: rgb(0, 102, 0);">domains/</span><br><br>This is where MUD game areas go when they are complete<br>and ready for general play by the public. Once here, only<br>admins have write access to the files. <br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">ftp/</span><br><br>The base for the MUD ftpd. Using the ftpd is probably dangerous<br>in terms of your system security, and I discourage it, but if<br>you are determined to have mud ftp access for your creators, <br>this is one way. See /secure/lib/net for the actual server. It<br>may or may not work. I won't support it.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">include/</span><br><br>Include files provide a set of constants for your files. For<br>example, if you include <damage_types.h>, you can specify in<br>the code for your chainmail that it protects against<br>the damage type "BLADE" at a certain level.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">lib/</span><br><br>This is the heart of the Dead Souls lib. This is the location<br>of the files that your objects, be they swords, shoes, or <br>handguns, will use as their configuration base. <br><br><br><span style="color: rgb(0, 102, 0); font-weight: bold;">log/</span><br><br>Log files.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">news/</span><br><br>Announcements are made here. For example, in /news/creator<br>you can post a notice that you have added a teleportation<br>spell, and when your creators log on, they will see the message.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">obj/</span><br><br>Contains some important templates, especially some for the QCS.<br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">open/</span><br><br>Legacy directory. Kept for compatibility. Historically this<br>directory has served as a place where creators can put code<br>for others to freely modify.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">realms/</span><br><br>This is where creator home directories are.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">save/</span><br><br>Files that describe properties of the MUD's systems live<br>here. The number of limbs that a bat has, for example, <br>is in races.o. In classes.o you'll find the skill ranges<br>for fighters. Do not edit these files. They must be<br>modified by daemons only, or you risk corrupting them.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">secure/</span><br><br>This directory will be described in a separate section below.<br><br><br><span style="color: rgb(0, 102, 0); font-weight: bold;">shadows/</span><br><br>Shadows are a controversial feature of LPC. This directory<br>is designed for shadow objects, but they should be very<br>rarely, if ever used. Basically shadow objects are objects<br>that attach themselves to another object, intercepting<br>function calls. For obvious reasons this is a security <br>risk, so unless you really <span style="font-style: italic;">really</span> know what you're doing, <br>avoid them.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">spells/</span><br><br>Pretty self explanatory. The spells daemon looks for spells here.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">tmp/</span><br><br>A directory anyone can write to. Generally for swapping<br>data between objects, systems, or people.<br><br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">verbs/</span><br><br>Another controversial topic. Verbs are a kind of command. For<br>example, <span style="font-weight: bold;">go</span> and <span style="font-weight: bold;">sit</span> and <span style="font-weight: bold;">open</span> are verbs. Specifically, verbs<br>are commands that interact with the user's environment. The<br>idea is that <span style="font-weight: bold;">throw my first red rock at the green goblin</span><br>should work, and should work the same everywhere on the<br>MUD. Verbs are a source of debate among some people, because<br>to folks accustomed to add_action commands, verbs seem<br>excessively complex.<br><br><span style="font-weight: bold; color: rgb(0, 102, 0);">www/</span><br><br>Like the ftp directory, but for the MUD webserver.<br><br><br> Ok now let's take a quick look at the /secure directory: <span style="font-weight: bold;">ls /secure</span> <br>As you can see, /secure seems to have many of the same directories <br>that the root filesystem has. <br> The reason a /secure directory is needed is that<br>there are files that should not be readable by everyone, and<br>there are files that must be writable only by a few. The MUD security<br>system uses the /secure directory as a means to control access to <br>such files.<br> For example, the average creator has no business <br>accessing the player data files of other creators or players. Therefore<br>/secure/save/creators and /secure/save/players is offlimits to them.<br><br> A directory without a counterpart in / is /secure/sefun. This<br>is where simulated external functions reside. <br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="47"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">What are sefuns and efuns?</span><br><br></big><big> First let me explain that the driver has built-in<br>functions that are available to the mud. For example,<br>type <span style="font-weight: bold;">eval return find_player("cratylus")</span> , but replace my name<br>with yours. Your player object pointer will be found and returned<br>to you (more or less. strictly speaking it's more complicated).<br> The driver provides this function. Because it is "external"<br>to the mudlib, that is, it's in the driver and not the lib, <br>it is called an external function, or more commonly, "efun". The<br>idea is that certain actions you ask the mud to perform are<br>so common that they are made available MUD-wide.<br><br> Efuns are ridiculously useful and powerful, and because<br>they are in the driver as compiled code, very fast. A near-complete<br>set of efun documentation is available in /doc/efun. <br><br> However, the driver does not contain every possible<br>MUD-wide function you might want. For example, there is a <br>tell_object() efun, which lets you send a message to an object<br>such as a player. The syntax is something like this:<br><br>tell_object(find_player("cratylus"),"Hi.");<br><br> Which doesn't look like much, but believe me, this<br>kind of stuff adds up. I wanted to make this simpler, so I<br>used what is called a sefun, or a simulated efun. It is<br>a function that is available lib-wide, but it isn't in<br>the driver. Instead it is provided by the lib itself (the<br>master daemon, specifically). By adding the appropriate code<br>in /secure/sefun/ I have now made available a tell_player() sefun,<br>which works like this:<br><br>tell_player("cratylus","Hi.")<br><br> This simplification of code will become more obviously<br>useful to you as you get more coding under your belt. Most<br>sefuns are documented in /doc/sefun.<br></big><big><br><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="48"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Whew! Ok now I know where stuff is. What's next?</span><br><br> You probably want to examine how objects are written.<br>Type <span style="font-weight: bold;">goto /domains/town/room/road</span> and wander around town<br>a bit. If you want to see the code for something, for example,<br>the beggar, <span style="font-weight: bold;">about beggar</span> should do it, provided the beggar is<br>in the room.<br><br> To see the filenames of the objects around you,<br>type scan here, or scan me to scan your own inventory. <br><br> If you've never coded before, this is the hard part.<br>To understand what you're looking at when you run commands like <br><span style="font-weight: bold;">more /domains/town/weap/orcslayer.c</span> you need to get comfortable<br>with LPC. <br> The brute force way of doing this is copying stuff<br>and then changing the descriptions, thus making new stuff.<br>This will work, but you'll waste time looking for examples of<br>exactly what you want to do..and you may not find them. <br> Instead, learning LPC will let you create whatever<br>you want, without relying on templates.<br><br> This means that now you must read the LPC Basic<br>manual, then the LPC Intermediate manual. As admin, your<br>creators will expect you to know what's in there.<span style="text-decoration: underline;"><br><span style="text-decoration: underline;"><span style="text-decoration: underline;"><span style="text-decoration: underline;"><br></span></span></span></span> On your person or in the chest in your workroom is<br>the Creators Manual. Read both the Players Handbook and<br>the Creators Manual from cover to cover.<br><br> It's also important to read the Administrator's<br>Guidebook.<span style="text-decoration: underline;"><span style="text-decoration: underline;"></span><br></span><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="49"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Oh, man, you're kidding! Those are, like, books! Can't I</span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">just start making stuff?</span><br> <br> Well...ok. But you need to go through the docs<br>soon, ok? In the meantime, read the QCS chapters in the <br>Creators Manual to get you quick-started in the creation <br>process. Remember you need to be holding your Creator <br>Staff in order to access the QCS commands.<br><br> Start with chapter 31, like this:<br><br><span style="font-weight: bold;">read chapter 31 in my manual</span><br><br></big><big><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="50"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Everything is su-u-u-u-p-e-e-r-r-r s-s-l-o-o-o-o-w-w-w</span><br><br>First, make sure you are using the latest available version of<br>Dead Souls (check <a href="http://dead-souls.net">here</a>). Older versions of Dead Souls<br>are known to have nasty memory leaks.<br><br>Next, see if you have runaway objects. An object can be coded<br>to do really unpleasant stuff like replicate itself over and<br>over until it brings the mud to its knees. Find out how many<br>objects are loaded by typing: <span style="font-weight: bold;">eval return sizeof(objects())</span><br><br>If the count is in the thousands, and only a few people are<br>logged on, you<span style="font-weight: bold;"> </span>may have a runaway. Most often this involves<br>NPC's doing stuff you didn't expect. Reset all loaded rooms<br>with the following command: <br><br><span style="font-weight: bold;">resetall<br><br></span>perhaps followed by a:<span style="font-weight: bold;"><br><br>flushobs<br></span><span style="font-weight: bold;"></span><br>If the lag clears up, you found the culprit. If not, see if<br>the callouts list is clogged with the command: <span style="font-weight: bold;">callouts</span><br><br>If all else fails, reboot the mud and ask for help on the ds line.<br><br>Please note that the rage virus (especially if unleashed<br>in the menagerie) is notorious for redlining the mud. Having<br>hundreds of NPC's all engaging in simultaneous combat<br>while infecting each other with a rapidly spreading hostility<br>virus can be expected to impact overall performance. So please try<br>to avoid the rage virus unless you are specifically stress testing<br>your system.<br style="font-weight: bold; text-decoration: underline;"><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="51"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Dude! One of my creators just kicked me off my own mud!</span><br><br>One of the virtues of LPC is that it is flexible and powerful.<br>One of the drawbacks of LPC is that it is flexible and powerful.<br><br> It is not possible to make an LP mud that is<br>immune to abuse from creators. You just can't. The MudOS<br>function set is just too complex and sophisticated to eliminate<br>every possibility of abuse.<br><br> You will therefore *always* be vulnerable to things<br>like people coding objects that crash the mud on purpose (I<br>won't detail how that can be done, but anyone with intermediate<br>LPC skill can do it, and utter newbies can even do it with<br>a stupid enough mistake), finding a way to dest admins, or<br>continually updating recursively the /lib filesystem. A<br>jackass will always find a way to expose you to her jackassery.<br><br> This means that you need to know who is coding on your<br>mud and what they are doing. Your job as an admin is to <br>immediately deal with coders who pose a discipline problem.<br>If they fool you once, shame on them. If they fool you<br>twice..the..they...they shouldn't fool you twice is what I'm<br>saying.<br><br> This does not mean that Dead Souls is somehow<br>impossible to secure. You can easily prevent unauthorized<br>access to lib data. See the next section for how this works.<br><br> What you can't prevent is some dude off the internet<br>you just met and made a creator from wreaking havoc on your <br>mud and creating a nuisance of himself. You have to know who <br>these people are and you have to have a level of trust and <br>confidence in them, otherwise you need to use the <span style="font-weight: bold;">decre</span> <br>command.<br><br></big><big><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="52"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Is Dead Souls secure?</span><br><br> The short answer is no, nothing I know of is "secure" in the<br>sense that you don't need to continually pay attention to it. If the<br>question is "Is Dead Souls particularly unsafe to run?" then the<br>answer is no. Just like any other Internet program you use, Dead Souls<br>is not an obvious security risk, so long as it is not used carelessly.<br>And, obviously, games of any kind, including Dead Souls, should never<br>be installed on any mission-critical, national security, public<br>safety, or health care server. <br><br> Dead Souls security involves two separate spheres:<br><br>1) The binary executable and the system that runs it.<br><br>2) The mudlib and the code that you use and create.<br><br> The first sphere is probably most important. Presumably<br>you plan to run a mud on a computer that does other things too, <br>and you want to keep those things separate from your mud. The <br>most important thing to do is to avoid running Dead Souls as a<br>privileged user. In the case of Windows, this means that the<br>program should not be run by Administrator or anyone in the<br>Administrator group.<br> For unix users, this means that the driver should not run<br>under uid 0 (root). <br><br> The reason for this precaution is that if some genius<br>hacker manages to exploit some unknown weakness in the program, <br>it is better that the process they hack doesn't have full admin<br>privileges to the box.<br> This caution has little to do with Dead Souls specifically.<br>It is a warning I'd give to anyone planning to run any kind of network<br>server. You should take your own security seriously, and<br>if you do not understand your own security situation, you need to take<br>a step back and ask yourself if running a mud at all is a good idea.<br><br> Sphere 2 is lib security. In older muds, file and directory <br>privileges were handled by attributes on the files. If a file's<br>user id (UID) matched a user's UID, then that user had full access<br>to it. Such systems often had complex systems that evaluated<br>effective UID (EUID) based on the file's attributes, its parent<br>directory, the user's ID, possibly group id, etc. This is an<br>entirely valid security model, but because of its complexity,<br>it tended to be exploited easily and often. If you don't<br>stay 100% on top of such a system (just like any OS), there's<br>no way to be sure you won't rooted.<br><br> With stack security, privilege management is much, much<br>easier. A file's privilege is based solely on its location. If<br>a user doesn't have read access to /foo/bar/ then she can't read<br>or modify /foo/bar/file.c. If someone with privs to that location<br>copies the file to somewhere else, then the privs of that new location<br>are in force on the file.<br> The "stack" part of stack security comes from the mud<br>evaluating the privileges of <span style="font-weight: bold; font-style: italic;">all the objects involved in the</span><br style="font-weight: bold; font-style: italic;"><span style="font-weight: bold; font-style: italic;">access request</span>. If you're unprivileged and you manage to get a <br>privileged object to make the access request for you, the access <br>will fail, because you are unprivileged, and you are still part <br>of the function call stack (i.e., the list of instructions that<br>form a chain between the command and the intended event).<br><br> Granular (more detailed) modification of user privileges<br>can be done by changing files in /secure/cfg to grant <br>users and groups specific privileges.<br></big><big><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="53"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I sent you my code a week ago. Is it in or out?</span><br><br>How long it takes me to review code submissions has nothing<br>to do with what I think of you, your skills, or your<br>code. It takes me a long time because Dead Souls isn't<br>actually my job, and is not a physical member of my<br>family, so it has to wait its turn sometimes, for my attention.<br> Sometimes I will get to someone else's code sooner even<br>though I received yours first. What can I say. Sometimes<br>I feel like dealing with a particular thing at a particular<br>time.<br><br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="54"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">Did you finish the bfd() sefun modification I asked you for last night?</span><br><br>I'm on the ds line a lot, and generally accommodate people's<br>requests right away if I have time. This makes it seem<br>sometimes like I can turn orders around in minutes or<br>hours, like a short-order cook.<br> This is an illusion. I do this sometimes<br>for requests that strike my fancy or that are so simple<br>they are not inconvenient, or maybe because I happen to<br>be bored at that moment. But my sometimes doing this<br>doesn't mean folks should expect some sort of prompt<br>turnaround on special requests. <br> In general, I am not sitting at my desk waiting<br>for code orders. I'm doing something else. If I get to<br>your request right away, then good for you. If I don't,<br>then I'll get to it when I get to it. <br> <br><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="55"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">The queeg daemon is a horrendous mess. It's inefficient and frankly offensive.</span><br><br>I'm not an especially gifted programmer. In fact, I view<br>myself rather as a <a href="http://en.wikipedia.org/wiki/Pakled">Pakled</a> from the Star Trek series. I<br>look for things that make the code go. I look for things<br>that make the code strong. Sometimes, because I am not<br>a trained or professional programmer, things are done<br>in a way that shock the conscience of more sophisticated <br>practitioners.<br> If you find such code (and I do hope it is rare),<br>bringing to my attention that it has been implemented in a <br>wretched way doesn't help me. I know that. I wrote it. If <br>you want to help, send me an email with the fixed code.<br><big> <br></big><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="56"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">You implemented my code but didn't give me credit.</span><br><br>Whoops. Send me an email telling me where I goofed and I'll fix it.<br><br><br><span style="text-decoration: underline; font-weight: bold;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="57"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">Intermud mail doesn't work</span><br><br>No it doesn't. It's actually a pretty complicated system to<br>implement, so get used to just local mud mail for now. It<br>is definitely planned for the future, though.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="58"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">The admintool menus let you pick options that aren't visible</span><br><br>I can't decide whether this is a feature or a bug. I'm<br>leaning toward "laziness".<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="59"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">What does locking the mud do, exactly?</span><br><br>When the mud is locked, only members of the authorized<br>groups are permitted to log in. By default, these<br>groups are SECURE, ASSIST, ELDER, and TEST. Anyone<br>who is not a member of these groups, whether they are<br>a creator or a player, is prevented from logging in.<br><br>To lock the mud, use the admintool command, option a.<br>To add people to groups, use the admintool command, option v.<br><br> <br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="60"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">The race help output is inadequate for role-playing. How do I change it?</span><br><br>By default, <span style="font-weight: bold;">help human</span> will output various characteristics<br>of the human race, as known to the race daemon. If you<br>want instead to provide your own help data on the history and<br>lore of humans, simply create a file called /doc/help/races/human<br>and put your information in it. That information will then<br>be what is displayed when requesting help on that race.<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="61"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I need to know what features to expect in the next release so I don't </span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">waste time duplicating effort</span><br></big><big><small><big><span style="text-decoration: underline; font-weight: bold;"></span><br>Visit <a href="http://dead-souls.net/RELEASE_NOTES">http://dead-souls.net/RELEASE_NOTES</a> for information on <br>the latest releases and what they contain. The topmost<br>version is usually not yet available for download, and<br>is listed so that folks know what's coming in the<br>next release. If this is so the version name will have<br>"(unreleased)" next to it.<br><br>As of 2.0r19, the dsversion command is available to<br>allow you to query that site from the mud itself.<br><br>To see what I'm working on, see <a href="http://dead-souls.net/plan.txt">http://dead-souls.net/plan.txt</a><br></big></small></big><big><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="62"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">You need a development roadmap and task tracking</span><br><br>No, I don't. If I had developers and teams and<br>such things, then I'd use all the fancy project<br>management stuff available on Sourceforge.<br> But I don't want to manage developers,<br>I want to lib code. If you want to help develop<br>the lib, then that's really great. Follow the instructions<br>from the previous question and look at my plan file<br>for something that looks interesting and that<br>doesn't have an asterisk. Tell me you'd like<br>to take that project, and I'll mark it as yours.<br>That's it. Send it to me when yer done.<br> If I get tired of waiting I'll tell you<br>I'm going to do it myself, like I was planning<br>all along, and you'll be relieved of that expectation.<br> Setting up some kind of sophisticated<br>collaboration tool to get 3 pieces of code from<br>2 people, and me having to be on people's backs<br>for results and stuff...this is not what I <br>signed up for and I'm not doing it.<br></big><big><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="63"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">How do I update a sefun without rebooting the mud?</span><br><br>To have your new nit_pick() sefun take effect in the<br>running mud, you might do something like this:<br><br><span style="font-weight: bold;">update /secure/sefun/nit_pick.c</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">update /secure/sefun/sefun.c<br><br><br><span style="text-decoration: underline;"></span></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="64"></a></span></big><big><span style="font-weight: bold;"><span style="text-decoration: underline;">My new sefun updates but I can't seem to use it.</span><br></span><br>Make sure the sefun is prototyped in /secure/sefun/sefun.h<br><br>If the sefun is in a new file you created, make sure<br>that /secure/sefun/sefun.c inherits that file.<span style="font-weight: bold;"><br><br><br style="text-decoration: underline;"><span style="text-decoration: underline;"></span></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="65"></a></span></big><big><span style="font-weight: bold;"><span style="text-decoration: underline;">What's the point of the apostrophe-stripping for args in lib/command.c?</span><br><br></span>It's a cheap workaround for a parser problem. The full fix<br>is forthcoming.<br><br><br style="text-decoration: underline;"><span style="font-weight: bold;"><span style="text-decoration: underline;"></span></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="66"></a></span></big><big><span style="font-weight: bold;"><span style="text-decoration: underline;">How does one achieve 'high mortal' or 'ambassador' positions?</span><br><br></span>Those are legacy positions from Pre v1 Dead Souls. They are<br>basically groups, managed by an arch with admintool, which<br>can be granted privileges not normally enjoyed by mortals.<br> In the current implementation of Dead Souls, those<br>positions are vestigial. You can implement them on your<br>own mud however you please.<br><span style="font-weight: bold;"><br><br><span style="text-decoration: underline;"></span></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="67"></a></span></big><big><span style="font-weight: bold;"><span style="text-decoration: underline;">I would like XYZ and PDQ to happen every time the mud boots</span><br><br></span>The most common way to have this happen is to add<br>your daemon (and typically that's what you'll<br>want to start at boot) to /secure/cfg/preload.cfg .<br> This will ensure that it gets loaded<br>before the mud accepts any connections. It has the<br>added advantage of being included in the list of daemons<br>that the mud periodically checks and restarts if they<br>have died.<br><br> If it isn't a daemon, but rather some<br>specific function you want to happen at boot, simply<br>add the relevant code to /secure/daemon/autoexec.c<br><br><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="68"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I can't login! I keep getting: "It seems some work is being </span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">done right now, try later."</span><br><br> This is very bad. What this means is that some<br>files that are needed in order to load your player <br>object cannot be loaded. It can be any of a very large<br>number of files, which is the problem. Usually this<br>happens if you've been, for example, messing around<br>with player.c, then broke it, and rebooted the mud. Now<br>since player.c can't be loaded, you're locked out.<br> It could be any of the files loaded by your<br>player object, or other daemon files needed by your<br>login. The only way to narrow down the possible list of<br>files you corrupted is by examining the output of the<br>console (the window where you type the command line<br>to start the mud) and reviewing log/runtime and <br>log/catch for clues.<br> Once you've found the culprit, either fix it,<br>or replace it with the original version from the<br>Dead Souls distribution package.<br><span style="font-weight: bold;"><br></span><br><span style="font-weight: bold; text-decoration: underline;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="69"></a></span></big><big><span style="font-weight: bold; text-decoration: underline;">I had a really great idea that revolutionizes ds and you </span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">refuse to include it. I am forking ds development and </span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">making my dream come true.</span><br><br>Ok then, have fun. All I ask is that you give your<br>project a name that isn't going to confuse people<br>as to which lib is which. Confusing your user base <br>isn't a good way to get started on such an enterprise.<br>Send us a post card once in a while.<br><br></big><big><br style="text-decoration: underline; font-weight: bold;"><span style="text-decoration: underline; font-weight: bold;"></span></big><big><span style="font-weight: bold; text-decoration: underline;"><a name="70"></a></span></big><big><span style="text-decoration: underline; font-weight: bold;">What do the version numbers mean?</span><br><br>2.0r16 means "Major version 2, minor version 0, release number 16".<br>Releases happen pretty frequently, to add functionality and fix bugs<br>from the previous release. When the basic functionality of a minor<br>version is as bug free as reasonably possible, a new minor version<br>change happens.<br> Major version number changes are very rare and represent a<br>vast difference from the old major version. Versions 1 and 2 of<br>Dead Souls are so different as to be largely incompatible with each<br>other's code.<br> As of this writing, the goal of releasing version 2.1 looms.<br>The significance of this milestone is that Dead Souls 2.1 is<br>intended to be the fulfillment of the promise that there was in<br>version 1.1. After the release of Dead Souls 2.1, the focus of<br>development will be in adding major systems and functionality<br>that 1.1 was hoped to have, but never did.<br><br><br></big><big><a name="71"></a><span style="font-weight: bold; text-decoration: underline;">The Dead Souls router is down. How do I switch back to *gjs?</span><br><br> Use the switchrouter command to change between <br>routers. The new default I3 router for Dead Souls muds is called<br>*yatmim. So far it's been dramatically more reliable than<br>the old intermud.org router, which is known as *gjs.<br> The advantage to *yatmim is that it is dependable<br>and the bulk of the Dead Souls community (a vital resource for<br>DS-specific technical support) uses that router.<br> The advantage to *gjs is that many more muds are<br>connected to it, and you can have more opportunity for random<br>chatting and gossiping. Also, the intercre channel on *gjs<br>is an excellent resource for general technical questions.<br> For more information on switching between routers, type:<br><br><span style="font-weight: bold;">help switchrouter</span><br><br> If the *yatmim router goes down for more than a<br>few minutes, make sure to check the <a href="router.html">router page</a> to see if<br>the IP address or port have changed.<br><br> There's also a good chance that what has happened<br>is your mud's IP address has changed, and *yatmim interprets<br>your connection from a different IP as an impostor. Eventually<br>this will clear. You may have to wait up to 24 hours.<br><br> It is unwise for newbies to talk on intergossip<br>while connected to the *gjs router. I don't know how many<br>times or ways I can warn you about this. Please keep in<br>in mind.<br><br><br></big><big><a name="72"></a><span style="font-weight: bold; text-decoration: underline;">I'm going to totally revamp <insert highly complex system here>.</span><br style="font-weight: bold; text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">Will that be difficult?</span><br><br> This is, surprisingly, a fairly common question.<br>Basically, the answer is:<br><br>"If you have to ask, then the answer is yes."<br><br> It's not an impossible task to, say, rewrite<br>combat to be just like the combat you're used to on LeetFooMud.<br>It's totally doable, and not *all* that difficult for<br>an experienced coder.<br><br> But if you're new to LPC, you need to concentrate<br>on getting the basics down before you put that cart in<br>front of that horse. Let me phrase it like this:<br><br>"If there's any part of the Creator's Manual you don't<br>know and understand, you aren't ready to do lib coding yet."<br><br> If you are at 100% grok with the manual, then<br>please read chapter 8 of the Admin's Guide to get started<br>on serious lib work. <br><br><br></big><big><a name="73"></a><span style="text-decoration: underline; font-weight: bold;">I've hired an area coder to make a new domain. I want her</span><br style="text-decoration: underline; font-weight: bold;"><span style="text-decoration: underline; font-weight: bold;">to be able to use QCS in /domains/MistyDragonShireMysts</span><br><br> The default behavior of QCS is to try to figure out<br>what directory makes most sense to write in. It assumes<br>that it's only going to write into areas you have write<br>permission to. Since your new coder doesn't have write<br>access to /domains/</big><big>MistyDragonShireMysts, QCS instead will<br>write to the next most logical place: her home area directory.<br><br> This is true even if you use the <span style="font-weight: bold;">grant</span> command <br>to enhance her access. QCS's authentication mechanism is<br>entirely separate from the grant/access system, which works<br>fine for non-QCS editing.<br><br> To make your new domain, use the domaincreate command:<br><br><span style="font-weight: bold;">domaincreate MistyDragonShireMysts</span><br><br> To enable your new coder to use QCS in that domain,<br>use the <span style="font-weight: bold;">domainadmin</span> command to manage the admins of that<br>domain. A domain may have more than one admin at the same time.<br><br> For more information on domainadmin, type:<br><span style="font-weight: bold;">help domainadmin</span><br><br> For more details on where QCS puts things, be sure<br>to read <a href="http://dead-souls.net/ds-creator-faq.html#5.1">this Creator FAQ section</a>.<br><br><br><br><a name="74"></a><span style="font-weight: bold; text-decoration: underline;">How does player voting work?</span><br><br> The voting system enables players to nominate and<br>vote for class leaders. A Fighter can nominate and vote for<br>his Fighter leader, Mages can vote for a Mage leader, etc.<br>The nomination period usually lasts about a week, then<br>nomination closes and voting begins. Voting ends when<br>an arch enters the voting room (it's in Town Hall) and<br>issues the appropriate command. See the voting room printed<br>material for instructions.<br> When the voting is ended, the winner becomes<br>council member. The high council is composed of <br>representatives (the leaders) of the classes. What kinds<br>of authority the council should have is entirely up to<br>you and your mud. No default powers are enabled, you'll<br>need to code your own sets of privileges and responsibilities<br>for your councilors.<br> Because creators have no business meddling in the<br>affairs of mortals, they cannot vote, regardless of their<br>class affiliation.<br><br><br><a name="75"></a><span style="font-weight: bold; text-decoration: underline;">What are "estates"?</span><br><br> Any references to estates in Dead Souls code or<br>documentation are artifacts of pre-1.1 Nightmare code. <br>Estates in the Nightmare lib were player-owned areas,<br>which were granted to players of specific rank, status,<br>etc who could afford to buy the rights to them.<br> There is currently no estate support in Dead Souls,<br>though it is on the post 2.1 feature list.<br><br><br><a name="76"></a><span style="font-weight: bold; text-decoration: underline;">What are "events"?</span><br><br> Some things should happen regularly. Perhaps<br>log rotation, or backing up some .o files. The events<br>daemon, or EVENTS_D handles this. To add or remove<br>events use the add_event() sefun. For example, to add the<br>log rotation event, I issued this command:<br><br><span style="font-weight: bold;">eval return add_event("/secure/daemon/log","/secure/daemon/log","RotateLogs",({ }),7200,1)</span><br><br> Which said: "Every two hours, call the RotateLogs function in the log daemon."<br><br> To see what events have been scheduled, type:<br><span style="font-weight: bold;">events</span><br><br> To remove an event from the events schedule, find its<br>next runtime, and use it as an argument to the remove_event() sefun,<br>like this:<br><br></big><big><span style="font-weight: bold;">events</span><br><br>The following events are pending:<br>1145159511 RotateLogs Sun Apr 16 03:51:51 2006 EDT<br><br><span style="font-weight: bold;">eval return remove_event(</span></big><big style="font-weight: bold;">1145159511)</big></pre> <br style="font-family: monospace;"> <pre style="font-family: monospace;"><big><a name="77"></a><span style="font-weight: bold; text-decoration: underline;">Where does user monitor data go?</span><br><br> When you monitor someone, or if you enable<br>GLOBAL_MONITOR, monitor data is logged into /secure/log/adm.<br><br><br></big><big><a name="78"></a><span style="font-weight: bold; text-decoration: underline;">How would you set a race to be selectable by new players?</span><br><br> Edit the race file and have this line near the top:<br><br>PLAYER_RACE 1<br></big><big><br> Then use the removerace and addrace commands. For example:<br><br><span style="font-weight: bold;">removerace tauren</span><br style="font-weight: bold;"><span style="font-weight: bold;">addrace tauren</span><br></big></pre> <pre style="font-family: monospace;"><big>For details:<br><span style="font-weight: bold;">help addrace<br><br><br></span></big><big><span style="font-weight: bold;"><a name="79"></a><span style="text-decoration: underline;">Where is emote data kept? Can I edit it by hand?</span></span><br style="font-weight: bold;"><br> Emote data is saved in /save/soul.o<br><br> You must never, ever, edit an .o file. Period. It<br>is possible to do it without corrupting data, but I do<br>not condone it, I don't recommend it, and if you fux your<br>mud because you did it anyway, I won't support it.<br><br> If you edit an .o file, and now things don't<br>work, it is your own fault. If you didn't back things up<br>before editing system files, there's nothing anyone can<br>do to retroactively save your data. <br><br><br><a name="80"></a><span style="font-weight: bold; text-decoration: underline;">What are .h and .o files? Where are they kept?</span><br><br> Files with the extension of .h are called header<br>files. They have code or variables that are helpful when<br>creating some things, so that an armor object uses<br>armor_types.h to load some useful information without having<br>to hard code it every time you make a piece of armor.<br> These global header files are most typically found in<br>/include or /secure/include , although local header files<br>that are specific to a particular directory (such as<br>header files for lib objects) are commonly found in an<br>./include subdirectory of the given directory.<br><br> Files with an .o extension are object persistence<br>files. They contain data, not code. There are some things<br>that happen in the lib that should persist across<br>reboots, such as races, classes, economy, etc. You could<br>just hard code this stuff, but what if you need to make<br>changes? What if your economy needs to be flexible to <br>accommodate inflation? What if you want to be able to<br>add or remove emotes on the fly? <br> Persistence files allow you to save data which<br>is subject to manipulation, but which needs to be available<br>in case the mud restarts.<br><br> Because .o files tend to contain information <br>that is structured and formatted in a very specific way,<br>they should never be edited by hand. They are intended to<br>be loaded and saved by objects like daemons. Monkeying<br>around with the contents of an .o file is an excellent <br>way to damage your mud.<br> Another reason to avoid it is that even if you<br>make a valid change, it's liable to be overwritten unless<br>you fully understand the daemon that uses that file.<br><br><br><a name="81"></a><span style="font-weight: bold; text-decoration: underline;">But my friend forgot his password! I *have* to edit his playerfile!</span><br><br> Use the command: <span style="font-weight: bold;">resetpasswd</span><br> <br><br><a name="82"></a><span style="font-weight: bold; text-decoration: underline;">How do I change my mud's name?</span><br><br>1) type: <span style="font-weight: bold;">admintool</span><br><br>2) select the "Driver" menu option<br><br>3) select the "change the MUD's name" option<br><br>4) answer yes to rebooting<br><br><br><a name="83"></a><span style="font-weight: bold; text-decoration: underline;">Help! I locked myself out!</span><br><br> For UNIX administrators, it is natural to create an<br>admin character for special admin tasks, and then use<br>a regular character for routine stuff.<br> There's nothing wrong with that, but if you<br>lock the mud, you'll need to have your regular character<br>be in either the ELDER or TEST groups in order to log<br>in. For more information on modifying groups: <span style="font-weight: bold;">help admintool</span><br><br><br><a name="84"></a><span style="font-weight: bold; text-decoration: underline;">What are the privileges associated with the groups in groups.cfg?</span><br><br><span style="text-decoration: underline;">SECURE</span> gives you 100% admin privs to the mud.<br><br><span style="text-decoration: underline;">ASSIST</span> gives you most. The assistant admin position can<br>be fine tuned by reading the security code in /secure/daemon/master.c<br>and modifying it to suit you. This should only be done by<br>someone who fully understands every line in that file.<br><br><span style="text-decoration: underline;">ELDER</span> is just a nice thing to have show up in the who list.<br><br><span style="text-decoration: underline;">TEST</span> lets the lib know you are a test character.<br><br>All members of the above four groups are permitted to log in when<br>the mud is locked. <br><br><span style="text-decoration: underline;">INTERMUD</span> lets the member use intermud, if RESTRICTED_INTERMUD<br>is enabled.<br><br>Any additional special groups or privileges you'll have to code yourself.<br><br><br><a name="85"></a><span style="font-weight: bold; text-decoration: underline;">Why does the documentation refer to LIB_ARMOUR and armour_types.h?</span><br><br> The LPC documentation in the Creator's Manual was written by<br>Descartes. I have been reluctant to make any changes to it, <br>because first, it isn't mine, and second, deviations from the<br>current lib are very small.<br><br> In this particular case, you evidently have noted that<br>the lib uses American spelling for "armor". The original Dead<br>Souls distribution, version 1, and the Nightmare lib used the<br>British spelling of "armour".<br> Aside from finding it unnecessary and affected, I<br>felt it was distracting and potentially confusing for coders,<br>because it was the only word in the lib spelled this way. There<br>were no instances of "colour" or "honour", etc. Rather than<br>make things uniform by Britishizing them, I made them uniform<br>by Americanizing them.<br> To this day I don't know the reason for that original<br>spelling. It may be that Descartes intended to make a <br>distinction between, say, an armoury that sells things you<br>wear, and an armory that sells things you wield.<br> If I remember to, I'll ask him next time we talk.<br><br><br><a name="86"></a><span style="font-weight: bold; text-decoration: underline;">Where are read/write restrictions kept?</span><br><br> The global perms are listed in /secure/cfg/read.cfg<br>and /secure/cfg/write.cfg . However, additional permissions<br>may be available to a user based on the access privileges<br>defined in a given adm/ subdirectory. See <span style="font-weight: bold;">help grant</span> for<br>more details on that system.<br><br><br></big><big><a name="87"></a><span style="font-weight: bold; text-decoration: underline;">I need to test day/night descriptions, but I can't wait around all day.</span><br><br>Type: <span style="font-weight: bold;">help ticktock</span><br><br><br><a name="88"></a><span style="font-weight: bold; text-decoration: underline;">How can I change the default prompt? Can I make it dynamic?</span><br><br> The default prompt is defines in /secure/include/config.h .<br>It is static. Eventually a revamp of the command shell will permit<br>dynamic prompts (listing, for example, health status, or current<br>working directory) but for now that is not available.<br><br><br><a name="89"></a><span style="font-weight: bold; text-decoration: underline;">What is "unguarded"?</span><br><br> Unguarded is the mechanism used to obviate the stack<br>security model. Under some tightly controlled circumstances, it<br>may be desirable to have an object access privileged data, even though<br>an unprivileged object is in the command stack.<br><br> When the unguarded() sefun is called, the object containing<br>the sefun overrides the security permissions on any other object<br>in the stack, allowing, for example, an unprivileged object <br>to read from your home directory.<br><br> See <span style="font-weight: bold;">man unguarded</span> for syntax and usage, and examine<br>files like /secure/obj/snooper.c for examples. Use with <span style="font-weight: bold;">EXTREME</span> caution.<br> <br><br></big><big><a name="90"></a><span style="font-weight: bold; text-decoration: underline;">Is intermud communication secure?</span><br><br> Not in the slightest. Here's how it works:<br><br><span style="font-weight: bold;">1)</span> Whoever is running the router has 100% access to every bit<br>of communication that happens across that intermud network. All<br>messages are plaintext, and although I personally can promise<br>I don't read "private" messages, there is no way for you to<br>be sure I'm not lying.<br><br><span style="font-weight: bold;">2)</span> All muds connected to an i3 router can hear anything that<br>is said on public channels. <br><br><span style="font-weight: bold;">3)</span> Any admin on any mud has 100% access to the i3 packet data<br>that comes in and out, meaning they can listen to "private" tells<br>between someone on that mud and someone on another mud.<br><br><span style="font-weight: bold;">4)</span> Nobody on any client mud is able to "sniff" or "snoop" data from<br>tells between other muds. If Alice@AlphaMud and Bob@BravoMud are<br>having a heated "tell" discussion, Carol@CharlieMud can't listen in,<br>even if she's an admin on her mud. However, Dave@DeltaMud is<br>the admin on the i3 router mud, and he can "hear" everything.<br><br><span style="font-weight: bold;">5)</span> Local channels (cre, admin, newbie, etc) do not get broadcast<br>to the i3 router. There is one exception to this. Dead Souls 2.0r22<br>had a bug that did just this thing. This bug is not<br>seen in earlier versions, and later versions have been fixed to<br>prevent this. However, any local admin has full access to any<br>local channel.<br><br><span style="font-weight: bold;">6)</span> Since this is all plaintext, anyone at all along the<br>network stream (you ISP, their ISP, etc) can listen in,<br>whether at the intermud point, or at the point where you<br>or your message target telnetted into their mud.<br><br><br>Therefore: do not tell secrets across intermud.<br><br><br><a name="91"></a><span style="font-weight: bold; text-decoration: underline;">What should I <span style="font-style: italic;">not</span> do?</span><br><br> There aren't too many "don'ts", but they tend to<br>be important, so try to follow these guidelines:<br><br>- Don't mess with /realms/template/ unless you know exactly<br>what you're doing. Breaking anything there will hose up<br>new creators. The same goes for /secure/sefun/make_workroom.c<br><br>- Don't let just anyone off the street become Creator. You<br>need to know and trust your builders.<br><br>- Don't let a week go by without a full backup of your mud.<br><br><br></big></pre> <big style="font-family: monospace;">- Cratylus</big><br style="font-family: monospace;"> <br style="font-family: monospace;"> <a style="font-family: monospace;" href="http://dead-souls.net/">Dead Souls Homepage</a><br style="font-family: monospace;"> <br style="font-family: monospace;"> </body> </html>