Saltar al contenido
Callandor

Formato del archivo de área

Qué hay dentro de los archivos que escribe asave. Sirve para leerlos, buscar cosas con grep o entender un error de carga.

Los archivos de área los escribe el propio mud con asave, y los lee al arrancar. Lo normal es construir con el OLC y no tocarlos a mano: cualquier cambio manual se pierde la próxima vez que se guarde el área. Esta página sirve para leerlos, para buscar datos con grep y para entender un error de carga.

Los archivos son de texto ISO-8859-1, con tildes y eñes en un byte, y líneas terminadas en LF. Si los abres con un editor que asuma UTF-8, verás caracteres rotos, y si guardas desde él estropearás el archivo.

Dónde está cada cosa

  • area/AREA.LST es la lista de archivos de área, uno por línea y acabada en $. Un área que no está en la lista no se carga.
  • area/<nombre>.are contiene la cabecera, los mobs, los objetos, las habitaciones, las funciones especiales y las tiendas.
  • resets/<nombre>.rst contiene los resets de esa área, con el mismo nombre que el .are.
  • mobprogs/*.prg son progs antiguos en archivos aparte (in_file_prog) que ya casi no se usan. Los progs normales van dentro del .are.

Estructura de un .are

Siempre en este orden:

  1. #AREA ... #FINAREA, la cabecera.
  2. Todos los #MOB ... #FINMOB.
  3. Todos los #OBJETO ... #FINOBJETO.
  4. Todas las #ROOM ... #FINROOM.
  5. #SPECIALS, las funciones especiales.
  6. #SHOPS, las tiendas.
  7. #$, el final del archivo.

Cada campo es una línea con su nombre y su valor. Los textos acaban en ~. Los flags se escriben por su nombre, separados por espacios y acabados en ~. Los números van tal cual. Muchos campos se omiten cuando valen cero.

La cabecera

#AREA
Nombre      Abila~
Aso   compañia~
Autor       Aldaer Lugburz~
Constructor Inmortales~
Habitantes  Soldados y amadicienses. (Rango: 46 a 50 para buenos)~
MDia        Suena el canto de un gallo en Abila.~
MNoche      La oscuridad engulle Abila.~
Mundo       real~
Publica     si~
Flags       ciudad~
Cielo       despejado~
Temperatura 0
Seguridad   1
Puntos   879
Sonido      Area Abila~
#FINAREA

Constructor es la lista de builders. Aso y Puntos no se cambian desde aedit. Los demás sí (la cabecera).

Mobs

#MOB
Vnum        26400
Nombre      capitan reina~
Corta       El capitán de Abila~
Larga       El capitán de los soldados de la Reina no se anda con miramientos.
~
Descripcion Después de aguantar por muchos meses...
~
Nivel       50
Sexo        masculino~
Alin        malo~
Act         npc en-area no-compulsion vida-extra~
Act2        mob-dia defensa-extra hit-extra~
Act3        dam-extra~
AfectPor    detecta-oculto heroismo~
AfectPor2   revitalizar~
PCobre      6
PPlata      3
#FINMOB

Los campos posibles son Vnum, Nombre, Corta, Larga, Descripcion, Nivel, Mquest, Raza, Clase, Sexo, Alin, Act, Act2, Act3, Act4, AfectPor, AfectPor2, AfectPor3, HabsMascota, Ensenya, Ensenya2, Grupo, y las monedas PCobre, PPlata, MPlata, CPlata, MOro y COro. Si el mob tiene progs, van al final, antes de #FINMOB.

Objetos

#OBJETO
Vnum        26402
Nombre      mesas madera~
Corta       unas mesas de madera~
Larga       Aquí puedes ver unas mesas de madera donde se exponen algunos productos.~
Tipo        mueble~
Tamanyo     grande~
Material    madera~
Peso        1
Nivel       46
#FINOBJETO

Los campos posibles son Vnum, Nombre, Corta, Larga, Tipo, Vestir, Extra, Extra2, Mueble, Tamanyo, Material, Peso, Nivel, las monedas del coste (PCobre a COro), Personas, Valor0 a Valor4, y según el tipo Pocion, Tomo, RecetaA, Arma y Ataque. Después vienen los afectos, las descripciones extra y los progs.

Un afecto es un bloque:

#AFECT
Tipo        fuerza~
Valor       2
#FINAFECT

con los campos Tipo, Valor, Duracion, Donde, Bits, Habilidad y Quien. Una descripción extra es otro bloque:

#EXTRADESCR
Nombre      cuadro~
Descripcion Es un paisaje de montañas...
~
#FINEXTRADESCR

Habitaciones

#ROOM
Vnum        26402
Nombre      {gLas calles de Abila{x~
Descripcion {cTe hayas recorriendo las calles dentro de la ciudad de Abila...{x
~
Sector      ciudad~
#SALIDA
Direccion   norte~
Destino     26413
#FINSALIDA
#SALIDA
Direccion   sur~
Flags       puerta cerrada antiderribar~
Destino     26401
#FINSALIDA
Sonido      ~
#FINROOM

Los campos de la habitación son Vnum, Nombre, Descripcion, MDia, MNoche, Duenyo, Sector, Flags, Flags2, Flags3, las salidas, las descripciones extra y Sonido.

Cada salida es un bloque #SALIDA con Direccion, y si procede Nombre, Descripcion, Flags, Llave y Destino. Los destinos son vnums, así que una salida puede apuntar a una habitación de otra área.

Progs

Un prog es un bloque dentro del mob o del objeto:

#PROG
Tipo        speech_prog~
Argumento   p avendesora~
Codigo      mpecho Lentamente, con un sordo estruendo, se abre una puerta de piedra.
abrir este
~
#FINPROG

Funciones especiales

#SPECIALS
M 26400 spec_lucha_experto
M 26405 spec_portero
O 12345 spec_corrupcion
S

Una línea por mob (M) u objeto (O) con su vnum y el nombre de la función. Acaba con S.

Tiendas

#SHOPS
26437 16 0 0 0 0 100 80 6 20
0

Cada línea es una tienda: el vnum del tendero, los cinco tipos de objeto que compra (0 es hueco libre), el porcentaje de compra, el de venta, y las horas de apertura y cierre. Se acaban con una línea que solo tiene 0. Los tipos de objeto van como número.

El archivo de resets

El archivo resets/<nombre>.rst tiene una sola sección:

#RESETS
M 0 25700 3 26401
E 0 26426 0 19
E 0 26423 0 4
O 0 26402 1 26401
P 0 26410 1 26405
#FINRESETS

Cada línea es un reset, y el significado de cada letra y cada número está en resets. El mud lee el archivo en el orden en que está, y el orden importa: los E y G pertenecen al último M, y un P al último O.

Errores de carga habituales

  • El mud no arranca y dice «Clave erronea». Hay una letra de reset que no es M, O, P, G, E, D ni R.
  • Un D con una salida que no tiene puerta. El mud se detiene al leerlo.
  • Un reset de un mob o un objeto que no existe. Se anota en el registro de errores y se salta. asave vuelve a anotarlo.
  • Un área nueva que no aparece. Falta en AREA.LST, que se regenera con asave list o asave world.