Help to make people respawn at hospital after death
#1

Hello guys, as you can see in the title I need some help on getting people to respawn at hospital after death..
I've looked at OnPlayerDeath and tried to add SetPlayerPos etc. but nothing worked so far, I asked a lot of my friends but no one could help me, so what I'm doing now is asking here.

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
	new name[MAX_PLAYER_NAME];
	new string[256];
	//new dmessage[128];
	//new deathreason[20];
	new playercash;
	new victimteam;
	new Float:px,Float:py,Float:pz;
	new killerteam;

	victimteam = gTeam[playerid];
	killerteam = gTeam[killerid];
	gPlayerSpawned[playerid] = 0;
	PlayerInfo[playerid][pInvWeapon] = 0;
 	PlayerInfo[playerid][pInvAmmo] = 0;
	GetPlayerName(playerid, name, sizeof(name));
	PlayerInfo[playerid][pLocal] = 255;
	GetPlayerPos(playerid, px, py, pz);
	if(killerid != 255)
	{
		if(GetPlayerState(killerid) == 2)
		{
		  if(ProxDetectorS(20, killerid, playerid))
		  {
		    if(!IsPlayerInAnyVehicle(playerid))
		    {
					if(PlayerInfo[killerid][pMember] == 1||PlayerInfo[killerid][pLeader] == 1||PlayerInfo[killerid][pMember] == 2||PlayerInfo[killerid][pLeader] ==2)
		  		{
		  		  SendClientMessage(killerid, COLOR_YELLOW, "That was a drive-by kill. Don't abuse it.");
						return 1;
					}
					SetPlayerCriminal(killerid,255,"Manslaughter");
					SetPlayerWantedLevel(killerid, GetPlayerWantedLevel(killerid)+1);
					return 1;
				}
			}
		}
	}
	if (PlayerInfo[killerid][pAdmin] < 1)
	{
		if(reason == 38)
		{
			new kstring[128];
			new kickname[MAX_PLAYER_NAME];
			if(IsPlayerConnected(killerid))
			{
				GetPlayerName(killerid, kickname, sizeof(kickname));
				format(string, 256, "[ADMIN] [%d]%s just killed a [%d]%s with minigun.",killerid,kickname,playerid,name);
				ABroadCast(COLOR_LIGHTRED,string,1);
				printf("%s", kstring);
				//Ban(killerid);
			}
		}
		if(reason == 35)
		{
			new kstring[128];
			new kickname[MAX_PLAYER_NAME];
			if(IsPlayerConnected(killerid))
			{
				GetPlayerName(killerid, kickname, sizeof(kickname));
				format(string, 256, "[ADMIN] [%d]%s just killed a player with a flamethrower and has been IP banned.",killerid,kickname);
				ABroadCast(COLOR_LIGHTRED,string,1);
				printf("%s", kstring);
				Ban(killerid);
			}
		}
		if(reason == 9)
		{
			new kstring[128];
			new kickname[MAX_PLAYER_NAME];
			if(IsPlayerConnected(killerid))
			{
				GetPlayerName(killerid, kickname, sizeof(kickname));
				format(string, 256, "[ADMIN] [%d]%s just killed a player with a chainsaw and has been IP banned.",killerid,kickname);
				ABroadCast(COLOR_LIGHTRED,string,1);
				printf("%s", kstring);
				Ban(killerid);
			}
		}
		if(reason == 16)
		{
			new kstring[128];
			new kickname[MAX_PLAYER_NAME];
			if(IsPlayerConnected(killerid))
			{
				GetPlayerName(killerid, kickname, sizeof(kickname));
				format(string, 256, "[ADMIN] [%d]%s just killed a player with grenades and has been IP banned.",killerid,kickname);
				ABroadCast(COLOR_LIGHTRED,string,1);
				printf("%s", kstring);
				Ban(killerid);
			}
		}
		if(reason == 18)
		{
			new kstring[128];
			new kickname[MAX_PLAYER_NAME];
			if(IsPlayerConnected(killerid))
			{
				GetPlayerName(killerid, kickname, sizeof(kickname));
				format(string, 256, "[ADMIN] [%d]%s just killed a player with molotovs and has been IP banned.",killerid,kickname);
				ABroadCast(COLOR_LIGHTRED,string,1);
				printf("%s", kstring);
				Ban(killerid);
			}
		}
		if(reason == 28)
		{
			new kstring[128];
			new kickname[MAX_PLAYER_NAME];
			if(IsPlayerConnected(killerid))
			{
				GetPlayerName(killerid, kickname, sizeof(kickname));
				format(string, 256, "[ADMIN] [%d]%s just killed a player with a Mac 10, Check him immediately.",killerid,kickname);
				ABroadCast(COLOR_LIGHTRED,string,1);
				printf("%s", kstring);
			}
		}
		if(reason == 32)
		{
			new kstring[128];
			new kickname[MAX_PLAYER_NAME];
			if(IsPlayerConnected(killerid))
			{
				GetPlayerName(killerid, kickname, sizeof(kickname));
				format(string, 256, "[ADMIN] [%d]%s just killed a player with Tec 9's, Check him immediately.",killerid,kickname);
				ABroadCast(COLOR_LIGHTRED,string,1);
				printf("%s", kstring);
			}
		}
		if(reason == 36)
		{
			new kstring[128];
			new kickname[MAX_PLAYER_NAME];
			if(IsPlayerConnected(killerid))
			{
				GetPlayerName(killerid, kickname, sizeof(kickname));
				format(string, 256, "[ADMIN] [%d]%s just killed a player with a Lock On Launcher and has been IP banned.",killerid,kickname);
				ABroadCast(COLOR_LIGHTRED,string,1);
				printf("%s", kstring);
				Ban(killerid);
			}
		}
	}
	if (gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
	{
		DisablePlayerCheckpoint(playerid);
		gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
	}
	new caller = Mobile[playerid];
	if(caller != 255)
	{
		if(caller < 255)
		{
			SendClientMessage(caller, COLOR_GRAD2, "  The line just went dead....");
			CellTime[caller] = 0;
			CellTime[playerid] = 0;
			Mobile[caller] = 255;
		}
		Mobile[playerid] = 255;
		CellTime[playerid] = 0;
	}
	ClearCrime(playerid);
	if(PlayerPaintballing[playerid] != 0)
	{
	  PlayerPaintballKills[killerid] ++;
	  if(PlayerPaintballKills[killerid] > PaintballWinnerKills)
	  {
	    new killer[MAX_PLAYER_NAME];
	    PaintballWinner = killerid;
	    PaintballWinnerKills = PlayerPaintballKills[killerid];
	    GetPlayerName(killerid, killer, sizeof(killer));
	    for(new i = 0; i < MAX_PLAYERS; i++)
	    {
	      if(IsPlayerConnected(i))
	      {
	        if(PlayerPaintballing[i] != 0)
	        {
	          format(string, sizeof(string), "* %s is in the lead with %d Kills.",killer,PaintballWinnerKills);
						SendClientMessage(i, COLOR_WHITE, string);
	        }
	      }
	    }
	  }
	  return 1;
	}
	if(GettingCK[playerid] < 999)
	{
	  if(IsPlayerConnected(killerid))
	  {
	    if(OnCK[killerid] < 999)
	    {
	      new killer[MAX_PLAYER_NAME];
	      new dier[MAX_PLAYER_NAME];
	      GetPlayerName(playerid, dier, sizeof(dier));
				GetPlayerName(killerid, killer, sizeof(killer));
	      format(string, sizeof(string), "* %s has performed a Character Kill on you, you aren't able to play with this Character anymore.",killer);
	      SendClientMessage(playerid, COLOR_LIGHTRED, string);
	      format(string, sizeof(string), "** %s has Character Killed %s **",killer,dier);
	      CKLog(string);
	      BroadCast(COLOR_LIGHTRED, string);
	      PlayerInfo[playerid][pCK] = 1;
	      if(GettingCK[playerid] < 999) { GettingCK[playerid] = 999; }
	      else if(OnCK[playerid] < 999) { OnCK[playerid] = 999; }
	      if(GettingCK[killerid] < 999) { GettingCK[killerid] = 999; }
	      else if(OnCK[killerid] < 999) { OnCK[killerid] = 999; }
	      KickPlayer[playerid] = 1;
	    }
	  }
	}
	if(PlayerInfo[playerid][pHeadValue] > 0)
	{
	  if(IsPlayerConnected(killerid))
	  {
		  if(gTeam[killerid] == 10 || PlayerInfo[killerid][pLeader] == 8)
		  {
		    if(GoChase[killerid] == playerid)
		    {
		      //ConsumingMoney[killerid] = 1;
					new killer[MAX_PLAYER_NAME];
					GetPlayerName(killerid, killer, sizeof(killer));
					SafeGivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
					format(string,128,"<< Hitman %s has fulfilled the contract on %s and collected $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]);
					SendFamilyMessage(8, COLOR_YELLOW, string);
					PlayerInfo[playerid][pHeadValue] = 0;
					GotHit[playerid] = 0;
					GetChased[playerid] = 999;
					GoChase[killerid] = 999;
				}
			}
		}
	}
	if(victimteam >= 4)
	{
	  if(IsPlayerConnected(killerid))
	  {
			//new killer[MAX_PLAYER_NAME];
			//GetPlayerName(killerid, killer, sizeof(killer));
			new slice = 100; //$100
			playercash = GetPlayerMoney(playerid);
			if(gTeam[killerid] != 2) { WantedPoints[killerid] += 2; } //+ 2 wanted points
			if(SafeTime[playerid] <= 0)
			{
				if(gTeam[killerid] != gTeam[playerid])
				{
					if(GetPlayerState(killerid) == 1)
					{
						PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills] + 2;
					}
					else
					{
						PlayerInfo[killerid][pKills]++;
					}
					PlayerInfo[playerid][pKills]--;
				}
			}
			/*if (strlen(deathreason) > 0)// patch
			{
				if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill) || gTeam[killerid] == gTeam[playerid])//med kill criminal
				{
					format(string, sizeof(string), ".: %s murdered %s. (%s) :.", killer, name, deathreason);
				}
				else
				{
					format(string, sizeof(string), ".: %s murdered %s. (%s) for $%d :.", killer, name, deathreason, slice);
				}

			}
			else
			{
				if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill || gTeam[killerid] == gTeam[playerid]))
				{
					format(string, sizeof(string), ".: %s murdered %s :.", killer, name);
				}
				else
				{
					format(string, sizeof(string), ".: %s murdered %s for $%d :.", killer, name, slice);
				}
			}*/
			if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill) || (gTeam[killerid] == gTeam[playerid] && gTeam[playerid] != 4))
			{
				slice = 0;
			}
			if (((gTeam[killerid]) != 4) && ((gTeam[killerid]) == gTeam[playerid]))//no team kill
			{
				slice = 0;
			}
			if (playercash > 0)
			{
				SafeGivePlayerMoney(playerid, -slice);
			}
			else
			{
				slice = slice+500;
			}
			//SafeGivePlayerMoney(killerid, slice);
			//GameTextForPlayer(playerid, dmessage, 5000, 2);
			PlayerPlaySound(killerid, 1083, 0.0, 0.0, 0.0);
			if (((gTeam[killerid]) == 3) && reason != 49)
			{
				SetPlayerCriminal(killerid,255, "First Degree Murder");
			}
			else if (((gTeam[killerid]) == 3) && reason == 49)
			{
				SetPlayerCriminal(killerid,255, "Hit And Run");
			}
		}
	}
	else if (victimteam == 2)
	{
	  if(IsPlayerConnected(killerid))
	  {
			//new killer[MAX_PLAYER_NAME];
			//GetPlayerName(killerid, killer, sizeof(killer));
			// Cop kill
			PlayerInfo[playerid][pKills]--;
			if (gTeam[killerid] == 2)//cops kill cop
			{
				//format(string,128,".: Officer %s murdered Officer %s (%s) and was sued for $%d :.",killer,name,deathreason,suecost);
				PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
				SafeGivePlayerMoney(killerid, -suecost);
				SafeGivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
			}
			else
			{
				//format(string,128,".: %s murdered Officer %s (%s) :.",killer,name,deathreason);
		  }
			if (gTeam[killerid] >= 3)
			{
			  WantedPoints[killerid] += 2; //+ 2 wanted points
				if(reason != 49)
				{
					SetPlayerCriminal(killerid,255, "First Degree Murder");
				}
				else if (reason == 49)
				{
					SetPlayerCriminal(killerid,255, "Hit And Run");
				}
			}
			if(gTeam[killerid] >= 5 && SafeTime[playerid] <= 0)
			{
				if(GetPlayerState(killerid) == 1)
				{
					PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills]+2;
				}
				else
				{
					PlayerInfo[killerid][pKills]++;
				}
				WantedPoints[killerid]+=2;
			}
			//BroadCast(COLOR_RED, string);
		}
	}
	else if (victimteam == 3)
	{
	  if(IsPlayerConnected(killerid))
	  {
			//new killer[MAX_PLAYER_NAME];
			//GetPlayerName(killerid, killer, sizeof(killer));
			// Civ kill
			if ((gTeam[killerid]) == 2)//cops kill civ
			{
			  if(WantedLevel[playerid] < 1)
			  {
					//format(string,128,".: Officer %s murdered %s (%s) and was sued for $%d :.",killer,name,deathreason,suecost);
					PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
					SafeGivePlayerMoney(killerid, -suecost);
					SafeGivePlayerMoney(playerid, suecost+10);//+100pays hospital bill
				}
			}
			else
			{
				//format(string,128,".: %s murdered %s (%s) :.",killer,name,deathreason);
				WantedPoints[killerid] += 2;
		  }
			if (((gTeam[killerid]) >= 3 || (gTeam[killerid]) == 1) && reason != 49)
			{
				SetPlayerCriminal(killerid,255, "First Degree Murder");
			}
			else if (((gTeam[killerid]) >= 3 || (gTeam[killerid]) == 1) && reason == 49)
			{
				SetPlayerCriminal(killerid,255, "Hit And Run");
			}
		  //BroadCast(COLOR_RED, string);
		}
	}
	else if (victimteam == 1)
	{
	  if(IsPlayerConnected(killerid))
	  {
			//new killer[MAX_PLAYER_NAME];
			//GetPlayerName(killerid, killer, sizeof(killer));
			// Civ kill
			if ((gTeam[killerid]) == 2)//cops kill civ
			{
				//format(string,128,".: Officer %s murdered Paramedic %s (%s) and was sued for $%d :.",killer,name,deathreason,suecost);
				PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
				SafeGivePlayerMoney(killerid, -suecost);
				SafeGivePlayerMoney(playerid, suecost+10);//+100pays hospital bill
			}
			else if ((gTeam[killerid]) == 1)//med kill civ
			{
				//format(string,128,".: Paramedic %s murdered %s (%s) and was sued for $%d :.",killer,name,deathreason,suecost);
				PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
				SafeGivePlayerMoney(killerid, -suecost);
				SafeGivePlayerMoney(playerid, suecost+10);//+100pays hospital bill
			}
			else
			{
				//format(string,128,".: %s murdered %s (%s) :.",killer,name,deathreason);
		  }
			if (((gTeam[killerid]) == 4) && reason != 49)
			{
				SetPlayerCriminal(killerid,255, "First Degree Murder");
			}
			else if (((gTeam[killerid]) == 3) && reason == 49)
			{
				SetPlayerCriminal(killerid,255, "Hit And Run");
			}
		  //BroadCast(COLOR_RED, string);
		}
	}
	if (victimteam >= 3 && WantedPoints[playerid] > 0 && killerteam == 2)
	{
	  SetPlayerFree(playerid,killerid, "Got Killed");
	}
	if (BusrouteEast[playerid][0] != 0 || BusrouteWest[playerid][0] != 0)
	{
		if (BusrouteEast[playerid][0] != 0) BusrouteEnd(playerid, BusrouteEast[playerid][1]);
		else if (BusrouteWest[playerid][0] != 0) BusrouteEnd(playerid, BusrouteWest[playerid][1]);
		else BusrouteEnd(playerid, 0);
	}
	if(FarmerVar[playerid] != 0)
	{
	  FarmerVar[playerid] = 0;
	  DisablePlayerCheckpoint(playerid);
	}
	if(DrugFarmerVar[playerid] != 0)
	{
		DrugFarmerVar[playerid] = 0;
		DisablePlayerCheckpoint(playerid);
	}
	if(SmugglerWork[playerid] != 0)
	{
	  SmugglerWork[playerid] = 0;
	  DisablePlayerCheckpoint(playerid);
	}
	killerid = INVALID_PLAYER_ID;
	SetPlayerColor(playerid,COLOR_GRAD2);
	return 1;
}
Reply
#2

try that topic : http://forum.sa-mp.com/index.php?topic=132188.15 its a discussion about what u asking
Reply
#3

You need to put it in OnPlayerSpawn
Reply
#4

Quote:
Originally Posted by [AC
Etch ]
try that topic : http://forum.sa-mp.com/index.php?topic=132188.15 its a discussion about what u asking
I looked at it, but some guy just fixed it for him and no one posted how they made it work.
Thank you anyway.

Quote:
Originally Posted by kaisersouse
You need to put it in OnPlayerSpawn
Well, what am I supposed to put at OnPlayerSpawn?
Reply
#5

Quote:
Originally Posted by Mikkel
Well, what am I supposed to put at OnPlayerSpawn?
The code that respawns them back at the hospital? (SetPlayerPos etc)
Reply
#6

Quote:
Originally Posted by kaisersouse
Quote:
Originally Posted by Mikkel
Well, what am I supposed to put at OnPlayerSpawn?
The code that respawns them back at the hospital? (SetPlayerPos etc)
If I add SetPlayerPos at OnPlayerSpawn they'll spawn at hospital? :S
I need them only to spawn at hospital when they die.
Reply
#7

What he means is, when they die set the variable and check it OnPlayerSpawn(), if the variable is equal to 1 or something, set their position to hospital, etc.

