Example #1
0
static cell AMX_NATIVE_CALL set_user_health(AMX *amx, cell *params) // set_user_health(index, health); = 2 arguments
{
	// Sets user health. If health is 0 and below, also kill...
	// params[1] = index
	// params[2] = health

	// Check index
	CHECK_PLAYER(params[1]);

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict(params[1]);

	// Kill if health too low.
	if (params[2] > 0)
		pPlayer->v.health = float(params[2]);
	else
		MDLL_ClientKill(pPlayer);

	return 1;
}
Example #2
0
static cell AMX_NATIVE_CALL RadiusDamage_AMXModX(AMX *amx, cell *params)
{
	cell *cAddr = MF_GetAmxAddr(amx,params[1]);

	REAL fCurrentX = amx_ctof(cAddr[0]);
	REAL fCurrentY = amx_ctof(cAddr[1]);
	REAL fCurrentZ = amx_ctof(cAddr[2]);
	int iDamageMultiplier = params[2];
	int iRadiusMultiplier = params[3];

	Vector vOrigin = Vector(fCurrentX, fCurrentY, fCurrentZ);

	edict_t *pSearchEnt = NULL;
	while ((pSearchEnt = UTIL_FindEntityInSphere(pSearchEnt, vOrigin, 5 * iRadiusMultiplier)) != NULL)
	{
		if (FStrEq(STRING(pSearchEnt->v.classname), "player")) 
		{
			if (pSearchEnt->v.takedamage != DAMAGE_NO) 
			{
				pSearchEnt->v.health -= 10 + RANDOM_FLOAT(0, 1 * iDamageMultiplier);
				if (pSearchEnt->v.health < 1)
				{
					MDLL_ClientKill(pSearchEnt);
				}
			}
		}
	}

	pSearchEnt = NULL;

	while ((pSearchEnt = UTIL_FindEntityInSphere(pSearchEnt, vOrigin, 4 * iRadiusMultiplier)) != NULL)
	{
		if (FStrEq(STRING(pSearchEnt->v.classname), "player"))
		{
			if (pSearchEnt->v.takedamage != DAMAGE_NO) 
			{
				pSearchEnt->v.health -= 25 + RANDOM_FLOAT(0, 2 * iDamageMultiplier);
				if (pSearchEnt->v.health < 1) 
				{
					MDLL_ClientKill(pSearchEnt);
				}
			}
		}
	}

	pSearchEnt = NULL;

	while ((pSearchEnt = UTIL_FindEntityInSphere(pSearchEnt, vOrigin, 3 * iRadiusMultiplier)) != NULL)
	{
		if (FStrEq(STRING(pSearchEnt->v.classname), "player"))
		{
			if (pSearchEnt->v.takedamage != DAMAGE_NO)
			{
				pSearchEnt->v.health -= 50 + RANDOM_FLOAT(0, 3 * iDamageMultiplier);
				if (pSearchEnt->v.health < 1) 
				{
					MDLL_ClientKill(pSearchEnt);
				}
			}
		}
	}

	pSearchEnt = NULL;

	while ((pSearchEnt = UTIL_FindEntityInSphere(pSearchEnt, vOrigin, 2 * iRadiusMultiplier)) != NULL)
	{
		if (FStrEq(STRING(pSearchEnt->v.classname), "player"))
		{
			if (pSearchEnt->v.takedamage != DAMAGE_NO)
			{
				MDLL_ClientKill(pSearchEnt);
			}
		}
	}

	return 1;
}
Example #3
0
void CClient::Kill()
{
   // kill this client
   MDLL_ClientKill(edict());
}