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

383 connectés actuellement

30734434 visiteurs
depuis l'ouverture

1399 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Alex d'Or

Lunae - le bazar d'Emz0

RPG Maker - La Communauté

RPG Fusion

Zarok

Tous nos partenaires

Devenir
partenaire



Détecter des zones de la carte avec des variables

Comment détecter si un point entre ou sort d'une zone, c'est la base de beaucoup dans la programmation ! Exemple : une zone spéciale de la carte où il neigera quand le héros s'y trouvera.

Ecrit par Joke le 01/07/2008


❤ 1

Ce tutoriel est utilisable pour tous les RPGmaker ! (2000, 2003, XP, VX)


Ce tutoriel est incontournable !
Utile pour les A-RPG, mais aussi des mini-jeux et diverses utilisations.

Ce tutoriel vous explique comment détecter si un point imaginaire est à l'intérieur d'un rectangle imaginaire, par exemple : si le héros est sur une zone spéciale de la carte, si le héros est proche d'un monstre, si quelque chose est dans une certaine zone que vous définirez.
Une base à connaître de la programmation qui vous permet un peu tout par exemple si un curseur que l'on pourrait déplacer au pixel près est sur un bouton du menu ou non.

Ce tutoriel est destiné à ceux qui maîtrisent déjà les bases de RPG maker et veulent pousser plus loin la programmation, mais il peut aussi instaurer de bonnes bases aux débutants.


Il faut bien connaître ce tutoriel car je ne vais pas vous ré-expliquer ce que sont des coordonnées et des variables :
Tout, tout, tout sur les variables


Les zones par variables.
C'est le nom barbare que j'ai trouvé pour une base toute simple à beaucoup de choses dans la programmation.

J'entends par là des zones rectangulaires imaginaires où on va pouvoir détecter si un point est à l'intérieur ou à l'extérieur.

Hein ? Qu'est ce que j'sors comme connerie inutile ?

Un exemple simple dans une carte du monde : (aux zones climatiques farfelues)

image

Le point c'est le héros, la zone c'est celle que je montre.
Dans tous les cas, si le héros est dans ce rectangle, il neige !
Comment programmer en sorte qu'il neige dès que le héros entre dans cette zone ?

Voilà ce que j'appelle les zones par variables.




LA BASE :

Il y a trois façon de déterminer une zone :

-Déterminer une zone par deux points.
Surtout utile pour des zones sur la carte !


-Déterminer une zone par un seul point.
Même théorie que la première technique, mais surtout pour des zones autour des personnages mobiles !


-Déterminer une zone par comparaison de distance.
Même effet que la deuxième technique, mais plus simple et contractée, et à partir d'une autre théorie !





Zone par deux points

Je vais considérer que vous savez ce sont des coordonnées, et comment les utiliser dans RPG maker.

Pour commencer je vais être purement mathématique, je ne vais pas parler de coordonnées d'image, ni de coordonnées de cartes, mais simplement d'une abscisse en haut à gauche (comme RPG maker), et de points par rapport à cette abscisse.
image

On a :
L'abscisse (X=0, Y=0) en haut à gauche comme dans RPG maker
Le point A défini par : Xa, Ya
Le point B défini par : Xb, Yb
Le point C défini par : Xc, Yc

1) Détecter si le point est à l'intérieur de la zone

Si le point C est dans la zone, c'est que C est entre A et B, ou plus précisément :
Xc est entre Xa et Xb
Yc est entre Ya et Yb


L'abscisse pourrait être le point 0 en haut à gauche de la carte, Xa, Ya, Xb et Yb les coordonnées fixes de deux points sur la carte, Xc et Yc les coordonnées variables du héros

L'abscisse pourrait être le point 0 en haut à gauche de l'écran, Xa, Ya, Xb et Yb les coordonnées par écran fixes des deux coins imaginaires d'une image, Xc et Yc les coordonnées par écran de l'mage d'un curseur

Vous pigez rien ? Retournons dans le concret, alors :

image

Si le héros est dans la zone, ça veut dire que :
X héros (Xc) est entre 56 (Xa) et 88 (Xb)
Y héros (Yc) est entre 40 (Ya) et 77 (Yb)

Comment je sais les coordonnées des points A et B ?
Il suffit de le lire dans la barre en bas de RPG maker :

image

Ben c'est pas compliqué !


RPGmaker ne sait pas faire la condition "si variable "" est entre "" et "".
On va alors utiliser "supérieur ou égal à", "inférieur ou égal à"

Voilà le code qui fait de la neige sur ma carte du monde, il serait donc simplement dans un événement en processus parallèle :

modifier variable : "X héros" rendre égal à coordonnée X du héros
modifier variable : "Y héros" rendre égal à coordonnée Y du héros
condition : si "X héros" supérieur ou égal à "56"
--condition : si "X héros" inférieur ou égal à "88"
----condition : si "Y héros supérieur ou égal à "40"
------condition : si "Y héros inférieur ou égal à "77"
------effet météorologique : neige
------attendre : 0.3sec
------stopper cet événement
------<>
------fin
----<>
----fin
--<>
--fin
<>
fin
effet météorologique : Aucun
attendre : 0.3sec


Les conditions sont l'une dans l'autre car il faut que les 4 conditions soient réunies pour savoir que le point est à l'intérieur.

J'ai fais "stopper cet événement" si les conditions sont remplies, ça revient à relancer le code depuis le début au lieu d'aller jusqu'à la fin, donc on ne va pas jusqu'au "effet météorologique : Aucun" qui lui sera actif lorsqu'on sera hors zone.

Et voilà, avec ce code, si vous entrez dans cette zone de la carte, il y a de la neige, sinon il n'y en aura pas.

C'est la condition pour savoir si le héros est à l'intérieur de la zone, mais ça pourrait être intéressant de vérifier si le héros sort d'une zone, aussi !
C'est la même recette mais utilisée à l'envers :


2) Détecter si le point est à l'extérieur de la zone

image

Dans ce cas là, dès qu'on sort de cette zone, on arrive sur la carte du monde !

Si X héros et Y héros sont en dehors de la zone, c'est que :

soit :
X héros est inférieur à 2 (Xa)
ou
X héros est supérieur à 18 (Xb)
ou
Y héros est inférieur à 5 (Ya)
ou
Y héros est supérieur à 17 (Yb)


C'est simplement logique, alors j'arriverais pas à donner plus d'explication, réfléchissez simplement...

Donc pour appliquer ça en code :
modifier variable : "X héros" rendre égal à coordonnée X du héros
modifier variable : "Y héros" rendre égal à coordonnée Y du héros
condition : si "X héros" inférieur à "2"
<>téléporter l'équipe : carte du monde
<>
fin
condition : si "X héros" supérieur à "18"
<>téléporter l'équipe : carte du monde
<>
fin
condition : si "X héros" inférieur à "5"
<>téléporter l'équipe : carte du monde
<>
fin
condition : si "X héros" supérieur à "17"
<>téléporter l'équipe : carte du monde
<>
fin
attendre : 0.3sec


Tout simplement !

Alors cette méthode, je vous la montre sur des coordonnées de map car c'est le plus simple, mais on peut l'utiliser pour des coordonnées d'images !
On peut l'utiliser pour beaucoup de choses, surtout si vous faites un A-RPG !




Zone par centre (un seul point)

Une zone à partir d'un seul point au lieu de deux ?
Pourquoi faire ?

Ben par exemple, je veux qu'un monstre marche au hasard si le héros est loin, et suive le héros si le héros est près du monstre.

Pour changer, on va utiliser les coordonnées écran au lieu des coordonnées simples, les coordonnées écran ont pour abscisse le coin haut gauche de l'écran et sont précises au pixel près, idéales pour les A-RPG et avoir une vrai précision.

image

Voilà pourquoi ça revient au même que la méthode "deux points", car tu as les coordonnées du héros : Xh, Yh, et les coordonnées du monstre Xm, Ym, et à partir de ça tu dois trouver les points A et B !

J'ai programmé là un rayon de 60 pixels, donc le point A est à 60 pixels en haut à gauche du monstre, le point B est à 60 pixels en bas à droite du monstre.
Pour le point A, en haut à gauche c'est vers l'abscisse, vers le zéro, donc on enlève 60 pixels.
Pour le point B, en bas à droite c'est dans le bon sens, donc on ajoute 60 pixels.
Pour savoir si le héros est dans la zone, c'est les mêmes conditions que plus haut ! Sauf que cette fois-ci il faut calculer les points A et B, contrairement à avant où on les cherchait sur la carte.

Voilà alors le code pour savoir si le héros est à moins de 60 pixels du monstre :

modifier variable : "Xh" rendre égal à coordonnée X écran du héros
modifier variable : "Yh" rendre égal à coordonnée Y écran du héros
modifier variable : "Xm" rendre égal à coordonnée X écran du monstre
modifier variable : "Ym" rendre égal à coordonnée Y écran du monstre
modifier variable : "Xm" soustraire "60"
modifier variable : "Ym" soustraire "60"
condition : si "Xh" supérieur ou égal à "Xm"
--condition : si "Yh" supérieur ou égal à "Ym"
--modifier variable : "Xm" additionner "120"
--modifier variable : "Ym" additionner "120"
----condition : si "Xh" inférieur ou égal à "Xm"
------condition : si "Yh" inférieur ou égal à "Ym"
------déplacer événement "monstre" pas vers le héros
------attendre : 0.3sec
------stopper cet événement
------<>
------fin
----<>
----fin
--<>
--fin
<>
fin
déplacer événement "monstre" pas aléatoire
attendre : 0.3sec


Avec ce code, le monstre suit le héros si le héros s'en approche, sinon il se déplace au hasard !
Pourquoi j'ai fais "additionner 120" au lieu de "60" ? Parce qu'on a déjà fais un "soustraire 60", alors il faut additionner le double.

On pourrait faire pareil avec les coordonnées simples (carreaux) plutôt que les coordonnées écran (pixel), au lieu de soustraire 60 (pixels), par exemple, on enlèverait 3 (carreaux)



Comparaison de distance (Alternative à "zone par centre")

Une comparaison de distance ?
C'est plus simple à faire mais plus délicat à expliquer.
Ça a exactement le même effet que la zone par centre sauf que c'est plus simple à faire et ça ne fait pas partit de la même théorie !

Au lieu d'une zone imaginaire, on compare simplement les distance, par exemple savoir si entre le "perso 1" et le "perso 2" il y a moins de 3 carreaux d'écart.
Un écart de distance, c'est une différence de coordonnées : Vous êtes d'accord que si "perso 1" est aux coordonnées X5, Y6 et "perso 2" est aux coordonnées X8, Y10, il y a 8-5=3 carreaux d'écart horizontalement et 10-6=4 carreaux d'écart verticalement. Il suffit de soustraire les coordonnées ! Le truc à comprendre c'est que le résultat peut être négatif !

Si on soustrait les coordonnées de "Perso 1" aux coordonnées de "Perso 2"
Xdiff = Xperso2 - Xperso1
Ydiff = Yperso2 - Yperso1

-Si X diff est négatif, Xperso1 est donc une valeur plus grande que Xperso2, donc le perso1 est à droite du perso2, et s'il y a moins de 3 carreaux d'écart en X entre les deux, c'est que le résultat est entre -3 et 0, donc "X diff" >="-3"

-Si X diff est positif, Xperso1 est donc une valeur plus petite que Xperso2, donc le perso1 est à gauche du perso2, et s'il y a moins de 3 carreaux d'écart en X entre les deux, c'est que le résultat est entre 0 et 3, donc "X diff" <="3"

-Si Y diff est négatif, Yperso1 est donc une valeur plus grande que Yperso2, donc le perso1 est en bas du perso2, et s'il y a moins de 3 carreaux d'écart en Y entre les deux, c'est que le résultat est entre -3 et 0, donc "Y diff" >="-3"

-Si Y diff est positif, Yperso1 est donc une valeur plus petite que Yperso2, donc le perso1 est en haut du perso2, et s'il y a moins de 3 carreaux d'écart en Y entre les deux, c'est que le résultat est entre 0 et 3, donc "Y diff" <="3"



C'est les observations connes qui nous amènent donc au code tout couillon :


<>modif variable "X diff" = coord "X perso 2"
<>modif variable "Y diff" = coord "Y perso 2"
<>modif variable "X diff" - (soustraire) coord X "perso 1"
<>modif variable "Y diff" - (soustraire) coord Y "perso 1"
condition : si "X diff" >= -3
--condition : si "X diff" <= 3
----condition : si "Y diff" >= -3
------condition : si "Y diff" <= 3
--------<> le perso 1 est à moins de 3 carreaux du perso 2
--------<>
------fin
-----<>
----fin
--<>
--fin
<>
fin


C'est le code pour détecter si le perso 1 est à moins de 3 carreaux du perso 2, vous n'avez qu'à modifier le "3" pour mettre le nombre que vous voulez si vous voulez par exemple voir s'il est à moins de 6 carreaux, vous pouvez même faire une zone de la forme et position que vous voulez autour du perso, en mettant les valeurs que vous voulez aux quatre conditions !

Dite vous que c'est les bases du vectoriel en fait ^^" Pour savoir la valeur en X d'un vecteur AB lorsqu'on connait les coordonnées des points A et B, on fait Xb-Xa et non Xa-Xb ! Extrémité moins Origine, simple question de logique !

Pourquoi je dis ça ? Car c'est IMPORTANT <font color="yellow">si vous voulez que la zone soit autour du perso 1, vous devez faire comme je l'ai fais là :
Xdiff = Xperso2 - Xperso1
Ydiff = Yperso2 - Yperso1
Exemple : Personnage qui va peut-être être touché moins Personnage qui attaque !
Et non l'inverse !!


Ça n'a pas d'incidence pour les zones carrées pas de soucis, mais si vous voulez faire une zone bizarre genre "-3>=Xdiff>=5" et "-8>=Ydiff>=2" il sera important de respecter cet ordre !</font>

Et pour au contraire, savoir si le perso 1 est à plus de 3 carreaux du perso 2, c'est simplement... le contraire ^^


<>modif variable "X diff" = coord "X perso 2"
<>modif variable "Y diff" = coord "Y perso 2"
<>modif variable "X diff" - (soustraire) coord X "perso 1"
<>modif variable "Y diff" - (soustraire) coord Y "perso 1"
condition : si "X diff" <= -3
--<> le perso 1 est à plus de 3 carreaux du perso 2
--<>
fin
condition : si "X diff" >= 3
--<> le perso 1 est à plus de 3 carreaux du perso 2
--<>
fin
condition : si "Y diff" <= -3
--<> le perso 1 est à plus de 3 carreaux du perso 2
--<>
fin
condition : si "Y diff" >= 3
--<> le perso 1 est à plus de 3 carreaux du perso 2
--<>
fin


/\ Les conditions ne sont plus les unes à l'intérieur des autres et elles sont inversées (exemple : >= au lieu de <=)

Avantages :
-Moins de ligne
-Plus facile à comprendre, je crois
-Seulement deux variables au lieu de quatre
-Plus facile pour donner la gueule qu'on veut à la zone (Pas forcément carrée, on peut par exemple X diff>=-2, X diff<=5, Y diff>=-3, Y diff<=8)

Inconvénient :
-Y'en a pas vraiment, en fait ! x) Mais c'est utile de connaître la méthode "zone par centre" aussi !



Vous détenez dorénavant le pouvoir absolu !

Voilà la base, maintenant si vous avez compris, vous pouvez tordre cette base pour faire plus compliqué encore.

Vous pouvez faire une séquence d'infiltration en faisant les conditions nécessaires pour savoir que le héros est dans le même couloir (donc zone par deux points) que le garde et dans son champ de vision. (donc zone par centre ou comparaison de distance)

Vous pouvez savoir au pixel près si deux événements se chevauchent (pour le missile d'un tir, par exemple)

Vous pouvez faire un menu personnalisé avec le curseur à déplacer pixel par pixel et savoir quand le curseur est sur un des boutons du menu.

Vous pouvez faire beaucoup à partir de cette base, il suffit d'être malin



Bilou !



Perséphone - posté le 01/07/2008 à 14:28:39 (3168 messages postés)

❤ 0

Sympa, tu montres pas mal de cas, j'aime beaucoup l'idée du changement météorologique en particulier.
Ça me rappelle mon tuto pour délimiter des zones de téléportation à une autre map plutôt de badigeonner les bords d'event ^^
(ici, excuse la pub mais ça fait vraiment écho ^^)


Joke - posté le 01/07/2008 à 15:40:39 (5090 messages postés)

❤ 0

Bilouteux fou

Héhé, pas de problème pour la pub, c'est bien de réunir ici tout ce qui se rapproche à ce concept ! :)

Dans BogossStory je fais pareil que ton tutoriel d'ailleur ! :) En organisant l'événement en sorte qu'il n'y ait que les "ID map" à choisir sur une page et rien à toucher au reste de la programmation qui se trouve sur la page de derrière ! ^^ En jouant avec les transitions : "téléportation début : aucune" "téléportation fin : écran vers le haut, gauche, etc" ce qui fait qu'on passe d'une map à l'autre sans transition noire mais dans un défilement direct où l'on voit les deux maps comme dans Zelda sur game-boy !



!!!!

Du coup j'en profite pour informer :
J'ai fais un autre tutoriel qui exploite beaucoup ce concept :
Système d'infiltration et gardes

!!!!



biloumaster.fr, mon joli site ouèb tout bô tout frai !


Salamanth - posté le 01/07/2008 à 16:18:21 (350 messages postés)

❤ 0

New Concept Maker

Yeah merci Joke, j'ai enfin capté le système de détection au pixel près, bien plus nickel que celui en fonction des coordonnées que j'utilisais avant ^^ J'avais en idée de programmer un ptit truc et ça m'a permis de le rendre quasi parfait ! Sympa de te revoir ici en tout cas :)

Et Bogoss Story, c'est pour quand ? :F


Joke - posté le 01/07/2008 à 16:40:01 (5090 messages postés)

❤ 0

Bilouteux fou

Aah au moins un pour qui ça sert ! ^^ Eh oui au pixel près tu peux tout faire ! Dans BogossStory les missile du bazoococotte (car ça devient un A-RPG avec un bazooka) sont précis avec un rayon de 10 pixels, par ce même principe ! ^^

Bogoss Story il faut attendre encore longtemps ! ^^"

Je comptais pas sortir d'autre démo mais je pense quand même sortir une deuxième démo officielle qui sera la dernière démo avant la sortie du jeu fini (qui sortira dans bien longtemps pck j'suis un gros trainard et que ce jeu est plus long qu'il ne le devrait, pour un jeu con !)

biloumaster.fr, mon joli site ouèb tout bô tout frai !


falco - posté le 18/07/2008 à 01:58:16 (19777 messages postés) -

❤ 0

Indie game Developer

Citation:

modifier variable : "Xh" rendre égal à coordonnée X écran du héros
modifier variable : "Yh" rendre égal à coordonnée Y écran du héros
modifier variable : "Xm" rendre égal à coordonnée X écran du monstre
modifier variable : "Ym" rendre égal à coordonnée Y écran du monstre
modifier variable : "Xm" soustraire "60"
modifier variable : "Ym" soustraire "60"
condition : si "Xh" supérieur ou égal à "Xm"
--condition : si "Yh" supérieur ou égal à "Ym"
--modifier variable : "Xm" additionner "120"
--modifier variable : "Ym" additionner "120"
----condition : si "Xh" inférieur ou égal à "Xm"
------condition : si "Yh" inférieur ou égal à "Ym"
------déplacer événement "monstre" pas vers le héros
------attendre : 0.3sec
------stopper cet événement
------<>
------fin
----<>
----fin
--<>
--fin
<>
fin
déplacer événement "monstre" pas aléatoire
attendre : 0.3sec



Stopper cet événement ?
Stopper tout les événements plutôt ?
Si c'est ça, je comprends pas trop pourquoi on l'a mit ici ^^"

Inexistence Rebirth - Inexistence - Portfolio


shadow450 - posté le 18/07/2008 à 10:46:33 (12 messages postés)

❤ 0

Salut!
Je trouve se tuto super mais j'ai un problème.
Déjà j'ai fait une légère modif. j'ai changer

Citation:

------déplacer événement "monstre" pas vers le héros


par démarrer un combat avec la condition de si victoire détruire cette évènement.
mais voilà quand je teste dès que la map commence le combat commence aussi alors que je suit loin du monstre.
merci d'avance de votre aide!


Joke - posté le 18/07/2008 à 20:55:40 (5090 messages postés)

❤ 0

Bilouteux fou

@shadow :

t'as pas fait une connerie genre :
modifier variable : "Xh" rendre égal à coordonnée X écran du héros
modifier variable : "Xh" rendre égal à coordonnée Y écran du héros
Ou
modifier variable : "Xh" rendre égal à coordonnée X écran du héros
modifier variable : "Yh" rendre égal à coordonnée X écran du héros
?

C'est le genre d'inattention qui m'arrive, c'est sûrement ça, vérifie bien tes variables et conditions si elles sont pareilles que les miennes

(aussi le rayon est peut-être un peu grand, si tu fais 60, c'est les coordonnées ECRAN, pas les coordonnées simples, hein !)


@Falco :

Non, non ! C'est "stopper cet événement" et non "stopper tout"
Tu n'as pas bien examiné !
Ce code sera dans un processus parallèle, et dans un événement boucle comme un processus parallèle ou un automatique, "stopper cet événement" ça revient à "retour au début de l'événement"

Comme ça l'événement ne se finit pas, et le "déplacer mouvement aléatoire" n'a pas lieu ! Si les conditions sont remplies, car si elles ne sont pas remplies, l'événement se finit bien avec son "déplacer mouvement aléatoire".

C'est une façon de détourner les "sinon", comme il y a quatre conditions, ça serait chiant d'utiliser les "sinon" ! C'est bien pratique ainsi !

Ca ou alors en utilisant une étiquette^^ Une étiquette avant les changements de variablew et conditions, et un retour à l'étiquette quand les conditions sont remplies.

biloumaster.fr, mon joli site ouèb tout bô tout frai !


trukbidule - posté le 22/09/2008 à 10:14:55 (14 messages postés)

❤ 0

petite question: comment fait t'on pour utiliser lescase au lieu des pixel,je suis un debutant ^^"

quand je lance mon jeu,le monstre se met tout de suite à me suivre ^^"


Joke - posté le 22/09/2008 à 21:51:06 (5090 messages postés)

❤ 0

Bilouteux fou

C'est expliqué, quand tu fais "modifier variable" tu peux rendre égal aux coordonnées X/Y ou aux coordonnées X/Y écran, les coordonnées X/Y simples sont celles au carreau, les coordonnées X/Y écran sont les coordonnées pixels par pixels.

Si ton monstre te suit tout de suite quand tu lance ton jeu avec les chiffres que j'ai donné dans ce tutoriel, c'est que tu as pris ses coordonnées X et Y normales et pas X et Y écran ce qui fait donc un rayon de 60 carreaux au lieu de 60 pixels (ou alors t'as foiré autre chose ! ^^")
Par exemple, un rayon de 2 carreaux suffirait.

Ouais vous pouvez poser des questions sur mes tutos, j'regarde toujours de temps en temps ! x)

biloumaster.fr, mon joli site ouèb tout bô tout frai !


trukbidule - posté le 24/09/2008 à 15:53:13 (14 messages postés)

❤ 0

d'accord,merci,j'essai de faire un pikmin avec RPG maker xp,et les zones par variables vont bien m'etre utile pour "selectionner" les pikmins ^^


kilam1110 - posté le 04/01/2009 à 13:01:27 (9159 messages postés)

❤ 0

tres bon tuto:sourit

New RPG Maker - Forum traitant du logiciel RPG Maker tout en français ! | SURVIVE V2.5 - Dégommez du zombie !


fizz26 - posté le 12/04/2009 à 11:31:17 (132 messages postés)

❤ 0

FIzz26 est de retour, fâcher avec Assassin's creed!

Joke, toi ta l'art de créer des super map...
Méga bon tuto ^^XD

Un skateparc de 1500 m3 à 1 million? Youpi c'est pour dans 2-3 ans!


Zaryel - posté le 24/06/2010 à 16:17:01 (45 messages postés)

❤ 0

J'aime beaucoup ce tuto, surtout celui aprés pour les zones de combat qui m'aide beaucoup pour ma carte du monde, et justement j'ai remarqué que le tilesets que j'avais pris pour ma carte du monde (car sur rpg maker xp il n'y en a pas) etait plutot restrain, et j'aimerai savoir si c'etait possible d'en avoir un parfait, style celui avec lequel tu fait ta carte du monde à l'air pas mal...
Donc voilà si c'etait possible d'en avoir un pareil ou presque j'en serai ravis =)
(et desolé pour le hors sujet complet)


arttroy - posté le 03/05/2012 à 01:06:13 (2394 messages postés)

❤ 0

Just working

Merci à toi pour ce super tuto il va me permettre de faire ma base de systême de combat la classe absolue !

:plusun²²²²²²

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Joke - posté le 31/01/2013 à 15:46:55 (5090 messages postés)

❤ 0

Bilouteux fou

V'la deux types de zones (entre autres) qui manquaient au tutoriel :

Losange :

Propriété particulière du losange droit :

image

|x| représente l'absolu de la valeur x, d'où le fait qu'on multiplie par -1 si XH-XM est négatif, pour le remettre positif :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
A = X écran Héros
A soustraire X écran Monstre
Si A < 0
   A multiplier -1
Fin de condition
B = Y écran Héros
B soustraire Y écran Monstre
Si B < 0
   B multiplier par -1
Fin de condition
A additionner B
Si A < distance maximale en pixel entre le héros et le monstre (Centre et une extrémité du losange)
  Le héros est dans le losange
Fin de condition



Cercle/Distance :

Simple application de pythagore, a²=b²+c²... Sauf que pour faire le carré on multiplie la variable par elle-même : a²=a*a, et on calcule à la main le carré du rayon pour la condition.

image

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
A = X écran héros
A soustraire X écran monstre
A multiplier par A
B = Y écran héros
B soustraire Y écran monstre
B multiplier par B
A additionner B
Si A < carré du rayon en pixel du cercle, calculé à la main (Pour un cercle de rayon 5 > 5²=5*5=25)
  Le héros est dans le cercle
Fin de condition



On peut aussi faire une zone en ellipse, ou en losange écrasé, mais j'ai la flemme d'expliquer, 'suffit juste de multiplier/diviser...

biloumaster.fr, mon joli site ouèb tout bô tout frai !


AntrHaXx - posté le 09/08/2013 à 00:17:23 (32 messages postés)

❤ 0

N'empêche le tuto claque! Merci beaucoup Joke!

athx


555Elixer - posté le 16/08/2013 à 21:58:20 (17 messages postés)

❤ 0

voilà un savant moyen de dire au joueur d'arrêter de jouer.

à chaque fois qu'il sauvegarde on lui demande s'il veut arrêter le jeu, s'il répond oui on l'envoie dans une salle délimitée par une zone, à chaque sortie de la zone on balance des FLASHS ROUGES.

résultat joueur bloqué dans le carré jusqu'à la prochaine réouverture du jeu.

#troll

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