How do I make a talkative character?
japangirl
08 Dec 2015, 23:55So I've made a character in a room, but I cannot talk to her. This is what happens: http://i.imgur.com/jJxKrYS.png
How can I make her talk to the player and add dialogue options for the player?
How can I make her talk to the player and add dialogue options for the player?

Anonynn
09 Dec 2015, 01:12One of the best/convenient ways is to download the "ConvLib" Library developed by Pixie.
viewtopic.php?f=18&t=5510
^ found there.
Otherwise I think you could go with putting a "Speak to" verb on Ole' Miss Riley.
After that, make it a "Script"
then type the dialogue in a message. For example...
msg ("Hi, Miss Riley!")
msg ("Hi {player.alias}!)
Or you can put them in one giant message script like this...
msg ("Hi Miss Riley" you say cheerfully.
Miss Riley looks up at you and smiles, "Hello {player.alias}! How are you this morning?")
etc.
If you want to give the player responses....you can do something like...
msg ("")
Get Input (LCase result)
Switch Script
Or
msg ("")
Switch Script
Hope this helps! I'm sure there are a ton of other ways too!
Here's an example of one of mine...
msg ("<br/>In what inflection do you respond? <br/><br/><i>sexy</i>, <i>sympathy</i>, <i>sarcasm</i>, <i>snoopy</i>, <i>serious</i> <br/><br/>((In these situations, you must pick what personality inflection to go with. All you have to do is type one of the choices in italics: sexy, sympathy, sarcasm, snoopy, serious. These responses will be tallied as the game progresses!))<br/>")
get input {
switch (LCase(result)) {
case ("sexy") {
msg ("<br/>“I’m not your husband, darling --- but I can see that he is a very lucky man.” you reply in a naturally sultry voice.<br/>")
player.sexy = player.sexy + 1
}
case ("sympathy") {
msg ("<br/>\"Err...that is, I'm not Rold, ma'am.\" you reply almost bashfully.<br/>")
player.sympathy = player.sympathy + 1
}
case ("sarcastic") {
msg ("<br/>“Well, either you can disguise your voice very well, or you’re not the one who let me in here…” you say with a sarcastic inflection.<br/>")
player.sarcastic = player.sarcastic + 1
}
case ("snoopy") {
msg ("<br/>“I’m sorry, I’m not he. But maybe you’d like to tell me who YOU are and what I’m doing here.” you say with curiosity.<br/>")
player.snoopy = player.snoopy + 1
}
case ("serious") {
msg ("<br/>“At least have the curtesy of turning around before addressing me. I’m not sure we’ve been properly introduced.” you say in a very serious tone.<br/>")
player.serious = player.serious + 1
}
default {
msg ("<br/><br/>\"Actually...\"<br/><br/>((Oops! You must have misspelled something! Or typed in something other than the five personality responses. Remember when prompted: you must type in, <i>sexy</i>, <i>sympathy</i>, <i>sarcasm</i>, <i>snoopy</i>, or <i>serious</i>. If you do not, then you will not receive any personality points for that response, and the response will be a default, boring reply!)) <br/>")
}
}
You can remove all my game's garbage though and make it more simple.
msg ("<br/>In what inflection do you respond? <br/><br/><i>sexy</i>, <i>sympathy</i>, <i>sarcasm</i>, <i>snoopy</i>, <i>serious</i> <br/><br/>((In these situations, you must pick what personality inflection to go with. All you have to do is type one of the choices in italics: sexy, sympathy, sarcasm, snoopy, serious. These responses will be tallied as the game progresses!))<br/>")
get input {
switch (LCase(result)) {
case ("sexy") {
msg ("<br/>“I’m not your husband, darling --- but I can see that he is a very lucky man.” you reply in a naturally sultry voice.<br/>")
}
case ("sympathy") {
msg ("<br/>\"Err...that is, I'm not Rold, ma'am.\" you reply almost bashfully.<br/>")
}
case ("sarcastic") {
msg ("<br/>“Well, either you can disguise your voice very well, or you’re not the one who let me in here…” you say with a sarcastic inflection.<br/>")
}
case ("snoopy") {
msg ("<br/>“I’m sorry, I’m not he. But maybe you’d like to tell me who YOU are and what I’m doing here.” you say with curiosity.<br/>")
}
case ("serious") {
msg ("<br/>“At least have the curtesy of turning around before addressing me. I’m not sure we’ve been properly introduced.” you say in a very serious tone.<br/>")
}
default {
msg ("<br/><br/>\"Actually...\"<br/><br/>((Oops! You must have misspelled something! Or typed in something other than the five personality responses. Remember when prompted: you must type in, <i>sexy</i>, <i>sympathy</i>, <i>sarcasm</i>, <i>snoopy</i>, or <i>serious</i>. If you do not, then you will not receive any personality points for that response, and the response will be a default, boring reply!)) <br/>")
}
}
viewtopic.php?f=18&t=5510
^ found there.
Otherwise I think you could go with putting a "Speak to" verb on Ole' Miss Riley.
After that, make it a "Script"
then type the dialogue in a message. For example...
msg ("Hi, Miss Riley!")
msg ("Hi {player.alias}!)
Or you can put them in one giant message script like this...
msg ("Hi Miss Riley" you say cheerfully.
Miss Riley looks up at you and smiles, "Hello {player.alias}! How are you this morning?")
etc.
If you want to give the player responses....you can do something like...
msg ("")
Get Input (LCase result)
Switch Script
Or
msg ("")
Switch Script
Hope this helps! I'm sure there are a ton of other ways too!
Here's an example of one of mine...
msg ("<br/>In what inflection do you respond? <br/><br/><i>sexy</i>, <i>sympathy</i>, <i>sarcasm</i>, <i>snoopy</i>, <i>serious</i> <br/><br/>((In these situations, you must pick what personality inflection to go with. All you have to do is type one of the choices in italics: sexy, sympathy, sarcasm, snoopy, serious. These responses will be tallied as the game progresses!))<br/>")
get input {
switch (LCase(result)) {
case ("sexy") {
msg ("<br/>“I’m not your husband, darling --- but I can see that he is a very lucky man.” you reply in a naturally sultry voice.<br/>")
player.sexy = player.sexy + 1
}
case ("sympathy") {
msg ("<br/>\"Err...that is, I'm not Rold, ma'am.\" you reply almost bashfully.<br/>")
player.sympathy = player.sympathy + 1
}
case ("sarcastic") {
msg ("<br/>“Well, either you can disguise your voice very well, or you’re not the one who let me in here…” you say with a sarcastic inflection.<br/>")
player.sarcastic = player.sarcastic + 1
}
case ("snoopy") {
msg ("<br/>“I’m sorry, I’m not he. But maybe you’d like to tell me who YOU are and what I’m doing here.” you say with curiosity.<br/>")
player.snoopy = player.snoopy + 1
}
case ("serious") {
msg ("<br/>“At least have the curtesy of turning around before addressing me. I’m not sure we’ve been properly introduced.” you say in a very serious tone.<br/>")
player.serious = player.serious + 1
}
default {
msg ("<br/><br/>\"Actually...\"<br/><br/>((Oops! You must have misspelled something! Or typed in something other than the five personality responses. Remember when prompted: you must type in, <i>sexy</i>, <i>sympathy</i>, <i>sarcasm</i>, <i>snoopy</i>, or <i>serious</i>. If you do not, then you will not receive any personality points for that response, and the response will be a default, boring reply!)) <br/>")
}
}
You can remove all my game's garbage though and make it more simple.
msg ("<br/>In what inflection do you respond? <br/><br/><i>sexy</i>, <i>sympathy</i>, <i>sarcasm</i>, <i>snoopy</i>, <i>serious</i> <br/><br/>((In these situations, you must pick what personality inflection to go with. All you have to do is type one of the choices in italics: sexy, sympathy, sarcasm, snoopy, serious. These responses will be tallied as the game progresses!))<br/>")
get input {
switch (LCase(result)) {
case ("sexy") {
msg ("<br/>“I’m not your husband, darling --- but I can see that he is a very lucky man.” you reply in a naturally sultry voice.<br/>")
}
case ("sympathy") {
msg ("<br/>\"Err...that is, I'm not Rold, ma'am.\" you reply almost bashfully.<br/>")
}
case ("sarcastic") {
msg ("<br/>“Well, either you can disguise your voice very well, or you’re not the one who let me in here…” you say with a sarcastic inflection.<br/>")
}
case ("snoopy") {
msg ("<br/>“I’m sorry, I’m not he. But maybe you’d like to tell me who YOU are and what I’m doing here.” you say with curiosity.<br/>")
}
case ("serious") {
msg ("<br/>“At least have the curtesy of turning around before addressing me. I’m not sure we’ve been properly introduced.” you say in a very serious tone.<br/>")
}
default {
msg ("<br/><br/>\"Actually...\"<br/><br/>((Oops! You must have misspelled something! Or typed in something other than the five personality responses. Remember when prompted: you must type in, <i>sexy</i>, <i>sympathy</i>, <i>sarcasm</i>, <i>snoopy</i>, or <i>serious</i>. If you do not, then you will not receive any personality points for that response, and the response will be a default, boring reply!)) <br/>")
}
}
japangirl
09 Dec 2015, 01:30I'm afraid that makes no sense to me, I'm not a coder nor do I have any knowledge of how to code. I tried setting a Verb as Speak To, but it just didn't work. She still says nothing.
Here's an image of what I'm working with: http://i.imgur.com/2TS7Mum.png
Here's an image of what I'm working with: http://i.imgur.com/2TS7Mum.png

Anonynn
09 Dec 2015, 02:24I'm afraid that makes no sense to me, I'm not a coder nor do I have any knowledge of how to code. I tried setting a Verb as Speak To, but it just didn't work. She still says nothing.
Don't worry, I'm still really new at it too. I've just had a super crash course on learning coding from HK, Pixie, Jay, Tin, and Pertex xD
Basically Quest has two different ways to create your adventure. GUI-Editor which is what you show in your picture. It's the neat and tidy way but it also takes a little longer to set up. BTW interesting looking version of Quest. Never seen it all light blue and pretty before! Hahah. The other way of creating your adventure is through the "code view" which if you notice is right next to your "add new script button"
Anyway! So the reason why it still isn't working is probably because you typed in speak to but it doesn't work like that. First you have to add that "speak to" verb to the character.object, object.list. Don't worry it's not as complicated as it sounds. Anything in Quest is known as an object. So if you create a rock. It would be referred to as your rock.object. So in this case, you have your character Ole Miss Riley. She is Ole Miss Riley.object. So go to Ole Miss Riley, and click her "object tab". At the bottom you'll see, "Display Verbs" and a list next to it. You have two options...
1. Click the small box, "Only Display Verbs from this object's Verb Tab" ((which is what you added the "Speak to" verb to.
Or
2. You can add "Speak to" ((same spelling required)) to that "Display Verb List"
Now either way you won't be able to type "Speak to", the player will have to click her, and then select her "Speak to" verb and it'll activate the conversation. Try that!
---------------------------------------------------
If you want to try some coding Start with simple things. For example, click "code view" next to that "Run Script" thing, and it should show you an isolated part of the code that has to do with the "Speak to" thing. Now you'll see this...
msg ("Conversation spoken here!")
now try hitting enter so that you are below that and write this exactly...
msg ("")
then unclick code view and you should have a new blank message box below your existing one

japangirl
09 Dec 2015, 03:00Neonayon wrote:I'm afraid that makes no sense to me, I'm not a coder nor do I have any knowledge of how to code. I tried setting a Verb as Speak To, but it just didn't work. She still says nothing.
Anyway! So the reason why it still isn't working is probably because you typed in speak to but it doesn't work like that. First you have to add that "speak to" verb to the character.object, object.list. Don't worry it's not as complicated as it sounds. Anything in Quest is known as an object. So if you create a rock. It would be referred to as your rock.object. So in this case, you have your character Ole Miss Riley. She is Ole Miss Riley.object. So go to Ole Miss Riley, and click her "object tab". At the bottom you'll see, "Display Verbs" and a list next to it. You have two options...
1. Click the small box, "Only Display Verbs from this object's Verb Tab" ((which is what you added the "Speak to" verb to.
Or
2. You can add "Speak to" ((same spelling required)) to that "Display Verb List"
Now either way you won't be able to type "Speak to", the player will have to click her, and then select her "Speak to" verb and it'll activate the conversation. Try that!
Didn't work, she still doesn't say anything. I'm using the browser version of Quest

XanMag
09 Dec 2015, 03:17Here are a few GUI pics that may help.






XanMag
09 Dec 2015, 03:20And two other options...



japangirl
09 Dec 2015, 03:23XanMag wrote:Here are a few GUI pics that may help.
TANK YOU! That works now! I just had to change the "speak to" verb into "speak to; speak; talk to; talk"
angklungmann
09 Dec 2015, 03:49Wow, XanMag did the attached pictures based on your own aslx file?
I see a lot of examples object there..
Could you upload it?
I'm very new into Quest and surely it will help me and other newbies out there to getting more familiar with Quest features.
Thanks
I see a lot of examples object there..
Could you upload it?
I'm very new into Quest and surely it will help me and other newbies out there to getting more familiar with Quest features.
Thanks
japangirl
09 Dec 2015, 04:04Is it possible to add a lock to a door which blocks the Player from going through until they have certain items?

XanMag
09 Dec 2015, 04:04I am currently in the middle of making a GUI-based tutorial for Quest. The idea is that you can download the .aslx file and see the GUI as it is set up and play it to see how it works in the game. I plan on setting it up so you can type 'move' while playing and you will see a list of rooms that you can choose from and jump to, but currently, that part is not done. The way it is now, you can drag the player (named 'Magoo' into whatever room you want and play from that point for that room. Then, you have to stop the game. Drag him in another room you want to see and play again. The rooms are labeled like 'standard NPC room', 'showing images room', 'If Then room simple', 'If Then room Complex', 'Flag Setting Unsetting Room'. You just have to search the room you are looking for in the 'tree of stuff' on the left and drag Magoo into it.
I can send you the .aslx file over a PM or email if you wish, just know that it is not near completion. It does have a lot of the basics in it - like naming objects, talking to NPCs, using flags, using If/Then scripts, fancy output, edibles, commands, etc. Other things I have added as I see common problems on the forum. Also, any pictures/sounds would not be part of the .aslx file (I think) and I don't want to bundle that with the file currently.
Let me know. Just know it is definitely not complete. I'm also (when I have time) putting an 'explain command' in each room that you can read by typing 'explain' and it will explain to you how to do these in the GUi. That part especially is only present in some rooms.
I can send you the .aslx file over a PM or email if you wish, just know that it is not near completion. It does have a lot of the basics in it - like naming objects, talking to NPCs, using flags, using If/Then scripts, fancy output, edibles, commands, etc. Other things I have added as I see common problems on the forum. Also, any pictures/sounds would not be part of the .aslx file (I think) and I don't want to bundle that with the file currently.
Let me know. Just know it is definitely not complete. I'm also (when I have time) putting an 'explain command' in each room that you can read by typing 'explain' and it will explain to you how to do these in the GUi. That part especially is only present in some rooms.

XanMag
09 Dec 2015, 04:05The door would be locked from the start, correct? Not become locked later? Either way the answer is yes. If I have time, I'll throw another pic up when I get it created.
japangirl
09 Dec 2015, 04:34XanMag wrote:The door would be locked from the start, correct? Not become locked later? Either way the answer is yes. If I have time, I'll throw another pic up when I get it created.
Locked from the start which unlocks after the player picks up three items, yes. And cheers!

XanMag
09 Dec 2015, 05:10Ooh. Three items makes it a little more difficult. I'll post what I just finished in a sec, but to do three items, the easiest way I know of is still pretty in depth. I'll help tomorrow on that part - unless someone else catches this thread and offers an easy suggestion. To others, my solution is to do the add integer of three to the door and subtract one from that each time the player uses the correct object on the door. Then set a changed attribute that when it hits zero, the door would unlock. If anyone can think of something simpler, please suggest.
If there is nothing simpler than my method, I'll post it tomorrow.
If there is nothing simpler than my method, I'll post it tomorrow.
HegemonKhan
09 Dec 2015, 05:12XanMag to the rescue, hehe
HK high-fives XanMag. He's really helpful for helping through the GUI~Editor with his pics and sample games. As he's still shy about coding, he knows the GUI~Editor very well, and does a great job of walking through doing something with it, unlike us who just scare people with code, laughs. XanMag is really a great helper here!
for simplicity, you add Verbs to each of your Objects, and choose the 'print a message' Script, for example:
'npc1' Object -> 'Verbs' -> Add -> Name: (whatever you want to call it) -> (see below)
'whatever' Verb of the 'npc1' Object:
run as script -> add new script -> output -> 'print a message' Script -> (see below)
the '[EXPRESSION]' option, allows for dynamic expressions, what this means is that you can use TEXT+VARIABLES (I'll explain in more detail furhter down)
the [MESSAGE]' option, allows for static expressions, what this means is that you can ONLY use TEXT (I'll explain in more detail furhter down)
so, for example:
print [MESSAGE] Hi, my name is HK, what is your name?
// outputs: Hi, my name is HK, what is your name?
print [MESSAGE] Hi, my name is JapanGirl, what is your name?
// outputs: Hi, my name is JapanGirl, what is your name?
print [MESSAGE] Hi, my name is Neonayon, what is your name?
// outputs: Hi, my name is Neonayon, what is your name?
print [MESSAGE] Hi, my name is XanMag, what is your name?
// outputs: Hi, my name is XanMag, what is your name?
vs
// player.alias = "HK"
print [EXPRESSION] "Hi, my name is " + player.alias + ", what is your name?"
// outputs: Hi, my name is HK, what is your name?
// player.alias = "JapanGirl"
print [EXPRESSION] "Hi, my name is " + player.alias + ", what is your name?"
// outputs: Hi, my name is JapanGirl, what is your name?
// player.alias = "Neonayon"
print [EXPRESSION] "Hi, my name is " + player.alias + ", what is your name?"
// outputs: Hi, my name is Neonayon, what is your name?
// player.alias = "XanMag"
print [EXPRESSION] "Hi, my name is " + player.alias + ", what is your name?"
// outputs: Hi, my name is XanMag, what is your name?
--------------------------
obviously, dialogue~communication, can be much more complex, and this makes it much more difficult to do it as a game maker. Dialogue~Communication just isn't that easy to do in game making. I'd say it's one of the harder things to do, out of all the things you can do.

for simplicity, you add Verbs to each of your Objects, and choose the 'print a message' Script, for example:
'npc1' Object -> 'Verbs' -> Add -> Name: (whatever you want to call it) -> (see below)
'whatever' Verb of the 'npc1' Object:
run as script -> add new script -> output -> 'print a message' Script -> (see below)
the '[EXPRESSION]' option, allows for dynamic expressions, what this means is that you can use TEXT+VARIABLES (I'll explain in more detail furhter down)
the [MESSAGE]' option, allows for static expressions, what this means is that you can ONLY use TEXT (I'll explain in more detail furhter down)
so, for example:
print [MESSAGE] Hi, my name is HK, what is your name?
// outputs: Hi, my name is HK, what is your name?
print [MESSAGE] Hi, my name is JapanGirl, what is your name?
// outputs: Hi, my name is JapanGirl, what is your name?
print [MESSAGE] Hi, my name is Neonayon, what is your name?
// outputs: Hi, my name is Neonayon, what is your name?
print [MESSAGE] Hi, my name is XanMag, what is your name?
// outputs: Hi, my name is XanMag, what is your name?
vs
// player.alias = "HK"
print [EXPRESSION] "Hi, my name is " + player.alias + ", what is your name?"
// outputs: Hi, my name is HK, what is your name?
// player.alias = "JapanGirl"
print [EXPRESSION] "Hi, my name is " + player.alias + ", what is your name?"
// outputs: Hi, my name is JapanGirl, what is your name?
// player.alias = "Neonayon"
print [EXPRESSION] "Hi, my name is " + player.alias + ", what is your name?"
// outputs: Hi, my name is Neonayon, what is your name?
// player.alias = "XanMag"
print [EXPRESSION] "Hi, my name is " + player.alias + ", what is your name?"
// outputs: Hi, my name is XanMag, what is your name?
--------------------------
obviously, dialogue~communication, can be much more complex, and this makes it much more difficult to do it as a game maker. Dialogue~Communication just isn't that easy to do in game making. I'd say it's one of the harder things to do, out of all the things you can do.

XanMag
09 Dec 2015, 05:20Instead of posting a ton of pics... this method is easier for everyone, I think.
1. Open a brand new game in the editor.
2. Click on the code button (it looks like a little note card - second button from the right in the GUI panel at the top)
3. Near the top of that (about 20 or so lines of code down), you will see this: </game>. Highlight everything BELOW that and above the very last line of code which should read </asl>. DO NOT delete those two snippets or anything else at the top.
4. Delete it.
5. Highlight all of the code I supplied in the box below. Copy it.
6. Go to your game file in code view and paste the code between the </game> and the </asl>.
7. You should be able to play it and you should be able to see what I did in the GUI.
That should cover locking and unlocking exits. It's a little more complicated than what it sounds like it should be (at least the way that I do it =)
1. Open a brand new game in the editor.
2. Click on the code button (it looks like a little note card - second button from the right in the GUI panel at the top)
3. Near the top of that (about 20 or so lines of code down), you will see this: </game>. Highlight everything BELOW that and above the very last line of code which should read </asl>. DO NOT delete those two snippets or anything else at the top.
4. Delete it.
5. Highlight all of the code I supplied in the box below. Copy it.
6. Go to your game file in code view and paste the code between the </game> and the </asl>.
7. You should be able to play it and you should be able to see what I did in the GUI.
<object name="locking unlocking exits room A">
<inherit name="editor_room" />
<description>There is a door to your northeast and a heavy gate to your east.</description>
<object name="key B">
<inherit name="editor_object" />
<feature_usegive />
<selfuseon type="scriptdictionary">
<item key="door">
UnlockExit (exit lock A to B)
msg ("The key turns easily and the door is now unlocked.")
</item>
<item key="door1">
UnlockExit (exit lock B to A)
msg ("The key turns easily and the door is now unlocked.")
</item>
</selfuseon>
<look>It's a key that has a 'B' on it.</look>
<take />
<drop type="boolean">false</drop>
<dropmsg>Don't drop it. You'll probably never get it again.</dropmsg>
</object>
<exit name="exit lock A to B" alias="northeast" to="locking unlocking exits room B">
<inherit name="northeastdirection" />
<locked />
<lockmessage>You'll need the proper key to bypass this door!</lockmessage>
<runscript />
<scenery type="boolean">false</scenery>
<script type="script">
msg ("You walk through the previously unlocked door and head northeast.")
MoveObject (Magoo, locking unlocking exits room B)
</script>
</exit>
<exit name="exit lock A to C" alias="east" to="locking unlocking exits room C">
<inherit name="eastdirection" />
<lockmessage>That way is currently blocked by a massive, heavy gate.</lockmessage>
<locked />
</exit>
<object name="door">
<inherit name="editor_object" />
<look>It's a large wooden door with a lock on it.</look>
</object>
<object name="heavy gate">
<inherit name="editor_object" />
<look type="script">
if (GetBoolean(button C, "pushed")) {
msg ("It's a heavy gate that is currently partially opened. You could pass through it to your east if you wish.")
}
else {
msg ("It's a heavy gate that is shut. There's no lock on it, but it is probably too heavy for your scrawny butt to push open!")
}
</look>
<push>You push with all your might, but it is too heavy for a weakling like you to move it. Find another way.</push>
</object>
<object name="Magoo">
<inherit name="editor_object" />
<inherit name="editor_player" />
<inherit name="namedmale" />
<attr name="pov_look">You're Magoo. A simple being trapped in a test game.</attr>
<look type="script">
if (game.pov = Xanadu) {
msg ("Holy moly! That looks exactly like you! To take control of Magoo, just type 'switch to Magoo'.")
}
else {
msg ("You are a simple being trapped in a test game.")
}
</look>
</object>
</object>
<object name="locking unlocking exits room B">
<inherit name="editor_room" />
<description>There is a door to the southwest and an older door to your southeast.</description>
<object name="button C">
<inherit name="editor_object" />
<push type="script">
msg ("You hear a loud 'clunk' in the distance. You wonder what happened.")
UnlockExit (exit lock A to C)
UnlockExit (exit lock C to A)
</push>
<look>It's a button with a 'C' at its center.</look>
</object>
<exit name="exit lock B to A" alias="southwest" to="locking unlocking exits room A">
<inherit name="southwestdirection" />
<lockmessage>A locked door blocks your path.</lockmessage>
</exit>
<exit name="exit lock B to C" alias="southeast" to="locking unlocking exits room C">
<inherit name="southeastdirection" />
<locked />
<runscript />
<script type="script">
msg ("You pass through the previously locked old door as you move to the southeast.")
MoveObject (Magoo, locking unlocking exits room C)
</script>
<lockmessage>A locked older door blocks your path.</lockmessage>
</exit>
<object name="door1">
<inherit name="editor_object" />
<look>It's a large wooden door with a lock on it.</look>
<alias>door</alias>
</object>
<object name="key C">
<inherit name="editor_object" />
<look>It's a key that has a 'C' on it.</look>
<feature_usegive />
<selfuseon type="scriptdictionary">
<item key="old door">
msg ("You use the key on the old door it it easily unlocks.")
UnlockExit (exit lock B to C)
</item>
<item key="old door1">
msg ("You use the key on the old door it it easily unlocks.")
UnlockExit (exit lock B to C)
UnlockExit (exit lock C to B)
</item>
</selfuseon>
<dropmsg>Don't drop it. You'll probably never get it again.</dropmsg>
<drop type="boolean">false</drop>
<take />
</object>
<object name="old door">
<inherit name="editor_object" />
<look>There's an old door here on the wall to your southeast. It has a formidible looking lock on it.</look>
</object>
</object>
<object name="locking unlocking exits room C">
<inherit name="editor_room" />
<description>There is an older door to your northwest and a heavy gate to your west. There is a triangular shaped door to your south.</description>
<object name="locking button">
<inherit name="editor_object" />
<look>It's a big button on the wall that has a large picture of a padlock at its center.</look>
<push type="script">
msg ("Your hear a couple of loud clicks. You wonder what happened.")
LockExit (exit lock A to B)
LockExit (exit lock A to C)
</push>
</object>
<exit name="exit lock C to B" alias="northwest" to="locking unlocking exits room B">
<inherit name="northwestdirection" />
<lockmessage>The older door appears locked again!</lockmessage>
</exit>
<exit name="exit lock C to A" alias="west" to="locking unlocking exits room A">
<inherit name="westdirection" />
<runscript />
<locked />
<lockmessage>That way is blocked by a heavy gate.</lockmessage>
<script type="script">
msg ("You wiggle your way past the partially open gate and head into the western room.")
MoveObject (Magoo, locking unlocking exits room A)
</script>
</exit>
<object name="heavy gate1">
<inherit name="editor_object" />
<look type="script">
if (GetBoolean(button C, "pushed")) {
msg ("It's a heavy gate that is currently partially opened. You could pass through it to your west if you wish.")
}
else {
msg ("It's a heavy gate that is shut. There's no lock on it, but it is probably too heavy for your scrawny butt to push open!")
}
</look>
<push>You push with all your might, but it is too heavy for a weakling like you to move it. Find another way.</push>
<alias>heavy gate</alias>
</object>
<object name="old door1">
<inherit name="editor_object" />
<look>There's an old door here on the wall to your northwest. It has a formidible looking lock on it.</look>
<alias>old door</alias>
</object>
<object name="triangular door">
<inherit name="editor_object" />
<look>It's a triangular door with a triangular lock.</look>
</object>
<object name="triangular key">
<inherit name="editor_object" />
<look>It's a key that is shaped like a triangle.</look>
<feature_usegive />
<selfuseon type="scriptdictionary">
<item key="triangular door">
if (GetBoolean(triangular door, "unlocked")) {
msg ("It's already unlocked. Just go south!")
}
else {
msg ("You pop the key into the triangular lock and it clicks indicating you can probably enter now.")
UnlockExit (exit lock C to Tri)
SetObjectFlagOn (triangular door, "unlocked")
}
</item>
<item key="triangular door1">
msg ("It is already unlocked. Just go north!")
</item>
</selfuseon>
<take />
<drop type="boolean">false</drop>
<dropmsg>You don't need to drop it!</dropmsg>
</object>
<exit name="exit lock C to Tri" alias="south" to="Triangular Unlocked Room">
<inherit name="southdirection" />
<locked />
<runscript />
<script type="script">
msg ("You open the triangular shaped door and enter the room beyond. The door shuts behind you.")
MoveObject (Magoo, Triangular Unlocked Room)
</script>
</exit>
</object>
<object name="Triangular Unlocked Room">
<inherit name="editor_room" />
<description>Other than being in the shape of a triangle, it's pretty boring. Nothing here except the door you came through to your north.</description>
<exit name="exit Tri to C" alias="north" to="locking unlocking exits room C">
<inherit name="northdirection" />
</exit>
<object name="triangular door1">
<inherit name="editor_object" />
<look>It's a triangular door with a triangular lock.</look>
<alias>triangular door</alias>
</object>
</object>
That should cover locking and unlocking exits. It's a little more complicated than what it sounds like it should be (at least the way that I do it =)

XanMag
09 Dec 2015, 05:31As far as using three objects to open a door (or do anything else for that matter), I do have this for now. This is sample code from my game for completing a puzzle. It would be the same thing, except that your puzzle pieces would be whatever three items you are using on the door and your puzzle would be the door itself. After doing the EXACT same thing that I mentioned above (inserting my code into a new game), you should be able to play it and see it in the GUI and at least have a template to work from for now.
I'll certainly check on here to help you out if you need clarification. Good luck!
ALSO!! If you can't get it to play or load properly, it's probably my fault in my directions on what to delete or what I copied for you to copy! =)
<object name="multiple conditions met room">
<inherit name="editor_room" />
<object name="jigsaw puzzle">
<inherit name="editor_object" />
<inherit name="surface" />
<takemsg>You don't dare pick up the jigsaw puzzle. It will certainly fall apart.</takemsg>
<feature_container />
<contentsprefix>in which there are</contentsprefix>
<listchildren />
<hidechildren />
<MissingPieceCount type="int">4</MissingPieceCount>
<Completed type="boolean">false</Completed>
<look type="script">
switch (jigsaw puzzle.MissingPieceCount) {
case (4) {
msg ("It appears to be missing four pieces.")
}
case (3) {
msg ("It appears to be missing three pieces.")
}
case (2) {
msg ("It appears to be missing two pieces.")
}
case (1) {
msg ("It is missing only one piece.")
}
case (0) {
msg ("The puzzle is completed. It's a puzzle of the mighty Smaug flying over the port city of Lake-town.")
}
}
</look>
<changedMissingPieceCount type="script">
msg ("The missing piece count is now " + jigsaw puzzle.MissingPieceCount)
if (jigsaw puzzle.MissingPieceCount = 0) {
msg ("CONGRATULATIONS!! YOU HAVE COMPLETED THE PUZZLE")
SetObjectFlagOn (jigsaw puzzle, "Completed")
MakeObjectInvisible (thousands of placed pieces)
}
</changedMissingPieceCount>
<object name="thousands of placed pieces">
<inherit name="editor_object" />
<scenery type="boolean">false</scenery>
<visible />
<takemsg>You don't want to destroy the puzzle. You want to finish it!</takemsg>
<usedefaultprefix type="boolean">false</usedefaultprefix>
<look type="script">
if (GetBoolean(jigsaw puzzle, "completed")) {
msg ("It's a completed puzzle of the might Smaug from the Hobbit.")
}
else {
msg ("It looks like the puzzle shows a mighty dragon flying over a city, but there are a few pieces missing.")
}
</look>
</object>
</object>
<object name="standard piece">
<inherit name="editor_object" />
<look>It's kind of square shaped with notches cut out on one side and tabs on the adjacent sides.</look>
<feature_usegive />
<take type="script">
if (GetBoolean(standard piece, "placed")) {
msg ("You have already placed this piece correctly. No need to take it out now!")
}
else {
msg ("Taken.")
AddToInventory (standard piece)
}
</take>
<selfuseon type="scriptdictionary">
<item key="jigsaw puzzle">
msg ("You easily find the place that this puzzle piece goes.")
MoveObject (standard piece, jigsaw puzzle)
SetObjectFlagOn (standard piece, "placed")
MakeObjectInvisible (standard piece)
jigsaw puzzle.MissingPieceCount = jigsaw puzzle.MissingPieceCount - 1
</item>
</selfuseon>
</object>
<object name="border piece">
<inherit name="editor_object" />
<look>Flat on one side with a standard puzzle cut on the other. It goes on the outside.</look>
<feature_usegive />
<take type="script">
if (GetBoolean(border piece, "placed")) {
msg ("You have already placed this piece correctly. No need to take it out now!")
}
else {
msg ("Taken.")
AddToInventory (border piece)
}
</take>
<selfuseon type="scriptdictionary">
<item key="jigsaw puzzle">
msg ("Without a problem, you find where the piece goes.")
MoveObject (border piece, jigsaw puzzle)
SetObjectFlagOn (border piece, "placed")
MakeObjectInvisible (border piece)
jigsaw puzzle.MissingPieceCount = jigsaw puzzle.MissingPieceCount - 1
</item>
</selfuseon>
</object>
<object name="corner piece">
<inherit name="editor_object" />
<look>It's your typical corner piece.</look>
<feature_usegive />
<take type="script">
if (GetBoolean(corner piece, "placed")) {
msg ("You have already placed this piece correctly. No need to take it out now!")
}
else {
msg ("Taken.")
AddToInventory (corner piece)
}
</take>
<selfuseon type="scriptdictionary">
<item key="jigsaw puzzle">
msg ("In mere seconds, you connect the piece perfectly in the jigsaw puzzle.")
MoveObject (corner piece, jigsaw puzzle)
SetObjectFlagOn (corner piece, "placed")
MakeObjectInvisible (corner piece)
jigsaw puzzle.MissingPieceCount = jigsaw puzzle.MissingPieceCount - 1
</item>
</selfuseon>
</object>
<object name="awkward piece">
<inherit name="editor_object" />
<look>This is one of those weird pieces that don't look typical - just an odd, irregular shape.</look>
<feature_usegive />
<take type="script">
if (GetBoolean(awkward piece, "placed")) {
msg ("You have already placed this piece correctly. No need to take it out now!")
}
else {
msg ("Taken.")
AddToInventory (awkward piece)
}
</take>
<selfuseon type="scriptdictionary">
<item key="jigsaw puzzle">
msg ("You find a place for the awkward puzzle piece.")
MoveObject (awkward piece, jigsaw puzzle)
SetObjectFlagOn (awkward piece, "placed")
MakeObjectInvisible (awkward piece)
jigsaw puzzle.MissingPieceCount = jigsaw puzzle.MissingPieceCount - 1
</item>
</selfuseon>
</object>
<object name="Magoo">
<inherit name="editor_object" />
<inherit name="editor_player" />
<inherit name="namedmale" />
<attr name="pov_look">You're Magoo. A simple being trapped in a test game.</attr>
<look type="script">
if (game.pov = Xanadu) {
msg ("Holy moly! That looks exactly like you! To take control of Magoo, just type 'switch to Magoo'.")
}
else {
msg ("You are a simple being trapped in a test game.")
}
</look>
</object>
</object>
I'll certainly check on here to help you out if you need clarification. Good luck!
ALSO!! If you can't get it to play or load properly, it's probably my fault in my directions on what to delete or what I copied for you to copy! =)
japangirl
09 Dec 2015, 11:12Well now there's an in-room description that WILL NOT go away no matter what I do. Here's an image of it it looks like: http://i.imgur.com/H8nnO6Y.png
It's displaying the description which I once set for Torch #2, I've deleted all forms of description for Torch #2 but it's still displaying that. I can't find the same sentence "It's a torch with a burning flame dancing on top of it", in any other objects or rooms. This is really frustrating me.
It's displaying the description which I once set for Torch #2, I've deleted all forms of description for Torch #2 but it's still displaying that. I can't find the same sentence "It's a torch with a burning flame dancing on top of it", in any other objects or rooms. This is really frustrating me.

XanMag
09 Dec 2015, 11:35If you go to code view and 'ctrl + f', you should be able to copy-paste that sentence and search for it in code. Where ever you find it in code, you should delete it.
Please make a back-up copy of everything before you start tampering with your code in code-view, however. Just in case...
Please make a back-up copy of everything before you start tampering with your code in code-view, however. Just in case...

Pertex
09 Dec 2015, 12:00You can do it with a locked container. First create a normal exit, give it a name and make it invisible

Then create an object named door in your room and define it as locked container.


Add some options and some scripts and it should work

Then create an object named door in your room and define it as locked container.


Add some options and some scripts and it should work
japangirl
09 Dec 2015, 12:24None of any of this is working. It's still displaying the torch message. In an effort to fix it, I moved all objects into a "dummy" room and then deleted the room which was bugged with the description. This caused the entire game to be a mess of broken code, I managed to fix it, but now most of today's work is completely gone.
Please stop sending code, it's gibberish to me and I don't understand any of it. I'm using the web browser Simple-Mode Quest Game Editor, not the program, not anything else.
This is getting me extremely worked up.
Please stop sending code, it's gibberish to me and I don't understand any of it. I'm using the web browser Simple-Mode Quest Game Editor, not the program, not anything else.
This is getting me extremely worked up.

OurJud
09 Dec 2015, 13:31japangirl wrote:This is getting me extremely worked up.
Welcome to Quest

Seriously, though, you've already stated you're new to this, so just be patient with those people who are trying to help you, and don't try to run before you can walk.
I've been trying to create games on this for over a year now, and I still despair!

Pertex
09 Dec 2015, 13:34Just an advice: If you want to try something new, try it first in a new dummy game. Only when it works, transfer it to in your original game. The online version of Quest is a bit sensitive
japangirl
09 Dec 2015, 13:37I apologise for my rude words, was pretty upset!
Dave Lister.

OurJud wrote:"japangirl"
This is getting me extremely worked up.
Welcome to Quest![]()
Seriously, though, you've already stated you're new to this, so just be patient with those people who are trying to help you, and don't try to run before you can walk.
I've been trying to create games on this for over a year now, and I still despair!
Dave Lister.


OurJud
09 Dec 2015, 13:41japangirl wrote:I apologise for my rude words, was pretty upset!![]()
"OurJud"
[quote="japangirl"]This is getting me extremely worked up.
Welcome to Quest![]()
Seriously, though, you've already stated you're new to this, so just be patient with those people who are trying to help you, and don't try to run before you can walk.
I've been trying to create games on this for over a year now, and I still despair!
Dave Lister.

Quite!

Marzipan
09 Dec 2015, 21:18japangirl, have you gone through the tutorial? Objects, simple scripts and custom verbs and commands are all things you're going to be using over and over and over in different combinations, so best to get a good handle on them early on. Your earlier example of speaking to an NPc, for instance, is essentially the same as turning on a TV and flipping through the channels when you get right down to it.
I'd also highly advise the downloadable version, the online one has some issues and for me at least runs very slowly, it's really best just for getting an idea of what's possible. And I know it's already been said, but make test files for learning new things, and always keep back ups of your in progress game. I can't really emphasize enough how important that is.
I'd also highly advise the downloadable version, the online one has some issues and for me at least runs very slowly, it's really best just for getting an idea of what's possible. And I know it's already been said, but make test files for learning new things, and always keep back ups of your in progress game. I can't really emphasize enough how important that is.
MissSearle
21 Dec 2015, 10:45XanMag wrote:I am currently in the middle of making a GUI-based tutorial for Quest. The idea is that you can download the .aslx file and see the GUI as it is set up and play it to see how it works in the game. I plan on setting it up so you can type 'move' while playing and you will see a list of rooms that you can choose from and jump to, but currently, that part is not done. The way it is now, you can drag the player (named 'Magoo' into whatever room you want and play from that point for that room. Then, you have to stop the game. Drag him in another room you want to see and play again. The rooms are labeled like 'standard NPC room', 'showing images room', 'If Then room simple', 'If Then room Complex', 'Flag Setting Unsetting Room'. You just have to search the room you are looking for in the 'tree of stuff' on the left and drag Magoo into it.
I can send you the .aslx file over a PM or email if you wish, just know that it is not near completion. It does have a lot of the basics in it - like naming objects, talking to NPCs, using flags, using If/Then scripts, fancy output, edibles, commands, etc. Other things I have added as I see common problems on the forum. Also, any pictures/sounds would not be part of the .aslx file (I think) and I don't want to bundle that with the file currently.
Let me know. Just know it is definitely not complete. I'm also (when I have time) putting an 'explain command' in each room that you can read by typing 'explain' and it will explain to you how to do these in the GUi. That part especially is only present in some rooms.
I look forward to this, if it isn't already up.
I'm very new but very keen to learn everything about game making and coding.
I learn best by looking at code, and looking at what it created.
Could you PM me the asl file?

XanMag
21 Dec 2015, 17:05Will PM you the file. Keep in mind that it is NOT finished, but there are many rooms where you can see an event happen as you play the game and then you can go into the GUI and work out how I used the GUI to make certain things happens. I will eventually have descriptions or 'explain' commands that walk you through how certain scripts were written in the GUI. Some are present, some are not. Just PM me if you have any questions. Also, to experience a room, you'll need to drag 'Magoo' into whichever room you want on the left in the tree of stuff. Good luck and in its current state, I hope you find it useful.