Gestion des coéquipiers

Tout d’abord, j’aimerais annoncer que je suis a 30% du codage d’un nouveau jeu. Ça devrait s’appeller « Le Néant Distordu » et contenir violence, passion et mort :wink: (oui, je sais, osef).

Bref. J’avais aussi l’idée d’adapter Carrion Comfort de Dans Simmons en fiction interactive. Pour ceux qui n’aurait pas lu (Echiquier du Mal en langue française), c’est l’histoire de « vampire psychique », en fait de simples humains génétiquement capable de contrôler les actions d’autre humains. Sur cette trame apparament assez peu novatrice, Dan Simmon tisse un ruban vicieux, pervers, dérangeant, glauque à l’absurde. L’histoire est un peu poussif sur certain bord, mais toujours très sombre.

Or donc, j’ai un problème pour traiter des phrases du genre « forcer quelqu’un a faire quelquechose ». Je pensais d’abord a intercepter FrenchG.h et rajouter comme :

[code]Verb ‹ forcer ›

  • noun → user
    etc…[/code]
    Seulement, ça bloque dès que la phrase est un peu complexe, comme par exemple sur « forcer quelqu’un a frapper quelqu’un d’autre » « forcer quelqu’un a me donner tel objet ». Je ne connais pas assez la syntaxe pour même savoir si c’est possible.

Mon problème peut aussi s’apparenter comme un problème de gestion des coéquipiers et j’imagine que la solution pourra aussi résoudre ce cas, mais dans ce cas ce serait plutôt « demander quelqu’un d’attaquer quelqu’un d’autre », etc.

c’est le verbe « AskTo » qui gère cela, mais je n’ai jamais utilisé.

normalement cela permet de dire :

« Otto, prend l’épée » (je ne sais même pas si cela fonctionne avec inform 6 en français), ou bien : « ordonner a Otto de prendre l’épée »

Pour la syntaxe, voir DM4 ou éventuellement ici

je te conseille de ne pas trop sortir des sentiers battus, sinon tu vas bcp t’embêter pour rien.

Je serais toi je modifierais ainsi :

Verb 'ordonner' 'forcer' * creature 'de' topic -> AskTo ! "ordonne-lui" * 'à'/'a'/'au'/'aux' creature 'de' topic -> AskTo;

Merci :smiley:

J’aurais dû effectivement d’abord me réferer au DM4. Tout une section est consacrée aux ordres qu’on peut donner aux PNJ. Les possibilités sont vastes.
Mon code ressemblerait donc a ça, par exemple, si je veux traiter "Forcer qqun a me donner qqchose :

[code]machin « machin » truc
with orders [; switch (noun)
{ ‹ donner › : move second to player;
}
],
has animate;

Verb ‹ ordonner › ‹ forcer ›
* creature ‹ de › topic → AskTo ! « ordonne-lui »
* ‹ à ›/‹ a ›/‹ au ›/‹ aux › creature ‹ de › topic → AskTo;
[/code]

Deux problèmes :

Il ne faut pas utiliser AskTo mais orders. Or, je ne sais pas trop comment modifier la grammaire pour faire correspondre une orders property. Apparemment, c’est un peu plus compliqué que pour un simple Ask.

Si on fait attention, il y a trois informations dans donner quelquechose a quelqu’un. Comment on fait pour les gerer ?

EDIT : En fait, après lecture approfondie, je ne comprend pas vraiment la différence entre AskTo et orders. Quelqu’un a des infos ? :wink:

Voici un bout de code qui fonctionne, compilé sans problème :

[code]object piece « piece »
with description « une piece »,
name ‹ piece ›
has light;

object machin « machin vivant » piece
with orders [; Give : move noun to player; print_ret « essai reussis »;],
name ‹ machin ›,
has animate;

object objet « objet » machin
with description « un objet »,
name ‹ objet ›,
has ;
[/code]

C’est en fait tout simple. AskTo est une redirection vers orders. Toute grammaire d’AskTo est considéré comme orders. A partir de la 6/11, « Machin, donne objet » ou « Demander a machin de donner objet » marche pareillement (grace a AskTo dans FrenchG.h).

Quand a la grammaire donné, pour qu’elle fonctionne, il faut que ce soit du genre : [code]Extend ‹ forcer › replace
* creature ‹ a ›/‹ à › topic → AskTo ;
! * ‹ à ›/‹ a ›/‹ au ›/‹ aux › creature ‹ de › topic → AskTo;

Extend ‹ ordonner › replace
* creature ‹ de › topic → AskTo ! « ordonne-lui »
* ‹ à ›/‹ a ›/‹ au ›/‹ aux › creature ‹ de › topic → AskTo;
[/code]

merci de ces précieuses informations, je pense les copier sur notre site dans la section des articles.

:open_mouth: Je ne sais vraiment pas comment le prendre, c’est vraiment du code de base. Dans le doute, je remercie :slight_smile:

Je suis en train de me farcir toute la docu sur les PNJs, et c’est pas facile. L’un de mes problème est le suivant :

[code]object toto « toto » piece
with description « C’est toto. »,
orders [;
Give : switch (noun) {
‹ montre › : print_ret « Il vous tend sa montre »;};
],
name ‹ toto › ‹ toto ›,
has animate;

object montre « montre » toto
with description « la montre de toto »
name « montre »
has ; [/code]

Le noun contient bien l’objet montre, mais ce code me pête entre les mains au passage du switch et je ne comprend vraiment pas pourquoi.

EDIT : Ah non, j’ai trouvé. noun contient l’objet montre, mais pas le nom. Les ’ ’ de ‹ montre › était donc superfétatoire.