Information sur la syntaxe des fichiers scripts V0.2
----------------------------------------------------

####################################################
##                                                ##
## ATTENTION ! Des modifications ont t apports ##
## dans cette version par rapport  la prcdente ##
##                                                ##
## Il est donc conseill de bien lire ou relire   ##
## la description complte de la syntaxe.         ##
##                                                ##
####################################################

Le fichier script dcrivant le scnario se dcompose en plusieurs parties :

1) Dclaration des Libells
---------------------------
Cette partie dcrit tous les libells utiliss dans le jeux : libells
des objets, libells des vues, et ventuellement libells des rponses
de l'ordinateur.
Chaque libell se dclare ainsi :

#LIBELLE Nom,libelle

"Nom" est un nom symbolique dfinissant le libell (30 caractres maxi)
"Libelle" est le texte du libell

exemples :

#LIBELLE    OBJ1,PIERRE
#LIBELLE    OBJ2,CLE EN ARGENT
#LIBELLE    OBJ3,PORTE
#LIBELLE    OBJ4,ARBRE
#LIBELLE    OBJ5,MUR
#LIBELLE    OBJ6,CAILLOU
#LIBELLE    OBJ7,CLE EN OR
#LIBELLE    PIECE_SOMBRE,Une pice sombre
#LIBELLE    COULOIR_SOMBRE,Un couloir sombre

Remarque : les libells d'objets doivent tre en majuscules et ne pas
comporter d'articles.


2) Dclaration des objets
-------------------------
Cette partie dcrit tous les objets que l'on peut rencontrer durant le jeu.
Un objet peut tre prsent dans une salle, peut tre pris ou tre fixe (ne
peux tre pris), peut apparatre sous certaines conditions.
Chaque objet se dclare ainsi :

#OBJET  num,genre,libelle

"num" reprsente le numro de l'objet, par ordre croissant !!! (num doit tre > 0
et infrieur  256)
"genre" indique s'il s'ajit d'un objet Masculin ou Fminin (valeurs M ou F )
"libelle" contient le nom symbolique du libell de l'objet

exemples :

#OBJET  1,F,OBJ1
#OBJET  2,F,OBJ2
#OBJET  3,F,OBJ3
#OBJET  4,M,OBJ4
#OBJET  5,M,OBJ5
#OBJET  6,M,OBJ6
#OBJET  7,F,OBJ7


3) Dfinition des vues
----------------------
Une vue reprsente une salle du jeu, avec une image et une description.
Il faut diffrencier les vues et les salles : les salles reprsentent les
positions physiques o le joueur peut se dplacer, les vues reprsentent
une description d'une salle. Une salle peut tre reprsente par plusieurs
vues diffrentes, chaque vue reprsentant la salle  un moment donn.
Chaque vue se dfinit ainsi :

#VUE num,face,libelle

"num" reprsente le numro de la vue, par ordre croissant !!! 
(num doit tre > 0 et <  256)
"face" contient une "bitmap" indiquant sur quelle face on peut
trouver l'image correspondant  la vue (gestion CPC)
la face 1 correspond au jeu, les images dbutent sur la face 2.
8 faces peuvent tre utilises, de 2  9, reprsente chacune par
un bit de la variable "face".
(sachant que la face 1 est rserve au dmarrage du jeu)

ex : pour un vue sur la face 2    -> face = 1  (00000001)
      vue sur face 2 et 3         -> face = 3  (00000011)
      vue sur face 2 et 4         -> face = 5  (00000101)
      vue sur face 3 et 4         -> face = 6  (00000110)
      vue sur face 3 et 4         -> face = 6  (00000110)
      vue sur face 2,3, et 4      -> face = 7  (00000111)
      vue sur face 5              -> face = 8  (00001000)
      vue sur face 6              -> face = 16 (00010000)
      vue sur face 2,3,4,5 et 6   -> face = 31 (00011111)
!!! Face doit toujours tre >  0 !!!

libelle contient le nom symbolique du libell qui sera affich  l'cran.

exemples :

#VUE 1,1,PIECE_SOMBRE
#VUE 2,1,COULOIR_SOMBRE
#VUE 3,1,COULOIR_SOMBRE
#VUE 4,1,COULOIR_SOMBRE
#VUE 5,1,COULOIR_SOMBRE
#VUE 6,1,COULOIR_SOMBRE
#VUE 7,1,COULOIR_SOMBRE
#VUE 8,1,COULOIR_SOMBRE
#VUE 9,1,PIECE_SOMBRE
#VUE 10,1,COULOIR_SOMBRE
#VUE 11,1,PIECE_SOMBRE

Remarques : 
Chaque vue correspond  une image  charger.
Il reste  dfinir :
- La mthode de lecture des vues sur le CPC (track-loading ou Amsdos),
- La taille des images  afficher (160x100, Mode 1 ???)


4) Dfinition des salles
------------------------
C'est la partie la plus importante, dans le sens o elle dfinit le plan
du jeu, les objets, les actions possibles dans chaque salles.   

Syntaxe :

#SALLE  num (x,y,n)

Dclaration de la salle n0 "num", les commandes suivantes indiquent la
description de la salle. "num" peut tre compris entre 1 et 220.
Les valeurs entre parenthses (x,y,n) reprsentent la position de la
salle sur la grille d'dition. X et Y tant les coordonnes, n tant le
niveau. Ces informations sont optionnelles pour le gnrateur, mais
utilises par l'importateur de fichiers .AVG.

#Direction  num

Indique vers quelle salle on se dirige en prenant la #Direction
"num" peut tre une salle pas encore dcrite.
#Direction peut tre : 

#NORD
#SUD
#EST
#OUEST
#HAUT
#BAS

Remarque : si aucune direction n'est dfinie, la salle sera considre comme
une salle "perdu": lorsque le joueur atteindra cette salle, le programme
lui demandera s'il veut rejouer (recommencer du dbut) oui ou non.


#OBJET_FIXE         numobj[,mode]

indique que l'objet "numobj" est prsent dans la salle, mais ne peut pas
tre dplac (jusqu' X objets fixes par salle)
mode reprsente l'tat de l'objet si prsent
Les modes connus sont les suivants :
OBJ_OUVERT
OBJ_FERME
OBJ_ALLUME
OBJ_ETEIND
OBJ_REMPLI
OBJ_VIDE


#OBJET_VISIBLE      numobj[,mode]

indique que l'objet "numobj" est prsent dans la salle, est visible et
peut tre pris par le joueur ou repos ailleur.
mode reprsente l'tat de l'objet si prsent


#CHGT_VUE    num

indique le numro de vue  charger pour cette salle


#COMMANDE cmd,obj1,obj2,resultat1,objr1,resultat2,objr2[,UNIQUE]

Dcrit une commande pouvant tre effectue dans la salle.
obj1, obj2, objr1, objr2 sont les numros d'objets.
si on effectue la commande cmd sur obj1 et obj2 (obj2 peut tre =  0),
alors resultat1 s'appliquera  objr1 et resultat2 s'appliquera  objr2
resultat2 et objr2 peuvent tre gal  0
obj1 peut tre gal  0.

cmd peut tre la suivante :

CMD_OUVRIR          verbe "ouvrir"
CMD_FERMER          verbe "fermer"
CMD_SOULEVER        verbe "soulever"
CMD_EXAMINER        verbe "examiner"
CMD_ALLUMER         verbe "allumer"
CMD_ETEINDRE        verbe "teindre"
CMD_REMPLIR         verbe "remplir"
CMD_VIDER           verbe "vider"
CMD_MONTER          verbe "Monter"
CMD_DESCENDRE       verbe "Descendre"
CMD_PRENDRE         verbe "Prendre"
CMD_POSER           verbe "Poser"
CMD_LIRE            verbe "Lire"
CMD_PARLER          verbe "Parler"
CMD_DONNER          verbe "Donner"

resultat1 et resultat2 peuvent tre les suivants :

RES_CMD_NORD_OK             Dplacement au nord possible
RES_CMD_SUD_OK              Dplacement au sud possible
RES_CMD_EST_OK              Dplacement  l'est possible
RES_CMD_OUEST_OK            Dplacement  l'ouest possible
RES_CMD_HAUT_OK             Dplacement en haut possible
RES_CMD_BAS_OK              Dplacement en bas possible
RES_CMD_NORD_NOK            Dplacement au nord possible
RES_CMD_SUD_NOK             Dplacement au sud possible
RES_CMD_EST_NOK             Dplacement  l'est possible
RES_CMD_OUEST_NOK           Dplacement  l'ouest possible
RES_CMD_HAUT_NOK            Dplacement en haut possible
RES_CMD_BAS_NOK             Dplacement en bas possible
RES_CMD_OBJ_APPARAIT        Apparition objrx
RES_CMD_OBJ_DISPARAIT       Disparition objrx
RES_CMD_OBJ_FERME           objrx devient ferm
RES_CMD_OBJ_OUVRE           objrx devient ouvert
RES_CMD_OBJ_ALLUME          objrx devient allum
RES_CMD_OBJ_ETEIND          objrx devient teind
RES_CMD_OBJ_REMPLACE        Remplacement objr1 par objr2
RES_CMD_OBJ_FERME           Obj1 devient ferm
RES_CMD_OBJ_OUVRE           Obj1 devient ouvert
RES_CMD_OBJ_ALLUME          Obj1 devient allum
RES_CMD_OBJ_ETEIND          Obj1 devient teind
RES_CMD_OBJ_REMPLI          Obj1 devient rempli
RES_CMD_OBJ_VIDE            Obj1 devient vide
RES_CMD_DEPL                Dplacement vers une salle
RES_CMD_SETVARSALLE         Initialiser une variable de salle
RES_CMD_SETBITVARSALLE      Positionner un bit de variable de salle
RES_CMD_RESETBITVARSALLE    Effacer un bit de variable de salle
RES_CMD_SETVARGLOB          Initialiser la variable globale
RES_CMD_SETBITVARGLOB       Positionner un bit de la variable globale
RES_CMD_RESETBITVARGLOB     Effacer un bit de la variable globale
RES_CMD_AFFLIBELLE          Affichage d'un libell
RES_CMD_INCVARSALLE         Incrmenter variable salle
RES_CMD_DECVARSALLE         Dcrmenter variable salle
RES_CMD_SETVUE              Changer numro de vue

Dans le cas de directions, objr1 et objr2 reprsentent le numro de salle.
Dans le cas de RES_CMD_OBJ_REMPLACE, c'est resultat1 qui doit contenir
cette valeur, resultat2 et objr2 doivent exister, et resultat2 est inutilis.
Pour les positionnements de bits, objr1 et objr2 reprsentent le masque
OR ou le masque AND  effectuer sur la variable pour positionner ou effacer
le bit en question. Par exemple, un RES_CMD_SETBITVARGLOB avec une valeur
7 en objrx positionnera les bits 0, 1 et 2 de la variable globale.
Un RES_CMD_RESETBITVARSALLE avec 254 en objrx effacera le bit 0 de la variable
de la salle.
Si la commande se termine par UNIQUE, cette commande ne peut tre excute 
qu'une fois dans le jeu. (mise  1 du bit 7 lors de l'init, reset de la
commande  l'excution.)
4 commandes au maximum peuvent tre dfinies pour une salle.

#ACTION   %masque,action,parametre[,VAR_GLOBALE]

Dfinit une action  raliser si le test d'une variable compare  un masque
est diffrent de 0. Cette action sera excute avant chaque commande du
joueur.
masque reprsente le masque de bits qui sera test avec la variable (variable
locale  la salle ou variable globale au jeu).
action reprsente l'action  excuter si le rsultat d'une opration logique
"AND" entre le masque et la variable est diffrent de 0.
paramtre reprsente un paramtre ventuel associ  l'action
si VAR_GLOBALE est ajoute, le test s'effectue sur la variable globale au jeu,
sinon le test est effectu sur la variable locale  la salle.

action peut tre la suivante :

ACT_PLAY_MUS                            Jouer une musique
ACT_PLAY_SND                            Jouer un son
ACT_AFF_SPT                             Afficher un sprite
ACT_AFF_LIBELLE                         Afficher un libell
ACT_INC_VARSALLE                        Incrmenter variable de salle
ACT_DEC_VARSALLE                        Dcrmenter variable de salle
ACT_SET_VARSALLE                        Initialiser variable de salle
ACT_SET_NUMVUE                          Modifier numro de vue


Exemples :


#SALLE  0
    #CHGT_VUE       1

    #EST            1

    #OBJET_FIXE     5
    #OBJET_VISIBLE  2

#SALLE  1
    #CHGT_VUE       2

    #EST            2
    #OUEST          0

    #OBJET_FIXE     5

#SALLE  2
    #CHGT_VUE       3

    #EST            3
    #OUEST          1

    #OBJET_VISIBLE  6
    #OBJET_FIXE     5

#SALLE  3
    #CHGT_VUE       4

    #SUD            4
    #EST            9
    #OUEST          2

    #OBJET_FIXE     5

#SALLE  4
    #CHGT_VUE       5

    #NORD           3
    #SUD            5

    #OBJET_FIXE     5

#SALLE  5
    #CHGT_VUE       6

    #NORD           4
    #SUD            6

    #OBJET_FIXE     5

#SALLE  6
    #CHGT_VUE       7

    #NORD           5
    #SUD            7

    #OBJET_FIXE     5

#SALLE  7
    #CHGT_VUE       8

    #NORD           6

    #OBJET_FIXE     5
    #OBJET_FIXE     3,OBJ_FERME

    #COMMANDE       CMD_OUVRIR,3,2,RES_CMD_SUD_OK,8,RES_CMD_OBJ_OUVRE,3
    #COMMANDE       CMD_FERMER,3,2,RES_CMD_SUD_NOK,0,RES_CMD_OBJ_FERME,3

#SALLE              8
    #CHGT_VUE       9

    #NORD           7

    #OBJET_FIXE     5
    #OBJET_VISIBLE  7

#SALLE  9
    #CHGT_VUE       10

    #OUEST          3

    #OBJET_FIXE     5
    #OBJET_FIXE     3,OBJ_FERME

    #COMMANDE       CMD_OUVRIR,3,7,RES_CMD_EST_OK,10,RES_CMD_OBJ_OUVRE,3
    #COMMANDE       CMD_FERMER,3,7,RES_CMD_EST_NOK,0,RES_CMD_OBJ_FERME,3

#SALLE  10
    #CHGT_VUE       11

    #OUEST          9

    #OBJET_FIXE     5


5) Informations gnrales
-------------------------
Dclaration des positions de dpart et d'arrives :
On dclare ici le numro de salle de dpart et d'arrive
(arrive = fin du jeu).

