You should consider joining our Discord to ask for support.

We created a support channel using the new Discord Forum feature!

You can also visit our new website, it has a help section in English and French

0 like 0 dislike
234 views
in Script help by (570 points)

Bonjour, 

J'essaie de faire un event quotidien qui serait de nouveau disponible tous les jours à 6h.

Il s'agit d'un marchand qui peut nous vendre un objet aléatoire par jour. La partie marchand fonctionne, pas de soucis. Une fois l'achat effectué, le self switch A s'active et le marchand ne veut plus nous vendre d'objet avant le lendemain 6h. 
J'ai essayé de créer un deuxième event avec le script suivant : 

trigger_event_in((30*60)-($game_variables[10]*60, 'B', event_id = 10,)

Le self switch B permet à nouveau d'acheter au marchand et une fois l'achat fait, il se désactive et on repasse sur le self switch A. La partie en vert permet dans l'idée de mettre en timer, 30 moins l'heure actuelle, ainsi on tombera sur le délai qui mène jusqu'à 6h du matin.

Seulement le jeu plante à chaque fois que je parle au marchand.

Peut-être n'est pas le bon script... J'ai essayé pas mal de choses et je ne réussi pas à faire un event quotidien propre...

1 Answer

1 like 0 dislike
by (28.0k points)
selected by
 
Best answer

Ton calcul est probablement pas bon. Tu veux qu'il se déclenche le jour suivant à 6h.
Tu dois calculer le nombre d'heures restant jusqu'à la prochaine fois qu'il est 6h du matin.

30h parait bien mais le soucis c'est que si tu parle à l'évent à 1h du mat il ne correspondra plus à la définition de journalier.

On peut avoir une approche empirique pour trouver le bon calcul, prenons des heures qui donne des choses intéressante:

6h, 12h, 18h, 24h (0h), 1h

Si tu parles à l'évent à 6h, la prochaine fois que tu dois lui parler c'est dans 24h. (30-6 = 24)

Si tu parles à l'évent à 12h, la prochaine fois que tu dois lui parler c'est dans 18h (30-12 = 18)

Si tu parles à l'évent à 18h la prochaine fois que tu dois lui parler c'est dans 12h (30-18 = 12)

Si tu parles à l'évent à minuit (0h) la prochaine fois que tu dois lui parler c'est dans 6h (30-0 = 30). Là il y a un soucis, par contre j'ai donné l'heure en 24h et on se rend compte que faire 30-24 = 6.

De même pour 1h, 30-1 = 29 ce qui n'est pas bon du tout, mais 30-25 = 5 ce qui est bon, tu remarqueras que 6-1 = 5 également et que ça fonctionnera pour toute les heures jusqu'à 6h.

Ton appel doit donc être:

offset_hour = gv[10] < 6 ? 6 : 30
trigger_event_in((offset_hour - gv[10]) * 60, 'B', 10)

Tu remarqueras que j'ai utilisé < 6 et non <= 6 car si tu lui parle à 6h10 il vaut mieux qu'il se trigger dans 24h. Un autre petit détail, tu dois surement soustraire les minutes au total pour être sur qu'il se trigger à 6h pile et non 6h59 si tu lui parle à 13h59 le jour précédent.

Pour ton crash, c'est un erreur de syntaxe, t'as laissé une virgule avant la parenthèse fermante ;)

by (570 points)
Merci beaucoup pour l'explication détaillée, je n'avais pas pensé aux cas entre minuit et 6h. C'est beaucoup plus clair !
Et merci pour la virgule, j'ai un peu honte de ne pas l'avoir vue moi même ><'
...