squeak(player)
text(gray,0,0,1)
This is text box one.
backgroundtext
speak_active
text(gray,0,50,1)
This is text box two!
backgroundtext
speak
text(gray,0,100,1)
They will appear all at once!
speak
endtext
Normally, a text box in internal scripting looks like this:squeak(color)
text(color,x,y,lines)
[The text]
position(x[,x])
speak_active
After the last text box, or before a delay after a text box, use 'endtext', to make the text box disappear. You don't have to do this in between text boxes. 0 - Path Complete
1 - Pushing Onwards
2 - Positive Force
3 - Potential For Anything
4 - Passion For Exploring
5 - Pause
6 - Presenting VVVVVV
7 - Plenary
8 - Predestined Fate
9 - ecroF evitisoP
10 - Popular Potpurri
11 - Pipe Dream
12 - Pressure Cooker
13 - Paced Energy
14 - Piercing The Sky
jukebox(x) - makes a jukebox terminal white and turns off the color of all the other terminals (in custom levels, it just seems to turn off the white color of all activated terminals).cutscene()leavesecretlab() - turn off "secret lab mode"
untilbars()
squeak(terminal)
text(gray,0,0,1)
You will hear 3 coin sounds in a row.
position(center)
speak_active
endtext
do(3)
playef(4)
delay(20)
loop
squeak(terminal)
text(gray,0,0,1)
The loop has ended.
position(center)
speak_active
endtext
endcutscene()
untilbars()
say(-1)
text(1,0,0,4)
say(5)
{internal command}
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(5)
{internal command}
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(5)
...
...
{internal command}
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(4)
endtext
endcutscene()
untilbars()
loadscript(stop)
say(-1)
text(1,0,0,4)
say(4)
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(5)
{internal command}
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(2)
{internal command}
text(1,0,0,4)
say(4)
endtext
endcutscene()
untilbars()
loadscript(stop)
iftrinkets(0,script2)
say(5)
{internal command}
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(5)
{internal command}
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(5)
...
...
{internal command}
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(2)
endtext
loadscript(stop)
text(1,0,0,4)
say(4)
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(5)
{internal command}
{internal command}
{internal command}
{internal command}
text(1,0,0,4)
say(2)
{internal command}
text(1,0,0,4)
say(2)
endtext
loadscript(stop)
text(1,0,0,4)
Another method for internal scripting:Code: (scriptone) [Select]iftrinkets(0,scripttwo)
(blank line)Code: (scripttwo) [Select]#
you can also write this:
A)Say
<internal>
(blank line)Code: (scripttwo) [Select]<internal>
This makes sure there's no terminal sound, and no cutscene bars.
(blank line)
You can use multiple simplified commands, and on the last two lines you write 'A)Say' and the internal command you want to use. Strangely enough, the internal command will always run first, then the simplified commands. You have to run the script from another script (with iftrinkets(0,asayscript)), and there should be exactly one empty line at the end of the script, not 0, because your internal command will be deleted, and also not 2, because then it doesn't work for some reason. If you don't want to use simplified commands, you can write # on the first line, or something similar.
Keep in mind that you CAN run multiple internal commands with the method, but you're limited to one line per script.Code: (showtrinkets) [Select]iftrinkets(0,showtrinkets1)
(blank line)Code: (showtrinkets1) [Select]iftrinkets(1,showtrinkets2)
A)Say
<internal>
(blank line)Code: (showtrinkets2) [Select]iftrinkets(1,showtrinkets3)
(…)
A)Say
<internal>
(blank line)
Entities is posted below. "Metadata" shows one, possibly two (which should be used in the specified order then) extra setting you can use. All are numbers, but you'll have to experiment what different numbers do. Modified by earlier list posted by ToasterApocalypse.Code: [Select]createentity(x,y,n,meta,meta)
x,y=coordinates
n=the number of the entity
0 - The player
1 - Enemy
Metadata: movement type, movement speed
Due to lacking needed data, you will only ever get a purple enemy box, unless you're in the VVVVVV polar dimension while doing the command
2 - Moving platform
Metadata: movement type, movement speed
Note that conveyors is implemented as moving platforms, see movement type 8 and 9.
3 - A disappearing platform
4 - A 1x1 quicker quicksand block
5 - A flipped Viridian, you will flip gravity when touched
6 - Weird red flashy thingy that disappears quickly
7 - Same as above, but doesn't flash and is coloured cyan
8 - A coin from the prototype
Metadata: Coin ID
9 - Trinket
Metadata: Trinket ID
Note that trinket ID start at 0, and everything above 19 will not be saved in the savefile once you restart the level
10 - Checkpoint
Metadata: Checkpoint state (0=flipped, 1=normal), Checkpoint ID (checks if the checkpoint is active or not)
11 - Horisontal gravity line
Metadata: Length in pixels
12 - Vertical gravity line
Metadata: Length in pixels
13 - Warp token
Metadata: Destination in tiles X axis, destination in tiles Y axis
14 - The round teleporter
Metadata: Checkpoint ID(?)
15 - Verdigris
Metadata: AI state
16 - Vitellary (flipped)
Metadata: AI state
17 - Victoria
Metadata: AI state
18 - Crewmate
Metadata: Colour (using raw color list, not the crewmate colors), mood
19 - Vermilion
Metadata: AI state
20 - Terminal
Metadata: Sprite, Script ID(?)
21 - Same as above but when touched the terminal doesn't light up
Metadata: Sprite, Script ID(?)
22 - Collected trinket
Metadata: Trinket ID
23 - Gravitron square
Metadata: Direction
If you input negative X coordinate (or too high), an arrow shows instead, just like in the real Gravitron
24 - Intermission 1 crewmate
Metadata: Raw color, mood
Doesn't seem to be affected by hazards, but should be. I'll have to look into this one
25 - Trophy
Metadata: Challenge identifier, sprite
If the challenge is completed, the base sprite ID (what you get if you use sprite=0) will change. Only use 0 or 1 if you want predictable results (0=normal, 1=flipped)
26: The warp token to the Secret Lab
Keep in mind that the warp is just implemented as a nice looking sprite. You'll have to script the functionality for yourself
55 - Rescueable crewmate
Metadata: Crewmate color. Color >6 will always show a *happy* Viridian
56 - Custom level enemy
Metadata: Movement type, movement speed
Keep in mind that if there's no enemies in the room, the enemy sprite data isn't updated correctly and it will just show what enemy you saw last time, or a square enemy
Undefined entities (27-50, 57+) give glitchy Viridians.
List of colors for createentity() crewmates:Code: [Select]0: Cyan
1: Flashy red (used for death)
2: Dark orange
3: Trinket color
4: Gray
5: Flashy white
6: Red (tiny bit darker than Vermilion)
7: Lime green (ala Viel)
8: Hot pink (ala Vaelyn)
9: Brilliant yellow
10: Flashy white
11: Bright cyan
12: Blue, same as Victoria
13: Green, same as Verdigris
14: Yellow, same as Vitellary
15: Red, same as Vermilion
16: Blue, same as Victoria
17: Lighter orange
18: Gray
19: Darker gray
20: Pink, same as Violet
21: Lighter gray
22: White
23: Flashy white
24-29: White
30: Gray
31: Dark, slightly purplish gray?
32: Dark cyan/green (ala Valso)
33: Dark blue
34: Dark green
35: Dark red
36: Dull orange
37: Flashy gray
38: Gray
39: Darker cyan/green
40: Flashier gray
41-99: White
100: Dark gray
101: Flashy white
102: Teleporter color
103 and onwards: White
Internal playlist
0 - Path Complete
1 - Pushing Onwards
2 - Positive Force
3 - Potential For Anything
4 - Passion For Exploring
5 - Pause
6 - Presenting VVVVVV
7 - Plenary
8 - Predestined Fate
9 - ecroF evitisoP
10 - Popular Potpurri
11 - Pipe Dream
12 - Pressure Cooker
13 - Paced Energy
14 - Piercing The Sky
The effect listCode: [Select]0 - Flip to ceiling
1 - Flip back to floor
2 - Cry
3 - Trinket collected
4 - Coin collected
5 - Checkpoint touched
6 - Quicker quicksand block touched
7 - Normal quicksand block touched
8 - Gravity line touched
9 - Flash
10 - Warp
11 - Viridian squeak
12 - Verdigris squeak
13 - Victoria squeak
14 - Vitellary squeak
15 - Violet squeak
16 - Vermilion squeak
17 - Terminal touched
18 - Teleporter touched
19 - Alarm
20 - Terminal squeak
21 - Time trial countdown "3", "2", "1"
22 - Time trial countdown "Go!"
23 - VVVVVV Man breaking walls
24 - Crewmates (de)combining into VVVVVV Man
25 - New record in Super Gravitron
26 - New trophy in Super Gravitron
27 - Rescued crewmate (in custom levels)
28+ segfaults
Entity limit is 3000.
Script limit is 500.
Quote from: Dav999Another method for internal scripting:Code: (scriptone) [Select]iftrinkets(0,scripttwo)
(blank line)Code: (scripttwo) [Select]#
This makes sure there's no terminal sound, and no cutscene bars.
A)Say
<internal>
(blank line)
You can use multiple simplified commands, and on the last two lines you write 'A)Say' and the internal command you want to use. Strangely enough, the internal command will always run first, then the simplified commands. You have to run the script from another script (with iftrinkets(0,asayscript)), and there should be exactly one empty line at the end of the script, not 0, because your internal command will be deleted, and also not 2, because then it doesn't work for some reason. If you don't want to use simplified commands, you can write # on the first line, or something similar.
#
A)Say
<internal>
(blank line)
<internal>
(blank line)
Actually, instead of this:Code: (scripttwo) [Select]#
A)Say
<internal>
(blank line)
you can write this:Code: (scripttwo) [Select]<internal>
(blank line)
Actually, instead of this:Code: (scripttwo) [Select]#
A)Say
<internal>
(blank line)
you can write this:Code: (scripttwo) [Select]<internal>
(blank line)
So i can just stick in 1 internal script per scriptname? Kinda confused. :verdigris:
So. When I tried say-1, I got customposition(center) and a bunch of what looks like I messed up. What causes this?
Hold on... it was the flipme command thatSo. When I tried say-1, I got customposition(center) and a bunch of what looks like I messed up. What causes this?
Could you post everything in between <script> and </script> inside code tags here if you open the level in notepad, along with the name of the script which has problems?
Doesn't have anything to do with flipping Viridian :facepalm:Does that help?
Hold on... it was the flipme command thatSo. When I tried say-1, I got customposition(center) and a bunch of what looks like I messed up. What causes this?
Could you post everything in between <script> and </script> inside code tags here if you open the level in notepad, along with the name of the script which has problems?Quote from: Dav999Doesn't have anything to do with flipping Viridian :facepalm:Does that help?
Only reason I can come up with is to fix headline position in Flip Mode. Though, as flipme doesn't even work properly in first place even in the real game...Hold on... it was the flipme command thatSo. When I tried say-1, I got customposition(center) and a bunch of what looks like I messed up. What causes this?
Could you post everything in between <script> and </script> inside code tags here if you open the level in notepad, along with the name of the script which has problems?Quote from: Dav999Doesn't have anything to do with flipping Viridian :facepalm:Does that help?
If you post the script here, someone else might be able to fix it. I don't know how the flipme command would cause this, but why do you want to use that command?
Yes, I love gotoroom()!Probably the single most useful command out of all internal scripts.
+1Yes, I love gotoroom()!Probably the single most useful command out of all internal scripts.
+1Yes, I love gotoroom()!Probably the single most useful command out of all internal scripts.
If you need a reason to learn internal scripting, gotoroom() is the answer. Boss battles, simulating exhaust chute (http://tolp.net16.net/forum/index.php?topic=255.msg3631#msg3631), moving rooms (http://tolp.net16.net/forum/index.php?topic=133.msg2617#msg2617) (note: tOLP contributors exclusive), puzzles (http://distractionware.com/forum/index.php?topic=1219.0), and so much more.... Just too awesome.
gotoroom() is also vital for emulating background scripts without the feature actually existing, by warping to the same room you are in. ;)+1Yes, I love gotoroom()!Probably the single most useful command out of all internal scripts.
If you need a reason to learn internal scripting, gotoroom() is the answer. Boss battles, simulating exhaust chute (http://tolp.net16.net/forum/index.php?topic=255.msg3631#msg3631), moving rooms (http://tolp.net16.net/forum/index.php?topic=133.msg2617#msg2617) (note: tOLP contributors exclusive), puzzles (http://distractionware.com/forum/index.php?topic=1219.0), and so much more.... Just too awesome.
gotoroom() is also vital for emulating background scripts without the feature actually existing, by warping to the same room you are in. ;)What's the point of emulating background scripts, just wondering?
Several things, actually:gotoroom() is also vital for emulating background scripts without the feature actually existing, by warping to the same room you are in. ;)What's the point of emulating background scripts, just wondering?
I actually made a sample level of changing backgrounds yesterday. I guess this is what you means by background-altering rooms :DSeveral things, actually:gotoroom() is also vital for emulating background scripts without the feature actually existing, by warping to the same room you are in. ;)What's the point of emulating background scripts, just wondering?
* Dialog which doesn't hinder gameplay (think Portal style, or the various help texts at the beginning of VVVVVV, achievement texts in the secret lab). One of the simpler, yet very useful, uses
* If you have way too much free time - a random number generator
* Background-altering rooms (think The Final Level)
* A counter that ticks to something
* User interfaces use them in a sense (think Level Select Menu in my level)
And much more, only your imagination (and VVVVVV's 500 scripts limit) can stop you :P
* Removing the wraparound in roomsSeveral things, actually:gotoroom() is also vital for emulating background scripts without the feature actually existing, by warping to the same room you are in. ;)What's the point of emulating background scripts, just wondering?
* Dialog which doesn't hinder gameplay (think Portal style, or the various help texts at the beginning of VVVVVV, achievement texts in the secret lab). One of the simpler, yet very useful, uses
* If you have way too much free time - a random number generator
* Background-altering rooms (think The Final Level)
* A counter that ticks to something
* User interfaces use them in a sense (think Level Select Menu in my level)
And much more, only your imagination (and VVVVVV's 500 scripts limit) can stop you :P
They do stop gameplay yes, unless backgroundtext is used before the "speak" command. This will not halt gameplay. By utilizing backgrounded scripts, you can make a timer to chose when these dialogs should disappear. Of course you don't *need* backgrounded scripts for this - but if you want them to disappear after a certain time instead of when moving forward a little, you do need background scripts.I actually made a sample level of changing backgrounds yesterday. I guess this is what you means by background-altering rooms :DSeveral things, actually:gotoroom() is also vital for emulating background scripts without the feature actually existing, by warping to the same room you are in. ;)What's the point of emulating background scripts, just wondering?
* Dialog which doesn't hinder gameplay (think Portal style, or the various help texts at the beginning of VVVVVV, achievement texts in the secret lab). One of the simpler, yet very useful, uses
* If you have way too much free time - a random number generator
* Background-altering rooms (think The Final Level)
* A counter that ticks to something
* User interfaces use them in a sense (think Level Select Menu in my level)
And much more, only your imagination (and VVVVVV's 500 scripts limit) can stop you :P
But how to use dialog not hindering gameplay? Don't say() and reply() commands themselves stop gameplay? I thought those were just well-positioned background texts :beg:
How does one use gotoposition? The coordinates are tripping me up :victoria:
I use this thread as a reference guide for when I use the internal code. Mind posting the full list of gamestates, playefs and plays?Gamestates (http://tolp.net16.net/forum/index.php?topic=162.0;topicseen)
I use this thread as a reference guide for when I use the internal code. Mind posting the full list of gamestates, playefs and plays?
Quote from: FIQInternal playlist
0 - Path Complete
1 - Pushing Onwards
2 - Positive Force
3 - Potential For Anything
4 - Passion For Exploring
5 - Pause
6 - Presenting VVVVVV
7 - Plenary
8 - Predestined Fate
9 - ecroF evitisoP
10 - Popular Potpurri
11 - Pipe Dream
12 - Pressure Cooker
13 - Paced Energy
14 - Piercing The SkyQuote from: FIQThe effect listCode: [Select]0 - Flip to ceiling
1 - Flip back to floor
2 - Cry
3 - Trinket collected
4 - Coin collected
5 - Checkpoint touched
6 - Quicker quicksand block touched
7 - Normal quicksand block touched
8 - Gravity line touched
9 - Flash
10 - Warp
11 - Viridian squeak
12 - Verdigris squeak
13 - Victoria squeak
14 - Vitellary squeak
15 - Violet squeak
16 - Vermilion squeak
17 - Terminal touched
18 - Teleporter touched
19 - Alarm
20 - Terminal squeak
21 - Time trial countdown "3", "2", "1"
22 - Time trial countdown "Go!"
23 - VVVVVV Man breaking walls
24 - Crewmates (de)combining into VVVVVV Man
25 - New record in Super Gravitron
26 - New trophy in Super Gravitron
27 - Rescued crewmate (in custom levels)
28+ segfaults
Well it should all be in the first postto have a monopoly on all scriptingI mean so people can just look here.
How does a timer with gotoroom() work? I thought it was just use do() to loop, but it seems to make the time for executing each command extremely short. (No longer 30 times is about 1 s.) And the script will repeat again and again due to gotoroom() and I can't use a terminal for it too....BUMP
I even thought of use of flags or loadscript(stop), but they don't work....
Don't think you can...ask Dav or someone.How does a timer with gotoroom() work? I thought it was just use do() to loop, but it seems to make the time for executing each command extremely short. (No longer 30 times is about 1 s.) And the script will repeat again and again due to gotoroom() and I can't use a terminal for it too....BUMP
I even thought of use of flags or loadscript(stop), but they don't work....
I made an example in that old thread in the distractionware forums. Let me copy/paste it here, sec...
...
ffffffff...
I have a 'print' of that entire topic saved to my computer, will upload it in a few hours...WOW Thanks for your help, but I assume FIQ made it in form of a level?
EDIT: http://tolp2.tk/misc/Internal%20commands.html (http://tolp2.tk/misc/Internal%20commands.html)
I have a 'print' of that entire topic saved to my computer, will upload it in a few hours...That print is too old for my script I think, as I posted it pretty much right before the forums closed.
EDIT: http://tolp2.tk/misc/Internal%20commands.html (http://tolp2.tk/misc/Internal%20commands.html)
Oh I see......I guess I just have to wait for Terry to miraculously realise that better security question should be used and reopen the forums.I have a 'print' of that entire topic saved to my computer, will upload it in a few hours...That print is too old for my script I think, as I posted it pretty much right before the forums closed.
EDIT: http://tolp2.tk/misc/Internal%20commands.html (http://tolp2.tk/misc/Internal%20commands.html)
Oh I see......I guess I just have to wait for Terry to miraculously realise that better security question should be used and reopen the forums.
counter_load:
ifflag(11,stop)
iftrinkets(0,counter) # load internal script
counter:
say(5) # this is one of the few needed internal scripts
gotoroom(0,0) # allow "script backgrounding"
customifflag(5,counter5) # increase counter of flag 5
customifflag(10,counter_started) # check if it has started at all
flag(10,on) # it hasn't
text(1,0,0,4)
say(5) # text
text(gray,-1,30,1)
Counter
backgroundtext
speak
text(1,0,0,4)
say(5)
text(red,-1,90,1)
10
backgroundtext
speak
text(1,0,0,4)
say(5) # set the flags to their current time, making it output 9 once a full second pass
flag(6,on)
flag(7,off)
flag(8,off)
flag(9,on)
loadscript(stop)
text(1,0,0,4)
counter_started:
flag(5,on)
delay(0)
counter5:
flag(5,off) # Do the splitsecond counter
ifflag(4,counter4)
flag(4,on)
delay(0) # those are needed to prevent a bug in VVVVVV
counter4:
flag(4,off)
ifflag(3,counter3)
flag(3,on)
delay(0)
counter3:
flag(3,off)
ifflag(2,counter2)
flag(2,on)
delay(0)
counter2:
flag(2,off)
ifflag(1,counter1)
flag(1,on)
delay(0)
counter1:
flag(1,off)
iftrinkets(0,counter_full0000) # trigger a second, check at the very bottom
delay(0)
# The full counters, sorted by when they occur (in practice). The first part which doesn't exist for odd numbers are continuing branching to other seconds, simulating integers. The second part sets the flags applied for the incoming second. The third part is actual output. While I could merge part 1 and 2 under the same text(1,0,0,4) part in some cirumstances, I didn't, to make it more understandable.
counter_full1001:
say(2)
flag(9,off)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
09
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full1000:
say(2)
customifflag(9,counter_full1001)
text(1,0,0,4)
say(5)
flag(6,off)
flag(7,on)
flag(8,on)
flag(9,on)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
08
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full0111:
say(2)
flag(9,off)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
07
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full0110:
say(3)
customifflag(9,counter_full0111)
text(1,0,0,4)
say(3)
flag(8,off)
flag(9,on)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
06
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full0101:
say(2)
flag(9,off)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
05
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full0100:
say(3)
customifflag(8,counter_full0110)
customifflag(9,counter_full0101)
text(1,0,0,4)
say(4)
flag(7,off)
flag(8,on)
flag(9,on)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
04
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full0011:
say(2)
flag(9,off)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
03
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full0010:
say(2)
customifflag(9,counter_full0011)
text(1,0,0,4)
say(3)
flag(8,off)
flag(9,on)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
02
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full0001:
say(2)
flag(9,off)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
01
backgroundtext
speak
loadscript(stop)
text(1,0,0,4)
counter_full0000:
say(5)
customifflag(6,counter_full1000) # those are different states of flags
customifflag(7,counter_full0100)
customifflag(8,counter_full0010)
customifflag(9,counter_full0001)
text(1,0,0,4)
say(5)
text(red,-1,90,1)
00
backgroundtext
speak
text(1,0,0,4)
say(2)
flag(11,on) # stop the script
loadscript(stop)
text(1,0,0,4)
squeak(off)
say(-1)
text(1,0,0,4)
say(2)
customiftrinkets(0,version20)
customiftrinkets(0,version21)
Bump.you know how some random person created mcedit for minecraft just to make modifying maps easier? someone should make an external scripting editor for vvvvvv so we won't have to repeat text() and say() every 4 lines. the program takes the script data from a level, we just throw in our commands, the program adds in the necessary text() and say() crap, then uploads it into the level.
Since Terry has made clear that he doesn't intend to do anything regarding scripting - that is, neither fixing it, or improving it - this is still very relevant.
HOWEVER, Terry also made clear that he doesn't want to force people to update just to play player levels. This means that, unless someone wants to ignore that request, we should NOT abuse the fact that 2.1+ currently can work with say() (or reply() ) with lines above 5.
Basically, just pretend that the update never happened @ level scripting. Otherwise, him wanting to keep backward compatibility is rather pointless. Just saying : D
EDIT: And if you decide to ignore it regardless, at least do a version check.
[code=checkversion]NOBODY CARES ABOUT THIS[/code]
a 1yr bump? rly fiq?if it's relevant to the topic and adds something, it's fine.
if it's relevant to the topic and adds something, it's fine.okay, then.
Oh yeah, I'm all for an external VVVVVV level editor. The internal one is fine enough, but it could use some work, but since there wont be any work done with it, I suppose an external editor could be useful. Not just for scripting, but for other stuff too like better tile management and such nice things.Bump.you know how some random person created mcedit for minecraft just to make modifying maps easier? someone should make an external scripting editor for vvvvvv so we won't have to repeat text() and say() every 4 lines. the program takes the script data from a level, we just throw in our commands, the program adds in the necessary text() and say() crap, then uploads it into the level.
Since Terry has made clear that he doesn't intend to do anything regarding scripting - that is, neither fixing it, or improving it - this is still very relevant.
HOWEVER, Terry also made clear that he doesn't want to force people to update just to play player levels. This means that, unless someone wants to ignore that request, we should NOT abuse the fact that 2.1+ currently can work with say() (or reply() ) with lines above 5.
Basically, just pretend that the update never happened @ level scripting. Otherwise, him wanting to keep backward compatibility is rather pointless. Just saying : D
EDIT: And if you decide to ignore it regardless, at least do a version check.
[code=checkversion]NOBODY CARES ABOUT THIS[/code]
Oh yeah, I'm all for an external VVVVVV level editor. The internal one is fine enough, but it could use some work, but since there wont be any work done with it, I suppose an external editor could be useful. Not just for scripting, but for other stuff too like better tile management and such nice things.and 40x40 maps that won't crash when you attempt to save them in-game!
Not possible.Oh yeah, I'm all for an external VVVVVV level editor. The internal one is fine enough, but it could use some work, but since there wont be any work done with it, I suppose an external editor could be useful. Not just for scripting, but for other stuff too like better tile management and such nice things.and 40x40 maps that won't crash when you attempt to save them in-game!
music_predestinedfate2:
music(6)
music(15a)
music_predestinedfate2:
say(3)
play(8)
play(15)
loadscript(stop)
text(1,0,0,4)
I've been messing around with internal scripting in 2.2. The maximum number of lines in a "block" [say(x)] aren't unlimited; the maximum is 50.why is there a maximum anyway
https://www.youtube.com/watch?v=t348e24vDyAI've been messing around with internal scripting in 2.2. The maximum number of lines in a "block" [say(x)] aren't unlimited; the maximum is 50.why is there a maximum anyway
https://www.youtube.com/watch?v=t348e24vDyAis it because i stole your eye pee
Sorry for the bump, but I have something relevant to add to the list of gamestates:Are these for v2.0, v2.1, or v2.2?
3500 - Pause for a minute, continue to state 3501
3501 - Game Complete, continue to state 3502
3502-3507 just show stats
Hmm, I might look. but really last post in march? (SHIT, I DIDN'T KNOW I BUMPED THIS)Sorry for the bump, but I have something relevant to add to the list of gamestates:Are these for v2.0, v2.1, or v2.2?
3500 - Pause for a minute, continue to state 3501
3501 - Game Complete, continue to state 3502
3502-3507 just show stats
Hmm, I might look. but really last post in march?Do they work in v2.0, v2.1, or v2.2?
EDIT: Yes they do in fact work!!!
works in 2.2 make & play, although "press ACTION to continue" doesn't seem to workOh, that's interesting. I always thought that the default room would be the first room that you started in, but apparently you shouldn't have intuitive logic when programming games in C++.
also, the default hardest room is Welcome Aboard, even if you don't have a room named that
Dav have you posted a list for playef()? I need one for some reasonThere's a list in this post (http://tolp2.nl/forum/index.php?topic=21.msg145#msg145) :)
ADD THIS TO THE ENTITY LIST:
SHINYWOLF07 FIGURED THIS OUT:
32 - Crewmate that follows player
Metadata: Color (Using raw colors, not crewmate colors), Happy of sad (0 is happy, 1 is sad)
EXAMPLE: createentity(0,55,24,32,0) would give you Valso that follows you.
THANKS SHINYWOLF07 FOR FIGURING THIS OUT!
createentity(0,55,24,32,0)
24 - Intermission 1 crewmate
Metadata: Raw color, mood
Doesn't seem to be affected by hazards, but should be. I'll have to look into this one
ifflag(1,start2)
say(-1)
text(1,0.....
:viridian: = cyan or playerWhy is it not the smiley? I know you copy and pasted but you could change that.
:victoria: = blue
:vermillion: = red
:vitellary: = yellow
:verdigris: = green
:violet: = purple
(http://d2bm3ljpacyxu8.cloudfront.net/width/30/crop/0,0,30x35/afbeeldinge.webs.com/terminal.jpg) = gray or terminal[/b]
The smiley didn't exist yet. And that image was hosted on an old site that now doesn't exist anymore.:viridian: = cyan or playerWhy is it not the smiley? I know you copy and pasted but you could change that.
:victoria: = blue
:vermillion: = red
:vitellary: = yellow
:verdigris: = green
:violet: = purple
(http://d2bm3ljpacyxu8.cloudfront.net/width/30/crop/0,0,30x35/afbeeldinge.webs.com/terminal.jpg) = gray or terminal[/b]
...Except it shows up now?it shows up SOMETIMES. I cannot see it anymore.
Is there a gamestate to end a custom level? I could have sworn I read something about it...!There is one to go back to the main menu, no idea if there's any hidden state that marks a level as completed though.
Is there a gamestate to end a custom level? I could have sworn I read something about it...!Very unlikely.
what is that stateIs there a gamestate to end a custom level? I could have sworn I read something about it...!There is one to go back to the main menu, no idea if there's any hidden state that marks a level as completed though.
Gamestate 81. I guess that works well enough, though it'll make it impossible to get stars on my level...what is that stateIs there a gamestate to end a custom level? I could have sworn I read something about it...!There is one to go back to the main menu, no idea if there's any hidden state that marks a level as completed though.
Gamestate 81. I guess that works well enough, though it'll make it impossible to get stars on my level...i think there's a way you can mark the level as complete with gamestate 81 by using the custom crewmate found gamestate in some way
should be changed toQuote from: FIQCode: [Select]1 - Enemy
Metadata: movement type, movement speed
Due to lacking needed data, you will only ever get a purple enemy box, unless you're in the VVVVVV polar dimension while doing the command
Quote from: FIQCode: [Select]1 - Enemy
Metadata: movement type, movement speed
Due to lacking needed data, you will only ever get a purple enemy box, unless you're in the VVVVVV polar dimension while doing the command, or if you're in a room that has an enemy in the main game, which also allows more than 2x2 enemies.
0 - Bouncing up and down, starts down.
1 - Bouncing up and down, starts up.
2 - Bouncing left and right, starts left.
3 - Bouncing left and right, starts right.
4, 7, 11 - Moves right until collision.
5 - Same as above, only acts weird when it collides. GIF here: https://files.catbox.moe/c23ovl.gif
6 - Bouncing up and down, but only reaches a certain x position before going back down. Used in "Trench warfare".
8, 9, 14, 15 - Still (?)
10, 12 - Clones right/in the same spot, crashes VVVVVV if it gets too intense, and will corrupt your level if you save.
13 - Like 4, but moves down until collision.
16 - Flashes in and out of existence. (Appears and disappears)
17 - Jittery movement left
18 - Jittery movement right, little bit faster
19+ - Still (?)
but I'm not sure for other rooms
It's still in the room 1x1 and 1x5
Sorry for the bump, but how do I make crewmates walk? (created with createcrewman, of course)No need to apologize for bumps, unless they don’t contribute anything to the topic. Acknowledging that you bumped a topic isn’t going to make a difference.
|
say(-1)
text(1,0,0,4)
say(2)
fadeout()
text(1,0,0,4)
say(5)
text(gray,0,0,1)
A year after the events of VVVVVV...
position(center)
speak_active
text(1,0,0,4)
say(3)
text(gray,0,0,2)
The crew is living in
the secret lab.
say(4)
position(center)
speak_active
fadein()
text(1,0,0,4)
say(4)
endtext
endcutscene()
untilbars()
loadscript(stop)
...
say(3)
text(gray,0,0,2)
The crew is living in
the secret lab.
say(4)
position(center)
speak_active
fadein()
text(1,0,0,4)
...
Thanks! Also, I have a script that doesn't seem to work, it just freezes Viridian with a constant horizontal velocity.Ooh, what level are you making?Code: [Select]say(-1)
text(1,0,0,4)
say(2)
fadeout()
text(1,0,0,4)
say(5)
text(gray,0,0,1)
A year after the events of VVVVVV...
position(center)
speak_active
text(1,0,0,4)
say(3)
text(gray,0,0,2)
The crew is living in
the secret lab.
say(4)
position(center)
speak_active
fadein()
text(1,0,0,4)
say(4)
endtext
endcutscene()
untilbars()
loadscript(stop)
changeplayercolor(rainbow) is incorrectIt is.
Even when internal scripting mode is turned on, Ved says that the changeplayercolor(rainbow) is incorrect.
Even when internal scripting mode is turned on, Ved says that the changeplayercolor(rainbow) is incorrect.how could he be wrong on so many levels
wrong on so many levelsReminds me of this quote:
Apparently changeplayercolor(rainbow) Doesn't exist.
HOW DOES ONE RAINBOW
changeplayercolor(rainbow) is incorrectIt is.
- There is no such command named changeplayercolor. Did you mean changeplayercolour?
- There is no such color named rainbow. Did you mean teleporter?
Every time I try to modify an internal script and test a level, Viridian does the freeze thing, but when I relaunch the game, it works again until I modify it again.If it happens