Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

I7: Running a conversation with simple chat

0 views
Skip to first unread message

Basti...@hotmail.com

unread,
May 5, 2007, 6:42:19 PM5/5/07
to
Hi all,

it's hard to confess but I'm lost at the moment. Since it is not
possible to jump between specific chat nodes in the simple chat
extension I tried to figure a way around the problem through
backdoors.
My very first try was to simply start a new conversation every time a
specific option was taken.

For example:

Instead of giving text for Test_Node:
say "Test";
run a conversation from Test_Node_2.

But that only worked as long as you didn't create a rulebook overflow
since those conversations would run as simultaneous actions.
(Which brings me to another question: Does this limitation also apply
when many NPCs and Animals are acting simultaneously or is it just the
case when they simultaneously do the same or am I on a completely
wrong track and it is something else?)

Then I wanted to change links description in context of which chat
node was chosen at the time but this would went needlessly confusing
after a while so I scraped the idea.

Now I'm at the point where I mark specific chat nodes as jump nodes.
As soon as such a node is found the conversation would end and a new
one with the jump node as the current node would begin (not before
changing the jumping node back to a normal node of course). Or at
least this is how it should work. But after several different attempts
I still can't find a way to make it work probably. Either the
conversation ends but ignores the jump node or it creates yet again a
conversation in a conversation. Anyway it's been catastrophic until
now.
Especially since I've got the nagging feeling that there is a simple
solution so any suggestions are welcome.

But nevertheless I'd like to thank the creators of inform 7 for this
great and user-friendly creation tool although it is still no match
for my lacking programming skills.

Message has been deleted

Basti...@hotmail.com

unread,
May 6, 2007, 7:01:48 PM5/6/07
to
Argh! Sorry new text format to get used to. Second try,

Alright that's what I've written this weekend. Please excuse the odd
naming I've just got no feeling for it.

Version 2 of Simple Chat by Mark Tilford begins here.
.
.
.


Chat node is a kind of value.
The chat nodes are no quip chosen. The chat nodes are not jumpnode.
[Marks every chat node as no jumpnode]


Trigger is a kind of value. Triggers are true and false.

First run is a trigger that varies.
[for the very first node in a conversation]
Second run is a trigger that varies
[Considering how many nodes you want to be able to jump back to you'll
create
a trigger for eachto mark them]


[What follows is basically the same as to activate a node shamefully
copied and pasted.]


.
.
.


Jumpiness is a kind of value. The jumpinesses are true jump node.
Jumpie relates various chat nodes to various jumpiness.
The verb to jump_to (it jumps_to) implies the jumpie relation.


To jump_not (which - a chat node): now which does not jump_to true
jump node.
To jump_to (which - a chat node): now which jumps_to true jump node.
To decide whether (which - a chat node) is Jumpnode:
if which jumps_to true jump node, decide yes;
decide no.
.
.
.


To run a conversation from (current node - a chat node):
let First_Node be no quip chosen; [The first node]
let Second_Node be no quip chosen; [The second node]

.
. [Insert as many nodes as you need to be saved then continue until
you come to
. current choices]

if choice made is 0 begin;
if Sprache is deutsch begin;
now Sprache is english;
otherwise;
now Sprache is deutsch; end if; change next node to
current node;
[This one I did only for my
game so that 0 could not end the dialogue but switch
languages.
You don't need to bother about this one if you just want to
exit the conversation]
otherwise;
change next node to result in row choice made of table of
current choices;
end if;
[change first chat node to next node; [*** FIX: globals ***]
change second chat node to current node; [*** FIX: globals
***]
if next node is not no quip chosen,
try giving link to next node from current node;]
if first run is true, change First_node to current node;
[Marks the very first node in a conversation]
if second run is true, change Second_Node to current node;
[Marks the second]
.
. [Continue marking]
.
change previous node to current node;
change current node to next node;
otherwise;
change current node to no quip chosen;
end if;

[Here comes the jump node]
if current node is jumpnode
begin;
jump to a conversation next node;
[Basically just trying to give text for next node. It's some fragment
of an
earlier attemp]

if current node is jumpnode

begin;
[If the Jumpnode is still marked as one after going through the text
we
know that we want to reach a specific node in a conversation]
if first run is true begin; change current node to
First_Node;
[Jumping to the very first node in the conversation]
otherwise;
change current node to previous node; end if;
[Jumps one node back if we're not specific enought]
otherwise; change current node to no quip
chosen;
[Needed in a special example that will follow]
end if; end if;
now first run is false;
now second run is false;
.
.
.
[To 'trap' the markings]
end while.


Now what that does bring I'll show:


Instead of entering room X:
now first run is true;

[In the first part we 'trap' the first node. It will not be changed
for the rest of the conversation. The same will happen to any other
run we activate during
conversation]

run a conversation from Node_1.

Instead of finding responses to Node_1: link to Node_2, jump_to
node_2. [Link to a Jumpnode]


Instead of giving text for

Node_2:

[This will cover the case that we might want to end a conversation
while at a jumpnode]
say
"Text";
if player consents
begin;
jump_not Node_2;

[If I want to jump to a node (here the first one) you only need to
activate the right trigger and that's it. But in this scenario you
could also simply do nothing
as the jumpnode would just jump back to the most recent node]
otherwise;
now first run is true;


And that's it. Far from perfect when you want an automated process.

Hope this is readable now. Really terrible sorry.

0 new messages