Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV

Apprendre
RPG Maker

Guides
Tutoriels
Astuces
Making-of

Dans le
Forum

Section Entraide

Scripts: Rpg Maker XP.Ace / Programmes: RPG Maker XP.Ace / Jeux: Glixel / News: De nouvelles informations (...) / Tutos: Autotiles améliorés : Vagues /

Chat  

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

77 connectés actuellement

10649083 visiteurs
depuis l'ouverture

91 visiteurs
aujourd'hui



Barre de séparation

Partenaires





Au hasard

Hellsoft

Guelnika & E-magination

RPG Fusion

New RPG Maker

Leo-Games

Les deux derniers

Hellsoft

Planète Glutko

Nos autres partenaires

Devenir
partenaire




Gérer plusieurs terrains de combat sur une seule map
Ecrit par luminou

Bonjour et bienvenue à tous dans mon premier tuto.
Dans ce tuto, je vais tenter de vous expliquer comment créer différentes zones de combats, à l’aide des numéros des types de terrains. Des hautes herbes dans Pokémon pour ainsi dire.
Ce tuto va se séparer en trois parties :
- La détection du terrain (une variable).
- Le nombre de pas effectué sur le terrain (5 variable).
- Le déclanchement d’un combat en fonction du nombre de pas (1 variable).
Le tout assemblé avec une tonne de conditions (je plaisante).



I/ La détection du terrain

Pour commencer, nous allons assigner un N° de type au terrain désiré, personnellement j’ai choisi de l’herbe. Je vais donc conserver mon exemple :
Tout d’abord pressons la touche F9, puis l’onglet « Gestion des chipsets », Terrain et enfin nous assignons a l’herbe la valeur 1, comme ceci :
image

Maintenant, créons un événement en processus parallèle dans lequel on insère la variable [0001] appelée « carré » et assignons-lui la valeur du N° du type du terrain où se trouve le héro, comme ceci :
image

Et pour finir nous allons détecter si le héros se trouve dans le terrain en question ou pas, avec une simple condition :

Portion de code : Tout sélectionner

1
2
3
Si la variable [0001 : carré] a pour valeur 1
        Sinon :
        Fin.





II/ Calcul du nombre de pas effectués sur le terrain

Nous voici dans la partie la plus compliquée de l’algorithme car RMXP ne donne pas directement la possibilité de compter les pas du héros, mis à part les pas totaux. Je vous donne donc le code et l’expliquerai par la suite pour les plus courageux :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Variable [0003 : Pos X héro] rendre égale à la coordonnée X du héro.
Variable [0004 : Pos Y héro] rendre égale à la coordonnée Y du héro.
Si la valeur de [0003 : Pos X héro] est différente de la valeur de la Variable [0005 : Pos X Pré].
        Si la valeur de [0004 : Pos Y] héro est différente de la valeur de la Variable [0006 : Pos Y Pré].
                [0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].
                [0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].
                [0002 : Nombre pas] ajouté 1.
                Condition : si la variable [0007 : Pas requis] est égale à 0.
                        Variable [0007 : Pas requis] rendre égale à une valeur aléatoire entre 20 et 30.
                Sinon :
                Fin.
        Sinon :
                [0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].
                [0002 : Nombre pas] ajouté 1.
        Fin.
Sinon :
        Condition : si la valeur de [0004 : Pos Y] héro est différente de la valeur de la Variable [0006 : Pos Y Pré]. 
                [0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].
                [0002 : Nombre pas] ajouté 1.
        Sinon :
        Fin.
Fin.[code]
 
Voilà, maintenant je vous donne les EXPLICATIONS :
Pour commencer vous avez pu constater que la partie III empiète un peu sur notre partie II, ce qui est normal car certaines choses doivent être faites a un moment précis et cela offre une sécurité.
 
Entrons dans le vif du sujet :
Tout d’abord nous devons compter les pas du héro comme RMXP ne le fait pas directement nous allons détecter un mouvement par un changement de position (c’est bête à dire mais bon…).
Nous créons donc 4 variables, 2 pour détecter la position actuelle du héro et 2 pour sauvegarder la position précédente du héro. Si la position actuelle est différente de la position précédente, c’est donc qu’il ya eu déplacement. On assigne donc aux variables [0003 : Pos X Héro] et [0004 : Pos Y Héro] les coordonnées en X et en Y du héro, comme ceci (pour X) :
<img src="oniro_03" alt="image" />
 
Ensuite nous devons comparer ces coordonnées avec les coordonnées précédentes appelées [0005 : Pos X Pré] et [0006 : Pos Y Pré]. (Pour  la 1ère fois elles sont initialisées à zéro) à l’aide d’une condition par coordonnées et ajoutez si nécessaire +1 à la variable [0002 : Nombre pas] (qui compte les pas^^). Tous les cas de figures doivent être envisagés comme sur ce tableau :
<img src="oniro_04" alt="image" />
 
