Utiliser un timer pour que les instructions s'exécutent une seule fois au bout de n secondes (ici n = 10):
float timer short done If ( done == 1 ) return EndIf If ( timer >= 10 ) [instructions ici] Set done to 1 Else Set timer to ( timer + GetSecondsPassed ) EndIf
Utiliser un timer pour que les instructions s'exécutent au bout de n secondes à chaque fois qu'un objet est activé:
float timer If ( OnActivate == 1 ) If ( timer >= 10 ) [instructions ici] Set timer to 0 EndIf Set timer to ( timer + GetSecondsPassed ) EndIfAttendre un certain nombre de jours avant qu'un évènement intervienne
Deux méthodes, une simple mais inexacte, l'autre plus compliquée mais exacte. Dans les 2 exemples, on fait passer 1 jour:
short localDaysPassed short currentDay If ( currentDay != Day ) Set currentDay to Day Set localDaysPassed to ( localDaysPassed + 1 ) EndIf If ( localDaysPassed >= 2 ) [instructions ici] EndIfLa méthode ci-dessus utilise la variable globale Day, qui est le jour dans le mois. Donc, si le jour est le même mais le mois est différent, il considèrera qu'aucun jour n'a passé.
La condition est "2" est non 1, car la première fois que le script est exécuté currentDay = 0, est donc != Day et localDaysPassed est incrémenté. La condition doit donc être nombre de jours + 1.
Méthode plus compliquée, mais exacte:
short localDaysPassed long baseDay long currentDay Set currentDay to ( ( Year * 10000 ) + ( Month * 100 ) + Day ) If ( baseDay == 0 ) Set baseDay to currentDay EndIf If ( baseDay != currentDay ) Set localDaysPassed to ( localDaysPassed + 1 ) EndIf If ( localDaysPassed >= 1 ) [instructions ici] EndIf
Ici, baseDay et currentDay sont des valeurs uniques, basées sur les variables globales Year, Month et Day. Par exemple pour le 1 /4/ 527, ils seront égaux à 5270000 + 400 + 1 soit 5270401
baseDay (le jour de référence) est initialisé une seule fois. currentDay (le jour en cours) l'est à chaque frame.