Avant propos:
J'ai décidé de poster l'ensemble de mes tutoriaux sur l'ensemble des forums où j'ai participé pour permettre aux makers de toutes les communautés de profiter d'une base de tutoriels identiques.
Oui, ce sont des copier/coller de tutoriels que j'ai réalisé et posté par le passé ailleurs.
Merci de votre compréhension
Il arrive souvent que les events makers souhaitent faire un A-RPG en event et à l'intérieur de ce A-RPg, veulent y inclure un ennemi qui réagira à la proximité du héros dans un rayon d'action variable.
J'ai donc planché un peu sur la question car cette partie Events m'a été demandée dans un jeu et je viens ici vous expliquer comment on peu faire. Il est évident que c'est une des méthodes, personnellement j'ai longuement réfléchi pour voir laquelle était la plus adaptable et simple d'utilisation et c'est donc celle dont je vous parle dans ce tutoriel [COURS]
Nous allons donc déjà mettre en place les événements un à un. Il va en falloir quatre comme indiqué sur le premier screen. Pour chaque ennemi, vous pourrez faire un groupe de 4 events supplémentaire ou grouper les events par noms d'events uniquement.
Personnellement, je préfère faire les choses séparées et proprement, puis ensuite regrouper pour gagner en fluidité si nécessaire. De plus regrouper trop les event crée quelques fois des bugs. Dans ce cours chaque event est indispensable pour éviter un plantage.
Nous allons déjà repairer le héros, l'ennemi, la direction de l'ennemi ainsi que sa distance de vision dans les variables.
Vous avez certainement remarqué que je ne modifie pas directement les variables ennemi, ce n'est pas un hasard mais bel et bien un moyen permettant d'avoir toujours les coordonnées exactes de l'ennemi non modifiés pouvant servir de référence à tout moment. Cela sert par exemple à améliorer l'intelligence de l'ennemi, la phase combat ou autres.
Si vous débutez dans l'event, vous allez certainement chercher un peu avant de sélectionner correctement les bonnes correspondances qui figurent sur le screen, donc prenez le temps qu'il faut.
L'event qui suit merite des explications ainsi de de details précis car un simple screen ne va pas suffir.
L'evenement peut paraittre complexe mais en fait il est relativement simple. Il y a 4 parties qui se resemble correspondant respectivement au coordonnées haut gauche, haut droite, bas gauche et bas droite. Elles se font toutes sous le même modèle général:
Si variable X de l'ennemi est supérieur ou inférieur à X du héros
ET
Si Variable Y de l'ennemi est supérieur ou inférieur à Y du héros
Alors
Rendre les variables temporaires= Xb ennemi égale à X ennemi et Yb ennemi égale à Y ennemi pour les modifier en fonction de la distance de vision.
Pour indiquer la distance de vision, il suffit d'ajouter ou de retirer la variable vision (permet ainsi de changer la distance vision en deux secondes seulement en agissant sur l'événement [Evenement positions], c'est à dire celui qu'on a vu avant celui que nous sommes en train de décrire.
Une fois les distances maximales d'actions définies pour le quart correspondant, il suffit ensuite de refaire un test de position du héros identique au précédent pour détecter efficacement la présence du héros dans le champ de l'ennemi et dans le quart correspondant. Il suffit donc de déclencher en conséquence.
Après on fait la même opération sur les autres quarts, et le tour est joué. Cela donne une fois fini ces lignes de commandes events:
- Code:
Conditions de l'évènement :
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Commentaire : Cette phase peut être copiée et collée sur l'evenement:
<>Commentaire : Serie de commandes conditionnelles determinant la place du
<>Condition : si la variable [0003: Enemi 1X] est supérieur ou égale à Variable [0001: Héros X]
<>Condition : si la variable [0004: Enemi 1Y] est supérieur ou égale à Variable [0002: Héros Y]
<>Commentaire : Stoquage de la position de l'enemi dans une autre variable pour
<>Variable(s) [0005: Enemi 1Xa] rendre égale à (valeur de la variable [0003: Enemi 1X])
<>Variable(s) [0006: Enemi 1Ya] rendre égale à (valeur de la variable [0004: Enemi 1Y])
<>Commentaire : On determine le rayon d'action en décalant la position de
<>Variable(s) [0005: Enemi 1Xa] retirer (valeur de la variable [0007: Vision Enemi 1])
<>Variable(s) [0006: Enemi 1Ya] retirer (valeur de la variable [0007: Vision Enemi 1])
<>Commentaire : Suivant ce rayon d'action, si le heros est dans cette partie du
<>Condition : si la variable [0001: Héros X] est strictement supérieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement supérieur à Variable [0006: Enemi 1Ya]
<>Commentaire : Déclancher la vision de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 1
<>
: Sinon
<>Commentaire : Déclancher patrouille de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 0
<>
: Fin
<>
: Sinon
<>Commentaire : Déclancher patrouille de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 0
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0003: Enemi 1X] est supérieur ou égale à Variable [0001: Héros X]
<>Condition : si la variable [0004: Enemi 1Y] est inférieur ou égale à Variable [0002: Héros Y]
<>Commentaire : Stoquage de la position de l'enemi dans une autre variable pour
<>Variable(s) [0005: Enemi 1Xa] rendre égale à (valeur de la variable [0003: Enemi 1X])
<>Variable(s) [0006: Enemi 1Ya] rendre égale à (valeur de la variable [0004: Enemi 1Y])
<>Commentaire : On determine le rayon d'action en décalant la position de
<>Variable(s) [0005: Enemi 1Xa] retirer (valeur de la variable [0007: Vision Enemi 1])
<>Variable(s) [0006: Enemi 1Ya] ajouter (valeur de la variable [0007: Vision Enemi 1])
<>Commentaire : Suivant ce rayon d'action, si le heros est dans cette partie du
<>Condition : si la variable [0001: Héros X] est strictement supérieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement inférieur à Variable [0006: Enemi 1Ya]
<>Commentaire : Déclancher la vision de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 1
<>
: Sinon
<>Commentaire : Déclancher patrouille de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 0
<>
: Fin
<>
: Sinon
<>Commentaire : Déclancher patrouille de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 0
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0003: Enemi 1X] est inférieur ou égale à Variable [0001: Héros X]
<>Condition : si la variable [0004: Enemi 1Y] est supérieur ou égale à Variable [0002: Héros Y]
<>Commentaire : Stoquage de la position de l'enemi dans une autre variable pour
<>Variable(s) [0005: Enemi 1Xa] rendre égale à (valeur de la variable [0003: Enemi 1X])
<>Variable(s) [0006: Enemi 1Ya] rendre égale à (valeur de la variable [0004: Enemi 1Y])
<>Commentaire : On determine le rayon d'action en décalant la position de
<>Variable(s) [0005: Enemi 1Xa] ajouter (valeur de la variable [0007: Vision Enemi 1])
<>Variable(s) [0006: Enemi 1Ya] retirer (valeur de la variable [0007: Vision Enemi 1])
<>Commentaire : Suivant ce rayon d'action, si le heros est dans cette partie du
<>Condition : si la variable [0001: Héros X] est strictement inférieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement supérieur à Variable [0006: Enemi 1Ya]
<>Commentaire : Déclancher la vision de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 1
<>
: Sinon
<>Commentaire : Déclancher patrouille de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 0
<>
: Fin
<>
: Sinon
<>Commentaire : Déclancher patrouille de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 0
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0003: Enemi 1X] est inférieur ou égale à Variable [0001: Héros X]
<>Condition : si la variable [0004: Enemi 1Y] est inférieur ou égale à Variable [0002: Héros Y]
<>Commentaire : Stoquage de la position de l'enemi dans une autre variable pour
<>Variable(s) [0005: Enemi 1Xa] rendre égale à (valeur de la variable [0003: Enemi 1X])
<>Variable(s) [0006: Enemi 1Ya] rendre égale à (valeur de la variable [0004: Enemi 1Y])
<>Commentaire : On determine le rayon d'action en décalant la position de
<>Variable(s) [0005: Enemi 1Xa] ajouter (valeur de la variable [0007: Vision Enemi 1])
<>Variable(s) [0006: Enemi 1Ya] ajouter (valeur de la variable [0007: Vision Enemi 1])
<>Commentaire : Suivant ce rayon d'action, si le heros est dans cette partie du
<>Condition : si la variable [0001: Héros X] est strictement inférieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement inférieur à Variable [0006: Enemi 1Ya]
<>Commentaire : Déclancher la vision de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 1
<>
: Sinon
<>Commentaire : Déclancher patrouille de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 0
<>
: Fin
<>
: Sinon
<>Commentaire : Déclancher patrouille de l'enemi
<>Variable(s) [0009: Action enemi 1] rendre égale à 0
<>
: Fin
<>
: Fin
<>
: Fin
<>
Voilà une bonne chose de faite, maintenant on va traiter la vision de l'enemi. A t'il une vision à 360 °? A t"il une vision de face? Ou encore, voit il que sur un côté. Et bien c'est ce prochain event qui peu le determiner.
La première page est complètement vide seule la seconde est donc utilisée. Le principe est simple : Détecter si l'ennemi vois le héros. Là j'ai voulu inverser la détection et les conditions pour montrer qu'on peu prendre comme repaire le héros et pas l'ennemi (comme sur l'évent précédent) sans que ca nuise à la résolution de l'event. C'est juste assez déstabilisant quand on est pas habitué des coordonées.
Evidement, prenez le repaire qui vous arrange, j'ai préféré faire comme cela mais bon d'autres préféreront faire autrement pour les comparatifs.
Voilà comment se résume par exemple le cas Variable direction ennemi = 2
Si l'ennemi regarde en bas et que héros est en bas à droite ou en bas à gauche alors ennemis agit.
Et voici ce que ca donne en commande event:
- Code:
Map ID: 1, Nom: MAP001
Evènement ID: 004, Nom: Vision de l'enemi
------ PAGE 1 ------
Conditions de l'évènement :
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Par la touche action
Commandes d'évènement:
<>
------ PAGE 2 ------
Conditions de l'évènement :
- La variable [0009:Action enemi 1] est supérieur ou égal à 1
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Commentaire : Si enemi a une vision à 360°
<>Condition : si la variable [0008: Direction enemi 1] est égale à 8
<>Commentaire : Haut
<>Condition : si la variable [0001: Héros X] est strictement supérieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement supérieur à Variable [0006: Enemi 1Ya]
<>Variable(s) [0009: Action enemi 1] rendre égale à 2
<>
: Fin
<>
: Fin
<>Condition : si la variable [0001: Héros X] est strictement inférieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement supérieur à Variable [0006: Enemi 1Ya]
<>Variable(s) [0009: Action enemi 1] rendre égale à 2
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0008: Direction enemi 1] est égale à 6
<>Commentaire : Droite
<>Condition : si la variable [0001: Héros X] est strictement inférieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement inférieur à Variable [0006: Enemi 1Ya]
<>Variable(s) [0009: Action enemi 1] rendre égale à 2
<>
: Fin
<>
: Fin
<>Condition : si la variable [0001: Héros X] est strictement inférieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement supérieur à Variable [0006: Enemi 1Ya]
<>Variable(s) [0009: Action enemi 1] rendre égale à 2
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0008: Direction enemi 1] est égale à 4
<>Commentaire : Gauche
<>Condition : si la variable [0001: Héros X] est strictement supérieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement supérieur à Variable [0006: Enemi 1Ya]
<>Variable(s) [0009: Action enemi 1] rendre égale à 2
<>
: Fin
<>
: Fin
<>Condition : si la variable [0001: Héros X] est strictement supérieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement inférieur à Variable [0006: Enemi 1Ya]
<>Variable(s) [0009: Action enemi 1] rendre égale à 2
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0008: Direction enemi 1] est égale à 2
<>Commentaire : Bas
<>Condition : si la variable [0001: Héros X] est strictement inférieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement inférieur à Variable [0006: Enemi 1Ya]
<>Variable(s) [0009: Action enemi 1] rendre égale à 2
<>
: Fin
<>
: Fin
<>Condition : si la variable [0001: Héros X] est strictement supérieur à Variable [0005: Enemi 1Xa]
<>Condition : si la variable [0002: Héros Y] est strictement inférieur à Variable [0006: Enemi 1Ya]
<>Variable(s) [0009: Action enemi 1] rendre égale à 2
<>
: Fin
<>
: Fin
<>
: Fin
<>
Il ne reste donc plus que l'ennemi à configurer. Et là vous allez voir, c'est d'une simplicité déconcertante:
Vous avez le choix:
Deux pages et cela dans deux cas:
=] Soit l'ennemi vois à 360 ° et dans ce cas, évidement l'événement précédent est inutile et la troisième page aussi.
=] Soit vous ne voulez pas que l'ennemi change d'apparence ou d'attitude quand le héros est dans la zone proche du monstre mais qu'il agisse quand même à vue du heros.
Trois pages si vous voulez que votre ennemi change d'attitude pour chaque phase: Le héros est à moins de X cases (X case correspondant à la variable [Vision Enemi] et [Direction de l'ennemi]
Donc là, libre cours à votre imagination. Et voici la demo du resultat:
View range en event
============================
Ajout d'une grenade pour A-RPG en Event
Suite à une autre demande concernant un A-RPg en event, voici le tuto pour intégrer une grenade lancée sur un enemi.
J'ai intégré un compteur de vie ( en haut à gauche) la detection de la proximité du héros et celle de l'enemi. L'enemi est toujours réactif au héros mais là je ne l'ai pas fait réagir à la grenade même si il peu la voir.
On passe aux explications: Nous allons donc garder l'ensemble du tutoriel précédent Et ajouter d'autres variables.
- Code:
Map ID: 1, Nom: MAP001
Evènement ID: 002, Nom: Evenement positions
------ PAGE 1 ------
Conditions de l'évènement :
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Commentaire : Repaire Héros
<>Variable(s) [0001: Héros X] rendre égale à Héros --> Coordonnée X
<>Variable(s) [0002: Héros Y] rendre égale à Héros --> Coordonnée Y
<>Commentaire : Repaire enemi 1
<>Variable(s) [0003: Enemi 1X] rendre égale à [Enemi 1] --> Coordonnée X
<>Variable(s) [0004: Enemi 1Y] rendre égale à [Enemi 1] --> Coordonnée Y
<>Commentaire : Determine vers où regarde l'enemi 1
<>Variable(s) [0008: Direction enemi 1] rendre égale à [Enemi 1] --> Direction fixée
<>Commentaire : Determine le rayon d'action de la vision de l'enemi 1
<>Variable(s) [0007: Vision Enemi 1] rendre égale à 4
<>Commentaire : Direction du héros
<>Variable(s) [0014: Direction héros] rendre égale à Héros --> Direction fixée
<>Commentaire : Grenade: Coordonnées
<>Variable(s) [0010: Grenade X] rendre égale à [Grenade] --> Coordonnée X
<>Variable(s) [0011: Grenade Y] rendre égale à [Grenade] --> Coordonnée Y
<>Commentaire : Coordonnées du décompte
<>Variable(s) [0016: Decompte X] rendre égale à (valeur de la variable [0010: Grenade X])
<>Variable(s) [0016: Decompte X] multiplier par 32
<>Variable(s) [0017: Decompte Y] rendre égale à (valeur de la variable [0011: Grenade Y])
<>Variable(s) [0017: Decompte Y] multiplier par 32
<>Commentaire : Deflagration de la grenade
<>Variable(s) [0012: Déflagration] rendre égale à 3
<>Condition : si la variable [0015: Vie du héros] est égale à 0
<>Afficher une image : n°2, '0', pixel haut-gauche (0,0), (100%,100%), 255, Normal
<>
: Fin
<>Condition : si la variable [0015: Vie du héros] est égale à 1
<>Afficher une image : n°2, '1', pixel haut-gauche (0,0), (100%,100%), 255, Normal
<>
: Fin
<>Condition : si la variable [0015: Vie du héros] est égale à 2
<>Afficher une image : n°2, '2', pixel haut-gauche (0,0), (100%,100%), 255, Normal
<>
: Fin
<>Condition : si la variable [0015: Vie du héros] est égale à 3
<>Afficher une image : n°2, '3', pixel haut-gauche (0,0), (100%,100%), 255, Normal
<>
: Fin
<>Condition : si la variable [0015: Vie du héros] est égale à 4
<>Afficher une image : n°2, '4', pixel haut-gauche (0,0), (100%,100%), 255, Normal
<>
: Fin
<>Condition : si la variable [0015: Vie du héros] est égale à 5
<>Afficher une image : n°2, '5', pixel haut-gauche (0,0), (100%,100%), 255, Normal
<>
: Fin
<>
Donc il nous faut savoir vers où regarde le héros pour savoir vers où la grenade va être lancée (oui je sais le lancement n'est pas réaliste et l'explosion aussi. Merci je suis au courant) et des variables de position pour verifier où se trouve quoi et surtout quand.
On en profite pour faire un rafraichissement régulier de la jauge de vie en haut à gauche. En event s'il vous plait monsieur.
Les evenements gestion enemi et vision enemi sont identiques en tout points au tutoriel précédent. Nous ajoutons un evenement qui n'est utilisé qu'une seule fois (au debut du jeu): La vie du héros.
Simple: Variable vide du héros = 5.
Attendre 1 frame
Enclancher A
Pour les detections, faites deux copiers coller de la partie détéction et faites quelques modifications.
Renommez l'un : "Héros + Grenade" par exemple qui gérera la deflagration de la grenade sur le héros lors de l'explosion si celui ci est à proximité
L'autre: "Ennemi + Grenade" qui gerera la déflagration sur l'ennemi.
Pour une raison totalement inconnue, la partie ennemi touchée se gere que si vous mettez l'action directement dans la condition (les interrupteurs fonctionnent parcontre, allez comprendre...)
Vous échangez donc les variables enemi 1 avec celles de Grenade et vous ajoutez un onglet. Le second onglet sera déclanché quand la grenade explosera uniquement (Grace à la variable [état de la grenade]). C'est cet onglet qui comporte les conditions.
Un troisième onglet pour l'état de la grenade éxplosée le temps de gérer le reste.
- Code:
Map ID: 1, Nom: MAP001
Evènement ID: 006, Nom: Héros + grenade
------ PAGE 1 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 0
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>
------ PAGE 2 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 3
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Commentaire : Partie Heros + grenade
<>Condition : si la variable [0010: Grenade X] est supérieur ou égale à Variable [0001: Héros X]
<>Condition : si la variable [0011: Grenade Y] est supérieur ou égale à Variable [0002: Héros Y]
<>Variable(s) [0010: Grenade X] retirer (valeur de la variable [0012: Déflagration])
<>Variable(s) [0011: Grenade Y] retirer (valeur de la variable [0012: Déflagration])
<>Condition : si la variable [0001: Héros X] est strictement supérieur à Variable [0010: Grenade X]
<>Condition : si la variable [0002: Héros Y] est strictement supérieur à Variable [0011: Grenade Y]
<>Attendre 1 Frames
<>Variable(s) [0015: Vie du héros] retirer 1
<>
: Sinon
<>
: Fin
<>
: Sinon
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0010: Grenade X] est supérieur ou égale à Variable [0001: Héros X]
<>Condition : si la variable [0011: Grenade Y] est inférieur ou égale à Variable [0002: Héros Y]
<>Variable(s) [0010: Grenade X] retirer (valeur de la variable [0012: Déflagration])
<>Variable(s) [0011: Grenade Y] ajouter (valeur de la variable [0012: Déflagration])
<>Condition : si la variable [0001: Héros X] est strictement supérieur à Variable [0010: Grenade X]
<>Condition : si la variable [0002: Héros Y] est strictement inférieur à Variable [0011: Grenade Y]
<>Attendre 1 Frames
<>Variable(s) [0015: Vie du héros] retirer 1
<>
: Sinon
<>
: Fin
<>
: Sinon
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0010: Grenade X] est inférieur ou égale à Variable [0001: Héros X]
<>Condition : si la variable [0011: Grenade Y] est supérieur ou égale à Variable [0002: Héros Y]
<>Variable(s) [0010: Grenade X] ajouter (valeur de la variable [0012: Déflagration])
<>Variable(s) [0011: Grenade Y] retirer (valeur de la variable [0012: Déflagration])
<>Condition : si la variable [0001: Héros X] est strictement inférieur à Variable [0010: Grenade X]
<>Condition : si la variable [0002: Héros Y] est strictement supérieur à Variable [0011: Grenade Y]
<>Attendre 1 Frames
<>Variable(s) [0015: Vie du héros] retirer 1
<>
: Sinon
<>
: Fin
<>
: Sinon
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0010: Grenade X] est inférieur ou égale à Variable [0001: Héros X]
<>Condition : si la variable [0011: Grenade Y] est inférieur ou égale à Variable [0002: Héros Y]
<>Variable(s) [0010: Grenade X] ajouter (valeur de la variable [0012: Déflagration])
<>Variable(s) [0011: Grenade Y] ajouter (valeur de la variable [0012: Déflagration])
<>Condition : si la variable [0001: Héros X] est strictement inférieur à Variable [0010: Grenade X]
<>Condition : si la variable [0002: Héros Y] est strictement inférieur à Variable [0011: Grenade Y]
<>Attendre 1 Frames
<>Variable(s) [0015: Vie du héros] retirer 1
<>
: Sinon
<>
: Fin
<>
: Sinon
<>
: Fin
<>
: Fin
<>
: Fin
<>
------ PAGE 3 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 4
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Par la touche action
Commandes d'évènement:
<>
==================
On fait sensiblement la même chose en comparant enemi et grenade. On remplace donc la partie marquée par les variables héros par celles de l'enemi. On fait l'animation de l'enemi quand il meurs et on prévoi son apparence après.
Ce qui donne donc:
- Code:
Map ID: 1, Nom: MAP001
Evènement ID: 008, Nom: Ennemi + grenade
------ PAGE 1 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 0
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Par la touche action
Commandes d'évènement:
<>
------ PAGE 2 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 3
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Commentaire : Partie Enemi + Grenade
<>Condition : si la variable [0010: Grenade X] est supérieur ou égale à Variable [0003: Enemi 1X]
<>Condition : si la variable [0011: Grenade Y] est supérieur ou égale à Variable [0004: Enemi 1Y]
<>Variable(s) [0010: Grenade X] retirer (valeur de la variable [0012: Déflagration])
<>Variable(s) [0011: Grenade Y] retirer (valeur de la variable [0012: Déflagration])
<>Condition : si la variable [0003: Enemi 1X] est strictement supérieur à Variable [0010: Grenade X]
<>Condition : si la variable [0004: Enemi 1Y] est strictement supérieur à Variable [0011: Grenade Y]
<>Déplacer l'évènement : Enemi 1
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier l'opacité : 200
: : Attendre : 1 frames
: : Modifier l'opacité : 150
: : Attendre : 1 frames
: : Modifier l'opacité : 100
: : Attendre : 1 frames
: : Modifier l'opacité : 50
: : Attendre : 1 frames
: : Active l'interrupteur : 0001
<>Attendre 30 Frames
<>
: Sinon
<>
: Fin
<>
: Sinon
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0010: Grenade X] est supérieur ou égale à Variable [0003: Enemi 1X]
<>Condition : si la variable [0011: Grenade Y] est inférieur ou égale à Variable [0004: Enemi 1Y]
<>Variable(s) [0010: Grenade X] retirer (valeur de la variable [0012: Déflagration])
<>Variable(s) [0011: Grenade Y] ajouter (valeur de la variable [0012: Déflagration])
<>Condition : si la variable [0003: Enemi 1X] est strictement supérieur à Variable [0010: Grenade X]
<>Condition : si la variable [0004: Enemi 1Y] est strictement inférieur à Variable [0011: Grenade Y]
<>Déplacer l'évènement : Enemi 1
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier l'opacité : 200
: : Attendre : 1 frames
: : Modifier l'opacité : 150
: : Attendre : 1 frames
: : Modifier l'opacité : 100
: : Attendre : 1 frames
: : Modifier l'opacité : 50
: : Attendre : 1 frames
: : Active l'interrupteur : 0001
<>Attendre 30 Frames
<>
: Fin
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0010: Grenade X] est inférieur ou égale à Variable [0003: Enemi 1X]
<>Condition : si la variable [0011: Grenade Y] est supérieur ou égale à Variable [0004: Enemi 1Y]
<>Variable(s) [0010: Grenade X] ajouter (valeur de la variable [0012: Déflagration])
<>Variable(s) [0011: Grenade Y] retirer (valeur de la variable [0012: Déflagration])
<>Condition : si la variable [0003: Enemi 1X] est strictement inférieur à Variable [0010: Grenade X]
<>Condition : si la variable [0004: Enemi 1Y] est strictement supérieur à Variable [0011: Grenade Y]
<>Déplacer l'évènement : Enemi 1
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier l'opacité : 200
: : Attendre : 1 frames
: : Modifier l'opacité : 150
: : Attendre : 1 frames
: : Modifier l'opacité : 100
: : Attendre : 1 frames
: : Modifier l'opacité : 50
: : Attendre : 1 frames
: : Active l'interrupteur : 0001
<>Attendre 30 Frames
<>
: Fin
<>
: Fin
<>
: Fin
<>
: Fin
<>Condition : si la variable [0010: Grenade X] est inférieur ou égale à Variable [0003: Enemi 1X]
<>Condition : si la variable [0011: Grenade Y] est inférieur ou égale à Variable [0004: Enemi 1Y]
<>Variable(s) [0010: Grenade X] ajouter (valeur de la variable [0012: Déflagration])
<>Variable(s) [0011: Grenade Y] ajouter (valeur de la variable [0012: Déflagration])
<>Condition : si la variable [0003: Enemi 1X] est strictement inférieur à Variable [0010: Grenade X]
<>Condition : si la variable [0004: Enemi 1Y] est strictement inférieur à Variable [0011: Grenade Y]
<>Déplacer l'évènement : Enemi 1
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier la transparence : Ajouter
: : Attendre : 1 frames
: : Modifier la transparence : Normal
: : Attendre : 1 frames
: : Modifier l'opacité : 200
: : Attendre : 1 frames
: : Modifier l'opacité : 150
: : Attendre : 1 frames
: : Modifier l'opacité : 100
: : Attendre : 1 frames
: : Modifier l'opacité : 50
: : Attendre : 1 frames
: : Active l'interrupteur : 0001
<>Attendre 30 Frames
<>
: Fin
<>
: Fin
<>
: Fin
<>
: Fin
<>
------ PAGE 3 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 4
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Par la touche action
Commandes d'évènement:
<>
========================
Voilà qui est assez routinier puisse que nous avons fait sensiblement la même chose sur les evenements. On va ajouter un onglet à l'enemi pour gérer la condition si l'interupteur [Mort de l'ennemi] est enclanché. Moi j'ai mis un tas de cendres. Après c'est comme on aime.
Nous passons à la grenade elle même. Le premier onglet gere la grenade pas encore sortie du sac (voir pour ajouter une condition + variable déterminant le nombre de grenades que vous avez (pourquoi pas directement géré dans le menu objet?) mais on va pas épiloguer sur ce détail, on va se focaliser sur l'evenement propre.
On va decortiquer chaque page de l'evenement:
- Code:
Map ID: 1, Nom: MAP001
Evènement ID: 001, Nom: Grenade
------ PAGE 1 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 0
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
- Direction Fixe
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Commentaire : Grenade non utilisée
<>Condition : si la touche A est préssée
<>Attendre 2 Frames
<>Variable(s) [0013: Etat de la grenade] rendre égale à 1
<>
: Fin
<>
Tant que shift n'est pas enfoncé la grenade n'apparrait pas. C'est simple mais efficace.
- Code:
------ PAGE 2 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 1
Apparence:
- Character : Zobjets05, Ton : 0, Regarde en Haut, Modèle n°3, Opacité : 255, Transparence : Normal
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Le plus rapide
- Fréquence de déplacement: la plus haute
Options:
- Direction Fixe
- Au dessus de tout
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Commentaire : Lancement
<>Modifier position d'un évènement : [Grenade], X: [0001], Y: [0002], Bas
<>Condition : si la touche A est préssée
<>Condition : si la variable [0014: Direction héros] est égale à 8
<>Commentaire : Haut
<>Attendre 2 Frames
<>Déplacer l'évènement : Grenade
: : Un pas vers le haut
: : Un pas vers le haut
: : Un pas vers le haut
: : Un pas vers le haut
: : Un pas vers le haut
<>Attendre 10 Frames
<>Variable(s) [0013: Etat de la grenade] rendre égale à 2
<>
: Fin
<>Condition : si la variable [0014: Direction héros] est égale à 2
<>Commentaire : Bas
<>Attendre 2 Frames
<>Déplacer l'évènement : Grenade
: : Un pas vers le bas
: : Un pas vers le bas
: : Un pas vers le bas
: : Un pas vers le bas
: : Un pas vers le bas
<>Attendre 10 Frames
<>Variable(s) [0013: Etat de la grenade] rendre égale à 2
<>
: Fin
<>Condition : si la variable [0014: Direction héros] est égale à 4
<>Commentaire : Gauche
<>Attendre 2 Frames
<>Déplacer l'évènement : Grenade
: : Un pas haut-gauche
: : Un pas haut-gauche
: : Un pas vers la gauche
: : Un pas bas-droite
: : Un pas bas-droite
<>Attendre 10 Frames
<>Variable(s) [0013: Etat de la grenade] rendre égale à 2
<>
: Fin
<>Condition : si la variable [0014: Direction héros] est égale à 6
<>Commentaire : Droite
<>Attendre 2 Frames
<>Déplacer l'évènement : Grenade
: : Un pas haut-droite
: : Un pas haut-droite
: : Un pas vers le droite
: : Un pas bas-droite
: : Un pas bas-droite
<>Attendre 10 Frames
<>Variable(s) [0013: Etat de la grenade] rendre égale à 2
<>
: Fin
<>
: Fin
<>
Donc si la touche shift est enclanchée lancer les conditions pour determiner vers où la grenade va être lancée. A vous de travailler sur ce lancé, j'ai fait au plus simple, ca fait assez propre. Puis une fois posée elle enclanche le compte à rebours
- Code:
------ PAGE 3 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 2
Apparence:
- Character : Zobjets05, Ton : 0, Regarde en Haut, Modèle n°3, Opacité : 255, Transparence : Normal
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Direction Fixe
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Commentaire : Compte à rebours
<>Attendre 2 Frames
<>Afficher une image : n°1, '5', pixel haut-gauche (X: [0016], Y: [0017]), (100%,100%), 255, Normal
<>Attendre 10 Frames
<>Afficher une image : n°1, '4', pixel haut-gauche (X: [0016], Y: [0017]), (100%,100%), 255, Normal
<>Attendre 10 Frames
<>Afficher une image : n°1, '3', pixel haut-gauche (X: [0016], Y: [0017]), (100%,100%), 255, Normal
<>Attendre 10 Frames
<>Afficher une image : n°1, '2', pixel haut-gauche (X: [0016], Y: [0017]), (100%,100%), 255, Normal
<>Attendre 10 Frames
<>Afficher une image : n°1, '1', pixel haut-gauche (X: [0016], Y: [0017]), (100%,100%), 255, Normal
<>Attendre 10 Frames
<>Afficher une image : n°1, '0', pixel haut-gauche (X: [0016], Y: [0017]), (100%,100%), 255, Normal
<>Attendre 10 Frames
<>Effacer une image : n°1
<>Afficher une animation sur [Grenade], [Explosion]
<>Attendre 10 Frames
<>Variable(s) [0013: Etat de la grenade] rendre égale à 3
<>
Une fois le compte fini, la grenade explose (Là encore, vous pouvez imaginer une grenade qui foire, dans ce cas il faudra tout simplement imaginer un taux de qualité, disons 80% : Rendre égal la variable [réussite] entre 0 et 100. Si [réussite] est supperieure à 79 alors, grenade n'explose pas mais disparrait (donc [0013: Etat de la grenade] rendre égale à 0) J'ai pas essayé le taux de réussite mais logiquement ca devrai fonctionner ainsi.
- Code:
------ PAGE 4 ------
Conditions de l'évènement :
- La variable [0013:Etat de la grenade] est supérieur ou égal à 3
Apparence:
- Aucun(e)
Mode de déplacement:
- Type de déplacement : Fixe
- Vitesse de déplacement: Lent
- Fréquence de déplacement: Basse
Options:
- Animé lorsqu'il se déplace
Conditions de déclenchement:
- Processus Parallèle
Commandes d'évènement:
<>Attendre 10 Frames
<>Variable(s) [0013: Etat de la grenade] rendre égale à 0
<>
On attend quand même un peu sinon ca fait buguer l'event. C'est à cet endroit éventuellement on pourra mettre une condition permettant de recommencer à 0 et pouvoir lancer une nouvelle grenade.
Dans le cas ou vous voudriez avoir un compteur grenade et un taux d'efficacité, il faudra évidement faire un état pour chaque possibilité. Là après ce cours, je pense que cette partie sera assez simple pour vous. Voila
Merci de votre attention. La démo est actualisée et comprend donc le système grenade