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

476 connectés actuellement

29381573 visiteurs
depuis l'ouverture

5 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Leo-Games

Le Comptoir Du clickeur

New RPG Maker

RPG Maker - La Communauté

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [Rpg vx ace] Objets collectable réapparaissant [Résolu]


Sorajin - posté le 23/06/2014 à 12:45:07 (12 messages postés)

❤ 0

Domaine concerné: Fonction
Logiciel utilisé: Rpg vx ace
Bien le bonjour, communauté d'Oniromancie.

Voilà, j'explique moon problème. Tout d'abord je n'ai pas trouvé de solution sur internet même en anglais, après je ne suis peut-être pas doué aussi.

J'aimerais faire en sorte qu'un objet collectable, style minerais ou autre, réapparaisse après un petit temps de jeu.
Or je n'y arrive qu'avec un certain temps passé sur la carte...

Je sèche sur ce problème.
Avec un évenement commun ? Une variable ?

Eclairez moi !


Timtrack - posté le 23/06/2014 à 16:22:52 (653 messages postés)

❤ 0

Plop

:avert2 Attention ceci est une technique complètement tordue :avert2

Cette méthode devrait fonctionner de telle sorte que toutes les ressources de type A réapparaissent en même temps. (si tu veux par contre que ça soit individuel ça risque d'être gourmand en event communs et interrupteurs)

Tout d'abord on crée l’événement pour récolter la ressource A (on va dire ici un minerai) constitué de trois pages :
-Page 1 : aucune condition, récolte de la ressource et à la fin de l'action interrupteur X activé et interrupteur local A activé.
-Page 2 : condition interrupteur local A activé, event en processus parallèle : désactiver interrupteur local A.
-Page 3 : condition : interrupteur X activé et interrupteur local A activé, ne rien faire


Tu crées un événement commun en processus parallèle activé si l'interrupteur X est activé :
-attendre Y temps
-désactiver interrupteur X

Cette méthode a des défauts :
-ça gère les ressources par groupements et non individuellement
-si le compteur se termine mais que tu récoltes ensuite une autre ressource de type A avant de retourner sur la map où ta première ressource a été récoltée, tu devras attendre à nouveau
-cette méthode est très très mal expliquée.

Projet actuel


Sorajin - posté le 23/06/2014 à 16:29:11 (12 messages postés)

❤ 0

Merci beaucoup pour ta réponse.
En effet c'est plutôt tordu.. Donc il n'y a aucune méthode simple ?
Je vais essayer çà déjà.

Merci. :flaco


Sofreack - posté le 23/06/2014 à 19:55:34 (938 messages postés)

❤ 0

J'ai dix doigts et une main.

Heuuu ? Pourquoi pas simplement mettre les attendres dans l'event ?

Page1: aucune condition; récolte la ressource activé interrupteur local A

Page2: condition interupeteur local A activé, processus parralléle: attendre X temps, désactiver interupteur local A.

Valjean Story


Sorajin - posté le 23/06/2014 à 19:59:36 (12 messages postés)

❤ 0

Parce que si on sort de la map le compteur ne marche pas et il reviendra à zéro quand on y retournera. ^^


Sofreack - posté le 23/06/2014 à 20:13:00 (938 messages postés)

❤ 0

J'ai dix doigts et une main.

Alors dans ce cas.

Crérer un event commun "Récolte": attendre X temps, désactiver l'interrupteur local A. (aucune condition de déclenchement)

Event "objet connectable":
Page1: aucune condition, récolté, activer interrupteur local A.

Page2: condition int local A activé,processus parallèle, appeler un event commun "Récolte", effacer temporairement l'event.

Valjean Story


Sorajin - posté le 23/06/2014 à 21:16:00 (12 messages postés)

❤ 0

J'ai fait comme m'a dit Timtrack.
Ca marche nickel, mais ca consomme beaucoup d'interrupteur et d'evenement commun ^^, mais ca reste éfficace.


Timtrack - posté le 23/06/2014 à 21:26:22 (653 messages postés)

❤ 0

Plop

Citation:

Crérer un event commun "Récolte": attendre X temps, désactiver l'interrupteur local A


Le principe de l'interrupteur local, c'est qu'il ne fonctionne qu'avec l'événement qui le lance.

Citation:

effacer temporairement l'event.


On peut effacer un event temporairement ?

Projet actuel


Sorajin - posté le 23/06/2014 à 22:00:46 (12 messages postés)

❤ 0

Citation:

effacer temporairement l'event.


Je supose que oui: Onglet B / Effets d'animation / Effacer l'évènement.

En tout cas d'ici là si vous trouvez une bonne alternative ca m'aiderait :).
Sinon comme ça aussi c'est bon.


spyrojojo - posté le 24/06/2014 à 11:26:46 (773 messages postés)

❤ 0

schizophrène avec tendance cleptomane a votre service

Effacer l'événement le fera réaparétre des que tu reviendra sur la map . La technique de Timtrack semble la meilleur , apres si tu a pas peur de travailler tu peu créé un événement commun par objets ou espéré trouver un script adapter (en dernier recour :rit2)

Mes projets : Fall, Délirium | Mes scripts : BGM et BGS dans le menu | Mon deviantart


Sorajin - posté le 24/06/2014 à 13:19:43 (12 messages postés)

❤ 0

Oui, j'utilise plusieurs évènements et interrupteurs.
Mais étant donné que certain objets de même sorte seront assez éloignés, je pourrais utiliser le même évènement. Vu que le temps de traverser la map suffira à faire réapparaître le premier.


spyrojojo - posté le 24/06/2014 à 13:36:17 (773 messages postés)

❤ 0

schizophrène avec tendance cleptomane a votre service

Oui bonne idee sa , comme sa sa peu faire des economie en event , de plus si tros devenement commun sont en fonction en même temps , sa peu faire laguer ton jeu , donc sois prudent

Mes projets : Fall, Délirium | Mes scripts : BGM et BGS dans le menu | Mon deviantart


Joke - posté le 24/06/2014 à 14:37:01 (5089 messages postés)

❤ 0

Bilouteux fou

Avec l'Event Extender il est infiniment plus pratique d'utiliser une variable locale (qui s'écrit SV[1], SV[2], SV[3]...), la variable locale est propre à l'événement, tout comme l'interrupteur local. Ce qui fait que tu pourras copier/coller ton évènement sans rien changer, les valeurs des variables locales seront propres à chaque événement, à l'inverse des variables globales.


Solution de base :

Ton événement d'objet collectable :

En première page (événement à l'état collectable) en mode "appui touche" :

Portion de code : Tout sélectionner

1
2
3
<> modifier inventaire : ajouter objet "truc"
<> script : SV[1] = play_time
<> activer interrupteur local A



En gros :
- on collecte l'objet
- on mémorise quand est-ce qu'on a collecté l'objet (temps de jeu)
- on passe l'événement en mode "collecté, disparu" (deuxième page)

En deuxième page (événement collecté, disparu), en condition "interrupteur local A activé", en mode "Processus parallèle" :

Portion de code : Tout sélectionner

1
2
3
4
condition : si script "play_time - SV[1] > temps que tu veux en secondes"
   <> désactiver interrupteur local A
Fin de condition
<> attendre 60 frames 



En gros :
- l'objet redevient collectable si le temps écoulé (temps actuel - temps mémorisé) dépasse la valeur qu'on veut
- on peut se permettre de ralentir la boucle à un tour par seconde, pour gagner de la fluidité ingame

Se baser sur le temps du jeu c'est parfait pour faire plein de chronomètres, comme ça on n'utilise qu'un seul compteur de temps, qu'on ne programme même pas. (rappel : on peut accéder au temps de jeu depuis la commande "modifier variable")


Par contre, si on laisse comme ça, l'objet pourra réapparaître devant les yeux du joueur pendant qu'il se ballade sur la map, au moment où son temps est écoulé.

Amélioration 1 :

Si tu veux que l'objet réapparaisse ou non uniquement quand on entre sur la map, et non pendant qu'on se ballade dedans, c'est très simple : il suffit d'ajouter un "effacer cet événement" en "sinon" sur la condition :

Portion de code : Tout sélectionner

1
2
3
4
5
condition : si script "play_time - SV[1] > temps que tu veux en secondes"
   <> désactiver interrupteur local A
sinon
   <> effacer cet événement
fin de condition



Comme ça, dès qu'on arrive sur la map, soit le temps écoulé n'est pas suffisant et il n'apparaîtra pas avant le prochain retour sur la map (il est effacé), soit le temps écoulé est suffisant et il réapparaît instantanément.



Amélioration 2 :

Si tu veux que le temps écoulé nécessaire pour que l'objet réapparaisse soit variable, rien de plus simple, il suffit d'utiliser une deuxième variable locale qui détermine aléatoirement le temps nécessaire.

Exemple pour un temps aléatoire entre 10 et 15 secondes :

Portion de code : Tout sélectionner

1
<> script : SV[2] = random(10, 15)



Ce qui donnerait :

Première page :

Portion de code : Tout sélectionner

1
2
3
4
<> modifier inventaire : ajouter objet "truc"
<> script : SV[1] = play_time
            SV[2] = random(10, 15)
<> activer interrupteur local A



Deuxième page :

Portion de code : Tout sélectionner

1
2
3
4
5
condition : si script "play_time - SV[1] > SV[2]"
   <> désactiver interrupteur local A
Sinon
   <> effacer cet événement
Fin de condition



Le temps pour réapparaître sera aléatoire, chaque objet collectable aura sa propre valeur de temps.

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


Sorajin - posté le 24/06/2014 à 15:23:05 (12 messages postés)

❤ 0

Ah oui très bien ça !
EE est assez lourd je trouve.
Je crois qu'il est incompatible avec d'autre script car il marche pas de mon coté .. Dommage.

En tout cas c'est très bien expliqué, c'est sympa!
Je vais essayer de régler le problème du script ..

Thanks

Spoiler (cliquez pour afficher)




Joke - posté le 24/06/2014 à 16:00:09 (5089 messages postés)

❤ 0

Bilouteux fou

EDIT : j'ai rien dit. (Commentaire supprimé)

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


Sorajin - posté le 24/06/2014 à 16:21:11 (12 messages postés)

❤ 0

Est-ce qu'il faut définir play_time ?
Dans cet exemple absurde de test, ca ne réapparait pas.

Spoiler (cliquez pour afficher)



Page 1
Récupération de l'obet
Sauvegarde du temps de jeu
Passage page2

Page 2
Si temps de jeu -Tp de jeu sauvegardé > 10 secondes
Retour page 1

Ai-je mal écrit ?


Joke - posté le 24/06/2014 à 18:00:54 (5089 messages postés)

❤ 0

Bilouteux fou

Bon, désolé, j'ai dis une bêtise pour "play_time".

J'ai vérifié comment la méthode était écrite dans l'EE, finalement elle renvoi la valeur en secondes. Ce n'est pas précisé dans la doc, c'est une HONTE.

Pour le coup, avec ton exemple, il faut attendre 600 secondes, soit 10 minutes, pour voir ton objet ré-apparaître. :F Je doute que tu ait attendu si longtemps donc re-vérifie avec la condition "> 5" pour 5 secondes. ^^

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


Sorajin - posté le 24/06/2014 à 18:07:06 (12 messages postés)

❤ 0

Ah ça change tout ! :lol
J'ai essayé avec des guillemets, sans, differente écriture. Le chronomètre et tout ça !
J'ai regardé le doc et tout.

Merci pour ta réponse !
Ca marche nickel !

C'est une bonne solution, c'est moins loin à rédiger, plus rapide à dupliquer, et moins de risque d'erreur!

Et il doit y avoir pleins d'autre fonctions avec EE.


Joke - posté le 24/06/2014 à 18:09:54 (5089 messages postés)

❤ 0

Bilouteux fou

j'ai mis à jour mes explications initiales (fonction random et temps en seconde) pour qu'on puisse s'y fier directement. :)

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


Sorajin - posté le 24/06/2014 à 18:12:18 (12 messages postés)

❤ 0

Je sais que c'est hors du cadre du sujet mais tu aurais d'autres astuces utiles avec EE à nous donner ?


Joke - posté le 24/06/2014 à 20:29:34 (5089 messages postés)

❤ 0

Bilouteux fou

L'EE a une documentation en ligne, regarde l'index des fonctions à gauche, c'est toute les commandes que tu as en plus des commandes événements basique, toutes aussi simples à utiliser que ce que tu viens de faire. ^^

Ça va t'en donner tout seul, des astuces ! ;)

Lis le tutoriel d'utilisation et tu comprendras encore plus de choses, sur les variables locales et interrupteurs locaux surtout.

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


Sorajin - posté le 24/06/2014 à 20:38:29 (12 messages postés)

❤ 0

Très bien Merci pour tout. Sujet résolu!

Index du forum > Entraide > [Rpg vx ace] Objets collectable réapparaissant [Résolu]

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