% -*-texinfo-*-
\input svensktexinfo

@ignore
@def@svenskmudmaskininfo{Varg �r en Sun 3/280 med 16MB ram,
flyttalsaccelerator och SunOS 4.1.1_U1 som �r donerad av Sun. 
@cindex Svenska Sun Microsystems AB}
@end ignore



@setfilename magikerbok
@settitle Handbok f�r SvenskMUDmagiker
@setchapternewpage odd

@ifinfo
Copyright @copyright{} 1993 Linus Tolke

Detta dokument f�r fritt citeras ur och anv�ndas till allt m�jligt s�
l�nge det gagnar SvenskMUD, annat ickekommersiellt muddande, utveckling
och framsteg inom modern datorteknik eller den svenska hackerkulturen
och s� l�nge det sker utan vinstintresse.

I �vrigt:

Alla r�ttigheter f�rbeh�lles.

@end ifinfo

@comment Hur jag anv�nder indexen:

@comment concept index - anv�nds som generellt index f�r ideer
@comment function index - anv�nds som index f�r efuns och spr�kkonstruktioner
@comment variable index - anv�nds som index f�r lfuns och variabler i objekt
@comment program index - f�r alla typer av filnamn och objektnamn.
@comment keystroke index - inga planer
@comment data type index - inga planer
@synindex pg cp
@synindex vr cp
@synindex fn cp

@smallbook
@titlepage
@title Handbok f�r SvenskMUDmagiker
@subtitle ett hj�lpmedel f�r byggarna i SvenskMUD
@author Linus Tolke, Gud
@page

Detta dokument f�r fritt klippas ur och anv�ndas till allt m�jligt s�
l�nge det gagnar SvenskMUD, annat ickekomersiellt muddande, utveckling
och framsteg inom modern datorteknik eller den svenska hackerkulturen
och s� l�nge det sker utan vinstintresse.

I �vrigt:

Alla r�ttigheter f�rbeh�lles.
@vfill
F�r pappersutg�van g�ller dessutom f�ljande speciella f�rbeh�ll:
Om du tycker att du har n�gon nytta av den s� s�tt in 30 kr p� 
postgirokonto 483 11 40-1. De pengarna g�r oavkortat till Linus 
skaparen (gud) som ur egen ficka i f�rv�g betalat tryckkostnaden. Ge
annars bort ditt exemplar till en annan SvenskMUDmagiker.

Om du kopierar pappersutg�van s� ta inte med detta speciella f�rbeh�ll.

@vfill
@vfill
@vfill
@vfill
F�rsta utg�van. Revision 2.
@page
F�rord till f�rsta utg�van:

M�let med denna bok �r att vara en f�rsta hj�lp till nya magiker i
SvenskMUD att komma ig�ng med programmeringen. Betoningen �r p� vad man
bygger f�r saker och hur objekt samarbetar i spelet och boken inneh�ller
inte n�got alls om hur LPC-spr�ket fungerar och anv�nds. Det g�r boken
v�ldigt SvenksMUD-specifik.

SvenskMUD har under v�ren 1993 varit utsatt f�r stora f�r�ndringar. Det
�r egentligen ingenting som ber�r det som st�r i denna bok utan det har
mer varit en acceleration i byggandet. Det �r en av orsakerna till att
jag tyckte det var viktigt att skriva denna bok. En annan viktig orsak
�r att jag tycker inte att anslagstavlorna i spelet, brev-skickande och
pratande fungerar tillr�ckligt bra som utbildning f�r nya magiker. Jag
vill g�ra n�gonting mer och denna bok �r det b�sta jag kunde komma p�.

Sedan revision 0 har det tillkommit en del kapitel men framf�r allt �r
hela boken numera ett texinfo-dokument ist�llet f�r frame-maker och det
inneb�r att du kan h�mta den infoiserade versionen och ha den i din
emacs.

Sedan revision 1 har det nya kapitel 1 tillkommit med fokusering p�
SvenskMUDs plats i v�rldshistorien. En del andra kapitel eller stycken
har bytt plats.

Vill du ha fler exemplar, eller SvenskMUD-knappen s� h�r av dig till
f�rfattaren Linus.

@vfill
Tack till:
@sp 1
Datorf�reningen Lysator @*
Alla magiker i SvenskMUD @*
@end titlepage

@iftex
@hyphenation{Dess-utom}
@hyphenation{SvenskMUD}
@hyphenation{sven-ska}
@hyphenation{regi-stre-rar}
@hyphenation{in-ter-pre-terar LPmud}
@hyphenation{ar-be-tar en-ligt Lars}
@hyphenation{ma-ski-nen Lysator}
@hyphenation{Uni-ver-si-te-tets}
@hyphenation{stan-dard-pry-lar}
@hyphenation{peng-arna fi-ness}
@hyphenation{ut-veck-lats ur-sprung-li-ga}
@hyphenation{han-te-ring kom-pa-tibi-li-tets-mod en-sam an-storm-ning ver-sion}
@hyphenation{In-ter-net engel-ska}
@hyphenation{ny-fiken-het}
@hyphenation{ur-sprung-li-gen spelar-objektet kom-man-don}
@hyphenation{exem-pel}
@hyphenation{er-faren-hets-po�ng}
@hyphenation{fel-med-delan-dena}
@hyphenation{stan-dard-rum kom-man-dot}
@hyphenation{fil-nam-net auto-ma-tiskt}
@hyphenation{funk-tions-an-rop funk-tions-namn}
@hyphenation{exek-ve-rings-fel}
@end iftex


@node top, SvenskMUDs plats i litteraturen, (dir), (dir)
@comment  node-name,  next,  previous,  up

@menu
* SvenskMUDs plats i litteraturen::  
* Om SvenskMUD::                
* Att t�nka p� n�r du kodar::   
* Filtr�det::                   
* Objekt::                      
* Masterobjektet::              
* Standardgrejor::              
* Uppdrag::                     
* Konventioner::                
* Skillnader::                  
* Problems�kning::              
* Magikerverktyg::              Magikerverktyg
* Register::                    
@end menu

@node SvenskMUDs plats i litteraturen, Om SvenskMUD, top, top
@comment  node-name,  next,  previous,  up
@chapter SvenskMUDs plats i litteraturen
@cindex SvenskMUDs plats i litteraturen
@cindex litteraturen

Under 1980-talet utvecklades ett internationellt n�tverk av datorer i
h�gskolor och universitet och �ven vissa f�retag. Det best�r av snabba
unixdatorer och en fundamental byggsten �r snabb och direkt �verf�ring
av information mellan n�stan godtyckligt valda datorer i n�tverket.
@cindex n�tverk

Ett s�dant h�r n�tverk �r en perfekt f�ruts�ttning f�r g�ra datorspel
med en fleranv�ndardimension. I den ursprungliga n�tverket �r
kapaciteten ganska liten s� de f�rsta spel som uppenbarar sig �r
@cindex BSX-mud
@cindex Doom
textbaserade @footnote{Det finns nu i b�rjan av 1990-talet redan flera
olika diskussioner ig�ng om hur man b�st g�r motsvarande spel med grafik
och sk. virtual reality och vi har redan sett ett par exempel p� detta:
BSX-mud, Doom}. De ser mycket ut som de adventurespel som f�rekom under
1970-talet och alla kommandon och beskrivningar ges med enkel text.

Den h�r typen av spel kallas mud.

Man kan h�vda att mud bara �r spel men man kan ocks� h�vda att de �r en
ny sorts litteratur d�r l�sarens (eller spelarens) och andra l�sares val
@cindex l�sare
@cindex spelare
i varje l�ge p�verkar hur historien kommer att forts�tta.

Det finns likheter med traditionell litteratur vad det g�ller den
sk�nhet och det intellektuella utbyte som man kan f� ur spelen och ocks�
@cindex intellektuellt utbyte
@cindex f�rfattaren
i hur muddet speglar f�rfattarens upplevelser om samtiden.

Till skillnaderna h�r det s�tt p� vilket intrigen byggs upp. I
traditionell litteratur �r l�saren (deltagaren) utl�mnad helt �t
f�rfattarens val och f�rfattaren har full kontroll �ver hur handlingen
byggs upp och f�rs fram�t. I ett mud �r det l�saren (deltagaren) och
hans eller hennes med-l�sare (andra spelare) som driver fram handlingen
@cindex intrigen
och best�mmer hur de olika intrigerna v�vs samman och p�verkar varandra.

Att vara f�rfattare till en s�dan h�r flervalshistoria �r mycket
sv�rare �n att f�rfatta en vanlig bok, dvs om den skall uppn� samma
kvalitet. Till dags dato har inget spel ens lyckats n�rma sig
''kvaliteten'' som finns i den enklaste kiosklitteratur. Mest f�r att det
�r sv�rt att �stadkomma en intressant intrig.

� andra sidan �r det m�nga saker som finns i mud som aldrig kan
realiseras i en vanlig bok. Bl.a. kan f�rfattaren sj�lv finna n�je i att
''l�sa spelet'' eftersom intrigen kan f�r�ndras av andra ''l�sare''.

SvenskMUD h�r till en typ av spel som kallas LPmud. Det �r en typ som
utvecklats av datorintresserade och en av grundideerna �r att det skall
vara l�tt att skapa mer saker i spelet (skriva mer i boken). Detta g�r
att spelet f�r�ndras fr�n dag till dag. Det tillkommer saker och saker
�ndras.

M�nga mud fungerar s� att det finns m�jlighet f�r l�sarna (spelarna) att
efter ''slutl�st'' mud, oftast en viss m�ngd avklarade uppdrag i spelet,
f� m�jlighet att sj�lva ta del i skapandet. Detta sk�nker ytterligare en
intressant dimension av gemensamt f�rfattarskap @footnote{Det r�r sig i
SvenskMUDs fall om ca 20 samtidiga aktiva skapare} som �r v�ldigt
s�llsynt i den traditionella litteraturen.

Egentligen �r skillnaden mellan att vara ''l�sare'' och ''f�rfattare'' lite
diffus eftersom ''l�saren'' ocks� p�verkar historien. I SvenskMUD skiljer
man p� d�dliga och magiker. Magiker har r�tt att skapa helt nya saker
medan de d�dliga �r utl�mnade �t de m�jligheter som magikerna skapar �t
dem.

@cindex virtuella v�rldar
@cindex geografi
Ibland kallas v�rlden som finns i spelet f�r en virtuell v�rld och de
olika magikerna ansvarar kanske f�r var sitt geografiskt omr�de i den
virtuella v�rlden.



@menu
* M�let med SvenskMUD::         
* Problem med detta m�l::       
* Stil::                        
* Organisatoriska problem::     
* Guds betydelse::              
@end menu

@node M�let med SvenskMUD, Problem med detta m�l, SvenskMUDs plats i litteraturen, SvenskMUDs plats i litteraturen
@comment  node-name,  next,  previous,  up
@section M�let med SvenskMUD
@cindex m�let med SvenskMUD

@cindex amerikanska kulturen
Det ursprungliga m�let med SvenskMUD �r att erbjuda ett alternativ till
den engelskspr�kiga amerikainfluerade kulturen som finns i
den svenska hackerv�rlden och speciellt bland utbudet av muddar.
@cindex Internet
@cindex spr�ket
SvenskMUD var faktiskt f�rst i v�rlden med att erbjuda ett mud p�
Internet d�r sj�lva kommunikationsspr�ket var n�got annat �n engelska.
Sedan dess har det dykt upp mud p� tyska ocks�.

@cindex nordisk mytologi
V�rlden �r t�nkt att �terspegla den nordiska mytologin och den svenska
litteraturen och utspela sig n�gong�ng p� 1800-talet.

@node Problem med detta m�l, Stil, M�let med SvenskMUD, SvenskMUDs plats i litteraturen
@comment  node-name,  next,  previous,  up
@section Problem med detta m�l
@cindex problem med m�let
Med st�ndigt ca 20 aktiva f�rfattare och en ganska j�mn str�m av
nytillkomna s�dana �r det v�ldigt sv�rt att h�lla en v�rld som �r
konsistent vad det g�ller tidsepok och geografisk utbredning i den
virtuella v�rlden. I synnerhet som en del nytillkomna magiker g�rna vill
skapa saker som direkt m�rks f�r spelarna och placerar sina f�rsta
saker s� att spelarna formligen snubblar �ver dem @footnote{�nnu mer
irriterande �r det eftersom de f�rsta sakerna en ny magiker g�r s�llan
h�ller h�g kvalit�.}.

Dessutom har en del magiker sv�rt att skaka av sig oket fr�n den
amerkanska kulturen och det finns inslag som inte riktigt lever upp till
kraven/m�len. 
@cindex amerikanska kulturen