La position de dpart peut tre choisie alrtoirement par le programme :
une position de dpart mini et une position dpart maxi sont dfinies, si
elles sont gales, la position de dpart sera fixe, sinon, la position de
dpart sera comprise entre la borne mini et la borne maxi (bornes incluses).

Syntaxe :

#DEPART_MIN     numro_de_salle_min
#DEPART_MAX     numro_de_salle_max
#ARRIVEE        numro_de_salle_fin

exemple :

#DEPART_MIN     0
#DEPART_MAX     7
#ARRIVEE        80

Dclaration du nom du jeu :
Il faut donner un nom au jeu, pour permettre l'identification des disquettes.
On dclare le nom du jeu ainsi :

#NOM_JEU    nom_du_jeu

nom_du_jeu est une chaine de 32 caractres maxi.

exemple :

#NOM_JEU    Le 7me continent


6) Dfinition des Images
------------------------
Cette partie permet la gnration des fichiers .DSK contenant
les images du jeu.
Les images sont lues depuis un fichier extrieur. (En gnral, le fichier
.map gnr par l'diteur.)

Pour localiser le fichier, la directive suivante est utilise :

#NOM_IMAGE nom_et_chemin_complet_du_fichier_contenant_les_images

Ensuite, un offset peut tre appliqu  ce fichier (cas du fichier.map)
avec la directive suivante :

#OFFSET_IMAGE valeur_offset

valeur_offset est un entier sur 32 bits.

Ensuite, on dclare chaque image de la faon suivante :

#IMAGE num_image,face,debut,longueur

num_image reprsente le numro de l'image, toujours >0
face reprsente une bitmap indiquant la face sur laquelle doit tre
gnre l'image (1 bit par face, bit 0 = face 1, bit 7 = face 8).
face est compris entre 1 et 255.
debut reprsente la position du dbut (relative  l'offset dclar
prcdement) dans le fichier de l'image
longueur reprsente la longueur de l'image en octets.

7) Dfinition de l'cran d'introduction
---------------------------------------
Cette partie permet la gnration de l'cran d'introduction du jeu.
L'cran d'introduction peut contenir plusieurs parties :
- une image de prsentation,
- un texte d'introduction,
- une musique.
Ces 3 parties peuvent tre ajoutes/supprimes indpendamment.
Pour cela, les directives suivantes sont utilises :

