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.
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
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