All pastes #3638006 Raw Edit

Blood on screen - V1.2

public unlisted text v1 · immutable
#3638006 ·published 2016-06-19 09:06 UTC
rendered paste body
#include <a_samp>
#include <zcmd>

#define HIDE_SECONDS 3 // for better view, keep it 2 to 4 seconds.
#define DEFAULT_STATUS  1 // if you want to enable/ disable it by default.

new Text:Blood, Text:Hurt, PlayerText:Damage, BloodTimer[MAX_PLAYERS], BloodStatus[MAX_PLAYERS];

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blood on screen - by AliScripter");
	print("--------------------------------------\n");
	CreateGlobalBlood();
	return 1;
}

public OnFilterScriptExit()
{
	DestroyGlobalBlood();
	return 1;
}

public OnPlayerConnect(playerid)
{
	CreateLocalBlood(playerid);
	BloodStatus[playerid] = DEFAULT_STATUS;
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
        DestroyLocalBlood(playerid);
	return 1;
}

CreateLocalBlood(playerid)
{
	Damage = CreatePlayerTextDraw(playerid, 224.000000, 276.000000, "~r~Damage taken [-99]");
	PlayerTextDrawBackgroundColor(playerid, Damage, 255);
	PlayerTextDrawFont(playerid, Damage, 1);
	PlayerTextDrawLetterSize(playerid, Damage, 0.600000, 3.000000);
	PlayerTextDrawColor(playerid, Damage, -1);
	PlayerTextDrawSetOutline(playerid, Damage, 1);
	PlayerTextDrawSetProportional(playerid, Damage, 1);
	PlayerTextDrawSetSelectable(playerid, Damage, 0);
	return 1;
}

DestroyLocalBlood(playerid)
{
	PlayerTextDrawDestroy(playerid, Damage);
	return 1;
}

CreateGlobalBlood()
{
        Blood = TextDrawCreate(-37.000000, 2.000000, "_");
	TextDrawBackgroundColor(Blood, 255);
	TextDrawFont(Blood, 1);
	TextDrawLetterSize(Blood, 0.500000, 55.000000);
	TextDrawColor(Blood, -1);
	TextDrawSetOutline(Blood, 0);
	TextDrawSetProportional(Blood, 1);
	TextDrawSetShadow(Blood, 1);
	TextDrawUseBox(Blood, 1);
	TextDrawBoxColor(Blood, -939524046);
	TextDrawTextSize(Blood, 640.000000, 1.000000);
	TextDrawSetSelectable(Blood, 0);

	Hurt = TextDrawCreate(257.000000, 136.000000, "~r~You are hurt");
	TextDrawBackgroundColor(Hurt, 255);
	TextDrawFont(Hurt, 1);
	TextDrawLetterSize(Hurt, 0.600000, 3.000000);
	TextDrawColor(Hurt, -1);
	TextDrawSetOutline(Hurt, 1);
	TextDrawSetProportional(Hurt, 1);
	TextDrawSetSelectable(Hurt, 0);
	return 1;
}

DestroyGlobalBlood()
{
        TextDrawDestroy(Hurt);
	TextDrawDestroy(Blood);
	return 1;
}

ShowBlood(playerid, Float: amount)
{
    // Put a team check, if you are using it for a DM / TDM server.
    if(BloodStatus[playerid])
    {
                new bloodstr[50];
		KillTimer(BloodTimer[playerid]);
		TextDrawShowForPlayer(playerid, Blood);
		TextDrawShowForPlayer(playerid, Hurt);
		format(bloodstr, sizeof(bloodstr), "~r~Damage taken [%0.2f]", amount);
		PlayerTextDrawSetString(playerid, Damage, bloodstr);
		PlayerTextDrawShow(playerid, Damage);
		BloodTimer[playerid] = SetTimerEx("BloodTime", HIDE_SECONDS * 1000, false, "i", playerid);
	}
	else return 0;
	return 1;
}

HideBlood(playerid)
{
	PlayerTextDrawHide(playerid, Damage);
	TextDrawHideForPlayer(playerid, Blood);
	TextDrawHideForPlayer(playerid, Hurt);
	return 1;
}

forward BloodTime(playerid);
public	BloodTime(playerid)
{
	KillTimer(BloodTimer[playerid]);
	HideBlood(playerid);
	return 1;
}

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
	if(issuerid != INVALID_PLAYER_ID && playerid != INVALID_PLAYER_ID)
	{
	    ShowBlood(playerid, Float: amount);
	}
	return 1;
}

CMD:blood(playerid)
{
	if(BloodStatus[playerid])
	{
	    BloodStatus[playerid] = 0;
	    SendClientMessageToAll(-1, "Blood effects are disabled.");
	}
	else
	{
	    BloodStatus[playerid] = 1;
	    SendClientMessageToAll(-1, "Blood effects are enabled.");
	}
	return 1;
}