PDA

View Full Version : My script won't loop!


War Master
10-27-2002, 12:31 PM
I'm trying to rotate a large cylander 180 degrees and make it stop for 3 seconds and then start up again. I can get it to rotate once but that's it. I've tried many different ways and here is my latest script:

//Generated by BehavEd

rem ( "Rotate" );

affect ( "cylanderRotate", /*@AFFECT_TYPE*/ FLUSH )
{

loop ( -1 )
{

task ( "spin180" )
{
rotate ( < 0.000 0.000 180.000 >, 5000.000 );
}

dowait ( "spin180" );
wait ( 3000.000 );
}

}

Pope2k
10-28-2002, 01:41 PM
I would try moving the TASK statement out of the loop. After all, you really only need to create the task one time, right? That may be what's causing the works to gum up.

I could be wrong, but that's the only thing that really jumps out at me as being a little weird with your code.


Hope this helps

War Master
10-29-2002, 09:09 PM
I've tried so many ways now. On page 8 of the ICARUS manual it gives an example of a looped task:

task ( “Go to the door” )
{
commands…
}

loop ( 50 )
{
dowait ( “Go to the door”);
}

I used this as an example. Now here's what I have now:

affect ( "cylinderRotate", /*@AFFECT_TYPE*/ FLUSH )
{

task ( "spin180" )
{
rotate ( < 0.000 0.000 180.000 >, 5000.000 );
}


loop ( -1 )
{
dowait ( "spin180" );
}

}

Bell
10-29-2002, 10:18 PM
ah ok its not too deep
heres a simple script with a loop

//Generated by BehavEd

rem ( "mouse1" );
set ( /*@SET_TYPES*/ "SET_WEAPON", /*@WEAPON_NAMES*/ "WP_NONE" );
set ( /*@SET_TYPES*/ "SET_WALKING", /*@BOOL_TYPES*/ "true" );

task ( "patrol1" )
{
set ( /*@SET_TYPES*/ "SET_NAVGOAL", "mouse1nav1" );
}


task ( "patrol2" )
{
set ( /*@SET_TYPES*/ "SET_NAVGOAL", "mouse1nav2" );
}


loop ( -1 )
{
dowait ( "patrol1" );
wait ( 2000.000 );
dowait ( "patrol2" );
wait ( 1000.000 );
}


so mouse1nav1 is the target name of a waypoint_navgoal
same for number 2

the -1 means it is continuous; put a positive number to have it happen that
many times. e.g. a number 3 for it to happen 3 times.

War Master
10-30-2002, 08:31 PM
I don't think I can loop a rotate move. I've tried for a few days now. This is my theory, once the object has been rotated, by a script, it will not rotate again. I tested it out with this script

affect ( "cylinderRotate", /*@AFFECT_TYPE*/ FLUSH )
{

task ( "spin1" )
{
rotate ( < 0.000 0.000 180.000 >, 5000.000 );
}


task ( "spin2" )
{
rotate ( < 0.000 0.000 180.000 >, 5000.000 );
}

dowait ( "spin1" );
wait ( 4000.000 );
dowait ( "spin2" );
wait ( 4000.000 );
}

It would only spin once. If anyone knows a way around this please help.

Bell
10-30-2002, 09:31 PM
hmm i'll have to play with that a bit i'll let ya know

War Master
10-30-2002, 10:02 PM
I was completely wrong! Following an example by MilesTeg in another thread, I figured out how to make it rotate the way I want it to. My mistake was that I thought, when looped, it would increment 180 degrees each time. You have to guide it around the whole rotation.

I got something to work with, it's behaving a little weird but maybe for the better. It'll go through it's full routine a couple of times then it'll rotate the opposite way. I'm making a complexe generator with this script and I plan to add more stuff to it like beams that go on when it rests for 3 seconds. Try this out to start

affect ( "cylinderRotate", /*@AFFECT_TYPE*/ FLUSH )
{

task ( "spin180" )
{
rotate ( < 0.000 0.000 180.000 >, 5000.000 );
wait ( 8000.000 );
rotate ( < 0.000 0.000 360.000 >, 5000.000 );
wait ( 8000.000 );
}


loop ( -1 )
{
dowait ( "spin180" );
}

}

Bell
10-31-2002, 03:12 AM
awesome dhude thanks for that i'm gonna play with it a little bit. sounds like what your doing will be great