[Résolu] Problème de dialogue de quête

Vous trouverez ici les tutoriels et l'entraide sur les outils et techniques de modding spécifiques à Oblivion.
Avatar du membre
vaykadji
Confrère
Messages : 323

Problème de dialogue de quête

Message par vaykadji »

Bonjour,

Je suis en train de bosser sur mon mod, et je crée par conséquent une quête.

Lorsqu'on achete le livre, la quete commence (queststart et setstage quete 1) "j'ai acheté un livre"
lorsqu'on lit le livre, la quete continue (setstage quete 2) "je devrais aller parler au type qui m'a vendu le livre"

Je crée des topics de discussion :
-j'assigne les topics à un pnj : getisid
-je mets comme condition : getquestrunning (pour que le topic apparaisse quand la quete est en cours et pas n'importe quand)

alors apparaissent les problèmes :
-la quête a beau être en cours, le topic de s'ajoute pas à la liste du pnj.
-Si je mets comme script sur le pnj un AddTopic : il propose le topic même si la quête n'est pas en cours (alors que j'ai mis la condition que la quête doit être en cours pour qu'il apparaisse)

Je suis perdu^^ j'ai cherché des tuto sur le net mais je n'ai rien trouvé de concluant.
Modifié en dernier par vaykadji le 11 juil. 2010, 13:42, modifié 1 fois.
Aussi connu sous le nom de Bjorn le Barbu, a touché au scripts/textures/packageAI/Landscape editing. Retraité aujourd'hui, peut-être à bientôt pour TESO ou TESVI ?
Avatar du membre
Prechan
Confrère
Messages : 4372

Re: Problème de dialogue de quête

Message par Prechan »

Personnellement je n'utilise pas la condition GetIsRunning mais GetStage avec l'étape de ta quête en sous condition. Ou alors tu met juste la condition GetIsID, et tu peux cocher "Say at Once" ou un truc du genre. Ainsi le NPC ne parlera de ça que pendant la quête et une seule fois.
Avatar du membre
vaykadji
Confrère
Messages : 323

Re: Problème de dialogue de quête

Message par vaykadji »

ah merci pour le getstage c'est utile, mais pour le moment mon pnj refuse toujours de me parler d'autre chose que de rumeurs^^

J'ai essayé avec le GetStage > MaQuête == 10.00 (le stage qui dit qu'on a lu le bouquin est le stage10)
j'ai essayé en désespoir de cause GetStageDone > MaQuête,10 == 1.00

Marche pas... bowdel
Aussi connu sous le nom de Bjorn le Barbu, a touché au scripts/textures/packageAI/Landscape editing. Retraité aujourd'hui, peut-être à bientôt pour TESO ou TESVI ?
Avatar du membre
Shadow she-wolf
Confrère
Messages : 830
Contact :

Re: Problème de dialogue de quête

Message par Shadow she-wolf »

vaykadji a écrit :il propose le topic même si la quête n'est pas en cours (alors que j'ai mis la condition que la quête doit être en cours pour qu'il apparaisse)
Une quête est par défaut démarrée, il y a la case "Start Game Enabled" de cochée par défaut, sur la fiche de quête.
Si cette case n'est pas cochée, on peut démarrer la quête de deux façons:
Avec la commande "StartQuest".
En faisant un SetStage sur cette quête.

Mais, on n'a pas accès aux sujets d'une quête qui n'est pas démarrée. La commande GetQuestRunning, comme condition de dialogue, sert juste à détecter si une quête autre que la quête hôte, est démarrée.
Donc, pour le coup, le "Say Once", qui ne sert qu'à dire une unique fois la réplique, ne changera pas grand chose au moment où est accessible la réplique.


Ensuite oui, il faut systématiquement faire un AddTopic pour un nouveau sujet.
Par contre, pourrais-tu détailler ?
Car si le AddTopic est fait, et que les conditions de stages sont remplies, il ne devrait pas y avoir de problème sur l'accessibilité du sujet...
Avatar du membre
vaykadji
Confrère
Messages : 323

Re: Problème de dialogue de quête

Message par vaykadji »

Shadow she-wolf a écrit :il faut systématiquement faire un AddTopic pour un nouveau sujet.
Par contre, pourrais-tu détailler ?
Car si le AddTopic est fait, et que les conditions de stages sont remplies, il ne devrait pas y avoir de problème sur l'accessibilité du sujet...
Ben merde flûte alors, en faisant des screens du cs, j'ai revérifié tout, et normalement tout devrait être bon, j'ai relancé le jeu pour tester et soudain : Joie ! ça marche.

Sans rien changer. C'est bizarre, j'ai du faire une erreur quelque part... enfin, un grand merci à vous.

J'aurai juste une question :

-Comme script sur le livre, ça te semble bon ? Ca ne risque pas de se répéter si je relis le bouquin une fois la quête finie, ou quand je serai à un autre stage plus élevé de la quête ?

Code : Tout sélectionner

scn aaDivineQuest01

short done
short donebis

Begin OnAdd
	if (donebis != 1)
		SetStage aaDivineQuest 1
		Set donebis to 1
	endif
End

Begin OnEquip
	if (done != 1)
		SetStage aaDivineQuest 10
		Set done to 1
	endif
End
Aussi connu sous le nom de Bjorn le Barbu, a touché au scripts/textures/packageAI/Landscape editing. Retraité aujourd'hui, peut-être à bientôt pour TESO ou TESVI ?
Avatar du membre
Shadow she-wolf
Confrère
Messages : 830
Contact :

Re: Problème de dialogue de quête

Message par Shadow she-wolf »

Le script semble correct structurellement parlant.

Par contre, attention avec les livres.

OnEquip n'est valide que si le livre est lu depuis l'inventaire.
Si il est lu depuis le monde, il faut utiliser le bloc OnActivate.

Dans les deux cas, ça reste de la lecture, mais pour le jeu, ce n'est pas pareil...
Il vaut donc mieux dupliquer ton bloc OnEquip sous forme d'un OnActivate (en gardant bien entendu la même variable) pour prendre compte de toutes les situations possibles. :)

Toutefois, le bloc OnActivate.
Son contenu remplace l'activation par défaut, c'est à dire, pour un livre, le livre ne sera plus lu, seul le contenu du bloc sera exécuté.
Pour palier à ce genre de problème, il faut utiliser la fonction "Activate", qui permet de forcer l'activation par défaut.
Aussi, pour vraiment prendre compte de toutes les possibilités inimaginables, il est de bon ton de tester si c'est le joueur qui active l'objet ou non. Juste pour éviter que ton journal ne se mette à jour si un PNJ s'amuse à activer le livre. (cas très hypothétique, certes...)

Bref, ça donnerait ce bloc-ci:

Code : Tout sélectionner

Begin OnActivate

activate ;quoi qu'il arrive, on lit le livre

if isactionref player ; on test si c'est bien le joueur qui active le livre
   if (done != 1)
      SetStage aaDivineQuest 10
      Set done to 1
   endif
endif
End
Avatar du membre
vaykadji
Confrère
Messages : 323

Re: Problème de dialogue de quête

Message par vaykadji »

Merci ! très bonne idée, on ne sait jamais que le joueur dépose le livre pour l'ouvrir^^
Aussi connu sous le nom de Bjorn le Barbu, a touché au scripts/textures/packageAI/Landscape editing. Retraité aujourd'hui, peut-être à bientôt pour TESO ou TESVI ?
Avatar du membre
Shadow she-wolf
Confrère
Messages : 830
Contact :

Re: Problème de dialogue de quête

Message par Shadow she-wolf »

c'est à dire si on est à un stage supérieur/si on a fini la quête
Supérieur ou égal au stage plutôt. :)

Quand à la quête terminée, une quête terminée rend ses dialogues inaccessibles. Je dis ça, au cas où tu mettrais ce dialogue et la quête dans la même quête. (il y a quête et quête, je sais, pas simple à lire, désolée. :zzz: )



