tvisarl a écrit:Je voudrais compléter le carry out standard du verbe "Prendre" par une règle complémentaire s'exécutant automatiquement juste après le carry out. Exemple, mais ce n'est qu'un exemple et la technique pourrait être démarquée pour d'autres verbes : vérifier immédiatement que le joueur n'a pas trop d'objets dans son sac à dos.
Il suffit juste d'écrire une nouvelle règle carry out, non ?
- Code: Tout sélectionner
Carry out taking (this is the blabla taking rule):
say "Nouvelle règle carry out !".
The blabla taking rule is listed after the standard taking rule in the carry out taking rulebook.
Ajouter un nom à la règle et indiquer son emplacement n'est pas utile pour l'action de prendre, car elle n'a qu'une seule règle carry out par défaut donc la nouvelle règle va directement se placer après la règle existante, mais je l'ai mis pour être complet. (Pour trouver le nom et l'ordre des règles, c'est dans l'index qu'il faut voir.) Voir le début du chapitre « Rulebooks » pour plus d'infos.
En revanche, si tu veux vérifier quelque chose et arrêter l'action en fonction de ça, c'est une règle check qu'il faut écrire (au carry out, l'action est considérée comme réussie).
tvisarl a écrit:Est-ce à dire que les objets ( au sens informatique ) correspondant aux tables sont dupliqués, ou bien la table ne contient-elle que de simples pointeurs vers ce qui existe déjà ?
Comme Corax l'a indiqué, des pointeurs seulement. D'une manière générale, ce sera toujours des pointeurs, sauf pour les booléens, les nombres, les valeurs énumérées, les heures et les unités.
Corax a écrit:Dans l’exemple que tu donnes, celui de vérifier si le joueur a assez de place dans son sac, il existe une propriété qu’il te suffit d’utiliser : carrying capacity.
Utilisée sur un personnage, un conteneur ou un support, elle définie la taille de son inventaire. De base, elle est de 100.
Utilisée sur un objet qu’il est possible de prendre, elle définie la place qu’elle occupe. De base, il me semble qu’elle est de 1.
Je pense que la dernière partie est fausse : le carrying capacity d'une chose ne définit que sa capacité et pas la place qu'elle occupe. Donc la spécifier pour des potions ne sert à rien. D'ailleurs, c'est logique car on aurait sinon le problème suivant : le carrying capacity d'un coffret qu'on peut porter définirait sa capacité ou la place qu'il prend ?
Du coup, le joueur pourra bien prendre 10 potions dans ton exemple.
Il doit y avoir des extensions qui permette d'avoir le comportement que tu décris, mais sinon ça ne doit pas être bien compliqué en remplaçant les règles qu'il faut dans l'action de prendre (il suffit de les copier des Standard Rules et de modifier la condition).
Corax a écrit:Si tu désires vraiment t’éloigner du comportement standard d’Inform7, je te conseille donc de recoder intégralement les actions concernées.
Utilise par exemple une règle Instead pour réorienter une action classique vers une action de ta conception, une action dont tu pourras librement définir le Carry out sans te prendre la tête avec des effets de bord.
Et moi je te conseille de ne pas faire ça : l'action de prendre est très compliquée par exemple, car il faut effectuer de nombreuses vérifications (12 règles check rien que pour cette action !). Alors à la place de la recréer, il vaut mieux ajouter des règles comme dans mon exemple au début du message (on peut aussi en enlever, en remplacer ou les réordonner). Ce n'est pas très compliqué si on étudie bien le comportement de l'action grâce à l'index et en regardant dans les Standard Rules.
Après, tout dépend de ce que tu veux faire, et créer une autre action peut parfois être une solution.
tvisarl a écrit:non, ce n'est pas possible.
Avec Inform 7, rien n'est impossible !
