Page 1 sur 1

Ordonner à une créature d'enclencher son dialogue à distance

Posté : lun. 05 août 2019, 23:46
par DrAzTiK
Dans le script de la map AR 5203, j'aimerai ordonner à Yagashura de se déplacer vers le joueur 1 et qu'il action son dialogue une fois qu'il nous aperçoit. J'utilise la fonction suivante :

IF
Global("D9YAGASPAWN3","AR5203",0)
GlobalGT("MaxSpawn","AR5203",2)
THEN
RESPONSE #100
ActionOverride("YAGA01",MoveToObject(Player1))
SetGlobal("D9YAGASPAWN3","AR5203",1)
END

le problème c'est que yaga shura enclenche son dialogue que lorsqu'il est collé au joueur, moi je voudrai qu'il enclenche son dialogue à distance.


EDIT: en fait je voudrais qu'il se déplace vers le joueur 1 mais qu'il reste à bonne distance car il suffit qu'il voit le joueur 1 pour enclencher son dialogue normalement.:

IF
NumberOfTimesTalkedTo(0)
See([PC])
THEN
RESPONSE #100
StartDialogueNoSet([PC])
END


voila voilu.

Posté : mar. 06 août 2019, 09:30
par Faust
DrAzTiK a écrit :Dans le script de la map AR 5203, j'aimerai ordonner à Yagashura de se déplacer vers le joueur 1 et qu'il action son dialogue une fois qu'il nous aperçoit. J'utilise la fonction suivante :

IF
Global("D9YAGASPAWN3","AR5203",0)
GlobalGT("MaxSpawn","AR5203",2)
THEN
RESPONSE #100
ActionOverride("YAGA01",MoveToObject(Player1))
SetGlobal("D9YAGASPAWN3","AR5203",1)
END

le problème c'est que yaga shura enclenche son dialogue que lorsqu'il est collé au joueur, moi je voudrai qu'il enclenche son dialogue à distance.


EDIT: en fait je voudrais qu'il se déplace vers le joueur 1 mais qu'il reste à bonne distance car il suffit qu'il voit le joueur 1 pour enclencher son dialogue normalement.:

IF
NumberOfTimesTalkedTo(0)
See([PC])
THEN
RESPONSE #100
StartDialogueNoSet([PC])
END


voila voilu.
Désolé, étant au boulot je ne peux pas chercher le code, en revanche tu devrais trouver ce que tu cherches en piochant dans les scripts d'Irenicus par exemple. Lorsque j'ai le temps j'essayerai de te trouver ça.

Edit:

Essayes,

[LEFT]IF
Global("D9YAGASPAWN3","AR5203",0)
GlobalGT("MaxSpawn","AR5203",2)
THEN
RESPONSE #100
ActionOverride("YAGA01",MoveToObject(Player1))
ActionOverride("YAGA01",
Dialogue(Player1))

SetGlobal("D9YAGASPAWN3","AR5203",1)
END
[LEFT][LEFT][LEFT]

Je ne sais pas quelles sont les conditions pour que Dialogue(Player1) fonctionne, mais StartDialogueNoSet fonctionne sans que la créature voit son interlocuteur.

Sinon tu peux ajouter un ActionOverride("YAGA01",
MoveToPoint([x.y])) au lieu de ActionOverride("YAGA01",MoveToObject(Player1))

[LEFT]L'apparition d'Irenicus avec le premier dialogue lors de la création d'une nouvelle partie fait exactement ce que tu recherches. Dans le pire des cas, créer une cutscene sera un solution définitive.[/LEFT]

[/LEFT]
[/LEFT]
[/LEFT]

[/LEFT]

Posté : mar. 06 août 2019, 15:09
par rivvers
Je crois que tu as toutes les cartes en main, je procéderais de cette façon :
IF
TriggerOverride("YAGA01", NumberOfTimesTalkedTo(0))
TriggerOverride("YAGA01", See(Player1))
THEN
RESPONSE #100
ActionOverride("YAGA01",StartDialogueNoSet(Player1))
END

IF
TriggerOverride("YAGA01", NumberOfTimesTalkedTo(0))
!TriggerOverride("YAGA01", See(Player1))
THEN
RESPONSE #100
ActionOverride("YAGA01",MoveToObject(Player1))
END

Posté : mar. 06 août 2019, 19:27
par DrAzTiK
Ok merçi les amis.

Finalement j'ai reussi mais faut passer par le script de yaga shura . J'ai rajouté les lignes suivantes qu'un membre de la couronne de cuivre m'avait passé :

IF
GlobalGT("MaxSpawn","AR5203",2)
!Detect(NearestEnemyOf(Myself))
!Detect(Player1)
!Detect(Player2)
!Detect(Player3)
!Detect(Player4)
!Detect(Player5)
!Detect(Player6)
THEN
RESPONSE #100
SetGlobal("Move1","LOCALS",1)
MoveToObject(Player1)
Continue()
END


IF
Global("Move1","LOCALS",1)
OR(7)
Detect(NearestEnemyOf(Myself))
Detect(Player1)
Detect(Player2)
Detect(Player3)
Detect(Player4)
Detect(Player5)
Detect(Player6)
THEN
RESPONSE #100
NoAction()
SetGlobal("Move1","LOCALS",0)
Continue()
END


Voila , ca marche. Si je reste dans le script de la map AR 5203, ce n'est pas possible de faire tout ça je pense.