TESCS2 : PlaceAtMe

De Wiwiki
Sauter à la navigation Sauter à la recherche


Syntaxe :

[ObjectId.]PlaceAtMe ObjectID2, nombre [, distance] [, direction] 

Exemple :

player.PlaceAtMe NinjaMan, 1, 200, 1 


Place le nombre d'objet(s) ObjectID2 près de l'objet appelant, dans la direction et à la distance indiqués.

Si l'endroit n'est pas adéquat (dans l'air, dans un mur, etc), l'objet est placé dans une des autres directions possibles, ou sur l'objet appelant.

La direction peut être :

0 = devant
1 = derrière
2 = à gauche
3 = à droite

Notes :

  • Il faut comprendre "objet " au sens large : armes, vêtements, créature, PNJ…
  • Cette fonction peut s'appliquer également aux listes de niveau de creature (leveled lists ).
  • Elle peut aussi être utilisée avec des listes de niveau d'articles d'inventaire (leveled items). Ces listes ne sont pas utilisables dans le monde extérieur, mais exclusivement dans des containers. Si vous essayez de le faire, cela provoque l'affichage d'un point d'exclamation jaune (Marker_Error.NIF).

Attention : l'état Disable (non valide) n'enlève pas l'objet.

Un objet disable, c'est dire non valide, est normalement supprimé lors de la sauvegarde du jeu. Les tests semblent montrer que les objets crées par la fonction PlaceAtMe ne le sont pas, ce qui peut causer des problèmes pour les sorts qui créent de nombreux activateurs, et ensuite les mettent à l'état disable.

Il est donc préférable d'utiliser la fonction MoveTo sur des références d'objet persistantes, lorsque c'est possible, au lieu du couple PlaceAtMe / Disable.

La plupart du temps, MoveTo convient. Cependant, s'il est absolument nécessaire d'utiliser PlaceAtMe, il serait bon de l'indiquer dans le "lisez-moi" de votre mod.

Obtenir la référence de l'objet créé :

Quand cette fonction est utilisée pour crer une seule instance, cette fonction retourne une référence qui peut être utilisée par d'autres fonctions d'appel.

scn scriptName

ref ''refName''

begin ''blockName''
     set ''refName'' to refObjetAppel.PlaceAtMe BaseObjetACréer 1, 0, 0
end

La variable refName contient maintenant la référence de l'objet créé.

Cette référence n'est pas joignable dans les inventaires. L'accès par la référence à des objets dans les inventaires, après qu'il y aient été placés, peut causer un CTD (Crash To Desktop), un retour sur le bureau… de Windows...

A partir de la console :

PlaceAtMe est utilisable à partir de la console, avec le FormID, pas l' EditorID.

Ainsi, il est correct dans un script d'écrire :

player.PlaceAtMe lockpick 1, 256, 0

A la console, pour donner un crochet au joueur, il faut utiliser :

player.PlaceAtMe 00000A 1, 256, 0

Voir également