Nenfëa Auxiliaire ArchipelModeur
Nombre de messages : 34 Age : 40 Date d'inscription : 04/04/2007
| Sujet: [Moyen] Délai d'attente Dim 15 Avr 2007, 13:11 | |
| Type de script : --- Quête --- (difficulté moyenne) Utilité : ce script permet de mettre un délai de X jours avant qu'un certain évènement ne se produise. Mode d'emploi :- Spoiler:
Vous devez créer une quête bidon qui ne sert qu'à mettre un délai d'attente (dans l'exemple, cette quête se nomme nen_attente_quest). Une fois la quête créée, associez lui ce script de quête. Pour lancer le délai d'attente, utilisez ce morceau de code : - Code:
-
StartQuest NOM_DE_VOTRE_QUETE La quête s'arrêtera d'elle même une fois le délai d'attente terminé. Explications :- Spoiler:
Il est possible d'accéder au jour où en est le jeu grace à la variable globale GameDay, qui est gérée par le moteur du jeu. L'idée est de mémoriser la valeur de cette variable dans le script à un instant donné (c'est à dire qu'on mémorise le jour où on est). Puis, on compare ce qu'on a mémorisé à la variable GameDay toutes les X secondes : si les deux valeurs sont différentes, on considère qu'un jour s'est écoulé et on indique que le joueur a attendu un jour de plus. Une fois que le nombre de jours d'attente voulus a été atteint, on effectue une action (au modeur de décider ce qu'il faut faire) et on arrête le script. Limitations :- Spoiler:
Cette méthode, bien que relativement simple, n'est pas d'une précision à toute épreuve : si le joueur dort, par exemple, il peut s'écouler plus d'une journée entre deux comparaisons - pourtant, ce script considèrera qu'un seul jour s'est écoulé. - Code:
-
; Script de quête permettant de faire attendre X jours avant qu'un évènement ne se produise. ; Dans cet exemple, la quête se nomme nen_attente_quest. Sa seule utilité est de faire tourner le script qui lui est associé.
Scn nen_attente_quest_script
float fQuestDelayTime ; Fréquence d'exécution du script short etat ; Indique où on en est dans le script (0=début du script, 1=décompte des jours, 2=fin du script)
short jour ; Mémorise le jour en cours short duree ; Mémorise la durée à attendre short attente ; Mémorise le nombre de jours pendant lesquels on a attendu jusqu'à présent
Begin GameMode if ( etat == 2 ) ;------------------------------------------------------ ; PARTIE A PERSONNALISER ;------------------------------------------------------
; On a atteint la durée d'attente : faites ici ce que vous vouliez faire une fois le délai terminé blablabla...
; On arrête la quête : remplacez le nom de la quête "nen_attente_quest" par le nom de votre quête StopQuest nen_attente_quest ; On arrête la quête d'attente
;------------------------------------------------------ ; FIN DE LA PARTIE A PERSONNALISER ;------------------------------------------------------ Return ; Evite qu'on teste les options en dessous endif
if ( etat == 1 ) if ( jour != GameDay ) ; Si on a changé de jour... Set attente to ( attente + 1 ) ; ... on indique que le joueur a attendu un jour de plus... Set jour to GameDay ; ... et on remémorise le jour actuel. if ( attente >= duree ) ; Si en plus, on a atteint la durée d'attente... Set etat to 2 ; ...on l'indique en changeant la variable nen. endif endif Return ; Evite qu'on teste les options en dessous endif
if ( etat == 0 ) ;------------------------------------------------------ ; PARTIE A PERSONNALISER ;------------------------------------------------------
; Initialisation des choix du modeur Set fQuestDelayTime to 5 ; On indique qu'on doit effectuer le script toutes les 5 secondes (vous pouvez augmenter ou réduire cette fréquence si vous le souhaitez). Set duree to 14 ; Mettez ici la durée que vous voulez. En l'occurence, on attendra 14 jours.
;------------------------------------------------------ ; FIN DE LA PARTIE A PERSONNALISER ;------------------------------------------------------ Set jour to GameDay ; On mémorise le jour en cours Set etat to 1 ; On indique qu'on a initialisé les choix endif End | |
|