WW2 bucket truck

Post your scripting questions / solutions here

Moderator: Moderators

User avatar
tltrude
Chuck Norris
Posts: 4774
Joined: Sun Jul 07, 2002 4:03 am
Location: Oklahoma, USA
Contact:

WW2 bucket truck

Post by tltrude »

Ok, I made an authentic WW2 telephone repair bucket truck, ha ha. It works great--goes up and down with engine sounds. But I would like it to come down when the player in the bucket dies or jumps out. Any ideas would be welcome.

Image

Code: Select all

//------------------------------------------------> 
// Bucket truck threads 
//------------------------------------------------>

bucket_prep:

	$bucket_trigger bind $bucket
	$bucket bind $arm2
	$arm2 bind $arm1
	$bucket time 6
	$arm1 time 6
	$arm2 time 6
	goto bucket_mover

end

bucket_mover:

	$bucket_trigger waittill trigger
	$bucket_truck_speaker stoploopsound
	$bucket_truck_speaker loopsound bucket_truck_snd
	$arm1 rotateXup -45
	$arm2 rotateXup 90
	$bucket rotateXup -45
	$arm1 move
	$arm2 move
	$bucket waitmove
	$bucket stoploopsound
	$bucket_truck_speaker loopsound bucket_truck_idle

	$bucket_trigger waittill trigger
	$bucket_truck_speaker stoploopsound
	$bucket_truck_speaker loopsound bucket_truck_snd
	$arm1 rotateXup 45
	$arm2 rotateXup -90
	$bucket rotateXup 45
	$arm1 move
	$arm2 move
	$bucket waitmove
	$bucket_truck_speaker stoploopsound
	goto bucket_mover

end
There will probably have to be a wait so the body and gear has time to vanish (about 9.5 seconds) before the bucket comes down. I could put a second trigger on the ground level, but other players might trigger it.
Tom Trude,

Image
User avatar
bdbodger
Moderator
Posts: 2596
Joined: Tue Feb 25, 2003 7:34 am
Location: canada
Contact:

Post by bdbodger »

I see lots of things you could do with this script . For instance you could devide it into two one for a up button and one for a down button . For example

moveup:

$bucket_trigger waittill trigger
local.guy = parm.other
$bucket_truck_speaker stoploopsound
$bucket_truck_speaker loopsound bucket_truck_snd

while(local.guy.useheld == 1)
{
$arm1 rotateXup -1
$arm2 rotateXup 2
$bucket rotateXup -1
$arm1 move
$arm2 move
$bucket waitmove
}

$bucket stoploopsound
$bucket_truck_speaker loopsound bucket_truck_idle

if !(isalive local.guy)
{
$arm1 rotatexdownto 0 // absolute angle 0 which is the original position of the arm before moveing
$arm2 rotatexdownto 0
$bucket rotatexdownto 0
$arm1 move
$arm2 move
$bucket waitmove
}
goto moveup
end
User avatar
tltrude
Chuck Norris
Posts: 4774
Joined: Sun Jul 07, 2002 4:03 am
Location: Oklahoma, USA
Contact:

works

Post by tltrude »

Well that works fine, although it is mighty slow moving. I jumped out and then blew myself up, but the bucket did not come down. Maybe I was still "local.guy" after respawning? It would also need something to limit the up travel.
Tom Trude,

Image
smartaiguy
Brigadier General
Posts: 512
Joined: Tue Jul 08, 2003 2:52 pm

Post by smartaiguy »

Maybe put a trigger inside the bucket. When ever its being triggered keep it up, once the trigger goes off go down.

Like

$trigger waittill trigger

then make it so if its triggered make it operational, if not return to the original postion. Maybe this will help.
Fallschirmjager in europe(FIE)! (Mapper/Webmaster)
.Map map reviewer
Look up in the sky! Its a bird its a plane, oh wait its a bird.:lol:
User avatar
tltrude
Chuck Norris
Posts: 4774
Joined: Sun Jul 07, 2002 4:03 am
Location: Oklahoma, USA
Contact:

triggers

Post by tltrude »

There are now two more triggers. A trigger_multiple named "$bucket_occupied_trigger" and a second trigger_used named "$bucket_trigger2".
Tom Trude,

Image
smartaiguy
Brigadier General
Posts: 512
Joined: Tue Jul 08, 2003 2:52 pm

Post by smartaiguy »

well that should do the trick!
Fallschirmjager in europe(FIE)! (Mapper/Webmaster)
.Map map reviewer
Look up in the sky! Its a bird its a plane, oh wait its a bird.:lol:
nuggets
General
Posts: 1006
Joined: Fri Feb 28, 2003 2:57 am
Location: U-england-K (england in the UK) :P
Contact:

Post by nuggets »

good evening :D

add a script_object inside the bucket
targetname box_trigger

bucket_prep:
$bucket_trigger bind $bucket
$bucket bind $arm2
$arm2 bind $arm1
$bucket time 6
$arm1 time 6
$arm2 time 6
goto bucket_up
end

bucket_up:
$bucket_trigger waittill trigger
$bucket_trigger nottriggerable
$bucket_truck_speaker stoploopsound
$bucket_truck_speaker loopsound bucket_truck_snd
$arm1 rotateXup -45
$arm2 rotateXup 90
$bucket rotateXup -45
$arm1 move
$arm2 move
$bucket waitmove
$bucket_trigger triggerable
$bucket stoploopsound
$bucket_truck_speaker loopsound bucket_truck_idle
level.in_bucket = 0
while (1)
{for (local.i=1;local.i<=$player.size;local.i++)
{if ($player[local.i] istouching $box_trigger)
{level.in_bucket++}}
if (level.in_bucket == 0)
{waitframe}
else
{goto bucket_down}}
$bucket_trigger waittill trigger

bucket_down:
$bucket_trigger nottriggerable
$bucket_truck_speaker stoploopsound
$bucket_truck_speaker loopsound bucket_truck_snd
$arm1 rotateXup 45
$arm2 rotateXup -90
$bucket rotateXup 45
$arm1 move
$arm2 move
$bucket waitmove
$bucket_trigger triggerable
$bucket_truck_speaker stoploopsound
goto bucket_up

end

//and yes it is 3:15am :(
Last edited by nuggets on Thu Nov 06, 2003 3:17 am, edited 1 time in total.
hope this helps, prob not cos it's all foreign 2 me :-/
User avatar
tltrude
Chuck Norris
Posts: 4774
Joined: Sun Jul 07, 2002 4:03 am
Location: Oklahoma, USA
Contact:

Bucket

Post by tltrude »

The "bucket" is only big enough for one player. And, as I said before, the trigger_multiple in it is named "$bucket_occupied_trigger" and the two trigger_use are named "$bucket_trigger", and $bucket_trigger2".
Tom Trude,

Image
User avatar
bdbodger
Moderator
Posts: 2596
Joined: Tue Feb 25, 2003 7:34 am
Location: canada
Contact:

Post by bdbodger »

If the speed is not right adjust the time of the parts

moveup:

$bucket_trigger waittill trigger
local.guy = parm.other
$bucket_truck_speaker stoploopsound
$bucket_truck_speaker loopsound bucket_truck_snd

while(local.guy.useheld == 1)
{
local.angles=$arm1.angles

if(local.angles[0] < 90)
{
$arm1 rotateXup -5
$arm2 rotateXup 5
$bucket rotateXup -5
$arm1 move
$arm2 move
$bucket waitmove
}
}

$bucket stoploopsound
$bucket_truck_speaker loopsound bucket_truck_idle

waitthread downcheck local.guy

goto moveup
end
//************************************************************
movedown:
$bucket_trigger2 waittill trigger
local.guy = parm.other
$bucket_truck_speaker stoploopsound
$bucket_truck_speaker loopsound bucket_truck_snd

while(local.guy.useheld == 1)
{
local.angles=$arm1.angles

if(local.angles[0] > 0 )
{
$arm1 rotateXup 5
$arm2 rotateXup -5
$bucket rotateXup 5
$arm1 move
$arm2 move
$bucket waitmove
}
}

$bucket stoploopsound
$bucket_truck_speaker loopsound bucket_truck_idle

