Jump to content

Run script on certain health or shield value?


Recommended Posts

In light of what @@MagSul asked here: https://jkhub.org/topic/9647-preventing-player-death/

 

I was thinking of doing something simular (different concept), but make the player surrender if he only has 25% health. Is that even possible? I cant recall I ever even seen this, so this is just some mind spin of me.

 

So in light, do an if - else check if player reached 25% health, if so, use script bladiebla....

 

edit:

 

I saw

//(BHVD)

affect ( "Player", /*@AFFECT_TYPE*/ FLUSH )
{
	set ( /*@SET_TYPES*/ "SET_UNDYING", "DEFAULT" );

	if ( $get( FLOAT, "SET_HEALTH")$, $=$, $1$ )
	{
		run ( "end_duel" );
	}

}

But can somebody explain to me, how the  "get - set health = for example 25" makes sense? Arent you setting the health, or does this actually a health check?

Link to comment

In light of what @@MagSul asked here: https://jkhub.org/topic/9647-preventing-player-death/

 

I was thinking of doing something simular (different concept), but make the player surrender if he only has 25% health. Is that even possible? I cant recall I ever even seen this, so this is just some mind spin of me.

 

So in light, do an if - else check if player reached 25% health, if so, use script bladiebla....

 

edit:

 

I saw

//(BHVD)

affect ( "Player", /*@AFFECT_TYPE*/ FLUSH )
{
	set ( /*@SET_TYPES*/ "SET_UNDYING", "DEFAULT" );

	if ( $get( FLOAT, "SET_HEALTH")$, $=$, $1$ )
	{
		run ( "end_duel" );
	}

}

But can somebody explain to me, how the  "get - set health = for example 25" makes sense? Arent you setting the health, or does this actually a health check?

 

In theory the GET command takes the affected entity's specific value (in this case, its health) instead than setting it. I don't know if it's actually the case, but I think (SET_HEALTH,"X") pretty much equals to health = X. (GET(SET_HEALTH)) would be equivalent to "get health value". I can't really give a better explanation right now, and if that doesn't make any sense it's probably because I'm completely drunk right now :P

Lazarus likes this
Link to comment

What that script is saying is that if the player has health equals to 1 (set_health = 1), then the script "end_duel" will be activated. The main problem with it, is that it'd only check that value only once when said script is activated. You'd need to activate the script constantly to check if the player has reached that amount of health. 

 

Here's what I'd do to make a script get activated when the player reaches less than 25 points of health. 

 

First, I'd create the script that tells the player to run a script if he has less than 26 points of health. 

affect ( "player", INSERT ) // affects the player. INSERT doesn't stop the previous script
{

if ( $get( FLOAT, "SET_HEALTH" ) < 26.000$ ) // if the player has less than 26 HP
{

affect ( "player", FLUSH ) // affects this player. FLUSH makes it so the other script stops working
{
wait ( 1000.000 ); // wait 1 second
run ( "end_duel" ); // this runs the script end_duel.ibi located in 'scripts' folder.
}

}


else (  ) // if the player hasn't reached less than 26 HP
{
wait ( 1000.000 ); // wait 1 second
}

}

After that, I'd create another script that runs the first one every 5 seconds. This way, it'll constantly check if the player has less than 26 HP instead of just doing it once. 


loop ( -1.000 ) // this is an infinite loop
{
wait ( 5000.000 ); // wait 5 seconds
run ( "test/health_test" ); // run the first script
}

I think this should do it.

Lazarus likes this
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...