Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

534 connectés actuellement

30732826 visiteurs
depuis l'ouverture

2805 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Hellsoft

Offgame

Lumen

ConsoleFun

Tous nos partenaires

Devenir
partenaire



Gérer plusieurs terrains de combat sur une seule map

Comment faire des hautes herbes façon Pokémon.

Ecrit par luminou


❤ 0

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



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) :
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 :
image

Analysons maintenant ce tableau et rapportons-le au code :
Dans le code nous imbriquons des conditions pour avoir tous les cas de figures.
Cas N°1 : 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].
Cas N°2 : 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].
Cas N°3 : X non Y non. Cela veut tout simplement dire que vous n’avais pas bougé ou que vous êtes sortie du terrain.
Cas N°4 : 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 :

Portion de code : Tout sélectionner

1
2
3
4
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.


Ecrit vers 2008.





e314 - posté le 16/06/2008 à 11:33:48 (183 messages postés)

❤ 0

Thinking out loud.

Euh, optimisable
Dans le compte du nombre de pas, on lit

Portion de code : Tout sélectionner

1
Variable [0007 : Pas requis] rendre égale à [0007 : Pas requis]. 



On n'en a pas besoin, c'est déjà "sauvegardé"!
(rendre égale...= sauvegarder!)

Portion de code : Tout sélectionner

1
Variable [0007 : Pas requis] rendre égale à une valeur aléatoire entre 20 et 30.



Il y a trois sortes de mathematiciens : ceux qui savent compter et ceux qui ne savent pas. Personne n'est jamais assez fort pour ce calcul!


Palamecia - posté le 16/06/2008 à 14:53:02 (22 messages postés)

❤ 0

Je re-aime les CMS...

Sinn je peu aussi vous proposer un tuto qui demande 0 variables, 0 intérupteurs et 0 conditions...

Tout d'abor il fau ouvrir sa bonne vieille vértion de RM2K3
Ensuit il sufit de créer des types de térain (F8) ou de garder ce qui sont proposés.

Il faut ensuit créer des groupes de monstres et gérer les types de terrain ou on peu les rencontrés dans un petit réctangle en bas à droite de la fenétre.

Si vous voulez que sur deux terrains de même type on afronte des monstres diférents, il faut créer une zone...

voila en quelques lignes j'ai réussi à décrir un moyen tout aussi efficasse... parcontre pour XP... ba je pensse pouvoir scripter sa assé facilemen...


luminou - posté le 17/06/2008 à 12:47:45 (1 messages postés)

❤ 0

salut

Palamecia:

j'ai ni RM2K3, ni les capapcitées en script ce tuto ets donc pour les personnes dans le meme cas que moi.

Les screens shoots ne sont pas visibles, je vais tenter d'y remedier.

Edit : Effectivement e314 la commande 0007 = 0007 est inutile je suis désoler c'est un vieu reste d'une ancienne solution que je cherche avant d'utiliser la condition qui le précéde on peut donc le suprimée.
Je ne sais pas comment réédité mon tuto je suis donc désoler pour les image ( et l'érreur) mais pour les image elle sont dans ma galerie Numéroté de 1 à 4 ( oniro-1 etc ...).

S'adapter ou mourir


Adronéus - posté le 29/07/2010 à 17:44:30 (1510 messages postés)

❤ 0

C'est un bon tuto, mais ça n'a rien à faire dans la rubrique "test".
Isn't it ?

Meilleur pour critiquer que pour maker.

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 | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
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
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers