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 ]--------------------------