Faire apparaître un PNJ à 4 endroits possibles selon le contexte

Le langage des scripts.
Répondre
daan
Moddeur aspirant
Moddeur aspirant
Messages : 171

Faire apparaître un PNJ à 4 endroits possibles selon le contexte

Message par daan »

Bonjour ,

Lors de ma quête le player est amené à rechercher différent artefacts.
Ces artéfacts sont dispersés dans 4 grottes.
L’orque le joueur a récupérer les 4 artéfacts je souhaiterai faire apparaitre un PNJ .
Le truc c’est que ce PNJ devra apparaitre dans la bonne grotte. pour ce faire j’identifie la grotte via une variable globale puis, et c’est la que j’ai mon problème, je tente de faire apparaitre ce PNJ dans la bonne grotte.

Pour ce faire j’ai mis en place :

1) Dans chaque Grotte j’ai créé un Xmarker qui correspond au point d’apparition du PNJ « Xmarker_Apparition1 », « Xmarker_Apparition2 », « Xmarker_Apparition3 », « Xmarker_Apparition4 »

2) J’ai créé et renseigner des proprietées du type « objectreference » contenant les Xmarker dans le script de ma quête: « Property_Xmarker_Apparition1 », « Property_Xmarker_Apparition2 », « Property_Xmarker_Apparition3 », « Property_Xmarker_Apparition4 »

3) J’ai créé un Alias qui pointe vers l’un des Xmarker « Alias_ Xmarker_Apparition » (je suis obligé de le remplir avec quelque chose sans quoi la quête ne se lance pas .)

4) J’ai créé un Alias qui pointe vers mon PNJ (Alias_PNJ) , « Créate Refecence to Object » , dans le champ a coté j’ai sélectionné mon PNJ puis , « level : Easy », « Create At » et enfin dans le dernier champ : j’ai sélectionné l’alias du Xmarker precedament créé (Alias_ Xmarker_Apparition).

5) Dans le End fragment de ma quête je rédige :

Code : Tout sélectionner

If MaGlobalVariable.getValueInt() == 1 
     Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition1 )   
     Alias_PNJ.GetActorReference().enable()
Else
     If MaGlobalVariable.getValueInt() == 2
          Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition2 )   
          Alias_PNJ.GetActorReference().enable()
     Else
          If MaGlobalVariable.getValueInt() == 3 
              Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition3 )   
              Alias_PNJ.GetActorReference().enable()
         Else
              If MaGlobalVariable.getValueInt() == 4
                    Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition4 )   
                    Alias_PNJ.GetActorReference().enable()
              EndIf
         EndIf
     EndIf
EndIf
Et bien sur , cela ne fonctionne pas , le PNJ n’aparait pas . (la compilation se déroule pourtant correctement.)
L’un de vous pourrait il me dire si j’ai correctement utilisé le « .ForceRefTo »
Ou peut-être l’un d’entre vous sait-il où se trouve mon erreur ?

D’avance merci pour votre aide,
Daan

PS: Ced909 si tu arrive encore à résoudre mon problème je te devrais vraiment une Bière ! ;) :biere: lol !
Parce qu'on a pas commencer avec Skyrim ;
faites donc un tour a cette adresse pour vous rappelez votre jeunesse:
http://www.abandonware-france.org
avec par exemple:
http://www.abandonware-france.org/ltf_a ... php?id=332
Avatar du membre
ced909
Confrère
Messages : 151

Re: Remplir un alias avec différentes propriétés.

Message par ced909 »

Bonjour,

Lorsque ta quête est active, sache que tout tes Alias sont créé, par conséquent : "Alias_ Xmarker_Apparition" est créé meme si il est vide et donc "Alias_PNJ" est créé aussi sur l'"Alias_ Xmarker_Apparition" (vide) donc oui ça ne marchera pas.
La création des Alias se passe avant tous les Scripts et Scripts fragments de ta quest.

Aussi heu tu dis " j’identifie la grotte via une variable globale" ok mais à quel moment, tu passes cette variable Glob à 1~4 ? par quel procédé ?

Sinon ton fragment et tes Alias sont pas mal mais perso je rajouterai :

Code : Tout sélectionner

If MaGlobalVariable.getValueInt() == 1 
     Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition1 )   
     Alias_PNJ.GetActorReference().MoveTo (Property_Xmarker_Apparition1)
     Alias_PNJ.GetActorReference().enable()
Else
     If MaGlobalVariable.getValueInt() == 2
          Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition2 )   
          Alias_PNJ.GetActorReference().MoveTo (Property_Xmarker_Apparition2)
          Alias_PNJ.GetActorReference().enable()
     Else
          If MaGlobalVariable.getValueInt() == 3 
              Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition3 )   
              Alias_PNJ.GetActorReference().MoveTo (Property_Xmarker_Apparition3)
              Alias_PNJ.GetActorReference().enable()
         Else
              If MaGlobalVariable.getValueInt() == 4
                    Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition4 )   
                    Alias_PNJ.GetActorReference().MoveTo (Property_Xmarker_Apparition4)
                    Alias_PNJ.GetActorReference().enable()
              EndIf
         EndIf
     EndIf
EndIf
daan
Moddeur aspirant
Moddeur aspirant
Messages : 171

Re: Remplir un alias avec différentes propriétés.

Message par daan »

Bonjour,
Aussi heu tu dis " j’identifie la grotte via une variable globale" ok mais à quel moment, tu passes cette variable Glob à 1~4 ? par quel procédé ?
Dans chaque grotte il y a un trigger , quand le player entre dans le trigger la variable Glob est passé à 1~4.

Pourquoi utiliser les

Code : Tout sélectionner

Alias_PNJ.GetActorReference().MoveTo (Property_Xmarker_Apparition1)
La référence de l'alias_PNJ n'est elle pas créé sur l'"Alias_ Xmarker_Apparition" quand il est passer sur "Enable" ? ( sous resserve qu'il ne soit pas vide bien-sur)

Merci ,
Daan
Parce qu'on a pas commencer avec Skyrim ;
faites donc un tour a cette adresse pour vous rappelez votre jeunesse:
http://www.abandonware-france.org
avec par exemple:
http://www.abandonware-france.org/ltf_a ... php?id=332
Avatar du membre
ced909
Confrère
Messages : 151

Re: Remplir un alias avec différentes propriétés.

Message par ced909 »

daan a écrit :Bonjour,
La référence de l'alias_PNJ n'est elle pas créé sur l'"Alias_ Xmarker_Apparition" quand il est passer sur "Enable" ? ( sous resserve qu'il ne soit pas vide bien-sur)

Merci ,
Daan
Si mais seulement sur 1 Alias unique (un seul marker), et ceci dès le démarrage de la Quest.
daan
Moddeur aspirant
Moddeur aspirant
Messages : 171

Re: Remplir un alias avec différentes propriétés.

Message par daan »

Re-Bonjour,
i mais seulement sur 1 Alias unique (un seul marker), et ceci dès le démarrage de la Quest.
Merci pour cette précision.

Toutefois , mon problème persiste :
le PNJ est créé sur l'Alias de démarrage de la Quest et non sur le nouvel alias ( celui dans la grotte )
Une idée pour me sortir de ce mauvais pas ?

Daan
Parce qu'on a pas commencer avec Skyrim ;
faites donc un tour a cette adresse pour vous rappelez votre jeunesse:
http://www.abandonware-france.org
avec par exemple:
http://www.abandonware-france.org/ltf_a ... php?id=332
daan
Moddeur aspirant
Moddeur aspirant
Messages : 171

Re: Remplir un alias avec différentes propriétés.

Message par daan »

Bonjour,

J’ai fini par trouver le problème :
Au début de la quête je dois affronter une première fois le PNJ, une fois battu la quête continu.
Dans le « scénario » que j’avais imaginer, vers la fin de la quête, ce PNJ revenais et prétendais avoir finalement survécu a ses blessures.

D’où les:

Code : Tout sélectionner

Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition1 )   
Alias_PNJ.GetActorReference().MoveTo (Property_Xmarker_Apparition1)
Alias_PNJ.GetActorReference().enable()
Mais ce qui ce passé c’est que c’est l’instance « morte » de mon PNJ qui est rappelé.
J’ai donc rajouté :

Code : Tout sélectionner

Alias_PNJ.GetActorReference().Resurrect()
Ça marche bien à un détail prêt : il a bien son armure dans son inventaire mais il ne l’équipe pas. ( il est nu ! :surprise: :embaras: )

Ai-je oublié un truc ?
Existe-t-il une commande qui permette de tous ré-équiper d’un coup (Bottes, armure,…) ?

D’avance merci pour ton aide.
Daan.

EDIT: Non, non , c'est pas un poisson d'avril ! ^^
Parce qu'on a pas commencer avec Skyrim ;
faites donc un tour a cette adresse pour vous rappelez votre jeunesse:
http://www.abandonware-france.org
avec par exemple:
http://www.abandonware-france.org/ltf_a ... php?id=332
Avatar du membre
ced909
Confrère
Messages : 151

Re: Remplir un alias avec différentes propriétés.

Message par ced909 »

Bonjour,

tu peux tenter un Alias_PNJ.GetActorReference().ResetInventory() suite à son resurrect
Ca remet l'équipement initial du pnj et il l'équippe automatiquement, normalement ça marche, à voir si ça marche après un resurrect... à tester donc ;)
daan
Moddeur aspirant
Moddeur aspirant
Messages : 171

Re: Remplir un alias avec différentes propriétés.

Message par daan »

Bonjour,

d'abord merci pour ton indéfectible aide!

ensuite ,petit problème : ca ne compile pas !
is not a function or does not exist
une idée ?
Daan

Edit: ResetInventory semble être une"Console Commands".
Une autre idée ?
Parce qu'on a pas commencer avec Skyrim ;
faites donc un tour a cette adresse pour vous rappelez votre jeunesse:
http://www.abandonware-france.org
avec par exemple:
http://www.abandonware-france.org/ltf_a ... php?id=332
Avatar du membre
ced909
Confrère
Messages : 151

Re: Remplir un alias avec différentes propriétés.

Message par ced909 »

oups bah oui alors :
https://www.creationkit.com/index.php?t ... tReference

dans ton cas, c'est : Alias_PNJ.GetActorReference().Reset()
Je pense aussi que c'est même pas la peine de le "Resurrect" avant puisque Reset() s'en charge.
daan
Moddeur aspirant
Moddeur aspirant
Messages : 171

Re: Remplir un alias avec différentes propriétés.

Message par daan »

Bonjour,

Désolé du retard, pas mal de boulot ces derniers jours.

Pour en revenir a notre sujet :

Code : Tout sélectionner

Alias_PNJ.GetActorReference().Reset()
Alias_PNJ.GetActorReference().Disable()
Suivi de :

Code : Tout sélectionner

Alias_ Xmarker_Apparition .ForceRefTo(Property_Xmarker_Apparition1 )   
Alias_PNJ.GetActorReference().MoveTo (Property_Xmarker_Apparition1)
Alias_PNJ.GetActorReference().enable()
Fonctionne! :top:
par contre un

Code : Tout sélectionner

Alias_PNJ.GetActorReference().Reset(Property_Xmarker_Apparition1)
Reset bien le PNJ sur le bon Xmarker mais ce dernier est toujours nu. :pensif:

Mais bon, ça marche et c’est bien ça qui compte. :biere:
Merci a toi pour ton aide. :honneur:
Daan
Parce qu'on a pas commencer avec Skyrim ;
faites donc un tour a cette adresse pour vous rappelez votre jeunesse:
http://www.abandonware-france.org
avec par exemple:
http://www.abandonware-france.org/ltf_a ... php?id=332
Répondre

Retourner vers « Entraide sur les scripts »