Page 1 sur 3
Démarrer une quête avec un dialogue
Posté : 19 août 2020, 22:17
par Confrère_VF
Je voulais poster ça dans la rubrique d'aide aux scripts, mais visiblement je ne suis plus autorisé à y ouvrir des sujets (pas de bouton pour ça). Dommage, car je risque d'avoir beaucoup de scripts liés à ce mod et j'aurais voulu éventuellement tout regrouper à un même endroit plutôt que d'ouvrir 36 topics.
Index des scripts travaillés :
► Afficher le texte
Démarrer une quête (ou plusieurs) dans un dialogue - en cours
Je suis encore sur Lucinia et la fonction de chambellan, j'essaie de comprendre les scripts vanilla mais je manque sûrement de vocabulaire parce que même en lisant des tutos sur la Conf, je suis perdu.
Quoi qu'il en soit, j'ai voulu essayer quelque chose, à savoir donner 3 Quests "discrètes" à Lucinia : la première est lancée dès le début, c'est pour qu'on la rencontre la première fois et où on choisit de l'épargner ou non. Maintenant,avec la réplique où on la laisse en vie, je voudrais lancer les deux autres quêtes :
PDBLuciniaPriest où elle nous parle d'elle et de son passé, et
PDBLuciniaSteward où on lui propose de devenir chambellan d'un de nos manoirs (pour info, les codes correspondants sont BYOHouse1 = Epervine, BYOHouse2 = Morthal et BYOHouse3 = Aubétoile).
Le seul petit problème, c'est que je ne sais pas comment lancer les deux quêtes en même temps. J'ai essayé la fonction NomDeLaQuete.Start() (j'ai mis comme ça) dans la section "End" des scripts de la réplique en question, mais en compilant j'ai un message d'erreur :
► Afficher le texte
Starting 1 compile threads for 1 files...
Compiling "TIF__060EF7CC"...
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(9,0): variable PDBLuciniaPriest is undefined
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(9,17): none is not a known user-defined type
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(10,0): variable PDBLuciniaSteward is undefined
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(10,18): none is not a known user-defined type
No output generated for TIF__060EF7CC, compilation failed.
Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on TIF__060EF7CC
J'essaie de trouver dans le jeu vanilla des quêtes qui se succèdent automatiquement (par exemple le début de la Confrérie noire où on a tué Astrid et qu'on va voir Maro pour lui dire qu'on va tuer le reste), mais je n'arrive pas à mettre la main dessus.
J'ai l'impression que ça risque d'être le perso le plus scripté^^ Quoique, à voir.
Re: Déclencher des quêtes avec des répliques de dialogue
Posté : 20 août 2020, 06:30
par A .
@Confrère_VF il y avait un problème avec les jeux de permissions de plusieurs groupes d'utilisateurs pour ce sous-forum et un autre, c'est normalement réparé.
C'est totalement transparent pour les administrateurs et modérateurs, donc si onne nous le signale pas c'est le genre de coquilles qui peuvent rester très longtemps
Du coup j'ai déplacé ton message, je ne sais pas si le titre est assez explicite par rapport à ta demande mais tu peux bien sûr rechanger.
Re: Déclencher des quêtes avec des répliques de dialogue
Posté : 20 août 2020, 12:06
par Confrère_VF
Merci ! Pour le nom, disons que pour l'instant c'est clair par rapport à ce que je cherche, mais je comptais (comme dit) utiliser ce topic pour regrouper tous les scripts relatifs à mon idée de mod
Prêtres de Bordeciel. Et il y en aura plusieurs^^
Alors j'ai finalement trouvé quelque chose qui se rapproche de ce que je cherche, à savoir le lancement de la quête annexe de la Confrérie noire quand on entend la conversation entre Uthgerd et Skulvar aux écuries de Blancherive à propos de Cicéron : quand on les entend parler, la quête démarre. Mais ça reste une annexe, sans titre.
J'ai essayé de me baser sur le script qui était donné sur la réplique d'Uthgerd :
Code : Tout sélectionner
If DB01Misc.GetStage () < 10
DB01MiscObjective.SetStage (10)
Endif
Ce qui voudrait dire que la commande Start n'est pas utilisée et qu'il faut lancer le premier Stage d'une quête. Donc j'ai ajouté les stages 0 et 10 à mes deux quêtes ci-dessus, copié-collé le script sur la réplique que je veux et changé les noms des quêtes pour avoir ça :
Code : Tout sélectionner
If PDBLuciniaPriest.GetStage () < 10
PDBLuciniaPriestObjective.SetStage (10)
Endif
If PDBLuciniaSteward.GetStage () < 10
PDBLuciniaStewardObjective.SetStage (10)
Endif
Mais ça ne va toujours pas, le script n'est pas content et me dit qu'il y a une erreur :
► Afficher le texte
Starting 1 compile threads for 1 files...
Compiling "TIF__060EF7CC"...
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(20,4): variable PDBLuciniaPriestObjective is undefined
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(20,30): none is not a known user-defined type
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(23,3): variable PDBLuciniaSteward is undefined
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(23,21): none is not a known user-defined type
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(23,33): cannot compare a none to a int (cast missing or types unrelated)
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(23,33): cannot relatively compare variables to None
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(24,4): variable PDBLuciniaStewardObjective is undefined
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\temp\TIF__060EF7CC.psc(24,31): none is not a known user-defined type
No output generated for TIF__060EF7CC, compilation failed.
Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on TIF__060EF7CC
Vraisemblablement il me demande d'ajouter des variables, mais je ne sais pas comment on fait^^
Re: Prêtres de Bordeciel : une histoire de scripts
Posté : 20 août 2020, 17:10
par A .
Je préfère que tu fasses 10 ou 12 ou autant que nécessaire de sujets différents avec des titres clairs plutôt qu'un fourre-tour, la Forge un espace de travail et qui se veut collaboratif même si l'activité n'est pas aussi intense que dans d'autres parties du forum et c'est beaucoup plus simple pour trouver de l'aide pour les futures personnes s'aventurant ici si les sujets ont déjà été traités
Pour tes questions malheureusement je ne serai d'aucune aide, je n'ai toujours pas pris le temps d'étudier le scripting de Skyrim.
Re: Prêtres de Bordeciel : une histoire de scripts
Posté : 20 août 2020, 17:26
par Irwine
De ce que je peux voir de tes erreurs tu donnes à ton script des variables qui ne sont pas définie.
En gros tu lui dit d'utiliser une variable qui n'existe pas.
Ce que j'en comprend, c'est que tu dois d'abord créer les dites variables quelque part avant de les appeler.
Je te dirais de regarder cette variable DB01MiscObjective et de voir si elle existe ailleurs que dans le script, normalement oui, mais je ne connais pas le CK, je te parle de scripting pure.
Malheureusement je ne peux pas t'aider plus.
Re: Démarrer une quête avec un dialogue
Posté : 20 août 2020, 22:40
par Confrère_VF
Ah bah c'est ballot ça, impossible de retrouver la scène entre Uthgerd et Skulvar ! Pourtant je l'avais sous les yeux, j'ai pas sortie le script de nulle part, mais maintenant je n'arrive plus du tout à la retrouver dans les Quest, ni en fouillant dans tous les dialogues. C'est pas banal. Si jamais quelqu'un la retrouve avant moi, je lui serai fort gré !
Re: Démarrer une quête avec un dialogue
Posté : 25 août 2020, 17:32
par Confrère_VF
Alors j'ai finalement retrouvé la ligne en question (la fonction "Rechercher" est trop souvent négligée), donc c'est dans la Quest
DialogueWhiterun => Scenes => WhiterunStablesScene, puis c'est la première réplique. Elle a le code suivant :
Code : Tout sélectionner
If DB01Misc.GetStage () < 10
DB01MiscObjective.SetStage (10)
Endif
Avec les propriétés DB01Misc et DB01MiscObjective, mais c'est tout ce que je trouve. Je ne sais pas vraiment ce que le CK me demande en "créant des variables". J'ai bien trouvé un tuto sur Youtube qui dit comment on en crée, mais je n'ai pas compris (en anglais dans un milieu qui ne m'est pas familier, à savoir le coding, c'est pas évident).
J'ai essayé dans ma propre quête (PDBLuciniaFirstMeet), à la ligne correspondante, d'ajouter une Property avec PDBLuciniaPriest en tant que Quest (comme c'est fait dans la quête vanilla, mais j'ai ce message :
► Afficher le texte
Code : Tout sélectionner
Starting 1 compile threads for 1 files...
Compiling "TIF__060EF7CC"...
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\TIF__060EF7CC.psc(26,15): script property PDBLuciniaPriest already defined
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\TIF__060EF7CC.psc(26,15): script variable ::PDBLuciniaPriest_var already defined
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\TIF__060EF7CC.psc(26,15): script property PDBLuciniaPriest already has a get function defined
E:\games\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\TIF__060EF7CC.psc(26,15): script property PDBLuciniaPriest already has a set function defined
No output generated for TIF__060EF7CC, compilation failed.
Du coup je comprends pas, je fais comme ce qui est fait dans une quête vanilla mais ça coince quand même...
J'offre une superbe pipe taillée à la main au maître (ou la maîtresse) de forge qui veut bien me guider :
Re: Démarrer une quête avec un dialogue
Posté : 25 août 2020, 18:11
par Tissendel
Dans cet exemple tu as 2 quêtes différentes, DB01Misc et DB01MiscObjective. Tu as créé aussi 2 quêtes PDBLuciniaPriest et PDBLuciniaPriestObjective ?
Re: Démarrer une quête avec un dialogue
Posté : 25 août 2020, 18:21
par Confrère_VF
Ah, étant donné que la première ligne (PDBLuciniaPriest) ne fonctionnait pas, je n'avais pas pensé à faire de version Objective. Qu'est-ce que ça apporte, en fait ? Parce que quand je regarde dans les trucs vanilla, c'est souvent vide.
Re: Démarrer une quête avec un dialogue
Posté : 25 août 2020, 18:47
par Tissendel
De ce que je vois il semble que DB01Misc soit la quête de Cicero, L'autre semble juste un lien entre le dialogue de Wihterun et la quête de Cicero ( avec l’objectif affiché "Parler à l’étrange bouffon" tandis que celle de Cicero s'active an parlant à Cicero lui même. Ici ça verifie donc que la quete de Cicero est pas déjà activée et dans ce cas active la quête "liante".
Dans ton cas, si tout est dans une même quête, je pense tu peux l’appeler avec Self : Self.SetStage(10)