Day.png);">
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/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

405 connectés actuellement

29378432 visiteurs
depuis l'ouverture

7799 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Level Up!

Planète Glutko

Eclipso

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RPG Maker XP] Contrôler un évènement par un autre


Alex RoiEsper - posté le 02/09/2014 à 17:17:33 (585 messages postés)

❤ 0

Whololo

Domaine concerné: Event ou Script
Logiciel utilisé: RPG Maker XP
Bonjour,

Je cherche à contrôler un évènement par un autre (soit par un évènement commun, soit par un évènement sur la map). Le problème est que sur RMXP il n'y a pas les fonctions de RM2003 super pratiques : Stocker l'ID d'un évènement, Appeler un évènement de la map, etc...

Voilà ce que j'aimerais faire :

1) Le joueur appuie sur une touche du clavier (autre que la touche entrée), un évènement capture cet appui de touche
2) On regarde si juste devant le héros il y a un évènement qui nous intéresse (l'équivalent de Stocker l'ID d'un évènement sous RM2003)
3) On change le statut de ce dernier évènement (le mieux serait même d'activer un de ses interrupteur locaux), en fonction de la touche appuyée

J'imagine que je suis obligé de passer par un script pour ça, non ?

Si oui, quelqu'un peut me montrer le genre de script qu'il faudrait ou dont je peux m'inspirer ?
Si non, comment je peux m'en sortir en events ?

Merci d'avance !


(PS : Je peux évidemment me coller à l'évènement qui serait en "Attendre l'appui d'une touche" mais le héros bloque à ce moment là, ça ne fait pas propre. D'autant plus que le joueur peut ne pas se coller à l'évènement, vu que ce n'est pas logique en soi.)

Alex d'or c trop fort | RMXP prog yolo | AlexZone | Ah, ça sent le roquefort


TheBigRoomXXL - posté le 02/09/2014 à 18:02:03 (237 messages postés)

❤ 0

el psy congroo

Je suis pas sur d'avoir comprit, tu veut que si le joueur appuis sur une touche et que ya l'event devant lui l'event change en fonction de la touche appuyer?
Et l'event est-il fixe?

Si c'est le cas ça donnera un event commun du genre:

Si joueur appuis sur touche A
Si joueur a coté de l'évent (sa tu le fait avec les variable x,y du joueur)
Alors interrupteur 1 on (se qui fait changer de page l'event)

Si joueur appuis sur touche B
Si joueur a coté de l'évent
Alors interrupteur 2 on
Ect...

C'est un peut laborieux comme methode mais ça devrait fonctionné!

En espérant avoir était compréhensif et que ça t'a aider ^^


Wolfylink - posté le 02/09/2014 à 18:09:06 (198 messages postés)

❤ 0

Chose en devenir

Thebigroom -> pas suffisant car son problème est de trouver quel est l'évènement qu'il vise.
Autrement dit : il n'y en a pas qu'un seul.

Je n'utilise que très peu XP donc je peux pas te le certifier, mais si comme tu dis on ne peut pas obtenir l'id d'un évènement, ça me semble difficile de faire ça par event.
EDIT : à moins de faire, pour TOUS les events, une page en processus parallèle vérifiant toutes les conditions pour lui même... Pas terrible.

J'ai quand même une solution à te proposer qui, tu l'as deviné, passe par des scripts mais pas très très compliqués.

J'imagine que tu sais faire l'étape 1 ?
Pour stocker l'id de l'event "visé" si tel est le cas, c'est là qu'intervient le script.
Admettons que tu aies une variable numéro Z qui recueille l'id de l'event visé (s'il existe), et les variables X et Y sont celles contenant les coordonnées x et y de la case en face du héros. Ces variables X et Y sont donc trouvables "facilement" selon les coordonnées du héros et sa direction.
Insère le script suivant :

Portion de code : Tout sélectionner

1
2
3
4
5
x = $game_variables[X]
y = $game_variables[Y]
check = $game_map.check_event(x, y)
$game_variables[Z] = check if (check != nil)
$game_variables[Z] = 0 if (check == nil)



check_event est une fonction utile qui donne l'id de l'event visé s'il y en a un :)

Dans ta variable n°Z, tu as ainsi :
- 0 si pas d'event visé
- l'id de l'event visé s'il existe.

Enfin, si Z est différent de 0, changer le statut de ton event n'est pas le plus compliqué.
Pour changer une variable locale, insère ce script :

Portion de code : Tout sélectionner

1
2
3
key = [$game_map.map_id, $game_variables[Z], 'A']
$game_self_switches[key] = true
$game_map.need_refresh = true



(la dernière ligne sert à prévenir le jeu que quelque chose a été modifié ^^)

Sauvez les arbres ! Mangez des castors !


Dyeel - posté le 02/09/2014 à 18:18:26 (200 messages postés)

❤ 0

Le bout de script que t'a donné Wolfylink est pas mal, mais le plus chiant sera ce que tu vas faire de cet ID, mais si tu veux juste activer un interrupteur local, c'est suffisant je pense.

Si tu préfères une solution en event, pourquoi l'évènement ciblé n'aurait pas une boucle infinie avec des conditions d'appuis de touche? Et dans ces conditions (ou avant), tu peux juste vérifier la distance event/héros et la direction du héros, pour être sûr que le héros est où tu veux par rapport à l'event qui t'intéresse.

J'espère que j'ai été clair et que j'ai répondu à ta question ;)


Wolfylink - posté le 02/09/2014 à 18:30:38 (198 messages postés)

❤ 0

Chose en devenir

C'est une autre solution à laquelle j'ai pensé mais qui me semble un peu lourde...
Si cela concerne un event à qui tu es censé pouvoir parler aussi, on ne peut plus utiliser la "appui sur la touche action" comme déclenchement...

On peut encore se débrouiller avec le processus parallèle, mais c'est un peu lourd.

Sauvez les arbres ! Mangez des castors !


Alex RoiEsper - posté le 02/09/2014 à 19:36:28 (585 messages postés)

❤ 0

Whololo

Merci à vous trois. :)

Je me rends compte que je n'ai pas précisé que je voulais faire cela avec plusieurs évènements sur la même map... Et j'aimerais éviter d'avoir une variable ou un interrupteur par évènement...

Est-ce que ça changerait quelque chose aux solution que vous me proposez ?

Alex d'or c trop fort | RMXP prog yolo | AlexZone | Ah, ça sent le roquefort


Wolfylink - posté le 02/09/2014 à 19:51:40 (198 messages postés)

❤ 0

Chose en devenir

Pour ma solution scriptée, aucun problème, la seule chose dont tu as besoin est des interrupteurs locaux pour chaque event (malheureusement limités à 4...)

L'autre solution devrait marcher aussi.
Pour chaque event, tu mets ton code en processus parallèle et tu n'as qu'à copier ce code sur chaque event qui en a besoin.

Sauvez les arbres ! Mangez des castors !


Mack - posté le 02/09/2014 à 20:09:46 (2288 messages postés) - staff

❤ 0

En gros, selon la touche appuyé tu veux activer un interrupteur local sur l'évent devant le héros ?
Le code de Wolfy devrait très bien marcher, même si c'est pour plusieurs évents.

Après, tu peux toujours vérifié si l'évent est "bon", et là t'as plusieurs solution, regarder son ID, regarder son nom ...

( Je prend note de tout les commentaires, même si je n'y répond pas )


Alex RoiEsper - posté le 03/09/2014 à 03:50:36 (585 messages postés)

❤ 0

Whololo

Ton code marche très bien Wolfy, merci ! :)

Je vais l'adapter un peu pour pouvoir en faire ce que je veux mais ça devrait le faire.


PS : Y a-t-il un inconvénient quelconque a utiliser un script, plutôt que la solution en event, en fait ? Utiliser ce script me semble plus "propre".

Alex d'or c trop fort | RMXP prog yolo | AlexZone | Ah, ça sent le roquefort


Wolfylink - posté le 03/09/2014 à 12:56:55 (198 messages postés)

❤ 0

Chose en devenir

Généralement, les scripts (même en insertion de script) permettent de faire exactement ce que tu cherches, et ce n'est pas toujours le cas de la programmation par event.

Mais j'ai tendance à préférer, en général, la programmation event par habitude, et par souci de clarté, mais en intégrant par script ce que les events ne me permettent pas de faire.

Dans le cas présent, sans aucun scripts, une autre méthode aurait effectivement été de laisser chaque event gérer lui-même s'il est visé, mais alors plus moyen de discuter avec lui avec déclenchement touche action, comme j'ai dit plus haut.
Obligé de passer par un code plus chiant, donc moins pratique...

Alors que la méthode script, si elle est bien pensée, n'a pas d'inconvénients. Enfin, je crois. Peut être. Sans doute.

Sauvez les arbres ! Mangez des castors !


Dyeel - posté le 03/09/2014 à 13:02:48 (200 messages postés)

❤ 0

Y a aucun inconvénient à utiliser le script, d'ailleurs je pense que ce sera plus rapide à l'exécution.

Et ça te permet de changer un seul truc si jamais tu veux modifier l'effet du script. T'auras pas à te taper les 10000 copier-coller pour chaque event ;)


Alex RoiEsper - posté le 03/09/2014 à 14:27:14 (585 messages postés)

❤ 0

Whololo

Ouais, j'essaye d'éviter ça au maximum. :lol

Merci à vous !

Alex d'or c trop fort | RMXP prog yolo | AlexZone | Ah, ça sent le roquefort

Index du forum > Entraide > [RPG Maker XP] Contrôler un évènement par un autre

repondre up

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