[Résolu] Attaque d'un PNJ à la fin d'un dialogue.

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

Attaque d'un PNJ à la fin d'un dialogue.

Message par daan »

Bonjour

L’un de vous pourrait il m’expliquer comment je dois m’y prendre pour qu’a la fin d’un dialogue l’interlocuteur (un PNJ) du joueur je met a l’attaquer ?
Y a bien un onglet « combat » dans le menu « Quest » Mais je ne comprends pas comment ça fonctionne.

D’avance merci pour votre aide
Daan
Modifié en dernier par daan le 23 janv. 2013, 20:27, modifié 1 fois.
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: Attaque du PNJ âpres dialogue.

Message par daan »

je me dirige vers :

Code : Tout sélectionner

XXXX.StartCombat(Game.GetPlayer())
le truc c'est que je ne sais pas comment l’appeler , car cette "commande" devrait être placer sur un Actor .
si vous avez une idée je suis preneur .

D'avance 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: Attaque du PNJ âpres dialogue.

Message par ced909 »

Salut,
Si ton script est placé sur un Actor, ou dans le Begin/End Fragment d'un Dial - c'est simplement :

Code : Tout sélectionner

StartCombat(Game.GetPlayer())
Mais tu te rappelles ? c'est mieux de passer par un :

Code : Tout sélectionner

Actor Property   PlayerRef  Auto
...
...
StartCombat(PlayerRef)
c'est plus rapide.

Par contre si ton morceau de script est ailleurs :

Code : Tout sélectionner

Actor Property   PlayerRef  Auto
Actor Property   MecMechantRef  Auto
...
...
MecMechantRef.StartCombat(PlayerRef)
Plus qu'à référence ton Property MecMechantRef
Et cette partie de script est appropriée dans un Dial...

Pour les Dial, ce sont sur les onglets "Dialogue Views" ou "Player Dialogue" et pas l'onglet "Combat"
je ne m'en suis jamais servi, et je n'ai jamais compris à quoi ça sert mais je doute fort que c'est pour ce que tu veux...
daan
Moddeur aspirant
Moddeur aspirant
Messages : 171

Re: Attaque du PNJ âpres dialogue.

Message par daan »

bonjour,
(ca fait plaisir de te voir ici aussi ! ;) )

Malheureusement le

Code : Tout sélectionner

StartCombat(Game.GetPlayer())
placé dans un End Fragment d'un Dial me donne :

Code : Tout sélectionner

Starting 1 compile threads for 1 files...
Compiling "TIF__01029A93"...
C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__01029A93.psc(11,0): StartCombat is not a function or does not exist
No output generated for TIF__01029A93, compilation failed.

Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on TIF__01029A93
une idée d’où vient le problème ?

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: Attaque du PNJ âpres dialogue.

Message par daan »

bonjour,
c'est bon j'ai trouvé :

Code : Tout sélectionner

akspeaker.startcombat(PlayerRef)
dans le End Fragment d'un Dialogue et c'est parti pour la bagarre ! :tape:

je passe a l'autre problème cf :
http://www.confrerie-des-traducteurs.fr ... 17&t=14994

merci pour ton aide .
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
Gerauld
Confrère
Messages : 2439

Re: [Résolu]Attaque du PNJ âpres dialogue.

Message par Gerauld »

Hors-sujet
Déménagement vers le sous-forum scripts...
Tant qu'à passer, une petite explication sur le soucis de compilation décrit plus haut :

il faut toujours se demander à quel objet s'applique l'instruction. Le seul cas où un objet n'est pas cité avant l'instruction est celui où le script est placé sur l'objet en question.

Ainsi, par exemple, dans un script de type "extends quest" placé sur une quête, le fait de taper stop() sans préciser d'objet stoppera la quête. Si tu places stop() dans un script placé sur un container, papyrus dira que la fonction n'existe pas. Ce qui est vrai car elle n'existe pas pour un container mais uniquemet pour une quête.

Dans ton cas, le startcombat() n'existe que pour un actor donc dans un script de type "extends actor", un type "extends objectreference" sur un actor ou si un objet de type actor est précisé avant, akspeaker dans ton cas.
Si tu places un startcombat() sur autre chose qu'un actor, Papyrus te dira logiquement que l'instruction n'existe pas.

C'est pour cela que sur le site du CK, il est précisé pour chque instruction le type d'objet auquel elle se rapporte et donc pour lequel elle existe.

Syntaxe :

[Objet ou script contenant la fonction].[fonction correspondant au type d'objet](Paramètres)
akspeaker.startcombat(playerref)

ou

scriptname myscript extends [Type d'objet]
[Fonction correspondant au type après extends ou à l'objet sur lequel le script est placé](paramètres)

Scriptname startquest extends quest

event oninit()
debug.notification("ma quête se lance et se stoppe")
stop()
endevent

ou

import [nom du script contenant la fonction]
[Fonction](paramètre)

import debug
notification("Bonjour")

Il est également possible d'utiliser la variable "self" pour se référer à l'objet sur lequel le script est attaché.
daan
Moddeur aspirant
Moddeur aspirant
Messages : 171

Re: [Résolu]Attaque du PNJ âpres dialogue.

Message par daan »

Bonjour,

je me permet de reprendre ce poste car j'ai une petite info et une question en relation avec le sujet:

Infos : chez moi si je coche le case "Goodbye" au dialogue du combat j'ai un délais ( entre 2 et 8 secondes) entre la fin du dialogue et le moment ou le PNJ m'attaque.
Si je décoche "Goodbye" tous ce passe bien . voila , juste au cas ou quelqu'un aurait suivit ce poste et aurait le même problème.

Question : avec cette méthode (PNJ.StartCombat(PlayerRef) ) lorsque je rengaine mon arme le PNJ stop le combat . y a t il un moyen pour éviter ça ? j'aimerais qu'il continu le combat même si je rengaine les armes.

D'avance merci pour votre aide.
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: [Résolu]Attaque du PNJ âpres dialogue.

Message par daan »

Bonjour , problème résolu avec :

Code : Tout sélectionner

PNJ_Faction.SetEnemy(PlayerFaction)
PNJ_Faction est une property renseigné avec la faction de votre PNJ et Playerfaction est aussi un property renseigné avec ... la faction "PlayerFaction"
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 »