Man m�ste vara medveten om vad det �r f�r personer som �r spelare och
blir magiker. Eftersom spelet bara �r tillg�ngligt f�r personer som
finns p� Internet s� �r det n�stan uteslutande datorintresserade
h�gskolestuderande som spelar. Det inneb�r att mycket av det skapande
som g�rs inte handlar om att f� en b�ttre v�rld utan ist�llet �r
inriktat p� att hitta programmeringtekniskt utmanande problem och
l�sningar.


@node Stil, Organisatoriska problem, Problem med detta m�l, SvenskMUDs plats i litteraturen
@comment  node-name,  next,  previous,  up
@section Stilen
@cindex stilen
Ett annat m�l �r att beh�lla stilen genom hela muddet. Den definierade
stilen �r att det skall vara n�gonstans kring sent svenskt 1800-tal med
lite fantasy-inslag. Det inneb�r att avancerade vapen, vikingar,
familjen Hedenh�s mm inte riktigt passar. Vill man f�rl�gga sitt omr�de
till en annan tidsperiod kan man ju se till att konstruera en portal
mellan tidsperioderna och p� s� s�tt fixa en ''f�rklarlig'' �verg�ng
till en annan v�rld.

@node Organisatoriska problem, Guds betydelse, Stil, SvenskMUDs plats i litteraturen
@section Organisatoriska problem
@cindex organisatoriska problem
Det vore ganska enkelt att h�ja kvaliten p� spelet genom att inf�ra
h�gre krav p� magikernas kunskap, kr�va att varenda pryl som magikerna
skapas skall godk�nnas eller h�nsynsl�st rensa ut prylar som inte passar
och magiker som inte h�ller stilen.

S�dana �tg�rder orsakar genast mots�ttningar i f�rfattargruppen och
resulterar otvivelaktigt i att det fungerande resultatet blir mycket
mindre. Mindre diversitet och mindre m�jligheter. Dessutom finns det
ingen som har tid att st�lla upp med den tid som beh�vs f�r det trista
arbetet att godk�nna och rensa ut prylar.

I SvenskMUD �r m�let att skapa en kreativ och hj�lpsam anda bland
magikerna. I viss m�n har stilm�let och kvalit�n f�tt kompromissas
f�r att alla skall k�nna att de �r v�lkomna att deltaga i
skapandeprocessen.

Geografiska inkonsistenser i den virtuella v�rlden l�ses genom att
�vertala magikern att flytta sitt omr�de ist�llet f�r att flytta det
utan f�rvarning. Inkonsistenser i tidsepoken l�ses genom att man skapar
en tidsmaskin eller genom att man l�ter spelaren b�rja dr�mma och i
dr�mmen vara i en annan v�rld eller liknande.

Allt f�r att s� m�nga som m�jligt skall f� utlopp f�r sin kreativitet
och k�nna p� denna alldeles speciella typ av f�rfattarskap.
@cindex kreativitet
@cindex f�rfattarskap

Ett angr�nsande problem �r att f�rfattarna �r spridda �ver hela Sverige
(egentligen hela v�rlden) och i stor utstr�ckning inte k�nner
varandra. Att kommunikationen dem emellan �r begr�nsad till att prata
med varandra i spelet i den m�n de r�kar vara inne i spelet samtidigt
och skicka brev till varandra g�r det ibland kan vara sv�rt att f�rst�
varandra. Det blir l�tt missf�rst�nd.


@node Guds betydelse,  , Organisatoriska problem, SvenskMUDs plats i litteraturen
@section Gud p�verkar
@cindex gud p�verkar

@cindex demokrati
@cindex diktator
Pga ovanst�ende kommunikationsproblem kan det inte skapas en fungerande
demokrati i spelet utan jag har utnyttjat min position som gud och
implementerat mina ideer. P� senare tid har jag mest utnyttjat min
diktatorst�llning till att utse �rkemagiker som jag tror kan beh�lla 
den kreativa milj�n och arbeta f�r konsistens i spelet. I detta val har
jag ocks� f�rs�kt verka f�r att SvenskMUDs underh�llningsv�rde skall �ka
och skapandet skall koncentreras p� en fin v�rld.

De ideer som jag implementerade ursprungligen �r:
@iftex
@nobreak
@end iftex
@itemize @bullet
@item
Alla magiker f�r l�sa �verallt, det �r allts� l�tt att se hur andra g�r
sina objekt och saker. Jag tror att detta �r ett v�ldigt bra s�tt att
l�ra sig hur man g�r olika saker.

@item
S� stor frihet som m�jligt f�r att inte s�tta k�ppar i hjulet p�
kreativiteten. I vissa avseenden �r det i SvenskMUD v�ldigt h�gt i tak
vad det g�ller vad en magiker f�r g�ra och inte f�r g�ra.

@item
Alla magiker kan g�ra lika mycket/lite i spelet. Magiker kan spionera p�
d�dliga men inte p� andra magiker. Det finns i spelet f� tekniska
begr�nsningar som skiljer ut magiker p� olika niv�er. Det �r sv�rt att
avg�ra hur detta uppfattats bland magikerna. De flesta verkar inte
f�rst� att jag och �rkemagikerna inte tvunget �r b�ttre programmerare
utan f�ruts�tter att vi besitter �verl�gsen intelligens och kunskap.

@item
M�let med muddet �r att erbjuda intressant underh�llning f�r de som
spelar. Underh�llningsv�rdet �kar om spelet hela tiden lyckas stimulera
spelarens uppfinningsrikedom och nyfikenhet. Siffror som rapporterar
tekniska detaljer om spelet, tekniska kommentarer mm. st�r sk�nheten i
mudv�rlden. Eftersom spelarens egenskaper �r implementerade som siffror
och kroppens funktioner bara �r matematiska operationer p� dessa siffror
�r det lockande f�r den late f�rfattaren att bara rapportera dessa
siffror rakt av till spelaren. Jag vill att underh�llningsv�rdet i
SvenskMUD skall finnas i de saker som skapas och i historierna som
utspelas och att det inte som i andra mud ska bli en jakt p� siffror och
d�rf�r har jag i flera olika steg f�rs�kt f� bort siffrorna ur spelarnas
v�rld.
@end itemize


@node Om SvenskMUD, Att t�nka p� n�r du kodar, SvenskMUDs plats i litteraturen, top
@comment  node-name,  next,  previous,  up
@chapter Om SvenskMUD
@cindex Om SvenskMUD

@menu
* Drivern::                     
* SvenskMUDs historia::         
* Maskinen som SvenskMUD k�r p�::  
* Lysator::                     
@end menu

@node Drivern, SvenskMUDs historia, Om SvenskMUD, Om SvenskMUD
@comment  node-name,  next,  previous,  up
@section Drivern och var kommer den ifr�n
SvenskMUD �r ett LPmud. Det inneb�r att drivern �r av samma typ
som den driver som 
@cindex Lars Pensj�
@cindex Pensj�, Lars
@cindex Chalmers dataf�rening - CD
Lars Pensj� vid Chalmers dataf�rening CD f�rst skrev. Den
interpreterar ett C-liknande spr�k kallat LPC. SvenskMUD k�r f�r
n�rvarande en lite justerad version 3.1.2. av drivern.

@cindex Genesis
Den f�rsta LPmudden kom i april 1989 och det var Genesis som k�rdes p�
milou vid CD. Det var skrivet i LPC och spelets spr�k var engelska. I
maj 1989 s� hade �ven f�reningen Lysator ett mud, d� k�randes p�
brutalix. Det �r detta mud som sedermera blev det legendariska nannyMUD,
@cindex nannyMUD
som �r det f�r n�rvarande �ldsta muddet som bygger p� det ursprungliga
mudlibbet och har magiker kvar fr�n allra f�rsta b�rjan.

@node SvenskMUDs historia, Maskinen som SvenskMUD k�r p�, Drivern, Om SvenskMUD
@comment  node-name,  next,  previous,  up
@section SvenskMUDs historia
@cindex historia
SvenskMUD s�g dagens ljus den 29 juli 1991. Det har utvecklats genom
�vers�ttning av nannyMUDs mudlib. Precis i b�rjan fanns det till och
med vissa objekt och rum som var de urpsrungliga engelskspr�kiga
objekten vilket ledde till en hel del lustiga texter.

Det som gjordes var en direkt �vers�ttning vad g�ller viktiga rum och
funktioner, kyrkan, puben, spelarobjektet mm, men jag passade p� att
bygga om byn s� att den fick en lite annorlunda utformning, dvs rummen
sitter ihop p� ett lite annorlunda s�tt. Exempel p� detta �r att man
g�r ur kyrkan v�sterut, man kommer till Leo fr�n �ventyrarnas klubb
ist�llet f�r fr�n kyrkan.

N�r vi v�l hade gjort det mesta av arbetet med �vers�ttningen s� var vi
tvungna att l�gga till en del saker i mudlibbet f�r att det skulle passa
b�ttre med det svenska spr�ket. Bl.a. s� har @code{set_gender} fler alternativ.
@vindex @code{set_gender}
Ett annat exempel �r hantering av namn i best�md form. @code{query_namnet} och
@vindex @code{query_namnet}
att funktionen @code{set_name} tar tv� argument eller en array.
@vindex @code{set_name}

@menu
* Ny driver::                   
* Drivern unik::                
* Spelarna str�mmar till::   
@end menu

@node Ny driver, Drivern unik, SvenskMUDs historia, SvenskMUDs historia
@comment  node-name,  next,  previous,  up
@subsection Ny driver

I januari 1992 s� gjordes ett byte fr�n COMPAT @footnote{COMPAT eller
kompatibilitetsmod. N�r den nya drivern version 3 kom s� kunde man k�ra
den i s.k. COMPAT mode. Det inneb�r att man kunde anv�nda sina gamla
mudlib utan problem.} till NATIVE @footnote{NATIVE eller ordinarie mod.
De nya mudlibben kr�ver denna mod.  I NATIVE finns ett masterobjekt.}. Det
innebar att en hel del objekt m�ste skrivas om och det �r bl.a. nu som
master-objektet kommer till anv�ndning. (I kompatibilitetsmod finns
inget masterobjekt.)

@node Drivern unik, Spelarna str�mmar till, Ny driver, SvenskMUDs historia
@comment  node-name,  next,  previous,  up
@subsection Lite sm�patchar i drivern g�r SvenskMUDdrivern v�ldigt unik

Under sommaren 1992 s� lades det in st�d f�r iso-8859-1 tecken i
drivern. Det innebar att de som har ett kommunikationsprogram som
klarar iso-8859-1 tecken samt ett terminalprogram som klarar det kan f�
tecknen ������.  F�r de som k�r med �ldre utrustning konverteras all
utmatning till @}@{|][\ eller iso-646.

@node Spelarna str�mmar till,  , Drivern unik, SvenskMUDs historia
@comment  node-name,  next,  previous,  up
@subsection Spelarna str�mmar �ntligen till

Fram till och med sommaren 1992 hade SvenskMUD levt en ganska undanskymd
tillvaro och Harry var under stora tider helt ensam inne i spelet. Under
h�sten 1992 kom det en stor anstormning spelare fr�n Halmstad, Ume� med
flera st�llen och de blev ocks� snabbt magiker.

V�ren 1993 s�g en ny anstormning, nu med folk fr�n Stockholms
universitet och de drog �ven med flera av n�sta �rskurs som fyllt spelet
under h�sten. Dessutom tillkom det en hel del spelare fr�n Lule� under
h�sten.

@node Maskinen som SvenskMUD k�r p�, Lysator, SvenskMUDs historia, Om SvenskMUD
@comment  node-name,  next,  previous,  up
@section Maskinen som SvenskMUD k�r p�
@cindex @file{bodil}
@cindex @file{bodil.lysator.liu.se}
@cindex @file{maskinen som SvenskMUD k�r p�}
SvenskMUD k�r f�r tillf�llet p� @file{bodil.lysator.liu.se} hos
Dataf�reningen Lysator vid Tekniska H�gskolan i Link�ping - LiTH. 
@cindex LiTH

Bodil �r en Sun 4/280 med 32MB ram och SunOS 5.3 som �r donerad av Sun.
@cindex Svenska Sun Microsystems AB
@ignore
Varg �r en Sun 3/280 med 16MB ram, flyttalsaccelerator och SunOS
4.1.1_U1 som �r donerad av Sun.
@end ignore

@node Lysator,  , Maskinen som SvenskMUD k�r p�, Om SvenskMUD
@comment  node-name,  next,  previous,  up
@section F�reningen Lysator
@cindex f�reningen Lysator
@cindex Lysator
@cindex Datorf�reningen Lysator
Datorf�reningen Lysator vid Link�pings Tekniska H�gskola �r en
studentf�rening oavh�ngig Universitetets och Tekniska H�gskolans
officiella organisation och d�rj�mte varje annan yttre intressesf�r.

Lysator �r en medlemsorganisation i F�rbundet unga forskare.

Lysator har till uppgift att bibringa sina medlemmar m�l och
m�jlighet att f�rdjupa sig i datorteknik och datorvetenskap 
och att sprida kunskap om modern datorteknik.


@node Att t�nka p� n�r du kodar, Filtr�det, Om SvenskMUD, top
@chapter Att t�nka p� n�r du kodar

Resten av denna handbok �r t�nkt att f�rs�ka ge tips till nya och gamla
magiker vad det g�ller hur man skapar saker i spelet. Tipsen g�ller b�de
tekniska fr�gor och stilfr�gor.

@menu
* Budorden::                    
* Livet som magiker::           
* Planer att f�rkasta::         
@end menu

@node Budorden, Livet som magiker, Att t�nka p� n�r du kodar, Att t�nka p� n�r du kodar
@comment  node-name,  next,  previous,  up
@section De tio budorden
@cindex att t�nka p� som magiker
@cindex de tio budorden
@cindex tio guds bud
@cindex guds bud
@cindex buden
En hel del tips kan sammanfattas i dessa tio bud.
@unnumberedsec Du skall inga andra gudar hava j�mte emacs.
@iftex
{@it Vad �r det?}
@end iftex

@cindex editera filer
Det st�r dig n�stan helt fritt att v�lja vilka metoder du vill 
anv�nda f�r att editera filer om de bara p� n�got s�tt kan 
samarbeta med de grundl�ggande metoderna f�r att f� in 
filer i spelet (@code{ed} och @code{ftp}). 

Emacs med ange-ftp fungerar bra om bara n�gon l�gger in programmet
@code{ls} hos dig i ditt @file{bin}-bibliotek. Det finns allts� ingen som
helst anledning att tillbe avgudar som @code{ed}, @code{vi} och
@code{framemaker}.
@cindex @code{ed}
@cindex @code{ftp}
@cindex @code{emacs}
@cindex filer
@unnumberedsec Du skall anv�nda herren din guds namn.
@iftex
{@it Vad �r det?}
@end iftex

Gl�m inte att fylla alla dina rum med bilder, statyer och reliefer av
Gud.

@cindex atmosf�r
@cindex nyb�rjare
Dessutom kan du fylla dem med m�nniskor, djur och saker. Det ger atmosf�r
och g�r det m�jligt f�r nyb�rjare att samla ihop lite saker och om du
g�r monstren pratsamma s� kan de ge tips till nyb�rjaren som stannar och
lyssnar.

@cindex svartlista
Inte heller vad det g�ller namn skall du hysa n�gra som helst 
bet�nkligheter. Se bara till att svartlista de namn du anv�nder 
och inte anv�nda redan svartlistade namn eller spelares namn.
@unnumberedsec T�nk p� vilodagen s� du fixar buggar d�.
@iftex
{@it Vad �r det?}
@end iftex

S�ndagar brukar det inte vara s� mycket folk inne i spelet s� 
det �r en synnerligen l�mplig dag att leta buggar p�.
@unnumberedsec Hedra inte din fader och din moder, f�r att det m� g� dig v�l och du m� bli od�dlig i SvenskMUD.
@iftex
{@it Vad �r det?}
@end iftex

Din fader och moder vet inte hur m�nga timmar du sitter och 
kodar ett visst rum eller omr�de. Beh�ver de veta?
@unnumberedsec Du skall dr�pa.
@iftex
{@it Vad �r det?}
@end iftex

@cindex monster
@vindex @code{reset}
@cindex vikten p� lik
Prova att sl� ihj�l alla dina monster som du skapar och verifiera att
de kan d�, att de kommer tillbaka vid n�sta @code{reset} genom att
anropa @code{reset} i rummet och kolla s� att vikten p� liket �r rimlig.

@unnumberedsec Du skall beg� �ktenskapsbrott.
@cindex �ktenskapsbrott
@iftex
{@it Vad �r det?}
@end iftex

@cindex gifta sig
Det finns faktiskt ingen som har kodat en m�jlighet att gifta sig �n i
SvenskMUD trots prat om s�dant. Tills dess kan du ju f�rs�ka lyda detta
bud. Att vara otrogen mot sin trolovade r�knas inte som �ktenskapsbrott
i detta fall.
@unnumberedsec Du skall stj�la.
@iftex
{@it Vad �r det?}
@end iftex

Om du inte vet hur du skall g�ra vissa saker s� fundera ut var 
du sett n�got liknande och titta hur det �r gjort d�r. Det
b�sta s�ttet att l�ra sig �r att kolla hur andra g�r saker.

Om du l�nar till alla dina saker s� gl�m f�r den skull inte att l�ra dig
under tiden.
@unnumberedsec Du skall b�ra falskt vittnesb�rd mot din n�sta.
@iftex
{@it Vad �r det?}
@end iftex

Hela v�rlden �r ju egentligen en schim�r. Se till att h�lla skenet uppe
f�r spelarna s� l�nge s� m�jligt. Undvik att skicka ut text av teknisk
karakt�r till spelarna. G�r fullst�ndiga meningar som betyder n�got,
tillr�ckligt fullst�ndiga f�r att spelarna ska f�rst� vad det handlar
om.

Var speciellt f�rsiktig om du h�ller p� att eka eller ropa saker. T�nk
p� att spelarna lever i en annan v�rld och anpassa dina meddelanden till
det. Ropa t.ex. ''Nu skall jag ge mig iv�g p� en l�ng uppt�cksresa i �st
och nord.'' ist�llet f�r ''Nu g�r jag hem och l�gger mig.''.
@unnumberedsec Du skall hava beg�relse till din n�stas hus och hans rum.
@iftex
{@it Vad �r det?}
@end iftex

Spring omkring i de andras omr�den, kolla vad de bygger, skicka en
massa buggrapporter och g�r sedan b�ttre sj�lv. 
@unnumberedsec Du skall hava beg�relse till din n�stas hustru, vapen och rustningar, �ven hans oxar och �snor och allt som �r din n�stas.
@iftex
{@it Vad �r det?}
@end iftex

�ven n�r det g�ller de andra magikernas prylar skall du se till att
anv�nda dem. Om du vill ha ett likadant monster som en annan magiker
gjort �r det bara att klona ett s�dant och stoppa in det i ditt rum.
F�rbeh�llet givetvis att det kan vara bra om den andre magikern k�nner
till det s� att han inte, dig ovetande, �ndrar filnamn eller andra
egenskaper hos det monstret.

@node Livet som magiker, Planer att f�rkasta, Budorden, Att t�nka p� n�r du kodar
@section Livet som magiker

Livet som magiker skiljer sig i v�ldigt stor grad fr�n livet som
spelare. Som spelare kan man inte se de tekniska sv�righeter och
m�jligheter som magikerna har. Att g�ra bra och genomt�nkta saker �r
sv�rt och kr�ver mycket t�lamod och tid.

@cindex nyblivna magiker
Det h�nder att nyblivna magiker har v�ldigt stora planer och
f�rdigritade kartor med hundratals rum som de vill g�ra, men s� finner
de att de egentligen inte har tid att g�ra det och l�gger ner projektet.
Man kanske skall passa p� att p�peka att fler rum oftast inte �r b�ttre.
Det g�r att g�ra mycket p� bara ett f�tal rum och det �r betydligt
b�ttre att g�ra ett bra rum d�r det kan h�nda saker �n 100 tomma rum.

Ur spelets och spelarnas synvinkel spelar det kanske inte s� stor roll
om dina h�gtflygande planer inte blir implementerade f�r att det visade
sig att du inte har tid och det �r heller ingen som tar illa upp om du
�ngrar dig och g�r n�got annat ist�llet. F�r din egen skull kanske det
�r b�st att ta ett steg i taget och b�rjar med att g�ra roliga sm�saker
medan du l�r dig det man beh�ver kunna f�r att kunna g�ra bra saker.
F�rst n�r du k�nnt p� vad som �r m�jligt och hur l�ng tid saker tar �r
det dags att b�rja planera st�rre projekt.


@node Planer att f�rkasta,  , Livet som magiker, Att t�nka p� n�r du kodar
@section Planer att f�rkasta

Som skapare har man ett ansvar f�r att se till att v�rlden blir s� bra
som m�jligt. Det �r n�gonting man slipper som spelare. Det kan vara
ganska sv�rt f�r vissa begrepp blir helt st�llda p� huvudet.

Fr�n att pengar p� banken har betytt trygghet s� �r nu problemet hur
mycket man skall ta betalt f�r olika tj�nster som man implementerar.

Andra saker att t�nka p� �r att n�r man som spelare springer omkring s�
�r man inne i historien och d� g�ller det att f� s� bra prylar som
m�jligt. Det �r l�tt att t�nka att n�r jag blir magiker skall jag
minsann g�ra b�ttre �n det h�r. B�ttre i bem�rkelsen kraftigare. Det �r
�nnu l�ttare att faktiskt implementera en s�dan pryl men det riskerar
att sabotera balansen i spelet. Se @ref{Inflation}.



@node Filtr�det, Objekt, Att t�nka p� n�r du kodar, top
@chapter Filtr�det
@cindex filtr�det
Detta kapitel beskriver hur muddets filer �r organiserade i ett tr�d.
Normalt kan  man som magiker orientera sig runt i filtr�det med
kommandon som liknar de som finns i unixshellar. @code{cd}, @code{ls},
@code{mkdir}, @code{rmdir} finns till exempel.

@cindex @code{chroot(2)}
Filtr�det �r direkt uppbyggt p� UNIXens filtr�d. Drivern 
g�r inte @code{chroot(2)} men skrivning och l�sning av filer 
som inte ligger under detta tr�d �r trots det helt om�jlig 
inifr�n drivern eftersom alla filnamn kontrolleras.

@cindex symboliska l�nkar
Detta g�r att man kan ha symboliska l�nkar som pekar ut 
ur detta filtr�d.

@menu
* Kataloger p� toppniv�n::  
* Driverns loggfiler::          
@end menu

@node Kataloger p� toppniv�n, Driverns loggfiler, Filtr�det, Filtr�det
@comment  node-name,  next,  previous,  up
@section Kataloger p� toppniv�n
@cindex toppniv�n
@cindex @code{ls}
Toppniv�n kan man se genom att g�ra @code{ls /}. Vissa av dessa filer �r
kataloger och vissa �r filer. Om man g�r @code{ls -F /} ist�llet kommer
katalogerna att listas med ett @code{/} efter�t.

@menu
* /bin::                        
* /doc::                        
* /etc::                        
* /include::                    
* /log::                        
* /obj::                        
* /rum::                        
* /secure::                     
* /spelare::                    
* /std::                        
* /stdobj::                     
* /texter::                     
* /|vrigt::                     
@end menu

@node /bin, /doc, Kataloger p� toppniv�n, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{bin}
@cindex kommandon
@cindex bin�rfiler, en sorts
@pindex @file{commands.h}
@pindex @file{/include/commands.h}
@pindex @file{player.c}
@pindex @file{/obj/player.c}
Jag har b�rjat lite sm�tt med att gruppera kommandon under @file{/bin}. Det
h�r samman med @file{/include/commands.h} och det �rvs ocks� av spelarobjektet
@file{/obj/player.c}.

Iden med att placera varje kommandon i en fil kommer ursprungligen fr�n
TMI @footnote{The Mud Institute, ett mud i USA med m�let att producera
ett bra mudlib, �ven namnet p� mudlibbet till skillnad fr�n CD
mudlibbet.} d�r den �r helt genomf�rd.
@cindex TMI

Vinsterna med denna uppdelning av kommandon �r:

@itemize @bullet

@item
Det blir l�ttare att underh�lla eftersom varje kommando kan underh�llas f�r
sig. Man beh�ver inte uppdatera hela spelarobjektet f�r varje liten
�ndring.

@item
Hj�lpen finns n�ra det kommando det handlar om. I min implementation
hamnar det i samma fil och det g�r inte att l�gga hj�lptexten n�gon
annanstans.

@item
Spelarobjektet inneh�ller funktioner f�r att s�tta om sin path. Den
beror n�mligen av spelarens variabel @code{PATH}.

@item
I min implementation s� kan man pipea saker som i unix mellan vissa av
kommandona:
@example
head *.c ^ grep filen ^ more 
@end example
@end itemize

Problemet med det hela �r att det inte �r riktigt genomf�rt.  Det finns
bara ett begr�nsat antal kommandon som man kan kombinera p� detta s�tt.

Ett annat problem �r att det �r ganska sv�rt att skriva nya kommandon.
En utmaning kanske? L�s filerna @file{/bin/IDE} och @file{/bin/S]FUNKARDET}
f�r att se hur det �r t�nkt att det ska fungera.

