Internal commands

Started by Hilbert, July 28, 2012, 01:23:29 PM

Previous topic - Next topic

Dav999

Quote from: blue626 on August 17, 2012, 09:32:31 PM
Quote from: Dav999 on August 17, 2012, 07:49:41 PM
However, if you restart a time trial, it doesn't ALWAYS refuse to play again.

Really? It always refuses when I restart a Time Trial.

Maybe it erases the play command before executing the script if it's the same as the song that's playing and in 2.1.beta it erases it only after executing the commands before it?

That's possible, but I think the musicfadeout() command does fade out the music, but doesn't change a variable somewhere that indicates what music is currently playing.

Quote from: blue626 on August 17, 2012, 09:32:31 PM
EDIT: This thread already has 10 pages! And it's the 3rd with most replies in this forum!

It will become 1st, just watch. :vermillion:

Hilbert

Toaster I know you're looking at this...

Bearboy

How do you people know how to do all this stuff?

Did you just check the whole game internally to see what scripts there were?

WUT. :vitellary:

blue626

Quote from: Bearboy on August 18, 2012, 09:16:19 AM
How do you people know how to do all this stuff?

Did you just check the whole game internally to see what scripts there were?

WUT. :vitellary:

Yes, they opened a file with code from the game to see which commands it used. Then they tested them in a costum level using the say/text/say combination (without it they wouldn't work).

Quote from: Dav999 on August 17, 2012, 10:45:31 PM
Quote from: blue626 on August 17, 2012, 09:32:31 PM
EDIT: This thread already has 10 pages! And it's the 3rd with most replies in this forum!

It will become 1st, just watch. :vermillion:

Do you know how many replies the thread in 1st has? 228! This thread still has ≈140. That's still a big number of replies, though.

Quote from: RoskillaHULK!! on August 17, 2012, 11:28:32 PM
Toaster I know you're looking at this...

??? What?

Dav999

Quote from: blue626 on August 18, 2012, 10:27:34 AM
Quote from: Bearboy on August 18, 2012, 09:16:19 AM
How do you people know how to do all this stuff?

Did you just check the whole game internally to see what scripts there were?

WUT. :vitellary:

Yes, they opened a file with code from the game to see which commands it used. Then they tested them in a costum level using the say/text/say combination (without it they wouldn't work).

You can open the executable in a text/hex editor (hex is better) and scroll down to the script. There are also some commands which were never used, like clearteleportscript(), and the looping function. I didn't find these in scripts, but somewhere where commands were placed under each other.

ToasterApocalypse


blue626

Quote from: ToasterApocolypse on August 18, 2012, 01:58:01 PM
Quote from: RoskillaHULK!! on August 17, 2012, 11:28:32 PM
Toaster I know you're looking at this...

My cover is blown.

He probably looked in the "Who's online" list. I don't know why he said that ???.

Dav999

Quote from: blue626 on August 18, 2012, 02:12:32 PM
Quote from: ToasterApocolypse on August 18, 2012, 01:58:01 PM
Quote from: RoskillaHULK!! on August 17, 2012, 11:28:32 PM
Toaster I know you're looking at this...

My cover is blown.

He probably looked in the "Who's online" list. I don't know why he said that ???.

Probably randomness :P

FIQ

I just realized (a bit too late maybe) that Terry might or might not like that we're kinda reverse-engineering VVVVVV (at least the scripting language part of it) here. :P

But I guess he doesn't care, or this topic would have been deleted way ago.

Anyway, bearboy, yes, that's pretty much what Dav999 did to find the commands.

blue626

Quote from: FIQ on August 18, 2012, 03:54:45 PM
I just realized (a bit too late maybe) that Terry might or might not like that we're kinda reverse-engineering VVVVVV (at least the scripting language part of it) here. :P

But I guess he doesn't care, or this topic would have been deleted way ago.

I already though of that for some time now!
What you're doing (using internal scripting) couldn't be done if the glitch in he parser didn't exist. This wasn't supposed to be done, obviously, and that's why I never tested internal scripting and I'll never make a level with it (and why I said "what you're doing). Terry may even remove the glitch in 2.1 (stable).
I think he doesn't care, though. He could have erased locked this topic weeks ago. You may test internal scripting and use it in levels. I'm sure those levels won't get featured in Terry's blog, though.

Dav999

Quote from: blue626 on August 18, 2012, 07:23:36 PM
Terry may even remove the glitch in 2.1 (stable).

I don't think he would remove it, because the only thing you will gain from it is that some really nice levels will be broken. I understand why the say(6) # say(5) # [internal x4] exploit was fixed, because the say command had to support more than 5 lines, so that it doesn't glitch if you use more. I don't see why the say(-1) would need to be removed. It's just not logical.

Quote from: blue626 on August 18, 2012, 07:23:36 PM
I think he doesn't care, though. He could have erased locked this topic weeks ago. You may test internal scripting and use it in levels. I'm sure those levels won't get featured in Terry's blog, though.

When was the last featured level? Does Terry still feature levels?

FIQ

Quote from: Dav999 on August 18, 2012, 08:08:58 PM
Quote from: blue626 on August 18, 2012, 07:23:36 PM
Terry may even remove the glitch in 2.1 (stable).

I don't think he would remove it, because the only thing you will gain from it is that some really nice levels will be broken. I understand why the say(6) # say(5) # [internal x4] exploit was fixed, because the say command had to support more than 5 lines, so that it doesn't glitch if you use more. I don't see why the say(-1) would need to be removed. It's just not logical.

Quote from: blue626 on August 18, 2012, 07:23:36 PM
I think he doesn't care, though. He could have erased locked this topic weeks ago. You may test internal scripting and use it in levels. I'm sure those levels won't get featured in Terry's blog, though.

When was the last featured level? Does Terry still feature levels?
Also, Terry did like your "Dimension Of Secrets" which, obviously, featured internal scripting. :P

The only reason of him fixing the glitch is if he also creates a new command with the only purpose of running internal scripts, "internal(N)", or something like that. Otherwise, removing it wouldn't make any sense.

Dav999

Quote from: FIQ on August 18, 2012, 08:41:22 PM
The only reason of him fixing the glitch is if he also creates a new command with the only purpose of running internal scripts, "internal(N)", or something like that. Otherwise, removing it wouldn't make any sense.

That would make the level incompatible with 2.0, and a number of lines would be a little bit inconvenient, because if you have a lot of internal commands, you have to count all the lines. Something like putting all internal commands between [] would be very useful, or even an advanced mode. In that case, putting all internal commands between [] would be a perfect solution, because some people may be too lazy to write 'squeak(x) text(x,x,x,x) Bla bla bla position(x,x) speak_active' again and again, so it would look something like this:

say
You will teleport now.
flash
[
changeplayercolour(teleporter)
]
sad
reply
Wait, what? No!
[
flash(5)
playef(10)
hideplayer()
delay(15)
fadeout()
untilfade()
]
etc.


Note, {} would be more perfect, but then you will have to put it between ö and Á :P.

FIQ

Quote from: Dav999 on August 18, 2012, 09:03:23 PM
Quote from: FIQ on August 18, 2012, 08:41:22 PM
The only reason of him fixing the glitch is if he also creates a new command with the only purpose of running internal scripts, "internal(N)", or something like that. Otherwise, removing it wouldn't make any sense.

That would make the level incompatible with 2.0, and a number of lines would be a little bit inconvenient, because if you have a lot of internal commands, you have to count all the lines. Something like putting all internal commands between [] would be very useful, or even an advanced mode. In that case, putting all internal commands between [] would be a perfect solution, because some people may be too lazy to write 'squeak(x) text(x,x,x,x) Bla bla bla position(x,x) speak_active' again and again, so it would look something like this:

say
You will teleport now.
flash
[
changeplayercolour(teleporter)
]
sad
reply
Wait, what? No!
[
flash(5)
playef(10)
hideplayer()
delay(15)
fadeout()
untilfade()
]
etc.


Note, {} would be more perfect, but then you will have to put it between ö and Á :P.
True.

Also, I don't believe 2.0 compatibility is a problem once 2.1 is a stable version that also work with OSX. :P

Also, say() with lines >5 already breaks 2.0 compatibility :P

Also, "internal_start()" and "internal_end()" commands would be even better than [] I think.

Dav999

#149
Quote from: FIQ on August 18, 2012, 09:58:31 PM
Quote from: Dav999 on August 18, 2012, 09:03:23 PM
Quote from: FIQ on August 18, 2012, 08:41:22 PM
The only reason of him fixing the glitch is if he also creates a new command with the only purpose of running internal scripts, "internal(N)", or something like that. Otherwise, removing it wouldn't make any sense.

That would make the level incompatible with 2.0, and a number of lines would be a little bit inconvenient, because if you have a lot of internal commands, you have to count all the lines. Something like putting all internal commands between [] would be very useful, or even an advanced mode. In that case, putting all internal commands between [] would be a perfect solution, because some people may be too lazy to write 'squeak(x) text(x,x,x,x) Bla bla bla position(x,x) speak_active' again and again, so it would look something like this:

say
You will teleport now.
flash
[
changeplayercolour(teleporter)
]
sad
reply
Wait, what? No!
[
flash(5)
playef(10)
hideplayer()
delay(15)
fadeout()
untilfade()
]
etc.


Note, {} would be more perfect, but then you will have to put it between ö and Á :P.
True.

Also, I don't believe 2.0 compatibility is a problem once 2.1 is a stable version that also work with OSX. :P

Also, say() with lines >5 already breaks 2.0 compatibility :P

Also, "internal_start()" and "internal_end()" commands would be even better than [] I think.

[] is only one character, so you can easily recognize them compared to other commands. internal_start() and internal_end() are approximately the same length as the other commands, so it is harder to see what is internal scripting and what is not.

EDIT: 11 pages, 150 posts! This will become 1st one day :vermillion: