Page 1 sur 1

Remplacer le dialogue de "bonjour" d'un pnj selon condition.

Posté : mar. 23 juil. 2019, 19:41
par deratiseur
Salut.

Je n'ai trouvé ça nulle part dans les tutoriels. Je voudrais faire qu'un pj qui dit "Bonjour. Êtes vous venus voir mon magasin ?" en introduction, la seule condition de ce dialogue étant "il ne m'a jamais volé", dise A LA PLACE "bonjour... ho, je vois que vous avez une très haute réputation [...] si le groupe vient lui parler avec 18 de réputation.
Comment faire si le dialogue initial ne présente que la seule condition "ne pas avoir volé" ? Comment faire pour qu'il ne soit PAS lancé, que ce soit le texte de la reputation à la place ?

Note, je ne comprend rien au instruction CHAINS, et je suis quasiment sur qu'un APPEND ne suffira pas :(

Posté : mar. 23 juil. 2019, 21:48
par deratiseur
J'ai essayé de créer un dialogue "pour voir", mais il refuse de s'installer :
EXTEND_BOTTOM SCROLL01
IF ~HasItemEquiped("PXPMLDOR",LastTalkedToBy) Global("Pxpmldor,"LOCALS",0)~ THEN REPLY @51 GOTO PXLAMEDOR
IF ~HasItemEquiped("PXPMLDOR",LastTalkedToBy) Global("Pxpmldor,"LOCALS",3) PartyHasItem(MISCBP) PartyGoldGT(11170)~ THEN GOTO PXLDOROK
END

APPEND SCROLL01
IF ~~ THEN BEGIN PXLAMEDOR SAY @52
IF ~~ DO ~SetGlobal("Pxpmldor","LOCALS",3)~ EXIT
END

IF ~~ THEN BEGIN PXLDOROK SAY @53
IF ~~ THEN REPLY #66662 DO
~TakePartyItemNum("Pxpmldor",1) DestroyItem("Pxpmldor")
TakePartyGold(11171) DestroyGold(11717)~
CreateVisualEffect("spunhbl2",Myself)
GiveItemCreate("Pxpmldaz",LastTalkedToBy,1,1,1)~
EXIT
IF ~~ THEN REPLY #66664 EXIT
END
END
Il bloque sur "CreateVisualEffect("spunhbl2",Myself)" et il ne reconnait pas l'integer "IF ~HasItemEquiped("PXPMLDOR",LastTalkedToBy)"

Posté : mar. 23 juil. 2019, 22:34
par rivvers
Bonjour deratiseur,
heureusement pour moi, je ne connais rien aux commandes weidu !
néanmoins, essayes donc ceci !
EXTEND_BOTTOM SCROLL01
IF ~HasItemEquiped("PXPMLDOR",LastTalkedToBy) Global("Pxpmldor","LOCALS",0)~ THEN REPLY @51 GOTO PXLAMEDOR
IF ~HasItemEquiped("PXPMLDOR",LastTalkedToBy) Global("Pxpmldor","LOCALS",3) PartyHasItem("MISCBP") PartyGoldGT(11170)~ THEN GOTO PXLDOROK
END

APPEND SCROLL01
IF ~~ THEN BEGIN PXLAMEDOR SAY @52
IF ~~ DO ~SetGlobal("Pxpmldor","LOCALS",3)~ EXIT
END

IF ~~ THEN BEGIN PXLDOROK SAY @53
IF ~~ THEN REPLY #66662 DO
~TakePartyItemNum("Pxpmldor",1) DestroyItem("Pxpmldor")
TakePartyGold(11171) DestroyGold(11717)~
CreateVisualEffectObject("spunhbl2",Myself)
GiveItemCreate("Pxpmldaz",LastTalkedToBy,1,1,1)~
EXIT
IF ~~ THEN REPLY #66664 EXIT
END
END
il manquait un " dans tes deux fonctions Global
et tu as inversé CreateVisualEffectObject (qui réclame un objet) avec CreateVisualEffect (qui réclame une position)...
en espérant que cela fonctionne

edit : et les " dans PartyHasItem ;)

Posté : mer. 24 juil. 2019, 04:24
par deratiseur
Merci Rivvert. Té réponse m'indiquant que mon code est farci d’erreurs bêtes m'a permis de trouver aussi pourquoi ça bloquait à la ligne 12 : un ~ en trop.
CA se compile maintenant. Alors connaisseur de weidu ou non, tu as été bien sympa, merci :)

Posté : jeu. 25 juil. 2019, 18:41
par deratiseur
Bon, j'abandonne.
Je n'arrive pas à inclure mon texte en tout premier avant la réplique par défaut.

Mais j'ai contourné le problème :) Comme mon texte est lu en deuxième, je l'ai modifié pour qu'il corresponde à la suite du premier. Voilà, c'est fini :)

Posté : sam. 27 juil. 2019, 12:19
par Isaya
Si je comprends, tu cherches à ajouter quelque chose avant le tout premier échange prévu par les concepteurs. La seule méthode est de donner à ton nouvel état de dialogue un "poids" (weight) supérieur aux existants afin sa condition de déclenchement soit vérifiée en premier. WeiDU dispose du mot-clé WEIGHT pour fixer le poids.
Voici un tutoriel sur le principe du poids des états de dialogue.
Voici le tutoriel d'utilisation inclus dans le readme WeiDU.

Re: Remplacer le dialogue de "bonjour" d'un pnj selon condition.

Posté : dim. 07 mai 2023, 09:20
par deratiseur
Si j'essaie de réutiliser un truc qui marche bien pour Todd, ça bugue

Code : Tout sélectionner

EXTEND_BOTTOM UDDROW23 0
	IF ~HasItemEquiped("pxl2btoi",LastTalkedToBy()) PartyGoldGT(9999)~ THEN GOTO PXL2BTOIL
END

APPEND UDDROW23
	IF ~~ THEN BEGIN PXL2BTOIL SAY @12011
		IF ~~ THEN REPLY #66664 DO
			~TakePartyItemNum("pxl2btoi",1)	DestroyItem("pxl2btoi")
			TakePartyGold(10000)	DestroyGold(10000)
			CreateVisualEffectObject("spcrtwpn",Myself)
			GiveItemCreate("pxl2bto2",LastTalkedToBy(),1,1,1)~
			EXIT
		IF ~~ THEN REPLY #4399 GOTO 0 //ça me dis qu'il n'y a pas de label 0. je voudrais que ça revienne au début du dialogue, quand il dit "bonjour", comment je trouve le label ?
	END
END

Re: Remplacer le dialogue de "bonjour" d'un pnj selon condition.

Posté : dim. 07 mai 2023, 11:13
par deratiseur
Désole de vous avoir dérangé pour rien, ça marche. Weidu pour decompiler les dlg.