SA-MP Forums Archive
Players doesnt lose health indoors - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Players doesnt lose health indoors (/showthread.php?tid=72898)



Players doesnt lose health indoors - Khelif - 11.04.2009

How to make so that the players wouldnt lose health in certain interiors. their health would freeze when they enter an interior.


Re: Players doesnt lose health indoors - Weirdosport - 11.04.2009

You'd need a timer running that loops every player to check if they're in an interior, and then it would set there health to full..


Re: Players doesnt lose health indoors - Khelif - 11.04.2009

I have tried that already, is there any way without the timer?


Re: Players doesnt lose health indoors - Mentis - 11.04.2009

What's wrong with using timers?


Re: Players doesnt lose health indoors - Nero_3D - 11.04.2009

pawn Код:
SetPlayerHealth(playerid, Float:0x7F800000);



Re: Players doesnt lose health indoors - Khelif - 11.04.2009

no I dont want timer, I want something like "Friendly fire" used in some gang scripts, cause with timers I still die no matter what I do

..I dont want players health to be set to full though, I want their health to freeze to whatever health they had when they entered interior.


Re: Players doesnt lose health indoors - Nero_3D - 11.04.2009

Quote:
Originally Posted by Khelif
no I dont want timer, I want something like "Friendly fire" used in some gang scripts, cause with timers I still die no matter what I do

..I dont want players health to be set to full though, I want their health to freeze to whatever health they had when they entered interior.
how you want it, you need to use a fucking fast timer that you cant get killed by a minigun


Re: Players doesnt lose health indoors - NigNog1 - 11.04.2009

Why use a timer?
Код:
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
  if(newinteriorid == 0) 
  {
    SetPlayerTeam(playerid, NO_TEAM);
  }else if (oldinteriorid == 0)
  {
    SetPlayerTeam(playerid, 1);
  }
}
You could also set the players health to 10000, which is god mode, again without the need for a timer.


Re: Players doesnt lose health indoors - Khelif - 11.04.2009

whatever fuck! I want freeeze health! no timers.. FAST timer would only lag my server!

when a player enter interior or area, his health will freeze, thats it! no TIMEERS!


Re: Players doesnt lose health indoors - Outbreak - 11.04.2009

No need for looping timers and all that....

All i did to get the same result was...

make a team for interiors. When a player enters an interior they get set onto a team, every player enering an interior getsset onto the same team...

So for example...

pawn Код:
#define INT_TEAM 202
pawn Код:
public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid)
{
   if(newinteriorid > 0) //If the player enters an interior...
   {
     SetPlayerTeam(playerid, INT_TEAM);
   }

   if(newinteriorid == 0)//if the player leaves the interior and goes back outside...
   {
     SetPlayerTeam(playerid,playerid);//Unique because no player can have the same playerid... so they're all on sepperate teams
   }

return 1;
}
Even with this the players can stall take damage form toher players, but ONLY when leaving the interior.. So i added a 1 second timer to delay the team change from INT_TEAM to playerid. That then made it impossible to damage the player while inside or leaving an interior..

so then it would be...

pawn Код:
public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid)
{
   if(newinteriorid > 0) //If the player enters an interior...
   {
     SetPlayerTeam(playerid, INT_TEAM);
   }

   if(newinteriorid == 0)
   {
    IntChangeDelay[playerid] = SetTimerEx("ChangeInt", 1000, 0, "i", playerid);
   }

return 1;
}
pawn Код:
forward ChangeInt(playerid);
public ChangeInt(playerid)
{
    SetPlayerTeam(playerid, playerid);
    return 1;
}