#INTRO_AVECIMAGE

Si prsente, cette directive indique qu'il y a une image d'introduction.
L'image d'introduction sera affiche par le CPC jusqu' ce que l'utilisateur
appuie sur une touche.
L'image d'introduction est lue depuis un fichier extrieur (ce fichier est
nom "EcranIntro.pja" par le gnrateur de script).

L'offset de l'image dans le fichier doit tre prcis par la directive :

#INTRO_OFFSET_IMAGE   offset

Pour localiser le fichier, la directive suivante est utilise :

#INTRO_NOM_IMAGE  nom_fichier_contenant_ecran_intro

Remarque importante : l'offset doit tre prcis AVANT le nom du fichier.

Suivent ensuite les directives suivantes pour dfinir le mode et la palette
des couleurs utilises :

#INTRO_MODEECR  mode

Avec mode de 0  2.

#INTRO_COUL numero_encre,couleur

Avec numero_encre de 0  15, et couleur de 0  26.

Ensuite, la directive :

#INTRO_AVECTEXTE

Indique qu'il y a un texte d'introduction. Le texte sera affich aprs
l'image, et sera visualis sur le CPC jusqu' ce que l'utilisateur appuie sur
la touche 'ENTREE'.
Si le texte dpasse la capacit de l'cran, un scrolling sera possible
 l'aide des flches haut et bas.

Pour dfinir la couleur du fond du texte, on utilise la directive :

#INTRO_TXTCOULFOND couleur

Et pour la couleur du texte en lui-mme, la directive :

#INTRO_TXTCOULTEXTE couleur

Il faut obligatoirement associer une police lorsque le texte est prsent.
Les polices sont des fichier au format .FNT d'OCP ART STUDIO. Un fichier
FNT contient la redfinition des caractres ASCII 32  127, sous forme de
matrice de 8x8 bits. Ce fichier fait donc (127-32+1)*8 = 768 octets, auxquels
l'on ajoute l'en-tte Amsdos de 128 octets, soit un total de 896 octets.

L'offset de l'image dans le fichier doit tre prcis par la directive :

#INTRO_OFFSET_FONTE offset

Pour indiquer quel est la police utilise pour le texte, on utilise la
directive suivante :

#INTRO_TXTFONT nom_et_chemin_fichier_police

nom_et_chemin_fichier_police reprsente donc le nom complet (avec le chemin)
du fichier .FNT dsir.

Remarque importante : l'offset doit tre prcis AVANT le nom du fichier.

La dfinition du texte se fait  l'aide de la directive suivante :

#INTRO_TEXTE    >texte

Le texte affich commence juste aprs le caractre >.
Les espaces sont pris en compte, pour permettre l'alignement du message.
Plusieurs directives #INTRO_TEXTE dfinissent le message en entier.
Exemple :

#INTRO_TEXTE    >Ligne 1
#INTRO_TEXTE    >Ligne 2
.
.
#INTRO_TEXTE    >Ligne n

Le texte est affich en mode 1, donc permet 40x24 caractres. (La ligne 25
est utilise pour rappeler les touches de navigation.)

Pour finir, la directive

#INTRO_AVECMUSIQUE

Servira  indiquer qu'il y a une musique  jouer pendant l'introduction.
La partie musique n'tant pas encore termine, cette directive est pour
l'instant inoprante.

