Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[EFFET] L'effet #309 (Script: Set/Modify Local Variable) crée deux variables !

Regroupe tous les fichiers spl et pro
Répondre
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne

[EFFET] L'effet #309 (Script: Set/Modify Local Variable) crée deux variables !

.

Message par Freddy_Gwendo »

Je viens de tomber sur un truc bizarre.

J'utilise cet effet avec "Modifier Type" = 1 ("If the Modifier Type is set to 1, then this effect will be a Modify Local Variable effect.") pour modifier une variable locale du perso qui utilise un objet.

Tout fonctionne parfaitement : la variable est renseignée, augmentée ou diminuée selon la valeur de la variable.

Sauf que...

En allant étudier une sauvegarde, je me suis aperçu que l'effet créait aussi une variable du même nom, mais en GLOBAL. De plus, si j'utilise deux fois l'effet augmentant la variable de 100, la variable locale est effectivement incrémentée de 200, mais la variable globale est égale à 100. En fait, elle se comporte comme si j'avais saisi SetGlogal("Variable";"GLOBAL";valeur) et ne conserve que la valeur du dernier effet lancé.

Aurais-je loupé une option cachée quelque part ? Pourtant, j'ai vérifié et re-vérifié : rien ne semble clocher dans mon effet.

A priori, ça n'empêche pas la gestion des variables puisque je ne m'intéresse qu'aux variables locales, mais ça me gonfle de ne pas comprendre pourquoi cette double création (alors qu'il existe l'effet Script: Set Global Variable [265] pour travailler sur les variables globales) ; et surtout de créer des variables globales inutiles. :(
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Le texte descriptif comporte un mot qui est en trop ou qui laisse supposer qu'il manque une partie de la phrase :
Set both the local variable specified by the resource key to the value specified by the 'Value' field.
Ce "both" laisser supposer qu'il y a un deuxième élément impacté de la même manière que la variable locale. Qui sait, peut-être une globale ?

Après un peu d'archéologie, voici ce qu'indiquait IESDP à ses débuts en 2002 :
It could be modify Local Variable. It is used in SPIN579 with Param #1 set to 1 (i think it's the modifier int, could be + ou -), Param #2 set to 1 (no idea about this one, i have tried 0, 2 and 3 but the spell doesn't work) and the resource is the name of the Local Variable (here KOBAMP_N). The caster is KOBAMP01.CRE, the "receiver" is KOBSOU01.CRE. Check its general script (kobsou01.bcs)
Ce n'est pas une réponse, mais ça peut t'indiquer un exemple dans le jeu.

Voici la description de juillet 2005 :
Parameter #1: Value
Parameter #2: Modifier Type
Description:
Set both the local and global variable specified by the resource key to the value specified by the 'Value' field.

If the Modifier Type is set to 1, then this effect will be a Modify Local Variable effect.

NB: Since the Resource Key can only be 8 characters long maximum, you can not set a variable with this Effect this
has a name longer than this amount.
You can use the VVC field of external EFF files for an additional 8 characters of variable name.
You can use the 3rd resource field of EFF files for an additional 8 characters.
Tiens donc ! On a gagné depuis la distinction entre fixer et incrémenter mais perdu la notion de variable globale. Peut-être que la modification de variable globale ne s'effectue que dans un des deux cas, d'où la suppression de la notion de variable globale.

Cela dit, j'ai l'impression que la phrase que tu as cité dénote une version un peu ancienne d'IESDP (comme ci-dessus). La plus récente décrit le 1 comme servant à incrémenter la variable tandis que 0 sert à la fixer.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Intéressant tout ça !

Manifestement, cet effet crée deux variables : locale et globale. Ce qui est confirmé par les anciennes définitions.
En revanche, ça n'explique pas pourquoi avec le même type, les variables locales sont modifiées et les variables globales réinitialisées.

Par ailleurs, je travaille sur le dernier DLTCEP et il me semble que mes fichiers dat sont à jour...
Voici la description exacte de l'effet dans DLTCEP :
Set the local variable specified by the resource key to the value specified by the 'Value' field.

If the Modifier Type is set to 1, then this effect will be a Modify Local Variable effect.

NB: Since the Resource Key can only be 8 characters long maximum, you can not set a Local Variable with this Effect this has a name longer than this amount.
You can use the VVC field of external EFF files for an additional 8 characters of variable name.
You can use the 3rd resource field of EFF files for an additional 8 characters.
et dans IESDP :
Parameter #1: Value
Parameter #2: Type
Description:

Set both the local variable specified by the resource key to the value specified by the 'Value' field.

Known values for 'Type' are:
0 Set Local (to 'Value')
1 Increment Local (by 'Value')

NB: Since the Resource Key can only be 8 characters long maximum, you can not set a variable with this Effect this has a name longer than this amount.
You can use the VVC field of external EFF files for an additional 8 characters of variable name.
You can use the 3rd resource field of EFF files for an additional 8 characters.
Je vais donc vérifier si j'ai installé les bons fichiers.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

En farfouillant dans les archives de IESDP, je suis tombé sur ce sujet qui "reprend" mes interrogations sur la double création de variables et la confirme.

Daté d'avril à juin 2005, il doit expliquer en partie la modification de la description de l'effet que tu as pointée.

En revanche, toujours rien sur la différence de modification des variables locales et globales...
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Pour clore le sujet, j'ai eu confirmation par Argent77 que cet effet provoquait bon nombre d'actions collatérales, dont la création d'une variable globale du même nom.

Il semble qu'il n'y ait pas grand chose à faire, si ce n'est à bien gérer ses noms de variables pour ne pas foutre le binz dans le codage...

Sinon, l'effet #185 gère l'action SetGlobal("Variable","LOCALS",valeur), sans création de variable globale, mais ne permet pas de modifier une variable éxistante (l'augmenter ou la diminuer).

Si ça peut servir....
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Répondre

Retourner vers « Sorts et projectiles »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité