Page 2 of 3

Re: Elevator when hit player go up

Posted: July 26th, 2010, 8:44 am
by <LT>YosemiteSam[NL]
Ok m8, I'll try it when I get home.
Like I just thought of it probably first moved to x=0 y=0 and z=282 ...So that would be fixed with this script for as far as I can see.

Re: Elevator when hit player go up

Posted: July 27th, 2010, 1:35 am
by .:iSpawn:.
topics like this make me feel retarted. :cry:

Re: Elevator when hit player go up

Posted: July 27th, 2010, 7:53 am
by <LT>YosemiteSam[NL]
:) No prob m8, I'm not good at scripting either ... but I'm learning :)

Ok I changed the script and the following occurs;

- Elevator goes up when triggered
- I stand under it
- elevator comes down and hits me
- it stays there untill I crouch
- when I crouch I get stuck in the elevator (probably have to move the hit trigger down a bit)
- when I use noclip (while stuck) the elevator moves up.
- when at the top I get a script error saying " move_trig enablelinkto(); was already linked"

Any ideas ?

Re: Elevator when hit player go up

Posted: July 27th, 2010, 11:59 am
by waywaaaard
yes I have ideas though just busy - I will have a look at it in a few hours

Re: Elevator when hit player go up

Posted: July 27th, 2010, 12:12 pm
by <LT>YosemiteSam[NL]
no prob m8, take your time

Re: Elevator when hit player go up

Posted: July 27th, 2010, 12:24 pm
by waywaaaard
Hm place the trigger so that you can get a part of your head into it. I've added a iprintln then you can see if the trigger triggers or not.

Code: Select all

main(){

	thread elevator_init();
}

elevator_init(){
	
	// elevator 1
	thread elevator_start(getent ("elevatorright_base", "targetname"), 
							getent ("elevatorright", "targetname"), 
							getent ("elevatorhit", "targetname"), 
							getent ("speaker_one", "targetname"),
							"elevator1_hit_player");
}

elevator_start(elevator, move_trig, hit_trig, speaker, elendon){
	
	move_trig enablelinkto();
	move_trig linkto(move);
	
	thread elevator(elevator, move_trig, hit_trig, speaker, elendon);
}

elevator(elevator, move_trig, hit_trig, speaker, elendon){

	level endon(elendon);
	
	default_origin = elevator.origin;
	

   
   thread elevator_hit(elevator, move_trig, hit_trig, speaker, elendon);

   while(1)
   {
		move_trig waittill("trigger");
		elevator moveTo(default_origin + (0, 0, 282), 1.4);
		speaker playsound ("elevator_move");      
		elevator waittill("movedone");
		speaker playsound ("elevator_stop");      
		wait 2;
		elevator moveTo(default_origin - (0, 0, 282), 1.4);   
		speaker playsound ("elevator_move");
		elevator waittill("movedone");
		speaker playsound ("elevator_stop");
	}
}

elevator_hit(elevator, move_trig, hit_trig, speaker, elendon){
	// all elevator parts and triggers
	
	default_origin = elevator.origin;
	
	hit_trig enablelinkto();
	move_trig enablelinkto();
	
	move_trig linkto(move);
	hit_trig linkto(move);
	
	while(1)
	{
		hit_trig waittill("trigger");
		iprintln("hit a player");
		level notify(elendon);
		elevator moveTo(default_origin + (0, 0, 282), 1.4);
		speaker playsound ("elevator_move");
		elevator waittill("movedone");
		
		thread elevator(elevator, move_trig, hit_trig, speaker, elendon);
		
		wait 0.5;
	}
}

Re: Elevator when hit player go up

Posted: July 27th, 2010, 12:52 pm
by <LT>YosemiteSam[NL]
Ok, I'll try that.

I changed this;

Code: Select all

elevator moveTo(default_origin + (0, 0, 282), 1.4);
into this;

Code: Select all

elevator moveTo((320, 2825, 282), 1.4);
Cause I got errors saying default origin isn't defined (or something like that)
And this works fine.

Re: Elevator when hit player go up

Posted: August 1st, 2010, 8:52 pm
by <LT>YosemiteSam[NL]
Ok, the trigger works like a charme now but when the elevator is up I get this error;

Re: Elevator when hit player go up

Posted: August 1st, 2010, 10:10 pm
by waywaaaard
ah jesus stupid mistake - if i thread the normal elevator thread it starts another hit_trig thread that tries to linkto again -.- Try this

Code: Select all

main(){

	thread elevator_init();
}

elevator_init(){
	
	// elevator 1
	thread elevator_start(getent ("elevatorright_base", "targetname"), 
							getent ("elevatorright", "targetname"), 
							getent ("elevatorhit", "targetname"), 
							getent ("speaker_one", "targetname"),
							"elevator1_hit_player");
}

elevator_start(elevator, move_trig, hit_trig, speaker, elendon){
	
	move_trig enablelinkto();
	move_trig linkto(move);
	
	hit_trig enablelinkto();
	hit_trig linkto(move);
	
	
	thread elevator(elevator, move_trig, speaker, elendon);
	thread elevator_hit(elevator, move_trig, hit_trig, speaker, elendon);
}

elevator(elevator, move_trig, speaker, elendon){

	level endon(elendon);
	
	default_origin = elevator.origin;
	
   while(1)
   {
		move_trig waittill("trigger");
		elevator moveTo(default_origin + (0, 0, 282), 1.4);
		speaker playsound ("elevator_move");      
		elevator waittill("movedone");
		speaker playsound ("elevator_stop");      
		wait 2;
		elevator moveTo(default_origin - (0, 0, 282), 1.4);   
		speaker playsound ("elevator_move");
		elevator waittill("movedone");
		speaker playsound ("elevator_stop");
	}
}

elevator_hit(elevator, move_trig, hit_trig, speaker, elendon){
	// all elevator parts and triggers
	
	default_origin = elevator.origin;

	while(1)
	{
		hit_trig waittill("trigger");
		iprintln("hit a player");
		level notify(elendon);
		elevator moveTo(default_origin + (0, 0, 282), 1.4);
		speaker playsound ("elevator_move");
		elevator waittill("movedone");
		
		thread elevator(elevator, move_trig, hit_trig, speaker, elendon);
		
		wait 0.5;
	}
}

Re: Elevator when hit player go up

Posted: August 1st, 2010, 11:08 pm
by <LT>YosemiteSam[NL]
aha, ok.
with this script the error is gone but the elevator stops at the top and stays there untill it gets triggered. I want it to comedown again without being triggered.

I modified your script btw m8;

Code: Select all

main(){

   thread elevator_init();
}

elevator_init(){
   
   // elevator 1
   thread elevator_start(getent ("elevatorright_base", "targetname"), 
                     getent ("elevatorright", "targetname"), 
                     getent ("elevatorhit", "targetname"), 
                     getent ("speaker_one", "targetname"),
                     "elevator1_hit_player");
}

elevator_start(elevator, move_trig, hit_trig, speaker, elendon){
   
   move_trig enablelinkto();
   move_trig linkto(elevator);
   
   hit_trig enablelinkto();
   hit_trig linkto(elevator);
   
   
   thread elevator(elevator, move_trig, speaker, elendon);
   thread elevator_hit(elevator, move_trig, hit_trig, speaker, elendon);
}

elevator(elevator, move_trig, speaker, elendon){

   level endon(elendon);

   while(1)
   {
      

      move_trig waittill("trigger");
      elevator moveTo((-128, 2128, 304), 1.4);
      speaker playsound ("elevator_move");      
      elevator waittill("movedone");
      speaker playsound ("elevator_stop");      
      wait 2;
      elevator moveTo((-128, 2128, 10), 1.4);   
      speaker playsound ("elevator_move");
      elevator waittill("movedone");
      speaker playsound ("elevator_stop");
   }
}

elevator_hit(elevator, move_trig, hit_trig, speaker, elendon){
   // all elevator parts and triggers
   
   while(1)
   {
      hit_trig waittill("trigger");
      level notify(elendon);
      elevator moveTo((-128, 2128, 304), 1.4);
      speaker playsound ("elevator_move");
      elevator waittill("movedone");
      speaker playsound ("elevator_stop");

      thread elevator(elevator, move_trig, speaker, elendon);
      wait 0.5;
}   
}

Re: Elevator when hit player go up

Posted: August 3rd, 2010, 3:28 am
by megazor
btw, adding an origin brush isn't necessary, I usually add to a brushmodel the key origin (and its value, ofc).

Re: Elevator when hit player go up

Posted: August 3rd, 2010, 3:38 am
by megazor
as far as i understand, your code doesn't work. if it works, don't read above.

Code: Select all

elevator_hit(elevator, move_trig, hit_trig, speaker, elendon){
   // all elevator parts and triggers
   
   while(1)
   {
      hit_trig waittill("trigger");
      elevator notify("movedone"); //this is what i added
      //level notify(elendon);
      elevator moveTo((-128, 2128, 304), 1.4);
      speaker playsound ("elevator_move");
      elevator waittill("movedone");
      speaker playsound ("elevator_stop");

      thread elevator(elevator, move_trig, speaker, elendon);
      wait 0.5;
}   
}
try that. but im afraid the notify function will fuck elevator's origin up - it will become the point of where the stopped elevator has been moving to, but the elevator won't be actually at that origin.

if that code won't work, try that:

Code: Select all

org = elevator.origin;
elevator notify("movedone");
elevator moveTo((org), 10);
elevator notify("movedone");

Re: Elevator when hit player go up

Posted: August 3rd, 2010, 8:38 am
by <LT>YosemiteSam[NL]
megazor wrote:as far as i understand, your code doesn't work. if it works, don't read above.
It works up to the point where the elevator moves up when it hit the player. It stays up and waits for the trigger. It has to come down and again go up when it hits player.

I'll try that m8, thx.

Re: Elevator when hit player go up

Posted: August 3rd, 2010, 10:17 am
by waywaaaard
The code works pretty good though I just didn't thought of the going down again. But I have an idea.

We just move it down at the start of the other function if its up :D

Re: Elevator when hit player go up

Posted: August 3rd, 2010, 10:22 am
by waywaaaard

Code: Select all

main(){

   thread elevator_init();
}

elevator_init(){
   
   // elevator 1
   thread elevator_start(getent ("elevatorright_base", "targetname"), 
                     getent ("elevatorright", "targetname"), 
                     getent ("elevatorhit", "targetname"), 
                     getent ("speaker_one", "targetname"),
                     "elevator1_hit_player");
}

elevator_start(elevator, move_trig, hit_trig, speaker, elendon){
   
   move_trig enablelinkto();
   move_trig linkto(elevator);
   
   hit_trig enablelinkto();
   hit_trig linkto(elevator);
   
   
   thread elevator(elevator, move_trig, speaker, elendon);
   thread elevator_hit(elevator, move_trig, hit_trig, speaker, elendon);
}

elevator(elevator, move_trig, speaker, elendon){

   level endon(elendon);
      
	  move_trig waittill("trigger");
	  // if we are already at this position it the elevator won't move
      elevator moveTo((-128, 2128, 304), 1.4); 
      if(elevator.origin != (-128, 2128, 304))
		speaker playsound ("elevator_move");      
      elevator waittill("movedone");

   while(1)
   {
      move_trig waittill("trigger");
      elevator moveTo((-128, 2128, 304), 1.4);
      speaker playsound ("elevator_move");      
      elevator waittill("movedone");
      speaker playsound ("elevator_stop");      
      wait 2;
      elevator moveTo((-128, 2128, 10), 1.4);   
      speaker playsound ("elevator_move");
      elevator waittill("movedone");
      speaker playsound ("elevator_stop");
   }
}

elevator_hit(elevator, move_trig, hit_trig, speaker, elendon){
   // all elevator parts and triggers
   
   while(1)
   {
      hit_trig waittill("trigger");
      level notify(elendon);
      elevator moveTo((-128, 2128, 304), 1.4);
      speaker playsound ("elevator_move");
      elevator waittill("movedone");
      speaker playsound ("elevator_stop");

      thread elevator(elevator, move_trig, speaker, elendon);
      wait 0.5;
}   
}
here you go