Novedades LumiMUD
Tema: LumiMUD 0 comentariosEstado de LumiMUD
Tema: LumiMUD 0 comentariosActualmente LumiMUD tiene implementados en su código:
Servidor de Telnet: acepta múltiples conexiones simultáneas, colores, y caracteres españoles como la ñ y las tildes (incluso los signos ¿ e ¡, casi nunca usados antes en MUDs, creo).
Módulo de gestión de conexiones: fusionado con el anterior módulo recepcionista, inicia el registro o la recepción de los clientes, atiende los comandos entrantes y expulsa a los jugadores inactivos.
Base de datos: al final después de probar varias, me he quedado con SQLite por razones prácticas. He usado una base de datos en vez de almacenamiento directo porque, aunque es mas lento, facilita tareas como la de exponer datos en la web y actualizar en tiempo real las entidades del MUD (rooms, jugadores, movs...todo lo que no es código, vamos)
Módulo adaptador para la base de datos: Gestiona el almacenamiento en la base de datos y hace de intermediario para las consultas SQL que sean necesarias desde el código (no era obligatorio, pero necesario para simplificar al máximo los futuros cambios).
Módulo reload: Permite recargar el código de manera automática y sin tener que desconectar a nadie (hasta la fecha sin problemas).
Módulo logger: en vez de imprimir por terminal las advertencias y errores, este módulo registra el nivel (debug, información, advertencia, error o error crítico) y el módulo donde se produce y lo imprime por pantalla. Además si es un error, añade a un archivo log con la fecha actual y los últimos mensajes para poder seguir el rastro a los posibles bugs que sucedan en el futuro.
Módulo comandos: con submódulos para cada categoría de comandos (generales, salidas, ayuda, de administrador...) y un analizador que recibe un string y extrapola el comando y los argumentos e intenta ejecutar el apropiado.
Novedades LumiMUD
Tema: LumiMUD 0 comentariosUn nuevo cambio, he añadido un módulo logger que se encarga de llevar cuenta de los avisos según niveles.
En vez de imprimir por terminal las advertencias y errores, este módulo registra el nivel (debug, informacion, advertencia,error o error crítico) y el módulo donde se produce y lo imprime por pantalla. además si es un error, añade a un archivo log con la fecha actual y los últimos mensajes para poder seguir el rastro a los posibles bugs que sucedan en el futuro.
Así puedes configurar que nivel de advertencias se muestran por pantalla al arrancar el MUD (los print siempre aparecían) con cambiar una simple variable. Poner el modo debug para tener toda la información rastreando un error, poner el modo info para tener solo notificaciones o errores, o incluso poner el modo en errores con lo que no se imprime nada por pantalla que no sea un error.
Mucho mejor que llenar el código con prints, y el volcado de un buffer en un archivo vendrá de perlas en el futuro.
Novedades LumiMUD
Tema: LumiMUD 0 comentarioso
Personaje('zaroos'). Establecer(todos_los_nuevos_valores_que_quieras)
Actualización
Tema: CallandorMUD, Lumi, LumiMUD 0 comentariosComencé este blog como alternativa mas accesible que el foro anterior. Nunca he sido blogger, y no he actualizado este tanto como debería.
Servidor listo
Tema: LumiMUD 3 comentariosLo normal al crear un MUD es coger alguno de base y hacerle las modificaciones pertinentes.
Script para zMUD de tiradas de Callandor 2.0
Tema: CallandorMUD, zMUDz 0 comentariosComo veo que hay quien tiene problemas con el script, pues saco una versión nueva:
(@Fue=18)AND(@Car>15)OR(@Total>95) serían las condiciones de una ficha buscada, para este ejemplo, Fuerza 18 y Carisma mayor de 15 o que todos los atributos sumen mas de 95.
Si quisierais por ejemplo, podríais poner solo (@Total>100) o (@Fue=18)AND(@Des=15), cualquier combinación de las variables @Fue, @Des, @Int, @Sab, @Con, @Car y @Total (que es la suma de las seis anteriores) con los operadores AND (y) y OR (o).
Además, STAT, crea una barra de estado con un resumen de las tiradas. Si no la veis se tiene que activar en Ver -> Preferencias -> General -> ver barra de estado.
Hay dos maneras de poner el generador, una es copiando el texto del final de esta entrada y pegándolo tal cual en el zMud (a veces da problemas si se ponen retornos de carro interrumpiendo las lineas), la otra es bajando este archivo e importándolo desde la ventana de Opciones -> menú de archivo -> importar texto...
IMPORTANTE: Una vez "instalado" el generador, hay que escribir Nombre=elnombrequequieresparaelpersonaje y después Password=lacontraseñaparaelpersonaje en el zMud para que el script sepa que poner en esas preguntas.
#VAR Nombre sinnombre
#VAR Password sinpassword
#TRIGGER {%sFuerza%s(%d)%sDestreza%s(%d)%sConstitución%s(%d)} {#Var Fue %1;#Var Des %2;#Var Con %3}
#TRIGGER {%sInteligencia%s(%d)%sSabiduría%s(%d)%sCarisma%s(%d)} {#Var Int %1;#Var Sab %2;#Var Car %3;#MATH Total (@Fue+@Des+@Int+@Sab+@Con+@Car);#If ( (@Fue=18)AND(@Car>15)OR(@Total>95)) {N;#Beep} {S};#show Sumaron: @total (El record esta en: @Record);#Co 7;#If @Total>@Record {Record=@Total};#Add intentos 1;#Add sumadetotales @Total;#Math Media (@sumadetotales/@intentos)}
#TRIGGER {Con que nombre vas a ser conocido?} {@Nombre;S} {nocr|prompt}
#TRIGGER {Escribe el password que quieres para %x} {@Password;@Password}
#TRIGGER {Has agotado tus tiradas. Tu personaje se queda con los últimos atributos.} {#Di;#Con;#ADD Reconexiones 1;#SH @Reconexiones}
#TRIGGER {Felicidades! Estas preparado para empezar a jugar en el mundo real} {save}
#ALIAS atconnect {#DELCLASS "Reconectar"}
#ALIAS atdisconnect {#ALARM +10 {#CONNECT} "Reconectar"}
#STAT {Record: @Record (Media: @Media) Fue:@Fue Des:@Des Con:@Con Int:@Int Sab:@Sab Car:@Car}
Historia de un Mapeador
Tema: LumiMUD, Noticias 0 comentariosPuede que algunos ya lo sepáis, pero mis comienzos MUDeros se deben a un amigo y compañero de carrera que me dejó en su día los tomos de la Rueda del Tiempo y, posteriormente, me sugirió probar CallandorMUD.
El juego me convenció, no tenía gráficos ni complicación. era el súmmun del rol y con una gente maravillosa.
Las aficiones tienden a compaginarse, a atraerse unas a otras, y al final acabé programando en el zMUD y mapeando Callandor. Un mapa que posteriormente cedí a todos los jugadores y que, quiero pensar, que ayudó a que muchos se quedaran en Callandor.
Debido a un error de cálculo, los inmortales (administradores) de Callandor tuvieron que borrar todas las fichas (cuentas) y volver a empezar en lo que se llamó la segunda era. Esto, unido a las exigencias de mi carrera y a la falta de tiempo, propició que dejara de jugar al único MUD al que he jugado.
Terminé la carrera y cuando las ocupaciones mermaron y reapareció algo de tiempo libre, rescaté la idea que había tenido cuando casi cierran Callandor años atrás. ¿Porqué no hacer un MUD?, no parece tan complicado...
La idea ya la tenía, y aunque las ideas son etéreas y cambian de forma caprichosa, me decidí a programar un poco en mis ratos libres con la idea de hacer un MUD y practicar algo de programación.
Y así empieza el proyecto del LumiMUD (que toma su nombre del script para el mapa del zMUD). Espero ir haciendo progresos en mi tiempo libre, que no es mucho debido al trabajo, y ya iré relatando en este Blog los avances para los pocos a los que pueda interesar.
Un Saludo, ZarooS.
Script para zMUD de tiradas de Callandor (simplificado)
Tema: CallandorMUD, zMUDz 0 comentariosSimplificado, sería algo así:
#TRIGGER {%sFuerza%s(%d)%sDestreza%s(%d)%sConstitución%s(%d)} {#Var Fue %1;#Var Des %2;#Var Con %3}
#TRIGGER {%sInteligencia%s(%d)%sSabiduría%s(%d)%sCarisma%s(%d)} {#Var Int %1;#Var Sab %2;#Var Car %3;#MATH Total (@Fue+@Des+@Int+@Sab+@Con+@Car);#If ( (@Fue=18)AND(@Car=18)OR(@Total>95)) {N;#Beep} {S};#show Sumaron: @total (El record esta en: @Record);#Co 7;#If @Total>@Record {Record=@Total};#Add intentos 1;#Add sumadetotales @Total;#Math Media (@sumadetotales/@intentos)}
#TRIGGER {Con que nombre vas a ser conocido?} {@Nombre} {nocr|prompt}
#TRIGGER {Escribe el password que quieres para %x} {@Password;@Password}
#TRIGGER {Has agotado tus tiradas. Tu personaje se queda con los últimos atributos.} {#Di;#Con}
#TRIGGER {lo has escrito bien? (S/N)} {S} {prompt}
#STAT {Record: @Record (Media: @Media) Fue:@Fue Des:@Des Con:@Con Int:@Int Sab:@Sab Car:@Car}
(@Fue=18)AND(@Car=18)OR(@Total>95) serían las condiciones de una ficha buscada, para este ejemplo, Fuerza y Carisma iguales a 18 (el máximo) o que todos los atributos sumen mas de 95.
Adicionalmente, STAT, crea una barra de estado con un resumen de las tiradas, aunque no creo que sea demasiado accesible para invidentes, es un ejemplo más y aprovecho. ^^
MiniGuia del zMUD
Tema: zMUDz 1 comentariosMucha gente no usa este programa porque le falta algo que tiene otro o simplemente lo ve complicado. Aunque no pretendo escribir un manual, espero que esta mini guia sirva para comenzar a conocer las casi ilimitadas capacidades de este cliente.
La guia tiene ejemplos tanto en linea de comandos como con los menús desplegables del programa.
Muchas de las opciones son mas sencillas de usar con los menús, así que si podéis os recomiendo que los uséis. Obviamente para la mayoría de los invidentes la linea de comandos es mucho mas sencilla.
Los temas que tratare en esta guia son:
MiniGuia zMUD Ejemplos
0 comentariosScript para zMUD de tiradas de Callandor (simplificado)
MiniGuia zMUD Variables
Tema: zMUDz 0 comentariosLas variables nos permiten almacenar valores. Palabras, números e incluso frases enteras que no se borraran aunque cerremos el zmud (si se cuelga o le pasa algo puede que perdamos algunos cambios).
Vamos a ver un ejemplo en este trigger (que almacenara nuestro saldo bancario del mud):
Norma: '%x, tu cuenta ahora contiene (%d) monedas,'
Valor: #VAR SaldoBanco %1
Este trigger almacenara en la variable @SaldoBanco el numero de monedas que tenemos en el banco, y cada vez que salte borrara el numero anterior y pondrá el nuevo.
Examinemos como funciona, como %x no esta entre paréntesis es un comodín que no cuenta para coger variables, en cambio %d esta entre paréntesis, y como es el primero de la norma con paréntesis su valor quedara almacenado temporalmente en %1 (hasta que el estado del trigger acabe) luego es almacenado en la variable SaldoBanco, y si no existía antes del trigger la crea y le da el valor %1.
Si por ejemplo la norma fuera: '(%x), tu cuenta ahora contiene (%d) monedas,' %1 seria la palabra que representa el comodín %x y %d pasaría a ser %2. (Podéis ver y comprobar que %numero corresponde a cada comodín entre paréntesis en la pestaña test del trigger.
Las variables pueden contener números, palabras, frases e incluso LISTAS de palabras o números. Así que usad los comodines correctos para limitar los valores de las variables. Si, por ejemplo, queréis que una variable solo contenga números, usad (%d) para capturar su valor (recordad que %d solo captura números).
Los valores de las variables simples se pueden cambiar de varias maneras:
Con el comando #VAR => #VAR variable valor (almacena valor en la variable y borra lo que tuviera antes)
Variable=Valor (un sistema mucho mas sencillo, y equivalente al #VAR)
Para las variables tipo lista tenemos:
#AddItem VariableTipoLista valor (añade valor a la lista)
#Delitem VariableTipoLista valor (quita valor de la lista)
Esto es muy práctico, porque nos permite almacenar con triggers o a mano (escribiendo nombredelavariable=loquequeremosquevalga en la línea de comandos) valores que les podemos pasar a otros triggers, a botones, mostrarlos por pantalla….
Por ejemplo: si tenemos el trigger:
Norma: ^Blandes * (%x).
Valor: ArmaManoBuena=%1
Cuando blandamos una lanza cantada, por ejemplo, en la variable @ArmaManoBuena quedara la palabra “cantada”.
Si luego tenemos el trigger:
Norma: {te resbala de las manos!| te DESARMA!}
Valor: coger @ArmaManoBuena;Vestir @ArmaManoBuena
Y nos desarman, el trigger enviara al MUD: coger cantada;vestir cantada.
Hay cientos de posibilidades, pero lo mas importante de las variables es que nos dejan almacenar datos que después podemos cambiar o usar con otros triggers que, de esta manera, pueden adaptarse a cambios controlados por otros triggers o por nosotros. Y que los datos perduran aunque se cierre el mud.
MiniGuia zMUD Comandos
Tema: zMUDz 0 comentariosHay cientos, sino miles de comandos del zMUD. Si alguien busca alguno para algo concreto le recomiendo la ayuda del zMUD (aunque esta en ingles). Yo voy a poner aquí los mas comunes (es decir, los que mas he usado yo). todos ellos los puedes usar como valor en triggers macros y alias, por ejemplo. Son comandos del zMUD, no afectan directamente al MUD a no ser que los uses de esa manera.
#Beep emite un bip (aunque tengas música y sonidos del MUD apagados)
#Loop x,y {accion} realiza la acción desde x hasta y (por ejemplo: #LOO 1,3 {Coger Todo %{i}.cadaver} mandaría al MUD Coger Todo 1.cadaver;Coger Todo 2.cadaver;Coger Todo 3.cadaver)
#numero accion envía acción al MUD numero de veces.
#If (condiciones) {comandos si se cumplen las condiciones} EL COMANDO mas importante de todos con diferencia, si se cumplen las condiciones se ejecuta lo que este entre corchetes, si no se cumple la condición se ignora. (el colmo cuando lo controlas un poco, los triggers no volverán a ser lo mismo.)
#Walk numeroderoom es equivalente a hacer doble-click en el mapa sobre la room con ese numero (cuidado con los trayectos largos o a través de zonas peligrosas)
#Show algo Muestra lo que sea sin enviarlo al MUD (útil para mostrar variables #show @variable o para escribir frases en pantalla que no quieres enviar al mud)
#GAG Borra la linea recibida del MUD (no aparece en tu pantalla)
#Add variable numero suma numero a la variable (vigila que sea una variable numérica)
#Math variable cuentas realiza las cuentas y guarda su valor en la variable
#Untrigger {norma} Elimina el trigger que saltaba con esa norma
#Unalias norma Elimina el alias que saltaba con esa norma
#UnKey tecla Elimina la macro de esa tecla
#Co numerocolor Colorea la linea del color numero (los hay que parpadean y todo. probad 12-rojo, 15-blanco, 1551...hay muchísimos)
#CW nombreopalabra numerocolor hace que ese nombre o palabra se coloree a partir de ese momento de ese color
#Win nombre abre una nueva ventana llamada nombre (recomiendo probar a moverla y usar multiples pestañas)
#Cap nombre copia la ultima linea a la ventana nombre (si no existía la crea), si queréis moverla añadid un #gag a continuación y listo
#C+ nombre y #C- #C+ inicia la captura de lo que venga a continuación en la ventana nombre. y #C- le dice cuando parar de copiar
#Clr nombre de ventana borra el contenido de la ventana con ese nombre
Y hay muchos mas...
MiniGuia zMUD Comodines
Tema: zMUDz 2 comentariosEn el apartado de triggers vimos como hacer que al aparecer una palabra o frase en el MUD el zMUD enviara una serie de comandos al MUD, pero hay ocasiones en las que nos interesa que el trigger reaccione a mas de una frase o a frases parecidas….o todo lo contrario, que haya excepciones a dichas frases. Aquí entra la magia de las variables (que también valdrán para los botones y las barras, pero vamos poco a poco).
Supongamos que queremos que un trigger salte en varias ocasiones, por poner un ejemplo: “una (el arma que uses) te resbala de las manos!” y “un (el enemigo que sea) te DESARMA!”, en ambos casos querrás coger el arma y blandirla, por ejemplo.
Puedes hacer 2 triggers, uno para cada frase y que los 2 hagan lo mismo, o puedes hacer un único trigger que tenga como norma: {te resbala de las manos!| te DESARMA!}.
Otro ejemplo. cuando abres algún objeto o puerta no pasa nada mas, pero cuando los desbloqueas siempre tienes que abrirlos también a continuación. si haces un trigger:
#ONINPUT {^Desbloquear (%x)} {Desbloquear %1;Abrir %1} "" {notrig}
cuando escribas desbloquear algo, enviaras al MUD desbloquear algo;abrir algo.
Esto y mucho más se hace con las wild cards, o comodines. Estas son, a grosso modo:
| * | sustituye cualquier número (incluso ninguno) de caracteres o espacios en blanco. |
| ? | un solo carácter (número o letra o signo) |
| %d | cualquier conjunto de números (0-9) |
| %n | un numero que empieza con el signo + o - |
| %w | cualquier numero de caracteres alfabéticos (una palabra, vamos) |
| %a | cualquier numero de caracteres (a-z,0-9) (yo uso mas %x, pero bueno) |
| %s | cualquier numero de espacios en blanco |
| %x | cualquier numero de caracteres que no sean espacios |
| %y | lo mismo que %x pero empieza por la derecha en vez de por la izquierda |
| %p | signos de puntuación |
| %q | lo mismo que %p pero empieza por la derecha en vez de por la izquierda |
| %t | comandos de dirección |
| %e | el carácter ESC en ansi |
| [range] | cualquier numero de caracteres en el rango (por ejemplo [1-5]=1 2 3 4 y 5 |
| ^ | comienzo de la linea |
| $ | final de la linea |
| (pattern) | salva el comodín como parámetro (van del %1 hasta el %99) |
| ~ | se pone antes de los caracteres como % para que no los pille como un comodín sino como una letra normal del MUD. ( ~%x no es %x) |
| {val1|val2|val3|...} | cualquiera de las frases entre | (pero no puedes tener otros comodines dentro de los corchetes) |
| @variable | frase o numero contenido en la variable mencionada |
| {^valor} | cualquier cosa que no coincida con lo que pongas de valor |
| &nn | que coincidan exactamente nn caracteres |
| &VarName | guarda esa sección como la variable VarName (sustituyendo el valor actual) |
No os asustéis. Yo solo he usado %w, %d, %x, %s, ^, $, {|}, * y %1 %2... con esas y un poco de maña, podéis hacer cientos de combinaciones (creedme). Es importante que aprendáis a usar por lo menos las 8 que os he puesto arriba en algún caso. (recordad que podéis probar si un trigger saltaría o no escribiendo frases en su cuarta pestaña, test)
ánimo…esto es lo mas difícil de dominar, y es útil a mas no poder.
MiniGuia zMUD Triggers
Tema: zMUDz 0 comentariosUn trigger o disparador es una utilidad que espera a que una frase aparezca en el zMUD (porque sale del MUD o porque la escribes tu) y cuando sale hace algo que le has indicado previamente (por ejemplo cuando te desarmen, que recoja y vista el arma automáticamente).
Vamos a hacer un trigger muy sencillo de ejemplo con el comando #beep (sonido bip).
Hacer un disparador desde la línea de comandos.
Basta con usar : #TRIG nombre {valor} o #TRIGGER nombre {valor}
Por ejemplo, #TRIGGER {Tunombre} {#BEEP} pitara cada vez que salga tu nombre en el zMUD, aunque no venga del MUD y lo escribas tu.
Hacer un disparador con los menús desplegables.
*Pulsa en cualquier imagen para ampliarla
Para ver los disparadores, pulsa en Disparadores:
Para hacer uno nuevo pulsa en Nuevo:

Ahora ponemos la frase que deseamos que sea el disparador en Norma y el efecto (o efectos) que queremos que se dispararen en Valor. Para nuestro ejemplo pondremos Norma: hola y Valor: #beep.
Esto provocara que cada vez que salga la palabra hola en la ventana del zmud se dispare el trigger y se oiga un bip. (aunque estén los sonidos apagados en el config).
Si pulsas en el icono de la pistola junto al reloj apagaras temporalmente TODOS los disparadores (no saltara NINGUNO). Para rehabilitarlos tan solo vuelve a pulsar en el icono.
Los triggers se pueden desactivar-activar también haciendo clic derecho sobre ellos en la ventana de triggers y dándoles a activado o a la luz de la ventana de edición de triggers.
Si un trigger esta desactivado no saltara y su descripción se vera mas clara.
MiniGuia zMUD Macros
Tema: zMUDz 0 comentariosUna Macro es una relación entre teclas y comandos. de tal manera que al pulsar un solo botón de nuestro teclado podemos mandar de 1 a infinidad de comandos al MUD (cuidado con el exceso de comandos u os echará del MUD)
Las macros básicas y las que usaremos de ejemplo son las de desplazarse.
Hacer una macro desde la línea de comandos.
Basta con usar : #KEY tecla {valor}
Por ejemplo, #KEY F1 {Mirar} hace que al pulsar F1 mandemos el comando mirar al MUD.
Hacer una macro con los menús desplegables.
Pulsad en el boton Opciones o Ctrl+G:
O directamente en Macros:
Luego en Nuevo:
Y luego clic con el ratón en Nueva Macro, pulsad en el campo trecla y luego la tecla que queráis como macro. En este caso la flecha derecha del teclado. Y poned Este en el campo Valor.De esta manera al pulsar la tecla derecha en el teclado enviaremos este al mud. Podéis hacer lo mismo con las demás teclas de dirección: arriba=norte izquierda=oeste…
Podéis poner también varios comandos en una macro, por ejemplo:
Haced pruebas y ya veréis que practicas son las macros. ^^









