Freeze a player on death
#1

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
	if(IsPlayerConnected(killerid))
	{
		new hour,minute,second, weaponname[32];
		gettime(hour,minute,second);
		FixHour(hour);
		hour = shifthour;
		GetWeaponName(reason, weaponname, sizeof(weaponname));
		format(PlayerInfo[playerid][pKillLog9], 256, "%s", PlayerInfo[playerid][pKillLog8]);
		format(PlayerInfo[playerid][pKillLog8], 256, "%s", PlayerInfo[playerid][pKillLog7]);
		format(PlayerInfo[playerid][pKillLog7], 256, "%s", PlayerInfo[playerid][pKillLog6]);
		format(PlayerInfo[playerid][pKillLog6], 256, "%s", PlayerInfo[playerid][pKillLog5]);
		format(PlayerInfo[playerid][pKillLog5], 256, "%s", PlayerInfo[playerid][pKillLog4]);
		format(PlayerInfo[playerid][pKillLog4], 256, "%s", PlayerInfo[playerid][pKillLog3]);
		format(PlayerInfo[playerid][pKillLog3], 256, "%s", PlayerInfo[playerid][pKillLog2]);
		format(PlayerInfo[playerid][pKillLog2], 256, "%s", PlayerInfo[playerid][pKillLog1]);
		format(PlayerInfo[playerid][pKillLog1], 256, "%s", PlayerInfo[playerid][pKillLog0]);
	 	format(PlayerInfo[playerid][pKillLog0], 256, "(%d:%d:%d) %s killed me with %s", hour,minute,second,GetPlayerNameEx(killerid), weaponname);

	 	format(PlayerInfo[killerid][pKillLog9], 256, "%s", PlayerInfo[killerid][pKillLog8]);
		format(PlayerInfo[killerid][pKillLog8], 256, "%s", PlayerInfo[killerid][pKillLog7]);
		format(PlayerInfo[killerid][pKillLog7], 256, "%s", PlayerInfo[killerid][pKillLog6]);
		format(PlayerInfo[killerid][pKillLog6], 256, "%s", PlayerInfo[killerid][pKillLog5]);
		format(PlayerInfo[killerid][pKillLog5], 256, "%s", PlayerInfo[killerid][pKillLog4]);
		format(PlayerInfo[killerid][pKillLog4], 256, "%s", PlayerInfo[killerid][pKillLog3]);
		format(PlayerInfo[killerid][pKillLog3], 256, "%s", PlayerInfo[killerid][pKillLog2]);
		format(PlayerInfo[killerid][pKillLog2], 256, "%s", PlayerInfo[killerid][pKillLog1]);
		format(PlayerInfo[killerid][pKillLog1], 256, "%s", PlayerInfo[killerid][pKillLog0]);
	 	format(PlayerInfo[killerid][pKillLog0], 256, "(%d:%d:%d) Killed %s with %s", hour,minute,second,GetPlayerNameEx(playerid), weaponname);
	 	if(GetPVarInt(killerid, "IsInArena") == 0) PlayerInfo[killerid][pDMKills]++;
	}
	
	

	new string[128];
	pTazer[playerid] = 0;
	InsideShamal[playerid] = INVALID_VEHICLE_ID;
	DeletePVar(playerid, "SpeedRadar");
    DeletePVar(playerid, "UsingSprunk");
    KillTimer(GetPVarInt(playerid, "firstaid5"));
  	DeletePVar(playerid, "usingfirstaid");
	if(GetPVarInt(playerid, "MovingStretcher") != -1)
	{
	    KillTimer(GetPVarInt(playerid, "TickEMSMove"));
	    DeletePVar(GetPVarInt(playerid, "MovingStretcher"), "OnStretcher");
	    SetPVarInt(playerid, "MovingStretcher", -1);
	}

	new caller = Mobile[playerid];
	if(IsPlayerConnected(Mobile[playerid]))
	{
		SendClientMessageEx(caller,  COLOR_GRAD2, "The line went dead.");
		format(string, sizeof(string), "* %s puts away their cellphone.", GetPlayerNameEx(caller));
		ProxDetector(30.0, caller, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
		CellTime[caller] = 0;
		Mobile[caller] = INVALID_PLAYER_ID;
	}
	Mobile[playerid] = INVALID_PLAYER_ID;
	CellTime[playerid] = 0;
	RingTone[playerid] = 0;

	foreach(Player, i)
	{
		if(EMSAccepted[i] < 999)
		{
 			if(EMSAccepted[i] == playerid)
   			{
     			EMSAccepted[i] = 999;
       			GameTextForPlayer(i, "~w~EMS Caller~n~~r~Has Died", 5000, 1);
	        	EMSCallTime[i] = 0;
	        	DisablePlayerCheckpoint(i);
			}
		}
	}

	if( GetPVarInt(playerid, "SpecOff" ) == 1 )
	{
		SpawnPlayer(playerid);
		return 1;
	}

	if(GetPVarInt(playerid, "Injured") == 1)
	{
     	SendClientMessageEx(playerid, COLOR_WHITE, "You appear to be stuck in limbo, medics are trying to revive you.");
	    KillEMSQueue(playerid);
	    ResetPlayerWeaponsEx(playerid);
	    //SpawnPlayer(playerid);
	    return 1;
	}
	new Float:px,Float:py,Float:pz;
	if(GetPVarInt(playerid, "EventToken") == 0)
	{
	    if(GetPVarInt(playerid, "IsInArena") == -1)
		{
			SetPVarInt(playerid, "Injured", 1);

			new Float:mX, Float:mY, Float:mZ;
			GetPlayerPos(playerid, mX, mY, mZ);

			SetPVarFloat(playerid, "MedicX", mX);
			SetPVarFloat(playerid, "MedicY", mY);
			SetPVarFloat(playerid, "MedicZ", mZ);
			SetPVarInt(playerid, "MedicVW", GetPlayerVirtualWorld(playerid));
			SetPVarInt(playerid, "MedicInt", GetPlayerInterior(playerid));
		}
	}
	gPlayerSpawned[playerid] = 0;
	if(GetPVarInt(playerid, "IsInArena") >= 0)
	{
	    if(GetPVarInt(playerid, "AOSlotPaintballFlag") != -1)
	    {
     		switch(PlayerInfo[playerid][pPaintTeam])
       		{
         		case 1:
           		{
					DropFlagPaintballArena(playerid, GetPVarInt(playerid, "IsInArena"), 2);
     			}
        		case 2:
          		{
            		DropFlagPaintballArena(playerid, GetPVarInt(playerid, "IsInArena"), 1);
            	}
        	}
	    }
		if(reason >= 0 && reason <= 46)
		{
		    new weapon[24];
		    PlayerInfo[killerid][pKills] += 1;
		    PlayerInfo[playerid][pDeaths] += 1;
			if(PlayerInfo[killerid][pPaintTeam] == 1)
			{
			    if(PlayerInfo[killerid][pPaintTeam] == PlayerInfo[playerid][pPaintTeam])
			    {
			        PaintBallArena[GetPVarInt(killerid, "IsInArena")][pbTeamRedKills] -= 1;
			        PaintBallArena[GetPVarInt(playerid, "IsInArena")][pbTeamBlueKills] += 1;
			        SetPlayerHealth(killerid, 0);
			        PlayerInfo[killerid][pKills] -= 2;
			        PlayerInfo[killerid][pDeaths] += 1;
		    		PlayerInfo[playerid][pDeaths] -= 1;
			        SendClientMessageEx(killerid, COLOR_WHITE, "You have been warned, do not team-kill!");
			    }
			    else
			    {
		    		PaintBallArena[GetPVarInt(killerid, "IsInArena")][pbTeamRedKills] += 1;
		    		PaintBallArena[GetPVarInt(playerid, "IsInArena")][pbTeamBlueDeaths] += 1;
				}
			}
			if(PlayerInfo[killerid][pPaintTeam] == 2)
			{
			    if(PlayerInfo[killerid][pPaintTeam] == PlayerInfo[playerid][pPaintTeam])
			    {
			        PaintBallArena[GetPVarInt(killerid, "IsInArena")][pbTeamBlueKills] -= 1;
			        PaintBallArena[GetPVarInt(playerid, "IsInArena")][pbTeamRedKills] += 1;
			        SetPlayerHealth(killerid, 0);
			        PlayerInfo[killerid][pKills] -= 2;
			        PlayerInfo[killerid][pDeaths] += 1;
		    		PlayerInfo[playerid][pDeaths] -= 1;
			        SendClientMessageEx(killerid, COLOR_WHITE, "You have been warned, do not team-kill!");
			    }
		    	PaintBallArena[GetPVarInt(killerid, "IsInArena")][pbTeamBlueKills] += 1;
		    	PaintBallArena[GetPVarInt(playerid, "IsInArena")][pbTeamRedDeaths] += 1;
			}
		    GetWeaponName(reason,weapon,sizeof(weapon));
			if(reason == 0)
			{
			    if(PaintBallArena[GetPVarInt(killerid, "IsInArena")][pbTimeLeft] < 12)
			    {
			        GivePlayerCash(killerid, 1000);
			        format(string,sizeof(string),"[Paintball Arena] %s has earned $1000 bonus for a sudden death kill!",GetPlayerNameEx(killerid));
					SendPaintballArenaMessage(GetPVarInt(killerid,"IsInArena"), COLOR_YELLOW, string);
					SendAudioToPlayer(killerid, 19, 100, 0);
			    }
	    		format(string,sizeof(string),"[Paintball Arena] %s has killed %s with their bare hands!",GetPlayerNameEx(killerid),GetPlayerNameEx(playerid));
			}
			else
			{
			    if(PaintBallArena[GetPVarInt(killerid, "IsInArena")][pbTimeLeft] < 12)
			    {
			        GivePlayerCash(killerid, 1000);
			        format(string,sizeof(string),"[Paintball Arena] %s has earned $1000 bonus for a sudden death kill!",GetPlayerNameEx(killerid));
					SendPaintballArenaMessage(GetPVarInt(killerid,"IsInArena"), COLOR_YELLOW, string);
					SendAudioToPlayer(killerid, 19, 100, 0);
			    }
			    format(string,sizeof(string),"[Paintball Arena] %s has killed %s with a %s.",GetPlayerNameEx(killerid),GetPlayerNameEx(playerid),weapon);
			}
		}
		else
		{
		    PlayerInfo[playerid][pDeaths] += 1;
			format(string,sizeof(string),"[Paintball Arena] %s has died.",GetPlayerNameEx(playerid));
		}
	    SendPaintballArenaMessage(GetPVarInt(playerid,"IsInArena"), COLOR_RED, string);
	}
	PlayerInfo[playerid][pLocal] = 255;
	GetPlayerPos(playerid, px, py, pz);

	if(GetPVarInt(playerid, "Injured") == 0)
	{
		if( GetPVarInt(playerid, "EventToken") >= 1 || GetPVarInt(playerid, "IsInArena") >= 0)
		{
			ResetPlayerWeapons(playerid);
		}
		else
		{
			ResetPlayerWeaponsEx(playerid);
		}
	}
	if(PlayerInfo[killerid][pAdmin] < 2)
	{
	    if(reason == 49)
	    {
	    	format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s (ID %d) has possibly just car-rammed %s (ID %d) to death.", GetPlayerNameEx(killerid), killerid, GetPlayerNameEx(playerid), playerid);
	    	ABroadCast(COLOR_YELLOW, string, 2);
	    	print(string);
	    }
	    if(reason == 50)
	    {
	        if(IsAHelicopter(GetPlayerVehicleID(killerid)))
	        {
	    		format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s (ID %d) has possibly just blade-killed %s (ID %d).", GetPlayerNameEx(killerid), killerid, GetPlayerNameEx(playerid), playerid);
	    		ABroadCast(COLOR_YELLOW, string, 2);
	    		print(string);
	    	}
	    	else
	    	{
	    	    if(GetPlayerWeapon(killerid) != 32 || GetPlayerWeapon(killerid) != 28 || GetPlayerWeapon(killerid) != 29)
	    	    {
	    			format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s (ID %d) has possibly just car-parked %s (ID %d) to death.", GetPlayerNameEx(killerid), killerid, GetPlayerNameEx(playerid), playerid);
	    			ABroadCast(COLOR_YELLOW, string, 2);
	    			print(string);
	    		}
	    		else
	    		{
	    			format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s (ID %d) has possibly just driver-shot %s (ID %d) to death.", GetPlayerNameEx(killerid), killerid, GetPlayerNameEx(playerid), playerid);
	    			ABroadCast(COLOR_YELLOW, string, 2);
	    			print(string);
	    		}
	    	}
	    }
	}
	if (gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
	{
		DisablePlayerCheckpoint(playerid);
		gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
	}
	if(HaveGPS[playerid])
	{
		KillTimer(GPSTimer[playerid]);
		HaveGPS[playerid] = false;
		GPSTimer[playerid] = 0;
	}

	ClearCrime(playerid);
	if(PlayerInfo[playerid][pHeadValue] >= 1)
	{
		if(IsPlayerConnected(killerid))
		{
			if(GoChase[killerid] == playerid)
			{
				new killer[MAX_PLAYER_NAME],
					name[MAX_PLAYER_NAME];

				new takemoney = PlayerInfo[playerid][pHeadValue] / 4 * 2;
			 	name = GetPlayerNameEx(playerid);
				killer = GetPlayerNameEx(killerid);
				GivePlayerCash(killerid, takemoney);
				GivePlayerCash(playerid, -takemoney);
				format(string,128,"Hitman %s has fulfilled the contract on %s and collected $%d.",killer,name,PlayerInfo[playerid][pHeadValue] / 4 * 2);
				SendFamilyMessage(8, COLOR_YELLOW, string);
				format(string,128,"You have been critically injured by a hitman and lost $%d.",takemoney);
   				ResetPlayerWeaponsEx(playerid);
				// SpawnPlayer(playerid);
				SendClientMessageEx(playerid, COLOR_YELLOW, string);
				// KillEMSQueue(playerid);
				PlayerInfo[playerid][pHeadValue] = 0;
				PlayerInfo[killerid][pCHits] += 1;
				GotHit[playerid] = 0;
				GetChased[playerid] = 999;
				GoChase[killerid] = 999;
			}
		}
	}
	if(IsPlayerConnected(killerid))
 	{
		if(GoChase[playerid] == killerid)
		{
			new killer[MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
			new takemoney = PlayerInfo[playerid][pHeadValue] / 4 * 2;
			GivePlayerCash(killerid, takemoney);
			name = GetPlayerNameEx(playerid);
			killer = GetPlayerNameEx(killerid);
			format(string,128,"Hitman %s has failed the contract on %s and lost $%d.",name,killer,PlayerInfo[killerid][pHeadValue] / 4 * 2);
			SendFamilyMessage(8, COLOR_YELLOW, string);
			GivePlayerCash(playerid, -takemoney);
		   	format(string,128,"You have just killed a hitman and gained $%d, removing the contact on your head.",PlayerInfo[killerid][pHeadValue] / 4 * 2);
			SendClientMessageEx(killerid, COLOR_YELLOW, string);
			PlayerInfo[killerid][pHeadValue] = 0;
			PlayerInfo[playerid][pFHits] += 1;
			GotHit[playerid] = 0;
			GetChased[killerid] = 999;
			GoChase[playerid] = 999;
		}
	}
	killerid = INVALID_PLAYER_ID;
	SetPlayerColor(playerid,TEAM_HIT_COLOR);
	return 1;
}
This is my OnPlayerDeath Script, I've created a timer and all that, but where do I put this code?
Код:
{
    TogglePlayerControllable(playerid, 0); // 0 = Freeze 1 = unfreeze
    SetTimer("UFP",3000,false); // ("NameOfTheTimer",Time(1000 = 1sec) ,Make a loop?true = Yes | False = No
        return 1;
}
Reply
#2

pawn Код:
{
    TogglePlayerControllable(playerid, 0); // 0 = Freeze 1 = unfreeze
    SetTimer("UFP",3000,false); // ("NameOfTheTimer",Time(1000 = 1sec) ,Make a loop?true = Yes | False = No
        return 1;
}
This code, where do you want it to happen?
Reply
#3

When a player dies. I tried putting it at the OnPlayerDeath beggining but that just made people go right to the hospital, I want them to stay injured and not falling on my custom mapped island and dying.
Reply
#4

Your code must go in OnPlayerDeath if you want the player to freeze imeidiatly after death but I don't know weather the freezing will go after OnPlayerSpawn.
Reply
#5

I've already tried that, but it immediatly kills the player and sends him to the hospital insted of Applying Injured animation and let Medical Department know that they're wounded.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)