[PSPE 0.10] Événement répétable dans le temps

Damien Linux
Demande de : Flxflx669
Résolu par : DrBisounours
Problème :
Bonjour, j'ai essayé de trouver une solution pour créer un événement que l'on pourra faire par exemple toutes les 24h minimum mais je n'ai pas
trouvé.
J'ai regardé le fonctionnement des baies pour essayer d'avoir une idée (même s'il va être refait que en script) mais toujours pas, alors y'a t'il une solution simple pour faire ça?
Résolution :
Pas de commande en event, il faut passer en script : ce sera quelque chose comme $game_variables[X] = Time.now où X est égal au numéro de variable dans laquelle stocker le moment du
déclenchement de l'évent (il faudra donc une variable différente pour chaque évènement pour lequel tu veux contrôler qu'il ne soit activable que toutes les 24h).
Ensuite, le check conditionnel sera dans l'évènement également. Lorsque dans un évènement tu fais "Ajouter une condition" tu as la possibilité d'ajouter une condition en ligne de script (dernier onglet de la
fenêtre). La condition est alors $game_variables[X] <= (Time.now - 86400)
On reprend le temps actuel auquel on soustrait 86400 secondes (soit un jour entier) et on compare à la date enregistrée pour
voir si 24h se sont écoulées.
NB : Le check conditionnel en event parallèle c'est un peu bourrin car ça veut dire qu'à chaque instant la condition est vérifiée. Ca peut amener des lags. Je pense qu'exécuter la condition seulement au moment où on tente de réaliser l'event est suffisant.
Publié le : 08/09/2021 - 06:45
Modifié le : 29/11/2022 - 06:30
Historique :

Flxflx669
Bonjour, j'ai essayé de trouver une solution pour créer un événement que l'on pourra faire par exemple toutes les 24h minimum mais je n'ai pas trouvé.
J'ai regardé le fonctionnement des baies pour essayer d'avoir une idée (même s'il va être refait que en script) mais toujours pas, alors y'a t'il une solution simple pour faire ça?
Merci
Publié le : 28/05/2021 - 22:37
Modifié le : 29/11/2022 - 06:30

DrBisounours - Modérateur
Bonjour,
Je crois que tu ne peux pas faire autrement qu'utiliser un script car parmi les commandes d'événements, aucune ne permet de se référencer à du temps réel.
Pour faire cela j'utiliserais une méthode du style : check conditionnel datetime >= 1.day.ago avec datetime stocké dans une variable au moment du déclenchement de l'évent et qui vaudrait datetime = Time.now
Publié le : 29/05/2021 - 08:22
Modifié le : 29/11/2022 - 06:30

Flxflx669
Merci pour ta réponse !
Le datetime = Time.now doit être fait en script dans l'évent ? Le check conditionnel se fait aussi en script pour le 1.day.ago ?
Publié le : 29/05/2021 - 14:22
Modifié le : 29/11/2022 - 06:30

DrBisounours - Modérateur
datetime = Time.now sera en effet fait en script dans l'évent. Pour être précis, ce sera quelque chose comme $game_variables[X] = Time.now où X est égal au numéro de variable dans laquelle stocker le moment du déclenchement de l'évent (il faudra donc une variable différente pour chaque évènement pour lequel tu veux contrôler qu'il ne soit activable que toutes les 24h).
Ensuite, le check conditionnel sera dans l'évènement également. Lorsque dans un évènement tu fais "Ajouter une condition" tu as la possibilité d'ajouter une condition en ligne de script (dernier onglet de la fenêtre). La condition est alors $game_variables[X] >= 1.day.ago
Publié le : 29/05/2021 - 17:46
Modifié le : 29/11/2022 - 06:30

Flxflx669
Ah d'accord ! J'avais juste fait $game_variables[datetime] = Time.now pour ça que rien ne marchait xD
J'ai mis le check conditionnel en process parallèle du coup, mais j'ai une erreur :
Comment je peux définir ça ? (j'y connais rien en ruby x) )
Publié le : 30/05/2021 - 10:02
Modifié le : 29/11/2022 - 06:30

DrBisounours - Modérateur
J'avoue que c'est pas mon langage de prédilection à moi non plus. J'avais trouvé cette méthode "1.day.ago" sur un forum ruby on rail mais faut croire que ça n'existe pas en ruby.
Du coup, va falloir contourner le problème en trouvant un autre moyen de compter 24h en ruby. Tu peux essayer quelque chose du genre $game_variables[X] >= (Time.now - 86400)
On reprend le temps actuel auquel on soustrait 86400 secondes (soit un jour entier) et on compare à la date enregistrée pour voir si 24h se sont écoulées.
NB : Le check conditionnel en event parallèle c'est un peu bourrin car ça veut dire qu'à chaque instant la condition est vérifiée. Ca peut amener des lags. Je pense qu'exécuter la condition seulement au moment où on tente de réaliser l'event est suffisant.
Publié le : 01/06/2021 - 18:59
Modifié le : 29/11/2022 - 06:30

Flxflx669
T'es le boss !
Effectivement ça marche très bien, j'ai juste dû mettre <= au lieu de >= mais tout fonctionne bien ! (bon j'ai testé que jusqu'a 50 secondes mais logiquement 24h marchera aussi).
Et oui c'est vrai testé la condition seulement où l'on réalise l'event est sûrement mieux, en tous cas merci à toi
Publié le : 02/06/2021 - 15:21
Modifié le : 29/11/2022 - 06:30

DrBisounours - Modérateur
Super ! Ravis d'entendre que ça fonctionne
Publié le : 02/06/2021 - 19:53
Modifié le : 29/11/2022 - 06:30