waitthread downcheck local.guy

goto movedown
end
//********************************************************************
downcheck local.guy:
if (!(isalive local.guy) || !(local.guy istouching bucket_trigger))
{
$bucket_truck_speaker stoploopsound
$bucket_truck_speaker loopsound bucket_truck_snd

$arm1 rotatexdownto 0 // absolute angle 0 which is the original position of the arm before moveing
$arm2 rotatexdownto 0
$bucket rotatexdownto 0
$arm1 move
$arm2 move
$bucket waitmove
}
$bucket stoploopsound
$bucket_truck_speaker loopsound bucket_truck_idle
end
Mirek
Colour Sergeant
Posts: 77
Joined: Mon Jul 08, 2002 2:12 am
Location: Melbourne, Australia
Contact:

Post by Mirek »

Hello Tom :D


I guess going from your original script I myself would do it this way using a single trigger ($bucket_trigger) in the bucket -

Code: Select all


//------------------------------------------------> 
// Bucket truck threads 
//------------------------------------------------> 

bucket_prep: 

   level.bucketfull = 0

   $bucket_trigger bind $bucket 
   $bucket bind $arm2 
   $arm2 bind $arm1 
   $bucket time 6 
   $arm1 time 6 
   $arm2 time 6 

   thread bucket_check
   goto bucket_mover 

end 

bucket_check:

                // Keep checking if bucket is occupied

	if (local.guy istouching $bucket_trigger )
	{
                  level.bucketfull = 1
	}
                 else
                {
                  level.bucketfull = 0
	}
                 

       wait .2

       goto bucket_check

end

bucket_mover: 

    while ( level.bucketfull <= 0)
               wait .2


   $bucket_truck_speaker stoploopsound 
   $bucket_truck_speaker loopsound bucket_truck_snd 
   $arm1 rotateXup -45 
   $arm2 rotateXup 90 
   $bucket rotateXup -45 
   $arm1 move 
   $arm2 move 
   $bucket waitmove 
   $bucket stoploopsound 
   $bucket_truck_speaker loopsound bucket_truck_idle 

    while ( level.bucketfull >= 1)
               wait .2

   wait 9.5 // your sugested wait time before going down
 
   $bucket_truck_speaker stoploopsound 
   $bucket_truck_speaker loopsound bucket_truck_snd 
   $arm1 rotateXup 45 
   $arm2 rotateXup -90 
   $bucket rotateXup 45 
   $arm1 move 
   $arm2 move 
   $bucket waitmove 
   $bucket_truck_speaker stoploopsound 

   goto bucket_mover 

end 


Hope it helps - Cheers
Last edited by Mirek on Thu Nov 06, 2003 5:16 am, edited 1 time in total.
Mapping !!! Who needs sleep anyway !?!?!?
User avatar
bdbodger
Moderator
Posts: 2596
Joined: Tue Feb 25, 2003 7:34 am
Location: canada
Contact:

Post by bdbodger »

My way you can control the amount the bucket rises and falls so if you can make a way to control the truck too you can use the lift to get anywhere you want within reach
User avatar
bdbodger
Moderator
Posts: 2596
Joined: Tue Feb 25, 2003 7:34 am
Location: canada
Contact:

Post by bdbodger »

I just thought of something else all the parts are bound to the bottom arm so if you rotate the bottom arm you can rotate the rest of it as well just make sure you have an origin brush as part of the bottom arm . If you somehow had buttons for all the parts of the arm you could make it move like real adjust the reach and direction etc . For example when the bottom arm is moveing up you rotate the middle arm to keep things level . When the middle arm is moveing you rotate the bucket to keep it level . I think 6 button will be needed two for rotation of the arm left and right , two for the bottom arm up and down and two for the top arm up and down . Or use 3 buttons press one the first time it goes down press it again it goes up .
User avatar
bdbodger
Moderator
Posts: 2596
Joined: Tue Feb 25, 2003 7:34 am
Location: canada
Contact:

Post by bdbodger »

