Kira, le 07.01.2010 à 19:28, dit :
Plus sérieusement, il suffit de te positionner à l'endroit qu'occupait Erranil, d'ouvrir ta console, et de taper
Placeatpc erranil 1 1 1 [Entrée]
Une nouvelle Erranil apparaitra, et comme ce personnage n'obéit à aucun script, ça ne risque pas d'avoir d'effets trop dérangeants sur la suite de ta partie...
D'une manière générale, il est préférable de tenter d'abord un "position" ou un "positionCell" sur l'objet perdu. Cela oblige à taper 3 lignes de codes en plus mais ça prévient tout bug futur. Il n'y a pas que les problèmes de scripts remis à 0 avec "Placeatpc". Même quand il s'agit d'un PNJ ou d'un objet du jeu original, un "mod" peut avoir un script qui lui donne une instruction. Si l'ancien PNJ est toujours dans le jeu, l'instruction ne sera donnée qu'à une seule des 2 références (le premier PNJ trouvé en fonction de la cellule où se trouve le PJ et d'autres critères) mais sera-ce le bon ?
La méthode la plus sure quand un PNJ a disparu est :
1) Replacer les PNJs à leur position définie dans le Tescs : Commande "RA"
2) Chercher si le PNJ est toujours présent dans la cellule où dans le monde extérieur. Code :
"IDduPNJ"->GetPos x soit dans ce cas :
erranil->GetPos x
Si le résultat du code indique une coordonnée, c'est que le PNJ est présent. Si on le fait à l'extérieur, le jeu cherchera dans tout le monde sauf les cellules intérieures (ni les conteneurs ou inventaires, pour les objets concernés). Si le PNJ est sensé être dans une cellule intérieure, il faut donc faire le code dans cette cellule.
3) S'il n'est pas présent alors qu'il devrait y être, il faut vérifier s'il n'est pas comptabilisé comme mort avec le code :
"IDduPNJ"->GetDeadCount soit dans ce cas :
erranil->GetDeadCount
4) S'il est présent, on peut le ramener en place avec la commande "Position". D'abord, il faut placer le PJ à l'endroit où devrait se trouver le PNJ et relever la position avec ces 3 codes :
Player->GetPos x
Player->GetPos y
Player->GetPos z
Ensuite, on s'écarte et on place le PNJ aux coordonnées relevées ;
"IDduPNJ"->Position x y z 0 (les lettres sont bien sûr à remplacer par les coordonnées relevées juste avant et il ne pas oublier le zéro ou un autre chiffre à la fin.)
Note : On peut aussi, pour mener l'enquête se rendre là où il est (parce qu'après tout, quand on a cherché un PNJ on a envie de savoir où il est).
Pour ça :
Player->Position x y z 0
S'il est dans le décor et qu'on ne peut pas le traverser, il faut utiliser d'abord le code :
TCL
Et utiliser à nouveau "TCL" pour redonner de la substance au PJ.
5) S'il n'apparait toujours pas, on vérifie s'il n'est pas "disablé" :
"IDduPNJ"->GetDisabled
Si le code renvoie "1", c'est qu'il l'est. Il faut savoir si ce n'est pas voulu dans le jeu. Si on sait qu'il devrait être visible, il faut utiliser :
"IDduPNJ"->Enable
6) S'il s'obstine à ne pas vouloir apparaitre, on utilise le "PlaceatPC".
C'est plus long et pas toujours nécessaire comme procédure mais toute utilisation de codes-console sur une partie en cours est risquée, si on ne sait pas exactement la situation. La disparition d'un PNJ peut être un simple bug de positionnement ou autre mais elle peut aussi être la conséquence d'un autre problème qui ne deviendrait visible que plus tard dans la partie.
La règle pour garder une partie "saine" est donc à mon avis, de faire le minimum de changements avec la console et de chercher d'où vient l'erreur. A plus forte raison quand il s'agit d'un PNJ du jeu et non celui d'un module.