Page 1 sur 1
[CARTES] Trigger info
Posté : mer. 16 nov. 2016, 22:12
par Cocrane
Je désire créer une zone où lorsque l'on clique dessus un texte apparait. Le message sera différent selon que ce soit le Charname ou un PNJ de l'équipe.
Je créé un trigger région auquel j'associe un script:
Code : Tout sélectionner
IF
Clicked(Protagonist)
THEN
RESPONSE #100
DisplayString("COT01508",@2)
END
IF
Clicked([PC])
!Clicked(Protagonist)
THEN
RESPONSE #100
DisplayString("COT01508",@1)
END
J'obtiens aucun message. Si je remplace Protagonist par '[PC]' j'obtiens un message à l'écran.
Cocrane
Posté : mer. 16 nov. 2016, 23:12
par Isaya
[PC] correspond à un personnage contrôlé par le joueur, c'est à dire un membre de l'équipe. Je ne me souviens pas d'avoir vu Protagonist servir quelque part. Pour désigner le personnage principal, on utilise Player1.
Posté : mer. 16 nov. 2016, 23:12
par Freddy_Gwendo
CHARNAME = Player1
D'où :
Dans la mesure du possible, évite le mot-clé Protagonist, souvent utilisé dans BG1, mais qui a été quasi abandonné dans BG2. Je n'ai pas l'impression qu'il soit fiable.
Édit : encore une fois doublé par Isaya. A quelques secondes près...
Posté : mer. 16 nov. 2016, 23:45
par Cocrane
Le mot PROTAGONIST existe dans plusieurs scripts et normalement il désigne le CHARNAME.
A ma connaissance, PLAYER1 correspond à la position du PNJ. Si le CHARNAME est en position 2 alors il est PLAYER2.
Mon mod tourne sur BGT.
Cocrane
Posté : jeu. 17 nov. 2016, 00:06
par Freddy_Gwendo
Non, tu confonds :
Player1 = le premier personnage recruté dans le groupe ==> C'est toujours Charname quelque soit sa position dans le groupe.
Player2 à 6 = 2° à 6° personnage recruté. Donc, dans BG2, Imoen, puis Jaheira et Minsc ou Minsc et Jaheira.
Ensuite, quand tu recomposes ton groupe, ces attributions changent. Exemple à la sortie du donjon d'Irenicus, Imoen quitte le groupe. Si Jaheira était Player3, elle devient Player2, etc...
Pour déterminer qui est le second personnage du groupe, il faut utiliser les objets suivants :
Player1Fill
Returns the player in the first portrait slot.
Player2Fill
Returns the player in the second portrait slot.
Player3Fill
Returns the player in the third portrait slot.
Player4Fill
Returns the player in the fourth portrait slot.
Player5Fill
Returns the player in the fifth portrait slot.
Player6Fill
Returns the player in the sixth portrait slot.
Posté : jeu. 17 nov. 2016, 00:28
par Cocrane
Ok, ca signifie que je me suis compliqué la vie dans plusieurs parties de mon mod. Mais avec d'autres mots clés, la valeur PROTAGONIST fonctionne.
J'ai testé Clicked(Player1) et je n'ai pas de msg qui apparait.
J'ai testé Clicked([PC]) et je n'ai pas de msg qui apparait.
J'ai testé Clicked([0]) et j'ai un msg qui apparait.
Visiblement, c'est limité au niveau valeur.
Posté : jeu. 17 nov. 2016, 02:29
par Freddy_Gwendo
Alors on va reprendre un basique qui fonctionne à 100 % :
Code : Tout sélectionner
IF
Clicked([ANYONE])
InPartySlot(LastTrigger,0) // [color="#FFFF00"]Player1 est toujours dans le slot 0[/color]
THEN
RESPONSE #100
DisplayStringHead(LastTrigger,1) // ~Non, désolé, ça ne me dit rien.~
END
IF
Clicked([ANYONE])
!InPartySlot(LastTrigger,0)
THEN
RESPONSE #100
DisplayStringHead(LastTrigger,2) // ~Tu jouais Elminster ?~
END
Certains triggers sont plus ou moins fiables selon les objets utilisés. C'est le cas de [PC] (en revanche [PC.0.0] fonctionne plus souvent). Clicked ([0]) correspond à Clicked([ANYONE]).
Posté : dim. 20 nov. 2016, 18:23
par Cocrane
De mes essais, seul "Clicked ([0]" provoque un résultat.
Je ferai avec.
Cocrane
Posté : dim. 20 nov. 2016, 21:05
par Freddy_Gwendo
Tu as essayé mon code ?
Je l'ai testé sur une de mes cartes avant de te donner de faux espoirs et il fonctionne parfaitement bien.
Posté : lun. 21 nov. 2016, 21:53
par Cocrane
Non je ne l'ai pas testé.
J'étais resté focalisé sur la bonne variable à mettre dans CLICKED pour gérer mon problème.
J'utiliserai donc ta méthode pour avoir deux textes différents.
Merci Freddy.
Posté : lun. 21 nov. 2016, 22:45
par Freddy_Gwendo
Je m'en doutais un poil, d'où ma relance.
Posté : dim. 15 janv. 2017, 11:11
par Freddy_Gwendo
Pour clore le débat, voici
l'avis de la Bible des moddeurs, j'ai cité Avenger.
Re: [CARTES] Trigger info
Posté : mar. 09 avr. 2024, 12:02
par Faust
Concernant ce topic, je souhaite faire la même chose que Cocrane, mais en utilisant un autre identifiant du type Death variable, malheureusement cela ne semble pas fonctionner:
IF
Clicked("El[r]in") // Elfe
THEN
RESPONSE #100
CreateCreature("C[R]ANE2",[-1.-1],0) // Crâne
TriggerActivation("C[R]ANE2",FALSE) // Crâne
END
Du coup je suis obligé de fonctionner de cette manière:
IF
InParty("El[r]in")
Clicked([ANYONE]) // Elfe
THEN
RESPONSE #100
CreateCreature("C[R]ANE2",[-1.-1],0) // Crâne
TriggerActivation("C[R]ANE2",FALSE) // Crâne
END
Auriez-vous une alternative pour que cela fonctionne uniquement avec le personnage désiré?
Re: [CARTES] Trigger info
Posté : mar. 09 avr. 2024, 14:04
par JohnBob
Hello !
Pas vraiment sûr si cela va pouvoir correspondre à tes besoins.
J'ai fait un test très simple avec l'aboleth d'Ust Natha. (En supprimant complétement le contenu d'ABOLETH.BCS et le remplaçant par le block ci-dessous)
Code : Tout sélectionner
IF
Clicked([ANYONE])
IsOverMe("Imoen")
THEN
RESPONSE #100
DisplayStringHead(Myself,42372) // Vous devez vous approcher de la créature pour lui parler.
END
Par contre
IsOverMe(O:Object*) nécessite une très grande proximité avec la zone à cliquer.
IESDP Trigger page
Edit :
Code : Tout sélectionner
IF
Clicked([ANYONE])
PersonalSpaceDistance("Imoen",1) // Imoen
THEN
RESPONSE #100
DisplayStringHead(Myself,42372) // Vous devez vous approcher de la créature pour lui parler.
END
PersonalSpaceDistance(O:Object*,I:Range*) semble aussi fonctionner dans ce cas.
Re Edit :
Code : Tout sélectionner
IF
Clicked([ANYONE])
NearLocation("Imoen",876,3100,1)
THEN
RESPONSE #100
DisplayStringHead(Myself,42372) // Vous devez vous approcher de la créature pour lui parler.
END
Pour
NearLocation(O:Object*,I:PointX*,I:PointY*,I:Range*) Imoen doit se trouver à cette endroit précis pour que cela fonctionne. (Enfin cela dépend de la valeur mis dans "Range")
- TRIGGER.png (495.77 Kio) Vu 501 fois
Re: [CARTES] Trigger info
Posté : mar. 09 avr. 2024, 22:32
par Faust
Hello,
Je te remercie pour ton message, faute d'avoir quelque chose de plus strict, je vais rester sur:
IF
InParty("El[r]in")
LOS("El[r]in",20)
Clicked([ANYONE])
THEN
RESPONSE #100
CreateCreature("C[R]ANE2",[-1.-1],0) // Crâne
TriggerActivation("C[R]ANE2",TRUE) // Crâne
END
Re: [CARTES] Trigger info
Posté : mer. 10 avr. 2024, 18:05
par rivvers
Faust a écrit : ↑mar. 09 avr. 2024, 22:32
Hello,
Je te remercie pour ton message, faute d'avoir quelque chose de plus strict, je vais rester sur:
IF
InParty("El[r]in")
LOS("El[r]in",20)
Clicked([ANYONE])
THEN
RESPONSE #100
CreateCreature("C[R]ANE2",[-1.-1],0) // Crâne
TriggerActivation("C[R]ANE2",TRUE) // Crâne
END
As-tu essayé de décomposer ta condition comme ceci ?
Re: [CARTES] Trigger info
Posté : mer. 10 avr. 2024, 19:14
par Faust
rivvers a écrit : ↑mer. 10 avr. 2024, 18:05
Faust a écrit : ↑mar. 09 avr. 2024, 22:32
Hello,
Je te remercie pour ton message, faute d'avoir quelque chose de plus strict, je vais rester sur:
IF
InParty("El[r]in")
LOS("El[r]in",20)
Clicked([ANYONE])
THEN
RESPONSE #100
CreateCreature("C[R]ANE2",[-1.-1],0) // Crâne
TriggerActivation("C[R]ANE2",TRUE) // Crâne
END
As-tu essayé de décomposer ta condition comme ceci ?
Hello,
C'est exactement ce qu'il me fallait, merci beaucoup Rivvers