TheIcyPickle
Member
Posts: 80
Threads: 16
Joined: Feb 2011
Reputation:
0
|
Player Run Into Door, Explosion
Hey forum.
Wondering if this were possible. I have an idea of how to script it, just not sure what to use.
I'm trying to allow Player to ram himself into a locked door which is loose by the hinges to cause it to explode off.
Currently, I am using AddEntityCollideCallback to have the player run into a script box that is close to the door that/for
1) To activate the unlock sequence
2) the explosion sequence
3) If player is running.
Going through the script functions page I found at first look, there is nothing of total use.
Here is what I have thus far::
void OnStart()
{
AddEntityCollideCallback("Player", "script3", "door", true, 1);
}
//then following...
void door(string &in asParent, string &in asChild, int alState)
{
//Add if Player is running here
CreateParticleSystemAtEntity("", "ps_impact_dust_low.ps", "script3", false);
SetPropHealth("prison_1", 0.0f);
SetSwingDoorLocked("prison_1", false, true);
}
This is all fine and dandy, it works, but, I want this to happen IF player is running.
I can't seem to find the right function to call for that if statement.
Can you guys help me out?
|
|
03-30-2013, 05:39 AM |
|
PutraenusAlivius
Posting Freak
Posts: 4,713
Threads: 75
Joined: Dec 2012
Reputation:
119
|
RE: Player Run Into Door, Explosion
You can create a condition.
"Veni, vidi, vici."
"I came, I saw, I conquered."
|
|
03-30-2013, 06:48 AM |
|
NaxEla
Senior Member
Posts: 415
Threads: 5
Joined: Dec 2012
Reputation:
28
|
RE: Player Run Into Door, Explosion
There's a function called GetPlayerSpeed() that will return the players' speed.
void door(string &in asParent, string &in asChild, int alState) { if(GetPlayerSpeed() > 10.0f) { // you'll probably need to change 10 to a different number CreateParticleSystemAtEntity("", "ps_impact_dust_low.ps", "script3", false); SetPropHealth("prison_1", 0.0f); SetSwingDoorLocked("prison_1", false, true); } }
I'm not sure if a speed over 10 is running, so you'll need to do some testing to find the right number.
|
|
03-30-2013, 07:42 AM |
|
TheIcyPickle
Member
Posts: 80
Threads: 16
Joined: Feb 2011
Reputation:
0
|
RE: Player Run Into Door, Explosion
(03-30-2013, 06:48 AM)JustAnotherPlayer Wrote: You can create a condition.
Right, but could you recommend a function to use?
I understand that a condition needs to be inserted, like
if(insertcondition() = true)
//then
door unlocks.
But I'm not too sure which function to use.
EDIT 1: Thanks NaxEla, I will try that.
(This post was last modified: 03-30-2013, 07:44 AM by TheIcyPickle.)
|
|
03-30-2013, 07:43 AM |
|
TheIcyPickle
Member
Posts: 80
Threads: 16
Joined: Feb 2011
Reputation:
0
|
RE: Player Run Into Door, Explosion
Huh, I'm getting somewhere. If you put in 2.5f in place of the code, it breaks walking. 2.51f, it doent break walking or running. What is the appropriate number?
Do I have to keep doing up by .001 now?
Or is there some other way?
Thanks for the feedback so far btw
EDIT 1: It appears 2.5000000000001f allows walking to work still. Take away a 0 and it doesn't work walking.
This is rather weird.
(This post was last modified: 03-30-2013, 09:12 AM by TheIcyPickle.)
|
|
03-30-2013, 09:01 AM |
|
NaxEla
Senior Member
Posts: 415
Threads: 5
Joined: Dec 2012
Reputation:
28
|
RE: Player Run Into Door, Explosion
I did some testing, and 2.75 works perfectly for me.
|
|
03-30-2013, 09:19 AM |
|
TheIcyPickle
Member
Posts: 80
Threads: 16
Joined: Feb 2011
Reputation:
0
|
RE: Player Run Into Door, Explosion
Ah, I think I see the problem. It appears that when I pass it walking, just to test, the if statement is terminated. It did not meet the criteria, and the script box is not of use anymore.
How would one go about re-looping I would guess the void door statement again?
Or was what I said complete garbage? haha
EDIT 1: AH HA!
AddEntityCollideCallback("Player", "script3", "door", false, 1);
Thats it.
Thanks for the help everyone!
(This post was last modified: 03-30-2013, 09:46 AM by TheIcyPickle.)
|
|
03-30-2013, 09:32 AM |
|
PutraenusAlivius
Posting Freak
Posts: 4,713
Threads: 75
Joined: Dec 2012
Reputation:
119
|
RE: Player Run Into Door, Explosion
(03-30-2013, 07:42 AM)NaxEla Wrote: There's a function called GetPlayerSpeed() that will return the players' speed.
void door(string &in asParent, string &in asChild, int alState) { if(GetPlayerSpeed() > 10.0f) { // you'll probably need to change 10 to a different number CreateParticleSystemAtEntity("", "ps_impact_dust_low.ps", "script3", false); SetPropHealth("prison_1", 0.0f); SetSwingDoorLocked("prison_1", false, true); } }
I'm not sure if a speed over 10 is running, so you'll need to do some testing to find the right number.
There is? Where is it? I can't see them in the Script Functions page.
"Veni, vidi, vici."
"I came, I saw, I conquered."
|
|
03-30-2013, 11:30 AM |
|
FlawlessHappiness
Posting Freak
Posts: 3,980
Threads: 145
Joined: Mar 2012
Reputation:
171
|
RE: Player Run Into Door, Explosion
Ctrl+F my dear friend
Trying is the first step to success.
|
|
03-30-2013, 12:35 PM |
|
WALP
Posting Freak
Posts: 1,221
Threads: 34
Joined: Aug 2012
Reputation:
45
|
RE: Player Run Into Door, Explosion
(03-30-2013, 12:35 PM)BeeKayK Wrote:
Ctrl+F my dear friend
wow did not know my browser could do that
|
|
03-30-2013, 01:54 PM |
|
|