@node /doc, /etc, /bin, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{doc}
@cindex dokumentation
All dokumentation f�r hur spelet fungerar samlas h�r. Det kan vara bra
att l�sa igenom allt under denna katalog innan man b�rjar jobba med sina
objekt. Viktigast �r nog @file{build}dirret.

@pindex @file{obsolet}
I flera av underkatalogerna finns det en katalog som heter @file{obsolet}.
D�r har jag flyttat ner de filer som ersatts av nyare, i samband med
�vers�ttning eller omskrivning.

@menu
* /doc/build::                  
* /doc/efun::                   
* /doc/lfun::                   
* /doc/exempel::                
* /doc/uppdrag::                
@end menu

@node /doc/build, /doc/efun, /doc, /doc
@subsubsection @file{build} - hj�lpfiler f�r standardprylar
@pindex @file{REGLER}
@pindex @file{/doc/build/REGLER}
I denna katalog finns bland annat filen @file{/doc/build/REGLER}. Den
inneh�ller lagar och f�rordningar som reglerar magikernas upptr�dande
och vad magikerna f�r g�ra och inte f�r g�ra.

@emph{Denna fil skall l�sas av alla magiker!}

Andra bra filer som du ska titta p� �r @file{vapen.lista}, @file{monster.lista},
@file{skydd.lista} och @file{drycker.lista}. De inneh�ller information om
de olika objekten och riktlinjer f�r hur objekten ska se ut.

@node /doc/efun, /doc/lfun, /doc/build, /doc
@comment  node-name,  next,  previous,  up
@subsubsection @file{efun} - funktioner som drivern erbjuder
@cindex efun
@cindex external functions
De funktioner som finns i drivern brukar kallas efunar (engelska:
external functions.). De �r de grundl�ggande funktionerna och allt man
egentligen har n�r det g�ller att bygga sina objekt.

@cindex magikerboken
@pindex @file{/obj/magikerbok.c}
@cindex @code{man}
De flesta efunar finns beskrivna i denna katalog. Har du magikerboken
kan du komma �t dem t.ex beskrivningen av @code{find_player} med
@samp{man find_player}. Jag har nyligen stoppat in en kopia Profezzorns
@file{lpc_for_morons} h�r. Detta f�r att den �r b�ttre.

De gamla filerna kan du hitta i @file{/efun.old}.

@node /doc/lfun, /doc/exempel, /doc/efun, /doc
@comment  node-name,  next,  previous,  up
@subsubsection @file{lfun} - funktioner i standardobjekt
Funktioner i vissa standardobjekt kallas f�r lfunar (ursprungliga
engelska betydelsen local functions).

De funktioner som beskrivs �r fr�mst de som finns i monster och prylar,
men �ven en del viktiga funktioner som anropas fr�n drivern:

@iftex
@nobreak
@end iftex
@itemize @bullet

@item
@vindex @code{catch_tell}
@findex @code{enable_commands}
@code{catch_tell} anropas i objekt som gjort @code{enable_commands} om
n�gon pratar till objektet, dvs objektet finns i ett rum d�r n�gon g�r
@code{say}, som n�gon g�r @code{tell_room} till eller liknande.
@findex @code{tell_room}
@findex @code{say}

@item
@vindex @code{init}
@code{init} anropas n�r ett objekt flyttas in i ett annat objekt. Dels
anropas @code{init} i objektet som vi flyttar in i och dels anropas
@code{init} i alla andra objekt som redan fanns i det objektet vi
flyttas in i.

@item
@vindex @code{exit}
@code{exit} ska du helst inte anv�nda.  @footnote{Detta �r en av de
mest v�lbevarade myterna i LPmudv�rlden. I drivrar av version 2 s�
anropas n�mligen @code{exit} i rummet n�r man ska flytta ut ett objekt
ur rummet. Om det blir ett fel i den funktionen fanns det ingen som
helst m�jlighet att f� ut spelaren ur rummet.  SvenskMUD k�r en driver
version 3 och d�r sker inte detta. Du kan allts� fritt anv�nda
funktionen @code{exit} som vilken annan funktion som helst.}

@item
@vindex @code{id}
@findex @code{present}
@code{id} anropas n�r man g�r @code{present}. Den ska returnera sant eller falskt
beroende p� om objektet k�nns vid en visst namn.
@end itemize

@node /doc/exempel, /doc/uppdrag, /doc/lfun, /doc
@comment  node-name,  next,  previous,  up
@subsubsection @file{exempel}
I denna katalog har jag samlat exempel p� kod. De flesta exempel r�r
hur man hanterar uppdrag, matobjekt och dessutom n�gra som handlar om
hur man uppdaterar objekt fr�n COMPATmod till NATIVE. H�r borde nog
egentligen lagts ner mer arbete men jag f�redrar att skriva denna bok.
Om du har n�got bra exempel p� n�gonting s� l�gger vi in det h�r f�r
andra att l�ra sig av.

@node /doc/uppdrag,  , /doc/exempel, /doc
@comment  node-name,  next,  previous,  up
@subsubsection @file{uppdrag} - uppdragsbeskrivningar
@cindex uppdrag
Alla uppdrag ligger beskrivna h�r, med l�sningar. Ett uppdrag �r godk�nt
om det finns med i detta dir och inte godk�nt om det inte finns med.

Detta dir ska vara l�sskyddat f�r alla andra �n SvenskMUDs magiker.

@node /etc, /include, /doc, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{etc}
H�r sparas bland annat breven som posten skickar ut och breven som
ligger och v�ntar p� att du ska l�sa dem.

@node /include, /log, /etc, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{include}filer
Det finns en default-path f�r att hitta include-filer som 
anv�nds om includefilen refereras med
@example
#include <filnamn>
@end example
Detta dir �r f�rst i denna default-path. Saker som ligger h�r �r 
bl.a @file{gender.h} som anv�nds f�r att hantera k�nen och 
@file{tune.h} som reglerar hur spelet �r justerat, dvs hur mycket ett 
erfarenhetspo�ng kostar i �ren.

@node /log, /obj, /include, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{log} - loggfiler
@cindex loggfiler
@pindex @file{/log}
@findex @code{log_file}
Det finns en speciell efun som anv�nds f�r att logga saker n�mligen
@code{log_file}.  Vilket objekt som helst f�r skriva med den men d�
hamnar det alltid i detta dir. H�r finns det ocks� vissa filer som
skrivs hit av spelet.

Se till att rensa dina filer h�r regelbundet.

De magikerspecifika filerna f�r magikern @file{linus} �r:
@table @file

@item linus
@cindex felmeddelanden fr�n laddningen
N�r du laddar objekt och f�r fel s� skrivs felmeddelandena i denna fil.
Det enklaste s�ttet att hantera den under programmeringsfasen �r att:
 
@enumerate
@item
radera filen
@item
ladda sitt objekt
@item
om det blir fel s� tittar man i filen
@end enumerate

@item linus.rep
@cindex @file{rep}filer
@cindex @kbd{bugg}
@cindex @kbd{ide}
@cindex @kbd{stavfel}
@cindex @kbd{ber�m}
N�r n�gon spelare eller magiker skriver @kbd{bugg}, @kbd{ide}, 
@kbd{stavfel} eller @kbd{ber�m} s� hamnar det i din denna fil om

@itemize @bullet

@item
Han st�r i n�got av dina rum n�r han g�r det.

@item
@findex @code{present}
Han anger n�got objekt som mudden associerar till dig.  (Detta �r en
ganska obskyr finess. Om man skriver @samp{bugg sv�rdet kan inte d�da} och
@code{present} i spelaren hittar sv�rdet och du har gjort sv�rdet s� hamnar
det hos dig. Om spelaren menar ett annat sv�rd �n det @code{present} hittar s�
hamnar det nog fel.)
@end itemize

@end table

@node /obj, /rum, /log, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{obj} - muddens grundobjekt
@pindex @file{obj}
@cindex grundobjekt
H�r �terfinns alla muddens standardobjekt i en salig blandning. Dels
vissa specialobjekt med speciella funktioner (@file{/obj/shut}, @file{/obj/leo}) och
dels objekt som man b�de kan �rva och klona (@file{/obj/monster}, @file{/obj/treasure},
@file{/obj/weapon} mfl.)

@node /rum, /secure, /obj, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{rum} - muddens ursprungsv�rld
@pindex @file{/rum}
@pindex @file{rum}
@cindex rum
@cindex v�rlden
H�r ligger alla rum som ing�r i den ordinarie v�rlden. Det finns en
uppdelning i underbibliotek f�r olika geografiska omr�den.
(@file{/rum/generisk}, @file{/rum/|ster@}ker}, @file{/rum/strandhamn}
mfl.)

@pindex @file{init_file}
@pindex @file{/rum/init_file}
Av n�gon outgrundlig anledning (tradition heter det nog) ligger �ven
filen @file{init_file} i detta dir. Det �r den filen som l�ses n�r man ska
avg�ra vilka slott som ska l�sas in n�r spelet startas om.
@cindex omstart

@node /secure, /spelare, /rum, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{secure}
Viktigare objekt ligger h�r.

Det viktigaste �r masterobjektet. Masterobjektet har dels hand om
s�kerheten och dels reglerar det vad som h�nder n�r spelet bootar om.
@cindex s�kerheten
@cindex omstart

Se @ref{Masterobjektet}.

@node /spelare, /std, /secure, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{spelare}
@pindex @file{spelare}
Under spelardirret sparas alla spelarnas data, dvs hur m�nga po�ng de
skrapat ihop, hur l�ng tid de varit inne mm. Dessa spelarfiler skrivs
med @code{save_object} p� spelarobjektet n�r man g�r @kbd{spara}, r�kar ut f�r
@samp{Jag sparar dig automatiskt.} och n�r man g�r @kbd{sluta}.
@ifinfo
@cindex @kbd{spara}
@cindex @kbd{sluta}
@findex @code{save_object}
@end ifinfo

Dessutom �r det h�r som magikerna f�r sin filkatalog som de sj�lv
best�mmer �ver. Denna skapas n�r man sl�pper sitt slott och d� skrivs
ocks� slottet dit.
@cindex slott

@pindex @file{castle.c}
@pindex @file{/rum/init_file}
En speciell fil �r @file{castle.c}. Denna laddas vid uppstart och
�r din enda m�jlighet att l�nka in ditt omr�de. Denna
autoladdningsm�jlighet regleras i filen @file{/rum/init_file} och kopplas p�
n�r du sl�pper ditt slott. Den kan givetvis ocks� plockas bort om du
inte sk�ter ditt omr�de eller inte vill ha det med i spelet l�ngre.

@node /std, /stdobj, /spelare, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{std}
@pindex @file{/std/object.c}
En del standardobjekt, grundstommar f�r andra objekt, finns h�r. Bl.a
@file{/std/object.c} som �r det standardobjekt som alla saker som
existerar i spelet ska �rva.

@file{/std/namn.c} �r en sak jag gjorde n�r jag flyttade alla funktioner som
hade med namn att g�ra fr�n @file{/obj/treasure}, @file{/obj/weapon} mfl. hit.


@node /stdobj, /texter, /std, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{stdobj} - enkla f�rdiga prylar
@cindex f�rdiga prylar
@cindex Radagast
Ibland kan det vara s� att man vill ha ett enkelt standardvapen eller en
annan standardpryl. Det �r t�nkt att man ska kunna klona dem h�rur.
Radagast har varit flitig och lagt in ett vapen av varje vapenklass samt
d�rrar.

@cindex magikerverktyg
I underkatalogen @file{magiker} finns magikerverktyg dvs. objekt som magiker
kan anv�nda som verktyg f�r sitt konstruerande.

@node /texter, /|vrigt, /stdobj, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{texter}
I @file{texter}-katalogen sparas vissa texter som anv�nds i mudden. Bl.a.
texterna man f�r upp n�r man loggar in,
@iftex
@samp{{@sl SvenskMUDs Dagblad}}
@end iftex
@ifinfo
@samp{SvenskMUDs Dagblad}
@end ifinfo
och
topplistan �ver spelarna.
@iftex
@cindex {@sl SvenskMUDs Dagblad}
@end iftex
@ifinfo
@cindex SvenskMUDs Dagblad
@end ifinfo
@cindex @samp{Svenska Mudbladet}

Det kan kanske vara intressant f�r magikerna att veta att alla gamla
nummer av 
@iftex
@samp{{@sl SvenskMUDs Dagblad}}
@end iftex
@ifinfo
@samp{SvenskMUDs Dagblad}
@end ifinfo
och @samp{Svenska Mudbladet} finns sparade h�r.
@comment Den som vill kan ju skriva ett bibliotek d�r man kan l�sa gamla nummer.

@node /|vrigt,  , /texter, Kataloger p� toppniv�n
@comment  node-name,  next,  previous,  up
@subsection @file{|vrigt} gammalt skr�p
@pindex @file{|vrigt}
@pindex @file{/|vrigt}
En gammal katalog som ligger kvar. Det g�r inte att ladda in och anv�nda
objekt som ligger i denna katalog f�r det till�ts inte enligt
masterobjektet. Om du har saker som borde ligga h�r s� har du fel. De
borde kanske ligga i @file{/stdobj}.

@node Driverns loggfiler,  , Kataloger p� toppniv�n, Filtr�det
@comment  node-name,  next,  previous,  up
@section Driverns loggfiler
@table @file

@item LP_SWAP.3.bodil
@pindex LP_SWAP.3.bodil
F�r att spara minne sl�nger drivern ut programmen f�r de objekt som inte
anv�nts nyligen p� denna fil. D�r h�mtas de n�r de beh�vs. Filen
f�rl�ngs hela tiden och rensas bara n�r drivern startar om.

@item OBJ_DUMP
@pindex @file{OBJ_DUMP}
@pindex @file{/OBJ_DUMP}
@cindex @code{dumpallobj}
Denna fil inneh�ller en lista av alla objekt i hela v�rlden. Den
uppdateras bara om man ger kommandot @code{dumpallobj} i muddet. Det kan
ibland vara anv�ndbart f�r att f� reda p� om saker finns, vilka saker
som finns och var saker finns.

@item lpmud.log
@pindex @file{lpmud.log}
@pindex @file{/lpmud.log}
@ifinfo
@findex @code{write}
@findex @code{this_player}
@end ifinfo
@cindex �terstart
Vi k�r ett �terstart-skript som fixar s� att stdout och stderr fr�n
drivern hamnar i slutet av filen @file{lpmud.log}. Det som drivern 
skriver p� stdout �r n�r den misslyckas att ladda in vissa 
objekt. Dessutom om man anropar @code{write} utan att 
@code{this_player} �r satt till n�gonting s� skrivs det ut p� 
stdout (med ett @code{]} f�re).

@item bodil.debug.log
@pindex @file{bodil.debug.log}
@pindex @file{/bodil.debug.log}
@cindex backtrace
Detta �r driverns egen loggfil. Dvs om det blir exekveringsfel i n�got
objekt s� skrivs det ut en stack backtrace h�r med funktionsnamn,
radnummer och objekt.

@end table


