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; }
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; }
void CClient::Kill() { // kill this client MDLL_ClientKill(edict()); }