Velvian a écrit :en faite faut décocher pnj quete et mettre respawn, c'est tout bête :] mais maintenant le truc c'est qu'il faut connaitre les pnj pour éviter de bloquer le joueur, au lieux de couper une quête on fait attendre le joueur...et sa laisseras plus de liberté au joueur

Le GROS problème avec ça, c'est que souvent les PNJ utilisés par les quêtes ont des scripts qui leur sont associés, soit directement dans leur objet de base (dans le CS), soit via ce que l'on nomme des "token": ce sont des objets d'inventiare invisibles et non jouables (un peu comme les armures de garde mais invisibles), et auxquels sont attachés des scripts (des contrôles, des assignations temporaires d'anim ou autres). Le bug:
-
Un PNJ est un objet dit "persistant": les diverses valeurs des variables du script qui lui est attaché, "persistent" (sont conservées en mémoire) dans le temps et l'espace.
- Si le joueur quitte la cellule contenant le PNJ en question, puis revient quelques temps plus tard, les variables de script associés au PNJ ont gardé leurs dernières valeurs (à l'opposé, quand un objet n'est pas "persistant", les variables de script associé à un tel objet sont toutes réinitialisées à zéro lors d'un rafraîchissement ou chargement de cellule).
- La persistance est limitée à l'instance d'un objet dans le jeux, pas à l'objet de base tel que vu dans la fenêtre "Object Window" du CS (on peut comparer ces objets de base à des "classes" en langage OOP).
- Quand on tue un PNJ marqué comme "respawn", la nouvelle occurrance du PNJ n'est plus la même instance de l'objet de base, c'est une nouvelle instance, un peui comme la fonction "CreateFullActorCopy", qui de la console permet de cloner des PNJ dans le jeux: on obtient plusieurs instances du même PNJ de base...
- Si un "token" fut temporairement placé dans l'inventaire d'un PNJ via une quête (via le script de quête), et que ce PNJ est tué, alors sa nouvelle instance qui apparaîtra lors du rafraîchissement (après 3 jours) n'aura pas ce token en inventaire ni donc le script qui y est associé ===> BUG dans le déroulement d'une telle quête.
Donc de ce qui précède, outre le cas évident des "token",
si le PNJ est tué puis instancié à nouveau lors d'un rafraîchissement de cellule (lors d'un "respawn"),
il ne s'agit plus de la même instance (c'est une nouvelle référence d'enregistrement)! Et donc
toutes les valeurs associées aux variables de quelque script directement lié à l'ancienne instance d'un PNJ n'existent plus (Pour les PNJ, on peut comparer l'immortalité à la persistance des variables de script),
ces variables sont toutes réinitialisées à zéro. Ce qui peut générer de GROS problèmes lors des déroulement de quête, à moins d'y voir et cela demanderait un travail de moine (vérifier les scripts associés a tous les PNJ immortels pour toutes les quêtes qui les concernent)...
Velvian a écrit :pour les armures je pense laisser les autre mods le faire, j'ai vue qu'il y en avait pas mal de ce genre...
Pourtant ce serait plus simple que de vouloir des PNJ immortels mortels, plus sécuritaire en tout cas, voici comment faire... Dans le CS, trouve les entrées relatives aux objets d'armure que portent les gardes, puis pour chacun de ces objets (pas plus de 5 ou 6 si on considère casque, bottes, pantalon, gants, cuirasse et arme), fait ce qui suit:
- clique 2x dessus pour ouvrir sa fenêtre de référence "Armor"
- coche la case "Playable" puis clique "Ok"
C'est tout! Maintenant si tu tues un garde qui porte la-dite armure, tu pourras dès lors la prendre de son inventaire

... Pas plus compliqué, n'oublie pas que les objets de la fenêtre "Object Window" sont dits "objets de base" (ou "classe" en OOP): ils servent de modèle pour toutes les instances du même objet dans le jeux, donc une seule manipulation dans le CS même s'il y en a 10000 dans le jeux!
Une alternative à ce que tu veux faire:
- à partir du CS (Object Windows / Actors / NPC), sélectionne tous les PNJ gardes qui ne sont pas immortels;
- marque les en tant que "respawn";
- fais ce qui est mentionné plus haut pour leurs armes et armures.
Ansi, tu pourras t'amuser à tuer tous les gardes qui ne jouent aucun véritable rôle dans les quêtes, piquer leur inventaire, et quelques jours plus tard ils seront encore là, la ville n'aura pas l'air d'une ville fantôme en permanence, et ta sauvagerie ne sera pas gravée dans les sombres anales de Cyrodiil...