Analysons maintenant ce tableau et rapportons-le au code :
Dans le code nous imbriquons des conditions pour avoir tous les cas de figures.
Cas1 : Y oui et X non. Cela ce traduit par un déplacement de gauche à droite rien de compliqué la dedans on compare la position actuel avec la position précédente, mètre à jour la position précédente (avec  [0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].) et incrémenté la variable [0002 : Nombre pas].
Cas2 : X oui et Y non. Cela ce traduit par un déplacement de haut en bas toujours  rien de compliqué la encore on compare la position actuel avec la position précédente, mètre à jour la position précédente (avec  [0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].) et incrémenté la variable [0002 : Nombre pas].
Cas3 : X non Y non. Cela veut tout simplement dire que vous n’avais pas bougé ou que vous êtes sortie du terrain.
Cas4 : X oui Y non. Le cas le plus compliqué car à première vue il traduit un mouvement en diagonal (Nous supposons bien entendu ne pas disposer des déplacements de ce type), mais il ne traduit pas que ça il traduit aussi le fait de rentré dans l’herbe car les coordonnée étant initialisé à 0 et n’étant prisent en compte que lorsque le héro est dans les herbe la modification des deux coordonnée est synonyme d’entré dans les herbe (j’espère ne pas vous avoir embrouillé).
 
Bien, nous disions donc le cas N°4 est l’entrée dans l’herbe. Il faut donc :
- Mettre à jour les coordonnées précédentes des deux variables.
- Incrémenter la variable [0002 : Nombre pas] de +1.
- Et vous avez vu une condition supplémentaire avec :
[code]Condition : si la variable [0007 : Pas requis] est égale à 0.
                Variable [0007 : Pas requis] rendre égale à une valeur aléatoire entre 20 et 30.
Sinon :
Fin.



Comme le cas N°4 traduit l’entrée dans l’herbe, nous devons empiéter sur la partie III et générer un nombre de pas aléatoire pour nos combats. La condition permet juste d’éviter que le jeu ne génère un nombre a chaque passage dans l’algorithme (100 fois/sec je crois) mais juste une fois qu’il en a un (différent de 0) il arrête d’en chercher un. La seconde ligne permet de générer un nombre aléatoire (j’ai choisi entre 20 et 30 pas), et la troisième permet de le sauvegarder temporairement.

Voilà pour la partie II, nous venons de compter le nombre de pas faits par le héro et de générer un nombre de pas nécessaires à la rencontre d’un combat.



III Le déclanchement d’un combat en fonction du nombre de pas

Vous l’aurez deviné, nous allons juste comparez le nombre de pas effectués par rapport au nombre de pas requis.

Portion de code : Tout sélectionner

1
2
3
4
5
Condition : Si la variable [0002 : Nombre Pas] est supérieur ou égale à [0007 : Pas Requis].
        Déclencher un combat :….
        La variable [0002 : Nombre Pas] rendre égale à 0.
Sinon :
Fin.



Lors de la comparaison, nous mettons supérieur ou égal, comme ça en cas de problème (0002 > 0007), le combat se déclenche et 0002 est remis à 0.
Il ne reste plus qu'à assembler l’algorithme :
Nous mettons la partie II et III dans la première partie de la condition de la partie I et dans la deuxième partie de la condition (le sinon) nous réinitialisons les variables de position précédente à 0 (si le héros sort de l’herbe sa position précédente est égale a 0.
Au final le code donne ceci :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Variable [0003 : Pos X héro] rendre égale à la coordonnée X du héro.
Variable [0004 : Pos Y héro] rendre égale à la coordonnée Y du héro.
Si la variable [0001 : carré] a pour valeur 1
Si la valeur de [0003 : Pos X héro] est différente de la valeur de la Variable [0005 : Pos X Pré].
                Si la valeur de [0004 : Pos Y] héro est différente de la valeur de la Variable [0006 : Pos Y Pré].
                        [0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].
                        [0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].
                        [0002 : Nombre pas] ajouté 1.
                        Condition : si la variable [0007 : Pas requis] est égale à 0.
                                Variable [0007 : Pas requis] rendre égale à une valeur aléatoire entre 20 et 30.
                        Sinon :
                        Fin.
                Sinon :
                        [0005 : Pos X Pré] rendre égale à [0003 : Pos X héro].
                        [0002 : Nombre pas] ajouté 1.
                Fin.
Sinon :
                Condition : si la valeur de [0004 : Pos Y] héro est différente de la valeur de la Variable [0006 : Pos Y Pré]. 
                        [0006 : Pos Y Pré] rendre égale à [0004 : Pos Y héro].
                        [0002 : Nombre pas] ajouté 1.
                Sinon :
                Fin.
        Fin.
Condition : Si la variable [0002 : Nombre Pas] est supérieur ou égale à [0007 : Pas Requis].
                Déclencher un combat :….
                La variable [0002 : Nombre Pas] rendre égale à 0.
Sinon :
Fin.
 
Sinon :
        La variable [0005 : Pos X Pré] rendre égale à 0.
        La variable [0006 : Pos Y Pré] rendre égale à 0.
Fin.




Voilà j’espère que ce tuto vous a plus malgré sa taille, j’ai aussi fait une démo. (non disponible, http://www.megaupload.com/fr/?d=5R92ZUQP)
PS : Dans la démo les hommes vous indique :
- Position actuelle
- Position sauvegardée
- Nombre de pas effectués
- Nombre de pas nécessaires
Merci.

[hr]

Ecrit vers 2008.



Aucun commentaire n'a été posté pour le moment.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site:

Communauté: Accueil | News | Forum | Flash-news | Sorties | Chat | Commentaires | Galerie | Blogs | Articles perso | Screen de la semaine | Palmarès | Livre d'or | Recherche | Interviews | OST | L'Annuaire | Divers
Apprendre: Le Wiki | Tutoriels | Guides | Gaming-Live | Tests | Making-of
Télécharger: Programmes | Scripts | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | Collection Oniro | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Hébergés:
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis