Partagez
Aller en bas
avatar
zoneneutre
Membre

Nombre de messages : 129
Age : 30
Distinction : aucune
Date d'inscription : 17/03/2008

Comment économiser pas mal d'event de téléportations

le Mar 9 Sep 2008 - 23:33
Tutoriel de Persephone (Compatible Vx).

Comment fait-on, lorsqu'on atteint le bord d'une map, pour téléporter sur une autre map? En général, on se retrouve avec le bord de ces 2 maps tartiné d'événements:



On a là 26 événements. Vous vous retrouvez donc à faire du copier-coller sur tout le bord de la map, en modifiant à chaque fois le point de téléportation. Assez gonflant, non?

- Ce qu'on va faire -

Alors effacez-moi tout ça et ne gardez qu'un seul événement, sur la 1ère map, qu'on appellera "Map 1".
Mettez-le ds un coin de votre map, en Processus Parallèle, Au dessus ou Sous le héros afin qu'il n'interfère pas avec le jeu.
Parfait, on va pouvoir passer à la prog maintenant. Mémorisez la position du héros ds des variables appelées respectivement "ID map", "X map", "Y map".
A présent, admettons que map 1 fasse 20 sur 15 et que vous souhaitez envoyer votre personnage sur la map 2 (qui fait la même taille), et ce sur tout le bord droit (sur le dessin, de toute la partie bleue de map 1 vers toute la partie violette de map 2).



Lorsque votre personnage se trouve sur l'une des cases de la dernière colonne (en bleu), il a pour coordonnées Y=(un nombre quelconque) X=19 (en effet, la première colonne compte pour 0). Puisque votre événement parallèle enregistre ces coordonnées, Y map=(nombre quelconque), X map=19 et ID map=1 (<- le numéro de la map).
A l'inverse, les coordonnées des points d'arrivées sur la colonne gauche de la map2 sont Y=(nombre quelconque), X=0 et ID=2.
Nous allons alors donner les deuxièmes coordonnées comme position mémorisée à la base, afin que lorsqu'on reviendra à la position mémorisée elle correspondra aux coordonnées d'arrivée et non à celles de départ.

Mettez ds l'événement une fourchette de condition:
<>Si variable (X map) 19
<>Variable(s): (X map) =, 0
<>On ne change pas Y
<>Variable(s): (ID map) =, 2
<>Attendre 0,2 sec. ( sinon à peine le bord du charset et non du personnage aura toucher une case de la colonne qu'il sera téléporté. Il faut lui laisser le tps de terminer son pas.)
<>Revenir à la position: ID (ID map), X (X map), Y map (Y)
<>
<>Fin

Normalement, depuis n'importe quel point de la colonne de coordonnée X=19 vous devriez arriver sur la case correspondante sur l'autre map.
A présent nous allons nous occuper du retour.

Créez un événement parallèle sur la deuxième map et mettez-y la même chose que précedemment, en utilisant les mêmes variables:
<>Mémoriser la position : ID (ID map), X (X map), Y (Y map)
<>Si variable (X map) 0
<>Variable(s): (X map) =, 19
<>On ne change pas Y
<>Variable(s): (ID map) =, 1
<>Attendre 0,2 sec.
<>Revenir à la position: ID (ID map), X (X map), Y map (Y)
<>
<>Fin

Voilà! Notre système de téléportation simplifié est fait, ce qui vous permet d'économiser un max d'événements! Normalement, tout fonctionne à merveille et quand votre héros arrive au... Quoi? Un bug?
En effet: vous remarquerez sans doute qu'une fois votre personnage arrivé sur la 2e map, il fait immédiatement demi-tour et se retrouve téléporté sur la 1ere map qui le retéléporte à nouveau sur la 2e et ainsi de suite. C'est tout simplement que lorsqu'il arrive sur l'autre map, il se retrouve "détecté" par l'autre événement de téléportation qui se déclenche. C'est pourquoi il nous faut modifier légèrement les coordonnées, pour qu'il arrive une case plus loin:
Dans l'événement de la map 1:
<>Si variable (X map) 19
<>Variable(s): (X map)=, 1")
<>On ne change pas Y
<>Variable(s): (ID map) =, 2
<>Attendre 0,2 sec.
<>Revenir à la position: ID (ID map), X (X map), Y map (Y)
<>
<>Fin

Dans le 2e:
<>Mémoriser la position : ID (ID map), X (X map), Y (Y map)
<>Si variable (X map) 0
<>Variable(s): (X map)=, 18
<>On ne change pas Y
<>Variable(s): (ID map) =, 1
<>Attendre 0,2 sec.
<>Revenir à la position: ID (ID map), X (X map), Y map (Y)
<>
<>Fin

C'est réglé! Ce système marche également à la verticale où là ce sont les Y que vous devez modifier et laissez intacts les X.

- "Et si mes deux maps ne font pas la même taille?" -

Ce système de téléportation se complexifie un peu si vos maps ne sont pas de la même taille. En effet vous devrez calculer la différence de coordonnées qui existent entre les deux maps. Je vous donne un exemple:
Ma map1 fait 40 sur 40 tandis que ma map2 en fait 25 sur 25, qui est un pont, et qui se situe à droite de ma 1ère carte.
Je souhaite que lorsque mon personnage se retrouve sur le point de s'engager sur la pont, il s'y téléporte. Je devrais donc me retrouver avec cet événement:
<>Mémoriser la position : ID (ID map), X (X map), Y (Y map)
<>Si variable (X map) 39
<>Variable(s): (X map)=, 1
<>Je ne change pas Y
<>Variable(s): (ID map) =, 2
<>Attendre 0,2 sec.
<>Revenir à la position: ID (ID map), X (X map), Y map (Y)
<>
<>Fin

Mais le problème, c'est que puisque ma map2 fait 25x25, si mon personnage a Y≠zone d'interface entre les 2 maps (zone bleue) le point d'arrivée n'existe pas et donc le programme plantera ^^'. Et si, dans la première map, le personnage n'a rien pour être bloqué (zone jaune), je risque de le retrouver dans l'eau lorsqu'il passera sur la 2e map:


Alors comment faire? Simplement limiter la zone de téléportation au début du pont (zone rouge) avec les coordonnées. Bien sûr, à ce nv, 2 cases à configurer, on peut utiliser la façon de faire traditionnelle mais cela pourra vous servir pour exclure d'autres endroits, comme par exemple, empêcher le joueur de terminer sur le mur d'une maison qui ne commence que sur la 2e map.
Attention!
- primo, nous n'allons plus utiliser la fonction "=" en ce qui concerne le changement de X et maintenant de Y mais "-" ou "+"
- secundo, étant donné la différence de taille des maps, le pont n'est pas considéré comme étant aux mêmes coordonnées:
Coordonnées du début du pont (map1): Y=(19 et 20)
Coordonnées de la suite du pont (map2): Y=(13 et 14)

<>Mémoriser la position : ID (ID map), X (X map), Y (Y map)
<>Si variable (X map) 39
<>Si variable (Y map) 19 ou plus
<>Si variable (Y map) 20 ou moins (<- vous pourriez mettre "=" tant que vous y êtes, mais il s'agit vraiment de chercher à délimiter une zone qui pourrait être plus grande)
<>Variable(s): (X map)= -, 38
<>Variable(s): (Y map)= -, 6 (<- 19 - 13 = 20 - 14 = 6)
<>Variable(s): (ID map) =, 2
<>Attendre 0,2 sec.
<>Revenir à la position: ID (ID map), X (X map), Y map (Y)
<>
<>Fin

Pour le retour vous inversez: vous soustrayez au lieu d'ajouter et vice-versa

Tutoriel que celui qui l'a posté n'a toujours pas compris, malgré les manqe d'image des screens de commande de l'event. Merci à celui qui réussira à résoudre ce problème.
avatar
zoneneutre
Membre

Nombre de messages : 129
Age : 30
Distinction : aucune
Date d'inscription : 17/03/2008

Re: Comment économiser pas mal d'event de téléportations

le Ven 7 Nov 2008 - 12:00
Up !
Sa peut toujours servir.
avatar
AnthO'
Membre

Nombre de messages : 2202
Age : 25
Localisation : Orléans
Distinction : Panda d'élite

[Wax Rolling Eyes]
Date d'inscription : 05/01/2008
http://anthonybourgouin.fr

Re: Comment économiser pas mal d'event de téléportations

le Ven 7 Nov 2008 - 21:20
Tu sais le up n'est pas forcément utile ... si ton tutos est utilisé les membres le chercherons dans tous les autres.
Mais comme tu veut...
(Fin du flood)
avatar
zoneneutre
Membre

Nombre de messages : 129
Age : 30
Distinction : aucune
Date d'inscription : 17/03/2008

Re: Comment économiser pas mal d'event de téléportations

le Mer 3 Déc 2008 - 10:44
Encore un up, même la d'où viens ce tutoriel des gens demande les screens des commandes d'events, s'il réussissent à mettre les screen des commandes d'event avant je les placerais sinon à vous de jouer pour aider les gros débutants.

Merci d'avance
avatar
ASHKA
Membre

Nombre de messages : 242
Age : 36
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

Re: Comment économiser pas mal d'event de téléportations

le Mer 3 Déc 2008 - 12:00
J'ai fait un tuto semblable à l'epoque où j'etudiais les events ...
Attends que je fouille mon DDE.

Houla, t'as de la chance, toi !!

Bon, c'est du XP ( VX n'existais pas encore ), mais ça reste valable.
J'espere que ça t'aidera :



ASHKA
avatar
zoneneutre
Membre

Nombre de messages : 129
Age : 30
Distinction : aucune
Date d'inscription : 17/03/2008

Re: Comment économiser pas mal d'event de téléportations

le Sam 6 Déc 2008 - 0:10
Hé bien merci l'ami !
ça servira beaucoup pour les débutants.

Sinon une petite question avant de mettre résolue !

L'image de la commande de l'event la fin est elle semblable ou non ?
Car y'a encore une suite sur ton image il me semble ^^
avatar
ASHKA
Membre

Nombre de messages : 242
Age : 36
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

Re: Comment économiser pas mal d'event de téléportations

le Sam 6 Déc 2008 - 10:06
La suite, c'est :

- Rendre variable [2] Coord Y heros == 0
- Téléportation selon variable ID : [3] X : [1] Y : [2]

Rien de different en somme.

ASHKA
avatar
zoneneutre
Membre

Nombre de messages : 129
Age : 30
Distinction : aucune
Date d'inscription : 17/03/2008

Re: Comment économiser pas mal d'event de téléportations

le Sam 6 Déc 2008 - 11:09
Ok merci donc screen de commande d'event résolu
Par contre je voulais savoir comment ça se passe si on fait une map 40 par 40 ou 50 par 40 ?
on laisse les mêmes variables ?
Je demande ça parce que j'ai test et ça me téléporte n'importe où sur une autre map.
Et savoir à quoi correspont certaine variables, car j'ai l'impression que certaines sont le nuéro de la map en question ?

Edit : et je crois comprendre la variable Id map téléporte à la carte du numéro dont il est égal et la variable X téléporte à un point du même endroit sur la map suivante par rapport où l'on c'est placé sur la map précédente non et en ce qui concerne la condition de variable pour les coordonné x ou y c'est donc la taille de la map ?
avatar
zoneneutre
Membre

Nombre de messages : 129
Age : 30
Distinction : aucune
Date d'inscription : 17/03/2008

Re: Comment économiser pas mal d'event de téléportations

le Mar 2 Juin 2009 - 1:22
Je me permet de remonter ce topic car j'ai pu voir que des gens ont des problèmes de lag ^^

Sinon il serait sympa de pouvoir le mettre dans un pack de démo (si possible biensur ^^).

Encore désolé et à bientôt !
avatar
kordarr
Modérateur

Nombre de messages : 1838
Age : 28
Localisation : île de la réunion, Le Tampon.
Distinction : Auto-proclamé sex-symbol de la commu'
Frère jumeau de Jonathan ( Secret Story )
Exhibitionniste en herbe
[Mist' & Coco' Smile]
Fan n°1 de Coco'
Psychopathe en chef
Date d'inscription : 05/11/2008

Re: Comment économiser pas mal d'event de téléportations

le Mar 2 Juin 2009 - 9:32
...t'as de la chance que je sois de bonne humeur, parsqu'en fait ça sert à rien ce que tu fais et moi ça me gave les trucs qui servent à rien...On up pas de 6 mois pour dire "ya des gens qui pourraient en avoir besoin" s'il cherche il le trouverons.

Sinon il serait sympa de pouvoir le mettre dans un pack de démo (si possible biensur ^^).
...Pas compris...
avatar
zoneneutre
Membre

Nombre de messages : 129
Age : 30
Distinction : aucune
Date d'inscription : 17/03/2008

Re: Comment économiser pas mal d'event de téléportations

le Mar 2 Juin 2009 - 19:12
Le titre je vais le changer et inclure un mot qui puissent être trouver dans la recherche facilement.
Ou je trouverais une autre alternative.
Grâce à ça je vais peut être faciliter les choses !
Non en fait je voulais dire le mettre dans un pack de tuto ou autres.
Oui j'ai fait un Nécro Désolé encore !
Merrci quand même
(Ce site)
Contenu sponsorisé

Re: Comment économiser pas mal d'event de téléportations

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum