Author Topic: Internal commands  (Read 257693 times)

Dav999

  • Global Moderator
  • Captain
  • *****
  • Posts: 2173
    • View Profile
    • The Open Level Project
Re: Internal commands
« Reply #135 on: August 17, 2012, 03:45:31 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.

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

  • Captain
  • *****
  • Posts: 574
  • Yup. This is my name. Not Black, Hilbert.
    • View Profile
Re: Internal commands
« Reply #136 on: August 17, 2012, 04:28:32 PM »
Toaster I know you're looking at this...

Bearboy

  • Captain
  • *****
  • Posts: 270
  • guy
    • View Profile
    • Bearboys Youtube
Re: Internal commands
« Reply #137 on: August 18, 2012, 02: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:

blue626

  • Captain
  • *****
  • Posts: 672
  • I changed my avatar!
    • View Profile
Re: Internal commands
« Reply #138 on: August 18, 2012, 03:27:34 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).

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.

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

 ??? What?

Dav999

  • Global Moderator
  • Captain
  • *****
  • Posts: 2173
    • View Profile
    • The Open Level Project
Re: Internal commands
« Reply #139 on: August 18, 2012, 06:54:57 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

  • Captain
  • *****
  • Posts: 1010
  • le lenny face
    • View Profile
Re: Internal commands
« Reply #140 on: August 18, 2012, 06:58:01 AM »
Toaster I know you're looking at this...

My cover is blown.


blue626

  • Captain
  • *****
  • Posts: 672
  • I changed my avatar!
    • View Profile
Re: Internal commands
« Reply #141 on: August 18, 2012, 07:12:32 AM »
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

  • Global Moderator
  • Captain
  • *****
  • Posts: 2173
    • View Profile
    • The Open Level Project
Re: Internal commands
« Reply #142 on: August 18, 2012, 07:21:59 AM »
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

  • Captain
  • *****
  • Posts: 810
  • https://github.com/FredrIQ/
    • View Profile
    • FIQ
Re: Internal commands
« Reply #143 on: August 18, 2012, 08:54:45 AM »
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

  • Captain
  • *****
  • Posts: 672
  • I changed my avatar!
    • View Profile
Re: Internal commands
« Reply #144 on: August 18, 2012, 12:23:36 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

  • Global Moderator
  • Captain
  • *****
  • Posts: 2173
    • View Profile
    • The Open Level Project
Re: Internal commands
« Reply #145 on: August 18, 2012, 01:08:58 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.

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

  • Captain
  • *****
  • Posts: 810
  • https://github.com/FredrIQ/
    • View Profile
    • FIQ
Re: Internal commands
« Reply #146 on: August 18, 2012, 01:41:22 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.

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

  • Global Moderator
  • Captain
  • *****
  • Posts: 2173
    • View Profile
    • The Open Level Project
Re: Internal commands
« Reply #147 on: August 18, 2012, 02:03:23 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:

Code: [Select]
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

  • Captain
  • *****
  • Posts: 810
  • https://github.com/FredrIQ/
    • View Profile
    • FIQ
Re: Internal commands
« Reply #148 on: August 18, 2012, 02:58:31 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:

Code: [Select]
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

  • Global Moderator
  • Captain
  • *****
  • Posts: 2173
    • View Profile
    • The Open Level Project
Re: Internal commands
« Reply #149 on: August 19, 2012, 01:51:26 AM »
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:

Code: [Select]
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:
« Last Edit: August 19, 2012, 01:54:00 AM by Dav999 »