PDA

View Full Version : The 'Snow' Combo



Joe123
10-22-2007, 05:36 AM
Basically, after thinking about this for quite a while, I've created a new combo attribute. Almost.
So; the Snow Combo is a script which, when assigned to the screen via an ffc, and given a combo type, plays a sound effect when Link walks on the given type, and leaves a trail of footprints which slowly fade away after a few seconds. So great for snow or fallen leaves, or whatever your imagination is not tied to.

It also requires very minimal set-up, which I was quite pleased with really.
You'll need some footprint tiles:
http://i146.photobucket.com/albums/r260/Joe123ZC/zelda051.jpg
You could use those, or make your own or whatever.
They do have to be arranged in the order however: 5 tile animation for up-facing footprints, 5 tile animation for left-facing footprints. If you want a shorter animation, leave a blank tile, don't just miss them out.

And you'll also need a sound effect that you want to play whilst Link walks in the snow.


ffc script snow_combo{
void run(){
int combotype = 12; //set the type of combo you want to be 'snow' or 'fallen leaves' here
int tile = 0; //set the first tile of your footprint animation here
int cset = 0; // set the cset of your footprint animation here
int sfx = 0; // set the sound effect you want to play while link walks on a 'snow' combo here
int sfxdelay = 25; // set the delay between playing the sound effect here. 2
// the above integers are to be user defined. All declared integers below this are utility integers. DON'T mess with them (unless you know what you're doing :P)
int walkcounter = 1;
int switch1 = 0; int switch1_2 = 0;
int delay1 = 0;
int switch2 = 0; int switch22 = 0;
int delay2 = 0;
int switch3 = 0; int switch32 = 0;
int delay3 =0;
int switch4 = 0; int switch42 = 0;
int delay4 = 0;
int switch5 = 0; int switch52 = 0;
int delay5 = 0;
int switch6 = 0; int switch62 = 0;
int delay6 = 0;
int switch7 = 0; int switch72 = 0;
int delay7 = 0;
int switch8 = 0; int switch82 = 0;
int delay8 = 0;
int switch9 = 0; int switch92 = 0;
int delay9 = 0;
int switch10 = 0; int switch102 = 0;
int delay10 = 0;
int switch11 = 0; int switch112 = 0;
int delay11 = 0;
int switch12 = 0; int switch122 = 0;
int delay12 = 0;
int upcounter = 0;
int downcounter = 0;
int leftcounter = 0;
int rightcounter = 0;
int x1 = 0; int y1 = 0;
int x2 = 0; int y2 = 0;
int x3 = 0; int y3 = 0;
int x4 = 0; int y4 = 0;
int x5 = 0; int y5 = 0;
int x6 = 0; int y6 = 0;
int x7 = 0; int y7 = 0;
int x8 = 0; int y8 = 0;
int x9 = 0; int y9 = 0;
int x10 = 0; int y10 = 0;
int x11 = 0; int y11 = 0;
int x12 = 0; int y12 = 0;
while(true){
sfxdelay--;
upcounter++;
downcounter ++;
leftcounter ++;
rightcounter ++;
walkcounter --;
if(upcounter == 60){upcounter = 0;}
if(downcounter == 60){downcounter = 0;}
if(leftcounter == 60){leftcounter = 0;}
if(rightcounter == 60){rightcounter = 0;}
if(Link->Action == LA_WALKING){walkcounter = 1;}
if(walkcounter == 0){switch1 = 0; switch2 = 0; switch3 = 0; switch4 = 0; switch5 = 0; int switch6 = 0; switch7 = 0; switch8 = 0; switch9 = 0; switch10 = 0; switch11 = 0; int switch12 = 0;}

if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && sfxdelay == 20 && Link->Action == LA_WALKING && Link->Z == 0){Game -> PlaySound(sfx);}
if(sfxdelay == 0){sfxdelay = 25;}

if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && Link->Action == LA_WALKING && Link->Dir == DIR_UP && Link->Z == 0){
if(switch1 == 0 && upcounter < 20){x1 = Link->X; y1 = Link->Y; switch1 = 1;}
if(switch2 == 0 && upcounter < 40 && upcounter >= 20){x2 = Link->X; y2 = Link->Y; switch2 = 1;}
if(switch3 == 0 && upcounter < 60 && upcounter >= 40){x3 = Link->X; y3 = Link->Y; switch3 = 1;}
}
if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && Link->Action == LA_WALKING && Link->Dir == DIR_DOWN && Link->Z == 0){
if(switch4 == 0 && downcounter < 20){x4 = Link->X; y4 = Link->Y; switch4 = 1;}
if(switch5 == 0 && downcounter < 40 && downcounter >= 20){x5 = Link->X; y5 = Link->Y; switch5 = 1;}
if(switch6 == 0 && downcounter < 60 && downcounter >= 40){x6 = Link->X; y6 = Link->Y; switch6 = 1;}
}
if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && Link->Action == LA_WALKING && Link->Dir == DIR_LEFT && Link->Z == 0){
if(switch7 == 0 && leftcounter < 20){x7 = Link->X; y7 = Link->Y; switch7 = 1;}
if(switch8 == 0 && leftcounter < 40 && leftcounter >= 20){x8 = Link->X; y8 = Link->Y; switch8 = 1;}
if(switch9 == 0 && leftcounter < 60 && leftcounter >= 40){x9 = Link->X; y9 = Link->Y; switch9 = 1;}
}
if(Screen->ComboT[ComboAt(Link->X,Link->Y)] == combotype && Link->Action == LA_WALKING && Link->Dir == DIR_RIGHT && Link->Z == 0){
if(switch10 == 0 && rightcounter < 20){x10 = Link->X; y10 = Link->Y; switch10 = 1;}
if(switch11 == 0 && rightcounter < 40 && rightcounter >= 20){x11 = Link->X; y11 = Link->Y; switch11 = 1;}
if(switch12 == 0 && rightcounter < 60 && rightcounter >= 40){x12 = Link->X; y12 = Link->Y; switch12 = 1;}
}
if(switch1 == 1){switch1_2 = 1;} if(switch2 == 1){switch22 = 1;}
if(switch3 == 1){switch32 = 1;} if(switch4 == 1){switch42 = 1;}
if(switch5 == 1){switch52 = 1;} if(switch6 == 1){switch62 = 1;}
if(switch7 == 1){switch72 = 1;} if(switch8 == 1){switch82 = 1;}
if(switch9 == 1){switch92 = 1;} if(switch10 == 1){switch102 = 1;}
if(switch11 == 1){switch112 = 1;} if(switch12 == 1){switch122 = 1;}
if(switch1_2 == 1){
delay1 ++;
if(delay1>=0 && delay1<=10){Screen->DrawTile(2, x1, y1, tile, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1>10 && delay1<=20){Screen->DrawTile(2, x1, y1, tile+1, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1>20 && delay1<=30){Screen->DrawTile(2, x1, y1, tile+2, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1>30 && delay1<=40){Screen->DrawTile(2, x1, y1, tile+3, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1>40 && delay1<=50){Screen->DrawTile(2, x1, y1, tile+4, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1 == 50){delay1 = 0; switch1 = 0; switch1_2 = 0;}
}
if(switch22 == 1){
delay2 ++;
if(delay2>=0 && delay2<=10){Screen->DrawTile(2, x2, y2, tile, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay2>10 && delay2<=20){Screen->DrawTile(2, x2, y2, tile+1, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay2>20 && delay2<=30){Screen->DrawTile(2, x2, y2, tile+2, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay2>30 && delay2<=40){Screen->DrawTile(2, x2, y2, tile+3, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay2>40 && delay2<=50){Screen->DrawTile(2, x2, y2, tile+4, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay2 == 50){delay2 = 0; switch2 = 0; switch22 = 0;}
}
if(switch32 == 1){
delay3 ++;
if(delay3>=0 && delay3<=10){Screen->DrawTile(2, x3, y3, tile, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay3>10 && delay3<=20){Screen->DrawTile(2, x3, y3, tile+1, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay3>20 && delay3<=30){Screen->DrawTile(2, x3, y3, tile+2, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay3>30 && delay3<=40){Screen->DrawTile(2, x3, y3, tile+3, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay3>40 && delay3<=50){Screen->DrawTile(2, x3, y3, tile+4, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay3 == 50){delay3 = 0; switch3 = 0; switch32 = 0;}
}
if(switch42 == 1){
delay4 ++;
if(delay4>=0 && delay4<=10){Screen->DrawTile(2, x4, y4, tile, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay4>10 && delay4<=20){Screen->DrawTile(2, x4, y4, tile+1, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay4>20 && delay4<=30){Screen->DrawTile(2, x4, y4, tile+2, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay4>30 && delay4<=40){Screen->DrawTile(2, x4, y4, tile+3, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay4>40 && delay4<=50){Screen->DrawTile(2, x4, y4, tile+4, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay4 == 50){delay4 = 0; switch4 = 0; switch42 = 0;}
}
if(switch52 == 1){
delay5 ++;
if(delay5>=0 && delay5<=10){Screen->DrawTile(2, x5, y5, tile, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay5>10 && delay5<=20){Screen->DrawTile(2, x5, y5, tile+1, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay5>20 && delay5<=30){Screen->DrawTile(2, x5, y5, tile+2, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay5>30 && delay5<=40){Screen->DrawTile(2, x5, y5, tile+3, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay5>40 && delay5<=50){Screen->DrawTile(2, x5, y5, tile+4, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay5 == 50){delay5 = 0; switch5 = 0; switch52 = 0;}
}
if(switch62 == 1){
delay6 ++;
if(delay6>=0 && delay6<=10){Screen->DrawTile(2, x6, y6, tile, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay6>10 && delay6<=20){Screen->DrawTile(2, x6, y6, tile+1, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay6>20 && delay6<=30){Screen->DrawTile(2, x6, y6, tile+2, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay6>30 && delay6<=40){Screen->DrawTile(2, x6, y6, tile+3, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay6>40 && delay6<=50){Screen->DrawTile(2, x6, y6, tile+4, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay6 == 50){delay6 = 0; switch6 = 0; switch62 = 0;}
}
if(switch72 == 1){
delay7 ++;
if(delay7>=0 && delay7<=10){Screen->DrawTile(2, x7, y7, tile+5, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay7>10 && delay7<=20){Screen->DrawTile(2, x7, y7, tile+6, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay7>20 && delay7<=30){Screen->DrawTile(2, x7, y7, tile+7, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay7>30 && delay7<=40){Screen->DrawTile(2, x7, y7, tile+8, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay7>40 && delay7<=50){Screen->DrawTile(2, x7, y7, tile+9, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay7 == 50){delay7 = 0; switch7 = 0; switch72 = 0;}
}
if(switch82 == 1){
delay8 ++;
if(delay8>=0 && delay8<=10){Screen->DrawTile(2, x8, y8, tile+5, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay8>10 && delay8<=20){Screen->DrawTile(2, x8, y8, tile+6, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay8>20 && delay8<=30){Screen->DrawTile(2, x8, y8, tile+7, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay8>30 && delay8<=40){Screen->DrawTile(2, x8, y8, tile+8, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay8>40 && delay8<=50){Screen->DrawTile(2, x8, y8, tile+9, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay8 == 50){delay8 = 0; switch8 = 0; switch82 = 0;}
}
if(switch92 == 1){
delay9 ++;
if(delay9>=0 && delay9<=10){Screen->DrawTile(2, x9, y9, tile+5, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay9>10 && delay9<=20){Screen->DrawTile(2, x9, y9, tile+6, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay9>20 && delay9<=30){Screen->DrawTile(2, x9, y9, tile+7, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay9>30 && delay9<=40){Screen->DrawTile(2, x9, y9, tile+8, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay9>40 && delay9<=50){Screen->DrawTile(2, x9, y9, tile+9, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay9 == 50){delay9 = 0; switch9 = 0; switch92 = 0;}
}
if(switch102 == 1){
delay10 ++;
if(delay10>=0 && delay10<=10){Screen->DrawTile(2, x10, y10, tile+5, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay10>10 && delay10<=20){Screen->DrawTile(2, x10, y10, tile+6, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay10>20 && delay10<=30){Screen->DrawTile(2, x10, y10, tile+7, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay10>30 && delay10<=40){Screen->DrawTile(2, x10, y10, tile+8, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay10>40 && delay10<=50){Screen->DrawTile(2, x10, y10, tile+9, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay10 == 50){delay10 = 0; switch10 = 0; switch102 = 0;}
}
if(switch112 == 1){
delay11 ++;
if(delay11>=0 && delay11<=10){Screen->DrawTile(2, x11, y11, tile+5, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay11>10 && delay11<=20){Screen->DrawTile(2, x11, y11, tile+6, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay11>20 && delay11<=30){Screen->DrawTile(2, x11, y11, tile+7, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay11>30 && delay11<=40){Screen->DrawTile(2, x11, y11, tile+8, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay11>40 && delay11<=50){Screen->DrawTile(2, x11, y11, tile+9, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay11 == 50){delay11 = 0; switch11 = 0; switch112 = 0;}
}
if(switch122 == 1){
delay12 ++;
if(delay12>=0 && delay12<=10){Screen->DrawTile(2, x12, y12, tile+5, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay12>10 && delay12<=20){Screen->DrawTile(2, x12, y12, tile+6, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay12>20 && delay12<=30){Screen->DrawTile(2, x12, y12, tile+7, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay12>30 && delay12<=40){Screen->DrawTile(2, x12, y12, tile+8, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay12>40 && delay12<=50){Screen->DrawTile(2, x12, y12, tile+9, 1, 1, cset, 1, 0, 0, 0, 3, true, 128);}
if(delay12 == 50){delay12 = 0; switch12 = 0; switch122 = 0;}
}
Waitframe();
}
}
}

Right, so, here's the script. I'm afraid it's rather large, due to having 12 independant sets of pseudo-animation drawtile functions. Anyway, don't be put off by that beacuse it doesn't really have any effect on how easy it is to use.

Once you have those tiles set up on your tilesheet then, stick that in your .z file, and go to the top 6 lines of the script where there are a few 'variable' integers declared, which you'll want to change to fit you, and which I've also pointed out in the script.

The first one is the combo type that you're attaching snow to. This will only be applicable on screens with the script attached, so it doesn't disable them for the rest of the game or anything like that. The default is combo ID 12 - Left statue. Mostly due to the fact that it doesn't do anything unless it really has to, and I can't see that much use for it anyway. Slow Walk might also be a good one for snow, although that would meant that you couldn't use it anywhere else on the screen.
The second integer is the number of the first tile in your 10x1 block of footprint animation.
The third integer is the Cset you want the animation to be in
And the fourth is the number of the sound effect that you want to play.

And that's all there is to it. Set it up like that, load it into ZQuest and stick it on an ffc on a screen with the given combo type as snow on the floor or whatever.

Example Video (http://www.youtube.com/watch?v=0keTaLikBX8)
Here's an example video that I threw together for it. Please don't judge this on the screen, I know it's not very good, I made it quickly for the video. And apparently it doesn't work while the sword is being charged, but I think this is to do with a ZC bug.

And thankfully the character limit here is somewhat higher than at PureZC, I couldn't fit the script onto one post there :)

C-Dawg
10-22-2007, 03:00 PM
Ah, the glory of scripting without arrays or switch statements.

(Sorry, DarkDragon.)

Anyway, well done! While cosmetic, this is a really neat script.

Din
10-22-2007, 03:20 PM
Oh yeah, I saw this on PureZC a little while ago. Good job Joe!

Joe123
10-23-2007, 07:21 AM
Ah, the glory of scripting without arrays or switch statements.

Do switch statements just work the same way as I've simulated switches with integers? Because why do you really need them if you can just do that? It's not exactly hard to change an integer from 1 to 0...

Dark Nation
10-23-2007, 08:07 AM
When you are charging, your action is LA_ATTACKING. So, try putting a check for that in there and only lay down a footprint tile if you are more than 8 pixels away from the last place you put down a footprint tile.

Joe123
10-23-2007, 08:13 AM
Ah, that'd be what I posted as a bug then &#172;_&#172;
But then won't it lay footprints if you're stand still and then slash or use the boomerang or whatever?
Also, how would I do that 8 pixel thing? Draw a radius around the last drawtile function and add it in on the if's that do the pseudo-animation? (And how would I go about doing that)

It would probably be better if Link's action were both LA_ATTACKING and LA_WALKING whilst walking with your sword charged though really wouldn't it?

Majora
10-25-2007, 08:24 AM
Wow! Lotsa "if" statements :p

This just made the frozen plains slightly less plain :D

Joe123
10-25-2007, 09:29 AM
Well yeah, that's how scripts work...

And that's the idea :cool:

Dark Nation
10-25-2007, 02:29 PM
Well, you can't have a variable be equal to 2 values at the same time. You could approximate it with flags, but the action variable isn't set up that way.

Every time you lay down a new footprint, store your position in some global variables. Then, whenever you are moving or attacking on a snow combo, check your current position against the global variables. If you are more then 8 pixels away, throw down another footprint.

Joe123
10-25-2007, 04:27 PM
Ah yeah, I wasn't really thinking about how zscript worked really at that point was I. Well then wouldn't it be better for it to have a value that was LA_ATTACKING&WALKING or something?

I don't get why I'd have to use a global variable for that though and not just an FFC variable? And the extra switch work to store Link's position into another variable would be really akward, it took me a long time to set up storing it once really

beefster09
10-25-2007, 09:30 PM
Hmmm... Are you sure you can't use step next and cycling? I guess it gets rid of directions and other properties, but it would work.

ShadowMancer
10-25-2007, 10:44 PM
wouldn't it be better for it to have a value that was LA_ATTACKING&WALKING or something?
Y'know thats a great idea or just LA_CHARGEING because I think that is the only time Link would be attacking and walking at the same time.

Also a suggestion:


intead of:
if(delay1>=0 && delay1<=10){Screen->DrawTile(2, x1, y1, tile, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1>10 && delay1<=20){Screen->DrawTile(2, x1, y1, tile+1, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1>20 && delay1<=30){Screen->DrawTile(2, x1, y1, tile+2, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1>30 && delay1<=40){Screen->DrawTile(2, x1, y1, tile+3, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1>40 && delay1<=50){Screen->DrawTile(2, x1, y1, tile+4, 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}

How about:
if(delay1<50){Screen->DrawTile(2, x1, y1, tile+Floor(delay/10), 1, 1, cset, 1, 0, 0, 0, 0, true, 128);}
if(delay1 >= 50){delay1 = 0; switch1 = 0; switch1_2 = 0;}

Save ya a few lines of code


Although I don't see the Floor command anymore, is it phased out?

And btw what prog did you use to record zc in the video?

_L_
10-26-2007, 12:51 AM
Although I don't see the Floor command anymore, is it phased out?

It's in std.zh, is it not?

Joe123
10-26-2007, 04:48 AM
oh dear, have you just removed the need for that long, convoluted pseudo-animation that I made up?

Can you explain how it works please?

And I used Cam Studio, stick it in google. The quality's awful on my pc though, as you can see...

ShadowMancer
10-26-2007, 11:12 AM
It's in std.zh, is it not? D'oh I was looking in ZScript.txt although I figured Floor still worked because my scripts still work right.


have you just removed the need for that long, convoluted pseudo-animation that I made up?

Well just a simple shortcut really, the thing is, you are checking what delay is, then setting the drawn tile according to the value of delay, and since delay is checked for in equal incriments you only have to use one statement to change the tile depending on the value of delay (gee I hope that discription helped and did not make your head hurt >_< )
if(delay1>=0 && delay1<=10) (if delay is between 1 and 10 then draw tile)
if(delay1>10 && delay1<=20) (if delay is between 11 and 20 then draw tile+1)
etc..
tile+Floor(delay/10) simply will add 1 to tile for every 10 of delay, Floor just rids you of unwanted decimal places.

Joe123
10-26-2007, 12:53 PM
Ah, I'll look into using that later, but I'll stick with my method just for a bit now I think. Thanks.