Back to VVVVVV (V1.2.4)

Started by FIQ, May 28, 2012, 08:41:51 PM

Previous topic - Next topic

FIQ

#45
Quote from: Vallu on June 30, 2012, 11:46:48 PM
I checked the document and tried to do some of them... None worked. How did you, for an example teleport the player somewhere else? I also checked your level and after the beginning I was like: :o. Awesome scripting. I checked the level in level editor mode too and saw some scripts. After one script I was like: :o. Can you please tell me how did you teleport the player somewhere else with the flash effects? I'd like to know more about scripting since I'm going to make a lot levels... :victoria:
Hi.
This level uses an exploit which I found for some weeks ago that allows you to run internal scripting commands. I tricked the parser to not remove any scripting lines as it thought it would be part of say(). This way, I could execute internal scripting commands just like any other script in custom levels.
The trick was to use say() with a negative amount of lines. As the parser will not understand negative numbers, it belives that I just typed say(1) instead of say(-1). The internal conversion however, text(gray,0,0,-1) will do nothing at all, as it will do the same as if I've typed say(0), i.e. nothing will show up. So this way, I could get the parser to trust 1 line of internal code. Then, I used text(1,0,0,4) as the internal command to use. This is so I can override the next say command - say(5). This say() in turn, while in fact ignored, is thought by the parser to start a say() command. For this reason, I can in turn give 4 lines of internal code a time. The 5th line, I use for re-starting the parser trick (text(1,0,0,4) followed by say(5)). The reason for why I only do say(5) and reapply things all the time is to maintain 2.0 compatibility. Anything more than 5 will screw up the parser in VVVVVV 2.0.

Example:
Parser thinks that this:
say(-1)
text(1,0,0,4)
say(3)
endcutscene
untilbars
loadscript(stop)

will first spawn a gray dialog with the content "text(1,0,0,4)", then a dialig with:
endcutscene
untilbars
loadscript(stop)

In fact, the internal conversion will look like this (bold text is ignored):
cutscenebars
untilbars
squeak(terminal)
text(gray,0,0,-1) (do nothing!)
text(1,0,0,4)
customposition(center)
speak_active
squeak(terminal)
text(gray,0,0,3)

endcutscene
untilbars
loadscript(stop) (Here, the script is stopped, to prevent dialog rubbish)
customposition(center)
speak_active
endtext

Internal scripting commands are described in the document.

THIS IS SUBJECT OF BEING FIXED IN A STABLE 2.1. IN NO EVENT WILL I BE RESPONSIBLE FOR LEVELS BROKEN BY THIS, OTHER THAN LEVELS CREATED BY MYSELF

ToasterApocalypse

Quote from: FIQ on July 01, 2012, 01:19:26 PM
Quote from: Vallu on June 30, 2012, 11:46:48 PM
I checked the document and tried to do some of them... None worked. How did you, for an example teleport the player somewhere else? I also checked your level and after the beginning I was like: :o. Awesome scripting. I checked the level in level editor mode too and saw some scripts. After one script I was like: :o. Can you please tell me how did you teleport the player somewhere else with the flash effects? I'd like to know more about scripting since I'm going to make a lot levels... :victoria:
Hi.
This level uses an exploit which I found for some weeks ago that allows you to run internal scripting commands. I tricked the parser to not remove any scripting lines as it thought it would be part of say(). This way, I could execute internal scripting commands just like any other script in custom levels.
The trick was to use say() with a negative amount of lines. As the parser will not understand negative numbers, it belives that I just typed say(1) instead of say(-1). The internal conversion however, text(gray,0,0,-1) will do nothing at all, as it will do the same as if I've typed say(0), i.e. nothing will show up. So this way, I could get the parser to trust 1 line of internal code. Then, I used text(1,0,0,4) as the internal command to use. This is so I can override the next say command - say(5). This say() in turn, while in fact ignored, is thought by the parser to start a say() command. For this reason, I can in turn give 4 lines of internal code a time. The 5th line, I use for re-starting the parser trick (text(1,0,0,4) followed by say(5)). The reason for why I only do say(5) and reapply things all the time is to maintain 2.0 compatibility. Anything more than 5 will screw up the parser in VVVVVV 2.0.

Example:
Parser thinks that this:
say(-1)
text(1,0,0,4)
say(3)
endcutscene
untilbars
loadscript(stop)

will first spawn a gray dialog with the content "text(1,0,0,4)", then a dialig with:
endcutscene
untilbars
loadscript(stop)

In fact, the internal conversion will look like this (bold text is ignored):
cutscenebars
untilbars
squeak(terminal)
text(gray,0,0,-1) (do nothing!)
text(1,0,0,4)
customposition(center)
speak_active
squeak(terminal)
text(gray,0,0,3)

endcutscene
untilbars
loadscript(stop) (Here, the script is stopped, to prevent dialog rubbish)
customposition(center)
speak_active
endtext

Internal scripting commands are described in the document.

THIS IS SUBJECT OF BEING FIXED IN A STABLE 2.1. IN NO EVENT WILL I BE RESPONSIBLE FOR LEVELS BROKEN BY THIS, OTHER THAN LEVELS CREATED BY MYSELF

I opened up the .txt and input this script (Using the backgroundtext example with say)
say(-1)
text(blue,0,0,1)
Hi
backgroundtext
text(blue,0,20,1)
Bye
speak
endtext


and I got a blue text box at the top of the screen saying "customposition(center)"

ToasterApocalypse

I actually found out how to run internal commands and found a way to play as the crewmates!

blue626

Actually, someone (PJBottomz) already found how to do that in v.2.0., using internal scripting. It is based on a code that someone else found to make colored text using 2.0. It can also make crewmates follow :viridian: (but, it only works with :vermillion:), as I said in the "Intermission 1 Recreation?" thread. Here's the link: VVVVVV's most POWERFUL Script?

However, you found a way to do it in v.2.1., didn't you? If so, that's new, even if it is similar. Besides, you didn't read the thread I mentioned, did you?

FIQ

1) This level *use* an exploit that works in 2.1
2) You can get every crewmate, not just Vermillion. You're just not doing it right (try numbers instead of crewmate names/colors!)

blue626

#50
I hope that you understood that I was referring to what ToasterApocalipse said.
I didn't try to make crewmates follow :viridian:, I was just mentioning that someone already had discovered how to make that and change player color using 2.0 (as well as make colored text, play as "VVVVVVMan"...)

Quote from: FIQ on July 08, 2012, 09:48:17 PM
1) This level *use* an exploit that works in 2.1

Are you saying that in your level you used internal scripting to make crewmates follow :viridian:?
Also, I didn't write a comment about your level because I didn't download your level (yet). You said that v.2.1 is recommended because it's needed a map to find places, so, as I have 2.0., I didn't download it (yet).

We are off-topic, aren't we?

Blatch

Woah. For one thing, I don't want to break up the chatter in this thread, but I just came off playing part of this level for the first time, and there's nothing to really say other than the fact that I am amazed by what has managed to be done in this level. I've seen so many internal scripts used, that I think my head might implode if I see any more.

I've only played the first level; to be exact, it was the one with all of the gravity lines, using the Outside tileset. I really liked that section, although it did get a little iffy with the lack of checkpoints, especially in the section with the stationary spike platforms (though I did love the little joke made with the checkpoints in the upper part of the map, little things like that in a VVVVVV level always make me laugh).

I'll play a little more of the level very soon, but I am amazed at what FiQ managed to pull off here.

FIQ

#52
I'm going to fix the ship terminals and release the final version of this level, hopefully without bugs!

Things to do not in the released version (spoilers ahead):
* Fix saving at The Gravitron (done)
* Fix last dialog before you "rescue" the crew member to end the level (done)
* Fix jukebox terminals and the teleporters only being usable 1 time and then you have to leave the room (done)
* Add the missing terminals from the ship, and a proper credits terminal (done)
* Fix the rushed credits dialog, actually call Souleye "Souleye", etc. (done)
* Fix so that if you enter Life Factory the second time, avoiding checkpoints and dying will continue to play Potential For Anything when you respawn in overworld (done)
* Remove music change to overworld music in the Life Factory "secret" trinket path because it feels wrong (done)
* Fix obvious internal script trigger when entering Whizz Down The Shaft "spawn point" when already in the dimension, as it isn't needed (done)
* Erase "The Ship" spawn point from the map until you complete the level for real (done)

And possible as a 1.1 if this level gets enough attention:
* Detect usage of version 2.0 to place a recommendation of using 2.1 due to it having a minimap
* Make progressive level complete dialog for 2.1 users
* Fix wrong music playing by saving at certain spots and then selecting the level again from menu. Even the main game has these bugs
* Rebalance Inversed Floors in case people find it too hard/easy (I didn't get very much feedback on this one)
* Possibly change the way the game ends to prevent you from having to rescue a crew member who isn't really missing, while keeping the "completion" mark that 2.1 introduced
* Tweak areas to make them look better (not SS though, as it's supposed to be pretty much original)

Dav999

Quote from: FIQ on October 08, 2012, 02:59:26 PM
* Fix jukebox terminals only being usable 1 time and then you have to leave the room

If you haven't found out already: you can use gotoroom to do that, by just teleporting to the room you're in!

FIQ

Quote from: Dav999 on October 08, 2012, 03:09:28 PM
Quote from: FIQ on October 08, 2012, 02:59:26 PM
* Fix jukebox terminals only being usable 1 time and then you have to leave the room

If you haven't found out already: you can use gotoroom to do that, by just teleporting to the room you're in!
That was what I was going to do :P

FIQ

Quote from: blue626 on July 08, 2012, 11:41:27 PM
I hope that you understood that I was referring to what ToasterApocalipse said.
I didn't try to make crewmates follow :viridian:, I was just mentioning that someone already had discovered how to make that and change player color using 2.0 (as well as make colored text, play as "VVVVVVMan"...)

Quote from: FIQ on July 08, 2012, 09:48:17 PM
1) This level *use* an exploit that works in 2.1

Are you saying that in your level you used internal scripting to make crewmates follow :viridian:?
Also, I didn't write a comment about your level because I didn't download your level (yet). You said that v.2.1 is recommended because it's needed a map to find places, so, as I have 2.0., I didn't download it (yet).
It isn't needed really, but it helps!

avengah

Just completed it, and the Super Gravitron doesn't work. No enemies appear. I didn't want to cheat the trophy; I'm assuming it would save my best time, so I'll pass, thanks. I want to earn it fairly. Apart from that, it's great! I thoroughly enjoyed it!

FIQ

Quote from: avengah on October 11, 2012, 01:31:43 PM
Just completed it, and the Super Gravitron doesn't work. No enemies appear. I didn't want to cheat the trophy; I'm assuming it would save my best time, so I'll pass, thanks. I want to earn it fairly. Apart from that, it's great! I thoroughly enjoyed it!
Thanks for the feedback! Yes, I'm aware of this bug. If you play one gravitron and then another one (i.e. first the normal Gravitron, then the super version), this happens. R (force respawn) should solve it. I'll look into a way of solving this bug.

avengah

Sorry, I've just found another glitch. I loaded my save and it started me in the Gravitron on the ship, with only the lower line there. I'm stuck! I think this is because I saved on the ship after doing the Gravitron.

Damn It AL to Hell

Cool level bro, It's a very decent story too! I give it 10/10

And that means.....

:shiny: _ :shiny: