PHP Code:
char g_pBloodParticleNames[][] =
{
"blood_impact_heavy",
"blood_impact_goop_heavy",
"blood_impact_red_01_chunk",
"blood_impact_headshot_01c",
"blood_impact_headshot_01b",
"blood_impact_headshot_01d",
"blood_impact_basic",
"blood_impact_medium",
"blood_impact_red_01_goop_a",
"blood_impact_red_01_goop_b",
"blood_impact_goop_medium",
"blood_impact_red_01_goop_c",
"blood_impact_red_01_drops",
"blood_impact_drops1",
"blood_impact_red_01_backspray"
};
public Action OnTakeDamage(int iVictim, int& iAttacker, int& iI, float& fD, int& iDT, int& iWeapon, float pDmgForce[3], float pDmgPos[3])
{
if(iVictim != iAttacker && IsValidClient(iVictim) && IsValidClient(iAttacker))
{
if(g_bIsVIP[iAttacker])
{
g_fDmgPos = pDmgPos;
RequestFrame(CreateBlood);
}
}
return Plugin_Continue;
}
void CreateBlood()
{
static int iIter = 0;
for (iIter = 0; iIter < 15; iIter++)
{
if (GetRandomInt(0, 3) == 0)
CreateParticle(g_pBloodParticleNames[iIter], g_fDmgPos);
}
}
void CreateParticle(char[] szName, float pDmgPos[3])
{
static int iEntity;
iEntity = CreateEntityByName("info_particle_system");
if (iEntity != INVALID_ENT_REFERENCE && IsValidEdict(iEntity) && IsValidEntity(iEntity))
{
pDmgPos[0] += GetRandomFloat(-3.0, 3.0);
pDmgPos[1] += GetRandomFloat(-3.0, 3.0);
pDmgPos[2] += GetRandomFloat(-3.0, 3.0);
TeleportEntity(iEntity, pDmgPos, NULL_VECTOR, NULL_VECTOR);
DispatchKeyValue(iEntity, "effect_name", szName);
DispatchSpawn(iEntity);
ActivateEntity(iEntity);
AcceptEntityInput(iEntity, "Start");
CreateTimer(0.75, Timer_Delete, iEntity, TIMER_FLAG_NO_MAPCHANGE);
}
}
public Action Timer_Delete(Handle pTimer, any _Data)
{
static char szName[MAX_NAME_LENGTH] = "";
if (IsValidEdict(_Data) && GetEdictClassname(_Data, szName, sizeof(szName)))
{
if (StrEqual(szName, "Info_Particle_System", false))
AcceptEntityInput(_Data, "KillHierarchy");
}
}
__________________