Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[SCRIPT] Déclenchement de l'évènement sur un PNJ

Répondre
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne

[SCRIPT] Déclenchement de l'évènement sur un PNJ

.

Message par Cocrane »

Je désire déclencher un évènement quelque soit la créature qui passe sur la zone.

Le script se déclenche uniquement si c'est une créature du groupe.
IF
Entered([ANYONE])
THEN
RESPONSE #100
OpenDoor("PS5")
END
Le code simple mais ça ne marche pas. :-(

J'ai essayé différentes configurations avec DLTCEP mais au passage d'un PNJ, la porte ne s'ouvre pas contraitement à une créature du groupe.
Fichiers joints
Trigger.png
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

En général pour déclencher un message lorsque le groupe passe sur une zone, j'utilise ceci :

Code : Tout sélectionner

IF
  OR(4)
	Name("Info11",Myself)
	Name("Info12",Myself)
	Name("Info13",Myself)
	Name("Info14",Myself)
  OR(3)
	Range([PC],15)
	Entered([PC])
	IsOverMe([PC])
THEN
  RESPONSE #100
	DisplayStringHead(Myself,@2001002) // ~Ce bâtiment tombe en ruines. Il n'est pas prudent d'y pénétrer.~
	TriggerActivation(Myself,FALSE)
END

IF
  Name("Info01",Myself)
  OR(3)
	Range([PC],15)
	Entered([PC])
	IsOverMe([PC])
THEN
  RESPONSE #100
	DisplayStringHead(Myself,@2000002) // ~Lorsque vous arrivez sur le quai, votre attention est immédiatement attirée par les volutes de fumée qui s'en échappent. Le sol est jonché de cadavres de soldats et la puanteur est insoutenable.~
	TriggerActivation(Myself,FALSE)
END

IF
  Name("Info02",Myself)
  OR(2)
	Entered([PC])
	IsOverMe([PC])
THEN
  RESPONSE #100
	DisplayStringHead(LastTrigger,@2000003)	// ~Ce pavement en marbre a été totalement dévasté et ne contient plus que quelques gravats épars et des débris de pierres.~
	TriggerActivation(Myself,FALSE)
END

IF
  Name("Info03",Myself)
  OR(2)
	Entered([PC])
	IsOverMe([PC])
THEN
  RESPONSE #100
	DisplayStringHead(LastTrigger,@2000004)	// ~Tous ces cadavres mutilés, ce silence et ce port déserté... Un frisson de danger parcourt votre nuque. Quelque chose ici n'est pas normal.~
	TriggerActivation(Myself,FALSE)
END
Pas ailleurs, tu n'as pas besoin de cocher la case Walk : là encore, de mémoire, elle ne fonctionnait pas correctement dans BG2.

Enfin, à tout hasard : ce n'est pas le nom de la porte que tu dois inclure dans OpenDoor(), mais celui de son Identifiant. D'où l'intérêt de leur donner le même.

Édit : Fais aussi attention à l'utilisation de [ANYONE]. Si mes souvenir sont exacts, il me semble qu'il n'était pas présent dans tous les fichiers IDS et donc pas tout le temps reconnu par le moteur et que des mods l'ont ajouté. Essaie de le remplacer par [0] pour voir.

Je ne l'ai plus en tête, mais il me semble qu'un moins un script de BG2 permet de le faire. As-tu essayé une recherche de l'action OpenDoor avec NI ?

Après réflexion : assure-toi que ta porte est bien fermée.

Code : Tout sélectionner

IF
	IsOverMe([ANYONE])
	Global("MyVariable","MyMap",0)
	OpenState("PS5",FALSE)
THEN
	RESPONSE #100
		SetGlobal("MyVariable","MyMap",1)
//		Unlock("PS5") ==> Si ton passage secret est verrouillé.
		OpenDoor("PS5")
END
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Pas mieux avec [0].

Ca fonctionne bien si c'est un perso du groupe.

Rien ne se passe si c'est un PNJ.

Pour le moment, je n'ai pas testé ton code proposé.


Cocrane
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Tu as essayé avec LastTrigger ? Ou tout simplement Range (LastTrigger,1) sans IsOverMe ?
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Bilan des essais (pour faire simple):

Entered réagit uniquement si c'est un PC qui passe sur la zone.

Isoverme réagit quelque soit la créature qui est sur la zone. Par contre, tant que la créature est sur la zone, le script se déclenche en boucle.

Ranged réagit quelque soit la créature et le script se déclenche en boucle tant que la créature est à la bonne distance.


Je n'ai pas trouvé le moyen de tester efficacement l'inverse de Hors zone avec Isoverme. Que je mette '!' ou pas le script se déclenche. Je voulais gérer une priorité à l'ouverture, vu que j'ai une zone qui provoque l'ouverture et une autre qui la ferme.

Conclusion, j'ai opté pour Ranged.

Cocrane
Répondre

Retourner vers « Scripts »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité