Me alegro, show, que con las indicaciones del email pudieras ponerlo en marcha.
De conseguir una traducción del SMAUG creo que te puedes ir olvidando. Los MUDs en español basados en SMAUG han tenido que realizar sus propias traducciones (cambiando gran parte del contenido, de paso) y no creo que ofrezcan ese trabajo que es, en esencia, el alma de su MUD.
Si quieres meterte en la traducción tienes que tocar tres cosas por separado:
- Traducir todas las cadenas que aparecen en el código fuente: sí, porque en el Smaug muchos de los mensajes están dentro del código y no en un fichero aparte, con lo que dificulta mucho la traducción.
- Traducir las listas: de razas, hechizos, niveles, deidades y demás. Esto es lo primero que se empieza a modificar y no sólo a traducir, si quieres que te juego sea distinto al original.
- Las áreas: el Smaug trae muchas (son los ficheros .are). Muchos MUDs traducen algunas de ellas y otras las crean nuevas. También se pueden bajar de algunas webs nuevas áreas creadas por usuarios, pero están en inglés y también hay que traducirlas.
Si te vas a meter en eso no lo hagas a mano ya que los ficheros .are tienen una sintaxis un poco especial. Mejor bájate un programa específico como el ORB que te facilita mucho las cosas.
Sobre lo que decía Jenesis:
En SMAUG todas el código de la "aventura" está en esos ficheros de texto .are. Es muy fácil hacer cosas "típicas de MUDs", es decir, es muy fácil crear habitaciones, unirlas, poner PSIs (mobs), objetos, y que todos estos elementos realicen funciones "típicas". Sin tener que programar se puede hacer que el PNJ se mueva, abra puertas, responda a los ataques, lance hechizos, también que los objetos sean comestibles o armas, se puedan vestir o llevar en la mano y cosas así. Todo esto simplemente añadiendo flags al objeto, que viene a ser como los atributos del Inform. Hay muchísimos flags distintos para áreas, habitaciones, mobs y objetos.
El MUD ya contempla cosas como el peso, la resistencia de los objetos y demás temas "simulacionistas" (es decir, si alguien te lanza una bola de fuego se te pueden romper muchos de los objetos que llevas encima, y si son de madera se verán más afectados).
El tema de la programación es mucho más limitado. Se utiliza un lenguaje de scripts bastante simple. Básicamente se trata de programar en el elemento algunos "puntos de entrada".
Por ejemplo, en el caso de los "mobs" (PSIs) existe un "entry_prog" que se activa cada vez que un personaje entra en la habitación. Si programas ese "entry_prog" puedes hacer que el PSI dé la bienvenida al que entra.
También hay un "give_prog" para recibir objetos, un "death_prog" para cuando muere, un "rand_prog" que se ejecuta aleatoriamente y así hasta 11 puntos de entrada para los mobs.
Existen una serie de variables que se pueden consultar usando sentencias if. También se puede utilizar en un mob cualquier comando que usaría un personaje jugador. Un ejemplo de programa para un mob podría ser:
Código:
give_prog 100
if isnpc($n) // $n es el que nos ha dado el objeto
decir Me da muchísima rabia que un PSI me dé un objeto...
mpechoaround $n Ves como el mago ataca a $n sin contemplaciones.
// Esta orden mostraría un mensaje a los demás personajes que estuvieran en la habitación
conjurar "bola de fuego" $n
else
if name($o) == "llave" // $o es el objeto que nos han dado
decir Muchas gracias, justo lo que necesitaba.
abrir puerta con $o
mpechoat 5500 Alguien ha abierto la puerta.
// En la habitación 5500 (se supone que es la que está
// detrás de la puerta) se muestra ese mensaje.
decir Te daré un regalo.
mpoload 10500 // Con esto cargaríamos un objeto número 10500
dar espada $n // y se lo damos
else
decir No necesito $a
// El mob diría: "No necesito un cuerno", por ejemplo (el (un) de Inform)
endif
endif
Este trozo de código tiene más miga de la que parece. Por ejemplo cuando el mob le da la espada al jugador no hace falta mostrar mensajes porque la acción de dar espada ya muestra al propio jugador: "El mago te da una espada." y a los demás que están en la habitación: "El mago le da una espada a Lenko."
También hay comandos para realizar acciones en otras habitaciones o sobre otros personajes u objetos. Así que sí que se pueden hacer puzzles interesantes y que necesiten de la interacción de varios, pero hay que comerse mucho el coco con la programación.
El mayor problema es que no existe nada parecido a las acciones de Inform y si quieres que se dispare el programa de un objeto cuando se realiza algo que no sea una orden de SMAUG hay que programarlo a mano con un act_prog que tiene una pinta tal que:
Código:
act_prog p agitar sonajero
El problema es que esto salta también si alguien dice "agitar sonajero" y que habría que programar un act_prog para cada sinónimo.
Otro grave problema es que no hay variables y esto provoca que los programas no tengan ningún tipo de memoria de lo que ha ocurrido.
Para que se vea las dificultades que crean todo este tipo de limitaciones... Una vez estaba programando un área en la que un paladín gritaba "A mi la guardia" si le atacaban. La guardia estaba tres habitaciones hacia el sur. Creé un programa en los guardias que se activaba al oir ese grito y se dirigían hacia el norte, pero cuando pasaba un turno y estaban a dos habitaciones de distancia ya no se "acordaban" que tenían que ir.
Para solucionarlo, como no podía crear una variable "respondiendo_llamada" para comprobar que debían ir al norte, creé un prog que se ejecutaba cada turno y que examinaba si estaban en las habitaciones intermedias y si era cierto les obligaba a hacer un "ir norte". Como en principio los guardias no se debían mover de su sitio, salvo que les llamasen, la cosa funcionaba bien.
Pero cuando unos "testeadores" probaron el área se dieron cuenta que si atacaban a los guardias y éstos huían al norte (que es algo automático si les queda poca vida) el prog les enviaba a la puerta principal y allí se quedaban sin volver al combate. También se dieron cuenta que si gritaban "a mi la guardia" en cualquier lugar del área los guardias se iban también a la entrada. No tenían forma de saber de quién era el grito.
Muchos de estos problemas se pueden solucionar con imaginación, pero el esfuerzo para hacer algún puzzle decente es realmente enorme.
(Perdón por el tostón)