Jee I am getting lots of ideas what about makeing the base a scaled down vehicletank base with no turret . when you attach driverslot entity to a tank with no turret the tank base moves like a normal player tank but you dont because there is no turret and I think your view will be locked so you have to detach before you do anything else like move the arm or look around and shoot . I think if the arm is bound to the base and you are in the bucket you will move with the tank base . Make the base scaled down enough so the bucket is almost on the ground when down .
User avatar
tltrude
Chuck Norris
Posts: 4774
Joined: Sun Jul 07, 2002 4:03 am
Location: Oklahoma, USA
Contact:

Drivable

Post by tltrude »

Yes, I thought of making the halftrack drivable too. It would be nice to be able to move your "sniper truck" to anywhere on you want. I don't think 6 triggers would fit on the bucket--they would be to close to eachother. If keypad keys could be assigned, it might work. But, it seem a bit over the top to me.

I will try the new threads and post the results. Thanks!

Mirek - looks good, but no way down shot of jumping or death.
bdbodger - got an infinite loop shutdown!--added "wait .1" to both while statements.

Tried It and it doesn't work. The bucket goes up about a foot and stops. It can be lowered again, but nothing happens when I jump out with it raised.

Code: Select all

//------------------------------------------------> 
// Bucket truck threads 
//------------------------------------------------>

bucket_prep:

	$bucket_trigger bind $bucket
	$bucket_trigger2 bind $bucket
	$bucket_occupied_trigger bind $bucket
	$bucket bind $arm2
	$arm2 bind $arm1
	$bucket time 1
	$arm1 time 1
	$arm2 time 1
	thread moveup
	thread movedn

end

moveup: 

	$bucket_trigger waittill trigger 
	local.guy = parm.other 
	$bucket_truck_speaker stoploopsound 
	$bucket_truck_speaker loopsound bucket_truck_snd 

	while(local.guy.useheld == 1) 
	{ 
		local.angles=$arm1.angles 
		wait .1 
		if(local.angles[0] < 90) 
		{ 
		$arm1 rotateXup -1 
		$arm2 rotateXup 2 
		$bucket rotateXup -1 
		$arm1 move 
		$arm2 move 
		$bucket waitmove
		} 
	} 

	$bucket stoploopsound 
	$bucket_truck_speaker loopsound bucket_truck_idle 

	waitthread downcheck local.guy 

	goto moveup 
end 

movedn: 
	$bucket_trigger2 waittill trigger 
	local.guy = parm.other 
	$bucket_truck_speaker stoploopsound 
	$bucket_truck_speaker loopsound bucket_truck_snd 

	while(local.guy.useheld == 1) 
	{ 
		local.angles=$arm1.angles 
		wait .1 
		if(local.angles[0] > 0 ) 
		{ 
		$arm1 rotateXup 1 
		$arm2 rotateXup -2 
		$bucket rotateXup 1 
		$arm1 move 
		$arm2 move 
		$bucket waitmove
		} 
	} 

	$bucket stoploopsound 
	$bucket_truck_speaker loopsound bucket_truck_idle 

	waitthread downcheck local.guy 

	goto movedn 
end 

downcheck local.guy:
 
	if (!(isalive local.guy) || !(local.guy istouching $bucket_occupied_trigger)) 
	{ 
		$bucket_truck_speaker stoploopsound 
		$bucket_truck_speaker loopsound bucket_truck_snd
		$bucket time 6
		$arm1 time 6
		$arm2 time 6 
		$arm1 rotatexdownto 0 // absolute angle 0 which is the original position
		$arm2 rotatexdownto 0 
		$bucket rotatexdownto 0 
		$arm1 move 
		$arm2 move 
		$bucket waitmove
		$bucket time 1
		$arm1 time 1
		$arm2 time 1  
	} 
	$bucket_truck_speaker stoploopsound

end
Tom Trude,

Image
smartaiguy
Brigadier General
Posts: 512
Joined: Tue Jul 08, 2003 2:52 pm

Post by smartaiguy »

hmm...
Fallschirmjager in europe(FIE)! (Mapper/Webmaster)
.Map map reviewer
Look up in the sky! Its a bird its a plane, oh wait its a bird.:lol:
Post Reply