8) Dfinition de l'cran de fin du jeu (gagn)
----------------------------------------------
Cette partie permet la gnration de l'cran de fin du jeu.
L'cran d'introduction peut contenir plusieurs parties :
- une image de prsentation,
- un texte d'introduction,
- une musique.
Ces 3 parties peuvent tre ajoutes/supprimes indpendamment.
Pour cela, les directives suivantes sont utilises :

#FIN_AVECIMAGE

Si prsente, cette directive indique qu'il y a une image d'introduction.
L'image d'introduction sera affiche par le CPC jusqu' ce que l'utilisateur
appuie sur une touche.
L'image d'introduction est lue depuis un fichier extrieur (ce fichier est
nom "EcranFin.pja" par le gnrateur de script).

L'offset de l'image dans le fichier doit tre prcis par la directive :

#FIN_OFFSET_IMAGE   offset

Pour localiser le fichier, la directive suivante est utilise :

#FIN_NOM_IMAGE  nom_fichier_contenant_ecran_intro

Remarque importante : l'offset doit tre prcis AVANT le nom du fichier.

Ensuite, les directives suivantes sont utilises (pour la dfinition, voir
les directives #INTRO_xxx quivalentes.)

#FIN_MODEECR    mode

#FIN_COUL numero_encre,couleur

#FIN_AVECTEXTE

#FIN_TXTCOULFOND couleur

#FIN_TXTCOULTEXTE couleur

L'offset de l'image dans le fichier doit tre prcis par la directive :

#FIN_OFFSET_FONTE offset

Pour indiquer quel est la police utilise pour le texte, on utilise la
directive suivante :

#FIN_TXTFONT nom_et_chemin_fichier_police

nom_et_chemin_fichier_police reprsente donc le nom complet (avec le chemin)
du fichier .FNT dsir.

Remarque importante : l'offset doit tre prcis AVANT le nom du fichier.

#FIN_TEXTE  >texte

#FIN_AVECMUSIQUE

9) Dfinition des musiques du jeu
---------------------------------
Cette partie permet de dfinir les musiques qui peuvent tre joues au cours
du jeu. Les musiques doivent tre au format Starkos.
On utilise les directives suivantes :

#OFFSET_MUSIQUE     offset

offset reprsente l'offset dans le fichier o commence la premire musique

TAILLE_MUSIQUE      taille

taille reprsente la taille totale de toutes les musiques. Cette directive
permet de crer un seul fichier pour toutes les musiques, avec la taille
slectionne.

#NOM_MUSIQUE        nom_complet_fichier

mom_complet_fichier reprsente le nom complet (avec le chemin) du fichier
contenant les musiques.

#MUSIQUE_JEU    numero_musique,offset_musique

Dfinit une musique du jeu. numero_musique reprsente le numro de la musique
 dfinir (de 0  7) et offset_musique reprsente la position dans le fichier
des musiques. Remarque : offset_musique est un offset relatif  offset, qui
est dfini par la directive #OFFSET_MUSIQUE.

10) Dfinition des sons du jeu
------------------------------
Cette partie permet de dfinir les sons qui peuvent tre joues au cours
du jeu. Les sons doivent tre au format Starkos.
On utilise les directives suivantes :

#OFFSET_SON     offset

offset reprsente l'offset dans le fichier o commence le premier son

TAILLE_SON      taille

taille reprsente la taille totale de tous les sons. Cette directive
permet de crer un seul fichier pour tous les sons, avec la taille
slectionne.

#NOM_SON        nom_complet_fichier

mom_complet_fichier reprsente le nom complet (avec le chemin) du fichier
contenant les sons.

#SON_JEU    numero_son,offset_son

Dfinit une son du jeu. numero_son reprsente le numro de son  dfinir
(de 0  7) et offset_son reprsente la position dans le fichier de sons.
Remarque : offset_son est un offset relatif  offset, qui est dfini par
la directive #OFFSET_SON.


11) Dfinition de la trame de fond d'cran
------------------------------------------


12) Dfiniton des libells du moteur du jeu
-------------------------------------------



Starkos et le player Starkos sont cr par Targhan/Arkos


Pour me contacter :

http://cpc-pja.forumactif.com
