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ù :

Code : Tout sélectionner

IF
  Clicked(Player1)
...
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... :gign:

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
TRIGGER.png (495.77 Kio) Vu 298 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 ?

Code : Tout sélectionner

IF
	Clicked([ANYONE])
	Name("El[r]in", LastTrigger)
THEN
	…

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 ?

Code : Tout sélectionner

IF
	Clicked([ANYONE])
	Name("El[r]in", LastTrigger)
THEN
	…
Hello,
C'est exactement ce qu'il me fallait, merci beaucoup Rivvers :heart: