Créer des objets uniques.
NdT: Il est ici difficile de différencier les termes « object » (qui désigne
quasiment tous modèles 3D, des chaises aux personnages et aux pièges) et « item
» (qui désigne ce qu’on peut avoir dans son inventaire (épée, armure….
Pour les différencier, quand j’utiliserais « objet » (entre guillemets)
ça désigne le terme « object », et sans guillemets, il désigne les « items ».
Comment un script crée ces propres objets qui vont au dela des objets standarts…Comment
par exemple faire un effet conditionnel ? Comment puis je scripter une baguette
de souhait ou une épée parlante ?
Bien, la première a réaliser est que, par opposition aux « objets » (chaise,
lampe…
et aux créatures, ils n’ont pas de script propre. Vous ne pouvez pas aller
dans les propriétés des objets et spécifier quels scripts utiliser…il
ne peut en utiliser aucun.
La seule manière par laquelle vous pouvez affecter des scripts à des objets,
c’est dans le « module level ». Dans les propriétées du module, vous avez
3 évènements qui affectent les objets. Deux de ces énènements sont OnAquireItem
et OnUnAcquireItem. Cela veut dire qu’à chaque fois qu’un objet
est pris ou laissé tomber, un événement est lancer qui démarre le script approprié.
Si il n’y a pas de script, rien ne se passe. Donc, si je veux fixer une
variable quand une épée particuliaire (qui a le tag "SWORD01")
est prise, je peux mettre ce script dans le section OnAcquireItem du module
:
void main () { object oItem = GetObjectByTag("SWORD01"); int iVar = GetLocalInt(GetItemPossessor(oItem), "VARIABLENAME"); // ci dessous est spécifié : « Si le déclenchement est bien celui voulu, et que aucune // variable n’a été spécifiée, fixez la variable sur le possesseur de l’objet. if ((GetModuleItemAcquired() == oItem) && (iVar == 0)) { SetLocalInt(GetItemPossessor(oItem), "VARIABLENAME", 1); } }
|
Cependant, ce n’est pas très utile pour scripter vos propres objets, n’est
ce pas ? Por cela, vous devez tirer avantage du troisième événement du module
: OnActivateItem().
Activer un objet requière un événement spécifique. Quand vous créez un objet,
vous pouvez lui assigner une propriétée « Cast Spell » (lancer un sort)…et
deux des choix peuvent être Unique Power et Unique Power :Self Only. La différence
entre eux est que le second est simplement un déclencheur de l’événement
« OnActivateItem »…le premier vous demande d’abord la cible du pouvoir
unique.
Ce « Unique Power » apparaît dans le menu radial de l’objet comme n’importe
quel autre caractéristique. Si vous voulez spécifier à l’utilisateur ce
qu’est cette caractéristique, vous devez l’inclure dans la description
de l’objet (il y a une description pour l’objet « identifié » et «
non identifié », vous pouvez aussi utiliser les 2).
Quand vous écrivez le script à placer dans OnActivateItem(), il y a juste quelques
références que vous devez garder à l’esprit :
//cela renvoie l’objet qui a déclenché l’événement OnActivateItem().
object GetItemActivated()
//Cela renvoie la cible du pouvoir unique, si il est ciblé comme un objet spécifique.
object GetItemActivatedTarget()
//Cela renvoie la cible du pouvoir unique, si il est ciblé comme un emplacement plutôt qu’un objet spécifique. location GetItemActivatedTargetLocation() //Renvoie la créature qui a activée l’objet... un peu plus pratique que d’utiliser GetItemPossessedBy. object GetItemActivator()
|
Et c’est tout ce dont vous avez besoin. Avec ça, vous pouvez scriptez autant
de propriétées pour autant d’objets que vous le souhaitez. Gardez quand
même à l’esprit que ces scripts sont spécifiques au module. Si vous prenez
l’objet d’un autre module qui n’aura pas ce script in le OnActivateItem(),
alors rien ne se passera.
NOTE: Il y a actuellement un bug avec OnActivateItem en ce qui
concerne les objet à usage unique (et qui arrive aussi aux objet qui n’ont
plus qu’une charge). Quand un objet est usé, il disparaît…l’événement
se lance, mais toutes les commandes comme GetItemActivate renvoie un objet invalide
(car l’objet n’existe plus.)
__________________
Théranthil, Mage Elfe prêtre de Mystra Membre des GdE
Parti Elmotiste pour un parler jowilien: Ministre
supérieur de la corruption
"Les langues vont toujours bon train. Les pieds ont du mal à suivre."
(les bourses aussi NdT )
Mespert de la porte de Baldur