EDTI: si tu édites aussi. :zzz:
Avatar du membre
vaykadji
Confrère
Messages : 323

Re: Problème de dialogue de quête

Message par vaykadji »

Désolé pour l'edit^^ mais c'était une question stupide étant donné que je ne pense pas éteindre la quête (la laisser active, mais la mettre en quête terminée; si tu vois ce que je veux dire : ca permettra d'avoir accès à quelques bonus sympa lorsqu'on aura fini la quête :p je fais des rappels incessants à ce qu'il s'est passé, à l'histoire de tamriel, aux dieux, etc)

Par contre, je suis face à un dilemne, avec le PNOO ^^ Le NPC Trayvond le Rougegarde est un personnage que j'utilise, et je dois lui rajouter un script d'addtopic... étant donné que le pnoo modifie ce perso (il s'appelle 'le garderouge' au lieu de 'le rougegarde' dans vanilla). Que faire ? Je risque de réécrire par dessus le pnoo si je ne fais que rajouter un script à ce perso. Je reprends les améliorations concernant ce perso qui sont dans le pnoo ? De facon à ce que je réécrive par dessus le pnoo, mais sans pour autant modifier les améliorations qui ont été faites ?



Autre question : étant donné que je double en VF toutes les quêtes qui sont présentes dans l'Armurerie, le dossier voice commence à prendre de l'ampleur, même en mp3 64kbps mono... une solution miracle ? (c'est pas énorme mais ça augmente d'une vingtaine de mo le mod, qui en faisait déjà 350 avant que je m'y mette. De plus je rajoute des meshes/textures/souds, je pense arriver à 400/450mo une fois fini)
Aussi connu sous le nom de Bjorn le Barbu, a touché au scripts/textures/packageAI/Landscape editing. Retraité aujourd'hui, peut-être à bientôt pour TESO ou TESVI ?
Avatar du membre
Shadow she-wolf
Confrère
Messages : 830
Contact :

Re: Problème de dialogue de quête

Message par Shadow she-wolf »

vaykadji a écrit :Par contre, je suis face à un dilemne, avec le PNOO ^^ Le NPC Trayvond le Rougegarde est un personnage que j'utilise, et je dois lui rajouter un script d'addtopic... étant donné que le pnoo modifie ce perso (il s'appelle 'le garderouge' au lieu de 'le rougegarde' dans vanilla). Que faire ? Je risque de réécrire par dessus le pnoo si je ne fais que rajouter un script à ce perso. Je reprends les améliorations concernant ce perso qui sont dans le pnoo ? De facon à ce que je réécrive par dessus le pnoo, mais sans pour autant modifier les améliorations qui ont été faites ?
Oui, soit tu reprends les modifications du PNOO...

Mais si le but de la modification ne sert qu'à ajouter un script qui fait un bête AddTopic, il y a largement moyen de s'en passer. ^^

La fonction AddTopic est globale, elle n'a pas du tout besoin d'être rattachée à un PNJ particulier, une fois que le AddTopic est fait, il est fait sur la totalité des PNJs.

Donc, si ton dialogue n'apparaît qu'après le lancement de la quête par exemple, tu peux faire un bête "AddTopic MonTopic" dans le Script Result d'un des stages.
Et si tu as un script de quête, autant faire le AddTopic directement dedans.

Après, si il y a du script plus avancé sur le PNJ, voir si tu peux faire cela via un script de quête plutôt qu'un script local.
J'essaye toujours, personnellement, de travailler le plus possible via des quêtes créées par le mod, histoire d'éviter au maximum les incompatibilités. :)


Concernant les doublages, je n'ai pas de solution miracle.
Toutefois, si les doublages prennent vraiment trop de place, on peut toujours les mettre dans une archive à part, et télécharge qui veut.
Dans l'archive de base, tu mets des doublages blancs, ça se compresse extrêmement bien ; les 1.08 Gio de doublages blancs de Réaction se compressent en quelques 3.65mio sur une archive .7z.
Répondre

Retourner vers « Modder Oblivion »