PDA

View Full Version : CamVator/Conversations Help



Danventry
20th Feb 2003, 00:19
Okay, I have the CamVator tutorial and I'm about a third of the way through. It says:

Make a marker, name it ConvPt and give it the TrapConverse script. Add the conversation properties too.
Okay, how do I add the conversation properties?

Schwaa2
20th Feb 2003, 06:27
Here's the only comprehensive tut on conversations that I know of, from The Circle (maybe Avalon, Totality, or Sldege wrote it?)
================================
An incentive for conversations

First you should make and airbrush, a room around it and maybe
add a torch too. Load the ConVict script and compute pathfinding
and build room database. Just do all the stuff you usually do in
the beginning.

After making this environment, you can add two guards, but make sure,
that Garrett won't be visible to them. For example, you can put the
torch so, that it's too dark for them to see you.

Edit the first ones properties and name him Tom. And of course the
other one is Jerry. Change Tom's properties and add Speech->Voice.
The text should be 'guards', but we have to change it to 'guard3'.
Jerry's voice must be changed too, but to 'guard2'. It's important
that the voices are right. Otherwise the conversation won't work.
Tom is 'guard3' and Jerry 'guard2'.

Now we have two actors, but we need the actual conversation.
Create a marker and name it 'BearConv' or 'MyOwnConv' or anything
you like. I shall call it 'BearConv'. It doesn't matter where the
marker is, but it would be wise to keep it somewhere near the
actors.

Then we need to change the markers properties. Add S->Scripts and put
'TrapConverse' in the first line.
Add AI->Conversations->SaveConversation and check the box.
Add AI->Conversations->Conversation and just click 'OK' twice.
Don't get confused by the big dialog box. It's somewhat large,
but you can manage with 1024x768 or even 800x600 screen.
The 'OK' is in the lower left corner. And pushing enter
usually means 'OK'

Now we have actors and the conversation. We just need to connect them,
so link 'BearConv' to 'Tom' with 'AIConversationActor' and change the
data to '1'. Link it to 'Jerry' as well but change the data to '2'.
The numbers mean the number of the actor.

The conversation is working, but there is one flaw. The actors don't
say anything yet, so we'll now edit the lines. Open up the properties
of the 'BearConv' and edit that AI->Conversations->Conversation.
Now you should see a window with 11 steps. The steps are executed
in order and the next step doesn't start before the last one is
finished. There are also these 'Abort' things, but we'll see to them
later.

<b>Double-click the '00' (*)</b> and the big dialog box appears on your screen.
As you can see, there are 6 smaller steps, or actions, if you prefer.
These are also for motions and pushing buttons, but as for now, we
just use them for speech. Let's just edit the upper part of this box.
Change the 'Actor' to 'ActorOne', which means Tom and
'Conversation:Action 0' to 'Play sound/motion'. In the first argument,
enter 'sg_c01' and in the second argument, 'LineNo 1'.
That 'sg_c01' is the name of the conversation and 'LineNo 1' is
obviously the line number. Don't worry about these yet.

When you press 'OK', you're back at the properties.
Open the conversation steps again and now choose '01'.
Change 'Actor' to 'ActorTwo', Tom, and use the same action
and first argument, but the second argument should be 'LineNo 2'.
Just edit the '02' with 'ActorOne' and 'LineNo 3' and then we'll
try how it sounds in game.

Before we are able to test it, we must make a ControlDevice.
In this case, a switch or a button will do. Create a switch
or a button and link it with 'ControlDevice' to the 'BearConv'.
Locate it somewhere near Garrett, so there isn't any trouble
with the guards. Now just check portalizations and all those
things one more time and test it.

If everything went fine, you should now have a three line
conversation which starts when you press the button.
Not too great, eh? Well, this was just a demonstration.
Now I have to explain all this (sigh).

* on this part I got confused, 00 is for one actor only although the extended dialog box gives you choices of up to six. Use 00 for the first actor, the use 01 for the next actor, then use 02 for the next actor, ect... These are the major steps, within them are about seven small steps. Use 00 for actor one and have him use 1 to 7 small steps, then change to 01 and that actor can use 1 to 7 steps, then 02 and so on. (in other words, actors one and two CAN'T use 00).
====================
I just realized I had this :) Don't know who wrote it. i just DLed a big list of files from somewhere.

Advanced conversations

Let's start with the voices. As you remember, Tom's voice was
'guard3' and Jerry's 'guard2'. You might think 'Why on Earth
can't I use some other voices?'. This is because the conversations
are made for specific actors. The conversation made in demonstration
is the same you can hear in front of Bafford's, and the voices of
these actors are 'guard3' and 'guard2'. The freedom of choice is
limited to using built-in conversations. Of course, this doesn't
limit our creativity. You can take a part from here and a bit from
there. If you like, you can finish that conversation by adding more
lines starting from '03'.

Then there is this 'sg_c01' and 'LineNo'. That 'sg' is for 'sergeant'
or something like that. There are also 'hm' and 'sv' for hammers
and servants. 'c01' is for 'conversation 1'. I guess you could
search the Snd.crf file for all the conversation, but I prefer
studying the game levels. For example, another conversation 'sg_c12'
has also two actors, 'guard1' and 'guard2'. 'LineNo' is of course
the line number, but you'll have to be careful with this too.
'LineNo 1' means guard 1 and for example 'LineNo 4' means guard 2.

Next thing is this marker. It's preferable to name it, so you can
easily find it later. Those 'AIConversationActor' links are quite
self-explanatory. You just have to be careful with those numbers
in 'Data'. If you forget them or they go wrong… Actor one should
obviously be the one saying line one.

Now let's try something new. Open the conversation part '01'
and change the second action, 'Action 1' to the following…


Actor: ActorTwo
Conversation: Action 1: Play sound/motion
Argument 3: 'Conversation 0, Baz 0'.

Now try it out. Cool, eh? That 'Baz 0' might confuse you, but
don't worry, you're not the only one confused. Here's something
else to try out…

"Conversation 0, Quux 0" Cross arms behind back
"Conversation 0, Baz 0" Jump and shake arms a littleas if agitated
"Conversation 0, Baz 0, Quux 0" Raise arms as ifto say I don't know
"Conversation 0, Bar 0" Lean backward as if surprised
"Conversation 0, Bar 0, Quux 0" Cross arms in front
"Conversation 0, Bar 0, Baz 0" Move arms as if countingor conducting music
"Conversation 0, Foo 0" Raise left hand and nod asif greeting
"Conversation 0, Foo 0, Baz 0" Nod head as in agreementor acknowledgement
"Conversation 0, Foo 0, Bar 0" Take a step forwardwith one foot, then back
"Conversation 0, Foo 0, Bar 0, Baz 0" Look right
"Conversation 0, Quux 0, Foo 0" Cross arms
"Conversation 0, Quux 0, Bar 0" Keep arms crossed

These motions make a little color for your otherwise so boring
conversation. One thing to notice is that speech technically
last for just a moment. This means, if you play motion before
speech, the guard will move first and speak after his little show,
so play sound first.

In addition to this Play sound/motion action, there are a lot of
other possibilities. I'll now explain some of them. To tell the
truth, I don't actually know the meaning of them all.


Goto object
Arg. 1: Object number or name
The actor walks to the object defined in argument 1.
Face
Arg. 1: -
Arg. 2: Object number or name
The actor turns towards the object defined in argument 2.
Frob object
Arg. 1: Object number or name
The actor pushes a button or pulls a switch or anything
that is appropriate for the object. Note that the actor doesn't
have to be anywhere near the object, and doesn't actually 'push'
the object.
Wait
Arg. 1: Amount
Simply makes the actor to stand still for the amount of time.
1000 is one second.
Add link
Arg. 1: Type of link
Arg. 2: To
Arg. 3: From
With this you can add links in-game. For example, you have a button,
but you want it to be active after the player has heard some valuable
information. Like where the button is.
Remove link
Arg. 1: Type of link
Arg. 2: To
Arg. 3: From
This is the opposite of the Add link, but should be used more often.
When you have a conversation, you should destroy the ControlDevice
link to it as soon as possible, so it doesn't start all over again
if player goes taffing around.
Add/Remove meta-property
Arg. 1: 'Add' or 'Remove'
Arg. 2: Name of meta-property
This is quite like the two last ones, but this adds or removes the
actor's meta-property. If you don't know what a meta-property is,
read the corresponding tutorial.