@node Objekt, Masterobjektet, Filtr�det, top
@chapter Hur fungerar objekt?
@cindex objekt
Objekt i mudden associeras alltid med ett filnamn. Om filnamnet �r
@file{/obj/hej.c} s� f�r objektet namnet @file{/obj/hej} och kloner till det objektet
f�r namnen @file{/obj/hej#123} d�r @file{123} �r ett nummer som tilldelas i sekvens
fr�n 0 d� v�rlden startar om.

@cindex f�rlaga
@cindex kloner
@cindex klonade objekt
Objektet med namnet @file{/obj/hej} kallas h�danefter f�r f�rlagan och
objekten med namnen @file{/obj/hej#123} kallas f�r kloner eller klonade objekt.

F�r varje typ av objekt kan det antingen bara finnas kloner eller ocks�
bara f�rlagan inne i spelet. Om man f�rs�ker klona ett objekt d�r redan
f�rlagan finns i spelet s� f�r man @samp{Cloning a bad object}. Om man f�rs�ker
anv�nda (�ndra variabler i) f�rlagan f�r ett objekt som �r klonat s� f�r
man @samp{Using a cloned object}.
@cindex bad object
@cindex cloned object

@menu
* F�rlagan::                 
* Kloner::                      
* Vad finns i objektet::        
* std/object.c::                
@end menu

@node F�rlagan, Kloner, Objekt, Objekt
@comment  node-name,  next,  previous,  up
@section F�rlagan
@cindex f�rlaga
Om man vill vara s�ker p� att det bara finns en enda kopia av en viss
pryl i muddet ska man g�ra det som en f�rlaga.

F�r rum finns normalt bara en f�rlaga. F�r att g�ra om rum s� g�r man
@iftex
@samp{uppdatera {@it filnamn}}
@end iftex
@ifinfo
@samp{uppdatera filnamn}
@end ifinfo
och sedan g�r man in i dem igen eller laddar in dem
med 
@cindex @code{ladda}
@iftex
@samp{ladda {@it filnamn}}
@end iftex
@ifinfo
@samp{ladda filnamn}
@end ifinfo
.

@cindex slott
@pindex @file{castle.c}
@cindex @code{ladda}
Ditt slott (@file{castle.c}) �r ocks� bara en f�rlaga. Det inneb�r att du
inte ska klona det utan det ska laddas.

@findex @code{create}
@code{create} anropas i f�rlagan n�r den laddas.

@node Kloner, Vad finns i objektet, F�rlagan, Objekt
@comment  node-name,  next,  previous,  up
@section Kloner
@cindex kloner
@cindex klonade objekt
@findex @code{clone_object}
F�r att skapa en klon av ett objekt anv�nder man helt enkelt
@code{clone_object} och man anger d� som argument namnet p� f�rlagan. Det man
f�r tillbaka �r en nyskapad klon.
@example
object hej;

hej = clone_object("/obj/hej");
@end example

@vindex @code{create}
Om f�rlagan inte �r laddad s� laddas den f�rst och @code{create} anropas i den,
d�refter klonas ett objekt och @code{create} anropas i klonen.
@node Vad finns i objektet, std/object.c, Kloner, Objekt
@comment  node-name,  next,  previous,  up
@section Vad finns i objektet?
F�rdigt i objekten finns m�jligheter att flytta objekt in i
och ut ur varandra, m�jligheter att ta reda p� vilket objekt 
jag finns i samt vilka objekt som finns i mej.

Dessutom finns det m�jlighet att avg�ra om ett objekt �r ''living''
eller inte. Att det �r ''living'' inneb�r att det har ett namn s� att
man kan hitta det med @code{find_living}, som g�r det snabbt att hitta monster
och spelare.
@findex @code{find_living}

Objekt kan ocks� ha en s.k. ''heart_beat''. Det inneb�r att funktionen
@code{heart_beat} anropas regelbundet i objektet.  Alla monster anv�nder sig av
detta f�r att sl�ss och r�kna upp sin egen �lder. Spelare anv�nder den
dessutom f�r att hela.
@vindex @code{heart_beat}
@cindex �lder
@cindex helande

Om man kan s� skall man f�rs�ka undvika att anv�nda sig av
@code{heart_beat} eftersom det anropas s� ofta. I de allra flesta fall
kan man klara sig lika bra med en @code{call_out} som har betydligt
l�ngre tidsintervall.
@findex @code{call_out}

@node std/object.c,  , Vad finns i objektet, Objekt
@comment  node-name,  next,  previous,  up
@section @file{std/object.c}
Om man bara vill g�ra ett enkelt program s� kan man kanske n�ja sig med
det men oftast vill man �ven ha m�jlighet att flytta in objektet s� att
det fungerar i spelet.
F�r att g�ra det m�ste objektet (i n�got led) �rva filen @file{/std/object.c}.

Alla standardprylar som man �rver ifr�n, @file{/rum/rum}, @file{/obj/weapon},
@file{/obj/treasure} mfl g�r redan detta s� om man anv�nder n�gon av dem �r det
inga problem.

I @file{/std/object} finns det inte s� mycket och egentligen borde det finnas
�nnu mindre d�r.

@findex @code{move_object}
Det som finns �r bl.a. en @code{move_object} som g�r att man kan flytta vilket
objekt som helst. Normalt, i NATIVE, �r att varje objekt bara kan flytta sig
sj�lv med @code{move_object}.

@cindex genushantering
@vindex @code{set_maskulinum}
@vindex @code{set_femininum}
@vindex @code{set_utrum}
@vindex @code{set_neutrum}
@vindex @code{query_gender}
@vindex @code{query_pronoun}
Jag har sl�ngt in genushanteringen h�r. Det inneb�r att alla objekt i
spelet har funktionerna @code{set_maskulinum}, @code{set_femininum}, @code{set_utrum},
@code{set_neutrum}, @code{query_gender}, @code{query_pronoun} mfl och dessutom en variabel
som h�ller reda p� detta.

Om du inte �rver @file{/std/object} i n�got led s� g�r det inte att flytta in
objektet i spelet. Det existerar men finns utanf�r. Detta kan vara
f�rvillande om man inte k�nner till det.

@node Masterobjektet, Standardgrejor, Objekt, top
@chapter Masterobjektet
@pindex masterobjektet
Masterobjektet har tv� uppgifter. Vid start av spelet s� �r det
masterobjektet som best�mmer vad som ska g�ras och dels n�r det
g�ller vissa speciella efunar, de som skriver och l�ser filer.
Masterobjektet �r det objekt som f�r fr�gor fr�n drivern om
huruvida en viss l�sning av en fil �r till�ten eller inte.

@menu
* Vid start::                   
* S�kerheten::               
@end menu

@node Vid start, S�kerheten, Masterobjektet, Masterobjektet
@comment  node-name,  next,  previous,  up
@section Vid start
@cindex uppstart
@cindex start
@cindex �terstart
N�r spelet startar s� sker f�ljande:
@itemize @bullet
@item
@vindex @code{create} i masterobjektet
Funktionen @code{create} anropas i masterobjektet.
@item
@vindex @code{flag} i masterobjektet
Funktionen @code{flag} anropa en g�ng f�r varje argument till flaggan -f som
drivern startas med.
@item
@vindex @code{epilog} i masterobjektet
Funktionen @code{epilog} anropas.

@pindex @file{/rum/init_file}
@pindex @file{init_file}
Det �r i denna funktion som filen @file{/rum/init_file} l�ses och
f�rladdar det som ska f�rladdas.
@item
Sedan b�rjar spelet lyssna efter uppkopplingar.
@end itemize

@node S�kerheten,  , Vid start, Masterobjektet
@comment  node-name,  next,  previous,  up
@section S�kerheten
@cindex s�kerheten
@iftex
@vindex @code{valid_{@it whatever}}
@end iftex
@ifinfo
@vindex @code{valid_whatever}
@end ifinfo
@vindex @code{valid_write}
Masterobjektets andra stora uppgift �r s�kerheten i spelet. Det 
finns ett antal 
@iftex
@code{valid_{@it whatever}}-funktioner
@end iftex
@ifinfo
@code{valid_whatever}-funktioner
@end ifinfo
som anropas 
n�r man g�r olika ''farligare'' saker. N�r man ska skriva p� 
en fil s� anropas @code{valid_write} f�r att kolla att du f�r lov att 
skriva p� den filen. Den anropas med filnamn, vilket s�tt man 
h�ller p� att skriva filen med och vem som g�r det. Sedan 
avg�r funktionen om det �r till�tet eller inte.

@vindex @code{valid_read}
Om du l�ser masterobjektets fil ser du att @code{valid_read} alltid
returnerar sant. Det �r ett medvetet val. Alla ska ha m�jlighet att
l�sa �verallt!


@node Standardgrejor, Uppdrag, Masterobjektet, top
@chapter Standardgrejor
@cindex standardgrejor
Det som man b�r t�nka p� oavsett vad det �r man bygger �r att man ska
f� det att passa in i stilen och reagera p� vissa standardkommandon. Ett
par handskar beh�ver inte vara utrustade med en CRAY-17 armbandsdator
med m�jlighet att skicka laserstr�lar och ett monster beh�ver inte
springa omkring �verallt och skapa 10000 kloner av sig sj�lv. Oftast �r
det mycket roligare om man h�ller sig till stilen och g�r v�lgenomt�nkta
saker med finesser som de som t�nker lite kommer p�. T.ex att man bara
kan fiska om man har ett metsp�, bara kan se vad som finns i kistan om
man har �ppnat den f�rst.

@menu
* Skatter::                     
* Pengar::                      
* Lappar::                      
* Vapen::                       
* Rustningar::                  
* Monster::                     
* Rum::                         
* Inflation::                   
@end menu

@node Skatter, Pengar, Standardgrejor, Standardgrejor
@comment  node-name,  next,  previous,  up
@section Skatter
@cindex skatter
@pindex @file{/obj/treasure.c}
@pindex @file{treasure.c}
Den enklaste typen av objekt att bygga �r nog skatter. Det �r bara att
klona @file{/obj/treasure} och s�tta v�rden och namn mm.

Enda sv�righeten �r att veta vilka v�rden olika saker ska ha. Det �r
ocks� en avv�gningsfr�ga n�r man ska avg�ra hur mycket man ska dela
ut.

Saker som bara ligger och skr�par ska vara billiga, typiskt under 20
�re. De �r inte on�diga bara f�r att de �r s� billiga utan de �r till
f�r att �ven nyb�rjare ska ha n�got att plocka upp och springa och
s�lja. Om det ligger en liten liten b�rnsten vid stranden eller en
vacker blomma p� �ngen som man kan s�lja i aff�ren s� kommer det ocks�
att bidraga till st�mningen.

Saker som stora monster b�r p� och som �r extra bel�ning f�r att man har
lyckats sl� ihj�l det kan ju vara lite v�rdefullare. Likas� saker som
ligger i sv�r�tkomliga rum.

@node Pengar, Lappar, Skatter, Standardgrejor
@comment  node-name,  next,  previous,  up
@section Pengar
@cindex pengar
Pengar �r lite speciella. N�r de finns i spelaren och i monster s� �r de
bara ett v�rde i en variabel. Om man d�r s� skapas ett objekt som �r
pengar och som �r v�rt ett visst belopp. Tar man det objektet f�rsvinner
det och pengarna l�ggs till de pengar man redan har.

Att pengarna alltid visas som daler och �ren �r tillagt efter�t. Det
finns en f�rdig funktion f�r konverteringen. I filen @file{/obj/libfun}
finns funktionen @code{print_money} som tar ett belopp i �ren som
argument och returnerar en str�ng.
@pindex @file{/obj/libfun}
@pindex @file{libfun.c}
@vindex @code{print_money}

@node Lappar, Vapen, Pengar, Standardgrejor
@comment  node-name,  next,  previous,  up
@section Lappar, anslag och skyltar
@pindex skyltar
@pindex anslag
@pindex lappar
Det finns i spelet ett antal skyltar, lappar och anslag. Vissa h�mtar
datan de visar fr�n yttre filer, se t.ex. topplistan som ligger i
puben och 
@iftex
@samp{{@sl SvenskMUDs Dagblad}}
@end iftex
@ifinfo
@samp{SvenskMUDs Dagblad}
@end ifinfo
.

Andra saker att t�nka p� �r att skyltar, tidningar mm ska man kunna
@code{l�s}a, likv�l som man kan @code{titta p�} dem. Dessa b�da s�tt att unders�ka dem
p� beh�ver inte resultera i samma text men b�da m�jligheterna ska finnas.

@node Vapen, Rustningar, Lappar, Standardgrejor
@comment  node-name,  next,  previous,  up
@section Vapen
@cindex vapen
@pindex @file{/doc/build/vapen.lista}
N�r man g�r vapen ska man titta i @file{/doc/build/vapen.lista}.
Den inneh�ller en lista av l�mpliga niv�er p� olika vapen f�r att man
l�tt ska se hur bra man ska g�ra det.  H�r �r det v�ldigt viktigt att
g�ra rimliga saker. En kniv �r oftast mycket s�mre att sl�ss med �n ett
spjut t.ex. Hur mycket de olika sakerna �r v�rda �r helt reglerat i
listan.

Speciella saker att t�nka p� �r att vapen med h�gre niv� �n 17 plockas
bort ur aff�ren om n�gon skulle s�lja dem och att vapen med en h�gre
niv� �n 20 ska ha allvarliga nackdelar. Hur allvarliga de beh�ver
vara bed�ms av den �rkemagiker som godk�nner det.

@node Rustningar, Monster, Vapen, Standardgrejor
@comment  node-name,  next,  previous,  up
@section Rustningar och kl�der
@cindex rustningar
@cindex skydd
@cindex kl�der
N�r man g�r rustningar och kl�der s� finns det vissa saker som man m�ste
t�nka p� f�r att alla rimlighetskrav ska uppfyllas.

@pindex @file{/doc/build/skydd.lista}
Dels finns det i @file{/doc/build/skydd.lista} en lista �ver vilka niv�er som
�r till�tna f�r olika rustningstyper och vilka kostnader de f�r ha.
Dessutom ska man se till att h�lla sig till de typer som finns,
bokstavsgrannt, s� att man inte kan ta p� sig f�r mycket skydd.

@pindex @file{/obj/armour}
Enklaste s�ttet �r att klona @file{/obj/armour} och s�tta namn, typ och klass.

@node Monster, Rum, Rustningar, Standardgrejor
@comment  node-name,  next,  previous,  up
@section Monster
@cindex monster
@vindex @code{create}
@pindex @file{/obj/monster.c}
@findex @code{set_living_name}
@findex @code{enable_commands}
N�r du bygger monster m�ste du se till att de blir ''living'', det blir
de om du anropar @code{create} i @file{/obj/monster} (eller p� n�got annat s�tt g�r
@code{set_living_name} och @code{enable_commands}.

�ven n�r det g�ller monster �r det viktigt att man anv�nder sin
kreativitet f�r att de ska bli trevliga. Monstren �r inte automatiskt
b�ttre f�r att de �r starkare och man beh�ver inte b�rja med
j�ttemonstret Allan. �ven sm� monster �r befogade f�r att ge atmosf�r
och ge tips f�r nyb�rjarna.
@cindex atmosf�r

@cindex k�n
@emph{Gl�m inte att s�tta k�n.}

@cindex lik
@cindex vikten p� lik
N�r ett monster d�r skapas ett lik. Man kan i monstret s�tta ett v�rde
p� hur mycket liket skall v�ga. G�r man inte det s� v�ger liket 5, som
ungef�r motsvarar en m�nniska. Mitt f�rslag �r att s�tta mindre (1-2) p�
katter och hundar och mer (8-15) p� kor, h�star och bj�rnar.

@menu
* heart_beat i monster::        
* Monster av olika raser::      
@end menu

@node heart_beat i monster, Monster av olika raser, Monster, Monster
@comment  node-name,  next,  previous,  up
@subsection Speciell hantering av @code{heart_beat} i monster
@cindex helande hos monster
@cindex @code{heart_beat} i monster
@vindex @code{heal_slowly}
@vindex @code{heart_beat}
Monster helas inte i @code{heart_beat} utan ist�llet i funktionen
@code{heal_slowly}. Detta beror p� att n�r du l�mnar ett monster s� st�ngs
@code{heart_beat} av f�r att sl�s p� igen n�r n�gon kommer. @code{heal_slowly}
anropas via @code{call_out} varannan minut �nda till monstret �r helt
l�kt. D� slutar den f�r att startas igen n�sta g�ng n�gon b�rjar sl� p�
monstret. Detta sparar kraft f�r drivern i och med att monstrets
@code{heart_beat} st�ngs av.

Om du g�r ett monster s� se till att f�rs�ka anv�nda denna eller
liknande mekanism f�r att sl� av @code{heart_beat} d� monstret st�r
ensamt i ett rum.

@cindex magisk styrka
@cindex besv�rjelser
En annan sak som b�r observeras �r att monster inte har n�gon magisk
styrka. Hur m�nga besv�rjelser de kastar beror helt och h�llet p� vilka
slumpfaktorer du har satt.

@node Monster av olika raser,  , heart_beat i monster, Monster
@comment  node-name,  next,  previous,  up
@subsection Monster av olika raser
@cindex raser
@vindex @code{set_race}
Monster har en parameter som man kan s�tta som avg�r vilken ras monstret
�r av. Den ska s�ttas till ett ord i obest�md form singularis
best�ende enbart av gemener. Exempel. hund, katt, troll, m�nniska.

Egentligen borde det finnas f�rdiga monster att klona fram och bara
s�tta niv�n hos. Det borde i s� fall ligga i @file{/stdobj/monster}. D�
borde det finnas en fil/objekttyp f�r varje ras.

Exempel p� vad man skulle kunna g�ra �r:
@table @asis

@item insekt
Speciella egenskaper: l�mnar inget lik, har v�ldigt h�g smidighet,
smiter l�tt in i ett annat rum. Man s�tter namnet (mygga, fluga, bi, geting, broms).

@item f�gel
Speciella egenskaper: l�mnar ett l�tt och litet lik som �r �tbart, har
h�g smidighet. Man s�tter namnet (koltrast, stare, bl�mes, kr�ka, skata,
berguv...), niv�.

@item gnagare
Speciella egenskaper: ganska snabba, bits. Man s�tter namnet (b�ver,
sork, ekorre, r�tta, mus...), om det �r ett vatten-, mark- eller
tr�ddjur.

@item generiskt d�ggdjur
Speciella egenskaper: l�mnar ett �tbart lik, ganska tungt, sl�r ganska h�rt.
Man s�tter sorten (ko, h�st, �lg, ren) och namnet (Rosa, Brunte, H�lge,
Rudolf), storlek/styrka.

@item troll
Speciella egenskaper: f�rstenas om de kommer ut i dagsljus, har svans, �r
aggressiva. Man s�tter styrkan, vilket vapen det ska ha, namnet, deras
texter.

@end table

@node Rum, Inflation, Monster, Standardgrejor
@comment  node-name,  next,  previous,  up
@section Rum
@cindex rum
@cindex beskrivningar
Speciella saker att t�nka p� n�r man g�r rum �r att g�ra beskrivningar
f�r olika saker. Har man en pub kan det vara kul om man kan titta p�
bardisken eller n�got och f� en liten text om den.

@pindex @file{/rum/rum}
@vindex @code{items}
I det vanliga @file{/rum/rum} s� kan man enkelt klara detta med @code{items}.

Andra saker att t�nka p� �r att g�ra vettiga beskrivningar och att inte
�verlasta rummen med prylar.

@vindex @code{clean_up}
Om man anv�nder sig av ordinarie rummen s� kommer de att rensas bort vid
@code{clean_up} om de �r tomma. Dvs efter ca 2 timmar om ingen har varit
i dem.  Vill man beh�lla dem, f�r att man lagrar variabler eller annat
d�r, s� f�r man definiera om @code{clean_up}.

@node Inflation,  , Rum, Standardgrejor
@comment  node-name,  next,  previous,  up
@section Inflation i spelet
@cindex inflation
Inflation uppkommer om magikerna utan begr�nsning skapar dyrare och
dyrare eller b�ttre och b�ttre saker.

Nackdelarna �r att nyb�rjare f�r det sv�rare (dvs �ven de enklaste
monster �r f�r sv�ra) och att man m�ste g�ra om kraven hela tiden,
kanske �ndra till niv� 30 f�r att bli magiker med 100 miljoner
erfarenhetspo�ng.

@emph{De mekanismer som finns f�r att motverka detta finns d�r f�r att
motverka detta och inte f�r att kring�s!}

@itemize @bullet

@item
Aff�rer betalar bara upp till tio daler f�r prylar, aldrig mer.
@cindex aff�rer

Se till att inte g�ra saker som �r dyrare �n tio daler, det retar bara
upp spelarna.

@item
Listorna f�r vapen, rustningar och monster ska f�ljas. Att g�ra dyrare
och b�ttre saker hela tiden �r ett symptom p� att man �r ny som magiker
eller att man har d�lig fantasi. Det �r ocks� den fr�msta anledningen
till att det blir inflation.
@end itemize

@node Uppdrag, Konventioner, Standardgrejor, top
@comment  node-name,  next,  previous,  up
@chapter Uppdrag
@cindex uppdrag
N�r man kommit en bit p� v�g med sitt byggande �r det kanske dags att
b�rja fundera p� att g�ra ett uppdrag.

@cindex uppdragens syfte
@cindex syftet med uppdragen
@cindex m�let med uppdrag
Uppdragen har tre syften:

@enumerate

@item
De ska stimulera spelarens uppt�ckargl�dje och uppmuntra till
tankeverksamhet.
@cindex uppt�ckargl�dje
@cindex tankeverksamhet

@item
De ska hindra att spelandet blir mekaniskt, dvs se till att man inte
kan spela enbart mha. makron.
@cindex mekaniskt spelande

@item
De ska tvinga spelarna att utforska v�ldigt stor del av v�rlden innan
de blir magiker s� att de vet vad som finns och g�r sig en bild av
v�rlden.
@end enumerate

@menu
* Ditt m�l med uppdraget::   
* Presentation av uppdraget::   
@end menu

@node Ditt m�l med uppdraget, Presentation av uppdraget, Uppdrag, Uppdrag
@comment  node-name,  next,  previous,  up
@section Ditt m�l med uppdraget
@cindex m�let med uppdrag

Det f�rsta du ska t�nka ut n�r du b�rjar planera ett uppdrag �r vad
ditt syfte �r med uppdraget.

Om ditt syfte �r att spelaren ska utforska hela din del av v�rlden s�
�r det f�rsta du ska g�ra att se till att din del av v�rlden g�r att
g� i och ''t�l'' att utforska. Dvs det finns n�got kul @footnote{med kul
menas h�r givetvis kul att unders�ka, intressant beskrivning,
intressanta fraser, intressanta effekter n�r monstret d�r, n�r man tar
p� prylen eller... Inte att monstret eller prylen �r starkast eller b�st
i hela v�rlden.} i varje rum, n�got monster, n�gon pryl, n�got ih�ligt
tr�d, ...

@node Presentation av uppdraget,  , Ditt m�l med uppdraget, Uppdrag
@comment  node-name,  next,  previous,  up
@section Presentation av uppdraget
@cindex presentation av uppdraget
@cindex historia kring uppdraget
Du m�ste dikta ihop en liten historia om ditt uppdrag. N�gon beh�ver
hj�lp med n�got �r det typiska scenariot.

@cindex magikeraspirant
Eftersom uppdraget ska l�sas flera g�nger, en g�ng f�r varje
magikeraspirant, s� �r det bra om du kan f� ihop historien s� att det p�
n�got s�tt �r f�rklarligt att det kan l�sas flera g�nger. Kanske ett
litet sk�despel en stund efter (medan spelaren st�r och begrundar
bel�ningen) som p� n�got s�tt �terst�ller saker s� att det kan l�sas p�
nytt.

@node Konventioner, Skillnader, Uppdrag, top
@comment  node-name,  next,  previous,  up
@appendix Ordf�rklaringar
@cindex konventioner
@cindex ordf�rklaringar

@table @asis

@item mud
@cindex mud
SvenskMUD �r ett mud. Mud �r en engelsk f�rkortning och st�r f�r Multi
User Dungeon, (FlerAnv�ndarGrotta i direkt�vers�ttning). Vissa anv�nder
�ven begreppet mud f�r att beteckna spel som jobbar med ett grafiskt
gr�nssnitt mot anv�ndaren.

@item klient
@cindex klient
Program som man anv�nder f�r att koppla upp sig mot drivern. Den mest
spridda �r nog telnet.
@cindex telnet

@item driver
@cindex driver
Det program som k�r sj�lva spelet. Det tar hand om uppkopplingar fr�n
spelare samt laddar och interpreterar ("k�r") filer.

@item LPC
@cindex LPC
Det programmeringsspr�k som man skriver objekten i i SvenskMUD och alla
andra LPmud. Det liknar C.

@item LPmud
@cindex LPmud
Muddar som arbetar enligt samma princip som Lars Pensj�s ursprungliga
mud, Genesis. Dvs man skriver objekten i LPC.
@cindex Genesis

@item mudlib
@cindex mudlib
F�rutom drivern best�r sj�lva spelet ocks� av en massa objekt. Dessa
utg�r mudlibbet.  Ibland n�r man pratar om mudlib av olika versioner s�
brukar man dock inte inkludera de enskilda magikernas filer.

@item magiker
@cindex magiker
@itemx d�dliga
@cindex d�dliga
N�r man b�rjar spela �r man en d�dlig spelare, men om man klarat alla
uppdrag och samlat ihop tillr�ckligt med erfarenhet blir man upph�jd
till magiker. Det inneb�r att man f�r lov att modifiera v�rlden genom
att skapa nya saker.

Man kan betrakta magikerskapet som m�let med spelet och det �r det enda
m�l som finns i ett LPmud, f�rutom att ha roligt.

I vissa delar av den h�r boken har jag kallat magikerna f�r f�rfattare
eller skapare. Det �r de som skapar spelet och utan dem vore spelet
d�tt.

@item �rkemagiker
@cindex �rkemagiker
En �rkemagiker �r f�rmer �n andra magiker. De �r de som �vervakar
magikernas arbete och best�mmer �ver v�rlden.

@item gud
@cindex gud
@cindex demokrati
Gud �r sj�lvutn�mnd. Det visar att jag �r f�rmer �n andra magiker och
�rkemagiker. Om du undrar varf�r det �r p� detta viset s� beror det p�
att det inte finns n�gon fungerande demokrati i SvenskMUD. Om det inte
finns n�gon fungerande demokrati �r de enda alternativen diktatur eller
kaos.

Det kan bara finnas en gud.

@item efun
@cindex efun
external function. Dvs. en funktion som finns i drivern. De �r
implementerade i C och d�rf�r effektivare. Dessa kan anv�ndas fr�n
alla objekt. 

@item lfun
@cindex lfun
local function. Dvs. en funktion som finns i n�gon fil och som anropas
antingen fr�n drivern, fr�n ett annat objekt eller fr�n samma objekt.

Dessa �r skrivna i LPC och exekveras d�rf�r mindre effektivt �n efunarna.

@item simul_efun
@cindex simul_efun
En funktion som fungerar precis som en efun men som inte �r en efun. De
finns definierade i filen @file{/obj/simul_efun.c} och det �r fixat s�
@pindex @file{/obj/simul_efun.c}
att de kan anv�ndas fr�n alla objekt utan att man beh�ver �rva n�got
speciellt.

Dessa �r ocks� skrivna i LPC.

@item f�rlaga
@cindex f�rlaga
F�r alla objekt i spelet finns en f�rlaga. F�r vissa objekt, t.ex rum,
anv�nds bara f�rlagan.

@item kloner
@cindex kloner
N�r man har en f�rlaga kan man skapa kloner till denna. De �r exakta
kopior s� n�r som p� att de har en egen upps�ttning variabelv�rden.


@end table

@node Skillnader, Problems�kning, Konventioner, top
@appendix Vad skiljer C och LPC
@setchapternewpage on
@cindex Vad skiljer C och LPC?
@cindex skillnader mellan C och LPC
@cindex LPC
@cindex C
@cindex Erik A. Kay
@cindex Kay, Erik A.
Tack till: @cite{Erik A. Kay} -- @cite{Wayfarer @@ TMI} som jag l�nat det mesta av
detta kapitel av.

@menu
* Vad har C som inte LPC har::  
* Vad har LPC som inte C har::  
@end menu

@node Vad har C som inte LPC har, Vad har LPC som inte C har, Skillnader, Skillnader
@comment  node-name,  next,  previous,  up
@section Vad har C som inte LPC har?
@enumerate

@item
Stark typkontroll.

I LPC finns ingen egentlig kontroll att man i en variabel av en viss typ
verkligen har ett v�rde av den typen.  Man kan d�remot deklarera
funktioner s� att de tar vissa typer som argument och vid
kompileringstillf�llet kolla att alla anrop �r korrekta.

@ignore
@item
Kontroll av anropade funktioner.

LPC ger inget felmeddelande om du f�rs�ker anropa en funktion som inte
finns. Det returnerar d� bara 0.  Det inneb�r att du kan anropa
funktioner/metoder i objekt utan att du beh�ver veta n�got om objektet
du anropar funktionerna i vid kompileringstillf�llet.
@end ignore

@item
Typerna @code{unsigned}, @code{float}, @code{double}, @code{long}, @code{char}, @code{void *} mfl.

Vissa av dessa ers�tts helt eller delvis av andra typer.

@item
Konstruktionerna @code{struct}, @code{union}, @code{enum}, @code{typedef}.

�ver huvud taget existerar inte alls mycket konstruktioner som ska
ber�knas vid kompileringstillf�llet.

@code{struct} och @code{union} kan man implementera med mappings eller arrayer
men hela hanteringen m�ste ske vid exekveringstillf�llet. @code{enum} och 
@code{typedef} tvingas man emulera med @code{#define}.

@item
C's standardbibliotekfunktioner

Det g�r inte att komma �t C's biblioteksfunktioner fr�n de olika
objekten. Vad man kan g�ra och inte kan g�ra �r begr�nsat av vilka
efunar som finns. Man tvingas l�gga till nya efunar om man vill ut�ka
detta, det inneb�r en omkompilering av drivern.

@item
Statiska lokala variabler

Man tvingas g�ra en objekt-global variabel.

@item
Globala variabler

Man tvingas g�ra ett speciellt objekt hos vilket man registrerar
variabelv�rden. Personligen tycker jag detta �r en snygg l�sning.

@item
Flyttal
@end enumerate

@node Vad har LPC som inte C har,  , Vad har C som inte LPC har, Skillnader
@comment  node-name,  next,  previous,  up
@section Vad har LPC som inte C har?
@cindex Vad har LPC som inte C har?
Dessa skillnader kan delas in i tre stora grupper:
@itemize @bullet
@item
Saker som sker vid k�rningen av ett objekt.
@item
Saker som har med objektorienteringen att g�ra
@item
Str�ngar och arrayer och speciella funktioner f�r dessa.
@end itemize

@menu
* Vid k�rning::                 
* Objektorienterade funktioner::  
* Str�ngar::                    
@end menu

@node Vid k�rning, Objektorienterade funktioner, Vad har LPC som inte C har, Vad har LPC som inte C har
@comment  node-name,  next,  previous,  up
@subsection Vid k�rning av kod
@cindex vid k�rning av kod
@findex @code{call_other}
Alla objekt �r av en och samma typ. Det inneb�r att funktionsanrop i
objekt m�ste vara v�ldigt generaliserad. Det finns egentligen bara ett
enda s�tt att anropa en funktion i ett annat objekt och det �r med
funktionen @code{call_other}.  Den tar som argument ett objekt eller m�jligtvis
filnamn, ett funktionsnamn och eventuella argument. Argumenten kan vara
av godtycklig typ och det finns inget som helst s�tt att vid
kompileringen av objekt, kolla om man har r�tt typer.

Vidare returnerar @code{call_other} n�gonting som har datatypen @code{mixed} s� ska
man anv�nda det vidare m�ste man tala om vad det �r f�r typ, med ett
c-liknande @code{cast}.

@node Objektorienterade funktioner, Str�ngar, Vid k�rning, Vad har LPC som inte C har
@comment  node-name,  next,  previous,  up
@subsection Objektorienterade funktioner
@cindex objektorienterade funktioner
@itemize @bullet

@item
Anropandet av funktioner i andra objekt.  Man kan anropa funktioner i
andra objekt med @code{call_other(}objekt, funktionsnamn, argument@code{)}
@footnote{Man kan �ven skriva: objekt@code{->}funktion@code{(}argument@code{)}}.

@item
@cindex �rvning
@cindex multipel �rvning
Multipel �rvning.

Det �r inga som helst konstigheter med att �rva flera olika filer. Man
kan ocks� sj�lv v�lja fr�n vilket �rvt objekt som en funktion ska
anropas.  Ex fr�n facklan:
@iftex
@nobreak
@end iftex
@example
inherit "/std/object"; 
inherit "/std/namn";

short()
@{
    if (is_lit) 
        return namn::short() + " (t�nd)";
    else
        return namn::short();
@}
@end example
Det inneb�r att @code{short} i @file{namn} anropas �ven om det skulle
finnas en @code{short} i @file{/std/object.c}.

@item
@cindex privata funktioner
@cindex privata variabler
Variabler och funktioner kan vara privata.

Om man vill att de �rvda objekten inte ska kunna modifiera en
variabel mer �n genom vissa funktioner kan man g�ra variabeln privat
(@code{private}). P� samma s�tt kan man begr�nsa funktioners r�ckvidd.
@findex @code{private}

@item
Funktioner kan g�ras unika.

En funktion kan deklareras s� att inget objekt till�ts definiera om
funktionen efter att ha �rvt det objektet. Det g�r man med uttrycket
@code{nomask}.
@findex @code{nomask}
@end itemize

@node Str�ngar,  , Objektorienterade funktioner, Vad har LPC som inte C har
@comment  node-name,  next,  previous,  up
@subsection Str�ngar, arrayer och mappings.
@cindex str�ngar
@cindex arrayer
@cindex mappings
@cindex sl� ihop str�ngar
Str�nghanteringen i LPC �r v�ldigt enkel. N�r man summerar str�ngar s� sl�s
de ihop till en l�ng str�ng. Blandar man in tal s� konverteras de till
str�ngar f�rst. F�r att g� fr�n en str�ng som inneh�ller ett tal till
ett tal anv�nder man @code{sscanf}.
@footnote {Ej att f�rv�xla med C-bibliotekens @code{sscanf}, den som finns h�r �r 
mycket enklare och �r en del i spr�ket. Man ska exempelvis inte skicka
med pekare till tal och str�ngar utan variablerna direkt.}
@findex @code{sscanf}

Arrayer kan man ocks� addera och d� f�r man en ny array som �r
sammanslagningen av de tv�. Man kan ocks� subtrahera arrayer fr�n
varandra, det inneb�r att man f�r en ny array som inneh�ller alla
element i den f�rsta arrayen utom de som finns i b�da.

P� b�de str�ngar och arrayer kan man ta ut delar av dem med hj�lp av
intervall-operationer. 
@findex intervall-operationer
Ex. @samp{"hej"[1..2]} blir @samp{"ej"}.

Mappings �r en helt ny typ. Man kan kalla det en slags array d�r indexen
kan vara vad som helst. Dessutom finns det funktioner f�r att ta fram
alla index eller alla v�rden.

@node Problems�kning, Magikerverktyg, Skillnader, top
@appendix Problems�kning
@cindex problems�kning
@cindex fels�kning
@cindex ofta st�llda fr�gor
Ofta st�llda fr�gor med svar eller n�gra ideer p� vad som kan vara fel.

@unnumberedsec N�r jag lade till min g�mda utg�ng i mitt rum slutade riktningarna definierade med dest_dir att fungera.
@vindex @code{init()}
@vindex @code{rum::init()}
@vindex @code{dest_dir}
@findex @code{add_action}
Du har definierat om @code{init()} (f�r att l�gga till dina saker). F�r att
@code{dest_dir}-riktningarna ska fungerar m�ste du anropa @code{rum::init()} i
@code{init()} s� att det g�rs @code{add_action()} p� @code{dest_dir}-riktningarna.
@unnumberedsec Efter att jag lade till min finess i @code{heart_beat()} slutar monstret att sl�.
@vindex @code{heart_beat()}
Se till att du anropar @code{::heart_beart()} fr�n @code{heart_beat()}.
Den sk�ter stridsmekanismen samt ser till att sl� av heart_beat n�r
ingen spelare finns i n�rheten (sparar mycket exekveringstid f�r drivern).

@unnumberedsec Den sl�r p� mig men om jag g�r ut ur rummet och v�ntar tv� sekunder s� sl�r den inte igen.
@vindex @code{init()}
Har du definierat om @code{init()} f�r monstret? Om du gl�mt att
anropa @code{::init()} s� kommer n�mligen inte heart_beat att s�ttas
ig�ng automatiskt n�r n�gon kommer in.

@unnumberedsec N�r jag lade till en extra finess att utf�ras i @code{heart_beat()} p� mitt monster s� st�ngs heart_beat av hela tiden.
@vindex @code{heart_beat()}
@pindex @file{/bodil.debug.log}
@pindex @file{bodil.debug.log}
@cindex exekveringsfel
Du har antagligen introducerat n�got exekveringsfel. Kolla slutet av
filen @file{/bodil.debug.log} och se om du kan hitta felet.

@unnumberedsec Jag har en pryl som ska komma fram varje reset men fr�n b�rjan finns de inte d�r.
@vindex @code{reset()}
Anropar du @code{reset()} fr�n @code{create()}?

Funkar det att klona dem vid sidan om?

�r de synliga? Om du s�tter en pryls namn mm i @code{reset()} ist�llet
f�r i @code{create()} s� blir de osynliga fram till f�rsta reset.

@unnumberedsec N�r jag klonar fram mitt objekt som ska generera ett annat objekt (paret) s� f�r jag ibland tv� andra objekt.
@cindex pare
@vindex @code{create}
@cindex f�rlaga
Du skapar paret fr�n @code{create()}. @code{create()} anropas f�rst i
f�rlagan och sedan i klonen. Kanske det ena paret �r pare till f�rlagan.

@unnumberedsec Jag har gjort en specialpryl men den ''finns inte'', dvs jag lyckas inte klona den trots att den laddar utan fel.
@pindex @file{/std/object.c}
Har du �rvt @file{/std/object} i n�got led?

@node Magikerverktyg, Register, Problems�kning, top
@comment  node-name,  next,  previous,  up
@appendix Magikerverktyg
@cindex magikerverktyg
Magikerverktyg kallar jag de saker som magiker b�r omkring p� och som de
anv�nder i sitt arbete. De �r oftast g�mda under n�got till synes
oskyldigt namn men kan ha riktigt kraftiga egenskaper.

Det finns magiker som blir besatta av magikerverktyg och som
koncentrerar hela sin verksamhet p� att g�ra b�ttre och b�ttre verktyg
hela tiden. L�t inte det smitta av sig, du beh�ver inte ocks� g�ra ett
magikerverktyg! Utnyttja de som redan finns!

@menu
* Magikerboken::                
* Ekstaven - Fizbans stav::     
* Shellen - brain::             
@end menu

@node Magikerboken, Ekstaven - Fizbans stav, Magikerverktyg, Magikerverktyg
@comment  node-name,  next,  previous,  up
@section Magikerboken
@cindex magikerboken
Det enklaste magikerverktyget och f�rhoppningsvis det f�rsta du st�ter
p� �r magikerboken @footnote{Ej att f�rv�xla med den h�r handboken.}.
Det �r som det l�ter en liten bok d�r det st�r lite
om olika saker som man kan ha nytta av. Dessutom definierar den
kommandot @code{man} som sl�r upp hj�lptexter. Den s�ker igenom vissa kataloger
efter filer som matchar ett visst namn n�r man anger det.

@pindex @file{/obj/magikerbok.c}
Du f�r magikerboken automatiskt n�r du blir niv� 20. Annars finns den i
@file{/obj/magikerbok}.

Magikerboken definierar f�ljande kommandon:

@table @bullet

@iftex
@item @code{l�s sida {@it nr}}
@end iftex
@ifinfo
@item @code{l�s sida NR}
@end ifinfo
Visar en sida ur magikerboken. Sida 1 inneh�ller en kapitellista med
sidnummer.

@iftex
@item @code{man} {@it funktion}
@end iftex
@ifinfo
@item @code{man} funktion
@end ifinfo
@cindex @code{man}
@iftex
Sl� upp hj�lpen om funktionen {@it funktion} ifall det finns n�gon.
@end iftex
@ifinfo
Sl� upp hj�lpen om funktionen funktion ifall det finns n�gon.
@end ifinfo

@item @code{MANPATH}
@cindex @code{MANPATH}
Visar vilken s�kv�g som �r inst�lld.

@iftex
@item @code{MANPATH+=}{@it bibliotek}
@end iftex
@ifinfo
@item @code{MANPATH+=}bibliotek
@end ifinfo
@cindex @code{MANPATH}
L�gg till ett bibliotek i s�kv�gen f�r @code{man}-kommandot.

@iftex
@item @code{MANPATH-=}{@it bibliotek}
@end iftex
@ifinfo
@item @code{MANPATH-=}bibliotek
@end ifinfo
@cindex @code{MANPATH}
Ta bort ett bibliotek ur s�kv�gen f�r @code{man}-kommandot.

@item @code{MANPATH=default}
@cindex @code{MANPATH}
S�tt tillbaka MANPATH till det f�rdefinierade v�rdet.

@end table

@node Ekstaven - Fizbans stav, Shellen - brain, Magikerboken, Magikerverktyg
@comment  node-name,  next,  previous,  up
@section Ekstaven - Fizbans stav
@cindex staven
@cindex ekstaven
@cindex fizbans stav
Fizbans stav eller ekstaven �r mer avancerad. Den ger m�jlighet att
anropa godtycklig funktion i godtyckligt objekt. De speciella
ekstavsfunktionerna b�rjar oftast med stor bokstav.

N�r man skall ange objekt till staven kan man antingen ange filnamn (f�r
kloner f�ljt av 
@iftex
@code{#{@it nummer}}),
@end iftex
@ifinfo
@code{#NUMMER}),
@end ifinfo
en spelares namn eller ett objekt
som finns i n�rheten.

@iftex
Dessutom kan man ange {@it objekt}@code{,{@it n}} vilket betyder det
{@it n}:te objektet i {@it objekt} eller ocks� {@it objekt}@code{,}{@it namn}.
D� s�ker den igenom {@it objekt} efter det objekt som bek�nner sig vid
namnet {@it namn}.
@end iftex
@ifinfo
Dessutom kan man ange objekt@code{,N} vilket betyder det N:te objektet i
objekt eller ocks� objekt@code{,}NAMN.  D� s�ker den igenom objekt efter
det objekt som bek�nner sig vid namnet NAMN.
@end ifinfo

N�gra av ekstavens kommandon �r:

@table @bullet

@item @code{Hj�lp}
@cindex @code{Hj�lp}
Stavens hj�lptext. Allt man beh�ver veta om staven skall st� d�r.

@item @code{�}
@cindex @code{�}
Kollar vad jag �ger p� stavens vis.

@iftex
@item @code{Kolla} {@it objekt}
@end iftex
@ifinfo
@item @code{Kolla} objekt
@end ifinfo
@cindex @code{Kolla}
Unders�ker n�gonting p� stavens vis.

@item @code{Titta}
@cindex @code{Titta}
Unders�ker rummet p� stavens vis.

@item @code{Beskriv}
@cindex @code{Beskriv}
Beskriver rummets egenskaper.

@iftex
@item @code{testa} {@it objekt}
@end iftex
@ifinfo
@item @code{testa} objekt
@end ifinfo
@cindex @code{testa}
Testar ett vapen, skydd eller monster. Denna funktion �r avst�md mot
listorna @file{/doc/build/*.lista} och ger varningar n�r prylarna inte
uppfyller kraven.

@iftex
@item @code{anropa} {@it objekt} {@it funktionsnamn} {@it argument}
Anropa funktionen {@it funktionsnamn} i objektet {@it objekt}.
@end iftex
@ifinfo
@item @code{anropa} objekt funktionsnamn argument
Anropa funktionen funktionsnamn i objektet objekt.
@end ifinfo

@end table

Exempelvis:
@example
> �
Objekt i OBJ(obj/player#2741) <-> Linus skaparen (gud)
 0: OBJ(stdobj/magiker/brain#2747) <-> linus' shell
 1: OBJ(obj/magobj#2750) <-> Osynligt objekt.
 2: OBJ(obj/magikerbok#2749) <-> en magikerbok
 3: OBJ(stdobj/magiker/fizbans_stav#2748) <-> En gammal ekstav
 4: OBJ(obj/soul#2742) <-> Osynligt objekt.
Det var allt.
> anropa mej,staven long
Du inser att staven har en magisk kraft.
Returv�rde : 0
> anropa mej,2 short
Returv�rde : en magikerbok
>
@end example

Staven hittar du i @file{/stdobj/magiker/fizbans_stav}.
@pindex @file{/stdobj/magiker/fizbans_stav}


@node Shellen - brain,  , Ekstaven - Fizbans stav, Magikerverktyg
@comment  node-name,  next,  previous,  up
@section Shellen - brain
@cindex shellen
@cindex Profezzorns shell
@cindex brain
Profezzorn (i nannymud) har gjort en sak som han kallar shellen. Den kan
anv�ndas av b�de magiker och spelare men den �r inte �versatt till
svenska s� jag har fixat s� att spelare blir av med den hela tiden.

Mha den kan man g�ra en del saker direkt som man annars skulle beh�vt
ett speciellt objekt f�r.

Objekt kan anges p� samma s�tt som med ekstaven.

De mest anv�ndbara av shellens kommandon �r:

@table @bullet

@item @code{shellhelp wizard}
Skriver ut en hj�lpsida. Man kan f� hj�lp p� de olika rubrikerna genom
att skriva
@iftex
@code{shellhelp {@it rubrik}}
@end iftex
@ifinfo
@code{shellhelp rubrik}
@end ifinfo
.

@item @code{id}
@cindex @code{id}
@cindex Status f�r ett objekt.
Man kan f� fram information om n�r n�sta reset intr�ffar, hur stort
programblocket �r, hur mycket minne variablerna tar mm.

@iftex
@item @code{gauge} {@it kommando}
@end iftex
@ifinfo
@item @code{gauge} kommando
@end ifinfo
@cindex @code{gauge}
Ger information om hur arbetskr�vande ett kommando �r.

@iftex
@item @code{eval} {@it uttryck}
@end iftex
@ifinfo
@item @code{eval} uttryck
@end ifinfo
@cindex @code{eval}
Evaluera ett godtyckligt lpc-uttryck.

@end table

Du kan klona shellen ur @file{/stdobj/magiker/brain}.
@pindex @file{/stdobj/magiker/brain}

@node Register,  , Magikerverktyg, top
@comment  node-name,  next,  previous,  up
@unnumbered Register

@printindex cp

@tex
   \startcontents{Inneh�ll}%
      \input \jobname.toc
   \endgroup
   \vfill \eject
@end tex
@ignore
@tex
   \startcontents{Kapitellista}%
      %
      \let\chapentry = \shortchapentry
      \let\unnumbchapentry = \shortunnumberedentry
      % We want a true roman here for the page numbers.
      \secfonts
      \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
      \rm
      \advance\baselineskip by 1pt % Open it up a little.
      \def\secentry #1#2#3#4{}
      \def\unnumbsecentry #1#2{}
      \def\subsecentry #1#2#3#4#5{}
      \def\unnumbsubsecentry #1#2{}
      \def\subsubsecentry #1#2#3#4#5#6{}
      \def\unnumbsubsubsecentry #1#2{}
      \input \jobname.toc
   \endgroup
   \vfill \eject
@end tex
@end ignore
@bye
% Local variables:
% texinfo-master-menu-header: "\n --- Den specificerade nodlistan ---\n"
% End: