Using the 'popup' command?
Brian5757
12 Jan 2020, 03:37I came across a popup text command in the help menu (see below), but so far I have not found a way to use this command.
First I tried to use it in the 'GameBook' description section as it would be useful for text to pop-up when I click on word links, but so luck so far. Maybe this is for the 'Text adventure' part of Quest, if so then I can't see a way of fitting this into the script.
I'm using Version 5.8 of Quest and it says this command is for Quest 5.7, so if this has not been removed for version 5.8 then this command should be working.
{popup:text:long text} Displays a link, with the first text (which cannot have text processor directives nested in it). When the player clicks on the link, a pop-up will be displayed, containing the long text. The pop-up will disappear when the long text is clicked on. This can be used with the img command to have an image pop-up.
mrangel
12 Jan 2020, 11:37What happens when you try it?
Does it just display the text? Does it display the text-processor directive as you wrote it? Does it display nothing at all?
Can you show an example of how you used it?
Are you using it in a msg
command, or in the "text" section of a gamebook page? (both should work, but it might help to track down the problem).
Brian5757
12 Jan 2020, 23:21Hi mrangel.
This is what I type in the description of the GameBook
{popup Test:Some more text}
and the is what is displayed as text when I run the program.
mrangel
13 Jan 2020, 10:28in the description of the GameBook
The description of a gamebook is not displayed during the game; it's metadata.
I assume you mean in the text of a page which is the "Text" ot "Text and Script" types.
{popup Test:Some more text}
The help text says you should put {popup:text:long text}
.
Brian5757
13 Jan 2020, 23:50I used the command with Text and Script types and typed in the description
{popup:text:long text}
But it does not get accepted as a script command. Quest sees it as just text so it displays {popup:text:long text} as part of the text.
mrangel
14 Jan 2020, 09:55Can you copy and paste the exact text you're using it in? Maybe there's some detail we're missing.
You've provided two different examples of what you put in your text; one is correct, the other isn't.
Or can you share a game that's giving you this problem, so that someone else can see it?
But it does not get accepted as a script command.
It isn't a script command. It's a text processor command.
Pertex
14 Jan 2020, 14:49When I try to use {popup:text:long text} in a gamebokk I get the message
Error running script: Error compiling expression 'JSSafe(s1) + GetRandomInt(0, 999999999)': FunctionCallElement: Could find not function 'JSSafe(String)'
mrangel
14 Jan 2020, 17:42Ah, that's more useful.
If you include the error message, it's so much easier to come up with a fix.
Create a function named JSSafe
with type "string" and a single parameter s
.
The script should be:
s = Replace(s, "\"", "")
s = Replace(s, "\'", "")
s = Replace(s, " ", "")
s = Replace(s, ".", "")
s = Replace(s, ",", "")
s = Replace(s, "!", "")
s = Replace(s, "?", "")
s = Replace(s, "-", "")
s = Replace(s, "/", "")
s = Replace(s, "(", "")
s = Replace(s, ")", "")
s = Replace(s, "$", "")
s = Replace(s, "%", "")
s = Replace(s, "&", "")
s = Replace(s, "*", "")
s = Replace(s, "@", "")
return (s)
mrangel
14 Jan 2020, 17:44(Though this is a bizarre piece of code in any case; it's inefficient, and doesn't really give any benefits)
Brian5757
14 Jan 2020, 23:33Thanks mrangel.
I don't know a lot about functions but hope to experiment with them.
How would I call the function JSSafe, is this done from a script or from a command in the description window.
mrangel
15 Jan 2020, 00:00How would I call the function JSSafe
You don't.
It's called internally whenever the text processor sees {popup:
. If the function JSSafe doesn't exist (because it's only available in text adventures by default), the text processor fails to generate the popup.
If you create that function, everything else should start working again.
(I still think that there's no reason for the popup script to use JSSafe⦠it would be better if that function didn't exist at all. But as long as ProcessTextCommand_Popup
uses it, copying JSSafe over from the text adventure library is the easiest way to make it work.)
Brian5757
16 Jan 2020, 05:46From what I understand.
I click on Functions on the left of the screen (shown in a tree format)
I then click on the + symbol and I'm asked for the name of the function
I type in JSScript
Do you mean set the return type to string?
I'm not certain what to do after that as I can't see anywhere to type in the script "s = Replace("s", """, "") etc
mrangel
16 Jan 2020, 09:14Yes, the name should be JSSafe, return type string.
There's a list to add parameters to; there should be a single one called s
.
There should be a place within the function to add a script; I'd suggest clicking the code view button so you can just paste in the correct code.
Brian5757
17 Jan 2020, 05:29Thanks mrangel.
I finally got it working.
Does having to enter the extra function code mean that there is an error in Quest?
Maybe in the next version the function code will be part of the Quest program.
mrangel
17 Jan 2020, 11:25Does having to enter the extra function code mean that there is an error in Quest?
Maybe in the next version the function code will be part of the Quest program.
I think so.
We've come across this a few times; functions that used to be text-adventure-only have been copied across to GamebookCore, but someone's missed copying another function that they rely on internally.
Usually these things get fixed once they're discovered.