les variables globales + comment limiter le lancement d'un script à une occurance

Tout sur les scripts et les mods pour X², X³, X³TC et X³AP.

Moderator: Modérateurs pour les forum Français

User avatar
Whismerhill
Posts: 579
Joined: Wed, 20. Oct 04, 21:16
x3ap

les variables globales + comment limiter le lancement d'un script à une occurance

Post by Whismerhill »

coucou la compagnie,

bon je travaille sur un script ou tout est séquentiel
donc bon j'ai du créer une variable globale pour récupérer la réponse à une "incoming question" et la réinjecter dans le script de départ
(je sais, ça fais vraiment bidouille merdique mais bon....)

la question est : cette variable globale je n'en ai plus besoin après
sera t'elle existante pour l'éternité ou y a t'il un moyen de la 'détruire'
(en gros, hop j'ai pu besoin de la mémoire, zouplà à la poubelle)

deuxième question et non des moindres,
comment fait-on pour que le script ne sois jamais lancé qu'une seule et unique fois à un instant T ?
(vu que le script sera lançable avec une touche de raccourci il est facile d'appuyer plusieurs fois sur une touche)
(ou alors je peux utiliser encore une autre variable globale pour savoir si le script tourne déjà, mais bon je trouve pas ça terrible comme gestion de la mémoire de créer des variables globales à gogo)

NDS(Note Du Scripteur): j'aime que mon code soit *relativement* *propre* si vous n'aviez pas compris :D
PrizzZ
Posts: 2352
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

Tu peux toujours nettoyer ta variable globale en la parametrant a null, mais je ne connais pas de commande permettant de l'effacer.
Concernant le coup de la variable globale pour l'incoming question, j'utilise la même chose dans mon moteur d'interface mEngine ( voir ici en anglais ).

Pour la deuxième question, idem, utiliser une variable globale reste la solution. Jette un coup d'oeil au script d'afterburn de paladin3333, il lie une touche a un script de la manière dont tu le décrit.

PrizzZ, un codeur "propre" ... ou pas :D
User avatar
Whismerhill
Posts: 579
Joined: Wed, 20. Oct 04, 21:16
x3ap

Post by Whismerhill »

merci prizzZ
ton mEngine est un peu complexe pour moi lol :p

donc bon si j'ai bien compris variable globale ruleZZZ
en gros voici le schema de ce dont je parle:
Script principal :

Code: Select all

095      $temp = sprintf: pageid=8700 textid=4, $targetted, $costofrepairs, null, null, null
096      send incoming question $temp to player: callback='Whis.questionscript.simple'
097      $temp = get global variable: name='question.selectedvalue'
Script Whis.questionscript.simple :

Code: Select all

Description
This simply returns a global var with the selected value
Arguments
1: val , String , 'val' 
Source Text

001   set global variable: name='question.selectedvalue' value=$val
002   return null

PrizzZ
Posts: 2352
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

Ton code va te poser problème puisque la question ne lancera pas imédiatemment le script de réponse et donc ta variable globale sera paramétré à null puisqu'elle est récupéré immédiatement après que le joueur a entendu l'arrivé du message.
Il faut donc attendre que le joueur réponde, ie que la variable globale soit remplie.

Le code doit donc être :

Code: Select all

095      $temp = sprintf: pageid=8700 textid=4, $targetted, $costofrepairs, null, null, null
096      Set globale variable:  name="question.selectedvalue' value=null
097      send incoming question $temp to player: callback='Whis.questionscript.simple'
097      $temp = null
098      while $temp=null
099        $temp = get global variable: name='question.selectedvalue'
100        =wait 100
101       end
Dernier petit conseil perso : personnalise plus tes nom de variable globale avec ton nom ou le nom de ton script pour être sur que personne n'utilise la même, ce qui te donnerai peut-être de mauvaise surprise.

Return to “Script et Modding pour la Trilogie X”