Diseñador de Aventuras Profesional
VERSION 5.0
MANUAL DE REFERENCIA
Copyright (c) 1997 Definitive Software ***************************
Programado por Jaba **********************************************
DEFINICION DE COMANDOS
- Al definir un comando, debe introducirse con la sintaxis
VERBO NOMBRE. Después podremos introducir el programa paar dicho
comando.
Están predifinidas las órdenes:
- E, S, O, N y ESTE, SUR, OESTE, NORTE: para que el jugador se
mueva por el mapeado.
- GRABAR y CARGAR: graban y cargan situaciones.
- STATUS: informa al jugador de su situación.
- DECIR y HABLAR: para comunicarse con los PSIs. Por ejemplo,
DECIR HOLA.
- AYUDA: informa al jugador de comandos especiales del DAP.
MICROLENGUAJE EDAP
Notas previas:
- Se llama "orgón" a las ordenes del lenguaje EDAP.
- Por "retorna" se entiende finalizar la rutina.
- Hay un máximo de 15 orgones por procedimiento.
ADDVAL a b
**********
Suma B a la variable A. B puede ser negativo.
CAMAL a b
*********
Cambia la localidad 'a' a sus salidas alternativas, e imprime
el mensaje 'b'.
"abre puerta"
LOC 1,1
VAL 1,0,2
CAMVAL 1,1,3
PAUSE 1000
CAMAL 1 4
SCORE 100
CAMTXT 1 8
RET
Mensajes: 1- Aquí no hay puertas.
2- Ya está abierta.
3- Intento abrir la puerta...
4- ¡Lo he conseguido!
8- Estoy en una habitación. Hay una puerta abierta.
CAMNO a b
*********
Igual que CAMAL pero cambia a las salidas estándar.
"cierra puerta"
LOC 1,1
VAL 1,1,5
CAMVAL 1,0,6
PAUSE 1000
CAMAL 1 7
CAMTXT 1 9
RET
Mensajes: 5- No está abierta.
6- La cierro con gran esfuerzo...
7- ¡La he cerrado!
9- Estoy en una habitación. Hay una puerta cerrada.
CAMVAL a b c
************
Cambia el flag 'a' al valor 'b' e imprime el mensaje 'c'.
Ya se han dado ejemplo ilustrativos anteriormente.
CAMSIT a b
**********
Traslada al jugador a la localidad 'a' e imprime el mensaje
'b'. Ya se han dado ejemplos de uso (ver LOC).
CAMTXT a b
**********
Cambia la descripción de la localidad 'a' al mensaje 'b'. Si
es la localidad actual, se actualiza la pantalla.
CALLENGINE a b c
*****************
Llama a un servicio del motor gráfico.
a -> número de servicio
b -> contenido de BX
c -> contenido de CX
Es útil para implementar tus propias funciones en el
motor.
A sugerencia de David Miraut, maravilloso y excmo. director
del Real y Sagrado Year Zero Club.
CLEAR
*****
Borra los flags del 1 al 104 poniéndolos a 0. No afecta a
flags superiores.
CLS
***
Borra la pantalla.
COGER
*****
Recoge el objeto especificado en el nombre.
Ejemplo:
"coger *"
COGER
RET
COLOR a b c
***********
Se asigna al fondo el color 'c', al texto el 'a', y al parser
el 'c'.
COPYMSG a b
***********
Copia el mensaje A en el mensaje B.
COPYVAL a b
***********
Copia el flag 'a' en el flag 'b'
DEC a
*****
Decrementa el flag a.
DEJAR
*****
Deja el objeto especificado en el nombre.
DRAW a
******
Esta orden existía en versiones anteriores de DAP. Ahora se
ignora; es equivalente a NOP.
EXIT
****
Termina inmediatamente el DAP y regresa a DOS.
"fin *"
PRINT 1
INPUT 2
MSG 2 3 4
PRINT 5
PAUSE
EXIT
Mensajes: 1- ¿Estás seguro de que deseas salir?
2- (Aquí se almacena la entrada del jugador)
3- s
4- Entonces continuemos.
5- ¡Adiós!
FINCICLO a
**********
Termina el ciclo para el color a (el color no es restaurado
a su valor inicial, sino que queda como esté en ese momento)
PRINT 1
NUEVOCICLO 0 2 61
PAUSA 0
FINCICLO 0
RET
1 - "Mira que ciclo más hermoso"
FLUSH
*****
Vacía la pila.
FLUSH
RET
GETPAL a b
**********
Lee los valores rgb del color a de la paleta y los pone
en los flag b,b+1 y b+2
GETSTACKST a
************
Introduce en el flag 'a' el número de elementos que hay en la
pila.
GOTO a
******
Salta a la línea 'a' del procedimiento EDAP.
Puede usarse para implementar bucles sencillos.
PROCEDIMIENTO GLOBAL
1:VAL 1 1 2
2:VAL 2 10 2
3:PRINTVAL 1
4:PRINT 1
5:INC 1
6:VALMENOR 1 2
5:GOTO 3
Mensajes: 2-
3- elefantes se balanceaban sobre la tela de una
araña...
La ejecución del procedimiento producirá este resultado:
1 elefantes se balanceaban sobre la tela de una araña...
2 elefantes se balanceban sobre la tela de una araña...
(...)
9 elefantes e balanceaban sobre la tela de una araña...
INC a
*****
Incrementa el flag a.
(ver el ejemplo anterior)
INPUT a
*******
Lee una entrada de texto desde el teclado y la graba al
mensaje 'a'.
(ver el ejemplo de EXIT)
INVENTARIO
**********
El DAP hace un inventario al jugador.
INVENTARIO
RET
LOBJ a b c
**********
Mueve el objeto 'a' a la localidad 'b' e imprime el mensaje
'c'. Puede moverse a 999 para hacerlo desaparecer. Si se mueve a 998,
el jugador recogerá el objeto. Sin embargo, en vez de este método
rudimentario (incluido por motivos de compatibilidad), es aconsejable
usar el orgón COGER para realizar este mismo efecto.
"ex suelo"
LOC 1,1
VAL 1,0,2
CAMVAL 1,1,3
PAUSE 500
LOBJ 1 1 4
RET
Mensajes: 1- Es duro.
2- Es duro. No hay nada más.
3- Parece que hay algo...
4- ¡Encuentras un mapa!
Objetos: 1-un mapa (en 998)
LOC a b
********
Si el jugador no está en la localidad a, imprime el mensaje nº
b y retorna.
Ejemplo:
"usa ascensor"
LOC 1,1
CAMSIT 2,2
RET
Mensajes: 1- Aquí no hay un ascensor.
2- El ascensor te sube al siguiente piso.
LOCATE a b
**********
Sitúa el cursor de texto en la columna 'a' fila 'b'. Si se
intenta situar por encima del comienzo de la ventana de texto
se ignora el orgón. Esto quiere decir que las coordenadas son
absolutas.
LOCG a b
********
Si el jugador está en la localidad 'a' hace un goto a la línea
'b'.
LPSI a b
********
Mueve el PSI nº 'a' a la localidad 'b', y redescribe.
LVPSI a b
*********
Mueve el PSI nº 'a' a la localidad en el flag 'b' y redescribe.
(útil para hacer, por ejemplo, que un PSI siga al jugador,
llevándolo a la localidad que indica el flag de situación del
jugador)
MSG a b c
*********
Compara el mensaje 'a' con el 'b'. Si no son iguales, retorna
imprimiéndo el mensaje 'c'.
MSGAPPEND a b
*************
Añade el mensaje 'a' al 'b'.
"toca *"
COPYMSG 1 2
MSGAPPEND 2 301
PRINT 2
RET
Mensajes: 1- Tocas
2-
>toca eso
Tocas eso.
>toca la trompeta
Tocas la trompeta.
MSGTOVAL a b
************
Convierte el mensaje 'a' a un nº, y lo guarda en el flag 'b'.
Si el mensaje no contiene un número, podrían ocurrir efectos
imprevistos.
NUEVOCICLO a b c
****************
Comienza un nuevo ciclo de paleta para el color a (0-255).
El ciclo se realizará sobre rojo,verde o azul:
b=0 -> rojo
b=1 -> verde
b=2 -> azul
b=3 -> todos los valores r,g,b
Los otros valores rgb que no cuenten para el ciclo se conser-
van.
El ciclo se realizará desde el valor 0 al c.
Sólo puede haber un ciclo para cada color de la paleta.
NOP
***
No hace nada. Equivale al "NOP" de lenguaje máquina.
OBJ a b
*******
Si el jugador no posee el objeto número a, se imprimirá el
mensaje nº b y se retorna.
"mata pepe"
LOC 1,1
OBJ 1,2
PSI 1,1,3
LPSI 1,999
PRINT 4
RET
Mensajes: 1- Aquí no está Pepe.
2- No tengo el hacha.
3- Ya le he matado antes.
4- Mato a Pepe con el hacha.
Objetos: 1- un hacha
PSI: 1- a Pepe (en localidad 1)
OBFTOVAL a b
************
Copia el flag de estado del objeto 'a' al flag 'b', para poder
trabajar con él.
OBJG a b
********
Si el jugador tiene el objeto 'a', hace un goto a la línea
'b'.
PAUSE a
*******
Si 'a' vale 0, espera que se pulse un tecla, si es mayor que
cero, retarda el tiempo que indique A. En cualquier caso, mientras se
realiza la pausa se actualizan los ciclos existentes.
Ejemplo:
Glolo global
VAL 1 0 1
CAMVAL 1 1 2
PAUSE 0
CLS
REDESCRIBE
RET
Mensajes: 1-
2- Comienza la Aventura.
(este ejemplo muestra el mensaje 2 y espera la pulsación de
una tecla al empezar el juego)
El retardo es en 'ticks' del reloj interno del sistema.
PLAY a
******
Toca por el speaker el mensaje A. El mensaje contendrá la
música en nomenclatura anglosajona seguida de la duración.
Ej:"A9D9C2E5F7"
POPV a
*****
Saca un número de la pila y lo introduce en el flag 'a'. Si el
modo de ésta es limitado, y la pila está vacia, devuelve -1.
PRINT a
*******
Imprime el mensaje nº a.
"ex libro"
OBJ 1 1
PRINT 2
RET
Mensajes: 1- No tengo el libro.
2- Está en griego. Es antiguo.
Objetos: 1- un libro
PRINTVAL a
**********
Imprime el valor de la variable 'a'. No provoca retorno de
carro. Ejemplo:
"mira hora"
OBJ 1 1
PRINT 2
PRINTVAL 101
PRINTVAL 102
RET
Objetos: 1- un reloj
Mensajes: 1- No tengo reloj.
2- La hora es:
PSI a b c
**********
Si el PSI nº 'a' no está en la localidad 'b', imprime el
mensaje 'c' y retorna.
PUSH a
******
Introduce el valor 'a' en la pila.
PUSHV a
*******
Introduce el valor del flag 'a' en la pila.
PUTPAL a b
**********
Pone en el color a(0-255) los valores de rojo,verde y azul
contenidos en los flags b,b+1 y b+2.
REDESCRIBIR
***********
Reedescribe la localidad al jugador.
"mira *"
REDESCRIBIR
RET
RET
***
Retorna, dando por finalizada la rutina.
"dormir"
PRINT 1
ADDVAL 102,30
PAUSE 2000
NOP
RET
Mensajes: 1- El tiempo pasa lentamente...
SALIDAS
*******
El DAP muestra al jugador las salidas de la localidad.
Ejemplo:
"salida *"
SALIDAS
RET
SCORE a
*******
Añade 'a' puntos a la puntación del jugador (accesible por
STATUS). El parámetro 'a' puede ser negativo, así se quitan puntos.
SHELL a
*******
Invoca un mandato de DOS que está contenido en el mensaje 'a'.
Así pueden cargarse todo tipo de programas externos. Si el mensaje
está vacío, se saldrá a la línea de comandos. Así puedes simular un
PC ...
SINOM a
*******
'a' es un número de procedimiento de comando (ver el número de
cada palabra con la orden listar procedimientos) Salta a la palabra
A, convirtiéndose la palabra que se edita en un sinónimo de ésta. No
funcionará en procedimientos 'glolo'. Si se usa en glolos o en pro-
cedimientos de PSI, los efectos serán imprevisibles.
STACKMODE a
***********
Selecciona el modo de funcionamiento de la pila.
0 - limitado (por defecto)
1 - rotatorio
VADDVAL a b c
*************
Suma el valor del flag 'a' al valor del flag 'b' y almacena el
resultado en 'c'.
VAL a b c
*********
Si el flag 'a' no contiene el valor 'b', imprime el mensaje nº
'c' y retorna.
Ejemplo:
"llena botella"
LOC 3,1
OBJ 1,2
VAL 1,0,3
CAMVAL 1,1,4
RET
Mensajes: 1- Aquí no hay un río.
2- No tengo la botella.
3- Ya está llena.
4- Lleno la botella.
Objetos: 1- Una botella.
VALMAYOR a b
************
Si el flag 'a' no es mayor que el flag 'b', retorna.
VALMENOR a b
************
Si el flag 'a' no es menor que el flag 'b', retorna.
VALTOMSG a b
************
Convierte el flag 'b' a una cadena de texto que se almacenará
en el mensaje 'b'.
VALTOOBF a b
************
Copia el flag 'a' en el flag de estado del objeto 'b'.
VVAL a b c
**********
Compara el falg 'a' con el 'b'. Si no son iguales, imprime 'c'
y retorna.
PARAMETROS ESPECIALES EN NUMERO DE OBJETO
998 --> En poder del jugador (se puede usar con LOBJ para dar
un objeto)
999 --> No visible
SALIDA REPENTINA DEL ID
Si en alguna ocasión se produjese un error indeterminado
ejecutando el ID, se saldrá al sistema operativo con un mensaje de
alarma. La aventura se volcará a un fichero de emergencia ID.SOS
antes de volver al sistema operativo.
TABLA DE FLAGS
El DAP dispone de 111 variables o flags. Los flags del 1 al 98
pueden ser usados por el programador para cualquier propósito.
El resto de flags tienen funciones especiales que se explican
ahora:
(L) significa sólo lectura.
(B) significa valor booleano (0 no, 1 sí).
(C) significa constante.
(M) significa que DAP puede modificar este flag en el trans-
curso del juego sin que un orgón intervenga, de forma automática.
(a) donde a es cualquier nº, indica el valor inicial del flag
al comenzar la aventura, y (?) si es indeterminado.
99 -> muerte del jugador (B) (M) (0)
100 -> victoria del jugador (B) (M) (0)
101 -> hora (M) (0)
102 -> minuto (M) (0)
104 -> temporizador del reloj (1)
103 -> día (M) (0)
105 -> generador de números aleatorios (L) (M) (?)
106 -> rango del número aleatorio (5)
107 -> dinero del jugador (M) (predefinido)
108 -> localidad actual del jugador (L) (M) (1) *
109 -> Versión del DAP (primer número) (L)(C) (?)
110 -> Versión del DAP (segundo número) (L)(C) (?)
111 -> Versión del DAP (número de beta, si es 0, versión
final) (L)(C) (?)
112 -> Modo del Runtime: (L)
0=modo normal
1=modo debug
2=modo comercial
* -> el programador no puede modificar el valor para hacer que
el jugador cambie de localidad. Si desea mover al jugador utilice el
orgón CAMSIT. Este flag es meramente informativo.
Mensajes especiales:
39- Mensaje de Muerte
40- Mensaje de Victoria
301- Nombre del input (por ejemplo, en "coge eso" sería "eso")
(L) (M)
-------------------------[ FIN DEL MANUAL ]--------------------------