Question sur un mods que je fais...

Toutes vos idées pour créer des mods.
HawkFest
Confrère
Messages : 176

Re: Question sur un mods que je fais...

Message par HawkFest »

T!TER a écrit :Merci pour tes précisions.... euh..... très instructives ( même si elles sont un peu longues :D ) !! :mrgreen:
Ahhh moi mes lectures de chevet ce sont des bouquins d'informatique! :ugeek: ... En fait non je les garde pour les toilettes en réalité :lol:.
Mais bon, j'en dis le plus possible comme ça on ne perd pas de temps à échanger des détails technique, et ça peut servir en tant que référence pour plus tard, en d'autres occasions: je préfère discuter de plein d'autre chose... Bonne lecture ;)

Et je vais contenter ta soif de lire des longueurs d'ailleurs... Voici ce qui pourrait être fait pour accomplir ce qui était demandé, tout en contournant la possibilité de bug dont je parlais:
  • Fabriquer un token auquel on attache un script
  • À partir du CS, mettre ce token dans l'inventaire de tous les PNJ immortels
  • Rendre ces derniers PNJ mortels, mais sans "respawn"
  • Le script en question devra agir ainsi:
    1. SI le PNJ vien de mourir (bloc Begin OnDeath):
    2. Initialiser une variable qui fera boucler le bloc Begin GameMode pendant 2.5 jours (avant que le moteur du jeux ne le fasse disparaitre définitivement, et ça laisse plus de temps qu'il n'en faut au joueur pour le fouiller);
    3. lors de la 1ere boucle du GameMode, prendre note de tous les éléments d'inventaire que son objet de base contient par défaut dans le CS, en inscrivant leurs références dans une matrice à deux dimensions et dynamiquement contrôlée par un script de quête: dim1 est l'ensemble des PNJ qui sont morts, dim2 est l'ensemble des éléments d'inventaire pour chaque PNJ (il faut donc OBSE+pluggy de Elys)
    4. Lors de la fin du délai de 2.5 jours, ressuciter le PNJ (fonction "resurrect") et cesser la boucle du bloc GameMode
    5. Se servir du vecteur pré-cité (la dim2 complète d'un élément de dim1 correspondant au PNJ), afin de réinsérer les items de base dans son inventaire, tout en vérifiant que chaque item n'est pas déjà présent (surtout en ce qui concerne les objets scriptés ou les tokens, dont il faut préserver l'occurrence dans le monde afin d'en préserver les valeurs des diverses variables)
Modifié en dernier par HawkFest le 30 nov. 2008, 20:05, modifié 5 fois.

On ne peut se mettre dans la peau d'un autre, sans devoir le tuer et l'écorcher vif pour la lui prendre
-- Boris Vian, "Herbe rouge"
HawkFest
Confrère
Messages : 176

Re: Question sur un mods que je fais...

Message par HawkFest »

Note concernant mon dernier post: il y a erreur. En effet, la fonction "Resurrect" agit comme un "respaw", c'est à dire que le PNJ ressuscitera avec tout son inventaire de base, et donc tout token ajouté via le CS (non via script) sera réinitialisé à zéro.

La solution peut être plus lourde ou plus simple, et reste à tester: est-ce qu'en plus de rétablir les objets de base en inventaire, "resurrect" enlèvera aussi tout objet ajouté durant le jeux? Je ne sais pas, il faut expérimenter: si oui, alors juste avant la résurrection, il faut vider le PNJ de son inventaire complet et transférer ce dernier dans un autre contenant temporaire (par ex. un autre PNJ invisible qui est "téléporté" à proximité, ou encore qui réside dans une cellule tampon), y compris donc tout token qui fut ajouté via quelque quête ou provenant du PNJ de base (CS). En ce qui concerne les tokens, comme les variables de script d'un token sont persistantes, c'est la même référence au token que l'on récupère et non une nouvelle occurrence via respawn ou resurrect, et les variables sont donc préservées. Mais bon, tout cela reste à devoir être testé...

On ne peut se mettre dans la peau d'un autre, sans devoir le tuer et l'écorcher vif pour la lui prendre
-- Boris Vian, "Herbe rouge"
Avatar du membre
Velvian
Moddeur aspirant
Moddeur aspirant
Messages : 761

Re: Question sur un mods que je fais...

Message par Velvian »

moi qui pensait faire un truc simple ( de mon niveau) ben c'est râpé ou alors la technique de respawn via tes devra être sélective a fond... :cry:
HawkFest
Confrère
Messages : 176

Re: Question sur un mods que je fais...

Message par HawkFest »

Velvian a écrit :moi qui pensait faire un truc simple ( de mon niveau) ben c'est râpé ou alors la technique de respawn via tes devra être sélective a fond... :cry:
Oui, sélective. Un petit exemple qui est cependant sans grande conséquence: si Baurus, le garde du corps de Martin, se fait tuer lors de la bataille dans la cité impériale, alors peu importe que l'on fasse un "resurrect", le topic concernant sa mort apparaît tout de même dans le dialogue avec Jauffre. Autre exemple avec Jauffre: s'il se fait tuer lors de la bataillle de Bruma tandis qu'il porte une armure, un "resurrect" fait en sorte que pour toute la suite il continuera de se battre en robe de moine: la fonction "resurrect" a agit tel un "respawn", en ce sens que son inventaire est remplacé par celui de son NPC de base (l'armure qu'il portait durant la quête de la bataille de Bruma étant ajoutée par quelque script)...

Mais tu sais quoi? Oublie tout ce que j'ai écrit et amuse-toi, essaye quand même en ne faisant que cocher "respawn". La conséquence la plus commune étant que l'inventaire se fasse remplacer par l'inventaire de base (la liste associée au PNJ dans le CS), ce n'est pas si dommageable. Ça peut même être une conséquence "naturelle" dans un jeux de rôle, aussi naturelle que la resurrection... ;)

Par exemple, je suis prêt à parier que faire cela avec les capitaines et les gardes de la cité impériale, ça ne fera aucun problème. Vérifie tout de même que les quêtes ne traitent pas la mort des PNJ concernés (car certaines le font et s'arrêtent avec un message annonçant que la quête ne peut plus être complétée). En ce qui concerne les gardes et capitaines de la cité impériale, à mon avis le seul à vérifier serait Lex (bien que pour être rigoureux il faut tous les vérifier, tous ceux qui sont initialement marqués immortels et/ou impliqués dans des quêtes). La raison: malgré que son armure et son inventaire restent inchangés, on lui change ses package plusieurs fois: selon moi tout cela est contrôlé dans le AI du PNJ à l'aide de conditions, donc ça devrait être ok car l'AI reste celui de base et que de tout façon, et les packages associés via script sont éphémères (un package ajouté via script est traité ainsi: il se fait ajouter au top de la file de packages de l'AI; il se fait exécuter tant que les conditions du packages le prescrivent; il se fait éliminer du top de la liste). La situation qui peut faire du tors, c'est quand ces conditions de package sont déterminées par un script attaché au PNJ ou à quelque token ajouté durant le jeux (ce dernier souvent ajouté via un scriopt de quête). Chose que je ne sais pas du tout pour les PNJ dont il est ici question, mais je crois que tu peux jouer le jeux des probabilités ;)...

Teste et ajuste au besoin. Pour tester, détermine les quêtes qui impliquent les PNJ puis joues-les. Il serait préférable que tu consultes Wiwiland ou UESPWiki - en bas de page, afin de connaître les identificateurs de quête (ID) - ce dernier n'est pas donné sur Wiwiland, mais il l'est sur UESPWiki ainsi que les numéros d'étapes de quête. Pour complétere l'exemple de Lex, l'ID de la quête La jeune fille elfe est TG03Elven, et l'étape à partir de laquelle on pourrait vouloir tester serait à partir de l'étape 20. Utilise la console pour savoir non seulement comment afficher l'état d'une quête (commande console "sqt" - pour "Status of Current Quest"), mais aussi comment contrôler les quêtes durant le jeux: démarrer (startquest), stopper (stopquest), modifier (setstage ou set UneVariableDeQuête). D'autres commandes permettent de tester le comportement avant de faire un mod en ce sens.

Par exemple fais ce test: pendant la quête où Lex est au Water Front en train de courrir après Renard Gris, alors que tu doive lui parler pour lui signaler le voleur de la statuette, avant de lui parler fais aune suavegarde. Puis tues-le. S'il est immortel, vas dans le CS puis fait un mod qui le rend mortel avec respawn (ce que tu veux faire). Reviens dans le jeux et teste encore, tues-le. S'il est mort et qu'un message de quête annonce que la quête est "morte" elle aussi, alors c'est ainsi: le joueur n'a qu'à bien se tenir alors qu'il sait que certains PNJ sont essentiels pour le déroulement de certaine quêtes. Le respawn se produira, mais en ce qui concerne la quête, c'est terminé. Sinon, si rien ne fait stoper la quête (ce qui serait un bug à mon avis mais bon...), c'est bon signe: maintenant fais un "resurrect" via la console, puis constate la suite du déroulement.

On ne peut se mettre dans la peau d'un autre, sans devoir le tuer et l'écorcher vif pour la lui prendre
-- Boris Vian, "Herbe rouge"
Avatar du membre
Velvian
Moddeur aspirant
Moddeur aspirant
Messages : 761

Re: Question sur un mods que je fais...

Message par Velvian »

dac je vais faire des essai mais tranquillement car je joue plus particulièrement pour les test des mods, donc installer une 2eme fois puis il servira de test...encore merci, je donnerais des nouvelle quand j'aurai réussis avec lex.
HawkFest
Confrère
Messages : 176

Re: Question sur un mods que je fais...

Message par HawkFest »

Velvian a écrit :dac je vais faire des essai mais tranquillement car je joue plus particulièrement pour les test des mods, donc installer une 2eme fois puis il servira de test...encore merci, je donnerais des nouvelle quand j'aurai réussis avec lex.
Bah, coche tout le monde et procède par élimination ce sera plus simple (mais plus long que d'analyser dans le CS le peu de PNJ pour qui il existerait un problème potentiel). Ou encore, si tu veux être certain en ce qui concerne strictement les gardes de la Cité, ne touche pas à Lex et c'est tout, vas-y avec le reste...

On ne peut se mettre dans la peau d'un autre, sans devoir le tuer et l'écorcher vif pour la lui prendre
-- Boris Vian, "Herbe rouge"
Répondre

Retourner vers « Idées »