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é...

[Container] Contrôler ce qu'il contient après fermeture

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

[Container] Contrôler ce qu'il contient après fermeture

.

Message par Cocrane »

J'ai besoin de consulter ce que contient un container après chaque évènement de fermeture
Si le groupe a déposé un objet non adéquat, il y aura une sanction.

J'ai mis un script sur le container pour tester son ouverture (je ne vois pas de test existant pour la fermeture):
IF
Opened([PC])
Global("Niche1_crane","Com021",0)
THEN
Response #100

SetGlobal("Niche1_crane","Com021",1) // activation du contrôle du contenu du container
PlaySound("CAS_M02")
END

J'ai mis un script sur l'AREA pour tester le contenu du container:
// Objets mal placés
IF
Global("Niche1_crane","Com021",1)
Global("niche1_OK","COM021",0)
OR(3)
Contains("Miscp46","Niche1")
Contains("Miscp47","Niche1")
Contains("Miscp48","Niche1")
THEN
RESPONSE #100
Global("Niche1_crane","Com021",0)

PlaySound("CAS_M03")
END

Le problème est que dès que le container est ouvert, la variable se met à jour et le script AREA se déclenche. Le joueur n'a pas le temps de décider de ce qu'il met dans le container.
Je pourrai mettre une tempo (WAIT) mais c'est pas top.

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 »

Et si tu te passais du contrôle sur l'ouverture-fermeture du coffre ? Après tout, tu es bien obligé de l'ouvrir pour y déposer quelque chose. ;)

De plus, tu pourrais utiliser uniquement le script de la carte pour faire tes contrôles.
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 »

Pourquoi faire simple quand on peut faire compliqué? ;-)

Chaque container est lié à une énigme permettant de savoir quel objet mettre. Mon souhait est de "punir" chaque erreur de dépose d'objet.

A chaque nouvel essai, il faut que je teste le container. Si je ne teste pas l'ouverture du container (à défaut de sa fermeture), j'ignore qu'il y a un nouvel essai. Ca me semble non faisable avec les mots clés existants sans s'arracher les cheveux.

Sinon je pars sur un timer déclenché par l'ouverture du container. Tant qu'il y a un mauvais objet en place, il y a une sanction régulière.

Cocrane
Avatar du membre
Haplo74
Minotaure
Messages : 1737
Enregistré le : dim. 08 avr. 2012, 20:20
Localisation : Paris
Statut : Hors ligne
.

Message par Haplo74 »

Bonsoir,

Mais comment est-ce fait pour le jeu des diablotins dans la cité sahuagin ?
Là aussi il s'agit de placer des objets dans des coffres.
Il doit bien y avoir un test qui te dit que tu as faux à un moment non ? Personnellement je mets toujours la bonne combinaison mais quelqu'un a déjà essayé d'échouer ?

Ou de même les statues a objets et à énigmes au début de l'asile de Spellhold (juste après avoir récupéré Imoen, une salle à gauche qui donne une pierre ionique entre autres) ?

Haplo74
Modérateur des sections "le bazar de l'aventurier", "la taverne de Château-Suif", "la taverne d'Amkethran" et "le comptoir d'Amn".
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 »

Salut Haplo74,
pour les diablotins, je ne me souviens pas de cette partie de BG2.

pour les statues, de mémoire, il n'y avait pas de sanction. Dans ce cas, pour moi c'est simple (sans avoir à consulter le code de la carte):
Si l'objet est à la bonne place, le container est "ok". Il suffit de tester le contenu du container via le .baf de la carte.


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 »

L'énigme des diablotins se gère avec le script de la carte qui vérifie que chaque coffre contient bien le bon objet. Si c'est le cas, il déclenche le dialogue avec un diablotin.

Quant à la première énigme de l'asile, elle fonctionne de la même manière, à la nuance près qu'elle déclenche une variable globale utilisée dans un script déclenché par l'ouverture du coffre central.

Tu devrais peut-être t'en inspirer. Sinon, ajoute un timer une fois que tu as effectué ton test pour le réinitialiser si et uniquement si le conteneur est vide.
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 »

J'ai trouvé une solution à mon problème. On ne peut pas contrôler à la fermeture faute de mot clé, du coup je contrôle le contenu du container à l'ouverture.

// Script du container

// Le container a été vidé: réactivation du contrôle
IF
Opened([PC])
Global("Variable_container_sanction","Nom_carte",1) // Le contrôle et la sanction a déjà eu lieu
!Contains("OBJET1_à_tester","container1") // Test absence mauvais objet
!Contains("OBJET2_à_tester","container1")
!Contains("OBJET3_à_tester","container1")
THEN
Response #100
SetGlobal("Variable_container_sanction","Nom_carte",0) // Contrôle à réaliser
END

// Script de l'AREA

// Le contrôle est à réaliser et le container contient au moins un mauvais objet
IF
Global("Variable_container_sanction","Nom_carte",0)
OR(3)
Contains("OBJET1_à_tester","container1")
Contains("OBJET2_à_tester","container1")
Contains("OBJET3_à_tester","container1")
THEN
RESPONSE #100
SetGlobal("Variable_container_sanction","Nom_carte",1)

// Déclenchement de la sanction
END
Répondre

Retourner vers « Cartes et Cartes du monde »

Qui est en ligne

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