Ok here is a map with a motorboat that travels between two docks.
http://www.intplsrv.net/tltrude/Temp/boat.zip
It works, but there are are a few lines in the script you must change to get it working well. Change the red lines.
//----------------------------------------------------------->
// boat threads
//----------------------------------------------------------->
boat_preparation:
$boat moveto $boat_dock2 // Moves boat to the starting spot.
$boat_trigger bind $boat // Attaches the invisible boat trigger into the boat so it moves with it.
$boat_wake bind $boat // Attaches spray emmitter to the boat.
$boat_motor bind $boat // Attaches the motor to the boat a with seperate targetname.
$boat_handle bind $boat_motor // Attaches non-solid motor handle to the boat.
$boat time 4 // sets the boat move time to first waypoint, 4 seconds.
local.elepos = 0 // set the position of the boat.
goto boat_standby // standing by and waiting player to activate the trigger.
//----------------------------------------------------------->
boat_standby:
$boat_trigger waittill trigger // standing by and waiting player to activate the trigger.
if (local.elepos == 0)
{
goto boat_move_up
}
else
if (local.elepos == 1)
{
goto boat_move_down
wait 1
}
//----------------------------------------------------------->
boat_move_up:
$boat_wake anim start
$boat_motor loopsound boat_snd_idle
$boat moveto $boat_way02
$boat waitmove
$boat time 16
$boat moveto $boat_way03
$boat waitmove
$boat time 4
$boat moveto $boat_dock1
$boat rotateYup 180 // turns the boat around for return trip.
$boat waitmove
$boat_wake anim stop
$boat_motor loopsound boat_snd_idle wait
local.elepos = 1
goto boat_standby
//----------------------------------------------------------->
boat_move_down:
$boat_wake anim start
$boat_motor loopsound boat_snd_idle
$boat moveto $boat_way03
$boat waitmove
$boat time 16
$boat moveto $boat_way02
$boat waitmove
$boat time 4
$boat moveto $boat_dock2
$boat rotateYup 180 // turns the boat around for return trip.
$boat waitmove
$boat_wake anim stop
$boat_motor loopsound boat_snd_idle wait
local.elepos = 0
goto boat_standby
end
//----------------------------------------------------------->
// random tank fire thread
//----------------------------------------------------------->
For number 3, add a script origin for sound above your tank and a fx smoke emitter to the barrel (fire_good works great). Then modify your random exploders like this:
random_explode1:
wait (randomfloat 4 + 16)
if ($bomb1.exploded == 1) // makes the tank stop firing if blown up in an objective match.
{
end
}
$tank_origin playsound tank_snd_fire2 // may require ubersound fix.
$random_tankfire anim start // this is the smoke start
$random_explode1_origin playsound arty_leadinmp1
wait 1
$random_tankfire anim stop // this is the smoke stop
$random_explode1 anim start
radiusdamage $random_explode1_origin 256 384
wait 5
goto random_explode1
//----------------------------------------------------------->
You also need to put "$random_tankfire anim stop" at the top of your script just to make sure the smoke is off to start with. You don't have to use my target names.
Hope that helps, good luck.