Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
324 connectés actuellement
30945728 visiteurs depuis l'ouverture
1766 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
Sorajin -
posté le 23/06/2014 à 12:45:07 (12 messages postés)
| | 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 (665 messages postés)
| Plop | Attention ceci est une technique complètement tordue
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)
| | 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.
|
Sofreack -
posté le 23/06/2014 à 19:55:34 (938 messages postés)
| 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)
| | 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)
| 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)
| | 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 (665 messages postés)
| 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)
| | 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)
| 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 )
|
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)
| | 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)
| 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 (5090 messages postés)
| 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" :
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" :
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 :
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 :
1
| <> script : SV[2] = random(10, 15) |
Ce qui donnerait :
Première page :
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 :
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)
| | 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) En faite c'était rien. j'ai changé une majuscule à cause de la première erreur.
En effet j'ai d'abord mit le script. Et lancé une sauvegarde. Ca plante (normal) et je vais dans le script et je change une majuscule sans m'en rendre compte.
|
Joke -
posté le 24/06/2014 à 16:00:09 (5090 messages postés)
| 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)
| | 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 (5090 messages postés)
| 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. 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)
| | Ah ça change tout !
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 (5090 messages postés)
| 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)
| | 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 (5090 messages postés)
| 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)
| | Très bien Merci pour tout. Sujet résolu!
| Index du forum > Entraide > [Rpg vx ace] Objets collectable réapparaissant [Résolu]
|
|
|