That's quite about it. There are some other actions that I didn't
mention, but they're not so important and if you really need them,
you can easily explore them yourself. One thing to remember is that
every action needs an actor. Even if they don't actually do
anything with the actor.

In our example, we used a button to trigger the event, but it would
of course be much better to activate it with player entering a
specific room. This is specified in another tutorial.

And now as you should be able to do conversations on your own,
why don't you try it out. Make a two person conversation, which
consist motions and another actor walking to a button and pushing
it, and then coming back. And make sure that the conversation cannot
be started twice. Don't worry about the meaning of the speech,
just make it work.

If you do something wrong, just check it from the tutorial. When
you succeed, you can move to the next part.



Garrett as an actor and recording sounds

Everybody remembers the infamous Cutty and the conversation in
Cragscleft. This was the only conversation, where Garrett actually
spoke in-game and was done with some obscure method called
OldConversation and is much related on script. It's simple to
do an identical conversation with the normal method.

The problem is that player isn't actually a creature, so he/she
cannot be an actor. If you're thinking about making the starting
point an actor or an actor that is attached to Garrett or something
like that… forget it. It's so much simpler to do this with VOTraps
. As you remember from the last part, you can make actors to frob
objects, and they don't move in any way. So we plainly make the
actor to push a button which has a ControlDevice link to a VOTrap
which makes the sound.

Let's start with the VOTrap. If you don't remember how it's done,
let me refresh your memory. Create a button and a VOTrap. Make a
ControlDevice link from the button to the VOTrap and a
SoundDescription link from the VOTrap to the sound you want to hear.
For example 'garm0201' is fine. Move the button somewhere near
the start and try it. If you hear 'Hmm… a few too many to get by
here.' coming 'inside your head', your VOTrap is working.

Now we have to hide the button. Put it somewhere underground or
just anywhere, where there is no room, so you could hear the button
being pressed. When the actor now frobs the button, it will seem
like Garrett just made a comment. Let's look at the conversation
then.

Make the '00' a normal conversation part with someone as Actor1.
If you want you can use one of the previous ones. When the actor
has done his part we'll make our trick in '01'. We need two
actions for this. The actor on both these actions is Actor1.
The same one as in '00', but this time he just frobs the button
and waits. Action0 is Frob object and argument 1 is the button
number or if you have named it, you can use the name. Action1
is Wait and argument 1 is… let's say 3000.

Test it and you should now have a conversation with Garrett involved.
Of course, the conversation doesn't make much sense, because their
topics don't quite match. You can fix this by finding the sounds
that make at least some reason or if you're feeling creative, you
can record your own sounds.

To record sounds, you need an external program. I use GoldWave,
but I suppose almost anything will do. For playback rate 22050Hz
is good and saving format… well I use 8 bit mono, but 16 bit
mono works too. Note that when you open the original sounds,
if they seem to be 'Microsoft ADPCM; 4bit' or something weird
like that, you should change it to something more usual. If you
save them in wrong format, it will crash Thief.

Then the directories. Easiest way to do this is to create a \snd
directory under the Thief directory and the unzip the files from
snd.crf to that directory. You should then have, for example,
the file C:\Thief\Snd\Guard3\English\Sg3c0101.wav in right place.
Then you just re-record them. And don't bother trying to put them
back in the snd.crf for Thief looks first in the directories and
then the Crf-files.

Yep. That's quite about it. You should now be able to your own
conversations and make the actors do all the funny things. If
something doesn't work, try to find the reason first by yourself
and then refer to the tutorial.

If you need an example for this, try downloading my 'level'
called 'Conversation at the Gate' from the Circle,
http://www.thief-darkproject.com.




What else to do with conversations

Conversation can be used in very multiple ways. Mastering it can
make you be able to do most stunning tricks and solve the most
serious problems on your levels. Of course, I admire it almost as
much as Totality admires sources and receptrons… Right, Totality?

You may have seen Little Mouse's the Mouse Certified Alarm System.
Now we're making something like that, but with a little modification.
The alarm will go off if the guard doesn't press the button every
two minutes. This isn't probably the only way to make this, but
I'll show you how I did it. You can modify it on your own.

Create some area, where you have a button on the wall.
On the other side of the wall (in the solid void), make a
blueroom (a room which isn't seen in-game) and another button
in there. Name the first button 'CountDownButton' and the second
one 'AlarmButton'. Create one guard somewhere near the buttons
and one 'FrogBeast' inside the blueroom. Name the guard 'Mr Jacobson'
and the frog 'TimerFrog'.

Now create patrol points (TrolPt) for Mr J and spread them around
the area. Make sure they're on a hight, where guards could touch
them. Link the patrol points with each other with AiPatrol
(for example, from first to second, second to third, third to first).
Now give Mr J the property; Ai->Ability->Patrol: Does patrol: True,
and place him upon one of the patrol points.

Now we need to make Mr Jacobson push the CountDownButton, so we create
a marker named 'ButtonSpot' in front of the switch and add
a AiWatchObj link from Mr J to a patrol point near the button.
I suggest that you name the patrol point first. After we have
created the link, we must edit its properties. change the properties
to following:

Watch kind: Self Entry

Trigger: ...
Radius 5
Hight 5
Req. awareness (0) None
Line req. None
Min. alertness (0) None
Max. alertness (1) Low

Exit: ...
Link kill option Don't kill
Kill like links ( )
No tesh once triggered ( )
Reuse delay 20000 (which is 20 seconds)
Reset delay 0

Step 1: Goto object
Arg. 1 ButtonSpot

Step 2: Face
Arg. 1 -
Arg. 2 CountDownButton

Step 3: Play sound/motion
Arg. 1 -
Arg. 2 -
Arg. 2 WorldFrob 0, AtWaist 0, BellPull 0

Step 4: Frob object
Arg. 1 CountDownButton

When you test it, Mr Jacobson should be patrolling around and when
he comes by he goes over to push the button. You may need to move
the ButtonSpot so he doesn't stand too far or too near the button.

Now we can make the actual conversation. Create a marker called
'TimerConv' in the blueroom, and make a ControlDevice link from
the CountDownButton to it. Make the frog actor one with the
AiConversationActor link. Give TimerConv the normal properties
and copy following to the conversation's properties in step '00':

Actor: ActorOne
Action 0 Wait
Arg. 1 120 000 (120 seconds)
Actor: ActorOne
Action 1 Frob object
Arg. 1 AlarmButton

This means that the frog will wait two minutes and then set off
the alarm. Every time the guard (or a sneaky thief) pushes the button,
frog starts counting from the beginning.
Now we just need the alarm, so find the 'RamirezAlarm' and place it
on the wall (note that some of the alarm lights don't work) and
just add a ControlDevice link from the AlarmButton to the alarm.

Add two more guards to see how it works out, and don't forget a
blackjack, so the alarm actually does go off (after mugging of
Mr Jacobson).



Tips and hints

If you don't seem to hear sounds, try building room database.
Also check that rooms are correctly placed.
If the sounds disappear completely after trying the level once,
try re-launching DromEd.
If an action doesn't seem to work, check that you have right arguments.
If you're not sure, try rearranging them. Also verify that you have
an actor selected.
Try doing your own combinations on motions.
Research the levels. For example, the following useful combination
is servant's motion for putting down the tray in Ramirez's:
WorldFrob 0, WithTray 0, AtWaist 0, BellPull 0
Try fancy tricks. In Datoyminaytah's level, Farkas turns towards
player, which is a spectacular result, considering it's done with
DromEd.
When recording, get some friends to do the sounds instead of
manipulating your own voice over and over again. The result is
much more pleasant.
If you have trouble check other texts like Mucho Macho DromEd guide.
They can be found from the Circle, http://www.thief-darkproject.com

============
Here are some motions you can use in Convs:

Converstaion Motions posted November 17, 2001 10:22 PM
--------------------------------------------------------------------------------
The only ones I have are:

(T2)Conv 1 - Reach to touch
Conv 2 - lean back
Conv 3 - Shuffle from side to side
Conv 4 - Two arms shake
Conv 5 - Lean forward
Conv 6 - Nod head
Conv 7 - Move two arms up and down
Conv 8 - Twist head right
Conv 9 - arms behind back
Conv 10 - hands together at front
Conv 11 - arms crossed
Conv 12 - arms wide then right hand up
Conv 13 - walk froward, wave right handed, then sniff
Conv 14 - run right
Conv 15 - lie down on back
Conv 16 - lookup then down then shake arms (the fish was this big type motion)
Conv 17 - shake arms right
Conv 18 - shake arms
Conv 19 - shake arms (as in yes I agree)
Conv 20 - shake arms right
Conv 21 - lieing down, shaking left arm then falls dead (in mid air)
Conv 22 - shake arms (long session)
Conv 23 - move head
Conv 24 - move right hand up and down
Conv 25 - move two arms up (another fish was this big)
Conv 26 - move right hand up and down and shakes head at the same time
Conv 27 - move left hand up and down and shakes head at same time
Conv 28 - move both hands up and down together
Conv 29 - moves both hands up and down, also turns in a circle and rants a bit to all around
Conv 30 - put hands on hips and leans forward
Conv 31 - gives something right handed and left hand on hip and leans forward
Conv 32 - waves both arms then puts both hands on hips and leans forward
Conv 33 - hands on hips and shakes head while leaning forward
Conv 34 - right hand gives, left hand on hips, head moves, right hand moves to hip
Conv 35 - hands on hips and shakes slightly
Conv 36 - lies down, lifts bum up and down (trying to get comfatable, not sex)
Conv 37 - nods head (bow)
Conv 38 - raises left hand up then down
Conv 39 - left hand across chest
Conv 40 - raises left hand (bye)
Conv 41 - raises both hands slightly
Conv 42 - crouches down, then stands (squarts)
Search 0, Scan 0 - must be used together to make them work


Totality's list:
------------------------------------
WorldFrob 0, WithTray 0, AtWaist 0, BellPull 0 =Frobs in front with left arm back
WorldFrob 0, AtWaist 0 =Frobs in front with right hand forwayrd

WorldFrob 0, Lever =Pulls a lever

WorldFrob, =Door Opens Door

Stand2Sit =Sits down from standing

Sit2Stand =Gets up from sitting

Sit2Lie =Goes from sitting to lying

Lie2Stand =From lying to sitting

Crumple, Die =Lies on face dead

Crumple, =Knockout Lies on back dead

+OnStairs =As if KOd on stairs

+IsConfined =Falls to knees then back

+NearHazard =It is allowable, don't know what it does.

Search, Peek =Peers Forward

Search, Scan =Leans forwards hunches body and turns head.

Discover, Pointout =Points forwards

Discover, Recoil =Recoils backwards

Discover, Challenge =Points forwards real quickly.

Discover, Thwarted =Shrugs shoulders in warming up kind of way.

Discover, Salute =Salutes (Note discovers move only arms so variants
if you play another motion immediately before hand)
IdleGesture 0 Wobbles side to side if guard (or yawns if servant)

Stalled, Poisoned =Looks like he's throwing up

Stalled, Stunned =Stunned routine

Stalled, Blinded =Holds arms up to shield face, lots of walking

Stalled, Flail =Moving arms about like a headless chicken

Stalled, Flail, InAir =Can't see any obvious difference, more headless
chicken

Stalled, Flail, InWater =Drowning Routine (very nice endpoint)

+Rebalance =Allowable though I don't know what it does.

ReceiveWound =Get's knocked back if hit

(+Block& SevereWound & Attack No discenible difference on sergeant
model Special Attack)

ReceiveWound, MeleeCombat =As if hit in chest, returns to on guard
position

RangedCombat =Whirls Hands then throws

RangedCombat, Directed =A bit more discenable throw

RangedCombat, Direction =Throws to one side

Conversation, Quux =Cross arms behind back

Conversation, Baz =Jump and shake arms a little as if agitated

Conversation, Baz, =Quux Raise arms as if to say I don't know

Conversation, Bar =Lean backward as if surprised

Conversation, Bar, =Quux Cross arms in front

Conversation, Bar, Baz =Move arms as if counting or conducting music

Conversation, Foo =Raise left hand and nod as if greeting

Conversation, Foo, Baz =Nod head as in agreement or acknowledgement

Conversation, Foo, Bar =Take a step forward with one foot, then back

Conversation, Foo, Bar, Baz =Look right

Conversation, Quux, Foo =Cross arms

Conversation, Quux, Bar =Keep arms crossed

Danventry
20th Feb 2003, 23:25
I did everything right, but I don't think the "Player" link is correct. According to the tutorial, the conversation makes a link so the player is zoomed to the Camvator. The problem is that went I do this manually (just to see what the conversation is doing), I get an Error message. Can I make a like From Player To Object or vice versa?

Schwaa2
21st Feb 2003, 07:02
I haven't reid the camvator yet so I'm not sure.

Francine
28th Feb 2003, 22:33
Originally posted by Danventry
I did everything right, but I don't think the "Player" link is correct. According to the tutorial, the conversation makes a link so the player is zoomed to the Camvator. The problem is that went I do this manually (just to see what the conversation is doing), I get an Error message. Can I make a like From Player To Object or vice versa?

If you followed the tutorial, then there's a TrapTeleport script running on your CamVator. The conversation sets up the second piece of that script by establishing a CD (ControlDevice) link between the Player and the CamVator. That link has to be established via a conversation, because the Player object doesn't exist until the game starts. The frob button part of the conversation sends a signal via a CD link to the CamVator which both starts it moving and teleports the player to its location. Then the conversation does a PhysAttach link between the Player and the CamVator so that they're stuck together, and the Player moves with the CamVator.

So, AFAIK, you can't do a CamVator manually, because you can't manipulate the Player object until the game starts. You need the conversation, and that particular CamVator tutorial assumes you already know how to create and use conversations to do things.

Hope that clears things up some. If you want a very small working CamVator demo to take a look at, email me.

Schwaa2
5th Mar 2003, 00:09
I'm having probs with this too, pretty sure i have everything followed to a T.

When the conversation trigger the player STICKS in place, but doesn't teleport.

I have the TrapTeleport script on the CamVator, and the button CD's the CamVator.

The conversation makes the link because the player then freezes. And Dromed locks up.

Is the player supposed to start in a free fall? (it said the player shouldn't touch the ground, but that seems like when it is attached and moving).
=======================
OK, its not a free fall because I jumped and frobbed the button while up in the air.
Lockup, reboot. that's about 4 times. ARGHHH.

Danventry
5th Mar 2003, 04:05
:o Hehehe... Telling DromEd what Actor to use was helpful... Sorry everyone. :D

Schwaa2
5th Mar 2003, 05:08
Well, I got it working too (although I had the ConvActor right:) )

Actually i still don't know what was wrong. First it crashed or locked up everytime i triggered the conv. Then my elevator (by itself - I was attached) started going straight from the last point to the first point, right through walls, I'd get stuck on the first one.

Now it works? OK, I'll take it :)

Bumbleson
5th Mar 2003, 08:21
Are you sure you had the PhysAttach link right? It must point FROM the player TO the camvator, otherwise the camvator gets attached to the player and strange things will happen, including a crash if one of the objects enters a solid. It's easy to confuse source and destination, because in conversations the destination comes first as opposed to the link window where the source comes first.

By the way, I noticed something very strange and would be thankful if somebody could tell me why it happens: I made something similar to a camvator, only I didn't attach the player to it, but another object. The rest works almost the same. Now when I add the TrapTeleporter script to the vator, the platform starts to move as soon as the links are established, even when I delete the frob command for the elevator button entirely from the conversation! :confused:
When I teleport the object to the TerrPt, it works (but I don't get the effect I have in mind).
What is happening here? How can an elevator start to move when I teleport an object to it??? The 'Moving Terrain' property is set to FALSE. I'm worried...:eek: