Blockland Forums > Modification Help
Schedule Help
<< < (3/4) > >>
Red_Guy:
You need to move the schedule call outside the part that creates the new sky:


--- Code: ---package DayAndNight
{
function Time4(%obj)
{
.................
renderBottomTexture = "0";
noRenderBans = "0";
};
schedule(240000, 0, "Time4", %obj);
}

--- End code ---

however -- this will create an endless loop.  make sure thats what you want.
Uristqwerty:
You can't put a schedule directly in a package.
1 million and up are converted to scientific notation as soon as you do any math on them, and schedule won't accept them like that. I think that if you write the number directly, schedule will accept larger numbers than 1000000.

Schedule is a function that schedules a function to be called a certain number of ms in the future. It cannot be put in a package (I think), it can not define a block of code, if you want something to repeat every # ms, it must schedule itself every time it runs.

Red_Guy: You missed some indentation.


--- Code: ---package DayAndNight
{
function Time4(%obj)
{
.................
renderBottomTexture = "0";
noRenderBans = "0";
};
schedule(240000, 0, "Time4", %obj);
}
};

--- End code ---

I would write something like this:

--- Code: ---function changeSky(%number)
{
    switch(%number)
    {
        case 0:
          ... //Set a dawn sky
        case 1:
          ... //Set a day sky
        case 2:
          ... //Set a sunset sky
        case 3:
          ... //Set a night sky
    }
    schedule(300000, 0, changeSky, (%number + 1) % 4);
}
changeSky(0);

--- End code ---

If only one or two values differ between the skies, I would put that sets the sky after the switch, and it would use variables set within the switch(). Less code duplication that way.
MegaScientifical:

--- Code: ---function changeSky(%num) {
switch(%num) {
case 0:
... //Set a dawn sky
case 1:
... //Set a day sky
case 2:
... //Set a sunset sky
case 3:
... //Set a night sky
}
schedule(300000, 0, changeSky, (%num + 1 => 4 ? 0 : %num + 1));
}
changeSky(0);

--- End code ---

The above would work, minus that there's no code setting for the cases. Your code would return 0.25 in the second cycle, thus breaking the script.
Uristqwerty:
% is the modulo operator, not division.
MegaScientifical:

--- Quote from: Uristqwerty on November 29, 2010, 01:21:06 PM ---% is the modulo operator, not division.

--- End quote ---

%    (Modulus) Computes the integer remainder of dividing 2 numbers.

Bigger explanation, please...
Navigation
Message Index
Next page
Previous page

Go to full version