pawn Код:
new Hospitalized[ MAX_PLAYERS ];

public OnPlayerConnect( playerid )
{
Hospitalized[ playerid ] = 0; // Just so people don't login inside hospital because the variable doesn't unset on disconnect.
return 1;
}

public OnPlayerDeath( playerid, killerid, reason )
{
Hospitalized[ playerid ] = 1;
return 1;
}

public OnPlayerSpawn( playerid )
{
if( Hospitalized[ playerid ] == 1 )
{
// SetPlayerPos etc.
}
else
{
// Do whatever, they're not hospitalized.
}
return 1;
}
Reply
#8

Quote:
Originally Posted by FreddoX [BINMAN
]
What he means is, when they die set the variable and check it OnPlayerSpawn(), if the variable is equal to 1 or something, set their position to hospital, etc
Damn, I'm a newbie scripter and I really don't know what you're talking about lol.

EDIT:
Oh thanks, I'm gonna try that.
Reply
#9

Quote:
Originally Posted by Mikkel
Quote:
Originally Posted by FreddoX [BINMAN
]
What he means is, when they die set the variable and check it OnPlayerSpawn(), if the variable is equal to 1 or something, set their position to hospital, etc
Damn, I'm a newbie scripter and I really don't know what you're talking about lol.
Updated my post, look above.
Reply
#10

Quote:
Originally Posted by FreddoX [BINMAN
]
What he means is, when they die set the variable and check it OnPlayerSpawn(), if the variable is equal to 1 or something, set their position to hospital, etc.

pawn Код:
new Hospitalized[ MAX_PLAYERS ];

public OnPlayerConnect( playerid )
{
Hospitalized[ playerid ] = 0; // Just so people don't login inside hospital because the variable doesn't unset on disconnect.
return 1;
}

public OnPlayerDeath( playerid, killerid, reason )
{
Hospitalized[ playerid ] = 1;
return 1;
}

public OnPlayerSpawn( playerid )
{
if( Hospitalized[ playerid ] == 1 )
{
// SetPlayerPos etc.
}
else
{
// Do whatever, they're not hospitalized.
}
return 1;
}
Whenever I add the last code with SetPlayerPos and the 'Do whatever, they're not hospitalized.' I'm just adding GetPlayerIp because I thought like I had to get something to see if it then would make it work, so I did. But it still doesn't work, well I don't know if it does everytime I add the last part which is at OnPlayerSpawn, then when I'm compiling it says 'Pawno has stopped working' or something, I have no idea how to fix this, but if I delete the code, then it compiles with just 1 warning with an unreachable code.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)